DIY Solid State Drive

Now with the CF to 2.5 IDE adapter in hand, I’ve basically got a solid state drive for my laptop.  The trick of course is making it all work.  The first step is to get it physically installed in place of the failed hard drive.  The only tricky part here was determining where pin 1 was.

The adapter I bought has a little white triangle that identifies pin 1 (in the picture above, this is the left most pin).  The existing drive was a Hitachi DK227A-41.  Google helped turn up a useful diagram which helped me identify pin 1.

HITACHI DK227A SPECIFICATIONS REV. 1, K6601560 97/11/08

The second bit I stumbled a bit on was getting the laptop to identify this as a drive.  The CMOS auto setting didn’t detect it as a drive – so I needed to use the USER setting to punch in the right values.  I ended up using the values I found in this SanDisk document, but I’m certain others will work.  I also needed to dumb down the BIOS settings to allow me to boot from this drive, this meant turning off some of the fancy read pre-fetch and DMA modes.

As this is an old laptop – 233MHz with 64MB of RAM, I run Puppy Linux on it.  My previous experience installing Puppy on this particular laptop was painful, as it only has a floppy drive (no CDROM) and at the time I failed to find a boot floppy that enables USB support such that I could boot Puppy from it.  The route I took at the time was to format half of the 4Gig drive as DOS and make it bootable, then find an old Linux distro that had a floppy based install, borrow a wired PCMCIA network card from work and download the DOS based Puppy install over the network to the DOS partition.  Once there, I could reboot and install Puppy natively.  That was the story for Puppy 2.01.

Puppy 4.00 is an improvement in a number of areas.  WakePup is now something that comes as part of the LiveCD allowing me to create a boot floppy using my desktop system.  This boot floppy knows how to boot a USB key version of Puppy on this old laptop.  It just works.

Other nice features of Puppy 4.00 is the battery indicator now knows how to talk to the hardware in the laptop, supplying charge remaining information.  Additionally, the power off sequence works to actually shut the laptop off (2.01 didn’t).

With the laptop 1024×768 screen matching the LCD monitor Jenn uses on her Mac Mini – TightVNC on Puppy makes it this old laptop into a really nice wireless Mac terminal.  The default browser is SeaMonkey, but Firefox 2 is available in the package repository.

Using the DIY SSD is weird, the laptop is almost totally silent and for whatever reasons the drive light indicator doesn’t blink at all – so you have no way of knowing that you’re waiting on disk activity.  The performance seems to be about the same as it used to be, but no direct comparison is possible with the old drive making grinding sounds.  I’m running with a swap partition on the CF card, but even with only 64MB of RAM – running the common application load on this laptop I’m using zero swap. (hooray Puppy)

Some folk get worked up about reducing the number of writes to a CF card, I’ve decided not to worry and see how this works out.  The number of write cycles is fairly high on modern cards (1 or 2 million), I believe they have built in wear-levelling, and they are cheap.  I know my puppy powered laptop isn’t making that many writes to the filesystem, so I suspect the DIY SSD will last longer than the laptop.

The Optimal eBay Experience

A couple of years ago I picked up a used laptop (Gateway Solo 5150) for a great price.  Sound doesn’t work, but paired up with a wifi card it makes a great remote terminal for Jenn’s Mac Mini.  Sadly, the other day the hard drive packed it in.  Instead of treating this like an excuse to buy a laptop that has sound (and a lot more horse power) I thought it would be worth considering replacing the drive with a compact flash card – basically a DIY Solid State Drive (SSD).

Checking prices locally, it seemed I could pick up a CF to 2.5 IDE adapter for $24.  Considering a cheap 1Gig CF card was $13 – paying nearly double just to interface it seemed a bit steep.  Well, eBay to the rescue.

Yup, I was lucky enough to score one for a penny.  It sort of makes you want to pick up that penny the next time you see one on the ground.  While many of the 1 cent auctions seems to hit you on shipping, this one was really just $2.98 to Canada.  The amount that came off my credit card via PayPal was $3.05.

Shipping insurance was $1.50 – and while normally I do consider it worthwhile, this time I figured paying a 50% premium to insure it seemed silly.  Well it arrived safely today – after the expected delay due to shipping method and source (Hong Kong).

The seller on eBay was alpinetopline, which seems to be related to suntekstore.com.  I’ll certainly not hesitate to give these folk more business based on this transaction as it went smoothly and as expected.  If you wanted to avoid the eBay experience, you can buy exactly the same CF to 2.5 IDE adapter from suntekstore.com directly.

A little fiddling with the laptop CMOS setup to make an old 512MB CF card I had around detect properly, and a DOS boot floppy (yup, this laptop has a floppy) and I was good to go.  Now the fun of installing Puppy Linux on it again.

Turbo Slug

Well I finally got around to de-underclocking my NSLU2 (aka Slug).  It took about 10 minutes start to finish, so I really have no excuse for why it took me this long to get around to it.

The NSLU2 Linux wiki has very detailed directions on cracking the case open.  Go slowly to avoid snapping off the plastic tabs.

Now comes the fun part, modifying the hardware.  It turns out that for whatever reason the NSLU2 was underclocked, the wikipedia article discusses this and other interesting facts about this device.  While this is a discontinued device, they are readily available from amazon still.  All we need to do to allow the Slug to run at its native 266MHz is remove a resistor.  I used a pair of tweezers.

If you look closely, you’ll see the tiny resistor in the center of the palm of my hand.  I later dropped it onto the floor and lost sight of it.

Putting the unit back together isn’t documented as well on the wiki – I found that it was easier to insert the circuit board into the light grey “front” and then snap the back on.  Again, go slowly to avoid breaking any tabs off.

Having installed a version of Debian on it the other day, I was able to ssh into my new “turbo slug” and cat /proc/cpuinfo which showed me BogoMIPS: 266.24.  Success!  It does seem to be more responsive.  I’m tempted to try tinkering with doing a memory upgrade, but that may be beyond my soldering skill level.