最近在做工业相机方面的东西,接口为千兆以太网,并且需要打开巨型帧进行信息传输。
而我的老笔记本电脑只支持百兆以太网,所以买了一个支持巨型帧的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_NAME和PACKAGE_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
我使用以上两种方法都安装了,但是查看巨型帧的时候,还是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
2.4 开启巨型帧
sudo ifconfig enx0826ae31ad1b mtu 9000