Existe alguma maneira de instalar os drivers Atheros e2400?

9

Eu tenho uma nova placa-mãe: MSI Z170A GAMING M5. Esta placa-mãe possui um controlador Ethernet Atheros killer e2400. Quando eu faço lspci -nn, recebo:

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

O Google parecia não saber a resposta. Apenas um problema não resolvido semelhante no fórum do openSUSE.

Dylan Westra
fonte
Eu vejo este patch só agora comments.gmane.org/gmane.linux.network/376851
yuyichao
Vejo o patch postado por yuyichao ... comments.gmane.org/gmane.linux.network/376851 Mas como faço para instalá-lo?
user3081568
Bem ... parece promissor :) ter paciência i geuss?
Dylan Westra
11
Como eu gostaria de experimentar o kernel do git por causa dos gráficos do skylake, compilei meu próprio kernel. Com o patch acima, atualmente estou usando o controlador Killer e2400 sem problemas
yuyichao
@yuyichao como faço para usar esse patch?
PitaJ

Respostas:

12

Estou postando isso da minha versão do Skylake MSI Z170A GAMING M5 usando meu Killer E2400 no Ubuntu Gnome! Abaixo estão os (mais ou menos) passos simples que usei para fazê-lo funcionar.

Primeiro, seguiremos algumas instruções do 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

Esse URL do git é para 15.04 Vivid Vervet. Você substituiria o vívido pelo seu codinome de lançamento. Esse último passo pode demorar um pouco, então relaxe e aproveite o conhecimento de que o seu E2400 estará funcionando em breve.

Quando terminar, modificaremos o driver alx para incluir nosso E2400 (fique à vontade para usar o editor de texto que você escolher)

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

Encontre a linha que define ALX_DEV_ID_E2200 (você pode simplesmente procurar o E2200) e adicione-a abaixo

#define ALX_DEV_ID_E2400                0xe0a1

Próximo,

sudo -H gedit main.c

Mais uma vez, encontre E2200 e, depois das linhas, { PCI_VDEVICE(ATTANSIC, ALX_DEV_ID_E2200), .driver_data = ALX_DEV_QUIRK_MSI_INTX_DISABLE_BUG },adicione

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

Agora, tudo o que resta é criar e instalar os drivers

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: Após executar a última linha, você verá o módulo carregar de ...extra/alx.koSe não o fizer, poderá ser necessário renomear o alx.koque encontrou alx.ko.bakou algo do tipo e executar os três últimos comandos novamente.

Seu E2400 deve aparecer agora para sua diversão em rede!

BattleDingo
fonte
Ainda estamos esperando um dia depois, então essa não é uma resposta completa (ainda), então votei para que ela fosse excluída ... #
Fabby
Finalmente tive a chance de tentar isso. Atualizei minha resposta para incluir instruções passo a passo. Funciona como um encanto :)
BattleDingo 16/09/2015
Você é um salva-vidas.
Austin Pray
FYI - trabalhou fora da caixa no Ubuntu Gnome 15.10
BattleDingo 23/11
Como você pode instalar o sudo apt-get quando sua placa de rede não está funcionando?
bioShark
7

Atualização para o Ubuntu 14.04 (Trusty):

De acordo com o comentário do chili555 em uma pergunta semelhante, esse dispositivo é suportado pelo kernel fornecido com o Ubuntu 16.04. Felizmente, pode-se atualizar para o mesmo kernel no Ubuntu 14.04 através de atualizações do LTS / HWE:

  1. Instale os pacotes do kernel:

    sudo apt install linux-generic-lts-xenial
    
  2. Reinicie a máquina. O kernel recém-instalado deve ser a nova opção de inicialização padrão para o Grub.

Mais informações: Ubuntu Wiki - LTS Enablement Stack


Post original (ainda aplicável a outras versões do Ubuntu anteriores a 16.04)

Antes de aplicar o patch apropriado e recompilar o módulo do kernel afetado, você poderá registrar novas IDs de dispositivo PCI ( documentação ) com drivers de dispositivo existentes:

A gravação de um ID de dispositivo neste arquivo tentará adicionar dinamicamente um novo ID de dispositivo a um driver de dispositivo PCI. Isso pode permitir que o driver ofereça suporte a mais hardware do que o incluído na tabela de suporte de ID de dispositivo estático do driver em tempo de compilação. O formato para o ID do dispositivo é: VVVV DDDD SVVV SDDD CCCC MMMM PPPP. Isso é ID do fornecedor, ID do dispositivo, ID do fornecedor do subsistema, ID do dispositivo do subsistema, classe, máscara de classe e dados do driver privado. Os campos ID do fornecedor e ID do dispositivo são obrigatórios, o restante é opcional. Após adicionar com êxito um ID, o driver pesquisará o dispositivo e tentará vinculá-lo. Por exemplo:

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

Portanto, nesse caso, você deve ser bom com:

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

Eu adivinhei o nome alxdo driver do patch mencionado nos comentários. Se não for o nome correto do módulo do driver, procure uma alternativa.

David Foerster
fonte
Como você é (quase) um usuário de reputação 1: se isso responder à sua pergunta, não se esqueça de clicar no cinza ☑ sob o "0" à esquerda deste texto para aceitá-lo , o que significa "sim, esta resposta é válido"!
David Foerster
Solução agradável que não envolve a construção de drivers! Nem precisava de um reset.
BenB 05/02
Além disso, eu tive que sudo chmod 777 /sys/bus/pci/drivers/alx/new_idprimeiro. Então eu tive que usar sudopara todos os outros comandos também.
BenB 05/02
2
Não altere as permissões de acesso dos parâmetros do kernel para graváveis ​​em todo o mundo, a menos que você saiba o que está fazendo! Em vez disso, você deve gravar nesses arquivos como superusuário, a) primeiro iniciando um shell de superusuário ( sudo -i) e depois executando os comandos acima ou b) use sudo modprobe alx && echo 1969 e0a1 | sudo tee /sys/bus/pci/drivers/alx/new_idpara abrir o arquivo como superusuário.
David Foerster 06/02
2

Eu fiz uma versão DKMS disso usando o código-fonte do kernel 4.4

As instruções são:

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

Eu testei isso no antigo kernel 3.13.0-24 e funciona junto com o 4.2, que afirma corretamente que isso é exatamente o mesmo que o módulo presente no kernel

Jeremy31
fonte