Wifi

From linux-sunxi.org
Jump to: navigation, search

Contents

Driver specific information

Allwinner

Device Type sdio id sunxi-3.4 kernel mainline kernel
XR819 SDIO 0020:2281 xradio_wlan

For XR819 BSP driver can found here and firmware blobs can be found there

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

Broadcom

Broadcom Devices

Device Type usb id module sunxi-3.4 kernel mainline kernel

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
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.

Datasheets: RDA5990P RDA5990

Realtek

Most of the USB-based Realtek 8xxx are supported by the rtl8xxxu which is using the MAC80211 framework. Please always try this driver first, because it seems to be a lot more stable than "official" driver.

Device Type usb/sdio 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)
RTL8189ES SDIO  ?? out-of-tree driver (see below)  ??
RTL8189FTV SDIO 024c:f179 out-of-tree driver (see below)  ??
RTL8192CU USB 0bda:018a rtl8192cu 8192cu
RTL8703AS SDIO  ??? out-of-tree driver (see below)  ??
RTL8723AU USB 0bda:0724 rtl8xxxu / rtl8723au (staging) 8723au
RTL8723BS SDIO 024c:b723 out-of-tree driver (see below) 8723bs


RTL8189ES / RTL8189ETV

For mainline support you should use Hans de Goede's sunxi-wip kernel branch containing various bits and pieces needed to make things work.

Driver has its own repository:

git clone https://github.com/jwrdegoede/rtl8189ES_linux.git
cd rtl8189ES_linux.git
make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnu- KSRC=../linux


RTL8723BS / RTL8703AS

For mainline support you should use Hans de Goede's sunxi-wip kernel branch containing various bits and pieces needed to make things work.

Driver has its own repository:

git clone https://github.com/jwrdegoede/rtl8723bs.git
cd rtl8723bs
make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnu- KSRC=../linux

Do not forget to copy *.bin to /lib/firmware/rtlwifi on the target system.

RTL8189FTV

For mainline support you should use Hans de Goede's sunxi-wip kernel branch containing various bits and pieces needed to make things work.

Driver has its own repository:

git clone https://github.com/jwrdegoede/rtl8189ES_linux.git
cd rtl8189ES_linux.git
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

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

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.

Personal tools
Namespaces

Variants
Actions
Navigation
Tools