尽管Raspberry Pi 4具有内置的双频WiFi,但是需要放到金属车体上,无法引出天线,所以需要一个网卡,在WIFI网卡中RTL8811cu是一款带5G的无线网卡,这款网卡有些缺点就是驱动需要编译安装,需要折腾(5G的USB网卡基本不免驱)。
本文使用RTL8811CU网卡和树莓派作为示例,基于UBUNTU18.04,内核4.19,其他设备安装方法大同小异。
- 文章更新日期2020-12-28
更新软件包
sudo apt-get update
sudo apt-get upgrade
安装所需的包
安装编译包以及git
sudo apt-get install build-essential -y
sudo apt-get install bc -y
sudo apt install git -y
检查内核文件
apt search linux-headers-(uname -r)
ls -l /usr/src/linux-headers-(uname -r)
如果没有安装内核头文件,则需要安装
树莓派:
sudo apt install raspberrypi-kernel-headers
其他:
sudo apt-get install linux-headers-$(uname -r)
可选,如需要使用DKMS进行编译和安装,但是博主未使用
sudo apt-get install dkms
注意内核版本
查看内核版本
uname -a
或者
getconf LONG_BIT
如果你的内核是”4.x及以下”或者是”5.x”版本请按照不同步骤执行
克隆编译包 (内核4.x)
mkdir -p ~/drive
cd ~/drive
git clone https://github.com/whitebatman2/rtl8821CU
克隆编译包 (内核5.x)
mkdir -p ~/drive
cd ~/drive
git clone https://github.com/brektrou/rtl8821CU
使用DKMS进行构建和安装(博主未使用)
DKMS是一个系统,当安装或更新新内核时,该系统将自动重新编译并安装内核模块。要使用DKMS,请安装dkms软件包。
博主未使用这种安装方式!
DRV_NAME=rtl8821CU
DRV_VERSION=5.2.5.3
sudo mkdir /usr/src/{DRV_NAME}-{DRV_VERSION}
git archive master | sudo tar -x -C /usr/src/{DRV_NAME}-{DRV_VERSION}
sudo dkms add -m {DRV_NAME} -v{DRV_VERSION}
sudo dkms build -m {DRV_NAME} -v{DRV_VERSION}
sudo dkms install -m {DRV_NAME} -v{DRV_VERSION}
在没有使用DKMS进行构建和安装
首先进入驱动包目录,并且编辑驱动程序配置
cd ~/drive/rtl8821CU
vim Makefile
假如您使用的是Raspberry Pi 4/3 64位,需要配置Makefile的设备类型,原本是:
内核4.x :
CONFIG_PLATFORM_I386_PC = y
CONFIG_PLATFORM_ARM_RPI = n
CONFIG_PLATFORM_ARM_RPI3 = n
内核5.x :
CONFIG_PLATFORM_I386_PC = y
CONFIG_PLATFORM_ARM_RPI = n
CONFIG_PLATFORM_ARM64_RPI = n
变更为
内核4.x :
CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_ARM_RPI = n
CONFIG_PLATFORM_ARM_RPI3 = y
内核5.x :
CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_ARM_RPI = n
CONFIG_PLATFORM_ARM64_RPI = y
如果您使用的是Raspberry Pi 4/3 32位,则变更为
内核4.x :
CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_ARM_RPI = y
CONFIG_PLATFORM_ARM_RPI3 = n
内核5.x :
CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_ARM_RPI = y
CONFIG_PLATFORM_ARM64_RPI = n
针对5.x
内核驱动程序的ARM体系结构调整(解决5.x驱动程序的编译问题)
For AArch32 (例如树莓派32位)
sudo cp /lib/modules/(uname -r)/build/arch/arm/Makefile /lib/modules/(uname -r)/build/arch/arm/Makefile.(date +%Y%m%d%H%M)
sudo sed -i 's/-msoft-float//' /lib/modules/(uname -r)/build/arch/arm/Makefile
sudo ln -s /lib/modules/(uname -r)/build/arch/arm /lib/modules/(uname -r)/build/arch/armv7l
For AArch64 (例如树莓派64位)
sudo cp /lib/modules/(uname -r)/build/arch/arm64/Makefile /lib/modules/(uname -r)/build/arch/arm64/Makefile.(date +%Y%m%d%H%M)
sudo sed -i 's/-mgeneral-regs-only//' /lib/modules/(uname -r)/build/arch/arm64/Makefile
输入以下命令以安装驱动程序,可能需要几分钟:
make
编译完成后执行安装
sudo make install
如果你已成功安装了驱动程序,则可以使用以下命令检查
ls /lib/modules/$(uname -r)/kernel/drivers/net/wireless/8821cu*
如果以后要删除它,请执行以下操作:
sudo make uninstall
网卡使用 (店铺购买网卡不需要切换USB模式)
将USB-WIFI适配器插入设备,如果可以检测到WIFI,那么恭喜。如果没有检测到,也许需要通过以下步骤切换USB模式:
1. 通过以下方式找到您的usb-wifi-adapter设备ID,例如”0bda:1a2b”:
lsusb
- 需要先安装
usb_modeswitch
用于切换USB设备类型,假设设备ID是"0bda:1a2b"
sudo usb_modeswitch -KW -v 0bda -p 1a2b
- 使用
iw
命令查看网卡是否识别到新网卡
iw dev
设置自动启动识别 (店铺购买网卡不需要切换USB模式)
如果插入设备进入u盘或者其他模式,则需要切换为无线网卡模式
1. 编辑usb_modeswitch
规则
sudo vim /lib/udev/rules.d/40-usb_modeswitch.rules
- 在最后结束行
LABEL="modeswitch_rules_end"
前面添加以下内容
# Realtek 8211CU Wifi AC USB
ATTR{idVendor}=="0bda", ATTR{idProduct}=="1a2b", RUN+="usb_modeswitch '/%k'"