最近在做工业相机方面的东西,接口为千兆以太网,并且需要打开巨型帧进行信息传输。

而我的老笔记本电脑只支持百兆以太网,所以买了一个支持巨型帧的USB3.0转RJ45,其内部网卡为RTL8156BG,费劲周折,终于成功安装驱动并使用巨型帧传输工业相机图像。

目录

1 下载驱动

2 安装驱动

2.1常规编译方法

2.2 DKMS安装

2.2.1 安装DKMS

2.2.2 构建DKMS编译环境

2.2.3 DKMS编译

2.3 查看巨型帧maxmtu

3 参考链接

*************************** Ubuntu20.04+内核5.13.0-48-generic***********************************

1 下载驱动

最好从官网直接下载新版,较新的几个版本应该都是可以的。

Realtek USB FE / GBE / 2.5G / Gaming Ethernet Family Controller Software - REALTEK

2 安装驱动

最好先采用以下方法安装,不要升级内核kernel!有时可能会报找不到header的错误!

2.1常规编译方法

解压下载的压缩包,进入文件夹,进行编译和安装。

make
make install

2.2 DKMS安装

2.2.1 安装DKMS

需要确保系统里安装了DKMS,在ubuntu系统下可以用一下命令进行安装:

sudo apt-get install dkms

2.2.2 构建DKMS编译环境

使用以下命令打开系统文件最高权限。

sudo nautilus

在文件夹 /usr/src/ 下新建文件夹 r8152-2.16.1 ,将驱动文件都解压复制到这里。

再创建 /usr/src/r8152-2.16.1/dkms.conf

PACKAGE_NAMEPACKAGE_VERSION文件夹的命名是一致的。其内容如下:

PACKAGE_NAME="r8152"
PACKAGE_VERSION="2.16.1"
BUILT_MODULE_NAME[0]="$PACKAGE_NAME"
DEST_MODULE_LOCATION[0]="/updates/dkms"
AUTOINSTALL="YES"
REMAKE_INITRD="YES"
CLEAN="rm src/@PKGNAME@.ko src/*.o || true"

注意:

  • 用DKMS安装是直接对内核kernel搞事情,应该更稳。
  • 文件关系:

        /usr/src/r8152-2.16.1/
        ├── dkms.conf
        ├── r8152.c
        └── Makefile

  • dkms编译对文件夹名称有要求!

2.2.3 DKMS编译

sudo dkms add -m r8152 -v 2.16.1
sudo dkms build -m r8152 -v 2.16.1
sudo dkms install -m r8152 -v 2.16.1
sudo depmod -a
sudo modprobe r8152

2.3 查看巨型帧maxmtu

安装完成后,用以下命令查看一下,显示maxmtu>1504应该就是安装成功了。

ip -d link list

ddocker 安装慢 dkms安装驱动_ddocker 安装慢

 我使用以上两种方法都安装了,但是查看巨型帧的时候,还是1504,很崩溃,终于找到了原因。

用一下命令时,突然发现不对劲。

ethtool -i enx0826ae31ad1b

搞好之前这里是 cdc_ncm,觉得不对劲,就查了好一会儿这玩意,没什么用。终于,输入以下指令后,再次查看,对劲了!

cp 50-usb-realtek-net.rules /usr/lib/udev/rules.d/
modprobe r8152
sudo systemctl status systemd-modules-load.service

ddocker 安装慢 dkms安装驱动_linux_02

2.4 开启巨型帧

sudo ifconfig enx0826ae31ad1b mtu 9000

 3 参考链接

Ubuntu Linux 下安装 R8156B 2.5G 网卡

RTL8156 Linux 开启巨型帧

Ubuntu20.04 如何降低内核版本