Wifi
Driver specific information
Allwinner
Device | Type | sdio id | sunxi-3.4 kernel | mainline kernel | 4.9.170-sun50iw9 kernel |
---|---|---|---|---|---|
XR819 | SDIO | 0020:2281 | xradio_wlan | ||
AW859A | SDIO | 8800:1 | sunxi-wlan |
XR819
For XR819 driver source was included in Allwinner H2 BSP.
Firmware firmware blobs can be found from Armbian firmware repository.
Also some documentation is available now:
- File:XR819 Datasheet V1.0-EN.pdf
- File:XR819 Datasheet V1.5-EN.pdf
- File:XR819 Application Guide V1.0-CH.pdf
May be related to ST cw1XX0 [1].
Initial comparison between cw1200 (drivers/net/wireless/st/cw1200) and xradio driver shows that the source code for two drivers are really similar and the st1200 driver could be improved to support both devices.
A working out-of-tree driver for mainline kernels is at [2].
AW859A
For AW859A driver source was include in Allwinner H616 Orange Pi Zero2 BSP, you can get it from orangepi-build repository.
Firmware firmware blobs can be found from orangepi firmware respository.
Ampak
Ampak combines broadcom wifi and bluetooth chips in single modules.
Ampak Devices
Device | Type | usb/sdio id | module | sunxi-3.4 kernel | mainline kernel |
---|---|---|---|---|---|
AP6181 | SDIO/UART | 02d0:a962 | See right | bcmdhd | brcmfmac |
AP6210 | SDIO/UART | 02d0:a962 | See right | bcmdhd | brcmfmac |
AP6212 | SDIO/UART | 02d0:a9a6 | See right | brcmfmac | |
AP6330 | SDIO/UART | 02d0:4330 | See right | brcmfmac | |
AP6335 | SDIO/UART | 02d0:4335 | See right | brcmfmac |
Broadcom
Broadcom Devices
Device | Type | usb/sdio id | module | sunxi-3.4 kernel | mainline kernel |
---|---|---|---|---|---|
BCM4334 | 0x4334 | brcmfmac | brcmfmac since 3.6+ | ||
Espressif
Espressif is a fairly young Chinese company.
Espressif Devices
Device | Type | sdio id | module | sunxi-3.4 kernel | mainline kernel |
---|---|---|---|---|---|
ESP8089 | SDIO | 6666:1111 | out-of-tree driver exists |
ESP8089
Firstly, you should use Hans de Goede's sunxi-wip kernel branch containing various bits and pieces needed to make things work.
Driver itself is currently in its own repository:
git clone https://github.com/jwrdegoede/esp8089.git cd esp8089 git checkout -B cleanup origin/cleanup cd ../linux make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnu- modules M=../esp8089 CONFIG_ESP8089=m
Do not forget to copy firmware/*.bin to /lib/firmware/ on the target system.
iNet
iNet Devices
Device | Type | usb id | module | sunxi-3.4 kernel | mainline kernel |
---|---|---|---|---|---|
iNet i10 |
RDA
RDA Microelectronics is a relatively unknown and new chinese chipmaker.
Device | Type | usb id / sdio id | module | sunxi-3.4 kernel | mainline kernel |
---|---|---|---|---|---|
RDA5990P | |||||
RDA5991 | SDIO | 5449:0145 |
The RDA5990P is a single chip solution which includes Wifi, Bluetooth and an FM radio. Some code for this wifi chip is available in a Rockchip RK3188 kernel tree, but nobody has tested or ported this code yet.
Realtek
USB-based
Best up-to-date information about Realtek driver in mainline Linux is available from Linux Wireless Project's Realtek drivers page. |
Device | Type | USB id | mainline kernel | legacy (sunxi-3.4) |
---|---|---|---|---|
RTL8188CTV | USB | 0bda:8176 | rtl8xxxu / rtl8192cu | 8192cu |
RTL8188CUS | USB | 0bda:8176 | rtl8xxxu / rtl8192cu | 8192cu |
RTL8188ETV | USB | 0bda:0179 | rtl8188eu (staging) | 8188eu (see below) |
RTL8188EUS | USB | 0bda:8179 | rtl8188eu (staging) | 8188eu (see below) |
RTL8192CU | USB | 0bda:018a | rtl8192cu | 8192cu |
RTL8723AU | USB | 0bda:0724 | rtl8xxxu / rtl8723au (staging) | 8723au |
SDIO-based
Best up-to-date information about Realtek driver in mainline Linux is available from Linux Wireless Project's Realtek drivers page. |
Device | Type | SDIO id | mainline kernel | legacy (sunxi-3.4) |
---|---|---|---|---|
RTL8189ES | SDIO | ?? | out-of-tree driver (see below) | ?? |
RTL8189FTV | SDIO | 024c:f179 | out-of-tree driver (see below) | ?? |
RTL8723BS RTL8703AS |
SDIO |
024c:0523 |
rtl8723bs (staging) | 8723bs |
RTL8821CS | SDIO | 024c:c821 | rtw88 (since v6.4) | ?? |
RTL8822BS | SDIO | 024c:b822 | rtw88 (since v6.4) vendor driver | ?? |
RTL8822CS | SDIO | 024c:c822 | rtw88 (since v6.4) vendor driver | ?? |
RTL8189ES / RTL8189ETV
Driver has its own repository:
git clone https://github.com/jwrdegoede/rtl8189ES_linux.git cd rtl8189ES_linux make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnu- KSRC=../linux
RTL8189FTV
Driver has its own repository:
git clone https://github.com/jwrdegoede/rtl8189ES_linux.git cd rtl8189ES_linux git checkout -B rtl8189fs origin/rtl8189fs make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnu- KSRC=../linux
Legacy sunxi-3.4 kernel support
Driver refusing to load (rt5370sta/8188eu/8189es/8192cu)
Please note that sunxi-3.4 kernel is not supported and has been deprecated...
When using the rt5370sta, 8188eu, 8189es or 8192cu drivers, which are all for USB based realtek devices, it might occur that the driver refuses to load:
ERR: script_parser_fetch usb_wifi_usbc_num failed modprobe: can't load module 8188eu (kernel/drivers/net/wireless/rtl8188eu/8188eu.ko): Cannot allocate memory
This is because the usb_wifi_para section is missing from your script.bin:
[usb_wifi_para] usb_wifi_used = 1 usb_wifi_usbc_num = 2
Where usb_wifi_usbc_num is the usbc to which your realtek usb wireless chip is attached.
Edit the .fex file and create the script .bin as explained in our Manual build howto, and send a patch to sunxi-boards in to our mailinglist.
8188eu driver on sunxi-3.4
Please note that sunxi-3.4 kernel is not supported and has been deprecated...
The sunxi-3.4 branch currently has v4.1.2_4787.20120803 available. There are newer versions available at https://github.com/lwfinger/rtl8188eu/ which are v4.1.4_6773.20130222 and v4.1.8_9499.20131104. There's also a v4.1.8 file available at https://github.com/LazyZhu/myblog/raw/gh-pages/file/RTL8188EUS_RTL8189ES_linux_v4.1.8_9499.20131104.zip which is likely the original from Realtek.
Here's how to compile the latest version from Realtek:
Extract the driver/rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104.tar.gz from the RTL8188EUS_RTL8189ES_linux_v4.1.8_9499.20131104.zip file and extract it. These instructions assume your linux-sunxi
directory is in the same directory as your rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104
directory. It's also assumed that you've configured the kernel to include the 8188eu driver that's part of linux-sunxi.
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -C ../linux-sunxi/ M=`pwd` modules
copy the 8188eu.ko
file over to the device and then install it into your kernel with the following commands (on the device as root):
modprobe -r 8188eu rm -rf /lib/modules/`uname -r`/kernel/drivers/net/wireless/rtl8188eu install -p -m 644 8188eu.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless/ /sbin/depmod modprobe 8188eu
There are two changes you may want to make in include/autoconf.h
:
1. The default is to output a LOT of logging and you can disable that by commenting out the following line:
#define CONFIG_DEBUG /* DBG_871X, etc... */
2. The default is to disable the activity LED on the wifi device which you may want to see to know that it's working. You can change that by un-commenting the following line:
//#define CONFIG_LED
Software Configuration
Debian/ubuntu with NetworkManager
NetworkManager uses its own wpa_supplicant configuration. That is the reason why manually editing /etc/network/interfaces to use wpa_supplicant does not work together with NetworkManager.
You have to disable all interfaces in /etc/network/interfaces e.g. by commenting out each line by inserting "#" as a first character.
You even have to disable Ethernet section to use wifi in network manager. Here is an example
# interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback #allow-hotplug eth0 #iface eth0 inet dhcp #auto eth0 #iface eth0 inet static #address 192.168.101.50 #netmask 255.255.255.0 #gateway 192.168.101.1 #broadcast 192.168.101.255 #auto wlan0 #iface wlan0 inet dhcp # wpa-ssid YOUR-NETWORK-NAME # wpa-key-mgmt WPA-PSK # wpa-group TKIP CCMP # wpa-psk YOUR-NETWORK-KEY
At your desktop there should emerge a network icon from NetworkManager in the task bar. You can edit the network setting with the gui dialogs.
Debian/ubuntu without NetworkManager
Setup with wpa_supplicant and without network manager
There are many tutorials out there on how to do this. Here is a good one.
Disabling networkmanager. Fully.
Even with the common trick of putting the following in /etc/NetworkManager/NetworkManager.conf
[ifupdown] managed=true
the despotic NetworkManager still will be messing up your careful setup from /etc/network/interfaces, and you might, once again, be left without wifi upon the next reboot.
To stop NetworkManager from running altogether, you can run the following (as root):
echo "manual" > /etc/init/network-manager.override
Now, at least on ubuntu, your wifi driver, wpa_supplicant and ifupdown will not be smacked about anymore.
Simple and dumb WPA setup
Install the following packages, if they are not installed already:
apt-get install wireless-tools wpasupplicant
Edit /etc/network/interfaces and add the following:
auto wlan0 iface wlan0 inet dhcp wpa-ssid YourSSID wpa-psk YourWPASharedKey
This is the most basic, but static, setup possible for wifi. If you need anything more, you need to read up on wpa_supplicant, or run through one of the tutorials referenced above.
Devices
The following devices all come with an built-in wifi chip.