Wifi on Macbook Pro 2012 not connecting

I will start this by stating that I am fairly new to linux so apologies in advance as I may need a bit more guidance than most

I have tried other troubleshooting steps from other topics, but none have worked so far.

The wireless card is a BCM4311 and it is a Macbook Pro 2012 running fedora 41 (fresh install)

After a fresh install, I did dnf upgrade, installed rpmfusion free and nonfree and then installed broadcom-wl and kmod-wl. I rebooted after every major step and I still have no wifi.

Any help would be appreciated.

You need to provide enough detial to allow others to reproduce the problem:

  • Which Fedora installer did you use (Gnome Workstation or KDE, …)?
  • Did WiFi work using the F41 Live Installer? If so, check to see which module is being used by running inxi -Nzxx in a terminal (you may need to install inxi in the “Live” system). Here, in an old iMac with a different WiFi chip I do need wl:
% inxi -Nzxx
Network:
  Device-1: Broadcom BCM4360 802.11ac Dual Band Wireless Network Adapter vendor: Apple driver: wl
    v: kernel pcie: speed: 2.5 GT/s lanes: 1 bus-ID: 03:00.0 chip-ID: 14e4:43a0
  Device-2: Broadcom NetXtreme BCM57766 Gigabit Ethernet PCIe driver: tg3 v: kernel pcie:
    speed: 2.5 GT/s lanes: 1 port: N/A bus-ID: 04:00.0 chip-ID: 14e4:1686

Make a note of the WiFI chip-ID. This is consists of the vendor (14e4) and device (43a0) ID’s.
Run modinfo brcmfmac| grep -i 'pci:v000014e4d0000<deviceID>' in a terminal to see if your WiFi device is supported by the brcmfmac module.

I used the Gnome Workstation install media

Wifi doesn’t work in the live installer

running this gives no output

I’ll respond again in roughly a day (I live in GMT and it’s getting late)

Did you replace <deviceID> with the value from inxi -Nzxx?

Did you buy the MBP new? There were many MBP models sold in 2012 using various wifi cards, and upgrading to a newer wifi was popular as new standards emerged.

What is the output of lspci | grep -i wireless, and that of dnf list --installed '*kmod-wl*'?

After replacing <deviceID> I still get no output. The command I am running is modinfo brcmfmac| grep -i 'pci:v000014e4d000014e4:4331'

It’s a family macbook so it’s very unlikely that it was ever opened and has no known repairs

the vendor ID is the 14e4, the device id is just 4331, but
brcmfmac| grep -i 'pci:v000014e4d00004331' also gives no output.

There are references to both 4311 and 4331 wifi cards from 2012. There may be different packaging using the same chip. This card should be supported by the wl module.

LHDB probes for Broadcom 4331 WiFI has 608 entries. The site allows you to search for your model, but there are not many Fedora 41 probes. Sometimes there are user comments with workarounds needed for specific models.

1 Like

No output

akmod-wl.x86_64                       6.30.223.271-53.fc41 rpmfusion-nonfree
kmod-wl.x86_64                        6.30.223.271-53.fc41 rpmfusion-nonfree
kmod-wl-6.11.8-300.fc41.x86_64.x86_64 6.30.223.271-53.fc41 <unknown>

What about lspci | grep -i network, or any of the commands mentioned above (e.g. inxi -Nzxx)? One of the available commands should reveal the wireless card.

Based on which information did you identify the card as being with BCM4311 chipset?

That line shows that the driver’s kernel modules have been built.

1 Like

after running this I realised I got the BCM4311 and BCM4331 confused, very sorry.

returns

03:00.0 Network controller: Broadcom Inc. and subsidiaries BCM4331 802.11a/b/g/n (rev 02)

inxi -Nzxx returns

Network:
  Device-1: Broadcom NetXtreme BCM57786 Gigabit Ethernet PCIe driver: N/A
    pcie: speed: 2.5 GT/s lanes: 1 port: N/A bus-ID: 02:00.0 chip-ID: 14e4:16a3
  Device-2: Broadcom BCM4331 802.11a/b/g/n driver: wl v: kernel pcie:
    speed: 2.5 GT/s lanes: 1 bus-ID: 03:00.0 chip-ID: 14e4:4331
  Device-3: Realtek RTL8188EUS 802.11n Wireless Network Adapter
    driver: rtl8xxxu type: USB rev: 2.0 speed: 480 Mb/s lanes: 1 bus-ID: 1-1:2
    chip-ID: 0bda:8179

The Realtek device is a usb wifi card that I am temporarily using

Shows that the wl driver is being used, so we need to determine why it doesn’t connect. In a terminal, run journalctl --no-hostname -g <string>|cat (we don’t need to see hostname, the |cat wraps long lines that would be truncated) where good choices for <string> are wifi and wl. A few times I have encountered problems with the firmware files:

  • linux has the needed firmware file but uses the wrong name
  • linux does not have the needed firmware, but I was able to copy the required file from macos (may have needed to change compression method)
1 Like

Besides the above, please also post the output of cat /proc/cmdline, and that of sudo grubby --info=ALL | grep kernel. Just to make sure you’re booting with the kernel for which the driver module has been built.

This outputs a large section of text (logs?). Where do you want me to put these/how should I sort through them?

outputs

BOOT_IMAGE=(hd6,gpt3)/vmlinuz-6.11.8-300.fc41.x86_64 root=UUID=a7256bab-e92f-492c-b6d0-61417fd1f821 ro rootflags=subvol=root rhgb quiet

outputs

kernel="/boot/vmlinuz-6.11.8-300.fc41.x86_64"
kernel="/boot/vmlinuz-6.11.4-301.fc41.x86_64"
kernel="/boot/vmlinuz-0-rescue-9e978696a9f44b77990a36e543b561b2"

I forgot to add -b to select only entries for the current boot.

What did you use for <string>. Easiest way to maximize relevant entries is to run the command (with -b) right after booting the kernel that corresponds to your wl module without the USB dongle. That should avoid many repeats of the same block of messages. journalctl has many options to “filter” out irrelevant entires by timestamp, priority, etc. It is worth studying man journalctl. There are probably some good tutorials if you can avoid clickbait sites publishing nonsense generated with AI.

I ran with <string> as wifi and wl after a new boot. I didn’t know where to put the -b (putting at the end didn’t work and putting it after -g gave a error), but I found where it lined off as a new boot. The following is what I got

with <string> as “wl”:

  1493	Nov 28 19:43:23 kernel: wl: loading out-of-tree module taints kernel.
  1494	Nov 28 19:43:23 kernel: wl: module license 'MIXED/Proprietary' taints kernel.
  1495	Nov 28 19:43:23 kernel: wl: module verification failed: signature and/or required key missing - tainting kernel
  1496	Nov 28 19:43:23 kernel: wl: module license taints kernel.
  1497	Nov 28 19:43:23 kernel: Modules linked in: wl(POE+) btrtl applesmc(+) btintel btbcm snd_hwdep btmtk rapl bluetooth uvcvideo intel_cstate snd_seq intel_uncore cfg80211 snd_seq_device i2c_i801 uvc pcspkr videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 lpc_ich snd_pcm i2c_smbus videobuf2_common videodev mc bcm5974 rfkill snd_timer thunderbolt snd mei_me binfmt_misc soundcore sbs mei acpi_als industrialio_triggered_buffer vfat sbshc fat kfifo_buf industrialio apple_gmux apple_mfi_fastcharge loop nfnetlink zram i915 crct10dif_pclmul crc32_pclmul crc32c_intel polyval_clmulni polyval_generic sdhci_pci ghash_clmulni_intel cqhci sha512_ssse3 sdhci sha256_ssse3 sha1_ssse3 mmc_core i2c_algo_bit drm_buddy ttm drm_display_helper cec video wmi hid_apple fuse
  1498	Nov 28 19:43:23 kernel:  getvar+0x20/0x70 [wl]
  1499	Nov 28 19:43:23 kernel:  ? __UNIQUE_ID_vermagic463+0x60297d6dedc0/0x60297d6dedc0 [wl]
  1500	Nov 28 19:43:23 kernel:  wl_module_init+0x17/0xa0 [wl]
  1501	Nov 28 19:43:24 kernel: wl 0000:03:00.0 wlp3s0: renamed from eth0
  1502	Nov 28 19:43:25 boltd[989]: [00000000-0000-domain0                    ] newly connected [user] (/sys/devices/pci0000:00/0000:00:01.1/0000:04:00.0/0000:05:00.0/0000:06:00.0/domain0/0-0)
  1503	Nov 28 19:43:25 NetworkManager[1004]: <info>  [1732823005.7602] Read config: /etc/NetworkManager/NetworkManager.conf (lib: 20-connectivity-fedora.conf, 22-wifi-mac-addr.conf, 90-broadcom-wl.conf, 99-nvme-nbft-no-ignore-carrier.conf)
  1504	Nov 28 19:43:25 NetworkManager[1004]: <info>  [1732823005.7718] rfkill0: found Wi-Fi radio killswitch (at /sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/ieee80211/phy0/rfkill0) (driver wl)
  1505	Nov 28 19:43:25 NetworkManager[1004]: <info>  [1732823005.7950] device (wlp3s0): driver supports Access Point (AP) mode
  1506	Nov 28 19:43:25 NetworkManager[1004]: <info>  [1732823005.7959] manager: (wlp3s0): new 802.11 Wi-Fi device (/org/freedesktop/NetworkManager/Devices/2)
  1507	Nov 28 19:43:25 NetworkManager[1004]: <info>  [1732823005.7964] device (wlp3s0): state change: unmanaged -> unavailable (reason 'managed', managed-type: 'external')
  1508	Nov 28 19:43:25 NetworkManager[1004]: <info>  [1732823005.9347] device (wlp3s0): supplicant interface state: internal-starting -> disconnected
  1509	Nov 28 19:43:25 NetworkManager[1004]: <info>  [1732823005.9351] device (wlp3s0): state change: unavailable -> disconnected (reason 'supplicant-available', managed-type: 'full')

With <string> as “wifi” (I replaced my network name with “macnetwork”):

Nov 28 19:39:00 NetworkManager[1004]: <info>  [1732822740.3750] Read config: /etc/NetworkManager/NetworkManager.conf (lib: 20-connectivity-fedora.conf, 22-wifi-mac-addr.conf, 90-broadcom-wl.conf, 99-nvme-nbft-no-ignore-carrier.conf)
Nov 28 19:39:00 NetworkManager[1004]: <info>  [1732822740.4015] Loaded device plugin: NMWifiFactory (/usr/lib64/NetworkManager/1.50.0-1.fc41/libnm-device-plugin-wifi.so)
Nov 28 19:40:34 kernel: usb 1-1: RTL8188EU rev D (TSMC) romver 0, 1T1R, TX queues 2, WiFi=1, BT=0, GPS=0, HI PA=0
Nov 28 19:40:35 kernel: usb 1-1: rtl8xxxu: Loading firmware rtlwifi/rtl8188eufw.bin
Nov 28 19:40:36 NetworkManager[1004]: <info>  [1732822836.0946] device (wlp0s20u1): Activation: (wifi) access point 'macnetwork' has security, but secrets are required.
Nov 28 19:40:36 NetworkManager[1004]: <info>  [1732822836.0977] device (wlp0s20u1): Activation: (wifi) connection 'macnetwork' has security, and secrets exist.  No new secrets needed.
Nov 28 19:40:36 NetworkManager[1004]: <info>  [1732822836.2420] device (wlp0s20u1): Activation: (wifi) Stage 2 of 5 (Device Configure) successful. Connected to wireless network "macnetwork"
Nov 28 19:40:36 geoclue[1566]: Failed to query location: No WiFi networks found
-- Boot 7407e21e29a348648e601e5c06af9c5b --
Nov 28 19:43:25 NetworkManager[1004]: <info>  [1732823005.7602] Read config: /etc/NetworkManager/NetworkManager.conf (lib: 20-connectivity-fedora.conf, 22-wifi-mac-addr.conf, 90-broadcom-wl.conf, 99-nvme-nbft-no-ignore-carrier.conf)
Nov 28 19:43:25 NetworkManager[1004]: <info>  [1732823005.7872] Loaded device plugin: NMWifiFactory (/usr/lib64/NetworkManager/1.50.0-1.fc41/libnm-device-plugin-wifi.so)

Looks like the wifi is disabled by rfkill (probably in UEFI). Here on similar vintage iMac using wl:

% jctlnh -b -g rfkill |cat
Nov 27 13:41:26 kernel: Modules linked in: btintel(+) wl(POE+) btbcm uvcvideo(+) uvc videobuf2_vmalloc snd_hda_codec_cirrus snd_hda_codec_generic snd_hda_codec_hdmi btmtk videobuf2_memops binfmt_misc snd_usb_audio(+) snd_hda_intel bluetooth videobuf2_v4l2 rapl intel_cstate snd_intel_dspcfg videobuf2_common vfat pcspkr i2c_i801 intel_uncore snd_usbmidi_lib snd_intel_sdw_acpi cfg80211 fat snd_hda_codec snd_ump videodev i2c_smbus mei_me snd_rawmidi snd_hda_core mei snd_seq mc tg3 rfkill lpc_ich snd_hwdep snd_seq_device snd_pcm snd_timer snd soundcore acpi_als industrialio_triggered_buffer kfifo_buf industrialio apple_mfi_fastcharge loop dm_multipath nfnetlink zram nouveau crct10dif_pclmul crc32_pclmul crc32c_intel polyval_clmulni polyval_generic sdhci_pci ghash_clmulni_intel cqhci sdhci sha512_ssse3 mmc_core sha256_ssse3 uas sha1_ssse3 drm_ttm_helper ttm usb_storage gpu_sched i2c_algo_bit drm_gpuvm drm_exec mxm_wmi drm_display_helper cec video wmi scsi_dh_rdac scsi_dh_emc scsi_dh_alua ip6_tables ip_tables fuse i2c_dev
Nov 27 13:41:27 systemd[1]: Listening on systemd-rfkill.socket - Load/Save RF Kill Switch Status /dev/rfkill Watch.
Nov 27 13:41:27 systemd[1]: Starting systemd-rfkill.service - Load/Save RF Kill Switch Status...
Nov 27 13:41:27 audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=systemd-rfkill comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
Nov 27 13:41:27 systemd[1]: Started systemd-rfkill.service - Load/Save RF Kill Switch Status.
Nov 27 13:41:29 NetworkManager[1065]: <info>  [1732729289.0383] rfkill0: found Wi-Fi radio killswitch (at /sys/devices/pci0000:00/0000:00:1c.2/0000:03:00.0/ieee80211/phy0/rfkill0) (driver wl)
Nov 27 13:41:29 NetworkManager[1065]: <info>  [1732729289.0388] manager[0x5625a2e4a210]: rfkill: Wi-Fi hardware radio set enabled
Nov 27 13:41:29 NetworkManager[1065]: <info>  [1732729289.0388] manager[0x5625a2e4a210]: rfkill: WWAN hardware radio set enabled
Nov 27 13:41:29 NetworkManager[1065]: <info>  [1732729289.0641] manager: rfkill: Wi-Fi enabled by radio killswitch; enabled by state file
Nov 27 13:41:29 NetworkManager[1065]: <info>  [1732729289.0642] manager: rfkill: WWAN enabled by radio killswitch; enabled by state file
Nov 27 13:41:32 systemd[1]: systemd-rfkill.service: Deactivated successfully.
Nov 27 13:41:32 audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=systemd-rfkill comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
Nov 27 13:41:38 kernel: rfkill: input handler disabled
Nov 27 13:41:57 kernel: rfkill: input handler enabled
Nov 27 13:41:58 systemd[2192]: Starting org.gnome.SettingsDaemon.Rfkill.service - GNOME RFKill support service...
Nov 27 13:41:59 kernel: rfkill: input handler disabled
Nov 27 13:41:59 systemd[2192]: Started org.gnome.SettingsDaemon.Rfkill.service - GNOME RFKill support service.
Nov 27 13:41:59 systemd[2192]: Reached target org.gnome.SettingsDaemon.Rfkill.target - GNOME RFKill support target.

Try rfkill unblock all.

No difference. I ran the command and then rebooted just incase and nothing has changed. I also ran rfkill list (after unblocking all) and can confirm that nothing is blocked by rfkill

If it helps, settings recognises the chip’s exitstence but doesn’t have a connect option. When I tried to connect via other means (connect to hidden network > selecting an existing network) it doesn’t work. No error code or anything.

Do you have another wireless network in the area (your own or neighbor’s), which has the option to connect? Can you rule out an issue with your own network/router?