news 2026/10/28 1:59:44

mt7601u无线模块移植

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
mt7601u无线模块移植

一、环境与材料

项目

内容

目标板

IMX6ULL(Buildroot 文件系统,root@buildroot_gui),内核4.1.15

WiFi 模块

MT7601U(USB 接口,1T1R,efuse 存储 NVM)

驱动源码

03_kernel313plus_fixed(Ralink DPO STA Driver3.0.0.3)

内核源码

linux-imx-rel_imx_4.1.15_2.1.0_ga(需先用同一工具链编译过一次)

交叉工具链

gcc-linaro-4.9.4arm-linux-gnueabihf-

Makefile 配置

PLATFORM = SMDK,LINUX_SRC / CROSS_COMPILE 均已指向上述路径

板上工具

iwpriv、iwconfig、wpa_supplicant、wpa_cli、udhcpc

目标热点

SSIDgui,WPA2-PSK/AES,密码 ********

驱动源码

版本仓库地址
① 厂商 DPO 3.0.0.4(20130913)+ kernel 4.x 适配,首选​github.com/lzto/DPO_MT7601U_LinuxSTA
② 同版本 + poma 的 Linux-3.17 补丁(源码在src/子目录)​github.com/liangent/mt7601
③ 社区版,修了 kernel 3.13+ 编译错误​github.com/2421/mt7601u_driver_linux

免 git 的直链 tarball(在 Ubuntu 上直接 wget 用这个更方便)

# 1. DPO_MT7601U_LinuxSTA wget -O DPO_MT7601U_LinuxSTA.tar.gz "https://codeload.github.com/lzto/DPO_MT7601U_LinuxSTA/tar.gz/refs/heads/master" # 2. liangent/mt7601 wget -O liangent_mt7601.tar.gz "https://codeload.github.com/liangent/mt7601/tar.gz/refs/heads/master" # 3. 2421/mt7601u_driver_linux wget -O mt7601u_driver_linux.tar.gz "https://codeload.github.com/2421/mt7601u_driver_linux/tar.gz/refs/heads/master"

任选一份源码下载即可!!!

二、编译源码

1、改 Makefile 平台段

根 `Makefile` 第 30 行附近,把 PC 换成 SMDK(ARM 通用段):

#PLATFORM = PC PLATFORM = SMDK

再把 SMDK 段(约 283 行)改成自己的路径:

ifeq ($(PLATFORM),SMDK) LINUX_SRC = /home/alientek/linux/linux-imx-rel_imx_4.1.15_2.1.0_ga CROSS_COMPILE = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- endif

2、加自己的模块 VID/PID

`lsusb` 看模块实际 ID,然后改 `common/rtusb_dev_id.c`(第 37 行起):

USB_DEVICE_ID rtusb_dev_id[] = { {USB_DEVICE(0x148f,0x7601)}, /* 通用 MT7601U,多数模块是这个 */ {USB_DEVICE(0x148f,0x760b)}, /* 360 WiFi 2代 */ {USB_DEVICE(0x2955,0x1001)}, /* 小度 WiFi */ {USB_DEVICE(0x2717,0x4106)}, /* 小米随身 WiFi —— 自己的 ID 加这行 */ { }/* END */ };

漏了模块插上完全没反应,`dmesg` 也不报错。

3、确认 config.mk

`os/linux/config.mk` 默认已经是:

HAS_WPA_SUPPLICANT=y HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

4、内核需要打开的选项

CONFIG_WIRELESS_EXT=y CONFIG_WEXT_PRIV=y CONFIG_CFG80211=y # HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y 时需要 CONFIG_CFG80211_WEXT=y

需要以下修改:

修改net/wireless/Kconfig

config WEXT_SPY bool select WIRELESS_EXT config WEXT_PRIV bool "Wireless Extensions priv API" select WIRELESS_EXT help

5、修改“coherent_pool”

方式一:
修改文件 arch\arm\mm\dma-mapping.c:

//#define DEFAULT_DMA_COHERENT_POOL_SIZE SZ_256K #define DEFAULT_DMA_COHERENT_POOL_SIZE SZ_2M

方式二:
修改内核启动参数bootargs:在其中增加:

coherent_pool=2M

举例(仅为举例,勿照搬):

set bootargs console=ttymxc0,115200 cma=64M root=/dev/mtdblock5 coherent_pool=2M rootfstype=yaffs2,calibrate=y)

6、修改网口名称(可选)

include/rtmp_def.h 默认设备节点的定义,修改”ra” 为”wlan”:

#define INF_MAIN_DEV_NAME "wlan" #define INF_MBSSID_DEV_NAME "wlan"

三、板上部署

1、加载驱动

insmod mt7601Usta.ko

2、配置文件

mkdir -p /etc/Wireless/RT2870STA/ cp RT2870STA.dat /etc/Wireless/RT2870STA/RT2870STA.dat

3、联网

ifconfig ra0 up //搜索热点 iwpriv ra0 set SiteSurvey=1 iwpriv ra0 get_site_survey 或 iwlist ra0 scan | grep ESSID //wpa_supplicant 配置文件 cat > /etc/wpa.conf <<'EOF' ctrl_interface=/var/run/wpa_supplicant ap_scan=1 network={ ssid="gui" psk="12345678" key_mgmt=WPA-PSK pairwise=CCMP group=CCMP } EOF iwpriv ra0 set WpaSupport=1 # 注意:WpaSupport,应打印 Set_Wpa_Support::(WpaSupplicantUP=1) wpa_supplicant -B -Dwext -ira0 -c /etc/wpa.conf wpa_cli -ira0 status # 期望 wpa_state=COMPLETED

4、拿 IP

udhcpc -i ra0 ifconfig ra0 # 应看到 inet addr:192.168.x.x ping -c 3 223.5.5.5 # 通了就彻底收工

如果udhcpc卡住不动(热点端 DHCP 服务问题),先手动配置验证链路:

ifconfig ra0 192.168.43.100 netmask 255.255.255.0 up ping -c 3 192.168.43.1 # 网关地址按实际改

四、开机自动联网(buildroot 标准做法)

在板上建 /etc/init.d/S40wireless(注意 chmod +x):

#!/bin/sh case "$1" in start) insmod /root/mt7601Usta.ko ifconfig ra0 up iwpriv ra0 set WpaSupport=1 wpa_supplicant -B -Dwext -ira0 -c /etc/wpa.conf udhcpc -i ra0 -b ;; stop) killall wpa_supplicant 2>/dev/null ifconfig ra0 down rmmod mt7601Usta ;; esac

五、交叉编译openssl、wpa_supplicant、iwlist

资源下载:点击跳转

1、openssl

./Configure no-asm shared --prefix=path/openssl/build os/compiler:arm-linux-gnueabihf-gcc make -j12 make install_sw ls build/lib/

2、wpa_supplicant

cd wpa_supplicant/wpa_supplicant/

修改Makefile交叉编译工具链

CC= arm-linux-gnueabihf-gcc

同时删除#ifndef CC 和 #endif

添加openssl的库文件和头文件链接路径(根据自己路径):

cp defconfig .config make -j12

将wpa_supplicant拷贝到开发板

3、iwlist

修改Makefile如下:

make clean make -j12

将iwlist、iwconfig、iwspy、iwpriv、ifrename、libiw.so.29拷贝到开发板。

六、AR9271无线模块移植

0cf3:9271 = Atheros AR9271

内核配置:

insmod ath.ko insmod ath9k_hw.ko insmod ath9k_common.ko insmod ath9k_htc.ko

内核也得重新更新一下!!!

# 1. 网卡接口应该已经出现 ifconfig -a | grep wlan # 2. 拉起接口 + 扫描确认能收到信号 ifconfig wlan0 up iwlist wlan0 scan | grep ESSID # 3. 联网 wpa_passphrase "你的SSID" "密码" > /etc/wpa.conf wpa_supplicant -B -iwlan0 -c/etc/wpa.conf udhcpc -i wlan0

觉得有帮助的话,打赏一下呗。。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/28 1:59:34

执念的管理

1. 执念是什么&#xff1f;执念 你紧紧抓着不放的自我定义&#xff08;角色、标签、身份&#xff09;- 它像灵魂的一层盔甲 - 它给你安全感&#xff0c;但也限制了你的成长 - 很多人从小被推着走&#xff0c;执念就是那个"推手"2. 为什么执着&#xff1f;因为害怕放…

作者头像 李华
网站建设 2026/10/28 1:59:32

Python dataclass报价比较:先判可比条件,再计算结算差额

把两份商品报价放进程序前&#xff0c;先定义什么叫“可以比较”。商品、数量、币种和成交条件一致&#xff0c;且两份记录在检查时点仍有效&#xff0c;才计算已确认结算总额的差额。这篇以餐桌电器购机信息整理为案例背景&#xff0c;来源为芝梵品牌资料。代码中的型号、日期…

作者头像 李华
网站建设 2026/10/28 1:59:08

还没官宣的 DeepSeek 桌面版跑起来了:便宜模型在 Harness 里还原桌面交互,GPT-6 Luna 反而像在‘重画‘——差距不在模型在执行框架

还没官宣的 DeepSeek 桌面版跑起来了&#xff1a;便宜模型在 Harness 里还原桌面交互&#xff0c;GPT-6 Luna 反而像在“重画”——差距不在模型在执行框架 一件事先说明 本文基于一篇第三方实测文章的公开摘要来展开讨论&#xff0c;我不打算复述成“我亲自装了、我亲自跑了…

作者头像 李华
网站建设 2026/10/28 1:59:04

(闪电系列)操作系统期末闪学 | 进程与线程管理

&#xff08;闪电系列&#xff09;操作系统期末闪学 | 进程与线程管理&#x1f525; 期末冲刺指南&#xff1a;本文专为操作系统期末考试设计&#xff0c;浓缩核心考点&#xff0c;助你高效复习、精准拿分&#xff01;&#x1f4cc; 学习导航 要学习&#xff1a; 进程的基本概念…

作者头像 李华
网站建设 2026/10/28 1:58:35

万兆以太网与链路聚合方案解析

突破单网口千兆带宽瓶颈&#xff08;约 115 MB/s 有效载荷&#xff09;&#xff0c;主要依靠万兆以太网&#xff08;10GbE&#xff09;单链路升级与**多网口链路聚合&#xff08;Link Aggregation&#xff09;**两种硬件方案。在纯 FPGA 架构下&#xff0c;这两种方案均需将 MA…

作者头像 李华