This page is a step by step guide to get wifi working on T2 Macs.
Ensure Kernel Supports OTP Firmware Selection¶
Check if this command outputs any lines:
modinfo brcmfmac | grep 4387 If it doesn't output anything, then upgrade your kernel (better option), or follow this older Wi-Fi guide.
Refer to the "Updating Kernel" section on your distro's FAQ for instructions if you need to update your kernel:
We now use a script which can help you set up Wi-Fi. Follow the instructions below to use this script :-
- Click here to download the script.
- Boot into macOS.
- Run this script there.
- The script will ask you to run some commands or the script itself in Linux after it gets executed successfully.
- Boot into Linux.
You have two options here:
The first is to either copy this script to Linux via a USB, download it if you have a wired internet connection, or use some other method to get it to Linux. You can then run the script again from Linux and it will finish setting up Wi-Fi.
The second method is to run the commands which the script asked you to run on macOS. The commands in most cases should be the following, though the last line may change if you rename the script. Its better to verify the last line with the commands asked by the script and stick to the script, in case it turns out to be different.
sudo umount /dev/nvme0n1p1 sudo mkdir /tmp/apple-wifi-efi sudo mount /dev/nvme0n1p1 /tmp/apple-wifi-efi bash /tmp/apple-wifi-efi/wifi.sh
For those who don’t know how to run a script¶
If you don’t know how to run a script, follow these instructions.
Boot into macOS, and download the script. Make sure the script is there in your Downloads folder.
Open the terminal and run :-
Then boot into Linux and place the same script in the Downloads folder over there or simply run the commands the script asked you to run in Linux when you executed it in macOS.
If you placed the script in the Downloads folder instead of running the commands told by the script in macOS, run step 2 command on the terminal, this time in Linux. Else you needn't follow this step.
You can check the logs to confirm correct loading of the firmware using
sudo journalctl -k --grep=brcmfmac, the output should look similar to this
Dec 24 22:34:19 hostname kernel: usbcore: registered new interface driver brcmfmac Dec 24 22:34:19 hostname kernel: brcmfmac 0000:01:00.0: enabling device (0000 -> 0002) Dec 24 22:34:20 hostname kernel: brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4377b3-pcie for chip BCM4377/4 Dec 24 22:34:20 hostname kernel: brcmfmac 0000:01:00.0: Direct firmware load for brcm/brcmfmac4377b3-pcie.apple,tahiti-SPPR-m-3.1-X0.bin failed with error -2 Dec 24 22:34:20 hostname kernel: brcmfmac 0000:01:00.0: Direct firmware load for brcm/brcmfmac4377b3-pcie.apple,tahiti-SPPR-m-3.1.bin failed with error -2 Dec 24 22:34:20 hostname kernel: brcmfmac 0000:01:00.0: Direct firmware load for brcm/brcmfmac4377b3-pcie.apple,tahiti-SPPR-m.bin failed with error -2 Dec 24 22:34:20 hostname kernel: brcmfmac 0000:01:00.0: Direct firmware load for brcm/brcmfmac4377b3-pcie.apple,tahiti-SPPR.bin failed with error -2 Dec 24 22:34:20 hostname kernel: brcmfmac 0000:01:00.0: Direct firmware load for brcm/brcmfmac4377b3-pcie.apple,tahiti-X0.bin failed with error -2 Dec 24 22:34:20 hostname kernel: brcmfmac: brcmf_c_process_txcap_blob: TxCap blob found, loading Dec 24 22:34:20 hostname kernel: brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4377/4 wl0: Jul 16 2021 18:25:13 version 16.20.3188.8.131.52.105 FWID 01-30be2b3a Dec 24 22:34:20 hostname kernel: brcmfmac 0000:01:00.0 wlp1s0f0: renamed from wlan0
Fixing unstable WPA2 using iwd¶
Using iwd is technically not needed for using wifi. But if your are facing unstable WPA2 issues and have to follow step 1 of the above section every time you connect to a WPA2 network, you will have to follow this section. If your connection is stable, you needn't follow this section.
Instructions in this section might be different for the distribution that you are trying to install.
To get WPA2 to work stably, install the
iwdpackage (for example
sudo apt install iwdon Ubuntu).
Some users have experienced issues with
Refer to warnings for iwd version incompatibilities
/etc/NetworkManager/NetworkManager.confto look like the following:
Set iwd to run on boot with the following commands (assuming that you are using systemd).
sudo systemctl enable --now iwd sudo systemctl restart NetworkManager
If you wifi disconnects or has issues otherwise its advised to restart iwd:
sudo systemctl restart iwd, or reprobe the wifi kernel module:
sudo modprobe -r brcmfmac && sudo modprobe brcmfmac.