Network configuration (Русский)/Wireless (Русский)
Основную статью по настройке сети можно найти на странице Настройка сети.
Настройка беспроводного соединения происходит в два этапа. На первом этапе необходимо определить и установить правильный драйвер сетевого интерфейса (обычно драйвер находится на установочном носителе, но иногда его приходится устанавливать вручную), после чего произвести настройку. Второй этап заключается в выборе способа управления беспроводными соединениями. В этой статье описаны оба этапа, а также представлены ссылки на утилиты управления беспроводными соединениями.
В разделе #iw описана ручная настройка беспроводного интерфейса / локальной сети посредством утилиты iw. В статье Настройка сети#Сетевые менеджеры вы найдёте список программ (в том числе и с графическим интерфейсом), которые используются для автоматического управления сетевым интерфейсом. В них реализована поддержка сетевых профилей, что бывает удобно при частой смене беспроводных сетей (как это бывает, например, с ноутбуками).
Драйвер устройства
Стандартное ядро Arch Linux имеет модульную архитектуру, поэтому многие драйверы для аппаратного обеспечения расположены на жёстком диске и доступны как модули. При загрузке менеджер устройств udev определяет аппаратное обеспечение вашего компьютера и загружает соответствующие модули (драйверы), в результате чего создаётся сетевой интерфейс.
Некоторым беспроводным устройствам для работы помимо драйвера необходима ещё и прошивка. В пакете linux-firmware содержится большое количество образов прошивок, однако проприетаные прошивки в него не входят и должны устанавливаться отдельно. Подробное описание установки дано в разделе #Установка драйвера/прошивки.
Проверка состояния драйвера
Чтобы проверить, загрузился ли драйвер сетевой карты, посмотрите на вывод команд lspci -k
или lsusb -v
(в зависимости от того, подключена карта по шине PCI(e) или через USB-порт). Вы должны увидеть используемые драйверы ядра, например:
$ lspci -k
06:00.0 Network controller: Intel Corporation WiFi Link 5100 Subsystem: Intel Corporation WiFi Link 5100 AGN Kernel driver in use: iwlwifi Kernel modules: iwlwifi
dmesg | grep usbcore
должно выдать что-то похожее на usbcore: registered new interface driver rtl8187
.Также проверьте вывод команды ip link
, чтобы убедиться, что сетевой интерфейс был создан; обычно название беспроводного интерфейса начинается с буквы "w", например, wlp2s1
. Затем включите интерфейс командой
# ip link set интерфейс up
Например, если интерфейс называется wlan0
, команда примет вид ip link set wlan0 up
.
- Если вы получили ошибку
RTNETLINK answers: Operation not possible due to RF-kill
("действие невозможно из-за RF-kill"), убедитесь, что аппаратный переключатель находится в положении вкл. Подробнее см. #Предостережения Rfkill. - Если вы получили сообщение об ошибке
SIOCSIFFLAGS: No such file or directory
("нет такого файла или каталога"), то скорее всего для функционирования вашего беспроводного устройства необходима соответствующая прошивка.
Проверьте сообщения ядра на предмет загрузки прошивки:
# dmesg | grep firmware
[ 7.148259] iwlwifi 0000:02:00.0: loaded firmware version 39.30.4.1 build 35138 op_mode iwldvm
Если там нет интересующей вас информации, проверьте сообщения подробного вывода, относящиеся к определённому вами ранее модулю (в примере ниже iwlwifi
):
# dmesg | grep iwlwifi
[ 12.342694] iwlwifi 0000:02:00.0: irq 44 for MSI/MSI-X [ 12.353466] iwlwifi 0000:02:00.0: loaded firmware version 39.31.5.1 build 35138 op_mode iwldvm [ 12.430317] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEBUG disabled ... [ 12.430341] iwlwifi 0000:02:00.0: Detected Intel(R) Corporation WiFi Link 5100 AGN, REV=0x6B
Если модуль ядра загрузился успешно и интерфейс запущен, можете пропустить следующий раздел.
Установка драйвера/прошивки
Проверьте, находится ли ваша сетевая карта в числе поддерживаемых:
- Изучите таблицу существующих драйверов Linux для беспроводных устройств. Перейдя на страницу определённого драйвера вы найдёте список поддерживаемых устройств. Также можно посмотреть список идентификаторов Wi-Fi устройств в Linux.
- В Ubuntu Wiki есть хороший список беспроводных карт и информация об их поддержке ядром Linux или драйвером пространства пользователя (включая название драйвера).
- Проверьте ваше устройство на сайте Linux Wireless Support или по реестру hardware compatibility list, в котором также содержится список поддерживаемого ядром оборудования.
Если ваша беспроводная карта есть в одном из списков выше, перейдите в раздел #Решение проблем с драйверами и прошивками. В нём содержатся инструкции по установке драйверов и прошивок на некоторые редкие беспроводные карты. Затем проверьте состояние драйвера снова.
Если вашей беспроводной карты нет в списках, то скорее всего она поддерживается только в Windows (некоторые Broadcom, 3com и др.). В этом случае вы можете воспользоваться #ndiswrapper.
Утилиты
Управление беспроводными сетевыми интерфейсами, как и всеми прочими, осуществляется посредством входящей в пакет iproute2 утилиты ip.
Для настройки беспроводного соединения необходим определённый набор программ. Для этих целей подойдет либо сетевой менеджер, либо один из следующих пакетов:
Утилита | Пакет | WEXT | nl80211 | WEP | WPA/WPA2 | Archiso [1] |
---|---|---|---|---|---|---|
wireless_tools[устаревшая ссылка 2021-11-15]1 | wireless_tools | Да | Нет | Да | Нет | Да |
iw | iw | Нет | Да | Да | Нет | Да |
wpa_supplicant | wpa_supplicant | Да | Да | Да | Да | Да |
iwd | iwd | Нет | Да | Нет | Да | Да |
- Устарела.
Имейте в виду, что некоторые сетевые карты поддерживают только WEXT.
Сравнение iw и wireless_tools
Ниже представлено сравнение некоторых команд утилит iw и wireless_tools. Дополнительные примеры можно найти в статье о замене iwconfig на iw.
Команда iw | Команда wireless_tools | Описание |
---|---|---|
iw dev wlan0 link | iwconfig wlan0 | Получение состояния соединения. |
iw dev wlan0 scan | iwlist wlan0 scan | Сканирование доступных точек доступа. |
iw dev wlan0 set type ibss | iwconfig wlan0 mode ad-hoc | Установка режима работы ad-hoc. |
iw dev wlan0 connect ваш_essid | iwconfig wlan0 essid ваш_essid | Подключение к открытой сети. |
iw dev wlan0 connect ваш_essid 2432 | iwconfig wlan0 essid ваш_essid freq 2432M | Подключение к открытой сети с указанием канала. |
iw dev wlan0 connect ваш_essid key 0:ваш_ключ | iwconfig wlan0 essid ваш_essid key ваш_ключ | Подключение к сети с WEP шифрованием шестнадцатеричным ключом. |
iwconfig wlan0 essid ваш_essid key s:ваш_ключ | Подключение к сети с WEP шифрованием ASCII-ключом. | |
iw dev wlan0 set power_save on | iwconfig wlan0 power on | Включение режима энергосбережения. |
iw
- Большая часть представленных ниже команд должна выполняться с правами root. При выполнении от лица обычного пользователя некоторые команды (например, iw list) завершат работу без ошибки, но сгенерированный ими вывод либо окажется некорректным, либо будет отсутствовать вовсе.
- В зависимости от вашего аппаратного обеспечения и типа шифрования некоторые перечисленные ниже шаги могут оказаться не нужны. Некоторые сетевые карты требуют включения интерфейса и/или поиска точки доступа перед привязкой к ней и получением IP-адреса. Возможно, придётся немного поэкспериментировать. Например, пользователи с WPA/WPA2 могут попытаться активировать беспроводную сеть напрямую с шага #Соединение с точкой доступа.
В примерах ниже беспроводное устройство с названием интерфейс
устанавливает соединение с точкой доступа Wi-Fi ваш_essid
. Замените названия на свои.
Определение имени интерфейса
Чтобы узнать название беспроводного интерфейса, выполните:
$ iw dev
Название интерфейса будет указано после слова "Interface". Например, wlan0
.
Определение состояния интерфейса
Чтобы проверить состояние соединения, выполните:
$ iw dev интерфейс link
Статистическую информацию (количество tx/rx байт, мощность сигнала и т.д.) можно получить, введя команду:
$ iw dev интерфейс station dump
Включение интерфейса
Некоторые карты требуют включения интерфейса перед использованием iw или wireless_tools.
# ip link set интерфейс up
RTNETLINK answers: Operation not possible due to RF-kill
, убедитесь, что аппаратный переключатель находится в положении on. Дополнительную информацию вы найдёте в разделе #Предостережения Rfkill.Чтобы убедиться, что интерфейс включён, выполните:
$ ip link show интерфейс
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000 link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff
На включённое состояние интерфейса указывает слово UP
в BROADCAST,MULTICAST,UP,LOWER_UP
, а не надпись state DOWN
.
Обнаружение точек доступа
Чтобы просмотреть список доступных точек доступа, выполните:
# iw dev интерфейс scan | less
Interface does not support scanning
(Интерфейс не поддерживает сканирование), то скорее всего вы забыли установить прошивку. В некоторых случаях это сообщение может появиться, если вы выполнили команду не от имении root.Обратите внимание на следующие поля:
- SSID: название сети.
- Signal: мощность беспроводного излучения в единицах dBm (например, от -100 до 0). Более близкие к нулю значения означают лучший сигнал. На основании отображаемой мощности можно получить представление о покрытии сети.
-
Security: напрямую не указывается; проверьте строку, которая начинается с
capability
. Если там содержится указаниеPrivacy
, например,capability: ESS Privacy ShortSlotTime (0x0411)
, то ваша сеть как-то защищена.- Если вы видите информационный блок
RSN
, то сеть защищена протоколом Robust Security Network, также известным как WPA2. - Если вы видите информационный блок
WPA
, то сеть защищена протоколом Wi-Fi Protected Access. - В блоках
RSN
иWPA
может быть указана следующая информация:- Group cipher: принимает значения TKIP, CCMP, both, others.
- Pairwise ciphers: принимает значения TKIP, CCMP, both, others. Может отличаться от значения в Group cipher.
- Authentication suites: принимает значения PSK, 802.1x, others. Для домашнего маршрутизатора вы скорее всего обнаружите здесь значение PSK (то есть пароль). В университетах вероятнее всего будет сеть 802.1x, что требует логин и пароль. Тогда вам потребуется узнать, какое используется управление ключами (например, EAP), и какой способ инкапсуляции (например, PEAP). Подробную информацию можно найти в разделе #WPA2 Enterprise и статье Wikipedia:Authentication protocol.
- Если вы не видите ни
RSN
, ниWPA
, но есть разделPrivacy
, то используется защитный протокол WEP.
- Если вы видите информационный блок
Выбор режима работы
Возможно, будет необходимо выбрать подходящий режим работы беспроводной карты. Например, если вы хотите подключиться к сети ad-hoc, то нужно установить режим работы ibss
:
# iw dev интерфейс set type ibss
ip link set интерфейс down
).Соединение с точкой доступа
Необходимо привязать устройство к точке доступа и ввести ключ в зависимости от типа шифрования:
-
Без шифрования
# iw dev interface connect "ваш_essid"
-
WEP
- С использованием шестнадцатеричного ключа (формат ключа определится автоматически, поскольку WEP-ключ имеет фиксированную длину):
# iw dev интерфейс connect "ваш_essid" key 0:your_key
- С использованием ASCII-ключа, указав третий ключ в качестве ключа по умолчанию (ключи нумеруются с нуля, всего возможно до четырёх ключей):
# iw dev интерфейс connect "ваш_essid" key d:2:your_key
- С использованием шестнадцатеричного ключа (формат ключа определится автоматически, поскольку WEP-ключ имеет фиксированную длину):
Вне зависимости от использованного способа, проверьте соединение:
# iw dev интерфейс link
Аутентификация
WPA2 Personal
WPA2 Personal, или WPA2-PSK — одна из реализаций технологии Wi-Fi Protected Access.
Выполнить вход в сеть WPA2 Personal можно посредством утилит wpa_supplicant или iwd, а также с помощью сетевого менеджера. Если вы вошли в данную сеть впервые, то для создания нормально функционирующего соединения необходимо выполнить привязку IP-адреса(-ов) и маршрутов либо вручную, либо с помощью DHCP-клиента.
WPA2 Enterprise
WPA2 Enterprise — ещё одна реализация технологии Wi-Fi Protected Access. Она предлагает лучшую безопасность и управление ключами по сравнению с WPA2 Personal, а также дополнительную функциональность корпоративного типа вроде VLAN и NAP. Для работы этой технологии требуется внешний аутентификационный сервер, RADIUS, обрабатывающий попытки аутентификации пользователей. Это отличает Enterprise-режим от режима Personal, которому не требуется ничего кроме маршрутизатора или точки доступа с одним паролем для всех пользователей.
Корпоративный (Enterprise) режим осуществляет подключение пользователей к сети посредством имени пользователя и пароля и/или цифрового сертификата. Поскольку каждый пользователь обладает уникальным динамическим ключом шифрования, это также позволяет предотвратить отслеживание пользователей в беспроводной сети и усилить шифрование.
Ниже описана настройка сетевых клиентов, соединяющихся с беспроводной точкой доступа в режиме WPA2 Enterprise. Информацию о настройке самой точки доступа можно найти в статье Software access point#RADIUS.
Сравнение протоколов сведено в таблицу.
MS-CHAPv2
Беспроводные сети WPA2-Enterprise, полагающиеся на аутентификацию MSCHAPv2 type-2 с использованием PEAP иногда требуют установки pptpclient помимо стандартного ppp. netctl, однако, работает "из коробки" без ppp-mppe. В любом случае, использование MSCHAPv2 не рекомендуется из-за ненадежности этого протокола, но другого варианта часто просто нет.
eduroam
eduroam — международный роуминговый сервис на основе WPA2 Enterprise для лиц, занятых в сфере научно-исследовательской деятельности, высшего образования и дополнительного профессионального образования.
- Перед применением любых настроек, предложенных в этом разделе, рекомендуется сначала проверить их со специалистами вашего учреждения. Предложенные здесь профили настроек предлагаются безо всяких гарантий на предмет работоспособности или соответствия каким-либо требованиям безопасности.
- При хранении профилей соединения в незашифрованном виде рекомендуется оставить только доступ на чтение для root, выполнив команду
# chmod 600 профиль
.
Ручная/автоматическая настройка
-
wpa_supplicant настраивается напрямую в его файле настроек или посредством интерфейса; используется вместе с клиентом DHCP. Примеры настроек приведены в файле
/usr/share/doc/wpa_supplicant/wpa_supplicant.conf
. - iwd#WPA Enterprise.
- NetworkManager может создавать профили WPA2 Enterprise с помощью утилиты nmcli или графических интерфейсов. Утилита mntui эту возможность не поддерживает (NetworkManager issue 376), но работает с готовыми профилями.
- ConnMan требует создания отдельного файла настроек перед соединением с беспроводной сетью. Подробности можно найти в руководстве connman-service.config(5) и в статье Connman#Connecting to eduroam.
-
netctl может использовать настройки wpa_supplicant посредством блоков
WPAConfigSection=
. Детали вы найдёте в руководстве netctl.profile(5).
- Примечание: В настройках netctl особые правила использования кавычек: см. netctl.profile(5) § SPECIAL QUOTING RULES.
- Совет: Можно разрешить произвольный сертификат, добавив строку
'ca_cert="/path/to/special/certificate.cer"'
в блокеWPAConfigSection
.
WPA3 Personal
WPA3 Personal, или WPA3-SAE — один из режимов Wi-Fi Protected Access.
wpa_supplicant поддерживает WPA3 Personal (опция CONFIG_SAE
в wpa_supplicant включена начиная с версии 2:2.9-4).
iwd поддерживает WPA3 как минимум с версии 1.0.
Советы и рекомендации
Соответствие регламентам
Регулятивный домен (regulatory domain) — страны, совместно использующие общий регламент радиосвязи, определённый одним из регулятивных органов (FCC в США, ETSI для стран Европы и т.д.). С помощью параметра regdomain драйвер беспроводной сетевой платы настраивается в соответствии с местными законами. Regdomain использует двухбуквенные коды стран в соответствии с ISO 3166-1 alpha-2. Например, regdomain для США обозначается "US", для России — "RU", и т.д.
Regdomain определяет доступность беспроводных каналов. Так, на частоте 2.4GHz разрешено использовать каналы 1-11 в США, 1-14 — в Японии, и каналы 1-13 в большей части остального мира. На частоте 5GHz правила доступа к каналам несколько сложнее. В Википедии можно найти подробную информацию о доступности каналов: [1], [2].
Принадлежность к домену также определяет предельное значение эквивалентной изотропно-излучаемой мощности (Equivalent Isotropically Radiated Power, EIRP) беспроводных устройств. Это значение определяет мощность сигнала и измеряется в единицах дБм или мВт. На частоте 2.4GHz максимальное значение мощности составляет 30дБм в США и Канаде, 20дБм в большинстве стран Европы, и 20-30дБм в остальном мире. На частоте 5GHz максимумы обычно выше. Допустимые значения мощности можно найти в этой базе данных (значения дБм во втором наборе скобок в каждой линии).
В некоторых случаях может быть полезно указать неверный regdomain — например, чтобы получить воможность осуществлять передачу через неиспользуемый канал, если остальные каналы перегружены, или чтобы повысить мощность и, как следствие, дальность передачи. Однако делать это не рекомендуется, поскольку это приведёт к нарушению местного законодательства и может нарушить работу других радио-устройстств.
Для настройки regdomain установите пакет crda[ссылка недействительна: replaced by wireless-regdb] и перезагрузитесь, чтобы перезапустить модуль cfg80211
и все относящиеся к нему драйвера. Проверьте лог загрузки, чтобы убедиться, что CRDA был запущен модулем cfg80211
:
# dmesg | grep cfg80211
Назначьте regdomain (например, для США):
# iw reg set US
И проверьте настройки:
$ iw reg get
- По умолчанию ваше устройство может быть настроено на "страну 00", которая означает условный "мировой домен" и содержит обобщённые настройки. Если изменить этот параметр не удаётся, то скорее всего причиной неправильная настройка CRDA.
- При компиляции кастомного ядра в качестве альтернативы
crda
можно включить параметрCONFIG_CFG80211_INTERNAL_REGDB
. После включения необходимо переместить db.txt вnet/wireless/db.txt
. Подробнее см. [2].
В некоторых случаях настройку regdomain изменить не получится. В некоторых устройствах параметр домена зашит в прошивку/EEPROM, что ограничивает поведение устройства. В данном случае изменение домена в ПО может только ужесточить ограничения, но не ослабить их. Например, китайское (CN) устройство может быть настроено на домен US, но поднять максимум EIRP с 20дБм до разрешённого в США значения 30дБм не получится.
Чтобы проверить, задан ли домен в прошивке устройства Atheros, выполните команду:
# dmesg | grep ath:
Для других чипсетов в качестве паттерна поиска можно указать "EEPROM", "regdomain" или просто название драйвера устройства.
Чтобы убедиться, что смена домена прошла успешно, и узнать количество доступных каналов и их разрешённую мощность, выполните
$ iw list | grep -A 15 Frequencies:
Постоянная настройка выполняется с помощью раскомментирования нужного домена в файле /etc/conf.d/wireless-regdom
.
wpa_supplicant также может управлять доменом посредством строки country=
в файле /etc/wpa_supplicant/wpa_supplicant.conf
В модуле ядра cfg80211 можно настроить домен, добавив опцию options cfg80211 ieee80211_regdom=JP
. Это часть старой реализации технологии регулятивного домена.
Дополнительную информацию по настройке и использованию регулятивного домена можно найти в документации wireless.kernel.org.
Предостережения Rfkill
Во многих ноутбуках присутствует аппаратный переключатель (или кнопка) питания беспроводной карты, однако она может быть также заблокирована и ядром. Этим можно управлять через rfkill. Используйте rfkill, чтобы посмотреть текущий статус:
# rfkill list
0: phy0: Wireless LAN Soft blocked: yes Hard blocked: yes
Если карта заблокирована аппаратно (hard blocked), используйте переключатель (кнопку), чтобы разблокировать её. Если же карта заблокирована не аппаратно, a программно (soft blocked), используйте следующую команду:
# rfkill unblock wifi
rfkill
.Включение/выключение беспроводных карт посредством аппаратных переключателей происходит с помощью модулей ядра. При выходе новых моделей сетевых карт их драйвера могут отсутствовать в последнем стабильном релизе ядра. В этом случае стоит поискать информацию в багтрекере ядра и сообщить название модели сопроводителю соответствующего модуля, если этого ещё никто не сделал.
По ссылке можно найти дополнительную информацию о Rfkill.
Энергосбережение
Смотрите раздел Энергосбережение#Сетевые интерфейсы.
Решение проблем
В этом разделе содержатся основные рекомендации по решению проблем, не связанных непосредственно с драйверами и прошивками. Для получения такой информации смотрите следующий раздел #Решение проблем с драйверами и прошивками.
Временный доступ к сети Интернет
Если с сетевой платой возникли проблемы и нужен доступ в сеть Интернет, например, чтобы загрузить определённое ПО или задать вопрос на форумах, можно раздать интернет на компьютер с Android-смартфона посредством USB-кабеля. В статье Android tethering#USB модем вы найдёте поднобную информацию по этому вопросу.
Просмотр логов
При появлении проблем первым делом стоит изучить файлы системных логов. Чтобы не разбирать их вручную, стоит открыть второй терминал/консоль и отслеживать сообщения ядра, выполнив команду
# dmesg -w
непосредственно перед попыткой беспроводной привязки (association).
Если вы используете какую-то утилиту для управления сетью, то же самое можно сделать с помощью systemd:
# journalctl -f
Связанные с беспроводными устройствами ошибки часто сопровождаются словом deauthentication и кодом причины (reason), например:
wlan0: deauthenticating from XX:XX:XX:XX:XX:XX by local choice (reason=3)
Код причины может подсказать причину неполадок. Полезно будет также взглянуть на схему движения управляющих сообщений, записи в журнале появляются в соответствии с ней.
Некоторые инструменты, описанные с следующих разделах, предлагают опции для более детализированного отладочного вывода. Они могут помочь при дальнейшем анализе неполадок.
Не удалось получить IP адрес
- Если получение IP адреса неоднократно не удаётся при использовании клиента по умолчанию dhcpcd, попробуйте установить и использовать dhclient вместо него. Не забудьте выбрать dhclient как первичный DHCP клиент в вашем менеджере соединений!
- Если вы можете получить IP для проводного интерфейса, но не можете для беспроводного, попробуйте отключить энергосберегающие функции вашей беспроводной карты:
# iwconfig wlan0 power off
- Если вы получаете timeout ошибку из-за waiting for carrier проблемы, возможно вам понадобится установить канал в
auto
для конкретного устройства:
# iwconfig wlan0 channel auto
Перед тем как изменить канал на автоматический, убедитесь что вы опустили беспроводной интерфейс. После того, как поменяете канал, можете опять поднять интерфейс.
Не выполняется разрешение хоста по действительному IP-адресу
Если вы подключились к публичной беспроводной сети с работающим серсвисом Captive portal, убедитесь, что браузер отправляет запросы по протоколу HTTP, а не HTTPS, поскольку некоторые порталы работают только с HTTP. Если причина проблем не в этом, проверьте настройки разрешения доменных имён. Возможно, нужно просто использовать DNS-сервер, объявленный DHCP.
Включение RTS и порог фрагментации
Беспроводное аппаратное обеспечение по умолчанию не использует RTS и фрагментацию. Есть два способа повысить производительность (throughput) за счёт пропускной способности (bandwidth) (т.е. надёжность за счёт скорости). Это полезно в случае наличия беспроводного шума или создающих помехи соседних точек доступа, что приводит к задержкам и сбоям.
Фрагментация пакетов увеличивает производительность за счёт разбиения пакетов с размером, превышающим порог фрагментации. Максимальное значение (2346) фактически отключает фрагментацию, поскольку не существует пакетов большего размера. Минимальное значение (256) увеличивает производительность, но требует большей пропускной способности.
# iw phy0 set frag 512
RTS увеличивает производительность посредством выполнения рукопожатий с точкой доступа перед отправкой пакетов с размером выше порога RTS. Максимальное значение (2347) отключает RTS (т.к. пакеты не могут быть большего размера). Минимальный порог (0) включает RTS для всех пакетов, что в большинстве ситуаций несколько избыточно.
# iw phy0 set rts 500
phy0
— название беспроводного устройства, которое можно узнать с помощью команды $ iw phy
.Внезапные отключения
Причина #1
Если dmesg выводит сообщение wlan0: deauthenticating from MAC by local choice (reason=3)
и произошёл разрыв Wi-Fi соединения, то причина скорее всего кроется в слишком агрессивных настройках энергосбережения вашей беспроводной карты. Попробуйте отключить энергосбережение (укажите опцию off
вместо on
).
Если у вашей карты нет энергосберегающего режима, проверьте настройки энергопотребления BIOS. Отключение управления энергопотреблением PCI-Express в BIOS на Lenovo W520 решило эту проблему.
Причина #2
Если происходят частые отключения и dmesg выдаёт сообщение вроде
ieee80211 phy0: wlan0: No probe response from AP xx:xx:xx:xx:xx:xx after 500ms, disconnecting
попробуйте изменить полосу пропускания канала на 20MHz
на странице настроек вашего маршрутизатора.
Причина #3
В некоторых моделях ноутбуков (например, Thinkpad X200) аппаратный переключатель (или его соединение с материнской платой) из-за неудачной конструкции со временем может расшататься. В результате при случайных касаниях переключателя или перемещении ноутбука будут происходить аппаратные блокировки (hardblock) и разрывы соединения. Решить эту проблему программно нельзя, кроме случая, когда переключатель электрический — в БИОС есть настройка его отключения. Если переключатель механический (а чаще всего он именно такой), то существует несколько возможных решений, большинство из которых сводится к отключению переключателя: распаять точку соединения переключателя с материнской платой/беспроводной картой, приклеить или зафиксировать переключатель, подтянуть переключатель гайкой или удалить его насовсем.
Причина #4
Причиной частых отключений или невозможности выполнить соединение может быть нестандартная модель маршрутизатора, неправильные настройки или помехи со стороны других беспроводных устройств.
Чтобы решить эту проблему, сначала попробуйте подключиться к маршрутизатору с отключённой аутентификацией.
Если это сработало, включите WPA/WPA2 снова, но с ограниченными настройками. Например:
- Если маршрутизатор значительно старше вашей беспроводной карты, проверьте, функционирует ли он, выбрав работу только в беспроводном режиме.
- Отключите смешанную аутентификацию (например, оставьте только WPA2 с AES, или только TKIP в случае старого маршрутизатора).
- Попробуйте fixed или free режим канала вместо auto (возможно, неподалёку работает старый маршрутизатор, создающий помехи).
- Отключите WPS.
- Измените канал(-ы) 5 GHz на канал non-DFS (Dynamic Frequency Selection). Соединения, установленные по такому каналу, могут пострадать от помех, создаваемых находящимся неподалёку погодным радаром.
- Отключите полосу пропускания
40MHz
(производительность упадёт, но зато уменьшится количество коллизий пакетов) параметромcfg80211.cfg80211_disable_40mhz_24ghz=1
. - Если у маршрутизатора есть настройки качества обслуживания (Quality of Service, QoS), проверьте их полноту (например, WMM является одним из протоколов QoS; при неправильной работе ПО маршрутизатор может сообщать, что протокол работает, хотя соответствующая настройка не включена).
Причина #5
У некоторых беспроводных сетевых адаптеров (например, Qualcomm Atheros AR9485) бывают случайные разрывы связи с DMA-ошибкой:
# journalctl -xb
ath: phy0: DMA failed to stop in 10 ms AR_CR=0x00000024 AR_DIAG_SW=0x02000020 DMADBG_7=0x0000a400 wlp1s0: authenticate with 56:e7:ee:7b:55:bc wlp1s0: send auth to 56:e7:ee:7b:55:bc (try 1/3) wlp1s0: send auth to 56:e7:ee:7b:55:bc (try 2/3) wlp1s0: send auth to 56:e7:ee:7b:55:bc (try 3/3) wlp1s0: authentication with 56:e7:ee:7b:55:bc timed out
Решение — отключить Intel IOMMU driver (DMA), добавив intel_iommu=off
в параметры ядра [3].
Причина #6
Если вы используете устройство с iwlwifi и iwlmvm для беспроводных соединений и ваша Wi-Fi-карта периодически отключается при работе от аккумулятора (возможно, после перезагрузки или при выходе из режима сна), то это можно исправить настройками энергосбережения в iwlmvm.
Создайте файл /etc/modprobe.d/iwlmvm.conf
, если он отсутствует, и добавьте в него следующую строку:
/etc/modprobe.d/iwlmvm.conf
options iwlmvm power_scheme=1
Параметр power_scheme
, установленный в значение 1, задаёт iwlmvm режим "всегда активен". Все возможные значения:
Значение | Описание |
---|---|
1 | Всегда активен |
2 | Промежуточный режим |
3 | Экономный режим |
Это решение было обнаружено в [4].
Причина #7
Если ваше устройства долгие периоды бывает неактивно (например, файловый сервер), то отключения могут происходить из-за настроек энергосбережения, в результате которых входящий трафик блокируется, а соединения не устанавливаются. Попробуйте отключить энергосбережение для интерфейса:
# iw dev интерфейс set power_save off
Можно также создать правило udev, которое будет делать это при каждой загрузке системы, см. Power management#Network interfaces.
Wi-Fi-сеть не видна из-за несоответствия регулятивному домену
При соединении по беспроводной сети список используемых на вашей машине беспроводных каналов может не совпасть с перечнем разрешённых каналов в вашей стране. В результате не получится обнаружить некоторые Wi-Fi сети. Для решения этой проблемы необходимо настроить регулятивный домен (regulatory domain), как описано в разделе #Соответствие регламентам.
Решение проблем с драйверами и прошивками
В этом разделе описана установка модулей ядра и прошивок некоторых специфических чипсетов для случаев, когда она отличается от стандартного способа.
Информацию о приёмах работы с модулями можно найти в статье Модули ядра.
Ralink/Mediatek
rt2x00
Единый драйвер для чипсетов Ralink, замещает драйвера rt2500
, rt61
, rt73
и другие. Входит в ядро Linux начиная с версии 2.6.24. Необходимо только загрузить нужный для вашей карты модуль — rt2400pci
, rt2500pci
, rt2500usb
, rt61pci
или rt73usb
, а он уже автоматически подтянет соответствующие модули драйвера rt2x00
.
Список поддерживаемых устройств можно найти на странице проекта.
- Примечания
- Начиная с версии ядра 3.0, rt2x00 включает также драйвера
rt2800pci
иrt2800usb
. - Начиная с версии ядра 3.0 staging-версии драйверов
rt2860sta
иrt2870sta
были заменены на mainline-драйвераrt2800pci
иrt2800usb
. - Некоторые устройства имеют широкий набор опций, настроить их можно с помощью входящей в пакет wireless_tools утилиты iwpriv. Документацию можно найти в tar-архиве с исходниками от Ralink.
rt3090
Для устройств с чипсетом rt3090 можно использовать драйвер rt2800pci
, однако качественная работа не гарантирована (например, временами не удаётся получить скорость выше 2 Мбит/с).
rt3290
Чипсет rt3290 распознаётся модулем ядра rt2800pci
, однако у некоторых могут возникнуть проблемы. В этом случае можно попробовать вернуться к проприетарным драйверам Ralink. [5]
rt3573
Чипсет 2012 года. Для стабильной работы могут потребоваться проприетарные драйвера Ralink, которые используются многими производителями беспроводного оборудования [6].
mt7612u
Чипсет 2014 года, выпущенный под новым коммерческим именем Mediatek. Есть варианты чипсетов AC1200 или AC1300. Производитель предлагает драйвера для Linux на странице поддержки. В ядро версии 5.5 был добавлен драйвер mt76
.
Realtek
Список чипсетов Realtek и их спецификации: [7].
rtl8192cu
Драйвер для этого чипсета включён в состав ядра, но иногда появляются проблема с установкой соединения (хотя сканирование активных сетей работает).
В драйвер 8192cu-dkmsAUR вошли многие исправления; установите его, если входящий в ядро дравер работает плохо.
rtl8723ae/rtl8723be
Модули rtl8723ae
и rtl8723be
входят в mainline-ядро Linux.
На картах с этими чипсетами возможны ошибки в работе функции энергосбережения. Это проявляется в случайных разрывах соединения, которые не обнаруживаются высокоуровневыми сетевыми менеджерами (netctl, NetworkManager). Обнаружить ошибку можно командами dmesg -w
или journalctl -f
, найдя сообщения, относящиеся к энергосбережению (powersave) и модулю rtl8723ae
/rtl8723be
. Если это ваш случай, используйте опцию ядра fwlps=0
, чтобы предотвратить "засыпание" карты и разрывы соединения. См. See Модули ядра#Настройка параметров модуля.
Если у вас проблемы с качеством сигнала, возможно, у вашего устройства работает только одна антенна, а программный автовыбор антенны не работает. Вы можете вручную выбрать рабочую антенну параметрами ядра ant_sel=1
или ant_sel=2
. [8]
rtl88xxau
Чипсеты Realtek rtl8811au/rtl8812au/rtl8814au/rtl8821au разработаны для различных USB-адаптеров в диапазоне от AC600 до AC1900. Драйвера к ним содержатся в нескольких пакетах, перечисленных ниже; все они требуют DKMS (пакет dkms и заголовочные файлы ядра).
Чипсет | Версия драйвера | Пакет | Примечания |
---|---|---|---|
rtl8811au, rtl8812au и rtl8821au | 5.6.4.2 | rtl88xxau-aircrack-dkms-gitAUR | Модули ядра aircrack-ng для чипсетов 8811au, 8812au, 8814au и 8821au с режимом мониторинга и поддержкой инъекций. |
rtl8814au | 5.8.5.1 | rtl8814au-aircrack-dkms-gitAUR | Модуль ядра aircrack-ng для чипсетов 8814au с режимом мониторинга и поддержкой инъекций. |
rtl8812au | 5.9.3.2 | rtl8812au-dkms-gitAUR | Последний официальный драйвер Realtek, только для rtl8812au. |
rtl8811au, rtl8821au | 5.8.2.3 | rtl8821au-dkms-gitAUR | Новейшая версия драйверов для rtl8821au. |
rtl8814au | 5.8.5.1 | rtl8814au-dkms-gitAUR | Возможно, работает также и для rtl8813au. Разработка прекращена с целью сосредоточиться на rtl8814au-aircrack-dkms-gitAUR. |
rtl8811cu/rtl8821cu
Пакет rtl8821cu-dkms-gitAUR содержит модуль ядра для чипсетов Realtek 8811cu и 8821cu.
Для него требуется фреймворк DKMS, поэтому убедитесь, что необходимые заголовочные файлы ядра установлены.
Если даже с загруженным модулем 8821cu
интерфейс не работает, попробуйте вручную задать опцию rtw_RFE_type
[9][10], например rtw_RFE_type=0x26
. Другие значения тоже могут работать. Подробнее см. Модули ядра#Настройка параметров модуля.
rtl8821ce
Пакет rtl8821ce-dkms-gitAUR содержит модуль ядра для чипсета Realtek 8821ce ноутбука Asus X543UA.
Для него требуется фреймворк DKMS, поэтому убедитесь, что необходимые заголовочные файлы ядра установлены.
rtl8822bu
В пакеты rtl8822bu-dkms-gitAUR м rtl88x2bu-dkms-gitAUR входит модуль ядра для чипсета Realtek 8822bu, используемого в адаптерах Edimax EW7822ULC USB3, Asus AC53 Nano USB 802.11ac и TP-Link Archer T3U.
rtl8xxxu
Проблемы с модулем ядра rtl8xxxu
могут быть решены компиляцией стороннего модуля для специфического чипсета. Исходный код можно найти в GitHub-репозитории.
Некоторые драйвера могут быть уже добавлены в AUR, например, rtl8723bu-git-dkmsAUR.
Atheros
Командой проекта MadWifi было создано три драйвера для устройств с чипсетом Atheros:
-
madwifi
— устаревший драйвер. Не входит в состав ядра Linux начиная с версии 2.6.39.1. [11] -
ath5k
— более новый драйвер, заменившийmadwifi
. Довольно неплох, но отсутствует поддержка некоторых чипсетов (см. ниже). -
ath9k
— новейший из этих трёх драйверов, предназначен для последних чипсетов Atheros. Поддерживаются все платы с технологией 802.11n.
Также существуют другие драйвера для устройств Atheros, найти их можно в документации Linux Wireless.
ath5k
Полезные ссылки:
Если веб-страницы временами грузятся очень медленно, или если беспроводному устройству не удаётся получить динамический IP-адрес, попытайтесь переключиться с аппаратного шифрования на программное, загрузив модуль ath5k
с опцией nohwcrypt=1
. Подробнее см. Модули ядра#Настройка параметров модуля.
У некоторых ноутбуков может возникнуть проблема с LED-индикатором беспроводной связи, который постоянно мигает и становится то красным, то синим. Чтобы решить эту проблему, выполните:
# echo none > /sys/class/leds/ath5k-phy0::tx/trigger # echo none > /sys/class/leds/ath5k-phy0::rx/trigger
Альтернативное решение описано в этом багрепорте.
ath9k
Полезные ссылки:
Начиная с версии ядра 3.15.1 некоторые пользователи ощутили уменьшение полосы пропускания. В некоторых случаях проблема может быть решена заданием опции nohwcrypt=1
для модуля ath9k
. См. Модули ядра#Настройка параметров модуля.
lsmod
название используемого модуля; измените название, если оно отличается от ath9k
(например, ath9k_htc
).Если у вас проблемы со стабильностью соединения, можно попробовать установить пакет backports-patchedAUR[ссылка недействительна: package not found]. Связаться с разработчиками и обсудить изменения можно через почтовую рассылку.
Power saving
Linux Wireless утверждает, что динамическое энергосбережение включено для одноплатных Atheros ath9k новее версии AR9280, однако для некоторых устройств (например, AR9285) powertop всё же сообщает, что энергосбережение отключено. В этом случае включите его вручную.
На некоторых устройствах (например, AR9285) включение энергосбережения может привести к следующей ошибке:
# iw dev wlan0 set power_save on
command failed: Operation not supported (-95)
Для решения необходимо установить опцию ps_enable=1
для модуля ath9k
, см. Модули ядра#Настройка параметров модуля.
Intel
ipw2100 and ipw2200
Эти модули полностью поддерживаются ядром, но для них необходима прошивка. В зависимости от вашего чипсета установите либо ipw2100-fw, либо ipw2200-fw, после чего перезапустите модуль.
-
rtap_iface=1
— включить radiotap-интерфейс. -
led=1
— включить LED-индикатор наличия/отсутствия беспроводного соединения.
iwlegacy
iwlegacy — драйвер для чипов Intel версий 3945 и 4965. Прошивки для них входят в пакет linux-firmware.
Менеджер устройств udev должен загрузить драйвер автоматически, в противном случае загрузите iwl3945
или iwl4965
вручную. Подробнее см. Модули ядра.
Если у вас проблемы с подключением к сети вообще, случайные сбои карты во время загрузки, или просто очень низкое качество связи, попробуйте выключить 802.11n:
/etc/modprobe.d/iwl4965.conf
options iwl4965 11n_disable=1
Если проблемы во время загрузки остались и вы используете драйвер Nouveau, попробуйте включить KMS, чтобы предотвратить конфликт оборудования. [12]
iwlwifi
iwlwifi — беспроводной драйвер для современных чипов Intel, таких как 5100AGN, 5300AGN и 5350AGN. Список поддерживаемых устройств: [13]. Пакет linux-firmware содержит ряд прошивок, а в пакете linux-firmware-iwlwifi-gitAUR можно найти некоторые последние обновления.
Если у вас проблемы с соединением вообще или качество связи очень низкое, попробуйте отключить 802.11n и включить программное шифрование:
/etc/modprobe.d/iwlwifi.conf
options iwlwifi 11n_disable=1 swcrypto=1
Если скорость исходящего соединения в режиме 802.11n слишком низкая, скажем, 20 Мбит/с, попробуйте включить агрегирование антенн:
/etc/modprobe.d/iwlwifi.conf
options iwlwifi 11n_disable=8
Название параметра 11n_disable
не должно ввести вас в заблуждение — при установке его в значение 8
ничего не отключается, но запускается режим агрегации. [14], [15]
Если это не сработало, попробуйте отключить режим энергосбережения беспроводного адаптера.
Решить проблемы с помощью рекомендаций выше получается не всегда. У некоторых наладить беспроводную связь помогло отключение одной из опций в настройках маршрутизатора. По ссылке вы найдёте список опций устройств на частоте 5MHz, с которыми имеет смысл поэкспериментировать.
Если ваша точка доступа 802.11ax (WiFi 6) имеет проблемы с обнаружением маяков или надёжностью соединения, то изучите следующую статью Intel.
11n_disable=0
также прекратит работу 802.11ac; соединения будут устанавливаться только по медленным протоколам (802.11a в полосе 5GHz или 802.11b/g в полосе 2.4 GHz).Bluetooth Coexistence
Если у вас проблемы с подключением bluetooth-наушников и низкая скорость входящего соединения, попробуйте отключить режим Bluetooth Coexistence [16]:
/etc/modprobe.d/iwlwifi.conf
options iwlwifi bt_coex_active=0
Прошивка выводит трассировку стека
При проблемах драйвер может начать выводить трассировку стека и сообщения об ошибках:
# dmesg
Microcode SW error detected. Restarting 0x2000000.
Чтобы решить эту проблему, выполните откат пакета linux-firmware или переименуйте последнюю версию прошивки вашего устройства, чтобы загрузилась старая версия (при условии, что пакет не входит в список игнорируемых).
Отключение мерцания LED-индикатора
iwlegacy
и iwlwifi
.Настройка модуля по умолчанию — мигание LED при работе. Некоторые находят это неприятным. Чтобы настроить постоянное свечение индикатора при работе Wi-Fi, можно использовать временные файлы:
/etc/tmpfiles.d/phy0-led.conf
w /sys/class/leds/phy0-led/trigger - - - - phy0radio
Чтобы изменения заработали, выполните systemd-tmpfiles --create phy0-led.conf
или перезагрузитесь.
Чтобы посмотреть все возможные триггеры LED-индикатора выполните
# cat /sys/class/leds/phy0-led/trigger
/sys/class/leds/phy0-led
, попробуйте параметр led_mode="1"
. Он должен работать для драйверов iwlwifi
и iwlegacy
.Broadcom
Изучите статью Broadcom wireless.
Other drivers/devices
Tenda w322u
Для этой карты Tenda подходят рекомендации для rt2870sta
. См. #rt2x00.
orinoco
Драйвера входят в пакет ядра и должны быть уже установлены.
Среди чипсетов Orinoco есть чипы Hermes II. Для них можно использовать драйвер wlags49_h2_cs
вместо orinoco_cs
, если нужна поддержка WPA. Чтобы использовать драйвер, сначала установите запрет загрузки orinoco_cs
.
prism54
Драйвер p54
входит в ядро, но вам придётся загрузить прошивку карты с сайта и установить её в каталог /usr/lib/firmware
.
prism54
, который может конфликтовать с более новыми драйверами (p54pci
или p54usb
). Убедитесь, что установлен запрет загрузки prism54
.ACX100/111
Пакеты: tiacx
tiacx-firmware
(удалены из официальных репозиториев и AUR).
См. также официальную страницу проекта.
zd1211rw
zd1211rw — драйвер для ZyDAS ZD1211 802.11b/g USB WLAN чипсетов. В настоящее время включен в ядро. Список поддерживаемого оборудования можно найти здесь. Предварительно придётся установить файлы прошивки из пакета zd1211-firmwareAUR.
hostap_cs
Host AP — драйвер Linux для беспроводных карт на основе чипсета Intersil's Prism2/2.5/3. Драйвер включён в ядро Linux.
ndiswrapper
Ndiswrapper — скрипт-обёртка, который позволяет использовать некоторые драйвера Windows для Linux. Вам потребуются файлы .inf
и .sys
из драйвера Windows.
*.exe
, то можно воспользоваться пакетом cabextract.Чтобы настроить ndiswrapper, выполните следующие шаги:
1. Установите пакет ndiswrapper-dkms.
2. Установите драйвер в каталог /etc/ndiswrapper/*
:
# ndiswrapper -i filename.inf
3. Просмотрите список установленных драйверов ndiswrapper:
$ ndiswrapper -l
4. Сохраните настройки ndiswrapper в файл /etc/modprobe.d/ndiswrapper.conf
:
# ndiswrapper -m # depmod -a
После установки ndiswrapper необходимо настроить автоматическую загрузку модуля при запуске системы.
Наконец, нужно добавить ndiswrapper в Linux ядро и убедиться, что он работает:
# modprobe ndiswrapper # iwconfig
В списке интерфейсов должен появиться беспроводной интерфейс wlan0. В случае каких-либо проблем полезную информацию можно найти на страницах ndiswrapper howto и ndiswrapper FAQ.
backports-patched
Пакет backports-patchedAUR[ссылка недействительна: package not found] содержит драйвера из новых версий ядра, предназначенные для бэкпортирования (backport) в системах со старым ядром. Проект стартовал в 2007 году и в разные периоды назывался compat-wireless, compat-drivers и (в настоящее время) backports.
Если вы используете старую версию ядра и имеете проблемы с беспроводным соединением, то драйвера из этого пакета могут помочь.
Смотрите также
- The Linux Wireless project — документация по беспроводной (IEEE-802.11) подсистеме Linux.
- Aircrack-ng guide on installing drivers — установка драйверов для беспроводных сетевых интерфейсов.
- Wireless Device Database Wiki (Этот форк хостится на wi-cat.ru с тех пор как оригинальная wiki была отключена. Есть также две (неполные) версии: TechInfoDepot, deviwiki)