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

2023-10-02 15:48:29 8点赞 20收藏 19评论

最近在家升级2.5G局域网,买了个螃蟹的r8156b 2.5G USB网卡,最便宜的那种为TS-212P3编译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, 查看内核版本:

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

发现原厂使用的编译工具是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)

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

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/

编译成功是这样的:

为TS-212P3编译r8156b 2.5G 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查看驱动加载,正常是这样的:

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

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

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

6、测试速度

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

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

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

测试时CPU占用情况

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

7、驱动的持久化

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

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

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

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

在此感谢两位作者。

如需引用本文请注明出处。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起

清梅 随身wifi 上网卡

清梅 随身wifi 上网卡

32.9元起

Tenda 腾达 AX300 WiFi6免驱 usb无线网卡

Tenda 腾达 AX300 WiFi6免驱 usb无线网卡

19.9元起

COMFAST pcie无线网卡台式电脑WIFI6接收器AX200SE 5G3000MWiFi5.2

COMFAST pcie无线网卡台式电脑WIFI6接收器AX200SE 5G3000MWiFi5.2

89元起

COMFAST CF-812AC 1300M 千兆USB无线网卡(802.11ac)

COMFAST CF-812AC 1300M 千兆USB无线网卡(802.11ac)

29.7元起

Tenda 腾达 U2 V5.0 300M 千兆USB无线网卡 白色 Wi-Fi 6

Tenda 腾达 U2 V5.0 300M 千兆USB无线网卡 白色 Wi-Fi 6

17.9元起

EDUP 翼联 AX210 无线网卡 WiFi6

EDUP 翼联 AX210 无线网卡 WiFi6

119元起

UGREEN 绿联 CM448 650M 百兆USB无线网卡

UGREEN 绿联 CM448 650M 百兆USB无线网卡

29.9元起

MERCURY 水星网络 USB无线网卡 WiFi6

MERCURY 水星网络 USB无线网卡 WiFi6

19.76元起

COMFAST CF-BE200-M WiFi7无线网卡

COMFAST CF-BE200-M WiFi7无线网卡

168元起

EB-LINK Intel BE200芯片笔记本无线网卡8744M M.2接口WiFi7千兆三频网卡蓝牙5.4电脑内置模块

EB-LINK Intel BE200芯片笔记本无线网卡8744M M.2接口WiFi7千兆三频网卡蓝牙5.4电脑内置模块

195元起

MERCURY 水星网络 水星WiFi6免驱 usb无线网卡 外置天线 台式机笔记本电脑无线wifi接收器 随wifiUX3H

MERCURY 水星网络 水星WiFi6免驱 usb无线网卡 外置天线 台式机笔记本电脑无线wifi接收器 随wifiUX3H

25.9元起

奋威(fenvi) AX210无线网卡WiFi6电竞千兆三频5374M笔记本台式机内置蓝牙AX200 WIFI 7 BE200NGW

奋威(fenvi) AX210无线网卡WiFi6电竞千兆三频5374M笔记本台式机内置蓝牙AX200 WIFI 7 BE200NGW

118元起

Tenda 腾达 U6 免驱版 300M USB无线网卡 Wi-Fi 4(802.11n)

Tenda 腾达 U6 免驱版 300M USB无线网卡 Wi-Fi 4(802.11n)

17.9元起

Tenda 腾达 U10 650M USB无线网卡

Tenda 腾达 U10 650M USB无线网卡

55元起

Newmine 纽曼 1300M免驱版 USB无线网卡 千兆5G双频 台式机笔记本电脑

Newmine 纽曼 1300M免驱版 USB无线网卡 千兆5G双频 台式机笔记本电脑

85元起

COMFAST CF-922AC双频5g免驱USB接口无线网卡

COMFAST CF-922AC双频5g免驱USB接口无线网卡

49元起
19评论

  • 精彩
  • 最新
  • 老大,能说的简单直白一点嘛,你那几个文件如何导入

    校验提示文案

    提交
    那你得先得会开ssh, 导入文件很简单,用nas的文件共享就行,nas里面的对应共享文件夹在 /share 下面

    校验提示文案

    提交
    收起所有回复
  • 谢谢分享,我是TS-453Bmini也是5.1的系统,之前的教程只有4.5的用不了,这个下来试试看

    校验提示文案

    提交
    看来我这门外汉试不了 [黑线]
    参照4.5的那个教程:
    先用winSCP把r8152.ko文件传到NAS上
    再用puTTY进去,最后打驱动显示出错,不知道我哪步没搞好,显示如下
    [~] # /sbin/rmmod r8152
    [~] # /sbin/rmmod usbnet
    [~] # sleep 3
    [~] # /sbin/insmod /share/CACHEDEV1_DATA/r8152.ko
    insmod: can't insert '/share/CACHEDEV1_DATA/r8152.ko': invalid module format

    校验提示文案

    提交
    参考的4.5操作是去看看
    后面的步骤出错了,搞不懂

    校验提示文案

    提交
    还有6条回复
    收起所有回复
  • 实践了下,临时替换模块没问题。但是重启后的脚本文件copy不成功,r8152.ko还是老的时间戳,为什么啊 [喜极而泣] 。没玩过,也不知道怎么调试。cat或者tail下/dev/kmsg也没看到打印的日志呀。

    校验提示文案

    提交
    如果只是重启不能自动替换,你仔细看看脚本里的路径有没有写对,要替换的源文件需要存放在存储盘上,就是 /share/底下的共享目录里面

    校验提示文案

    提交
    路径没错的,ls 都能找到。

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 正好用的上,又正好完全看不懂

    校验提示文案

    提交
  • 花几十块钱就把NAS升级成2.5G了?赞 [惊喜]

    校验提示文案

    提交
  • 刚在网上下单,x86的威联通应该能直接识别吧

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
20
扫一下,分享更方便,购买更轻松