我有一块新主板:MSI Z170A GAMING M5。这块主板有一个 Atheros killer e2400 以太网控制器。当我这样做时lspci -nn
,我得到:
03.00.0 Ethernet controller [0200]: Qualcomm Atheros Device [1969:e0a1] (rev 10)
Google 好像也没有找到答案。只有 openSUSE 论坛上有一个类似的未解决的问题。
答案1
我用我的 Skylake MSI Z170A GAMING M5 构建,在 Ubuntu Gnome 上使用我的 Killer E2400 发布此内容!下面是我用来使其运行的(或多或少)简单步骤。
首先,我们将遵循Ubuntu
sudo apt-get build-dep linux-image-$(uname -r)
sudo apt-get install git
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-vivid.git
该 git URL 适用于 15.04 Vivid Vervet。您需要将 Vivid 替换为您的发布代号。最后一步可能需要一点时间,因此请放松并享受您的 E2400 即将开始工作的喜悦。
完成后,我们将修改 alx 驱动程序以包含我们的 E2400(请随意使用您选择的文本编辑器)
cd ubuntu-vivid/drivers/net/ethernet/atheros/alx/
sudo -H gedit reg.h
找到定义 ALX_DEV_ID_E2200 的行(您可以直接搜索 E2200),然后在其下方添加
#define ALX_DEV_ID_E2400 0xe0a1
下一个,
sudo -H gedit main.c
再次找到 E2200,并在后面{ PCI_VDEVICE(ATTANSIC, ALX_DEV_ID_E2200), .driver_data = ALX_DEV_QUIRK_MSI_INTX_DISABLE_BUG },
添加
{ PCI_VDEVICE(ATTANSIC, ALX_DEV_ID_E2400),
.driver_data = ALX_DEV_QUIRK_MSI_INTX_DISABLE_BUG },
现在,剩下的就是制作和安装驱动程序
make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
sudo make -C /lib/modules/$(uname -r)/build M=$(pwd) modules_install
sudo modprobe -r alx
sudo depmod
sudo modprobe -v alx
注意:执行完最后一行后,您应该看到模块从中加载,...extra/alx.ko
如果没有,您可能需要重命名它alx.ko
找到的alx.ko.bak
或类似的东西,然后再次运行最后三个命令。
您的 E2400 现在应该已经出现,可供您享受网络乐趣了!
答案2
Ubuntu 14.04 (Trusty) 更新:
根据chili555 的评论在类似的问题上,Ubuntu 16.04 附带的内核支持该设备。幸运的是,可以通过 LTS/HWE 升级到 Ubuntu 14.04 中的相同内核:
安装内核包:
sudo apt install linux-generic-lts-xenial
重启机器。新安装的内核应该是 Grub 的新默认启动选项。
原始帖子(仍然适用于 16.04 之前的其他 Ubuntu 版本)
缺乏应用适当的补丁并重新编译受影响的内核模块,您可能能够注册新的 PCI 设备 ID(文档)与现有的设备驱动程序:
将设备 ID 写入此文件将尝试动态地将新的设备 ID 添加到 PCI 设备驱动程序。这可能允许驱动程序支持比编译时驱动程序的静态设备 ID 支持表中包含的更多的硬件。设备 ID 的格式为:
VVVV DDDD SVVV SDDD CCCC MMMM PPPP
。即供应商 ID、设备 ID、子系统供应商 ID、子系统设备 ID、类、类掩码和私有驱动程序数据。供应商 ID 和设备 ID 字段是必需的,其余字段是可选的。成功添加 ID 后,驱动程序将探测设备并尝试绑定到它。例如:# echo "8086 10f5" > /sys/bus/pci/drivers/foo/new_id
因此,在这种情况下,您应该做好以下准备:
sudo modprobe alx
echo 1969 e0a1 | sudo tee /sys/bus/pci/drivers/alx/new_id >/dev/null
我alx
从修补评论中提到。如果它不是正确的驱动程序模块名称,请搜索替代名称。
答案3
我使用 4.4 内核的源代码制作了一个 DKMS 版本
说明如下:
sudo apt-get install git dkms build-essential linux-headers-generic
git clone https://github.com/jeremyb31/alx.git
sudo dkms add ./alx
sudo dkms build alx/2.0
sudo dkms install alx/2.0
重启
我已经在旧的 3.13.0-24 内核中测试过它,它与 4.2 内核一起工作,正确地表明这与内核中存在的模块完全相同