¿Hay alguna forma de instalar los controladores Atheros e2400?

9

Tengo una nueva placa base: MSI Z170A GAMING M5. Esta placa base tiene un controlador Ethernet Atheros killer e2400. Cuando lo hago lspci -nn, obtengo:

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

Google no parecía saber la respuesta. Solo un problema sin resolver similar en el foro openSUSE.

Dylan Westra
fuente
Veo este parche en este momento comments.gmane.org/gmane.linux.network/376851
yuyichao
Veo el parche publicado por yuyichao ... comments.gmane.org/gmane.linux.network/376851 Pero, ¿cómo lo instalo?
user3081568
Bueno ... parece prometedor :) tener paciencia i geuss?
Dylan Westra
1
Como me gustaría probar el kernel de git debido a los gráficos de skylake, compilé mi propio kernel. Con el parche anterior, actualmente estoy usando el controlador Killer e2400 sin ningún problema
yuyichao
@yuyichao, ¿cómo uso este parche?
PitaJ

Respuestas:

12

¡Estoy publicando esto desde mi versión Skylake MSI Z170A GAMING M5 usando mi Killer E2400 en Ubuntu Gnome! A continuación se detallan los pasos (más o menos) simples que utilicé para que funcionara.

Primero seguiremos algunas instrucciones de 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

Esa URL de git es para 15.04 Vivid Vervet. Reemplazaría vívido con su nombre en clave de lanzamiento. El último paso puede tomar un poco de tiempo, así que relájese y disfrute de que su E2400 pronto estará funcionando.

Una vez que haya terminado, modificaremos el controlador alx para incluir nuestro E2400 (no dude en usar el editor de texto de su elección)

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

Busque la línea que define ALX_DEV_ID_E2200 (puede buscar E2200) y agregue esto debajo

#define ALX_DEV_ID_E2400                0xe0a1

Próximo,

sudo -H gedit main.c

Nuevamente, encuentre E2200, y después de que las líneas { PCI_VDEVICE(ATTANSIC, ALX_DEV_ID_E2200), .driver_data = ALX_DEV_QUIRK_MSI_INTX_DISABLE_BUG },agreguen

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

Ahora, todo lo que queda es hacer e instalar los controladores

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

Nota: Después de ejecutar la última línea, debería ver la carga del módulo. ...extra/alx.koSi no lo hace, es posible que deba cambiar el nombre del alx.koque encontró alx.ko.bako algo por el estilo, y ejecutar los últimos tres comandos nuevamente.

¡Su E2400 debería aparecer ahora para su disfrute en red!

BattleDingo
fuente
Todavía estamos esperando 1 día después, así que esta no es una respuesta completa (todavía), así que voté para que se elimine ...
Fabby
Finalmente tuve la oportunidad de probar esto. Actualicé mi respuesta para incluir instrucciones paso a paso. Funciona como un encanto :)
BattleDingo
Eres un salvavidas.
Austin reza el
Para su información, funcionó de
fábrica
¿Cómo podría hacer una instalación de sudo apt-get cuando su tarjeta de red no funciona?
bioShark
7

Actualización para Ubuntu 14.04 (Trusty):

De acuerdo con el comentario de chili555 sobre una pregunta similar, ese dispositivo es compatible con el núcleo enviado con Ubuntu 16.04. Afortunadamente, uno puede actualizar al mismo núcleo en Ubuntu 14.04 a través de actualizaciones LTS / HWE:

  1. Instale los paquetes del kernel:

    sudo apt install linux-generic-lts-xenial
    
  2. Reinicia la máquina. El kernel recién instalado debería ser la nueva opción de arranque predeterminada para Grub.

Más información: Ubuntu Wiki - LTS Enablement Stack


Publicación original (todavía aplicable a otras versiones de Ubuntu anteriores a 16.04)

A falta de aplicar el parche apropiado y volver a compilar el módulo del núcleo afectado, puede registrar nuevas ID de dispositivos PCI ( documentación ) con los controladores de dispositivos existentes:

Escribir una ID de dispositivo en este archivo intentará agregar dinámicamente una nueva ID de dispositivo a un controlador de dispositivo PCI. Esto puede permitir que el controlador admita más hardware del que se incluyó en la tabla de soporte de ID de dispositivo estático del controlador en el momento de la compilación. El formato de la ID del dispositivo es: VVVV DDDD SVVV SDDD CCCC MMMM PPPP. Es decir, ID del proveedor, ID del dispositivo, ID del proveedor del subsistema, ID del dispositivo del subsistema, Clase, Máscara de clase y Datos del controlador privado. Los campos Id. De proveedor e Id. De dispositivo son obligatorios, el resto son opcionales. Al agregar con éxito una ID, el controlador buscará el dispositivo e intentará enlazarlo. Por ejemplo:

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

Entonces, en este caso, deberías ser bueno con:

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

Adiviné el nombre alxdel controlador del parche mencionado en los comentarios. Si no es el nombre correcto del módulo del controlador, busque una alternativa.

David Foerster
fuente
Como eres (casi) un usuario de reputación 1: si esto responde a tu pregunta, no olvides hacer clic en el gris ☑ debajo del "0" a la izquierda de este texto para aceptarlo , lo que significa "sí, esta respuesta es válido"!
David Foerster
¡Buena solución que no implica construir ningún controlador! Ni siquiera necesité un reinicio.
BenB
Además, tuve que sudo chmod 777 /sys/bus/pci/drivers/alx/new_idprimero. Luego tuve que usar sudopara todos los otros comandos también.
BenB
2
¡No cambie los permisos de acceso de los parámetros del kernel a escritura mundial a menos que sepa lo que está haciendo! En su lugar, debe escribir en estos archivos como superusuario ya sea a) primero iniciando un shell de superusuario ( sudo -i) y luego ejecutando los comandos anteriores ob) use sudo modprobe alx && echo 1969 e0a1 | sudo tee /sys/bus/pci/drivers/alx/new_idpara abrir el archivo como superusuario.
David Foerster
2

Hice una versión DKMS de esto usando el código fuente del kernel 4.4

Las instrucciones son:

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

Reiniciar

He probado esto en el antiguo kernel 3.13.0-24 y funciona junto con 4.2, que indica correctamente que esto es exactamente lo mismo que el módulo presente en el kernel

Jeremy31
fuente