当前位置: 代码迷 >> 驱动开发 >> 工作札记分享-rt2870 usb wifi在mx53 android平台上的移植
  详细解决方案

工作札记分享-rt2870 usb wifi在mx53 android平台上的移植

热度:310   发布时间:2016-04-28 10:14:59.0
工作笔记分享---rt2870 usb wifi在mx53 android平台上的移植
rt2870 usb wifi在mx53 android平台上的移植

USB WIFI在linux平台下的移植教程网上很多,但是在android上的移植,完整的教程很少,移植这个驱动整整花了一个星期的时间,以下是这个星期下来详细的移植笔记。

一:编译wifi驱动源码,生成ko文件
由于在linux的根文件系统下存在/etc目录,而android的根目录下,/etc是从/system/etc下链接过来的,因此
需要修改wifi源码,让驱动从/system/etc下寻找配置文件。
寻找/etc/Wireless文件,找到如下文件存在,全修改为/system/etc/Wireless:

[email protected]:/opt/program/tools/RT3070_Linux_STA# grep -r '/mnt/etc' ./
./include/os/rt_drv.h:#define STA_PROFILE_PATH "/etc/Wireless/RT2870STA/RT2870STA.dat"
./include/os/rt_drv.h:#define CARD_INFO_PATH "/etc/Wireless/RT2870STA/RT2870STACard.dat"
./include/os/rt_drv.h:#define EEPROM_BIN_FILE_NAME  "/etc/Wireless/RT2870STA/e2p.bin"
./include/os/rt_linux.h:#define STA_PROFILE_PATH "/etc/Wireless/RT2870STA/RT2870STA.dat"
./include/os/rt_linux.h:#define CARD_INFO_PATH "/etc/Wireless/RT2870STA/RT2870STACard.dat"
./include/os/rt_linux.h:#define EEPROM_BIN_FILE_NAME  "/etc/Wireless/RT2870STA/e2p.bin"
./os/linux/Makefile.6:DAT_PATH = /etc/Wireless/RT$(CHIPSET_DAT)STA
./os/linux/Makefile.6: $(shell [ ! -f /etc/Wireless ] && mkdir /etc/Wireless)
二进制文件 ./os/linux/rt_profile.o 匹配
./os/linux/Makefile:DAT_PATH = /mnt/etc/Wireless/RT$(CHIPSET_DAT)STA
./os/linux/Makefile: $(shell [ ! -f /etc/Wireless ] && mkdir /etc/Wireless)
二进制文件 ./os/linux/rt3070sta.o 匹配
二进制文件 ./os/linux/rt3070sta.ko 匹配
./os/linux/Makefile.4:DAT_PATH = /etc/Wireless/RT$(CHIPSET_DAT)STA
./os/linux/Makefile.4: $(shell [ ! -f /etc/Wireless ] && mkdir /etc/Wireless)
二进制文件 ./common/rtmp_init_inf.o 匹配
./RT2870STACard.dat:00CARDID=/etc/Wireless/RT2870STA/RT2870STA1.dat
./RT2870STACard.dat:01CARDID=/etc/Wireless/RT2870STA/RT2870STA2.dat
./RT2870STACard.dat:02CARDID=/etc/Wireless/RT2870STA/RT2870STA3.dat
./RT2870STACard.dat:00MAC00:0E:2E:C3:D0:48=/etc/Wireless/RT2870STA/RT2870STA1.dat
./RT2870STACard.dat:01MAC00:40:F4:FF:AA:40=/etc/Wireless/RT2870STA/RT2870STA2.dat
./RT2870STACard.dat:02MAC00:0C:43:10:11:5C=/etc/Wireless/RT2870STA/RT2870STA3.dat
./RT2870STACard.dat:00CARDTYPEbgn=/etc/Wireless/RT2870STA/RT2870STA1.dat
./RT2870STACard.dat:01CARDTYPEbgn=/etc/Wireless/RT2870STA/RT2870STA2.dat
./RT2870STACard.dat:02CARDTYPEabgn=/etc/Wireless/RT2870STA/RT2870STA3.dat
[email protected]:/opt/program/tools/RT3070_Linux_STA# 

二:修改init.rc文件
直接修改out/..../root下的init.rc文件:

# mkdir /data/misc/wifi 0770 wifi wifi #lqm changed property.
mkdir /data/misc/wifi 0771 wifi wifi
# chmod 0770 /data/misc/wifi
chmod 0771 /system/etc/wifi                     #lqm changed path
#chmod 0660 /data/misc/wifi/wpa_supplicant.conf #lqm changed path
chmod 0660 /system/etc/wifi/wpa_supplicant.conf
chown wifi wifi /system/etc/wifi/wpa_supplicant.conf #lqm added.

on boot
# basic network init
    ifup lo
    hostname localhost
    domainname localdomain

    mkdir /data/system 0775 system system
    mkdir /data/system/wpa_supplicant 0771 wifi wifi # lqm added.

# Set DNS
    #setprop net.dns1 192.168.128.2 #lqm changed.
    setprop net.dns1 192.168.1.1
   
# Prepare for wifi
    setprop wifi.interface ra0
    # mkdir /data/misc/wifi/sockets 0770 wifi wifi
    mkdir /data/misc/wifi/sockets 0771 wifi wifi #lqm changed property
    # mkdir /data/misc/dhcp 0770 dhcp dhcp
    # chown dhcp dhcp /data/misc/dhcp
    mkdir /data/misc/dhcp 0771 system system #lqm changed.

# lqm changed.
service wpa_supplicant /system/bin/wpa_supplicant -dd -Dwext -ira0 -c /system/etc/wifi/wpa_supplicant.conf
     group system wifi inet
     disabled
     oneshot

# lqm changed.
service dhcpcd /system/bin/dhcpcd ra0
     group system dhcp
     disabled
     oneshot

默认init.rc中全使用的wlan0,而rt2860的网络名称为ra0,因此需全替换为ra0。

三:修改hardware/libhardware_legacy/wifi/wifi.c文件。
重新定义WIFI_DRIVER_MODULE_PATH和WIFI_DRIVER_MODULE_NAME宏,定义如下:

#ifndef WIFI_DRIVER_MODULE_PATH
#define WIFI_DRIVER_MODULE_PATH         "/system/lib/modules/rt3070sta.ko"
#endif
#ifndef WIFI_DRIVER_MODULE_NAME
#define WIFI_DRIVER_MODULE_NAME         "rt3070sta"
#endif

wifi.c用于启动时自动加载ko模块,这里暂时使用手动加载的方法,后续更新自动加载功能。

四:在/device/fsl/imx53_loco/BoardConfig.mk文件中增加一行(根据你的无线网卡类型来设置):
BOARD_WPA_SUPPLICANT_DRIVER := WEXT
同时屏掉相关信息,修改后部分代码如下:
  相关解决方案