linux开发板:AArch64 (ARM64) 架构(aarch64_cortex-a53
),内核6.1
usb wifi:mt7612u
最近想在开发板上适配一个usb口的无线wifi,可以设置成AP模式,发射信号的,在某宝上看了很久,最终选了一款联发科的MT7612u的。拿到后先在虚拟机上调了一下,很顺畅,可以用;于是转到开发板上调,遇到了一些问题,如下记录。
1、wifi驱动安装
看了内核源码和配置,发现是支持这款usb wifi的,只是没有编译到内核中去,于是make ARCH=arm64 menuconfig在图形界面中开启对应的MT76x2配置和依赖,模块化一下。
# wifi MT76x2
CONFIG_MT7601U=m
CONFIG_MT76_CORE=m
CONFIG_MT76_LEDS=y
CONFIG_MT76_USB=m
CONFIG_MT76x02_LIB=m
CONFIG_MT76x02_USB=m
CONFIG_MT76x0_COMMON=m
CONFIG_MT76x2_COMMON=m
CONFIG_MT76x2U=m
重新编译内核,生成对应的.ko模块:
安装:
sudo modprobe mac80211
sudo modprobe cfg80211
sudo insmod mt76.ko
sudo insmod mt76x02-lib
sudo insmod mt76x2-common
sudo insmod mt76-usb
sudo insmod mt76x02-usb
sudo modprobe usbcore
sudo insmod mt76x2u.ko
驱动验证:
lsmod |grep mt76



2、切换wifi模式
安装切换工具:
wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-2.6.1.tar.bz2
tar -xjf usb-modeswitch-2.6.1.tar.bz2
cd usb-modeswitch-2.6.1/
make
make install
usb_modeswitch --version
如下 安装成功
模式切换:
usb_modeswitch -K -W -v 0e8d -p 2870
- -v 0x0e8d:设备的 Vendor ID(厂商ID)。
- -p 0x2870:设备的 Product ID(产品ID)。
- -K:强制卸载当前驱动(如果有)。
- -W:等待设备重新连接。
USB ModeSwitch 的工作原理
- 通过 lsusb 查看设备的 VendorID:ProductID(如 0e8d:2870)。
- 向设备发送特定的 USB 控制命令(类似于“弹出发射舱”的指令)。
- 设备收到指令后,会重新枚举(相当于拔插一次),并切换到新的模式。
lsusb和dmesg查看是否正常:
ip link也可以看到节点:
3、固件包
拔插发现dmesg出现新的错误,于是从虚拟机拷贝了该文件到开发板上
Direct firmware load for mt7662_rom_patch.bin
mt7662.bin
mt7662_rom_patch.bin
拷贝到开发板的 /lib/firmware/目录下
4、配置wifi
在/etc/目录下,创建udhcpd.conf、hostapd.conf,如果原目录下有,就备份掉重新创建。
内容如下:
cat udhcpd.conf
start 192.168.1.20
end 192.168.1.50
interface wlan0
max_leases 30
option subnet 255.255.255.0
option router 192.168.1.1
option dns 8.8.8.8
option lease 8
logfile /var/log/udhcpd.log
option lease 86400 # 指定租约时间(单位:秒)
#remaining yes
cat hostapd.conf
interface=wlan0
driver=nl80211
ssid=MyWiFi
hw_mode=a
channel=36
ieee80211n=1
ieee80211ac=1
wmm_enabled=1
ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40]
vht_capab=[MAX-MPDU-3895][SHORT-GI-80]
country_code=US
查看是否支持AP模式:
iw list | grep -A 10 "Supported interface modes" | grep "AP"
创建文件:
sudo mkdir -p /var/lib/misc
sudo touch /var/lib/misc/udhcpd.leases
sudo chmod 644 /var/lib/misc/udhcpd.leases
设置网卡ip:
ip addr add 192.168.1.1/24 dev wlan0
ip link set wlan0 up
启动:
hostapd -B hostapd.conf
udhcpd -f udhcpd.conf
5、验证
手机或pc打开wifi设备搜索MyWiFi并连接
会看到有设备连接并分配ip
完活