Linux-3.5 下WiFi移植
2015-09-04 01:05
417 查看
环境:Linux-3.5,雷凌MT7601U模组网卡,tiny4412板子
一、 获得源码。
网卡插开发板上(或者连入虚拟机,这个没有试过,感觉应该可以),在uboot命令行下,lsusb,就会出现WiFi的产品芯片,百度一下产品芯片,应该能知道该芯片用的是哪一个公司的模组,然后到对应模组公司下载Linux下的驱动源码,如本例子里是MT7601U,下完源码,在Linux下解压出来。
二、修改移植
1. 首先在common/rtusb_dev_id.c文件中修改USB_DEVICE_ID rtusb_dev_id[],也就是增加所用产品芯片到module
table 中,如果不知道在哪个文件中,可以建立一个source insight工程,然后搜索USB_DEVICE_ID关键字,排除一些文件应该就能够找你到响应的文件。在rtusb_dev_id[]中找到#ifdef
MT7601U定义的地方,仿造别人的方法加一个自己的WiFi下信息,如增加{USB_DEVICE(0x148f,0x760b)}, /* MT 6370 */。
2.有时候源码中会忘记关闭debug打印信息,这导致我们安装模块时,会不停的打印出调试信息,阻碍我们输入东西。可能不同的板子会打印出不同的信息,但是可以在source inside下搜索打印语气的地方,然后前后分析一下打印原因,就可以关闭debug。本例子中有一个地方需要关闭。也就是include/os/rt_linux.h中在
1558 后面加上两句话,变成如下:
1558
#include "os/rt_os.h"
1559 #undef DBGPRINT
1560 #define DBGPRINT(aa, arg ...)
1561 #endif /* __RT_LINUX_H__ */
3. 打开REDME文件,或者类似文件,里面有移植介绍。虽然有可能更新跟不上,但是这是我们最好的帮助了。因为READEME文档很有可能更新跟不上产品,所有需要在参考过程中理性的去思考到底要不要去做这一步。这里需要修改:
PLATFORM
= PC ,改成自己板子的类型,如果是三星的板子则改成PLATFORM = SMDK;
修改内核源码路径,和编译器类型。编译内核需要依赖源码,同时要交叉编译,这个需要去确认源码中所用的是否与自己实际用的板子一样,一般源码会默认设置成支持x86的。在当前文件中搜索CROSS_COMPILE,找到定义内核路径和交叉编译器的地方,改成自己实际要用的就好了。这里改成这样:
ifeq
($(PLATFORM),SMDK)
LINUX_SRC = /root、/linux-3.5、
CROSS_COMPILE = arm-linux-
endif
4.按照README文档找到os/linux/config.mk,将里面两处配置成:
HAS_WPA_SUPPLICANT=y
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
然后make,make之后如果没有什么错误,就好生成.ko文件,将这个文件复制到自己板子的文件系统上。这里是
cp os/linux/mt7601Usta.ko /root/work/home/
然后根据README文档复制配置文件到板子指定目录上,这里是
cp
RT2870STA.dat /root/work/etc/Wireless/RT2870STA/
如果没有复制配置文件后面应该会有:
Could
not set interface ra0 flags: Operation not permitted
Failed to initialize driver interface
这个错误。
到这里可以移植成功了,但是最好还要移植一些WiFi配置工具,让我们可以配置WiFi的工作模式。
5. 可以移植wpa_supplicant和wireless_tools,他们有的是可执行文,有的是库,将可执行文件复制到板子/bin目录下(需要修改权限,使之具有可执行权限),库则复制到/lib目录下。
6.安装模组,要是有打印错误无法分配内存,则有可能是一次要分配的内存太大,无法分配,这需要在bootargs中指定,可以在bootargs后面加上coherent_pool=2M
再次安装模块,幸运的话应该就成功了,这时插入usbwifi,然后用iwconfig命令查看网卡信息,看看是否有自己的WiFi信息。
要是有根据README提示,在
创建/etc/[b]wpa_supplicant.conf
文件输入内容:[/b]
#
WPA-PSK/TKIP
ctrl_interface=/var/run/wap_supplicant
ap_scan=1
update_config=1
network={
[b]ssid="xxx" #WIFI
网络名,根据自己的修改
key_mgmt=WPA-PSK
proto=WPA
pairwise=TKIP CCMP
group=TKIP CCMP
psk="ooooo" #WIFI
密码,根据自己的修改
}[/b]
mkdir
/var/run/wap_supplicant -p
[b]wpa_supplicant
-Dwext -ira0 -c /etc/wpa_supplicant.conf -B命令启动WiFi。[/b]
到这里差不多了。
后面配置ip既可以了
7.
配置ip
[b]ifconfig ra0 192.168.1.10(这里是你连接无线的网段) broadcast 192.168.1.255 netmask 255.255.0.0 up
配置路由表,由于是无线网卡,这里的网关不要和有线网卡的一
b792
样,如果你的有限网卡网关是192.168.0.1,你的WiFi则要配成类似192.168.1(非0).1的网关。[/b]
网关查看命令:route -n
路由配置查看命令:iproute
路由配置命令:
[b]route add default gw 192.168.1.1[/b]
设置好网关后,ping一下其他网站,如ping 119.75.218.77能通就说明可以上网了。
8、
如果要实现ping域名,则这么搞:
创建/etc/resolv.conf 文件,内容:
[b]nameserver
192.168.1.1
nameserver 8.8.8.8[/b]
……其他的域名解释服务器DNS
一、 获得源码。
网卡插开发板上(或者连入虚拟机,这个没有试过,感觉应该可以),在uboot命令行下,lsusb,就会出现WiFi的产品芯片,百度一下产品芯片,应该能知道该芯片用的是哪一个公司的模组,然后到对应模组公司下载Linux下的驱动源码,如本例子里是MT7601U,下完源码,在Linux下解压出来。
二、修改移植
1. 首先在common/rtusb_dev_id.c文件中修改USB_DEVICE_ID rtusb_dev_id[],也就是增加所用产品芯片到module
table 中,如果不知道在哪个文件中,可以建立一个source insight工程,然后搜索USB_DEVICE_ID关键字,排除一些文件应该就能够找你到响应的文件。在rtusb_dev_id[]中找到#ifdef
MT7601U定义的地方,仿造别人的方法加一个自己的WiFi下信息,如增加{USB_DEVICE(0x148f,0x760b)}, /* MT 6370 */。
2.有时候源码中会忘记关闭debug打印信息,这导致我们安装模块时,会不停的打印出调试信息,阻碍我们输入东西。可能不同的板子会打印出不同的信息,但是可以在source inside下搜索打印语气的地方,然后前后分析一下打印原因,就可以关闭debug。本例子中有一个地方需要关闭。也就是include/os/rt_linux.h中在
1558 后面加上两句话,变成如下:
1558
#include "os/rt_os.h"
1559 #undef DBGPRINT
1560 #define DBGPRINT(aa, arg ...)
1561 #endif /* __RT_LINUX_H__ */
3. 打开REDME文件,或者类似文件,里面有移植介绍。虽然有可能更新跟不上,但是这是我们最好的帮助了。因为READEME文档很有可能更新跟不上产品,所有需要在参考过程中理性的去思考到底要不要去做这一步。这里需要修改:
PLATFORM
= PC ,改成自己板子的类型,如果是三星的板子则改成PLATFORM = SMDK;
修改内核源码路径,和编译器类型。编译内核需要依赖源码,同时要交叉编译,这个需要去确认源码中所用的是否与自己实际用的板子一样,一般源码会默认设置成支持x86的。在当前文件中搜索CROSS_COMPILE,找到定义内核路径和交叉编译器的地方,改成自己实际要用的就好了。这里改成这样:
ifeq
($(PLATFORM),SMDK)
LINUX_SRC = /root、/linux-3.5、
CROSS_COMPILE = arm-linux-
endif
4.按照README文档找到os/linux/config.mk,将里面两处配置成:
HAS_WPA_SUPPLICANT=y
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
然后make,make之后如果没有什么错误,就好生成.ko文件,将这个文件复制到自己板子的文件系统上。这里是
cp os/linux/mt7601Usta.ko /root/work/home/
然后根据README文档复制配置文件到板子指定目录上,这里是
cp
RT2870STA.dat /root/work/etc/Wireless/RT2870STA/
如果没有复制配置文件后面应该会有:
Could
not set interface ra0 flags: Operation not permitted
Failed to initialize driver interface
这个错误。
到这里可以移植成功了,但是最好还要移植一些WiFi配置工具,让我们可以配置WiFi的工作模式。
5. 可以移植wpa_supplicant和wireless_tools,他们有的是可执行文,有的是库,将可执行文件复制到板子/bin目录下(需要修改权限,使之具有可执行权限),库则复制到/lib目录下。
6.安装模组,要是有打印错误无法分配内存,则有可能是一次要分配的内存太大,无法分配,这需要在bootargs中指定,可以在bootargs后面加上coherent_pool=2M
再次安装模块,幸运的话应该就成功了,这时插入usbwifi,然后用iwconfig命令查看网卡信息,看看是否有自己的WiFi信息。
要是有根据README提示,在
创建/etc/[b]wpa_supplicant.conf
文件输入内容:[/b]
#
WPA-PSK/TKIP
ctrl_interface=/var/run/wap_supplicant
ap_scan=1
update_config=1
network={
[b]ssid="xxx" #WIFI
网络名,根据自己的修改
key_mgmt=WPA-PSK
proto=WPA
pairwise=TKIP CCMP
group=TKIP CCMP
psk="ooooo" #WIFI
密码,根据自己的修改
}[/b]
mkdir
/var/run/wap_supplicant -p
[b]wpa_supplicant
-Dwext -ira0 -c /etc/wpa_supplicant.conf -B命令启动WiFi。[/b]
到这里差不多了。
后面配置ip既可以了
7.
配置ip
[b]ifconfig ra0 192.168.1.10(这里是你连接无线的网段) broadcast 192.168.1.255 netmask 255.255.0.0 up
配置路由表,由于是无线网卡,这里的网关不要和有线网卡的一
b792
样,如果你的有限网卡网关是192.168.0.1,你的WiFi则要配成类似192.168.1(非0).1的网关。[/b]
网关查看命令:route -n
路由配置查看命令:iproute
路由配置命令:
[b]route add default gw 192.168.1.1[/b]
设置好网关后,ping一下其他网站,如ping 119.75.218.77能通就说明可以上网了。
8、
如果要实现ping域名,则这么搞:
创建/etc/resolv.conf 文件,内容:
[b]nameserver
192.168.1.1
nameserver 8.8.8.8[/b]
……其他的域名解释服务器DNS
相关文章推荐
- Linux命令备忘实例(4)——获取内容
- ipvsadm两种安装方式
- Linux上vi(vim)的使用教程
- linux配置IP地址
- Linux禁止ping以及开启ping的方法
- Linux 硬盘分区生效命令partprobe
- kernel panic -not syncing :VFS:unable to mount the root fs on (0,0)的解决方法
- Linux内存使用消耗高
- Linux主机系统目录误操作权限修改为777修复方法
- 制作Redhat/CentOS/Fedora更新源
- linux磁盘空间用满的处理方法
- Linux查看实时带宽流量情况
- linux系统mysql密码修改脚本
- linux系统mysql连接检查脚本
- linux系统ssh远程连接检查脚本
- linux系统带宽监测脚本
- linux系统web日志分析脚本
- linux系统负载状态检查脚本
- linux大杂烩
- (linux命令学习)找到相应性质的文件并删除