MacBook + Broadcom BCM43602 system freeze on Qubes 4.0

30 views
Skip to first unread message

Andrey Arapov

unread,
Jan 30, 2020, 3:24:25 PM1/30/20
to qubes...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Hi all,

I've been having issues with making BCM43602 work and figured a sequence which makes it working and working well - meaning it connects to both 2.4GHz & 5GHz networks and is working at its full speed without any issue.

Here is what helped me to make BCM43602 work again on my MacBookPro14,3 (mid-2017).

1. start dom0 with ``qubes.skip_autostart``.

2. start ``sys-net`` in the following sequence:

```
qvm-start sys-net
sleep 3
sudo xl pci-attach sys-net '03:00.0,permissive=1'
qvm-run -p sys-net "sudo cp ~/brcmfmac43602-pcie.txt /usr/lib/firmware/brcm/brcmfmac43602-pcie.txt"
qvm-run -p sys-net "echo 1 | sudo tee /sys/bus/pci/rescan"
```

Enjoy your WiFi!

The ``brcmfmac43602-pcie.txt`` file you can get here https://bugzilla.kernel.org/show_bug.cgi?id=193121#c52 - see an "attachment 285753" from Simon Siebert on ``2019-11-02 16:41:15 UTC``

Make sure to set ``macaddr=00:90:4c:0d:f4:3e`` in that file! It's the default mac address which is coming from the firmware.

Refs.
- - https://groups.google.com/forum/#!msg/qubes-users/DT_uIiiWJd8/cHFiFle1DQAJ
- - https://bugzilla.kernel.org/show_bug.cgi?id=193121#c52
- - https://nixaid.com/linux-on-macbookpro/

Kind regards,
Andrey Arapov

P.S.
I've also noticed that if I remove brcmfmac kernel driver from the sys-net (domU), and modprobe it back again => the card will never work again.
I've tried resetting the PCI bus, removing the card, etc.. only reboot helps.
-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQRDMZ/b1AtG/U4LjuKQdtXmsxrpnAUCXjM7VQAKCRCQdtXmsxrp
nKe2AP9EYxXcKGJ++NDlJta/DVT9mtSx6wvzfhLNKxBW+OfyOwEAxp9HN6umbCUD
vo5XYjB9Y31y5Noagb3K0s8sY45bzQI=
=5+io
-----END PGP SIGNATURE-----

Andrey Arapov

unread,
Feb 7, 2020, 2:03:05 PM2/7/20
to Andrey Arapov' via qubes-users
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

> Kind regards,
> Andrey Arapov
>
> P.S.
> I've also noticed that if I remove brcmfmac kernel driver from the sys-net (domU), and modprobe it
> back again => the card will never work again.
> I've tried resetting the PCI bus, removing the card, etc.. only reboot helps.
> -----BEGIN PGP SIGNATURE-----
>
> iHUEARYIAB0WIQRDMZ/b1AtG/U4LjuKQdtXmsxrpnAUCXjM7VQAKCRCQdtXmsxrp
> nKe2AP9EYxXcKGJ++NDlJta/DVT9mtSx6wvzfhLNKxBW+OfyOwEAxp9HN6umbCUD
> vo5XYjB9Y31y5Noagb3K0s8sY45bzQI=
> =5+io
> -----END PGP SIGNATURE-----

I have been tinkering more with the BCM43602 wireless adapter these days and have figured a way so I can restart ``sys-net`` without having to reboot.

```
$ sudo lspci -t -nn -v
+-1c.0-[03]----00.0 Broadcom Inc. and subsidiaries BCM43602 802.11ac Wireless LAN SoC [14e4:43ba]
```

The whole trick was to **unbind** the parent PCI bridge off the ``pcieport`` (PCI Express Port Bus Driver), after which I could [restart](https://github.com/QubesOS/qubes-issues/issues/3734#issuecomment-580440403) ``sys-net`` as many times as I want without breaking BCM43602 adapter:

```
echo 0000:00:1c.0 | sudo tee /sys/bus/pci/drivers/pcieport/unbind
```

What's more interesting and is related to [my previous observations](https://github.com/QubesOS/qubes-issues/issues/3734#issuecomment-580654893) is that if I don't unbind the parent PCI bridge off the ``pcieport`` and then restart the ``sys-net`` (attaching the ``03:00.0`` as [described before](https://github.com/QubesOS/qubes-issues/issues/3734#issuecomment-580440403)), the BCM43602 adapter's subsystem changes the device number from ``0x0173`` to ``0x0157``

```
03:00.0 Network controller [0280]: Broadcom Inc. and subsidiaries BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 02)
Subsystem: Apple Inc. Device [106b:0173] ===>>> [106b:0157] !!!
```

But as soon as I **unbind** the parent PCI bridge off the ``pcieport`` again, restart ``sys-net``, the BCM43602 adapter is working back again, even despite that its subsystem device number is now ``0x0157`` instead of ``0x0173``.

One more observation is that when I remove the BCM43602 adapter device ``echo 1 | sudo tee /sys/bus/pci/devices/0000\:00\:1c.0/0000\:03\:00.0/remove`` and issue a rescan command to its parent PCI bridge ``echo 1 | sudo tee /sys/bus/pci/devices/0000\:00\:1c.0/rescan`` the BCM43602 adapter (``03:00.0``) will become visible again **only** if the parent PCI bridge was **unbound** from the ``pcieport``.

Refs.
- - https://github.com/QubesOS/qubes-issues/issues/3734

Kind regards,
Andrey Arapov
-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQRDMZ/b1AtG/U4LjuKQdtXmsxrpnAUCXj20EgAKCRCQdtXmsxrp
nLE8AQC3DjkVD+K23MN0/aaz1027W/mVDRtklxaKh0wVvS8DoQEA+o+3qxs2likI
ViGSy9UIE5wvcD3DEbIMTRPCyVjZDQw=
=8nr8
-----END PGP SIGNATURE-----

Reply all
Reply to author
Forward
0 new messages