Realtek Ethernet-карта отключается случайным образом

Мой ноутбук имеет Ethernet-карту Realtek RTL8168, которая работает довольно хорошо. За исключением некоторых случаев, когда соединение просто обрывается, и мне нужно отсоединить и снова подключить кабель, чтобы сбросить соединение.

Я попробовал предустановленный модуль r8169, но теперь я использую модуль r8168, созданный на основе исходного кода с сайта Realtek. Проблема возникает с обоими модулями драйвера.

$ 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: с grep NetworkManager /var/log/syslogЯ должен был сделать следующее, примерно в то время, когда произошло такое прерывание соединения:

#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

И тогда это снова сработало

Любые идеи о том, как это исправить? Дайте мне знать, если вам нужна дополнительная информация.

РЕДАКТИРОВАТЬ: $ 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 <netdev@vger.kernel.org>
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)

3 ответа

Решение

Несколько дней назад я нашел новую версию драйвера (8.039.900) на сайте Realtek. Я скачал, скомпилировал и установил его, и с тех пор ни разу не потерял соединение

Обновление r8168:

Самый свежий источник драйверов можно скачать здесь.

Распакуйте скачанный архив и запустите

sudo make

в папке извлечения. После компиляции текущий установленный модуль r8168 будет автоматически заменен новой версией (что, по моему мнению, должно происходить только при запуске make install)

Чтобы загрузить новую версию, запустите

sudo modprobe -r r8168 && sudo modprobe r8168

PS: не используйте установочный скрипт, который поставляется с этим драйвером. Он удалит старый модуль (независимо от того, r8168 или r8169), прежде чем даже попытаться скомпилировать новый. Если компиляция не удалась, вы остаетесь без интернета, если у вас нет WiFi или другой карты Ethernet.

NB. Этот ответ ни в коем случае не является окончательным. Я придумал пару возможных решений, основанных на некоторых исследованиях онлайн, а также на основе личных предложений из опыта.

Заменить модуль ядра

Из онлайн-исследований выясняется, что зачастую лучшим решением является замена модуля r8168, поставляемого с установкой Ubuntu, на новую обновленную версию. Например, этот пост.

В этом посте на форумах Ubuntu 2012 года описан скрипт для более новой и обновленной версии модуля r8168. Ты можешь сделать sudo apt-get install linux-headers-$(uname -r) или же sudo apt-get install --reinstall linux-headers-$(uname -r), а затем следуйте инструкциям matera.ttp. Praseonym, который также разместил там, предлагает установить драйвер с dkms, который должен перестраивать модули для каждого обновления ядра. Теперь у вас должен быть уже установлен dkms, и вы можете проверить его с помощью which dkms, Таким образом, вы можете использовать инструкции Praseonym или matera.ttp. Идея та же.

Настройки модуля твика

Для многих проблем с сетью настройка конфигураций модулей может помочь решить проблемы, но, честно говоря, я сомневаюсь, что это проблема, так как вы использовали R8169 с тем же эффектом. Тем не менее, попробуйте.

в /etc/modprobe.d/ каталог, создать r8168.conf файл. В этом файле напишите:

options eee_enable=1

Сохраните и перезагрузите компьютер.

Теперь вы можете сделать то же самое с другими вариантами. Например, мое первое предположение было добавить options timer_count=3600 в файл r8168.conf. Почему 3600? Если предположить, что параметр имеет дело со временем, то это, скорее всего, секунды.

Я нашел случай, когда он на самом деле не работал, и проблема была связана с BIOS. Обратитесь к этой странице: http://ubuntuforums.org/showthread.php?t=2138125&page=2

Если все остальное терпит неудачу

Я упоминал и в других статьях, что иногда проблема заключается в аппаратном обеспечении, и неважно, сколько вы делаете настроек - это не поможет. По личному опыту, я имел дело с двумя беспроводными чипсетами rtl8192, один из которых выдавал странную звуковую ошибку, но другой работает почти безупречно.

Я предлагаю вам изучить возможные замены вашей сетевой карты. Мое предложение будет портативный USB-концентратор с разъемом Ethernet, так же, как эти

Я думаю, вам нужно установить более стабильный официальный драйвер для сетевой карты Realtek (RTL8111/RTL8168).

1. Получить права root

Получите привилегии root, набирая "su" или (когда вы используете Ubuntu) "sudo -s" в терминале.

2. Получить требования

Для сборки и установки драйвера нам нужны заголовки ядра и инструменты сборки, такие как gcc. Чтобы получить их, просто наберите в терминале:

apt-get install build-essential

3. Получить драйвер

Теперь перейдите на официальную страницу загрузки от Realtek для драйвера Linux/UNIX для сетевой карты RTL8111 / RTL8168 и загрузите последнюю версию драйвера.

Ссылка: Realtek Скачать страницу

4. Распакуйте архив

Драйвер сжимается в архив. Поэтому распакуйте его с помощью следующей команды:

tar xfvj r8168-8.025.00.tar.bz2

ПРИМЕЧАНИЕ: Пожалуйста, не забудьте заменить "r8168-8.025.00.tar.bz2" на версию драйвера, которую вы скачали!

5. Черный список старых водителей

Мы должны занести в черный список старый драйвер (r8169), чтобы система не загружала его. Для этого легко установите новую запись в "/etc/modprobe.d/blacklist.conf", которая называется:

blacklist r8169

или просто войдите в терминал снова

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

сделать это только в одной команде.

6. Создайте и установите новый драйвер

Теперь все требования для установки нового драйвера выполнены. Давайте теперь изменим каталог драйверов, который мы распаковали за несколько шагов:

cd r8168-8.025.00

ПРИМЕЧАНИЕ. Опять же, пожалуйста, не забудьте изменить "r8168-8.025.00" на версию, которую вы скачали.

Единственная мысль, которую мы должны сделать сейчас, это собрать драйвер и установить его. Чтобы построить его, просто наберите:

make clean modules

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

make install

7. Добро пожаловать r8168

Один из наших последних шагов - сообщить системе о драйвере r8168. С помощью команды

depmod -a

вы перестраиваете зависимости модуля ядра и

insmod ./src/r8168.ko

Вы вставляете новый модуль ядра (драйвер) в ядро.

8. Сделайте его доступным для загрузки

Чтобы всегда использовать новый модуль, вы должны создать новый загрузочный файл initrd. Просто делать

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

в терминале. Здесь мы создаем файл initrd с помощью команды "uname -r", которая позволяет нам получить версию реально работающего ядра.

По крайней мере, вы должны добавить в файл "/ etc / modules" новую запись, которая называется "r8168", чтобы драйвер автоматически загружался после загрузки. В качестве альтернативы вы можете сделать последний шаг снова только с одной командой:

echo “r8168″ >> /etc/modules

Это оно! После перезагрузки у вас должна быть максимально возможная производительность с RTL8111 / RTL8168, и, кроме того, больше не должно быть никаких других проблем с сетью (без сбоев).

После перезагрузки вы можете проверить, загружен ли нужный драйвер с помощью этой команды:

lspci -v

с помощью этой команды вы должны найти в списке вашу сетевую карту RTL8111 / RTL8168 и дополнительную команду "Используемый драйвер ядра: r8168".

Другие вопросы по тегам