Commit | Line | Data |
---|---|---|
acc1e7a3 JM |
1 | mac80211_hwsim - software simulator of 802.11 radio(s) for mac80211 |
2 | Copyright (c) 2008, Jouni Malinen <j@w1.fi> | |
3 | ||
4 | This program is free software; you can redistribute it and/or modify | |
5 | it under the terms of the GNU General Public License version 2 as | |
6 | published by the Free Software Foundation. | |
7 | ||
8 | ||
9 | Introduction | |
10 | ||
11 | mac80211_hwsim is a Linux kernel module that can be used to simulate | |
ba77f1ab JM |
12 | arbitrary number of IEEE 802.11 radios for mac80211. It can be used to |
13 | test most of the mac80211 functionality and user space tools (e.g., | |
14 | hostapd and wpa_supplicant) in a way that matches very closely with | |
15 | the normal case of using real WLAN hardware. From the mac80211 view | |
16 | point, mac80211_hwsim is yet another hardware driver, i.e., no changes | |
17 | to mac80211 are needed to use this testing tool. | |
acc1e7a3 JM |
18 | |
19 | The main goal for mac80211_hwsim is to make it easier for developers | |
20 | to test their code and work with new features to mac80211, hostapd, | |
21 | and wpa_supplicant. The simulated radios do not have the limitations | |
22 | of real hardware, so it is easy to generate an arbitrary test setup | |
23 | and always reproduce the same setup for future tests. In addition, | |
24 | since all radio operation is simulated, any channel can be used in | |
25 | tests regardless of regulatory rules. | |
26 | ||
27 | mac80211_hwsim kernel module has a parameter 'radios' that can be used | |
ba77f1ab | 28 | to select how many radios are simulated (default 2). This allows |
acc1e7a3 JM |
29 | configuration of both very simply setups (e.g., just a single access |
30 | point and a station) or large scale tests (multiple access points with | |
31 | hundreds of stations). | |
32 | ||
33 | mac80211_hwsim works by tracking the current channel of each virtual | |
34 | radio and copying all transmitted frames to all other radios that are | |
35 | currently enabled and on the same channel as the transmitting | |
36 | radio. Software encryption in mac80211 is used so that the frames are | |
37 | actually encrypted over the virtual air interface to allow more | |
38 | complete testing of encryption. | |
39 | ||
40 | A global monitoring netdev, hwsim#, is created independent of | |
41 | mac80211. This interface can be used to monitor all transmitted frames | |
42 | regardless of channel. | |
43 | ||
44 | ||
45 | Simple example | |
46 | ||
47 | This example shows how to use mac80211_hwsim to simulate two radios: | |
48 | one to act as an access point and the other as a station that | |
49 | associates with the AP. hostapd and wpa_supplicant are used to take | |
50 | care of WPA2-PSK authentication. In addition, hostapd is also | |
51 | processing access point side of association. | |
52 | ||
53 | Please note that the current Linux kernel does not enable AP mode, so a | |
54 | simple patch is needed to enable AP mode selection: | |
55 | http://johannes.sipsolutions.net/patches/kernel/all/LATEST/006-allow-ap-vlan-modes.patch | |
56 | ||
57 | ||
58 | # Build mac80211_hwsim as part of kernel configuration | |
59 | ||
60 | # Load the module | |
61 | modprobe mac80211_hwsim | |
62 | ||
63 | # Run hostapd (AP) for wlan0 | |
64 | hostapd hostapd.conf | |
65 | ||
66 | # Run wpa_supplicant (station) for wlan1 | |
67 | wpa_supplicant -Dwext -iwlan1 -c wpa_supplicant.conf |