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[устаревшая ссылка 2024-10-12 ⓘ].
Команда 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 на странице поддержки[устаревшая ссылка 2024-10-19 ⓘ]. В ядро версии 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[устаревшая ссылка 2024-10-12 ⓘ].
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[устаревшая ссылка 2024-10-12 ⓘ] утверждает, что динамическое энергосбережение включено для одноплатных 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[устаревшая ссылка 2024-10-12 ⓘ] — драйвер для чипов 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][устаревшая ссылка 2024-10-12 ⓘ]:
/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][устаревшая ссылка 2024-10-12 ⓘ]. Предварительно придётся установить файлы прошивки из пакета 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)