I bought a generic 802.11n USB Wi-Fi Adapter from Amazon for use on my Raspberry Pi devices. This particular device (ASIN: B07F9VZ38C) comes with an external antenna that should theoretically offer better range. The idea was to set-up a hotspot that would serve a locally hosted WordPress website. I would be using this device on a range of Single Board Computers (SBCs) ranging from a Raspberry Pi B+, Raspberry Pi 3B+, a collection of Orange Pi boards etc.
Normally, the operating systems available for Raspberry Pi such as Raspbian, DietPi etc. are updated quickly to support latest Linux Kernel, Driver modules, and supporting packages. The OSes support a range of generic USB Wi-Fi adapters without any issue. No so in this case.
Inserting the device on the USB port of my RasPiB+ running DietPi with Linux Kernel 4.14.98+ build 1200, did not result in automatic activation. running “lsusb” at the terminal revealed that the device was detected alright (not a dead-on-arrival piece), and device feature Realtek Semiconductor chips with Vendor ID 0BDA and Device ID F179. A quick lookup on the Internet revealed that the device possibly used RTL8188FU or RTL8189FTV chipset.
It turned out that neither Linux-Lite (based on Ubuntu) on an Intel Laptop nor DietPi (based on Raspbian) on the ARM SBC had built-in support for this chipset. Compiling driver support on the Intel platform was surprisingly painless. I followed the instructions at https://github.com/ulli-kroll/rtl8188fu and a few minutes later, I had this device working smoothly on my Laptop. Trying to compile it on the RasPiB+ was quite another story with cryptic failure messages that somehow I figured were related to unavailability of Kernel Headers etc.
After trying for hours to build the drivers, including thinking of doing a Cross-Compile on the Intel laptop, I began looking for someone who had possibly managed to build the drivers for this device and had made the binaries available for download. Normally it is not a good practice to download binary drivers made by strangers, but I was at the end of my patience and I would accept a build from a source that appeared trustworthy.
I found a massive collection of pre-built drivers for a variety of USB Wireless devices at http://downloads.fars-robotics.net/wifi-drivers/ . You can download a TGZ archive for your device by matching the device chipset and your Linux kernel version number against the available files. I did manage to do this but still the driver installation eluded me with more errors.
Eventually I found a post at https://www.raspberrypi.org/forums/viewtopic.php?p=479340#p479340 where someone had written a Shell Script to automatically identify the chipset and download the corresponding drivers from the fars-robotics website. Downloading and un-archiving the “install-8188eu.tgz” file resulted in a “install-wifi” script in my home directory that again failed to work as advertised.
It turns out that you must move the “install-wifi” script to “/usr/bin” folder and change the permissions of the script to execute (using “chmod 755 install-wifi”) for it work.
The installation process was smooth beyond belief and within minutes the appropriate driver had been download and installed on my computer and “iwconfig” was showing the device in the list of available Wi-Fi interfaces.
I was able to check that the device is capable of supporting “Ad-Hoc” mode, but I am yet to run full tests using “hostapd”. Also note that this chipset is sold in many generic devices with falsely advertised capabilities such as 600 Mbps speeds, automatic driver installation in Windows, Linux etc.