{"id":11,"date":"2010-08-23T22:33:33","date_gmt":"2010-08-24T02:33:33","guid":{"rendered":"http:\/\/hackspot.net\/iSpotBlog\/?p=11"},"modified":"2010-08-24T01:45:17","modified_gmt":"2010-08-24T05:45:17","slug":"adding-a-serial-console-port-to-the-ispot-with-ispot-teardown","status":"publish","type":"post","link":"http:\/\/hackspot.net\/iSpotBlog\/?p=11","title":{"rendered":"Adding a serial console port to the iSpot (with iSpot teardown)"},"content":{"rendered":"<p>This is my first blog entry.\u00a0 I&#8217;m not much of a writer, but will hopefully describe things well enough for people to understand.<\/p>\n<p><em>Thanks to my friend Al for the hardware help.<\/em><\/p>\n<p>I wanted to add a serial port to my iSpot, so I&#8217;d have access to the RedBoot serial console (runs before the kernel loads).\u00a0 This will hopefully make it safer for experimentation &#8211; I should be able to recover from &#8216;bricking&#8217; by using the serial console\/RedBoot commands.<\/p>\n<p>What follows are step-by-step instructions for adding a serial port to your iSpot.\u00a0<span style=\"text-decoration: underline;\"> <em>I am assuming that you have basic hardware knowledge, and are very comfortable with disassembling hardware (and feel confident that you can reassemble it!)<\/em><\/span><\/p>\n<p><strong><em>WARNING: You could very easily DESTROY your iSpot if you make a mistake!\u00a0 Also, modifying your iSpot in any way will likely VOID your warranty!\u00a0 Proceed with caution!<\/em><\/strong><\/p>\n<p>Here&#8217;s the iSpot with battery cover removed.<\/p>\n<p><a rel=\"attachment wp-att-17\" href=\"http:\/\/hackspot.net\/iSpotBlog\/?attachment_id=17\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-17\" title=\"iSpot with battery cover removed\" src=\"http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_10541-300x224.jpg\" alt=\"\" width=\"300\" height=\"224\" srcset=\"http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_10541-300x224.jpg 300w, http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_10541-1024x764.jpg 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Remove the 3 indicated screws, then use fingernail\/other thin tool to separate the front\/back plastic (they snap together).<\/p>\n<p>Here&#8217;s the iSpot with the plastic cover removed (showing &#8220;component side&#8221; of board &#8211; the side opposite the battery compartment):<\/p>\n<p><a rel=\"attachment wp-att-18\" href=\"http:\/\/hackspot.net\/iSpotBlog\/?attachment_id=18\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-18\" src=\"http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1056-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1056-300x225.jpg 300w, http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1056-1024x768.jpg 1024w, http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1056.jpg 1761w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Pop the PC board out of the plastic (be careful in the area of the power switch).\u00a0 Make a note of the orientation of the board (use mini-usb port as a reference for when you reassemble it).<\/p>\n<p>Here is the PC board removed, showing the battery compartment side:<\/p>\n<p><a rel=\"attachment wp-att-19\" href=\"http:\/\/hackspot.net\/iSpotBlog\/?attachment_id=19\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-19\" title=\"Main iSpot PCB (battery compartment side)\" src=\"http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1058-300x224.jpg\" alt=\"\" width=\"300\" height=\"224\" srcset=\"http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1058-300x224.jpg 300w, http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1058-1024x764.jpg 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Notice the 12-pin header along the top &#8211; we&#8217;ll be attaching the serial port to some of these pins.\u00a0 Sadly, the serial port signals from the CPU don&#8217;t connect directly to the pins on this header &#8211; they go through some &#8216;zero ohm&#8217; resistors, which are NOT populated by default.\u00a0 So, to enable the serial port, you need to install those resistors (or just short the connections with small wires or solder-blobs).<\/p>\n<p>The serial port resistors are located <em>underneath<\/em> the WiFi daughtercard.\u00a0 So, this must be removed.\u00a0 Flip the board back over, and <em>carefully<\/em> disconnect the white antenna cable near the top of the board (sorry, I don&#8217;t have a photo).\u00a0 Then, <em>carefully<\/em> remove the plastic cover that holds-down the WiFi daughtercard.\u00a0 Do this by pushing the plastic snaps through from the back side, one at a time.\u00a0 NOTE that the interconnect between the main board and daugtercard is along the bottom of the daughtercard (when viewing with antenna cable along the top).\u00a0 It came apart pretty easily for us.<\/p>\n<p>Here&#8217;s a photo of the main board (component side) with daughtercard removed (daughtercard has been &#8216;flipped up&#8217; in this photo &#8211; notice the antenna wire sticking out at the &#8216;bottom&#8217; of the daughtercard &#8211; it&#8217;s along the top when the board is flipped back over\/oriented correctly):<\/p>\n<p><a rel=\"attachment wp-att-24\" href=\"http:\/\/hackspot.net\/iSpotBlog\/?attachment_id=24\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-24\" src=\"http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1061-300x224.jpg\" alt=\"\" width=\"300\" height=\"224\" srcset=\"http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1061-300x224.jpg 300w, http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1061-1024x764.jpg 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>(ignore the wires coming out the left-side of the main board in the above photo &#8211; we temporarily soldered some on to the battery contacts so we could connect to a bench power supply)<\/p>\n<p>The resistors we need to populate are underneath the small rectangular grey piece of foam (with a notch in it)\u00a0along the top of the main board (was separating the main board and daughtercard).\u00a0 NOTE: it is taped-down with double-sided tape.\u00a0 When we removed it, the double-sided tape was left behind.\u00a0 We needed to remove the tape in order to get access to the resistors, and destroyed the tape in the process.\u00a0 You may want to be more careful &#8211; although it wasn&#8217;t a problem to put back together (WiFi daughtercard causes enough of a compression fit to hold the foam in place).<\/p>\n<p>Here&#8217;s a photo with that foam removed, and a circle around the pads for the two resistors which need to be installed:<\/p>\n<p><a rel=\"attachment wp-att-25\" href=\"http:\/\/hackspot.net\/iSpotBlog\/?attachment_id=25\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-25\" src=\"http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1067-300x224.jpg\" alt=\"\" width=\"300\" height=\"224\" srcset=\"http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1067-300x224.jpg 300w, http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1067-1024x764.jpg 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>The two resistor sites are outlined by white silkscreen.\u00a0 In this photo, they are oriented vertically &#8211; one resistor is on the left, one on the right.\u00a0 You need to install resistors (or short wires\/solder blobs) vertically &#8211; connecting the left-top pad with the left-bottom pad, and (separately) connecting the right-top pad with the right-bottom pad.<\/p>\n<p>Once that is done, reverse your steps to reconnect the WiFi daughtercard.\u00a0 Be careful about the alignment of the interconnect between the two boards.\u00a0 Also, don&#8217;t forget to re-connect the white antenna cable.<\/p>\n<p>Now, flip the main board over again (showing battery-compartment side, with 12-pin header along the top).\u00a0 Notice that the left-side pin is square, where the rest are round.\u00a0 The square pin is pin #1.<\/p>\n<p>We need to solder wires to the UART &#8220;TX&#8221; (output from CPU to PC) and &#8220;RX&#8221; (input from PC to CPU) lines.\u00a0 <em>NOTE that these are 3.3V signals<\/em> &#8211; you will probably need a level-shifter in order to connect to a PC serial port.\u00a0 <em>Do NOT connect a standard PC serial port with +\/- 12V signals directly to these points!<\/em><\/p>\n<p>The level-shifter we use at work requires a 3.3V power supply (in addition to the TX\/RX lines), so we decided to tap-into 3.3V and GND signals (also found on the 12-pin header).\u00a0 Here&#8217;s the pin numbers for each of the signals:<\/p>\n<ul>\n<li>Pin 3 &#8211; 3.3V<\/li>\n<li>Pin 4 &#8211; GND<\/li>\n<li>Pin 11 &#8211; UART TX (output of iSpot CPU&#8217;s serial port &#8211;\u00a0to PC)<\/li>\n<li>Pin 12 &#8211; UART RX (input to iSpot CPU&#8217;s serial port &#8211; from PC)<\/li>\n<\/ul>\n<p>Here&#8217;s a photo with the wires attached (sorry they are blurry, and we didn&#8217;t use &#8216;correct&#8217; colors for power\/GND):<\/p>\n<p><a rel=\"attachment wp-att-30\" href=\"http:\/\/hackspot.net\/iSpotBlog\/?attachment_id=30\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-30\" src=\"http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1069-300x224.jpg\" alt=\"\" width=\"300\" height=\"224\" srcset=\"http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1069-300x224.jpg 300w, http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1069-1024x764.jpg 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>We cut some small notches into the plastic case (where the top\/bottom plastic parts snap together) to make room for the wires to come out.\u00a0 Then we put all the pieces back together.\u00a0 Here is the result:<\/p>\n<p><a rel=\"attachment wp-att-31\" href=\"http:\/\/hackspot.net\/iSpotBlog\/?attachment_id=31\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-31\" title=\"iSpot reassembled, with serial port adapter header hanging out\" src=\"http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1070-300x224.jpg\" alt=\"\" width=\"300\" height=\"224\" srcset=\"http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1070-300x224.jpg 300w, http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1070-1024x764.jpg 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>And here it is connected to our serial level converter (converts 3.3V TTL levels to PC-compatible RS-232 levels):<\/p>\n<p><a rel=\"attachment wp-att-32\" href=\"http:\/\/hackspot.net\/iSpotBlog\/?attachment_id=32\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-32\" title=\"iSpot connected to RS-232 level shifter\" src=\"http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1072-300x224.jpg\" alt=\"\" width=\"300\" height=\"224\" srcset=\"http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1072-300x224.jpg 300w, http:\/\/hackspot.net\/iSpotBlog\/wp-content\/uploads\/2010\/08\/IMG_1072-1024x764.jpg 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Finally, here&#8217;s the serial console output when RedBoot starts up (<strong>UART config: 115200\/8\/n\/1<\/strong>) (I hit Control-C to interrupt):<\/p>\n<blockquote><p>+INTEL FLASH:89:1b<\/p>\n<p>RedBoot(tm) bootstrap and debug environment [REDBOOT]<\/p>\n<p>Non-certified release, version UNKNOWN &#8211; built 11:10:44, Apr 16 2010<\/p>\n<p>Platform: GCT GSK7205 (GDM7205)\u00a0<\/p>\n<p>Copyright (C) 2000, 2001, 2002, Red Hat, Inc.<\/p>\n<p>***********************************************************<\/p>\n<p>*\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 I N F O M A R K\u00a0\u00a0 W i M A X\u00a0\u00a0\u00a0 R o u t e r\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<\/p>\n<p>*\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 SDRAM: 64MByte, SDRAM Clock Delay: 0x0809\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<\/p>\n<p>*\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 FLASH: 16MByte, S(0xc0000000) &#8211; E(0xc0ffffff)\u00a0\u00a0\u00a0\u00a0 *<\/p>\n<p>***********************************************************<\/p>\n<p>RAM: 0xd4000000-0xd8000000, [0xd4008000-0xd7f51000] available<\/p>\n<p>FLASH: 0xc0000000 &#8211; 0xc0ffffff 4 x 0x8000 blocks 127 x 0x20000 blocks<\/p>\n<p>Redboot-Turn On WiFi and Make Power Hold High<\/p>\n<p>== Executing boot script in 1.000 seconds &#8211; enter ^C to abort<\/p>\n<p>^C<\/p>\n<p>RedBoot&gt; ^C<\/p>\n<p>RedBoot&gt; ^C<\/p>\n<p>RedBoot&gt; ^C<\/p>\n<p>RedBoot&gt; help<\/p>\n<p>Manage aliases kept in FLASH memory<\/p>\n<p>\u00a0\u00a0 alias name [value]<\/p>\n<p>Set\/Query the system console baud rate<\/p>\n<p>\u00a0\u00a0 baudrate [-b &lt;rate&gt;]<\/p>\n<p>Manage machine caches<\/p>\n<p>\u00a0\u00a0 cache [ON | OFF]<\/p>\n<p>Display\/switch console channel<\/p>\n<p>\u00a0\u00a0 channel [-1|&lt;channel number&gt;]<\/p>\n<p>Compute a 32bit checksum [POSIX algorithm] for a range of memory<\/p>\n<p>\u00a0\u00a0 cksum -b &lt;location&gt; -l &lt;length&gt;<\/p>\n<p>Check all availave Dram area<\/p>\n<p>\u00a0\u00a0 dramchk<\/p>\n<p>Display (hex dump) a range of memory<\/p>\n<p>\u00a0\u00a0 dump -b &lt;location&gt; [-l &lt;length&gt;] [-s] [-1|2|4]<\/p>\n<p>Execute an image &#8211; with MMU off<\/p>\n<p>\u00a0\u00a0 exec [-w timeout] [-b &lt;load addr&gt; [-l &lt;length&gt;]]<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 [-r &lt;ramdisk addr&gt; [-s &lt;ramdisk length&gt;]]<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 [-c &#8220;kernel command line&#8221;] [&lt;entry_point&gt;]<\/p>\n<p>Manage FLASH images<\/p>\n<p>\u00a0\u00a0 fis {cmds}<\/p>\n<p>Manage configuration kept in FLASH memory<\/p>\n<p>\u00a0\u00a0 fconfig [-i] [-l] [-n] [-f] [-d] | [-d] nickname [value]<\/p>\n<p>Execute code at a location<\/p>\n<p>\u00a0\u00a0 go [-w &lt;timeout&gt;] [-c] [entry]<\/p>\n<p>Help about help?<\/p>\n<p>\u00a0\u00a0 help [&lt;topic&gt;]<\/p>\n<p>Display command history<\/p>\n<p>\u00a0\u00a0 history<\/p>\n<p>Load a file<\/p>\n<p>\u00a0\u00a0 load [-r] [-v] [-d] [-m &lt;varies&gt;]<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 [-b &lt;base_address&gt;] &lt;file_name&gt;<\/p>\n<p>Compare two blocks of memory<\/p>\n<p>\u00a0\u00a0 mcmp -s &lt;location&gt; -d &lt;location&gt; -l &lt;length&gt; [-1|-2|-4]<\/p>\n<p>Copy memory from one address to another<\/p>\n<p>\u00a0\u00a0 mcopy -s &lt;location&gt; -d &lt;location&gt; -l &lt;length&gt; [-1|-2|-4]<\/p>\n<p>Fill a block of memory with a pattern<\/p>\n<p>\u00a0\u00a0 mfill -b &lt;location&gt; -l &lt;length&gt; -p &lt;pattern&gt; [-1|-2|-4]<\/p>\n<p>Reset the system<\/p>\n<p>\u00a0\u00a0 reset<\/p>\n<p>Display RedBoot version information<\/p>\n<p>\u00a0\u00a0 version<\/p>\n<p>Display (hex dump) a range of memory<\/p>\n<p>\u00a0\u00a0 x -b &lt;location&gt; [-l &lt;length&gt;] [-s] [-1|2|4]<\/p>\n<p>RedBoot&gt;<\/p><\/blockquote>\n<p>That&#8217;s about it &#8211; good luck!<\/p>\n<p><em>Disclaimer: information on this site is for educational purposes only, and intended to help iSpot owners experiment with their own devices. I do not condone any hacking for illegal purposes, such as stealing service, etc.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is my first blog entry.\u00a0 I&#8217;m not much of a writer, but will hopefully describe things well enough for people to understand. Thanks to my friend Al for the hardware help. I wanted to add a serial port to &hellip; <a href=\"http:\/\/hackspot.net\/iSpotBlog\/?p=11\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-11","post","type-post","status-publish","format-standard","hentry","category-hardware"],"_links":{"self":[{"href":"http:\/\/hackspot.net\/iSpotBlog\/index.php?rest_route=\/wp\/v2\/posts\/11","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/hackspot.net\/iSpotBlog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/hackspot.net\/iSpotBlog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/hackspot.net\/iSpotBlog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/hackspot.net\/iSpotBlog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11"}],"version-history":[{"count":57,"href":"http:\/\/hackspot.net\/iSpotBlog\/index.php?rest_route=\/wp\/v2\/posts\/11\/revisions"}],"predecessor-version":[{"id":81,"href":"http:\/\/hackspot.net\/iSpotBlog\/index.php?rest_route=\/wp\/v2\/posts\/11\/revisions\/81"}],"wp:attachment":[{"href":"http:\/\/hackspot.net\/iSpotBlog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/hackspot.net\/iSpotBlog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/hackspot.net\/iSpotBlog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}