iwd

From Alpine Linux

iNet Wireless Daemon (iwd) project aims to provide a comprehensive Wi-Fi connectivity solution for Linux based devices. iwd provides a self-contained environment that only depends on the Linux Kernel and the runtime C library. iwd is supported since v3.10 of Alpine Linux.

Installation

Install iwd package using the command:

# apk add iwd

Note: iwd requires D-Bus service to be running.

Next decide if you want to use iwd in Standalone mode, or with NetworkManager, or with ifupdown-ng. Choose one among the three options and then proceed to service configuration.

Standalone mode

To have iwd do most networking configuration on its own upon connecting to a wi-fi network, requires openresolv package, so install it first:

# apk add openresolv

Then edit the configuration file /etc/iwd/main.conf and set it as follows:

Contents of /etc/iwd/main.conf

[General] EnableNetworkConfiguration=True [Network] NameResolvingService=resolvconf

Use iwd as a networkmanager backend

NetworkManager can be configured to use iwd as backend as a replacement for the wpa_supplicant. See the relevant section for more information.

Use iwd with ifupdown-ng

iwd can delegate the responsibility of dealing with IP address assignment (either static or DHCP) to ifupdown-ng. To do this edit the /etc/network/interfaces file. For example, if you are using DHCP on the wlan0 interface:

Contents of /etc/network/interfaces

auto lo iface lo inet loopback auto wlan0 iface wlan0 inet dhcp

Service configuration

Using both wireless daemons i.e wpa_supplicant and iwd simultaneously lead to conflicts. Once iwd has been configured, ensure that wpa_supplicant and related services are stopped before continuing.

Start iwd service:

# rc-service iwd start

To have iwd service start automatically on every boot (recommended):

# rc-update add iwd default

Usage of iwctl

The iwd package provides the client program iwctl, the daemon iwd and the Wi-Fi monitoring tool iwmon.

Begin by starting the client:

$ iwctl

To list all available commands:

[iwd]# help

To connect to a network

To list all Wi-Fi devices:

[iwd]# device list

If your wireless adapter is not listed, refer to Wifi troubleshooting page.

If the device or its corresponding adapter is turned off, turn it on:

[iwd]# device device set-property Powered on
[iwd]# adapter adapter set-property Powered on

Then, to initiate a scan for networks (note that this command will not output anything):

[iwd]# station device scan

You can then list all available networks:

[iwd]# station device get-networks

Finally, to connect to a network:

[iwd]# station device connect SSID

If a passphrase is required, you will be prompted to enter it. Alternatively, you can supply it as a command line argument:

$ iwctl –passphrase passphrase station device connect SSID

Note:
  • iwd automatically stores network passphrases in the /var/lib/iwd directory and uses them to auto-connect in the future.
  • If you run diskless Alpine, be sure to commit:

    # lbu add /var/lib/iwd && lbu commit -d

  • To connect to a network with spaces in the SSID, the network name should be double quoted when connecting.
  • iwd only supports PSK pass-phrases from 8 to 63 ASCII-encoded characters.

Disconnect from a network

To disconnect from a network:

[iwd]# station device disconnect

Show device and connection information

To display the details of a WiFi device, like MAC address:

[iwd]# device device show

To display the connection state, including the connected network of a Wi-Fi device:

[iwd]# station device show

Manage known networks

To list networks you have connected to previously:

[iwd]# known-networks list

To forget a known network:

[iwd]# known-networks SSID forget
Note: It is not possible to assign a priority to a network, instead iwd will prioritize networks based on:
  • signal strength level
  • security features
  • maximum rate
  • channel utilization
  • time since the last connect.

iwgtk

iwgtk showing list of networks
iwgtk

iwgtk is a wireless networking GUI for iwd with supported functionality similar to that of iwctl. Features include viewing and connecting to available networks, managing known networks, provisioning new networks via WPS or Wi-Fi Easy Connect, and an indicator (tray) icon displaying connection status and signal strength.

To install the iwgtk package:

# apk add iwgtk

Troubleshooting

If iwctl commands fail with the message The name net.connman.iwd was not provided by any .service files Failed to retrieve IWD dbus objects, quitting....

This error means that the iwd daemon is not started. Start the iwd daemon

See also