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

Dyl*_*tra 9 networking atheros ethernet drivers

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

03.00.0 Ethernet controller [0200]: Qualcomm Atheros Device [1969:e0a1] (rev 10)
Run Code Online (Sandbox Code Playgroud)

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

小智 12

我在 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
Run Code Online (Sandbox Code Playgroud)

该 git URL 适用于 15.04 Vivid Vervet。你可以用你的发布代号替换vivid。最后一步可能需要一点时间,所以请放松并沉浸在您的 E2400 很快就会工作的知识中。

完成后,我们将修改 alx 驱动程序以包含我们的 E2400(随意使用您选择的文本编辑器)

cd ubuntu-vivid/drivers/net/ethernet/atheros/alx/
sudo -H gedit reg.h
Run Code Online (Sandbox Code Playgroud)

找到定义 ALX_DEV_ID_E2200 的行(你可以只搜索 E2200),然后在它下面添加

#define ALX_DEV_ID_E2400                0xe0a1
Run Code Online (Sandbox Code Playgroud)

下一个,

sudo -H gedit main.c
Run Code Online (Sandbox Code Playgroud)

再次找到 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 },
Run Code Online (Sandbox Code Playgroud)

现在,剩下的就是制作和安装驱动程序

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
Run Code Online (Sandbox Code Playgroud)

注意:执行完最后一行后,您应该会看到加载的模块。...extra/alx.ko如果没有,您可能需要重命名alx.ko它确实找到的alx.ko.bak或类似的名称,然后再次运行最后三个命令。

您的 E2400 现在应该会出现在您的网络享受中!


Dav*_*ter 7

Ubuntu 14.04 更新(可信赖):

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

  1. 安装内核包:

    sudo apt install linux-generic-lts-xenial
    
    Run Code Online (Sandbox Code Playgroud)
  2. 重新启动机器。新安装的内核应该是 Grub 的新默认引导选项。

更多信息:Ubuntu Wiki – LTS 启用堆栈


原始帖子(仍然适用于 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
Run Code Online (Sandbox Code Playgroud)

所以在这种情况下,你应该擅长:

sudo modprobe alx
echo 1969 e0a1 | sudo tee /sys/bus/pci/drivers/alx/new_id >/dev/null
Run Code Online (Sandbox Code Playgroud)

alx从评论中提到的补丁中猜到了驱动程序名称。如果它不是正确的驱动程序模块名称,请搜索替代名称。

  • 除非您知道自己在做什么,否则不要将内核参数的访问权限更改为全局可写!相反,您应该通过以下方式以超级用户身份写入这些文件:a) 首先启动超级用户 shell (`sudo -i`),然后运行上述命令或 b) 使用 `sudo modprobe alx && echo 1969 e0a1 | sudo tee /sys/bus/pci/drivers/alx/new_id` 以超级用户身份打开文件。 (2认同)