Porting Wifi driver on Android
2010-11-03 15:04
423 查看
[android-porting] Porting Wifi driver on
Android
GaanTue, 23 Feb 2010 12:05:26
-0800
Hi everyone, I'm porting wifi driver (Ralink chip) on Android 2.0.1 board. first of all I made some modifies (1) modify build/target/board/generic/BoardConfig.mk add H***E_CUSTOM_WIFI_DRIVER_2 := true (2) Android using wpa_supplicant to management wifi. Make sure external/wpa_supplicant/.config is looking like this # CONFIG_NO_WPA=y CONFIG_OS=unix CONFIG_IEEE8021X_EAPOL=y CONFIG_EAP_MD5=y CONFIG_EAP_MSCHAPV2=y CONFIG_EAP_TLS=y CONFIG_EAP_PEAP=y CONFIG_EAP_TTLS=y CONFIG_EAP_GTC=y CONFIG_EAP_OTP=y CONFIG_EAP_SIM=y CONFIG_EAP_AKA=y CONFIG_EAP_PSK=y CONFIG_EAP_SAKE=y CONFIG_EAP_GPSK=y CONFIG_EAP_PAX=y CONFIG_EAP_LEAP=y # CONFIG_EAP_FAST=y CONFIG_PKCS12=y # CONFIG_PCSC=y CONFIG_SMARTCARD=y CONFIG_WIRELESS_EXTENSION=y CONFIG_CTRL_IFACE=y # CONFIG_DRIVER_HOSTAP=y # CONFIG_DRIVER_HERMES=y # CONFIG_DRIVER_MADWIFI=y # CONFIG_DRIVER_ATMEL=y CONFIG_DRIVER_WEXT=y # CONFIG_DRIVER_NDISWRAPPER=y # CONFIG_DRIVER_BROADCOM=y # CONFIG_DRIVER_IPW=y # CONFIG_DRIVER_BSD=y # CONFIG_DRIVER_NDIS=y # CONFIG_DRIVER_TEST=y # CONFIG_DRIVER_CUSTOM=y # CONFIG_DEBUG_FILE=y # CONFIG_INTERNAL_LIBTOMMATH=y (3) Enable wpa_supplicant compile option, modify external/ wpa_supplicant/Android.mk (3.1) LOCAL_PATH := $(call my-dir) WPA_BUILD_SUPPLICANT := true ifneq ($(TARGET_SIMULATOR),true) ifneq ($(BOARD_WPA_SUPPLICANT_DRIVER),) WPA_BUILD_SUPPLICANT := true CONFIG_DRIVER_$(BOARD_WPA_SUPPLICANT_DRIVER) = y endif (3.2) remove mark symbol, and look like this ######################## local_target_dir := $(TARGET_OUT)/etc/wifi include $(CLEAR_VARS) LOCAL_MODULE := wpa_supplicant.conf LOCAL_MODULE_TAGS := user LOCAL_MODULE_CLASS := ETC LOCAL_MODULE_PATH := $(local_target_dir) LOCAL_SRC_FILES := $(LOCAL_MODULE) include $(BUILD_PREBUILT) # ######################## (4) Modify wpa_supplicant setting file, and out/target/product/ generic/system/etc/wifi/ will be created after #make in step (3) out/ target/product/generic/system/etc/wifi/wpa_supplicant.conf (4.1) # The value can be set to, e.g., udp (ctrl_interface=udp) # # For Windows Named Pipe: This value can be used to set the security descriptor # for controlling access to the control interface. Security descriptor can be # set using Security Descriptor String Format (see http://msdn.microsoft.com/ # library/default.asp?url=/library/en-us/secauthz/security/ # security_descriptor_string_format.asp). The descriptor string needs to be # prefixed with SDDL=. For example, ctrl_interface=SDDL=D: would set an empty # DACL (which will reject all connections). See README-Windows.txt for more # information about SDDL string format. # #ctrl_interface=wlan0 ctrl_interface=DIR=/data/system/wpa_supplicant/ GROUP=system (4.2) setting default AccessPoint value: # Only WPA-PSK is used. Any valid cipher combination is accepted. network={ ssid="example" // AP name proto=WPA //encypted method key_mgmt=WPA-PSK //using psk pairwise=CCMP TKIP group=CCMP TKIP WEP104 WEP40 psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb priority=2 } (5) Add directory which is needed when enable wifi under linux, System/core/rootdir/init.rc # give system access to wpa_supplicant.conf for backup and restore mkdir /data/misc/wifi 0770 wifi wifi chmod 0770 /data/misc/wifi chmod 0660 /data/misc/wifi/wpa_supplicant.conf mkdir /data/misc/wifi/sockets 0770 wifi wifi mkdir /data/misc/android 0770 wifi wifi mkdir /data/system/wpa_supplicant 0770 wifi wifi mkdir /data/misc/dhcp 0770 dhcp dhcp chown dhcp dhcp /data/misc/dhcp chmod 0555 /system/bin/busybox (6) Modify HAL code, hardware/libhardware_legacy/wifi/wifi.c Re-define the include path #ifndef WIFI_DRIVER_MODULE_PATH //#define WIFI_DRIVER_MODULE_PATH "/system/lib/modules/wlan.ko" #define WIFI_DRIVER_MODULE_PATH "/lib/modules/rt3070sta.ko" #endif #ifndef WIFI_DRIVER_MODULE_NAME //#define WIFI_DRIVER_MODULE_NAME "wlan" #define WIFI_DRIVER_MODULE_NAME "ra0" #endif #ifndef WIFI_DRIVER_MODULE_ARG #define WIFI_DRIVER_MODULE_ARG "" #endif #ifndef WIFI_FIRMWARE_LOADER #define WIFI_FIRMWARE_LOADER "" #endif #define WIFI_TEST_INTERFACE "sta" (7) Make and place driver relative file after boot. place rt3070sta.ko at /lib/modules/ place RT2870STA.dat at /etc/Wireless/RT2870STA/ (it is driver needed) place libiw.so.29 at /lib (it is driver needed) (8) select "Settings" -> "Wireless&networks" -> "Wi-Fi" in Android I found the wifi module has been inserted. and I got the logcat. ==================== D/SettingsWifiEnabler( 1153): Received wifi state changed from Disabled to Enabling rtusb init ---> ra0 (usb): not using net_device_ops yet usbcore: registered new interface driver rt2870 ==================== but soon it fail and throws the log ==================== init: no such service 'wpa_supplicant' ====================
相关文章推荐
- Android Wifi Driver Porting
- Android Wifi Driver Porting
- Android Wifi Driver Porting
- 【转】Android Wifi Driver Porting
- Android wifi porting document
- Android KitKat 4.4 Wifi移植之Wifi driver
- Android - porting MPTCP on android-x86-6.0-rc1 (some files may cause issues)
- Porting WiFi drivers to Android
- Porting Libusb for Android on the Beagleboard i...
- Android WiFi On/Off sequence diagram
- Porting WiFi drivers to Android(zz)
- Android WiFi Toggle ON/OFF流程分析
- Porting WiFi drivers to Android
- Porting WiFi drivers to Android
- Porting WiFi drivers to Android
- Porting WiFi drivers to Android
- Porting WiFi drivers to Android
- Porting WiFi drivers to Android
- Porting WiFi drivers to Android
- android adb driver can not work on WINDOW XP, it take me 1 hour to fix it up