wpa_cli(8)

wpa_cli8

Console utility for wifi authentication with wpa_supplicant

Usage

wpa_cli [-p path_to_ctrl_sockets] [-i ifname] [-hvB] [-a action_file] [-P pid_file] [-g global_ctrl] [-G ping_interval] command ...

Overview

The wpa_cli utility is a text-based frontend program for interacting with wpa_supplicant(8). It is used to query current status, change configuration, trigger events, and request interactive user input.

The wpa_cli utility can show the current authentication status, selected security mode, dot11 and dot1x MIBs, etc. In addition, wpa_cli can configure EAPOL state machine parameters and trigger events such as reassociation and IEEE 802.1X logoff/logon.

The wpa_cli utility provides an interface to supply authentication information such as username and password when it is not provided in the wpa_supplicant.conf(5) configuration file. This can be used, for example, to implement one-time passwords or generic token card authentication where the authentication is based on a challenge-response that uses an external device for generating the response.

The wpa_cli utility supports two modes: interactive and command line. Both modes share the same command set and the main difference is in interactive mode providing access to unsolicited messages (event messages, username/password requests).

Interactive mode is started when wpa_cli is executed without any parameters on the command line. Commands are then entered from the controlling terminal in response to the wpa_cli prompt. In command line mode, the same commands are entered as command line arguments.

The control interface of wpa_supplicant(8) can be configured to allow non-root user access by using the ctrl_interface_group parameter in the wpa_supplicant.conf(5) configuration file. This makes it possible to run wpa_cli with a normal user account.

Authentication parameters

When wpa_supplicant(8) needs authentication parameters, such as username and password, that are not present in the configuration file, it sends a request message to all attached frontend programs, e.g., wpa_cli in interactive mode. The wpa_cli utility shows these requests with a “CTRL-REQ-⟨type⟩-⟨id⟩:⟨text⟩” prefix, where ⟨type⟩ is IDENTITY, PASSWORD, or OTP (One-Time Password), ⟨id⟩ is a unique identifier for the current network, ⟨text⟩ is a description of the request. In the case of an OTP (One-Time Password) request, it includes the challenge from the authentication server.

A user must supply wpa_supplicant(8) the needed parameters in response to these requests.

For example,

CTRL-REQ-PASSWORD-1:Password needed for SSID foobar
> password 1 mysecretpassword
Example request for generic token card challenge-response:
CTRL-REQ-OTP-2:Challenge 1235663 needed for SSID foobar
> otp 2 9876

Options

These options are available:

-p path

Control sockets path. This should match the ctrl_interface in wpa_supplicant.conf(5). The default path is /var/run/wpa_supplicant.

-i ifname

Interface to be configured. By default, the first interface found in the socket path is used.

-h

Show help.

-v

Show version information.

-B

Run the daemon in the background.

-a action_file

Run in daemon mode, executing the action file based on events from wpa_supplicant(8).

-P pid_file

PID file location.

-g global_ctrl

Use a global control interface to wpa_supplicant(8) rather than the default Unix domain sockets.

-G ping_interval

Wait “ping_interval” seconds before sending each ping to wpa_supplicant(8). See the ping command.

command

See available commands in the next section.

Commands

These commands can be supplied on the command line or at a prompt when operating interactively.

status

Report the current WPA/EAPOL/EAP status for the current interface.

ifname

Show the current interface name. The default interface is the first interface found in the socket path.

ping

Ping the wpa_supplicant(8) utility. This command can be used to test the status of the wpa_supplicant(8) daemon.

mib

Report MIB variables (dot1x, dot11) for the current interface.

help

Show usage help.

interface [ifname]

Show available interfaces and/or set the current interface when multiple interfaces are available.

level debug_level

Change the debugging level in wpa_supplicant(8). Larger numbers generate more messages.

license

Display the full license for wpa_cli.

logoff

Send the IEEE 802.1X EAPOL state machine into the “logoff” state.

logon

Send the IEEE 802.1X EAPOL state machine into the “logon” state.

set [settings]

Set variables. When no arguments are supplied, the known variables and their settings are displayed.

pmksa

Show the contents of the PMKSA cache.

reassociate

Force a reassociation to the current access point.

reconfigure

Force wpa_supplicant(8) to re-read its configuration file.

preauthenticate BSSID

Force preauthentication of the specified BSSID.

identity network_id identity

Configure an identity for an SSID.

password network_id password

Configure a password for an SSID.

new_password network_id password

Change the password for an SSID.

PIN network_id pin

Configure a PIN for an SSID.

passphrase network_id passphrase

Configure a private key passphrase for an SSID.

bssid network_id bssid

Set a preferred BSSID for an SSID

blacklist [bssid | clear]

Add a BSSID to the blacklist. When invoked without any extra arguments, display the blacklist. Specifying clear causes wpa_cli to clear the blacklist.

list_networks

List configured networks.

select_network network_id

Select a network and disable others.

enable_network network_id

Enable a network.

disable_network network_id

Disable a network.

add_network

Add a network.

remove_network network_id

Remove a network.

set_network [network_id variable value]

Set network variables. Shows a list of variables when run without arguments.

get_network network_id variable

Get network variables.

disconnect

Disconnect and wait for reassociate/reconnect command before connecting.

reconnect

Similar to reassociate, but only takes effect if already disconnected.

scan

Request new BSS scan.

scan_results

Get the latest BSS scan results. This command can be invoked after running a BSS scan with scan.

bss [idx | bssid]

Get a detailed BSS scan result for the network identified by “bssid” or “idx”.

otp network_id password

Configure a one-time password for an SSID.

terminate

Force wpa_supplicant(8) to terminate.

interface_add ifname [confname driver ctrl_interface driver_param bridge_name]

Add a new interface with the given parameters.

interface_remove ifname

Remove the interface.

interface_list

List available interfaces.

quit

Exit wpa_cli.

Releases

49 releases since FreeBSD 6.0-RELEASE; the text changed 33 times.

  1. 6.0–6.3
  2. 6.4
  3. 7.0
  4. 7.1
  5. 7.2
  6. 7.3
  7. 7.4
  8. 8.0
  9. 8.1
  10. 8.2
  11. 8.3
  12. 8.4
  13. 9.0
  14. 9.1
  15. 9.2
  16. 9.3
  17. 10.0
  18. 10.1
  19. 10.2
  20. 10.3
  21. 10.4
  22. 11.0
  23. 11.1
  24. 11.2
  25. 11.3
  26. 11.4
  27. 12.0
  28. 12.1
  29. 12.2
  30. 12.3
  31. 12.4
  32. 13.0–13.2
  33. 13.3–14.1
  34. 14.2–16.0

-B since FreeBSD 11.1-RELEASE; -G since FreeBSD 11.1-RELEASE; -P since FreeBSD 11.1-RELEASE; -a since FreeBSD 11.1-RELEASE; -g since FreeBSD 11.1-RELEASE; -h since FreeBSD 11.1-RELEASE; -i since FreeBSD 11.1-RELEASE; -p since FreeBSD 11.1-RELEASE; -v since FreeBSD 11.1-RELEASE.

History

The wpa_cli utility first appeared in FreeBSD 6.0.

Authors

The wpa_cli utility was written by Jouni Malinen ⟨[email protected]⟩. This manual page is derived from the README and wpa_cli.c files included in the wpa_supplicant distribution.

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.