crda(8) send to the kernel a wireless regulatory domain for a given ISO / IEC 3166 alpha2




crda is the Linux wireless central regulatory domain agent. crda is intended to be used by udev scripts and should not be run manually unless debugging udev scripts. crda is triggered to run by the kernel by sending a udev event upon a new regulatory domain change. Regulatory domain changes are triggered by the wireless kernel subsystem (upon initialization and on reception of country IEs), wireless drivers, or userspace (see iw ). Upon a regulatory domain change the kernel sends a udev change event for the regulatory platform. The kernel ignores regulatory domains sent to it if it does not expect them. The regulatory domain is read by crda from the regulatory.bin file.

RSA Digital Signature

If built with openssl or gcrypt support crda will have embedded into it an RSA digital signature which will prevent it from reading corrupted or non-authored regulatory.bin files. Authorship is respected by the RSA public key packed into crda. This specific crda package has been built with an RSA public key from John Linville (the Linux wireless kernel maintainer) and as such will only read regulatory.bin files signed by him. For further information see the regulatory.bin man page.


A udev regulatory rule must be put in place in order to receive and parse udev events from the kernel in order to get udev to call crda with the passed ISO / IEC 3166 alpha2 country code. An example udev rule which can be used (usually in /lib/udev/rules.d/85-regulatory.rules ):

KERNEL==regulatory*, ACTION==change, SUBSYSTEM==platform, RUN+=/sbin/crda

Environment variable

Set the COUNTRY environment variable with a specific ISO / IEC 3166 alpha2 country code and then run crda without arguments. This will send a regulatory domain for that alpha2 to the kernel.