I’m trying to setup a wireless NIC (TP-Link TL-WN350GD) on a Linux server (Debian Squeeze).
After a cold boot, lspci -nn shows that the PCI ID for the card is 168c:ffa1. The kernel (2.6.38 from backports) doesn’t have any module for that device ID, and so no module gets loaded.
However, after a warm boot (i.e., executing the reboot command), the same device shows up as 168c:001d, which seems to be the right ID and is handled by the ath5k module as documented here. As far as I can tell, the device works flawlessly in Debian with this specific kernel (I can attach to an AP and communicate wirelessly with the rest of the network).
The problem is that when the system gets powered off, the next time it boots the device gets a wrong ID (168c:ffa1), and obviously it’s not detected. If I perform a reboot, then everything goes back to normal (device ID = 168c:001d, with the ath5k module loaded automatically).
I’ve never seen such an odd behavior regarding PCI IDs before, and this is what I’d like to know:
Is there any workaround for a situation like this? Is there any way to “force” the ID of this particular device so that the driver is loaded every time, and not only after a warm boot? If this can be done through an udev rule, an example would be really helpful.