FS#69045 - [broadcom-wl-dkms] interface broken (BCM4352)

Attached to Project: Community Packages
Opened by gamezelda (gamezelda) - Sunday, 20 December 2020, 22:45 GMT
Last edited by Alexander F. Rødseth (xyproto) - Tuesday, 22 December 2020, 14:54 GMT
Task Type Bug Report
Category Packages: Testing
Status Closed
Assigned To Alexander F. Rødseth (xyproto)
Architecture All
Severity High
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 1
Private No

Details

Description:

I have some Asus a device with a Broadcom chip (BCM4352). If I install the broadcom-wl-dkms 6.30.223.271-24 package from testing (with corresponding linux 5.10.1.arch1-1 kernel from testing), the network interface still shows up but it doesn't work, and some kernel messages are printed and it doesn't work in NetworkManager.

I have been testing Linux 5.10 release candidates for some months and using this patch instead without problems so far for my network adapter: https://gist.github.com/joanbm/5c640ac074d27fd1d82c74a5b67a1290 (it should apply cleanly over the full set of patches of broadcom-wl-dkms 6.30.223.271-23).

Additional info:
* package version(s): broadcom-wl-dkms 6.30.223.271-24
* config and/or log files etc.: Included below
* link to upstream bug report, if any: None, I think upstream is dead?

Steps to reproduce:

Upgrade to broadcom-wl-dkms 6.30.223.271-24 and try to connect to the network with NetworkManager

Logs:

$ lspci -v | grep -i broadcom
25:00.0 Network controller: Broadcom Inc. and subsidiaries BCM4352 802.11ac Wireless Network Adapter (rev 03)
$ journalctl -e | egrep -i -B 3 -A 3 "wl|broadcom"
Dez 20 23:28:06 SOL kernel: EDAC amd64: Node 0: DRAM ECC disabled.
Dez 20 23:28:06 SOL kernel: wl: loading out-of-tree module taints kernel.
Dez 20 23:28:06 SOL kernel: wl: module license 'MIXED/Proprietary' taints kernel.
Dez 20 23:28:06 SOL kernel: Disabling lock debugging due to kernel taint
Dez 20 23:28:06 SOL kernel: wl: module verification failed: signature and/or required key missing - tainting kernel
Dez 20 23:28:06 SOL kernel: EDAC amd64: F17h detected (node 0).
Dez 20 23:28:06 SOL kernel: EDAC amd64: Node 0: DRAM ECC disabled.
Dez 20 23:28:06 SOL kernel: ERROR @wl_dev_intvar_get :
Dez 20 23:28:06 SOL kernel: error (-14)
Dez 20 23:28:06 SOL kernel: ERROR @wl_cfg80211_get_tx_power :
Dez 20 23:28:06 SOL kernel: error (-14)
Dez 20 23:28:06 SOL kernel: wlan0: Broadcom BCM43b1 802.11 Hybrid Wireless Controller 6.30.223.271 (r587334)
Dez 20 23:28:06 SOL kernel:
--
Dez 20 23:28:06 SOL systemd-udevd[474]: ethtool: autonegotiation is unset or enabled, the speed and duplex are not writable.
Dez 20 23:28:06 SOL kernel: wl 0000:25:00.0 wlp37s0: renamed from wlan0
Dez 20 23:28:06 SOL kernel: snd_hda_codec_realtek hdaudioC1D0: autoconfig for ALC892: line_outs=3 (0x14/0x15/0x16/0x0/0x0) type:line
--
Dez 20 23:28:08 SOL NetworkManager[642]: <info> [1608503288.5485] dns-mgr[0x5555b0c96220]: init: dns=default,systemd-resolved rc-manager=symlink (auto)
Dez 20 23:28:08 SOL NetworkManager[642]: <info> [1608503288.5490] rfkill0: found Wi-Fi radio killswitch (at /sys/devices/pci0000:00/0000:00:01.3/0000:03:00.2/0000:20:04.0/0000:25:00.0/ieee80211/phy0/rfkill0) (driver wl)
Dez 20 23:28:08 SOL NetworkManager[642]: <info> [1608503288.5491] manager[0x5555b0cbe030]: rfkill: Wi-Fi hardware radio set enabled
--
Dez 20 23:28:08 SOL dockerd[664]: time="2020-12-20T23:28:08.772572454+01:00" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc
Dez 20 23:28:08 SOL NetworkManager[642]: <info> [1608503288.9095] manager: (wlp37s0): new 802.11 Wi-Fi device (/org/freedesktop/NetworkManager/Devices/3)
Dez 20 23:28:08 SOL NetworkManager[642]: <info> [1608503288.9103] device (wlp37s0): state change: unmanaged -> unavailable (reason 'managed', sys-iface-state: 'external')
Dez 20 23:28:08 SOL kernel: r8169 0000:22:00.0 enp34s0: Link is Down
Dez 20 23:28:08 SOL kernel: ERROR @wl_dev_intvar_get :
Dez 20 23:28:08 SOL kernel: error (-14)
Dez 20 23:28:08 SOL kernel: ERROR @wl_cfg80211_get_tx_power :
Dez 20 23:28:08 SOL kernel: error (-14)
--
Dez 20 23:28:08 SOL NetworkManager[642]: <info> [1608503288.9663] manager: (lxcbr0): new Bridge device (/org/freedesktop/NetworkManager/Devices/4)
Dez 20 23:28:08 SOL kernel: ERROR @wl_set_mode :
Dez 20 23:28:08 SOL kernel: WLC_SET_INFRA error (-14)
Dez 20 23:28:08 SOL kernel: ERROR @wl_update_wiphybands :
Dez 20 23:28:08 SOL kernel: error (-14)
Dez 20 23:28:08 SOL kernel: ERROR @wl_dev_intvar_get :
Dez 20 23:28:08 SOL kernel: error (-14)
Dez 20 23:28:08 SOL kernel: ERROR @wl_cfg80211_get_tx_power :
Dez 20 23:28:08 SOL kernel: error (-14)
--
Dez 20 23:28:09 SOL systemd[1]: Started WPA supplicant.
Dez 20 23:28:09 SOL kernel: ERROR @wl_dev_intvar_get :
Dez 20 23:28:09 SOL kernel: error (-14)
Dez 20 23:28:09 SOL wpa_supplicant[730]: Could not set interface wlp37s0 flags (UP): Operation not permitted
Dez 20 23:28:09 SOL wpa_supplicant[730]: nl80211: Could not set interface 'wlp37s0' UP
Dez 20 23:28:09 SOL wpa_supplicant[730]: nl80211: deinit ifname=wlp37s0 disabled_11b_rates=0
Dez 20 23:28:09 SOL wpa_supplicant[730]: Could not set interface wlp37s0 flags (UP): Operation not permitted
Dez 20 23:28:09 SOL wpa_supplicant[730]: WEXT: Could not set interface 'wlp37s0' UP
Dez 20 23:28:09 SOL wpa_supplicant[730]: wlp37s0: Failed to initialize driver interface
Dez 20 23:28:09 SOL NetworkManager[642]: <error> [1608503289.0249] device (wlp37s0): Couldn't initialize supplicant interface: GDBus.Error:fi.w1.wpa_supplicant1.UnknownError: wpa_supplicant couldn't grab this interface.
Dez 20 23:28:09 SOL audit[731]: NETFILTER_CFG table=filter family=2 entries=8 op=xt_replace pid=731 comm="iptables"
--
Dez 20 23:28:16 SOL py3status[1061]: starting module moc
Dez 20 23:28:18 SOL NetworkManager[642]: <warn> [1608503298.9942] device (wlp37s0): re-acquiring supplicant interface (#1).
Dez 20 23:28:18 SOL wpa_supplicant[730]: Could not set interface wlp37s0 flags (UP): Operation not permitted
Dez 20 23:28:18 SOL wpa_supplicant[730]: nl80211: Could not set interface 'wlp37s0' UP
Dez 20 23:28:18 SOL wpa_supplicant[730]: nl80211: deinit ifname=wlp37s0 disabled_11b_rates=0
Dez 20 23:28:18 SOL wpa_supplicant[730]: Could not set interface wlp37s0 flags (UP): Operation not permitted
Dez 20 23:28:18 SOL wpa_supplicant[730]: WEXT: Could not set interface 'wlp37s0' UP
Dez 20 23:28:18 SOL wpa_supplicant[730]: wlp37s0: Failed to initialize driver interface
Dez 20 23:28:18 SOL NetworkManager[642]: <error> [1608503298.9963] device (wlp37s0): Couldn't initialize supplicant interface: GDBus.Error:fi.w1.wpa_supplicant1.UnknownError: wpa_supplicant couldn't grab this interface.
Dez 20 23:28:18 SOL kernel: net_ratelimit: 15 callbacks suppressed
Dez 20 23:28:18 SOL kernel: ERROR @wl_dev_intvar_get :
Dez 20 23:28:18 SOL kernel: error (-14)
Dez 20 23:28:18 SOL kernel: ERROR @wl_cfg80211_get_tx_power :
Dez 20 23:28:18 SOL kernel: error (-14)
Dez 20 23:28:18 SOL kernel: ERROR @wl_dev_intvar_get :
Dez 20 23:28:18 SOL kernel: error (-14)
Dez 20 23:28:18 SOL kernel: ERROR @wl_cfg80211_get_tx_power :
Dez 20 23:28:18 SOL kernel: error (-14)
Dez 20 23:28:18 SOL kernel: ERROR @wl_dev_intvar_get :
Dez 20 23:28:18 SOL kernel: error (-14)
Dez 20 23:28:18 SOL kernel: ERROR @wl_cfg80211_get_tx_power :
Dez 20 23:28:18 SOL kernel: error (-14)
Dez 20 23:28:18 SOL kernel: ERROR @wl_dev_intvar_get :
Dez 20 23:28:18 SOL kernel: error (-14)
Dez 20 23:28:18 SOL kernel: ERROR @wl_cfg80211_get_tx_power :
Dez 20 23:28:18 SOL kernel: error (-14)
Dez 20 23:28:18 SOL kernel: ERROR @wl_dev_intvar_get :
Dez 20 23:28:18 SOL kernel: error (-14)
Dez 20 23:28:18 SOL kernel: ERROR @wl_cfg80211_get_tx_power :
Dez 20 23:28:18 SOL kernel: error (-14)
This task depends upon

Closed by  Alexander F. Rødseth (xyproto)
Tuesday, 22 December 2020, 14:54 GMT
Reason for closing:  Fixed
Additional comments about closing:  Fixed for Linux 5.10 in [community-testing]
Comment by gamezelda (gamezelda) - Sunday, 20 December 2020, 22:58 GMT
Actually the command I ran for the logs should have been: 'journalctl -e | egrep -i -B 1 -A 1 "wl|broadcom"'
Comment by Alexander F. Rødseth (xyproto) - Monday, 21 December 2020, 20:44 GMT
Thank you for reporting!

I had no hardware to test this on when patching broadcom-wl-dkms.

I'll try to apply the patch mentioned by mog@centrum.cz in the out-of-date notification for broadcom-wl instead:

https://gist.githubusercontent.com/joanbm/5c640ac074d27fd1d82c74a5b67a1290/raw/53fd95f23ef352f31c3ca596c7568e32f5e7a9b7/broadcom-wl-fix-linux-5.10.patch
Comment by Alexander F. Rødseth (xyproto) - Monday, 21 December 2020, 20:49 GMT
Unfortunately, that patch did not apply, because:

/var/lib/dkms/broadcom-wl/6.30.223.271/build/src/shared/linux_osl.c:949:10: error: implicit declaration of function ‘ioremap_nocache’; did you mean ‘ioremap_cache’? [-Werror=implicit-function-declaration]
949 | return (ioremap_nocache((unsigned long)pa, (unsigned long)size));
Comment by Alexander F. Rødseth (xyproto) - Monday, 21 December 2020, 21:00 GMT
I also tried this patch:

https://gist.github.com/joanbm/5c640ac074d27fd1d82c74a5b67a1290

That also, unfortunately, did not make the kernel module compile.
Comment by Alexander F. Rødseth (xyproto) - Monday, 21 December 2020, 21:31 GMT
The compilation of the broadcom-wl-dkms kernel module currently stops at:

/var/lib/dkms/broadcom-wl/6.30.223.271/build/src/wl/sys/wl_cfg80211_hybrid.c: In function ‘wl_dev_ioctl’:
/var/lib/dkms/broadcom-wl/6.30.223.271/build/src/wl/sys/wl_cfg80211_hybrid.c:460:7: error: implicit declaration of function ‘get_fs’; did you mean ‘sget_fc’? [-Werror=implicit-funtion]
460 | fs = get_fs();
| ^~~~~~
| sget_fc
/var/lib/dkms/broadcom-wl/6.30.223.271/build/src/wl/sys/wl_cfg80211_hybrid.c:460:7: error: incompatible types when assigning to type ‘mm_segment_t’ from type ‘int’

`get_fs` should be relatively easy to replace, and `mm_segment_t` can probably just be removed, but I ran out of time here now.
Comment by loqs (loqs) - Monday, 21 December 2020, 22:00 GMT
PKGBUILD.diff.1 removes the conflicting sed commands that prevent the patch from applying.
PKGBUILD.diff.2 does the above plus merges 5.9 patch with 5.10 patch which made it redundant.
Comment by gamezelda (gamezelda) - Monday, 21 December 2020, 22:03 GMT
Hi, sorry this Broadcom BS is giving you (us) so much trouble :(

I forked your Arch PKGBUILD repo and fixed it by comparing it with my custom PKGBUILD I had around, basically the change is that the patch was supposed to apply also over 011-linux59.patch (even though it's basically redundant so you may squash them if you want), and reverting some stuff that was probably attempts to fix it.

Full PKGBUILD and patches: https://github.com/joanbm/broadcom-wl-dkms-fix-linux-510-pkgbuild/tree/f779b4b49f4d9051f20c090731c960ee2f6e8612/repos/community-testing-x86_64

Diff: https://github.com/joanbm/broadcom-wl-dkms-fix-linux-510-pkgbuild/commit/f779b4b49f4d9051f20c090731c960ee2f6e8612#diff-804217494dce561085d47b6de4537dae625460c0f3686755ba2aead9a03745e3

This build and works for me on my machine, please tell me if it's still giving you trouble building.
Comment by gamezelda (gamezelda) - Monday, 21 December 2020, 22:30 GMT
Applying @loqs PKGBUILD.diff.1 over your latest commit which I didn't pick up at the time I forked gives a 100% byte-exact copy of what I posted in my fork, I'm actually somewhat impressed!

I also tested the improved PKGBUILD.diff.2 and it builds and works for me.

Comment by Alexander F. Rødseth (xyproto) - Tuesday, 22 December 2020, 12:02 GMT
Thank you, loqs and gamezelda! I'm applying the patches from loqs here now. They seem to work. Please test the broadcom-wl-dkms 6.30.223.271-26 package that will appear in [community-testing] shortly.
Comment by gamezelda (gamezelda) - Tuesday, 22 December 2020, 13:15 GMT
broadcom-wl-dkms 6.30.223.271-26 works for me (on linux 5.10.2.arch1-1 and BCM4352 chip)
Comment by Alexander F. Rødseth (xyproto) - Tuesday, 22 December 2020, 14:52 GMT
Great! Thanks for testing. I'll remove broadcom-wl from the title and close this one + create a new issue for broadcom-wl.
Comment by Alexander F. Rødseth (xyproto) - Tuesday, 22 December 2020, 14:54 GMT
broadcom-wl-dkms is fixed in [community-testing] and needs to be moved to [community] together with the linux package, once Linux 5.10 moves out of testing.

Loading...