> 文章列表 > 在NVIDIA JetBot Nano小车上更新WIFI驱动

在NVIDIA JetBot Nano小车上更新WIFI驱动

在NVIDIA JetBot Nano小车上更新WIFI驱动

前言:

树莓派上的WIFI驱动类型比较多,经常有更好驱动的需求

本文给出RealTek的无线WIFI模组,8821CU的驱动更新办法


步骤

第一 通过其他方式连接网络

小车通过网线或者老的WIFI连接到网络上

第二 构建驱动模块并下载驱动

首先,我们需要打开一个ubuntu的命令行窗口;进入bash,

用三个键的联合命令,就可以打开

【CTRL】+【Alt】+【T】

  1. 构建一个存放驱动模块的文件夹

mkdir -p ~/8821CU/
cd ~/8821CU

2.下载模块

git clone https://github.com/brektrou/rtl8821CU.git

3 进入刚才文件夹

cd rtl8821CU

4.进入Jetbot的驱动配置目录,准备构建新的驱动模块,执行下面两行命令

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

5.更新新的驱动模块

sudo apt-get install nano
nano ~/8821CU/rtl8821CU/Makefile

6.修改编译文件Makefile

将文件中102行左右的配置,

 Platform Related ##
CONFIG_PLATFORM_I386_PC = y
CONFIG_PLATFORM_ARM_RPI = n
CONFIG_PLATFORM_ARM64_RPI = n
CONFIG_PLATFORM_ANDROID_X86 = n
CONFIG_PLATFORM_ANDROID_INTEL_X86 = n
CONFIG_PLATFORM_JB_X86 = n
CONFIG_PLATFORM_ARM_S3C2K4 = n

改为

 Platform Related ##
CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_ARM_RPI = n
CONFIG_PLATFORM_ARM64_RPI = y
CONFIG_PLATFORM_ANDROID_X86 = n
CONFIG_PLATFORM_ANDROID_INTEL_X86 = n
CONFIG_PLATFORM_JB_X86 = n
CONFIG_PLATFORM_ARM_S3C2K4 = n

7. 安装DKMS包

7.1 下载

sudo apt-get update
sudo apt-get install dkms7AA

7.2 配置安装

sudo ./dkms-install.sh
在NVIDIA JetBot Nano小车上更新WIFI驱动

安装成功如下;

在NVIDIA JetBot Nano小车上更新WIFI驱动

第三,安装硬件WIFI模块

在NVIDIA JetBot Nano小车上更新WIFI驱动

重启Jetson Nano

第四,在Ubuntu里面配置WIFI连接


可能遇到的问题

在NVIDIA JetBot Nano小车上更新WIFI驱动

1 DKMS安装无法解析域名 ports.ubuntu

解决办法;就是换成国内的下载源,先把linux header这些先下载了,

1.1 先备份源列表

sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup

1.2 更新到清华源

sudo gedit /etc/apt/sources.list

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

这样会装linux header的相关文件

在NVIDIA JetBot Nano小车上更新WIFI驱动

1.3 注意重启网络连接

然后,用一个更新的强制的命令选项 【这个在报错的提示里面有】

1.4 重新安装dkms

然后重新执行;注意这里增加了额外的命令选项

sudo apt-get install dkms --fix-missing

如果还有问题,参考以下额外步骤

这部分,因为笔者已经没有问题,所以,没有执行

 Additional steps after plug it in, and was not recognized as a WiFi adapter:The USB ID is required to be known in order to change it later:```bash
lsusb
```In this case my adapter showed up as:```bash
Bus 001 Device 005: ID 0bda:1a2b Realtek Semiconductor Corp. 
```Later, an utility has to be installed to change the USB behavior:```bash
sudo apt-get install usb_modeswitch
```Then, to change the USB behavior the following command has to be executed, note that the vendor and product ID (`-v` and `-p` flags parameters have to match with your device):```bash
sudo usb_modeswitch -KW -v 0bda -p 1a2b
```Additionally, the bluetooth service has to be activated if inactive (not really sure why brektrou mentions it, but I suspect that is due to some adapters that are a combination of both and may have some relation at deeper level):```bash
systemctl start bluetooth.service
```By now, it should work, but this configuration is not permanent. Make permanent available the configuration for the WiFi adapter- The `usb_modeswitch` rules need to be open for modification:```bashsudo nano /lib/udev/rules.d/40-usb_modeswitch.rules```- Append the following prior to `LABEL="modeswitch_rules_end"` line, which is located at the end-of-file. Again, make sure to match the vendor and product ID with your device as previous commands```# Realtek 8211CU Wifi AC USBATTR{idVendor}=="0bda", ATTR{idProduct}=="1a2b", RUN+="/usr/sbin/usb_modeswitch -K -v 0bda -p 1a2b"```Now, configuration is permanent on your system.At this point it should be possible to connect to an WiFi AP by using GUI or CLI.If you would like to do a headless setup, then follow the instructions at https://www.linuxbabe.com/command-line/ubuntu-server-16-04-wifi-wpa-supplicant. While paying attention to stop NetworkManager process, otherwise it won't let you scan and add your WiFi AP.```bash
sudo systemctl stop NetworkManager
```## Sources- https://github.com/brektrou/rtl8821CU- https://www.linuxbabe.com/command-line/ubuntu-server-16-04-wifi-wpa-supplicant

参考

Linux 模块管理方法之 DKMS - 知乎 (zhihu.com)

(1条消息) Linux换国内镜像源(Ubuntu、Debian等)_linux换源_Raywit的博客-CSDN博客