Вопрос или проблема
Я пытаюсь настроить точку доступа на Raspberry Pi 3, используя внешнюю USB WiFi-карту, hostapd и dnsmasq. Мне удалось это сделать с внутренней WiFi-картой, но когда я пытаюсь переключиться на внешнюю, я получаю следующую ошибку:
$ sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf
Configuration file: /etc/hostapd/hostapd.conf
nl80211: Could not configure driver mode
nl80211: deinit ifname=wlan1 disabled_11b_rates=0
nl80211 driver initialization failed.
wlan1: interface state UNINITIALIZED->DISABLED
wlan1: AP-DISABLED
hostapd_free_hapd_data: Interface wlan1 wasn't started
Я считаю, это из-за того, что по умолчанию hostapd использует драйвер nl80211
. Это вывод команды lsusb
– Bus 001 Device 004: ID 148f:3072 Ralink Technology, Corp. RT3072 Wireless Adapter
. А это вывод команды lshw
*-network:1
description: Wireless interface
physical id: 3
bus info: usb@1:1.4
logical name: wlan1
serial: 98:3f:9f:24:a2:00
capabilities: ethernet physical wireless
configuration: broadcast=yes driver=rt2800usb driverversion=4.14.71-v7+ firmware=0.36 ip=10.100.100.254 link=no m
ulticast=yes wireless=IEEE 802.11
Судя по всему, эта карта использует драйвер rt2080usb
, но когда я пытаюсь указать это в hostapd.conf
и вручную стартовать hostapd
, я получаю следующую ошибку:
$ sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf
Configuration file: /etc/hostapd/hostapd.conf
Line 3: invalid/unknown driver 'rt2080usb'
1 errors found in configuration file '/etc/hostapd/hostapd.conf'
Failed to set up interface with /etc/hostapd/hostapd.conf
Failed to initialize interface
А это мой файл hostapd.conf
:
interface=wlan1
ssid=WiPi
driver=rt2080usb
hw_mode=g
ieee80211n=1
wmm_enabled=1
channel=4
macaddr_acl=0
auth_algs=3
ignore_broadcast_ssid=0
wpa=3
wpa_passphrase=wifipasswordhere
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
ht_capab=[HT20][SHORT-GI-20]
[EDIT] Это вывод команды iwconfig
:
wlan1 IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
Retry short long limit:2 RTS thr:off Fragment thr:off
Power Management:off
wlan0 IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=31 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on
А это вывод команды iw list
:
valid interface combinations:
* #{ AP, mesh point } <= 8,
total <= 8, #channels <= 1
[EDIT 2] Вот такой вывод, когда я запускаю ‘hostapd’:
$ sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf
Configuration file: /etc/hostapd/hostapd.conf
Using interface wlan1 with hwaddr 98:3f:9f:24:a2:00 and ssid "WiPi"
random: Only 16/20 bytes of strong random data available from /dev/random
random: Not enough entropy pool available for secure operations
WPA: Not enough entropy in random pool for secure operations - update keys later when the first station connects
wlan1: interface state UNINITIALIZED->ENABLED
wlan1: AP-ENABLED
А это вывод команды iwconfig
:
wlan1 IEEE 802.11 Mode:Master Tx-Power=20 dBm
Retry short long limit:2 RTS thr:off Fragment thr:off
Power Management:off
А это лог hostapd
, когда я пытаюсь подключиться к своей сети WiPi и запустить speedtest:
$ Configuration file: /etc/hostapd/hostapd.conf
Using interface wlan1 with hwaddr 98:3f:9f:24:a2:00 and ssid "WiPi"
wlan1: interface state UNINITIALIZED->ENABLED
wlan1: AP-ENABLED
wlan1: STA 94:65:2d:d4:e0:5b IEEE 802.11: authenticated
wlan1: STA 94:65:2d:d4:e0:5b IEEE 802.11: associated (aid 1)
wlan1: AP-STA-CONNECTED 94:65:2d:d4:e0:5b
wlan1: STA 94:65:2d:d4:e0:5b RADIUS: starting accounting session 5BEC735C-00000000
wlan1: STA 94:65:2d:d4:e0:5b WPA: pairwise key handshake completed (RSN)
wlan1: AP-STA-DISCONNECTED 94:65:2d:d4:e0:5b
Failed to set beacon parameters
wlan1: INTERFACE-DISABLED
wlan1: INTERFACE-ENABLED
Failed to set beacon parameters
wlan1: INTERFACE-DISABLED
wlan1: INTERFACE-ENABLED
Failed to set beacon parameters
handle_probe_req: send failed
[EDIT 3]: Я запустил hostapd
в режиме отладки sudo hostapd -dd -P /run/hostapd.pid -B -f /tmp/hostapd.log /etc/hostapd/hostapd.conf
и загрузил файл лога на pastebin
Это может помочь:
https://www.ibm.com/developerworks/library/l-wifiencrypthostapd/index.html
https://wiki.gentoo.org/wiki/Hostapd
auth_algs=1 #Ограничить до wpa
wpa=1 #Ограничить до wpa
Также: У вас установлен ieee80211n=1 и hw_mode=g, попробуйте установить ieee80211n=0 или удалить эту опцию и посмотрите, поможет ли это.
Если вы не собираетесь использовать внутреннюю карту вообще, я бы добавил ее в черный список и затем настроил внешнюю для использования с hostapd, или, если установлен GUI, просто используйте опцию настройки AP в диспетчере подключений для того, чтобы делиться проводным подключением. Убедитесь, что все файлы, которые вы изменили, кроме того, что управляет hostapd, возвращены к оригиналу, если вы попробуете один из вышеперечисленных вариантов.
.
Ответ или решение
Настройка точки доступа (AP) на Raspberry Pi 3 с использованием внешнего USB WiFi-адаптера и hostapd может столкнуться с рядом специфических проблем. В данном случае, судя по предоставленной информации, вы пытаетесь использовать внешний адаптер Ralink RT3072, который функционирует на основе драйвера rt2800usb, в качестве точки доступа. Ошибки, с которыми вы сталкиваетесь, связаны с неправильной настройкой драйвера и недостаточной поддержкой интерфеса nl80211 для вашего устройства в конфигурации hostapd. Рассмотрим возможные шаги для решения проблемы.
Анализ проблемы
-
Ошибка конфигурации драйвера:
- В файле конфигурации
hostapd.conf
указывается драйверrt2080usb
, который, вероятно, введен ошибочно. Правильное значение —nl80211
, так как это стандартный драйвер для большинства современных устройств на Linux.
- В файле конфигурации
-
Проблемы с entrophy (энтропией):
- Современные реализации WPA требуют достаточного количества "случайных" данных для генерации ключей безопасности. В Raspberry Pi иногда может не хватать энтропии, из-за чего возникают ошибки в безопасности. Эту проблему можно смягчить, используя более быстрые источники случайных данных, такие как
haveged
.
- Современные реализации WPA требуют достаточного количества "случайных" данных для генерации ключей безопасности. В Raspberry Pi иногда может не хватать энтропии, из-за чего возникают ошибки в безопасности. Эту проблему можно смягчить, используя более быстрые источники случайных данных, такие как
Рекомендации по решению проблемы
-
Настройка конфигурации
hostapd
:- Откройте файл
/etc/hostapd/hostapd.conf
и убедитесь, что включены следующие ключевые настройки:interface=wlan1 driver=nl80211 ssid=WiPi hw_mode=g channel=4 macaddr_acl=0 auth_algs=1 # Ограничьте до WPA ignore_broadcast_ssid=0 wpa=1 # Используйте только WPA wpa_passphrase=wifipasswordhere wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
- Откройте файл
-
Увеличение энтропийного пула:
- Установите пакет
haveged
, чтобы обеспечить достаточную генерацию случайных данных:sudo apt-get install haveged sudo systemctl enable haveged sudo systemctl start haveged
- Установите пакет
-
Проверка работы драйвера:
- Убедитесь, что драйвер
rt2800usb
действительно загружен:lsmod | grep rt2800usb
- Если он не загружен, попробуйте принудительно его загрузить:
sudo modprobe rt2800usb
- Убедитесь, что драйвер
-
Ограничение режима работы:
- Попробуйте отключить поддержку
ieee80211n
, если это не критично для вашего применения:# ieee80211n=1
- Попробуйте отключить поддержку
-
Черный список внутреннего адаптера:
- Если вы не планируете использовать встроенный WiFi-адаптер, его можно отключить, добавив в
/etc/modprobe.d/raspi-blacklist.conf
:blacklist brcmfmac blacklist brcmutil
- Если вы не планируете использовать встроенный WiFi-адаптер, его можно отключить, добавив в
Заключение
Системная настройка Raspberry Pi требует внимательного подхода, особенно при конфигурации WiFi сетевого оборудования. Следуя данным рекомендациям, вы сможете устранить текущие проблемы, улучшив стабильность и производительность вашей точки доступа. Убедитесь, что после внесения изменений вы перезагрузили устройство и повторно проверили функционирование сети с помощью команды sudo systemctl restart hostapd
. Если проблема сохраняется, рассмотрите возможность обращения к дополнительной технической документации или форумам поддержки.