[xhr4412][extension 6] 使用 Ralink USB

it2023-09-10  68

文章目录

前言一、内核网卡驱动1. 配置2. 测试 二、libnl三、wpa_supplicant1. build2. rootfs3. test hostapd & dhcp参考

前言

   前面有尝试移植 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。

官方网站:http://www.infradead.org/~tgr/libnl/当前最新稳定版:libnl-3.2.25.tar.gz (Released on Jul 16, 2014)

   另外补充一下文档不在源代码压缩包中,需要在官网下载 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

wpa_supplicant 官方网站

目前最新版本:wpa_supplicant-2.9.tar.gz

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_supplicant 和 wpa_cli 。wpa_supplicant 用于连接 wifi,并作为服务端与 wpa_cli 通信。通过 wpa_cli 发送命令到 wpa_supplicant 执行 wifi 的连接、控制等。

2. rootfs

(1) wpa

将 wpa_supplicant 和 wpa_cli 拷贝到 ${rootfs}/usr/bin/ 下。

(2) libnl

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

(3) rt2870.bin

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

(4) wpa_supplicant.conf

mkdir -p /var/run/wpa_supplicantvim /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

官方网站:http://w1.fi/hostapd/目前最新版本:hostapd-2.9.tar.gz

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

参考

C头文件中尖括号与双引号的区别及编译搜索顺序嵌入式Linux开发板使用WIFI无线网卡访问互联网和作为个人热点 右键快捷方式启动程序时添加启动参数的方法——以修改VSCode工作区存储目录…\AppData\Roaming\Code为例vscode占用内存爆满wpa_supplicant详解wpa_supplicant 移植和使用wpa_supplicant和hostapd的定义和区别libnl 移植到ARM Linuxconfigure配置脚本的使用编译wpa_supplicantglib-dbus 在ubuntu9.10 和 ubuntu10.04 上安装环境的搭建移植wpa_supplicant工具到arm linux平台wpa_supplicant交叉编译rt3070 驱动异常问题 rt2870.bin wpa_supplicant的用法wpa_supplicant 常用操作wpa_supplicant 的配置说明文件 wpa_supplicant.conf 译文
最新回复(0)