I have a problem with the wpa_supplicant program.

My problem is about the use of wpa_cli which needs wpa_supplicant. Error when I'm executing sudo wpa_cli:

Could not connect to wpa_supplicant

The manual start of wpa_supplicant gives me some errors:

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!!!

Config dhcp

## /etc/dhcp/dhcpd.conf
subnet netmask {
   option domain-name-servers;
   option domain-name "home";
   option routers;

Config wpa_supplicant

## /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
# network={
#   ssid="__SSID__"
#   key_mgmt=WPA-PSK
#   psk="__PASS__"
#   id_str="home"
# }

Config hostapd

## /etc/hostapd/hostapd.conf


Results of ifconfig / iwconfig

wlan0   Link encap:Ethernet  HWaddr c0:4a:00:17:40:fd
          inet adr:  Bcast:  Masque:
          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
          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

How can I start wpa_supplicant without errors and have wpa_cli connect?


The errors wpa_supplicant produces are not necessarily related to your wpa_cli connection problem. The trouble here is that wpa_cli is unable to establish connection with wpa_supplicant - unable to open the control socket. This can have several causes:

  1. user running wpa_cli is unable to access the socket given e.g. in wpa_supplicant.conf:


    You need to check that files in that directory are accessible to the user under which wpa_cli runs. That means not just the sockets being rw - all above directories have to be at least x, the last one probably also r so that wpa_clie can list all available sockets.

  2. Unlike wpa_supplicant, wpa_cli is not DBus capable. Make sure wpa_supplicant is not listening via DBus only. Judging by your configuration files this is probably not your case.

  3. wpa_supplicant not running (as per comments below). This would indicate, that there indeed might be a connection between the error messages emitted by wpa_supplicant and not being able to connect to it. To make sure run it in verbose mode (-d or even -dd) and not daemonizing (which is the default - just make sure you are not using the -B option). You can also watch out for the control socket, e.g.:

    watch -n 0.1 "ls -al /var/run/wpa_supplicant"

    Remember that most of these commands need to be run with root privileges, so for debugging it might be easier to just su - root permanently rather than prefixing each command with sudo.

  • Thanks for your answer. About your first point, I have to tell you that the file /var/run/wpa_supplicant does not exist.. Do you think this is the problem ? – Val Feb 7 '14 at 20:50
  • 1
    It is created by wpa_supplicant when needed. If it doesn't exist while it is running, then option 2 suddenly becomes more likely. :) – peterph Feb 7 '14 at 20:57
  • Okay, but I don't really know how to apply your option 2.. You're sepaking about a "main application", but I'm just using the commands I spoke about wpa_cli and wpa_supplicant, and I don't know how to avoid dbus only.. I had to tell you that rfkill list is giving me errors too (if it's related) "Can't open RFKILL device: No such file or directory".. I'm really lost – Val Feb 7 '14 at 21:01
  • 1
    main applicatin = wpa_supplicant - I've fixed it, it was a bit misleading indeed. Socket: check lsof | grep wpa_supplicant (when you have it running) - it should show you the open socket. As for rfkill - is /dev/rfkill accessible for the user running rfkill? – peterph Feb 7 '14 at 21:16
  • I tried the lsof | grep wpa_supplicant command, but it doesn't return a result. Btw, I think my problem is that wpa_supplicant is not starting.. I tried a ps -e | grep wpa and it's empty too. About rfkill, /dev/rfkill doesn't exist for me.. – Val Feb 7 '14 at 21:23

Finally, the written errors didn't affect the system.

My /etc/network/interfaces file looks like (only wlan part) :

iface wlan0 inet static
    pre-up wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B

With this config, I can use the sudo wpa_cli command without error !
Thanks to peterph anyway :) !

  • I was looking for this for hours. The last line fixed my problem. Thanks. – mehrmoudi Oct 22 '15 at 17:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.