【Linux】H3网络(二)

NanoPi M1 Armbian 配置 RTL8188GU USB WiFi


1. 下载并烧录 Armbian 系统

操作:

去 Armbian 归档站 http://fi.mirror.armbian.de/oldarchive/nanopim1/archive/ 下载

Armbian_21.08.1_Nanopim1_focal_current_5.10.60.img.xz

烧录到 TF 卡,插入 NanoPi M1,接网线、电源。

为什么:

官方系统内核太老(4.14),Armbian 是社区维护的现代系统。选 focal 是因为它是 Ubuntu 20.04 用户空间,软件生态好。虽然初始内核是 5.10.60,但后续可以升级。归档站是因为官网不再直接展示旧板子镜像。


2. 首次启动并创建用户

操作:

用串口或 HDMI 登录。默认用户名 root,密码 1234

系统强制要求改 root 密码,并创建普通用户,例如 user,设置密码。

为什么:

首次启动必须初始化。创建普通用户是为了日常安全操作,避免一直用 root。以后 SSH 登录用 user,需要管理员权限时加 sudo


3. 确认系统版本

操作:

bash 复制代码
cat /etc/os-release
cat /etc/armbian-release

为什么:

确认用户空间是 Ubuntu 20.04 Focal,Armbian 版本 21.08.1,板子 nanopim1。避免以后混淆 Debian/Ubuntu,也方便安装正确的软件包。


4. 确认有线网络

操作:

bash 复制代码
ip a

eth0 是否有 inet 192.168.x.x。如果没有:

bash 复制代码
sudo dhclient eth0

为什么:

后面所有安装(apt、git、编译工具)都需要网络。有线网是最稳定的入口。


5. 启用 SSH(默认已开)

操作:

Armbian 默认开启 SSH 服务且开机自启。在电脑上用 MobaXterm 或终端连接:

bash 复制代码
ssh user@192.168.31.56

为什么:

SSH 是日常开发主力,资源占用极小。以后板子可以无头运行,不用接串口或显示器。


6. 安装 usb-modeswitch

操作:

bash 复制代码
sudo apt update
sudo apt install -y usb-modeswitch usbutils

为什么:

RTL8188GU 出厂默认是 U 盘模式(0bda:1a2b),需要 usb_modeswitch 工具把它切换成 WiFi 模式(0bda:b711)。


7. 切换 USB 网卡模式

操作:

bash 复制代码
sudo usb_modeswitch -KW -v 0bda -p 1a2b
lsusb

确认 ID 从 0bda:1a2b 变成 0bda:b711

为什么:

不切换的话,系统只认它是一个 U 盘,不会加载 WiFi 驱动。


8. 检查旧内核驱动

操作:

bash 复制代码
lsmod | grep rtl8xxxu
ip a

为什么:

初始内核 5.10.60 太老,自带的 rtl8xxxu 驱动不支持 RTL8188GU,所以看不到 wlan0。需要升级内核。


9. 升级内核到 6.18.44

操作:

bash 复制代码
sudo apt update
sudo apt upgrade -y

遇到配置文件提示(如 /etc/issue)输入 Y 回车。

完成后:

bash 复制代码
sudo reboot

重启后确认:

bash 复制代码
uname -r

应显示 6.18.44-current-sunxi

为什么:

新内核的 rtl8xxxu 驱动增加了对 RTL8188GU 的支持(2023 年后主线合并)。升级内核是解决驱动缺失最省事的方法。


10. 再次切换模式并检查驱动

操作:

bash 复制代码
sudo usb_modeswitch -KW -v 0bda -p 1a2b
lsmod | grep rtl8xxxu
dmesg | tail -n 30
ip a

为什么:

重启后网卡可能又变回 DISK 模式,需要重新切换。

此时 lsmod 能看到 rtl8xxxu,但 dmesg 可能报 probe failed with error -11,且 ip a 没有 wlan0。说明主线驱动兼容性不好,需要社区驱动。


11. 安装 GCC 14

操作:

bash 复制代码
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install -y gcc-14
gcc-14 --version

为什么:

内核是用 GCC 14.2 编译的,系统默认 GCC 是 9.4,版本不匹配会导致编译驱动时报 unrecognized command line option 错误。必须安装 GCC 14。


12. 克隆并编译社区驱动

操作:

bash 复制代码
cd ~
git clone https://github.com/a5a5aa555oo/rtl8xxxu.git
cd rtl8xxxu
make clean
make CC=gcc-14 -j$(nproc)

成功生成 rtl8xxxu_git.ko

为什么:

这个社区驱动专门修复了 RTL8188GU 的兼容性问题。用 CC=gcc-14 指定编译器,避免版本不匹配。


13. 安装并加载新驱动

操作:

bash 复制代码
sudo make install
sudo depmod -a
sudo modprobe -r rtl8xxxu        # 卸载内核自带旧驱动
sudo modprobe rtl8xxxu_git       # 加载新驱动
ip a

应出现类似 wlx7454271ea36f 的无线接口。

为什么:

安装新模块到系统,刷新依赖,然后卸载旧驱动、加载新驱动。接口名带 wlx 和 MAC 地址是正常的。


14. 连接 WiFi

操作:

bash 复制代码
sudo nmcli device wifi list
sudo nmcli device wifi connect "你的WiFi名称" password "你的密码"
ip a

无线接口应获取到 IP,例如 192.168.31.192

为什么:

nmcli 是 NetworkManager 的命令行工具,方便连接和记忆网络。


15. 配置永久生效

操作:

15.1 驱动开机自动加载

bash 复制代码
echo "rtl8xxxu_git" | sudo tee -a /etc/modules

15.2 屏蔽内核自带旧驱动

bash 复制代码
echo "blacklist rtl8xxxu" | sudo tee -a /etc/modprobe.d/blacklist-rtl8xxxu.conf

15.3 自动切换 USB 模式

bash 复制代码
sudo nano /etc/udev/rules.d/40-usb_modeswitch.rules

写入:

text 复制代码
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0bda", ATTR{idProduct}=="1a2b", RUN+="/usr/sbin/usb_modeswitch -KW -v 0bda -p 1a2b"

保存后:

bash 复制代码
sudo udevadm control --reload-rules
sudo udevadm trigger

为什么:

避免每次重启都要手动敲命令。自动加载驱动、屏蔽旧驱动、自动切换模式,让系统开机即用。


16. 测试脱离网线

操作:

拔掉网线,等几秒,用电脑 SSH 连接无线 IP:

bash 复制代码
ssh user@192.168.31.192

能连上即成功。

为什么:

验证 WiFi 方案真正可用,以后机器人可以自由移动。


最终成功状态

  • 硬件:NanoPi M1(全志 H3,1GB RAM)
  • 系统:Armbian 21.08.1 Focal(Ubuntu 20.04)
  • 内核:6.18.44-current-sunxi
  • 驱动:社区编译的 rtl8xxxu_git
  • 无线接口:wlx7454271ea36f
  • WiFi 连接:成功,IP 192.168.31.192
  • 永久配置:udev 自动切换、/etc/modules 自动加载、黑名单屏蔽旧驱动

以后重启应能自动进入 WiFi 模式并连接网络,可拔掉网线用 SSH 继续开发。

相关推荐
xx~t2 小时前
嵌入式学习——ARM1
linux·arm开发·嵌入式硬件·arm
xx~t2 小时前
嵌入式——ARM1(详细篇)
linux·arm开发·嵌入式硬件·arm
DYWorker0015 小时前
Linux驱动子系统:DMA-Buf —— Consumer和Provider(008)
linux·驱动开发
雯宝6 小时前
Linux 内核函数集
linux
GeW7 小时前
从挂科到高分通过:RHCE快速拿证的10个提分技巧
linux
鸠摩智首席音效师7 小时前
Linux /etc/nsswitch.conf 文件有什么作用 ?
linux
东城居士8 小时前
理解pinctrl和gpio子系统驱动
linux·嵌入式系统
H_oRIZoN_8 小时前
Linux入门DAY43 ARM 架构基础、寄存器、大小端、异常向量、交叉编译
linux·arm·linux应用编程
ι:8 小时前
NUC12 Pro 安装 Ubuntu 24.04 LTS 详细教程
linux·windows·ubuntu·nuc