<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Computer Solutions Blog &#187; Technical Mumbo Jumbo</title>
	<atom:link href="http://www.computersolutions.cn/blog/category/technical-mumbo-jumbo/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.computersolutions.cn/blog</link>
	<description>Whats happening at Computer Solutions</description>
	<lastBuildDate>Sat, 24 Jul 2010 11:29:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>T60 screen upgrade (they just don&#8217;t make things like they used to&#8230;)</title>
		<link>http://www.computersolutions.cn/blog/2010/05/t60-screen-upgrade-they-just-dont-make-things-like-they-used-to/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=t60-screen-upgrade-they-just-dont-make-things-like-they-used-to</link>
		<comments>http://www.computersolutions.cn/blog/2010/05/t60-screen-upgrade-they-just-dont-make-things-like-they-used-to/#comments</comments>
		<pubDate>Tue, 18 May 2010 12:59:30 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[Technical Mumbo Jumbo]]></category>
		<category><![CDATA[15" LCD]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[QXGA]]></category>
		<category><![CDATA[Replace]]></category>
		<category><![CDATA[T60]]></category>
		<category><![CDATA[T61]]></category>
		<category><![CDATA[Thinkpad]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=521</guid>
		<description><![CDATA[As someone I know was interested in getting a new (old) laptop, I did some trawling of the intertubes, and saw that there were quite a few IBM Thinkpad&#8217;s in nice condition available on Taobao. After checking away the requirements (one of which was not to go down in resolution to the crap they sell [...]]]></description>
			<content:encoded><![CDATA[<p>As someone I know was interested in getting a new (old) laptop, I did some trawling of the intertubes, and saw that there were quite a few IBM Thinkpad&#8217;s in nice condition available on Taobao.</p>
<p>After checking away the requirements (one of which was not to go down in resolution to the crap they sell nowadays), I decided on a T6x series.</p>
<p>A T60 with a 1400&#215;1050 screen was about RMB2500 on Taobao with fairly decent spec&#8217;s &#8211; DVD Writer, Bluetooth, Fingerprint Reader, SATA, Extended Battery.  3 month warranty, with a replacement 7 day swap for another unit.  I sent my staff to go take a look at the shop, they liked, and I was soon the owner of an ex-corporate laptop that looked like it came from Singapore originally (according to the model / software licence sticker on the laptop).  It even came with a legitimate licenced copy of Windows.</p>
<p>As I had ordered one for test purposes to see what the quality was like, I was pleasantly suprised.  The one I received is pretty much in mint condition.  In fact its in such good condition, that I decided I would keep it for myself!</p>
<p><span id="more-521"></span><br />
I&#8217;m justifying it as I need a PC for development work.  Although my collection of Mac&#8217;s are nice, sometimes you still need something with &#8216;old skool&#8217; outputs &#8211; eg Parallel, Serial* for development work.<br />
*No serial onboard but the docking bay has.  </p>
<p>While I was doing the research into what exactly to get, I noticed a small piece in the Thinkpad Wiki where they mentions briefly that the screens on the 15&quot; models can be replaced with higher resolution ones.</p>
<p>This was also something that was brought up on a recent Slashdot post where people mention the lack of good higher resolution screens.</p>
<p>I checked out the model number that they referenced &#8211; IAQX10N, and my favourite online site had sellers.  As I&#8217;m in China, certain things are cheap, and luckily this happened to be one of them.</p>
<p>I ordered a suitable 15&quot; donor screen from Taobao for the princely sum of 800rmb.<br />
The LCD took a while to get here, mostly as it was shipped from Japan.  We ordered on Friday, and it arrived Tuesday afternoon.  </p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/packaging.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/packaging.jpg" alt="" title="packaging" width="640" height="427" class="aligncenter size-full wp-image-533" /></a></p>
<p>This screen is an original IPS IDTech, which is priced insanely well, considering what they used to charge for these!</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/new-lcd-IAQX10N.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/new-lcd-IAQX10N.jpg" alt="" title="new lcd - IAQX10N" width="640" height="427" class="aligncenter size-full wp-image-534" /></a></p>
<p>Although I performed this upgrade on a T60 series, this upgrade can be done on any of the 15&#8243; IBM (non-widescreen models), from the T43p -> T61p (post T61, they went lo-res widescreen, which sucked).  Older Thinkpad laptops, and laptops with 1024&#215;768 resolution also need a replacement LCD cable (which is roughly 100RMB on Taobao).</p>
<p>Removing the old LCD was easy (as IBM engineering is excellent).  </p>
<p>I recommend you prepare by unplugging the power adaptor, and also removing the battery from the laptop, so that you don&#8217;t accidentally turn it on while disassembling it.  Once you&#8217;ve done that, you can start.</p>
<p>First step was to remove the 3 bottom screws on the front.<br />
Those are hidden behind round stickers, so use a small screwdriver, and gently nudge the stickers off.<br />
Once you have those off, unscrew and place the screws / stickers into something suitable for storage (a clean ashtray is ideal).  </p>
<p>Now do the same to the 3 sticker / screws located at the left side of the screen, and the 3 sticker / screws on the right side of the screen.</p>
<p>Put all the stickers and screws into your container.  As all the screws are the same size, we don&#8217;t need to separate them.</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/screws-and-sticker-covers.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/screws-and-sticker-covers.jpg" alt="" title="screws and sticker covers" width="640" height="427" class="aligncenter size-full wp-image-530" /></a></p>
<p>The front cover will still be clipped in, pick a corner, and gently pull away using fingernails or a credit card inbetween the front / back edge. Keep going up until you have one side unclipped, then continue until the whole front is unclipped.  The bottom part of the screen has some double sided tape affixed at the bottom.  If the front doesn&#8217;t want to come off easily, be patient.  Mine took about a minute to take apart (once the screws were off).  Take your time, and don&#8217;t break anything.</p>
<p>Eventually you should have separated the cover from the front.</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/front-facia-removed.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/front-facia-removed.jpg" alt="" title="front facia removed" width="427" height="640" class="aligncenter size-full wp-image-536" /></a></p>
<p>Here&#8217;s what my screen looked like sans cover.</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/My-thinkpad-goes-topless.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/My-thinkpad-goes-topless.jpg" alt="" title="My thinkpad goes topless" width="427" height="640" class="aligncenter size-full wp-image-535" /></a></p>
<p>Once the cover is off, you should be able to slowly push the existing screen downwards towards the keyboard (make sure that you don&#8217;t drop it, use a hand to support it on its way down).<br />
The IBM keylight is attached at the top of the case (connected to the LCD cable), it should pop out of its seat on its own, but if it doesn&#8217;t, carefully unlatch it while you pull the LCD downward.</p>
<p>You should see something similar to this now:</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/lcd-removed.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/lcd-removed.jpg" alt="" title="lcd removed" width="640" height="427" class="aligncenter size-full wp-image-532" /></a></p>
<p>The LCD should be facedown flat on the keyboard by now, so lets unplug the connectors.<br />
There are 2 connectors &#8211; 1 for power, and 1 for the screen.  Lets start with the screen cable.</p>
<p>Peel the plastic covering the back up slightly, and you&#8217;ll see the cable and connector.  In the photo below I&#8217;ve already unplugged the cable.  Pull gently levering side to side to pull the connector out.  In my case it was fairly easy to do.</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/unplugging-the-old-lcd-closer-view.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/unplugging-the-old-lcd-closer-view.jpg" alt="" title="unplugging the old lcd closer view" width="427" height="640" class="aligncenter size-full wp-image-529" /></a></p>
<p>Here&#8217;s a closer look at the connector:</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/unplugging-the-old-lcd.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/unplugging-the-old-lcd.jpg" alt="" title="unplugging the old lcd" width="640" height="427" class="aligncenter size-full wp-image-528" /></a></p>
<p>The bit hanging off the top of the connector is the ThinkLight. (aka the Keyboard light most people don&#8217;t know about!)</p>
<p>The other connector (the power one), should be fairly straightforward &#8211; pull gently, and unplug.<br />
(No photo&#8217;s, as I forgot!).</p>
<p>The LCD should be removable now.</p>
<p>We&#8217;ll also need the side mounts, so unscrew those from the LCD.</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/install-side-mount.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/install-side-mount.jpg" alt="" title="install side mount" width="427" height="640" class="aligncenter size-full wp-image-524" /></a></p>
<p>Place the old LCD somewhere safe face up.  By this point, I&#8217;d unpacked my other LCD, so I placed it into the same packaging that the new one came in &#8211; an antistatic bag, and a boatload of bubble-wrap.</p>
<p>Start off by putting the new LCD facedown on the keyboard in the same orientation as the old LCD.<br />
Plug in the screen connector, and the power connector.<br />
Although the ThinkWiki said I&#8217;d need to bend a cable, my unit fit perfectly. </p>
<p>We&#8217;re ready to test now.<br />
Carefully place the screen faceup, and plug in the power adaptor.</p>
<p>Hopefully you don&#8217;t see any magic smoke, and your Thinkpad makes the appropriate noises.<br />
In my case, I lucked out, and I didn&#8217;t even need to flash the LCD EDID (as per the Wiki).<br />
I booted into my OS (Linux Mint in this instance), and saw a login screen.  Yay!</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/testing.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/testing.jpg" alt="" title="testing" width="640" height="427" class="aligncenter size-full wp-image-526" /></a></p>
<p>Note that the screen still has its protective shipping cover on, so looks a little dull.</p>
<p>More test shots below:</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/testing-2.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/testing-2.jpg" alt="" title="testing 2" width="427" height="640" class="aligncenter size-full wp-image-523" /></a></p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/testing-3.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/testing-3.jpg" alt="" title="testing 3" width="640" height="427" class="aligncenter size-full wp-image-527" /></a></p>
<p>As you can see, the laptop recognizes the resolution &#8211;  both Gizmodo, and Engadget fit nicely side by side, and the control panel shows our 2048 x 1536 QXGA goodness.</p>
<p>Sadly, we now have to shut everything down again.</p>
<p>Unplug the power again, and place the screen face down again.<br />
Carefully screw in the side mounts to both sides of the LCD.  Remember, be gentle.</p>
<p>Put the LCD face up again, and lift into place in the case.  Don&#8217;t force anything, everything goes in cleanly.  You may need to route some of the cabling again &#8211; in my case I had to use a small screwdriver to push the left cabling back into the original positions.  </p>
<p>Also don&#8217;t do what I did, and forget about the Keyboard light.  In the photo below, you&#8217;ll see that although I have the screen installed nicely, I neglected to put the light in the top.  Doh!</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/almost-installed.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/almost-installed.jpg" alt="" title="almost installed" width="640" height="427" class="aligncenter size-full wp-image-525" /></a></p>
<p>The light should fit into the top reasonably easily.  Its a tight fit for the cable to reach, and would probably be easier with 3 hands helping out, but its doable on your own.  Again, take it slowly, and carefully.  If you get frustrated, take a break, and come back to it.</p>
<p>Once you have the LCD in, start by screwing in 1 screw on each side.  You&#8217;ll need to lift the LCD slightly so that the screw holes line up.  Once the first ones are in, the rest are easy.  Do the sides (left, right) first.</p>
<p>We&#8217;re almost done.</p>
<p>Plug in the power again, and do another test run without the front facia, to make a final check.<br />
All good?</p>
<p>Put the side stickers back on.</p>
<p>The front facia clicks onto the front.  Line up the front facia carefully in its original position, and start pressing down.  It should click nicely back into place.  Go around the edges again, and push / click into place.  Pay careful attention to the side cabling.  If any cabling is in the way, use a small screwdriver to reposition the cable out of the way.  Once the front is clicked into place, screw the remaining 3 bottom screws into place.  Go around again, and make doubly sure that the front facia is clipped in 100%.</p>
<p>Slowly push the laptop lid closed, and make sure it all lines up ok.  </p>
<p>From start to finish, mine took about 10 minutes total, so its relatively quick to do the replacement.<br />
If you&#8217;ve never done something like this before, I&#8217;d estimate about 30 minutes max.  Just remember &#8211;  Be calm, go slowly, and be careful.  </p>
<p>I&#8217;m now the proud owner of a laptop with a screen resolution that dates back to&#8230; 2002.<br />
Yes, thats when they started making these screens.</p>
<p>Sadly, its all gone downhill from there,  I&#8217;d love to be using something along the lines of 4096 x 4096 on my 24&#8243; iMac, rather than having a laptop with <strong>better than HD</strong> resolution in a much smaller package.</p>
<p>Here&#8217;s the finished laptop &#8211; </p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/voila.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/voila.jpg" alt="" title="voila!" width="427" height="640" class="aligncenter size-full wp-image-522" /></a></p>
<p>Everything works perfectly, and the alignment / case fit is 100% perfect, which it should be, as IBM made the panels too!</p>
<p>As a non-vendor approved upgrade, this is probably the easiest upgrade I&#8217;ve done on a laptop too.  Usually doing this stuff is fiddly.</p>
<p>Thankfully IBM Thinkpads (+-pre-Lenovo) are engineered properly..</p>
<p>So, after all this I now have a dual core laptop with a QXGA screen ( <a href="http://en.wikipedia.org/wiki/QXGA" rel="nofollow">en.wikipedia.org/wiki/QXGA</a> )</p>
<p>Total cost &#8211; RMB3300</p>
<p>Next step &#8211; upgrade it to a T61 motherboard, so I can install 8G ram&#8230;</p>
<p><strong>References / Further Reading</strong>:<br />
<a href="http://www.thinkwiki.org/wiki/Installing_a_QXGA_display_in_a_R/T60_or_61">http://www.thinkwiki.org/wiki/Installing_a_QXGA_display_in_a_R/T60_or_61</a><br />
<a href="http://forum.fatmanandcircuitgirl.com/forum_posts.asp?TID=590">http://forum.fatmanandcircuitgirl.com/forum_posts.asp?TID=590</a><br />
<a href="http://wiki.keithl.com/index.cgi?QxGa">http://wiki.keithl.com/index.cgi?QxGa</a> &#8211; Flashing EDID (with i2C)<br />
<a href="http://forum.thinkpads.com/viewtopic.php?f=29&#038;t=77733">http://forum.thinkpads.com/viewtopic.php?f=29&#038;t=77733</a></p>
<p>Thanks to Eric Rucker for taking the time to add to the Thinkpad wiki about it (otherwise I&#8217;d never have known!)</p>
<p>More pictures of the entire process below:<br />

<a href='http://www.computersolutions.cn/blog/2010/05/t60-screen-upgrade-they-just-dont-make-things-like-they-used-to/voila/' title='voila!'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/voila-150x150.jpg" class="attachment-thumbnail" alt="voila!" title="voila!" /></a>
<a href='http://www.computersolutions.cn/blog/2010/05/t60-screen-upgrade-they-just-dont-make-things-like-they-used-to/testing-2/' title='testing 2'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/testing-2-150x150.jpg" class="attachment-thumbnail" alt="testing 2" title="testing 2" /></a>
<a href='http://www.computersolutions.cn/blog/2010/05/t60-screen-upgrade-they-just-dont-make-things-like-they-used-to/install-side-mount/' title='install side mount'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/install-side-mount-150x150.jpg" class="attachment-thumbnail" alt="install side mount" title="install side mount" /></a>
<a href='http://www.computersolutions.cn/blog/2010/05/t60-screen-upgrade-they-just-dont-make-things-like-they-used-to/almost-installed/' title='almost installed'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/almost-installed-150x150.jpg" class="attachment-thumbnail" alt="almost installed" title="almost installed" /></a>
<a href='http://www.computersolutions.cn/blog/2010/05/t60-screen-upgrade-they-just-dont-make-things-like-they-used-to/testing/' title='testing'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/testing-150x150.jpg" class="attachment-thumbnail" alt="testing" title="testing" /></a>
<a href='http://www.computersolutions.cn/blog/2010/05/t60-screen-upgrade-they-just-dont-make-things-like-they-used-to/testing-3/' title='testing 3'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/testing-3-150x150.jpg" class="attachment-thumbnail" alt="testing 3" title="testing 3" /></a>
<a href='http://www.computersolutions.cn/blog/2010/05/t60-screen-upgrade-they-just-dont-make-things-like-they-used-to/unplugging-the-old-lcd/' title='unplugging the old lcd'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/unplugging-the-old-lcd-150x150.jpg" class="attachment-thumbnail" alt="unplugging the old lcd" title="unplugging the old lcd" /></a>
<a href='http://www.computersolutions.cn/blog/2010/05/t60-screen-upgrade-they-just-dont-make-things-like-they-used-to/unplugging-the-old-lcd-closer-view/' title='unplugging the old lcd closer view'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/unplugging-the-old-lcd-closer-view-150x150.jpg" class="attachment-thumbnail" alt="unplugging the old lcd closer view" title="unplugging the old lcd closer view" /></a>
<a href='http://www.computersolutions.cn/blog/2010/05/t60-screen-upgrade-they-just-dont-make-things-like-they-used-to/screws-and-sticker-covers/' title='screws and sticker covers'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/screws-and-sticker-covers-150x150.jpg" class="attachment-thumbnail" alt="screws and sticker covers" title="screws and sticker covers" /></a>
<a href='http://www.computersolutions.cn/blog/2010/05/t60-screen-upgrade-they-just-dont-make-things-like-they-used-to/old-lcd-still-connected/' title='old lcd still connected'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/old-lcd-still-connected-150x150.jpg" class="attachment-thumbnail" alt="old lcd still connected" title="old lcd still connected" /></a>
<a href='http://www.computersolutions.cn/blog/2010/05/t60-screen-upgrade-they-just-dont-make-things-like-they-used-to/lcd-removed/' title='lcd removed'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/lcd-removed-150x150.jpg" class="attachment-thumbnail" alt="lcd removed" title="lcd removed" /></a>
<a href='http://www.computersolutions.cn/blog/2010/05/t60-screen-upgrade-they-just-dont-make-things-like-they-used-to/packaging/' title='packaging'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/packaging-150x150.jpg" class="attachment-thumbnail" alt="packaging" title="packaging" /></a>
<a href='http://www.computersolutions.cn/blog/2010/05/t60-screen-upgrade-they-just-dont-make-things-like-they-used-to/new-lcd-iaqx10n/' title='new lcd - IAQX10N'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/new-lcd-IAQX10N-150x150.jpg" class="attachment-thumbnail" alt="new lcd - IAQX10N" title="new lcd - IAQX10N" /></a>
<a href='http://www.computersolutions.cn/blog/2010/05/t60-screen-upgrade-they-just-dont-make-things-like-they-used-to/my-thinkpad-goes-topless/' title='My thinkpad goes topless'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/My-thinkpad-goes-topless-150x150.jpg" class="attachment-thumbnail" alt="My thinkpad goes topless" title="My thinkpad goes topless" /></a>
<a href='http://www.computersolutions.cn/blog/2010/05/t60-screen-upgrade-they-just-dont-make-things-like-they-used-to/front-facia-removed/' title='front facia removed'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/05/front-facia-removed-150x150.jpg" class="attachment-thumbnail" alt="front facia removed" title="front facia removed" /></a>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2010/05/t60-screen-upgrade-they-just-dont-make-things-like-they-used-to/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>IP Cam Hacking &#8211; pt#4</title>
		<link>http://www.computersolutions.cn/blog/2010/04/ip-cam-hacking-pt4/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ip-cam-hacking-pt4</link>
		<comments>http://www.computersolutions.cn/blog/2010/04/ip-cam-hacking-pt4/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 19:57:14 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[IP Cam]]></category>
		<category><![CDATA[Technical Mumbo Jumbo]]></category>
		<category><![CDATA[bflt]]></category>
		<category><![CDATA[bneg]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[foscam]]></category>
		<category><![CDATA[ipcam]]></category>
		<category><![CDATA[linux.bin]]></category>
		<category><![CDATA[pkzip]]></category>
		<category><![CDATA[uclinix]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=477</guid>
		<description><![CDATA[Spent a while checking out the different binaries available for the different OEM versions. Some interesting things I&#8217;ve found. If I take a look at a sample kernel &#8211; eg lr_cmos_11_14_1_46.bin ls -al lr_cmos_11_14_1_46.bin -rw-r--r-- 1 lawrence staff 1350539 Mar 15 13:47 lr_cmos_11_14_1_46.bin Our file size for the file i have is 1350539 bytes. A [...]]]></description>
			<content:encoded><![CDATA[<p>Spent a while checking out the different binaries available for the different OEM versions.<br />
Some interesting things I&#8217;ve found.</p>
<p>If I take a look at a sample kernel &#8211; eg<br />
lr_cmos_11_14_1_46.bin</p>
<p><code> ls -al lr_cmos_11_14_1_46.bin<br />
-rw-r--r--  1 lawrence  staff  1350539 Mar 15 13:47 lr_cmos_11_14_1_46.bin<br />
</code></p>
<p>Our file size for the file i have is 1350539 bytes.</p>
<p>A hexdump of the header shows:</p>
<p>00000000  42 4e 45 47 01 00 00 00  01 00 00 00 77 cb 0b 00  |BNEG&#8230;&#8230;..w&#8230;|<br />
00000010  00 d0 08 00 50 4b 03 04  14 00 00 00 08 00 3a 2e  |&#8230;.PK&#8230;&#8230;..:.|<br />
00000020  87 3b 3b e7 b8 16 03 cb  0b 00 bc d9 18 00 09 00  |.;;&#8230;&#8230;&#8230;&#8230;.|</p>
<p>PK is the standard file header for Zip compression (as Zip was invented by Phil Katz)<br />
Zip fingerprint in hex is &#8211; 0x04034b50, which matches nicely in our second line &#8211; 50 4b 03 04</p>
<p>On the offchance it contained a zip file, I tried unzipping from the start of the PK.</p>
<p>We can totally misuse dd to write from an offset of 20 bytes to a test.zip file as follows:</p>
<p><code><br />
lawrence$ dd if=lr_cmos_11_14_1_46.bin of=test.zip skip=0x14 bs=1 </p>
<p>(check I actually did that right)<br />
lawrence$ hexdump -C test.zip  |more<br />
00000000  50 4b 03 04 14 00 00 00  08 00 3a 2e 87 3b 3b e7  |PK........:..;;.|<br />
00000010  b8 16 03 cb 0b 00 bc d9  18 00 09 00 00 00 6c 69  |..............li|</p>
<p></code></p>
<p>Unfortunately this didn&#8217;t unzip.</p>
<p>However&#8230; </p>
<p><code>zipinfo test.zip<br />
Archive:  test.zip   1350519 bytes   1 file<br />
-rw-------  2.0 fat  1628604 b- defN  7-Dec-09 05:49 linux.bin<br />
1 file, 1628604 bytes uncompressed, 772867 bytes compressed:  52.5%</code></p>
<p>Says there is a valid zip file there, so we&#8217;re getting somewhere.  It should be something like 772867 bytes + whatever Zip header / footer file bits in size.</p>
<p>If we take a look at the Zip file format, it says that the end of directory (aka end of zip file) marker is 0x06054b50</p>
<p><code>ZIP end of central directory record </p>
<p>Offset 	Bytes 	Description[4]<br />
 0 	4 	End of central directory signature = 0x06054b50<br />
 4 	2 	Number of this disk<br />
 6 	2 	Disk where central directory starts<br />
 8 	2 	Number of central directory records on this disk<br />
10 	2 	Total number of central directory records<br />
12 	4 	Size of central directory (bytes)<br />
16 	4 	Offset of start of central directory, relative to start of archive<br />
20 	2 	ZIP file comment length (n)<br />
22 	n 	ZIP file comment</code></p>
<p>If we search the file for that, we get:<br />
000bcb70  78 2e 62 69 6e 50 4b 05  06 00 00 00 00 01 00 01  |x.binPK&#8230;&#8230;&#8230;|</p>
<p>So, from our Start PK 03 04 through to PK 05 06 we&#8217;re at position 0&#215;14 through 0x0bcb79</p>
<p>If we write that out now &#8211;<br />
dd if=lr_cmos_11_14_1_46.bin of=test.zip skip=0&#215;14 bs=1 count=0x0bcb79</p>
<p>Then try unzip test.zip &#8211; we have a winner!</p>
<p><code>lawrence$ unzip test.zip<br />
Archive:  test.zip<br />
  inflating: linux.bin<br />
lawrence$ ls -al test.zip<br />
-rw-r--r--  1 lawrence  staff  772985 Apr 30 03:28 test.zip<br />
lawrence$ ls -al linux.bin<br />
-rw-------@ 1 lawrence  staff  1628604 Dec  7 05:49 linux.bin<br />
</code></p>
<p>So, we know that the file has a header, then a zip file (which uncompresses to linux.bin, and has our linux binary), then more data.</p>
<p>If we take a look at what follows &#8211; ie the rest of the data in the original file after the end of the zip, it doesn&#8217;t look compressed</p>
<p>000bcb79  00 00 00 00 01 00 01 00  37 00 00 00 2a cb 0b 00  |&#8230;&#8230;..7&#8230;*&#8230;|<br />
000bcb89  00 00 2d 72 6f 6d 31 66  73 2d 00 08 cf a0 98 16  |..-rom1fs-&#8230;&#8230;|<br />
000bcb99  76 dd 72 6f 6d 20 34 62  31 63 62 36 38 66 00 00  |v.rom 4b1cb68f..|<br />
000bcba9  00 00 00 00 00 49 00 00  00 20 00 00 00 00 d1 ff  |&#8230;..I&#8230; &#8230;&#8230;|<br />
000bcbb9  ff 97 2e 00 00 00 00 00  00 00 00 00 00 00 00 00  |&#8230;&#8230;&#8230;&#8230;&#8230;.|<br />
000bcbc9  00 00 00 00 00 60 00 00  00 20 00 00 00 00 d1 d1  |&#8230;..`&#8230; &#8230;&#8230;|<br />
000bcbd9  ff 80 2e 2e 00 00 00 00  00 00 00 00 00 00 00 00  |&#8230;&#8230;&#8230;&#8230;&#8230;.|<br />
000bcbe9  00 00 00 00 00 c9 00 00  00 80 00 00 00 00 8c 88  |&#8230;&#8230;&#8230;&#8230;&#8230;.|<br />
000bcbf9  9d 47 73 77 61 70 00 00  00 00 00 00 00 00 00 00  |.Gswap&#8230;&#8230;&#8230;.|</p>
<p>&#8230;</p>
<p>000bd969  50 7d 64 68 63 70 63 00  00 00 00 00 00 00 00 00  |P}dhcpc&#8230;&#8230;&#8230;|<br />
000bd979  00 00 62 46 4c 54 00 00  00 04 00 00 00 40 00 01  |..bFLT&#8230;&#8230;.@..|<br />
000bd989  11 70 00 01 37 60 00 01  50 e8 00 00 28 00 00 01  |.p..7`..P&#8230;(&#8230;|<br />
000bd999  37 60 00 00 02 b5 00 00  00 05 00 00 00 00 00 00  |7`&#8230;&#8230;&#8230;&#8230;..|<br />
000bd9a9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |&#8230;&#8230;&#8230;&#8230;&#8230;.|<br />
000bd9b9  00 00 1f 8b 08 00 f4 6b  45 3f 02 03 dc 5b 0f 70  |&#8230;&#8230;.kE?&#8230;[.p|<br />
000bd9c9  14 d7 79 7f bb 77 a7 bf  07 9c fe f0 c7 48 a0 95  |..y..w.......H..|<br />
000bd9d9  50 88 5c 23 b3 02 19 64  23 e0 84 30 76 72 b8 9c  |P.\#...d#..0vr..|<br />
000bd9e9  31 50 6c 2b 58 06 d7 25  84 d6 ea 80 6d 02 8c 7d  |1Pl+X..%....m..}|<br />
000bd9f9  48 02 64 17 b0 00 91 12  17 fb b6 29 ed 60 86 c6  |H.d........).`..|<br />
000bda09  4c aa 74 34 0e 71 0e 90  03 d3 d2 54 fc 51 87 30  |L.t4.q.....T.Q.0|</p>
<p>In fact it looks like more files...</p>
<p>bFLT is our flat ELF header..., and the other bits in-between look suspiciously like more files, and folders.<br />
So, we probably have a filesystem in there.</p>
<p>Its late, and thats all for today, but it looks like we might even get to play around with both the linux image and the web UI image.</p>
<p>Just had another thought though - if you recall, our romfs size was  0x0008D000</p>
<p>Image: 6 name:romfs.img base:0x7F0E0000 size:0x0008D000 exec:0x7F0E0000 -a</p>
<p>What do we see here - in our header?   00000010 00 d0 08 00 </p>
<p><code><br />
00000000 42 4e 45 47 01 00 00 00 01 00 00 00 77 cb 0b 00 |BNEG……..w…|<br />
00000010 00 d0 08 00 50 4b 03 04 14 00 00 00 08 00 3a 2e |….PK……..:.|<br />
</code></p>
<p>Seem to have a match, no?  0x 08 d0 00<br />
I'm going to bet that our 0x 00 0b cb 77 also has some meaning too in our header 20 bytes,  especially as the linux.bin zip file size is close to that at 0x00 0b cb 79.</p>
<p>Its highly probable I've miscounted something with the offset, and thats going to turn out to be the zip file size.</p>
<p>Now I've gotten this far, I'm too excited to go to sleep (its 4am here now!)</p>
<p>Lets try the filesystem from where we left off (aka from 0x0bcb79)<br />
dd if=lr_cmos_11_14_1_46.bin of=unsure_what_filesystem.img skip=0x0bcb79 bs=1 </p>
<p> mount -r unsure_what_filesystem.img<br />
mount: unsure_what_filesystem.img: unknown special file or file system.</p>
<p>Nope.</p>
<p>Kyle's blog comment has this gem in </p>
<blockquote><p>however the ‘-romfs-’ tag is offset by 0×14</p>
<p>so I used the line</p>
<p>fx 6 romfs.img 0x7f0a0000 0x7f0a0014 -a</p>
<p>the system then rebooted correctly…”</p></blockquote>
<p>Lets use that as the start.</p>
<p>hexdump -C unsure_what_filesystem.img |more<br />
00000000  00 00 00 00 01 00 01 00  37 00 00 00 2a cb 0b 00  |........7...*...|<br />
00000010  00 00 2d 72 6f 6d 31 66  73 2d 00 08 cf a0 98 16  |..-rom1fs-......|<br />
00000020  76 dd 72 6f 6d 20 34 62  31 63 62 36 38 66 00 00  |v.rom 4b1cb68f..|</p>
<p>-rom1fs- starts at position 0x12 [which is another indicator that I'm off by 2 bytes somewhere - as they mention 0x14 bytes, and the 12bytes prefix I have prior to the -rom1fs- are going to be from our second file header, I'll bet...<br />
 0x0bcb79 - 2 = 0x0bcb77, which is what the previous header said, so that really makes me think thats the filesize now! </p>
<p>Our ROMFS works out to  be 577 536 bytes, which is 0x8D000, which is also what the boot loader said, so getting a lot of good confirmation on these figures!]</p>
<p>Write that out to another file:<br />
dd if=unsure_what_filesystem.img of=still_unsure.img skip=0&#215;12 bs=1 </p>
<p>Still doesn&#8217;t mount on my Mac, however, some more googling for rom1fs uclinux got me here</p>
<p>http://romfs.sourceforge.net/</p>
<p>Which specifically mentions &#8211; </p>
<blockquote><p>Embedded projects using romfs</p>
<p>uClinux, the microcontroller Linux, is a port of the kernel, and selected user-space programs to capable, embedded processors, like some &#8220;smaller&#8221; Motorola m68k, and ARM systems. </p></blockquote>
<p>ROMFS looks like:</p>
<p>offset      content<br />
        +&#8212;+&#8212;+&#8212;+&#8212;+<br />
  0     |  &#8211;  |  r  |  o  | m  |  \<br />
        +&#8212;+&#8212;+&#8212;+&#8212;+    The ASCII representation of those bytes<br />
  4     |  1  |  f  |  s  |  &#8211;  |  /    (i.e. &#8220;-rom1fs-&#8221;)<br />
        +&#8212;+&#8212;+&#8212;+&#8212;+<br />
  8     |     full size       |    The number of accessible bytes in this fs.<br />
        +&#8212;+&#8212;+&#8212;+&#8212;+<br />
 12     |    checksum   |       The checksum of the FIRST 512 BYTES.<br />
        +&#8212;+&#8212;+&#8212;+&#8212;+<br />
 16     |  volume name     |    The zero terminated name of the volume,<br />
        :               :       padded to 16 byte boundary.<br />
        +&#8212;+&#8212;+&#8212;+&#8212;+<br />
 xx     |     file      |<br />
        :    headers    :</p>
<p>struct romfs_super_block<br />
{</p>
<p>__u32 word0;</p>
<p>__u32 word1;</p>
<p>__u32 size;</p>
<p>__u32 checksum;</p>
<p>char name[0];        /* volume name */</p>
<p>};</p>
<p>Which looks to be a *very* good match for what that header has!<br />
So, its in ROMFS format from the -rom1fs- start header.</p>
<p>(Mostly from here &#8211; <a href="http://zhwen.org/?p=articles/romfs">http://zhwen.org/?p=articles/romfs</a>) </p>
<p>Unfortunately my OSX box appears to be missing romfs support, so I can&#8217;t check it without going back to the office.</p>
<p>mount -o loop -t romfs  still_unsure.img /mnt<br />
mount: exec /System/Library/Filesystems/romfs.fs/Contents/Resources/mount_romfs for /mnt: No such file or directory</p>
<p>Booted up my Debian VM, and tried again.<br />
<code><br />
debian:/mnt/hgfs/FI8908，FI8908W# mount -o loop -t romfs still_unsure.img /mnt/test -r<br />
debian:/mnt/hgfs/FI8908，FI8908W# cd /mnt/test/<br />
debian:/mnt/test# ls -al<br />
total 4<br />
drwxr-xr-x 1 root root   32 1969-12-31 18:00 .<br />
drwxr-xr-x 4 root root 4096 2010-04-29 16:19 ..<br />
drwxr-xr-x 1 root root   32 1969-12-31 18:00 bin<br />
drwxr-xr-x 1 root root   32 1969-12-31 18:00 dev<br />
drwxr-xr-x 1 root root   32 1969-12-31 18:00 etc<br />
drwxr-xr-x 1 root root   32 1969-12-31 18:00 flash<br />
drwxr-xr-x 1 root root   32 1969-12-31 18:00 home<br />
drwxr-xr-x 1 root root   32 1969-12-31 18:00 proc<br />
drwxr-xr-x 1 root root   32 1969-12-31 18:00 swap<br />
drwxr-xr-x 1 root root   32 1969-12-31 18:00 usr<br />
</code></p>
<p>We have a winner!</p>
<p>Full file listing below:</p>
<p><code>.<br />
|-- bin<br />
|   |-- camera<br />
|   |-- dhcpc<br />
|   |-- ifconfig<br />
|   |-- init<br />
|   |-- iwconfig<br />
|   |-- iwpriv<br />
|   |-- mypppd<br />
|   |   |-- chap-secrets<br />
|   |   |-- options<br />
|   |   |-- pap-secrets<br />
|   |   `-- pppd<br />
|   |-- route<br />
|   |-- rt73.bin<br />
|   |-- sh<br />
|   |-- wetctl<br />
|   `-- wpa_supplicant<br />
|-- dev<br />
|   |-- console<br />
|   |-- display<br />
|   |-- dsp -> dsp1<br />
|   |-- dsp0<br />
|   |-- dsp1<br />
|   |-- fb0<br />
|   |-- hda<br />
|   |-- hda1<br />
|   |-- hda2<br />
|   |-- hdb<br />
|   |-- i2c0<br />
|   |-- i2c1<br />
|   |-- key<br />
|   |-- keypad<br />
|   |-- lp0<br />
|   |-- mixer -> mixer1<br />
|   |-- mixer0<br />
|   |-- mixer1<br />
|   |-- mouse<br />
|   |-- mtd0<br />
|   |-- mtd1<br />
|   |-- mtdblock0<br />
|   |-- mtdblock1<br />
|   |-- nftlA1<br />
|   |-- nftla<br />
|   |-- null<br />
|   |-- ppp<br />
|   |-- ppp1<br />
|   |-- ptmx<br />
|   |-- pts<br />
|   |-- ptyp0<br />
|   |-- ptyp1<br />
|   |-- ptyp2<br />
|   |-- ptyp3<br />
|   |-- ptyp4<br />
|   |-- ptyp5<br />
|   |-- ptyp6<br />
|   |-- ptyp7<br />
|   |-- ptyp8<br />
|   |-- ptyp9<br />
|   |-- ptz0<br />
|   |-- rom0<br />
|   |-- rom1<br />
|   |-- rom2<br />
|   |-- sda<br />
|   |-- sda1<br />
|   |-- sda2<br />
|   |-- sdb<br />
|   |-- sdb1<br />
|   |-- sdb2<br />
|   |-- smartcard0<br />
|   |-- smartcard1<br />
|   |-- tty<br />
|   |-- tty1<br />
|   |-- ttyS0<br />
|   |-- ttyS1<br />
|   |-- ttyS2<br />
|   |-- ttyS3<br />
|   |-- ttyp0<br />
|   |-- ttyp1<br />
|   |-- ttyp2<br />
|   |-- ttyp3<br />
|   |-- ttyp4<br />
|   |-- ttyp5<br />
|   |-- ttyp6<br />
|   |-- ttyp7<br />
|   |-- ttyp8<br />
|   |-- ttyp9<br />
|   |-- urandom<br />
|   |-- usb<br />
|   |   |-- lp.sh<br />
|   |   |-- lp0<br />
|   |   |-- lp1<br />
|   |   |-- lp2<br />
|   |   |-- lp3<br />
|   |   |-- lp4<br />
|   |   |-- lp5<br />
|   |   |-- lp6<br />
|   |   |-- lp7<br />
|   |   |-- lp8<br />
|   |   `-- lp9<br />
|   |-- usi<br />
|   |-- video0<br />
|   `-- video1<br />
|-- etc<br />
|-- flash<br />
|-- home<br />
|-- proc<br />
|-- swap<br />
|-- usr<br />
`-- var<br />
    `-- run</p>
<p>13 directories, 97 files</code></p>
<p>While I obviously can&#8217;t run any binaries locally, I can look at the text files to confirm that the ROMFS hasn&#8217;t just gotten the filesystem correct.</p>
<p><code>debian:/mnt/test/bin# cat init<br />
mount -t proc none /proc<br />
mount -t ramfs none /usr<br />
mount -t ramfs none /swap<br />
mount -t ramfs none /var/run<br />
mount -t ramfs none /etc<br />
mount -t ramfs none /flash<br />
mount -t ramfs none /home<br />
camera&#038;<br />
sh<br />
</code></p>
<p><code>debian:/mnt/test/bin# file camera<br />
camera: BFLT executable - version 4 ram gzip<br />
</code></p>
<p>Looking *very* good.</p>
<p>Thats all for tonight, but it looks like we can easily add bits to the firmware using genromfs, dd, and a hex editor, or just genromfs, and someone willing to test a rebuilt user rom with an extra binary.  Probably going to be telnetd as ssh requires a kernel recompile <img src='http://www.computersolutions.cn/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>Next step, actually doing that, and testing.</p>
<p>I&#8217;m definitely going to bed now &#8211; its 5:30am.</p>
<p>Tomorrow is a holiday though (in China), so happy May holidays!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2010/04/ip-cam-hacking-pt4/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>IP Cam Hacking &#8211; pt#3</title>
		<link>http://www.computersolutions.cn/blog/2010/04/ip-cam-hacking-pt3/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ip-cam-hacking-pt3</link>
		<comments>http://www.computersolutions.cn/blog/2010/04/ip-cam-hacking-pt3/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 07:43:41 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[Technical Mumbo Jumbo]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[foscam]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[ipcam]]></category>
		<category><![CDATA[nc745]]></category>
		<category><![CDATA[nuvoton]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=468</guid>
		<description><![CDATA[I&#8217;ve finally received my 2nd camera, so I can now start working properly on it (assuming I get some free time too!) High resolution photos of the board are below: Main parts used are: RAM &#8211; Winbond W9812G61H-6 (2M) According to the data sheet, that 2M X 4 BANKS X 16 BITS SDRAM @ 3.3V [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve finally received my 2nd camera, so I can now start working properly on it (assuming I get some free time too!)</p>
<p>High resolution photos of the board are below:</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/ipcam_underside.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/ipcam_underside-300x200.jpg" alt="" title="ipcam_underside" width="300" height="200" class="aligncenter size-medium wp-image-471" /></a></p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/ipcam_topside.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/ipcam_topside-300x200.jpg" alt="" title="ipcam_topside" width="300" height="200" class="aligncenter size-medium wp-image-470" /></a></p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/ipcam_wifi_daughter_board.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/ipcam_wifi_daughter_board-300x200.jpg" alt="" title="ipcam_wifi_daughter_board" width="300" height="200" class="aligncenter size-medium wp-image-469" /></a></p>
<p>Main parts used are:</p>
<p><strong>RAM &#8211;  Winbond W9812G61H-6 (2M)</strong><br />
According to the data sheet, that 2M X 4 BANKS X 16 BITS SDRAM @ 3.3V / 166MHz/CL3<br />
Data sheet is here &#8211; <a href="http://jp.ic-on-line.cn/IOL/datasheet/w9812g6ih_4223255.pdf">http://jp.ic-on-line.cn/IOL/datasheet/w9812g6ih_4223255.pdf</a></p>
<p><strong>Flash &#8211; Spansion S29AL016D (2M)</strong><br />
Other boards are populated with different providers &#8211; some people have Samsung flash&#8230;<br />
Mine has the Spansion onboard both units.  Its programmable onboard (via the uBoot)<br />
Data sheet here &#8211; <a href="http://www.datasheetpro.com/259722_view_S29AL016D_datasheet.html">http://www.datasheetpro.com/259722_view_S29AL016D_datasheet.html</a></p>
<p><strong>Sound Card &#8211; ALC203</strong><br />
This is obviously used as the BSP for the Novotel provides sample code for that card, making their life easier&#8230;<br />
Data sheet here &#8211; <a href="http://realtek.info/pdf/alc203.pdf">http://realtek.info/pdf/alc203.pdf</a></p>
<p><strong>Wired Ethernet &#8211; Davicom DM9161AEP (10/100 Ethernet)</strong><br />
Data sheet here &#8211;<br />
<a href="http://www.davicom.com.tw/userfile/24247/DM9161AEPProductBrief_v1.0.pdf">http://www.davicom.com.tw/userfile/24247/DM9161AEPProductBrief_v1.0.pdf</a></p>
<p><strong>8 Port Relay Driver (for the motors etc) &#8211; ULN2803</strong><br />
Data sheet here  &#8211; <a href="http://www.rentron.com/Files/uln2803.pdf">http://www.rentron.com/Files/uln2803.pdf</a><br />
More info / explanation here &#8211; <a href="http://wiki.answers.com/Q/What_is_Relay_driver_ULN2803">http://wiki.answers.com/Q/What_is_Relay_driver_ULN2803</a></p>
<p><strong>Wifi &#8211; RALINK 2571 (on daughterboard).  Wireless G </strong><br />
This is a USB based chipset, so we&#8217;re using 4 usb connector pins for this one.<br />
No datasheet, as Ralink are dicks.</p>
<p><strong>CPU &#8211; ARM7 N745CDG (Arm 7 by Nuvoton)</strong><br />
Lot of info for chip available at Nuvoton. </p>
<p>W90N745 makes use of the ARM7TDMI microprocessor core of ARMR and 0.18um production to achieve standard operation at 80MHz. 128-Pin LQPF packing is also used to save electricity and lower costs. The built-in 4KBytes I-Cache and 4KBytes D-Cache of W90N745 can also be set as On-Chip RAM according to the needs of product developers. With regards to system integration, W90N745 is suitable for network-related applications such as management switch, IP cameras, VoIP and printer servers.<br />
Features<br />
    * One Ethernet MAC<br />
    * One USB 2.0 full speed Host controller<br />
    * One USB 2.0 full speed Host/Device controller<br />
    * AC97/I2S<br />
    * 4 UARTs<br />
    * I²C Master<br />
    * 31 GPIOs<br />
    * Power Management</p>
<p>Data sheets &#8211; <a href="http://www.nuvoton.com/hq/enu/ProductAndSales/ProductLines/ConsumerElectronicsIC/ARMMicrocontroller/ARMMicrocontroller/NUC745A.htm">http://www.nuvoton.com/hq/enu/ProductAndSales/ProductLines/ConsumerElectronicsIC/ARMMicrocontroller/ARMMicrocontroller/NUC745A.htm</a><br />
The uclinux sample distribution and files can be downloaded here &#8211; <a href="http://www.metavert.com/public/NO-SUPPORT/NUC700%20Series%20MCU%20uCLinux%20BSP.zip">http://www.metavert.com/public/NO-SUPPORT/NUC700%20Series%20MCU%20uCLinux%20BSP.zip</a></p>
<p>I&#8217;m just waiting on a JLINK USB adaptor, then I&#8217;m ready to roll.</p>
<p>[Updates]</p>
<p>David M from comments at <a href="http://irishjesus.wordpress.com/2010/03/30/hacking-the-foscam-fi8908w/#comments">http://irishjesus.wordpress.com/2010/03/30/hacking-the-foscam-fi8908w/#comments</a> provided his rom sizing from his device, I&#8217;ve got some notes on that here.</p>
<p>MAC Address : 00:30:10:C1:D0:39<br />
IP Address : 0.0.0.0<br />
DHCP Client : Enabled<br />
CACHE : Enabled<br />
BL buffer base : 0×00300000<br />
BL buffer size : 0×00100000<br />
Baud Rate : -1<br />
USB Interface : Disabled<br />
Serial Number : 0xFFFFFFFF</p>
<p>For help on the available commands type ‘h’</p>
<p>Press ESC to enter debug mode …</p>
<p>bootloader > ls<br />
Image: 0 name:BOOT INFO base:0x7F010000 size:0×00000038 exec:0x7F010000 -af<br />
Image: 7 name:linux.bin base:0x7F020000 size:0x000BB334 exec:0×00008000 -acxz<br />
Image: 6 name:romfs.img base:0x7F0E0000 size:0x0008D000 exec:0x7F0E0000 -a</p>
<p>My notes:</p>
<p>Image: 0 name:BOOT INFO base:0x7F010000 size:0×00000038 exec:0x7F010000 -af</p>
<p>[Image 0 is 38 bytes (small!).<br />
Boot info is not the bootloader - 38bytes is way too small for that.<br />
It actually stores our bootloader config settings.<br />
eg ip address, cache setting, boot loader buffer address etc.<br />
Our initial settings are below:</p>
<p>MAC Address : 00:30:10:C1:D0:39 (should be changed, this Mac range belongs to Cisco!)<br />
IP Address : 0.0.0.0 (unset)<br />
DHCP Client : Enabled  (pulls ip from dhcp..)<br />
CACHE : Enabled (onboard chip cache)<br />
BL buffer base : 0×00300000<br />
BL buffer size : 0×00100000<br />
Baud Rate : -1 (unset / so defaults to 115,200,8,n,1)<br />
USB Interface : Disabled (NC745 has no USB for bootloader)<br />
Serial Number : 0xFFFFFFFF (unset)</p>
<p>-af indicates Active (a) , and is a Filesystem image (f)]</p>
<p>Image: 7 name:linux.bin base:0x7F020000 size:0x000BB334 exec:0×00008000 -acxz<br />
[Image 7 is our OS - Linux 2.4.20 ucLinux  Not sure why Maverick didn't build on 2.6, there is more hardware support.  Probably time dependant - 2.6 may not have been available, plus the Nuvoton sample code is also 2.4 based...</p>
<p>-axcz says  active (a)  executable (x) copied to ram (c) compressed (z)  ]</p>
<p>Image: 6 name:romfs.img base:0x7F0E0000 size:0x0008D000 exec:0x7F0E0000 -a</p>
<p>[Our rom image - aka userland stuff.  This is where we'll be putting our own code.  Looks like its stuck quite high up in the flash, although doesn't need to be given size of the Linux rom.  We have plenty of room available.</p>
<p>We'll need to make appropriate changes to Image 6 size on flashing</p>
<p>-a says active partition.]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2010/04/ip-cam-hacking-pt3/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>IPCam Hacking Part 2.</title>
		<link>http://www.computersolutions.cn/blog/2010/04/ipcam-hacking-part-2/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ipcam-hacking-part-2</link>
		<comments>http://www.computersolutions.cn/blog/2010/04/ipcam-hacking-part-2/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 16:23:20 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[Technical Mumbo Jumbo]]></category>
		<category><![CDATA[arm5]]></category>
		<category><![CDATA[arm7]]></category>
		<category><![CDATA[f8908w]]></category>
		<category><![CDATA[foscam]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[ipcam]]></category>
		<category><![CDATA[uclinux]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=455</guid>
		<description><![CDATA[Finally got a chance to play around with the second ipcam I bought. This one is a little bit smarter than the previous one &#8211; its running off an ARM5ARM7 CPU (Nuvoton NUC745ADN), so has a bit more oomph. 16M ram is a whole lot more to play with for a start! The last device [...]]]></description>
			<content:encoded><![CDATA[<p>Finally got a chance to play around with the second ipcam I bought.</p>
<p>This one is a little bit smarter than the previous one &#8211; its running off an <del datetime="2010-04-21T03:02:29+00:00">ARM5</del>ARM7 CPU (Nuvoton NUC745ADN), so has a bit more oomph.  16M ram is a whole lot more to play with for a start!  The last device only had 16KB, so this puppy can be taught to do some tricks!</p>
<p>Serial was a little bit trickier to solder on this time &#8211; my initial connectors were too small, so had to resolder with larger ones, and I managed to mess up a tad.  Never said my soldering was any good <img src='http://www.computersolutions.cn/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Getting it to talk to the computer was a bit painful too &#8211; eventually I settled on 115,200 8,n,1, xon/xoff which should have worked the first time around, but I was getting garbage.</p>
<p>Probably flow control (xon/xoff), as fiddling with the connections got it going eventually.</p>
<p>First output from the board is below &#8211; this is from a clean boot (with no ethernet or wifi).</p>
<p><code><br />
W90P745 Boot Loader [ Version 1.1 $Revision: 1 $ ] Rebuilt on Dec 10 2009<br />
Memory Size is 0x1000000 Bytes, Flash Size is 0x200000 Bytes<br />
Board designed by Winbond<br />
Hardware support provided at Winbond<br />
Copyright (c) Winbond Limited 2001 - 2006. All rights reserved.<br />
Boot Loader Configuration:</p>
<p>        MAC Address         : 0E:F2:B3:DC:08:05<br />
        IP Address          : 0.0.0.0<br />
        DHCP Client         : Enabled<br />
        CACHE               : Enabled<br />
        BL buffer base      : 0x00300000<br />
        BL buffer size      : 0x00100000<br />
        Baud Rate           : -1<br />
        USB Interface       : Disabled<br />
        Serial Number       : 0xFFFFFFFF</p>
<p>For help on the available commands type 'h'</p>
<p>Press ESC to enter debug mode ......<br />
Cache enabled!<br />
Processing image 1 ...<br />
Processing image 2 ...<br />
Processing image 3 ...<br />
Processing image 4 ...<br />
Processing image 5 ...<br />
Processing image 6 ...<br />
Processing image 7 ...<br />
Unzip image 7 ...<br />
Executing image 7 ...<br />
Linux version 2.4.20-uc0 (root@maverick-linux) (gcc version 3.0) #1013 Èý 12ÔÂ 2 13:17:32 CST 2009<br />
Processor: Winbond W90N745 revision 1<br />
Architecture: W90N745<br />
On node 0 totalpages: 4096<br />
zone(0): 0 pages.<br />
zone(1): 4096 pages.<br />
zone(2): 0 pages.<br />
Kernel command line: root=/dev/rom0 rw<br />
Calibrating delay loop... 39.83 BogoMIPS<br />
Memory: 16MB = 16MB total<br />
Memory: 14376KB available (1435K code, 288K data, 40K init)<br />
Dentry cache hash table entries: 2048 (order: 2, 16384 bytes)<br />
Inode cache hash table entries: 1024 (order: 1, 8192 bytes)<br />
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)<br />
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)<br />
Page-cache hash table entries: 4096 (order: 2, 16384 bytes)<br />
POSIX conformance testing by UNIFIX<br />
Linux NET4.0 for Linux 2.4<br />
Based upon Swansea University Computer Society NET3.039<br />
Initializing RT netlink socket<br />
Starting kswapd<br />
Winbond W90N745 Serial driver version 1.0 (2005-08-15) with no serial options enabled<br />
ttyS00 at 0xfff80000 (irq = 9) is a W90N745<br />
Winbond W90N7451 Serial driver version 1.0 (2005-08-15) with no serial options enabled<br />
ttyS00 at 0xfff80100 (irq = 10) is a W90N7451<br />
I2C Bus Driver has been installed successfully.<br />
Blkmem copyright 1998,1999 D. Jeff Dionne<br />
Blkmem copyright 1998 Kenneth Albanowski<br />
Blkmem 1 disk images:<br />
0: 7F0E0000-7F16D3FF [VIRTUAL 7F0E0000-7F16D3FF] (RO)<br />
AM29LV160DB Flash Detected<br />
01 eth0 initial ok!<br />
which:0<br />
PPP generic driver version 2.4.2<br />
Linux video capture interface: v1.00<br />
Winbond Audio Driver v1.0 Initialization successfully.<br />
usb.c: registered new driver hub<br />
add a static ohci host controller device<br />
: USB OHCI at membase 0xfff05000, IRQ 15<br />
hc_alloc_ohci<br />
usb-ohci.c: AMD756 erratum 4 workaround<br />
hc_reset<br />
usb.c: new USB bus registered, assigned bus number 1<br />
hub.c: USB hub found<br />
hub.c: 2 ports detected<br />
usb.c: registered new driver audio<br />
audio.c: v1.0.0:USB Audio Class driver<br />
usb.c: registered new driver serial<br />
usbserial.c: USB Serial Driver core v1.4</p>
<p> _____     ____    _    ____<br />
|__  /   _|  _ \  / \  / ___|<br />
  / / | | | | | |/ _ \ \___ \<br />
 / /| |_| | |_| / ___ \ ___) |<br />
/____\__, |____/_/   \_\____/<br />
     |___/<br />
ZD1211B - version 2.24.0.0<br />
usb.c: registered new driver zd1211b<br />
main_usb.c: VIA Networking Wireless LAN USB Driver 1.13<br />
usb.c: registered new driver vntwusb<br />
usb.c: registered new driver rt73<br />
dvm usb cam driver 0.0.0.0 by Maverick Gao in 2006-8-12<br />
usb.c: registered new driver dvm<br />
dvm usb cam driver 0.1 for sonix288 by Maverick Gao in 2009-4-20<br />
usb.c: registered new driver dvm usb cam driver for sonix288<br />
NET4: Linux TCP/IP 1.0 for NET4.0<br />
IP Protocols: ICMP, UDP, TCP<br />
IP: routing cache hash table of 512 buckets, 4Kbytes<br />
TCP: Hash tables configured (established 1024 bind 2048)<br />
VFS: Mounted root (romfs filesystem) readonly.<br />
Freeing init memory: 40K<br />
BINFMT_FLAT: bad magic/rev (0x74202d74, need 0x4)<br />
BINFMT_FLAT: bad magic/rev (0x74202d74, need 0x4)<br />
Shell invoked to run file: /bin/init<br />
Command: mount -t proc none /proc<br />
Command: mount -t ramfs none /usr<br />
Command: mount -t ramfs none /swap<br />
Command: mount -t ramfs none /var/run<br />
Command: mount -t ramfs none /etc<br />
Command: mount -t ramfs none /flash<br />
Command: mount -t ramfs none /home<br />
Command: camera&#038;<br />
[8]<br />
Command: sh<br />
no support</p>
<p>Sash command shell (version 1.1.1)<br />
/> hub.c: connect-debounce failed, port 1 disabled<br />
new USB device :80fd7e04-fed640<br />
hub.c: new USB device 1, assigned address 2<br />
dvm cmos successfully initialized<br />
dvm camera registered as video0<br />
new USB device :80fb0204-fed640<br />
hub.c: new USB device 2, assigned address 3<br />
idVendor = 0x148f, idProduct = 0x2573</p>
<p>Wait for auto-negotiation complete...ResetPhyChip Failed<br />
video0 opened<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
set resolution 5<br />
set brightness 144<br />
set contrast 3<br />
set sharpness 3<br />
set mode 2<br />
__pthread_initial_thread_bos:34c000<br />
manage pid:16<br />
audio_dev.state not AU_STATE_RECORDING<br />
wb_audio_start_record<br />
=> usb_rtusb_open<br />
retide_ddns.c: can not get server dns.camcctv.com ip<br />
ntpc.c: can not resolve ntpserver(time.nist.gov)'s ip<br />
get oray info<br />
upnp get ip error<br />
inet_sr.c INET_rinput 321<br />
action===1<br />
options==33<br />
inet_sr.c INET_setroute 75<br />
*args===255.255.255.255<br />
*args===netmask<br />
*args===eth1<br />
inet_sr.c INET_rinput 321<br />
action===1<br />
options==33<br />
inet_sr.c INET_setroute 75<br />
*args===default<br />
*args===gw<br />
*args===eth1<br />
MlmeAssocReqAction(): WPA2/WPA2PSK fill the ReqVarIEs with CipherTmp!<br />
3<br />
3<br />
3<br />
3<br />
3<br />
3<br />
</code></p>
<p>Initially I had the board setup on its own without the camera attached, but the boot scripts require it connected, otherwise they reboot..<br />
Ostensibly, this is the same hardware as the fi8908w (who are just reselling the OEM version with marginally different firmware as far as I can tell).</p>
<p>Next step is to setup a cross compiler for uclinux so I can make some binaries, and test.<br />
Luckily all the available tools are open source / free.  Yay!</p>
<p>I&#8217;m in contact with the factory, and they&#8217;ll be sending an SDK over at some point soonish, although its only in Chinese.<br />
Luckily for me, that shouldn&#8217;t be a problem, as i&#8217;m reasonably capable at groking both code, and simplified chinese <img src='http://www.computersolutions.cn/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>ucLinux should be easy enough to build a rom image for though &#8211; tons of examples, and I already have a few firmware files to compare.  </p>
<p>It shouldn&#8217;t be too hard for me to roll another firmware with ssh installed, so that we can get in without serial, that would be more useful for others too.</p>
<p>I&#8217;ve had a quick look inside the folders in the device from the device itself &#8211; fairly minimal, pretty much the only binaries are the necessary ones.<br />
My initial aim is to redo the UI to a nicer one, and fix some of the more glaring bugs.    The factory people are at a trade show in Taiwan this week, so hopefully next week I&#8217;ll get some dev tools (otherwise its reverse engineering, bleh&#8230;).  </p>
<p> <a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/IMG_9149.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/IMG_9149-300x200.jpg" alt="" title="IMG_9149" width="300" height="200" class="alignnone size-medium wp-image-457" /></a></p>
<p>Some more people are playing with these as well (links below):</p>
<p><a href="http://irishjesus.wordpress.com/2010/03/30/hacking-the-foscam-fi8908w/">http://irishjesus.wordpress.com/2010/03/30/hacking-the-foscam-fi8908w/</a></p>
<p><a href="http://www.gadgetvictims.com/2009/12/bring-your-fi8908w-paperweight-back-to.html"></p>
<p>http://www.gadgetvictims.com/2009/12/bring-your-fi8908w-paperweight-back-to.html</a></p>
<p>Unfortuanately for me, both are variably accessible.  WordPress is available this week woohoo, but its an on / off dealio with the GFW&#8230;, so I might have to stop commenting there once the government decides if WordPress is &#8220;teh evil&#8221; again.</p>
<p>The irishjesus blog guy has done some of the harder bits like file extraction already (although not strictly necessary, as there are existing tools for that kind of thing).</p>
<p>&#8212;</p>
<p><strong>Updates</strong></p>
<p>Have some docs from the factory now, see attached file for the CGI spec.</p>
<p><a href='http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/IP-Camera-CGI-应用指南-1.11.pdf'>IP Camera CGI 应用指南-1.11</a></p>
<p>I have others, but not so relevant especially for those than don&#8217;t read Chinese!</p>
<p>Data sheet for the Chip and build instructions here -</p>
<p><a href="http://www.nuvoton.com/hq/enu/ProductAndSales/ProductLines/ConsumerElectronicsIC/ARMMicrocontroller/ARMMicrocontroller/NUC745A.htm">http://www.nuvoton.com/hq/enu/ProductAndSales/ProductLines/ConsumerElectronicsIC/ARMMicrocontroller/ARMMicrocontroller/NUC745A.htm</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2010/04/ipcam-hacking-part-2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>IP Camera&#8217;s and other toys :: Notes from the edge</title>
		<link>http://www.computersolutions.cn/blog/2010/04/ip-cameras-and-other-toys-notes-from-the-edge/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ip-cameras-and-other-toys-notes-from-the-edge</link>
		<comments>http://www.computersolutions.cn/blog/2010/04/ip-cameras-and-other-toys-notes-from-the-edge/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 12:49:44 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[Technical Mumbo Jumbo]]></category>
		<category><![CDATA[8051]]></category>
		<category><![CDATA[ccd]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[ip camera]]></category>
		<category><![CDATA[ip-510]]></category>
		<category><![CDATA[ipcam]]></category>
		<category><![CDATA[lti-510]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=441</guid>
		<description><![CDATA[When I was younger, I used to like taking things apart.  I still do that, but they tend to work better these days, hehe This last few weeks I&#8217;ve been playing with IP Camera&#8217;s for a pet project that started off as a request over Skype for info about surveillance. As the ever useful Taobao [...]]]></description>
			<content:encoded><![CDATA[<p>When I was younger, I used to like taking things apart.  I still do that, but they tend to work better these days, hehe</p>
<p>This last few weeks I&#8217;ve been playing with IP Camera&#8217;s for a pet project that started off as a request over Skype for info about surveillance.<br />
As the ever useful Taobao is full of vendors selling the same 4 or 5 camera&#8217;s for reasonable prices I ordered a couple to take a peek at.</p>
<p>I&#8217;ve only taken one apart so far &#8211; the really really cheap one that I installed in the office so I can get a look at who comes up the stairs without having to move my fat ass out of the chair.  A quick shortcut in FF, and it works quite nicely as a separate browser window in the corner of the desktop.</p>
<p>Onto the discovery phase <img src='http://www.computersolutions.cn/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I had a quick spin with NMAP, but other than discovering that they rather naughtily misuse a Mac Address assigned to the evil Cisco, not much help.<br />
Also nothing appeared to be running on any other ports than the web port <img src='http://www.computersolutions.cn/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /><br />
<code>nmap -A 192.168.0.88</p>
<p>Starting Nmap 5.00 ( http://nmap.org ) at 2010-04-13 19:27 CST<br />
Interesting ports on 192.168.0.88:<br />
Not shown: 999 filtered ports<br />
PORT   STATE SERVICE VERSION<br />
80/tcp open  http?<br />
|_ html-title: IPCamera<br />
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at http://www.insecure.org/cgi-bin/servicefp-submit.cgi :<br />
SF-Port80-TCP:V=5.00%I=7%D=4/13%Time=4BC45529%P=i686-pc-linux-gnu%r(GetReq<br />
SF:uest,2E1,"HTTP/1\.1\x20200\x20OK\r\nExpires:\x200\r\nConnection:\x20clo<br />
SF:se\r\ncache-control:\x20no-cache\r\n\r\n\r\n<br />
SF:IPCamera\r\n\r<br />
SF:\n\r\n\r\n\r\n\r\n<br />
SF:\r\n\r\n\r\n\r\n<!--\x20<FRAME\x20SCROLLING=no\x2 SF:0SRC=\"menu\.html\"\x20NAME=\"left\">\x20-->\r\n\r\n\r\n&lt;BODY\x20onLoad=\" SF:doPop\(\);\"&gt;\xb6\xd4\xb2\xbb\xc6\xf0\xa3\xac\xc4\xfa\xb5\xc4\xe4\xaf\x<br />
SF:c0\xc0\xc6\xf7\xb2\xbb\xd6\xa7\xb3\xd6\xbf\xf2\xbc\xdc\xa3\xa1&lt;/BODY&gt;&lt;/ SF:NOFRAMES&gt;\r\n&lt;/FRAMESET&gt;\r\n\r\n&lt;/HTML&gt;\r\n")%r(FourOhFourRequest,1DF,"<br />
SF:HTTP/1\.1\x20200\x20OK\r\nConnection:\x20close\r\ncache-control:\x20no-<br />
SF:cache\r\n\r\n&lt;HTML&gt;\r\n&lt;HEAD&gt;\r\n&lt;TITLE&gt;&lt;/TITLE&gt;\r\n&lt;meta\x20http-equiv SF:=\"Content-Type\"\x20content=\"text/html;\x20charset=gb2312\"&gt;&lt;/HEAD&gt;\r<br />
SF:\n&lt;BODY\x20BGCOLOR=\"#C4CEEF\"\x20onLoad=\"window\.status='\xbb\xb6\xd3 SF:\xad\xca\xb9\xd3\xc3\xcd\xf8\xc2\xe7\xc9\xe3\xcf\xf1\xbb\xfa!';return\x SF:20true;\"&gt;\r\n\r\n<br />
&lt;TABLE\x20WIDTH=140\x20BORDER=0\x20CELLSPACING=0\x20C SF:ELLPADDING=0&gt;\r\n<br />
&lt;TR&gt;\r\n\t<br />
&lt;TD\x20HEIGHT=80\x20ALIGN=center\x20BGCOLOR= SF:\"#C4CEEF\"&gt;&lt;FONT\x20color=\"#FF6633\"\x20size=\"\+2\"\x20FACE=\"Arial\ SF:"&gt;&lt;B&gt;IP\x20Camera&lt;/B&gt;&lt;/FONT&gt;&lt;/TD&gt;</p>
<p>\r\n&lt;/TR&gt;</p>
<p>\r\n&lt;/TABLE&gt;</p>
<p>\r\n\r\n&lt;/BODY&gt;\r<br />
SF:\n&lt;/HTML&gt;\r\n");<br />
MAC Address: 00:0A:42:33:66:54 (Cisco Systems)<br />
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port<br />
OS fingerprint not ideal because: Missing a closed TCP port so results incomplete<br />
No OS matches for host<br />
Network Distance: 1 hop<br />
</code></p>
<p>Next up is the usual dissection.  I had done some minor googling on the device I bought, which is basically this below:<br />
<a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/510-250.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/510-250.jpg" alt="" title="510-250" width="250" height="250" class="alignnone size-full wp-image-442" /></a></p>
<p>As its an OEM product, this is available under a whole bunch of different names &#8211; mostly with IP-510 or similar in the title, eg LTI-510 etc.</p>
<p>For a cheap OEM product, it actually seems to be reasonably well made though &#8211; the Case is an nice and solid aluminium sheath that looks like its been repurposed from something else, and the board itself is suprisingly well diagrammed.  Its almost made for hacking!</p>
<p>Chips onboard are as follows:</p>
<p>25.0618mhz crystal from TXC  &#8211; bonus points for why its 25mhz.  Reply in the comments <img src='http://www.computersolutions.cn/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Davicom DM9008AEP, TRC9016NLE  (both for Ethernet. imho Davicom is a second-rate Realtek)<br />
<a href="http://www.vimicro.com/english/product/vc0528.htm">ViMicro VC0528BRVC</a> (Camera processor / CCD Controller)<br />
And last, but not least, our CPU, which is an 8051, although not from ATMEL.<br />
Part number on that is C8051F340.  My first guess is that it incorporates some integrated flash on there for firmware.  Unfortunately its likely to be all C and Assembler, and the last time I did embedded 8051 stuff was in the early 90&#8242;s.</p>
<p>Google confirms it &#8211; basically its an all in one controller with 32 or 64KB onboard, and roughly 4k ram.  Woohoo!   </p>
<p>Datasheet here &#8211; <a href="http://www.alldatasheet.com/datasheet-pdf/pdf/182721/SILABS/C8051F340.html">http://www.alldatasheet.com/datasheet-pdf/pdf/182721/SILABS/C8051F340.html</a></p>
<p>Good news is that the board has serial out clearly labeled on the top left side. Better news is that the chip has an onboard debug mode, so I don&#8217;t even need any ICE (In Circuit Emulation) tools should I want to take a look. Bad news is that I&#8217;m probably going to be too lazy to do it, as its more work and less fun than the second one I bought, which has Linux running on it.</p>
<p>That said, this one is cheap.  Real cheap.  Cheap enough that its probably worth knocking out a decent firmware, and reselling it with a better UI, and more features.<br />
Might be possible, although anything more than whats there is probably stretching it given the ram / storage constraints.  Looks like its all offboard processing/streaming for this model!</p>
<p>There are also some unpopulated spots on the board, which I strongly suspect would be for audio, given the board has a MIC input and no Mic, and the main controller is a ViMicro, which supports MP3 output also&#8230;</p>
<p>I&#8217;ll see if I can find a firmware file, and do a disassembly, or more probably see what I get out of the serial port connection in the near future.</p>
<p>Photos below.  [Excuse the pasty white hands, its still winter for some reason in Shanghai, despite being April...  Oh global warming. Where art thou, when I needest thee!]:</p>

<a href='http://www.computersolutions.cn/blog/2010/04/ip-cameras-and-other-toys-notes-from-the-edge/510-250/' title='510-250'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/510-250-150x150.jpg" class="attachment-thumbnail" alt="510-250" title="510-250" /></a>
<a href='http://www.computersolutions.cn/blog/2010/04/ip-cameras-and-other-toys-notes-from-the-edge/ip_501_board_top/' title='ip_501_board_top'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/ip_501_board_top-150x150.jpg" class="attachment-thumbnail" alt="ip_501_board_top" title="ip_501_board_top" /></a>
<a href='http://www.computersolutions.cn/blog/2010/04/ip-cameras-and-other-toys-notes-from-the-edge/rear/' title='rear'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/rear-150x150.jpg" class="attachment-thumbnail" alt="rear" title="rear" /></a>
<a href='http://www.computersolutions.cn/blog/2010/04/ip-cameras-and-other-toys-notes-from-the-edge/front/' title='front'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/front-150x150.jpg" class="attachment-thumbnail" alt="front" title="front" /></a>

<p>Some further files for the curious here &#8211; </p>
<p><a href="http://kuklin.ru/ip400cam">http://kuklin.ru/ip400cam</a> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2010/04/ip-cameras-and-other-toys-notes-from-the-edge/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Time Capsule repair</title>
		<link>http://www.computersolutions.cn/blog/2010/04/time-capsule-repair/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=time-capsule-repair</link>
		<comments>http://www.computersolutions.cn/blog/2010/04/time-capsule-repair/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 08:36:27 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Technical Mumbo Jumbo]]></category>
		<category><![CDATA[Useful Info]]></category>
		<category><![CDATA[bad apple]]></category>
		<category><![CDATA[faulty capacitors]]></category>
		<category><![CDATA[fixing]]></category>
		<category><![CDATA[repair]]></category>
		<category><![CDATA[time capsule]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=428</guid>
		<description><![CDATA[I&#8217;ve been seeing a bunch of failed Apple Time Capsules recently. The issue is that the PSU&#8217;s are dying, as opposed to the HDD&#8217;s. I took one apart to take a look, and the issue is the oh too familiar someone bought cheap capacitors that use the wrong formula. Tsk tsk Apple! Here are some [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been seeing a bunch of failed Apple Time Capsules recently.<br />
The issue is that the PSU&#8217;s are dying, as opposed to the HDD&#8217;s.</p>
<p>I took one apart to take a look, and the issue is the oh too familiar someone bought <a href="http://en.wikipedia.org/wiki/Capacitor_plague">cheap capacitors that use the wrong formula</a>.  Tsk tsk Apple!</p>
<p>Here are some photos of a faulty power supply from a Time Capsule I&#8217;ve taken apart to demonstrate -</p>
<p style="text-align: center;"><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/IMG_9114.jpg"></a><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/IMG_9114.jpg"><img class="aligncenter size-large wp-image-432" title="IMG_9114" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/IMG_9114-1024x682.jpg" alt="" width="614" height="409" /></a></p>
<p style="text-align: center;"><span id="more-428"></span></p>
<p style="text-align: center;"><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/IMG_9116.jpg"><img class="aligncenter size-large wp-image-431" title="IMG_9116" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/IMG_9116-1024x682.jpg" alt="" width="502" height="334" /></a></p>
<p>If you look closely, you&#8217;ll see that the middle capacitor on the right has leaked, and the others are bulging slightly.  Its a little hard to see unless you look closely, but they are faulty!</p>
<p style="text-align: left; padding-left: 30px;"><span style="color: #ff0000;">WARNING </span></p>
<p style="text-align: left; padding-left: 30px;"><span style="color: #ff0000;">There are high voltages present in the PSU even when it has been off for a while, so do _not_ take it apart unless you know what you are doing.  Otherwise, you are liable to shock yourself!</span></p>
<p>To take a Time Capsule apart, you need to carefully remove the plastic underpart first &#8211; some of these are easy to remove, some not.  One was a complete nightmare &#8211; took ages and ages to remove the plastic, and of course I managed to gouge my fingers in the process!</p>
<p>Once removed, its a matter of unscrewing the 3 thousand tiny screws that hold the metal base in, and popping the metal base out.</p>
<div id="attachment_429" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/IMG_9122.jpg"><img class="size-medium wp-image-429" title="IMG_9122" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/IMG_9122-300x200.jpg" alt="" width="300" height="200" /></a><p class="wp-caption-text">Time Capsule plastic undergarments and my patented &quot;pad extraction tool, which I also use for opening Mac Mini&#39;s.&quot;</p></div>
<p style="text-align: center;">
<p>In the two I fixed this week, I decided the easiest course of action was not to replace the power supply caps, but instead to remove the PSU completely, and re-use the existing connectors.</p>
<p>If you look at the left corner of the PSU (I&#8217;ve already destroyed mine removing the connectors), there should be 3 separate cables bunched together.</p>
<p>The Black power connector with only 1 cable is the 12v line.<br />
The power line with 4 wires is the 5v line<br />
and the power line with the most wires +-5 cables? is the ground.</p>
<p>As 5v / 12v is a fairly easy PSU type to find, I&#8217;ve just cannibalized some old 3.5&#8243; HDD case PSU&#8217;s to remake the cable.  Those are really cheap to buy &#8211; 30-40RMBish locally USD$5+-</p>
<p>The Apple PSU is a 12v 1.2A and 5v 3A.  The PSU&#8217;s I used are 2A, but seem to be ok.  Worst case, I can replace them if the Time Capsule draws too much current.  I think it should be fine though, as the drives don&#8217;t really draw that much juice anyway.  Only real current draw is when the drive initially powers up, and the Time Capsule seems to delay that till after its finished booting, so its less of a power draw.</p>
<p>The 2 PSU&#8217;s I used were fairly similar.  I chopped the connector end off, both had 3 wires inside, so it was just a matter of using a multimeter to work out what wire carried what voltage, and then soldering the relevant ones to the connectors I removed from the PSU.</p>
<p>Tip &#8211; Push the new cable through the old power cable hole, then make a small loop on the other side with the cable *before* you solder the connectors.  That way the cable can&#8217;t pull through and possibly break some / strain something later.<br />
Bear in mind that the fan also mounts just above the power, so it might be a bit of a squeeze putting it all back together!</p>
<p>Solder the 3 wires to the relevant connectors, wrap up with electrical tape, and test without the HDD initially to make sure the yellow power light comes on.</p>
<p>If that comes up ok, power down again, connect the HDD, and recheck.  If all is good, then put it back together!<br />
I didn&#8217;t bother putting the plastic mat back under my Time Capsule.</p>
<p>Here&#8217;s how my completed Repaired Time Capsule looks -</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/IMG_9121.jpg"><img class="aligncenter size-medium wp-image-430" title="IMG_9121" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/04/IMG_9121-300x200.jpg" alt="" width="300" height="200" /></a></p>
<p>So far its been working fine.  I also took the opportunity to replace the HDD with a new 2TB drive, as mine was a 500G.<br />
I&#8217;m enjoying the free space&#8230;</p>
<p>I think this is actually a better way of doing things for the Apple Time Capsule, as the PSU gets to be external, and there is less heat inside.</p>
<p>In theory this really should be something that Apple does a recall for, as its definitely an epidemic.  I&#8217;ve personally seen a couple, and there are continual reports on the web for the same things.  As Apple China is&#8230; not very good in our extensive experience -  <a href="http://www.badappleservice.cn/">http://www.badappleservice.cn/</a> cough, cough, I tend to fix this stuff myself.</p>
<p>Good links on all this here -</p>
<p><a href="http://forums.whirlpool.net.au/forum-replies-archive.cfm/1267631.html">http://forums.whirlpool.net.au/forum-replies-archive.cfm/1267631.html</a></p>
<p>There is also a PDF document on how to do this, but as its on that heinous den of iniquities (Google), its not accessible in China.<br />
Should be on this link, but I can&#8217;t check, and I do no illegal evil, so no bypassing the most glorious firewall, that blocketh half the damn internet for me&#8230;<br />
<a href="http://sites.google.com/site/lapastenague/a-deconstruction-of-routers-and-modems">http://sites.google.com/site/lapastenague/a-deconstruction-of-routers-and-modems</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2010/04/time-capsule-repair/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When DNS goes bad &#8211; China&#8217;s Firewall goes global.. crossing.</title>
		<link>http://www.computersolutions.cn/blog/2010/03/when-dns-goes-bad-chinas-firewall-goes-global-crossing/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=when-dns-goes-bad-chinas-firewall-goes-global-crossing</link>
		<comments>http://www.computersolutions.cn/blog/2010/03/when-dns-goes-bad-chinas-firewall-goes-global-crossing/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 20:22:54 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[China Related]]></category>
		<category><![CDATA[Technical Mumbo Jumbo]]></category>
		<category><![CDATA[anycast]]></category>
		<category><![CDATA[AS]]></category>
		<category><![CDATA[autonomica]]></category>
		<category><![CDATA[BGP]]></category>
		<category><![CDATA[china]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[global crossing]]></category>
		<category><![CDATA[netnod]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[root servers]]></category>
		<category><![CDATA[tld]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=416</guid>
		<description><![CDATA[When DNS goes bad This year someone in China misconfigured something which effectively exported China&#8217;s main method of implementing blocks (man in the middle DNS spoofing) semi globally over the Global Crossing backbone for the last few weeks. Effectively, China&#8217;s blocking, went global (for certain providers). This is a little technical, so bear with me [...]]]></description>
			<content:encoded><![CDATA[<p><strong>When DNS goes bad</strong></p>
<p>This year someone in China misconfigured something which effectively exported China&#8217;s main method of implementing blocks (man in the middle DNS spoofing) semi globally over the Global Crossing backbone for the last few weeks.</p>
<p>Effectively, China&#8217;s blocking, went global (for certain providers).</p>
<p><span id="more-416"></span></p>
<p>This is a little technical, so bear with me while I try to put in into laymans terms!</p>
<p>When you ask for www.somesite.com, a query is sent to your ISP&#8217;s DNS servers asking for the i.p. address.  If those DNS servers don&#8217;t know, they in turn who then ask their upstream DNS servers (if they exist) and so on, until one of them will then ask the root servers who is responsible for that domain.<br />
These root level servers are based geographically, and are the arbiters of whether a domain is resolvable or not.<br />
If they don&#8217;t know about a domain, then essentially that domain doesn&#8217;t exist, as they are the servers that other servers rely on.<br />
If for instance a root level server suddenly decided it didn&#8217;t know who it should send CN names to, then that entire section of the net would be unresolvable for anyone who used those root servers.</p>
<p>This has actually happened at least once already; Swedish .se domains dropped off the internet completely for a few hours to a day (dependent on caching) due to a misplaced full stop in October 2009.</p>
<p>This is not what was happened with this instance, but hey, its the _same_ company (different division) again with another DNS issue.</p>
<p>I&#8217;ll start with the infrastructure -</p>
<p>Swedish company NetNod (aka Autonomica)  has a DNS root server* here in China  &#8211; I.ROOT-SERVERS.NET / 192.36.148.17</p>
<p>*Server in this case actually refers to many servers providing a DNS service as i.root-servers.net<br />
i.root-servers.net servers are geographically located all over Asia (and other places).</p>
<p>(See below for a map)</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/03/rootserver.gif"><img class="alignnone size-full wp-image-417" title="rootserver" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/03/rootserver.gif" alt="" width="600" height="482" /></a></p>
<p>A root server as stated, is almost the final arbiter of any DNS lookup.  It knows which servers service top level domains (TLD&#8217;s). So its the one that gets to tell your DNS server where .com, .net,  .cn, .hk, queries should be sent to.<br />
All these root servers also provide caching, so if (as is probable), someone else asks for that domain again, it knows how to answer.</p>
<p>Netnod, like other companies that provide root level servers, use a mechanism called anycast to deliver users to the best destination server for the DNS query.</p>
<p>[ From Wikipedia - In anycast, there is a one-to-many association between network addresses and network endpoints: each destination address identifies a set of receiver endpoints, but only one of them is chosen at any given time to receive information from any given sender. ]</p>
<p>Anycast operates over BGP to delegate best routing to a destination based on AS  (automated system) rules.<br />
Anycast by design, is inherently insecure,  as anyone at the right stage of the chain can intercept packets for the anycast address.  This is really able to be done by routers at the BGP level of routing, so AS owners rely on each other not to mess around.<br />
Essentially, if you are trusted enough to have an AS, you are trusted enough not to screw up.</p>
<p>[ From Wikipedia - On the Internet, anycast is usually implemented by using BGP to simultaneously announce the same destination IP address range from many different places on the Internet. This results in packets addressed to destination addresses in this range being routed to the "nearest" point on the net announcing the given destination IP address.</p>
<p>AS - An autonomous system (AS) is a collection of connected IP routing prefixes under the control of one or more network operator that presents a common, clearly defined routing policy to the Internet (cf. RFC 1930, Section 3.]</p>
<p>Ok, so now you have a pseudo glossed over idea about BGP, AS, and Anycast, I can continue <img src='http://www.computersolutions.cn/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Computers in other countries (mostly on Global Crossing networks, as noted above) were starting to get spurious DNS results.</p>
<p>If you remember above, the NetNod root server based in China, uses AnyCast via BGP to talk to things asking about DNS.  If we look at the BGP routing for the  I.ROOT-SERVERS.NET, we can get an idea of how things are laid out from a network perspective</p>
<p>I.ROOT-SERVERS.NET sits in AS29216<br />
Robtex (which is unfortunately blocked in China), shows the connectivity for that block here -<br />
<a href="http://www.robtex.com/as/as29216.html#graph">http://www.robtex.com/as/as29216.html#graph</a></p>
<p>AS29216 apparently only links to AS8674 (NETNOD-IX).<br />
That AS block talks to quite a few others, including one named AS24151.<br />
AS24151 is controlled by CNNIC.</p>
<p>CNNIC is a China government run .cn domain management organization*<br />
<em>(*In practice. They may or may not be government owned in what passes for &#8220;reality&#8221; here).</em></p>
<p>What happened (allegedly, as I haven&#8217;t read up completely about this on the dns-operations list), is that another DNS server upstream of AS8674 (most probably on AS2151) came along and said hey!  I&#8217;m a root level server.</p>
<p>This &#8220;rogue&#8221; root server sat in the anycast block in use by I.ROOT-SERVERS.NET, and advertised themselves as a root node, randomly intercepting traffic (as by design this is supposed to happen in Anycast).  This shouldn&#8217;t happen, but as AS2151 is trusted by the other AS&#8217;s they accepted its announcement about having a root node server, and the other nodes started caching its queries.</p>
<p>This started causing all sorts of sporadic mischief, as other servers started caching those &#8220;bad&#8221; (China firewalled) results from the I.ROOT-SERVERS.NET rogue server.</p>
<p>Normally this would be a regional issue, but as BGP is not best distance based, but AS based, other AS&#8217;s close (from a network perspective)  that also use Anycast via BGP would take answers from that node for queries too.</p>
<p>This &#8220;rogue&#8221; root node was configured to do its DNS in standard China Firewall style, and null route/  block servers &#8211; eg Youtube, Facebook, Twitter…</p>
<p>As it was responding to DNS queries via Anycast in the Root level server AS, other secondary DNS servers and upward were querying it, caching the bad responses, and then null routing those major US based internet services within their own regions.</p>
<p>This started happening intermittently over Global Crossing nodes until the problem was spotted and resolved.</p>
<p>Users locations as far away as California, Chile, and China (although admittedly here its broken by design) were getting DNS results &#8220;China style&#8221;.</p>
<p>Lots of finger pointing went on until the people running NetNod/Autonomica eventually twigged that this was happening, and stopped accepting BGP / Anycast routes from AS2151 at AS29216, which meant that things would get back to normal after caching expired.</p>
<p>Its quite possible this was just a screwup on someones part here within CNNIC, but the tin foil hat wearing brigade may think otherwise.  Personally I put this down to either testing purposes, or user error.  Understanding the intricacies of implementation and its implications is harder than it first appears, and its easy to screw up.  That said, it did take a lot of coincidence for this to happen like that, and acting like a root server would put a noticeable amount of additional load on the server(s) doing the replies, so it would be noticed as least on that level.</p>
<p>This isn&#8217;t the first time this *exact* issue has happened on a global scale either. Network operators in Pakistan did a similar thing in 2008 which affected Youtube globally, with users getting similar bad routing as far away as UK.</p>
<p>What does this mean for the future?</p>
<p>Trust is a delicate issue, and it looks like people will eventually no longer implicitly trust upstream or downstream providers on BGP to do the right thing.</p>
<p>Ironically Autonomica / NetNod are some of the people involved with making sure this kind of thing *doesn&#8217;t* happen again!</p>
<p>Autonomica are involved quite heavily in something called DNSSEC.</p>
<p>DNS queries don&#8217;t mandate security, so a query can be resolved by a server in the right place, at the wrong time (as seen above).  With DNSSEC, the queried server will be the one that answers you using a signed key, so any rogue server in place should not be able to work as it doesn&#8217;t have the correct credentials.  It also means that a rogue server would be more easily spotted as the keys can be readily identified for a given server.</p>
<p>DNSSEC is in the process of being rolled out, and it looks like things like this will only mandate the rollout goes faster.</p>
<p>Unsuprisingly China is not quite convinced this is a solution, mostly I suspect, as this will break their DNS firewalling methods..</p>
<p>DNSSec rollout map, and a rather excellent talk about this and other DNS issues by Paul Wouter is here:</p>
<p><a href="http://www.xelerance.com/dnssec/">http://www.xelerance.com/dnssec/</a></p>
<p><a href="http://www.xelerance.com/talks/sector/Sector2007DNSSEC.pdf">http://www.xelerance.com/talks/sector/Sector2007DNSSEC.pdf</a></p>
<p>China is also not without its own DNS issues (other than the deliberately implemented ones) as anyone who lives here has experienced.</p>
<p>Last year May saw most of China&#8217;s DNS completely collapse for a day as provider DNSPOD was subject to an inadvertent DoS attack via queries against Baofeng.com. Good PDF on that here by China Telecom Guangzhou staff Ziqian Liu &#8211; <a href="https://www.dns-oarc.net/files/workshop-200911/Ziqian_Liu.pdf">https://www.dns-oarc.net/files/workshop-200911/Ziqian_Liu.pdf</a></p>
<hr width=400>
<p>Further reading and research materials below:</p>
<p><a href="http://www.sciencedirect.com/science?_ob=ArticleURL&amp;_udi=B6VNT-4S807WG-G&amp;_user=10&amp;_coverDate=04%2F30%2F2008&amp;_rdoc=1&amp;_fmt=high&amp;_orig=browse&amp;_sort=d&amp;view=c&amp;_acct=C000050221&amp;_version=1&amp;_urlVersion=0&amp;_userid=10&amp;md5=ccc0471388f3fb33fcecdd3409f4f9cc">http://www.sciencedirect.com/science?_ob=ArticleURL&amp;_udi=B6VNT-4S807WG-G&amp;_user=10&amp;_coverDate=04%2F30%2F2008&amp;_rdoc=1&amp;_fmt=high&amp;_orig=browse&amp;_sort=d&amp;view=c&amp;_acct=C000050221&amp;_version=1&amp;_urlVersion=0&amp;_userid=10&amp;md5=ccc0471388f3fb33fcecdd3409f4f9cc</a> Pakistan DNS security weakness</p>
<p><a href="http://en.wikipedia.org/wiki/DNSSEC">http://en.wikipedia.org/wiki/DNSSEC</a> DNS Security</p>
<p><a href="http://royal.pingdom.com/2009/10/13/sweden%25E2%2580%2599s-internet-broken-by-dns-mistake/">http://royal.pingdom.com/2009/10/13/sweden%25E2%2580%2599s-internet-broken-by-dns-mistake/</a> Sweden disappears from the net</p>
<p><a href="http://www.netnod.se/dns_root_nameserver.shtml">http://www.netnod.se/dns_root_nameserver.shtml</a> &#8211; NetNod&#8217;s website</p>
<p><a href="http://www.isoc.org/briefings/020/">http://www.isoc.org/briefings/020/</a> &#8211; DNS Root server FAQ&#8217;s</p>
<p><a href="http://blogs.csoonline.com/1179/chile_nic_explains_great_firewall_incident">http://blogs.csoonline.com/1179/chile_nic_explains_great_firewall_incident</a></p>
<p><a href="https://lists.dns-oarc.net/pipermail/dns-operations/2010-March/005267.html">https://lists.dns-oarc.net/pipermail/dns-operations/2010-March/005267.html</a> &#8211; DNS issue list where this was noted.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2010/03/when-dns-goes-bad-chinas-firewall-goes-global-crossing/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Behind the scenes &#8211; Backups at Computer Solutions</title>
		<link>http://www.computersolutions.cn/blog/2010/03/behind-the-scenes-backups-at-computer-solutions/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=behind-the-scenes-backups-at-computer-solutions</link>
		<comments>http://www.computersolutions.cn/blog/2010/03/behind-the-scenes-backups-at-computer-solutions/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 14:35:46 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Technical Mumbo Jumbo]]></category>
		<category><![CDATA[automysqlbackup]]></category>
		<category><![CDATA[backups]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[restore]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=385</guid>
		<description><![CDATA[I was reading a post up at Carsonified (http://carsonified.com/blog/dev/bulletproof-backups-for-mysql/), which talked about MySQL backups. While he slightly re-invents the wheel, its fairly similar to what we do over at Computer Solutions as a solution for Backup. How do we do it? Step 1 &#8211; Database backups (snapshot dump of the database) First is to backup [...]]]></description>
			<content:encoded><![CDATA[<p>I was reading a post up at Carsonified (<a href="http://carsonified.com/blog/dev/bulletproof-backups-for-mysql/">http://carsonified.com/blog/dev/bulletproof-backups-for-mysql/</a>), which talked about MySQL backups.</p>
<p>While he slightly re-invents the wheel, its fairly similar to what we do over at Computer Solutions as a solution for Backup.</p>
<p>How do we do it?</p>
<p><span id="more-385"></span></p>
<h1>Step 1 &#8211; Database backups (snapshot dump of the database)</h1>
<p>First is to backup the database(s) to the filesystem in a common folder.<br />
We run MySQL daily backups to a folder under /home/dbbackup on all our servers using an easy to install backup shell script:</p>
<p><a href="http://sourceforge.net/projects/automysqlbackup/">http://sourceforge.net/projects/automysqlbackup/</a></p>
<p>Debian users can easily install via:</p>
<p><code>apt-get install automysqlbackup</code></p>
<p>On our servers we run automysqlbackup at midnight; and it automatically handles daily, weekly, monthly folders + rotation (no need to reinvent the wheel).<br />
Thanks to the wonders of logging, we can spot a visual effect of whats happening on our daily logs.</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/03/mail.computersolutions.cn-mysql_bytes-day.png"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/03/mail.computersolutions.cn-mysql_bytes-day.png" alt="" title="mail.computersolutions.cn-mysql_bytes-day" width="495" height="271" class="alignnone size-full wp-image-388" /></a></p>
<p>The astute will notice that mysql usage goes a little ballistic as the script kicks in.<br />
A weekly view shows this in a clear manner also.</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/03/mail.computersolutions.cn-mysql_bytes-week.png"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/03/mail.computersolutions.cn-mysql_bytes-week.png" alt="" title="mail.computersolutions.cn-mysql_bytes-week" width="495" height="271" class="alignnone size-full wp-image-389" /></a></p>
<p>The backup script runs on all our servers daily.  This essentially provides a daily snapshot of all the databases on that server.  If any issues occur during the backup, I get emailed a copy of the problems.<br />
This is useful for letting me know when a database table is corrupt, or something else went wonky.</p>
<p>Sample errors below:</p>
<blockquote><p>mysqldump: Got error: 1044: Access denied for user &#8216;debian-sys-maint&#8217;@'localhost&#8217; to database &#8216;information_schema&#8217; when using LOCK TABLES<br />
mysqldump: Got error: 1146: Table &#8216;consumer_aware.mw_category&#8217; doesn&#8217;t exist when using LOCK TABLES<br />
mysqldump: Got error: 1146: Table &#8216;counselasia.wp_email&#8217; doesn&#8217;t exist when using LOCK TABLES<br />
mysqldump: Got error: 1146: Table &#8216;joomla_versatility.jos_bannertrack&#8217; doesn&#8217;t exist when using LOCK TABLES<br />
mysqldump: Got error: 1146: Table &#8216;wp_counselasia.wp_counselterm_taxonomy&#8217; doesn&#8217;t exist when using LOCK TABLES</p></blockquote>
<p>(Errors above were corrupt tables, and a MySQL 5.1 issue that AutoMySQLBackup needs a small change for)</p>
<p>(We use the debian-sys-maint as backup user, so it needs lock tables privileges for information_schema)<br />
<code><br />
mysql -u root -p<br />
use mysql;<br />
update user set lock_tables_priv='Y' where host='localhost' and user='debian-sys-maint';<br />
exit;</code></p>
<p>That works for me, but others have also had to do this small addition to their automysqlbackup config file:</p>
<p><code># OPT string for use with mysqldump ( see man mysqldump )<br />
OPT="--quote-names --skip-opt --add-drop-table --create-options --disable-keys --extended-insert --quick --set-charset" </code></p>
<p>It doesn&#8217;t cover all issues that might occur though (see my notes at the bottom for things that have/can happen)</p>
<h1>Step 2 &#8211; RSync</h1>
<p>We then rsync the entire home folder system (which is where I store all the user specific data) to another pseudo-dedicated backup server.<br />
The rsync is setup to run an hour or two after the mysql backup script.  From experience, the MySQL backup usually takes about 15 minutes max even on the largest MySQL database server we have (mostly as clients DB&#8217;s compress nicely, and the total data size is usually a few hundred megabytes at max per user).</p>
<p>Rsync runs daily (usually in our early 2am &#8211; 4am period).<br />
Its setup as a service on each of our servers, and I have 3 separate folders we backup.</p>
<p>/etc<br />
[I've found it useful to backup conf specific stuff, and it typically runs in less than a second]</p>
<p>/var/qmail<br />
[We use qmail, so I backup the entire qmail folder structure.  The queue will need to be rebuilt in case of a hardware failure, but configuration, and other settings are nice to have.   Our user mail is actually stored in /home/vpopmail (as are user accounts), so that goes in a separate backup.  This usually completes in a few seconds]</p>
<p>/home<br />
[As we also run backups across multiple servers I specifically exclude any /home/backup folder, as this is usually my dumping ground for the backups.  This backup typically takes anywhere from 5 minutes to a few days depending on the amount of changes to be synced over.]</p>
<p>rsync is set to run via cron in /etc/cron.daily or /etc/cron.weekly or /etc/cron.monthly as applicable.</p>
<p>In our case we have a number of servers to backup over a few continents, and web + mysql takes roughly 600GB in total (still fairly easy to stick onto a single drive though).<br />
As machines are scattered around different / regions  it can take a few days to complete an initial backup if I deploy a new backup server.<br />
To avoid issues, I do a simple file test in my rsync cron script which gets deleted at the finish of the script.  If the script gets run a second time it checks for the file, and aborts if found.  This prevents multiple instances being run each day, which can cause issues for the initial long running backup.</p>
<h1>Step 3 &#8211; Backing up the backups!</h1>
<p>I also do a weekly backup of the complete backup folder to a different server so I have some &#8220;history&#8221;.<br />
This is fairly easy to setup &#8211; I just backup the backup folder from our &#8220;central&#8221; backup to a different server by sticking an rsync script in an appropriate folder &#8211; /etc/cron.weekly/monthly&#8230;,<br />
To facilitate, I setup, stick a spare 1TB or larger drive in mounted at /home/backup, and let it run.</p>
<p>As I&#8217;m still a little paranoid, to make it _even_ safer, I also do a monthly off-site of the backups.  This sits in a live-spare server in our office.</p>
<p>I also maintain multiple backup copies of certain data in different locations, just in case(tm).<br />
These are all kept in non user accessible drives on specific servers.  </p>
<p>As mentioned in the blog post I linked to, no backup regimen is actually useful until you&#8217;ve actually had to use it!<br />
We get at least 1 request a month to restore data or database(s), so I get to use this quite often.</p>
<p>The only time I&#8217;ve really needed multiple levels of backup was during our week of repeated Seagate drives failures (multiple hardware failures due to a faulty batch of bad drives); we got to test the backup infrastructure repeatedly, so I know that it all works well!</p>
<h1>Notes</h1>
<p>If your database is in iffy condition  &#8211; eg latin1 encoding, with UTF-8 data, or similar, the backup will be what MySQL thinks the encoding is.<br />
This may not mesh with what it actually is.<br />
Corrupt tables or filesystem issues can also cause errors.</p>
<p>AutoMySQLBackup can be configured to email you on issues, as can Rsync.<br />
Encoding related ones will not be seen until a restore is attempted, but other issues will be.<br />
I have successfully restored databases even with &#8220;corrupt&#8221; encoding data, whether it was latin1 -> utf8 or utf8 double encoding.<br />
MySQL does need some handholding though if that needs to happen though. </p>
<p>Having different snapshots of your data from different time periods (eg, daily, weekly, monthly) is important (and thats why I do it!).<br />
The number of times clients have come back with &#8220;oh I deleted something 2 weeks ago&#8221;, and I&#8217;ve been able to restore it has meant that they&#8217;re happy.</p>
<p>That said, it does mean you need to use a whack of drives for backup purposes.<br />
Luckily drive sizes get larger each year, and prices drop, so its an acceptable expense!</p>
<p>Some of you may question why we don&#8217;t use RAID for the above.<br />
We do use RAID hardware in some of our servers (usually 3ware 9000 series controllers), however RAID only protects against hardware failure, not against user mishap, or malicious intent.  RAID is not a replacement for backup!</p>
<p>Lawrence.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2010/03/behind-the-scenes-backups-at-computer-solutions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixing a TL-WR941N (journeys in shopping on Taobao)</title>
		<link>http://www.computersolutions.cn/blog/2010/03/fixing-a-tl-wr941n-journeys-in-shopping-on-taobao/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=fixing-a-tl-wr941n-journeys-in-shopping-on-taobao</link>
		<comments>http://www.computersolutions.cn/blog/2010/03/fixing-a-tl-wr941n-journeys-in-shopping-on-taobao/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 12:38:57 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[Technical Mumbo Jumbo]]></category>
		<category><![CDATA[jtag]]></category>
		<category><![CDATA[openwrt]]></category>
		<category><![CDATA[serial]]></category>
		<category><![CDATA[soldering]]></category>
		<category><![CDATA[taobao]]></category>
		<category><![CDATA[tplink]]></category>
		<category><![CDATA[ttl]]></category>
		<category><![CDATA[uboot]]></category>
		<category><![CDATA[wiggler]]></category>
		<category><![CDATA[wr941n]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=372</guid>
		<description><![CDATA[As its been a while since I did any hardware stuff (other than some dabbling in Arduino), I decided I would try and resuscitate a bricked 941n router. I had given it to the staff to fiddle with, but they needed a push in the right direction for where to start. First I needed tools. [...]]]></description>
			<content:encoded><![CDATA[<p>As its been a while since I did any hardware stuff (other than some dabbling in Arduino), I decided I would try and resuscitate a bricked 941n router.  I had given it to the staff to fiddle with, but they needed a push in the right direction for where to start.</p>
<p>First I needed tools.<br />
Luckily China is pretty awesome when it comes to getting electronic bits and pieces so most of what I needed was a mere Taobao away.</p>
<p>As the crap soldering irons in the office weren&#8217;t going to hack it, my first purchase was a decent soldering iron.<br />
I took a look at the Wellers (which I used in a previous lifetime), and decided that the pricing was a little too steep for my liking!<br />
Taobao had plenty of  cough, cough  &#8216;clone&#8217; Hako 936&#8242;s though, so I bought one of those, 10 tips and some solder for a little less than 200RMB delivered to the office.</p>
<p>I could have gone to buy it over in the electronics mall over in Beijing lu, but seriously, Taobao is easier.</p>
<p>While I was at it, I also orderd a Rek DC power supply, and some JTAG cables.<br />
The PSU isn&#8217;t totally useful for router hacking, but we do have a lot of people that forget to bring laptop chargers with them, so it will come in handy for that.  Looks pretty nifty too.</p>
<div id="attachment_373" class="wp-caption alignnone" style="width: 310px"><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/03/Photo-on-2010-03-13-at-19.15.jpg"><img class="size-medium wp-image-373" title="Hako 936 and Rek DC PSU" src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/03/Photo-on-2010-03-13-at-19.15-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Hako 936 and Rek DC PSU</p></div>
<p>Next up was a serial to ttl adaptor, as the TP-Link uses TTL voltage apparently, and I needed to convert into standard pc serial.<br />
I bought 2 adaptors, one USB one, with rather crappily made headers, and a rather nicer serial one with pin&#8217;s.</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/03/IMG_0379.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/03/IMG_0379-300x225.jpg" alt="" title="max232 ttl serial thingy" width="300" height="225" class="alignnone size-medium wp-image-380" /></a></p>
<p>As I&#8217;m rather crap at soldering, I totally expected things to bork something up, but amazingly I got the headers installed relatively easily, and even managed to bridge pad (R356) to enable serial first go (as per the wiki).</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/03/IMG_0376.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/03/IMG_0376-300x225.jpg" alt="" title="Router with header soldered on" width="300" height="225" class="alignnone size-medium wp-image-378" /></a></p>
<p>I plugged in my serial adaptor to the computer, and powered up the router.<br />
Suprisingly everything worked first time around, and I got some serial output in HyperTerminal.</p>
<p>A few nanoseconds later I got to experience again how much I hated HyperTerminal.<br />
Grumble cpu usage grumble frozen input grumble mutter,&#8230; and installed PuttyTel instead.</p>
<p>Putty also seems to autodetect the kernel speed nicely (as boot changes from 9600 to 115,200baud), which is a bonus.</p>
<p>I still need to time it right so I can catch the u-boot in time to stop it, and, I also still need to reflash it, but the hard part is done!</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/03/IMG_0380.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/03/IMG_0380-225x300.jpg" alt="" title="Success! It lives!" width="225" height="300" class="alignnone size-medium wp-image-381" /></a></p>
<p>Total cost &#8211; roughly 250RMB for parts (soldering iron, tips,  serial ttl adaptor, pin headers, jtag stuff etc), plus about an hour of time, most of which emcompassed clearing my desk enough so I could solder <img src='http://www.computersolutions.cn/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I&#8217;m all setup for more journeys into equipment though, and I can now completely recover borked equipment handily.</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/03/IMG_0375.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/03/IMG_0375-300x225.jpg" alt="" title="Hakko 936" width="300" height="225" class="alignnone size-medium wp-image-377" /></a></p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2010/03/IMG_0374.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2010/03/IMG_0374-300x225.jpg" alt="" title="Rek PSU" width="300" height="225" class="alignnone size-medium wp-image-376" /></a></p>
<p>Useful pages:<br />
<a href="http://wiki.openwrt.org/inbox/tp-link.tl-wr941nd">http://wiki.openwrt.org/inbox/tp-link.tl-wr941nd</a> (Pinouts)<br />
<a href="https://forum.openwrt.org/viewtopic.php?id=18354&amp;p=1 ">https://forum.openwrt.org/viewtopic.php?id=18354&amp;p=1 </a>(Thread on TL-WR941 hacking)</p>
<p>Firmware files:<br />
<a href="http://downloads.openwrt.org/snapshots/trunk/ar71xx/">http://downloads.openwrt.org/snapshots/trunk/ar71xx/</a></p>
<p>Taobao shopping:<br />
<a href="http://item.taobao.com/auction/item_detail-db1-3fbe7be878a7aa35dd4ec1e4260113e8.jhtml">http://item.taobao.com/auction/item_detail-db1-3fbe7be878a7aa35dd4ec1e4260113e8.jhtml</a> (RS232 TTL)<br />
<a href="http://item.taobao.com/auction/item_detail-db2-3c9886e66da40119a6c72fe03c4b8d38.jhtml">http://item.taobao.com/auction/item_detail-db2-3c9886e66da40119a6c72fe03c4b8d38.jhtml</a> (Hakko 936 + tips)<br />
<a href="http://item.taobao.com/auction/item_detail-0db1-4fbc4e80f96ae37dbd34b9cb466aa642.jhtml?cm_cat=0">http://item.taobao.com/auction/item_detail-0db1-4fbc4e80f96ae37dbd34b9cb466aa642.jhtml?cm_cat=0</a> (Wiggler JTAG)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2010/03/fixing-a-tl-wr941n-journeys-in-shopping-on-taobao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dell Mini 3i / OPhone Hacking thoughts / notes</title>
		<link>http://www.computersolutions.cn/blog/2010/03/dell-mini-3i-ophone-hacking-thoughts-notes/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=dell-mini-3i-ophone-hacking-thoughts-notes</link>
		<comments>http://www.computersolutions.cn/blog/2010/03/dell-mini-3i-ophone-hacking-thoughts-notes/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 20:48:16 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[China Related]]></category>
		<category><![CDATA[Technical Mumbo Jumbo]]></category>
		<category><![CDATA[dell mini3i]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[mini3i]]></category>
		<category><![CDATA[ophone]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=370</guid>
		<description><![CDATA[Currently I have an iPhone (ancient 2G), and have just bought a Dell Mini3i (600RMB with an 18month contract @ China Telecom), as I donated my 3G iPhone to one of the extended family back home. The Mini3i runs an Android variant called OPhone. The 3i is a little underwhelming software wise. Its quite crap [...]]]></description>
			<content:encoded><![CDATA[<p>Currently I have an iPhone (ancient 2G), and have just bought a Dell Mini3i (600RMB with an 18month contract @ China Telecom), as I donated my 3G iPhone to one of the extended family back home.</p>
<p>The Mini3i runs an Android variant called OPhone.</p>
<p>The 3i is a little underwhelming software wise.</p>
<p>Its quite crap at the moment as its sitting on Android 1.0 (OPhone 1.0), but for all intents and purposes Android = Ophone its pretty much the same underneath.</p>
<p>There are a bunch of similar phones to this &#8211; the Lenovo O1, LG GW880, Motorola something or other (can&#8217;t be hassled to go look) etc.</p>
<p>While I haven&#8217;t rooted mine just yet, I have been playing around, and reading the Chinese forums.</p>
<p>Boot loader appears to be similar on all the devices &#8211; its made by BORQ&#8217;s in Beijing, and appears to be quite basic.</p>
<p>Motorola and O1 seem to have the best support for now, the main problem in the Chinese forums is people bitching about being stuck on older versions.</p>
<p>Some are running 1.6, most on 1.5, and the unlucky few 1.0 &#8220;Ophone&#8221;<br />
2.0 and 2.1 has yet to hit the mainstream here.</p>
<p>There are people with N1/G5&#8242;s (Nexus 1 / HTC G5) on 2.1 though (yes, thats you in Beijing Tom!), pretty much any phone is available, although anything with wifi is essentially grey import from overseas (HK mostly)</p>
<p>Back to the phone -</p>
<p>Thankfully you can install any apps as apk&#8217;s, no need to hack for that  &#8211; so its fairly easy to get info on the innards.</p>
<p>RootExplorer is your friend <img src='http://www.computersolutions.cn/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>RootExplorer also allows you to remount partitions r/w, so root access is fairly easy too.  There are precompiled su binaries for 1.5 out there, although I&#8217;ve yet to do my phone.</p>
<p>The Dell mini3 is running on a Marvell Tabor.  Fast chip, nice touchscreen, decent resolution, just crap on 1.0.  </p>
<p>Firmware files for most of the &#8220;ophones&#8221; (except motorola) are mff files.</p>
<p>The mff files appear to just be compressed images with instructions for how to write the various partitions out.</p>
<p>eg the Lenovo O1 mff has this in the &#8220;mff&#8221; zip </p>
<p>2010/02/25  10:53       147,111,936 factory_CHERRY.fbf<br />
2010/02/25  10:53               249 factory_CHERRY.mff.mlt<br />
2010/02/25  10:53               364 JADE_EVB_RawNANDx16.ini<br />
2010/02/25  10:53               327 magic_fbf.ini<br />
2010/02/25  10:53             2,692 magic_fbf_inner.ini<br />
2010/02/25  10:53        10,236,719 mfw.pac<br />
2010/02/25  10:53            54,180 MHLV_NTDKB_h.bin<br />
2010/02/25  10:53               176 MHLV_NTDKB_TIM.bin<br />
2010/02/25  10:53               858 NTIM_td.ini</p>
<p>magic_fbf_inner.ini has the layout</p>
<p>[INTEL_FLASH_DEVICE_INPUT_FILE]<br />
Number_of_Images=24</p>
<p>[IMAGE_HEADER_0]<br />
Start_Address=0&#215;240000<br />
Image_Length=0&#215;40000<br />
EraseBlocks=1<br />
WriteImage=0<br />
VerifyWrite=0</p>
<p>[IMAGE_HEADER_1]<br />
Start_Address=0&#215;6900000<br />
Image_Length=0xf00000<br />
EraseBlocks=1<br />
WriteImage=0<br />
VerifyWrite=0</p>
<p>(etc)</p>
<p>Different phones have different firmware writing software, the Motorola&#8217;s are using RSDLite, LG &#8211; SML_OMS, CTHall, others something homegrown called Firebolt, which is written by BORQS.  I have all the firmware tools already, despite the Ophone8 forums lack of courtesy in sharing, grrr.</p>
<p>Most firmware tools appear similar though functionality wise.<br />
Haven&#8217;t played around inside the phone yet to see if its easy to get jtag access, although that was mostly because i couldn&#8217;t work out how to remove the top part without breaking it.</p>
<p>If anyone wants more info, or a firmware dump let me know.</p>
<p>Hopefully there is some interest out there in the English speaking world for these!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2010/03/dell-mini-3i-ophone-hacking-thoughts-notes/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
