Installing Linux on Macbook Pro

I have recently acquired a Macbook Pro vintage 2014 and installed Pop-OS on it. Unfortunately the wifi did not activate. After much googling and encountering many posts on this issue that were confusing:

  • over complicated - one very helpful dev had the original OP recompile the kernel to try and solve this.

  • confusion about which software tools to install and what the actual cause was.

Cause

The macBook Pro used a broadcom bcm4360 network chip which is incompatible with the standard broadcom linux drivers.

Executing the following will show the problem - using bcma-pci-bridge kernel driver:

sudo lspci -vnn -d 14e4:
...
03:00.0 Network controller [0280]: Broadcom Inc. and subsidiaries BCM4360 802.11ac Wireless Network Adapter [14e4:43a0] (rev 03)
Subsystem: Apple Inc. BCM4360 802.11ac Wireless Network Adapter [106b:0112]
Flags: bus master, fast devsel, latency 0, IRQ 18, IOMMU group 13
Memory at b0600000 (64-bit, non-prefetchable) [size=32K]
Memory at b0400000 (64-bit, non-prefetchable) [size=2M]
Capabilities: [48] Power Management version 3
Capabilities: [58] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [68] Vendor Specific Information: Len=44 <?>
Capabilities: [ac] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [13c] Device Serial Number 60-f8-00-ff-ff-00-00-01
Capabilities: [150] Power Budgeting <?>
Capabilities: [160] Virtual Channel
Capabilities: [1b0] Latency Tolerance Reporting
Capabilities: [220] Physical Resizable BAR
Kernel driver in use: bcma-pci-bridge
Kernel modules: bcma
** NOTE **
There are 2 variants: 14e4:4360 and 14e4:43a0

Solution

Install the non-free drivers (Pop OS has the non-free repo enabled by default):

sudo apt-get install broadcom-sta-dkms

This should blacklist the bcma and b43 drivers. Inspect /etc/modprobe.d to find the appropriate statements.

The initramfs must be rebuilt:

sudo update-initramfs -u

Reboot and the wifi setup should be available in the settings app. Reinspecting the pci bus should show( note the driver has changed to ‘wl’ and not ‘bcma-pci-bridge’):

sudo lspci -vnn -d 14e4:
.....
03:00.0 Network controller [0280]: Broadcom Inc. and subsidiaries BCM4360 802.11ac Wireless Network Adapter [14e4:43a0] (rev 03)
Subsystem: Apple Inc. BCM4360 802.11ac Wireless Network Adapter [106b:0112]
Flags: bus master, fast devsel, latency 0, IRQ 18, IOMMU group 13
Memory at b0600000 (64-bit, non-prefetchable) [size=32K]
Memory at b0400000 (64-bit, non-prefetchable) [size=2M]
Capabilities: [48] Power Management version 3
Capabilities: [58] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [68] Vendor Specific Information: Len=44 <?>
Capabilities: [ac] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [13c] Device Serial Number 60-f8-00-ff-ff-00-00-01
Capabilities: [150] Power Budgeting <?>
Capabilities: [160] Virtual Channel
Capabilities: [1b0] Latency Tolerance Reporting
Capabilities: [220] Physical Resizable BAR
Kernel driver in use: wl
Kernel modules: bcma, wl