<?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</title>
	<atom:link href="http://www.computersolutions.cn/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.computersolutions.cn/blog</link>
	<description>Whats happening at Computer Solutions</description>
	<lastBuildDate>Thu, 17 May 2012 12:11:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Email troubleshooting &#8211; a detective story.</title>
		<link>http://www.computersolutions.cn/blog/2012/05/email-troubleshooting-a-detective-story/</link>
		<comments>http://www.computersolutions.cn/blog/2012/05/email-troubleshooting-a-detective-story/#comments</comments>
		<pubDate>Thu, 17 May 2012 12:11:50 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Technical Mumbo Jumbo]]></category>
		<category><![CDATA[china]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[troubleshooting]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=843</guid>
		<description><![CDATA[As our clients probably know, we run our own email servers. Email is one of those things that looks simple on the surface, but isn&#8217;t necessarily so simple when it comes down to troubleshooting. As is typical, the day started with a trouble ticket from a client letting us know that they were having difficulties [...]]]></description>
			<content:encoded><![CDATA[<p>As our clients probably know, we run our own email servers.</p>
<p>Email is one of those things that looks simple on the surface, but isn&#8217;t necessarily so simple when it comes down to troubleshooting.</p>
<p>As is typical, the day started with a trouble ticket from a client letting us know that they were having difficulties receiving mail from one of their clients.</p>
<p>I was also given enough information to start troubleshooting without having to ask for additional information, which was nice, as this sometimes takes time to get.  </p>
<p>We do have an email issues page with some notes and instructions for what is needed linked off of our <a href="http://mail.computersolutions.cn">webmail</a> page;  the issues page is  <a href="http://www.computersolutions.cn/en/email/mail-issues-ticketing-form.html">here.</a></p>
<p>The bounce message supplied included headers, so it was fairly straightforward to work out what server they were using.</p>
<p>The sender (junglefish.com) was seeing the below as an error, when emailing us:</p>
<p><code>Failure notice from mxttb2.hichina.com:</p>
<p>I'm afraid I wasn't able to deliver your message to the following addresses.<br />
This is a permanent error; I've given up. Sorry it didn't work out.<br />
</code></p>
<p>As we have multiple mail servers in different countries, I first needed to identify which server they were connecting too, so I could check logs.</p>
<p>I usually do this by searching through our logs for occurrences of the senders domain.</p>
<p>If that doesn&#8217;t find any results, then I lookup what their mail servers should be and check for entries in our logs from those servers.</p>
<p>This doesn&#8217;t always guarantee a result, but in this case I had enough information to get a result.</p>
<p>Our sender was coming from junglefish.net, so I checked to see what mail servers they might use.</p>
<p>To check what mail servers are used, we check the MX (Mail Exchanger) records for their domain.  In this instance I used dig &#8211; a dns lookup tool.</p>
<p><code>dig mx junglefish.net</p>
<p>junglefish.net.         3600  IN    MX    10 mail.junglefish.net.<br />
junglefish.net.         3600  IN    MX    0 mail.junglefish.net.<br />
 </code></p>
<p>We can see that mail is served by mail.junglefish.net for the junglefish.net domain.  We can also see that the MX records are incorrect, as their are  2 entries pointing at the same server with different preferences.  This won&#8217;t cause mail to be rejected though, so its not the issue we&#8217;re looking for.</p>
<p>Next we check the ip address for mail.junglefish.net</p>
<p>Some mail servers are on shared servers, so the domain name does not always match up with the ip address.  We need the ip address as we need to search the logs for that, or addresses close to that range.</p>
<p>A simple ping should return their ip address.</p>
<p><code><br />
ping mail.junglefish.net</p>
<p>Reply from 218.244.133.134...<br />
</code></p>
<p>In this instance, mail.junglefish.net points at 218.244.133.134</p>
<p>As mail servers also require valid reverse DNS entries, I also checked if that ip address has a valid reverse dns entry with nslookup.</p>
<p><code>nslookup 218.244.133.134<br />
Server:		::1<br />
Address:	::1#53</p>
<p>Non-authoritative answer:<br />
134.133.244.218.in-addr.arpa	name = out133-134.mxttb2.hichina.com.</code></p>
<p>In this case, their reverse DNS is out133-134.mxttb2.hichina.com<br />
Just to double check thats valid, I pinged the name, and got a valid response.</p>
<p><code>ping  out133-134.mxttb2.hichina.com<br />
PING out133-134.mxttb2.hichina.com (218.244.133.134) 56(84) bytes of data.<br />
64 bytes from out133-134.mxttb2.hichina.com (218.244.133.134): icmp_req=1 ttl=51 time=29.0 ms</code></p>
<p>So, we&#8217;ve done some basic checks -</p>
<p>We&#8217;ve checked that the sender domain has MX records.<br />
We&#8217;ve checked that their mail server exists, and it has both forward and reverse dns.</p>
<p>Next up, I need to search the logs for connections from their server.</p>
<p>If I search for connections to our mail servers from 218.244.133 I saw the following:</p>
<p>USA &#8211; no results.<br />
CN &#8211; no results.<br />
CN2 &#8211; rejections.</p>
<p>Looking at the logs, I immediately saw that our server was rejecting their mail for failing MFCHECK</p>
<p><code>@400000004fb3951e1f2ee324 tcpserver: ok 8328 mail.smartshanghai.com:211.144.68.52:25 out133-134.mxttb2.hichina.com:218.244.133.134::51396<br />
@400000004fb3951e28966374 jgreylist[8328]: 218.244.133.134: OK known<br />
@400000004fb3952504477f44 qmail-smtpd[8328]: MFCHECK fail [218.244.133.134] junglefish.net</code></p>
<p>The MFCHECK code checks the domain portion of the envelope sender address (in the MAIL FROM command) to make sure it&#8217;s a real domain which has at least one MX record. This prevents spammers from being able to use phony domain names in their forged sender addresses.  </p>
<p>In this case, our server was rejecting mail from them due to this failure.</p>
<p>As we didn&#8217;t have sufficient logs to see *why* this was happening, I turned on full connection logging for their ip address, and asked them to send us another mail.</p>
<p>They did so, and I checked the logs for what was happening.<br />
(see below)</p>
<p><code>@400000004fb48fad0004630c tcpserver: ok 17315 mail.smartshanghai.com:211.144.68.52:25 out133-134.mxttb2.hichina.com:218.244.133.134::50611<br />
 400000004fb48fae061430c4 17315 > 220 mail.smartshanghai.com NO UCE ESMTP<br />
 400000004fb48fae090ae354 17315 < EHLO mxttb2.hichina.com<br />
 400000004fb48fae090decac 17315 > 250-mail.smartshanghai.com NO UCE<br />
 400000004fb48fae090df094 17315 > 250-SIZE 0<br />
 400000004fb48fae090df47c 17315 > 250-PIPELINING<br />
 400000004fb48fae090df864 17315 > 250 8BITMIME<br />
 400000004fb48fae0c26ec7c 17315 < MAIL FROM:<XXXXXXXXX@junglefish.net><br />
 400000004fb48fc0396b0344 17315 > 451 DNS temporary failure (#4.3.0)<br />
 400000004fb48fc10a1b68f4 17315 < QUIT<br />
</code></p>
<p>In this case, their server started off the conversation with<br />
<code>EHLO mxttb2.hichina.com</code></p>
<p>As mail servers need to provide a valid domain that they claim to be sending from, I checked if mxttb2.hichina.com existed.<br />
It didn't.</p>
<p>So, that was the reason.</p>
<p>Having identified that, I whitelisted their server ip address for the MFCHECK portion of our checks, and asked them to resend mail again.</p>
<p>Unfortunately this did not let them send mail as they failed another test!  </p>
<p><code>@400000004fb495f92bd72ec4 qmail-smtpd[22644]: Received-SPF: error (mail.smartshanghai.com: error in processing during lookup of junglefish.net: DNS problem)</code></p>
<p>As SPF relies on TXT records, I tried to manually lookup their DNS</p>
<p><code>dig TXT junglefish.net</p>
<p>; <<>> DiG 9.7.3 <<>> TXT junglefish.net<br />
;; global options: +cmd<br />
;; Got answer:<br />
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 11512<br />
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0</code></p>
<p>That failed.</p>
<p>Hmmmm.</p>
<p>I then tried using an oversea's server to lookup their domain.</p>
<p><code>dig ns junglefish.net</p>
<p>; <<>> DiG 9.7.3 <<>> ns junglefish.net<br />
;; global options: +cmd<br />
;; Got answer:<br />
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41739<br />
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0</p>
<p>;; QUESTION SECTION:<br />
;junglefish.net.			IN	NS</p>
<p>;; ANSWER SECTION:<br />
junglefish.net.		2931	IN	NS	ns54.domaincontrol.com.<br />
junglefish.net.		2931	IN	NS	ns53.domaincontrol.com.</p>
<p></code></p>
<p>That lookup worked.</p>
<p>So, we're getting somewhere.</p>
<p>We've identified a number of issues, and its starting to look like their DNS servers are blocked in China from a cursory test.</p>
<p>To confirm this I checked if using their DNS servers worked from within China.</p>
<p>Check from ns53 fails -<br />
 nslookup<br />
> server ns53.domaincontrol.com<br />
Default server: ns53.domaincontrol.com<br />
Address: 216.69.185.27#53<br />
Default server: ns53.domaincontrol.com<br />
Address: 2607:f208:206::1b#53<br />
>  junglefish.net<br />
;; connection timed out; no servers could be reached</p>
<p>Check from ns54 fails -<br />
> server ns54.domaincontrol.com<br />
Default server: ns54.domaincontrol.com<br />
Address: 208.109.255.27#53<br />
Default server: ns54.domaincontrol.com<br />
Address: 2607:f208:302::1b#53<br />
> junglefish.net<br />
;; connection timed out; no servers could be reached<br />
> </p>
<p>As those failed, I tried pinging their server.<br />
ping ns54.domaincontrol.com<br />
PING ns54.domaincontrol.com (208.109.255.27) 56(84) bytes of data.<br />
^C<br />
--- ns54.domaincontrol.com ping statistics ---<br />
8 packets transmitted, 0 received, 100% packet loss, time 7056ms</p>
<p>Ping test fails</p>
<p>Next, I tried to see where it was failing with traceroute.</p>
<p>root@edm:/home/shanghaiguide# traceroute  ns54.domaincontrol.com<br />
traceroute to ns54.domaincontrol.com (208.109.255.27), 30 hops max, 60 byte packets<br />
 1  reserve.cableplus.com.cn (211.144.79.254)  5.723 ms  5.899 ms  6.078 ms<br />
 2  211.154.92.89 (211.154.92.89)  3.860 ms  3.878 ms  3.936 ms<br />
 3  211.154.64.94 (211.154.64.94)  3.545 ms  3.608 ms  3.686 ms<br />
 4  211.154.72.181 (211.154.72.181)  4.154 ms  4.421 ms  4.419 ms<br />
 5  202.96.222.73 (202.96.222.73)  4.657 ms  4.632 ms  4.635 ms<br />
 6  61.152.81.189 (61.152.81.189)  4.671 ms  5.401 ms  5.367 ms<br />
 7  61.152.86.50 (61.152.86.50)  6.387 ms  6.330 ms  6.301 ms<br />
 8  202.97.33.86 (202.97.33.86)  8.003 ms  7.941 ms  7.743 ms<br />
 9  202.97.33.254 (202.97.33.254)  7.829 ms  7.656 ms  7.647 ms<br />
10  202.97.50.114 (202.97.50.114)  175.491 ms  175.982 ms  171.405 ms<br />
11  202.97.52.218 (202.97.52.218)  155.507 ms  155.755 ms  155.750 ms<br />
12  218.30.54.150 (218.30.54.150)  191.389 ms  191.306 ms  191.544 ms<br />
13  * * *<br />
14  * * *<br />
15  * * *<br />
16  * * *<br />
17  * * *</p>
<p>Traceroute fails (at  218.30.54.150)</p>
<p>whois 218.30.54.150<br />
% [whois.apnic.net node-5]<br />
% Whois data copyright terms    http://www.apnic.net/db/dbcopyright.html</p>
<p>inetnum:        218.30.32.0 - 218.30.55.255<br />
netname:        CHINANET-US-POP<br />
descr:          Chinanet POP in American<br />
descr:          201 S. Lake Ave. Suite 604, Pasadena, CA 91101<br />
country:        CN<br />
admin-c:        CH93-AP<br />
tech-c:         CH93-AP<br />
mnt-by:         MAINT-CHINANET<br />
changed:        hostmaster@ns.chinanet.cn.net 20020221<br />
status:         ALLOCATED NON-PORTABLE<br />
source:         APNIC</p>
<p>So, it looks like there are 3 issues.</p>
<p>1) Invalid MX setup (although this is not going to stop mail from failing).<br />
2) Their Mail server claims to be a non-existent domain.<br />
(Note that this seems to have been subsequently rectified, as that domain now resolves).<br />
3) Their DNS servers are blocked within China.</p>
<p>To solve that, I added an external DNS lookup from outside the country.</p>
<p>In summation, simple things may involve multiple issues, as we can see from above!</p>
<p>In this case, we resolved the issue by whitelisting the senders ip to bypass the MFCHECK failure.  We then added external DNS resolvers to our Mail Servers to bypass the block.<br />
Lastly informed the sender, and the client of all of the issues noted so that they could be resolved.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2012/05/email-troubleshooting-a-detective-story/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fitbit first look &#8211; verdict: just say no.</title>
		<link>http://www.computersolutions.cn/blog/2012/04/fitbit-first-look-verdict-just-say-no/</link>
		<comments>http://www.computersolutions.cn/blog/2012/04/fitbit-first-look-verdict-just-say-no/#comments</comments>
		<pubDate>Wed, 11 Apr 2012 06:32:52 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[Cool Hunting]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[arstechnica]]></category>
		<category><![CDATA[first look]]></category>
		<category><![CDATA[fitbit]]></category>
		<category><![CDATA[gadget]]></category>
		<category><![CDATA[health]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[sucky]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=840</guid>
		<description><![CDATA[I&#8217;ll prefix this with my initial recommendation &#8211; don&#8217;t buy till they make it work. First though, a little introduction. I&#8217;m unhealthy. I like gadgets. I&#8217;m up for trying something that will improve my health. With that said, Arstechnica had a little opinion piece on a motion tracking device called the Fitbit &#8211; its a [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll prefix this with my initial recommendation &#8211; don&#8217;t buy till they make it work.</p>
<p>First though, a little introduction.</p>
<p>I&#8217;m unhealthy.  I like gadgets.<br />
I&#8217;m up for trying something that will improve my health.<br />
With that said, <a href="http://arstechnica.com/staff/forcequit/2012/04/how-the-fitbit-got-me-to-walk-more-and-be-part-of-society.ars">Arstechnica</a> had a little opinion piece on a motion tracking device called the Fitbit &#8211; its a motion sensor that tracks how much excercise you do during the day.</p>
<p>My interest was piqued, and I bought one based on the writeup there.<br />
Unfortunately my user experience was completely different to the one in the review.</p>
<p>Ordered and got mine online via Taobao, it arrived within 2 days, which was pretty good (although that has zero to do with fitbit, and more to do with the shop selling them here in China..)</p>
<p><a href="http://www.flickr.com/photos/sheedl/6920432252/" title="Untitled by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7072/6920432252_a7f5b59913.jpg" width="500" height="500" alt="Untitled"></a></p>
<p>There are chinese equivalents to this on the market, but as people have found, the chinese generally spend more emphasis on the manufacturing side over the software engineering side.  Mostly as factories here mostly do OEM work, rather than the longer term more lucrative, but riskier development.</p>
<p><a href="http://www.flickr.com/photos/sheedl/6920436064/" title="FitBit by sheedl, on Flickr"><img src="http://farm6.staticflickr.com/5311/6920436064_ede68b26b6.jpg" width="500" height="500" alt="FitBit"></a></p>
<p>China pedometers/ health sensors or Japanese ones (Citizen, and Casio mostly) are in the 150rmb range with USB, and about 300-400 for wifi ones (from a cursory check in taobao)</p>
<p>As stated, software is generally the difference between these things &#8211; Chinese can make good hardware, but software usually takes a backseat, hence my getting a US made (well Singapore made) device like the FitBit.</p>
<p>This is 700rmb locally, which matches up with the 99$ price + some profit for the seller.</p>
<p>Build quality is not as good as you&#8217;d expect for the price. It feels cheap, and has that its going to break within a month or two feel. The clip that it comes with has sharp edges, and pokes into your sides if you wear it. A little more care on the moulding process, and use of a softer plastics mix would yield a much more consumer friendly device that the current one.</p>
<p><a href="http://www.flickr.com/photos/sheedl/7066520515/" title="FitBit by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7192/7066520515_4d7718f25d.jpg" width="500" height="500" alt="FitBit"></a></p>
<p>Packaging is quite a bit too over engineered imho.  The transparent box the device comes with is nice, but essentially useless once out of the box. I&#8217;d rather they spent the money on the clip and device instead of on the packaging used.</p>
<p>That&#8217;s the physical side, onto the hardware.</p>
<p>Out of box experience isn&#8217;t great (I&#8217;m a Mac user).</p>
<p>You get told to download the App, which I did, and install.</p>
<p>Unfortunately the App just doesn&#8217;t work. You can&#8217;t signup. You can&#8217;t bypass the App either to use the device. This isn&#8217;t a network issue, as its the same over a VPN or without (which often is the issue within China).</p>
<p>Looking at the console logs shows that their site is returning a site is offline message to the app, but the app doesn&#8217;t display this, nor does their site indicate in any manner that its down.</p>
<p>eg</p>
<p><code>Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: Apr 11 12:34:08 Lozs-iMac.local MacUserInterface[5076] <Debug>: Processing action 'http'...<br />
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: Apr 11 12:34:08 Lozs-iMac.local MacUserInterface[5076] <Alert>: Ignoring unexpected HTTP response [19].<br />
Apr 11 12:34:08 Lozs-iMac fitbitd[5076]: <FBURLLoader: 0x100225c60>: Request for http://client.fitbit.com:80/device/tracker/uploadData completed.<br />
Apr 11 12:34:08 Lozs-iMac MacUserInterface[5076]: WriteHTML called with NULL target.<br />
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: Apr 11 12:34:08 Lozs-iMac.local MacUserInterface[5076] <Debug>: Processing action 'http'...<br />
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: Apr 11 12:34:08 Lozs-iMac.local MacUserInterface[5076] <Alert>: WriteHTML called with NULL target.<br />
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: Apr 11 12:34:08 Lozs-iMac.local MacUserInterface[5076] <Debug>: NULL-targeted HTML:<br />
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><br />
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: <html><br />
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: <head><br />
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: <meta http-equiv="content-type" content="text/html; charset=utf-8"><br />
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]:<br />
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]:<br />
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]:<br />
<style type="text/css">
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: * {margin: 0; padding: 0; border: 0;}
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: html {font: 14px/1.3 helvetica, "Lucida Grande", sans-serif; background: #e3e4e4; color: #666;}
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: a {text-decoration: none; color: #018be3;}
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: a:hover {text-decoration: underline;}
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: #page {overflow: hidden; width: 572px; padding: 24px;}
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: #main {min-height: 302px; border: 1px solid #cbcbcb; background: #fff;}
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: * html #main {height: 302px;}
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: #main h1 {padding: 10px 20px; height: 27px; font-size: 20px; font-weight: normal; background: #fc3; color: #000;}
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: #main p {padding-bottom: 20px;}
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: #main .content {padding: 40px 20px 0;}
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: .nav {list-style: none; overflow: hidden; margin-top: 15px;}
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: .nav * {float: left;}
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: .nav li {padding: 1px; background: #666; height: 31px; line-height: 29px; text-transform: capitalize;}
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: .nav li.restart {float: right; background: #ac083a;}
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: .nav li a {padding: 0px 20px; border-width: 1px; border-style: solid; font-size: 14px; text-decoration: none; color: #fff;}
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: .nav li.close a {background: #909090; border-color: #ddd;}
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: .nav li.restart a {padding: 0px 10px; background: #f36; border-color: #ea7191; border-bottom-color: #f36; border-right-width: 0px;}
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: </style>
<p>Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: </head><br />
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]:<br />
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: <body><br />
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]:
<div id="page">
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]:
<div id="main">
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]:<br />
<h1>We'll be back soon!</h1>
<p>Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]:
<div class="content">
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]:
<p>Fitbit.com is currently undergoing a little planned maintenance. Sorry for the inconvenience.</p>
<p>Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]:
<p>P.S. Yes, we're still counting your steps!</p>
<p>Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: <span>Fitbit Team</span><br />
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: </div>
<p>Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: </p></div>
<p>Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]:
<ul class="nav">
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]:
<li class="close"><a href="fitbit:close">Cancel</a></li>
<p>Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]:
<li class="restart"><a href="fitbit:restart">Start over</a></li>
<p>Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: </ul>
<p>Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: </p></div>
<p>Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: </body><br />
Apr 11 12:34:08 Lozs-iMac com.fitbit.fitbitd[5076]: </html></code></p>
<p>Ok, so the app doesn&#8217;t work that well.</p>
<p>How about the website and integration?</p>
<p>Well, the very first thing I tried their also didn&#8217;t work.<br />
Their Facebook signup sync doesn&#8217;t work either.</p>
<p><code>"Unable to finish authorization with Facebook. Received Facebook error response of type OAuthException: Error validating application. Invalid application ID."</code></p>
<p>I&#8217;d really like to like this, but so far I&#8217;m really underwhelmed.<br />
If it actually worked I&#8217;d probably be introducing this to all my friends and expounding on the virtues of exercise and gadgets and such, but not in this case.</p>
<p>I haven&#8217;t been able to use mine yet, and I&#8217;m already fairly unimpressed with what I&#8217;ve seen so far.   It has glimmers of brilliance &#8211; the unit has a neat display that shows steps counted, and possibly some other custom messages that I would be able to set if their software actually worked, but I can&#8217;t.</p>
<p>Will see what their support is like, and update this further when I get replies.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2012/04/fitbit-first-look-verdict-just-say-no/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>King of Game JAMMA Board reverse engineering</title>
		<link>http://www.computersolutions.cn/blog/2012/03/king-of-game-jamma-board-reverse-engineering/</link>
		<comments>http://www.computersolutions.cn/blog/2012/03/king-of-game-jamma-board-reverse-engineering/#comments</comments>
		<pubDate>Wed, 28 Mar 2012 02:53:37 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[Arcade Machines]]></category>
		<category><![CDATA[Firmware]]></category>
		<category><![CDATA[ARM]]></category>
		<category><![CDATA[JAMMA]]></category>
		<category><![CDATA[Reverse Engineering]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=829</guid>
		<description><![CDATA[As visitors to my office have noticed, we&#8217;ve been building a bunch of arcade machines for clients. Here are a couple of pics of the builds in progress: Chassis&#8217;s undergoing painting Unfinished machine While making those is fun, I also have an interest in what powers them. Arcade Machines are really just a wooden box, [...]]]></description>
			<content:encoded><![CDATA[<p>As visitors to my office have noticed, we&#8217;ve been building a bunch of arcade machines for clients.<br />
Here are a couple of pics of the builds in progress:</p>
<p>Chassis&#8217;s undergoing painting<br />
<img src="http://farm8.staticflickr.com/7277/6865112392_dd3ca8f8ba.jpg"></p>
<p>Unfinished machine<br />
<a href="http://www.flickr.com/photos/sheedl/6840355354/" title="Untitled by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7043/6840355354_2335610d97.jpg" width="500" height="500" alt=""></a></p>
<p>While making those is fun, I also have an interest in what powers them.</p>
<p>Arcade Machines are really just a wooden box, a display, a controller board, input (buttons and joysticks), and a PSU, they&#8217;re pretty basic devices.  There is an industry cabling standard &#8211; JAMMA which makes connecting them up nice and easy.  </p>
<p>China has a number of hardware choices for powering them, ranging from PC based boards, original arcade boards, and what I think is the better solution for older games &#8211; emulation under embedded ARM/MIPS, vs dedicated boards.</p>
<p>We went through a number of different versions of hardware available here until I found something I liked.</p>
<p>Our currently build hardware du jour runs off of something called &#8220;King of Game&#8221;.<br />
As is usual in China, no documentation, and the factory is less than forthcoming with information.</p>
<p><a href="http://www.flickr.com/photos/sheedl/7022629041/" title="King of Arcade by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7100/7022629041_3a71a5b46d.jpg" width="500" height="500" alt="King of Arcade"></a></p>
<p>Still, not unusual.</p>
<p>The device does have some interesting features for the would be hacker &#8211; </p>
<p><a href="http://www.flickr.com/photos/sheedl/7022744283/" title="Untitled by sheedl, on Flickr"><img src="http://farm7.staticflickr.com/6042/7022744283_d9e7ff9433.jpg" width="500" height="500" alt=""></a></p>
<p>It has a nicely labelled &#8220;Boot&#8221; button, and the component count is quite low.  Which generally means its SoC (System on a Chip) based.<br />
The factory has done a little bit of prep work in making sure us ev1l hackorz won&#8217;t get at the juicy bits by etching off the cpu.</p>
<p>A quick look at the chip pin count, and the usual choice of chipset SoC more or less got me the right answer in a few minutes though.</p>
<p>My guess was Ingenic 4850, and it turned out to be the Ingenic 4755.  This is a MIPS based X-Burst CPU</p>
<p>Even though they&#8217;re  Chinese vendor, Ingenic does a great job in providing readily available information about their chipset(s).  Kudos to the Ingenic guys in Beijing for being so open!</p>
<p>Datasheets for the 4755 and more importantly toolchains are readily available at the Ingenic FTP site &#8211; <a href="ftp://ftp.ingenic.cn/2soc/4750">ftp://ftp.ingenic.cn/2soc/4750</a></p>
<p>Back to the board.</p>
<p>The King of Game board has USB onboard.<br />
Plugging it into a computer shows the flash files available, but unfortunately not the firmware bits I need to see / change (e.g. to upgrade emulator capabilities, and change graphics).</p>
<p>If I hold down boot and plug in the USB, I get prompted for the Ingenic 4750 drivers.<br />
Those are relatively easy to find on the ingenic site, so get a hold of those yourselves.</p>
<p>In order to connect to the board, you use a USB_BOOT.exe (there are also Linux tools available).<br />
I downloaded usbboot-1.4b <a href='http://www.computersolutions.cn/blog/wp-content/uploads/2012/03/usbboot1.4b-tools.rar'>usbboot1.4b-tools</a>, and unzipped that.</p>
<p>The USB Boot file needs a config file though &#8211; and the default config files supplied didn&#8217;t work <img src='http://www.computersolutions.cn/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>So, off to check what could be up.</p>
<p>The USB_Boot utility requires a bunch of settings in order to communicate with a board.  After a bit of fiddling playing around with possible options I got it talking to the board.<br />
While I&#8217;m not certain I have the settings completely correct here is what I have right now:</p>
<p><code></p>
<p>[PLL]<br />
EXTCLK			24			;Define the external crystal in MHz<br />
CPUSPEED		336			;Define the PLL output frequency<br />
PHMDIV			3			;Define the frequency divider ratio of PLL=CCLK:PCLK=HCLK=MCLK<br />
BOUDRATE		57600			;Define the uart boudrate<br />
USEUART			0			;Use which uart, 0/1 for jz4740,0/1/2/3 for jz4750</p>
<p>[SDRAM]<br />
BUSWIDTH		16			;The bus width of the SDRAM in bits (16|32)<br />
BANKS		  	4			;The bank number (2|4)<br />
ROWADDR	  		12			;Row address width in bits (11-13)<br />
COLADDR	  		9			;Column address width in bits (8-12)<br />
ISMOBILE	  	0			;Define whether SDRAM is mobile SDRAM, this only valid for Jz4750 ,1:yes 0:no<br />
ISBUSSHARE	  	1			;Define whether SDRAM bus share with NAND 1:shared 0:unshared</p>
<p>[NAND]<br />
BUSWIDTH		8			;The width of the NAND flash chip in bits (8|16|32)<br />
ROWCYCLES		3			;The row address cycles (2|3)<br />
PAGESIZE		2048			;The page size of the NAND chip in bytes(512|2048|4096)<br />
PAGEPERBLOCK		64			;The page number per block<br />
FORCEERASE		0			;The force to erase flag (0|1)<br />
OOBSIZE			64			;oob size in byte<br />
ECCPOS         		6			;Specify the ECC offset inside the oob data (0-[oobsize-1])<br />
BADBLACKPOS     	0			;Specify the badblock flag offset inside the oob (0-[oobsize-1])<br />
BADBLACKPAGE    	127   			;Specify the page number of badblock flag inside a block(0-[PAGEPERBLOCK-1])<br />
PLANENUM		1			;The planes number of target nand flash<br />
BCHBIT	  		4			;Specify the hardware BCH algorithm for 4750 (4|8)<br />
WPPIN			0			;Specify the write protect pin number<br />
BLOCKPERCHIP		0			;Specify the block number per chip,0 means ignore</p>
<p>[END]<br />
</code></p>
<p>If I put the board into USB boot mode (hold down boot button, and plug into the usb), then run the USB_TOOL.EXE file I can communicate</p>
<p><code><br />
 Welcome!<br />
 USB Boot Host Software!<br />
 USB Boot Software current version: 1.4b<br />
 Handling user command.<br />
 USBBoot :> list</p>
<p> Device number can connect :1<br />
 USBBoot :> help</p>
<p> Command support in current version:<br />
 help          print this help;<br />
 boot          boot device and make it in stage2;<br />
 list          show current device number can connect;<br />
 fconfig       set USB Boot config file;<br />
 nquery        query NAND flash info;<br />
 nread         read NAND flash data with checking bad block and ECC;<br />
 nreadraw      read NAND flash data without checking bad block and ECC;<br />
 nreadoob      read NAND flash oob without checking bad block and ECC;<br />
 nerase        erase NAND flash;<br />
 nprog         program NAND flash with data and ECC;<br />
 nmark         mark a bad block in NAND flash;<br />
 go            execute program in SDRAM;<br />
 version       show current USB Boot software version;<br />
 exit          quit from telnet session;<br />
 readnand      read data from nand flash and store to SDRAM;<br />
 load          load file data to SDRAM;<br />
 run           run command script in file;<br />
 memtest       do SDRAM test;<br />
 gpios         let one GPIO to high level;<br />
 gpioc         let one GPIO to low level;<br />
 sdprog        program SD card;<br />
 sdread        read data from SD card;<br />
 USBBoot :> boot</p>
<p> Usage: boot (1)<br />
 1:device index number<br />
 USBBoot :> boot 0</p>
<p> Checking state of No.0 device: Unboot<br />
 Now booting No.0 device:<br />
 Download stage one program and execute at 0x80002000: Pass<br />
 Download stage two program and execute at 0x80c00000: Pass<br />
 Boot success!<br />
 Now configure No.0 device:<br />
 Now checking whether all configure args valid:<br />
 Current device information: CPU is Jz4750<br />
 Crystal work at 24MHz, the CCLK up to 336MHz and PMH_CLK up to 112MHz<br />
 Total SDRAM size is 16 MB, work in 4 bank and 16 bit mode<br />
 Nand page size 2048, ECC offset 6, bad block ID 127, use 1 plane mode<br />
 Configure success!<br />
</code></p>
<p>Next up, read the firmware off the flash, and dump it to see which version of the Dingoo code they most probably ripped off <img src='http://www.computersolutions.cn/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2012/03/king-of-game-jamma-board-reverse-engineering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bluetooth notes for Debian/ Linux</title>
		<link>http://www.computersolutions.cn/blog/2012/03/bluetooth-notes-for-debian-linux/</link>
		<comments>http://www.computersolutions.cn/blog/2012/03/bluetooth-notes-for-debian-linux/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 06:16:28 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[Technical Mumbo Jumbo]]></category>
		<category><![CDATA[Useful Info]]></category>
		<category><![CDATA[bluetooth]]></category>
		<category><![CDATA[gnokii]]></category>
		<category><![CDATA[hci]]></category>
		<category><![CDATA[sms]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=825</guid>
		<description><![CDATA[Some reminder notes for myself for playing around with Bluetooth adaptors. Note that bluetooth seems to be incredibly flaky &#8211; at least from my tests. I would often get timeouts and failures. Results will depend on the radio environment around you&#8230; Plus apparently the bluetooth adaptors I have all have the same mac address, so [...]]]></description>
			<content:encoded><![CDATA[<p>Some reminder notes for myself for playing around with Bluetooth adaptors.</p>
<p>Note that bluetooth seems to be incredibly flaky &#8211; at least from my tests.<br />
I would often get timeouts and failures.  Results will depend on the radio environment around you&#8230;<br />
Plus apparently the bluetooth adaptors I have all have the same mac address, so thats also an issue if you encounter the same and have > 1 plugged into various computers&#8230;  Oh well, at least they were cheap!</p>
<p>Did some post mortem testing with a T series Thinkpad, seemed better, but still not 100% &#8211; I guess thats why people just don&#8217;t use it.</p>
<p>Install bluetooth &#8211; </p>
<p><code>apt-get install bluez-utils bluetooth</code></p>
<p>plug in a usb bluetooth adaptor<br />
reboot </p>
<p>This will install some useful bluetooth tools.<br />
hcitool, hciconfig, rfcomm are the basic command line bluetooth tools we&#8217;ll be using.</p>
<p>Hopefully at this point your device is recognized &#8211; </p>
<p><code>hcitool dev</code></p>
<p>This should return the mac address of the bluetooth adaptor:</p>
<p><code># hcitool dev<br />
Devices:<br />
	hci0	00:1F:81:00:08:30</code></p>
<p>If the address is 00:00:00:00:00:00, then its not setup, check dmesg and see what kind of device you have.</p>
<p>Heres mine &#8211; </p>
<p><code>lsusb<br />
Bus 001 Device 003: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)<br />
</code></p>
<p>And a grep of ooth (as could be BlueTooth or Bluetooth or bluetooth&#8230;) from dmesg</p>
<p><code><br />
dmesg | grep ooth<br />
[    4.845001] Bluetooth: Core ver 2.15<br />
[    4.845130] Bluetooth: HCI device and connection manager initialized<br />
[    4.845132] Bluetooth: HCI socket layer initialized<br />
[    4.891477] Bluetooth: Generic Bluetooth USB driver ver 0.6<br />
[    8.940263] Bluetooth: L2CAP ver 2.14<br />
[    8.940264] Bluetooth: L2CAP socket layer initialized<br />
[    8.943819] Bluetooth: RFCOMM TTY layer initialized<br />
[    8.943822] Bluetooth: RFCOMM socket layer initialized<br />
[    8.943823] Bluetooth: RFCOMM ver 1.11<br />
[    8.990134] Bluetooth: BNEP (Ethernet Emulation) ver 1.3<br />
[    8.990135] Bluetooth: BNEP filters: protocol multicast<br />
[    9.298370] Bluetooth: SCO (Voice Link) ver 0.6<br />
[    9.298372] Bluetooth: SCO socket layer initialized<br />
</code></p>
<p>If you don&#8217;t get a valid mac address, reboot, as that seemed to work for me.<br />
Yes, its a hassle, but I didn&#8217;t delve too deeply into what modules needed to load.<br />
If you don&#8217;t want to reboot I&#8217;ve modprobed for bluetooth and have the modules below post boot</p>
<p>You can try loading those with modprobe <module></p>
<p><code> lsmod | grep bluetooth<br />
bluetooth              41827  9 sco,bnep,rfcomm,l2cap,btusb<br />
rfkill                 13044  2 bluetooth<br />
</code></p>
<p>You can also use hciconfig to list the name of the device (this is what you&#8217;ll see listed in another device if you enable discovery&#8230;)</p>
<p><code>hciconfig -a name<br />
hci0:	Type: BR/EDR  Bus: USB<br />
	BD Address: 00:1F:81:00:08:30  ACL MTU: 1021:4  SCO MTU: 180:1<br />
	UP RUNNING PSCAN ISCAN<br />
	RX bytes:3551 acl:52 sco:0 events:140 errors:0<br />
	TX bytes:1243 acl:50 sco:0 commands:53 errors:7<br />
	Features: 0xff 0x3e 0x09 0x76 0x80 0x01 0x00 0x80<br />
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3<br />
	Link policy: RSWITCH HOLD SNIFF PARK<br />
	Link mode: SLAVE ACCEPT<br />
	Name: 'Accel-OB2'<br />
	Class: 0x000000<br />
	Service Classes: Unspecified<br />
	Device Class: Miscellaneous,<br />
	HCI Version: 2.0 (0x3)  Revision: 0x44<br />
	LMP Version: 2.0 (0x3)  Subversion: 0x3<br />
	Manufacturer: Cambridge Silicon Radio (10)<br />
</code></p>
<p>Assuming the above is working, hcitool dev gives you a mac address, then hcitool scan should give a list of nearby bluetooth devices.<br />
Suggest make something discoverable &#8211; eg a closeby desktop with bluetooth for testing.</p>
<p><code>hcitool scan<br />
Scanning ...<br />
	00:1E:52:EC:A5:50	apple’s iMac<br />
</code>	</p>
<p>As you can see I have a device close by<br />
Lets get some info about it</p>
<p><code># hcitool info 00:1E:52:EC:A5:50<br />
Requesting information ...<br />
	BD Address:  00:1E:52:EC:A5:50<br />
	Device Name: apple’s iMac<br />
	LMP Version: 2.0 (0x3) LMP Subversion: 0x7ad<br />
	Manufacturer: Cambridge Silicon Radio (10)<br />
	Features: 0xff 0xff 0x8f 0xfe 0x9b 0xf9 0x00 0x80<br />
		<3-slot packets> <5-slot packets> <encryption> <slot offset><br />
		<timing accuracy> <role switch> <hold mode> <sniff mode> </p>
<park state> <RSSI> <channel quality> <SCO link> <HV2 packets><br />
		<HV3 packets> <u-law log> <A-law log> <CVSD>
<paging scheme>
<power control>
<transparent SCO> <broadcast encrypt><br />
		<EDR ACL 2 Mbps> <EDR ACL 3 Mbps> <enhanced iscan><br />
		<interlaced iscan> <interlaced pscan> <inquiry with RSSI><br />
		<extended SCO> <EV4 packets> <EV5 packets> <AFH cap. slave><br />
		<AFH class. slave> <3-slot EDR ACL> <5-slot EDR ACL><br />
		<AFH cap. master> <AFH class. master> <EDR eSCO 2 Mbps><br />
		<EDR eSCO 3 Mbps> <3-slot EDR eSCO> <extended features><br />
</code></p>
<p>Ping it</p>
<p><code>l2ping  00:1E:52:EC:A5:50</p>
<p>Ping: 00:1E:52:EC:A5:50 from 00:1F:81:00:08:30 (data size 44) ...<br />
44 bytes from 00:1E:52:EC:A5:50 id 0 time 17.76ms<br />
44 bytes from 00:1E:52:EC:A5:50 id 1 time 31.87ms<br />
44 bytes from 00:1E:52:EC:A5:50 id 2 time 23.92ms<br />
</code></p>
<p>Lets try to connect to it</p>
<p><code><br />
hcitool cc  00:1E:52:EC:A5:50<br />
hcitool auth  00:1E:52:EC:A5:50<br />
</code></p>
<p>- For auth to work, you&#8217;ll need to setup a pincode file in  /var/lib/bluetooth/[mac address of the bluetooth adaptor inside your computer]/pincodes<br />
Add the mac address of the device you want to connect to, and the pincode e.g.</p>
<p><code>cat /var/lib/bluetooth/00:1F:81:00:08:30/pincodes</p>
<p>#mac address of device connecting to,   pin to use when connecting<br />
00:1E:52:EC:A5:50 0000</code></p>
<p>If you want to be able to see your computer from another device, make it visible -<br />
Make our computer visible to a bluetooth scan<br />
<code>hciconfig hci0 piscan</code></p>
<p>We can also setup a serial connection to our bluetooth device we want to connect to<br />
rfcomm sets up  a virtual serial port connection on the hci port specified.  Then you can access the device via a serial connection &#8211; eg for gnokii or similar.</p>
<p><code>rfcomm connect 0 00:1E:52:EC:A5:50</code></p>
<p>Assuming you&#8217;ve connected to the device, and setup an rfcomm serial connection, you can use gnokii to query the device.<br />
Gnokii is mostly for Nokia phones, but you can use AT commands to connect to other devices, such as iPhones etc.<br />
For my test purposes, I needed to assist with integrating SMS to PHP, so was looking at setting up a bluetooth connection to a phone, then querying that for sms&#8217;s every 30 seconds or so, then passing that to a db or php script.  Gnokii was the second part of that equation, as it can do some of that without too much headache.</p>
<p> (in gnokii &#8211; get the phone details)<br />
 <code>gnokii --shell 2> /dev/null</p>
<p> > --identify</p>
<p> #(in gnokii - get the first sms in the phone)<br />
 > --getsms IN 1<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2012/03/bluetooth-notes-for-debian-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MicroSATA to SATA Adaptor (Macbook Air SSD adaptor)</title>
		<link>http://www.computersolutions.cn/blog/2012/03/microsata-to-sata-adaptor-macbook-air-ssd-adaptor/</link>
		<comments>http://www.computersolutions.cn/blog/2012/03/microsata-to-sata-adaptor-macbook-air-ssd-adaptor/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 04:41:18 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Technical Mumbo Jumbo]]></category>
		<category><![CDATA[adaptor]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[macbook air]]></category>
		<category><![CDATA[micro sata]]></category>
		<category><![CDATA[sata]]></category>
		<category><![CDATA[ssd]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=821</guid>
		<description><![CDATA[As I have been doing quite a bit of SSD updating for people who have Air&#8217;s, I have a small collection of older smaller SSD&#8217;s lying around. Unfortunately the form factor means that they have been pretty useless in anything but a Macbook air &#8211; until now. I&#8217;ve been able to source some small scale [...]]]></description>
			<content:encoded><![CDATA[<p>As I have been doing quite a bit of SSD updating for people who have Air&#8217;s, I have a small collection of older smaller SSD&#8217;s lying around.</p>
<p>Unfortunately the form factor means that they have been pretty useless in anything but a Macbook air &#8211; until now.<br />
I&#8217;ve been able to source some small scale production samples of MicroSata -> Sata adaptors.</p>
<p>Photos below:</p>
<p>With Macbook Air SSD in situ<br />
<a href="http://www.flickr.com/photos/sheedl/6942832645/" title="MacBook Air SSD to SATA Adaptor by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7178/6942832645_99f2e3ab2c.jpg" width="500" height="500" alt="MacBook Air SSD to SATA Adaptor"></a></p>
<p>Front and back &#8211; not much circuitry really.<br />
<a href="http://www.flickr.com/photos/sheedl/6942834163/" title="MacBook Air SSD to SATA Adaptor by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7070/6942834163_7fa7b49ef5.jpg" width="500" height="500" alt="MacBook Air SSD to SATA Adaptor"></a></p>
<p>13.5cm length (which means can&#8217;t really be used in a laptop, sadly)<br />
<a href="http://www.flickr.com/photos/sheedl/6942840729/" title="MacBook Air SSD to SATA Adaptor by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7037/6942840729_c095e7db5b.jpg" width="500" height="500" alt="MacBook Air SSD to SATA Adaptor"></a></p>
<p>Side by side comparison with populated and unpopulated adaptor<br />
<a href="http://www.flickr.com/photos/sheedl/6942841705/" title="MacBook Air SSD to SATA Adaptor by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7057/6942841705_952d04ea59.jpg" width="500" height="500" alt="MacBook Air SSD to SATA Adaptor"></a></p>
<p>Unfortunately they&#8217;re not much use in anything but a desktop at the moment due to length (13.5cm), but it does bring new life to the ones I have <img src='http://www.computersolutions.cn/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Bonus, its a crapload cheaper for Air SSD&#8217;s than &#8220;normal&#8221; SSD&#8217;s &#8211; roughly half the price, so I can update some of the random desktops on the office.</p>
<p>Win / win!</p>
<p>If anyone is interested in purchasing some, let me know, and I&#8217;ll organize some more.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2012/03/microsata-to-sata-adaptor-macbook-air-ssd-adaptor/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Product Integration &#8211; eBuddy, ZoneMinder and me.</title>
		<link>http://www.computersolutions.cn/blog/2011/12/product-integration-ebuddy-zoneminder-and-me/</link>
		<comments>http://www.computersolutions.cn/blog/2011/12/product-integration-ebuddy-zoneminder-and-me/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 04:08:26 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[China Related]]></category>
		<category><![CDATA[Cool Hunting]]></category>
		<category><![CDATA[Tao Bao]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=814</guid>
		<description><![CDATA[Once again, random browsing on Taobao brought the need for me to shop for random crap^Hstuff. This time, I bought a USB eBuddy (for a grand total of 60RMB including shipping) The eBuddy is a small MSN / QQ physical avatar that performs certain actions based on its software &#8211; e.g. flashing lights, moving its [...]]]></description>
			<content:encoded><![CDATA[<p>Once again, random browsing on Taobao brought the need for me to shop for random crap^Hstuff.</p>
<p>This time, I bought a USB eBuddy (for a grand total of 60RMB including shipping)</p>
<p><a href="http://www.flickr.com/photos/sheedl/6456511375/" title="e-Buddy by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7159/6456511375_49a60fe145.jpg" width="500" height="500" alt="e-Buddy"></a></p>
<p><a href="http://www.flickr.com/photos/sheedl/6456655347/" title="eBuddy by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7009/6456655347_1b5a20ef5f.jpg" width="500" height="500" alt="eBuddy"></a></p>
<p>The eBuddy is a small MSN / QQ physical avatar that performs certain actions based on its software &#8211; e.g. flashing lights, moving its wings, shaking left or right etc.</p>
<p>It looks like a little white angel with MSN color wings.</p>
<p><a href="http://www.flickr.com/photos/sheedl/6456668803/" title="eBuddy by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7156/6456668803_397da87895.jpg" width="500" height="500" alt="eBuddy"></a></p>
<p>For a cheap toy, its actually quite cool.  Cute too, but cool also.</p>
<p>Out of the box, its aimed squarely at Windows users.  As I don&#8217;t actually run the devil&#8217;s OS, I hooked it up to a Debian box instead.<br />
I was hoping for a little bit of fun integrating it with things, but that was not to be.<br />
There is already a perfectly fine library written in Python that works beautifully to make it dance and sing* <a href="http://code.google.com/p/pybuddy-dx">here</a></p>
<p>*Dancing and singing void where prohibited.</p>
<p>The python library is already set to run as a daemon on port 8888, and sits waiting for action out of the box.<br />
The settings below snarfed from the code give an idea of what actions can be given:</p>
<p>Commands:</p>
<pre>
# GLADNESS =        00
# FEAR =            01
# FIZZ =            02
# PLEASANTSURPRISE =03
# GRIEF = 		04
# FURY = 		05
# QUELL = 		06
# REDHEAD = 		07
# GREENHEAD = 		08
# BLUEHEAD = 		09
# YELLOWHEAD =		10
# BLAME = 		11
# BLUEGREENHEAD =	12
# WHITEHEAD = 		13
# HEART = 		14
# WINGS = 		15
# BODY = 		16
# NOEFFECT = 		17
# ONLINE = 		18
# BUSY = 		19
# DAZE = 		20
# BACKSOON = 		21
# AWAY = 		22
# PHONE = 		23
# LUNCH = 		24
# OFFLINE = 		25
</pre>
<p>Mostly they consist of flashing various LED&#8217;s within the eBuddy on/off and optionally moving the wings or shaking the eBuddy left right.<br />
Simple, but effective.</p>
<p>I use Zoneminder in the office on my Debian based ZFS NAS (HP Proliant Microserver), so thought one fun way would be to integrate the eBuddy to Zoneminder.  This also proved to be too easy sadly.</p>
<p>Zoneminder has a wiki entry which gives 99% of whats needed <a href="http://www.zoneminder.com/wiki/index.php/FAQ#How_can_I_use_ZoneMinder_to_trigger_something_else_when_there_is_an_alarm.3F">here</a></p>
<p>I literally had to write 1 line of code to integrate the eBuddy with Zoneminder.</p>
<pre>
#!/usr/bin/perl -w

use strict;

use ZoneMinder;

$| = 1;

zmDbgInit( "myscript", level=>0, to_log=>0, to_syslog=>0, to_term=>1 );

my $dbh = DBI->connect( "DBI:mysql:database=".ZM_DB_NAME.";host=".ZM_DB_HOST, ZM_DB_USER, ZM_DB_PASS );

my $sql = "select M.*, max(E.Id) as LastEventId from Monitors as M left join Events as E on M.Id = E.MonitorId where M.Function != 'None' group by (M.Id)";
my $sth = $dbh->prepare_cached( $sql ) or die( "Can't prepare '$sql': ".$dbh->errstr() );

my $res = $sth->execute() or die( "Can't execute '$sql': ".$sth->errstr() );
my @monitors;
while ( my $monitor = $sth->fetchrow_hashref() )
{
    push( @monitors, $monitor );
}

while( 1 )
{
    foreach my $monitor ( @monitors )
    {
        next if ( !zmMemVerify( $monitor ) );

        if ( my $last_event_id = zmHasAlarmed( $monitor, $monitor->{LastEventId} ) )
        {
            $monitor->{LastEventId} = $last_event_id;
            print( "Monitor ".$monitor->{Name}." has alarmed\n" );
	    #The Single Line of Code - it sends a flash green signal to the Python Daemon
            system ("echo 8 | nc -q0 -u localhost 8888");
	    #
            # Do your stuff here
            #
        }
    }
    sleep( 1 );
}
</pre>
<p>I think I&#8217;ll be getting a couple more of these, as the integration is easy.<br />
Next up, server load monitoring &#8211; I can have a couple of these on the top of my desk for each server, and hopefully address each one separately for load purposes &#8211; e.g. flash yellow, red on load average, and shake if queue&#8217;s are large.<br />
Gimmicky, but useful.</p>
<p>Here are a couple of shots of the current incumbent in situ -</p>
<p><a href="http://www.flickr.com/photos/sheedl/6456694399/" title="eBuddy by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7008/6456694399_a277521e75.jpg" width="500" height="500" alt="eBuddy"></a></p>
<p>&#8230;and one of it actually working.<br />
(It flashes green if someone comes up the stairs and zone minder triggers.)</p>
<p><a href="http://www.flickr.com/photos/sheedl/6463884749/" title="eBuddy by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7002/6463884749_1f56a47238.jpg" width="500" height="500" alt="eBuddy"></a></p>
<p>I&#8217;m quite happy I spent the 60rmb, although I would have enjoyed more hacking.  I literally spent 5 minutes getting things running.<br />
Thats not a bad thing, but I was hoping for something a little deeper!</p>
<p>Going to order a few more now.<br />
I got mine here &#8211; <a href="http://item.taobao.com/item.htm?id=1799393549">http://item.taobao.com/item.htm?id=1799393549</a></p>
<p>Recommended.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2011/12/product-integration-ebuddy-zoneminder-and-me/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Art for arts sake&#8230; &#8211; Mao goes Dotty.</title>
		<link>http://www.computersolutions.cn/blog/2011/12/art-for-arts-sake-mao-goes-dotty/</link>
		<comments>http://www.computersolutions.cn/blog/2011/12/art-for-arts-sake-mao-goes-dotty/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 04:13:53 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[China Related]]></category>
		<category><![CDATA[Cool Hunting]]></category>
		<category><![CDATA[Tao Bao]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[mao]]></category>
		<category><![CDATA[poster]]></category>
		<category><![CDATA[shopping]]></category>
		<category><![CDATA[taobao]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=808</guid>
		<description><![CDATA[As its been a long while since I&#8217;ve done a non computer related post, its now time for something completely different. Anyone who has visited our office has noticed that we receive a bazillion packages daily from my various shopping exploits on Taobao, slayer of money. I just bought a new house back home, which [...]]]></description>
			<content:encoded><![CDATA[<p>As its been a long while since I&#8217;ve done a non computer related post, its now time for something completely different.</p>
<p>Anyone who has visited our office has noticed that we receive a bazillion packages daily from my various shopping exploits on Taobao, slayer of money.</p>
<p>I just bought a new house back home, which has started competing with Taobao on the where do I spend my spare change, and I&#8217;ve been interested in decorating it with some &#8220;art&#8221;.<br />
Yes, I know that one persons art is another persons &#8216;meh &#8211; you like that?  icky&#8217;, but each to his own.</p>
<p>I found a gorgeous looking <a href="http://www.image1000.cn/item.htm?spm=1103PYoj.3-37*to.h-1MfDN_&#038;id=8988995475&#038;frm=&#038;"> hi-res map of Shanghai</a> for sale at one quite nicely designed store ( <a href="http://www.image1000.cn/">http://www.image1000.cn/</a> ), and contacted the seller.</p>
<p><a href="http://www.computersolutions.cn/blog/wp-content/uploads/2011/12/T2lalOXeRaXXXXXXXX_12840958.jpg"><img src="http://www.computersolutions.cn/blog/wp-content/uploads/2011/12/T2lalOXeRaXXXXXXXX_12840958-300x160.jpg" alt="" title="T2lalOXeRaXXXXXXXX_!!12840958" width="300" height="160" class="aligncenter size-medium wp-image-809" /></a></p>
<p>Unfortunately he couldn&#8217;t sell the canvas image on a roll, as I needed for easy shipping back home, and could only sell pre-framed.  </p>
<p>Roll on two weeks later, and I was still thinking about having that in my lounge back home, so decided on making a test order to check out the packaging, and its survivability vs Shanghai kuaidi (delivery) companies.</p>
<p>I picked a minimalist dot version of Mao for 100RMB including shipping, and ordered.<br />
Two days later, Mao arrived.</p>
<p>Unpacking below:</p>
<p><a href="http://www.flickr.com/photos/sheedl/6439618171/" title="Mao by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7017/6439618171_b334f28a42.jpg" width="500" height="500" alt="Mao"></a><br />
Fresh from the Kuaidi company!</p>
<p><a href="http://www.flickr.com/photos/sheedl/6439619527/" title="Mao by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7147/6439619527_4940b34d7b.jpg" width="500" height="500" alt="Mao"></a><br />
Nice packaging touches.</p>
<p><a href="http://www.flickr.com/photos/sheedl/6439621125/" title="Mao by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7146/6439621125_8239fe15d9.jpg" width="500" height="500" alt="Mao"></a><br />
Uh oh!</p>
<p><a href="http://www.flickr.com/photos/sheedl/6439627441/" title="Mao by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7025/6439627441_c494412557.jpg" width="500" height="500" alt="Mao"></a><br />
Still well packed.</p>
<p><a href="http://www.flickr.com/photos/sheedl/6439629353/" title="Mao by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7141/6439629353_5e67b95944.jpg" width="500" height="500" alt="Mao"></a><br />
Kuaidi vs Packaging, who will win?</p>
<p><a href="http://www.flickr.com/photos/sheedl/6439640051/" title="Mao by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7143/6439640051_881bdeb415.jpg" width="500" height="500" alt="Mao"></a><br />
More uh-oh..</p>
<p><a href="http://www.flickr.com/photos/sheedl/6439643337/" title="Mao by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7141/6439643337_6fd64d2f16.jpg" width="500" height="500" alt="Mao"></a><br />
Packaging wins (although it was a close call).</p>
<p><a href="http://www.flickr.com/photos/sheedl/6439632593/" title="Mao by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7142/6439632593_7027d99bc5.jpg" width="500" height="500" alt="Mao"></a><br />
Phew, looks ok.</p>
<p><a href="http://www.flickr.com/photos/sheedl/6439639081/" title="Untitled by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7005/6439639081_0cd65138c4.jpg" width="500" height="500" alt=""></a><br />
Inside packaging (really really well packaged!)</p>
<p><a href="http://www.flickr.com/photos/sheedl/6439646029/" title="Mao by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7175/6439646029_d7d1e0b52a.jpg" width="500" height="500" alt="Mao"></a><br />
Even comes with the hanging equipment, which is a nice touch.</p>
<p><a href="http://www.flickr.com/photos/sheedl/6439647251/" title="Mao by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7008/6439647251_2ac567b8a5.jpg" width="500" height="500" alt="Mao"></a><br />
So much attention to detail (plastic cover strip for acrylic front frame &#8220;glass&#8221;)</p>
<p><a href="http://www.flickr.com/photos/sheedl/6439651899/" title="Twister^H Mao by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7145/6439651899_65bf4f8a32.jpg" width="500" height="500" alt="Twister^H Mao"></a><br />
Its Twister!</p>
<p><a href="http://www.flickr.com/photos/sheedl/6439654761/" title="Mao by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7019/6439654761_ea7478b711.jpg" width="500" height="500" alt="Mao"></a><br />
Oh wait, no, its Mao <img src='http://www.computersolutions.cn/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.flickr.com/photos/sheedl/6439662399/" title="Mao by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7033/6439662399_4c0b038aff.jpg" width="500" height="500" alt="Mao"></a><br />
Amjellybaby models the artwork.</p>
<p><a href="http://www.flickr.com/photos/sheedl/6439690529/" title="Mao by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7035/6439690529_922f3c1c87.jpg" width="500" height="500" alt="Mao"></a><br />
Finally, in situ!</p>
<p>Overall, reasonably happy with this.  Price is reasonable, and it (barely) survived the shipping company, so I think there would be a chance that a slightly better packaged version (i.e. adding a few layers of bubble wrap on the outside) will survive.</p>
<p>So, looks like I&#8217;ll be springing the 900rmb odd for the large canvas map version.</p>
<p>Wish me luck!</p>
<hr />
<p>Addendum </p>
<p>Ordered the large triptych and crossed my fingers that it would survive Emirates.<br />
It made the journey in better shape than the Mao print above did across Shanghai.  No dents and zero issues.</p>
<p>Here they are in my new house, awaiting hanging&#8230;</p>
<p><a href="http://www.flickr.com/photos/sheedl/6594259945/" title="Shanghai triptych by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7141/6594259945_cee902c23a.jpg" width="500" height="500" alt="Shanghai triptych"></a></p>
<p><a href="http://www.flickr.com/photos/sheedl/6594260349/" title="Shanghai triptych by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7153/6594260349_51ec11ffa0.jpg" width="500" height="500" alt="Shanghai triptych"></a></p>
<p>Pricey at 900rmb, but worth it.  Now I can point at locations on the satellite image and tell people I was here when they come visit the house!</p>
<p>2nd Addendum &#8211; final shot of this in place, finally on the wall after 2 weeks of sitting on the floor&#8230;  </p>
<p><a href="http://www.flickr.com/photos/sheedl/6685774499/" title="Untitled by sheedl, on Flickr"><img src="http://farm8.staticflickr.com/7143/6685774499_5a47e6870c.jpg" width="500" height="500" alt=""></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2011/12/art-for-arts-sake-mao-goes-dotty/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chinese Laser Engraver modding</title>
		<link>http://www.computersolutions.cn/blog/2011/11/chinese-laser-engraver-modding/</link>
		<comments>http://www.computersolutions.cn/blog/2011/11/chinese-laser-engraver-modding/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 16:22:54 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[Lasers]]></category>
		<category><![CDATA[Useful Info]]></category>
		<category><![CDATA[cnc]]></category>
		<category><![CDATA[cutter]]></category>
		<category><![CDATA[engraver]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[laos]]></category>
		<category><![CDATA[laser]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=799</guid>
		<description><![CDATA[As I&#8217;ve been dabbling in the mad sciences recently, I thought I&#8217;d get some more toys. This culminated in the purchase of a laser engraver. This is it sitting next to another interesting toy I own &#8211; a CNC. He who dies with the most toys wins dontcha know The engraver came with some exceedingly [...]]]></description>
			<content:encoded><![CDATA[<p>As I&#8217;ve been dabbling in the mad sciences recently, I thought I&#8217;d get some more toys.<br />
This culminated in the purchase of a laser engraver.</p>
<p>This is it sitting next to another interesting toy I own &#8211; a CNC.  He who dies with the most toys wins dontcha know <img src='http://www.computersolutions.cn/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<a href="http://www.flickr.com/photos/sheedl/6382391577/" title="My Desktop Fab :) by sheedl, on Flickr"><img src="http://farm7.staticflickr.com/6060/6382391577_10cfe089ae.jpg" width="500" height="500" alt="My Desktop Fab :)"></a></p>
<p>The engraver came with some exceedingly shite Chinese software (Moshi Engraver), but I did know that, and had ordered a cnc controller board with the idea of retrofitting that in. (its actually in the photo above funnily enough)</p>
<p>It has sat in the office mildly unused, but still in my thoughts.</p>
<p>One of my clients finally asked what was that large orange thing upstairs, and I dragged it out and setup for them to show off some test paper cuts.</p>
<p>Tomorrow will take a closer look at working out the pinouts as I didn&#8217;t get very far today in getting EMC2 talking nicely to to the Y axis (which was the goal for tonight).</p>
<p>Long term will be interested in making it work as a printer driven hardware device, but for now EMC2 is good enough.<br />
http://www.laoslaser.org/ is making interesting progress in that regard, and I might look at talking directly to the Engraver factory about integrating and making a few with a few to selling a *decent* version.</p>
<p>As this will be a work in progress, here are the links that will be useful.<br />
Some need a vee pee en to view in China sadly.</p>
<p><a href="http://www.cnczone.com/forums/laser_engraving_cutting_machines/138554-cheap_laser_cutter_modifications.html">http://www.cnczone.com/forums/laser_engraving_cutting_machines/138554-cheap_laser_cutter_modifications.html</a><br />
<a href="http://www.thinkhaus.org/2010/06/19/howto-turn-a-cheap-chinese-laser-engraver-into-a-pretty-good-laser-cutter/">http://www.thinkhaus.org/2010/06/19/howto-turn-a-cheap-chinese-laser-engraver-into-a-pretty-good-laser-cutter/</a><br />
<a href="http://www.stephenhobley.com/blog/2011/04/15/upgrading-a-laser-cutter-from-china/">http://www.stephenhobley.com/blog/2011/04/15/upgrading-a-laser-cutter-from-china/</a><br />
<a href="http://www.andyslater.com/laser-cutting/cnc-conversion.html">http://www.andyslater.com/laser-cutting/cnc-conversion.html</a><br />
<a href="http://dank.bengler.no/-/page/show/5473_connectinggrbl">http://dank.bengler.no/-/page/show/5473_connectinggrbl</a><br />
<a href="http://www.synthfool.com/laser/">http://www.synthfool.com/laser/</a><br />
<a href="http://www.laoslaser.org/">http://www.laoslaser.org/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2011/11/chinese-laser-engraver-modding/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Seagate FreeAgent GoFlex Desk disassembly</title>
		<link>http://www.computersolutions.cn/blog/2011/11/seagate-freeagent-goflex-desk-disassembly/</link>
		<comments>http://www.computersolutions.cn/blog/2011/11/seagate-freeagent-goflex-desk-disassembly/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 07:53:34 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[Useful Info]]></category>
		<category><![CDATA[disassembly]]></category>
		<category><![CDATA[freeagent]]></category>
		<category><![CDATA[goflex]]></category>
		<category><![CDATA[seagate]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=786</guid>
		<description><![CDATA[As drive prices have increased somewhat to roughly 200% in price locally over the last few weeks for raw drives, and external drive cases have not, I advised a client recently to purchase an external hard drive to save some money. The drive case he brought over to me to have installed in his desktop [...]]]></description>
			<content:encoded><![CDATA[<p>As drive prices have increased somewhat to roughly 200% in price locally over the last few weeks for raw drives, and external drive cases have not, I advised a client recently to purchase an external hard drive to save some money.</p>
<p>The drive case he brought over to me to have installed in his desktop was a Seagate GoFlex drive.</p>
<p>Seagate unfortunately doesn&#8217;t use screws to put the case together like other manufacturers, instead they use the dreaded plastic clips to hold the drive case together.</p>
<p>Below is a quick pictorial to safely take apart one of these cases to remove a drive (or swap a broken drive).</p>
<p>Essentially -</p>
<p>1. remove the base (pulls of easily).</p>
<p>2. stick a credit card under the top edge (I used a flat jewel screwdriver to get enough space), and unclip top</p>
<p>3. slide drive out</p>
<p>4. remove plastic feet and unscrew screws.</p>
<p>5. fold down metal sticker and remove drive.</p>
<p>&nbsp;</p>

<a href='http://www.computersolutions.cn/blog/2011/11/seagate-freeagent-goflex-desk-disassembly/10-drive/' title='10 - drive'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2011/11/10-drive-150x150.jpg" class="attachment-thumbnail" alt="10 - drive" title="10 - drive" /></a>
<a href='http://www.computersolutions.cn/blog/2011/11/seagate-freeagent-goflex-desk-disassembly/9-unscrewed/' title='9 - unscrewed'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2011/11/9-unscrewed-150x150.jpg" class="attachment-thumbnail" alt="9 - unscrewed" title="9 - unscrewed" /></a>
<a href='http://www.computersolutions.cn/blog/2011/11/seagate-freeagent-goflex-desk-disassembly/8-remove-plastic-feet-and-unscrew-screws/' title='8 - remove plastic feet, and unscrew screws'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2011/11/8-remove-plastic-feet-and-unscrew-screws-150x150.jpg" class="attachment-thumbnail" alt="8 - remove plastic feet, and unscrew screws" title="8 - remove plastic feet, and unscrew screws" /></a>
<a href='http://www.computersolutions.cn/blog/2011/11/seagate-freeagent-goflex-desk-disassembly/7-slide-drive-out/' title='7 - slide drive out'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2011/11/7-slide-drive-out-150x150.jpg" class="attachment-thumbnail" alt="7 - slide drive out" title="7 - slide drive out" /></a>
<a href='http://www.computersolutions.cn/blog/2011/11/seagate-freeagent-goflex-desk-disassembly/6-note-annoying-side-tabs/' title='6 - note annoying side tabs'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2011/11/6-note-annoying-side-tabs-150x150.jpg" class="attachment-thumbnail" alt="6 - note annoying side tabs" title="6 - note annoying side tabs" /></a>
<a href='http://www.computersolutions.cn/blog/2011/11/seagate-freeagent-goflex-desk-disassembly/5-remove-top/' title='5 - remove top'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2011/11/5-remove-top-150x150.jpg" class="attachment-thumbnail" alt="5 - remove top" title="5 - remove top" /></a>
<a href='http://www.computersolutions.cn/blog/2011/11/seagate-freeagent-goflex-desk-disassembly/4-wedge-credit-card-and-wiggle/' title='4 - wedge credit card and wiggle'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2011/11/4-wedge-credit-card-and-wiggle-150x150.jpg" class="attachment-thumbnail" alt="4 - wedge credit card and wiggle" title="4 - wedge credit card and wiggle" /></a>
<a href='http://www.computersolutions.cn/blog/2011/11/seagate-freeagent-goflex-desk-disassembly/3-remove-base/' title='3 - remove base'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2011/11/3-remove-base-150x150.jpg" class="attachment-thumbnail" alt="3 - remove base" title="3 - remove base" /></a>
<a href='http://www.computersolutions.cn/blog/2011/11/seagate-freeagent-goflex-desk-disassembly/2-case/' title='2 - case'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2011/11/2-case-150x150.jpg" class="attachment-thumbnail" alt="2 - case" title="2 - case" /></a>
<a href='http://www.computersolutions.cn/blog/2011/11/seagate-freeagent-goflex-desk-disassembly/1-box/' title='1 - box'><img width="150" height="150" src="http://www.computersolutions.cn/blog/wp-content/uploads/2011/11/1-box-150x150.jpg" class="attachment-thumbnail" alt="1 - box" title="1 - box" /></a>

]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2011/11/seagate-freeagent-goflex-desk-disassembly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debian Locales error quick fix</title>
		<link>http://www.computersolutions.cn/blog/2011/11/debian-locales-error-quick-fix/</link>
		<comments>http://www.computersolutions.cn/blog/2011/11/debian-locales-error-quick-fix/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 14:50:23 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[Technical Mumbo Jumbo]]></category>
		<category><![CDATA[apt-get]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[locale: Cannot set LC_ALL]]></category>
		<category><![CDATA[locale: Cannot set LC_CTYPE]]></category>
		<category><![CDATA[locale: Cannot set LC_MESSAGES]]></category>
		<category><![CDATA[locales]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=772</guid>
		<description><![CDATA[If you get similar messages to this when you use apt-get perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_CTYPE = "UTF-8", LANG = "en_US" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). locale: Cannot set [...]]]></description>
			<content:encoded><![CDATA[<p>If you get similar messages to this when you use apt-get</p>
<pre>
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LC_CTYPE = "UTF-8",
	LANG = "en_US"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
</pre>
<p>and the advice to </p>
<pre>
dpkg-reconfigure locales
</pre>
<p>doesn&#8217;t work, then try this &#8211; </p>
<pre>export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
dpkg-reconfigure locales</pre>
<p>Short and sweet solution.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2011/11/debian-locales-error-quick-fix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

