mirror of
				https://git.kernel.org/pub/scm/network/wireless/iwd.git
				synced 2025-11-04 00:37:22 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			284 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			284 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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:
 | 
						|
 | 
						|
	git://git.kernel.org/pub/scm/libs/ell/ell.git
 | 
						|
	https://kernel.googlesource.com/pub/scm/libs/ell/ell.git
 | 
						|
 | 
						|
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
 | 
						|
internally.
 | 
						|
 | 
						|
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
 | 
						|
installation.
 | 
						|
 | 
						|
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-daemon
 | 
						|
 | 
						|
		Disable installation of Wireless daemon
 | 
						|
 | 
						|
		By default the Wireless daemon binary iwd is enabled and
 | 
						|
		placed into --libexecdir directory.
 | 
						|
 | 
						|
	--disable-client
 | 
						|
 | 
						|
		Disable installation of Wireless client utility
 | 
						|
 | 
						|
		By default the Wireless client binary iwctl is enabled
 | 
						|
		and place into --bindir directory.
 | 
						|
 | 
						|
	--disable-monitor
 | 
						|
 | 
						|
		Disable installation of Wireless monitor utility
 | 
						|
 | 
						|
		By default the Wireless monitor binary iwmon is enabled
 | 
						|
		and place into --bindir directory.
 | 
						|
 | 
						|
	--disable-dbus-policy
 | 
						|
 | 
						|
		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
 | 
						|
		required.
 | 
						|
 | 
						|
		Note: This option affects all D-Bus policy configurations.
 | 
						|
 | 
						|
	--disable-systemd-service
 | 
						|
 | 
						|
		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-manual-pages
 | 
						|
 | 
						|
		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-external-ell
 | 
						|
 | 
						|
		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-wired
 | 
						|
 | 
						|
		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-hwsim
 | 
						|
 | 
						|
		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-tools
 | 
						|
 | 
						|
		Enable compilation of various testing utilities
 | 
						|
 | 
						|
		This enables building of all utilities that are however
 | 
						|
		not installed and only useful during development.
 | 
						|
 | 
						|
	--enable-ofono
 | 
						|
 | 
						|
		Enable support for oFono SIM authentication
 | 
						|
 | 
						|
		Note: With --disable-daemon this option is ignored
 | 
						|
 | 
						|
	--enable-sim-hardcoded
 | 
						|
 | 
						|
		Enable support for hard coded SIM keys
 | 
						|
 | 
						|
		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
 | 
						|
commands:
 | 
						|
 | 
						|
	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.
 | 
						|
 | 
						|
 | 
						|
Information
 | 
						|
===========
 | 
						|
 | 
						|
Mailing list:
 | 
						|
	https://lists.01.org/postorius/lists/iwd.lists.01.org/
 | 
						|
 | 
						|
IRC:
 | 
						|
	irc://irc.freenode.net/#iwd
 | 
						|
 | 
						|
Wiki:
 | 
						|
	https://iwd.wiki.kernel.org/
 |