Wi-Fi

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Wi-Fi and the translation is 89% complete.
Outdated translations are marked like this.
Resources

Эта статья описывает настройку беспроводных сетевых устройств WiFi.

Тем, кому требуется соединение WiFi во время установки Gentoo, следует иметь в виду, что минимальный установочный компакт-диск Gentoo содержит только некоторые драйвера и предоставляет только wpa_cli (не wpa_gui) для настройки соединений WPA/WPA2/Enterprise.

Если минимальный установочный компакт-диск не содержит требуемые драйвера или желательно использование графического интерфейса вместо wpa_supplicant, выберите другой live CD, например, System Rescue CD. Имейте в виду, что в случае использования не-Gentoo live CD могут понадобиться дополнительные действия.

Определение аппаратного обеспечения

Прежде всего, определите устройства WiFi. Для этого можно воспользоваться командами lspci или lsusb.

Если в загруженной Linux-системе (LiveCD/USB) присутствует соединение WiFi:

root #lspci -k

Драйвер можно увидеть в строке, которая начинается с Kernel driver in use:.

Если в загруженной системе отсутствует соединение WiFi, выведите весь список идентификаторов устройств, присутствующих в системе. Впоследствии этим списком можно воспользоваться для определения нужного драйвера:

root #lspci -n

Скопируйте список идентификаторов PCIID из вывода этой команды.

Устройства USB можно определить похожим образом. Сначала выведите список устройств:

user $lsusb

Эта команда выводит идентификатор PCI ID, производителя, марку, модель и/или чипсет каждого устройства USB, присоединенного к системе. Из всех этих данных чипсет может дать наиболее важную информацию. Поиск в интернете по запросу linuxwireless.org <чипсет> часто является наиболее быстрым способом найти драйвер USB NIC и название прошивки.

Также можно воспользоваться командой lshw:

root #lshw | grep -i driver | perl -pe 's/^.*driver=(\S+).*$/$1/g;' | sort -u

Эта команда выводит список драйверов всех устройств, как PCI, так и USB.

Ядро

Теперь, когда драйвера определены, можно приступить к настройке ядра Linux.

IEEE 802.11

Включите по крайней мере cfg80211 (CONFIG_CFG80211) и mac80211 (CONFIG_MAC80211).

ЯДРО Пример для Linux 4.19
[*] Networking support  --->
    [*] Wireless  --->
        <M>   cfg80211 - wireless configuration API
        [ ]     nl80211 testmode command
        [ ]     enable developer warnings
        [ ]     cfg80211 certification onus
        [*]     enable powersave by default
        [ ]     cfg80211 DebugFS entries
        [ ]     support CRDA
        [ ]     cfg80211 wireless extensions compatibility
        <M>   Generic IEEE 802.11 Networking Stack (mac80211)
        [*]   Minstrel
        [*]     Minstrel 802.11n support
        [ ]       Minstrel 802.11ac support
              Default rate control algorithm (Minstrel)  --->
        [ ]   Enable mac80211 mesh networking (pre-802.11s) support
        -*-   Enable LED triggers
        [ ]   Export mac80211 internals in DebugFS
        [ ]   Trace all mac80211 debug messages
        [ ]   Select mac80211 debugging features  ----

Minstrel с его поддержкой 802.11n является алгоритмом управления скоростью. Некоторым беспроводным драйверам может понадобится его поддержка.

Важно
В случае, если wireless configuration API (CONFIG_CFG80211) скомпилирована в качестве части ядра (<*>), а не в виде модуля (<M>), драйвер не сможет загрузить regulatory.db из /lib/firmware, вследствие чего будет нарушена поддержка специфичных для отдельных стран особенностей. Установите CONFIG_CFG80211=m или добавьте regulatory.db и regulatory.db.p7s (из net-wireless/wireless-regdb) в CONFIG_EXTRA_FIRMWARE.

WEXT

Параметр «cfg80211 wireless extensions compatibility», также известный как WEXT, поддерживает устаревшие wireless-tools и iwconfig.

ЯДРО
[*] Networking support  --->
    [*] Wireless  --->
        [*]     cfg80211 wireless extensions compatibility

Драйвера устройств

Далее необходимо включить соответствующие параметры ядра, в зависимости от драйверов и устройств, определенных ранее. Рекомендуется собирать драйвера в виде модулей. Не забудьте включить поддержку алгоритма шифрования AES, если беспроводная сеть использует шифрование WPA или WPA2.

ЯДРО
Device Drivers  --->
    [*] Network device support  --->
        [*] Wireless LAN  --->
 
            Select the driver for your Wifi network device, e.g.:
            <M> Broadcom 43xx wireless support (mac80211 stack) (b43)
            [M]    Support for 802.11n (N-PHY) devices
            [M]    Support for low-power (LP-PHY) devices
            [M]    Support for HT-PHY (high throughput) devices
            <M> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi)
            <M>    Intel Wireless WiFi DVM Firmware support                             
            <M>    Intel Wireless WiFi MVM Firmware support
            <M> Intel Wireless WiFi 4965AGN (iwl4965)
            <M> Intel PRO/Wireless 3945ABG/BG Network Connection (iwl3945)
            <M> Ralink driver support  --->
                <M>   Ralink rt27xx/rt28xx/rt30xx (USB) support (rt2800usb)
 
-*- Cryptographic API --->
    Accelerated Cryptographic Algorithms for CPU (x86)  --->
       <*> Ciphers: AES, modes: ECB, CBC, CTS, CTR, XTR, XTS, GCM (AES-NI)
Важно
Если драйвер собран не в виде модуля (<M>), а встроен в ядро (<*>), прошивку необходимо также встроить в ядро. Не забудьте пересобрать ядро после изменения его конфигурации.

Поддержка LED

Для того, чтобы включить LED triggers для различных событий приема и передачи пакетов, соберите ядро со следующими параметрами:

ЯДРО
Device Drivers  --->
    [*] LED Support  --->
        <*>   LED Class Support
 
[*] Networking support  --->
    [*] Wireless  --->
        [*] Enable LED triggers

Прошивка

Помимо драйвера ядра, некоторым чипсетам (особенно современным) также требуется прошивка. Если она нужна, найдите ее в следующем списке и установите:

root #emerge --ask sys-kernel/linux-firmware
Устройство WiFi Драйвер Прошивка Примечания
Atheros AR9271 и AR7010 ath9k_htc sys-kernel/linux-firmware
Broadcom 43xx wireless support b43 / b43legacy sys-firmware/b43-firmware Совместим с aircrack-ng, вероятно, самый лучший выбор when a bcm43xx device is supported
Broadcom PCIe и SDIO/USB устройства brcmsmac / brcmfmac sys-kernel/linux-firmware Отсутствует поддержка энергосбережения, LED и других возможностей
Broadcom 43xx wireless support wl net-wireless/broadcom-sta Пропиетарный код, нет режимов AP и Monitor, Сравнение драйверов bcm43xx
Intel PRO/Wireless 2200BG ipw2200 sys-firmware/ipw2200-firmware
Intel PRO/Wireless 3945ABG/BG iwlegacy sys-kernel/linux-firmware
Intel Wireless WiFi 4965AGN iwl4965 sys-kernel/linux-firmware
Остальные беспроводные устройства Intel iwlwifi sys-kernel/linux-firmware См. статью iwlwifi для дальнейшей информации.
Qualcomm Atheros QCA6174 ath10k_pci ath10k-firmware См. Qualcomm Atheros QCA6174
Ralink/MediaTek USB-устройства Например, rt2800usb sys-kernel/linux-firmware
Realtek RTL8191SE & RTL8192SE rtl8192se sys-kernel/linux-firmware
Realtek 8723AU/8723BU/8191EU/8192EU/8188EU/8188RU rtl8xxxu sys-kernel/linux-firmware Может потребоваться параметр ядра CONFIG_RTL8XXXU_UNTESTED для отображения всех устройств. Только проверенные разработчиками ядра устройства включены по умолчанию.

Если драйверу требуется прошивка, но ее нет в списке, ее понадобится скачать вручную и поместить в /lib/firmware.

Имена сетевых устройств

Предупреждение
This section is obsolete. See Udev#Optional: Disable_or_override_predictable_network_interface_naming for updated instructions.

Имена сетевых устройств, такие как eth0 или wlan0 и так далее, как предусмотрено ядром, обычно меняются во время загрузки системы (смотрите dmesg) с помощью /lib/udev/rules.d/80-net-name-slot.rules правила udev.

Чтобы сохранить классическое именование это правило может быть перезаписано пустым файлом с таким же именем в каталоге /etc/udev/rules.d:

root #touch /etc/udev/rules.d/80-net-name-slot.rules

Беспроводной supplicant

Если в беспроводной сети установлены WPA или WPA2, то необходимо использовать wireless supplicant, например wpa_supplicant или iwd. Больше информации по настройке беспроводной сети в Gentoo Linux можно прочитать в разделе беспроводная сеть в Руководстве пользователя Gentoo.


Тестирование

После обновления ядра и перезагрузки или после загрузки модулей, устройства можно проверить на доступность с помощью следующих методов:

Файловая система /sys

Узнать имя устройства можно с помощью просмотра каталога /sys/class/net используя ls -al или команду tree (из пакета app-text/tree):

user $tree /sys/class/net
/sys/class/net/
├── enp2s14 -> ../../devices/pci0000:00/0000:00:1e.0/0000:02:0e.0/net/enp2s14
├── lo -> ../../devices/virtual/net/lo
├── sit0 -> ../../devices/virtual/net/sit0
└── wlp8s0 -> ../../devices/pci0000:00/0000:00:1c.0/0000:08:00.0/net/wlp8s0

Команда ip

Чтобы убедится, что беспроводная карта обнаружена, а также чтобы узнать имя карты, выполните следующую команду ip:

user $ip addr
3: wlan0:   ...

Команда ifconfig

Команда ifconfig предоставляется пакетом sys-apps/net-tools. Используйте ifconfig -a, чтобы вывести список всех обнаруженных сетевых карт, даже если они не включены/активированы:

user $ifconfig -a
wlan0     ...

Сетевая карта может быть активирована так:

root #ifconfig -v wlan0 up
SIOCSIFFLAGS: Operation not possible due to RF-kill
WARNING: at least one error occurred. (-1)

В этом примере включить беспроводную карту не удалось, поскольку был установлен radio frequency kill state (RF-kill). Как правило, он устанавливается в целях энергосбережения и избежания случайного соединения с беспроводными сетями.

Команда iw

Если драйвер беспроводной сетевой карты поддерживает стэк nl80211, команда iw, которая есть в паете net-wireless/iw, может отобразить обнаруженную беспроводную сетевую карту:

root #iw dev
   phy#0
	Interface wlan0
		ifindex 4
		type managed

dmesg

Проверьте вывод команды dmesg.

user $dmesg | grep -i -E 'xx:xx.x|wlan|iwl|80211'

Не забудьте заменить

Устранение проблем

Обнаружение недостающей прошивки

При загрузке системы ядро попытается опробовать прошивки, подходящие для каждой карты. Это можно обнаружить, просмотрев вывод dmesg или journalctl (systemd) для текущей загрузки.

user $journalctl -b 0 --dmesg | grep -i firmware
Oct 05 14:51:09 maffbook kernel: Spectre V2 : Enabling Restricted Speculation for firmware calls
Oct 05 14:51:09 maffbook kernel: ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
Oct 05 14:51:09 maffbook kernel: sgx: [Firmware Bug]: Unable to map EPC section to online node. Fallback to the NUMA node 0.
Oct 05 14:51:09 maffbook kernel: i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4)
Oct 05 14:51:09 maffbook kernel: ACPI: video: [Firmware Bug]: ACPI(PEGP) defines _DOD but not _DOS
Oct 05 14:51:09 maffbook kernel: iwlwifi 0000:00:14.3: loaded firmware version 46.6b541b68.0 9000-pu-b0-jf-b0-46.ucode op_mode iwlmvm
Oct 05 14:51:09 maffbook kernel: psmouse serio1: elantech: assuming hardware version 4 (with firmware version 0x5f2001)
Oct 05 14:51:09 maffbook kernel: Bluetooth: hci0: Firmware revision 0.1 build 6 week 12 2021
Oct 06 17:26:26 maffbook kernel: Bluetooth: hci0: Minimum firmware build 1 week 10 2014
Oct 06 17:26:26 maffbook kernel: Bluetooth: hci0: Found device firmware: intel/ibt-17-16-1.sfi
Oct 06 17:26:28 maffbook kernel: Bluetooth: hci0: Waiting for firmware download to complete
Oct 06 17:26:28 maffbook kernel: Bluetooth: hci0: Firmware loaded in 1484394 usecs
Oct 06 17:26:28 maffbook kernel: Bluetooth: hci0: Firmware revision 0.1 build 6 week 12 2021

Адаптер Wi-Fi не может найти и подключиться к сети 5 GHz

Некоторые сети с WPA или WPA2 до сих пор могут использовать для подключения устаревший протокол TKIP вместо AES. Попробуйте установить net-wireless/wpa_supplicant вместе с USE-флагом tkip и перезагрузите систему.

Темы на форуме

Смотрите также