<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6890593738526520772</id><updated>2012-01-18T22:33:24.689-08:00</updated><category term='ACL'/><category term='supervisors.'/><category term='debug'/><category term='Rust'/><category term='crash'/><category term='custom rom'/><category term='RHEL'/><category term='eprom'/><category term='vmcore'/><category term='erlang'/><category term='Famicom'/><category term='5'/><category term='security'/><category term='hex'/><category term='C'/><category term='kernel'/><category term='bogons'/><category term='network'/><category term='firewall'/><category term='rebar'/><category term='django'/><category term='Programming'/><category term='Centos'/><title type='text'>Damn Technology</title><subtitle type='html'>Musings on hardware, software and technology</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>WadeMealing</name><uri>http://www.blogger.com/profile/16018870296209441900</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-9123246824923298224</id><published>2012-01-18T21:11:00.000-08:00</published><updated>2012-01-18T03:11:15.463-08:00</updated><title type='text'>How to disassemble and clean Game &amp; Watch multiscreen</title><content type='html'>I've  gotten a few Game &amp;amp; Watch games off Ebay.  Like most retro gear,  they are usually sold "as is".  These arrive in different conditions.   If you're lucky, they come pretty clean.  More often than not, though  they arrive with different "marks" and dirt all over them.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There  could be drinks accidentally spilled on the unit, even if wiped clean the liquid may have been inside the unit.   Often, there are years worth of  dirt stuck around the control buttons.  These can manifest in several  ways:  Button could be sluggish to return after being pressed,  Button  may need to be pressed hard to activate.  There could also be obvious  things like droplets and things behind the screen.  Possibly stuff on  the screen surface itself.  There are also some owners who write their  names or signature somewhere on the game itself.  And the worst one,  someone engraves their name on the plastic with a soldering iron (no, we  can't clean these ones up, sorry).&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-30aVDdEguYE/TxVpvDVo6qI/AAAAAAAABE4/brPDsZWxswU/s1600/IMG_7494_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/-30aVDdEguYE/TxVpvDVo6qI/AAAAAAAABE4/brPDsZWxswU/s320/IMG_7494_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698577160578067106" border="0" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-I588gD5NyV0/TxVrdVSxp4I/AAAAAAAABGM/FJ7JYDs09-U/s1600/IMG_7495_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/-I588gD5NyV0/TxVrdVSxp4I/AAAAAAAABGM/FJ7JYDs09-U/s320/IMG_7495_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579055183505282" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What we  have here is your typical Donkey Kong multi screen (DK-52).&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-nceA_wLwQSM/TxVpuR8vfDI/AAAAAAAABEU/ycD-lPj0D3M/s1600/IMG_7491_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/-nceA_wLwQSM/TxVpuR8vfDI/AAAAAAAABEU/ycD-lPj0D3M/s320/IMG_7491_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698577147320302642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-RT7xXgt4TWk/TxVpuQrAVFI/AAAAAAAABEc/HfTV55hu1ec/s1600/IMG_7492_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/-RT7xXgt4TWk/TxVpuQrAVFI/AAAAAAAABEc/HfTV55hu1ec/s320/IMG_7492_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698577146977473618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Its  previous owner had taken the liberty to write his funny looking  signature on the front plate:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-8qrVDf2BU6E/TxVpSp3q3hI/AAAAAAAABD8/04PA7Ra9uHE/s1600/IMG_7490_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/-8qrVDf2BU6E/TxVpSp3q3hI/AAAAAAAABD8/04PA7Ra9uHE/s320/IMG_7490_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698576672705142290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_K5ghJYMcH8w/TIMYsM3_EVI/AAAAAAAAAiQ/SOaAHFXgAE4/s1600/DSC00283.JPG"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/TIMYsM3_EVI/AAAAAAAAAiQ/SOaAHFXgAE4/s320/DSC00283.JPG" alt="" id="BLOGGER_PHOTO_ID_5513277516480975186" style="cursor: pointer; width: 320px; height: 180px; " border="0" /&gt;&lt;/a&gt;&lt;div&gt;The serial number is missing and there's lots of gunk on the battery compartment:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-p2pvjgXzvFU/TxVpR4gxznI/AAAAAAAABDY/scqjY5ZiqPU/s1600/IMG_7487_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/-p2pvjgXzvFU/TxVpR4gxznI/AAAAAAAABDY/scqjY5ZiqPU/s320/IMG_7487_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698576659455790706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_K5ghJYMcH8w/TIMYrnrIqQI/AAAAAAAAAiI/JhUTHE1WlSg/s1600/DSC00284.JPG"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/TIMYrnrIqQI/AAAAAAAAAiI/JhUTHE1WlSg/s320/DSC00284.JPG" alt="" id="BLOGGER_PHOTO_ID_5513277506494966018" style="cursor: pointer; width: 320px; height: 240px; " border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The  inside is pretty clean looking.  It must have been stored with the lid  closed.  Although the directional pad needs a bit of hard pressing in  order to get to certain directions (right and up).&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_K5ghJYMcH8w/TIMYq_fFxsI/AAAAAAAAAh4/MIjB-VmNKIE/s1600/DSC00286.JPG"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/TIMYq_fFxsI/AAAAAAAAAh4/MIjB-VmNKIE/s320/DSC00286.JPG" alt="" id="BLOGGER_PHOTO_ID_5513277495707027138" style="cursor: pointer; width: 320px; height: 240px; " border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On to disassembly.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-Dc3aq3bBMjA/TxVqKO26u0I/AAAAAAAABFQ/l2jCSTaDVBk/s1600/IMG_7496_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/-Dc3aq3bBMjA/TxVqKO26u0I/AAAAAAAABFQ/l2jCSTaDVBk/s320/IMG_7496_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698577627526904642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;First remove the 5 screws at the bottom:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-LGoQBh2pMFs/TxVreM8rbrI/AAAAAAAABGk/67VqfOR03ig/s1600/IMG_7501_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://3.bp.blogspot.com/-LGoQBh2pMFs/TxVreM8rbrI/AAAAAAAABGk/67VqfOR03ig/s320/IMG_7501_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579070123208370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-8lXKFCn666I/TxVqK1o94DI/AAAAAAAABF0/4B-HBPTMlPc/s1600/IMG_7499_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/-8lXKFCn666I/TxVqK1o94DI/AAAAAAAABF0/4B-HBPTMlPc/s320/IMG_7499_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698577637937373234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-YyoRtN9lo5c/TxVqKnN0H1I/AAAAAAAABFo/zPvrqaN9sd0/s1600/IMG_7498_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/-YyoRtN9lo5c/TxVqKnN0H1I/AAAAAAAABFo/zPvrqaN9sd0/s320/IMG_7498_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698577634065391442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-hI1LDtSbG7I/TxVrdRRETDI/AAAAAAAABGc/rjOg0mvEPRw/s1600/IMG_7500_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/-hI1LDtSbG7I/TxVrdRRETDI/AAAAAAAABGc/rjOg0mvEPRw/s320/IMG_7500_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579054102596658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Then lift the back panel up halfway and remove the 5 screws on the bottom pcb.&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-ih4Rpi5WU3Q/TxVreBETecI/AAAAAAAABGs/WUTpZD1kCM4/s1600/IMG_7503_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://3.bp.blogspot.com/-ih4Rpi5WU3Q/TxVreBETecI/AAAAAAAABGs/WUTpZD1kCM4/s320/IMG_7503_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579066933967298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-C24gPq6-JP8/TxVrwfYpa0I/AAAAAAAABHM/6vGIigy84qE/s1600/IMG_7505_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/-C24gPq6-JP8/TxVrwfYpa0I/AAAAAAAABHM/6vGIigy84qE/s320/IMG_7505_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579384310000450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-PnzfP1H8qLw/TxVreTErEOI/AAAAAAAABG8/Oa0Jv8shRzE/s1600/IMG_7504_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/-PnzfP1H8qLw/TxVreTErEOI/AAAAAAAABG8/Oa0Jv8shRzE/s320/IMG_7504_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579071767351522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-sugFMWyLbi4/TxVrwaN4FII/AAAAAAAABHc/RObykCRZ474/s1600/IMG_7506_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/-sugFMWyLbi4/TxVrwaN4FII/AAAAAAAABHc/RObykCRZ474/s320/IMG_7506_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579382922646658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-zeRc2er3s4o/TxVrxF7xt-I/AAAAAAAABHs/5zUhjS7m5aQ/s1600/IMG_7508_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/-zeRc2er3s4o/TxVrxF7xt-I/AAAAAAAABHs/5zUhjS7m5aQ/s320/IMG_7508_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579394657892322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Lift up the bottom pcb over the upper screen.  It is very likely the flexible pcb (white plastic with black lines on it) and/or LCD will still be attached to the board.  Take care while handling this as it can tear easily.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-I8hrtboz21k/TxVrxboFIKI/AAAAAAAABH8/YfTbHXGwDFw/s1600/IMG_7509_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/-I8hrtboz21k/TxVrxboFIKI/AAAAAAAABH8/YfTbHXGwDFw/s320/IMG_7509_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579400480858274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-A-t0fmeNbds/TxVsJifSblI/AAAAAAAABIs/9Z5rdFuSawk/s1600/IMG_7512_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/-A-t0fmeNbds/TxVsJifSblI/AAAAAAAABIs/9Z5rdFuSawk/s320/IMG_7512_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579814639890002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-4ug7SMprw40/TxVsI5dBlfI/AAAAAAAABII/GGFgYsLFv8Y/s1600/IMG_7509_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/-4ug7SMprw40/TxVsI5dBlfI/AAAAAAAABII/GGFgYsLFv8Y/s320/IMG_7509_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579803624543730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-h41Rab6UBOg/TxVsJ_g-dbI/AAAAAAAABI0/rlFMwRQ3qTY/s1600/IMG_7513_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/-h41Rab6UBOg/TxVsJ_g-dbI/AAAAAAAABI0/rlFMwRQ3qTY/s320/IMG_7513_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579822431598002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Then remove the 4 screws on the top screen&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One thing to remember about the screws.  The 9 longer screws go to where they are externally accessible.  All the "internal" screws are the shorter one&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then carefully lift up the PCB and set aside the buttons and other things that fall out.&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-Oh-aEoLa9_M/TxVsi1uIxDI/AAAAAAAABJU/mQaAr21MR3k/s1600/IMG_7514_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://3.bp.blogspot.com/-Oh-aEoLa9_M/TxVsi1uIxDI/AAAAAAAABJU/mQaAr21MR3k/s320/IMG_7514_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580249299174450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-fIRPy3gqiRg/TxVsjPTXAbI/AAAAAAAABJc/nqt0DujGTpU/s1600/IMG_7515_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://3.bp.blogspot.com/-fIRPy3gqiRg/TxVsjPTXAbI/AAAAAAAABJc/nqt0DujGTpU/s320/IMG_7515_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580256166183346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;You should have:&lt;/div&gt;&lt;div&gt;D pad&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-ThYrAcNlnA0/TxXmLsZASXI/AAAAAAAABTw/mvxWJXNmMX8/s1600/IMG_7574_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/-ThYrAcNlnA0/TxXmLsZASXI/AAAAAAAABTw/mvxWJXNmMX8/s320/IMG_7574_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698713992076216690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;D pad's rubber&lt;/div&gt;&lt;div&gt;jump button&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-QC6WUmvXg4U/TxXmKqzwaNI/AAAAAAAABTA/ozyYykQPaBw/s1600/IMG_7570_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/-QC6WUmvXg4U/TxXmKqzwaNI/AAAAAAAABTA/ozyYykQPaBw/s320/IMG_7570_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698713974471682258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Game A/B/TIME rubber&lt;/div&gt;&lt;div&gt;2 small circular metal discs for Alarm and ACL&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If the unit has not been previously disassembled, the lower display would most likely  be still stuck to the  PCB.  Carefully bend up the LCD until it is separated.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The screen will be composed of the following (in order from top to bottom):&lt;/div&gt;&lt;div&gt;front polarizer&lt;/div&gt;&lt;div&gt;front graphic&lt;/div&gt;&lt;div&gt;the LCD glass part&lt;/div&gt;&lt;div&gt;back graphic&lt;/div&gt;&lt;div&gt;back reflector&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Besides those you may find a small rubber "ring" and 2 rectangular transparent "things"&lt;/div&gt;&lt;div&gt;These are for holding the LCD steady.  If you lose or do not find these, it is okay, Some unit have these, some don't.  They would work fine without them.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The PCB is still connected to the back case by 2 wires for the  "speaker".  Use a soldering iron and carefully desolder these 2 wires.&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-WNhdV9GBcik/TxVuDPv8NkI/AAAAAAAABNw/jrZvzOvNJMk/s1600/IMG_7536_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/-WNhdV9GBcik/TxVuDPv8NkI/AAAAAAAABNw/jrZvzOvNJMk/s320/IMG_7536_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698581905553503810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Take off the 4 (long) screws holding the upper screen in place.&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-dlFv3s0xaek/TxVsjni54OI/AAAAAAAABJo/jQBn-I9woMU/s1600/IMG_7516_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://3.bp.blogspot.com/-dlFv3s0xaek/TxVsjni54OI/AAAAAAAABJo/jQBn-I9woMU/s320/IMG_7516_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580262673834210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-FVH1IPNzOVo/TxVsj8pyhLI/AAAAAAAABJ0/VifOMSaR90o/s1600/IMG_7518_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/-FVH1IPNzOVo/TxVsj8pyhLI/AAAAAAAABJ0/VifOMSaR90o/s320/IMG_7518_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580268339856562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-i0NCBsvjUSg/TxVs1tHXQsI/AAAAAAAABKA/csPvDrtokKU/s1600/IMG_7519_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/-i0NCBsvjUSg/TxVs1tHXQsI/AAAAAAAABKA/csPvDrtokKU/s320/IMG_7519_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580573406577346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now, carefully pry up the upper screen (near the locking clasp).  This will reveal 5 more "short" screws:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-KQJQKDaqV_M/TxVs1njjv5I/AAAAAAAABKI/k931kGZF-G8/s1600/IMG_7520_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/-KQJQKDaqV_M/TxVs1njjv5I/AAAAAAAABKI/k931kGZF-G8/s320/IMG_7520_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580571914223506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Remove  the 5 screws.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-zpr8c4znoe4/TxVtMvDYEII/AAAAAAAABK8/_o5CkfWHiyI/s1600/IMG_7523_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/-zpr8c4znoe4/TxVtMvDYEII/AAAAAAAABK8/_o5CkfWHiyI/s320/IMG_7523_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580969063714946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-qwQJMpOuZSg/TxVs2WkyclI/AAAAAAAABKk/eCCeDFssThs/s1600/IMG_7522_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://3.bp.blogspot.com/-qwQJMpOuZSg/TxVs2WkyclI/AAAAAAAABKk/eCCeDFssThs/s320/IMG_7522_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580584535847506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-Khclw9BJS6Y/TxVtM1pesSI/AAAAAAAABLE/PL_FRDR6ees/s1600/IMG_7524_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/-Khclw9BJS6Y/TxVtM1pesSI/AAAAAAAABLE/PL_FRDR6ees/s320/IMG_7524_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580970834145570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-yigRp-FBNPw/TxVs12ndsOI/AAAAAAAABKc/zj_10_1jI8k/s1600/IMG_7521_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/-yigRp-FBNPw/TxVs12ndsOI/AAAAAAAABKc/zj_10_1jI8k/s320/IMG_7521_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580575957135586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-eVJqW4CjJlw/TxXjUDwU3II/AAAAAAAABQA/-vOzJ_iwnnc/s1600/IMG_7549_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/-eVJqW4CjJlw/TxXjUDwU3II/AAAAAAAABQA/-vOzJ_iwnnc/s320/IMG_7549_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698710837252119682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;There will be a similar set of accessories on the upper  LCD.  Instead of a PCB, you will find an aluminum plate.  And unlike the  lower screen, the flexible wire should come right off.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-Dx86S0-X8jk/TxVtmf2AMbI/AAAAAAAABMQ/S4Bj9e1a3p8/s1600/IMG_7529_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/-Dx86S0-X8jk/TxVtmf2AMbI/AAAAAAAABMQ/S4Bj9e1a3p8/s320/IMG_7529_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698581411657691570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-ZKfkG4SYKQM/TxVtnKNWruI/AAAAAAAABMo/f2yvzBEE3H0/s1600/IMG_7531_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/-ZKfkG4SYKQM/TxVtnKNWruI/AAAAAAAABMo/f2yvzBEE3H0/s320/IMG_7531_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698581423029923554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-5wjfspQ9Mz4/TxVtNNhP-nI/AAAAAAAABLg/l0c2NgDvWKg/s1600/IMG_7526_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://3.bp.blogspot.com/-5wjfspQ9Mz4/TxVtNNhP-nI/AAAAAAAABLg/l0c2NgDvWKg/s320/IMG_7526_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580977242077810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-rgNdR2mELZc/TxVtNqv_ugI/AAAAAAAABLo/w22pTU2UOJ8/s1600/IMG_7527_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/-rgNdR2mELZc/TxVtNqv_ugI/AAAAAAAABLo/w22pTU2UOJ8/s320/IMG_7527_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580985088555522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-8pNuKu7C6Zc/TxVua667NNI/AAAAAAAABOo/pmSIWer28Ho/s1600/IMG_7542_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/-8pNuKu7C6Zc/TxVua667NNI/AAAAAAAABOo/pmSIWer28Ho/s320/IMG_7542_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698582312279291090" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Fill  up the sink with warm soapy water (use dishwashing liquid).  On  everything except the PCB, LCD and accesories, use a toothbrush to brush  off dirt and rinse.  Set aside on a towel to dry.  Do not lose any of  the small parts.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If your unit had something written on the top plate with a permanent marker you can try some rubbing alcohol on it:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-4KchGCCeUjA/TxXnhw5HrzI/AAAAAAAABWA/UVTuAc-8ny0/s1600/IMG_7593_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/-4KchGCCeUjA/TxXnhw5HrzI/AAAAAAAABWA/UVTuAc-8ny0/s320/IMG_7593_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698715470753410866" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;If  that does not work, you can use some nail polish remover.  If you go  this way, be extra careful not to get the nail polish remover in contact  with any plastic parts as this can melt plastic.  Nail polish remover  would erase something written with a marker, but leave the original printed  markings intact.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-ICklt-yUmqw/TxXnhd-74qI/AAAAAAAABVo/zaTPvD15TEI/s1600/IMG_7591_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/-ICklt-yUmqw/TxXnhd-74qI/AAAAAAAABVo/zaTPvD15TEI/s320/IMG_7591_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698715465677529762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-MwiOwz1Xkw4/TxXniJWUgsI/AAAAAAAABWM/9jskqxEWLZc/s1600/IMG_7594_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/-MwiOwz1Xkw4/TxXniJWUgsI/AAAAAAAABWM/9jskqxEWLZc/s320/IMG_7594_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698715477318337218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-uE8uLDFfS1g/TxXnihmi-wI/AAAAAAAABWY/iJ450WiGZFk/s1600/IMG_7595_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/-uE8uLDFfS1g/TxXnihmi-wI/AAAAAAAABWY/iJ450WiGZFk/s320/IMG_7595_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698715483828845314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-eP44X1wMxWM/TxXn1NVi55I/AAAAAAAABWk/dg_z-Vunyrc/s1600/IMG_7596_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/-eP44X1wMxWM/TxXn1NVi55I/AAAAAAAABWk/dg_z-Vunyrc/s320/IMG_7596_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698715804806342546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For permanent marker writings on plastic parts, never use nail polish remover on them.  You can try some toothpaste and brush.&lt;/div&gt;&lt;div&gt;Toothpaste is a bit abrasive so be careful when doing this as it may cause the brushed area to be shinier than the rest.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-h4_o7NKM32U/TxXkiRdz8WI/AAAAAAAABRk/BVH9S_ld14M/s1600/IMG_7558_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/-h4_o7NKM32U/TxXkiRdz8WI/AAAAAAAABRk/BVH9S_ld14M/s320/IMG_7558_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698712180962357602" border="0" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/-HS-_0O8TqAA/TxXmLJ6E5oI/AAAAAAAABTY/JNzxnAQX_r0/s1600/IMG_7572_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/-HS-_0O8TqAA/TxXmLJ6E5oI/AAAAAAAABTY/JNzxnAQX_r0/s320/IMG_7572_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698713982819690114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For  the LCD and accessories you would need to carefully wash it by hand.   It would be handy to blow out water with a lens blower so that it does  not leave water marks on the surface.  Do not forget which way the parts  go.  The front polarizer in particular will only go properly one way.   If you have it the wrong way, all the white will turn black, and vice  versa.  The graphic transparencies should be a little more obvious how  they go.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-YKrIlBrIDVA/TxXjTlZg-nI/AAAAAAAABP4/XF3oX2f-qkA/s1600/IMG_7548_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/-YKrIlBrIDVA/TxXjTlZg-nI/AAAAAAAABP4/XF3oX2f-qkA/s320/IMG_7548_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698710829103381106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-RXVRuwtRnhw/TxXjTPGUfvI/AAAAAAAABPo/wZDy96xIcBc/s1600/IMG_7547_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/-RXVRuwtRnhw/TxXjTPGUfvI/AAAAAAAABPo/wZDy96xIcBc/s320/IMG_7547_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698710823117291250" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;After everything is dried, assemble  the LCD first on the plastic tray that it goes to.  This is where the  black "ring" and 2 rectangular "things" go:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Put all the buttons back in their respective places,&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Do the same for the upper screen&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-QLJff5xo_dg/TxXlyLjtItI/AAAAAAAABSs/vKVZ6dMv5ZY/s1600/IMG_7568_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/-QLJff5xo_dg/TxXlyLjtItI/AAAAAAAABSs/vKVZ6dMv5ZY/s320/IMG_7568_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698713553765999314" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Put  the screws back on the upper screen.  Now here's a secret when  returning screws.  Before you screw them in, turn the screw  counter-clockwise until it "clicks", then screw it in.  This makes sure  the screw goes back into the thread it came from.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Put  the PCB back over the lower screen and the screws.  Before you proceed,  go put in some batteries and make sure everything is back.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Mt9EMKSOH_w/TxVpum3m6DI/AAAAAAAABEw/EOHRnHReJ38/s1600/IMG_7493_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/-Mt9EMKSOH_w/TxVpum3m6DI/AAAAAAAABEw/EOHRnHReJ38/s320/IMG_7493_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698577152935913522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Also press  the buttons and make sure they are now responsive.&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-mm7PJYRhr4o/TxXoJrVnUBI/AAAAAAAABXg/8RSiAtwnfCs/s1600/IMG_7602_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/-mm7PJYRhr4o/TxXoJrVnUBI/AAAAAAAABXg/8RSiAtwnfCs/s320/IMG_7602_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698716156457078802" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;If  all is well, go and re solder the speaker back on.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-ji3PJ2URVTo/TxXn2fEQacI/AAAAAAAABXQ/Ahl2uraROMU/s1600/IMG_7601_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/-ji3PJ2URVTo/TxXn2fEQacI/AAAAAAAABXQ/Ahl2uraROMU/s320/IMG_7601_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698715826745534914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;Put all the long  screws on the top screen back on, and at the back of the unit.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-ezwHNAHKmZs/TxXoQRVs3XI/AAAAAAAABYc/Fyf0tNjx1CM/s1600/IMG_7607_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/-ezwHNAHKmZs/TxXoQRVs3XI/AAAAAAAABYc/Fyf0tNjx1CM/s320/IMG_7607_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698716269737205106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-r6flKEy6zUI/TxXoKmAl1bI/AAAAAAAABYE/w18ImfZQAug/s1600/IMG_7605_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://3.bp.blogspot.com/-r6flKEy6zUI/TxXoKmAl1bI/AAAAAAAABYE/w18ImfZQAug/s320/IMG_7605_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698716172206593458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Lf7arjctpCc/TxXoKF9Ys4I/AAAAAAAABX4/JzeFtAwRcxQ/s1600/IMG_7604_phatch.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/-Lf7arjctpCc/TxXoKF9Ys4I/AAAAAAAABX4/JzeFtAwRcxQ/s320/IMG_7604_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698716163603215234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-9123246824923298224?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/9123246824923298224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=9123246824923298224' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/9123246824923298224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/9123246824923298224'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2010/09/how-to-disassemble-and-clean-game-watch.html' title='How to disassemble and clean Game &amp; Watch multiscreen'/><author><name>Jonnyboy</name><uri>http://www.blogger.com/profile/17452611876879851494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp0.blogger.com/_K5ghJYMcH8w/R5hJc9afRtI/AAAAAAAAAAQ/u3FgHNNdTD4/S220/jstick.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-30aVDdEguYE/TxVpvDVo6qI/AAAAAAAABE4/brPDsZWxswU/s72-c/IMG_7494_phatch.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-1809224333142244135</id><published>2011-10-10T09:03:00.000-07:00</published><updated>2011-11-23T07:04:49.778-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='erlang'/><category scheme='http://www.blogger.com/atom/ns#' term='supervisors.'/><title type='text'>Erlang: Supervising two processes from a single supervisor</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Only because this ate over an &lt;b&gt;hour&lt;/b&gt; of my day today.&lt;br /&gt;&lt;br /&gt;Below is a shell example of a supervisor that starts two child processes which are also supervisors.&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-module(arti_sup).&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-behaviour(supervisor).&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;%% API&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-export([start_link/0]).&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;%% Supervisor callbacks&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-export([init/1]).&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;%% Helper macro for declaring children of supervisor&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-define(CHILD(I, Type), {I, {I, start_link, []}, permanent, 5000, Type, [I]}).&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;%% ===================================================================&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;%% API functions&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;%% ===================================================================&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;start_link() -&amp;gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; supervisor:start_link({local, ?MODULE}, ?MODULE, []).&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;%% ===================================================================&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;%% Supervisor callbacks&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;%% ===================================================================&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;init([]) -&amp;gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hip_Sup = ?CHILD(parser_sup , supervisor),&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServiceSup = ?CHILD(service_sup , supervisor), &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Children = [ Hip_Sup, ServiceSup ], &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RestartStrategy = { one_for_one , 4, 9600},&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {ok, { RestartStrategy, Children } }.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I have to other supervisors parser_sup and&amp;nbsp; and service_sup.&lt;br /&gt;&lt;br /&gt;If you find that no matter what you change in this file doesn't seem to make a difference to which supervisor is being called, check that this supervisor itself is being started from the application filename_app.erl ,&lt;br /&gt;&lt;br /&gt;If all goes well, you can use the sasl application to check the supervisor / launch information.&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;1&amp;gt; application:start(sasl).&lt;br /&gt;ok&lt;br /&gt;&lt;br /&gt;=PROGRESS REPORT==== 11-Oct-2011::01:59:07 ===&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; supervisor: {local,sasl_safe_sup}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; started: [{pid,&amp;lt;0.41.0&amp;gt;},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {name,alarm_handler},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {mfargs,{alarm_handler,start_link,[]}},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {restart_type,permanent},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {shutdown,2000},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {child_type,worker}]&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;lt;removed for brevity...&amp;gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;br /&gt;2&amp;gt; application:start(myapplication).&lt;br /&gt;INIT parser supervisor&lt;br /&gt;INIT service supervisor&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;=PROGRESS REPORT==== 11-Oct-2011::01:59:14 ===&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; supervisor: {local,human_input_parser_sup}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; started: [{pid,&amp;lt;0.51.0&amp;gt;},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {name,human_input_parser_srv},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {mfargs,{human_input_parser_srv,start_link,[]}},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {restart_type,permanent},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {shutdown,5000},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {child_type,worker}]&lt;br /&gt;&lt;br /&gt;=PROGRESS REPORT==== 11-Oct-2011::01:59:14 ===&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; supervisor: {local,arti_sup}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; started: [{pid,&amp;lt;0.50.0&amp;gt;},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {name,human_input_parser_sup},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {mfargs,{human_input_parser_sup,start_link,[]}},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {restart_type,permanent},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {shutdown,5000},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {child_type,supervisor}]&lt;br /&gt;&lt;br /&gt;=PROGRESS REPORT==== 11-Oct-2011::01:59:14 ===&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; supervisor: {local,service_sup}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; started: [{pid,&amp;lt;0.53.0&amp;gt;},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {name,service_srv},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {mfargs,{service_srv,start_link,[]}},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {restart_type,permanent},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {shutdown,5000},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {child_type,worker}]&lt;br /&gt;&lt;br /&gt;=PROGRESS REPORT==== 11-Oct-2011::01:59:14 ===&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; supervisor: {local,arti_sup}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; started: [{pid,&amp;lt;0.52.0&amp;gt;},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {name,service_sup},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {mfargs,{service_sup,start_link,[]}},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {restart_type,permanent},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {shutdown,5000},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {child_type,supervisor}]&lt;br /&gt;&lt;br /&gt;=PROGRESS REPORT==== 11-Oct-2011::01:59:14 ===&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; application: arti&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; started_at: nonode@nohost&lt;br /&gt;ok&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;You can also use appmon to get a visualization of the supervisor tree with the command&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3&amp;gt; appmon:start().&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;{ok,&amp;lt;0.55.0&amp;gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This should present a graphical application which shows the supervisor/process trees currently running and is updated in real time.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-1809224333142244135?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/1809224333142244135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=1809224333142244135' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/1809224333142244135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/1809224333142244135'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2011/10/erlang-supervising-two-processes-from.html' title='Erlang: Supervising two processes from a single supervisor'/><author><name>WadeMealing</name><uri>http://www.blogger.com/profile/16018870296209441900</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Brisbane QLD, Australia</georss:featurename><georss:point>-27.453911 153.026505</georss:point><georss:box>-28.355746500000002 151.76307749999998 -26.5520755 154.2899325</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-4880052954857652323</id><published>2011-10-01T08:54:00.000-07:00</published><updated>2011-10-01T09:00:29.688-07:00</updated><title type='text'>Rust basics: Numbers</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Rust is a systems level language, it is my understanding that it provides the basic "types" of numbers that most system languages do.&lt;br /&gt;&lt;br /&gt;There are two types of numbers that can be used by rust:&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;blockquote&gt;Integer literals, floating point literals.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Integer Literals&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I figured that quoting from the authoritative spec means I can't be too wrong, it says:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;An integer literal has one of three forms:&lt;/i&gt;&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;&lt;i&gt;A decimal literal starts with a decimal digit and continues with any mixture of decimal digits and underscores.&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;A hex literal starts with the character sequence U+0030 U+0078 ("0x") and continues as any mixture hex digits and underscores.&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;A binary literal starts with the character sequence U+0030 U+0062 ("0b") and continues as any mixture binary digits and underscores.&lt;/i&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: left;"&gt;I don't understand the interest of allowing underscores,&amp;nbsp; I guess this means programmers can make values like 0xDEAD_BEEF_BABE or 0b_1111_0000 more readable.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Ah, but you can also specify the container (bitsize) size&amp;nbsp; of the object by&amp;nbsp; appending an integer suffix.&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;The u suffix gives the literal type uint.&lt;br /&gt;The g suffix gives the literal type big.&lt;/li&gt;&lt;li&gt;"Signed" types i8, i16, i32 and i64&lt;/li&gt;&lt;li&gt;"unsigned" types u8, u16, u32, u64.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;An example would be 0xDEAD_u32 or 18_i64 .&amp;nbsp; If you believe it the underscores can be placed anywhere that the programmer likes to make the values more readable.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Floating Point Literals&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;And again from the spec:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;A floating-point literal has one of two forms:&lt;/i&gt;&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;&lt;i&gt;Two decimal literals separated by a period character U+002E (’.’), with an optional&lt;br /&gt;exponent trailing after the second decimal literal.&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;A single decimal literal followed by an exponent.&lt;/i&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Nothing too exciting here, things like 0.01 and 99.999999 and 0.99.&amp;nbsp; You can also add two optional floating suffix values for your enjoyment.&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;The f32 suffix&lt;/li&gt;&lt;li&gt;The f64 suffix&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;These are&amp;nbsp; unsurprisingly specify the size of the container storing your value.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Example time !&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So for a basic example:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;use std;&lt;br /&gt;import std::io;&lt;br /&gt;&lt;br /&gt;fn main() {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; let stdout = io::stdout();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; let x = 127u;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; stdout.write_line(#fmt["X = %u", x]);&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;This as you'd expect outputs the number "127".&amp;nbsp; Nothing too complex.&amp;nbsp; We can see that the type of "x" is inferred as an unsigned integer.&lt;br /&gt;&lt;br /&gt;So, lets do the usual thing and test assignment of a different type, does in infer correctly ?&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ rustc assignment.rs -o assignment&lt;br /&gt;assignment.rs:10:6: 10:7 error: mismatched types: expected uint but found int (types differ)&lt;br /&gt;assignment.rs:10 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; x = 5;&lt;/div&gt;&lt;br /&gt;Rust fails the compile, and graciously gives you the opportunity to fix this bug.&amp;nbsp; The quick and dirty solution is to change the assignment value to 5u, but if this value was created by another function you'd have to do what other languages consider casting, using the as keyword.&lt;br /&gt;&lt;br /&gt;So you'd do it like this:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;use std;&lt;br /&gt;import std::io;&lt;br /&gt;&lt;br /&gt;fn main() {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; let stdout = io::stdout();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; let &amp;nbsp;&amp;nbsp;&amp;nbsp; x = 127u8;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; x = (x + 128u8 ) as u8;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; stdout.write_line(#fmt["X = %u", x as uint]);&lt;br /&gt;} &lt;/div&gt;&lt;br /&gt;The reason why the equation 127 + 128 was chosen is because 255 is the largest value that can be stored in a 8 bit unsigned value.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;The first "as" in the above example is superfluous, but it remains as an example of how you can cast/convert a value that may be converted or passed by another function or module that you didn't write.&lt;br /&gt;&lt;br /&gt;Note that in the above example no data was lost.&amp;nbsp; However if the final value of x is over 255, in the assignment line ( x = (x + 128u8 ) as u8 ) this is where the x value will be 'overflowed' not in the final stdout.write_line() function.&lt;br /&gt;&lt;br /&gt;Much like C, Fortran, Algol or any other language when you use specific types you must be careful about overflowing the maximum.&amp;nbsp; I was reading the source code and came across the auto-expanding "big" type, but I'll explore that for another day. &lt;br /&gt;&lt;br /&gt;I guess that is as good of a start as any.&amp;nbsp; I probably should put something about "using crates" but I don't know enough about them to be useful yet.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-4880052954857652323?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/4880052954857652323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=4880052954857652323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/4880052954857652323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/4880052954857652323'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2011/10/rust-basics-numbers.html' title='Rust basics: Numbers'/><author><name>WadeMealing</name><uri>http://www.blogger.com/profile/16018870296209441900</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-3924444270596819834</id><published>2011-09-28T00:50:00.000-07:00</published><updated>2011-09-28T01:48:04.686-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eprom'/><category scheme='http://www.blogger.com/atom/ns#' term='custom rom'/><category scheme='http://www.blogger.com/atom/ns#' term='Famicom'/><title type='text'>Famicom Final Fantasy II Japanese to English Conversion</title><content type='html'>&lt;div&gt;I have always been a big fan of native hardware.  Sure, emulators to a certain extent would give you a "taste" of what the device can do.  But as they say, nothing beats the real thing.  It could be the grinding sound a floppy disk drive makes as the head tries to seek past track 0, or little things such as millisecond delay of a game controller compared to native hardware.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have played a few of the Final Fantasy games.  One day I decided I'd play through all of the games in the main series.  Not on an emulator though.  On the real thing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For some reason some of the games in the series were only released in Japan.  Since my grasp of the language is quite limited,  I thought I would look for a fan translated version of the game.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In order to begin I set up my Family Computer (Japanese version of the NES).  Found a copy of Final Fantasy II.  First thing to do of course, was to make sure this cart is still working (it was). And after confirming that, it's time to take apart the cart.  Famicom carts are held together by 4 plastic tabs, and it is very difficult to open up a cart and keep them intact.  Super glue can restore broken off tabs.&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/-9iGFxpPrX-g/ToLT9rRAVsI/AAAAAAAAA3A/C-Q_pIcmItc/s1600/Screen%2Bshot%2B2011-09-28%2Bat%2B5.53.43%2BPM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://3.bp.blogspot.com/-9iGFxpPrX-g/ToLT9rRAVsI/AAAAAAAAA3A/C-Q_pIcmItc/s320/Screen%2Bshot%2B2011-09-28%2Bat%2B5.53.43%2BPM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5657317138470295234" style="cursor: pointer; width: 256px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Next we need to desolder the ROM chip(s).  Final Fantasy II only uses 1 ROM chip.  I carefully desoldered every pin and got the chip out.  Next is to find some pinouts of the mask ROM, and how different it is from the EPROM I was planning to use (AM27C20).  I found them here:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;http://www.raphnet.net/electronique/nes_cart/nes_cart_en.php&lt;/div&gt;&lt;div&gt;http://nesdev.parodius.com/NES%20ROM%20Pinouts.txt&lt;/div&gt;&lt;div&gt;http://nintendoallstars.w.interia.pl/romlab/nesmod.htm&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After modifying the board, this is how it looks:&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-awn_r8I2Z-E/ToLT6XnKKjI/AAAAAAAAA2w/jog0jktu8Do/s1600/Screen%2Bshot%2B2011-09-28%2Bat%2B5.53.05%2BPM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://4.bp.blogspot.com/-awn_r8I2Z-E/ToLT6XnKKjI/AAAAAAAAA2w/jog0jktu8Do/s320/Screen%2Bshot%2B2011-09-28%2Bat%2B5.53.05%2BPM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5657317081654897202" style="cursor: pointer; width: 320px; height: 202px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-KNO5GyeBWRo/ToLT55iOMrI/AAAAAAAAA2o/LXQ8g8wk9ks/s1600/Screen%2Bshot%2B2011-09-28%2Bat%2B5.52.36%2BPM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://2.bp.blogspot.com/-KNO5GyeBWRo/ToLT55iOMrI/AAAAAAAAA2o/LXQ8g8wk9ks/s320/Screen%2Bshot%2B2011-09-28%2Bat%2B5.52.36%2BPM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5657317073581126322" style="cursor: pointer; width: 225px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-abnvjNuRrh0/ToLT8yPk01I/AAAAAAAAA24/WActgALU5x4/s1600/Screen%2Bshot%2B2011-09-28%2Bat%2B5.53.22%2BPM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://4.bp.blogspot.com/-abnvjNuRrh0/ToLT8yPk01I/AAAAAAAAA24/WActgALU5x4/s320/Screen%2Bshot%2B2011-09-28%2Bat%2B5.53.22%2BPM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5657317123163476818" style="cursor: pointer; width: 320px; height: 216px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And after burning the eprom and soldering it on:&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-I0vrG7lEgGg/ToLVPdQCboI/AAAAAAAAA3o/L0Yqq3coIT0/s1600/Screen%2Bshot%2B2011-09-28%2Bat%2B5.56.08%2BPM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://4.bp.blogspot.com/-I0vrG7lEgGg/ToLVPdQCboI/AAAAAAAAA3o/L0Yqq3coIT0/s320/Screen%2Bshot%2B2011-09-28%2Bat%2B5.56.08%2BPM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5657318543457414786" style="cursor: pointer; width: 320px; height: 208px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-6ngruWLVYto/ToLVQZzIK-I/AAAAAAAAA3w/dB7nRfqkVas/s1600/Screen%2Bshot%2B2011-09-28%2Bat%2B5.56.50%2BPM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 250px; height: 320px;" src="http://2.bp.blogspot.com/-6ngruWLVYto/ToLVQZzIK-I/AAAAAAAAA3w/dB7nRfqkVas/s320/Screen%2Bshot%2B2011-09-28%2Bat%2B5.56.50%2BPM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5657318559710718946" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Of course, I have to test it first before closing the case:&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-fmJhIYC_iB8/ToLVMfOPMOI/AAAAAAAAA3Q/E-MXMagTdVg/s1600/Screen%2Bshot%2B2011-09-28%2Bat%2B5.54.46%2BPM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://1.bp.blogspot.com/-fmJhIYC_iB8/ToLVMfOPMOI/AAAAAAAAA3Q/E-MXMagTdVg/s320/Screen%2Bshot%2B2011-09-28%2Bat%2B5.54.46%2BPM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5657318492447125730" style="cursor: pointer; width: 320px; height: 209px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Moment of truth: (it works!)&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-3K9l4XsB-pA/ToLT-FqED4I/AAAAAAAAA3I/HXn8C_I0Z-A/s1600/Screen%2Bshot%2B2011-09-28%2Bat%2B5.54.26%2BPM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://1.bp.blogspot.com/-3K9l4XsB-pA/ToLT-FqED4I/AAAAAAAAA3I/HXn8C_I0Z-A/s320/Screen%2Bshot%2B2011-09-28%2Bat%2B5.54.26%2BPM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5657317145554718594" style="cursor: pointer; width: 320px; height: 219px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;The save files are still there too, and the names are now garbled:&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-WSuoGq5-vwk/ToLVNWHG0fI/AAAAAAAAA3Y/RI26hShJT6E/s1600/Screen%2Bshot%2B2011-09-28%2Bat%2B5.55.17%2BPM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 239px;" src="http://4.bp.blogspot.com/-WSuoGq5-vwk/ToLVNWHG0fI/AAAAAAAAA3Y/RI26hShJT6E/s320/Screen%2Bshot%2B2011-09-28%2Bat%2B5.55.17%2BPM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5657318507181167090" /&gt;&lt;/a&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-8MgDH_PDssI/ToLVOYZHu3I/AAAAAAAAA3g/nB0eWHL3qHY/s1600/Screen%2Bshot%2B2011-09-28%2Bat%2B5.55.42%2BPM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://1.bp.blogspot.com/-8MgDH_PDssI/ToLVOYZHu3I/AAAAAAAAA3g/nB0eWHL3qHY/s320/Screen%2Bshot%2B2011-09-28%2Bat%2B5.55.42%2BPM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5657318524973464434" style="cursor: pointer; width: 320px; height: 254px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-3924444270596819834?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/3924444270596819834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=3924444270596819834' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/3924444270596819834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/3924444270596819834'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2011/09/famicom-final-fantasy-ii-japanese-to.html' title='Famicom Final Fantasy II Japanese to English Conversion'/><author><name>Jonnyboy</name><uri>http://www.blogger.com/profile/17452611876879851494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp0.blogger.com/_K5ghJYMcH8w/R5hJc9afRtI/AAAAAAAAAAQ/u3FgHNNdTD4/S220/jstick.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-9iGFxpPrX-g/ToLT9rRAVsI/AAAAAAAAA3A/C-Q_pIcmItc/s72-c/Screen%2Bshot%2B2011-09-28%2Bat%2B5.53.43%2BPM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-9168700105360815514</id><published>2011-09-27T22:17:00.000-07:00</published><updated>2011-09-27T22:18:00.897-07:00</updated><title type='text'>Rust vim syntax and indent files.</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I'm a bit of a vim junkie, and if you're like me, you'll almost definitely want to have your vim configured for the correct rust syntax.&amp;nbsp; Not just for the pretty colors but to let you know &lt;a href="https://github.com/graydon/rust/pull/987#issuecomment-2215956"&gt;when you're missing a quote&lt;/a&gt;.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://twitter.com/#%21/pcwalton"&gt;Patrick Walton&lt;/a&gt; must be a vim user as he seems to have written the vim syntax file for rust, You can pull it from the rust source code or from the&lt;a href="https://github.com/graydon/rust/tree/master/src/etc/vim"&gt; git repository&lt;/a&gt;, and put it in the relevant vim settings folder (.vim on unix) &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After copying the files to this folder, add the following&amp;nbsp; line to your vimrc:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;au BufRead,BufNewFile *.rs setfiletype rust&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&amp;nbsp;(usually $HOME/.vimrc or $HOME/.gvimrc ).&amp;nbsp; Reload your vim settings or restart vim and open a rust source code file.&lt;br /&gt;&lt;br /&gt;You should see your rust files in all their syntactic highlighted glory.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-9168700105360815514?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/9168700105360815514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=9168700105360815514' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/9168700105360815514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/9168700105360815514'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2011/09/rust-vim-syntax-and-indent-files.html' title='Rust vim syntax and indent files.'/><author><name>WadeMealing</name><uri>http://www.blogger.com/profile/16018870296209441900</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-102387414516861163</id><published>2011-09-25T20:01:00.000-07:00</published><updated>2011-09-25T21:07:12.601-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='erlang'/><category scheme='http://www.blogger.com/atom/ns#' term='Rust'/><title type='text'>Hello World in Rust</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;a href="https://github.com/graydon/rust"&gt;Rust&lt;/a&gt; is a low level systems language developed by Mozilla for future embedding into their browser and other tools.&amp;nbsp; I was first made aware of it a year ago on the &lt;a href="http://programming.reddit.com/"&gt;programming subreddit&lt;/a&gt;, but it looked a little too abstract to be useful.&lt;br /&gt;&lt;br /&gt;I stumbled across it again yesterday and decided to compile the language tool chain and give it another go.&lt;br /&gt;&lt;br /&gt;The language seems to have some very nice functionality, a cross between erlang and C, which may suit my fancy.&lt;br /&gt;&lt;br /&gt;The toolchain was a bit annoying to set up, and I might go harrass the &lt;a href="irc://irc.mozilla.org/%23Rust"&gt;#Rust irc channel&lt;/a&gt; to see if there is a simpler way to get started.&lt;br /&gt;&lt;br /&gt;In the mean time, here is hello world.&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-- hello-world.rs --&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;use std;&lt;br /&gt;import std::io;&lt;br /&gt;&lt;br /&gt;fn main(argv: [str]) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; let out = io::stdout();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; out.write_line("Hello world"); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;I compiled it with the command:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ rustc hello-world.rs -o hello-world -L /usr/local/lib/rust/&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ ./hello-world&lt;/div&gt;Hello world&lt;br /&gt;&lt;br /&gt;Fin.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-102387414516861163?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/102387414516861163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=102387414516861163' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/102387414516861163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/102387414516861163'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2011/09/hello-world-in-rust.html' title='Hello World in Rust'/><author><name>WadeMealing</name><uri>http://www.blogger.com/profile/16018870296209441900</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-6462876184508322955</id><published>2011-08-25T08:52:00.000-07:00</published><updated>2011-08-25T08:52:24.031-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='erlang'/><category scheme='http://www.blogger.com/atom/ns#' term='vmcore'/><category scheme='http://www.blogger.com/atom/ns#' term='hex'/><title type='text'>Converting to and from hex in Erlang.</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;$ erl&lt;br /&gt;Erlang R14B03 (erts-5.8.4) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [kernel-poll:false]&lt;br /&gt;Eshell V5.8.4&amp;nbsp; (abort with ^G)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;%% The base (16) followed by the hex value (0F), number is returned as a decimal.&lt;br /&gt;&lt;br /&gt;1&amp;gt; &lt;a href="http://www.erlang.org/doc/reference_manual/data_types.html"&gt;16#0F.&lt;/a&gt;&lt;br /&gt;15&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;%% lets convert our value back, &lt;br /&gt;&lt;br /&gt;2&amp;gt; &lt;a href="http://www.erlang.org/doc/man/erlang.html#integer_to_list-2"&gt;integer_to_list&lt;/a&gt;(15, 16).&lt;br /&gt;"0F"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is of course covered in the erlang manuals, but Its nice to have it in one place.&lt;br /&gt;&lt;br /&gt;I regularly work in &lt;a href="http://people.redhat.com/anderson/crash_whitepaper/"&gt;crash&lt;/a&gt; so, I need to do basic math in hex, which I usually do something like this&lt;br /&gt;&lt;br /&gt;3&amp;gt;&amp;nbsp; integer_to_list(16#0F + 16#FF, 16).&lt;br /&gt;"10E"&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-6462876184508322955?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/6462876184508322955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=6462876184508322955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/6462876184508322955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/6462876184508322955'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2011/08/converting-to-and-from-hex-in-erlang.html' title='Converting to and from hex in Erlang.'/><author><name>WadeMealing</name><uri>http://www.blogger.com/profile/16018870296209441900</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Brisbane QLD, Australia</georss:featurename><georss:point>-27.4709331 153.0235024</georss:point><georss:box>-28.3726091 151.7600749 -26.5692571 154.28692990000002</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-7472120947350138778</id><published>2011-08-04T09:37:00.000-07:00</published><updated>2011-11-23T15:35:51.017-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='erlang'/><category scheme='http://www.blogger.com/atom/ns#' term='rebar'/><category scheme='http://www.blogger.com/atom/ns#' term='RHEL'/><category scheme='http://www.blogger.com/atom/ns#' term='Centos'/><title type='text'>Starting with rebar, live upgrades and packaging erlang code RPM</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="font-family: inherit;"&gt;Rebar is something that I wish I was taught when I first started using erlang, it will help new programmers get started with erlang without having to do the boring "book-keeping" behind the setup/compile/test/release system.&amp;nbsp; It really is a good way to get started.&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;Some readers may note that there are many rebar tutorials out on the net, however nothing for Red Hat style Linux, and many of them more complicated than they need be.&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: large;"&gt;Installing Rebar&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'm lazy and always use a relatively modern Linux distribution. If you're using Fedora 15/16 or Red Hat Enterprise Linux 5 or 6 (with EPEL) you can install rebar with the command&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash"&gt;&lt;span class="nv"&gt;$ sudo yum install erlang-rebar&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;This will also install the necessary erlang runtime/vm and other related tools, correct for whatever architecture your system is running.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: large;"&gt;Creating your first erlang project&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;[wmealing@mutalisk wmealing]&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; mkdir myfirstapp&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;[wmealing@mutalisk wmealing] cd myfirstapp&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;[wmealing@mutalisk myfirstapp] rebar create-app appid=something&lt;br /&gt;==&amp;gt;; myfirstapp (create-app)&lt;br /&gt;Writing src/something.app.src&lt;br /&gt;Writing src/something_app.erl&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;Writing src/something_sup.erl&lt;/span&gt;&lt;/div&gt;&lt;blockquote class="tr_bq"&gt;&lt;br /&gt;If you get the error "ERROR: Template simpleapp not found." when attempting to try the above commands, copy the templates into the user-specific template directory.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;[wmealing@mutalisk myfirstapp] mkdir -p $HOME/.rebar/templates/&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;[wmealing@mutalisk myfirstapp] cp /usr/lib*/erlang/lib/rebar-2/priv/templates/* &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;$HOME/.rebar/templates/&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;Backup cowboy, what just happened ? Rebar created an app based on the templates that are included.&amp;nbsp; These templates are located in the /usr/lib64/erlang/lib/rebar-2/priv/templates/ directory if you're on 64 bit&amp;nbsp; or if you're still using 32 bit erlang, /usr/lib/erlang/lib/rebar-2/priv/templates/ directory.&amp;nbsp; So it creates from the "simpleapp*" named files substituting whatever you supplied for the appid where it is mentioned in the templates.&lt;br /&gt;&lt;br /&gt;Unsurprisingly this created the src directory and a simple "application" with the appid provided on the command line.&amp;nbsp; Can I suggest you be a little bit more creative than my example.&lt;br /&gt;&lt;br /&gt;Even though you have not written any code yet, run compile and test that the skeleton that you have created compiles.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: large;"&gt;Compiling&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;[wmealing@mutalisk myfirstapp] rebar compile&lt;br /&gt;==&amp;gt; myfirstapp (compile)&lt;br /&gt;Compiled src/something_app.erl&lt;br /&gt;Compiled src/something_sup.erl&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And yeah! your first template-style erlang app compiled, and the "beam" code is in the ebin directory.&amp;nbsp; See the project layout so far in the example below.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;[wmealing@mutalisk workspace] tree myfirstapp&lt;br /&gt;myfirstapp&lt;br /&gt;|-- ebin&lt;br /&gt;|&amp;nbsp;&amp;nbsp; |-- something.app&lt;br /&gt;|&amp;nbsp;&amp;nbsp; |-- something_app.beam&lt;br /&gt;|&amp;nbsp;&amp;nbsp; `-- something_sup.beam&lt;br /&gt;`-- src&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |-- something_app.erl&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |-- something.app.src&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; `-- something_sup.erl&lt;br /&gt;&lt;br /&gt;2 directories, 6 files&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;The project so far is pretty much a basic supervisor for your application, this by itself isn't quite enough to be useful.&amp;nbsp; Usually you'd want your application to do something useful.&amp;nbsp; This typically involves creating&amp;nbsp; a "server" of some kind.&amp;nbsp; The most common is the gen_server.&lt;br /&gt;&lt;br /&gt;Many of the other rebar tutorials seem to either enjoy making additional complex files however modern releases of rebar already include templates for a basic server.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;Creating a server &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[wmealing@mutalisk myfirstapp]$ rebar create template=simplesrv srvid=mine_srv&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;==&amp;gt; myfirstapp (create)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Writing src/mine_srv.erl&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This creates a gen_server style server in the &lt;b&gt;src/mine_srv.erl&lt;/b&gt; file that you can modify to how you see fit.&lt;br /&gt;&lt;br /&gt;Lets make it greet the user in a stereotypical Australian greeting, for use later when we show hot-code-upgrading in the section "Running the code".&lt;br /&gt;&lt;br /&gt;So, modify &lt;b&gt;src/mine_srv.erl &lt;/b&gt;and its existing handle_cast function to print the Aussie greeting to the stdout in the gen_server cast.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;-export([greet/0]).&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;greet() -&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gen_server:cast(?MODULE, {matchallthethings}).&lt;br /&gt;&lt;br /&gt;handle_cast(_Msg, State) -&amp;gt;&lt;br /&gt;&amp;nbsp; io:format("Gday Mate, how are ya ?~n"),&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp; {noreply, State}.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;We added the exported "greet" call so we can abstract away the implementation from the caller.&amp;nbsp; We wont test it now, but we'll test it later.&lt;br /&gt;&lt;br /&gt;To have mine_srv be supervised/started by the application, the something_sup (supervisor) will need to be instructed to start mine_srv as a worker.&lt;br /&gt;&lt;br /&gt;In &lt;b&gt;src/something_sup.erl&lt;/b&gt; lets change the init function to start the mine_srv worker.&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;init([]) -&amp;gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MineSrvWorker = ?CHILD(mine_srv , worker), &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Children = [ MineSrvWorker ], &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RestartStrategy = { one_for_one , 4, 9600},&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {ok, { RestartStrategy, Children } }. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;Cleaning up (make clean) &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;Just so we can test how it works, issue the command rebar clean and rebar compile to compile the supervisor and your new gen_server server.&amp;nbsp; Just as you can compile with erlang, you can also use rebar to&amp;nbsp; "make clean" and recompile as you would when any project is changed.&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;[wmealing@mutalisk myfirstapp]$ rebar clean&lt;br /&gt;==&amp;gt; myfirstapp (clean)&lt;br /&gt;[wmealing@mutalisk myfirstapp]$ rebar compile&lt;br /&gt;==&amp;gt; myfirstapp (compile)&lt;br /&gt;Compiled src/something_app.erl&lt;br /&gt;Compiled src/mine_srv.erl&lt;br /&gt;Compiled src/something_sup.erl&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;Running tests &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;You may or&amp;nbsp; of running unit tests or integration tests, rebar supports a few kind of tests, but i'll kick it off with eunit to get things started.&lt;br /&gt;&lt;br /&gt;Rebar looks at eunits configuration options through a file named rebar.config&amp;nbsp; file. The erlang-rebar package puts one in /usr/share/doc/erlang-rebar-2/rebar.config.sample by default, but you should be able to make an empty one with just the following lines in it.&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;[wmealing@mutalisk myfirstapp]$ cat rebar.config&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;%% Erlang compiler options&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;{erl_opts, [{i, "test"}, {src_dirs, ["src"]},&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {platform_define,&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "(linux|solaris|freebsd|darwin)", 'HAVE_SENDFILE'},&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {platform_define, "(linux|freebsd)", 'BACKLOG', 128}]}.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;{eunit_opts, [verbose, {report, {eunit_surefire, [{dir, "."}]}}]}.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;{cover_enabled, true}.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;This line ensures that eunit will include the test directory in its locations to search for "included" files.&lt;br /&gt;&lt;br /&gt;Create a test directory&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;[wmealing@mutalisk myfirstapp]$ mkdir test&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For each of the parts of your project you wish to test, add something similar to this at the end.&amp;nbsp; For my example I append the below to mine_srv.erl.&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;-ifdef(TEST).&lt;br /&gt;-include("something_tests.hrl").&lt;br /&gt;-endif.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;The HRL file extention is uncommon and is intended to show that the contents of the file should be included in another erl file.&lt;br /&gt;&lt;br /&gt;Next create the test/something_tests.hrl file.&amp;nbsp; This should contain standard &lt;a href="http://www.erlang.org/doc/man/eunit.html"&gt;eunit tests&lt;/a&gt;.&amp;nbsp; The name something_tests.hrl should accurately reflect what the "something" is that you are testing. It is a good practice to name it something related to the module or server&amp;nbsp; and type of testing you are doing. Here is a quick example of a very simple test in the the test/something_tests.hrl file.&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;-include_lib("eunit/include/eunit.hrl").&lt;br /&gt;&lt;br /&gt;my_test() -&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?assert(0 + 0 =:=&amp;nbsp; 0).&lt;br /&gt;&lt;br /&gt;my_second_test() -&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?assert(0 + 1 =:= 1 ).&lt;br /&gt;&lt;br /&gt;simple_test() -&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?assert(1 + 2 =:= 3).&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;To run these tests run the command:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;[wmealing@mutalisk myfirstapp]$ rebar eunit&lt;br /&gt;==&amp;gt; myfirstapp (eunit)&lt;br /&gt;======================== EUnit ========================&lt;br /&gt;module 'something_sup'&lt;br /&gt;module 'mine_srv'&lt;br /&gt;&amp;nbsp; mine_srv: my_test...ok&lt;br /&gt;&amp;nbsp; mine_srv: my_second_test...ok&lt;br /&gt;&amp;nbsp; mine_srv: simple_test...ok&lt;br /&gt;&amp;nbsp; [done in 0.008 s]&lt;br /&gt;module 'something_app'&lt;br /&gt;=======================================================&lt;br /&gt;&amp;nbsp; All 3 tests passed.&lt;/span&gt;&lt;span style="font-family: inherit; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;Cover analysis: /home/wmealing/Documents/workspace/myfirstapp/.eunit/index.html&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A source code coverage analysis can be found in the the url above.&lt;br /&gt;I'll leave it as an exercise to the reader to figure out what it shows when tests go wrong.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;Creating Documentation &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Rebar can build documentation on your API, or whatever additional information you wish to provide assuming you make it happen in the&lt;a href="http://www.erlang.org/documentation/doc-5.4.2.1/lib/edoc-0.1/doc/html/index.html"&gt; edoc format&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Edoc requires writing documentation in code. It uses the&amp;nbsp; @something style tagging and immediately documents the function right below it.&amp;nbsp; For example:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;  %% @doc Greets the user on the standard output, returns nothing&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;  greet() -&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;       gen_server:cast(?MODULE, {matchallthethings}).&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;pre style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;The tags must follow a comment (%%) followed by a space starting on the first character of the line.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;There are a bunch of supported tags, the &lt;a href="http://www.erlang.org/doc/apps/edoc/chapter.html"&gt;edoc welcome page&lt;/a&gt; has a bunch more on the topic.&amp;nbsp; Rebar makes it easy to generate html documentation from your code by running the command&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;[wmealing@mutalisk myfirstapp]$ rebar doc&lt;br /&gt;==&amp;gt; myfirstapp (doc)&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Stylized html format pages will&amp;nbsp; appear in the docs subdirectory, you can regenerate them at any time, but this will destroy any changes made to the files in the doc directory.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;Running your code.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;One thing that rebar does not do, is run your application for you. &amp;nbsp; You will need to run it yourself.&amp;nbsp; Fortunately its actually pretty easy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;[wmealing@mutalisk myfirstapp]$ erl -pa ebin/&lt;br /&gt;Erlang R14B03 (erts-5.8.4) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [kernel-poll:false]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;1&amp;gt; application:start(something).&lt;br /&gt;ok&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now to test the greet function we wrote earlier:&lt;br /&gt;&lt;br /&gt;2&amp;gt; mine_srv:greet().&lt;br /&gt;Gday Mate, how are ya ?&lt;br /&gt;ok&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Building the first release&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is rarely the case that the software will only run on the system that it is developed for.&amp;nbsp; The smart cookies at Ericsson and rebar know this and have a release mechanism that can be used to deploy the "whole stack" as a release.&amp;nbsp; This includes all the files, applications and libraries that would be used to run the application.&lt;br /&gt;&lt;br /&gt;Rebar simplifies the release requirements, but its still a little involved to "get right".&amp;nbsp;&amp;nbsp; Lets walk through using the existing sample to build a first release to deploy on a system.&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;[wmealing@mutalisk myfirstapp]$&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;code class="console"&gt; mkdir rel&lt;br /&gt;&lt;/code&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;[wmealing@mutalisk myfirstapp]$&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;code class="console"&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;rel/&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;[wmealing@mutalisk myfirstapp]$&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;&lt;code&gt; &lt;/code&gt;rebar create-node nodeid=something_node&lt;/span&gt;&lt;pre&gt;&lt;code class="console"&gt;&lt;span class="gp"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;==&amp;gt; myfirstapp (create-node)&lt;br /&gt;Writing reltool.config&lt;br /&gt;Writing files/erl&lt;br /&gt;Writing files/nodetool&lt;br /&gt;Writing files/something_node&lt;br /&gt;Writing files/app.config&lt;br /&gt;Writing files/vm.args&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code class="console"&gt;&lt;span class="gp"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;The name here shouldn't be labelled after a release codename or version but the "service" or daemon name that you'd like to start the script with.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Hot upgrades&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;@fixme This is something I also plan to cover another day.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Wrapping it up.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So rebar is a very useful tool to add to your arsenal, and if it is used for all your projects it will make a good head start on creating standardized, simple maintainable code that other (seasoned) erlang programmers should be familiar with.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Footnotes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I know there could be a better project layout for this, but with the mindset of keeping it simple, I've negated mentioning multiple applications and some of the finer points of migrating state in the gen_server between updates, this should be considered when you update your erlang application. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-7472120947350138778?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/7472120947350138778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=7472120947350138778' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/7472120947350138778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/7472120947350138778'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2011/08/starting-with-rebar.html' title='Starting with rebar, live upgrades and packaging erlang code RPM'/><author><name>WadeMealing</name><uri>http://www.blogger.com/profile/16018870296209441900</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-248672687715980795</id><published>2010-09-26T01:42:00.000-07:00</published><updated>2010-09-26T02:28:11.490-07:00</updated><title type='text'>Apple IIgs 1mb memory expansion to 4mb conversion</title><content type='html'>In the past a post to comp.sys.apple2 referred to this site: http://www.apple2gs.republika.pl/ which documents how someone converted a common 1mb apple memory expansion card to 4mb using 30 pin simms.  Recently, I also found another guy who did the same thing but not using 8/9 chip simms http://www.apple2pl.us/ .&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since I do not have any 30 pin simms lying around I did not undertake this conversion.  Recently I found some simms on ebay for under $10.  I decided that maybe it's time to try this out.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is how a card would look before the conversion:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/TJ8LfqPFZ1I/AAAAAAAAAig/A07JGTUy1vQ/s1600/apple1mb.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/TJ8LfqPFZ1I/AAAAAAAAAig/A07JGTUy1vQ/s320/apple1mb.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5521144306720925522" style="cursor: pointer; width: 320px; height: 124px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The directions said to remove all the dram chips, sockets and capcacitors:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/TJ8OxU82plI/AAAAAAAAAio/CtZ1DD6QSlU/s1600/IMG_4729.JPG"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/TJ8OxU82plI/AAAAAAAAAio/CtZ1DD6QSlU/s320/IMG_4729.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521147908779845202" style="cursor: pointer; width: 320px; height: 214px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Here are the simms we're going to use:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/TJ8OxzyGJPI/AAAAAAAAAiw/dsejNEAk1f8/s1600/IMG_4732.JPG"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/TJ8OxzyGJPI/AAAAAAAAAiw/dsejNEAk1f8/s320/IMG_4732.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521147917056222450" style="cursor: pointer; width: 320px; height: 214px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;We use double sided tape to attach the simms:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/TJ8P3387VTI/AAAAAAAAAi4/uu2kuocvtT4/s1600/IMG_4733.JPG"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/TJ8P3387VTI/AAAAAAAAAi4/uu2kuocvtT4/s320/IMG_4733.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521149120766235954" style="cursor: pointer; width: 320px; height: 214px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Then follow the schematic diagram.  This is how it looks after the address lines are hooked up:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/TJ8P4QFfQPI/AAAAAAAAAjA/GJBmPZjXvmA/s1600/IMG_4735.JPG"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/TJ8P4QFfQPI/AAAAAAAAAjA/GJBmPZjXvmA/s320/IMG_4735.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521149127244595442" style="cursor: pointer; width: 320px; height: 214px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/TJ8P4j3Ek7I/AAAAAAAAAjI/Gb-WTJ7E6zs/s1600/IMG_4736.JPG"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/TJ8P4j3Ek7I/AAAAAAAAAjI/Gb-WTJ7E6zs/s320/IMG_4736.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521149132552836018" style="cursor: pointer; width: 320px; height: 214px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;After several hours it's finally finished:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/TJ8ROAWeoxI/AAAAAAAAAjw/hwT-BURyzmo/s1600/DSC00295.JPG"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/TJ8ROAWeoxI/AAAAAAAAAjw/hwT-BURyzmo/s320/DSC00295.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521150600489640722" style="cursor: pointer; width: 320px; height: 240px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/TJ8Q_gXJsEI/AAAAAAAAAjo/n3BvePNaYzk/s1600/DSC00294.JPG"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/TJ8Q_gXJsEI/AAAAAAAAAjo/n3BvePNaYzk/s320/DSC00294.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521150351384358978" style="cursor: pointer; width: 320px; height: 240px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lets plug it in:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/TJ8Q_VjF0qI/AAAAAAAAAjg/MxeYvRKbx8c/s1600/DSC00291.JPG"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/TJ8Q_VjF0qI/AAAAAAAAAjg/MxeYvRKbx8c/s320/DSC00291.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521150348481647266" style="cursor: pointer; width: 320px; height: 240px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/TJ8Q--j15pI/AAAAAAAAAjY/h8WSe96oY8E/s1600/DSC00290.JPG"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/TJ8Q--j15pI/AAAAAAAAAjY/h8WSe96oY8E/s320/DSC00290.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521150342310782610" style="cursor: pointer; width: 320px; height: 240px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Running the memory testing program from: http://apple2.info/downloads?dl_cat=6&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/TJ8Q-v-HiAI/AAAAAAAAAjQ/ruFiBJhVorY/s1600/DSC00289.JPG"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/TJ8Q-v-HiAI/AAAAAAAAAjQ/ruFiBJhVorY/s320/DSC00289.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521150338394458114" style="cursor: pointer; width: 320px; height: 240px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm leaving this running overnight to see if it produces any errors.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-248672687715980795?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/248672687715980795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=248672687715980795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/248672687715980795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/248672687715980795'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2010/09/apple-iigs-1mb-memory-expansion-to-4mb.html' title='Apple IIgs 1mb memory expansion to 4mb conversion'/><author><name>Jonnyboy</name><uri>http://www.blogger.com/profile/17452611876879851494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp0.blogger.com/_K5ghJYMcH8w/R5hJc9afRtI/AAAAAAAAAAQ/u3FgHNNdTD4/S220/jstick.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_K5ghJYMcH8w/TJ8LfqPFZ1I/AAAAAAAAAig/A07JGTUy1vQ/s72-c/apple1mb.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-6984144107651532545</id><published>2010-07-02T21:43:00.000-07:00</published><updated>2010-07-02T22:43:33.059-07:00</updated><title type='text'>Apple IIc plus 240V modification revisited</title><content type='html'>In the previous modification I essentially followed Jorge's mod:&lt;div&gt;http://homepage.mac.com/jorgechamorro/a2things/a2c+Web/index.html&lt;/div&gt;&lt;div&gt;and adapted it with locally available parts.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This has one big drawback.  It generates a lot of heat.  It is also very inefficient.  The voltage is dropped down by letting it go as heat.  With the case closed, it may (I did not want to try) be possible to reach a temperature that can warp, deform, or quickly yellow the area of the case near the power supply.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I thought about modifying the switching power supply the "proper" way, but without knowing the actual design of the original supply, plus my limited knowledge of switching power supplies, I thought this may not be the way for me to go.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;James Littlejohn have made a lot of adaptors for ATX power supplies for use with Apple II's.  One of the items he has is the LittlePower IIc+.  This handy device, plus a small enough ATX supply should be enough to run the IIc+ with no problems.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After waiting a few weeks for the USPS to deliver my mail, I finally got all the parts I need.  Earlier today, I opened up the IIc+ to to a quick test:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/TC7DWWptCTI/AAAAAAAAAcY/ukrhQKUzONE/s1600/Picture+97.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/TC7DWWptCTI/AAAAAAAAAcY/ukrhQKUzONE/s320/Picture+97.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489539784616249650" style="cursor: pointer; width: 320px; height: 290px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/TC7D1fb4heI/AAAAAAAAAcg/7M-3X_pjHR8/s1600/Picture+98.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/TC7D1fb4heI/AAAAAAAAAcg/7M-3X_pjHR8/s320/Picture+98.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489540319550146018" style="cursor: pointer; width: 304px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/TC7C8koNeXI/AAAAAAAAAcQ/_17knpk3L3c/s1600/Picture+96.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/TC7C8koNeXI/AAAAAAAAAcQ/_17knpk3L3c/s320/Picture+96.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489539341691484530" style="cursor: pointer; width: 320px; height: 214px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;After getting it to work, I proceeded to taking the power supply and the power brick apart:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/TC7F0Qd7GUI/AAAAAAAAAcw/rc3QiYVu2d4/s1600/Picture+99.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/TC7F0Qd7GUI/AAAAAAAAAcw/rc3QiYVu2d4/s320/Picture+99.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489542497375557954" style="cursor: pointer; width: 253px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/TC7F1Phnf4I/AAAAAAAAAc4/1oS_o8jmSyQ/s1600/Picture+100.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/TC7F1Phnf4I/AAAAAAAAAc4/1oS_o8jmSyQ/s320/Picture+100.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489542514302484354" style="cursor: pointer; width: 320px; height: 262px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/TC7F1--8kXI/AAAAAAAAAdA/0fbCPP-8K1o/s1600/Picture+101.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/TC7F1--8kXI/AAAAAAAAAdA/0fbCPP-8K1o/s320/Picture+101.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489542527041966450" style="cursor: pointer; width: 320px; height: 178px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/TC7F2Xm0pbI/AAAAAAAAAdI/HUi4HkNja9g/s1600/Picture+102.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/TC7F2Xm0pbI/AAAAAAAAAdI/HUi4HkNja9g/s320/Picture+102.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489542533651670450" style="cursor: pointer; width: 216px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/TC7F2Xm0pbI/AAAAAAAAAdI/HUi4HkNja9g/s1600/Picture+102.png"&gt;&lt;/a&gt;As you can see the power brick is way smaller than the original power supply.  This will fit nicely into the original metal shell, and still have room for the LittlePower IIc+ and the picopsu.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/TC7HesS5DBI/AAAAAAAAAdQ/5gXlUMpRCxA/s1600/Picture+103.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/TC7HesS5DBI/AAAAAAAAAdQ/5gXlUMpRCxA/s320/Picture+103.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489544325911612434" style="cursor: pointer; width: 320px; height: 220px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/TC7HesS5DBI/AAAAAAAAAdQ/5gXlUMpRCxA/s1600/Picture+103.png"&gt;&lt;/a&gt;Now it's time to wire the picopsu directly to the power brick.  Note that I have kept the shell and all the parts in case I want to put it back together.  Or in case I decide I want to turn the IIc+ into a portable device with battery, etc built in.  There is a grounding board at the bottom of the unit,  it wasn't too hard to desolder this:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/TC7Hf4AT4eI/AAAAAAAAAdY/lyr6eZ5a1w4/s1600/Picture+104.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/TC7Hf4AT4eI/AAAAAAAAAdY/lyr6eZ5a1w4/s320/Picture+104.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489544346234773986" style="cursor: pointer; width: 320px; height: 205px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;This is the actual board of the power brick.  The AC goes into the 3 big pads  near the right side:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/TC7HhxzlWJI/AAAAAAAAAdo/SWlvJNAazV8/s1600/Picture+106.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/TC7HhxzlWJI/AAAAAAAAAdo/SWlvJNAazV8/s320/Picture+106.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489544378930518162" style="cursor: pointer; width: 320px; height: 250px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Unfortunately for me, the LittlePower IIc+ doesn't fit into the metal shell in its intended location over the hole.  It must have been expected that you will be removing the internal power supply to use this device.  If I remove the power supply, there will be nothing to hold the switch and the IEC connector at the back.  I thought that maybe I could extend the connector with some wires:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/TC7Hi66pJuI/AAAAAAAAAdw/Qf006KX20Vs/s1600/Picture+107.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/TC7Hi66pJuI/AAAAAAAAAdw/Qf006KX20Vs/s320/Picture+107.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489544398555916002" style="cursor: pointer; width: 320px; height: 226px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Ok looking good.&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/TC7LWcIAjOI/AAAAAAAAAd4/TCaE4jJS2_o/s1600/Picture+108.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/TC7LWcIAjOI/AAAAAAAAAd4/TCaE4jJS2_o/s320/Picture+108.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489548582178557154" style="cursor: pointer; width: 320px; height: 180px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/TC7LX2MRdQI/AAAAAAAAAeA/TDJvjTywXho/s1600/Picture+109.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/TC7LX2MRdQI/AAAAAAAAAeA/TDJvjTywXho/s320/Picture+109.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489548606355633410" style="cursor: pointer; width: 320px; height: 190px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;After putting electrical tape on the parts that can potentially touch the case, including the ATX pins, I am now able to close the case: (if you look carefully you can actually see the green LED of the power brick when the unit is on)&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/TC7LZNiS67I/AAAAAAAAAeI/IQn02Imx3lg/s1600/Picture+110.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/TC7LZNiS67I/AAAAAAAAAeI/IQn02Imx3lg/s320/Picture+110.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489548629801888690" style="cursor: pointer; width: 219px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Finally I can close the whole case:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/TC7LaH3CZDI/AAAAAAAAAeQ/Un21Sc94_tA/s1600/Picture+111.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/TC7LaH3CZDI/AAAAAAAAAeQ/Un21Sc94_tA/s320/Picture+111.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489548645458142258" style="cursor: pointer; width: 320px; height: 273px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Run a short Applesoft program:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/TC7La-ds3rI/AAAAAAAAAeY/_3shqTIPzm4/s1600/Picture+112.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/TC7La-ds3rI/AAAAAAAAAeY/_3shqTIPzm4/s320/Picture+112.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489548660115824306" style="cursor: pointer; width: 320px; height: 250px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have left both apple keys held down to run a continous self test.  So far it's been 3 hours and I don't feel too much heat (next to none) out of the power supply.  I may or may not revisit this yet again.  I might decide to power the unit with batteries.  There is still room on both sides of the 3.5" floppy drive for other things so maybe I may be able to leave the brick internal.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-6984144107651532545?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/6984144107651532545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=6984144107651532545' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/6984144107651532545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/6984144107651532545'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2010/07/apple-iic-plus-240v-modification.html' title='Apple IIc plus 240V modification revisited'/><author><name>Jonnyboy</name><uri>http://www.blogger.com/profile/17452611876879851494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp0.blogger.com/_K5ghJYMcH8w/R5hJc9afRtI/AAAAAAAAAAQ/u3FgHNNdTD4/S220/jstick.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_K5ghJYMcH8w/TC7DWWptCTI/AAAAAAAAAcY/ukrhQKUzONE/s72-c/Picture+97.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-18072980365843067</id><published>2010-06-04T04:26:00.000-07:00</published><updated>2010-06-12T05:31:50.148-07:00</updated><title type='text'>iPod touch repair</title><content type='html'>I recently came into possession of 2 ipod touch units. One is a 32Gb 2nd gen, the other an 8Gb 3rd gen (which is essentially same as the 2nd gen).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first unit had a snapped ribbon cable. The previous owner attempted to replace the touch screen and ended up breaking the cable. To make things worse, the screen looks like it is "white on black". The midframe (plastic stuff) was also missing a big chunk of.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Off to ebay to get:&lt;/div&gt;&lt;div&gt;2nd gen touch screen&lt;/div&gt;&lt;div&gt;mid frame&lt;/div&gt;&lt;div&gt;2nd gen LCD&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the meantime I had a look at the 8Gb 3rd gen unit. Looks like this unit has never been opened, and the only thing really wrong with it is the bent pins in the dock connector. While I waited for the parts to arrive, I thought I'd just take the parts from this unit and get the 32Gb working. I transferred the LCD first, then the touch screen + midframe. After using a lens blower to blow away all the dust and brushing a bit with a lens brush, I closed up the unit. This unit is working very well, but it has a very short battery life. I just then added a battery to the list of parts. I didn't get a chance to take pictures of this unit, but since I moved all the broken parts to the other unit, I will take pictures when I do that.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The 2nd unit is a 8Gb 3rd gen unit (actually a 2nd gen unit).&lt;/div&gt;&lt;div&gt;After removing the LCD, this is what's inside&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/TA4N_7zMjGI/AAAAAAAAAZo/1vT4_1G1Y2o/s1600/Picture+76.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/TA4N_7zMjGI/AAAAAAAAAZo/1vT4_1G1Y2o/s320/Picture+76.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480333188591815778" style="cursor: pointer; width: 316px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And after removing the metal shield (desoldered the 2 blobs on both sides and pried up the metal clips)  we see the dock connector's completely bent pins&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/TA4OBBjuoaI/AAAAAAAAAZw/TQE_ZYPnVaI/s1600/Picture+77.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/TA4OBBjuoaI/AAAAAAAAAZw/TQE_ZYPnVaI/s320/Picture+77.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480333207317422498" style="cursor: pointer; width: 320px; height: 281px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;At this point, I was thinking of what to do with it.  I could desolder the whole connector and replace it with one from one of my old broken ipod minis.  But this means using a SMD rework station to heat the whole area potentially blowing off some of the nearby (tiny) components.  I first checked if it was possible to straighten the pins.  Using a small screwdriver I carefully "combed" the pins.  This is the result:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/TA4XQp4vUVI/AAAAAAAAAZ4/5_tF9tuJX-w/s1600/Picture+78.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/TA4XQp4vUVI/AAAAAAAAAZ4/5_tF9tuJX-w/s320/Picture+78.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480343371445653842" style="cursor: pointer; width: 320px; height: 126px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Using an external USB power supply I plugged it in.  No smoke.  Seems to be a good sign.  I went ahead and hooked up the LCD from the other unit:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/TA4YdRWAVSI/AAAAAAAAAaA/5MRrvYwIWgA/s1600/Picture+79.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/TA4YdRWAVSI/AAAAAAAAAaA/5MRrvYwIWgA/s320/Picture+79.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480344687707444514" style="cursor: pointer; width: 214px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That is what I meant when I said the colours were reversed.  Everything looked like that, including the apple logo on boot up.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, having seen that the board is still working and that the dock connector is somewhat usable, I went ahead and tested it on my computer.  It was detected by itunes and wanted to erase the contents.  That's a good sign, it means that the USB pins also work. After "combing" the pins some more to get it as straight as I could, I soldered the shield back in place.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/TA4ZfvgNxuI/AAAAAAAAAaI/Fi8sbbPNo7g/s1600/Picture+80.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/TA4ZfvgNxuI/AAAAAAAAAaI/Fi8sbbPNo7g/s320/Picture+80.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480345829674698466" style="cursor: pointer; width: 320px; height: 206px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then it's time to unpack the new LCD screen:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/TA4aubV9jXI/AAAAAAAAAaY/l_zw4eLVdZg/s1600/Picture+81.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/TA4aubV9jXI/AAAAAAAAAaY/l_zw4eLVdZg/s320/Picture+81.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480347181472648562" style="cursor: pointer; width: 320px; height: 206px; " /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/TA4awPEb6KI/AAAAAAAAAag/fScnusAmRNE/s1600/Picture+82.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/TA4awPEb6KI/AAAAAAAAAag/fScnusAmRNE/s320/Picture+82.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480347212537653410" style="cursor: pointer; width: 320px; height: 198px; " /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/TA4axugQREI/AAAAAAAAAao/AKpqlqgUJu8/s1600/Picture+83.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/TA4axugQREI/AAAAAAAAAao/AKpqlqgUJu8/s320/Picture+83.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480347238155699266" style="cursor: pointer; width: 320px; height: 202px; " /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/TA4aydunlYI/AAAAAAAAAaw/zTLcPhD9neM/s1600/Picture+84.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/TA4aydunlYI/AAAAAAAAAaw/zTLcPhD9neM/s320/Picture+84.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480347250832414082" style="cursor: pointer; width: 320px; height: 214px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After installing the new screen:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/TA4hr_3GunI/AAAAAAAAAbA/huI-2qX5DzQ/s1600/Picture+86.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/TA4hr_3GunI/AAAAAAAAAbA/huI-2qX5DzQ/s320/Picture+86.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480354836317125234" style="cursor: pointer; width: 215px; height: 320px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/TA4hrIPtx3I/AAAAAAAAAa4/l0OezoL-CJ4/s1600/Picture+85.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/TA4hrIPtx3I/AAAAAAAAAa4/l0OezoL-CJ4/s320/Picture+85.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480354821387962226" style="cursor: pointer; width: 206px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/TA4hrIPtx3I/AAAAAAAAAa4/l0OezoL-CJ4/s1600/Picture+85.png"&gt;&lt;/a&gt;After that I had to double sided tape the new frame (which arrived in 3 pieces) to the new touch screen and lock it on.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;12-06-10 Update:  My batteries for the first unit just arrived (in antistatic bag):&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/TBN6NQ7P40I/AAAAAAAAAbI/UliuzCwW-3E/s1600/Picture+87.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/TBN6NQ7P40I/AAAAAAAAAbI/UliuzCwW-3E/s320/Picture+87.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5481859539740386114" style="cursor: pointer; width: 320px; height: 211px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/TBN6NQ7P40I/AAAAAAAAAbI/UliuzCwW-3E/s1600/Picture+87.png"&gt;&lt;/a&gt;Here it is taken out:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/TBN6PCvbJTI/AAAAAAAAAbQ/euMQW9l0icI/s1600/Picture+88.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/TBN6PCvbJTI/AAAAAAAAAbQ/euMQW9l0icI/s320/Picture+88.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5481859570292434226" style="cursor: pointer; width: 320px; height: 210px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;After taking out the old battery:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/TBN6PCvbJTI/AAAAAAAAAbQ/euMQW9l0icI/s1600/Picture+88.png"&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/TBN6QU_axiI/AAAAAAAAAbY/I3q2-e5JfVc/s1600/Picture+89.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/TBN6QU_axiI/AAAAAAAAAbY/I3q2-e5JfVc/s320/Picture+89.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5481859592371226146" style="cursor: pointer; width: 320px; height: 222px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;A test fit:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/TBN6QU_axiI/AAAAAAAAAbY/I3q2-e5JfVc/s1600/Picture+89.png"&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/TBN6Rxn0OMI/AAAAAAAAAbg/QArmjKLKDUw/s1600/Picture+90.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/TBN6Rxn0OMI/AAAAAAAAAbg/QArmjKLKDUw/s320/Picture+90.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5481859617236728002" style="cursor: pointer; width: 320px; height: 213px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Applied the solder:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/TBN8UMQNFTI/AAAAAAAAAb4/wUTc8rycRQs/s1600/Picture+93.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/TBN8UMQNFTI/AAAAAAAAAb4/wUTc8rycRQs/s320/Picture+93.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5481861857768445234" style="cursor: pointer; width: 320px; height: 214px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Test with "bad" LCD.  I have been using the "reversed colour" LCD to test.  I try to keep the working LCD in a dust free environment.&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/TBN6SyDMn6I/AAAAAAAAAbo/B73gHSn4z2U/s1600/Picture+91.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/TBN6SyDMn6I/AAAAAAAAAbo/B73gHSn4z2U/s320/Picture+91.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5481859634531442594" style="cursor: pointer; width: 198px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/TBN6SyDMn6I/AAAAAAAAAbo/B73gHSn4z2U/s1600/Picture+91.png"&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/TBN8SXOvRyI/AAAAAAAAAbw/9kvaXTrMFRg/s1600/Picture+92.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/TBN8SXOvRyI/AAAAAAAAAbw/9kvaXTrMFRg/s320/Picture+92.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5481861826355349282" style="cursor: pointer; width: 320px; height: 191px; " /&gt;&lt;/a&gt;&lt;br /&gt;After installing the original LCD and touch screen:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/TBN8VZhMkoI/AAAAAAAAAcA/r44qbEof04U/s1600/Picture+94.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/TBN8VZhMkoI/AAAAAAAAAcA/r44qbEof04U/s320/Picture+94.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5481861878509245058" style="cursor: pointer; width: 320px; height: 217px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-18072980365843067?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/18072980365843067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=18072980365843067' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/18072980365843067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/18072980365843067'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2010/06/ipod-touch-repair.html' title='iPod touch repair'/><author><name>Jonnyboy</name><uri>http://www.blogger.com/profile/17452611876879851494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp0.blogger.com/_K5ghJYMcH8w/R5hJc9afRtI/AAAAAAAAAAQ/u3FgHNNdTD4/S220/jstick.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_K5ghJYMcH8w/TA4N_7zMjGI/AAAAAAAAAZo/1vT4_1G1Y2o/s72-c/Picture+76.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-5325907962124883070</id><published>2010-05-22T19:59:00.000-07:00</published><updated>2010-05-24T02:10:08.286-07:00</updated><title type='text'>Apple IIe TTL RGB to Commodore 1084s monitor</title><content type='html'>&lt;div&gt;I have finally finished constructing my cable.  Parts have just been sitting there waiting to be put together for a long time but I was too lazy to put them together.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So here is both sides of the cable:&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/S_icW5fyMjI/AAAAAAAAAYg/1t8RJEByBy0/s1600/Picture+28.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/S_icW5fyMjI/AAAAAAAAAYg/1t8RJEByBy0/s320/Picture+28.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5474297264274027058" style="cursor: pointer; width: 320px; height: 292px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/S_icW5fyMjI/AAAAAAAAAYg/1t8RJEByBy0/s1600/Picture+28.png"&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/S_icXxZW9mI/AAAAAAAAAYo/VUxYYTnakjk/s1600/Picture+29.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/S_icXxZW9mI/AAAAAAAAAYo/VUxYYTnakjk/s320/Picture+29.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5474297279279461986" style="cursor: pointer; width: 214px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is how the whole setup looks like (Still no disk drives for now)&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/S_icYu3XgGI/AAAAAAAAAYw/XAAu2Z8AzCI/s1600/Picture+30.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/S_icYu3XgGI/AAAAAAAAAYw/XAAu2Z8AzCI/s320/Picture+30.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5474297295779889250" style="cursor: pointer; width: 215px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When I got this IIe, the Delete key was missing, So I looked for a temporary key to put in its place:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/S_icZonJUVI/AAAAAAAAAY4/9bUokFzm5IE/s1600/Picture+31.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/S_icZonJUVI/AAAAAAAAAY4/9bUokFzm5IE/s320/Picture+31.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5474297311281107282" style="cursor: pointer; width: 320px; height: 214px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's the Startup screen:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/S_icaR-1y2I/AAAAAAAAAZA/E7r2fB1dqEI/s1600/Picture+32.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/S_icaR-1y2I/AAAAAAAAAZA/E7r2fB1dqEI/s320/Picture+32.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5474297322386344802" style="cursor: pointer; width: 320px; height: 216px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's some 80 column text&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/S_id3OOmcBI/AAAAAAAAAZQ/Cs1aHQJIYJY/s1600/Picture+34.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/S_id3OOmcBI/AAAAAAAAAZQ/Cs1aHQJIYJY/s320/Picture+34.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5474298919106539538" style="cursor: pointer; width: 320px; height: 210px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And finally some low res graphics:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/S_id4he7JCI/AAAAAAAAAZY/oB1el-mqRdQ/s1600/Picture+47.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/S_id4he7JCI/AAAAAAAAAZY/oB1el-mqRdQ/s320/Picture+47.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5474298941455148066" style="cursor: pointer; width: 320px; height: 210px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Update.  After I tried to run some game, I realized that some of the colours look "not-quite-right".  Output of the same program on Sweet 16 shows this:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/S_pBZNnHfLI/AAAAAAAAAZg/aygpqwCOfW0/s1600/Picture+75.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/S_pBZNnHfLI/AAAAAAAAAZg/aygpqwCOfW0/s320/Picture+75.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5474760198428523698" style="cursor: pointer; width: 320px; height: 249px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;I found from &lt;a href="http://groups.google.com/group/comp.sys.apple2/browse_thread/thread/d489f658967d53a3?pli=1"&gt;this&lt;/a&gt; post that the card actually outputs xrgb.  I would have to think of how to resolve this issue...  more updates later.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-5325907962124883070?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/5325907962124883070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=5325907962124883070' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/5325907962124883070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/5325907962124883070'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2010/05/apple-iie-ttl-rgb-to-commodore-1084s.html' title='Apple IIe TTL RGB to Commodore 1084s monitor'/><author><name>Jonnyboy</name><uri>http://www.blogger.com/profile/17452611876879851494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp0.blogger.com/_K5ghJYMcH8w/R5hJc9afRtI/AAAAAAAAAAQ/u3FgHNNdTD4/S220/jstick.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_K5ghJYMcH8w/S_icW5fyMjI/AAAAAAAAAYg/1t8RJEByBy0/s72-c/Picture+28.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-3266556313633549134</id><published>2010-04-06T21:35:00.000-07:00</published><updated>2010-04-06T22:00:19.838-07:00</updated><title type='text'>Linux Crash debug tips - I have a soft lockup, what is causing it ?</title><content type='html'>A soft lockup is the symptom of a task or kernel thread using and not releasing a CPU for a period of time (the softlockup_thresh setting ).&amp;nbsp; User space processes should not be able to soft lockup a CPU.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;How is a soft lockup detected ?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;The Linux kernel creates a watchdog process for each CPU in the system.&amp;nbsp; This should be visible using in the standard "ps" command, this is shown as&amp;nbsp; [watchdog/N], where N is the number of the logical CPU.&lt;br /&gt;&lt;br /&gt;This watchdog process/thread wakes up once a second, gets the current time stamp for the CPU it is running on and saves it into a per-CPU structure.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;The softlockup_tick() function that gets called from the timer interrupt().&amp;nbsp; This function gets the current time stamp for the specified CPU and compares it to the saved one in the per-CPU structure.&lt;br /&gt;&lt;br /&gt;If the current time stamp is more than softlockup_thresh seconds later than the saved time stamp then it's because the watchdog thread has not&amp;nbsp; been run recently and a soft lockup message is generated on the console.  As the timer counter on each CPU can be slightly slow or fast the counter is compared to the previous tick.&lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;Why was the process/task allowed to hog the CPU ?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Not all code that runs on the CPU is considered to be a process.&amp;nbsp; Tasklets / Interrupt handlers and blah are kernel functions that do not show up in the standard process listing (with the ps command).&amp;nbsp; &lt;/blockquote&gt;&lt;blockquote&gt;The kernel still allocates them CPU time, but trusts them to relinquish control of the CPU. &amp;nbsp;&amp;nbsp; &lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;Common causes of not relinquishing control.&lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;Software bugs can cause the process/code to not relinquish the control of the CPU.&amp;nbsp; The code could be waiting on a lock, or may be running code which continues in an infinite loop. &lt;/blockquote&gt;&lt;blockquote&gt;The other problem may be that the scheduler has ignored the process and the process has not been removed from the CPU for some timeframe.&amp;nbsp; There are a number of kernel options that can isolate a cpu and run a single process on it.&amp;nbsp; As the process "hogs" the CPU it may be seen as causing a soft lockup.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Example of a user space "soft lockup" &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;Pid: 2642, comm: pausetest Not tainted 2.6.18-164.el5 #1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;RIP: 0033:[&amp;lt;00000000004005c2&amp;gt;]&amp;nbsp; [&amp;lt;00000000004005c2&amp;gt;]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;RSP: 002b:00007fff8a5d7028&amp;nbsp; EFLAGS: 00000246&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;RAX: 0000000093338370 RBX: 0000000000000028 RCX: 0000000093338340&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;RDX: 0000000000000140 RSI: 00002b56f6317000 RDI: 0000000000000001&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;RBP: 00002b56f6317000 R08: 00000000ffffffff R09: 000000302f919840&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;R10: 0000000000000000 R11: 0000000000000246 R12: 000000302fb51780&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;R13: 0000000000000034 R14: 00000000004007da R15: 0000000000000001&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;FS:&amp;nbsp; 00002b56f6329210(0000) GS:ffff81001fc147c0(0000) knlGS:0000000000000000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;CS:&amp;nbsp; 0010 DS: 0000 ES: 0000 CR0: 000000008005003b&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;CR2: 000000302f8c5f70 CR3: 000000000db79000 CR4: 00000000000006e0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;Call Trace:&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Note the lack of values beneath "Call Trace:" above.&amp;nbsp; If a userspace process is the process that has not been scheduled/removed from the cpu no backtrace will be shown, only the registers and the process name.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Example of a kernel space "lockup".&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;BUG: soft lockup detected on CPU#0!&lt;br /&gt;&lt;br /&gt;Call Trace:&lt;br /&gt;[&lt;ffffffff802691b5&gt;] show_trace+0x34/0x47&lt;br /&gt;[&lt;ffffffff802691da&gt;] dump_stack+0x12/0x17&lt;br /&gt;[&lt;ffffffff802b4711&gt;] softlockup_tick+0xdb/0xf6&lt;br /&gt;[&lt;ffffffff80293695&gt;] update_process_times+0x42/0x68&lt;br /&gt;[&lt;ffffffff80273d62&gt;] smp_local_timer_interrupt+0x23/0x47&lt;br /&gt;[&lt;ffffffff8027441e&gt;] smp_apic_timer_interrupt+0x41/0x47&lt;br /&gt;[&lt;ffffffff8025cb82&gt;] apic_timer_interrupt+0x66/0x6c&lt;br /&gt;DWARF2 unwinder stuck at apic_timer_interrupt+0x66/0x6c&lt;br /&gt;Leftover inexact backtrace:&lt;br /&gt;&lt;irq&gt;  &lt;eoi&gt;  &lt;b&gt;[&lt;ffffffff88056573&gt;] :ext3:htree_dirblock_to_tree+0xa8/0xc9&lt;br /&gt;[&lt;ffffffff8805653d&gt;] :ext3:htree_dirblock_to_tree+0x72/0xc9&lt;br /&gt;[&lt;ffffffff88056610&gt;] :ext3:ext3_htree_fill_tree+0x7c/0x1cb&lt;br /&gt;[&lt;ffffffff8804ee97&gt;] :ext3:ext3_readdir+0x1a9/0x4da&lt;br /&gt;[&lt;ffffffff802257f2&gt;] filldir+0x0/0xb7&lt;br /&gt;[&lt;ffffffff80318dd6&gt;] file_has_perm+0x94/0xa3&lt;br /&gt;[&lt;ffffffff802257f2&gt;] filldir+0x0/0xb7&lt;br /&gt;[&lt;ffffffff802350a7&gt;] vfs_readdir+0x77/0xa9&lt;br /&gt;[&lt;ffffffff80238841&gt;] sys_getdents+0x75/0xbd&lt;br /&gt;[&lt;ffffffff8025c121&gt;] tracesys+0x71/0xdc&lt;br /&gt;[&lt;ffffffff8025c181&gt;] tracesys+0xd1/0xdc&lt;/ffffffff8025c181&gt;&lt;/ffffffff8025c121&gt;&lt;/ffffffff80238841&gt;&lt;/ffffffff802350a7&gt;&lt;/ffffffff802257f2&gt;&lt;/ffffffff80318dd6&gt;&lt;/ffffffff802257f2&gt;&lt;/ffffffff8804ee97&gt;&lt;/ffffffff88056610&gt;&lt;/ffffffff8805653d&gt;&lt;/ffffffff88056573&gt;&lt;/b&gt;&lt;/eoi&gt;&lt;/irq&gt;&lt;/ffffffff8025cb82&gt;&lt;/ffffffff8027441e&gt;&lt;/ffffffff80273d62&gt;&lt;/ffffffff80293695&gt;&lt;/ffffffff802b4711&gt;&lt;/ffffffff802691da&gt;&lt;/ffffffff802691b5&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;show example="" here=""&gt; &lt;/show&gt;&lt;br /&gt;&lt;br /&gt;If a kernel thread is responsible the backtrace for the kernel thread will be shown in the soft lockup message, however the backtrace includes code that shows the stack message.&amp;nbsp; The DWARF2 undwinder attempts to show the&amp;nbsp; actual stack trace. (shown above in bold).&lt;br /&gt;&lt;br /&gt;Sometimes the call trace may only show the symptom of the soft lockup, and other kernel tasks will need to be investigated to show the cause.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-3266556313633549134?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/3266556313633549134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=3266556313633549134' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/3266556313633549134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/3266556313633549134'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2010/04/linux-crash-debug-tips-i-have-soft.html' title='Linux Crash debug tips - I have a soft lockup, what is causing it ?'/><author><name>WadeMealing</name><uri>http://www.blogger.com/profile/16018870296209441900</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-2757748546294895160</id><published>2010-04-01T02:46:00.000-07:00</published><updated>2010-04-01T02:47:16.685-07:00</updated><title type='text'>Linux Crash debug tips -  I have a partial or "incomplete" vmcore, what can I find out ?</title><content type='html'>In some circumstances when attempting to debug a vmcore from Linux, you may have only been able to get part of the vmcore, either due a technical issue or the machine being forcebly rebooted before completion.&lt;br /&gt;&lt;br /&gt;When loading the vmcore in crash you may find something similar to the message below:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;WARNING: yourvmcorefilename: may be truncated or incomplete&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PT_LOAD p_offset: 3358304032&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p_filesz: 13690204160&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bytes required: 17048508192&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dumpfile size: 5412478976&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;crash: read error: kernel virtual address: ffff81042ff0eac0&amp;nbsp; type: "cpu_pda entry"&lt;br /&gt;crash: read error: kernel virtual address: ffff810230005458&amp;nbsp; type: "pglist node_id"&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;A workaround to get some data in this case is to use a recent crash and use the --minimal parameter.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span class="it_title3"&gt;crash --minimal vmcorefilehere vmlinux&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="it_title3"&gt;&amp;nbsp;--snip --&lt;/span&gt;&lt;br /&gt;&lt;span class="it_title3"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="it_title3"&gt;NOTE: minimal mode commands: log, dis, rd, sym, eval and exit&lt;br /&gt;&lt;/span&gt;&lt;span class="it_title3"&gt; &lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span class="it_title3"&gt;This will present you with a limited set of commands that you can use that will allow you to get basic data from the vmcore.&lt;/span&gt;&lt;br /&gt;&lt;span class="it_title3"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="it_title3"&gt;It is important to note that backtraces are not entirely accurate and that when you inspect memory it may not be available.&amp;nbsp; Crash&amp;nbsp; usually throws an error when this is the case.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="it_title3"&gt;This is not an april fools joke. &lt;/span&gt;&lt;br /&gt;&lt;span class="it_title3"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="it_title3"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="it_title3"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-2757748546294895160?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/2757748546294895160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=2757748546294895160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/2757748546294895160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/2757748546294895160'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2010/04/linux-crash-debug-tips-i-have-partial.html' title='Linux Crash debug tips -  I have a partial or &quot;incomplete&quot; vmcore, what can I find out ?'/><author><name>WadeMealing</name><uri>http://www.blogger.com/profile/16018870296209441900</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-7965684731169661568</id><published>2010-03-16T02:43:00.000-07:00</published><updated>2010-03-16T02:59:05.303-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><category scheme='http://www.blogger.com/atom/ns#' term='vmcore'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='crash'/><title type='text'>Linux Crash debug tips - Which process is on which CPU ?</title><content type='html'>I'm going to start miniblogging (which is larger than twitters microblogging) but not quite enough to be a blog.&amp;nbsp; For tips that I learn using the&lt;a href="http://people.redhat.com/anderson/crash_whitepaper/"&gt; crash program.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Say you've had a soft lockup, the kernel has paniced either by your setting or a forced coredump, how can you tell which process is on which CPU.&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;# crash ./vmcore&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;gt;ps&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; PID&amp;nbsp;&amp;nbsp;&amp;nbsp; PPID&amp;nbsp; CPU&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ST&amp;nbsp; %MEM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VSZ&amp;nbsp;&amp;nbsp;&amp;nbsp; RSS&amp;nbsp; COMM&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0&amp;nbsp; ffffffff802e5ae0&amp;nbsp; RU&amp;nbsp;&amp;nbsp; 0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; [swapper]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 1&amp;nbsp; ffff81083006e100&amp;nbsp; RU&amp;nbsp;&amp;nbsp; 0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; [swapper]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 2&amp;nbsp; ffff81010eb26080&amp;nbsp; RU&amp;nbsp;&amp;nbsp; 0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; [swapper]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 3&amp;nbsp; ffff81083e11a080&amp;nbsp; RU&amp;nbsp;&amp;nbsp; 0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; [swapper]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 4&amp;nbsp; ffff8104300787a0&amp;nbsp; RU&amp;nbsp;&amp;nbsp; 0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; [swapper]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 5&amp;nbsp; ffff810c3e1d87e0&amp;nbsp; RU&amp;nbsp;&amp;nbsp; 0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; [swapper]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 6&amp;nbsp; ffff81043e15a820&amp;nbsp; RU&amp;nbsp;&amp;nbsp; 0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; [swapper]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 7&amp;nbsp; ffff810c3e200860&amp;nbsp; RU&amp;nbsp;&amp;nbsp; 0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; [swapper]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 8&amp;nbsp; ffff81043e209860&amp;nbsp; RU&amp;nbsp;&amp;nbsp; 0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; [swapper]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 9&amp;nbsp; ffff810c3e2727e0&amp;nbsp; RU&amp;nbsp;&amp;nbsp; 0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; [swapper]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 10&amp;nbsp; ffff81043e21c7e0&amp;nbsp; RU&amp;nbsp;&amp;nbsp; 0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; [swapper]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 11&amp;nbsp; ffff810c3e275860&amp;nbsp; RU&amp;nbsp;&amp;nbsp; 0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; [swapper]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 12&amp;nbsp; ffff81043e2a8820&amp;nbsp; RU&amp;nbsp;&amp;nbsp; 0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; [swapper]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 13&amp;nbsp; ffff810c3e2e87e0&amp;nbsp; RU&amp;nbsp;&amp;nbsp; 0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; [swapper]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 14&amp;nbsp; ffff81043e2b17a0&amp;nbsp; RU&amp;nbsp;&amp;nbsp; 0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; [swapper]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 15&amp;nbsp; ffff810c3e2eb860&amp;nbsp; RU&amp;nbsp;&amp;nbsp; 0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; [swapper]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; 11&amp;nbsp; ffff81083006b040&amp;nbsp; UN&amp;nbsp;&amp;nbsp; 0.0&amp;nbsp;&amp;nbsp; 10344&amp;nbsp;&amp;nbsp;&amp;nbsp; 684&amp;nbsp; init&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The tasks that have a &amp;gt; to the left are the processes that are in the RUN state (that means on the CPU right now).&lt;br /&gt;&lt;br /&gt;The CPU column aligned to the task is the surprisingly the CPU that the process was on (or was last on).&amp;nbsp;&amp;nbsp; Too easy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-7965684731169661568?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/7965684731169661568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=7965684731169661568' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/7965684731169661568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/7965684731169661568'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2010/03/linux-crash-debug-tips-which-process-is.html' title='Linux Crash debug tips - Which process is on which CPU ?'/><author><name>WadeMealing</name><uri>http://www.blogger.com/profile/16018870296209441900</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-717314465760833804</id><published>2010-02-12T15:07:00.000-08:00</published><updated>2010-02-13T03:58:33.974-08:00</updated><title type='text'>Replacing a Powermac G4 (Mirror Drive Doors) Power Supply with ATX parts</title><content type='html'>This is essentially the same thing &lt;a href="http://damntechnology.blogspot.com/2009/02/rebuilding-powermac-g5-power-supply.html"&gt;I previously did with a Powermac G5&lt;/a&gt;.  A friend of mine acquired a non working Powermac G4 (Mirror Drive Doors) with dual 1.25GHz CPUs.  When the power button is pressed, it lights up for a few seconds and goes out.  When he saw my post regarding replacing the Powermac G5 power supply, he asked if the same could be done to this unit.  The service center was asking for a huge sum to get the power supply replaced and the former owner did not think it was worth it to still get it fixed.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The difference between this and the G5's is that the Power supply case is much smaller.  But otherwise could still hold an ATX power supply's innards.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Because my friend has waited over a year for me to arrive (from overseas), we decided to use a good quality name-brand power supply that is rated more than the original.  We settled with a Thermaltake Litepower 600w ATX power supply.&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/S3X_-df-KGI/AAAAAAAAAV4/S_GeAGsL1go/s1600-h/Screen+shot+2010-02-13+at+12.26.30+PM.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/S3X_-df-KGI/AAAAAAAAAV4/S_GeAGsL1go/s320/Screen+shot+2010-02-13+at+12.26.30+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437533573655439458" style="cursor: pointer; width: 320px; height: 234px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After opening up the power supply.  I realized that the board is not going to fit easily without any mods, because the heatsinks are made taller than the Apple power supply case.  Most probably this is done for better airflow.  So in the meantime I proceeded to take the Power Supply apart and desoldered all the wires from the original power supply.&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/S3YBFou1zGI/AAAAAAAAAWA/LCIzzlQ0ZnE/s1600-h/Screen+shot+2010-02-13+at+12.30.53+PM.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/S3YBFou1zGI/AAAAAAAAAWA/LCIzzlQ0ZnE/s320/Screen+shot+2010-02-13+at+12.30.53+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437534796441308258" style="cursor: pointer; width: 206px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After that, I found a pinout on &lt;a href="http://www.xlr8yourmac.com/tips/MDD_ps_mods/MDD_PS_Mods.html"&gt;this site&lt;/a&gt; that showed exactly what I needed.  I cut the wires on the Thermaltake and soldered the original wires to the remaining wire.  This allowed some room to move the wires around so that the original wires can exit through the original hole.&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/S3YDWJM-ZpI/AAAAAAAAAWI/Ar01QIconFA/s1600-h/Screen+shot+2010-02-13+at+12.35.17+PM.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/S3YDWJM-ZpI/AAAAAAAAAWI/Ar01QIconFA/s320/Screen+shot+2010-02-13+at+12.35.17+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437537279058798226" style="cursor: pointer; width: 320px; height: 316px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;At this point we wanted to test the Mac just to be sure it is still working and that all this trouble isn't for naught.&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/S3YDWJM-ZpI/AAAAAAAAAWI/Ar01QIconFA/s1600-h/Screen+shot+2010-02-13+at+12.35.17+PM.png"&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/S3YDdY2-fTI/AAAAAAAAAWg/q81CoWMDCEY/s1600-h/Screen+shot+2010-02-13+at+12.37.11+PM.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/S3YDdY2-fTI/AAAAAAAAAWg/q81CoWMDCEY/s320/Screen+shot+2010-02-13+at+12.37.11+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437537403520580914" style="cursor: pointer; width: 320px; height: 274px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/S3YDbMk0e3I/AAAAAAAAAWY/ib5bsCGJC0k/s1600-h/Screen+shot+2010-02-13+at+12.36.10+PM.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/S3YDbMk0e3I/AAAAAAAAAWY/ib5bsCGJC0k/s320/Screen+shot+2010-02-13+at+12.36.10+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437537365863463794" style="cursor: pointer; width: 320px; height: 182px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/S3YDX5mmx2I/AAAAAAAAAWQ/bnRM7UuT89E/s1600-h/Screen+shot+2010-02-13+at+12.35.42+PM.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/S3YDX5mmx2I/AAAAAAAAAWQ/bnRM7UuT89E/s320/Screen+shot+2010-02-13+at+12.35.42+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437537309231073122" style="cursor: pointer; width: 320px; height: 210px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;After plugging it in and using my ADC to DVI cable, we were greeted by the startup "jeng" sound and this appeared on the attached monitor:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/S3YDej3Sy4I/AAAAAAAAAWo/-SxyuiFgwMA/s1600-h/Screen+shot+2010-02-13+at+12.37.50+PM.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/S3YDej3Sy4I/AAAAAAAAAWo/-SxyuiFgwMA/s320/Screen+shot+2010-02-13+at+12.37.50+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437537423654570882" style="cursor: pointer; width: 320px; height: 202px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Well, we had no hard disks but this is much farther than it ever got on the old power supply.  The next step is to mod the heatsinks so that it will all fit into the original enclosure.  After that we tie the cables neatly into bundles with zip tie and put it back into the original case.  We cut some loose cintra boards and used double sided tape to attach them under the board to protect it from shorts.&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/S3YLRPG-KYI/AAAAAAAAAXI/5_bK0dclYZg/s1600-h/Screen+shot+2010-02-13+at+1.03.55+PM.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/S3YLRPG-KYI/AAAAAAAAAXI/5_bK0dclYZg/s320/Screen+shot+2010-02-13+at+1.03.55+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437545990837905794" style="cursor: pointer; width: 284px; height: 320px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/S3YLPCyrAdI/AAAAAAAAAXA/fnQrosOnVXw/s1600-h/Screen+shot+2010-02-13+at+1.03.12+PM.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/S3YLPCyrAdI/AAAAAAAAAXA/fnQrosOnVXw/s320/Screen+shot+2010-02-13+at+1.03.12+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437545953171800530" style="cursor: pointer; width: 320px; height: 250px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/S3YLNaH6rhI/AAAAAAAAAW4/TeU25SlLMRE/s1600-h/Screen+shot+2010-02-13+at+1.02.45+PM.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/S3YLNaH6rhI/AAAAAAAAAW4/TeU25SlLMRE/s320/Screen+shot+2010-02-13+at+1.02.45+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437545925075185170" style="cursor: pointer; width: 191px; height: 320px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/S3YLMMqKYNI/AAAAAAAAAWw/FN6mzqemXmg/s1600-h/Screen+shot+2010-02-13+at+1.02.18+PM.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/S3YLMMqKYNI/AAAAAAAAAWw/FN6mzqemXmg/s320/Screen+shot+2010-02-13+at+1.02.18+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437545904280854738" style="cursor: pointer; width: 224px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Then finally mount it into the tower case.&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/S3YOCMED_hI/AAAAAAAAAXY/qtL65-uGtyM/s1600-h/Screen+shot+2010-02-13+at+1.19.46+PM.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/S3YOCMED_hI/AAAAAAAAAXY/qtL65-uGtyM/s320/Screen+shot+2010-02-13+at+1.19.46+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437549030857244178" style="cursor: pointer; width: 211px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/S3YN_bUdOSI/AAAAAAAAAXQ/XxN_Mlc0nx8/s1600-h/Screen+shot+2010-02-13+at+1.19.18+PM.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/S3YN_bUdOSI/AAAAAAAAAXQ/XxN_Mlc0nx8/s320/Screen+shot+2010-02-13+at+1.19.18+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437548983412930850" style="cursor: pointer; width: 320px; height: 211px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/S3YOGAu63ZI/AAAAAAAAAXw/DuCnr4RbwL4/s1600-h/Screen+shot+2010-02-13+at+1.21.54+PM.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/S3YOGAu63ZI/AAAAAAAAAXw/DuCnr4RbwL4/s320/Screen+shot+2010-02-13+at+1.21.54+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437549096535252370" style="cursor: pointer; width: 320px; height: 210px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/S3YOEcR0oGI/AAAAAAAAAXo/GLhTrddsuIo/s1600-h/Screen+shot+2010-02-13+at+1.21.42+PM.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/S3YOEcR0oGI/AAAAAAAAAXo/GLhTrddsuIo/s320/Screen+shot+2010-02-13+at+1.21.42+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437549069569663074" style="cursor: pointer; width: 320px; height: 209px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/S3YODa4zefI/AAAAAAAAAXg/JIKK0d0XYEI/s1600-h/Screen+shot+2010-02-13+at+1.21.20+PM.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/S3YODa4zefI/AAAAAAAAAXg/JIKK0d0XYEI/s320/Screen+shot+2010-02-13+at+1.21.20+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437549052016425458" style="cursor: pointer; width: 248px; height: 320px; " /&gt;&lt;/a&gt;&lt;br /&gt;Plugging in the hard disk from an old B&amp;amp;W G3 finally boots up&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/S3YPi7oqmwI/AAAAAAAAAX4/Y1WsuqBI4-E/s1600-h/Screen+shot+2010-02-13+at+1.22.52+PM.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/S3YPi7oqmwI/AAAAAAAAAX4/Y1WsuqBI4-E/s320/Screen+shot+2010-02-13+at+1.22.52+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437550692894677762" style="cursor: pointer; width: 234px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Most of the stuff works.  The 2 things that doesn't are:  The ADC port cannot power an external ADC display anymore.  The Firewire ports don't have power (Not sure if a self-powered firewire device would work).  This is because ATX does not have the 25v needed for those 2 to function.  If we add a 25v power supply (into the empty space in the power supply) we should be able to get these working again.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-717314465760833804?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/717314465760833804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=717314465760833804' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/717314465760833804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/717314465760833804'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2010/02/replacing-powermac-g4-mirror-drive.html' title='Replacing a Powermac G4 (Mirror Drive Doors) Power Supply with ATX parts'/><author><name>Jonnyboy</name><uri>http://www.blogger.com/profile/17452611876879851494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp0.blogger.com/_K5ghJYMcH8w/R5hJc9afRtI/AAAAAAAAAAQ/u3FgHNNdTD4/S220/jstick.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_K5ghJYMcH8w/S3X_-df-KGI/AAAAAAAAAV4/S_GeAGsL1go/s72-c/Screen+shot+2010-02-13+at+12.26.30+PM.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-2463703649120816180</id><published>2010-01-04T03:10:00.000-08:00</published><updated>2010-01-04T04:43:51.116-08:00</updated><title type='text'>Repairing a membrane type apple keyboard</title><content type='html'>They don't make keyboards anymore like they used to.  In the past each key of a keyboard had a keyswitch under it.  Every keyboard Apple made from the original Apple ][ ... up to the ADB Extended Keyboard II were made in this manner.  (there may be others, but I have not come across them).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first Apple USB keyboard I have is the one that came bundled with the imac G3.  It was bondi blue, had a USB hub with 2 ports on both sides of the keyboard.  It also (like the ADB keyboards that came before it) had a power button.  I don't quite remember how this keyboard came into my possession, but when I tried to use it, some buttons wouldn't work.  Particularly, the ESC key and probably the first few function keys next to it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Getting this unit open wasn't too hard: just have some patience and remove 50 something phillips head screws.  What got my attention was that there are no longer keyswitches under each key.  (not in the sense as in my description above anyway).  It has been replaced with 3 sheets of what looks like "acetate transparency sheets" we used to use to project presentations.  the top and bottom sheets had some circuitry on it, very similar to a flexible PCB.  The middle sheet had holes punched on it.  By now you'd have figured out the rest.  The user would "press" a key and those keys would line up where the holes are.  Top sheet contacts with bottom sheet and voila the key is "pressed"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Unlike PCBs, the "circuitry" on the top and bottom sheets seem very fragile.  The former owner may have spilled some cola into it (or maybe just water).  Parts of this "circuitry" is now a different colour from the rest.  Poking my ohmmeter between 2 points that's supposed to conduct shows no connection.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My original solution to this was to take some aluminum foil.  carefully cut it to the right size, and then along with some cardboard, get some nearby screws to "press down" on this.  This solution did work.... for a while... eventually the cardboard would flatten out and what was a tight fit is now loose... sometimes the keys wouldn't connect anymore.  I have opened this unit up again to replace the cardboard.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now... many months after that, a good friend of mine acquired a powermac G5 and suspected that the power supply may not be good.  While working on this unit, he let me use a white Apple USB keyboard (not the aluminum ones)...  I was trying to get front row to appear by pressing the keyboard shortcut command-ESC.  This did not work.  After some more testing, I worked out that the ESC key, along with F1 - F6 are not working.  I was ready to try my aluminum foil solution again.  Unfortunately for me, the connection was broken over a wide area .. almost 2 inches wide.  I could not get the foil and cardboard to be pressed down enough to make a lasting connection.  Then I remembered:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/S0HX7ZL0OmI/AAAAAAAAAVo/NVt8rtkTxAU/s1600-h/Picture+73.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/S0HX7ZL0OmI/AAAAAAAAAVo/NVt8rtkTxAU/s320/Picture+73.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5422852841703488098" style="cursor: pointer; width: 191px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Surely I can use this to repair the dissolved circuitry.  A trip to the local electronics store snagged me the last unit in stock.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I had another identical keyboard at home waiting to be fixed.  This is how the membranes looked like after opening.  Note that the fluid has seeped up deep into the keyboard due to capillary action:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/S0HX53NnswI/AAAAAAAAAVY/wnqdK-XlF2Y/s1600-h/Picture+71.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/S0HX53NnswI/AAAAAAAAAVY/wnqdK-XlF2Y/s320/Picture+71.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5422852815404380930" style="cursor: pointer; width: 320px; height: 243px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;After using some baby wipes to clean out the fluid, you can see the damage that was done:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/S0HX6rTFfuI/AAAAAAAAAVg/DQNQdC7xmPI/s1600-h/Picture+72.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/S0HX6rTFfuI/AAAAAAAAAVg/DQNQdC7xmPI/s320/Picture+72.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5422852829385948898" style="cursor: pointer; width: 320px; height: 146px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;In the above picture, some of the lines are darker.  Testing these with my ohmmeter reveal that they no longer conduct.  After using the conductive pen on it and being careful not to bridge connections that aren't supposed to be:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/S0HX8RxrYrI/AAAAAAAAAVw/G5WnwKTr0Xg/s1600-h/Picture+74.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/S0HX8RxrYrI/AAAAAAAAAVw/G5WnwKTr0Xg/s320/Picture+74.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5422852856894677682" style="cursor: pointer; width: 320px; height: 154px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;An xacto knife can be handy in scraping off accidentally bridged connections.  After letting the ink dry (did not take more than 5 minutes), I tested the unit before putting all the screws back.  I also took the opportunity to clean the insides of some nasty looking stuff (mostly crumbs and spilled drinks).  Keyboard is all working again.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-2463703649120816180?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/2463703649120816180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=2463703649120816180' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/2463703649120816180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/2463703649120816180'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2010/01/repairing-membrane-type-apple-keyboard.html' title='Repairing a membrane type apple keyboard'/><author><name>Jonnyboy</name><uri>http://www.blogger.com/profile/17452611876879851494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp0.blogger.com/_K5ghJYMcH8w/R5hJc9afRtI/AAAAAAAAAAQ/u3FgHNNdTD4/S220/jstick.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_K5ghJYMcH8w/S0HX7ZL0OmI/AAAAAAAAAVo/NVt8rtkTxAU/s72-c/Picture+73.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-8444668696791266428</id><published>2009-09-02T01:21:00.000-07:00</published><updated>2009-11-29T03:41:57.260-08:00</updated><title type='text'>Converting a non navigation 2006 Prius with an OEM factory nav unit</title><content type='html'>It has been a long time since I dealt with automotive stuff.  Last time I did anything that can be considered major was a few years back.  Stuff I did before, in no particular order:  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Took all the insides of a 1995 Honda Civic "EG" from Japan, and assembled them all to my friend's Philippine made Civic.  I had to redo all the electricals (Japan's steering wheel is on the right, Phillipines is on the left).  I basically took the Philippine harness and "merged" in the Japanese harness.  It was more than making it mirror image because the engine was in the same orientation on both cars.  The Japanese model also had a lot more features that was not released outside of Japan and I tried to the best of my abilities to get them all to work.  The drawback is, that car now has a 180Km/h speed limit (something required by law in Japan, but you're not going to really find any spot to even approach this speed anyway).&lt;/li&gt;&lt;li&gt;I tried to rebuild a Nissan CD17 diesel engine.  I learned a lot from this, and one of them is if the shop manual calls for a machine shop to do something, do NOT try to do it by hand.  I also converted a Nissan B12 with Japanese parts similar to the above procedure.  The original car had manual transmission, non power windows/steering.  All of which I replaced with Japanese parts.  The only "weird" thing is the master power window switch has the "auto" switch on the wrong side.  This car does not have the 180km/h limit. (not that it will ever get to that speed)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I have assisted in a few more procedures similar to the above, but unlike the above where I did everything myself, I just did some of the work.  Mostly following a schematic and making the wires work.  One of them was a total conversion (the whole care was from Japan).&lt;/li&gt;&lt;/ol&gt;We recently got a 2006 Prius. There are only 2 variants sold here in Australia, the base model with "nothing", and the "I-Tech" model with "everything". &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Having used it for a few months you realize that it's a bit hard to find a good spot to attach a 3rd party navigation unit.  The windscreen is tilted at an angle such that if you attach it near the bottom, it will be beyond your arm's reach (plus it will look so small you couldn't even make out the writing)&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So what I want to do is attach a factory nav unit and make it appear on the built in multifunction display.  From the fairly large amount of reading I have done, this has never been successfully performed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Many people also shared with me what they know (so I don't repeat other people's mistakes).  One of them was Steve, who told me that:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;I need a screen from a Nav model, because there are extra PCB's inside that are not on the non-Nav model.&lt;/li&gt;&lt;li&gt;I would need steering wheel controls from a Nav model.&lt;/li&gt;&lt;li&gt;I would need the mic that goes to the overhead console&lt;/li&gt;&lt;li&gt;I would need the radio with the external amplifier (JBL)&lt;/li&gt;&lt;li&gt;I would need the wire harness from a nav model as the non-Nav model does not have the wires.&lt;/li&gt;&lt;li&gt;I would need the GPS antenna.&lt;/li&gt;&lt;li&gt;I would need the Nav computer and the disc for my location.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;The steering wheel controls and the nav computer arrived.  It came with the mounting brackets.  This unit came from under the driver's seat in the US.  I still have to look under the seat in the Australian model and see if it is still under the driver's seat (right) or if they just left it in the left.&lt;br /&gt;&lt;br /&gt;Anyway.  First step is to construct connectors.  I took some DB9 shells and cut up the flat surfaces with a dremel.  I then poked the pins into the nav unit's port and epoxyed them to the pieces of the shell.  The results weren't very pretty at the moment, but hopefully no one is really going to be taking a peek under the seat.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is the connector after one row is in place:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/Sry7rkZ1_UI/AAAAAAAAASI/rKi51J-S-Q4/s1600-h/Picture+52.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/Sry7rkZ1_UI/AAAAAAAAASI/rKi51J-S-Q4/s320/Picture+52.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5385385611609111874" style="cursor: pointer; width: 320px; height: 214px; " /&gt;&lt;/a&gt;&lt;br /&gt;Once I got one connector (the one for the display) all done, it's time to hook it up to my commodore 1040s monitor.  This will give me a clue whether I should proceed or if I am wasting my time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The left connector in this picture is the RGB, the one on the right has power (I used an ATX power supply, fed 12v to +B and ACC)&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/Sry7e9UPlUI/AAAAAAAAARw/qJp3YC1vUec/s1600-h/Picture+49.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/Sry7e9UPlUI/AAAAAAAAARw/qJp3YC1vUec/s320/Picture+49.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5385385394958210370" style="cursor: pointer; width: 320px; height: 214px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/Sry7gJuXWZI/AAAAAAAAAR4/OpdzhuY1Gtc/s1600-h/Picture+50.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/Sry7gJuXWZI/AAAAAAAAAR4/OpdzhuY1Gtc/s320/Picture+50.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5385385415468865938" style="cursor: pointer; width: 320px; height: 208px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Success:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/Sry7cFpIulI/AAAAAAAAARg/cZ7r7uqX4xg/s1600-h/Picture+47.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/Sry7cFpIulI/AAAAAAAAARg/cZ7r7uqX4xg/s320/Picture+47.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5385385345653717586" style="cursor: pointer; width: 320px; height: 236px; " /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/Sry7d9DPv0I/AAAAAAAAARo/chZDyYY8wwg/s1600-h/Picture+48.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/Sry7d9DPv0I/AAAAAAAAARo/chZDyYY8wwg/s320/Picture+48.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5385385377707048770" style="cursor: pointer; width: 320px; height: 228px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I tried to see if I could eject the nav DVD.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ok I'm beginning to feel more confident that I could actually pull this off...  Let's see how it looks like on my TV ... just for fun... I used an RGB to component converter (that I actually constructed for my Apple IIGS)  that is not shown in the picture, and the composite cables on the left is unrelated and goes to a different device&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/Sry7hs16OKI/AAAAAAAAASA/lQYvPP6ZEMA/s1600-h/Picture+51.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/Sry7hs16OKI/AAAAAAAAASA/lQYvPP6ZEMA/s320/Picture+51.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5385385442075621538" style="cursor: pointer; width: 320px; height: 223px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Since I don't have the MFD yet (or rather, I am not ready to take the dash apart) I have no easy way of pressing the "I Agree" button.  So that's how far it gets.  Plus I don't have a GPS antenna so if I went ahead and attached it to the car right now, I won't really be able to see anything.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;27/09/2009&lt;/div&gt;&lt;div&gt;I have some free time at the moment and I was very curious to see what will happen if I went ahead and attached it to the car.  After going through priuschat and reading the many "stereo removal" guides (such as this one by Chris Dragon &lt;a href="http://www.techno-fandom.org/~hobbit/cars/chris-dragon-dash.pdf"&gt;http://www.techno-fandom.org/~hobbit/cars/chris-dragon-dash.pdf&lt;/a&gt; ), I went down to the car park to figure out how accurate they are (my steering wheel is on the right side, all the guides I've seen are for cars with the steering wheel on the left).  Except for the fact that the "power" button is on the rightmost vent, everything else is just mirror image of the guides (down to the location of screws and clips).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since I have no plans of leaving it permanently installed at this time, I just dumped all the equipment on the passenger foot area.&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/Sr78q5FaP0I/AAAAAAAAATw/WaNJZ-ZFOgM/s1600-h/Picture+65.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/Sr78q5FaP0I/AAAAAAAAATw/WaNJZ-ZFOgM/s320/Picture+65.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5386020018189909826" style="cursor: pointer; width: 223px; height: 320px; " /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/Sr78qbHdSuI/AAAAAAAAATo/MCQbnh2s5Mg/s1600-h/Picture+64.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/Sr78qbHdSuI/AAAAAAAAATo/MCQbnh2s5Mg/s320/Picture+64.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5386020010145434338" style="cursor: pointer; width: 185px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I then hooked up only the wires needed for the display, plus the  communication lines.  &lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/Sr780YAYqtI/AAAAAAAAAUI/cSy7-_0VwAw/s1600-h/Picture+68.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/Sr780YAYqtI/AAAAAAAAAUI/cSy7-_0VwAw/s320/Picture+68.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5386020181109156562" style="cursor: pointer; width: 211px; height: 320px; " /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/Sr78sQm2RZI/AAAAAAAAAUA/uaCM12XRH6Y/s1600-h/Picture+67.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/Sr78sQm2RZI/AAAAAAAAAUA/uaCM12XRH6Y/s320/Picture+67.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5386020041684043154" style="cursor: pointer; width: 226px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I also needed to power it up.  There is the plug that goes to the clock.  It conveniently has all the signals I need (batt, acc, gnd).  I hooked up the batt and acc to the clock plug, but decided hook up the ground in the spot the 10mm hex bolt previously went:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/Sr78rt7o95I/AAAAAAAAAT4/zf_q6me5DDM/s1600-h/Picture+66.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/Sr78rt7o95I/AAAAAAAAAT4/zf_q6me5DDM/s320/Picture+66.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5386020032376010642" style="cursor: pointer; width: 206px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Moment of truth.  Hit the power button:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/Sr77oQ7TjdI/AAAAAAAAAS4/Xl-m5EX2TZQ/s1600-h/Picture+58.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/Sr77oQ7TjdI/AAAAAAAAAS4/Xl-m5EX2TZQ/s320/Picture+58.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5386018873538743762" style="cursor: pointer; width: 320px; height: 206px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/Sr77oQ7TjdI/AAAAAAAAAS4/Xl-m5EX2TZQ/s1600-h/Picture+58.png"&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/Sr77q90IxvI/AAAAAAAAATI/pkHPugCkwGY/s1600-h/Picture+60.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/Sr77q90IxvI/AAAAAAAAATI/pkHPugCkwGY/s320/Picture+60.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5386018919948011250" style="cursor: pointer; width: 320px; height: 199px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Note that it has used my display settings and the background is now blue instead of the default green background&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/Sr77sCyiShI/AAAAAAAAATQ/wM425O92Y08/s1600-h/Picture+61.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/Sr77sCyiShI/AAAAAAAAATQ/wM425O92Y08/s320/Picture+61.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5386018938463341074" style="cursor: pointer; width: 320px; height: 214px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Now that I have the touch screen hooked up.  Let's see if pressing the "I Agree" button does anything...  Success:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/Sr77tTTJZCI/AAAAAAAAATY/wOXYo1om4Rk/s1600-h/Picture+62.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/Sr77tTTJZCI/AAAAAAAAATY/wOXYo1om4Rk/s320/Picture+62.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5386018960074957858" style="cursor: pointer; width: 320px; height: 206px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Since I have no GPS antenna and that I'm 6 basement levels underground, I won't be getting any GPS signals.  It defaults to some location.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The INFO button also now displays several new icons that wasn't there before:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/Sr77pzGyMqI/AAAAAAAAATA/IehACR5s6K4/s1600-h/Picture+59.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/Sr77pzGyMqI/AAAAAAAAATA/IehACR5s6K4/s320/Picture+59.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5386018899893564066" style="cursor: pointer; width: 320px; height: 205px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While all the stuff is removed, I took this opportunity to install the steering wheel controls.  I disconnected the 12v battery first (something recommended when working near SRS components).  waited 5 minutes then proceeded to remove the existing steering wheel controls.&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/Sr76mY54A-I/AAAAAAAAASY/c0zsdbyC9rU/s1600-h/Picture+54.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/Sr76mY54A-I/AAAAAAAAASY/c0zsdbyC9rU/s320/Picture+54.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5386017741808862178" style="cursor: pointer; width: 320px; height: 210px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/Sr76luR0UdI/AAAAAAAAASQ/gGR7hWgjiec/s1600-h/Picture+53.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/Sr76luR0UdI/AAAAAAAAASQ/gGR7hWgjiec/s320/Picture+53.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5386017730366558674" style="cursor: pointer; width: 188px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;I then carefully unclipped the cable tie for just the right side controls.  It looks like they used the same number of wires too.&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/Sr76nEBz3-I/AAAAAAAAASg/v-LQk_LJ0yc/s1600-h/Picture+55.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/Sr76nEBz3-I/AAAAAAAAASg/v-LQk_LJ0yc/s320/Picture+55.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5386017753384869858" style="cursor: pointer; width: 320px; height: 207px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Then I hooked up the controls with the nav buttons:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/Sr76nqvzx0I/AAAAAAAAASo/mZrojaFRGMU/s1600-h/Picture+56.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/Sr76nqvzx0I/AAAAAAAAASo/mZrojaFRGMU/s320/Picture+56.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5386017763778348866" style="cursor: pointer; width: 205px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/Sr76owMP3DI/AAAAAAAAASw/Dx38zIHPgOs/s1600-h/Picture+57.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/Sr76owMP3DI/AAAAAAAAASw/Dx38zIHPgOs/s320/Picture+57.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5386017782419676210" style="cursor: pointer; width: 320px; height: 212px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And the good news is, it actually works.  Pressing the voice button beeps the speaker (and then does nothing because I haven't got a mic).  The phone buttons don't do anything, probably because I don't have bluetooth.  Info button cycles through the energy screen and the consumption screens.  Map button shows the map.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have left the steering wheel controls in place. I have removed the nav system and reassembled the dash. I will probably do some more tests when I get more stuff in.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Screen finally arrived!! Along with the antenna!! I immediately installed both. After which I am able boot the US disc and go into the hidden menu (the one under volume).  From here I chose "loading" and changed it to "Australia".  It then goes back to  the "please insert correct map disc" screen.  Ejecting the US map disc and inserting a locally supplied "whereis v15" dvd that I borrowed caused the loading screen to appear.  It looks like this is going to work.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;These are pictures on how the system currently works. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Screen still off:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SuqrcfCDzYI/AAAAAAAAAUc/obSurNSU1WI/s1600-h/DSC00198.JPG"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SuqrcfCDzYI/AAAAAAAAAUc/obSurNSU1WI/s320/DSC00198.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5398315609211784578" style="cursor: pointer; width: 320px; height: 180px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Turn on the key:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SuqrcoqKteI/AAAAAAAAAUk/DwEiATMrOUs/s1600-h/DSC00199.JPG"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SuqrcoqKteI/AAAAAAAAAUk/DwEiATMrOUs/s320/DSC00199.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5398315611795928546" style="cursor: pointer; width: 320px; height: 180px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;That's really great.  All my fears that the MFD will have units in miles are for naught: (click to enlarge)&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SuqrdDeAHOI/AAAAAAAAAUs/Sb4JV6rODQQ/s1600-h/DSC00200.JPG"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SuqrdDeAHOI/AAAAAAAAAUs/Sb4JV6rODQQ/s320/DSC00200.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5398315618992659682" style="cursor: pointer; width: 320px; height: 180px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;I hit the "menu" button:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/Suqrdat6eBI/AAAAAAAAAU0/aAjd01pZ-ps/s1600-h/DSC00201.JPG"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/Suqrdat6eBI/AAAAAAAAAU0/aAjd01pZ-ps/s320/DSC00201.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5398315625233414162" style="cursor: pointer; width: 320px; height: 180px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Then press on the  "I agree" touch button:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/Suqsag4enYI/AAAAAAAAAU8/Unw9_wwbB9U/s1600-h/DSC00202.JPG"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/Suqsag4enYI/AAAAAAAAAU8/Unw9_wwbB9U/s320/DSC00202.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5398316674860359042" style="cursor: pointer; width: 320px; height: 180px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;The DEST button works too:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/Suqsba35GcI/AAAAAAAAAVM/F3JY7wCFg8U/s1600-h/DSC00204.JPG"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/Suqsba35GcI/AAAAAAAAAVM/F3JY7wCFg8U/s320/DSC00204.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5398316690427156930" style="cursor: pointer; width: 320px; height: 180px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's all for now.  I still have to connect the reverse line (I am having a hard time looking for it).  I also have to get an overhead console with a mic so I can use the bluetooth.  Sadly I do not think the australian software supports voice control :(.  Pressing the voice control button on the steering wheel does nothing.  It used to beep when I had the US maps disc running.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;22-11-2009&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have finally located the reverse wire.  There is nothing connected at the point where it's supposed to split it up for the nav unit (probably because it's a non-nav model).  I have instead, traced and finally found the wire that leads to the back of the car to turn on the reverse lights.  This was well hidden behind a panel on the driver's (right) side near the accelerator pedal.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After hooking this up, I also found the wires that led to the overhead console.  I connected 3 wires: Mic +, Mic - and MACC.  These went straight to the back of the MFD into M14.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;29-11-2009&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have received my overhead console from a with-nav unit.  It does contain the Mic and the Mic amplifier.  After hooking it up for a quick test last wee, I found out that it did ... NOTHING.  The bluetooth hands free doesn't do anything.  I then went back to the schematics for another round, and my continuity tester just to make sure all the wires from the overhead console, to the MFD, and then to the nav unit are all correct.  They all checked out, but then, what's this?  There's an extra wire connected to nowhere.  It was pin 3 of M14 from behind the MFD.  The schematics say SGND (signal ground) to instrument panel Brace.  I was thinking: "No, that couldn't be it."  Most grounds in automotive parts are connected to the chassis.  The MFD had a metal case bolted to the chassis, and I had assumed this was also linked internally.  Well, I ASSUMED WRONG, and that IN FACT, WAS IT.  After connecting pin 3 of M14 with a wire to an exposed part of the chassis, the mic finally worked.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What now remains for me to do is to wrap the wires into neat bundles.  Some of the cables for the nav box should be fished under the carpet.  I also need to place the GPS antenna somewhere, preferably close to where the original one went.  At the moment I sticky taped it just behind the MFD.  I should also fish the cable under the carpet through the center console.  I also got an auto dimming mirror that's supposed to automatically darken the mirror when the car behind you is shining bright lights at you at night.  I know the correct wires needed for it, but I'm not sure they are all available near the overhead console area.  I think this will be the same as the Mic,  the wires would be there, but they are not connected anywhere.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-8444668696791266428?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/8444668696791266428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=8444668696791266428' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/8444668696791266428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/8444668696791266428'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2009/09/converting-non-navigation-2006-prius.html' title='Converting a non navigation 2006 Prius with an OEM factory nav unit'/><author><name>Jonnyboy</name><uri>http://www.blogger.com/profile/17452611876879851494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp0.blogger.com/_K5ghJYMcH8w/R5hJc9afRtI/AAAAAAAAAAQ/u3FgHNNdTD4/S220/jstick.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_K5ghJYMcH8w/Sry7rkZ1_UI/AAAAAAAAASI/rKi51J-S-Q4/s72-c/Picture+52.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-6800019478417549838</id><published>2009-08-17T17:30:00.000-07:00</published><updated>2009-08-17T18:13:15.224-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bogons'/><category scheme='http://www.blogger.com/atom/ns#' term='ACL'/><category scheme='http://www.blogger.com/atom/ns#' term='firewall'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Network Bogons</title><content type='html'>&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;bogon&lt;/span&gt; - /&lt;span style="font-weight:bold;"&gt;boh'gon&lt;/span&gt;/ [by analogy with proton/electron/neutron, but doubtless reinforced after 1980 by the similarity to Douglas Adams's "Vogons"] 1. The elementary particle of bogosity (see quantum bogodynamics). For instance, "the Ethernet is emitting bogons again" means that it is broken or acting in an erratic or bogus fashion.&lt;br /&gt;&lt;br /&gt;2. A query packet sent from a TCP/IP domain resolver to a root server, having the reply bit set instead of the query bit.&lt;br /&gt;&lt;br /&gt;3. Any bogus or incorrectly formed packet sent on a network.&lt;br /&gt;&lt;br /&gt;4. A person who is bogus or who says bogus things. This was historically the original usage, but has been overtaken by its derivative sense&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you've spent any time responsible for networks you've probably come across Team CYMRU's network bogon lists before. Basically it's a list of source networks which you should never see on the public internet. Either because they were not yet allocated, reserved by IANA for specific uses or were defined and reserved by RFC's that had been adopted as standards.&lt;br /&gt;&lt;br /&gt;The Team CYMRU Bogon List is here, &lt;a href="http://www.cymru.com/Documents/bogon-list.html"&gt;http://www.cymru.com/Documents/bogon-list.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;With IPv4 address space exhaustion about to hit most of those bogon networks are fast being allocated. Worse still many previously reserved networks that were never intended to be allocated will be.&lt;br /&gt;&lt;br /&gt;I've already had a situation in which despite receiving emails and otherwise maintaining an awareness for new allocations I missed a new allocation before a legitimate customer wound up with an IP in it and tried to use my services. It has become a pain in the ass updating your bogon lists at this point and it makes more sense I think to identify the networks that will continue to be bogons once there is no more IPv4 addresses to allocate. Particularly when you're not a large ISP acting as a transit AS and you already run a very secure network.&lt;br /&gt;&lt;br /&gt;My upstream ISP's are fairly good at filtering the bogon sources themselves, and my ingress ACL's are specific enough and the general security of internet facing servers is good enough that even if someone does use an unallocated source IP to attack your network in the immediate future I'm not particularly concerned. &lt;br /&gt;&lt;br /&gt;You can rely on your upstream ISP/s to filter them for you, and if you can utilise Team CYMRU's route server you can automate the process of filtering and removing new allocations using BGP. However if you don't have trust your ISP and have no BGP capability, for whatever reason, you may need to statically filter them.&lt;br /&gt;&lt;br /&gt;I log at a warning level so that if I do start seeing a lot of invalid traffic I can start to investigate and possibly tell those upstream ISP's that they need to filter it or may have a misconfiguration of some kind.&lt;br /&gt;&lt;br /&gt;Wikipedia has a good overview of the current situation with linkage to RFC documents so you can consider for yourself which networks you'd like to filter.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/IPv4"&gt;http://en.wikipedia.org/wiki/IPv4&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And the below is a self documenting example for PIX/ASA with a group for placing any malicious sources that annoy you enough to block them.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;object-group network RFC-1918&lt;br /&gt; description http://tools.ietf.org/html/rfc1918&lt;br /&gt; network-object 10.0.0.0 255.0.0.0&lt;br /&gt; network-object 172.16.0.0 255.240.0.0&lt;br /&gt; network-object 192.168.0.0 255.255.255.0&lt;br /&gt;!&lt;br /&gt;object-group network RFC-2544&lt;br /&gt; description http://tools.ietf.org/html/rfc2544&lt;br /&gt; network-object 198.18.0.0 255.254.0.0&lt;br /&gt;!&lt;br /&gt;object-group network RFC-3171&lt;br /&gt; description http://tools.ietf.org/html/rfc3171&lt;br /&gt; network-object 224.0.0.0 224.0.0.0&lt;br /&gt;!&lt;br /&gt;object-group network RFC-3330&lt;br /&gt; description http://tools.ietf.org/html/rfc3330&lt;br /&gt; network-object 0.0.0.0 255.0.0.0&lt;br /&gt; network-object 127.0.0.0 255.0.0.0&lt;br /&gt; network-object 169.254.0.0 255.255.0.0&lt;br /&gt; network-object 192.0.2.0 255.255.255.0&lt;br /&gt;!&lt;br /&gt;object-group network Nasty-Gnomes&lt;br /&gt; description People we don't like.&lt;br /&gt; network-object host x.x.x.x&lt;br /&gt;!&lt;br /&gt;object-group network Bogons&lt;br /&gt; group-object RFC-1918&lt;br /&gt; group-object RFC-2544&lt;br /&gt; group-object RFC-3171&lt;br /&gt; group-object RFC-3330&lt;br /&gt; group-object Nasty-Gnomes&lt;br /&gt;! &lt;br /&gt;access-list outside-ACL-Inbound line 1 remark Deny unwanted source hosts&lt;br /&gt;access-list outside-ACL-Inbound line 2 extended deny ip object-group Bogons any log warning&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-6800019478417549838?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/6800019478417549838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=6800019478417549838' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/6800019478417549838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/6800019478417549838'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2009/08/network-bogons.html' title='Network Bogons'/><author><name>Colin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_Pi1scj_le80/SeLQLx-ZSDI/AAAAAAAAAOA/XigqJCX5GHE/S220/monkay.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-5265775155625963870</id><published>2009-08-14T22:49:00.000-07:00</published><updated>2009-08-14T23:47:07.420-07:00</updated><title type='text'>Apple IIc plus 240V modification</title><content type='html'>&lt;div&gt;I have recently acquired an Apple IIc plus.  This is the fastest "stock" Apple II made by Apple Computer.  It was only available for a short time, and only sold in the US.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Because of that, they only have a 120v power supply available.  I initially plugged it into my 240v to 120v transformer.  It's a bit inconvenient (because it is both big and heavy) and I don't really like lugging the transformer around.  At first I thought there might be a provision for a switch inside... nope, no such luck.  The other option would be to substitute an ATX power supply.  Mark referred me to this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; http://www.weirdstuff.com/cgi-bin/item/22157&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It looks ok.. and it *might* even fit into the IIc plus case... but it looks more like the size of a IIe power supply.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My intention was to keep everything looking "stock". The power supply had to stay internal with no power bricks, etc.   I also considered using James Littlejohn's LittlePower Adapter IIc+:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;http://www.reactivemicro.com/product_info.php?cPath=1_28&amp;amp;products_id=150&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;and placing a picoPSU-60WI and a 12v supply inside, but I am unsure I will be able to fit everything inside.  I may reconsider going this route later on if I ever decide to make the IIc plus a truly portable battery-powered computer.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I then did a random google search and found this site:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;http://homepage.mac.com/jorgechamorro/a2things/a2c+Web/index.html&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Jorge has posted schematic diagrams and how he modified his IIc plus to allow it to be powered directly from the 240v mains.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is the power supply after I took it out of the IIc plus.&lt;/div&gt;&lt;/div&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SoZSVAvoL-I/AAAAAAAAAPs/KRR6XpEnscw/s1600-h/Picture+28.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SoZSVAvoL-I/AAAAAAAAAPs/KRR6XpEnscw/s320/Picture+28.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5370070126616391650" style="cursor: pointer; width: 196px; height: 320px; " /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is the space it used to sit in.  &lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/SoZSXmtF2sI/AAAAAAAAAP8/nbYiyYjkQEs/s1600-h/Picture+30.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/SoZSXmtF2sI/AAAAAAAAAP8/nbYiyYjkQEs/s320/Picture+30.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5370070171166038722" style="cursor: pointer; width: 320px; height: 202px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Unfortunately, The replacement capacitor I got was too tall.  It would fit just exactly but I did not want the metal shell pressing down on it.  So I decided to mount the capacitor sideways&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is the replacement capacitor beside the original one:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SoZTEjZSL1I/AAAAAAAAAQU/FQ_OiSwrsGU/s1600-h/Picture+33.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SoZTEjZSL1I/AAAAAAAAAQU/FQ_OiSwrsGU/s320/Picture+33.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5370070943371767634" style="cursor: pointer; width: 293px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is how it looks mounted:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/SoZTHC4xVxI/AAAAAAAAAQk/r6SUiR8_atw/s1600-h/Picture+35.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/SoZTHC4xVxI/AAAAAAAAAQk/r6SUiR8_atw/s320/Picture+35.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5370070986185070354" style="cursor: pointer; width: 320px; height: 286px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/SoZTGA-_F2I/AAAAAAAAAQc/axTqdHqduU4/s1600-h/Picture+34.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/SoZTGA-_F2I/AAAAAAAAAQc/axTqdHqduU4/s320/Picture+34.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5370070968494397282" style="cursor: pointer; width: 320px; height: 231px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The electronics shop I get all my parts from (Jaycar) did not have the 20v 5watt zener diodes that Jorge used.  I thought that instead of 7 20v ones, I could use 10 15v ones.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;7*20v=140v (Jorge's mod)&lt;/div&gt;&lt;div&gt;10*15v=150v (My substitute)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This should give me Vab of 190v (which means I don't really have to replace the capacitor)... But as my luck would have it, they only have 9 remaining units of the 15v zener diodes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;9*15v=135v &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Giving me a Vab of 205v.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I took a pcb and soldered the diodes on the solder side (that way I don't have to worry about insulating the other side from hitting other high voltage stuff).  This is how it looked:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SoZTiYjhrFI/AAAAAAAAAQ8/BhltKCkxWCI/s1600-h/Picture+38.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SoZTiYjhrFI/AAAAAAAAAQ8/BhltKCkxWCI/s320/Picture+38.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5370071455858011218" style="cursor: pointer; width: 214px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/SoZTI_duDQI/AAAAAAAAAQ0/Qd7zooSmcE8/s1600-h/Picture+37.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/SoZTI_duDQI/AAAAAAAAAQ0/Qd7zooSmcE8/s320/Picture+37.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5370071019626040578" style="cursor: pointer; width: 320px; height: 258px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SoZTlXmrq7I/AAAAAAAAARM/0uBwi2oysWw/s1600-h/Picture+40.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SoZTlXmrq7I/AAAAAAAAARM/0uBwi2oysWw/s320/Picture+40.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5370071507142421426" style="cursor: pointer; width: 320px; height: 163px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Before closing the lid, I cut off a corner of the PCB because the yellow wire is a bit stretched.  I also placed a piece of clear tape on the cover in case one of the legs touch the top of the case.&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/SoZTmhpzG2I/AAAAAAAAARU/yFb26QKiflQ/s1600-h/Picture+41.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/SoZTmhpzG2I/AAAAAAAAARU/yFb26QKiflQ/s320/Picture+41.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5370071527019715426" style="cursor: pointer; width: 320px; height: 230px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then I tested it with a multimeter and the voltages looked right (I know. I should not power up a switching power supply with no load... but.. but it's only for a little while).  Then hooked it up back to the IIc plus, and it fired up without a problem. (no smoke, nothing) &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The unit does get warm in the area near the diodes.  I have left it on running a BASIC program drawing random stuff on the hires screen.  It's a bit warmer than what I would like but seems to be acceptable.  If you do a lot of disk access (continuously cataloging the disk, it tends to get hotter).  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Overall I'm happy with the way this turned out.  The IIc plus still looks stock on the outside and I'm now able to plug it in anywhere without lugging the oversized transformer around.  I have kept the jumper I took off and the capacitor in the event I want to restore it back to default.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-5265775155625963870?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/5265775155625963870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=5265775155625963870' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/5265775155625963870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/5265775155625963870'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2009/08/apple-iic-plus-240v-modification.html' title='Apple IIc plus 240V modification'/><author><name>Jonnyboy</name><uri>http://www.blogger.com/profile/17452611876879851494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp0.blogger.com/_K5ghJYMcH8w/R5hJc9afRtI/AAAAAAAAAAQ/u3FgHNNdTD4/S220/jstick.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_K5ghJYMcH8w/SoZSVAvoL-I/AAAAAAAAAPs/KRR6XpEnscw/s72-c/Picture+28.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-1190992468365851357</id><published>2009-08-11T04:16:00.000-07:00</published><updated>2009-08-11T06:41:34.226-07:00</updated><title type='text'>PIX or ASA Stateful Failover Configuration</title><content type='html'>I subscribe to RSS feeds from some 20 or more Cisco centric blogs, many of them maintained by CCIE's or those studying for CCIE's.&lt;br /&gt;&lt;br /&gt;Occassionally someone posts a PIX/ASA failover configuration example. Generally I feel they fall short of the mark in providing a detailed secure and real-world example on how to configure stateful failover. &lt;br /&gt;&lt;br /&gt;This configuration below is as complete as it gets however. And it is relevent to both PIX and ASA devices. More so for ASA as they do not have a serial interface that was used for PIX failover once upon a time in the networking dark ages. &lt;br /&gt;&lt;br /&gt;The configuration below uses two physical interfaces on each firewall. It's seems somewhat a waste however Cisco does recommend doing so in various documents. I've not had a problem mixing both failover communication and traffic state replication on a single interface. To use just one interface remove the references with "failover-state" on the line.&lt;br /&gt;&lt;br /&gt;Take note however, some people tend to use the Management0/0 interface on ASA firewalls as the failover or state link. It can be OK to use the 10/100mbit Man0/0 interface for failover communication as this does not utilise much bandwidth. You should however avoid using it for failover state however. Particularly on ASA models with Gigabit interfaces as state replication requires the lowest possible latency and zero packet loss to work reliably and avoid having your firewalls fail over randomly or lag behind in maintaining traffic state when they do fail over for the right reason. With multiple Gigabit interfaces simply replicating connection state information for that the traffic being permitted through the firewall can exceed the capacity of a single 100mbit interface.&lt;br /&gt;&lt;br /&gt;And if you're not using Man0 properly for out of band management of the device you really should be!&lt;br /&gt;&lt;br /&gt;I've also used 169.254.x.x link-local addresses on the failover and failover state links. As PIX and ASA do not have a VRF/private routing table concept they do add routes to the IP addresses you configure to their routing table. Worse still they do seem to actually route/accept traffic for the IP's you configure on failover links/state interfaces from your other interfaces. &lt;br /&gt;&lt;br /&gt;You would of course need to accept the traffic in an ACL but it's not uncommon for some people to permit all RFC-1918 addresses to particular services. Not a good idea. &lt;br /&gt;&lt;br /&gt;169.254.x.x are supposed to be link-local self-configuration addresses and any decently configured intermediary router should route them to null0 so provided you don't accidentally permit them in an ACL there should be no way for anyone to try and talk to your firewall on those IP's.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;! ---------------------- FAILOVER CONFIG PRIMARY ------------------------ !&lt;br /&gt;!&lt;br /&gt;failover lan unit primary&lt;br /&gt;failover lan interface failover Ethernet3&lt;br /&gt;failover link failover-state Ethernet4&lt;br /&gt;failover key &lt;%FAILOVER KEY%&gt;&lt;br /&gt;failover replication http&lt;br /&gt;failover interface ip failover 169.254.255.1 255.255.255.252 standby 169.254.255.2&lt;br /&gt;failover interface ip failover-state 169.254.255.5 255.255.255.252 standby 169.254.255.6&lt;br /&gt;failover lan enable&lt;br /&gt;failover&lt;br /&gt;!&lt;br /&gt;int Eth3&lt;br /&gt; no shut&lt;br /&gt;int Eth4&lt;br /&gt; no shut&lt;br /&gt;!&lt;br /&gt;! If you're running a 7.2 image or newer the following is also recommended.&lt;br /&gt;! It will change the CLI prompt to indicate the configured type and state of the device you're connected to, &lt;br /&gt;! ie if your firewall's hostname was FW0 the prompt would look like,&lt;br /&gt;!&lt;br /&gt;! FW0/pri/act#&lt;br /&gt;!&lt;br /&gt;! Indicating it's configured as the primary and it is currently active.&lt;br /&gt;!&lt;br /&gt;prompt hostname priority state&lt;br /&gt;!&lt;br /&gt;! ---------------------- FAILOVER CONFIG STANDBY ------------------------ !&lt;br /&gt;! Everything else will sync over from the primary&lt;br /&gt;!&lt;br /&gt;failover lan unit secondary&lt;br /&gt;failover lan interface failover Ethernet3&lt;br /&gt;failover link failover-state Ethernet4&lt;br /&gt;failover key &lt;%FAILOVER KEY%&gt;&lt;br /&gt;failover replication http&lt;br /&gt;failover interface ip failover 169.254.255.1 255.255.255.252 standby 169.254.255.2&lt;br /&gt;failover interface ip failover-state 169.254.255.5 255.255.255.252 standby 169.254.255.6&lt;br /&gt;failover lan enable&lt;br /&gt;failover&lt;br /&gt;!&lt;br /&gt;int Eth3&lt;br /&gt; no shut&lt;br /&gt;int Eth4&lt;br /&gt; no shut&lt;br /&gt;!&lt;br /&gt;! EOF&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-1190992468365851357?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/1190992468365851357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=1190992468365851357' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/1190992468365851357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/1190992468365851357'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2009/08/pix-or-asa-stateful-failover.html' title='PIX or ASA Stateful Failover Configuration'/><author><name>Colin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_Pi1scj_le80/SeLQLx-ZSDI/AAAAAAAAAOA/XigqJCX5GHE/S220/monkay.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-8499717449913277738</id><published>2009-02-28T02:35:00.000-08:00</published><updated>2009-05-19T05:51:47.251-07:00</updated><title type='text'>Hacking a DVI cable to build an ADC to DVI converter</title><content type='html'>In the last post, I mentioned that my powermac G5 came with a video card that had 1 ADC and 1 DVI out.  I wanted to hook up 2 screens to it and do not have an ADC monitor. (besides, the 25v line intended to power the ADC monitor is under-spec in my homemade power supply.)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, I took out a standard DVI cable and carefully opened up one end:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SakVLjxFyyI/AAAAAAAAAN8/kWAJ8c8FbcI/s1600-h/Picture+98.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SakVLjxFyyI/AAAAAAAAAN8/kWAJ8c8FbcI/s320/Picture+98.png" alt="" id="BLOGGER_PHOTO_ID_5307796924156726050" style="cursor: pointer; width: 320px; height: 238px;" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SakVL_Gsi8I/AAAAAAAAAOE/kTJ8ZgBArzw/s1600-h/Picture+99.png"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SakVL_Gsi8I/AAAAAAAAAOE/kTJ8ZgBArzw/s1600-h/Picture+99.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SakVL_Gsi8I/AAAAAAAAAOE/kTJ8ZgBArzw/s320/Picture+99.png" alt="" id="BLOGGER_PHOTO_ID_5307796931495103426" style="cursor: pointer; width: 320px; height: 230px;" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SakVMhwXquI/AAAAAAAAAOM/uKi1LVUHrZc/s1600-h/Picture+100.png"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SakVMhwXquI/AAAAAAAAAOM/uKi1LVUHrZc/s1600-h/Picture+100.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SakVMhwXquI/AAAAAAAAAOM/uKi1LVUHrZc/s320/Picture+100.png" alt="" id="BLOGGER_PHOTO_ID_5307796940796701410" style="cursor: pointer; width: 320px; height: 214px;" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/SakVNPTKlwI/AAAAAAAAAOU/sp5wtFbTAU4/s1600-h/Picture+101.png"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/SakVNPTKlwI/AAAAAAAAAOU/sp5wtFbTAU4/s1600-h/Picture+101.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/SakVNPTKlwI/AAAAAAAAAOU/sp5wtFbTAU4/s320/Picture+101.png" alt="" id="BLOGGER_PHOTO_ID_5307796953022240514" style="cursor: pointer; width: 320px; height: 312px;" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;The pins on this single link DVI-D cable are not complete, and Apple used some of the non-existent pins on the ADC side of things.  I had to move 3 pins (1, 9 and 17) to the area in the middle (4, 12 and 20).  I drilled holes using a PCB drill and pulled out the pins with long nosed pliers.  I then placed them (pins and all) on the ADC port of the video card and applied some epoxy to the area around the hole (the holes were too big).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is after only one pin is moved:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/SakXYc8P58I/AAAAAAAAAOc/0CiBWScC9Qo/s1600-h/Picture+102.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/SakXYc8P58I/AAAAAAAAAOc/0CiBWScC9Qo/s320/Picture+102.png" alt="" id="BLOGGER_PHOTO_ID_5307799344686032834" style="cursor: pointer; width: 320px; height: 120px;" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;This is after all 3 pins were moved.&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/SakXY83hZVI/AAAAAAAAAOk/ZCTHOUXDWNQ/s1600-h/Picture+103.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/SakXY83hZVI/AAAAAAAAAOk/ZCTHOUXDWNQ/s320/Picture+103.png" alt="" id="BLOGGER_PHOTO_ID_5307799353256142162" style="cursor: pointer; width: 320px; height: 259px;" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I then carefully used a good combination of shrink tube on the wires so that nothing will short.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SakYkX8sEWI/AAAAAAAAAO0/vrJ2t0AIEuw/s1600-h/Picture+105.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SakYkX8sEWI/AAAAAAAAAO0/vrJ2t0AIEuw/s320/Picture+105.png" alt="" id="BLOGGER_PHOTO_ID_5307800649015759202" style="cursor: pointer; width: 320px; height: 216px;" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SakYkBKF-QI/AAAAAAAAAOs/42sDH8Xz-aA/s1600-h/Picture+104.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SakYkBKF-QI/AAAAAAAAAOs/42sDH8Xz-aA/s320/Picture+104.png" alt="" id="BLOGGER_PHOTO_ID_5307800642897967362" style="cursor: pointer; width: 320px; height: 252px;" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/SakYk4XTlKI/AAAAAAAAAO8/ei5LiEHzv7Q/s1600-h/Picture+106.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/SakYk4XTlKI/AAAAAAAAAO8/ei5LiEHzv7Q/s320/Picture+106.png" alt="" id="BLOGGER_PHOTO_ID_5307800657717335202" style="cursor: pointer; width: 320px; height: 211px;" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After testing this to verify that it works, I epoxied the black part back on to the shell.  Now I have 2 screens hooked up to the Powermac G5.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-8499717449913277738?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/8499717449913277738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=8499717449913277738' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/8499717449913277738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/8499717449913277738'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2009/02/hacking-dvi-cable-to-build-adc-to-dvi.html' title='Hacking a DVI cable to build an ADC to DVI converter'/><author><name>Jonnyboy</name><uri>http://www.blogger.com/profile/17452611876879851494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp0.blogger.com/_K5ghJYMcH8w/R5hJc9afRtI/AAAAAAAAAAQ/u3FgHNNdTD4/S220/jstick.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_K5ghJYMcH8w/SakVLjxFyyI/AAAAAAAAAN8/kWAJ8c8FbcI/s72-c/Picture+98.png' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-5567618213533136577</id><published>2009-02-27T13:22:00.000-08:00</published><updated>2009-02-28T02:33:49.262-08:00</updated><title type='text'>Rebuilding a Powermac G5 power supply using ATX partsI</title><content type='html'>&lt;div&gt;I have recently acquired a dead Powermac G5.  The previous owner said that he brought it to the service center and its going to cost ~$600 to get it a new power supply, and that was all that it needed to be able to run again.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well after getting the unit home.  The first thing to do is test it without doing anything.  Who knows, it might actually NOT be broken.   In goes the plug...  Pressing the power button results in...  nothing.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So next step would be disassemble the unit.  This is the intake fan:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/Saj-Zs9QOZI/AAAAAAAAAMk/rY25FWIJg-I/s1600-h/Picture+87.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/Saj-Zs9QOZI/AAAAAAAAAMk/rY25FWIJg-I/s320/Picture+87.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5307771878374390162" style="cursor: pointer; width: 320px; height: 244px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;This is the side of the unit with the cover off:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/Saj-ZUCenVI/AAAAAAAAAMc/P81VlANLhjo/s1600-h/Picture+86.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/Saj-ZUCenVI/AAAAAAAAAMc/P81VlANLhjo/s320/Picture+86.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5307771871685418322" style="cursor: pointer; width: 320px; height: 313px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;These are the covers for the heatsink&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/Saj-ZRGN-xI/AAAAAAAAAMU/oXZHzdNuP8U/s1600-h/Picture+85.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/Saj-ZRGN-xI/AAAAAAAAAMU/oXZHzdNuP8U/s320/Picture+85.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5307771870895799058" style="cursor: pointer; width: 320px; height: 258px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Because I did not have the correct service manual for this unit, I took the logic board out before taking out the power supply.  I realized later that I only needed to take out the lower CPU to accomplish this (and yes I did take it out again ... but more on this later).  I also read somewhere that there is supposed to be a cover on top of this power supply that is now missing, the service center must have forgotten to put it back.  Some of the cables were also disconnected,  again, my guess is that the service center did not bother to plug it back in as it is broken anyway.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is the power supply.  It is the biggest computer power supply I have ever seen.  The middle connector is as big as a standard 24 pin ATX connector.&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SakC7vAnkHI/AAAAAAAAAMs/JUEKcu75mVU/s1600-h/Picture+88.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SakC7vAnkHI/AAAAAAAAAMs/JUEKcu75mVU/s320/Picture+88.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5307776861087436914" style="cursor: pointer; width: 320px; height: 158px; " /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SakC9CfDfeI/AAAAAAAAAM8/cz3S8ynzXcs/s1600-h/Picture+90.png"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;This is what's "under the hood" of the power supply.&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SakC9CfDfeI/AAAAAAAAAM8/cz3S8ynzXcs/s1600-h/Picture+90.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SakC9CfDfeI/AAAAAAAAAM8/cz3S8ynzXcs/s320/Picture+90.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5307776883495239138" style="cursor: pointer; width: 320px; height: 222px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;This is the label stating how much Amps is needed by each line.  A standard 600W ATX supply should satisfy these values.  The only thing missing is the 25Vsb line.  From what I have gathered, only the ADC out (for special apple displays) would use this.  At this point I was not too concerned about the 25Vsb line.&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/SakC8aZtzgI/AAAAAAAAAM0/o5vZik0JmpM/s1600-h/Picture+89.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/SakC8aZtzgI/AAAAAAAAAM0/o5vZik0JmpM/s320/Picture+89.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5307776872735428098" style="cursor: pointer; width: 320px; height: 278px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;This is the whole power supply's internals:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/SakFM9PlCII/AAAAAAAAANE/NLj8YYQKvyQ/s1600-h/Picture+91.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/SakFM9PlCII/AAAAAAAAANE/NLj8YYQKvyQ/s320/Picture+91.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5307779355989313666" style="cursor: pointer; width: 320px; height: 163px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After the past experience with blown capacitors, I was hoping this is another case... No such luck. Poking around with my voltmeter revealed that the fuse was blown.  I have a spare 250V 10A fuse that i quickly put in.  Who knows, it may just be the fuse.  I replace the fuse and then plug it in... poof: smoke comes out and the fuse is blown again.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A Careful inspection of the power supply board reveals that there are switching transistors whose legs are melted,  there is also a crack on the board, and that there are more surface mount IC's at the bottom side of the board:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/SakGhrCmWBI/AAAAAAAAANM/7VbE_xYITGo/s1600-h/Picture+92.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/SakGhrCmWBI/AAAAAAAAANM/7VbE_xYITGo/s320/Picture+92.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5307780811391916050" style="cursor: pointer; width: 320px; height: 201px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some of the IC's are burnt too much to be able to read the writing on them.  Ok...  I was going to try to "component-level" repair this one, but at this point, it looks like it would be more feasible for me to substitute an ATX power supply.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After getting a 550W power supply from a nearby computer store and testing this with a spare PC motherboard and verified everything working, I cut all the wires coming from it, and desoldered the cables from the original G5 power supply board.  I connected everything to the corresponding voltage but left out the 25Vsb.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is how it looked after the operation:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/SakJGRMT_yI/AAAAAAAAANU/oh54uMstSMU/s1600-h/Picture+93.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/SakJGRMT_yI/AAAAAAAAANU/oh54uMstSMU/s320/Picture+93.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5307783639131750178" style="cursor: pointer; width: 320px; height: 214px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;I used shrink tube to insulate the individual wires to keep it clean (electrical tape would leave a sticky residue).  After double and triple checking my connections with the voltmeter, I am ready to plug it in.  Before I put all the screws back I should test it and see if it actually would work:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SakKlliVHkI/AAAAAAAAANk/8pzsWUsDp68/s1600-h/Picture+95.png"&gt;&lt;img src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SakKlliVHkI/AAAAAAAAANk/8pzsWUsDp68/s320/Picture+95.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5307785276680379970" style="cursor: pointer; width: 320px; height: 252px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/SakKk407g3I/AAAAAAAAANc/6WdhpNzWaaE/s1600-h/Picture+94.png"&gt;&lt;img src="http://2.bp.blogspot.com/_K5ghJYMcH8w/SakKk407g3I/AAAAAAAAANc/6WdhpNzWaaE/s320/Picture+94.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5307785264678798194" style="cursor: pointer; width: 304px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, it's the moment of truth.  Plug it in and press power button...  Power supply fan runs...  red LED lights up on motherboard...  but no startup chime.  Repeat...  same...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Of course (duh).  There is no RAM. (double duh).  After installing a pair of 1Gb sticks of PC3200 DDR memory (from my iMac G5):&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/SakMX8GlyWI/AAAAAAAAANs/CPxCvQjYY6E/s1600-h/Picture+96.png"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/SakMX8GlyWI/AAAAAAAAANs/CPxCvQjYY6E/s1600-h/Picture+96.png"&gt;&lt;img src="http://4.bp.blogspot.com/_K5ghJYMcH8w/SakMX8GlyWI/AAAAAAAAANs/CPxCvQjYY6E/s320/Picture+96.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5307787241243134306" style="cursor: pointer; width: 320px; height: 214px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Pressing the power button now gives the easily recognizable apple startup chime, or as a good friend calls it, the "jeng" sound.  That's all I needed to hear,  out comes all the cables, out comes the 2nd CPU... put the power supply and everything else back on...&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SakOD14aoeI/AAAAAAAAAN0/zh-OMxjSLVM/s1600-h/Picture+97.png"&gt;&lt;img src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SakOD14aoeI/AAAAAAAAAN0/zh-OMxjSLVM/s320/Picture+97.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5307789094998942178" style="cursor: pointer; width: 320px; height: 207px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;And it all works.  Both CPU's detected, About this mac says it's a "Dual 2 GHz PowerPC G5".  I did notice it was a bit noisy.  My wife described it to a coworker as "it's as if there is an airplane about to take off".  After doing some more reading,  I think I may have put the processors back the wrong way (swapped the 2).  The logic board seems to "remember" the CPU ID of what was there before, and keeps a thermal profile stored in non volatile memory.  This thermal profile would be specific to that particular CPU.  If you were to replace any of the CPU's (or like what I did, swapped the 2) the logic board was programmed to "play it safe" and spin the fans  (all of them) at full speed.  I have 2 options, take the CPUs off and swap them back (no way).  Or run what is known as "thermal calibration".  Running thermal calibration took about 30 mins (about 15 mins for each processor), after which the fans are running at their normal speed now.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After all that I used the computer for a few days, and noticed that the power LED was not lighting up.  It wasn't lighting up either during sleep (it's supposed to look like it's "breathing").  After taking out the front panel connectors and power switch,  testing the LED reveals that there is nothing wrong with it, nor with the cables connecting it to the logic board.  The only thing that could be wrong would be, apple must have used the 25Vsb line for the LED.  I found a 24V switchmode power supply at a local electronics store, and after taking out the power supply again,  I was able to put it inside (there was lots of room left).  This power supply came with a voltage adjustment knob which I changed to 25V with no problem.  This unit is only  rated for 25W so as long as I dont go about plugging in an ADC monitor, I should be fine.  After plugging it in, The LED now works.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I used the DVI connector to connect it to my monitor.  I wanted to hook up 2 monitors, but the other connector was ADC.  Well... as this is a different topic, I will write about it another time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-5567618213533136577?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/5567618213533136577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=5567618213533136577' title='84 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/5567618213533136577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/5567618213533136577'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2009/02/rebuilding-powermac-g5-power-supply.html' title='Rebuilding a Powermac G5 power supply using ATX partsI'/><author><name>Jonnyboy</name><uri>http://www.blogger.com/profile/17452611876879851494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp0.blogger.com/_K5ghJYMcH8w/R5hJc9afRtI/AAAAAAAAAAQ/u3FgHNNdTD4/S220/jstick.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_K5ghJYMcH8w/Saj-Zs9QOZI/AAAAAAAAAMk/rY25FWIJg-I/s72-c/Picture+87.png' height='72' width='72'/><thr:total>84</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-3914249406910437564</id><published>2009-02-20T20:32:00.000-08:00</published><updated>2009-02-20T20:50:54.331-08:00</updated><title type='text'>Blown capacitors</title><content type='html'>Recently I have come across several items that wouldn't power up.  They either blink continously after being plugged into the wall, or just blink once after hitting the power button.  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Upon opening up one of the units (a LCD monitor), several of the capacitors look fatter than they were supposed to be.  The tops are conical instead of flat.  I opted to just replace all of the capacitors, making sure I got one with the same (or higher) voltage and temperature rating.  As soon as it was replaced,  it turned on easily.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Another unit came from a former co-worker.  It's a Thecus N5200 NAS box.  This unit, like one of the LCD screens, keeps blinking when you plug it in.  The owner was told that it must be the motherboard and that he should ship it back for replacement.  He was also assured that his data could be retrieved if he hooks up his drives to another unit.  Because I have the exact same box, we were supposed to hook up his drives to my NAS and recover his data, as he does not know how long it will take a replacement to be sent.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Before doing anything, though, I wanted to see for myself what the symptoms looked like.  So I hooked it up to a powerboard and plugged it in.  Like the LCD screen it was blinking on and off.  I said, this is more likely a power supply problem rather than motherboard.  I pulled out my power supply and swapped it in, and the unit came back to life.  We left it plugged in and started copying data off the drive.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While it was doing that, I asked to have a go at the power supply.  I would have to break some seals and since warranty is long expired, there is no harm in trying.  Off came the screws.  This was a very compact power supply and very different from standard ATX (Although it did have a standard ATX connector).  I had to unscrew 2 huge heatsinks and revealed the capacitors.  Sure enough 2 of them were "bloated".  I took some capacitors from my spares bag.  One was an exact replacement, the other was not (electronics store already closed).  After taking a long time to put the heatsinks back, I plugged it in.  No clicking sound.  That was a good sign.  we plugged it into my unit and it came to life, booted up.  We then decided not to continue copying and just put the whole thing back together.  It's been over a week and I haven't heard anything about it so I'm assuming it is still working.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-3914249406910437564?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/3914249406910437564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=3914249406910437564' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/3914249406910437564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/3914249406910437564'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2009/02/blown-capacitors.html' title='Blown capacitors'/><author><name>Jonnyboy</name><uri>http://www.blogger.com/profile/17452611876879851494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp0.blogger.com/_K5ghJYMcH8w/R5hJc9afRtI/AAAAAAAAAAQ/u3FgHNNdTD4/S220/jstick.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-3705479444138345374</id><published>2008-09-19T00:48:00.000-07:00</published><updated>2009-02-20T20:32:27.180-08:00</updated><title type='text'>Rebuilding a Laptop Li-ion battery II</title><content type='html'>This one is for a  HP laptop that is about 2 years old.  I suspected the cells would be the same 18650 cells used in the Fujitsu rebuild.  Apparently HP did a better job of sealing up the battery and I kinda wrecked it trying to get the insides out.  Hopefully I could glue this back together later on.  Off to the same dealextreme site to order the batteries and another week of waiting...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, cells came back, and after weeks of putting it off, I finally put it back together.  A little bit of super glue put the thing back together... Mostly.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-3705479444138345374?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/3705479444138345374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=3705479444138345374' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/3705479444138345374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/3705479444138345374'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2008/09/rebuilding-laptop-li-ion-battery-ii.html' title='Rebuilding a Laptop Li-ion battery II'/><author><name>Jonnyboy</name><uri>http://www.blogger.com/profile/17452611876879851494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp0.blogger.com/_K5ghJYMcH8w/R5hJc9afRtI/AAAAAAAAAAQ/u3FgHNNdTD4/S220/jstick.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-456257894322261313</id><published>2008-08-04T04:54:00.000-07:00</published><updated>2008-08-04T05:37:56.515-07:00</updated><title type='text'>Connecting a Dreamcast to the Internet</title><content type='html'>All Dreamcasts came with a dialup modem.  There was an ethernet adaptor for it but only a few were sold before Sega pulled the plug on the Dreamcast.  So, what I wanted to do was get it connected to the internet without pulling up a giant phone bill (and possibly internet fees).  You could get one of those prepaid dialup cards you can get from your local convenience store, but most people (me included) already have a broadband connection at home.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My plan was to connect it to another dialup modem with nothing more than a phone cable between the 2.  This did not work at all.  The modems are expecting some kind of phone line with some current flowing through it.  What I did would be similar to connecting 2 handsets together with some phone wire.  You can talk as loud as you want, but nothing is going to come out of the other phone's speaker.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What I need is some kind of line simulator that will fool the modem(s) into thinking that it's actually connected to a phone line.  I found this after some searching &lt;a href="http://www.jagshouse.com/modem.html"&gt;http://www.jagshouse.com/modem.html&lt;/a&gt;.  After obtaining the parts and assembling it together:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_K5ghJYMcH8w/SJbzuJpASdI/AAAAAAAAAKs/PuQWTwhxtgk/s1600-h/Picture+74.png"&gt;&lt;img src="http://bp0.blogger.com/_K5ghJYMcH8w/SJbzuJpASdI/AAAAAAAAAKs/PuQWTwhxtgk/s320/Picture+74.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230635991424846290" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_K5ghJYMcH8w/SJbzugU576I/AAAAAAAAAK0/Hkz7iyfcDhs/s1600-h/Picture+75.png"&gt;&lt;img src="http://bp3.blogger.com/_K5ghJYMcH8w/SJbzugU576I/AAAAAAAAAK0/Hkz7iyfcDhs/s320/Picture+75.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230635997514559394" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_K5ghJYMcH8w/SJbzuvFufaI/AAAAAAAAAK8/Nq-YRNiiDog/s1600-h/Picture+76.png"&gt;&lt;img src="http://bp0.blogger.com/_K5ghJYMcH8w/SJbzuvFufaI/AAAAAAAAAK8/Nq-YRNiiDog/s320/Picture+76.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230636001477426594" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;It did not quite work out.  Same as before, nothing. NO CARRIER.  Turns out I needed to do a bit of tweaking with the resistor.  The value stated in the article may have worked for some modems, but for my specific one, I had to wire 2 of the 390 ohm resistors in parallel just to get a 8mA current... the articles I read say that the phone company provides 30mA ... and 25mA would have been enough.  but after that, it worked.  I will do a little more adjusting of the resistor if needed later on.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_K5ghJYMcH8w/SJbzvOu-pXI/AAAAAAAAALE/XJIOvbMo_LI/s1600-h/Picture+77.png"&gt;&lt;img src="http://bp2.blogger.com/_K5ghJYMcH8w/SJbzvOu-pXI/AAAAAAAAALE/XJIOvbMo_LI/s320/Picture+77.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230636009971950962" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_K5ghJYMcH8w/SJbzv-2dyYI/AAAAAAAAALM/CbmYn8SWJRQ/s1600-h/Picture+78.png"&gt;&lt;img src="http://bp0.blogger.com/_K5ghJYMcH8w/SJbzv-2dyYI/AAAAAAAAALM/CbmYn8SWJRQ/s320/Picture+78.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230636022888253826" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I used a digital multimeter to check the current flowing through the circiuit so you see the leads I used still in the picture.&lt;/div&gt;&lt;div&gt;I had to run minicom (a comm program) to type "ATA" to tell the modem to answer.  After that I quickly exit without hanging up and at the command line type:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;pppd /dev/ttyS0 115200 crtscts 10.0.1.201:10.0.1.225 proxyarp passive&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After that.. a peek at /var/log/messages reveals connection successful.  And I can ping the dreamcast's IP.  Another machine on the lan can ping it as well (that's what proxyarp means).  I will be automating this later on... but for now I'll leave it a manual process just to get it running.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Success:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_K5ghJYMcH8w/SJb21cOtxoI/AAAAAAAAALU/mXgHHPmfCbo/s1600-h/Picture+79.png"&gt;&lt;img src="http://bp2.blogger.com/_K5ghJYMcH8w/SJb21cOtxoI/AAAAAAAAALU/mXgHHPmfCbo/s320/Picture+79.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230639415208822402" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_K5ghJYMcH8w/SJb218pEjFI/AAAAAAAAALc/V1LbGO_8jg4/s1600-h/Picture+80.png"&gt;&lt;img src="http://bp3.blogger.com/_K5ghJYMcH8w/SJb218pEjFI/AAAAAAAAALc/V1LbGO_8jg4/s320/Picture+80.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230639423909301330" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_K5ghJYMcH8w/SJb223wG0EI/AAAAAAAAALk/DH4KVFX8T9w/s1600-h/Picture+81.png"&gt;&lt;img src="http://bp1.blogger.com/_K5ghJYMcH8w/SJb223wG0EI/AAAAAAAAALk/DH4KVFX8T9w/s320/Picture+81.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230639439776501826" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_K5ghJYMcH8w/SJb23QgoWjI/AAAAAAAAALs/C2HSHkfJZKo/s1600-h/Picture+82.png"&gt;&lt;img src="http://bp1.blogger.com/_K5ghJYMcH8w/SJb23QgoWjI/AAAAAAAAALs/C2HSHkfJZKo/s320/Picture+82.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230639446422477362" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_K5ghJYMcH8w/SJb24IfD8OI/AAAAAAAAAL0/qgt05eQ1JFg/s1600-h/Picture+83.png"&gt;&lt;img src="http://bp3.blogger.com/_K5ghJYMcH8w/SJb24IfD8OI/AAAAAAAAAL0/qgt05eQ1JFg/s320/Picture+83.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230639461448282338" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_K5ghJYMcH8w/SJb38xYyvfI/AAAAAAAAAL8/CncbxSM2lWM/s1600-h/Picture+84.png"&gt;&lt;img src="http://bp1.blogger.com/_K5ghJYMcH8w/SJb38xYyvfI/AAAAAAAAAL8/CncbxSM2lWM/s320/Picture+84.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230640640658947570" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-456257894322261313?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/456257894322261313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=456257894322261313' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/456257894322261313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/456257894322261313'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2008/08/connecting-dreamcast-to-internet.html' title='Connecting a Dreamcast to the Internet'/><author><name>Jonnyboy</name><uri>http://www.blogger.com/profile/17452611876879851494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp0.blogger.com/_K5ghJYMcH8w/R5hJc9afRtI/AAAAAAAAAAQ/u3FgHNNdTD4/S220/jstick.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_K5ghJYMcH8w/SJbzuJpASdI/AAAAAAAAAKs/PuQWTwhxtgk/s72-c/Picture+74.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-4664494206976925441</id><published>2008-08-02T16:01:00.000-07:00</published><updated>2008-08-03T03:00:58.084-07:00</updated><title type='text'>Apple IIGS RGB video to Component converter</title><content type='html'>There is a fair amount of retro devices that output RGB.  But these were RGB in TV frequencies.  If you try to hook it up to most VGA monitors, they will not sync properly and you would probably get a picture with lots of lines (if you get a picture at all).  The monitors designed for these devices were readily available a few years back, but they are recently becoming more scarce.  Another way of using these signals is using a standard television with a SCART input and a RGB to SCART connector.  Most PAL TV's have SCART inputs (or so I heard).  Having gone through a local TV store recently,  I checked the TV's, both LCD's and CRT's ... somehow they stopped putting SCART connectors on the newer sets and it's been slowly replaced by component input (Y Pb Pr).  Also most NTSC TV's never had the SCART connector.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, that aside, another way to view the output of these devices would be to use the standard composite video out to your TV.  So I take my Apple IIGS, hook up the composite out directly to the TV's video in and ...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As you can see, the stuff that are supposed to be in black and white are tinted with color fringes.  This would be somewhat acceptable for games and applications with mostly graphics.  If you are using it with 80 column text, or graphical text, you will soon get a headache from trying to read it.  The Apple IIGS composite video circuits automatically disable the colour burst signal so you get something in black and white.  This improves the readability somewhat but on screens with combined graphics + text you get the same problem.  That is the main reason why the came out with RGB monitors.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, my TV has the standard Y Pb Pc component input.  If you connect something meant for RGB to it, it works, everything is as clear as RGB, but with the wrong colours.  That's a good enough start for me.  After searching around for a DIY RGB to component converter, I found one in my local electronics store already packaged as a kit.  It was published as a &lt;a href="http://www.siliconchip.com.au/cms/A_102648/article.html"&gt;Silicon Chip article&lt;/a&gt;.  I proceeded and assembled the kit.  After that,  I think the TV expects the SYNC signal with the luminance (Y) signal, or it just displays the "no signal" blue background.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A quick question to Tony Diaz (thanks Tony) gets me what I needed.  It is safe to just tie the composite SYNC signal with the Green output to have "Sync on green".  After wiring a makeshift  D15  IIGS RGB with wires leading directly to the RGB to component converter I finally have the results I was hoping for.  Here's are comparisons of using the composite "video in" image and the "RGB converted" image.  &lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_K5ghJYMcH8w/SJV69TaQMXI/AAAAAAAAAIE/gVzYXy4h43s/s1600-h/Picture+52.png"&gt;&lt;img src="http://bp0.blogger.com/_K5ghJYMcH8w/SJV69TaQMXI/AAAAAAAAAIE/gVzYXy4h43s/s320/Picture+52.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230221735861694834" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_K5ghJYMcH8w/SJV6-qJLdMI/AAAAAAAAAIM/4jXIk8SHGek/s1600-h/Picture+53.png"&gt;&lt;img src="http://bp0.blogger.com/_K5ghJYMcH8w/SJV6-qJLdMI/AAAAAAAAAIM/4jXIk8SHGek/s320/Picture+53.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230221759143965890" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Last 2 are output of the converter.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_K5ghJYMcH8w/SJV6_x54MvI/AAAAAAAAAIU/OvMMjgIN0Sk/s1600-h/Picture+54.png"&gt;&lt;img src="http://bp2.blogger.com/_K5ghJYMcH8w/SJV6_x54MvI/AAAAAAAAAIU/OvMMjgIN0Sk/s320/Picture+54.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230221778407142130" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;The image above is the same TV using the composite "video in".&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_K5ghJYMcH8w/SJV7CyCXm9I/AAAAAAAAAIc/prrOP7Ln-2w/s1600-h/Picture+55.png"&gt;&lt;img src="http://bp1.blogger.com/_K5ghJYMcH8w/SJV7CyCXm9I/AAAAAAAAAIc/prrOP7Ln-2w/s320/Picture+55.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230221829982362578" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;This one is the same as above, but using the converter.  &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_K5ghJYMcH8w/SJV7DhUu5wI/AAAAAAAAAIk/zHEYiZBYn08/s1600-h/Picture+56.png"&gt;&lt;img src="http://bp3.blogger.com/_K5ghJYMcH8w/SJV7DhUu5wI/AAAAAAAAAIk/zHEYiZBYn08/s320/Picture+56.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230221842675853058" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Close up of the converted image.  Note the clear black and white text.&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_K5ghJYMcH8w/SJV8ZKpm4dI/AAAAAAAAAIs/BizsnVf8Zu0/s1600-h/Picture+57.png"&gt;&lt;img src="http://bp1.blogger.com/_K5ghJYMcH8w/SJV8ZKpm4dI/AAAAAAAAAIs/BizsnVf8Zu0/s320/Picture+57.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230223314058142162" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_K5ghJYMcH8w/SJV8Z3EX65I/AAAAAAAAAI0/6ha6yU-UQ1U/s1600-h/Picture+58.png"&gt;&lt;img src="http://bp1.blogger.com/_K5ghJYMcH8w/SJV8Z3EX65I/AAAAAAAAAI0/6ha6yU-UQ1U/s320/Picture+58.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230223325981567890" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_K5ghJYMcH8w/SJV8bLjnV5I/AAAAAAAAAI8/DSVOvPC9n-w/s1600-h/Picture+59.png"&gt;&lt;img src="http://bp2.blogger.com/_K5ghJYMcH8w/SJV8bLjnV5I/AAAAAAAAAI8/DSVOvPC9n-w/s320/Picture+59.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230223348661180306" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Last 3 various images of composite out.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_K5ghJYMcH8w/SJV8cDbuCmI/AAAAAAAAAJE/AnNewPI2ugw/s1600-h/Picture+60.png"&gt;&lt;img src="http://bp1.blogger.com/_K5ghJYMcH8w/SJV8cDbuCmI/AAAAAAAAAJE/AnNewPI2ugw/s320/Picture+60.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230223363660450402" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Image of the same screen on converted output&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_K5ghJYMcH8w/SJV8eTanFqI/AAAAAAAAAJM/LOspsbdCy5k/s1600-h/Picture+61.png"&gt;&lt;img src="http://bp3.blogger.com/_K5ghJYMcH8w/SJV8eTanFqI/AAAAAAAAAJM/LOspsbdCy5k/s320/Picture+61.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230223402310506146" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_K5ghJYMcH8w/SJV-xbTHEbI/AAAAAAAAAJU/0sU4LqoyoUY/s1600-h/Picture+62.png"&gt;&lt;img src="http://bp3.blogger.com/_K5ghJYMcH8w/SJV-xbTHEbI/AAAAAAAAAJU/0sU4LqoyoUY/s320/Picture+62.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230225929867301298" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Last 2 are pictures of the Tour of the Apple IIGS.  They are "graphical text".  You should be able to tell which is which ;)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_K5ghJYMcH8w/SJV-yRDr9NI/AAAAAAAAAJc/sZp8fhpDVyo/s1600-h/Picture+63.png"&gt;&lt;img src="http://bp3.blogger.com/_K5ghJYMcH8w/SJV-yRDr9NI/AAAAAAAAAJc/sZp8fhpDVyo/s320/Picture+63.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230225944298124498" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_K5ghJYMcH8w/SJV-zRaf8eI/AAAAAAAAAJk/c21Zemz_Sf8/s1600-h/Picture+64.png"&gt;&lt;img src="http://bp3.blogger.com/_K5ghJYMcH8w/SJV-zRaf8eI/AAAAAAAAAJk/c21Zemz_Sf8/s320/Picture+64.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230225961573675490" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;That's the box itself.  Excuse the mess in the background.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_K5ghJYMcH8w/SJV-0UrZOZI/AAAAAAAAAJs/UFlGjXOk9YY/s1600-h/Picture+65.png"&gt;&lt;img src="http://bp1.blogger.com/_K5ghJYMcH8w/SJV-0UrZOZI/AAAAAAAAAJs/UFlGjXOk9YY/s320/Picture+65.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230225979629713810" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_K5ghJYMcH8w/SJV-1LqzPQI/AAAAAAAAAJ0/tkAPVfXaqes/s1600-h/Picture+66.png"&gt;&lt;img src="http://bp2.blogger.com/_K5ghJYMcH8w/SJV-1LqzPQI/AAAAAAAAAJ0/tkAPVfXaqes/s320/Picture+66.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230225994391174402" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Another 2 images for comparison... again you should be able to tell which is which.&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_K5ghJYMcH8w/SJWA1h4bryI/AAAAAAAAAJ8/k4DstOcDINs/s1600-h/Picture+68.png"&gt;&lt;img src="http://bp0.blogger.com/_K5ghJYMcH8w/SJWA1h4bryI/AAAAAAAAAJ8/k4DstOcDINs/s320/Picture+68.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230228199377186594" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_K5ghJYMcH8w/SJWA18slHsI/AAAAAAAAAKE/dFYSvo2EvSc/s1600-h/Picture+69.png"&gt;&lt;img src="http://bp3.blogger.com/_K5ghJYMcH8w/SJWA18slHsI/AAAAAAAAAKE/dFYSvo2EvSc/s320/Picture+69.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230228206575230658" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;More examples&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_K5ghJYMcH8w/SJWA3GqGIMI/AAAAAAAAAKM/BuOXb78iO0A/s1600-h/Picture+70.png"&gt;&lt;img src="http://bp1.blogger.com/_K5ghJYMcH8w/SJWA3GqGIMI/AAAAAAAAAKM/BuOXb78iO0A/s320/Picture+70.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230228226429034690" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_K5ghJYMcH8w/SJWA4Rfd5mI/AAAAAAAAAKU/ug-ZGnXOQwc/s1600-h/Picture+71.png"&gt;&lt;img src="http://bp1.blogger.com/_K5ghJYMcH8w/SJWA4Rfd5mI/AAAAAAAAAKU/ug-ZGnXOQwc/s320/Picture+71.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230228246517114466" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_K5ghJYMcH8w/SJWBiXmv68I/AAAAAAAAAKc/n8bq5fR8pCo/s1600-h/Picture+72.png"&gt;&lt;img src="http://bp3.blogger.com/_K5ghJYMcH8w/SJWBiXmv68I/AAAAAAAAAKc/n8bq5fR8pCo/s320/Picture+72.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230228969712774082" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_K5ghJYMcH8w/SJWBjWAqzTI/AAAAAAAAAKk/m1JROYn7BTo/s1600-h/Picture+73.png"&gt;&lt;img src="http://bp2.blogger.com/_K5ghJYMcH8w/SJWBjWAqzTI/AAAAAAAAAKk/m1JROYn7BTo/s320/Picture+73.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5230228986464488754" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Entire screens.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-4664494206976925441?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/4664494206976925441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=4664494206976925441' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/4664494206976925441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/4664494206976925441'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2008/08/apple-iigs-rgb-video-to-component.html' title='Apple IIGS RGB video to Component converter'/><author><name>Jonnyboy</name><uri>http://www.blogger.com/profile/17452611876879851494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp0.blogger.com/_K5ghJYMcH8w/R5hJc9afRtI/AAAAAAAAAAQ/u3FgHNNdTD4/S220/jstick.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_K5ghJYMcH8w/SJV69TaQMXI/AAAAAAAAAIE/gVzYXy4h43s/s72-c/Picture+52.png' height='72' width='72'/><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-2689424214036264900</id><published>2008-07-01T01:32:00.000-07:00</published><updated>2008-07-16T04:05:20.561-07:00</updated><title type='text'>Installing a PC motherboard into a quicksilver G4 case</title><content type='html'>I have had an Apple G4 quicksilver case in storage for some time now (Thanks to Wade for hand carrying it all the way from Brisbane).  My original reason for getting it, was to house my Imac G5 logic board.  Well... after measuring the inside dimensions of the case,  I found out that there is no way I'm going to make this fit, unless i do a lot of sawing and hacking, which would leave very little of the case intact and part of the logic board would probably be sticking out... this somehow defeat my purpose of retaining the external (and if possible internal) appearance.  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This Imac G5 logic board is now running attached to my desk and is what I use to update this blog, I will leave this topic for another day.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway.  I looked around for a good place to buy some cheap parts.  I am putting this together as a MythTV box so I brought that into consideration when choosing the parts.  After searching around, I found  this low price computer store &lt;a href="http://msy.com.au/"&gt;http://msy.com.au&lt;/a&gt;.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After looking through their price list, I ended up with the following:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Motherboard:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I was choosing between a Gigabyte 945GCM-S2L and an Asus P5GC-MX/1333.  They are mostly identical (layout, chipset, etc.)   Well, the Asus costs $2 more, but the Gigabyte has 10/100/1000 onboard ethernet, whereas the Asus only had a 10/100.  So I ended up with the Gigabyte.  $59.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Processor:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At that time the quad core processors still costs a fair bit (plus MythTV isn't going to need that much CPU power.) Based on the MythTV forums, even the lowest end E2140 is more than enough for what I want to do.  Balancing the costs (and the thought that I might use this as a desktop computer later on)  I ended up with a E2200.  $107&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;RAM:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1G DDR2 Kingston. $32&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hard Disk:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Seeing that the main reason I want to upgrade my old MythTV box, is so that I can record/watch High Definition (HD) content.  The old box can actually do that, but the onboard SIS video chipset only displays a weird green screen whenever I try to display HD content.... plus it didn't have an AGP slot.. only 2 PCI slots which was already taken up by the 2 tuners I have.  So I thought a really big drive would be helpful... I could record months of shows before I need to erase some.  So after considering everything,  I chose a 750 Gigabyte seagate hard drive.  $247.00&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's all the parts that (I thought) I needed.  Next was to test fit the motherboard:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_K5ghJYMcH8w/SH3NuTFf2JI/AAAAAAAAAHM/A1cTdveskPM/s1600-h/Picture+40.png"&gt;&lt;img src="http://bp3.blogger.com/_K5ghJYMcH8w/SH3NuTFf2JI/AAAAAAAAAHM/A1cTdveskPM/s320/Picture+40.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5223557338100652178" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Looks like a good fit.  Once I could modify the back panel the PCI slots should line up properly with the apple back panel covers just right.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next problem is the G4's power supply is not standard ATX.  To make matters worse, it looks like it's broken.  At that time I couldn't be bothered to attempt to repair it (I may someday) so I just decided to put the innards of an ATX power supply in the G4's power supply case.  This preserves the look at the back and the power cord still goes into the same place.&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_K5ghJYMcH8w/SH3PbWpJooI/AAAAAAAAAHU/7xVV7Wndpzc/s1600-h/Picture+41.png"&gt;&lt;img src="http://bp1.blogger.com/_K5ghJYMcH8w/SH3PbWpJooI/AAAAAAAAAHU/7xVV7Wndpzc/s320/Picture+41.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5223559211661238914" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Shown here on the left is the original Apple power supply,  on the right is the cheapo ATX power supply.  Size is almost the same.  No modification was needed to transfer the ATX innards except drilling a few screw holes. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_K5ghJYMcH8w/SH3RBSTl9RI/AAAAAAAAAHc/tVYsca4J0Zo/s1600-h/Picture+42.png"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_K5ghJYMcH8w/SH3RBSTl9RI/AAAAAAAAAHc/tVYsca4J0Zo/s1600-h/Picture+42.png"&gt;&lt;img src="http://bp1.blogger.com/_K5ghJYMcH8w/SH3RBSTl9RI/AAAAAAAAAHc/tVYsca4J0Zo/s320/Picture+42.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5223560962843735314" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Here is the ATX parts screwed on the Apple power supply case.  You can see some of the screw holes have to be enlarged, and one (upper left) has to be drilled.&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_K5ghJYMcH8w/SH3RCBAQUwI/AAAAAAAAAHk/AFVSifpLhu8/s1600-h/Picture+43.png"&gt;&lt;img src="http://bp3.blogger.com/_K5ghJYMcH8w/SH3RCBAQUwI/AAAAAAAAAHk/AFVSifpLhu8/s320/Picture+43.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5223560975379092226" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;div&gt;Here it is all screwed up and working. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_K5ghJYMcH8w/SH3SqFNFKII/AAAAAAAAAHs/RJHv-EeoCaI/s1600-h/Picture+44.png"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I then somehow managed to modify the case so that the motherboard fit.  I had to cut a hole in the back panel because the G4 wasn't ATX standard.  I had to remove some of the original screw standoffs because they dont match the motherboard's and they would short something out if I leave them in place.  I then replaced them with metal PCB standoffs.  I remember after having done all that the case refused to close and I had to desolder some of the capacitors and mount them lying down to keep them from hitting some part of the case.  In the excitement I also somehow forgot to take any pictures of this and all I have is the finished product:&lt;/div&gt;&lt;div&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_K5ghJYMcH8w/SH3UFDQ-hCI/AAAAAAAAAH8/u7tUuG3P_PQ/s1600-h/Picture+46.png"&gt;&lt;img src="http://bp1.blogger.com/_K5ghJYMcH8w/SH3UFDQ-hCI/AAAAAAAAAH8/u7tUuG3P_PQ/s320/Picture+46.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5223564326060590114" style="cursor: pointer; " /&gt;&lt;/a&gt;  &lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_K5ghJYMcH8w/SH3SqFNFKII/AAAAAAAAAHs/RJHv-EeoCaI/s1600-h/Picture+44.png"&gt;&lt;img src="http://bp0.blogger.com/_K5ghJYMcH8w/SH3SqFNFKII/AAAAAAAAAHs/RJHv-EeoCaI/s320/Picture+44.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5223562763213023362" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_K5ghJYMcH8w/SH3SqzXnlbI/AAAAAAAAAH0/AiApyDF81Fc/s1600-h/Picture+45.png"&gt;&lt;img src="http://bp1.blogger.com/_K5ghJYMcH8w/SH3SqzXnlbI/AAAAAAAAAH0/AiApyDF81Fc/s320/Picture+45.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5223562775605253554" style="cursor: pointer; " /&gt;&lt;/a&gt;  &lt;/div&gt;&lt;div&gt;I will someday have to take this all apart for cleaning, and I will take some pictures and update this entry.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-2689424214036264900?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/2689424214036264900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=2689424214036264900' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/2689424214036264900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/2689424214036264900'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2008/07/installing-pc-motherboard-into.html' title='Installing a PC motherboard into a quicksilver G4 case'/><author><name>Jonnyboy</name><uri>http://www.blogger.com/profile/17452611876879851494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp0.blogger.com/_K5ghJYMcH8w/R5hJc9afRtI/AAAAAAAAAAQ/u3FgHNNdTD4/S220/jstick.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_K5ghJYMcH8w/SH3NuTFf2JI/AAAAAAAAAHM/A1cTdveskPM/s72-c/Picture+40.png' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-447553891780651834</id><published>2008-06-24T01:34:00.000-07:00</published><updated>2008-06-24T20:37:39.529-07:00</updated><title type='text'>Modify PAL Atari 2600 for S-Video output.</title><content type='html'>I got an Atari 2600 from ebay some time &lt;strike&gt;last year&lt;/strike&gt; 2006.  It's one of those "vader" editions.  Unlike the one I had growing up (which was a NTSC model from the US), this one is a PAL model.  After hooking up the antenna to the TV, I was ready to play some retro games... or so I thought.&lt;br /&gt;&lt;br /&gt;The PAL unit came with an IEC 169-2 connector (no it wasn't RCA).  I did recall that the NTSC unit came with a TV/GAME switch box so that you can choose between antenna to watch TV or your game but the PAL unit didn't come with one.  The back of the TV also had the same  anttena connector so I just plugged it in.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGGjgaRGe2I/AAAAAAAAAD8/YhxGBumJu14/s1600-h/Picture+10.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGGjgaRGe2I/AAAAAAAAAD8/YhxGBumJu14/s320/Picture+10.png" alt="" id="BLOGGER_PHOTO_ID_5215629620673936226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Then I spent hours trying to tune the TV to get the picture to come out clear... I tried all the different PAL systems and B/G came out the best (others had bad/no audio, no colour, etc).  The best picture I got was washed out, and had some snow in the background.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/SGGlmqYWtrI/AAAAAAAAAEE/TThpcd4P3Vs/s1600-h/Picture+11.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_K5ghJYMcH8w/SGGlmqYWtrI/AAAAAAAAAEE/TThpcd4P3Vs/s320/Picture+11.png" alt="" id="BLOGGER_PHOTO_ID_5215631927101798066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGGlmxgYIxI/AAAAAAAAAEM/sXYJIUYfEsc/s1600-h/Picture+12.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGGlmxgYIxI/AAAAAAAAAEM/sXYJIUYfEsc/s320/Picture+12.png" alt="" id="BLOGGER_PHOTO_ID_5215631929014493970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGGlnh7DWVI/AAAAAAAAAEU/-7kk6P04YNk/s1600-h/Picture+13.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGGlnh7DWVI/AAAAAAAAAEU/-7kk6P04YNk/s320/Picture+13.png" alt="" id="BLOGGER_PHOTO_ID_5215631942011279698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/SGGloeMtUGI/AAAAAAAAAEc/wxdRFL93kZo/s1600-h/Picture+14.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_K5ghJYMcH8w/SGGloeMtUGI/AAAAAAAAAEc/wxdRFL93kZo/s320/Picture+14.png" alt="" id="BLOGGER_PHOTO_ID_5215631958191460450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGGlo4B2P1I/AAAAAAAAAEk/fRpzCQm0Vq4/s1600-h/Picture+15.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGGlo4B2P1I/AAAAAAAAAEk/fRpzCQm0Vq4/s320/Picture+15.png" alt="" id="BLOGGER_PHOTO_ID_5215631965125230418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now, I was thinking that somewhere inside the unit the console probably works with some kind of composite signal, and it might just have a bad RF modulator.  Or maybe the coax cable was shot?   At any rate I looked around the internet for a possible "video out" solution.  I found something better. S-Video.  From this site:  &lt;a href="http://www.atariage.com/2600/faq/index.html?SystemID=2600#composite"&gt;http://www.atariage.com/2600/faq/index.html?SystemID=2600#composite&lt;/a&gt;, a circuit was published.  This isn't exactly the simplest of circuits, there's 2 other solutions I found, one involves just a bunch of resistors, and the other was the same mod without the IC.  But where's the fun in that? Besides this circuit also isolates the video circuit from the 2600's circuits, so if   I were to do something stupid, like feed the s-video port some voltage, or hook it up to an ADB (apple desktop bus) port, it will only affect the video circuits I added.  Plus, it doesn't put any load on the circuits like the other mods.&lt;br /&gt;Since the article already explains what you need to do in detail, I'm not going to repeat all of that here.  After obtaining the required materials this is how it ended up looking.  This was the original RF cabling, internally it was RCA:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGGtP508TdI/AAAAAAAAAEs/DFoIHn-6XTY/s1600-h/Picture+18.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGGtP508TdI/AAAAAAAAAEs/DFoIHn-6XTY/s320/Picture+18.png" alt="" id="BLOGGER_PHOTO_ID_5215640332204264914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGGtQY7YEDI/AAAAAAAAAE0/4gkbEGHzX_I/s1600-h/Picture+19.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGGtQY7YEDI/AAAAAAAAAE0/4gkbEGHzX_I/s320/Picture+19.png" alt="" id="BLOGGER_PHOTO_ID_5215640340552749106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This was the main board with the shielding in place:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGGtQxNUNXI/AAAAAAAAAE8/RSKwVQZ7oh8/s1600-h/Picture+20.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGGtQxNUNXI/AAAAAAAAAE8/RSKwVQZ7oh8/s320/Picture+20.png" alt="" id="BLOGGER_PHOTO_ID_5215640347070444914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;You have to untwist 5 of these to remove the shielding:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGGtRR2-0cI/AAAAAAAAAFE/Y8CmIDcZqsE/s1600-h/Picture+22.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGGtRR2-0cI/AAAAAAAAAFE/Y8CmIDcZqsE/s320/Picture+22.png" alt="" id="BLOGGER_PHOTO_ID_5215640355835138498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I used wire wrap wire to connect the circuit to the connection points.  I did not make any changes to the existing circuit so i can revert it back to the original condition if I ever decide:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGGtS7D0IFI/AAAAAAAAAFM/gKuf_KOMtVw/s1600-h/Picture+23.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGGtS7D0IFI/AAAAAAAAAFM/gKuf_KOMtVw/s320/Picture+23.png" alt="" id="BLOGGER_PHOTO_ID_5215640384074686546" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGG2YpZLBKI/AAAAAAAAAFU/EIdv1Guc4Tg/s1600-h/Picture+24.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGG2YpZLBKI/AAAAAAAAAFU/EIdv1Guc4Tg/s320/Picture+24.png" alt="" id="BLOGGER_PHOTO_ID_5215650378016294050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGG2ZlFHzgI/AAAAAAAAAFc/1okAkpGwaiY/s1600-h/Picture+25.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGG2ZlFHzgI/AAAAAAAAAFc/1okAkpGwaiY/s320/Picture+25.png" alt="" id="BLOGGER_PHOTO_ID_5215650394038324738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGG2aqJP7cI/AAAAAAAAAFk/ZChihsXfKX4/s1600-h/Picture+26.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGG2aqJP7cI/AAAAAAAAAFk/ZChihsXfKX4/s320/Picture+26.png" alt="" id="BLOGGER_PHOTO_ID_5215650412577680834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I made the output cable long, like the original RF cable so you can pull the console far from the TV, since the controller cables are so short.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGG2a9rE6UI/AAAAAAAAAFs/aQX0FxSpUmE/s1600-h/Picture+27.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGG2a9rE6UI/AAAAAAAAAFs/aQX0FxSpUmE/s320/Picture+27.png" alt="" id="BLOGGER_PHOTO_ID_5215650417819838786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGG2bC8PUvI/AAAAAAAAAF0/1TDV70CKdNo/s1600-h/Picture+28.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGG2bC8PUvI/AAAAAAAAAF0/1TDV70CKdNo/s320/Picture+28.png" alt="" id="BLOGGER_PHOTO_ID_5215650419234001650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It's time to hook it up to the TV&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGG48oWv3zI/AAAAAAAAAF8/OyI6ppHH65Q/s1600-h/Picture+29.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGG48oWv3zI/AAAAAAAAAF8/OyI6ppHH65Q/s320/Picture+29.png" alt="" id="BLOGGER_PHOTO_ID_5215653195236237106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/SGG49Ic28RI/AAAAAAAAAGE/dHWri6kHeV4/s1600-h/Picture+30.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_K5ghJYMcH8w/SGG49Ic28RI/AAAAAAAAAGE/dHWri6kHeV4/s320/Picture+30.png" alt="" id="BLOGGER_PHOTO_ID_5215653203851800850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now the moment of truth:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGG49bhKYdI/AAAAAAAAAGM/d0nqyA_gwUI/s1600-h/Picture+31.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGG49bhKYdI/AAAAAAAAAGM/d0nqyA_gwUI/s320/Picture+31.png" alt="" id="BLOGGER_PHOTO_ID_5215653208970125778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGG49xPEPfI/AAAAAAAAAGU/GJKLGAyLRH0/s1600-h/Picture+32.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGG49xPEPfI/AAAAAAAAAGU/GJKLGAyLRH0/s320/Picture+32.png" alt="" id="BLOGGER_PHOTO_ID_5215653214799805938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/SGG4_KWOf9I/AAAAAAAAAGc/lN7UXI1Uf88/s1600-h/Picture+33.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_K5ghJYMcH8w/SGG4_KWOf9I/AAAAAAAAAGc/lN7UXI1Uf88/s320/Picture+33.png" alt="" id="BLOGGER_PHOTO_ID_5215653238720593874" border="0" /&gt;&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/SGG6G_wzDdI/AAAAAAAAAGk/83gUL_7xCRg/s1600-h/Picture+34.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_K5ghJYMcH8w/SGG6G_wzDdI/AAAAAAAAAGk/83gUL_7xCRg/s320/Picture+34.png" alt="" id="BLOGGER_PHOTO_ID_5215654472829832658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/SGG6HOAS9bI/AAAAAAAAAGs/43HWtzrVNzc/s1600-h/Picture+35.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_K5ghJYMcH8w/SGG6HOAS9bI/AAAAAAAAAGs/43HWtzrVNzc/s320/Picture+35.png" alt="" id="BLOGGER_PHOTO_ID_5215654476652934578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGG6Hzzec4I/AAAAAAAAAG8/MW2eD7KQ7Tc/s1600-h/Picture+38.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGG6Hzzec4I/AAAAAAAAAG8/MW2eD7KQ7Tc/s320/Picture+38.png" alt="" id="BLOGGER_PHOTO_ID_5215654486799709058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/SGG6IHEgSjI/AAAAAAAAAHE/_v5lgGL2lXg/s1600-h/Picture+39.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_K5ghJYMcH8w/SGG6IHEgSjI/AAAAAAAAAHE/_v5lgGL2lXg/s320/Picture+39.png" alt="" id="BLOGGER_PHOTO_ID_5215654491971406386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;That was definitely a lot better than the RF cable.  Well I have to assemble the unit back together and try out some other games:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/SGG6HpIYGSI/AAAAAAAAAG0/R6nuneTuPIM/s1600-h/Picture+36.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_K5ghJYMcH8w/SGG6HpIYGSI/AAAAAAAAAG0/R6nuneTuPIM/s320/Picture+36.png" alt="" id="BLOGGER_PHOTO_ID_5215654483934583074" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-447553891780651834?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/447553891780651834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=447553891780651834' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/447553891780651834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/447553891780651834'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2008/01/modify-pal-atari-2600-for-s-video.html' title='Modify PAL Atari 2600 for S-Video output.'/><author><name>Jonnyboy</name><uri>http://www.blogger.com/profile/17452611876879851494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp0.blogger.com/_K5ghJYMcH8w/R5hJc9afRtI/AAAAAAAAAAQ/u3FgHNNdTD4/S220/jstick.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_K5ghJYMcH8w/SGGjgaRGe2I/AAAAAAAAAD8/YhxGBumJu14/s72-c/Picture+10.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-8092480389129040413</id><published>2008-06-23T17:37:00.001-07:00</published><updated>2008-06-23T20:14:29.471-07:00</updated><title type='text'>Rebuild a laptop Li-ion battery pack</title><content type='html'>&lt;div style="text-align: center;"&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Warning!!!&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;If you are not completely sure what you are doing, don't apply what is described below. In any case I am not responsible in any way to the consequences that this guide may have. Read it at your own risk. Please do not proceed if you don't agree with the above.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;After having read a different how-to article on the same topic:&lt;div&gt;&lt;a href="http://www.electronics-lab.com/articles/Li_Ion_reconstruct/index_1.html"&gt;http://www.electronics-lab.com/articles/Li_Ion_reconstruct/index_1.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I decided to do some repairs on a similar laptop.  This was a Fujitsu Lifebook S6120.  The battery wouldn't charge anymore and after 5 to 10 minutes of attempting to charge it the onboard LCD displays a "shorted battery" error:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_K5ghJYMcH8w/SGBE5cJOaTI/AAAAAAAAAAk/2v342tQBoXQ/s320/Picture+10.png" alt="" id="BLOGGER_PHOTO_ID_5215244122093152562" border="0" /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, following the directions in the electronics-lab article,  I proceeded to disassemble the battery:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_K5ghJYMcH8w/SGBHogEDXXI/AAAAAAAAAAs/j9oBVaEjU0c/s320/Picture+11.png" alt="" id="BLOGGER_PHOTO_ID_5215247129622306162" border="0" /&gt;&lt;/div&gt;&lt;div&gt;Unfortunately for me, it contained very different cells.  And to make things worse, there are no markings on the cells whatsoever, just (what seems to be) red shrink tube and some tape:&lt;/div&gt;&lt;div&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGBIU1rfkSI/AAAAAAAAAA0/hRdiiRZcmT0/s320/Picture+12.png" alt="" id="BLOGGER_PHOTO_ID_5215247891339120930" border="0" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After doing some research I found out that these cells are called "18650 Lithium-ion cells".  A few more searches and I found a company selling them:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.dealextreme.com/details.dx/sku.1213"&gt;http://www.dealextreme.com/details.dx/sku.1213&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Make sure you order the non-protected ones as the protected ones have a built in circuit that cuts off power when you go below a certain voltage,  this circuit is already part of the battery pack and would probably cause problems if you have two of them.&lt;br /&gt;&lt;br /&gt;After waiting around 2 weeks, this arrived in the post:&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/SGBVmpp7jmI/AAAAAAAAABU/ldbpSHXZ3lU/s1600-h/Picture+13.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_K5ghJYMcH8w/SGBVmpp7jmI/AAAAAAAAABU/ldbpSHXZ3lU/s320/Picture+13.png" alt="" id="BLOGGER_PHOTO_ID_5215262491000147554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The package arrived opened so customs must have x-rayed it and checked it just to make sure.  (It might look like dynamite in the x-ray, who knows, better safe than sorry).&lt;br /&gt;Now, slowly pry out the old batteries, there are some double-sided tape holding them to the battery pack case:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGBXVh7STbI/AAAAAAAAABc/jWzW94FfrAs/s1600-h/Picture+15.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGBXVh7STbI/AAAAAAAAABc/jWzW94FfrAs/s320/Picture+15.png" alt="" id="BLOGGER_PHOTO_ID_5215264395890937266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/SGBXV8m6mDI/AAAAAAAAABk/g68FktYR0ZA/s1600-h/Picture+16.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_K5ghJYMcH8w/SGBXV8m6mDI/AAAAAAAAABk/g68FktYR0ZA/s320/Picture+16.png" alt="" id="BLOGGER_PHOTO_ID_5215264403053254706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Test fitting it just to make sure it does (fit):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGBXV5WjDJI/AAAAAAAAABs/QQhB4l8jUio/s1600-h/Picture+14.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGBXV5WjDJI/AAAAAAAAABs/QQhB4l8jUio/s320/Picture+14.png" alt="" id="BLOGGER_PHOTO_ID_5215264402179296402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After taking more pictures and noting down the polarity of the original batteries:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/SGBausAfHmI/AAAAAAAAACE/Fb_E-5JHneI/s1600-h/Picture+17.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_K5ghJYMcH8w/SGBausAfHmI/AAAAAAAAACE/Fb_E-5JHneI/s320/Picture+17.png" alt="" id="BLOGGER_PHOTO_ID_5215268126628716130" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGBcTyATf_I/AAAAAAAAACU/dDvd9az8KMI/s1600-h/Picture+18.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGBcTyATf_I/AAAAAAAAACU/dDvd9az8KMI/s320/Picture+18.png" alt="" id="BLOGGER_PHOTO_ID_5215269863405354994" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/SGBausAfHmI/AAAAAAAAACE/Fb_E-5JHneI/s1600-h/Picture+17.png"&gt; &lt;/a&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/SGBeBm0D8mI/AAAAAAAAACc/-kkOCctTxQE/s1600-h/Picture+19.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_K5ghJYMcH8w/SGBeBm0D8mI/AAAAAAAAACc/-kkOCctTxQE/s320/Picture+19.png" alt="" id="BLOGGER_PHOTO_ID_5215271750186824290" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGBerWFTPNI/AAAAAAAAACk/bxI_gjr8UBM/s1600-h/Picture+20.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGBerWFTPNI/AAAAAAAAACk/bxI_gjr8UBM/s320/Picture+20.png" alt="" id="BLOGGER_PHOTO_ID_5215272467250232530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGBet70FPcI/AAAAAAAAACs/pdNBc8sUp_o/s1600-h/Picture+21.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGBet70FPcI/AAAAAAAAACs/pdNBc8sUp_o/s320/Picture+21.png" alt="" id="BLOGGER_PHOTO_ID_5215272511738297794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's time to take the whole thing apart.  Use a screwdriver and/or pliers to remove all the connectors.  Try your best to keep them all intact:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGBfYjFSjaI/AAAAAAAAAC0/mpehlUxhbCQ/s1600-h/Picture+22.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGBfYjFSjaI/AAAAAAAAAC0/mpehlUxhbCQ/s320/Picture+22.png" alt="" id="BLOGGER_PHOTO_ID_5215273243833961890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Next would be to transfer all the tapes and insulators to the new batteries (keep them the same way you took them off).  The next part involves attaching the connectors back on the batteries, ideally you would use a device for welding the tabs to the cells, but I don't have one of those.  Instead I am going to solder them to the battery.  I have read a lot of warnings that extreme heat (like that from a soldering iron) can destroy a lithium-ion battery and even cause explosions.  What  I did was wrap the cells in a moist cloth and not apply more heat than necessary.  I also sanded down the contacts and applied soldering paste before soldering.  I REPEAT: &lt;span style="font-weight: bold;"&gt;If you  apply too much heat for too long, you could destroy the cells and/or  cause an explosion.&lt;/span&gt;  Ok, with the unpleasant stuff out of the way, we connect the cells the same way we took the connectors off the original cells:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/SGBjpUSGaXI/AAAAAAAAAC8/U4HGgxbZIQI/s1600-h/Picture+23.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_K5ghJYMcH8w/SGBjpUSGaXI/AAAAAAAAAC8/U4HGgxbZIQI/s320/Picture+23.png" alt="" id="BLOGGER_PHOTO_ID_5215277929965447538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/SGBjpXxGDII/AAAAAAAAADE/wKtXgkWYth4/s1600-h/Picture+24.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_K5ghJYMcH8w/SGBjpXxGDII/AAAAAAAAADE/wKtXgkWYth4/s320/Picture+24.png" alt="" id="BLOGGER_PHOTO_ID_5215277930900753538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K5ghJYMcH8w/SGBjpx1cb5I/AAAAAAAAADM/DsH99HBtO5o/s1600-h/Picture+25.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_K5ghJYMcH8w/SGBjpx1cb5I/AAAAAAAAADM/DsH99HBtO5o/s320/Picture+25.png" alt="" id="BLOGGER_PHOTO_ID_5215277937898319762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGBjp1XLiDI/AAAAAAAAADU/buvS7IVrfs4/s1600-h/Picture+26.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_K5ghJYMcH8w/SGBjp1XLiDI/AAAAAAAAADU/buvS7IVrfs4/s320/Picture+26.png" alt="" id="BLOGGER_PHOTO_ID_5215277938845124658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then put them back in the battery pack case.  Note that because the solder was a tad thicker than what was originally there, you might have to force them in.  There should be enough space there to still fit the new cells in.  Note that you have to return all the insulators/cardboard pieces back where they came from.  In the last photo above, this will cause a short (and a possible explosion) if you do not.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K5ghJYMcH8w/SGBlcz8y1tI/AAAAAAAAADc/c7THNOGmVuY/s1600-h/Picture+27.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_K5ghJYMcH8w/SGBlcz8y1tI/AAAAAAAAADc/c7THNOGmVuY/s320/Picture+27.png" alt="" id="BLOGGER_PHOTO_ID_5215279914150975186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Then, to glue the case back together, I applied a small amount of epoxy all around the are and pressed it down with a phone book.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGBldZ-T3pI/AAAAAAAAADk/2CMQsoZ4tac/s1600-h/Picture+28.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGBldZ-T3pI/AAAAAAAAADk/2CMQsoZ4tac/s320/Picture+28.png" alt="" id="BLOGGER_PHOTO_ID_5215279924357881490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGBldmJS7AI/AAAAAAAAADs/EdubK_nSHjE/s1600-h/Picture+29.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K5ghJYMcH8w/SGBldmJS7AI/AAAAAAAAADs/EdubK_nSHjE/s320/Picture+29.png" alt="" id="BLOGGER_PHOTO_ID_5215279927625182210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That's it.  After plugging the battery in, it's working again.  I also did a battery recalibration so that ACPI would show the correct charge level.  This varies with different laptops and have their own recalibration procedures, but generally, you turn off all energy saving settings and fully charge the battery and leave it plugged 2 to 3 hours even after it says full.  Then completely discharge it until the laptop turns off.  Note that this will not damage the battery since at 0% reading the cells actually still have some charge left in them but the protection circuit cuts it off before real damage happens.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-8092480389129040413?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/8092480389129040413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=8092480389129040413' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/8092480389129040413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/8092480389129040413'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2008/06/rebuild-laptop-li-ion-battery-pack.html' title='Rebuild a laptop Li-ion battery pack'/><author><name>Jonnyboy</name><uri>http://www.blogger.com/profile/17452611876879851494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp0.blogger.com/_K5ghJYMcH8w/R5hJc9afRtI/AAAAAAAAAAQ/u3FgHNNdTD4/S220/jstick.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_K5ghJYMcH8w/SGBE5cJOaTI/AAAAAAAAAAk/2v342tQBoXQ/s72-c/Picture+10.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-3149296214908858076</id><published>2008-01-10T18:14:00.000-08:00</published><updated>2008-01-22T23:51:03.122-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='5'/><category scheme='http://www.blogger.com/atom/ns#' term='RHEL'/><category scheme='http://www.blogger.com/atom/ns#' term='Centos'/><title type='text'>Django with PostgreSQL on CentOS/RHEL 5</title><content type='html'>This is a quick practical walkthrough on how to setup the current SVN trunk of Django on CentOS / RHEL 5.&lt;br /&gt;&lt;br /&gt;This assumes that if you have a Red Hat Enterprise Linux system, that is is registered to the &lt;a href="http://rhn.redhat.com/"&gt;Red Hat Network&lt;/a&gt; and that you have a valid entitlement.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Install software for this deployment:&lt;/span&gt;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;/strong&gt;&lt;br /&gt;As the title says, This site is aimed at people wishing to deploy Django on RHEL/CentOS 5 with Postgresql, no religious wars please.  All of the packages mentioned in this article except for psychopg2 are available in the distribution itself.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;The nice guys at the &lt;a href="http://fedoraproject.org/wiki/EPEL"&gt;Extra Packages for Enterprise Linux&lt;/a&gt; have packaged up psycopg2. As this is the official repository for Red Hat and its derivatives, packages from this repo should -never- conflict&lt;br /&gt;with packages from the distributions main tree.&lt;br /&gt;&lt;br /&gt;Download and configure yum for this repository with this command:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-weight: normal;font-family:courier new;" &gt;rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-2.noarch.rpm&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;Now use yum to install packages needed with the command:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;yum install subversion &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;postgresql-server postgresql-python httpd &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;python-psycopg2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Configuring PostgreSQL&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;Become the postgres user&lt;br /&gt;&lt;pre class="code"  style="font-family:courier new;"&gt;su - &lt;span class="search_hit"&gt;postgres&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Connect to the  &lt;code&gt;template1&lt;/code&gt; database with &lt;em&gt;&lt;span class="search_hit"&gt;PostgreS&lt;/span&gt;QL user&lt;/em&gt; &lt;strong&gt;&lt;span class="search_hit"&gt;postgres&lt;/span&gt;&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;psql -d template1 -U &lt;span class="search_hit"&gt;postgres&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt; &lt;p&gt; Yes, the default &lt;em&gt;&lt;span class="search_hit"&gt;PostgreS&lt;/span&gt;QL user&lt;/em&gt; is &lt;strong&gt;&lt;span class="search_hit"&gt;postgres&lt;/span&gt;&lt;/strong&gt;, and the linux user &lt;code&gt;&lt;span class="search_hit"&gt;postgres&lt;/span&gt;&lt;/code&gt; is different, these are not related changing one does not change the others.&lt;br /&gt;&lt;br /&gt;From the &lt;acronym title="Structured Query Language"&gt;SQL&lt;/acronym&gt; command line, change the &lt;em&gt;&lt;span class="search_hit"&gt;PostgreS&lt;/span&gt;QL user&lt;/em&gt; &lt;strong&gt;&lt;span class="search_hit"&gt;postgres&lt;/span&gt;&lt;/strong&gt;‘s password:  &lt;/p&gt;  &lt;span style="font-family:courier new;"&gt;ALTER USER &lt;/span&gt;&lt;span class="search_hit"  style="font-family:courier new;"&gt;postgres&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; WITH PASSWORD '&lt;new_pwd&gt;';&lt;/new_pwd&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;  Quit the &lt;acronym title="Structured Query Language"&gt;SQL&lt;/acronym&gt; command line: &lt;/p&gt;  &lt;span style="font-family:courier new;"&gt;\q&lt;/span&gt;  &lt;p&gt; Setting the password – which can differ from the password for the linux user &lt;code&gt;&lt;span class="search_hit"&gt;postgres&lt;/span&gt;&lt;/code&gt; – will allow you to connect to the &lt;span class="search_hit"&gt;PostgreS&lt;/span&gt;QL command line as the &lt;em&gt;&lt;span class="search_hit"&gt;PostgreS&lt;/span&gt;QL user&lt;/em&gt; &lt;strong&gt;&lt;span class="search_hit"&gt;postgres&lt;/span&gt;&lt;/strong&gt; (if necessary) after changing the authentication settings in the next step.&lt;br /&gt;&lt;br /&gt;Modify &lt;span style="font-family:courier new;"&gt;/var/lib/pgsql/data/pg_hba.conf&lt;/span&gt;&lt;code&gt; &lt;/code&gt;to require password authentication for local connections:&lt;/p&gt;&lt;p&gt; Comment or remove any existing lines at the end of the file, then append this:  &lt;/p&gt;&lt;span style="font-family:courier new;"&gt;  local  all         all                                             password&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create a user on the postresql server.   This is going to be the username and password to be entered in the settings.py file:   &lt;pre class="wiki"&gt;&lt;br /&gt;&lt;samp class="PROMPT"&gt;&lt;/samp&gt;&lt;kbd class="USERINPUT"&gt;createuser -P -s -e yourusername&lt;br /&gt;Enter password for new role:&lt;br /&gt;Enter it again:&lt;br /&gt;Password:&lt;br /&gt;CREATE ROLE yourusername PASSWORD 'secretpassword' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;&lt;br /&gt;CREATE ROLE&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/kbd&gt;createdb --encoding=UNICODE yourdatabasename -O yourusername&lt;br /&gt;Password:&lt;br /&gt;CREATE DATABASE&lt;br /&gt;&lt;br /&gt;Then restart the postgresql server with the command&lt;br /&gt;&lt;/pre&gt;&lt;pre class="wiki"&gt;service postgresql start&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;Install and configure Django:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;The current trunk for Django has many changes (check out &lt;span style="font-size:100%;"&gt; &lt;a href="http://insin.webfactional.com/weblog/2007/jul/28/notable-changes-djangos-svn-trunk-096/"&gt;Jonathan Buchanan&lt;/a&gt;&lt;/span&gt;&lt;a href="http://insin.webfactional.com/weblog/2007/jul/28/notable-changes-djangos-svn-trunk-096/"&gt;'s post&lt;/a&gt; on the topic), most of which are very useful features or fixes for uncommon use.&lt;br /&gt;&lt;br /&gt;Make a directory where you would like to keep the current svn (I usually make a django user specifically for this purpose), change to this directory, then check out the current trunk with the command:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;tt&gt;svn co http://code.djangoproject.com/svn/django/trunk django_trunk&lt;/tt&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;We now symlink this newly made directory&lt;br /&gt;&lt;pre style="font-family: courier new;" class="literal-block"&gt;ln -s `pwd`/django_trunk/django  /usr/lib/python2.4/site-packages/django&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;Making django-admin usable:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The django-admin.py command is used quite commonly during Django development and testing.  You could refer to it by its complete path,  but its easier just to add this directory into your current $PATH environment variable.&lt;br /&gt;&lt;br /&gt;In bash, i'd modify $HOME/.bashrc and add the line:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family:courier new;"&gt;PATH=$PATH:/path/to//django_trunk/django/bin/&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;Log out and in for the changes to take affect, to test try and run the command "django-admin.py" without a full path.  You should see something like:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[root@hostname ~]# django-admin.py &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Type 'django-admin.py help' for usage.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;pre class="wiki"&gt;&lt;br /&gt;&lt;/pre&gt;  &lt;span style="font-weight: bold;"&gt;Where to store your files&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;Make the following directories&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;mkdir -p /var/vhosts/virtual.subverted.net/htdocs/media/&lt;br /&gt;mkdir -p /var/vhosts/virtual.subverted.net/django/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-family:courier new;"&gt;/var/vhosts/virtual.subverted.net/django/ &lt;/span&gt;directory is where the django code will live and the media directory is where static files such as images, css and javascript will hang out.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Starting a project&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;Change into the django directory:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;cd /var/vhosts/virtual.subverted.net/django/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;run the command&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;django-admin.py startproject yourprojectname&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It should return nothing if done correctly, but a skeleton layout of a project should appear in the current directory.&lt;br /&gt;&lt;br /&gt;If you installed with SElinux enabled, you will want to set the context on these files correctly, do so with the command:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;chcon -R --reference /var/www/html/ /var/vhosts/virtual.subverted.net/ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Configuring Apache&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;There are many political arguments surrounding the best web server to use, I don't care enough to get in to the arguments. There /etc/httpd/conf.d/hostname.conf file, following along with our virtual.subverted.net host, here is my configuration file:&lt;br /&gt;&lt;br /&gt;&lt;virtualhost 80=""&gt;&lt;br /&gt;ServerAdmin webmaster@virtual.subverted.net&lt;br /&gt;DocumentRoot /var/vhosts/virtual.subverted.net/htdocs/&lt;br /&gt;ServerName virtual.subverted.net&lt;br /&gt;ErrorLog logs/virtual.subverted.net-error_log&lt;br /&gt;CustomLog logs/virtual.subverted.net-access_log common&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    PythonPath "['/var/vhosts/virtual.subverted.net/django/'] + ['/var/vhosts/virtual.subverted.net/django/yourprojectname/'] + sys.path"&lt;br /&gt;&lt;br /&gt;    &lt;location&gt;&lt;br /&gt;            SetHandler python-program&lt;br /&gt;            PythonHandler django.core.handlers.modpython&lt;br /&gt;            SetEnv DJANGO_SETTINGS_MODULE yourprojectname.settings&lt;br /&gt;            PythonDebug On&lt;br /&gt;    &lt;/location&gt;&lt;br /&gt;&lt;br /&gt;    &lt;location media=""&gt;&lt;br /&gt;            SetHandler None&lt;br /&gt;    &lt;/location&gt;&lt;br /&gt;&lt;br /&gt;&lt;/virtualhost&gt;&lt;br /&gt;&lt;br /&gt;The name of the file isn't important, but it must end in .conf to be processed by the main apache script.&lt;br /&gt;You will also want to have another single file which instructs apache to use the namedvirtualhost option to make the above named virtual host "work"&lt;br /&gt;&lt;br /&gt;Create a file called /etc/httpd/conf.d/allow-vhost.conf, and have it contain:&lt;br /&gt;&lt;br /&gt;NamedVirtualhost *:80&lt;br /&gt;&lt;br /&gt;Restart the apache server with the command&lt;br /&gt;&lt;br /&gt;service httpd restart&lt;br /&gt;&lt;br /&gt;And you should be greeted with the "It worked!" welcome page (Shown earlier in this article)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_mX9cyp7IT08/R4n9dXIbQhI/AAAAAAAAADE/Aiv-4EmEyuE/s1600-h/Screenshot.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_mX9cyp7IT08/R4n9dXIbQhI/AAAAAAAAADE/Aiv-4EmEyuE/s320/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5154929929369633298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This essentially means the apache is serving up the page correctly, the next step is to configure your settings.py to point to your database.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The settings.py file should have been autocreated when the django-admin startproject yourprojectname command was run.&lt;br /&gt;&lt;br /&gt;It should be in the /var/vhosts/virtual/django/yourprojectname directory.  Here is an excerpt from the configured settings.py on my system:&lt;br /&gt;&lt;br /&gt;DEBUG = True&lt;br /&gt;TEMPLATE_DEBUG = DEBUG&lt;br /&gt;&lt;br /&gt;ADMINS = (&lt;br /&gt;  # ('Your Name', 'your_email@domain.com'),&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;MANAGERS = ADMINS&lt;br /&gt;&lt;br /&gt;DATABASE_ENGINE = 'postgresql_psycopg2'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.&lt;br /&gt;DATABASE_NAME = 'yourdatabasename'             # Or path to database file if using sqlite3.&lt;br /&gt;DATABASE_USER = 'yourusername'             # Not used with sqlite3.&lt;br /&gt;DATABASE_PASSWORD = 'secretpassword'         # Not used with sqlite3.&lt;br /&gt;DATABASE_HOST = ''             # Set to empty string for localhost. Not used with sqlite3.&lt;br /&gt;DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3.&lt;br /&gt;&lt;br /&gt;--- snip --&lt;br /&gt;&lt;br /&gt;The DATABASE_* settings are the lines that were modified to point to the database and username password that you should have created above.&lt;br /&gt;&lt;br /&gt;Thats all we have time for now kids... Join us again next time. Bye for now.&lt;br /&gt;&lt;br /&gt;If you have any corrections, let me know in the comments and I'll fix things above.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-3149296214908858076?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/3149296214908858076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=3149296214908858076' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/3149296214908858076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/3149296214908858076'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2008/01/django-with-postgresql-on-centosrhel-5.html' title='Django with PostgreSQL on CentOS/RHEL 5'/><author><name>WadeMealing</name><uri>http://www.blogger.com/profile/16018870296209441900</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_mX9cyp7IT08/R4n9dXIbQhI/AAAAAAAAADE/Aiv-4EmEyuE/s72-c/Screenshot.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-1499959661568267110</id><published>2008-01-06T15:32:00.000-08:00</published><updated>2008-01-06T17:50:03.491-08:00</updated><title type='text'>Canadians too damn mathematically challenged to operate an iPhone....according to VMWare.</title><content type='html'>** Update **&lt;br /&gt;&lt;br /&gt;It turns out this is a common requirement in Canada for competitions based on chance.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.wired.com/science/discoveries/news/2007/01/72511"&gt;http://www.wired.com/science/discoveries/news/2007/01/72511&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;VMWare recently announced a competition for registered users who update their profiles. The prize is an Apple iPhone, while not a particularly tempting piece of technology in my opinion it would be good to flog on eBay for some quick beer money.&lt;br /&gt;&lt;br /&gt;Being an anal retentive bastard I decided to read the fine print, if only to ensure that being an Australian I would actually be able to claim the damn prize.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-STYLE: italic;font-family:times new roman;" &gt;(4) SELECTION OF WINNER: The winner will be determined by random drawing of all eligible entries received that month. Odds of winning a prize are based on the number of entries received each month. Winner will be notified by telephone or e-mail within ten (10) business days of the drawing, at which time a full shipping address and phone number will be required for fulfillment of award. Winner will have ten (10) days from notification to accept the prize by mail. &lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,0,0)"&gt;Canadian residents, if selected as a winner, must correctly answer a mathematical skill-testing question in order to receive a prize.&lt;/span&gt; VMware is not responsible for late, lost, misdirected, or unsuccessful efforts to notify the winner. All taxes on prizes, including income taxes, and any incidental expenses associated with collection of a prize are the responsibility of the winner. Winners assume all liability for any damages caused or claimed to be caused by participation or by any prize and release VMware from any such liability. Winner may be required to sign and return a release of liability, declaration or affidavit of eligibility, and where lawful, a publicity consent agreement all within fifteen (15) days of receipt by winner as a condition of&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-STYLE: italic;font-family:times new roman;" &gt;receiving the prize. If the selected winner cannot be contacted, is ineligible, fails to claim a prize, or fails to return the completed and executed declaration and releases in a timely manner as required, prizes may be forfeited and an alternative winner selected.&lt;span style="FONT-STYLE: italic"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;a href="http://now.eloqua.com/e/es.aspx?s=524&amp;amp;e=981BDFFEB63A4D7997053FD2A1A6DD46&amp;amp;elq=recipientid"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;http://now.eloqua.com/e/es.aspx?s=524&amp;amp;e=981BDFFEB63A4D7997053FD2A1A6DD46&amp;amp;elq=recipientid&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://campaign.vmware.com/docs/Legal_Copy_1939.pdf"&gt;http://campaign.vmware.com/docs/Legal_Copy_1939.pdf&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-1499959661568267110?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/1499959661568267110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=1499959661568267110' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/1499959661568267110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/1499959661568267110'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2008/01/canadians-too-damn-mathematically.html' title='Canadians too damn mathematically challenged to operate an iPhone....according to VMWare.'/><author><name>Colin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_Pi1scj_le80/SeLQLx-ZSDI/AAAAAAAAAOA/XigqJCX5GHE/S220/monkay.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6890593738526520772.post-793895172836841173</id><published>2007-11-21T18:13:00.000-08:00</published><updated>2007-11-21T18:16:04.106-08:00</updated><title type='text'>mrepo on CentOS 5</title><content type='html'>Documentation for RHEL 5 systems was already available, however CentOS 5 was a little more trixy due to deprecated file content in /etc/sysconfig/rhn&lt;br /&gt;&lt;br /&gt;I've added a note on that Wiki site related to CentOS 5 so follow the instructions there.&lt;br /&gt;&lt;br /&gt;http://www.labmonkeys.org/systems_management:patch_management:installing_mrepo_on_rhel5&lt;br /&gt;&lt;br /&gt;On the upside I now know how to use pdb, which is darn nifty.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890593738526520772-793895172836841173?l=damntechnology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damntechnology.blogspot.com/feeds/793895172836841173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6890593738526520772&amp;postID=793895172836841173' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/793895172836841173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6890593738526520772/posts/default/793895172836841173'/><link rel='alternate' type='text/html' href='http://damntechnology.blogspot.com/2007/11/mrepo-on-centos-5.html' title='mrepo on CentOS 5'/><author><name>Colin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_Pi1scj_le80/SeLQLx-ZSDI/AAAAAAAAAOA/XigqJCX5GHE/S220/monkay.png'/></author><thr:total>0</thr:total></entry></feed>
