2014年6月4日 星期三

Android 4.2.2 , RT3070 wifi porting note [1]

 Android version : Android 4.2.2 
Wifi module : TOTOLINK N150UM (RT3070) 

 之前提到在BBB上做了androidporting,又在上做了wifi的配置,結果忘了把過程寫出來,上半年真是太懶散了,多虧有網友提醒,我在這裡把相關的配置設定做個記錄,這裡的資料是我參考一些網路上的資料,綜合而來,希望對各方朋友能有所幫助。 

這篇Note分成2個部分: 
1. RT3070 wifi driver porting 
2. Android 4.2.2 setting 

1. RT3070 wifi driver porting時,我會簡介一下如何把RT3070的驅動程式修改程能在Android上用的版本,基本上程式碼是不太需要動到的,只是需要修改一些設定,在cross-compilerARMandroid平台上。 

2. Android 4.2.2 setting時,我會簡介一下如何修改部分的Android source,把wifi的設定匹配到我們剛剛cross-compiler driver上。

這篇文章為
1. RT3070 wifi driver porting 

========================================================================================

下載Driver source 
本篇文章使用的是[塔米歐 N150UM 極致輕薄USB無線網卡],其驅動程式下載位置: http://www.tamio.com.tw/tamio/component/phocadownload/category/61-totolink-n150um?download=144:2011-0719-rt3070-rt3370-rt5370-rt5372-linux-sta-v2-5-0-3-dpo 

下載之後你會得到以下檔案: 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2

使用tar指令把他解開
#tar jxvf 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2

因為此驅動程式預設是給linux PC用的,所以我們要作一些修改,才能給我們的android平台用

驅動程式修改
1.     修改os/linux/config.mk的內容,新增wpa_supplicant的支援
 # vim os/linux/config.mk
 修改以下內容
 HAS_WPA_SUPPLICANT=y
 HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y



2.     這個驅動程式會把device的名字註冊成ra,而一般的裝置名字似乎是wlan比較常見,因此修改include/rtmp_def.h的內容,讓驅動把名字註冊成wlan,當然,不改也沒關係,只是往後在修改Android 設定時需要注意一下。

 # vim include/rtmp_def.h
 修改以下內容
 #define INF_MAIN_DEV_NAME        "wlan"
 #define INF_MBSSID_DEV_NAME        "wlan"


Makefile 修改
1.     因為這個平台沒有預設Beaglebone Black的驅動程式,因此我們新增一個給BBB用,首先,先來修改Makefile,在約25行處,有一串的PLATFORM的設定,預設的PLATFORMPC
PLATFORM PC


PLATFORM PC註解,增加新的platform BBB
#PLATFORM PC
PLATFORM BBB


2.     Makefile 172行處有platform PC的設定檔,依照他的格式,新增以下內容作為platform BBB的設定檔。
        # ---------------------------------------------------------------
        ifeq ($(PLATFORM),BBB)
        # Linux for Android TI source
        CHIPSET = 3070
        LINUX_SRC = /home/BeagleboneBlack/Android/rowboat-android/kernel/
        CROSS_COMPILE = arm-eabi-
        endif
        # ---------------------------------------------------------------


§   因為我使用的wifi模組是RT3070的晶片,因此CHIPSET改成3070
§   LINUX_SRCkernel source的位置,如果是要cross compiler到其他平台上,就要改到此平台linux kernel對應的存放位置,在這裡我是為了portingAndroid上,所以將路徑改成這樣
§   CROSS_COMPILE則是看corss-compiler來決定,請修改成您使用的corss-compiler

3.     接著為我們新增的platform,增加gccinclude路徑,否則一compiler會直接說某些結構找不到definition,因為他找不到include的路徑,修改os/linux/config.mk這個檔案,新增以下內容,增加gcc運行時的flag
 # vim os/linux/config.mk
增加以下內容
 ifeq ($(PLATFORM),BBB)
     EXTRA_CFLAGS := $(WFLAGS) -I$(RT28xx_DIR)/include
 endif



4.     接著就可以開始make了,記得指定ARCH=arm
 # make ARCH=arm

5.     編譯完成之後,會在os/linux/ 下產生rt3070sta.kodriver

Reference :
[1]http://askubuntu.com/questions/148767/help-do-i-install-the-ralink-rt3070-wireless-driver


2 則留言:

  1. 你好,我在Google搜索時看到你的帖子
    其實我在尋找rt3070驅動與Android 連接方法
    我的電視機盒WiFi不給力,所以想利用外接無線網卡連WiFi,可是我的totolink u150ua 網卡插入後完全沒有反應,我上網爬文後發現需要驅動才能使用,可是我不是電腦程式員沒辦法自己用。
    想請問,我要怎樣才能在android7環境下使用無線網卡呢?

    回覆刪除
  2. 我也想知道。我電視盒的無線網壞了,想外接無 線USB,已有官方安卓驅動,但就是不會用。

    回覆刪除