[xhr4412][extension 6] 使用 Ralink USB_DEVICE(0x148f, 0x3070) 无线网卡

前言

   前面有尝试移植 MT6620 WiFi 驱动到 xhr4412 上,不过由于官方驱动对应的内核版本过于古老,一直到现在 linux-5.8.5 上可能耗时较长,且没有 know-how 不知道如何验证是否成功,所以先尝试使用其他无线网卡。

   正好手上有一块 usb 无线网卡,发现内核中有它的驱动,那么先使用它来尝试使用 WiFi,之后再看能否使用 MT6620 。

一、内核网卡驱动

1. 配置

   首先将 usb 无线网卡插到 Ubuntu 上,使用命令 lsusb 查看网卡的设备号。

Bus 001 Device 002: ID 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter

   然后到 xhr4412-linux-5.8.5/ 中搜索是否有该网卡驱动。

grep -wnr 0x3070 drivers/

其中搜索到一条:
drivers/net/wireless/ralink/rt2x00/rt2800usb.c:948:     { USB_DEVICE(0x148f, 0x3070) },

   看来内核支持该网卡驱动,剩下的便是将它编译到 xhr4412-uImage.bin

   查看 Makefile 得知编译该文件需要打开配置 CONFIG_RT2800USB

obj-$(CONFIG_RT2800USB) += rt2800usb.o

2. 测试

   启动开发板后,插入 usb 网卡,可以看到以下信息。

在这里插入图片描述

二、libnl

hostapd : user space daemon for access points, including, e.g., IEEE 802.1X/WPA/EAP Authenticator for number of Linux and BSD drivers, RADIUS client, integrated EAP server, and RADIUS authentication server

直译为: AP侧进程,包含:如 linux和BSD 驱动中的802.1x/WPA/EAP认证功能,RADIUS客户端,整合了EAP服务器和RADIUS认证服务器。

也就是说,hostapd是一个AP侧使用的进程,它的功能包含了802.1x、RADIUS认证等的处理。

wpa_supplicant: user space IEEE 802.1X/WPA supplicant (wireless client) for number of Linux, BSD, and Windows drivers

直译为: 用户空间802.1x/WPA请求者(无线client端),适用于linux /BSD/Windows驱动

也就是说,wpa_supplicant是一个client侧使用的进程,它包含了802.1x、WPA的请求工作。

   hostapd 和 wpa_supplicant 都需要 openssl 和 libnl ,openssl 前面已经移植完成,现在只需要先移植 libnl。

   另外补充一下文档不在源代码压缩包中,需要在官网下载 libnl-doc-3.2.25.tar.gz 。需要知道怎么 build 和 install,需要执行命令 ./configure --help > INSTALL

tar zxvf libnl-3.2.25.tar.gz
./configure --prefix=$(pwd)/__install --host=arm-none-linux-gnueabihf
make
make install

三、wpa_supplicant

在这里插入图片描述

1. build

(1) get source

tar zxvf wpa_supplicant-2.9.tar.gz
cd wpa_supplicant-2.9/wpa_supplicant
cp -p defconfig .config

(2) modify .config

设置 libnl 和 openssl 库路径。

echo "CC=arm-none-linux-gnueabihf-gcc -L/home/xhr/iTop4412/xhr4412/ssh/openssl/openssl-1.1.1h/out/install/lib -L/home/xhr/iTop4412/xhr4412/wifi/libnl/libnl-3.2.25/__install/lib" >> .config
echo "CFLAGS += -I/home/xhr/iTop4412/xhr4412/wifi/libnl/libnl-3.2.25/__install/include/libnl3" >> .config
echo "LIBS += -L/home/xhr/iTop4412/xhr4412/wifi/libnl/libnl-3.2.25/__install/lib" >> .config
echo "CFLAGS += -I/home/xhr/iTop4412/xhr4412/ssh/openssl/openssl-1.1.1h/out/install/include" >> .config
echo "LIBS += -L/home/xhr/iTop4412/xhr4412/ssh/openssl/openssl-1.1.1h/out/install/lib" >> .config

然后注释掉两个选项:
CONFIG_CTRL_IFACE_DBUS_NEW=y
CONFIG_CTRL_IFACE_DBUS_INTRO=y

(3) make

make

   成功后就生成了两个可执行文件:wpa_supplicantwpa_cliwpa_supplicant 用于连接 wifi,并作为服务端与 wpa_cli 通信。通过 wpa_cli 发送命令到 wpa_supplicant 执行 wifi 的连接、控制等。

2. rootfs

(1) wpa

  • wpa_supplicantwpa_cli 拷贝到 ${rootfs}/usr/bin/ 下。

(2) libnl

  • cd /home/xhr/iTop4412/xhr4412/wifi/libnl/libnl-3.2.25/__install/lib
  • cp -pd *so* ${rootfs}/lib

(3) rt2870.bin

在这里插入图片描述

   还需要 rt2870.bin ,这个可以从 ubuntu /lib/firmware/ 目录下找到,拷贝到 xhr4412 相同目录即可。

(4) wpa_supplicant.conf

  • mkdir -p /var/run/wpa_supplicant
  • vim /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
update_config=1

network={
        ssid="ChinaNet-te3z"
        psk="dtkxzxnv"
}

3. test

wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf -B
ifconfig wlan0 192.168.1.178
#route add default gw 192.168.1.1

在这里插入图片描述

   到这一步就可以 ping 我的物理机了。


hostapd & dhcp

   这两个可能以后在其他文章介绍,@_@ 这篇文章 delay 了好久,因为前几周都去玩去了。。

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值