文章目录
- 内核增加组件
- Firmware准备好
- 移植`libopenssl-1.0.1`
- 移植`libnl-3.4.0`
- 移植`wpa_supplicant-2.8`
- 修改.config文件
- 设置PKG_CONFIG_PATH环境变量
- 编译和安装
- 创建通讯的目录
- 连接wifi上网
内核增加组件
增加以下组件:
Networking support -> Wireless
,按下图
RT3070是Ralink
公司的,增加这个芯片的驱动(用的USB的):Device Drivers -> Network device support -> Wireless LAN -> Ralink driver support
,如下图:
增加组件后,重新生成内核文件,烧到机器中。重启后,ifconfig –a
要能看到无线网卡设备。比如:wlan0
。
Firmware准备好
下载rt2870.bin文件(下载地址自己搜索),放到机器里面的/lib/firmware/目录中。
移植libopenssl-1.0.1
按顺序执行:
./configure --prefix=your_install_dir os/compiler:arm-hisiv600-linux-gcc
# your_install_dir是安装目录,自己根据实际情况设定,方便把库文件取出来复制到目标板
make
make install # 接过安装到your_install_dir目录中
移植libnl-3.4.0
按顺序执行:
./configure --prefix=your_install_dir --host=arm-hisiv600-linux
# your_install_dir是安装目录,自己根据实际情况设定,方便把库文件取出来复制到目标板
make
make install # 接过安装到your_install_dir目录中
移植wpa_supplicant-2.8
按顺序执行:
修改.config文件
cd wpa_supplicant-2.8/wpa_supplicant/
cp defconfig .config
vi .config
按以下编辑.config
文件,保证有这些项:
还要把libopenssl
和libnl
库和头文件路径设置上(这里根据上面移植这两个库的具体的安装路径而定),比如我的如下图:
设置CC编译器, 搜索CC=,找到这个地方做修改
这3个注释掉,否则会要求dbus
库,要用#号注释掉,不能改为=n。
以上.config修改完成。保存。
设置PKG_CONFIG_PATH环境变量
让能找到libnl-3.0.pc
文件,这个文件在目录your_install_dir/lib/pkgconfig
,所以设置为:
export PKG_CONFIG_PATH=your_install_dir/lib/pkgconfig:$PKG_CONFIG_PATH
编译和安装
make
make DESTDIR=your_install_dir install
# your_install_dir是安装目录,自己根据实际情况设定,方便把库文件取出来复制到目标板
在your_install_dir
中得到结果。
这3个文件复制到板子的/usr/sbin
中:wpa_cli wpa_passphrase wpa_supplicant
。
这几个库文件复制到板子的/usr/lib
中:
创建通讯的目录
目标板子上执行
mkdir –p /var/run/wpa_supplicant/
连接wifi上网
执行连接的命令是这个:
wpa_supplicant -B -c/etc/wifi.conf -iwlan0
其中-B
表示后台运行,-i
后面接的wlan0
是无线网卡的名称,-c
后面接的wifi.conf
是配置文件,无线网卡根据配置文件配置的ssid
和密码登陆的。所以要先编辑好这个配置文件。如下 vi /etc/wifi.conf
:
其中ssid
和psk
分别是wifi
的名称和登陆密码。成功连接后如下图:
然后分配IP,MASK,GW,DNS
,就可以上网了。比如用dhcp
自动分配,如下:
直接ping www.baidu.com
,成功,表示能上网了
使用wpa_cli
看链接状态,也是OK的,如下图:
如果要想搜索出能连接的wifi
的ssid
列表,让用户选择,需要移植另一个工具wireless_tools.29
,移植完了之后,有一个工具iwlist
,可以搜索能连接的ssid
,如下图:所有都能列出来