Central Regulatory Domain Agent
CRDA acts as the udev helper for communication between the kernel and userspace for regulatory compliance. It relies on nl80211 for communication.
CRDA is licensed under the ISC license in hopes other operating systems can benefit from a community project to enhance regulatory considerations.
You can get the latest CRDA code from:
You can get CRDA releases here
- regulatory.bin file
- python and the m2crypto package (python-m2crypto)
- libgcrypt or libssl (openssl) header files
- nl library and header files (libnl1 and libnl-dev) available at git://git.kernel.org/pub/scm/libs/netlink/libnl.git
- RSA public key of John Linville, we include this as part of this package so you do not need to install it. This RSA public key comes from the wireless-regdb.git tree and we keep it up to date here.
- regulatory database, clone this tree:
. and then stuff regulatory.bin (no need to build) provided there in REG_BIN location specified in this Makefile. This regulatory.bin file is only required to verify the CRDA built here can read its database file which has been signed with the RSA private key.
Letting the kernel call CRDA
We use userspace events (uevents) to let he kernel speak to userspace. Below is an example udev rule you can place into your distribution's udev rules directory (usually /etc/udev/rules.d/). Note that most distributions have udev configured with inotify on the udev rules directory, so there is no need to restart udev after adding the new rule.
# Example file, should be put in /etc/udev/rules.d/regulatory.rules KERNEL=="regulatory*", ACTION=="change", SUBSYSTEM=="platform", RUN+="/sbin/crda"
Debugging kernel to CRDA communication
To debug communication between the kernel and udev you can monitor udev events:
udevadm monitor --environment kernel