crda
Configure wireless regulatory domain settings
SYNOPSIS
crda
DESCRIPTION
CRDA (Central Regulatory Domain Agent) is a userspace utility that loads the wireless regulatory database into the Linux kernel's cfg80211 subsystem. This database, derived from the wireless-regdb project, defines country-specific rules for radio frequencies, transmit power limits, and channel availability to ensure compliance with local regulations.
Typically invoked automatically by udev rules upon detection of wireless devices (e.g., via /lib/udev/rules.d/50-crda.rules), crda reads the signed binary file /lib/crda/regulatory.bin. It verifies the signature using a kernel-trusted public key, then writes the database to the kernel's debugfs interface at /sys/kernel/debug/regulatory/regdb.
This sets the initial regulatory domain (defaulting to '00' world roaming mode unless overridden by device hints or user-space requests). Subsequent domain changes can occur via nl80211 events from user tools like iw. CRDA prevents illegal transmissions by enforcing rules in wireless drivers.
Manual execution is rare but possible for testing; ensure debugfs is mounted and regulatory.bin is present. Without crda, cfg80211 falls back to unsafe world mode.
CAVEATS
Not designed for frequent manual use; managed by udev. Requires signed /lib/crda/regulatory.bin and debugfs mounted at /sys/kernel/debug. Unsigned DBs are rejected post-2011 FCC mandates.
KEY FILES
/lib/crda/regulatory.bin: Signed binary DB.
/sys/kernel/debug/regulatory/regdb: Kernel write target.
UDEV INTEGRATION
Triggered by rules on wireless PCI/USB IDs; sets initial domain before driver probe.
HISTORY
Developed circa 2011 by Linux Wireless developers (e.g., Larry Finger, Johannes Berg) to meet FCC requirements for signed regulatory data in kernel 2.6.39+. Part of wireless-regdb project; evolved with cfg80211 for dynamic domain hints.
SEE ALSO
regdbdump(1), iw(8), wpa_supplicant(8)


