B43 module loading problem after upgrade

Hello,
after an upgrade there seems to be a problem loading the b43 module for my wifi card, which worked flawlessly before.
It seems to be firmware is missing, which shouldn't be since I haven't touched anything.
Here's the info on my machine first:

System:    Host: manjaro Kernel: 4.9.103-1-MANJARO i686 bits: 32 compiler: gcc v: 8.1.0 Desktop: JWM 2.3.7 
           Distro: Manjaro Linux 18.0-alpha-1 Illyria 
Machine:   Type: Laptop System: Hewlett-Packard product: Presario C500 (GM641LA#ABM) v: F.24 serial: N/A 
           Mobo: Hewlett-Packard model: 30C6 v: 78.10 serial: N/A BIOS: Hewlett-Packard v: F.24 
           date: 04/25/2007 
CPU:       Topology: Dual Core model: Intel T2080 bits: 32 type: MCP arch: Yonah rev: 12 L2 cache: 1024 KiB 
           flags: nx pae sse sse2 sse3 bogomips: 6919 
           Speed: 800 MHz min/max: 800/1733 MHz Core speeds (MHz): 1: 800 2: 800 
Graphics:  Card-1: Intel Mobile 945GM/GMS 943/940GML Express Integrated Graphics driver: i915 v: kernel 
           bus ID: 00:02.0 
           Display: server: N/A driver: intel unloaded: modesetting resolution: <xdpyinfo missing> 
           OpenGL: renderer: Mesa DRI Intel 945GM x86/MMX/SSE2 v: 1.4 Mesa 18.0.4 direct render: Yes 
Audio:     Card-1: Intel NM10/ICH7 Family High Definition Audio driver: snd_hda_intel v: kernel bus ID: 00:1b.0 
           Sound Server: ALSA v: k4.9.103-1-MANJARO 
Network:   Card-1: Broadcom Limited BCM4311 802.11b/g WLAN driver: b43-pci-bridge v: N/A bus ID: 06:00.0 
           Card-2: Realtek RTL-8100/8101L/8139 PCI Fast Ethernet Adapter driver: 8139too v: 0.9.28 port: 2000 
           bus ID: 08:08.0 
           IF: enp8s8 state: down mac: <filter> 
           Card-3: Ralink MT7601U Wireless Adapter type: USB driver: mt7601u bus ID: 1:2 
           IF: wlp0s29f7u1 state: up mac: <filter> 
Drives:    HDD Total Size: 126.36 GiB used: 12.95 GiB (10.3%) 
           ID-1: /dev/sda vendor: Seagate model: ST9120822AS size: 111.79 GiB 
           ID-2: /dev/sdb type: USB vendor: Verbatim model: STORE N GO size: 14.57 GiB 
Partition: ID-1: / size: 57.66 GiB used: 12.95 GiB (22.5%) fs: ext4 dev: /dev/sda1 
           ID-2: swap-1 size: 920.0 MiB used: 0 KiB (0.0%) fs: swap dev: /dev/sda2 
Sensors:   System Temperatures: cpu: 55.0 C mobo: 26.8 C 
           Fan Speeds (RPM): N/A 
Info:      Processes: 107 Uptime: 16m Memory: 1.96 GiB used: 338.5 MiB (16.9%) Init: systemd Compilers: 
           gcc: 8.1.0 Shell: bash v: 4.4.19 inxi: 3.0.08 

Here is the error message from journalctl -fp err:

May 30 14:29:20 manjaro kernel: b43-phy0 ERROR: Firmware file "b43/b0g0initvals5.fw" not found
May 30 14:29:20 manjaro kernel: b43-phy0 ERROR: Firmware file "b43-open/ucode5.fw" not found
May 30 14:29:20 manjaro kernel: 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.

"systemctl start systemd-modules-load" shows no error whatsoever nor gives me a process ID.

I have tried the following:
a) Install linux49-broadcom-wl
b) Install the b43-firmware-classic from aur (which works on Arch on the same machine)
c) Toggling the blacklist
d) Installing an alternate kernel with its firmware drivers.
e) Backup and remove the /lib/firmware/b43 dir and retry all of the above.

Nothing seems to work.
What's baffling is that, besides the upgrade, I didn't modify anything on the system that I can think of.
Netctl works fine if I use a USB adapter to conenct the wifi.
Since neither the broadcom-wl nor the b43-firmware packages seem to solve the issue, how could I proceed to figure out the solution?

Your driver is installed improperly. I will post a link to one of my posts with info on how you can correct it.

1 Like

Keep in mind this is an i686 install so there might be some packaging inconsistencies.


(moved from #manjaro-development to #technical-issues-and-assistance:drivers)

2 Likes

hi tbg, thanks for the input.
I followed the steps you suggested but to no avail. The same error message at boot was present at every step, even after erasing everything and blacklisting the modules, which is sort of strange.
as jonathon suggests, it might be a packaging problem.
The problem is to figure which package, since changing kernel didn't help either.

Yes that is strange the messages you are getting. Try reinstalling the linux-firmware package.

Could you please post:

hwinfo --wlan
lsmod
rfkill list all
dkms status
 cat /etc/modprobe.d/*.conf

Sorry for so many, but that would be a big help.

When you installed the b43-firmware-classic and tested, did you check the modules that were running at that time. You may need to blacklist the "wl", “brcm80211”, “bcma” & “b43_legacy” modules when testing the the b43-firmware-classic.

Also do you have b43-fwcutter installed.

Did you install the linux49-headers & broadcom-wl-dkms with kernel 4.9. Just checking. :smile:

You should also install and test with kernels 4.14, 4.16, and 4.17. But you need to make sure you have no conflicting modules loaded for whichever driver your using.

tbg,
yes, when I installed the b43-firmware-classic (and even before that when I was using a standard and proven b43 module) I had all the other modules blacklisted, except for b43 and it was working as usually does.
yes I had b43-fwcutter installed as they recomend.
I installed the linux49-headers and broadcom-wl-dkms now, after removing all the rest, as it's indicated in the post you suggested.
Also, I installed the kernel 3.16-i686 with its firmware just to test it and to see if an older kernel would be more suited for the older hardware, same error appears.
I honestly do not recall what kernel was installed before the upgrade, but this is a month old install, so it was fairly recent.

hwinfo --wlan shows the USB card i'm using as an alternative, since is the only one with which works, so I don't think would be helpful.

lsmod:

Module                  Size  Used by
fuse                   90112  3
8021q                  28672  0
mrp                    20480  1 8021q
ctr                    16384  2
ccm                    20480  1
snd_hda_codec_conexant    20480  1
snd_hda_codec_generic    65536  1 snd_hda_codec_conexant
snd_hda_intel          32768  5
snd_hda_codec          94208  3 snd_hda_intel,snd_hda_codec_conexant,snd_hda_codec_generic
snd_hda_core           57344  4 snd_hda_intel,snd_hda_codec_conexant,snd_hda_codec,snd_hda_codec_generic
i915                 1183744  5
pcspkr                 16384  0
8139too                32768  0
snd_hwdep              16384  1 snd_hda_codec
joydev                 20480  0
hp_wmi                 16384  0
snd_pcm                86016  4 snd_hda_intel,snd_hda_codec,snd_hda_core
mousedev               20480  0
sparse_keymap          16384  1 hp_wmi
drm_kms_helper        114688  1 i915
drm                   253952  7 i915,drm_kms_helper
iTCO_wdt               16384  0
iTCO_vendor_support    16384  1 iTCO_wdt
syscopyarea            16384  1 drm_kms_helper
sysfillrect            16384  1 drm_kms_helper
sysimgblt              16384  1 drm_kms_helper
arc4                   16384  2
fb_sys_fops            16384  1 drm_kms_helper
i2c_algo_bit           16384  1 i915
i2c_i801               24576  0
coretemp               16384  0
wl                   6152192  0
evdev                  20480  10
input_leds             16384  0
lpc_ich                20480  0
mt7601u                77824  0
uas                    24576  0
8139cp                 28672  0
mii                    16384  2 8139cp,8139too
intel_agp              20480  0
intel_gtt              20480  2 intel_agp,i915
psmouse               131072  0
mac_hid                16384  0
i2c_smbus              16384  1 i2c_i801
agpgart                32768  3 intel_agp,intel_gtt,drm
snd_timer              28672  1 snd_pcm
ac                     16384  0
shpchp                 32768  0
wmi                    16384  1 hp_wmi
thermal                20480  0
battery                20480  0
snd                    57344  16 snd_hda_intel,snd_hwdep,snd_hda_codec_conexant,snd_hda_codec,snd_timer,snd_hda_codec_generic,snd_pcm
fjes                   28672  0
soundcore              16384  1 snd
video                  36864  1 i915
button                 16384  1 i915
acpi_cpufreq           20480  0
tpm_tis                16384  0
tpm_tis_core           20480  1 tpm_tis
tpm                    36864  2 tpm_tis,tpm_tis_core
sch_fq_codel           20480  5
ip_tables              20480  0
x_tables               20480  1 ip_tables
ext4                  499712  1
crc16                  16384  1 ext4
jbd2                   81920  1 ext4
fscrypto               24576  1 ext4
mbcache                16384  2 ext4
usb_storage            53248  1 uas
sr_mod                 24576  0
cdrom                  49152  1 sr_mod
sd_mod                 36864  3
ata_generic            16384  0
pata_acpi              16384  0
serio_raw              16384  0
atkbd                  24576  0
libps2                 16384  2 atkbd,psmouse
uhci_hcd               40960  0
ahci                   36864  2
ata_piix               32768  0
libahci                28672  1 ahci
libata                192512  5 ahci,ata_piix,libahci,ata_generic,pata_acpi
scsi_mod              139264  5 sd_mod,usb_storage,libata,uas,sr_mod
ehci_pci               16384  0
ehci_hcd               65536  1 ehci_pci
usbcore               184320  6 usb_storage,mt7601u,ehci_hcd,uhci_hcd,uas,ehci_pci
usb_common             16384  1 usbcore
i8042                  24576  0
serio                  20480  6 serio_raw,atkbd,psmouse,i8042
b43                   389120  0
led_class              16384  2 b43,input_leds
rng_core               16384  1 b43
bcma                   45056  1 b43
ssb                    57344  1 b43
pcmcia                 49152  1 ssb
pcmcia_core            20480  1 pcmcia
mmc_core              122880  2 b43,ssb
mac80211              618496  2 b43,mt7601u
cfg80211              454656  4 wl,b43,mac80211,mt7601u
rfkill                 20480  4 hp_wmi,cfg80211
type or paste code here

the module b43 shows up but I don't think is working because if I launch wifi-menu wlan0 (even after modprobe b43) it doesn't find the connection.

rfkill list all
0: phy1: Wireless LAN
	Soft blocked: no
	Hard blocked: no
1: hp-wifi: Wireless LAN
	Soft blocked: no
	Hard blocked: no

dkms status
broadcom-wl, 6.30.223.271, 4.9.103-1-MANJARO, i686: installed

cat /etc/modprobe.d/*.conf
blacklist b43
blacklist b43legacy
blacklist ssb
blacklist brcmsmac
blacklist brcmfmac
blacklist brcm80211

No reason to be sorry for asking for the information. On the contrary, I truly appreciate the help and am learning a good deal.
If you need further probing don't hesitate to ask.

I had to remove my prior instuctions because I had assumed you were connecting to the internet via ethernet. After re-reading your post, I realized you are running off a USB WiFi adapter. This will have greatly confused the results we wanted for the loaded modules command output. Save this list of instructions to a text file for reference. You'll need to disconnect the USB wifi dongle and power down. With the dongle still removed restart the computer. Without the USB wifi plugged in, rerun the following commands:

hwinfo --wlan
lsmod

Save the ouput of those commands to a text file.

We will need your internal wireless adapter device ID from the hwinfo --wlan command output. You need to insert your device ID for your wireless network card where "wlan0" is in the command below:

ip link set wlan0 up

The command should look like this (with your ID inserted for wlp3s0) :

sudo ip link set wlp3s0 up

We may need to use this command later in the list of instructions that follows.

Do not reconnect the USB wifi at any point until this procedure is complete.

Run the following commands in sequence:

sudo rmod wl b43 b43legacy bcma ssb mac8021 cfg80211 bcm43xx brcm80211 brcmfmac brcmsmac

There may be errors from this command as the modules are not certain because of the external adapter present during the first commands results. Record any errors produced in the earlier text file you created.

Then, run:

sudo modprobe wl

If the adapter is detected you don't need to do anything further at this point.

If it is not detected, then run:

sudo depmod -a

No change, then we need to run the command from earlier with your adapters ID replacing "wlp3s0"

sudo ip link set wlp3s0 up

No change, then run this command:

sudo systemctl restart NetworkManager

I sure hope those instructions fix you up. If they don't I've got some other stuff we can try.

Good luck.

ok,
pulled out USB adapter and followed the instructions.
here the results:

hwinfo --wlan 
(some quick output then nothing)

[mac@manjaro ~]$ lsmod                                          
Module                  Size  Used by
nls_iso8859_1          16384  1
nls_cp437              16384  1
vfat                   20480  1
fat                    61440  1 vfat
fuse                   90112  3
wl                   6152192  0
uas                    24576  0
snd_hda_codec_conexant    20480  1
snd_hda_codec_generic    65536  1 snd_hda_codec_conexant
joydev                 20480  0
mousedev               20480  0
snd_hda_intel          32768  3
i915                 1183744  4
snd_hda_codec          94208  3 snd_hda_intel,snd_hda_codec_conexant,snd_hda_codec_generic
iTCO_wdt               16384  0
iTCO_vendor_support    16384  1 iTCO_wdt
hp_wmi                 16384  0
sparse_keymap          16384  1 hp_wmi
8139too                32768  0
coretemp               16384  0
8139cp                 28672  0
psmouse               131072  0
evdev                  20480  10
input_leds             16384  0
mii                    16384  2 8139cp,8139too
snd_hda_core           57344  4 snd_hda_intel,snd_hda_codec_conexant,snd_hda_codec,snd_hda_codec_generic
snd_hwdep              16384  1 snd_hda_codec
lpc_ich                20480  0
snd_pcm                86016  3 snd_hda_intel,snd_hda_codec,snd_hda_core
pcspkr                 16384  0
snd_timer              28672  1 snd_pcm
snd                    57344  13 snd_hda_intel,snd_hwdep,snd_hda_codec_conexant,snd_hda_codec,snd_timer,snd_hda_codec_generic,snd_pcm
i2c_i801               24576  0
mac_hid                16384  0
drm_kms_helper        114688  1 i915
soundcore              16384  1 snd
thermal                20480  0
i2c_smbus              16384  1 i2c_i801
drm                   253952  6 i915,drm_kms_helper
syscopyarea            16384  1 drm_kms_helper
sysfillrect            16384  1 drm_kms_helper
sysimgblt              16384  1 drm_kms_helper
fb_sys_fops            16384  1 drm_kms_helper
i2c_algo_bit           16384  1 i915
wmi                    16384  1 hp_wmi
battery                20480  0
ac                     16384  0
intel_agp              20480  0
intel_gtt              20480  2 intel_agp,i915
agpgart                32768  3 intel_agp,intel_gtt,drm
fjes                   28672  0
button                 16384  1 i915
shpchp                 32768  0
acpi_cpufreq           20480  0
video                  36864  1 i915
tpm_tis                16384  0
tpm_tis_core           20480  1 tpm_tis
tpm                    36864  2 tpm_tis,tpm_tis_core
sch_fq_codel           20480  1
ip_tables              20480  0
x_tables               20480  1 ip_tables
ext4                  499712  1
crc16                  16384  1 ext4
jbd2                   81920  1 ext4
fscrypto               24576  1 ext4
mbcache                16384  2 ext4
usb_storage            53248  2 uas
sr_mod                 24576  0
cdrom                  49152  1 sr_mod
sd_mod                 36864  5
ata_generic            16384  0
pata_acpi              16384  0
serio_raw              16384  0
atkbd                  24576  0
libps2                 16384  2 atkbd,psmouse
uhci_hcd               40960  0
ata_piix               32768  0
ahci                   36864  2
libahci                28672  1 ahci
ehci_pci               16384  0
ehci_hcd               65536  1 ehci_pci
libata                192512  5 ahci,ata_piix,libahci,ata_generic,pata_acpi
scsi_mod              139264  5 sd_mod,usb_storage,libata,uas,sr_mod
usbcore               184320  5 usb_storage,ehci_hcd,uhci_hcd,uas,ehci_pci
usb_common             16384  1 usbcore
i8042                  24576  0
serio                  20480  6 serio_raw,atkbd,psmouse,i8042
b43                   389120  0
led_class              16384  2 b43,input_leds
rng_core               16384  1 b43
bcma                   45056  1 b43
ssb                    57344  1 b43
pcmcia                 49152  1 ssb
pcmcia_core            20480  1 pcmcia
mmc_core              122880  2 b43,ssb
mac80211              618496  1 b43
cfg80211              454656  3 wl,b43,mac80211
rfkill                 20480  3 hp_wmi,cfg80211

[mac@manjaro ~]$ sudo ip link set wlan0 up
Cannot find device "wlan0"

[mac@manjaro ~]$ sudo rmod wl b43 b43legacy bcma ssb mac8081 cfg80211 bcm43xx brcm8081 brcmfmac brcmsmac
sudo: rmod: command not found

sudo modprobe wl
(no output)

sudo depmod -a

[mac@manjaro ~]$ sudo ip link set wlan0 up
Cannot find device "wlan0"

[mac@manjaro ~]$ sudo systemctl restart netctl

[mac@manjaro ~]$ sudo wifi-menu wlan0
No such interface: wlan0

note, this is still the dmesg output:

[    2.887003] ssb: Sonics Silicon Backplane found on PCI device 0000:06:00.0
[    2.892189] b43-phy0: Broadcom 4311 WLAN found (core revision 10)
[    2.930869] b43-phy0: Found PHY: Analog 4, Type 2 (G), Revision 8
[    2.930889] b43-phy0: Found Radio: Manuf 0x17F, ID 0x2050, Revision 2, Version 0
[    2.944307] Broadcom 43xx driver loaded [ Features: PNLS ]
[    2.947780] b43 ssb0:0: Direct firmware load for b43/pcm5.fw failed with error -2
[    2.947803] b43 ssb0:0: Direct firmware load for b43/b0g0initvals5.fw failed with error -2
[    2.947851] b43 ssb0:0: Direct firmware load for b43-open/ucode5.fw failed with error -2
[    2.947874] b43 ssb0:0: Direct firmware load for b43-open/ucode5.fw failed with error -2
[    2.947879] b43-phy0 ERROR: Firmware file "b43/b0g0initvals5.fw" not found
[    2.948388] b43-phy0 ERROR: Firmware file "b43-open/ucode5.fw" not found
[    2.948874] 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.

What baffles me is that even if all the b43 modules are blacklisted now, the system still look and do not find them at boot, thus the error warning.
Whatever firmware I have installed or whether or not they are blacklisted, and even booting with a different kernel, the error message is still the same.
On this same laptop I've ran several distros including Manajro and Arch32 at present, using pretty much the same driver b32 or b32-classic without any problem, so I don't think the driver itself is the cause.
On Arch32 and on Manjaro before I used netctl and wifi-menu without fault, so I would rule out that as a cause too.
My unexpert opinion is that it might be related to systemd.
My understanding is that Manajro32 and Arch32 use pretty much the same packages.
Perhap in the upgrade Manajro might have pulled some package or changed the configuration somehow, something that does not show up (or does not show up as yet) on Arch32.
I can connect with the USB, so the system is functional, but I'm curious as to what is the cause because, having erased and reinstalled the drivers and changed the kernel, I guess the culprit should be something in between.
What do you think?

Yes this is very baffling. I think maybe we should try to get the b43 drivers working properly. Uninstall the broadcom-wl-dkms driver and the linux headers. Next, remove the linux firmware as you did previously by renaming the folder, then uninstall the b43-fwcutter package. If you are dual booting Arch on this machine check which drivers are blacklisted using b43-firmware-classic on Arch. If you can not find that, then simply remove any reference to b43 from your current blacklist (and add wl to it).

Reboot.

Then, install the linux-firmware package (from repository).
Then, install the b43-fwcutter package
Then, Install the b43-firmware-classic package

Reboot, again with the external wifi removed.

With our times so out of sync its hard to get stuff accomplished. Hope that works for you.

hi tbg,
I tried this one you suggested too, replicated precisely the setup on Arch32. No change, the kernel simply requests the driver but does not find it.
Must be some quirk due to the upgrade, maybe even the new initramfs.
I give up, I better either keep using the USB adapter or, most likely, reinstall from scratch.
Thank a lot for your time and advice, I've learned quite a few commands and diagnostic tools in the process.
The friendliness of the manjaro community is always the plus.

I guess as a last shot you could issue:

sudo mkinitcpio -P

sudo update-grub

unlikely to do anything, but worth a try I guess.

BTW, have you tried booting from any other live boot disks to see if your card is working. If you find another OS that works, you could try copying that versions firmware to your Manjaro install. There could be a slight possibility this method could cause hardware problems. I believe the risk is very slight though.

You could also try manually installing the firmware:

http://www.lwfinger.com/b43-firmware/

I just found an old post on The Arch Linux forum that may help you. Why this issue would just crop up now I have no idea. Anyways when looking through your modules list earlier I noticed hp_wmi. These manufacturers wmi modules can often interfere with proper WiFi operation and require blacklisting sometimes. I did search for this earlier, but only turned up info with this module related to bluetooth, (so I dismissed it as being part of your problem). This module may be what's preventing your adapter from loading at boot. The link to the post on the Arch forum is long, and most is unrelated to your issue so I will give the important excerpt.

I had the same problem. I've solved it by blacklisting hp_wmi. Do this as root:

sudo echo "blacklist hp_wmi" > /etc/modprobe.d/hp.conf

Reboot, then unblock all WiFi with (as root):

sudo rfkill unblock all

https://bbs.archlinux.org/viewtopic.php?id=169503

You may also want to blacklist "cfg80211" as well as I seen that recommended as well with the wmi module.

Also I'm not sure why the rmmod command didn't work earlier when testing. You could use this alternate command instead to unload unwanted modules:

sudo modprobe -r ssb
sudo modprobe -r wl

I know your rather tired of this issue, and perhaps can't be bothered with anymore testing, but the info may help someone. Good luck.

always pleased to try something and, if possible, help someone else.
I tried to rebuild initramfs and the further blacklisting. No change.
As for the manual install, on this same laptop (compaq c500) arch runs with precisely the same b43 modules, as did manjaro before the upgrade.
On my testing partition of this machine I ran just about any distro you can imagine, usually all connecting simply by copying the same b43 driver in the firmware directory.
I'm pretty confident the driver itself is not the issue.
This issue must be some little silly hitch that just impedes the whole process, since the error message comes up at the very beginning on the dmesg list.
the good thing is that (hopefully) it might be hard to re-encounter for someone else.

1 Like

Sorry for the long delay here, but I just found a post on the Arch Linux forum with your exact error and hopefully a solution for the b43 firmware missing error.

the solution was the following:

  1. Install b43-firmware.
  2. Create /etc/modprobe.d/local-b43.conf with this option:
options b43 allhwsupport=1

From this page at Arch user forum:

https://bbs.archlinux.org/viewtopic.php?id=231532

Hope that helps.

2 Likes

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.

Forum kindly sponsored by