我正在嵌入式Linux系统(kernel-5.14)上工作,我正在尝试使用hostapd(并使用softAP模式)将设备配置为WIFI AP。
hostapd.conf主要修改如下,支持AP通过passphase连接,
interface=uap0
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP TKIP
wpa_pairwise=TKIP CCMP
auth-algs=3
我相应地配置了 udhcpd.conf 。和
之后,我可以看到要保存的日志。hostapd -B /etc/hostapd.conf
udhcpd -c /etc/udhcpd.conf &
AP ENABLED
进入passphase后,我可以从我的手机连接这个AP,并且我可以从AP ping我手机的IP(从AP设备上的udhcpd获得)。
现在,我想在不输入密码的情况下从手机连接 AP。我尝试更改hostapd.conf,如下所示,
wpa=0
auth_algs=1
#wpa_passphrase=12345678
然后我重新启动hostapd和udhcpd并从手机连接AP。
这次,udhcpd
AP中报告日志如下,
Sending IP 192.168.1.33
Sending IP 192.168.1.33
Sending IP 192.168.1.33
Sending IP 192.168.1.33
我的手机显示了getting IP Address
一段时间,然后无法连接到AP。
所以我不确定是否可以hostapd
在没有 passphase 的情况下连接到 AP ( ),如果可以,如何配置hostapd.conf
才能做到这一点?
答案1
您看到udhcpd
对请求的响应表明手机已成功连接到 AP 的无线网络:除非已连接 WiFi 网络,否则不可能通过 WiFi 发出 DHCP 请求。
但手机也可能会通过尝试某种互联网连接来检查其接收到的 IP 地址是否确实有效。如果您尚未启用 IP 路由,则电话可能会拒绝从您收到的 IP 地址udhcpd
并重试,因为它发现它实际上无法使用该 IP 与某些互联网服务进行通信。
答案2
我找到了让它发挥作用的方法。
在我的系统中,有一个WLAN0接口,我想在WLAN0上创建一个softAP作为uap0,并使用uap0作为手机连接的AP。
为了使其工作,首先需要进行/etc/hostapd.conf
以下配置。
interface=uap0
driver=nl80211
auth_algs=1
hw_mode=g
#wpa=2
#wpa_passphrase=abcdef123
在该嵌入式系统中启动 AP 服务的必要步骤是:
ifconfig wlan0 up
iw dev wlan0 interface add uap0 type __ap
ifconfig uap0 192.168.0.1
hostapd -B /etc/hostapd.conf
touch /var/lib/misc/udhcpd.leases
udhcpd -f /etc/udhcpd.conf &
然后,在手机中搜索AP并连接,这时候就不需要输入密码了。
显示udhcpd
以下日志。
udhcpd: sending ACK to 192.168.0.20
udhcpd: sending ACK to 192.168.0.20
udhcpd: sending ACK to 192.168.0.20
udhcpd: sending ACK to 192.168.0.20
我可以ping手机的IP(192.168.0.20),并得到。
PING 192.168.0.20 (192.168.0.20): 56 data bytes
64 bytes from 192.168.0.20: seq=6 ttl=64 time=3.944 ms
64 bytes from 192.168.0.20: seq=7 ttl=64 time=6.440 ms
64 bytes from 192.168.0.20: seq=8 ttl=64 time=2.547 ms
.....
按照上述配置和步骤直接使用 WLAN0 进行测试,得到了相同的结果。