Ubuntu 16.10 配置无线网卡驱动的问题,同样适用14.04和16.04。针对的设备是Realtek RTL8111/8168 PCI Express Gigabit Ethernet Controller
,表现为网络不稳定,经常掉线,且网速较慢,分析后认为是驱动不匹配。
Ubuntu自带的驱动为r8169
,高于此类网卡,导致兼容性差,影响了网络连接效果。 解决方法如下,参考链接见文末。
1. Check driver and device info
查看系统为网卡型号和对应的驱动,利用如下指令
1
| $ lspci -vv >> device.txt
|
打开device.txt
,找到网卡设备,样例如下。其中驱动部分显示为r8169
,与现有网卡不吻合
1 2 3 4 5 6 7 8 9 10 11 12
| 03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0b) Subsystem: Acer Incorporated [ALI] RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0, Cache Line Size: 64 bytes Interrupt: pin A routed to IRQ 27 Region 0: I/O ports at d000 [size=256] Region 2: Memory at f7104000 (64-bit, prefetchable) [size=4K] Region 4: Memory at f7100000 (64-bit, prefetchable) [size=16K] Capabilities: <access denied> Kernel driver in use: r8169 Kernel modules: r8169
|
2. Download driver of r8168
从Realtek
官网下载rtl8168
的驱动, 需要根据Linux的内核版本进行选择,例如我的内核是4.9.1,则选择4.7
以上的驱动。
更新[2019-07-28]:Realtek的官方链接貌似打不开了,而且在我的系统更新到18.04以及内核更新以后出现了奇怪的编译错误(如下),Google以后发现是因为内核4.15以后,setup_timer
函数被更新为timer_setup
,因此出现了编译错误的问题。参考建议,安装更新后的r8168.045.08-2
驱动能够解决问题,该驱动的下载链接为这里
1 2 3 4
| error: implicit declaration of function ‘setup_timer’; did you mean ‘sk_stop_timer’? [-Werror=implicit-function-declaration] setup_timer(timer, rtl8168_esd_timer, (unsigned long)dev); ^~~~~~~~~~~ sk_stop_timer
|
3. Install driver
安装驱动,用如下指令,安装完成后要重启系统。
1 2 3 4
| $ tar -xvf 0010-r8168-8.045.08.tar.bz2 $ cd r8168-8.045.08 $ sudo ./autorun.sh $ sudo reboot
|
重启以后,理论上网络连接恢复正常。重新查看系统设备信息,有如下结果,驱动已经更新为r8168
。
1 2 3 4 5 6 7 8 9 10 11 12
| 03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0b) Subsystem: Acer Incorporated [ALI] RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0, Cache Line Size: 64 bytes Interrupt: pin A routed to IRQ 27 Region 0: I/O ports at d000 [size=256] Region 2: Memory at f7104000 (64-bit, prefetchable) [size=4K] Region 4: Memory at f7100000 (64-bit, prefetchable) [size=16K] Capabilities: <access denied> Kernel driver in use: r8168 Kernel modules: r8168
|
Reference
[1] Ubuntu 16.04 RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller” 不能上网