---
name: "crda"
section: "8"
platform: "linux"
package: "crda"
version: "4.14+git20191112.9856751-1"
release: "Debian 11 (Bullseye)"
platforms: ["linux"]
url: "https://new.carta.tech/crda"
---

# crda(8)

send to the kernel a wireless regulatory domain for a given ISO / IEC 3166 alpha2

## NAME

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

## SYNOPSIS

**crda**

### **crda**

## Description

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.

### If built with openssl or gcrypt support

## RSA Digital Signature

**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 RSA public keys from *John Linville (the Linux wireless kernel maintainer)* and *Seth Forshee (the wireless regulatory databse maintainer)* and as such will only read **regulatory.bin** files signed by one of them. For further information see the **regulatory.bin** man page.

### A udev regulatory rule must be put in place

## UDEV RULE

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+="/usr/libexec/crda"*

### Set the

## Environment variable

**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.

## SEE ALSO

[**iw**(8)](/iw/8.md) [**regulatory.bin**(5)](/regulatory.bin/5.md)

**http://wireless.kernel.org/en/developers/Regulatory/**
