About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / rfkill.txt

Based on kernel version 2.6.25. Page generated on 2008-04-18 21:22 EST.

1	rfkill - RF switch subsystem support
2	====================================
3	
4	1 Implementation details
5	2 Driver support
6	3 Userspace support
7	
8	===============================================================================
9	1: Implementation details
10	
11	The rfkill switch subsystem offers support for keys often found on laptops
12	to enable wireless devices like WiFi and Bluetooth.
13	
14	This is done by providing the user 3 possibilities:
15	 1 - The rfkill system handles all events; userspace is not aware of events.
16	 2 - The rfkill system handles all events; userspace is informed about the events.
17	 3 - The rfkill system does not handle events; userspace handles all events.
18	
19	The buttons to enable and disable the wireless radios are important in
20	situations where the user is for example using his laptop on a location where
21	wireless radios _must_ be disabled (e.g. airplanes).
22	Because of this requirement, userspace support for the keys should not be
23	made mandatory. Because userspace might want to perform some additional smarter
24	tasks when the key is pressed, rfkill still provides userspace the possibility
25	to take over the task to handle the key events.
26	
27	The system inside the kernel has been split into 2 separate sections:
28		1 - RFKILL
29		2 - RFKILL_INPUT
30	
31	The first option enables rfkill support and will make sure userspace will
32	be notified of any events through the input device. It also creates several
33	sysfs entries which can be used by userspace. See section "Userspace support".
34	
35	The second option provides an rfkill input handler. This handler will
36	listen to all rfkill key events and will toggle the radio accordingly.
37	With this option enabled userspace could either do nothing or simply
38	perform monitoring tasks.
39	
40	====================================
41	2: Driver support
42	
43	To build a driver with rfkill subsystem support, the driver should
44	depend on the Kconfig symbol RFKILL; it should _not_ depend on
45	RKFILL_INPUT.
46	
47	Unless key events trigger an interrupt to which the driver listens, polling
48	will be required to determine the key state changes. For this the input
49	layer providers the input-polldev handler.
50	
51	A driver should implement a few steps to correctly make use of the
52	rfkill subsystem. First for non-polling drivers:
53	
54		- rfkill_allocate()
55		- input_allocate_device()
56		- rfkill_register()
57		- input_register_device()
58	
59	For polling drivers:
60	
61		- rfkill_allocate()
62		- input_allocate_polled_device()
63		- rfkill_register()
64		- input_register_polled_device()
65	
66	When a key event has been detected, the correct event should be
67	sent over the input device which has been registered by the driver.
68	
69	====================================
70	3: Userspace support
71	
72	For each key an input device will be created which will send out the correct
73	key event when the rfkill key has been pressed.
74	
75	The following sysfs entries will be created:
76	
77		name: Name assigned by driver to this key (interface or driver name).
78		type: Name of the key type ("wlan", "bluetooth", etc).
79		state: Current state of the key. 1: On, 0: Off.
80		claim: 1: Userspace handles events, 0: Kernel handles events
81	
82	Both the "state" and "claim" entries are also writable. For the "state" entry
83	this means that when 1 or 0 is written all radios, not yet in the requested
84	state, will be will be toggled accordingly.
85	For the "claim" entry writing 1 to it means that the kernel no longer handles
86	key events even though RFKILL_INPUT input was enabled. When "claim" has been
87	set to 0, userspace should make sure that it listens for the input events or
88	check the sysfs "state" entry regularly to correctly perform the required
89	tasks when the rkfill key is pressed.
Hide Line Numbers
About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Information is copyright its respective author. All material is available from the Linux Kernel Source distributed under a GPL License. This page is provided as a free service by mjmwired.net.