目录
- MT7601的简述
- WPA_SUPPLICANT的移植
- 移植的大概思路
- 编译mt7601驱动
- 测试驱动
MT7601的简述
硬件选型的方案是360wifi二代 现在360wifi已经到三代了,二代还有卖大概十几就可以买到。
芯片是MT7601U MT是联发科的,这是联发科的一个产品。
最近发现开发板插网线太麻烦了,用wifi方便多了。
WG209是一兼容802.11 b/g/n WiFi标准的USB接口 WiFi模块,基于MT7601单芯片全新架构,集成了CPU和内存,可以在片上运行更多的WiFi功能。
USB2.0高速接口。
数据速率
802.11b:1,2,5.5和11Mbps
802.11g:6,9,12,18,24,36,48,54Mbps
802.11n:20MHz信道:1Nss:65Mbps @ 800GI,72.2Mbps @ 400GI(最大值)。
40MHz信道:1Nss:135Mbps @ 800GI,150Mbps @ 400GI(最大)
WPA_SUPPLICANT的移植
wpa_supplicant只是一个工具(用于连接WIFI的),在开发板的QT/E根文件系统中自带的有wpa_supplicant工具,可以找一找就省去了移植的工作。在大家自带的光盘资料中可以找到。 或者可以自己移植一个,并没有多麻烦。↓↓↓
参考文章:→→文章链接
• WPA_SUPPLICANT工具 – wpa_supplicant就是WiFi驱动和用户的中转站外加对协议和加密认证的支 持 – 实现用户通过socket来编程 • wpa_supplicant的移植网上教程一大堆,对应可以使用的版本就成, 一个不行多试几个。 – wpa_supplicant工具涉及到版本问题。
→→已经编译好的链接←
移植的大概思路
找到驱动源码
- 找到官方开发包
- 关注一下源码支持内核版本和驱动源码版本以及编译平台
- 源码支持内核版本
- 驱动源码版本
- 编译平台
- Makefile的配置
- 找到了内核源码目录和对应编译器
- 对应平台
- 编译器配置位置
- 内核源码路径设置
- 对WPA_SUPPLICANT的支持:
- 驱动源码中修改两个ID
芯片的配置
- 找到使用文档和配置脚本或者配置程序和配置脚本
WPA_SUPPLICANT工具
配置网络和测试
找到联发科官网:→→联发科官网 找到驱动源码包:→→驱动源码包
下载:源码包:DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2
发现需要在Makefile中设置"MODE = STA"和目标TARGET = LINUX
发现需要在os/linux/config.mk文件中设置'HAS_WPA_SUPPLICANT=y'和'HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y用来支持wpa_supplicant工具来连接WiFi。
发现需要在Makefile中设置对应支持的平台三星(根据十几情况来设置),Makefile 找到PLATFORM = SMDK取消其注释,并且注释掉原来的PLATFORM = PC这个要用#来注释掉。
把360WiFi插在开发板上获取两个ID:
获得ID是idVendor=148f, idProduct=760b
阅读文档还发现需要复制/RT2870STA.dat文件到开发板的/etc/Wireless/RT2870STA/RT2870STA.dat
编译mt7601驱动
直接使用Qt的根文件系统,跳过WPA_SUPPLICANT的移植。
1 确认配置 确认os/linux/config.mk中的'HAS_WPA_SUPPLICANT=y' 和'HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y'是否配置。
2 配置文件复制
cp RT2870STA.dat /etc/Wireless/RT2870STA/RT2870STA.dat
3 Makefile修改
- #PLATFORM: Target platform,默认=PC肯定不行。 在49行看到SMDK–这个是三星开发板的意思,这个要配置为SMDK。 操作: 注释掉PLATFORM = PC 取消注释PLATFORM = SMDK
- 搜索SMDK:
找到:
ifeq ($(PLATFORM),SMDK)
LINUX_SRC = /home/bhushan/itcenter/may28/linux-2.6-samsung
CROSS_COMPILE = /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-
endif
改为:(根据自己的内核路径、交叉编译工具来设置)
ifeq ($(PLATFORM),SMDK)
LINUX_SRC = /home/topeet/android4.0/iTop4412_Kernel_3.0
CROSS_COMPILE = arm-none-linux-gnueabi-
endif
4 驱动源码中修改两个ID
idVendor=148f, idProduct=760b 在无驱动的情况下插入usb的wifi,获取两个ID:0x148f,0x760b
源码中搜索USB_DEVICE( 使用命令grep -rn "USB_DEVICE(*" * 添加到源码中 在common/rtusb_dev_id.c:中添加两个ID
4 编译
编译出的ko文件在os/linux/ko目录中
make -j2
os/linux/mt7601Usta.ko
编译完成:
在os/linux找到驱动mt7601Usta.ko文件
测试驱动
拷贝驱动到开发板:
挂载驱动:
挂载成功:
找到360wifi的网卡ra0:
查看当前的网络:
关闭eth0网卡:
打开wifi:
开启成功:
编辑要连接wifi信息的脚本:
ssid是wifi名、psk是wifi密码
连接wifi命令 wpa_supplicant -B -i ra0 -c wpa_supplicant.conf
-B选项可以把wifi挂到后台不占用当前的控制台窗口。
连接成功:
在ping之前要动态获取IP:udhcpc -i ra0
获得wifi路由器分配的IP 192.168.0.106
ping测试:
大型ping百度现场: