问题

问题

问题

我的台式电脑上有一个 Linksys WUSB 6300 双频 USB WiFi 适配器,驱动模块为 8812AU,运行顺利。

当我第一次让它工作时,我用的是驱动签名方法使其与安全启动一起工作。它在内核版本 4.4.0-23-generic 上工作正常,后来在 4.4.0-24-generic 上也工作正常,我在更新后重新启用了它。

更新至 4.4.0-28-generic 后,由于某种原因重新签名不再具有预期的效果,并且似乎无法加载驱动程序模块 8812AU

更新到 4.4.0-38-generic 后,行为保持不变。

附加驱动程序工具现在向我显示,所以我不确定模块文件是否被弄乱了。我对 Ubuntu 还很陌生,所以我不知道该如何判断。当它还在工作时,它向我展示了

因此,网络适配器无法工作,而我不知道该检查什么或做什么才能使其恢复工作。

细节

lsusb显示适配器被识别为 USB 设备:

Bus 002 Device 002: ID 13b1:003f Linksys WUSB6300 802.11a/b/g/n/ac Wireless Adapter [Realtek RTL8812AU]

sudo lshw -C network只显示以太网和内置 WiFi(名称非常相似)。它是一个集成 WiFi 适配器,在 Ubuntu 下运行不佳,因此对我来说没用。

笔记:8821AE是内部 WiFi。我正在尝试获取 8812AU运行,但由于它似乎尚未加载,因此这里未列出。

*-network
   description: Ethernet interface
   product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
   vendor: Realtek Semiconductor Co., Ltd.
   physical id: 0
   bus info: pci@0000:03:00.0
   logical name: enp3s0
   version: 11
   serial: 54:a0:50:d5:4b:0b
   size: 10Mbit/s
   capacity: 1Gbit/s
   width: 64 bits
   clock: 33MHz
   capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
   configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=half firmware=rtl8168g-2_0.0.1 02/06/13 latency=0 link=no multicast=yes port=MII speed=10Mbit/s
   resources: irq:42 ioport:e000(size=256) memory:f7d00000-f7d00fff memory:f0000000-f0003fff
*-network
   description: Wireless interface
   product: RTL8821AE 802.11ac PCIe Wireless Network Adapter
   vendor: Realtek Semiconductor Co., Ltd.
   physical id: 0
   bus info: pci@0000:04:00.0
   logical name: wlp4s0
   version: 00
   serial: 54:27:1e:d6:91:8d
   width: 64 bits
   clock: 33MHz
   capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
   configuration: broadcast=yes driver=rtl8821ae driverversion=4.4.0-22-generic firmware=N/A ip=192.168.0.20 latency=0 link=yes multicast=yes wireless=IEEE 802.11abgn
   resources: irq:46 ioport:d000(size=256) memory:f7c00000-f7c03fff

运行rfkill list all表明好像没有被阻塞:

0: hci0: Bluetooth
    Soft blocked: no
    Hard blocked: no
1: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no

任何帮助将不胜感激!

非常感谢。

答案1

可以通过编辑 dkms.conf 文件来修复此包...

sudo -H gedit /usr/src/rtl8812au-4.3.8.12175.20140902+dfsg/dkms.conf

然后将第 4 行从MAKE="'make' all"改为MAKE="'make' all KVER=${kernelver}"

保存并退出编辑器然后执行相同操作:

sudo -H gedit /var/lib/dkms/rtl8812au/4.3.8.12175.20140902+dfsg/build/dkms.conf

类似的问题已在Ubuntu 论坛并且我的编辑对于我获得的最新内核更新有效。

对于您当前的内核,您应该能够:

dkms build rtl8812au/4.3.8.12175.20140902+dfsg -k $(uname -r)
dkms install rtl8812au/4.3.8.12175.20140902+dfsg -k $(uname -r)
重启

答案2

这是我编写的一个快速脚本,用于手动修复每次内核软件更新后都会发生的损坏的 rtl8812au-dkms 驱动程序问题。在内核软件更新后运行该脚本sudo。此驱动程序的问题是 dkms 为错误的内核构建了它。这是源代码中 dkms.conf 的问题。我可能有一个永久的修复等待解决。

kernel module load error您可以在启动时判断 /var/log/syslog 中是否有。在终端中,modinfo 8812au将显示维玛吉克不正确。

#!/bin/bash  
# save as ~/Desktop/fix_8812au.sh  
# in terminal: chmod +x ~/Desktop/fix_8812au.sh
# in terminal, run with: sudo ~/Desktop/fix_8812au.sh

cd /var/lib/dkms

# rtl8812au  

dkms remove rtl8812au/4.3.8.12175.20140902+dfsg -k "$(uname -r)/$(uname -p)"  
dkms build rtl8812au/4.3.8.12175.20140902+dfsg -k "$(uname -r)/$(uname -p)"  
dkms install rtl8812au/4.3.8.12175.20140902+dfsg -k "$(uname -r)/$(uname -p)"

更新:用户还在使用旧版本的 8812au 驱动程序,因此我们rtl8812au-dkms从存储库安装了当前版本,一切正常。下次内核软件更新后将立即需要该脚本。

更新 #2:恰当的修复(感谢@Jeremy31)这个错误的方法是编辑这两个文件:

gksudo gedit /usr/src/rtl8812au-4.3.8.12175.20140902+dfsg/dkms.conf

gksudo gedit /var/lib/dkms/rtl8812au/4.3.8.12175.20140902+dfsg/build/dkms.conf

并将 MAKE="'make' all" 替换为以下行:

MAKE[0]="'make' all KVER=${kernelver}"

答案3

我主张你应该使用完全签名并编译为正确版本的内核模块……然后我犯了罪,强行安装了一个我不知道如何签名的模块(我面临安全问题)。事实上,在学习 dkms 之前,我想我一定是离题了,强行安装了错误的内核版本(但嘿,它仍然有效!)。

您可能会遇到同样的情况。无论如何,modprobe您可以通过添加以下参数来安装未签名的内核模块:

-f, --force                 Force module insertion or removal.
                            implies --force-modversions and
                            --force-vermagic
    --force-modversion      Ignore module's version
    --force-vermagic        Ignore module's version magic

当然,我主张你永远不应该这样做,但是话又说回来……

相关内容