JauntyCRDA
Launchpad Entry: jaunty-crda-planning
Created: PeteGraner
Contributors:
Packages affected:
Summary
The Central Regulatory Domain Agent (CRDA) is a free software project to allow Linux (and possibly other operating systems) comply with radio spectrum regulations around the world by enforcing the regulatory requirements in software. CRDA is also aimed to encourage Linux support from the vendors who were previously afraid to support Linux drivers that would not follow the requirements for radio spectrum use.
Release Note
The Central Regulatory Domain Agent cooperates with the wireless stack to enforce wireless channel and power regulatory domain restrictions according to the country locale and NIC capabilities.
Rationale
CRDA is proposed as a method for enforcing regulatory domain restrictions, thereby allowing wireless NIC vendors to produce open source drivers. The thought is that a well supported regulatory mechanism will forestall complaints or prosecution from the FCC. The regulatory mechanism is sufficiently difficult enough to defeat that it is at least on a par with host side binary object obfuscation.
Use Cases
Julie has just purchased an Atheros 9K series card in San Jose, CA where it works perfectly with US 2Ghz channel and power restrictions. As part of her job she must travel to Japan where public spectrum restrictions in the 2Ghz channel space are much tighter. Her wireless stack notices the 802.11d information element in the Access Point beacon and queries the CRDA database for the channel and power set pertaining to the Japanese locale. Her wireless stack then calculates the most restrictive union of CRDA channels and NIC capabilities. Thereafter, only the channels in this union are available for transmitting packets.
Assumptions
Design
CRDA is a user space application (/sbin/crda) that is invoked by kernel user-space events to query regulatory domain settings. One component of the CRDA package is a signed regulatory database, e.g., /usr/lib/crda/regulatory.bin and /usr/lib/crda/key.pub.pem, that is used to satisfy domain queries. The database is signed in order to prevent tampering.
Implementation
The CRDA infrastructure requires a udev rule to correctly direct user-space events. For example:
/etc/udev/rules.d/regulatory.rules: KERNEL=="regulatory*", ACTION=="change", SUBSYSTEM=="platform", RUN+="/sbin/crda"
UI Changes
No UI changes are anticipated.
Code Changes
CRDA requires a new package.
Test/Demo Plan
CRDA requires no user configuration. Manual setting of regulatory domain is through iw or wpa_supplicant.
Unresolved issues
BoF agenda and discussion
KernelTeam/Specs/JauntyCRDA (last edited 2008-12-01 21:53:07 by gn-216-166-171-58)