[SOLVED] Slow Wi-fi on Broadcom BCM4313 Adapter (rev 01)

Hello everyone. Can somebody please help me figure this out? I use Manjaro XFCE edition (stable) on Dell N5110 laptop with Broadcom BCM4313 network adapter. Today I had problems with electricity and my laptop was turned off because of that (the battery is dead, so it works only plugged into socket). After the electricity thing got sorted out I turned my computer on and it didn't connect to my wi-fi. It didn't even show any networks. Then I booted into Fatdog64 live usb and it couldn't scan for any networks either. Then I booted into Manjaro again, this time it showed every network, except mine. I decided to try and reinstall drivers, so I went to manjaro hardware configuration tool and deleted the installed driver, which was "broadcom wl". After I deleted that driver, my pc suddenly connected back to my network. But now it is slower than before. I installed the driver "broadcom wl" back and after that my wi-fi disconnected. After several iterations of the above with no change to outcome, in order to figure out why I checked if the live-version of manjaro would be any different and it was just as slow. Finally to rule out my internet provider having troubles I decided to check if there's any difference with other distros. I used Fatdog64 live usb again and it connected to my network and it is as fast it was. So to sum up - both my install and live-usb of Manjaro have slow wi-fi at around 2mbps, Fatdog64 connects to the same network at around 30mbps. All servers in speedtests were the same. And the most confusing part about this - when I use lspci -k, each distro shows "Kernel driver in use: bcma-pci-bridge" and "Kernel modules: bcma".

Does anybody have any idea how this issue can be sorted out? I really like Manjaro and this sudden wierdness frusrates me and I tried everything I could find to no avail :frowning:

Lots of forum threads about this one:

https://archived.forum.manjaro.org/search?q=bcma-pci-bridge

Essentially, you have to make sure the driver which works best for your laptop is the one which is enabled.

I have written up a simple guide you can follow here:

2 Likes

Is there a way to check which driver I have installed for the step ""Uninstall the driver (substituting your installed driver), at the tail end of the command below" in your guide? I have already deleted the "broadcom-wl" one before posting here, therefore I tried all the steps in your guide except that uninstall one. And it all resulted in my computer not seeing my network at all (not available in the connections list, not able to access it through manually adding it). I'm sure I'm doing it wrong, but I have no clue as to how I determine which driver to uninstall if I already uninstalled broadcom-wl and I assume it reverted to using whatever is in the kernel itself. Sorry if it's dumb question
As a side note - doing the steps from the guide resulted in my pc seeing EVERY other network, except mine. What could cause this specific problem and what should I look into to figure this out?

You need to post some command outputs:


inxi -Fxzc0

rfkill list all

lsmod

dkms status
cat /etc/modprobe.d
pacman -Qsq linux | grep linux | grep -v -E '(arch|util|sys|api|firmware)'

This makes it sound like the card is working but it doesn't like your specific network. Have you tried connecting to your network via "connect to hidden network" ? Or rebooting?

1 Like

Yup, both turn no result. I'm not really sure about it not liking my specific network - it worked just fine until sudden power off due to electricity problem. But to be fair - it survived the same incident about five times before this without any problems. To recap: Stock install with non-free drivers worked fine -> sudden poweroff -> not seeing any networks -> after some time it could see every other network but mine -> removed broadcom-wl drivers -> it connects, but 10-20 times slower than it should -> broadcom-wl installed again -> every other network but mine.
To be fair - broadcom-wl reinstall turns some messages along the lines of "blahbalhbalh FATAL brcm80211 something" and also the same as previous. but with some other modules. I can try to reproduce it if it's any clue as to what is going on.

Also, I may specify that "connects, but 10-20 times slower" case says it uses "brcmsmac", when I click on "Connection Information" in network manager.

Also, Jonathon, since broadcom-wl dkms didn't work for me, for now I would like to fiddle with various blacklisting options as in tbg's guide to try to figure out which driver works for my machine., like in your advice. Hence I want to ask you guys if there any list of possible drivers and modules so I could try different blacklisting options? And how/where can I find missing brcm80211 module?

Thanks for your support guys, you rock, and so will my machine soon enough thanks to your help. Cheers

Outputs are these:

inxi -Fxzc0

Network:
  Card-1: Realtek RTL810xE PCI Express Fast Ethernet driver: r8169 
  v: 2.3LK-NAPI port: d000 bus ID: 05:00 
  IF: enp5s0 state: up speed: 100 Mbps duplex: full mac: <filter> 
  Card-2: Broadcom Limited BCM4313 802.11bgn Wireless Network Adapter 
  driver: wl v: kernel bus ID: 09:00 
  IF: wlp9s0 state: dormant mac: <filter>

rfkill list all

0: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: no

lsmod

Module                  Size  Used by
sg                     40960  0
st                     65536  0
fuse                  118784  3
bbswitch               16384  0
intel_rapl             24576  0
x86_pkg_temp_thermal    16384  0
intel_powerclamp       16384  0
coretemp               16384  0
kvm_intel             225280  0
wl                   6463488  0
uvcvideo              102400  0
videobuf2_vmalloc      16384  1 uvcvideo
videobuf2_memops       16384  1 videobuf2_vmalloc
kvm                   708608  1 kvm_intel
irqbypass              16384  1 kvm
snd_hda_codec_idt      61440  1
snd_hda_codec_generic    86016  1 snd_hda_codec_idt
snd_hda_codec_hdmi     57344  4
crct10dif_pclmul       16384  0
crc32_pclmul           16384  0
joydev                 24576  0
videobuf2_v4l2         28672  1 uvcvideo
ghash_clmulni_intel    16384  0
pcbc                   16384  0
snd_hda_intel          45056  4
videobuf2_core         45056  2 videobuf2_v4l2,uvcvideo
cfg80211              733184  1 wl
aesni_intel           188416  0
aes_x86_64             20480  1 aesni_intel
videodev              204800  3 videobuf2_core,videobuf2_v4l2,uvcvideo
dell_wmi               16384  0
ums_realtek            20480  0
crypto_simd            16384  1 aesni_intel
sparse_keymap          16384  1 dell_wmi
glue_helper            16384  1 aesni_intel
media                  45056  2 videodev,uvcvideo
uas                    28672  0
i915                 1941504  10
iTCO_wdt               16384  0
wmi_bmof               16384  0
dell_laptop            24576  0
dell_smbios            16384  2 dell_wmi,dell_laptop
dcdbas                 16384  1 dell_smbios
mxm_wmi                16384  0
iTCO_vendor_support    16384  1 iTCO_wdt
cryptd                 28672  3 crypto_simd,ghash_clmulni_intel,aesni_intel
r8169                  94208  0
intel_cstate           16384  0
rfkill                 28672  4 dell_laptop,cfg80211
snd_hda_codec         151552  4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_idt
dell_smm_hwmon         16384  0
evdev                  20480  15
input_leds             16384  0
mousedev               24576  0
intel_rapl_perf        16384  0
led_class              16384  2 input_leds,dell_laptop
psmouse               167936  0
mac_hid                16384  0
i2c_algo_bit           16384  1 i915
snd_hda_core           90112  5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_idt
snd_hwdep              16384  1 snd_hda_codec
snd_pcm               118784  4 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core
drm_kms_helper        196608  1 i915
pcspkr                 16384  0
snd_timer              36864  1 snd_pcm
mii                    16384  1 r8169
snd                    90112  16 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_timer,snd_pcm,snd_hda_codec_idt
drm                   434176  8 drm_kms_helper,i915
wmi                    28672  3 dell_wmi,wmi_bmof,mxm_wmi
video                  45056  3 dell_wmi,dell_laptop,i915
ac                     16384  0
battery                20480  0
thermal                20480  0
intel_gtt              24576  1 i915
agpgart                49152  2 intel_gtt,drm
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
button                 16384  1 i915
soundcore              16384  1 snd
i2c_i801               28672  0
shpchp                 40960  0
mei_me                 45056  0
mei                   114688  1 mei_me
lpc_ich                28672  0
sch_fq_codel           20480  3
uinput                 20480  0
crypto_user            16384  0
ip_tables              28672  0
x_tables               45056  1 ip_tables
ext4                  716800  1
crc32c_generic         16384  0
crc16                  16384  1 ext4
mbcache                16384  1 ext4
jbd2                  118784  1 ext4
fscrypto               32768  1 ext4
sr_mod                 28672  0
sd_mod                 61440  3
cdrom                  69632  1 sr_mod
usb_storage            73728  2 uas,ums_realtek
hid_generic            16384  0
usbhid                 57344  0
hid                   131072  2 usbhid,hid_generic
serio_raw              16384  0
atkbd                  32768  0
libps2                 16384  2 atkbd,psmouse
ahci                   40960  2
libahci                40960  1 ahci
xhci_pci               16384  0
crc32c_intel           24576  2
ehci_pci               16384  0
libata                278528  2 libahci,ahci
xhci_hcd              241664  1 xhci_pci
ehci_hcd               94208  1 ehci_pci
scsi_mod              212992  7 st,sd_mod,usb_storage,uas,libata,sg,sr_mod
usbcore               286720  9 xhci_hcd,ehci_pci,usbhid,usb_storage,uvcvideo,ehci_hcd,xhci_pci,uas,ums_realtek
usb_common             16384  1 usbcore
i8042                  32768  1 dell_laptop
serio                  28672  6 serio_raw,atkbd,psmouse,i8042

dkms status

broadcom-wl, 6.30.223.271, 4.14.57-1-MANJARO, x86_64: installed

cat /etc/modprobe.d - not sure how to do this one, it says:

cat: /etc/modprobe.d: Is a directory

pacman -Qsq linux | grep linux | grep -v -E '(arch|util|sys|api|firmware)'

linux414
linux414-bbswitch
linux414-headers
linux414-nvidia-390xx

UPD: /etc/modprobe.d has three files: blacklist.conf , mhwd-bbswitch.conf and mhwd-nvidia.conf
I guess the blacklist.conf is the one you asked for, so its contents are:

blacklist b43
blacklist b43legacy
blacklist ssb
blacklist bcm43xx
blacklist brcm80211
blacklist brcmfmac
blacklist brcmsmac
blacklist bcma
blacklist b43
blacklist b43legacy
blacklist ssb
blacklist bcm43xx
blacklist brcm80211
blacklist brcmfmac
blacklist brcmsmac
blacklist bcma

You can remove the duplicate entries in blacklist.conf.

Ensure the DHCP server on the router to auto, or set a static IP address for your laptop in the router via mac address association.

Enable Quality of Service (QoS) on your router to help improve poor
speed issues. Enable Wi-Fi Multimedia (WMM) if it has that QoS setting.

Ensure your network is not hidden in your router settings.

Disable IPV6 in your router, and also in your wifi connection properties in Network Manager.

Run these commands, and post the input/output of all commands:

sudo systemctl stop NetworkManager
sudo rmmod wl
sudo modprobe wl
sudo ip link set wlp9s0 mode default
sudo ip link set wlp9s0 up
sudo systemctl start NetworkManager

If your connection is still not working after doing all the above, delete your wifi connection in network manager and recreate it.

Thanks. Over the last day I tried all your suggestions with commands and messing around with the router/connection settings. Additionally I removed one of suspect modules with rmmod command, and installed dkms package (my guess is that mhwd script didn't resolve this dependency when installing broadcom-wl-dkms) when going through the guide in the post #3. Somehow some combination of those now works and gives me the exact wifi performance that I was trying to get back.

The dkms drivers along with the Linux headers seems to help in a lot of cases. Glad to hear you got it working and thanks for reporting back. Please mark your thread solved.

Thanks for the help. I feel a strong sense of achievement and content with my machine again. I've ditched Windows completely around two months ago and so far this is my first experience of actually needing to ask for help on forum to fix anything. Now I do get why people might prefer Linux over anything else. Cheers

1 Like

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

Forum kindly sponsored by