Проблема работы wifi RaLink 2790 (RT2860)
Все ниже описанное относится к версиям Ubuntu 11.04 и ниже. Проблема в следующем, нетбук (ASUS 1000H) подключался к wifi (адаптер RaLink 2790 (RT2860)), получал ip-адрес по DHCP, но сеть не работала, либо работа не продолжительное время. Потом разрывалось соединение и заново подключалось с тем же печальным эффектом. Первое что нужно выяснить какой драйвер используется для работы адаптера. Это можно сделать выполнив команду в консоле:
После поиска на просторах интернета удалось выяснить причину. Как оказалась проблема здесь в том что используется драйвер rt2800pci вместо rt2860sta. Нужно запретить модуль rt2800pci и использовать rt2860sta. Для этого нужно добавить в конец файла /etc/modprobe.d/blacklist.conf следующее:
Далее нужно перезагрузиться. Теперь сеть будет работать стабильно, но на 54Mb/sec, т.е. по стандарту 802.11b/g. Если точка доступа работает именно на этом стандарте то можно на этом остановиться. Если же точка работает по стандарту 802.11n то продолжаем дальше. А дальше для исправления этой ситуации нужно скомпилировать драйвер. Для этого выполняем следующие шаги:
Шаг 1
Скачать драйвер переходим по ссылке http://www.ralinktech.com/. Далее выбираем Software затем Linux. Из списка выбираем:
Открыть и извлечь архив в домашнюю директорию. Оставив имя каталога после извлечения без изменений. Открываем терминал и переходим в папку, выполнив:
Выполняем команду:
Шаг 4
Выполняем команду:
Находим строчку MIX_CIPHER_NOTUSE. Изменить ее следующим образом:
Далее в системе перед выполнением следующими командами, должен быть установлен gcc:
Переименовать системный драйвер rt2860sta.ko в rt2860sta.ko.dist выполнив:
Шаг 7
Выполнить:
Выполняем следующее:
Шаг 9
Перезагрузиться.
Примечание: при обновлении версии ядра так же необходимо выполнять перекомпиляцию драйвера.
lspci -vvРезультат ее был таков:
01:00.0 Network controller: RaLink RT2860 Subsystem: RaLink Device 2790 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0, Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 19 Region 0: Memory at fbef0000 (32-bit, non-prefetchable) [size=64K] Capabilities: <access denied> Kernel driver in use: rt2800pci Kernel modules: rt2860sta, rt2800pci
После поиска на просторах интернета удалось выяснить причину. Как оказалась проблема здесь в том что используется драйвер rt2800pci вместо rt2860sta. Нужно запретить модуль rt2800pci и использовать rt2860sta. Для этого нужно добавить в конец файла /etc/modprobe.d/blacklist.conf следующее:
blacklist rt2800pciТеперь нужно чтобы система перезагружала беспроводной драйвер до и после перехода в спящий режим. Это можно сделать, поместив следующие строки в файл /etc/pm/config.d/unload_wireless
SUSPEND_MODULES="rt2860sta"Если файла unload_wireless не существует то нужно его создать.
Далее нужно перезагрузиться. Теперь сеть будет работать стабильно, но на 54Mb/sec, т.е. по стандарту 802.11b/g. Если точка доступа работает именно на этом стандарте то можно на этом остановиться. Если же точка работает по стандарту 802.11n то продолжаем дальше. А дальше для исправления этой ситуации нужно скомпилировать драйвер. Для этого выполняем следующие шаги:
Шаг 1
Скачать драйвер переходим по ссылке http://www.ralinktech.com/. Далее выбираем Software затем Linux. Из списка выбираем:
Download the driver "RT2860PCI/mPCI/CB/PCIe(RT2760/RT2790/RT2860/RT2890)“ dated 07/16/2010, version 2.4.0.0Скаченный файл нужно переименовать, убрав в конце расширение .bz2
#До переименования 2010_07_16_RT2860_Linux_STA_v2.4.0.0.tar.bz2 #После переименования 2010_07_16_RT2860_Linux_STA_v2.4.0.0.tarШаг 2
Открыть и извлечь архив в домашнюю директорию. Оставив имя каталога после извлечения без изменений. Открываем терминал и переходим в папку, выполнив:
cd 2010*Шаг 3
Выполняем команду:
gedit ./os/linux/config.mkНаходим строчку HAS_WPA_SUPPLICANT ставим y вместо n:
HAS_WPA_SUPPLICANT=yНаходим строчку HAS_NATIVE_WPA_SUPPLICANT_SUPPORT ставим y вместо n:
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=yДалее закрыть и сохранить файл.
Шаг 4
Выполняем команду:
gedit ./common/cmm_wpa.cЕсли выйдет окно с ошибкой о кодировке, то нужно сменить ее на „Western“ и попробовать снова.
Находим строчку MIX_CIPHER_NOTUSE. Изменить ее следующим образом:
WPA_MIX_PAIR_CIPHER FlexibleCipher = WPA_TKIPAES_WPA2_TKIPAES;Шаг 5
Далее в системе перед выполнением следующими командами, должен быть установлен gcc:
sudo make sudo make install sudo ifconfig wlan0 down sudo rmmod rt2860staШаг 6
Переименовать системный драйвер rt2860sta.ko в rt2860sta.ko.dist выполнив:
sudo mv /lib/modules/2.6.*/kernel/drivers/staging/rt2860/rt2860sta.ko rt2860sta.ko.distВместо * должна быть версия ядра.
Шаг 7
Выполнить:
sudo depmod -a sudo modprobe rt2860staШаг 8
Выполняем следующее:
cd os cd linux sudo cp rt2860sta.ko /lib/modules/2.6.*/kernel/drivers/staging/rt2860/Вместо * должна быть версия ядра.
Шаг 9
Перезагрузиться.
Примечание: при обновлении версии ядра так же необходимо выполнять перекомпиляцию драйвера.
Прочли: 7689 | Изменено: 13 ноября 2011 | Добавлено: 27 августа 2011 | На главную