WiFi 错误 wpa_supplicant

Val*_*Val 15 wifi wpa-supplicant wpa

我的wpa_supplicant程序有问题。

我的问题是关于使用wpa_cli哪个需要wpa_supplicant。我执行时出错sudo wpa_cli

Could not connect to wpa_supplicant
Run Code Online (Sandbox Code Playgroud)

的手动启动wpa_supplicant给了我一些错误:

sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf

rfkill: Cannot open RFKILL control device
ioctl[SIOCSIWAP]: Operation not permitted
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
wlan0: CTRL-EVENT-DISCONNECTED bssid=00:00:00:00:00:00 reason=0   ### NEW!!!
Run Code Online (Sandbox Code Playgroud)

配置dhcp

## /etc/dhcp/dhcpd.conf
subnet 192.168.2.0 netmask 255.255.255.0 {
   range 192.168.2.2 192.168.2.9;
   option domain-name-servers 192.168.1.1;
   option domain-name "home";
   option routers 192.168.2.1;
}
Run Code Online (Sandbox Code Playgroud)

配置wpa_supplicant

## /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
# network={
#   ssid="__SSID__"
#   key_mgmt=WPA-PSK
#   psk="__PASS__"
#   id_str="home"
# }
Run Code Online (Sandbox Code Playgroud)

配置hostapd

## /etc/hostapd/hostapd.conf
interface=wlan0
driver=rtl871xdrv
ieee80211n=1
ssid=__SSID__
hw_mode=g
channel=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=__PASS__
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

# EDIT
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
Run Code Online (Sandbox Code Playgroud)

ifconfig/的结果iwconfig

wlan0   Link encap:Ethernet  HWaddr c0:4a:00:17:40:fd
          inet adr:192.168.2.1  Bcast:192.168.2.255  Masque:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:14 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wlan0     IEEE 802.11bgn  ESSID:"__SSID__"  Nickname:"<WIFI@REALTEK>"
          Mode:Master  Frequency:2.412 GHz  Access Point: C0:4A:00:17:40:FD
          Sensitivity:0/0
          Retry:off   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=100/100  Signal level=0 dBm  Noise level=0 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
Run Code Online (Sandbox Code Playgroud)

我怎样才能在wpa_supplicant没有错误的情况下开始并wpa_cli连接?

pet*_*rph 8

wpa_supplicant产生的错误不一定与您的wpa_cli连接问题有关。这里的问题wpa_cli是无法与wpa_supplicant-无法打开控制套接字建立连接。这可能有多种原因:

  1. 运行的用户wpa_cli无法访问给定的套接字,例如wpa_supplicant.conf

    ctrl_interface=DIR=/var/run/wpa_supplicant
    
    Run Code Online (Sandbox Code Playgroud)

    您需要检查在该目录下wpa_cli运行的用户是否可以访问该目录中的文件。这意味着不仅仅是套接字rw- 以上所有目录都必须至少是x,最后一个也可能是r这样wpa_clie可以列出所有可用的套接字。

  2. 与 不同wpa_supplicantwpa_cliDBus 不支持。确保wpa_supplicant不是仅通过 DBus 收听。从您的配置文件来看,这可能不是您的情况。

  3. wpa_supplicant没有运行(根据下面的评论)。这表明,由wpa_supplicant它发出的错误消息和无法连接到它的错误消息之间确实可能存在连接。为了确保以详细模式(-d甚至-dd)运行它而不是守护进程(这是默认设置 - 只需确保您没有使用该-B选项)。您还可以注意控制插座,例如:

    watch -n 0.1 "ls -al /var/run/wpa_supplicant"
    
    Run Code Online (Sandbox Code Playgroud)

    请记住,这些命令中的大多数都需要以 root 权限运行,因此对于调试来说,su - root永久而不是在每个命令前添加前缀可能更容易sudo


Val*_*Val 5

最后,写入的错误没有影响系统。

我的/etc/network/interfaces文件看起来像(只有 wlan 部分):

iface wlan0 inet static
    address 192.168.2.1
    netmask 255.255.255.0
    pre-up wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B
Run Code Online (Sandbox Code Playgroud)

有了这个配置,我可以毫无错误地使用sudo wpa_cli命令! 无论如何都要
感谢彼得:) !