Mysteries of the Griffin iMate

geerlingguy1 pts0 comments

Mysteries of the Griffin iMate – Project Gus

A vintage keyboard, a mysterious battery, and some questionable 1990s engineering choices...

Keyboard

For five years this classic keyboard has sat in my cupboard:

This is an Apple Extended Keyboard II, released 1990. This model is praised by keyboard nerds for its "clicky" mechanical ALPS switches and sturdy design.

This particular keyboard has a hand-written asset sticker from the Federal Department of Administrative Affairs (1987-1993):

I think either my Dad or I bought this at an ex-government auction in the late 1990s, together with a Macintosh IIsi that was briefly our dial-up modem router at home. Later, the Macintosh and its keyboard spent around twenty years in my Dad's shed.

When my parents downsized five years ago, the Mac and its magnificent Portrait Display were sold. I kept the keyboard.

Recently I saw it sitting in the cupboard, once again forgotten. Time to actually use this thing!

Birthday

The keyboard was a bit sad and unsanitary, with a thick layer of 1990s grime. So I gave it a birthday!1

Specifically I stripped it down, washed all the plastic parts, and put it back together.

iFixit's teardown is very helpful. The vintage plastics on this particular keyboard seem to be in good condition, despite my clumsiness nothing snapped off.

It's never going to be pristine, but it's now a lot nicer to look at and use.

No Yak Shaving

Being from 1990, this keyboard connects using Apple Desktop Bus (ADB):

A converter is required to connect it over USB.

For an embedded developer prone to distraction, this creates a risky situation... the task is simple enough, and countless DIY versions already exist, so it's tempting to "just knock something together". One could build on the classic TMK firmware, leverage the USB device support I've been implementing for MicroPython, or pick a real challenge like bit-banging low speed USB in Rust on a dirt cheap RISC-V micro.

NO! BAD GUS! TOO MANY PROJECTS!

I reminded myself that I have too many projects already, including a whole electric car conversion to do. Best not to chase more squirrels or shave more yaks.

In hindsight, I should have ordered a pre-built TMK ADB-USB adapter at this point. However, overseas shipping is slow. Someone on eBay Australia had listed a "Griffin Technology iMate Universal ADB to USB Adapter". Confirmed working, reasonable price, and even in the original packaging:

Griffin Technology

These days Griffin Technology seem to mostly sell phone cases, but in the 1990s they specialised in Macintosh accessories. When the iMac was released in 1998, Apple switched from ADB to USB. So in 1999 Griffin released the iMate to adapt ADB devices to "iMacs, Macs with USB, and PCs with USB". Pretty cutting edge stuff!

Griffin seem to have sold the iMate from late 1998 through to late 2008. Not a bad run!

iMate No Good

Sadly, my laptop didn't work with the iMate and the Apple Extended Keyboard II. The iMate briefly enumerates over USB but goes immediately into a permanent USB reset loop before giving up. The Linux kernel log tells the sad tale:

17:34:38 usb 3-4: new low-speed USB device number 6 using xhci_hcd<br>17:34:38 usb 3-4: New USB device found, idVendor=077d, idProduct=0405, bcdDevice= 3.70<br>17:34:38 usb 3-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0<br>17:34:38 usb 3-4: Product: iMate, USB To ADB Adaptor<br>17:34:38 usb 3-4: Manufacturer: Griffin Technology, Inc.<br>17:34:38 input: Griffin Technology, Inc. iMate, USB To ADB Adaptor as /devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4:1.0/0003:077D:04><br>17:34:38 hid-generic 0003:077D:0405.000C: input,hidraw6: USB HID v1.00 Keyboard [Griffin Technology, Inc. iMate, USB To ADB Adaptor]><br>17:34:38 input: Griffin Technology, Inc. iMate, USB To ADB Adaptor as /devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4:1.1/0003:077D:04><br>17:34:38 hid-generic 0003:077D:0405.000D: input,hidraw7: USB HID v1.00 Mouse [Griffin Technology, Inc. iMate, USB To ADB Adaptor] on><br>17:34:40 usb 3-4: reset low-speed USB device number 6 using xhci_hcd<br>17:34:42 usb 3-4: reset low-speed USB device number 6 using xhci_hcd<br>17:34:43 usb 3-4: reset low-speed USB device number 6 using xhci_hcd<br>17:34:45 usb 3-4: reset low-speed USB device number 6 using xhci_hcd<br>17:34:45 usb 3-4: reset low-speed USB device number 6 using xhci_hcd<br>17:34:47 usb 3-4: reset low-speed USB device number 6 using xhci_hcd<br>17:34:48 usb 3-4: reset low-speed USB device number 6 using xhci_hcd<br>17:34:50 usb 3-4: reset low-speed USB device number 6 using xhci_hcd<br>17:34:50 usb 3-4: reset low-speed USB device number 6 using xhci_hcd<br>17:34:52 usb 3-4: reset low-speed USB device number 6 using xhci_hcd<br>17:34:54 usb 3-4: reset low-speed USB device number 6 using xhci_hcd<br>17:34:55 usb 3-4: reset low-speed USB device number 6 using xhci_hcd<br>17:34:56 usb 3-4: reset low-speed USB device number 6 using xhci_hcd<br>17:34:57 usb 3-4: reset low-speed USB device number 6 using xhci_hcd<br>17:34:57 usb 3-4: USB disconnect,...

device using speed reset number xhci_hcd

Related Articles