返回
顶部

修改密码

雷凌Ralink 2070 移植到Android记录

+1

-1

收藏

+1

-1

点赞0

评论0

最近一段时间移植了ralink 2070的驱动到Android上面,网上虽然有ralink的移植文章,但是我按照步骤移植,还是出现了一些问题,比如识别不到网卡,搜不到网络等问题,所以我把移植的大概步骤记录下来,用于以后查询,下面就是大概的移植步骤1 在ralink官网http://www.rali…
最近一段时间移植了ralink 2070的驱动到Android上面,网上虽然有ralink的移植文章,但是我按照步骤移植,还是出现了一些问题,比如识别不到网卡,搜不到网络等问题,所以我把移植的大概步骤记录下来,用于以后查询,下面就是大概的移植步骤

1    在ralink官网http://www.ralinktech.com/en/index.php下载驱动2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO源码,

需要在rtusb_dev_id.c的数组里面rtusb_dev_id[]里面增加{USB_DEVICE(0x148F,0x2070)},不然会造成加载驱动的时候识别不到设备,
因为USB驱动识别是根据idVendor和idProduct来识别设备的,2070的设备号为idVendor=148f, idProduct=2070。
进入根目录修改makefile,选择CHIPSET = 3070,PLATFORM = 5VT,设置交叉编译环境
ifeq ($(PLATFORM),5VT)
LINUX_SRC = /home/Ubuntu/tcc8902/Android/kernel
CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-
endif
需要修改/os/linux/config.mk
HAS_WPA_SUPPLICANT=y
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
EXTRA_CFLAGS :
-D__LINUX_ARM_ARCH__=6
-march=armv6
-mtune=arm1176jzf-s
还需要去掉-mabi=apcs-gnu选项,不然会造成加载驱动死机重启,网上的一篇移植文章有提到。

2   编译好rt3070sta.ko,将其放到/system/lib/modules/目录下面,还有就是需要将官方提供的RT2870STA.dat拷贝到/etc/Wireless/RT2870STA/供驱动使用

3   由于tcc8900默认的wifi模块是atheros,所以我还修改了wifi_atheros.c的int wifi_load_driver()函数
 
01 int wifi_load_driver()
02 {
03     char driver_status[PROPERTY_VALUE_MAX];
04     int count = 100; /* wait at most 20 seconds for completion */
05  
06     if (check_driver_loaded()) {
07         return 0;
08     }
09  
10     if (insmod(DRIVER_MODULE_PATH, DRIVER_MODULE_ARG) < 0)
11         return -1;
12  
13     if (strcmp(FIRMWARE_LOADER,"") == 0) {
14         usleep(WIFI_DRIVER_LOADER_DELAY);
15         property_set(DRIVER_PROP_NAME, "ok");
16     }
17     else {
18         property_set("ctl.start", FIRMWARE_LOADER);
19     }
20     sched_yield();
21     while (count-- > 0) {
22         if (property_get(DRIVER_PROP_NAME, driver_status, NULL)) {
23             if (strcmp(driver_status, "ok") == 0)
24                 return 0;
25             else if (strcmp(DRIVER_PROP_NAME, "failed") == 0) {
26                 wifi_unload_driver();
27                 LOGE("DRIVER_PROP_NAME failed");
28                 //property_set(DRIVER_PROP_NAME, "ok");
29                 return -1;
30             }
31         }
32         usleep(200000);
33     }
34    property_set(DRIVER_PROP_NAME, "timeout");
35    wifi_unload_driver();
36     return -1;
37 }

 

这里有一个问题需要注意,就是static const char IFACE_DIR[]= "/data/system/wpa_supplicant";这里的路径一定要和wpa_supplicant.conf里面的
ctrl_interface=DIR=/data/system/wpa_supplicant相同,不然会造成"/data/system /wpa_supplicant/ra0": No such file or directory这个错误,这个问题困扰我了很久,
权限问题也会引起这个问题。

4     需要更改init.rc文件,里面需要更改权限问题,
 
01 chmod 0777 /system/etc/wifi/wpa_supplicant.conf
02 chown wifi wifi /system/etc/wifi/wpa_supplicant.conf
03 mkdir /data/misc/wifi/wapi_certificate 0777 wifi wifi
04 mkdir /data/misc/dhcp 0777 dhcp dhcp
05 chown dhcp dhcp /data/misc/dhcp
06 mkdir /data/misc/wifi/sockets 0777 wifi wifi
07 mkdir /data/misc/wifi/wpa_supplicant 0777 wifi wifi
08 mkdir /data/misc/wifi/hostapd 0777 wifi wifi
09 mkdir /data/misc/wifi 0777 wifi wifi
10 setprop wifi.interface ra0
11 setprop wlan.driver.script "wifi_sta_up.sh"
12 setprop wlan.driver.path "/system/wifi"
13 chmod 0777 /data/misc/wifi
14 chmod 0777 /data/misc/wifi/wpa_supplicant.conf
15 chown wifi wifi /data/misc/wifi
16 chown wifi wifi /data/misc/wifi/wpa_supplicant.conf
17 chown wifi wifi /system/etc/wifi
18  
19 mkdir /data/system/wpa_supplicant 0777 wifi wifi
20 chmod 0777 /data/system/wpa_supplicant
21 chown wifi wifi /data/system/wpa_supplicant

 

5    按照上面的步骤,通过手动加载驱动
 
1 insmod /system/lib/modules/rt3070sta.ko
2 ifconfig ra0 up
3 wpa_supplicant -dd -Dwext -ira0 -c /system/etc/wifi/wpa_supplicant.conf&
4 iwlist ra0 scanning

 

基本上就可以搜索到网络了,但是要通过Android设置里面的wifi setting去控制wifi的使能,还是会出现
/data/system/wpa_supplicant/ra0": No such file or directory错误,但是在搜索的过程中,如果手动的输入ifconfig ra0 up命令,就可以搜到网络
说明在wpa_supplicant调用的过程中没有打开ralink,于是我在wpa_ctrl.c文件的wpa_ctrl_open函数的开头增加了
对ra0打开的调用,       
 
1 struct ifreq ifr;
2 os_memset(&ifr,0,sizeof(struct ifreq));
3 strncpy(ifr.ifr_name,"ra0",IFNAMSIZ);
4 setflags(ctrl->s,&ifr,IFF_UP,0);
5 usleep(10000);

 

重新编译,烧录程序,然后通过Android wifi setting终于能够搜到网络,链接也能上网了。但是为什么wpa_supplicant在启动的没能打开ra0,现在还没搞明白,也希望高手
能指点一下。

以上就是移植的大概过程。

扫一扫在手机打开

评论
已有0条评论
0/150
提交
热门评论
相关推荐
Android-x86虚拟机安装配置全攻略
  • 程序移植
  • 2022-05-20 18:33
  • 4 0 0
+1
移植Flash游戏到Android平台
  • 程序移植
  • 2022-05-20 18:33
  • 2 0 0
+1
Android系统移植问题集
  • 程序移植
  • 2022-05-20 18:33
  • 4 0 0
+1
android rom移植知识普及
  • 程序移植
  • 2022-05-20 18:33
  • 7 0 0
+1
今日要闻
换一批
热点排行