目的
关于树莓派连接不了产品开的5G热点, 当时还是一头雾水。
参考这篇博客
把思路方向转向了频率, 信道, 通过给的产品A相关规格说明wifi 5.18GHz, 信道36。
于是乎我两款产品A、产品B为例。 树莓派是能连接产品B开的热点(5.745GHz, 信道149),连接不了产品A开的热点(5.18GHz, 信道36).
由于我的树莓派国家码为CN,
iw list
不同国家码支持的5G列表。
发现不支持5.18GHz 36的, 虽然这能解释上述问题.
其他博客
Linux 网卡配置 (频段、发射功率等)
如果你想让树莓派能连上wifi, 可以通过外接一个usb无线网卡, 或者修改国家码(我没验证过)。
usb 无线网卡
如果外接一个usb无线网卡, 首先是要安装对应驱动, 我选的是tplink, 需要安装驱动, 并加载即可
了解你要掌握的树莓派usb wifi adapters
RPi_USB_Wi-Fi_Adapters
下载驱动编译RTL8811CU
核心关键几点
1: sudo ./install-driver.sh 启动装驱动脚本
2: make 编译
3: sudo make install 安装程序
4: sudo reboot 重启
重启之后可对比查看驱动是否安装:
ls /lib/modules/$(uname -r)/kernel/drivers/net/wireless/realtek/rtl8821cu
如果没有
cd /lib/modules/$(uname -r)/kernel/drivers/net/wireless/realtek/rtl8821cu
sudo insmod 8821cu.ko 或者sudo modprobe 8821cu
重启
驱动操作命令:
insmod / modprobe 加载驱动
rmmod 卸载驱动
lsmod 查看系统中所有已经被加载了的所有的模块以及模块间的依赖关系
modinfo 获得模块的信息
最后插入usb无线网卡,lsusb
如果输入
lsusb 没有查看到0bda:1a2b有新增, 说明没有识别到
可以进行如下尝试:
1: 确保编译ko加载到内核中
insmod 8821cu.ko // sudo modprobe 8821cu
通过对比lsmod 查看已经加载模块是否包含有8821cu, 有的话说明已经加载了
Ubuntu20.04 系统安装USB无线网卡 TL-WDN5200免驱版 安转失败不显示WiFi的一种解决方案
2: 基于已经ko加载大内核中, 如果还是不识别, 可能把usb 模式switch, 可能识别为U盘存储模式
解决Realtek rtl8821cu USB 无线网卡树莓派linux下识别为存储模式的问题
1: cd /lib/udev/rules.d/
2: sudo vi ./40-usb_modeswitch.rules
3: 按下I键进入插入模式,在文件末尾 LABEL=“modeswitch_rules_end” 前插入以下内容:
ATTR{idVendor}=="0bda", ATTR{idProduct}=="1a2b", RUN+="/usr/sbin/usb_modeswitch -K -v 0bda -p 1a2b"
输入:x保存并推出,然后重启即可。
扩展
了解下usb_modeswitch简介
usb_modeswitch是一个linux下的usb模式切换工具,用于控制含有多个USB子设备的USB设备。
具体点来说,目前一些新的USB 设备在内部含有windows驱动,当你第一次插入的时候,它作为一个闪存,并提示你安装驱动。
在安装驱动之后,驱动会自动切换USB设备的模式,存储设备将会消失(大多数情况),新的设备将会产生(如USB类型的Modem)。这种特征被无线设备的制造商称其为“免CD”的设备。
目前许多这种设备都可以在Linux的驱动下工作,如"usb-storage"(存储设备的驱动模块)和"options"(高速Modem的驱动模块),接下来的事情就是如何从存储设备到Modem的切换。
USB_ModeSwitch从1.0.3以后的版本集成到udev(设备管理器)上,使得其工作完全自动化。
你可以通过修改配置文件来设置usb_modeswitch的参数。您可以从本文的参考链接中获取最新的版本。需要注意的是安装时你需要安装usb-modeswitch-data的包,其中包含了设备数据库和规则文件。
如何使用
usb_modeswitch由几个组件来共同协同工作。
- /lib/udev/rules.d/40-usb_modeswitch.rules - udev的规则文件,如果设备ID(制造商/产品)被识别就启动usb_modeswitch。
- /lib/udev/usb_modeswitch - 一个shell脚本调用实际的usb_modeswitch.
- /usr/sbin/usb_modeswitch_dispatcher - 检查设备并使用选择的设备文件来运行二进制程序,需要"tcl"才能运行。
- /etc/usb_modeswitch.conf - 全局的配置文件,用于调试时启用日志或禁止切换。
- /etc/usb_modeswitch.d - 该文件夹包含了针对每一个设备的独立的设置信息文件,用设备的ID来命名,如果您的设备ID出现在文件名字中,那么即使型号不同也有机会正常工作。
- /usr/sbin/usb_modeswitch - 完成切换工作的二进制程序。
*/usr/share/usb_modeswitch/configPack.tar.gz - 切换设置信息文件