A placa Ethernet Realtek desconecta aleatoriamente

3

Meu laptop tem uma placa Ethernet Realtek RTL8168, que funciona muito bem. Exceto em alguns momentos, onde a conexão é interrompida e eu tenho que descompactar e reconectar o cabo para reiniciar a conexão.

Eu tentei o módulo r8169 pré-instalado, mas agora estou usando o módulo r8168 construído com a fonte do site da Realtek. O problema ocorre com os dois módulos de driver.

$ lspci | grep Ethernet
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c)

$ dmesg
#stops working, no reports
#unplugging
[ 9324.277753] r8168: eth0: link down
[ 9328.636380] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
#replugging
[ 9334.316610] r8168: eth0: link up
[ 9334.316744] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
#Working again

PS: Com grep NetworkManager /var/log/syslog , eu encontrei o seguinte, na época em que ocorreu uma interrupção de conexão:

#EDIT:These messages are printed when I plug out the cable. Before, there is nothing
Jan 28 23:40:31 dracarys NetworkManager[912]: <info> (eth0): carrier now OFF (device state 100, deferring action for 4 seconds)
Jan 28 23:40:35 dracarys NetworkManager[912]: <info> (eth0): device state change: activated -> unavailable (reason 'carrier-changed') [100 20 40]
Jan 28 23:40:35 dracarys NetworkManager[912]: <info> (eth0): deactivating device (reason 'carrier-changed') [40]
Jan 28 23:40:35 dracarys NetworkManager[912]: <info> (eth0): canceled DHCP transaction, DHCP client pid 6975
Jan 28 23:40:35 dracarys NetworkManager[912]: <warn> DNS: plugin dnsmasq update failed
Jan 28 23:40:35 dracarys NetworkManager[912]: <info> Removing DNS information from /sbin/resolvconf
Jan 28 23:40:35 dracarys NetworkManager[912]: <info> NetworkManager state is now DISCONNECTED
#replug
Jan 28 23:40:40 dracarys NetworkManager[912]: <info> (eth0): carrier now ON (device state 20)
Jan 28 23:40:40 dracarys NetworkManager[912]: <info> (eth0): device state change: unavailable -> disconnected (reason 'carrier-changed') [20 30 40]
Jan 28 23:40:40 dracarys NetworkManager[912]: <info> Auto-activating connection 'Wired connection 1'.
Jan 28 23:40:40 dracarys NetworkManager[912]: <info> Activation (eth0) starting connection 'Wired connection 1'
Jan 28 23:40:40 dracarys NetworkManager[912]: <info> (eth0): device state change: disconnected -> prepare (reason 'none') [30 40 0]
Jan 28 23:40:40 dracarys NetworkManager[912]: <info> NetworkManager state is now CONNECTING

E então funcionou novamente

Alguma idéia de como corrigir isso? Deixe-me saber se você precisar de informações adicionais.

EDITAR : $ modinfo r8168

filename:       /lib/modules/3.13.0-37-generic/kernel/drivers/net/ethernet/realtek/r8168.ko
version:        8.038.00-NAPI
license:        GPL
description:    RealTek RTL-8168 Gigabit Ethernet driver
author:         Realtek and the Linux r8168 crew <[email protected]>
srcversion:     7600C3366E422907A1D79F1
alias:          pci:v00001186d00004300sv00001186sd00004B10bc*sc*i*
alias:          pci:v000010ECd00008168sv*sd*bc*sc*i*
depends:        
vermagic:       3.13.0-37-generic SMP mod_unload modversions 
parm:           eee_enable:int
parm:           speed:force phy operation. Deprecated by ethtool (8). (ushort)
parm:           duplex:force phy operation. Deprecated by ethtool (8). (int)
parm:           autoneg:force phy operation. Deprecated by ethtool (8). (int)
parm:           aspm:Enable ASPM. (int)
parm:           s5wol:Enable Shutdown Wake On Lan. (int)
parm:           rx_copybreak:Copy breakpoint for copy-only-tiny-frames (int)
parm:           timer_count:Timer Interrupt Interval. (int)
parm:           debug:Debug verbosity level (0=none, ..., 16=all) (int)
    
por s3lph 28.01.2015 / 23:58

3 respostas

0

Alguns dias atrás eu encontrei uma nova versão do driver (8.039.900) no site da Realtek. Eu fiz o download, compilei e instalei, e nunca senti quedas de conexão desde então.

Atualize o r8168:

A fonte de driver mais atual pode ser baixada aqui .

Extraia o arquivo baixado e execute

sudo make

na pasta de extração. Após a compilação, o módulo r8168 atualmente instalado será automaticamente substituído pela nova versão (que, na minha opinião, só deve acontecer quando rodar make install )

Para carregar a nova versão, execute

sudo modprobe -r r8168 && sudo modprobe r8168

PS: Não use o script de instalação que vem com este driver. Ele irá desinstalar o módulo antigo (não importa se o r8168 ou r8169) antes mesmo de tentar compilar o novo. Se a compilação falhar, você ficará sem internet, se não tiver WiFi ou outra placa Ethernet.

    
por s3lph 08.02.2015 / 14:41
1

N.B : esta resposta não é definitiva. Eu criei algumas soluções possíveis com base em algumas pesquisas on-line, bem como sugestões pessoais de experiências.

Substituir módulo do kernel

A partir da pesquisa online, parece que freqüentemente a melhor solução é substituir o módulo r8168 que vem com a instalação do Ubuntu, com uma versão mais nova e atualizada. Por exemplo, este post crunchbang .

Esta postagem nos Fóruns do Ubuntu de 2012 documenta um script para uma versão mais nova e atualizada do módulo r8168. Você pode fazer sudo apt-get install linux-headers-$(uname -r) ou sudo apt-get install --reinstall linux-headers-$(uname -r) e, em seguida, siga as instruções da matera.ttp. Praseonym, que também postou lá, sugere instalar o driver com dkms , que deve reconstruir módulos para cada atualização do kernel. Agora, você deve ter o dkms já instalado e verificá-lo com which dkms . Então você pode usar as instruções do Praseonym ou do matera.ttp. A ideia é a mesma.

Ajustar as configurações do módulo

Para muitos problemas de rede, ajustar as configurações do módulo pode ajudar a resolver os problemas, mas, francamente, duvido que seja um problema, já que você usou o r8169 com o mesmo efeito. No entanto, experimente.

No diretório /etc/modprobe.d/ , crie o arquivo r8168.conf . Nesse arquivo, escreva:

options eee_enable=1

Salve e reinicie.

Agora, você pode fazer a mesma coisa com outras opções. Por exemplo, meu primeiro palpite foi adicionar options timer_count=3600 ao arquivo r8168.conf. Porquê 3600? Supondo que o parâmetro lide com o tempo, provavelmente é o segundo.

Eu encontrei um caso em que ele realmente não funcionou, e o problema estava relacionado a bios. Consulte esta página: link

Se tudo mais falhar

Eu mencionei em outros posts também, que às vezes o hardware é o problema e não importa o quanto você faça ajustes - não vai ajudar. Na experiência pessoal, eu lidei com dois chipsets sem fio rtl8192, um dos quais estava dando bug de som estranho, mas o outro funciona quase na perfeição.

Sugiro que você explore possíveis substitutos para sua placa ethernet. Minha sugestão seria hub usb portátil com slot Ethernet, bem parecido com esses

    
por Sergiy Kolodyazhnyy 03.02.2015 / 00:00
-1

Eu acho que você precisa instalar um driver oficial mais estável para a placa ethernet Realtek (RTL8111 / RTL8168).

1. Obtenha privilégios de root

Obtenha privilégios de root, enquanto digita “su” ou (quando você usa o Ubuntu) “sudo -s” em um terminal.

2. Obtenha os requisitos

Para criar e instalar o driver, precisamos dos cabeçalhos do kernel e das ferramentas de compilação, como o gcc. Para obtê-los, basta digitar facilmente um terminal:

apt-get install build-essential

3. Obtenha o driver

Agora, vá para a página de download oficial do Realtek para o driver Linux / UNIX para a placa ethernet RTL8111 / RTL8168 e baixe a versão mais recente do driver.

Link: Página de download da Realtek

4. Descompacte o arquivo

O driver é compactado em um arquivo. Portanto, descompacte-o com o seguinte comando:

tar xfvj r8168-8.025.00.tar.bz2

NOTA: Por favor, não se esqueça de substituir o “r8168-8.025.00.tar.bz2 ″ pela versão do driver que você baixou!

5. Motorista antigo na lista negra

Temos que colocar o driver antigo na lista negra (r8169) para evitar que o sistema o carregue. Para fazer isso, defina facilmente uma nova entrada em “/etc/modprobe.d/blacklist.conf” que é chamado:

blacklist r8169

ou simplesmente entre no terminal novamente

echo “blacklist r8169″ >> /etc/modprobe.d/blacklist.conf

para fazer isso em apenas um comando.

6. Construa e instale o novo driver

Agora, todos os requisitos para instalar o novo driver estão concluídos. Vamos agora mudar no diretório do driver, que descompactamos em algumas etapas antes:

cd r8168-8.025.00

NOTA: Mais uma vez, por favor, não se esqueça de mudar “r8168-8.025.00 ″ para a versão que você baixou.

A única coisa que temos que fazer agora é construir o driver e instalá-lo. Para construí-lo, basta digitar:

make clean modules

após alguns segundos (dependendo da sua CPU), o driver é criado e você pode instalá-lo com:

make install

7. Bem-vindo r8168

Um dos nossos últimos passos é informar ao sistema sobre o driver r8168. Com o comando

depmod -a

você reconstrói as dependências do módulo do kernel e com um

insmod ./src/r8168.ko

você insere o novo módulo do kernel (o driver) no kernel.

8. Tornar disponível para inicialização

Para sempre usar o novo módulo, você precisa criar um novo arquivo de inicialização initrd. Apenas faça

mkinitramfs -o /boot/initrd.img-'uname -r' 'uname -r'

em um terminal. Aqui nós criamos o arquivo initrd com a ajuda do comando “uname -r”, que nos permite obter a versão do kernel em execução.

Pelo menos, você tem que adicionar no arquivo “/ etc / modules” uma nova entrada, chamada “r8168 ″, para obter o driver carregado automaticamente após a inicialização. Como alternativa, você pode fazer o último passo novamente com apenas um comando:

echo “r8168″ >> /etc/modules

É isso! Após a reinicialização, você deve ter o melhor desempenho possível com o RTL8111 / RTL8168 e, além disso, nenhum outro problema de rede deve estar mais disponível (sem interrupção).

Após a reinicialização, você pode verificar se o driver correto está carregado com este comando:

lspci -v

com este comando você deve encontrar sua placa de rede RTL8111 / RTL8168 em uma lista e o comando adicional "Kernel driver in use: r8168".

    
por mertyildiran 29.01.2015 / 03:24