开发环境:ubuntu 18.04
硬件平台:imx6ull mini野火开发板
查看内核信息
uname -a
说明:因为自linux4.2版本以后,mt7601u的驱动已经集成在kernel的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中,之前使用linux内核为4.1.15的版本移植mt7601u驱动的时候,加载mt7601Usta.ko驱动老是报错,所以在这用野火提供的linux新内核版本4.19.71源码编译生成。
(1)首先进入野火提供的linux-4.19.71内核源码文件夹中执行,最好先编译一次内核
./make_deb.sh
make menuconfig KCONFIG_CONFIG=arch/arm/configs/npi_v7_defconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
(2)然后进入Device Drivers —>Network device support-> Wireless LAN -> MediaTek devices 选中MediaTek MT7601U(USB) support选项
(3)配置完成后选择 save 保存,再运行./make_deb.sh 脚本即可以新的配置编译内核,源码目录下的 build_image 路径下重新生成linux-image-4.19.71-imx-r1_1stable_armhf.deb 内核安装包
./make_deb.sh
(4)克隆ebf-image-builder项目镜像,等待克隆完成后,用上面编译出来的内核安装包替换Kernel 目录下的内核安装包 (linux-image-4.19.71-imx-r1_1stable_armhf.deb)。
git clone https://gitee.com/Embedfire/ebf-image-builder.git
(5)进入 ebf-image-builde 项目源码目录下,直接执行编译脚本,直至编译完成,生成imx6ull-debian-buster-console-armhf-2021-xx-xx-2gb.img镜像文件
cd ebf-image-builder
sudo ./publish/seeed-imx-stable.sh lite
(6)将imx6ull-debian-buster-console-armhf-2021-xx-xx-2gb.img镜像烧录到SD卡,开发板以SD卡启动方式启动,即可启动开发板。
(7)开发板启动后,查看是否存在MT7601U驱动
ifconfig -a
判断网卡是否在Linux下免驱,若出现wlan0开头的网卡名称,一般就是新增的无线网卡。可以在插入网卡前执行一次ifconfig -a
,插入网卡后再执行一次命令,对比前后差异。
如果出现ifconfig: command not found,则先安装net-tools
软件包
sudo apt-get install net-tools
其它判断方法
也可以用iwconfig
命令,查看当前无线网卡信息。
iwconfig
同样的,如果出现iwconfig: command not found
,需要安装wireless-tools
这个包。
sudo apt-get install wireless-tools
如果编译安装了无线网卡驱动并重启后仍然无法正常使用网卡,可以通过
dmesg
查看驱动加载的详细信息,在这,截图可以看出mt7601u已正常启动。
另外,USB无线网卡的型号,通过lsusb命令查看
sudo apt-get install usbutils
lsusb
正常会显示类似 Bus 001 Device 003: ID 148f:760b Ralink Technology, Corp. MT7601U Wireless Adapter 相关信息
(8)输入“wpa_supplicant -v”命令查看一下 wpa_supplicant 版本号,如果 wpa_supplicant 工作正常的话就会打印出版本号,如果找不到命令,则安装它
sudo apt-get install wireless-tools
sudo apt-get install iw
sudo apt-get install wpasupplicant
(9)编辑 /etc/wpa_supplicant/wpa_supplicant.conf文件,添加以下内容
ctrl_interface=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={ssid="TP-LINK-XXX"psk="xxxxxxxx"
}
ssid 是要连接的 WIFI 名称,psk 就是要连接的 WIFI 密码,根据实际情况填写。
注意:wpa_supplicant.conf 文件对于格式要求比较严格,“=”前后一定不能有空格,也不要用 TAB 键来缩进,比如第 4 行和 5 行的缩进应该采用空格,否则的话会出现 wpa_supplicant.conf文件解析错误。wpa_supplicant.conf 文件内容要自己手动输入,不要偷懒复制粘贴!
(10)wpa_supplicant.conf 文件编写好后,再在开发板根文件系统下创建一个“/var/run/wpa_supplicant”目录,wpa_supplicant 工具要用到此目录,命令如下:
sudo mkdir /var/run/wpa_supplicant -p
一切准备好以后就可以使用 wpa_supplicant 工具让MT7601U USB WIFI 连接到wifi上,输入如下命令:
sudo wpa_supplicant -D wext -c /etc/wpa_supplicant/wpa_supplicant.conf -i wlan0 &
当 MT7601U 连接上 WIFI 热点以后,连接成功会输出“wlan0: CTRL-EVENT-CONNECTED”字样,详细信息如下:
debian@npi:~$ Successfully initialized wpa_supplicant
rfkill: Cannot open RFKILL control device
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
wlan0: Trying to associate with f4:ee:14:2c:e4:58 (SSID='TP-LINK_888' freq=2412)
Failed to add supported operating classes IE
wlan0: Associated with f4:ee:14:2c:e4:58
wlan0: WPA: Key negotiation completed with f4:ee:14:2c:e4:58 [PTK=CCMP GTK=CCMP]
wlan0: CTRL-EVENT-CONNECTED - Connection to f4:ee:14:2c:e4:58 completed [id=0 i]
(11)接下来就是最后一步了,设置 wlan0 的 IP 地址,这里使用 udhcpc 命令从路由器申请 IP 地址,输入如下命令:
sudo udhcpc -i wlan0 //从路由器获取 IP 地址
IP地址获取成功以后,会输出以下信息:
debian@npi:~$ sudo udhcpc -i wlan0
udhcpc: started, v1.30.1
udhcpc: sending discover
wlan0: Trying to associate with f4:ee:14:2c:e4:58 (SSID='TP-LINK_888' freq=2412 MHz)
Failed to add supported operating classes IE
wlan0: Associated with f4:ee:14:2c:e4:58
wlan0: WPA: Key negotiation completed with f4:ee:14:2c:e4:58 [PTK=CCMP GTK=CCMP]
wlan0: CTRL-EVENT-CONNECTED - Connection to f4:ee:14:2c:e4:58 completed [id=0 id_str=]
udhcpc: sending discover
udhcpc: sending select for 192.168.1.108
udhcpc: lease of 192.168.1.108 obtained, lease time 7200
debian@npi:~$
wlan0 的 IP 地址获取成功,IP 地址为 192.168.1.108。可以输入如下命令查看一下 wlan0 网卡的详细信息:
sudo ifconfig wlan0
可以通过电脑 ping 一下 wlan0 的 192.168.1.108 这个 IP 地址,如果能 ping 通就说明 MT7601U USB WIFI 工作正常。也可以直接在开发板上使用 wlan0 来 ping 一下百度网站,输入如下命令:
ping -I 192.168.1.108 www.baidu.com
-I 是指定执行 ping 操作的网卡 IP 地址,我们要使用 wlan0 去 ping 百度网站,因此要通过“-I”指定 wlan0 的 IP 地址。如果 WIFI 工作正常的话就可以 ping 通百度网站。