I was looking for an affordable wireless adapter supporting Linux. It’s Complicated.
The kernel driver page FAQ tells us how we might find out if a device is supported. Unfortunately, they’re presuming you already have got the device. Which doesn’t help too much when seeking for one to buy. In the IRC channel they told me I might google for the device name (better yet the chip used, but this is hard to get to know beforehand and some devices even change it without notice) and words like „dmesg“ or „lsusb“.
I ended up buying two devices, the run-of-the-mill 802.11b/g/n USB adapter Edimax N300 (EW-7612UAn V2) claiming Linux compatibility and a DeLOCK WLAN USB2.0 Stick Dualband with 802.11ac and DFS support where at least the retailer claimed Linux support.
The DeLock stick didn’t work at first go, so I delayed that. The Edimax adapter worked out-of-the-box. Or so it seemed…
After minutes to hours, I couldn’t reach any web page anymore. I used the usual command line tools, but they all showed the same output as in the working state. Only „dig“ was explicitly reporting a timeout. journalctl or syslog didn’t show anything at the time the connection stopped working. (At least I didn’t see anything using „journalctl -f“.)
So I went back to the FAQ’s tips. The adapter is using the Realtek chip rt8192cu. Running lsusb, it displays as
Bus 003 Device 003: ID 7392:7822 Edimax Technology Co., Ltd
After days of research, I came to the following conclusion: The kernel driver does the worst it can do – it seems to support the device, but it does not succeed in running it reliably. I already had started growing doubts in my router, my USB ports, the power source or myself…
Strange enough, although I had looked at journalctl and syslog several times during and after the fails, I found something new with the information at hand: „usbctrl_vendorreq TimeOut“ messages when the connection started failing. The posting I had found also linked to the solution: There are fixed versions of the driver out there on GitHub.
I chose one using DKMS, so hopefully reintegrating autmatically when I’m installing a new kernel: https://github.com/0xBADEAFFE/rt8192cu_dkms. It was easy to install following the instructions. Since then, my WiFi connection is working flawlessly.
The only question left is why the fixed driver is not contained in the kernel. Maybe its quality is not matching the kernel’s standards? But that of the broken driver is…?