Czy jest jakiś sposób na zainstalowanie sterowników Atheros e2400?

9

Mam nową płytę główną: MSI Z170A GAMING M5. Ta płyta główna jest wyposażona w kontroler Ethernet Atheros Killer e2400. Kiedy to robię lspci -nn, otrzymuję:

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

Wydaje się, że Google nie zna odpowiedzi. Tylko podobny nierozwiązany problem na forum openSUSE.

Dylan Westra
źródło
Właśnie widzę tę łatkę comments.gmane.org/gmane.linux.network/376851
yuyichao
Widzę łatkę opublikowaną przez yuyichao ... comments.gmane.org/gmane.linux.network/376851 Ale jak ją zainstalować?
user3081568,
Cóż ... wydaje się obiecujące :) mając cierpliwość i geuss?
Dylan Westra,
1
Ponieważ chciałbym wypróbować jądro git z powodu grafiki Skylake, skompilowałem własne jądro. Z powyższą łatką używam obecnie kontrolera Killer e2400 bez problemu
yuyichao,
@ yuyichao jak korzystać z tej łatki?
PitaJ

Odpowiedzi:

12

Publikuję to z mojej kompilacji Skylake MSI Z170A GAMING M5 za pomocą mojego Killera E2400 na Ubuntu Gnome! Poniżej znajdują się (mniej lub bardziej) proste kroki, dzięki którym działam.

Najpierw postępujemy zgodnie z instrukcjami z 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

Ten adres URL git dotyczy wersji 15.04 Vivid Vervet. Zastąpiłbyś vivid swoją nazwą kodową wydania. Ten ostatni krok może trochę potrwać, więc zrelaksuj się i ciesz się wiedzą, że Twój E2400 wkrótce będzie działać.

Po zakończeniu zmodyfikujemy sterownik ALX, aby zawierał nasz E2400 (możesz użyć dowolnego edytora tekstu)

cd ubuntu-vivid/drivers/net/ethernet/atheros/alx/
sudo -H gedit reg.h

Znajdź linię definiującą ALX_DEV_ID_E2200 (możesz po prostu wyszukać E2200) i dodaj ją poniżej

#define ALX_DEV_ID_E2400                0xe0a1

Kolejny,

sudo -H gedit main.c

Ponownie znajdź E2200, a po { PCI_VDEVICE(ATTANSIC, ALX_DEV_ID_E2200), .driver_data = ALX_DEV_QUIRK_MSI_INTX_DISABLE_BUG },dodaniu wierszy

{ PCI_VDEVICE(ATTANSIC, ALX_DEV_ID_E2400),
  .driver_data = ALX_DEV_QUIRK_MSI_INTX_DISABLE_BUG },

Teraz pozostało tylko stworzyć i zainstalować sterowniki

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

Uwaga: po wykonaniu ostatniego wiersza powinieneś zobaczyć ładowanie modułu. ...extra/alx.koJeśli tego nie zrobisz, być może będziesz musiał zmienić nazwę tego alx.ko, co znalazł alx.ko.baklub coś w tym rodzaju, i ponownie uruchom trzy ostatnie polecenia.

Twój E2400 powinien teraz pojawić się dla Twojej przyjemności z pracy w sieci!

BattleDingo
źródło
Nadal czekamy 1 dzień później, więc nie jest to jeszcze kompletna odpowiedź, więc głosowałem za jej usunięcie ...
Fabby
W końcu miałem okazję to wypróbować. Zaktualizowałem moją odpowiedź, aby zawierała instrukcje krok po kroku. Działa jak urok :)
BattleDingo,
Jesteś ratownikiem.
Austin Pray
FYI - działało od
razu
Jak możesz wykonać sudo apt-get, gdy karta sieciowa nie działa?
bioShark,
7

Aktualizacja dla Ubuntu 14.04 (Trusty):

Według komentarza chili555 na podobne pytanie, że urządzenie jest obsługiwane przez jądro dostarczone z Ubuntu 16.04. Na szczęście można uaktualnić do tego samego jądra w Ubuntu 14.04 za pomocą aktualizacji LTS / HWE:

  1. Zainstaluj pakiety jądra:

    sudo apt install linux-generic-lts-xenial
    
  2. Uruchom ponownie maszynę. Nowo zainstalowane jądro powinno być nową domyślną opcją uruchamiania Grub.

Więcej informacji: Wiki Ubuntu - stos włączeń LTS


Oryginalny post (nadal dotyczy innych wersji Ubuntu przed 16.04)

Oprócz zastosowania odpowiedniej poprawki i ponownej kompilacji modułu jądra, którego dotyczy problem, może być możliwe zarejestrowanie nowych identyfikatorów urządzeń PCI ( dokumentacji ) przy użyciu istniejących sterowników urządzeń:

Zapisanie identyfikatora urządzenia w tym pliku spowoduje próbę dynamicznego dodania nowego identyfikatora urządzenia do sterownika urządzenia PCI. Może to pozwolić sterownikowi na obsługę większej ilości sprzętu niż było to uwzględnione w tabeli obsługi identyfikatora statycznego urządzenia sterownika w czasie kompilacji. Format identyfikatora urządzenia wynosi: VVVV DDDD SVVV SDDD CCCC MMMM PPPP. To jest identyfikator dostawcy, identyfikator urządzenia, identyfikator dostawcy podsystemu, identyfikator urządzenia podsystemu, klasa, maska ​​klasy i dane prywatnego sterownika. Pola Identyfikator dostawcy i Identyfikator urządzenia są wymagane, pozostałe są opcjonalne. Po pomyślnym dodaniu identyfikatora sterownik sprawdzi urządzenie i spróbuje się z nim połączyć. Na przykład:

# echo "8086 10f5" > /sys/bus/pci/drivers/foo/new_id

W takim przypadku powinieneś być dobry w:

sudo modprobe alx
echo 1969 e0a1 | sudo tee /sys/bus/pci/drivers/alx/new_id >/dev/null

Zgadłem nazwę sterownika alxz łatki wspomnianej w komentarzach. Jeśli nie jest to właściwa nazwa modułu sterownika, poszukaj alternatywy.

David Foerster
źródło
Ponieważ jesteś (prawie) użytkownikiem reputacji 1: jeśli to odpowiada na twoje pytanie, nie zapomnij kliknąć szarego ☑ pod „0” po lewej stronie tego tekstu, aby je zaakceptować , co oznacza „tak, ta odpowiedź to ważny"!
David Foerster,
Ładne rozwiązanie, które nie wymaga budowania sterowników! Nie potrzebowałem nawet resetowania.
BenB
Musiałem też sudo chmod 777 /sys/bus/pci/drivers/alx/new_idnajpierw. Następnie musiałem użyć sudowszystkich innych poleceń.
BenB
2
Nie zmieniaj uprawnień dostępu parametrów jądra na światowe, chyba że wiesz, co robisz! Zamiast tego powinieneś napisać do tych plików jako superużytkownik albo przez: a) najpierw uruchomienie superużytkownika powłoki ( sudo -i), a następnie uruchomienie powyższych poleceń lub b) użyj sudo modprobe alx && echo 1969 e0a1 | sudo tee /sys/bus/pci/drivers/alx/new_iddo otwarcia pliku jako superużytkownik.
David Foerster,
2

Zrobiłem wersję DKMS tego przy użyciu kodu źródłowego z jądra 4.4

Instrukcje to:

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

Restart

Przetestowałem to w starym jądrze 3.13.0-24 i działa ono wraz z 4.2, co poprawnie stwierdza, że ​​jest to dokładnie to samo, co moduł obecny w jądrze

Jeremy31
źródło