ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2012年5月29日 星期二

athero wifi sdk in android

ref: http://r40eubuntu.blogspot.com/2012/05/android-enable-wifi-ap-mode.html

wifi driver 分成兩部份: driver ko & proprietary bin。
  1. driver ko: 就是 kernel interface。 -- 這部份有 source code
  2. proprietary bin : driver 啟動時,load 進 wifi module。 -- 這部份沒有 source code
整個 wifi driver 是以 atheros wifi sdk 的方式提供的。

android framework 中,他是在: /system/wlan/atheros/

裡面有兩個 folder ,分別是 driver ko 跟 proprietary bin。

要 build 這個 folder ,還要修改BoardConfig.mk

因為 Android.mk 有: ifneq ($(TARGET_SIMULATOR),true) ifeq ($(BOARD_WLAN_CHIP_AR6003), true) # The board config file for the product must define BOARD_WLAN_ATHEROS_SDK # in order to build the atheros wlan components. ifdef BOARD_WLAN_ATHEROS_SDK include $(BOARD_WLAN_ATHEROS_SDK)/host/Android.mk include $(BOARD_WLAN_ATHEROS_SDK)-proprietary/host/Android.mk endif endif endif 所以這個 folder 可以同時放很多版本的 sdk,然後由 BoardConfig.mk 指定要使用的版本。

修改完 BoardConfig.mk 後,就可以到 /system/wlan/atheros 去 build (mm)。
結果出現 error : ATH_LINUXPATH 沒定義。

到 sdk ../host/Android.mk 去看,發現有針對 TARGET_PRODUCT 作 case build。
所以TARGET_PRODUCT name 有改的,他就不知道了。
改一下,把自己的 product name 加進去。 --- OK

driver OK!



接著是 helper tool ..
先參考 init.rc 看一下啟動的 script tool 是...

好像只有設定 wifi prop 和用 wlan_tool啟動 wpa_supplicant service

發現 imx5x/imx5x.mk 差異頗大..

wlan_tool 包含在 sdk 裡面。

wpa_supplicant 有三個版本,檢查各自的 Android,mk 可以知道:
  1. wpa_supplicant : WPA_SUPPLICANT_VERSION := VER_0_5_X
  2. wpa_supplicant_6 : ifeq ($(WPA_SUPPLICANT_VERSION),VER_0_6_X)
  3. wpa_supplicant_ath : ifeq ($(WPA_SUPPLICANT_VERSION),VER_0_8_ATHEROS)
在 BoardConfig.mk 可以找到要用的版本定義: WPA_SUPPLICANT_VERSION := VER_0_8_ATHEROS


init.rc:

wifi 需要:
  1. /data/misc/wifi 目錄
  2. /data/misc/wifi/wpa_supplicant.conf 檔案
  3. /data/system/wpa_supplicant 目錄
然後要設定 setprop wifi.interface wlan0 mkdir /data/misc/wifi/sockets 0770 wifi wifi mkdir /data/misc/dhcp 0770 dhcp dhcp chown dhcp dhcp /data/misc/dhcp 另外這是 dhcpcd client daemon service dhcpcd_wlan0 /system/bin/logwrapper /system/bin/dhcpcd -d -B wlan0 disabled oneshot 還有 wpa_supplicant , wlan service: service wpa_supplicant /system/bin/wlan_tool wpa_supplicant socket wpa_wlan0 dgram 660 root wifi disabled oneshot service wlan_tool /system/bin/wlan_tool oneshot 另外,wifi 的 jni 中有實做的底層,會在 hardware/libhardware_legacy 的 wifi folder 中。
jni 所 include 的 wifi.h ,就是再 libhardware_legacy/include

沒有留言:

標籤

網誌存檔