It’s sometimes surprisingly difficult to find out whether hardware will work with Linux. Partly, this is because a piece of hardware often consists internally of chips manufactured by someone other than the hardware itself, and it’s the chips which you must have drivers for. For instance, I have a Leadtek TV tuner card (PCI) and the chips onboard it are a couple of Connexant chips plus a Philips (tuner) chip. This is one of the few products I have seen which actually lists the chips on the box, however. Finding out what chips a product uses can be difficult in itself. Often the easiest way (for PCI cards) is to plug the card in and use “lspci” or equivalent to find out what’s on it, but by that stage you’ve already laid down your cash for the product.
Even knowing the chips and knowing that there is a linux driver for them doesn’t always tell you how well your device will be supported. The aforementioned TV tuner card required that I add a subsystem ID to the driver and recompile the kernel. Once I’d done that, it worked fine (well, it received digital TV fine; I never tried analog. I also got the remote to work fairly easily).
I bought a new (external) ADSL/2/2+ modem recently, an “OpenNetworks iConnectAccess621”. It has a single ethernet port as well as a USB port. I wondered if I would be able to talk to the modem via the USB port and thereby free up two ethernet ports – one on the PC and one on the modem. As it turned out, the iConnectAccess621 use a Texas Instruments (TI) chip, and I could talk to it using the “RNDIS” driver in Linux (RNDIS apparently is a badly-documented Microsoft-developed protocol for ethernet-over-USB); however, restarting the computer seemed to lock up the connection (couldn’t talk to the modem anymore) until I also power-cycled the modem. I partly blame the modem and partly blame Linux’s USB implementation (which seemed to have a lot of trouble dealing with the resulting situation on the USB bus; kept on giving error messages and took ages to boot).
Another question which remains unsatisfactorily answered at least by a quick web search is: Will a 64-bit PCI card work in a 32-bit slot? The real answer is probably “depends on the card, but in theory, it should”. That’s not particularly helpful for individual hardware items though. I wanted in particular to know if one of Sun’s “QFE” quad-port ethernet cards would work in my linux box, which only has 32-bit PCI slots. The Linux HME driver (“Happy Meal Ethernet”, no kidding, is the name of Sun’s single-port ethernet cards) apparently also supports QFE cards, though after finding this out I still wasn’t sure if the 64-bit card would work in a 32-bit slot. I’m happy to report that it does. Which means, incidentally, that I don’t need to worry about using the USB connection to talk to the modem anymore.
So what does “QFE” stand for? The only thing that came to my mind originally was “Quick F*** Ethernet” but apparently the real answer is “Quad Fast Ethernet”, which makes sense in a way that “Happy Meal Ethernet” does not. The QFE card it seems basically consists of four HME chips soldered onto a single card, which explains why the HME driver supports it.