1 移植驱动
源码下载:
链接:https://pan.baidu.com/s/1EXGMkPs8-GxsdyK0735Sqw
提取码:bx5c
(1)include/rtmp_def.h中1627行左右,修改网络名始终为:wlan
(2)修改Makefile
原来默认的平台是PC,然后添加平台
(3)添加Linux内核源码路径,编译工具链,CPU
#add point
ifeq ($(PLATFORM),HISI_3518E)
LINUX_SRC = /home/aston/David/Hi3518E_SDK_V1.0.3.0/package/osdrv/opensource/kernel/linux-3.4.y
CROSS_COMPILE = arm-hisiv300-linux-
export ARCH=arm
endif
(4)在如下位置将原来的配置型修改为HISI_3518E的
$(MAKE) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) -C $(LINUX_SRC) SUBDIRS=$(RT28xx_DIR)/os/linux modules
(5) 在 ./os/linux/config.mk添加
(6)编译 make
(7)默认将驱动复制到了tftpboot中,所以修改makefile,将复制驱动的路径修改为我们需要的路径,或者手动复制也可以
2 部署驱动
(1)先lsusb,然后插入USB WIFI模块,再lsusb,确认模块被识别了
(2)在开发板中创建 /etc/Wireless/RT2870STA 文件夹,把驱动源文件下的 RT2870STA.dat 复制到开发板的这个文件夹中
mkdir /etc/Wireless/RT2870STA/ -p
修改:/etc/Wireless/RT2870STA/RT2870STA.dat
装载驱动:insmod mt7601Usta.ko
启动网卡: ifconfig wlan0 up
注意:配置项现在不需要修改,因为作为station是需要结合wpa_supplicant使用的
3 移植 wpa_supplicant 和 openssl
下载地址:
(1)wpa_supplicant http://hostap.epitest.fi/wpa_supplicant/ 和 https://w1.fi/releases/
(2)openssl ftp://ftp.openssl.org/source/old/0.9.x/
编译wpa_supplicant要依赖openssl中的lib和include
但是编译openssl需要给openssl打补丁。补丁就在把wpa_supplicant中。
打补丁:
wpa_supplicant-2.5里面的patches文件夹下的openssl-0.9.8za-tls-extensions.patch文件拷贝到openssl-0.9.8za目录下,运行:patch -p1 < openssl-0.9.8za-tls-extensions.patch
cp wpa_supplicant-2.5/patches/openssl-0.9.8za-tls-extensions.patch ./openssl-0.9.8za
3.1 编译openssl
(1)进入openssl路径,运行:patch -p1 < openssl-0.9.8za-tls-extensions.patch
/openssl-0.9.8za$ patch -p1 < openssl-0.9.8za-tls-extensions.patch
patching file ssl/s3_clnt.c
patching file ssl/s3_srvr.c
patching file ssl/ssl_err.c
patching file ssl/ssl.h
patching file ssl/ssl_sess.c
patching file ssl/t1_lib.c
patching file ssl/tls1.h
patching file util/ssleay.num
(2)修改makefile
更换安装目录为/tmp/openssl tmp目录当下次开机的时候里面的东西就会消失,中间文件使用
修改编译工具链
CC=arm-hisiv300-linux-gcc
AR=arm-hisiv300-linux-ar $(ARFLAGS)
RANLIB=arm-hisiv300-linux-ranlib
(3)make编译成功,make install的时候出现错误,错误如下
原因:OpenSSL 与 perl版本不兼容
解决方法:sudo rm -f /usr/bin/pod2man
再次:make install
在/home/liu/ARM/test/openssl-0.9.8za/tmp_ssl目录下安装了ssl库
root@liu-virtual-machine:/home/liu/ARM/test/openssl-0.9.8za/tmp_ssl# ls
bin certs include lib man misc openssl.cnf private
后面编译 wpa_supplicant 要依赖openssl中的lib和include
3.2 编译wpa_supplicant
(1)进入wpa_supplicant-0.7.3.tar.gz解压生成的wpa_supplicant-0.7.3/wpa_supplicant目录中:
(2)进入wpa_supplicant目录生成.config
cp defconfig .config
(3)修改.config,增加以下内容:
CC=arm-hisiv300-linux-gcc -L/tmp/openssl/lib
CFLAGS+=-I /tmp/openssl/include
LIBS+=-L/tmp/openssl/lib
(4)编译 make,出现一下错误
../src/drivers/driver_nl80211.c:17:31: fatal error: netlink/genl/genl.h: No such file or directory
#include <netlink/genl/genl.h>
^
compilation terminated.
Makefile:1758: recipe for target '../src/drivers/driver_nl80211.o' failed
make: *** [../src/drivers/driver_nl80211.o] Error 1
aston@ubuntu:~/WifiPort/MT7601_driver/sta/wpa_supplicant-2.5/wpa_supplicant$
解决:
进入wpa_supplicant目录下.config
将CONFIG_DRIVER_NL80211=y 注释掉即可
(5)继续make,生成wpa_supplicant和wpa_cli后整个移植成功完成
注:wpa_supplicant和wpa_cli是命令行进行无线网络的管理方法
- wpa_supplicant是server,先将server在后台运行然后又运行客户端
- wpa_cli是客户端,该客户端运行的时候会发一些参数给serve,与serve配合,达到对无线网络的管理
4 USB WIFI做sta模式的ORTP视频传输实验
4.1 部署wpa_supplicant
(1)将wpa_supplicant、wpa_cli丢到开发板/usr/bin目录下
(2)创建配置文件/etc/wap_supplicant.conf,内容如下:
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="CMCC_vwmq"
scan_ssid=1
key_mgmt= WPA-EAP WPA-PSK IEEE8021X NONE
pairwise=TKIP CCMP
group=CCMP TKIP WEP104 WEP40
psk="xxxxxxxx"
}
ZLSWLW-2:就是要连接的无线网 AP
psk:就是无线的密码
4.2 sta模式的USB WIFI设置
(1)安装驱动 insmod mt7601Usta.ko
(2)设置静态IP地址 (因为没有移植dhcp,所以不能用动态IP)
ifconfig wlan0 up, ifconfig wlan0 192.168.0.233
(3)开发板sta连接AP 要工作在后台
wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -dd &
(4)查看连接状态
wpa_cli -i wlan0 status
(5)测试连接效果
ping 192.168.0.1 (网关AP)此时是不通的
设置getway IP 网关IP
route add default gw 192.168.0.1 dev wlan0
ping 8.8.8.8 (google的dnw server)成功ping通
注:AP: 192.168.0.1 网关IP
PC: 192.168.0.3 电脑自动分配的IP
开发板: 192.168.0.233 自行设置,不与局域网其他IP冲突即可
ubuntu: 192.168.0.244 暂时不需要
4.3 ORTP视频传输测试
(1)ORTP版本的sample,common/sample_common_venc.c中,修改LOCAL_HOST_IP为192.168.0.3(和我的Widnows的 WIFI自动分配的IP一样)
(2)编译得到sample并到开发板运行
(3)修改sdp中c=IN IP4 192.168.0.3,打开sdp播放