pub/scm/network/wireless/iwd.git  about / heads / tags
Wireless daemon for Linux
$ git log --pretty=format:'%h %s (%cs)%d'
fdbbd8b3 unit: add test for band fallback (2024-05-14)
	(HEAD -> master)
70d1d716 band: support band lookup fallback for buggy APs (2024-05-14)
4bfc794a auto-t: remove default group SAE test for specific OUI (2024-05-14)
8a1f8d1a ie: remove is_ie_default_sae_group_oui (2024-05-14)
b05c1caf scan: remove force_default_sae_group from scan_bss (2024-05-14)
3be01a83 build: Create ell directory for ell/ell.h target (2024-05-14)
26efca80 nlmon: parse/print neighbor reports (2024-05-09)
5fb3ac59 eapol: include IGTK in 4-way handshake as AP (2024-05-07)
9274f70f handshake: add functions to save and set IGTK (2024-05-07)
78bdb262 eapol: encrypt key data for AKM-defined ciphers (2024-05-07)

$ git cat-file blob HEAD:README
Wireless daemon for Linux

Copyright (C) 2013-2019  Intel Corporation. All rights reserved.

Compilation and installation

In order to compile the source code you need following software packages:
	- GCC compiler
	- GNU C library
	- Embedded Linux library
	- readline (command line client)

To configure run:
	./configure --prefix=/usr

Configure automatically searches for all required components and packages.

To compile and install run:
	make && make install

Embedded Linux library

In order to compile the daemon and control utility the development version
of Embedded Linux library is required to be present. The development
repositories can be found here:


The build systems requires that the Embedded Linux library source code
is available on the same top level directory as the Wireless daemon
source code:

	|--- ell
	|    |--- ell
	|    `--- unit
	`--- iwd
	     |--- src
	     `--- client

It is not required to build or install Embedded Linux library. The build
will happen when building the Wireless daemon and it will then be linked

When using --enable-external-ell build option, it is not required that the
Embedded Linux library source code is available in the top level directory.

The tarballs include a copy of the Embedded Linux library source files. When
building from the tarballs, then it is not required to have the library
sources available in the top level directory.

Manual pages

The manual pages are generated from reStructuredText markup source files
during the normal build process. The generation requires the rst2man utility
from Python Docutils project. If rst2man is for some reason not available,
using --disable-manual-pages will skip the manual pages generation and

When building from the tarballs, a copy of the generated manual pages is
included and the rst2man utility is actually not needed.

Configuration and options

The configuration system provides switches to disable certain build time
configuration options which are generally useful and enabled by default:


		Disable installation of Wireless daemon

		By default the Wireless daemon binary iwd is enabled and
		placed into --libexecdir directory.


		Disable installation of Wireless client utility

		By default the Wireless client binary iwctl is enabled
		and place into --bindir directory.


		Disable installation of Wireless monitor utility

		By default the Wireless monitor binary iwmon is enabled
		and place into --bindir directory.


		Disable installation of D-Bus system policy configuration

		By default the accompanying D-Bus policy file will be
		installed in the D-Bus data directory. The location of
		that directory will be automatically detected or can be
		manually configured via the --with-dbus-datadir option.

		The D-Bus policy is required for daemons to gain service
		name ownership and clients to access them. When disabling
		this option, manual installation of D-Bus polices is

		Note: This option affects all D-Bus policy configurations.


		Disable installation of systemd service configuration

		By default the accompanying systemd service unit with
		D-Bus autostart configuration will be installed. The
		locations will be automatically detected or can be
		manually configured via --with-dbus-busdir option
		and --with-systemd-unitdir option.

		Using systemd is optional, but highly recommended. When
		disabling this option, manual installation is required.

		Note: This option affects all systemd unit setups.


		Disable generation and installation of manual pages

		By default all available manual pages will be generated
		and installed. When disabling this options, no manual
		pages are installed.

		Note: This options affects all manual pages.

When building for a system that wants to use wireless technology, disabling
any of the above options makes only limited sense. It may break the general
setup and usability for wireless connections.

The configuration system provides switches for optional build time features
that can be enabled if the functionality is required:


		Enable usage of external Embedded Linux library

		This allows using an externally installed Embedded Linux
		library instead of using the internal copy of ELL.

		Since the public API of Embedded Linux library is not yet
		stable, the usage of the internal ELL copy is preferred.


		Enable installation of Ethernet authentication daemon

		This allows enabling the Ethernet daemon binary ead which
		is then placed into --libexecdir directory.

		With this option the support for 802.1x for wired Ethernet
		connections can be enabled. It provides its own D-Bus
		policy and systemd configuration.


		Enable installation of Wireless simulation utility

		This allows enabling the Simulation daemon binary hwsim
		which is then placed into --bindir directory.

		With this utility and mac80211_hwim kernel module the
		simulation of 802.11 networks can be tested. It provides
		its own D-Bus policy configuration.

		This utility is only useful for developers and should not
		be considered for general installation. For this reason
		no systemd configuration is provided.


		Enable compilation of various testing utilities

		This enables building of all utilities that are however
		not installed and only useful during development.


		Enable support for oFono SIM authentication

		Note: With --disable-daemon this option is ignored

Netlink monitoring

The included iwmon utility can be used to monitor the 802.11 subsystem
generic netlink commands and events. It uses the nlmon kernel driver
from Linux 3.10 and later. On startup network monitor interface named
named 'nlmon' is created unless another interface name is given on the
command line. If the monitor interface was created by the iwmon utility,
it will be removed on program exit.

Manually the monitor interface can be created using the following

	ip link add name nlmon type nlmon
	ip link set dev nlmon allmulticast on
	ip link set dev nlmon up

It is possible to create netlink traces in PCAP format using tcpdump
and then read them via iwmon utility:

	tcpdump -i nlmon -w trace-file.pcap

The resulting PCAP files will use Linux cooked packet format containing
packets with ARPHRD_NETLINK type. They can be read using iwmon:

	iwmon -r trace-file.pcap

At this time iwmon is not able to write PCAP files by itself. This might
change in future versions.

When also the authentication protocol traffic on port 0x888e (ETH_P_PAE)
is needed, then a second capture is required:

	tcpdump -i any 'ether proto 0x888e' -w trace-pae.pcap

It is possible to combine these two PCAP files using the mergecap utility
and create a combined trace file:

	mergecap -F pcap -w trace.pcap trace-file.pcap trace-pae.pcap

This will create a trace.pcap file that includes the complete picture
of nl80211 netlink traffic and authentication messages. All packets are
merged in chronological order based on timestamps.

Unfortunately it is not possible to instruct tcpdump filtering to do
this in a single capture. Post-processing of the PCAP files is required
at the moment.

Simulating devices

The Linux driver mac80211_hwsim provides the functionality to simulate
Wireless devices using fake virtual air. Just load the module.

	modprobe mac80211_hwsim radios=0

Providing the radios=0 is important since otherwise it starts out with
two new Wireless radios by default.

With the provided hwsim utility it is now possible to add and remove
virtual radio devices.

	hwsim --create --keep
	hwsim --destroy=<radio-id>

The radio id assigned to each virtual device is its internal id used
by the Wireless device.


Mailing list:



# heads (aka `branches'):
$ git for-each-ref --sort=-creatordate refs/heads \
	--format='%(HEAD) %(refname:short) %(subject) (%(creatordate:short))'
* master       unit: add test for band fallback (2024-05-14)

# tags:
$ git for-each-ref --sort=-creatordate refs/tags \
	--format='%(refname:short) %(subject) (%(creatordate:short))'
2.17         Release 2.17 (2024-03-29) tar.gz
2.16         Release 2.16 (2024-03-04) tar.gz
2.15         Release 2.15 (2024-02-26) tar.gz
2.14         Release 2.14 (2024-02-09) tar.gz
2.13         Release 2.13 (2024-01-12) tar.gz
2.12         Release 2.12 (2023-12-27) tar.gz
2.11         Release 2.11 (2023-12-14) tar.gz
2.10         Release 2.10 (2023-11-27) tar.gz
2.9          Release 2.9 (2023-11-19) tar.gz
2.8          Release 2.8 (2023-08-24) tar.gz

# associated public inboxes:
# (number on the left is used for dev purposes)
       3119 iwd
        108 lkml
         34 u-boot
         31 qemu-devel
         30 netdev
         26 linux-arm-kernel
         18 stable
         18 dpdk-dev
         17 linux-mm
         17 dri-devel
         16 buildroot
         15 linux-devicetree
         13 git
         11 linux-wireless
         11 intel-gfx
         10 xen-devel
         10 alsa-devel
         10 linux-scsi
         10 kvm
          9 linux-media
          9 ell
          8 linux-nfs
          8 linux-crypto
          8 linux-fsdevel
          7 linux-acpi
          7 netfilter-devel
          7 linuxppc-dev
          6 linux-samsung-soc
          6 linux-nvme
          6 linux-arm-msm
          6 linux-btrfs
          6 linux-bluetooth
          6 amd-gfx
          6 openembedded-devel
          5 bpf
          5 linux-mediatek
          5 driverdev-devel
          5 linux-arch
          5 ltp
          5 openembedded-core
          4 linux-xfs
          4 linux-renesas-soc
          4 linux-rdma
          4 linux-ext4
          4 linux-ide
          4 linux-doc
          4 linux-api
          4 linux-i2c
          4 linux-staging
          4 intel-wired-lan
          4 qemu-riscv
          4 lvm-devel
          4 ../../../../../wireless-regdb
          3 linux-block
          3 linux-riscv
          3 linux-cifs
          3 linux-iommu
          3 fstests
          3 linux-pm
          3 linux-input
          3 kvmarm
          3 linux-kselftest
          3 selinux
          3 kernel-hardening
          3 linux-clk
          3 linux-gpio
          3 linux-pci
          3 linux-f2fs-devel
          3 linux-rt-users
          3 linux-watchdog
          3 linux-mmc
          3 linux-omap
          3 linux-spi
          3 linux-tegra
          3 lttng-dev
          3 virtualization
          3 linux-can
          3 linux-rockchip
          3 linux-sh
          3 kernel-janitors
          3 ofono
          3 yocto
          3 yocto-meta-arm
          3 linux-patches
          3 outreachy
          3 kexec
          3 grub-devel
          3 reiserfs-devel
          2 linux-mtd
          2 linux-efi
          2 linux-edac
          2 linux-amlogic
          2 linux-erofs
          2 linux-nvdimm
          2 linux-snps-arc
          2 linux-mips
          2 linux-rtc
          2 linux-usb
          2 linux-iio
          2 linux-next
          2 linux-leds
          2 linux-security-module
          2 linux-modules
          2 linux-serial
          2 linux-trace-devel
          2 linux-hyperv
          2 util-linux
          2 backports
          2 linux-man
          2 linux-unionfs
          2 linux-bcache
          2 linux-sparse
          2 linux-pwm
          2 linux-kbuild
          2 containers
          2 linux-raid
          2 platform-driver-x86
          2 openbmc
          2 dm-devel
          2 linux-fbdev
          2 linux-cxl
          2 linux-perf-users
          2 nouveau
          2 linux-s390
          2 sparclinux
          2 linux-sunxi
          2 linux-coco
          2 nvdimm
          2 llvm
          2 fio
          2 yocto-meta-freescale
          2 yocto-toaster
          2 bitbake-devel
          2 yocto-meta-virtualization
          2 yocto-meta-ti
          2 yocto-meta-arago
          2 openrisc
          2 intel-xe
          2 linux-um
          2 virtio-comment
          2 poky
          2 cluster-devel
          2 cpufreq
          2 initramfs
          2 kvm-ppc
          2 linux-hexagon
          2 linux-nilfs
          2 lvs-devel
          2 virtio-fs
          2 ../../../../../fuego
          2 ../../../../../igt-dev
          1 linux-fscrypt
          1 cocci
          1 live-patching
          1 linux-integrity
          1 linux-hwmon
          1 dmaengine
          1 linux-parisc
          1 kernelnewbies
          1 linux-sgx
          1 workflows
          1 rcu
          1 selinux-refpolicy
          1 linux-m68k
          1 linux-i3c
          1 linux-spdx
          1 linux-wpan
          1 ksummit-discuss
          1 wireguard
          1 io-uring
          1 linux-kernel-mentees
          1 linux-csky
          1 tpmdd-devel
          1 linux-firmware
          1 cip-dev
          1 linux-audit
          1 linux-remoteproc
          1 linux-dash
          1 mm-commits
          1 linux-fpga
          1 ceph-devel
          1 xdp-newbies
          1 phone-devel
          1 linux-hardening
          1 linux-toolchains
          1 dash
          1 keyrings
          1 linux-sctp
          1 target-devel
          1 lustre-devel
          1 soc
          1 ocfs2-devel
          1 rust-for-linux
          1 ath10k
          1 ath11k
          1 linux-phy
          1 mptcp
          1 regressions
          1 ksummit
          1 b43-dev
          1 linux-nfc
          1 linux-bcachefs
          1 ath9k-devel
          1 ntfs3
          1 yocto-docs
          1 chrome-platform
          1 ntb
          1 xenomai
          1 damon
          1 asahi
          1 loongarch
          1 imx
          1 ath12k
          1 b4-sent
          1 linux-trace-kernel
          1 oe-linux-nfc
          1 oe-kbuild-all
          1 oe-chipsec
          1 batman
          1 virtio-dev
          1 v9fs
          1 ecryptfs
          1 linux-ia64
          1 kbd
          1 autofs
          1 dccp
          1 cgroups
          1 devicetree-spec
          1 devicetree-compiler
          1 hail-devel
          1 kvm-ia64
          1 linux-8086
          1 kernel-testers
          1 linux-alpha
          1 linux-btrace
          1 linux-embedded
          1 linux-hams
          1 linux-hotplug
          1 linux-laptop
          1 linux-sound
          1 trinity
          1 linux-metag
          1 linux-x25
          1 netfilter
          1 linux-oxnas
          1 u-boot-amlogic
          1 lm-sensors
          1 acpica-devel
          1 perfbook
          1 smatch
          1 ../../../../../powertop

git clone