“A nearly impenetrable thicket of geekitude…”


About hardware, as opposed to software.


Many of us, particularly if we have been programmers, have got into the habit of regarding computers as flawless execution engines. People with more of an electronics background tend to be a bit more sceptical, I think.

I’ve been trying to figure out why I couldn’t burn a Fedora 11 DVD to upgrade one of my oldest machines for several months now. I had checked the SHA-256 hash of the download then copied the file from the server where I run BitTorrent across to a desktop machine’s external hard drive. The burned disk verified against the image on the machine that created it but the installation self-test always failed, claiming the disk was corrupt. I tried burning from the same image on another machine; I tried burning at different speeds; I tried different blank DVDs. No change.

Finally, today, I thought to try verifying the hash on the copied image rather than the original one. It was different. Comparing the original download with the copy, I discovered two locations in the copy where byte 0x12 of a block had dropped the 0x08 bit.

It’s probably not a coincidence that the machine on which I made the corrupted copy has recently come back from a couple of extended “warranty repair” holidays during which first the main system logic board and then (at my strong and repeated insistence) the actual DRAM were replaced. The machine had been having some intermittent problems involving applications shutting down unexpectedly; these looked like memory issues to me but the manufacturer’s diagnostics had always given it a clean bill of health. As an old-school computer guy, of course, I know that the manufacturer’s diagnostics never detect real memory issues.

The moral of the story? I’m not sure there is one: “faulty hardware sometimes gives the wrong answer” seems rather an obvious thing to say. On the other hand, if you are aware of the concept of metastability in electronics, you know that there’s no such thing as perfect hardware as long as the logic needs to talk to the outside world. So we can reduce the frequency of odd weirdness to the point where we never expect to encounter it, but we can never make it go away altogether.


Details, Details

I’ve been using Apple’s Mighty Mouse on my desktop machines for a couple of years now. I quite like them, although the mouse’s inability to represent both mouse buttons being held down at the same time makes it necessary to keep a conventional mouse around for things like gaming.

This is a nice mouse to use, though. For example, it makes a nice solid mechanical click when you use the left or right buttons (even though there is really only one mechanical button — the whole mouse — touch sensors inside give you two “logical” buttons).

There’s even a tiny clicking sound when you squeeze the side buttons or roll the little trackball around. You can hardly hear these sounds in a normal office, but they make all the difference to the “feel” of the device. And, until today, I would have meant that literally: I’d have sworn that I could feel the little clicks through my fingertips.

Today, quite by accident, I discovered that the mouse does not make these tinier sounds if it isn’t plugged in… or, in the case of the wireless version, if you take the battery out.

Yes, there’s a tiny speaker inside, whose only purpose is to make sounds that are almost — but not quite — too quiet to hear.

Vendor Lock-in

I own two Uninterruptable Power Supply units. Each has a button on the front with which you can perform a self-test; I do this once a month to make sure that they are “still good”.

On unit A, you tap the button and it does a self-test. If you press and hold the button then the unit turns off, taking the attached hardware with it.

Unit B (from a different vendor) requires you to hold the button in to perform the self-test. Tapping the button… no, why don’t you guess what that does?

Sneakiest attempt at vendor lock-in I think I’ve ever come across.


As soon as I first saw them mentioned on Boing Boing back in September, I knew that I’d have to at least try some of the new USBCELL batteries from Moixa. I bought a pair this week; here are some initial impressions.

Essentially, these are cut-down AA size NiMH rechargeable cells with a flip-off top concealing a standard USB plug and internal charging circuitry. You plug them into a spare USB port, they charge. A charge light comes on to tell you something is happening: they start blinking when they are 90% done, the light goes off when they are cooked. This takes about 5 hours from empty: an overnight charge plugged into your laptop, for example.

As about 30% of the length of the cell is taken up with the USB plug and its cover (held on by two little elastic cords), the capacity is much lower than modern NiMH cells at around 1300mAH. By comparison, a standard cell (at perhaps 20% of the price) might be 2100mAH these days. The cells are a little fatter than standard, so although they worked fine in my Garmin GPS they won’t fit in a Maglite AA torch.

So if cost and capacity are so much worse than a standard cell, what’s the attraction? If you’re travelling and are already carrying a laptop but need a couple of rechargeables for some small device like a GPS, you can just take these and leave the NiMH charger and the power adapters at home.


Not Today

I’ve been thinking of replacing my now geriatric Hewlett Packard laptop for some time, and the idea of getting a nice Unix laptop has been getting more and more attractive.

So I spent an hour in the local Apple dealer today picking out some hardware. “I’ll take one of those”, finally.

“Oh, we don’t actually have any in stock, sir. Besides, you wouldn’t want to buy one today of all days.” …and the salesguy looked at his watch.

I guess everyone except me knew that Steve Jobs was giving his famed New Things keynote at MacWorld in a few minutes. D’oh.

[Updated: turns out Apple didn’t update the Powerbook line after all. The new Mac mini is pretty cute, though, and worth looking at for a small headless Unix box.]

My Very First USB Peripheral

prototype hardware

Earlier this month I talked about the Microchip PIC16C745 and PIC16C765, which are 8-bit microcontrollers with built-in low-speed USB. Since that time, I’ve got hold of one of these devices and built a simple USB peripheral with it. Click on the thumbnail for a bigger version of the image.

Summary: hardware easy, firmware tricky, software painful. Read on for more detail and some hints for anyone treading the same road in the future.

[Last updated 20050606: added firmware source code.]

PIC16C745/765: microcontrollers with USB

Fun devices of the month: Microchip’s PIC16C745 and PIC16C765. As well as the usual microcontroller features, these require only a couple of external components to function as low-speed USB peripherals.