有没有办法安装Atheros e2400驱动程序?

我有一个新主板:MSI Z170A GAMING M5。 这款主板配有Atheros杀手级e2400以太网控制器。 当我做lspci -nn ,我得到:

 03.00.0 Ethernet controller [0200]: Qualcomm Atheros Device [1969:e0a1] (rev 10) 

谷歌似乎不知道答案。 在openSUSE论坛上只有一个类似的未解决的问题。

我在Ubuntu Gnome上使用我的Killer E2400从我的Skylake MSI Z170A GAMING M5版本发布这个! 下面是我用来使它工作的(或多或少)简单步骤。

首先,我们将遵循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。 您可以使用发布代号替换生动。 最后一步可能需要一段时间,因此请放松并了解您的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现在应该出现在您的网络享受!

Ubuntu 14.04更新(Trusty):

根据chili555对类似问题的评论 ,Ubuntu 16.04附带的内核支持该设备。 幸运的是,可以通过LTS / HWE升级升级到Ubuntu 14.04中的相同内核:

  1. 安装内核包:

     sudo apt install linux-generic-lts-xenial 
  2. 重新启动机器。 新安装的内核应该是Grub的新默认启动选项。

更多信息: Ubuntu Wiki – LTS Enablement Stack


原帖(仍适用于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 。 如果它不是正确的驱动程序模块名称,请搜索替代方案。

我使用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一起工作,它正确地表明这与内核中存在的模块完全相同