目录
- 1 海思平台上USB WIFI移植概述
- 1.1 移植WIFI背景
- 1.2 移植的起点
- 1.3 本季文章安排
- 2 AP模式USB WIFI驱动移植
- 2.1 源码
- 2.2 修改移植
- 3 AP模式USB WIFI传输视频实战
- 3.1 部署USB WIFI驱动使之工作为AP
- 3.2 测试用例准备
- 3.3 测试实验
1 海思平台上USB WIFI移植概述
1.1 移植WIFI背景
(1)必要性:家用camera很多需要wifi联网功能
(2)WIFI接口:SDIO or USB
1.2 移植的起点
(1)基于我的 嵌入式Linux小项目专栏中 《USB WIFI网卡在S5PV210上的移植和使用最全攻略(1-2)》文章,欲了解更多的原理知识与技术细节,请阅读这篇文章,本篇文章重操作。
(2)基于USB WIFI网卡官方移植匹配后的驱动来移植
(3)基于海思SDK中已经编译过的内核源码树来编译驱动
(4)使用的模块:联发科的MT7601U
1.3 本季文章安排
(1)HI3518E+WIFI做AP,PC做sta,实现局域网内ortp视频传输
(2)HI2518E+WIFI做sta,PC做sta,外部路由器做AP,实现局域网内ortp视频传输
(3)HI2518E+WIFI做sta,PC做sta,外部路由器做AP,实现全程无线调试(彻底不用有线网卡)
AP模式: Access Point,提供无线接入服务,允许其它无线设备接入,提供数据访问,一般
的无线路由/网桥工作在该模式下。AP和AP之间允许相互连接
Sta模式: Station, 类似于无线终端,sta本身并不接受无线的接入,它可以连接到AP,一般
无线网卡即工作在该模式。
2 AP模式USB WIFI驱动移植
用到的网卡资料:
链接:https://pan.baidu.com/s/1YLCEuQjZ9dvZAwIhPXrdwA?pwd=x0sa
提取码:x0sa
--来自百度网盘超级会员V4的分享
其实ap和sta中的源码是一样的,但由于要实现不同的功能,进行不同的修改,所以准备的了两份,放在不同的目录中
2.1 源码
(1)从上述链接中下载源码包到本地,将其复制到ubuntu中的某个目录进行开发
tar -jxvf MT7601U_LinuxAP_3.0.0.1_20130802.tar.bz2
大家去MTK官网下载这个模块的资料,发现只有一份代码,没有ap、sta之分,是将二者合并在了一起,这个模块的源码包有很多个版本,我们这里使用的这个版本是将ap、sta分开的。
2.2 修改移植
(1)include/rtmp_def.h中1627行左右,修改网络名始终为:wlan
cd MT7601U_LinuxAP_3.0.0.1_20130802
vim include/rtmp_def.h
原本安卓是wlan,linux是要用ra,我们进行了修改。如果提示文件不可修改,通过chmod命令修改文件权限后再进行修改。
(2)使用提供的Makefile替换掉原来的Makefile,百度网盘中提供了一份,但是内核源码树的路径可能和你的路径不同,需要修改,我的路径:/home/bsp/hisilion/Hi3518E_SDK_V1.0.3.0/osdrv/opensource/kernel/linux-3.4.y
108行
除了内核源码树的路径外,423行的位置的挂载目录,也需要根据你自己的路径进行修改。
我们先make clean,再make进行编译,出现以下报错,找不到头文件,修改相应的配置文件添加头文件目录,即第(3)步。编译时若有些文件因为权限无法操作,可进入root用户编译,但需注意交叉编译链可能找不到,需导出环境变量:source /etc/profile
(3)./os/linux/config.mk中添加EXTRA_FLAGS
再次make,编译通过。
(4)修改Makefile或者手工复制xx.ko到/mnt/hisilion_nfs中,这里的目录是nfs挂载的目录
再次make,至此结束。
3 AP模式USB WIFI传输视频实战
3.1 部署USB WIFI驱动使之工作为AP
(1)在开发板端先lsusb,然后插入USB WIFI模块,再lsusb,通过前后打印信息的差异从而确认模块被识别了
(2)在开发板中部署 /etc/Wireless/RT2870AP/RT2870AP.dat,并修改以下几个配置项(这个文件是在源码包中提供的,我们复制到开发板这个目录下,若无这个目录手动创建:mkdir /etc/Wireless/RT2870AP/ -p)
如果想修改热点的名称和密码,可以修改RT2860AP.dat这个文件
SSID=MT7601AP_WPA(这里的名字是在pc机上看到的连接ssid名)
AuthMode=WPA2PSK(验证模式)
EncrypType=TKIP;AES(加密方式)
WPAPSK=1234567890(这个是密码)
(3)insmod xx.ko安装USB WIFI驱动模块
(4)ifconfig -a看是否有wlan0
(5)ifconfig wlan0 up, ifconfig wlan0 192.168.0.100
(6)ifconfig查看,确认wlan0工作正常
(7)用PC或手机的WIFI搜索看一下,是否有一个名为:MT7601AP_WPA的网络了,有了就成功了
3.2 测试用例准备
(1)ORTP版本的sample,common/sample_common_venc.c中,
修改LOCAL_HOST_IP为192.168.0.30
(2)make clean,make #清理并重新编译
make时,出现错误,请查看 《第3季:ORTP库局域网图传和VLC实时预览》的介绍
(3)复制得到的sample_venc到/mnt/hisilion_nfs中
3.3 测试实验
(1)开发板端:cp /mnt/sample_venc /home/ 然后cd /home(我们的有线网络还是通的可以工作的,所以开发板依然挂载在ubuntu)
(2)拔掉网线(此时也可以重启下开发板以彻底消除前面的影响)
(3)PC端WIFI连接 MT7601AP_WPA,输入密码 1234567890
(4)PC端设置无线网络的静态IP地址为:192.168.0.30
打开控制面板:
注意:这里的配置是为了完成实验,实验完成后,记得改回来,负责你的电脑就不能使用无线网了。
要把下面这个设置打开,不然是无法成功的:
(5)PC端cmd去ping 192.168.0.100,或者反过来开发板端ping PC的无线IP
(6)开发板端执行 ./sample_venc
(7)PC端打开vlc播放器,使用第3季中的sdp配置,注意c=IN IP4 192.168.0.100,就能播放了。
注:
使用无线网络时:
windows: 192.168.0.30
AP: 192.168.0.100
ubuntu: 192.168.0.50 (ubuntu的IP现在可以不管)
使用有线网络时:
windows: 192.168.1.10
开发板: 192.168.1.20
ubuntu: 192.168.1.141