Wireless adapters can't load firmware on boot (both b43 and ath9k)


it’s a cross post from SUSE Studio forum, as I have no access to the mail list

Running openSUSE 13.1 32bit LiveCD built by SUSE Studio on my laptop that has two wireless adapters: b43-based and usb ath9k-based. Both are supported and correct firmware is placed where it should be. After boot I get errors that firmware can’t be loaded:

    3.646966] b43-phy0: Broadcom 4318 WLAN found (core revision 9)
    3.696818] b43-phy0: Found PHY: Analog 3, Type 2 (G), Revision 7
    3.721412] Broadcom 43xx driver loaded  Features: PMNLS ]
    3.726926] b43-phy0 ERROR: Firmware file "b43/ucode5.fw" not found
    3.726963] b43-phy0 ERROR: Firmware file "b43-open/ucode5.fw" not found
    3.726992] b43-phy0 ERROR: Please open a terminal and enter the command "sudo /usr/sbin/install_bcm43xx_firmware" to download the correct firmware for this driver version. For an off-line installation, go to http://en.opensuse.org/HCL/Network_Adapters_(Wireless)/Broadcom_BCM43xx and follow the instructions in the "Installing firmware from RPM packages" section.
    4.328941] usb 1-6: New USB device strings: Mfr=16, Product=32, SerialNumber=48
    4.328944] usb 1-6: Product: USB2.0 WLAN
    4.328947] usb 1-6: Manufacturer: ATHEROS
    4.328949] usb 1-6: SerialNumber: 12345
    4.471495] usb 1-6: ath9k_htc: Firmware htc_9271.fw requested
    4.471520] usbcore: registered new interface driver ath9k_htc
    4.472692] usb 1-6: ath9k_htc: Failed to get firmware htc_9271.fw
    4.472826] usb 1-6: ath9k_htc: USB layer deinitialized

If I unplug USB ath9k-based adapter and plug it again - it initializes fine and firmware is found. I can’t unplug b43-based adapter to test because it is built-in, but rmmod b43 causes firmware to load, but kernel crash happens (there is bug filed for this - 810984). So firmware for both adapters is only available after some time after boot

Is there a way to fix this so after boot I get both adapters initialized correctly?


I use b43
And the firmware I have works fine

I place my firmware, a folder, b43
In /lib/firmware

Then run

su -
modprobe -rv b43
modprobe -v b43

Tested 3.12 kernel using SUSE Studio Live CD - same issue
Looks like SUSE Studio or Kiwi issue?

On 01/25/2014 02:16 PM, tosiara wrote:
> Tested 3.12 kernel using SUSE Studio Live CD - same issue
> Looks like SUSE Studio or Kiwi issue?

For legal reasons, firmware for b43 cannot be distributed under any
circumstances!!! It is not a bug, but a dispute with the Broadcom lawyers that
we lose every time.

The ath9k firmware is located in the kernel-firmware package. Is that built into
your SUSE Studio build?

suse@suse:/lib/firmware> ls *htc*
htc_7010.fw  htc_9271.fw

suse@suse:/lib/firmware> ls b43
a0g0bsinitvals5.fw   a0g1bsinitvals9.fw   b0g0bsinitvals9.fw  lp0bsinitvals15.fw  n0absinitvals11.fw  sslpn0bsinitvals16.fw  ucode16.fw
a0g0bsinitvals9.fw   a0g1initvals13.fw    b0g0initvals13.fw   lp0bsinitvals16.fw  n0bsinitvals11.fw   sslpn0initvals16.fw    ucode5.fw
a0g0initvals5.fw     a0g1initvals5.fw     b0g0initvals5.fw    lp0initvals13.fw    n0bsinitvals16.fw   ucode11.fw             ucode9.fw
a0g0initvals9.fw     a0g1initvals9.fw     b0g0initvals9.fw    lp0initvals14.fw    n0initvals11.fw     ucode13.fw
a0g1bsinitvals13.fw  b0g0bsinitvals13.fw  lp0bsinitvals13.fw  lp0initvals15.fw    n0initvals16.fw     ucode14.fw
a0g1bsinitvals5.fw   b0g0bsinitvals5.fw   lp0bsinitvals14.fw  lp0initvals16.fw    pcm5.fw             ucode15.fw

Firmware files included in build. And I have issue only loading firmware during boot. If I plug device after system has booted - firmware loads fine

I’m sorry to bump this topic however I’m still affected by this issue

Is there a way to make /lib/firmware appear before usb is initialized on LiveCD build by Kiwi (SUSE Studio)?


I have the same problem. After start I always have to use “sudo /usr/sbin/install_bcm43xx_firmware” .
Is there any way to do it automatically.


You mean always running a new live session? Then no

You can try and put that command into /etc/init.d/after.local
So far modprobe -r and modprobe work for b43 and ipw2200 devices
But that does not work for ath9k. For some reason device does not show up after module reload. So need physically unplug/plug