Subject: bug#23409: unable to load free firmware

From: [email-masked] (Ludovic Courtès)
Date: Fri, 13 May 2016 15:25:19 +0200

Hi,

Quilro Ordonez <[email-masked]> skribis:

> El 2016-05-05 03:42, Alex Kost escribió:

[...]

>> Here is an excerpt of Ludo's message.  Please report after doing these
>> steps.
>>
>> Ludovic Courtès (2016-05-03 11:01 +0300) wrote:
>>
>>> Quilíro: firmware files are searched for in the directory specified in
>>> the /sys/module/firmware_class/parameters/path pseudo-file (see the
>>> (gnu
>>> build activation) module.)
>>>
>>> Could you try, as root, something like (use the right package and
>>> module
>>> name below):
>>>
>>>   echo -n $(guix build b43-firmware-whatever)/lib/firmware \
>>>      > /sys/module/firmware_class/parameters/path
>>>   insmod b43-module-whatever-its-called
>>>   dmesg | tail
>>>
>>> … and report back?
>
> Here it is:
>
> $ sudo bash
> # export GUIX_PACKAGE_PATH=/home/quiliro/guix/packages
> # echo -n $(guix build openfwwf-firmware) >
> /sys/module/firmware_class/parameters/path
> substitute: updating list of substitutes from
> 'https://mirror.hydra.gnu.org'... 100.0%
> substitute: updating list of substitutes from
> 'https://mirror.hydra.gnu.org'... 100.0%
> substitute: updating list of substitutes from
> 'https://mirror.hydra.gnu.org'... 100.0%
> substitute: updating list of substitutes from
> 'https://mirror.hydra.gnu.org'... 100.0%
> # cat /sys/module/firmware_class/parameters/path
> /gnu/store/xcxhd2r2h3iz0721vn6c5wfqkd0r4xc0-openfwwf-firmware-5.2
> # insmod b43-open
> insmod: ERROR: could not load module b43-open: No such file or directory

I had to double-check the module name, and it’s in fact called “b43”:

--8<---------------cut here---------------start------------->8---
$ find $LINUX_MODULE_DIRECTORY -name b43\*ko
/run/booted-system/kernel/lib/modules/4.5.2-gnu/kernel/drivers/net/wireless/broadcom/b43/b43.ko
/run/booted-system/kernel/lib/modules/4.5.2-gnu/kernel/drivers/net/wireless/broadcom/b43legacy/b43legacy.ko
--8<---------------cut here---------------end--------------->8---

Furthermore, you’ll need to use ’modprobe’ rather than ‘insmod’ (sorry
about that!).

> # find $(guix build openfwwf-firmware)
> /gnu/store/xcxhd2r2h3iz0721vn6c5wfqkd0r4xc0-openfwwf-firmware-5.2
> /gnu/store/xcxhd2r2h3iz0721vn6c5wfqkd0r4xc0-openfwwf-firmware-5.2/b43-open
> /gnu/store/xcxhd2r2h3iz0721vn6c5wfqkd0r4xc0-openfwwf-firmware-5.2/b43-open/b0g0initvals5.fw
> /gnu/store/xcxhd2r2h3iz0721vn6c5wfqkd0r4xc0-openfwwf-firmware-5.2/b43-open/b0g0bsinitvals5.fw
> /gnu/store/xcxhd2r2h3iz0721vn6c5wfqkd0r4xc0-openfwwf-firmware-5.2/b43-open/ucode5.fw

Oh so this lacks “lib/firmware” (eventually we should fix this
openfwwf-firmware package to have the .fw files under lib/firmware;
Eric? :-)).

So, to recap, you should try (again as root):

  echo -n $(guix build openfwwf-firmware)/b43-open \
        > /sys/module/firmware_class/parameters/path
  modprobe b43
  dmesg | tail

Could you try and report back?

Thanks for your patience!

Ludo’.