Realtek Wi-Fi SDK For Android JB 4.3
Realtek Wi-Fi SDK For Android JB 4.3
3
ver. 1.0.0
Contents
Release History ............................................................................................................. 2
Introduction .................................................................................................................. 3
1. Copy Necessary Files into SDK .......................................................................... 4
2. Platform Related Files ......................................................................................... 4
2.1. BoardConfig.mk ....................................................................................... 4
2.2. init.xxx.rc .................................................................................................. 6
2.3. Others ........................................................................................................ 8
3. System Resource Configurations ........................................................................ 9
4. libhardware_legacy ............................................................................................ 10
5. wpa_supplicant_8............................................................................................... 11
6. Driver Configurations for Android JB ............................................................. 12
7. FAQ ..................................................................................................................... 13
7.1. Wi-Fi (STA mode) .................................................................................. 14
7.1.1. Why Wi-Fi can’t enable? ........................................................... 14
7.2. Portable Wi-Fi hotspot (AP mode) ....................................................... 14
7.2.1. Why Portable Wi-Fi hotspot can’t enable? ............................. 14
7.3. Wi-Fi Direct (P2P mode) ....................................................................... 15
7.3.1. There is no Wi-Fi Direct UI shown? ......................................... 15
7.3.2. Wi-Fi Direct can’t scan any peer? ............................................ 15
1
Release History
1.0.0 2013/10/11 1. First formal release
1.1. realtek_wifi_SDK_for_android_JB_4.3_20131011.tar.gz
1.2. wpa_supplicant_8_jb_4.3_rtw_r9301.20131011.tar.gz
2
SDK packages
hardware/realtek/*
Folder to store config files, private code from Realtek.
hardware/libhardware_legacy/wifi/Android.mk
Reference codes for applying wifi_realtek.c
Introduction
This document provides a simple guide to help engineers to apply Realtek Wi-Fi
solution onto their Android JB 4.3 system. For now, we have supported the following
two scenarios:
To port Realtek Wi-Fi driver onto Android 4.3 platform, you can go through the
following guide with reference codes within our driver package's
realtek_wifi_SDK_for_android_JB_4.3_20131011.tar.gz.
Because Android's SDK may differ from platform to platform, our reference
codes may not be applied on every platform without modifications. You should check
if our reference code is suitable for you to use.
In this document, ANDROID_SDK is the path of top folder of the target Android
SDK; this term is used in the following paragraphs.
3
1. Copy Necessary Files into SDK
After unzipping realtek_wifi_SDK_for_android_JB_4.3_20131011.tar.gz, copy
the following folder into ANDROID_SDK/hardware/ folder:
hardware/realtek
4
BOARD_WIFI_VENDOR := realtek
ifeq ($(BOARD_WIFI_VENDOR), realtek)
WPA_SUPPLICANT_VERSION := VER_0_8_X
BOARD_WPA_SUPPLICANT_DRIVER := NL80211
CONFIG_DRIVER_WEXT :=y
BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_rtl
BOARD_HOSTAPD_DRIVER := NL80211
BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_rtl
BOARD_WLAN_DEVICE := rtl8192cu
#BOARD_WLAN_DEVICE := rtl8192du
#BOARD_WLAN_DEVICE := rtl8192ce
#BOARD_WLAN_DEVICE := rtl8192de
#BOARD_WLAN_DEVICE := rtl8723as
#BOARD_WLAN_DEVICE := rtl8723au
#BOARD_WLAN_DEVICE := rtl8189es
#BOARD_WLAN_DEVICE := rtl8723bs
#BOARD_WLAN_DEVICE := rtl8723bu
WIFI_DRIVER_MODULE_NAME := "wlan"
WIFI_DRIVER_MODULE_PATH := "/system/lib/modules/wlan.ko"
WIFI_DRIVER_MODULE_ARG := "ifname=wlan0 if2name=p2p0"
WIFI_FIRMWARE_LOADER := ""
WIFI_DRIVER_FW_PATH_STA := ""
WIFI_DRIVER_FW_PATH_AP := ""
WIFI_DRIVER_FW_PATH_P2P := ""
WIFI_DRIVER_FW_PATH_PARAM := ""
endif
BOARD_WIFI_VENDOR := realtek
To distinguish the platform Wi-Fi device from products of other vendors, we
define variable BOARD_WIFI_VENDOR as realtek. This is for compile-time choices
to be applied for Realtek Wi-Fi solutions.
WPA_SUPPLICANT_VERSION := VER_0_8_X
For Android JB, please set WPA_SUPPLICANT_VERSION as VER_0_8_X to
5
use wpa_supplicant_8.
BOARD_WPA_SUPPLICANT_DRIVER := NL80211
BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_ rtl
BOARD_HOSTAPD_DRIVER := NL80211
BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_rtl
We use NL80211 as the driver interface for wpa_supplicant and hostapd to
communicate with driver and provide lib_driver_cmd_rtl as the private library.
BOARD_WLAN_DEVICE
Realtek provide a variety of Wi-Fi solutions to choose. For now,
BOARD_WLAN_DEVICE is not used for any purpose but we suggest setting this
variable for your Wi-Fi solution you used.
WIFI_DRIVER_MODULE_NAME
WIFI_DRIVER_MODULE_PATH
WIFI_DRIVER_MODULE_ARG
These three variables will be used in libhardware_legacy (wifi.c/wifi_realtek.c)
to do insmod and remmod. The value of WIFI_DRIVER_MODULE_NAME should
match the value of MODULE_NAME specified in our driver’s Makefile at
compile-time. Please refer to “Platform Setting Section in Detail” of:
document/Quick_Start_Guide_for_Driver_Compilation_and_Installation.pdf
WIFI_FIRMWARE_LOADER :=””
WIFI_DRIVER_FW_PATH_STA :=””
WIFI_DRIVER_FW_PATH_AP :=””
WIFI_DRIVER_FW_PATH_P2P :=””
WIFI_DRIVER_FW_PATH_PARAM :=””
Because our driver has FW embedded inside, and will automatically load FW at
NIC initialization process, there is no need to set these 5 variables, just keep them
empty.
2.2. init.xxx.rc
For Wi-Fi to operate properly, we need some daemons to be defined as service
inside init.xxx.rc. In general, the init.xxx.rc file is located in:
ANDROID_SDK/device/<soc_vendor_name>/<board_name>/
Take TI panda board for example:
ANDROID_SDK/device/ti/panda/init.omap4pandaboard.rc.
6
Please add the service definitions below:
wpa_supplicant
service rtw_suppl_con /system/bin/wpa_supplicant \
-ip2p0 -Dnl80211 -c /data/misc/wifi/p2p_supplicant.conf -e/data/misc/wifi/entropy.bin -N \
-iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf
class main
socket wpa_wlan0 dgram 660 wifi wifi
disabled
oneshot
7
dhcpcd
service dhcpcd_wlan0 /system/bin/dhcpcd -aABKL
class main
disabled
oneshot
2.3. Others
For topics mentioned here, you can add the following code segments in any .mk
file which your platform will use. Take TI panda board for example:
ANDROID_SDK /device/ ti/panda/device.mk.
Set wifi.interface
To specify the wifi interface name in Android, a system property named
“wifi.interface” is used. For Realtek Wi-Fi driver, Wi-Fi interface name is assigned
with “wlan%d”. In general, you should set wifi.interface as “wlan0”.
PRODUCT_PROPERTY_OVERRIDES += \
wifi.interface=wlan0
Add android.hardware.wifi.direct.xml
If you want to use Wi-Fi Direct (P2P) functionality, please add the rule in the
PRODUCT_COPY_FILES variable to copy the permission definition file of Wi-Fi
8
Direct to the /system/etc/permissions/ folder of your system image.
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hard
ware.wifi.direct.xml
Make sure your driver is configured for STA+P2P concurrent mode or you may
encounter error when you open the Wi-Fi. Please refer to “7. Driver Configurations
for Android JB”
networkAttributes
To define the system’s available network interfaces, make sure the wifi and
wifi_p2p interface items is defined in the networkAttributes resource configuration in
the config.xml. For example:
radioAttributes
To define the system’s available network interfaces, we need to define interface
items for wifi in the radioAttributes resource configuration. For example:
9
<string-array translatable="false" name="radioAttributes">
<item>"1,1"</item>
<item>"7,1"</item>
<item>"9,1"</item>
</string-array>
config_tether_wifi_regexs
The interfaces set here are tetherable Wi-Fi interfaces which will be used as
interfaces for Wi-Fi LAN port. We use 'wlan0' by default when our Wi-Fi is set as
softap mode. So it needs to set 'wlan0' here. For example:
config_tether_upstream_types
The connection types set here are used as the interfaces for WAN port to connect
to internet. For example, adding Wi-Fi and Ethernet:
To know the definition and set other upstream connection types, please refer to
ANDROID_SDK/frameworks/base/core/java/android/net/ConnectivityManager.java.
4. libhardware_legacy
The libhardware_legacy library includes functionality for Wi-Fi to operate. We
have made modifications and extensions for our Wi-Fi solutions. To apply this, please
modify ANDROID_SDK/hardware/libhardware_legacy/wifi/Android.mk to include
wifi_realtek.c instead of wifi.c into LOCAL_SRC_FILES. For example:
10
ifeq ($(BOARD_WIFI_VENDOR), realtek)
LOCAL_SRC_FILES += ../realtek/wlan/libhardware_legacy/wifi/wifi_realtek.c
else
LOCAL_SRC_FILES += wifi/wifi.c
endif
5. wpa_supplicant_8
We provide wpa_supplicant_8_jb_4.3_rtw_r9301.20131011.tar.gz or newer
version in the wpa_supplicant_hostapd/ of our SW release package. You can:
MACRO Description
ANDROID_P2P Android’s wpa_supplicant_8 patch. Must
REALTEK_WIFI_VENDOR General purpose patch made by Realtek. Must
11
folder of your Android SDK.
C. Rename wpa_supplicant_8_jb_4.3_rtw as wpa_supplicant_8.
By default, the probe callback is used to set up Wi-Fi power and remove callback
is used to close Wi-Fi power.
Please modify both the include/autoconf.h and the specific autoconf file(needed
for compound driver release) for your Wi-Fi product.
12
Chip type Autoconf file to modify
RTL8192CU-series autoconf_rtl8192c_usb_linux.h
RTL8192CE-series autoconf_rtl8192c_pci_linux.h
RTL8192DU-series autoconf_rtl8192d_usb_linux.h
RTL8192DE-series autoconf_rtl8192d_pci_linux.h
RTL8723AS-series autoconf_rtl8723a_sdio_linux.h
RTL8723AU-series autoconf_rtl8723a_usb_linux.h
RTL8723BS-series autoconf_rtl8723b_sdio_linux.h
RTL8189ES-series autoconf_rtl8189e_sdio_linux.h
RTL8188EU-series autoconf_rtl8188e_usb_linux.h
RTL8723BS-series autoconf_rtl8723b_sdio_linux.h
RTL8723BU-series autoconf_rtl8723b_usb_linux.h
To compile our Wi-Fi driver, please refer to the following document for more
infomations:
document/Quick_Start_Guide_for_Driver_Compilation_and_Installation.pdf
7. FAQ
13
7.1. Wi-Fi (STA mode)
7.1.1. Why Wi-Fi can’t enable?
The whole Wi-Fi enabling procedure includes the following three main check
points. Please check in sequence:
Is network interface(s) created?
insmod driver success
Wi-Fi device is recognized
wlan0 (and p2p0) is created
14
7.3. Wi-Fi Direct (P2P mode)
7.3.1. There is no Wi-Fi Direct UI shown?
Please refer to “Add android.hardware.wifi.direct.xml” in chapter 2.3. Others
to enable Wi-Fi Direct functionality of Android JB.
15