为TS-212P3编译r8156b 2.5G USB网卡驱动

为TS-212P3编译r8156b 2.5G USB网卡驱动
2023年10月02日 15:48 什么值得买

作者:ISEKU

最近在家升级2.5G局域网,买了个螃蟹的r8156b 2.5G USB网卡,最便宜的那种

测试的时候发现没有TS-212P3的驱动,网上翻遍了也没找到,只好自己动手丰衣足食了...

这里把过程简单记录一下,顺便也供值友们参考。

环境准备:

1、安装Ubuntu16 虚拟机并安装编译工具(以下操作在非root账号下进行)

sudo apt update && sudo apt upgrade -y

sudo apt install build-essential libelf-dev bc

mkdir ~/work

2、交叉编译环境

TS-212P已升级至QTS5.1, 查看内核版本:

发现原厂使用的编译工具是Linaro GCC, 我们也使用相同的工具进行编译。

GCC下载地址:

https://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz

内核和驱动源码下载地址:

QTS kernel : https://sourceforge.net/projects/qosgpl/  (选择QTS5.1)

r8156b linux驱动:

https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-usb-3-0-software  (当前版本为2.17.1)

下载的QTS内核压缩包是分片的,需要自己合并后再解压:

cat QTS_Kernel_5.1.0.20230808.tar.gz.0 QTS_Kernel_5.1.0.20230808.tar.gz.1 >> QTS_Kernel_5.1.0.20230808.tar.gz

tar xvzf QTS_Kernel_5.1.0.20230808.tar.gz -C ~/work

解压网卡驱动源码:

tar xvzf v2.16.3.20221209.tar.gz -C ~/work

解压交叉编译工具:

xz -d gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz

tar xvf gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar -C ~/opt

进行编译:

3、开始进行编译

先给驱动打个补丁,要不编译时会出错:

sed -i -e 's/strscpy/strncpy/g' ~/work/r8152-2.17.1/r8152.c

然后将r8152-2.17.1下的所有文件复制到 ~/work/GPL_QTS/src/linux-4.2/drivers/net/usb/ 下

进入4.2版内核的源码目录:

cd ~/work/GPL_QTS/src/linux-4.2/

复制目标设备配置文件:

cp ~/work/GPL_QTS/kernel_cfg/TS-X28A/linux-4.2-arm64.config .config

先进行预编译

make ARCH="arm64" CROSS_COMPILE="/opt/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-" -C ~/work/GPL_QTS/src/linux-4.2/ scripts prepare modules_prepare

没有出错的话就可以编译驱动了:

make ARCH="arm64" CROSS_COMPILE="/opt/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-" -C ~/work/GPL_QTS/src/linux-4.2/  modules SUBDIRS=drivers/net/usb/

编译成功是这样的:

测试部署:

4、安装测试驱动

将 ~/work/GPL_QTS/src/linux-4.2/drivers/net/usb/r8152.ko 复制到NAS上,然后执行:

modprobe -r r8152

insmod ./r8152.ko

没有错误的话插入usb网卡接上网线,用dmesg | grep 8151查看驱动加载,正常是这样的:

5、进NAS管理界面看看,已经识别新网卡了

6、测试速度

用iperf3单连接进行测速,结果如下:

增加连接数速度也没有变化,应该也就这样了吧。

测试时CPU占用情况

7、驱动的持久化

由于自己编译的驱动不能直接替代原厂驱动(重启后会恢复),我们需要做一个启动时自动加载的脚本。

首先打开启动时运行用户定义的进程选项:

autorun.sh需要存放在flash存储里,按照一下步骤创建:

/etc/init.d/init_disk.sh mount_flash_config (挂载flash分区)

然后手动创建或上传 autorun.sh 文件到 /tmp/nasconfig_tmp/autorun.sh

脚本内容:

#本脚本用于替换原厂驱动并执行加载操作

#!/bin/sh

echo "############ autorun.sh script start ############" >> /dev/kmsg

export PATH=/opt/bin:$PATH

export PATH=/sbin/:$PATH

#下面的源路径根据自己存放ko文件的具体位置进行修改

cp /share/CACHEDEV4_DATA/mod/r8152.ko /lib/modules/4.2.8/

modprobe -r r8152

modprobe r8152

echo "############ autorun.sh script end ############" >> /dev/kmsg

创建完成后执行:

chmod +x /tmp/nasconfig_tmp/autorun.sh (为脚本添加执行权限)

cd && /etc/init.d/init_disk.sh umount_flash_config (卸载flash分区)

最后重启试试能否自动加载, 然后享受2.5Gbps 的速度吧。

BTW:我在github上创建了个项目,编译好的模块已上传,有需要的自己下载,不保证在你的机器上能用…

网址是:https://github.com/iseku/r8156_for_TS-212P3

引用和感谢:

参考资料:

https://neolee.com/2021/03/15/威联通qnap-ts-453bmini自编译usb-2-5g网卡驱动/

https://gist.github.com/RikshaDriver/0388ba3f38f89eb975ebb0b915860ec2

在此感谢两位作者。

如需引用请注明出处。

查看文章精彩评论,请前往什么值得买进行阅读互动

财经自媒体联盟更多自媒体作者

新浪首页 语音播报 相关新闻 返回顶部