Direct firmware load for regulatory.db failed

I have this in hardware-configuraiton.nix:

  hardware = {
    enableAllFirmware = true;
    enableRedistributableFirmware = true;
    # NOTE: When 21.11 lands, swap for:
    # wirelessRegulatoryDatabase = true;
    firmware = [ pkgs.wireless-regdb ];

    cpu.intel.updateMicrocode = true;
  }

I got the config example from https://sourcegraph.com/github.com/jkachmar/dotnix/-/blob/hosts/kraftwerk/hardware.nix?L135

When I check logs I got this:

$ journalctl -b 0 --grep regulatory
-- Journal begins at Tue 2021-11-09 20:09:36 CET, ends at Mon 2021-11-29 12:14:11 CET. --
lis 29 11:31:25 msi-laptop kernel: cfg80211: Loading compiled-in X.509 certificates for regulatory database
lis 29 11:31:25 msi-laptop kernel: platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
lis 29 11:31:25 msi-laptop kernel: cfg80211: failed to load regulatory.db

Kernel seems to have required options enabled:

$ zgrep REGDB /proc/config.gz
CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y
CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y

$ uname -a
Linux msi-laptop 5.10.81 #1-NixOS SMP Sun Nov 21 12:46:37 UTC 2021 x86_64 GNU/Linux

There is issue Provide regulatory.db info via /lib/firmware when supported · Issue #57053 · NixOS/nixpkgs · GitHub and PR nixos: add option to load wireless regulatory database as firmware by symphorien · Pull Request #121530 · NixOS/nixpkgs · GitHub but I am not sure if this is relevant.

Also how to set permanently regdomain?

arch wiki talks about setting like this:

A more permanent configuration of the regdomain can be achieved through editing /etc/conf.d/wireless-regdom and uncommenting the appropriate domain.

wpa_supplicant can also use a regdomain in the country= line of /etc/wpa_supplicant/wpa_supplicant.conf .

It is also possible to configure the cfg80211 kernel module to use a specific regdomain by adding, for example, options cfg80211 ieee80211_regdom=JP as module options. The module option is inherited from the old regulatory implementation and in modern kernels act as a userspace regulatory hint as if it came through nl80211 through utilities like iw and wpa_supplicant .

https://wiki.archlinux.org/title/Network_configuration/Wireless#Respecting_the_regulatory_domain

Edit: Is it because I don’t have /lib/firmware directory?

Download wireless-regdb 2017.12.23, untar, and copy regulatory.db and regulatory.db.p7s to /lib/firmware; full ok.

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=892229#49

So this is my solution:

{ config, pkgs, ... }:

{
  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
    ];
  # ...
  systemd.tmpfiles.rules = [
    "L+ /lib/firmware/regulatory.db - - - - ${pkgs.wireless-regdb}/lib/firmware/regulatory.db"
    "L+ /lib/firmware/regulatory.db.p7s - - - - ${pkgs.wireless-regdb}/lib/firmware/regulatory.db.p7s"
  ];

  systemd.services.iw-reg-set = {
    serviceConfig = {
      ExecStart = "${pkgs.iw}/bin/iw reg set PL";         
    };
    wantedBy = [ "multi-user.target" ];
  };

  environment.systemPackages = with pkgs; [
    iw
  ];
}

hardware-configuration.nix:

{ config, lib, pkgs, modulesPath, ... }:

{
  hardware = {
    enableAllFirmware = true;
    enableRedistributableFirmware = true;
    # NOTE: When 21.11 lands, swap for:
    # wirelessRegulatoryDatabase = true;
    firmware = [ pkgs.wireless-regdb ];

    cpu.intel.updateMicrocode = true;
  }
}

You can find my dotfiles here https://github.com/rofrol/nixfiles/tree/main/hosts/msi-laptop

Looks to me like a kernel bug?

What is inside of /sys/module/firmware_class/parameters/path and does the resulting path contain the p7s file?

$ cat /sys/module/firmware_class/parameters/path
/nix/store/4n0ga2yszzi27d48f5whz7zla5m8q7lh-firmware/lib/firmware

Sounds reasonable. does that folder printed there (/nix/store/4n0ga2yszzi27d48f5whz7zla5m8q7lh-firmware/lib/firmware) contain a regulatory.db and a regulatory.db.p7s?

$ ls /nix/store/4n0ga2yszzi27d48f5whz7zla5m8q7lh-firmware/lib/firmware
3com                         dvb-usb-dibusb-6.0.0.8.fw                iwlwifi-8000C-27.ucode             ngene_17.fw
a300_pfp.fw                  dvb-usb-dtt200u-01.fw                    iwlwifi-8000C-31.ucode             ngene_18.fw
a300_pm4.fw                  dvb-usb-dw2102.fw                        iwlwifi-8000C-34.ucode             nvidia
acenic                       dvb-usb-dw2104.fw                        iwlwifi-8000C-36.ucode             NXP7164-2010-03-10.1.fw
adaptec                      dvb-usb-ec168.fw                         iwlwifi-8265-21.ucode              ositech
advansys                     dvb-usb-gp8psk-01.fw                     iwlwifi-8265-22.ucode              pcxhr
af9005.fw                    dvb-usb-gp8psk-02.fw                     iwlwifi-8265-27.ucode              phanfw.bin
agere_ap_fw.bin              dvb-usb-hauppauge-hvr930c-drxk.fw        iwlwifi-8265-31.ucode              qat_895xcc.bin
agere_sta_fw.bin             dvb-usb-it9135-01.fw                     iwlwifi-8265-34.ucode              qat_895xcc_mmp.bin
aica_firmware.bin            dvb-usb-it9135-02.fw                     iwlwifi-8265-36.ucode              qat_c3xxx.bin
amd                          dvb-usb-it9137-01.fw                     iwlwifi-9000-pu-b0-jf-b0-33.ucode  qat_c3xxx_mmp.bin
amdgpu                       dvb-usb-nova-t-usb2-02.fw                iwlwifi-9000-pu-b0-jf-b0-34.ucode  qat_c62x.bin
amd-ucode                    dvb-usb-p7500.fw                         iwlwifi-9000-pu-b0-jf-b0-38.ucode  qat_c62x_mmp.bin
ar3k                         dvb-usb-pctv-400e-01.fw                  iwlwifi-9000-pu-b0-jf-b0-41.ucode  qat_mmp.bin
ar5523.bin                   dvb-usb-pctv-450e-01.fw                  iwlwifi-9000-pu-b0-jf-b0-43.ucode  qca
ar7010_1_1.fw                dvb-usb-pctv-452e-01.fw                  iwlwifi-9000-pu-b0-jf-b0-46.ucode  qcom
ar7010.fw                    dvb-usb-s630.fw                          iwlwifi-9260-th-b0-jf-b0-33.ucode  qed
ar9170-1.fw                  dvb-usb-s660.fw                          iwlwifi-9260-th-b0-jf-b0-34.ucode  ql2100_fw.bin
ar9170-2.fw                  dvb-usb-SkyStar_USB_HD_FW_v17_63.HEX.fw  iwlwifi-9260-th-b0-jf-b0-38.ucode  ql2200_fw.bin
ar9271.fw                    dvb-usb-terratec-h5-drxk.fw              iwlwifi-9260-th-b0-jf-b0-41.ucode  ql2300_fw.bin
as102_data1_st.hex           dvb-usb-terratec-h7-az6007.fw            iwlwifi-9260-th-b0-jf-b0-43.ucode  ql2322_fw.bin
as102_data2_st.hex           dvb-usb-terratec-h7-drxk.fw              iwlwifi-9260-th-b0-jf-b0-46.ucode  ql2400_fw.bin
asihpi                       dvb-usb-terratec-htc-stick-drxk.fw       iwlwifi-cc-a0-46.ucode             ql2500_fw.bin
ath10k                       dvb-usb-tt-s2400-01.fw                   iwlwifi-cc-a0-48.ucode             qlogic
ath11k                       dvb-usb-umt-010-02.fw                    iwlwifi-cc-a0-50.ucode             r128
ath3k-1.fw                   dvb-usb-vp702x-01.fw                     iwlwifi-cc-a0-53.ucode             r8a779x_usb3_v1.dlmem
ath6k                        dvb-usb-vp7045-01.fw                     iwlwifi-cc-a0-55.ucode             r8a779x_usb3_v2.dlmem
ath9k_htc                    dvb-usb-wt220u-01.fw                     iwlwifi-cc-a0-59.ucode             r8a779x_usb3_v3.dlmem
atmel                        dvb-usb-wt220u-02.fw                     iwlwifi-cc-a0-62.ucode             radeon
atmsar11.fw                  dvb-usb-wt220u-fc03.fw                   iwlwifi-cc-a0-63.ucode             rockchip
atusb                        dvb-usb-wt220u-miglia-01.fw              iwlwifi-Qu-b0-hr-b0-48.ucode       rp2.fw
av7110                       dvb-usb-wt220u-zl0353-01.fw              iwlwifi-Qu-b0-hr-b0-50.ucode       rpm_firmware.bin
bnx2                         e100                                     iwlwifi-Qu-b0-hr-b0-53.ucode       rsi
bnx2x                        ea                                       iwlwifi-Qu-b0-hr-b0-55.ucode       rsi_91x.fw
bnx2x-e1-4.8.53.0.fw         edgeport                                 iwlwifi-Qu-b0-hr-b0-59.ucode       rt2561.bin
bnx2x-e1-5.2.13.0.fw         emi26                                    iwlwifi-Qu-b0-hr-b0-62.ucode       rt2561s.bin
bnx2x-e1-5.2.7.0.fw          emi62                                    iwlwifi-Qu-b0-hr-b0-63.ucode       rt2661.bin
bnx2x-e1h-4.8.53.0.fw        emu                                      iwlwifi-Qu-b0-jf-b0-48.ucode       rt2860.bin
bnx2x-e1h-5.2.13.0.fw        ene-ub6250                               iwlwifi-Qu-b0-jf-b0-50.ucode       rt2870.bin
bnx2x-e1h-5.2.7.0.fw         ess                                      iwlwifi-Qu-b0-jf-b0-53.ucode       rt3070.bin
bootcode.bin                 f2255usb.bin                             iwlwifi-Qu-b0-jf-b0-55.ucode       rt3071.bin
brcm                         go7007                                   iwlwifi-Qu-b0-jf-b0-59.ucode       rt3090.bin
cadence                      hfi1_dc8051.fw                           iwlwifi-Qu-b0-jf-b0-62.ucode       rt3290.bin
carl9170-1.fw                hfi1_fabric.fw                           iwlwifi-Qu-b0-jf-b0-63.ucode       rt5677_elf_vad
cavium                       hfi1_pcie.fw                             iwlwifi-Qu-c0-hr-b0-48.ucode       rt73.bin
cbfw-3.2.1.1.bin             hfi1_sbus.fw                             iwlwifi-Qu-c0-hr-b0-50.ucode       RTL8192E
cbfw-3.2.3.0.bin             htc_7010.fw                              iwlwifi-Qu-c0-hr-b0-53.ucode       rtl_bt
cbfw-3.2.5.1.bin             htc_9271.fw                              iwlwifi-Qu-c0-hr-b0-55.ucode       rtl_nic
cis                          i2400m-fw-usb-1.4.sbcf                   iwlwifi-Qu-c0-hr-b0-59.ucode       rtlwifi
cmmb_vega_12mhz.inp          i2400m-fw-usb-1.5.sbcf                   iwlwifi-Qu-c0-hr-b0-62.ucode       rtw88
cmmb_venice_12mhz.inp        i6050-fw-usb-1.5.sbcf                    iwlwifi-Qu-c0-hr-b0-63.ucode       rtw89
cpia2                        i915                                     iwlwifi-Qu-c0-jf-b0-48.ucode       s2250.fw
cs46xx                       imx                                      iwlwifi-Qu-c0-jf-b0-50.ucode       s2250_loader.fw
ct2fw-3.2.1.1.bin            inside-secure                            iwlwifi-Qu-c0-jf-b0-53.ucode       s5p-mfc.fw
ct2fw-3.2.3.0.bin            intel                                    iwlwifi-Qu-c0-jf-b0-55.ucode       s5p-mfc-v6.fw
ct2fw-3.2.5.1.bin            intelliport2.bin                         iwlwifi-Qu-c0-jf-b0-59.ucode       s5p-mfc-v6-v2.fw
ctefx.bin                    ipw2200-bss.fw                           iwlwifi-Qu-c0-jf-b0-62.ucode       s5p-mfc-v7.fw
ctefx-desktop.bin            ipw2200-ibss.fw                          iwlwifi-Qu-c0-jf-b0-63.ucode       s5p-mfc-v8.fw
ctefx-r3di.bin               ipw2200-sniffer.fw                       iwlwifi-QuZ-a0-hr-b0-48.ucode      sb16
ctfw-3.2.1.1.bin             isci                                     iwlwifi-QuZ-a0-hr-b0-50.ucode      sdd_sagrad_1091_1098.bin
ctfw-3.2.3.0.bin             isdbt_nova_12mhz_b0.inp                  iwlwifi-QuZ-a0-hr-b0-53.ucode      silabs
ctfw-3.2.5.1.bin             isdbt_nova_12mhz.inp                     iwlwifi-QuZ-a0-hr-b0-55.ucode      slicoss
ctspeq.bin                   isdbt_rio.inp                            iwlwifi-QuZ-a0-hr-b0-59.ucode      sms1xxx-hcw-114xxx-cmmb-01.fw
cxgb3                        iwlwifi-1000-3.ucode                     iwlwifi-QuZ-a0-hr-b0-62.ucode      sms1xxx-hcw-55xxx-dvbt-01.fw
cxgb4                        iwlwifi-1000-5.ucode                     iwlwifi-QuZ-a0-hr-b0-63.ucode      sms1xxx-hcw-55xxx-dvbt-02.fw
cypress                      iwlwifi-100-5.ucode                      iwlwifi-QuZ-a0-jf-b0-48.ucode      sms1xxx-hcw-55xxx-dvbt-03.fw
dabusb                       iwlwifi-105-6.ucode                      iwlwifi-QuZ-a0-jf-b0-50.ucode      sms1xxx-hcw-55xxx-isdbt-02.fw
digiface_firmware.bin        iwlwifi-135-6.ucode                      iwlwifi-QuZ-a0-jf-b0-53.ucode      sms1xxx-hcw-55xxx-isdbt-03.fw
digiface_firmware_rev11.bin  iwlwifi-2000-6.ucode                     iwlwifi-QuZ-a0-jf-b0-55.ucode      sms1xxx-nova-a-dvbt-01.fw
dpaa2                        iwlwifi-2030-6.ucode                     iwlwifi-QuZ-a0-jf-b0-59.ucode      sms1xxx-nova-b-dvbt-01.fw
drxd-a2-1.1.fw               iwlwifi-3160-10.ucode                    iwlwifi-QuZ-a0-jf-b0-62.ucode      sms1xxx-stellar-dvbt-01.fw
drxd-b1-1.1.fw               iwlwifi-3160-12.ucode                    iwlwifi-QuZ-a0-jf-b0-63.ucode      sun
drxk_a3.mc                   iwlwifi-3160-13.ucode                    iwlwifi-so-a0-gf-a0-64.ucode       sxg
dsp56k                       iwlwifi-3160-16.ucode                    iwlwifi-so-a0-gf-a0.pnvm           TDA7706_OM_v2.5.1_boot.txt
dspbootcode.bin              iwlwifi-3160-17.ucode                    iwlwifi-so-a0-hr-b0-64.ucode       TDA7706_OM_v3.0.2_boot.txt
dvb-demod-drxk-pctv.fw       iwlwifi-3160-7.ucode                     iwlwifi-so-a0-jf-b0-64.ucode       tdmb_nova_12mhz.inp
dvb-demod-m88ds3103.fw       iwlwifi-3160-8.ucode                     iwlwifi-ty-a0-gf-a0-59.ucode       tehuti
dvb-demod-m88rs6000.fw       iwlwifi-3160-9.ucode                     iwlwifi-ty-a0-gf-a0-62.ucode       ti
dvb-demod-si2168-02.fw       iwlwifi-3168-21.ucode                    iwlwifi-ty-a0-gf-a0-63.ucode       ti_3410.fw
dvb-demod-si2168-a20-01.fw   iwlwifi-3168-22.ucode                    iwlwifi-ty-a0-gf-a0-66.ucode       ti_5052.fw
dvb-demod-si2168-a30-01.fw   iwlwifi-3168-27.ucode                    iwlwifi-ty-a0-gf-a0.pnvm           ti-connectivity
dvb-demod-si2168-b40-01.fw   iwlwifi-3168-29.ucode                    kaweth                             tigon
dvb-fe-af9013.fw             iwlwifi-3945-2.ucode                     keyspan                            ti-keystone
dvb-fe-bcm3510-01.fw         iwlwifi-4965-2.ucode                     keyspan_pda                        tlg2300_firmware.bin
dvb-fe-cx24116.fw            iwlwifi-5000-1.ucode                     korg                               tr_smctr.bin
dvb-fe-cx24117.fw            iwlwifi-5000-2.ucode                     lbtf_usb.bin                       ttusb-budget
dvb-fe-cx24120-1.20.58.2.fw  iwlwifi-5000-5.ucode                     lgs8g75.fw                         ueagle-atm
dvb-fe-ds3000.fw             iwlwifi-5150-2.ucode                     libertas                           usbduxfast_firmware.bin
dvb-fe-ds300x.fw             iwlwifi-6000-4.ucode                     liquidio                           usbdux_firmware.bin
dvb-fe-ds3103.fw             iwlwifi-6000g2a-5.ucode                  lt9611uxc_fw.bin                   usbduxsigma_firmware.bin
dvb-fe-nxt2004.fw            iwlwifi-6000g2a-6.ucode                  matrox                             v4l-cx231xx-avcore-01.fw
dvb-fe-or51132-qam.fw        iwlwifi-6000g2b-5.ucode                  mediatek                           v4l-cx23418-apu.fw
dvb-fe-or51132-vsb.fw        iwlwifi-6000g2b-6.ucode                  mellanox                           v4l-cx23418-cpu.fw
dvb-fe-or51211.fw            iwlwifi-6050-4.ucode                     meson                              v4l-cx23418-dig.fw
dvb-fe-tda10045.fw           iwlwifi-6050-5.ucode                     microchip                          v4l-cx2341x-dec.fw
dvb-fe-tda10046.fw           iwlwifi-7260-10.ucode                    mixart                             v4l-cx2341x-enc.fw
dvb-fe-tda10048-1.0.fw       iwlwifi-7260-12.ucode                    moxa                               v4l-cx2341x-init.mpg
dvb-fe-tda10071.fw           iwlwifi-7260-13.ucode                    mrvl                               v4l-cx23885-avcore-01.fw
dvb-fe-xc4000-1.4.1.fw       iwlwifi-7260-16.ucode                    mt7601u.bin                        v4l-cx23885-enc.fw
dvb-fe-xc4000-1.4.fw         iwlwifi-7260-17.ucode                    mt7650.bin                         v4l-cx25840.fw
dvb-fe-xc5000-1.6.114.fw     iwlwifi-7260-7.ucode                     mt7662.bin                         v4l-pvrusb2-24xxx-01.fw
dvb-fe-xc5000c-4.1.30.7.fw   iwlwifi-7260-8.ucode                     mt7662_rom_patch.bin               v4l-pvrusb2-29xxx-01.fw
dvb_nova_12mhz_b0.inp        iwlwifi-7260-9.ucode                     mts_cdma.fw                        v4l-pvrusb2-73xxx-01.fw
dvb_nova_12mhz.inp           iwlwifi-7265-10.ucode                    mts_edge.fw                        vicam
dvb_rio.inp                  iwlwifi-7265-12.ucode                    mts_gsm.fw                         vntwusb.fw
dvb-ttpci-01.fw              iwlwifi-7265-13.ucode                    mts_mt9234mu.fw                    vpu_d.bin
dvb-ttpci-01.fw-261a         iwlwifi-7265-16.ucode                    mts_mt9234zba.fw                   vpu_p.bin
dvb-ttpci-01.fw-261b         iwlwifi-7265-17.ucode                    multiface_firmware.bin             vx
dvb-ttpci-01.fw-261c         iwlwifi-7265-8.ucode                     multiface_firmware_rev11.bin       vxge
dvb-ttpci-01.fw-261d         iwlwifi-7265-9.ucode                     mwl8k                              whiteheat.fw
dvb-ttpci-01.fw-261f         iwlwifi-7265D-10.ucode                   mwlwifi                            whiteheat_loader.fw
dvb-ttpci-01.fw-2622         iwlwifi-7265D-12.ucode                   myri10ge_eth_big_z8e.dat           wil6210.brd
dvb-tuner-si2158-a20-01.fw   iwlwifi-7265D-13.ucode                   myri10ge_ethp_big_z8e.dat          wil6210.fw
dvb-usb-af9015.fw            iwlwifi-7265D-16.ucode                   myri10ge_ethp_z8e.dat              wsm_22.bin
dvb-usb-af9035-02.fw         iwlwifi-7265D-17.ucode                   myri10ge_eth_z8e.dat               xc3028L-v36.fw
dvb-usb-af9035-03.fw         iwlwifi-7265D-21.ucode                   myri10ge_rss_eth_big_z8e.dat       xc3028-v24.fw
dvb-usb-af9035-04.fw         iwlwifi-7265D-22.ucode                   myri10ge_rss_ethp_big_z8e.dat      xc3028-v27.fw
dvb-usb-avertv-a800-02.fw    iwlwifi-7265D-27.ucode                   myri10ge_rss_ethp_z8e.dat          xc4000-1.4.fw
dvb-usb-az6027-03.fw         iwlwifi-7265D-29.ucode                   myri10ge_rss_eth_z8e.dat           yam
dvb-usb-bluebird-01.fw       iwlwifi-8000C-13.ucode                   myricom                            yamaha
dvb-usb-bluebird-02.fw       iwlwifi-8000C-16.ucode                   netronome                          zd1211
dvb-usb-dib0700-1.20.fw      iwlwifi-8000C-21.ucode                   ngene_15.fw
dvb-usb-dibusb-5.0.0.11.fw   iwlwifi-8000C-22.ucode                   ngene_16.fw

okay, sounds like a bug in nixos. will look at it later.

1 Like

Did you remove the hardware.firmware again? On my machine regulatory.db is in the firmware folder.

1 Like

works. Probably I forgot about semicolon. Thanks.