My Adventures in USB Hell
by Dan Radmacher


So IMG editor Tuncer Deniz asks me if I'd be interested in reviewing a couple of new joysticks from Suncom. Naturally, I agree, but there's one catch -- they're USB joysticks. My desktop G3 came out before USB became a standard feature on Macs. It seemed like the perfect time to add a USB card, something I had considered anyway. How hard could it be? After all, USB is plug-and-play on Windows98 -- surely setting it up on a Mac would be just as easy.

Guess again.

Installing the Entegra two-port PCI card was easy enough -- though it was a tight fit and took some maneuvering and a firm push to get the card seated correctly. I closed up the case, installed the USB drivers that came with the joysticks, rebooted, plugged in one of the joysticks and figured I'd be good to go.

Not quite.

I called up the Suncom Input Sprocket control panel. All it saw was my CH Products F-16 Fighterstick. Hmmm. Maybe I shouldn't have that plugged in. ADB devices, of course, aren't hot swappable, so I shut down and unplugged it. I restarted and called up the Suncom control panel again. "You have no devices to configure!" it scolded. I would see that dialogue box often over the next four or five hours. I switched joysticks, figuring maybe the first one was bad, even though the LED light on the joystick glowed, so I knew it was at least getting power. The control panel scolded me again.

I scratched my head, rebooted yet again, and got scolded yet again. Time to look for help. The Suncom website was not helpful -- it assumed I had an iMac or blue&white G3. I turned to the newsgroups. Comp.sys.mac.hardware.misc had some articles on USB issues. One mentioned a new set of drivers that Apple had put out. I opened up my System folder to find out what driver version I had.

Hmmm. InputSprocket USB was the only extension that mentioned USB. The problem was becoming clearer. I had assumed USB support was built-in to OS 8.6, since it supported iMacs and b&w G3s. That's what I get for assuming.

Next stop: www.apple.com. I dug around the site for awhile, but USB software didn't jump out at me. A site search revealed nothing, either. This was getting somewhat frustrating. I finally remembered one of the newsgroup postings mentioning that the USB driver was a developer release, so I clicked on "Developer." Nada. I used Sherlock to search Apple's sites. Nothing. Finally, out of desperation, I started adding "usb" to different Apple addresses. Finally, I stumbled on www.apple.com/usb. Jackpot! Finally, information about Macs and USB. But no drivers. I remembered the developer thing again and clicked on USB overview under developer's information.

And there, I finally saw the words I had been looking for: "Download the Mac OS USB DDK (v1.2)". I clicked, which brought me to http://developer.app le.com/hardware/usb/download.htm. From there, I downloaded and unstuffed the DDK. I put the contents of the Apple Built Extensions folder in my system folder. I rebooted for the umpteenth time, with much anticipation. I called up the Suncom InputSprocket control panel.

"You have no devices to configure!" it told me.

The bastard.

I thought about giving up, and trying to contact either the joystick or USB port manufacturer the next day. My frustration level was at a curse-inducing high. More than once the thought occurred to me that PC users were supposed to have to put up with this crap, not good Mac users like myself. But I was determined to make it work. I called up the Read Me files (of which there were several), and found the problem. The USB support extension was intentionally disabled, apparently to keep non-developers from using it. In order to make it work, I had to add a resource usbx (ID=1984).

I've used ResEdit before, but never for anything more complicated than changing the creator type. I wasn't sure I could do this, but I was going to try. I opened the extension with ResEdit and easily found how to create a new resource. I created usbx. It had an ID number of 128, though, and I could not figure out how to change it. Alrighty then.

Back online, I found a ResEdit reference put out by Apple. I downloaded that, and figured out I had to double-click on the resource, then select "Get Resource Info." There was the editable ID box. I changed the ID to 1984, saved the extension and rebooted for the umpteenth time plus one. Called up the InputSprocket control panel. Hallelujah! There was my Suncom SFS Flight Controller, ready to be configured.

I launched Falcon 4.0. Configured the joystick and dropped into a dogfight. And promptly dived into the ground when the joystick quit responding to my efforts to pull up. I tried a couple more times, but the response was mushy and intermittent. I tried the other joystick (an iFX4000, also from Suncom). It had the opposite problem. It was too responsive. I spun around out of control. I had spent five hours for this? It was time for bed.

The next day, I did some further experimentation, but couldn't get the joysticks to work right. I had the Falcon review to write, though, so I selected the CH Fighterstick (which had gotten plugged back in at some point the night before) to get in some real flight time. The stick was as unresponsive as the SFS. I had a flashback to the night before when I had thought that having the ADB joystick in at the same time as the USB sticks might be a bad idea. I unplugged the SFS and iFX4000. My Fighterstick worked again. I shut down (again), unplugged the Fighterstick, and rebooted. The SFS worked fine, except for a hatswitch problem I didn't resolve until Suncom put out a new version of their driver software.

Finally, after hours and hours of USB hell, everything was working basically the way it should.

It shouldn't be this hard on a Mac. Windows98 apparently recognizes the addition of a USB port and joystick, and automatically installs the proper drivers. Surely, the MacOS could do the same thing? At the very least, I shouldn't have had to comb Apple's site, finally stumbling on the USB information by accident. Nor should I have had to jump through ResEdit hoops to get the USB Support extension to work.

But now I have my USB port installed, and all seems to be working as it should.

For now.

There is a happy ending to this story -- at least for others thinking about adding USB cards to their older Macs. Apple has released version 1.2 of its USB card support. This simple installation requires no ResEdit hacking, just a very quick installation and a restart. The update can be found here.