From: Zlatko Calusic <zcalusic@bitsync.net>
To: b43-dev@lists.infradead.org
Subject: Trouble loading firmware (error -2)
Date: Sun, 4 Oct 2015 22:46:01 +0200 [thread overview]
Message-ID: <56119009.80508@bitsync.net> (raw)
In-Reply-To: <CAP-bSRadqeM0iL_j_XETfyoAScnmdLo=SmvLD4cYzzBYPZsNeg@mail.gmail.com>
On 03.10.2015 13:43, Chris Bainbridge wrote:
> On 2 October 2015 at 18:23, Zlatko Calusic <zcalusic@bitsync.net> wrote:
>> Hello,
>>
>> please help with this issue, the error message is cryptic I don't know what
>> error -2 means:
>>
>> b43 bcma0:1: Direct firmware load for b43/ucode30_mimo.fw failed with error
>> -2
>> b43 bcma0:1: Direct firmware load for b43/ucode30_mimo.fw failed with error
>> -2
>> b43 bcma0:1: Direct firmware load for b43-open/ucode30_mimo.fw failed with
>> error -2
>> b43 bcma0:1: Direct firmware load for b43-open/ucode30_mimo.fw failed with
>> error -2
>> b43-phy0 ERROR: Firmware file "b43/ucode30_mimo.fw" not found
>> b43-phy0 ERROR: Firmware file "b43-open/ucode30_mimo.fw" not found
>> b43-phy0 ERROR: You must go to
>> http://wireless.kernel.org/en/users/Drivers/b43#devicefirmware and download
>> the correct firmware for this driver version. Please carefully read all
>> instructions on this website.
>>
>> Yet, ls -al /lib/firmware/b43/ucode30_mimo.fw:
>>
>> -rw-r--r-- 1 root root 39632 Apr 6 18:09 /lib/firmware/b43/ucode30_mimo.fw
>>
>> it's there, as put by b43-fwcutter package (Debian 1:019-2). Though I don't
>> have b43-open directory, tried symlinking it, didn't help.
>>
>> The kernel is virgin 4.2.0 Linus, custom compiled, relevant config entries
>> below, am I missing something?
>>
>> CONFIG_B43=y
>
> Are you using an initrd? The b43 driver tries to load the firmware
> when it is initialised. If b43 is builtin (not a module) then the load
> will happen at boot time - when the initrd is mounted, but before the
> real root - and the firmware won't be found. The solution is to either
> copy the firmware to the initrd, or build b43 as a module and make
> sure the module isn't on the initrd.
>
>> CONFIG_FIRMWARE_IN_KERNEL=y
>
> Trying to include the firmware blobs in to the kernel binary is
> unlikely to work for b43, because b43/main.c only defines 7 firmware
> files in MODULE_FIRMWARE(). There are ~117 firmware files in
> /lib/firmware/b43 and your wifi card requires some subset of those,
> probably not the 7 that are defined.
>
Thank you very much Chris for this great reply. I would've spent lots of
time trying to figure this out alone.
First I set CONFIG_FIRMWARE_IN_KERNEL=n as it obviously doesn't help my
case. Still it didn't work because initramfs is not pulling the needed
firmware. This I solved with a simple /etc/initramfs-tools/hooks/b43 hook:
#! /bin/sh -e
mkdir -p "${DESTDIR}/lib/firmware"
cp -a /lib/firmware/b43 "${DESTDIR}/lib/firmware"
And now all is well, firmware gets loaded, wifi works.
Best regards,
--
Zlatko
prev parent reply other threads:[~2015-10-04 20:46 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-02 17:23 Trouble loading firmware (error -2) Zlatko Calusic
2015-10-03 11:43 ` Chris Bainbridge
2015-10-04 20:46 ` Zlatko Calusic [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56119009.80508@bitsync.net \
--to=zcalusic@bitsync.net \
--cc=b43-dev@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.