Best way to install wireless firmware for new style broadcom devices?

1,351 views
Skip to first unread message

Hugh Davenport

unread,
Dec 25, 2014, 7:33:21 PM12/25/14
to qubes...@googlegroups.com

lspci output is

00:00.0 Network controller [0280]: Broadcom Corporation BCM4352 802.11ac
Wireless Network Adapter [14e4:43b1] (rev 03)

I've tried installing linux-firmware in template, didn't work.

I'm wondering whether I should either build the broadcom sta drivers
from scratch (http://www.broadcom.com/support/802.11/linux_sta.php)
or whether I should follow a guide like this in the template
http://www.cyberciti.biz/faq/fedora-linux-install-broadcom-wl-sta-wireless-driver-for-bcm43228/

Cheers,

Hugh

Hugh Davenport

unread,
Dec 25, 2014, 7:37:17 PM12/25/14
to qubes...@googlegroups.com
I should note that this device worked with the wl driver in my debian
install just before I wiped it to try out qubes :D

Cheers,

Hugh

Hugh Davenport

unread,
Dec 25, 2014, 7:55:27 PM12/25/14
to qubes...@googlegroups.com
OK, so you can't actually update modules in the template (as per
https://wiki.qubes-os.org/wiki/TemplateImplementation), so I'm now
at a loss...

Cheers,

Hugh

Marek Marczykowski-Górecki

unread,
Dec 25, 2014, 8:43:40 PM12/25/14
to Hugh Davenport, qubes...@googlegroups.com
On Fri, Dec 26, 2014 at 01:37:15PM +1300, Hugh Davenport wrote:
> On 2014-12-26 13:33, Hugh Davenport wrote:
> >lspci output is
> >
> >00:00.0 Network controller [0280]: Broadcom Corporation BCM4352
> >802.11ac Wireless Network Adapter [14e4:43b1] (rev 03)
> >
> >I've tried installing linux-firmware in template, didn't work.

I've seen exactly this device working in some Qubes installation. Check
kernel messages in netvm for some more details.

> >I'm wondering whether I should either build the broadcom sta drivers
> >from scratch (http://www.broadcom.com/support/802.11/linux_sta.php)
> >or whether I should follow a guide like this in the template
> >http://www.cyberciti.biz/faq/fedora-linux-install-broadcom-wl-sta-wireless-driver-for-bcm43228/
> >
> >Cheers,
> >
> >Hugh
>
> I should note that this device worked with the wl driver in my debian
> install just before I wiped it to try out qubes :D

You can try to install debian template:
https://wiki.qubes-os.org/wiki/Templates/Debian
But I guess there will be no difference as the kernel is the same. Also
there is some additional work needed to use it for netvm.

--
Best Regards,
Marek Marczykowski-Górecki
Invisible Things Lab
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?

Hugh Davenport

unread,
Dec 25, 2014, 9:11:35 PM12/25/14
to Marek Marczykowski-Górecki, qubes...@googlegroups.com


On 2014-12-26 14:43, Marek Marczykowski-Górecki wrote:
> On Fri, Dec 26, 2014 at 01:37:15PM +1300, Hugh Davenport wrote:
>> On 2014-12-26 13:33, Hugh Davenport wrote:
>> >lspci output is
>> >
>> >00:00.0 Network controller [0280]: Broadcom Corporation BCM4352
>> >802.11ac Wireless Network Adapter [14e4:43b1] (rev 03)
>> >
>> >I've tried installing linux-firmware in template, didn't work.
>
> I've seen exactly this device working in some Qubes installation. Check
> kernel messages in netvm for some more details.

I checked dmesg, nothing to do with wireless, broadcom, or wl, (or that
pci
address, or controller id apart from pci saying it exists).

Anything in particular I should look for? There isn't a module that
has consumed the device so i believe I'm missing a module. On debian
I used wl.

>
>> >I'm wondering whether I should either build the broadcom sta drivers
>> >from scratch (http://www.broadcom.com/support/802.11/linux_sta.php)
>> >or whether I should follow a guide like this in the template
>> >http://www.cyberciti.biz/faq/fedora-linux-install-broadcom-wl-sta-wireless-driver-for-bcm43228/
>> >
>> >Cheers,
>> >
>> >Hugh
>>
>> I should note that this device worked with the wl driver in my debian
>> install just before I wiped it to try out qubes :D
>
> You can try to install debian template:
> https://wiki.qubes-os.org/wiki/Templates/Debian
> But I guess there will be no difference as the kernel is the same. Also
> there is some additional work needed to use it for netvm.

I don't think it would make a difference as kernel modules should be the
same etc.

cprise

unread,
Dec 25, 2014, 10:31:14 PM12/25/14
to Hugh Davenport, Marek Marczykowski-Górecki, qubes...@googlegroups.com

On 12/25/14 21:11, Hugh Davenport wrote:


On 2014-12-26 14:43, Marek Marczykowski-Górecki wrote:
On Fri, Dec 26, 2014 at 01:37:15PM +1300, Hugh Davenport wrote:
On 2014-12-26 13:33, Hugh Davenport wrote:
>lspci output is
>
>00:00.0 Network controller [0280]: Broadcom Corporation BCM4352
>802.11ac Wireless Network Adapter [14e4:43b1] (rev 03)
>
>I've tried installing linux-firmware in template, didn't work.

I've seen exactly this device working in some Qubes installation. Check
kernel messages in netvm for some more details.

I checked dmesg, nothing to do with wireless, broadcom, or wl, (or that pci
address, or controller id apart from pci saying it exists).

Anything in particular I should look for? There isn't a module that
has consumed the device so i believe I'm missing a module. On debian
I used wl.

Do Fedora users have a solution for that device... http://forums.fedoraforum.org/showthread.php?t=299379

Maybe its a matter of support for that NIC being very spotty and dependent on specific kernel builds... http://ubuntuforums.org/showthread.php?t=2197997

Marek Marczykowski-Górecki

unread,
Dec 25, 2014, 11:08:01 PM12/25/14
to cprise, Hugh Davenport, qubes...@googlegroups.com
If really some additional module needs to be built, there is a method
without creating standalone VM (execute as root in netvm):
cp -a /lib/modules /rw/modules
mount --bind /rw/modules /lib/modules
systemctl restart systemd-udevd

Then you can build and install kernel modules using standard
instructions, starting with installing kernel-devel package (ensure
version the same as running kernel).

When done, you need to add some commands to /rw/config/rc.local to make
that change persistent, something like this should work:
mount --bind /rw/modules /lib/modules
systemctl --no-block restart systemd-udevd

(and make rc.local executable)

Hugh Davenport

unread,
Dec 26, 2014, 3:23:32 PM12/26/14
to Marek Marczykowski-Górecki, qubes...@googlegroups.com
OK, I built the module from
http://www.broadcom.com/support/802.11/linux_sta.php
in netvm, by first getting yum install gcc kernel-devel then running
make in the extracted folder. I used 64bit.

Then did sudo insmod wl.ko, and got this kernel panic

[ 24.915371] wl: module license 'unspecified' taints kernel.
[ 24.915394] Disabling lock debugging due to kernel taint
[ 24.934730] wl 0000:00:00.0: enabling device (0000 -> 0002)
[ 24.934920] xen:events: xen_bind_pirq_gsi_to_irq: returning irq 79
for gsi 18
[ 24.934923] wl 0000:00:00.0: Xen PCI mapped GSI18 to IRQ79
[ 24.935934] wl driver 6.30.223.248 (r487574) failed with code 1
[ 24.935947] ------------[ cut here ]------------
[ 24.935949] kernel BUG at include/net/cfg80211.h:3127!
[ 24.935951] invalid opcode: 0000 [#1] SMP
[ 24.935954] Modules linked in: wl(PO+) af_packet fuse bnep bluetooth
cfg80211 rfkill xt_nat xen_netback xt_REDIRECT ipt_REJECT xt_tcpudp
xt_conntrack iptable_filter ipt_MASQUERADE iptable_nat nf_conntrack_ipv4
nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack ip6table_filter
ip6_tables ip_tables x_tables dummy_hcd udc_core coretemp r8169 hwmon
mii pcspkr x86_pkg_temp_thermal xen_usbfront usbcore binfmt_misc
usb_common xen_blkback u2mfn(O) nfsd auth_rpcgss oid_registry exportfs
nfs_acl lockd sunrpc ext4 crc16 jbd2 crct10dif_pclmul crc32_pclmul
crc32c_intel ghash_clmulni_intel aesni_intel aes_x86_64 lrw gf128mul
glue_helper ablk_helper cryptd dm_snapshot xen_blkfront autofs4
[ 24.935993] CPU: 0 PID: 1362 Comm: insmod Tainted: P O
3.12.23-1.pvops.qubes.x86_64 #1
[ 24.935996] task: ffff8800102265c0 ti: ffff880002a1c000 task.ti:
ffff880002a1c000
[ 24.935998] RIP: e030:[<ffffffffa077c720>] [<ffffffffa077c720>]
wdev_priv.part.9+0x4/0x6 [wl]
[ 24.936021] RSP: e02b:ffff880002a1da60 EFLAGS: 00010246
[ 24.936023] RAX: 0000000000000000 RBX: ffff88000e793400 RCX:
0000000000000006
[ 24.936026] RDX: ffff88000e793400 RSI: ffff8800001f4058 RDI:
ffff88000a6b0000
[ 24.936028] RBP: ffff880002a1da60 R08: 0000000000000001 R09:
0000000000000151
[ 24.936030] R10: ffffffff81649700 R11: ffff880002a1d8a6 R12:
ffff8800001f4018
[ 24.936032] R13: ffff8800001f4058 R14: 00000000000043b1 R15:
ffff8800001f4000
[ 24.936037] FS: 00007f2051589740(0000) GS:ffff880012800000(0000)
knlGS:0000000000000000
[ 24.936039] CS: e033 DS: 0000 ES: 0000 CR0: 000000008005003b
[ 24.936041] CR2: 000000000041a370 CR3: 0000000000284000 CR4:
0000000000002660
[ 24.936044] Stack:
[ 24.936045] ffff880002a1da90 ffffffffa077bfb1 ffff88000e793400
ffff8800001f4018
[ 24.936049] ffff8800001f4058 00000000000043b1 ffff880002a1dab8
ffffffffa0773e31
[ 24.936053] ffff8800001f4000 ffff88000a6b0000 0000000000000000
ffff880002a1db60
[ 24.936057] Call Trace:
[ 24.936066] [<ffffffffa077bfb1>] wl_cfg80211_detach+0x101/0x130 [wl]
[ 24.936066] [<ffffffffa0773e31>] wl_free_if.isra.12+0x21/0xc0 [wl]
[ 24.936066] [<ffffffffa0774728>] wl_free+0x38/0x210 [wl]
[ 24.936066] [<ffffffff814d6fcf>] ? printk+0x4f/0x51
[ 24.936066] [<ffffffffa0bfc6b0>] wl_pci_probe+0x628/0x63c [wl]
[ 24.936066] [<ffffffff814e2650>] ?
_raw_spin_unlock_irqrestore+0x20/0x40
[ 24.936066] [<ffffffff81283dbc>] pci_device_probe+0x7c/0xd0
[ 24.936066] [<ffffffff8134719b>] driver_probe_device+0x8b/0x3c0
[ 24.936066] [<ffffffff8134759b>] __driver_attach+0x8b/0x90
[ 24.936066] [<ffffffff81347510>] ? __device_attach+0x40/0x40
[ 24.936066] [<ffffffff813450f3>] bus_for_each_dev+0x63/0xa0
[ 24.936066] [<ffffffff81346c19>] driver_attach+0x19/0x20
[ 24.936066] [<ffffffff813467a0>] bus_add_driver+0x200/0x2d0
[ 24.936066] [<ffffffffa0bfc000>] ? 0xffffffffa0bfbfff
[ 24.936066] [<ffffffff81347baf>] driver_register+0x5f/0xf0
[ 24.936066] [<ffffffffa0bfc000>] ? 0xffffffffa0bfbfff
[ 24.936066] [<ffffffff812829c7>] __pci_register_driver+0x47/0x50
[ 24.936066] [<ffffffffa0bfc086>] wl_module_init+0x86/0x88 [wl]
[ 24.936066] [<ffffffff810020d2>] do_one_initcall+0xd2/0x180
[ 24.936066] [<ffffffff810835c3>] ?
__blocking_notifier_call_chain+0x53/0x70
[ 24.936066] [<ffffffff810c340a>] load_module+0x1b3a/0x2530
[ 24.936066] [<ffffffff810bf570>] ? store_uevent+0x40/0x40
[ 24.936066] [<ffffffff810c03aa>] ?
copy_module_from_fd.isra.50+0x10a/0x160
[ 24.936066] [<ffffffff810c3f4e>] SyS_finit_module+0x7e/0xa0
[ 24.936066] [<ffffffff814ea907>] tracesys+0xdd/0xe2
[ 24.936066] Code: d0 c1 e8 10 66 39 c2 74 0c 0f b7 f6 e8 ea 45 89 e0
66 90 eb 0a 89 f0 f0 0f b1 17 39 f0 75 ea 5d c3 55 48 89 e5 0f 0b 55 48
89 e5 <0f> 0b 55 48 89 e5 0f 0b 55 48 89 e5 0f 0b 55 48 89 e5 0f 0b 04
[ 24.936066] RIP [<ffffffffa077c720>] wdev_priv.part.9+0x4/0x6 [wl]
[ 24.936066] RSP <ffff880002a1da60>
[ 24.936268] ---[ end trace b81d5bce56bf5bcb ]---

The invalid opcode SMP makes me think it may be due to xen
virtualisation?

I also tried doing it the "fedora" way by getting rpmfusion installed,
then
doing the cp -a && mount --bind trick you mentioned, then yum install
kmod-wl
but that just built it for a newer kernel, not the qubes one, so that
didn't
fly very high.

I'll play round more today, but this is a bit of a showstopper for me as
I tend to work remote, and can't always have a cable leading to the
cafe's
router ;)

Cheers,

Hugh

Hugh Davenport

unread,
Dec 26, 2014, 4:07:29 PM12/26/14
to Marek Marczykowski-Górecki, qubes...@googlegroups.com
Tracing through the code with some kernel debugs, it appears it craps
out in
the binary blob :(

Hugh Davenport

unread,
Dec 26, 2014, 4:10:01 PM12/26/14
to Marek Marczykowski-Górecki, qubes...@googlegroups.com
WHAT'S NEW IN RELEASE 6.30.223.23X
---------------------------------
+ Upgraded to Support 3.11 kernels

uname -r returns 3.12.23-1.pvops.qubes.x86_64

so maybe I need to roll back to 3.11?

Hugh Davenport

unread,
Dec 26, 2014, 4:32:06 PM12/26/14
to Marek Marczykowski-Górecki, qubes...@googlegroups.com
Sent http://paste.dollyfish.net.nz/7204be to
linux-wlan-clie...@broadcom.com

Will let you know if I get anything back.

Marek Marczykowski-Górecki

unread,
Dec 26, 2014, 6:28:14 PM12/26/14
to Hugh Davenport, qubes...@googlegroups.com
You can install older kernel-qubes-vm package in dom0 for different
kernel version. Available versions you can list here:
http://yum.qubes-os.org/r2/current/dom0/fc20/rpm/
Basically 3.12, 3.11, 3.9 and 3.7.

Hugh Davenport

unread,
Dec 26, 2014, 6:31:53 PM12/26/14
to Marek Marczykowski-Górecki, qubes...@googlegroups.com
Awesome! Will try when home
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.

Hugh Davenport

unread,
Dec 27, 2014, 12:33:49 AM12/27/14
to Marek Marczykowski-Górecki, qubes...@googlegroups.com
No luck :(

I'll flick that to the broadcom support as well.

Thanks for all your help so far!

aal...@gmail.com

unread,
Apr 29, 2016, 6:06:35 AM4/29/16
to qubes-users, marm...@invisiblethingslab.com
Hi, I have the same issues as you posted about more than a year ago and I was wondering if you have made progress in installing drivers for the BCM4352 wifi card?
Reply all
Reply to author
Forward
0 new messages