Есть ли способ установить драйверы Atheros e2400?

9

У меня новая материнская плата: MSI Z170A GAMING M5. Эта материнская плата оснащена Ethernet-контроллером Atheros killer e2400. Когда я делаю lspci -nn, я получаю:

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

Похоже, Google не знал ответа. Только похожая нерешенная проблема на форуме openSUSE.

Дилан Вестра
источник
Я вижу этот патч только сейчас comments.gmane.org/gmane.linux.network/376851
yuyichao
Я вижу патч, опубликованный yuyichao ... comments.gmane.org/gmane.linux.network/376851 Но как мне его установить?
user3081568 9.09.15
Ну ... это кажется многообещающим :) имея терпение я geuss?
Дилан Вестра
1
Поскольку я хотел бы попробовать ядро ​​git из-за графики skylake, я собрал свое собственное ядро. С патчем выше я в настоящее время использую контроллер Killer e2400 без проблем
yuyichao
@yuyichao как мне использовать этот патч?
PitaJ

Ответы:

12

Я публикую это из моей сборки Skylake MSI Z170A GAMING M5, используя мой Killer E2400 на Ubuntu Gnome! Ниже приведены (более или менее) простые шаги, которые я использовал, чтобы заставить его работать.

Сначала мы будем следовать некоторым инструкциям из 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

Этот мерзавец 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 должен появиться для вашего удовольствия от сети!

BattleDingo
источник
Мы все еще ждем 1 день спустя, так что это не полный ответ (пока), поэтому я проголосовал за его удаление ...
Fabby
Наконец-то появилась возможность попробовать это. Обновил мой ответ, чтобы включить пошаговые инструкции. Работает как шарм :)
BattleDingo
Вы спасатель жизни.
Остин Прай
К вашему сведению - работал из коробки на Ubuntu Gnome 15.10
BattleDingo
Как вы можете выполнить sudo apt-get, если ваша сетевая карта не работает?
BioShark
7

Обновление для Ubuntu 14.04 (Trusty):

Согласно комментарию chili555 по аналогичному вопросу, это устройство поддерживается ядром, поставляемым с Ubuntu 16.04. К счастью, можно обновить до того же ядра в Ubuntu 14.04 через обновления LTS / HWE:

  1. Установите пакеты с ядром:

    sudo apt install linux-generic-lts-xenial
    
  2. Перезагрузите машину. Вновь установленное ядро ​​должно быть новой опцией загрузки по умолчанию для Grub.

Дополнительная информация: Ubuntu Wiki - стек активации LTS


Оригинальное сообщение (все еще применимо к другим версиям Ubuntu до 16.04)

Если не применять соответствующий патч и не перекомпилировать уязвимый модуль ядра, вы можете зарегистрировать новые идентификаторы устройств PCI ( документацию ) с существующими драйверами устройств:

Запись идентификатора устройства в этот файл будет пытаться динамически добавить новый идентификатор устройства в драйвер устройства PCI. Это может позволить драйверу поддерживать больше оборудования, чем было включено в таблицу поддержки статических идентификаторов устройства драйвера во время компиляции. Формат для идентификатора устройства является: VVVV DDDD SVVV SDDD CCCC MMMM PPPP. Это идентификатор поставщика, идентификатор устройства, идентификатор поставщика подсистемы, идентификатор устройства подсистемы, класс, маска класса и данные частного драйвера. Поля Vendor ID и Device 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из патча, упомянутого в комментариях. Если это не правильное имя модуля драйвера, найдите альтернативу.

Дэвид Фёрстер
источник
Поскольку вы (почти) пользователь репутации 1: если это ответ на ваш вопрос, не забудьте нажать на серый ☑ под «0» в левой части этого текста, чтобы принять его , что означает «да, этот ответ действительный "!
Дэвид Фёрстер
Хорошее решение, которое не требует сборки драйверов! Даже не нужно сбрасывать.
BenB
Кроме того, я должен был sudo chmod 777 /sys/bus/pci/drivers/alx/new_idсначала. Тогда я должен был использовать sudoдля всех других команд тоже.
BenB
2
Не изменяйте права доступа к параметрам ядра на доступные для записи, если вы не знаете, что делаете! Вместо этого вы должны записать в эти файлы как суперпользователь, либо: а) сначала запустив оболочку суперпользователя ( sudo -i) и затем выполнив вышеуказанные команды, либо б) используйте, sudo modprobe alx && echo 1969 e0a1 | sudo tee /sys/bus/pci/drivers/alx/new_idчтобы открыть файл как суперпользователь.
Дэвид Фёрстер
2

Я сделал DKMS-версию этого с использованием исходного кода из ядра 4.4

Инструкции:

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, который правильно утверждает, что это точно так же, как модуль, присутствующий в ядре

Jeremy31
источник