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".