USB-GbEドングルのドライバロード時のエラー

先日、Linuxカーネルがapt経由で更新されてから、logwatchで報告されるレポートに謎のエラーが報告されるようになった。

platform regulatory.0: Direct firmware load for regulatory.db failed with error -2

とりあえずdmesgで表示されるブート時のログを眺めてみるとどうやらax88179のドライバーをカーネルがロードする時にこのエラーが出ているようだ。

このax88179は先日入れ替えたUSB-GbEドングルのTP-Link UE305に搭載されているチップなのだが、このチップのドライバーがカーネルにロードされる時にregulatory.dbなるファイルを読もうとして失敗しているというログのようだ。

このregulatory.dbというのが何かというと、コミュニティベースで各国の通信規制の内容をまとめたデータベースのようで、LinuxではCRDAという仕組みでWiFiアダプターなどを使用する時に国別の使用可能なチャンネルなどの規制をダイナミックに適用するための仕組みの様だ。なぜ有線LANであるax88179でこれを読み込もうとするのかはよく分からないし、実際、これの読み込みに失敗しても通信自体は何の問題もなく行えているのだが、それでも気持ち悪いので対策しよう。

で、解決方法は簡単。CRDAはDebianではcrdaというパッケージで提供されているのだが、これがインストールされていないので追加でインストールする。

apt install crda

全く不要なiwなどのWiFi用のパッケージも追加されるがまあ気にしないでおこう。インストールが完了したら再起動してブートログ中のax88179周りのログを確認すると、無事にエラーを出さずにregulatory.dbの読み込みに成功していた。

platform regulatory.0: firmware: direct-loading firmware regulatory.db

これで再起動するたびに気持ち悪いエラーが報告されずに済む。