0

WiFi à puissance maximale: modifier le regulatory domain sous Ubuntu, Debian et autres dérivés

Comme tout transceiver radio, les cartes WiFi sont soumises à des lois et réglementations limitant les fréquences ou la puissance qu'elles peuvent utiliser. Pour respecter cela, les distributions Linux sont distribuées avec une base de données définissant ces limites.

Mais il arrive pour une raison ou une autre que cette base de données soit erronée ou que votre carte WiFi pense qu'elle est dans une autre région. Dans ces cas-là, il est possible de modifier cette base de données. Voyons comment faire cela pour les distributions basées sur Debian.

Les informations dans cet article sont données à titre indicatif. Respectez toujours les fréquences et puissances maximales dans votre région !

Préparation

Pour modifier le regulatory domain il va falloir modifier deux logiciels : wireless-regdb et crda. Le premier est tout simplement la base de données, compilée et signée sous une forme binaire. Le deuxième est un middleware qui fournit les informations au kernel Linux, après avoir vérifié la signature de cette base de données binaire.

Pour compiler depuis les sources, il faut d'abord activer les sources de code source dans votre /etc/apt/sources.list. Souvent ces lignes sont simplement commentées dans le sources.list par défaut. Sous Ubuntu cela peut se faire avec l'utilitaire "Logiciels et mises à jour" en cochant la case "Code source".

Ensuite on peut installer les dépendances qui seront nécessaires à la compilation :

$ sudo apt-get update
$ sudo apt-get install build-essential libgcrypt20-dev
$ sudo apt-get build-dep wireless-regdb crda

Procédure

Nous allons maintenant utiliser APT pour télécharger le code source de wireless-regdb et de crda. Pour plus de propreté je vous proposer de faire cela dans un dossier nommé "wifi" :

$ mkdir wifi && cd wifi
$ apt-get source wireless-regdb crda   # Ne pas utiliser sudo!

Vous pouvez maintenant modifier la base de données qui se présente comme un fichier texte faisant correspondre le code des pays à une liste de fréquences et de puissances :

$ cd wireless-regdb-*
$ editor db.txt

Une fois vos modifications terminées, on peut compiler et installer cette base de données :

$ make install-distro-key
$ make
$ sudo make install

Attention dans certaines versions du paquet il y a une erreur dans le Makefile. La définition de REGDB_PRIVKEY doit commencer par $(HOME) pour fonctionner correctement :

REGDB_PRIVKEY ?= $(HOME)/.wireless-regdb-$(REGDB_AUTHOR).key.priv.pem

Ensuite on va recompiler crda pour qu'il accepte la signature générée pour notre base de données :

$ cd ../crda-*
$ cp ../wireless-regdb-*/*.pem pubkeys/
$ export CFLAGS="$CFLAGS -Wno-error=unused-const-variable"
$ make
$ sudo make install

Vous pouvez maintenant redémarrer et admirer le résultat 🙂 Si vous souhaitez faire des changements au db.txt, il suffit de refaire make et sudo make install dans wireless-regdb car le crda accepte déjà la signature qui sera utilisée pour cela.

Pour bien finir

Je vous conseille de désactiver les mises à jour sur les packages wireless-regdb et crda :

$ sudo apt-mark hold wireless-regdb crda

Et si un jour vous voulez inverser vos modifications, les commandes pour remettre la version officielle sont les suivantes :

$ sudo apt-mark unhold wireless-regdb crda
$ sudo apt-get install --reinstall wireless-regdb crda