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
, чтобы убедиться, что сетевой интерфейс был создан; обычно название беспроводного интерфейса начинается с букв «wl», например, wlan0
или wlp2s0
. Затем включите интерфейс командой
# 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, в котором также содержится список поддерживаемого ядром оборудования.
Имейте в виду, что в продуктах некоторых производителей могут попадаться разные чипы даже в продуктах с одинаковым идентификатором. Значимыми являются только usb-id (для устройств USB) или pci-id (для устройств PCI).
Если ваша беспроводная карта есть в одном из списков выше, перейдите в раздел #Решение проблем с драйверами и прошивками. В нём содержатся инструкции по установке драйверов и прошивок на некоторые редкие беспроводные карты. Затем проверьте состояние драйвера снова.
Если вашей беспроводной карты нет в списках, то скорее всего она поддерживается только в Windows (некоторые Broadcom, 3com и др.). В этом случае попробуйте #ndiswrapper.
Утилиты
Управление беспроводными сетевыми интерфейсами, как и всеми прочими, осуществляется посредством входящей в пакет iproute2 утилиты ip.
Управление беспроводным соединением может осуществляться с помощью сетевого менеджера, который будет использовать wpa_supplicant или iwd для аутентификации беспроводного соединения, либо с помощью wpa_supplicant или iwd напрямую. Для настройки на более низком уровне, а также при использовании устаревшего драйвера или устаревшего метода аутентификации существуют iw и устаревший wireless_tools.
Сравнение iw и wireless_tools
Утилита | Пакет | WEXT | nl80211 | WEP | WPA/WPA2/WPA3 | Archiso [1] |
---|---|---|---|---|---|---|
wireless_tools1 | wireless_tools | Да | Нет | Да | Нет | Да |
iw | iw | Нет | Да | Да | Нет | Да |
- Устарела.
Имейте в виду, что некоторые старые драйверы поддерживают только WEXT.
Ниже представлено сравнение некоторых команд утилит 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 интерфейс set type ap
) iw может вернуть ошибку вида
You need to run a management daemon, e.g. hostapd, see https://wireless.wiki.kernel.org/en/users/documentation/hostapd for more information on how to do that.Для обхода этой ошибки нужно использовать тип
__ap
(iw интерфейс set type __ap
).Соединение с точкой доступа
Необходимо привязать устройство к точке доступа и ввести ключ в зависимости от типа шифрования:
- Без шифрования
# iw dev интерфейс connect "ваш_essid"
- WEP
- С использованием шестнадцатеричного ключа (формат ключа определится автоматически, поскольку WEP-ключ имеет фиксированную длину):
# iw dev интерфейс connect "ваш_essid" key 0:ваш_ключ
- С использованием ASCII-ключа, указав третий ключ в качестве ключа по умолчанию (ключи нумеруются с нуля, всего возможно до четырёх ключей):
# iw dev интерфейс connect "ваш_essid" key d:2:ваш_ключ
- С использованием шестнадцатеричного ключа (формат ключа определится автоматически, поскольку WEP-ключ имеет фиксированную длину):
- Другое
- iw может работать только с WEP. Для подключения с использованием другого типа шифрования смотрите раздел #Аутентификация.
Вне зависимости от использованного способа, проверьте соединение:
# iw dev интерфейс link
Аутентификация
Есть два основных варианта для аутентификации Wi-Fi в Linux: wpa_supplicant и iwd.
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 для лиц, занятых в сфере научно-исследовательской деятельности, высшего образования и дополнительного профессионального образования.
- Перед применением любых настроек, предложенных в этом разделе, рекомендуется сначала проверить их со специалистами вашего учреждения. Предложенные здесь профили настроек предлагаются безо всяких гарантий на предмет работоспособности или соответствия каким-либо требованиям безопасности.
- При хранении профилей соединения в незашифрованном виде рекомендуется оставить доступ на чтение только суперпользователю, выполнив команду
chmod 600 профиль
от имени root.
Ручная/автоматическая настройка
- wpa_supplicant настраивается напрямую в его файле настроек или посредством интерфейса; используется вместе с клиентом DHCP. Примеры настроек приведены в файле
/usr/share/doc/wpa_supplicant/wpa_supplicant.conf
. - iwd#WPA Enterprise.
- NetworkManager может создавать профили WPA2 Enterprise с помощью nmcli, nmtui или графических интерфейсов.
- ConnMan требует создания отдельного файла настроек перед соединением с беспроводной сетью. Подробности можно найти в руководстве connman-service.config(5) и в статье ConnMan#Connecting to eduroam (802.1X).
- 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, и iwd поддерживают WPA3 Personal.
WPA3 Enterprise
WPA3 Enterprise — один из режимов Wi-Fi Protected Access.
wpa_supplicant (с версии 2:2.10-8) поддерживает WPA3 Enterprise. Смотрите FS#65314.
Советы и рекомендации
Соответствие регламентам
Регулятивный домен (regulatory domain) — страны, совместно использующие общий регламент радиосвязи, определённый одним из регулятивных органов (FCC в США, ETSI для стран Европы и т.д.). С помощью параметра regdomain драйвер беспроводной сетевой платы настраивается в соответствии с местными законами. Regdomain использует двухбуквенные коды стран в соответствии с ISO 3166-1 alpha-2. Например, regdomain для США обозначается «US», для России — «RU», и т.д.
Regdomain определяет доступность беспроводных каналов. Так, на частоте 2.4GHz разрешено использовать каналы 1-11 в США, 1-14 — в Японии, и каналы 1-13 в большей части остального мира. На частоте 5GHz правила доступа к каналам несколько сложнее. В Википедии можно найти подробную информацию о доступности каналов: Wikipedia:List of WLAN channels, Wikipedia:ru:Wi-Fi#Разрешённые частоты.
Принадлежность к домену также определяет предельное значение эквивалентной изотропно-излучаемой мощности (Equivalent Isotropically Radiated Power, EIRP) беспроводных устройств. Это значение определяет мощность сигнала и измеряется в единицах дБм или мВт. На частоте 2.4GHz максимальное значение мощности составляет 30дБм в США и Канаде, 20дБм в большинстве стран Европы, и 20-30дБм в остальном мире. На частоте 5GHz максимумы обычно ниже. Допустимые значения мощности можно найти в этой базе данных (значения дБм во втором наборе скобок в каждой линии).
В некоторых случаях может быть полезно указать неверный regdomain — например, чтобы получить возможность осуществлять передачу через неиспользуемый канал, если остальные каналы перегружены, или чтобы повысить мощность и, как следствие, дальность передачи. Однако делать это не рекомендуется, поскольку это приведёт к нарушению местного законодательства и может нарушить работу других радио-устройстств.
Если установлен пакет wireless-regdb, ядро будет загружать базу данных напрямую. Для прямой загрузки ядро, в целях безопасности, должно иметь включенную настройку CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS
, чтобы обеспечить криптографическую проверку базы данных. Она включена для стандартного ядра Arch, но если вы используете альтернативное ядро или компилируете его сами, то проверьте это. Более подробную информацию можно найти в этом руководстве.
Для настройки regdomain установите пакет wireless-regdb и перезагрузитесь, затем отредактируйте /etc/conf.d/wireless-regdom
, раскомментировав нужный домен.
Чтобы временно назначить regdomain (например, для США):
# iw reg set US
Узнать текущий регуляторный домен:
$ iw reg get
В некоторых случаях настройку regdomain изменить не получится. В некоторых устройствах параметр домена зашит в прошивку/EEPROM, что ограничивает поведение устройства. В данном случае изменение домена в ПО может только ужесточить ограничения, но не ослабить их. Например, китайское (CN) устройство может быть настроено на домен US, но поднять максимум EIRP с 20дБм до разрешённого в США значения 30дБм не получится.
Чтобы проверить, задан ли домен в прошивке устройства Atheros, выполните команду:
# dmesg | grep ath:
Для других чипсетов в качестве паттерна поиска можно указать "EEPROM", "regdomain" или просто название драйвера устройства.
Чтобы убедиться, что смена домена прошла успешно, и узнать количество доступных каналов и их разрешённую мощность, выполните
$ iw list | grep -A 15 Frequencies:
wpa_supplicant также может управлять доменом посредством строки country=
в файле /etc/wpa_supplicant/wpa_supplicant.conf
В модуле ядра cfg80211 можно настроить домен, добавив опцию options cfg80211 ieee80211_regdom=JP
. Это часть старой реализации технологии регулятивного домена.
Предостережения Rfkill
Во многих ноутбуках присутствует аппаратный переключатель (или кнопка) питания беспроводной карты, однако она может быть также заблокирована и ядром. Этим можно управлять через rfkill(8). Чтобы посмотреть текущий статус:
$ rfkill
ID TYPE DEVICE SOFT HARD 0 bluetooth hci0 unblocked unblocked 1 wlan phy0 unblocked unblocked
Если карта заблокирована аппаратно (hard-blocked), используйте переключатель (кнопку), чтобы разблокировать её. Если же карта заблокирована не аппаратно, a программно (soft-blocked), используйте следующую команду:
# rfkill unblock wlan
rfkill
.Включение/выключение беспроводных карт посредством аппаратных переключателей происходит с помощью модулей ядра. Зачастую это модули WMI. При выходе новых моделей сетевых карт их драйвера могут отсутствовать в последнем стабильном релизе ядра. В этом случае стоит поискать информацию в багтрекере ядра и сообщить название модели сопроводителю соответствующего модуля, если этого ещё никто не сделал.
Смотрите также дополнительную информацию о Rfkill: [2].
Энергосбережение
Смотрите раздел Управление питанием#Сетевые интерфейсы.
GitHub-репозиторий от morrownr
В GitHub-репозитории USB-WiFi от morrownr содержится различная информация о различных Wi-Fi адаптерах и чипсетах, включая тесты производительности, информацию о драйверах и общую информацию. Также репозиторий содержит информацию о PCIe-адаптерах. Рекомендуется к просмотру, особенно если вы не уверены, какой адаптер быстрее, дешевле или лучше совместим с Linux.
Решение проблем
В этом разделе содержатся основные рекомендации по решению проблем, не связанных непосредственно с драйверами и прошивками. Для получения такой информации смотрите следующий раздел #Решение проблем с драйверами и прошивками.
Временный доступ к интернету
Если с сетевой платой возникли проблемы и нужен доступ в интернет, например, чтобы загрузить определённое ПО или задать вопрос на форумах, можно раздать интернет на компьютер с 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 для проводного интерфейса, но не можете для беспроводного, попробуйте отключить #Энергосбережение вашей беспроводной карты (укажите
off
вместоon
).
- Если вы получаете timeout ошибку из-за waiting for carrier проблемы, возможно вам понадобится установить канал в
auto
для конкретного устройства:
# iwconfig wlan0 channel auto
Перед изменением канала убедитесь, что беспроводной интерфейс отключен (down). После смены канала включите его снова (up).
Не выполняется разрешение хоста по действительному 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
Если журнал содержит сообщение wlan0: deauthenticating from MAC by local choice (reason=3)
и произошёл разрыв Wi-Fi соединения, то причина скорее всего кроется в слишком агрессивных настройках энергосбережения вашей беспроводной карты. Попробуйте отключить #Энергосбережение (укажите опцию off
вместо on
).
Если у вашей карты нет энергосберегающего режима, проверьте настройки энергопотребления BIOS. Отключение управления энергопотреблением PCI-Express в BIOS на Lenovo W520 решило эту проблему.
Причина №2
Если происходят частые отключения и журнал содержит сообщение вроде
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). Соединения, установленные по такому каналу, могут пострадать от помех, создаваемых находящимся неподалёку погодным радаром.
- На стороне клиента попробуйте отключить 5 GHz и оставить только 2.4 GHz вместо автоматического выбора (это уменьшит пропускную способность, но может повысить стабильность на расстоянии).
- Отключите полосу пропускания
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, которое будет делать это при каждой загрузке системы, смотрите #Энергосбережение.
Причина №8
Если при подключении к mesh-сети (например, WiFi6) наблюдаются постоянные перебои, а в журнале имеются сообщения вида:
# journalctl -b
kernel: wlan0: disconnect from AP aa:bb:cc:dd:ee:ff for new auth to 11:22:33:44:55:66
Это проблемы с роумингом. В зависимости от способа подключения и рассматриваемой проблемы можно:
- заблокировать BSSID (в примере выше это
aa:bb:cc:dd:ee:ff
) в NetworkManager, если роуминг нежелателен (смотрите раздел NetworkManager#Regular network disconnects, latency and lost packets (WiFi)); - настроить параметр
bgscan
в wpa_supplicant#Roaming.
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
[5]. - Некоторые устройства имеют широкий набор опций, настроить их можно с помощью входящей в пакет wireless_tools утилиты iwpriv. Документацию можно найти в tar-архиве с исходниками от Ralink.
rt3090
Для устройств с чипсетом rt3090 можно использовать драйвер rt2800pci
, однако качественная работа не гарантирована (например, временами не удаётся получить скорость выше 2 Мбит/с).
rt3290
Чипсет rt3290 распознаётся модулем ядра rt2800pci
, однако у некоторых могут возникнуть проблемы. В таких случаях можно попробовать вернуться к патченым драйверам Ralink.
rt3573
Чипсет 2012 года. Для стабильной работы могут потребоваться проприетарные драйвера Ralink, которые используются многими производителями беспроводного оборудования. Тема на форуме: Belkin N750 DB wireless usb adapter.
mt7612u
Чипсет 2014 года, выпущенный под новым коммерческим именем Mediatek. Есть варианты чипсетов AC1200 или AC1300. Производитель предлагает драйвера для Linux на странице поддержки. В ядро версии 5.5 был добавлен драйвер mt76
.
Realtek
Список чипсетов Realtek и их спецификации: [6].
rtl8192cu
Драйвер для этого чипсета включён в состав ядра, но иногда появляются проблемы с установкой соединения (хотя сканирование активных сетей работает).
В драйвер 8192cu-dkmsAUR вошли многие исправления; установите его, если входящий в состав ядра драйвер работает плохо.
rtl8723ae/rtl8723be
Модули rtl8723ae
и rtl8723be
входят в mainline-ядро Linux.
На картах с этими чипсетами возможны ошибки в работе функции энергосбережения. Это проявляется в случайных разрывах соединения, которые не обнаруживаются высокоуровневыми сетевыми менеджерами (netctl, NetworkManager). Обнаружить ошибку можно командами dmesg -w
или journalctl -f
, найдя сообщения, относящиеся к энергосбережению (powersave) и модулю rtl8723ae
/rtl8723be
. Если это ваш случай, используйте параметр модуля ядра fwlps=0
, чтобы предотвратить «засыпание» карты и разрывы соединения.
Если у вас проблемы с качеством сигнала, возможно, у вашего устройства работает только одна антенна, а программный автовыбор антенны не работает. Вы можете вручную выбрать рабочую антенну параметрами ядра ant_sel=1
или ant_sel=2
. [7]
rtl88xxau
Чипсеты Realtek rtl8811au/rtl8812au/rtl8814au/rtl8821au разработаны для различных USB-адаптеров в диапазоне от AC600 до AC1900. Драйвера к ним содержатся в нескольких пакетах, перечисленных ниже; все они требуют DKMS (пакет dkms и заголовочные файлы ядра).
Чипсет | Пакет | Примечания |
---|---|---|
rtl8811au, rtl8812au, rtl8821au | rtl88xxau-aircrack-dkms-gitAUR | Модули ядра aircrack-ng для чипсетов 8811au, 8812au и 8821au с режимом мониторинга и поддержкой инъекций. |
rtl8812au | rtl8812au-dkms-gitAUR | Последний официальный драйвер Realtek, только для rtl8812au. |
rtl8811au, rtl8821au | rtl8821au-dkms-gitAUR | Новейшая версия драйверов для rtl8821au. |
rtl8814au | rtl8814au-dkms-gitAUR | Возможно, работает также и для rtl8813au. |
rtl8811cu/rtl8821cu
Пакет rtl8821cu-dkms-gitAUR содержит модуль ядра для чипсетов Realtek 8811cu и 8821cu.
Для него требуется фреймворк DKMS, поэтому убедитесь, что необходимые заголовочные файлы ядра установлены.
Если даже с загруженным модулем 8821cu
интерфейс не работает, попробуйте вручную задать параметр модуля ядра rtw_RFE_type
[8][9], например rtw_RFE_type=0x26
. Другие значения тоже могут работать.
rtl8821ce
Пакет rtl8821ce-dkms-gitAUR содержит модуль ядра для чипсета Realtek 8821ce ноутбука Asus X543UA.
Для него требуется фреймворк DKMS, поэтому убедитесь, что необходимые заголовочные файлы ядра установлены.
rtl8821ce
, предоставляемый компанией Realtek, не работает в Linux ≥ 5.9. Версия из AUR более предпочтительна. Смотрите сообщение на GitHub. С помощью lspci -k
проверьте, используется ли стандартный драйвер (rtw88_8821ce
). Если да, то заблокируйте его и перезагрузитесь.rtl8822bu
В пакеты rtl88x2bu-dkms-gitAUR входит модуль ядра для чипсета Realtek 8822bu, используемого в адаптерах Edimax EW7822ULC USB3, Asus AC53 Nano USB 802.11ac и TP-Link Archer T3U.
Для него требуется фреймворк DKMS, поэтому убедитесь, что необходимые заголовочные файлы ядра установлены.
rtl8xxxu
Проблемы с модулем ядра rtl8xxxu
могут быть решены компиляцией стороннего модуля для специфического чипсета. Исходный код можно найти в GitHub-репозитории.
Некоторые драйвера могут быть уже добавлены в AUR, например, rtl8723bu-dkms-gitAUR.
RTW88
Недавно был опубликован набор патчей для модуля ядра RTW88, который, вероятно, однажды войдёт в mainline.
Ядра, настроенные и скомпилированные с этим набором патчей, будут поддерживать большинство устройств на чипе RTW88. Ядра linux-zen и linux-zen-gitAUR уже используют эти патчи, и в этих пакетах есть собранный модуль.
Драйвер поддерживает 882BE, 8822BU, 8822CE, 8822CU, 8723DE, 8723DU, 8821CE и 8821CU.
RTW89
Модуль RTW89 был добавлен в состав ядра и обеспечивает поддержку новых беспроводных чипсетов Realtek.
Этот драйвер поддерживает 8852AE, 8851BE, 8852BE и 8852CE.
Atheros
Командой проекта MadWifi было создано три драйвера для устройств с чипсетом Atheros:
madwifi
— устаревший драйвер. Не входит в состав ядра Linux начиная с версии 2.6.39.1. [11]ath5k
— более новый драйвер, заменившийmadwifi
. Довольно неплох, но отсутствует поддержка некоторых чипсетов (см. ниже).ath9k
— новейший из этих трёх драйверов, предназначен для последних чипсетов Atheros. Поддерживаются все платы с технологией 802.11n.
Также существуют другие драйвера для устройств Atheros, найти их можно в документации Linux Wireless.
ath5k
Полезные ссылки:
Если веб-страницы временами грузятся очень медленно или если беспроводному устройству не удаётся получить динамический IP-адрес, попробуйте переключиться с аппаратного шифрования на программное, задав параметр модуля ядра nohwcrypt=1
для модуля ath5k
.
У некоторых ноутбуков может возникнуть проблема с 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
).Связаться с разработчиками и обсудить изменения можно через почтовую рассылку.
Энергосбережение
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
iwlegacy
iwlegacy — драйвер для чипов Intel версий 3945 и 4965. Прошивки для них входят в пакет linux-firmware.
Менеджер устройств udev должен загрузить драйвер автоматически, в противном случае загрузите iwl3945
или iwl4965
вручную. Подробнее см. Модули ядра.
Если у вас проблемы с подключением к сети вообще, случайные сбои карты во время загрузки, или просто очень низкое качество связи, попробуйте выключить 802.11n:
/etc/modprobe.d/iwl4965.conf
options iwl4965 11n_disable=1
iwlwifi
iwlwifi — беспроводной драйвер для современных чипов Intel, таких как 5100AGN, 5300AGN и 5350AGN (полный список поддерживаемых устройств). Пакет linux-firmware содержит ряд прошивок, а в пакете linux-firmware-iwlwifi-gitAUR[ссылка недействительна: package not found] можно найти некоторые последние обновления.
Если у вас проблемы с соединением вообще или качество связи очень низкое, попробуйте отключить 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
ничего не отключается, но запускается режим агрегации. [12], [13]
Если это не сработало, попробуйте отключить #Энергосбережение беспроводного адаптера.
Решить проблемы с помощью рекомендаций выше получается не всегда. У некоторых наладить беспроводную связь помогло отключение одной из опций в настройках маршрутизатора. По ссылке вы найдёте список опций устройств на частоте 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 [14]:
/etc/modprobe.d/iwlwifi.conf
options iwlwifi bt_coex_active=0
bt_coex_active
и sw_crypto
были отключены для устройств, обрабатываемых модулем ядра iwlmvm
. Для более старых устройств, обрабатываемых другим модулем iwldvm
, эти параметры по-прежнему включены.Проблемы с прошивкой
При проблемах драйвер может начать выводить трассировку стека и сообщения об ошибках:
# dmesg
Microcode SW error detected. Restarting 0x2000000.
Кроме того, могут возникать различные проблемы (например, проблемы с подключением на частоте 5 GHz, случайные обрывы, отсутствие соединения при возобновлении работы).
Чтобы убедиться, что проблема именно в прошивке, выполните откат пакета linux-firmware.
Если откат помог, переименуйте файлы проблемных драйверов, чтобы вместо них загружались более старые версии (это позволит обновлять пакет linux-firmware, поскольку он нужен и для других устройств тоже):
# for i in {64..73} ; do mv /usr/lib/firmware/iwlwifi-ty-a0-gf-a0-$i.ucode.xz /usr/lib/firmware/iwlwifi-ty-a0-gf-a0-$i.ucode.xz.bak ; done
Чтобы не приходилось повторять это при каждом обновлении, используйте массив NoExtract
в pacman.conf
, указав маску для ненужных файлов, чтобы предотвратить их установку. Смотрите pacman (Русский)#Запрет на установку файлов.
Адаптер не обнаруживается после загрузки Windows
Если WiFi адаптер не обнаруживается после работы в Windows, это может быть связано с функцией быстрого запуска Windows (Fast Startup), которая включена по умолчанию. Попробуйте отключить Fast Startup. Смотрите также iwlwifi kernel driver wiki.
Отключение мерцания LED-индикатора
iwlegacy
и iwlwifi
.Настройка модуля по умолчанию — мигание LED при работе. Некоторые находят это неприятным. Чтобы настроить постоянное свечение индикатора при работе Wi-Fi, можно использовать systemd-tmpfiles:
/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.
Другие драйверы/устройства
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
.zd1211rw
zd1211rw — драйвер для ZyDAS ZD1211 802.11b/g USB WLAN чипсетов. В настоящее время включен в ядро. Список поддерживаемого оборудования: [15]. Предварительно придётся установить файлы прошивки из пакета zd1211-firmwareAUR.
hostap_cs
Host AP — драйвер Linux для беспроводных карт на основе чипсета Intersil Prism2/2.5/3. Драйвер включён в ядро Linux.
orinico_cs
, от него могут быть проблемы.ndiswrapper
Ndiswrapper — скрипт-обёртка, который позволяет использовать некоторые драйвера Windows для Linux. Вам потребуются файлы .inf
и .sys
из драйвера Windows.
*.exe
, то можно воспользоваться пакетом cabextract.Чтобы настроить ndiswrapper, выполните следующие шаги:
- Установите пакет ndiswrapper-dkms.
- Установите драйвер в каталог
/etc/ndiswrapper/*
:# ndiswrapper -i filename.inf
- Просмотрите список установленных драйверов ndiswrapper:
$ ndiswrapper -l
- Сохраните настройки ndiswrapper в файл
/etc/modprobe.d/ndiswrapper.conf
:# ndiswrapper -m
# depmod -a
После установки ndiswrapper необходимо настроить автоматическую загрузку модуля при запуске системы.
Проверьте работоспособность ndiswrapper:
# modprobe ndiswrapper # iwconfig
В списке интерфейсов должен появиться беспроводной интерфейс wlan0. В случае каких-либо проблем полезную информацию можно найти на страницах ndiswrapper howto и ndiswrapper FAQ.
Смотрите также
- The Linux Wireless project — документация по беспроводной (IEEE-802.11) подсистеме Linux.
- Aircrack-ng guide on installing drivers — установка драйверов для беспроводных сетевых интерфейсов.
- Wireless Device Database Wiki (Этот форк хостится на wi-cat.ru с тех пор как оригинальная wiki была отключена. Есть также две (неполные) версии: TechInfoDepot, deviwiki)