linux开发板适配 联发科MT7612u usbWIFI

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

问题:
其实到了这一步,我以为就差不多了,结果插上usb wifi,dmesg看识别成一个存储设备了,lsusb发现设备id也不对,百度了下发现这玩意默认工作在  USB 存储模式,需要通过 USB ModeSwitch 切换。

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 的工作原理

  1. 通过 lsusb 查看设备的 VendorID:ProductID(如 0e8d:2870)。
  2. 向设备发送特定的 USB 控制命令(类似于“弹出发射舱”的指令)。
  3. 设备收到指令后,会重新枚举(相当于拔插一次),并切换到新的模式。

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

完活

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值