Linux를 실행하는 iMX8MP 보드가 있습니다. 이 보드에는 AP-STA 기능을 갖춘 Wi-Fi 모듈이 장착되어 있습니다. 이 시스템이 부팅 시 액세스 포인트를 시작하고 AP를 종료하지 않고 자격 증명을 제공한 후 외부 Wi-Fi에 연결하기를 원합니다. AP는 Hostapd를 사용하여 시작됩니다.
#!/bin/bash
modprobe brcmfmac
iw dev wlan0 interface add wlan1 type __ap
ifconfig wlan1 192.168.3.1 up
udhcpd /etc/udhcpd.conf
hostapd /etc/myhostapd.conf
Wi-Fi 연결은 wpa_supplicant를 사용하여 수행됩니다(NetworkManager는 사용할 수 없음).
ifconfig wlan0 up
wpa_supplicant -c /home/root/wpa.conf -i wlan0 -B # in questo momento il cliento
udhcpc -i wlan0 -b
이제 보드가 WiFi에 연결되면 이전에 AP에 연결되었던 모든 클라이언트는 연결 상태를 유지하며 계속해서 보드에 ping을 보낼 수 있습니다. 동시에 보드는 클라이언트와 인터넷에 ping을 보낼 수 있습니다. 그러나 새 클라이언트는 AP에 연결할 수 없습니다. 유일한 방법은 Hostapd를 다시 시작하는 것입니다.
이 문제를 조사하기 위해 AP SSID에 대한 필터를 사용하여 Wireshark를 사용해 보았습니다. 보드가 Hostapd를 실행하는 동안(그러나 wpa_supplicant를 호출하기 전) 다음 패킷이 주기적으로 캡처됩니다.
No. Time Source Destination Protocol Length Info
32410 709.786863608 LsResear_6b:3f:17 Broadcast 802.11 204 Beacon frame, SN=150, FN=0, Flags=........, BI=100, SSID=MY-AP-SSID
32268 707.492592614 LsResear_6b:3f:17 72:23:3e:ee:74:61 802.11 198 Probe Response, SN=123, FN=0, Flags=....R..., BI=100, SSID=MY-AP-SSID
32098 705.310088818 LsResear_6b:3f:17 IntelCor_b5:58:ec 802.11 198 Probe Response, SN=92, FN=0, Flags=....R..., BI=100, SSID=MY-AP-SSID
32002 704.240712766 LsResear_6b:3f:17 AlpsElec_31:89:ab 802.11 198 Probe Response, SN=73, FN=0, Flags=....R..., BI=100, SSID=MY-AP-SSID
wpa_supplicant가 시작되면 다음 패킷이 한 번 캡처된 후더 이상 패킷이 캡처되지 않습니다..
801 15.307033347 Azurewav_1c:29:49 Broadcast 802.11 244 Probe Request, SN=3025, FN=0, Flags=........, SSID=MY-AP-SSID
현재로서는 새로운 클라이언트가 AP에 연결할 수 없지만 이미 연결된 클라이언트에는 문제가 없습니다. AP를 다시 시작하면 새 클라이언트를 연결할 수 있습니다. 재부팅하는 동안 위에 보고된 주기적 패킷 중 일부가 몇 초 동안 캡처되었다가 중지됩니다. wpa_supplicant도 종료하면 주기적 패킷이 다시 나타납니다.
이 문제를 어떻게 해결할 수 있나요? AP를 다시 시작하지 않고도 Wi-Fi에 연결할 수 있나요?