WLAN-Probleme beim MacBook Pro 2017 unter Linux Mint 22 – Lösung gefunden

Nach der Installation von Linux Mint 22 auf einem MacBook Pro 2017 blieb das interne WLAN-Modul mit Broadcom-Chip zunächst recht funktionslos. Eine Verbindung mit dem Internet war zunächst nur mithilfe eines externen USB-WLAN-Adapters von Netgear möglich. Daneben gibt es auch eine bessere, alternative Lösung ohne "Kickstart" - welche genau erfährt ihr im Text.

Zuerst ging ich davon aus, dass das Problem am fehlenden oder nicht korrekt geladenen Treiber liegt. Die Ausgaben von dmesg schienen das zu bestätigen – doch die tatsächliche Ursache war überraschend anders.

Analyse

Herausfinden, welches Gerät im MacBook Pro 2017 drin steckt:

lsusb

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 05ac:1281 Apple, Inc. Apple Mobile Device [Recovery Mode]

Herausfinden, welcher Treiber verwendet wird:

lspci -nnk | grep -A3 Network

02:00.0 Network controller [0280]: Broadcom Inc. and subsidiaries BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 02)
	Subsystem: Apple Inc. BCM43602 802.11ac Wireless LAN SoC [106b:0157]
	Kernel driver in use: brcmfmac
	Kernel modules: brcmfmac, wl

Herausfinden, welches Modul geladen wurde.:

lsmod | grep brcmfmac
brcmfmac_wcc           12288  0
brcmfmac              524288  1 brcmfmac_wcc
brcmutil               24576  1 brcmfmac
cfg80211             1355776  2 wl,brcmfmac

# hier eine Variante mit Netgear-Modulen:
cfg80211             1355776  5 wl,rtlwifi,brcmfmac,mac80211,rtl8xxxu

Analyse der dmesg Ausgabe:

dmesg | grep brcmfmac
[    4.992564] usbcore: registered new interface driver brcmfmac
[    5.102106] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43602-pcie for chip BCM43602/2
[    5.103930] brcmfmac 0000:02:00.0: Direct firmware load for brcm/brcmfmac43602-pcie.Apple Inc.-MacBookPro14,2.bin failed with error -2
[    5.114624] brcmfmac 0000:02:00.0: Direct firmware load for brcm/brcmfmac43602-pcie.txt failed with error -2
[    5.119366] brcmfmac 0000:02:00.0: Direct firmware load for brcm/brcmfmac43602-pcie.clm_blob failed with error -2
[    5.119445] brcmfmac 0000:02:00.0: Direct firmware load for brcm/brcmfmac43602-pcie.txcap_blob failed with error -2
[    5.628333] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available
[    5.628339] brcmfmac: brcmf_c_process_txcap_blob: no txcap_blob available (err=-2)
[    5.631861] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43602/2 wl0: Nov 10 2015 06:38:10 version 7.35.177.61 (r598657) FWID 01-ea662a8c
[    5.749586] brcmfmac 0000:02:00.0 wlp2s0: renamed from wlan0

failed with error -2lässt nichts Gutes vermuten.

Internes WLAN-Modul benötigt „Kickstart“

Nachdem ich eine Verbindung über den Netgear-Adapter erfolgreich hergestellt hatte, funktionierte plötzlich auch das interne WLAN-Modul von Apple einwandfrei – ganz ohne zusätzliches Eingreifen. Es stellte sich heraus: Das WLAN-Modul des MacBooks benötigt offenbar eine Art Initialisierung durch eine aktive Netzwerkverbindung, um unter Linux korrekt zu starten.

Aber dies vorgehen ließ mir keine Ruhe. Eine bessere Lösung muss her!

Nach mehreren Tagen intensiver Tests und zahlreicher Versuche konnte ich das Verhalten zuverlässig reproduzieren. Auch wenn ich die genaue Ursache auf Treiberebene noch nicht vollständig verstehe, funktioniert der gefundene Workaround (ohne Kichstart) stabil und zufriedenstellend.

Lösung

Ich habe herausgefunden, dass Linux Mint 22 das WLAN-Modul mit 31 dBm (?) ansteuert.

sudo iwconfig wlp2s0

wlp2s0    IEEE 802.11  ESSID:"abc"
          Mode:Managed  Frequency:2.412 GHz  Access Point: xx:xx:xx:xx:xx:xx
          Bit Rate=24 Mb/s   Tx-Power=31 dBm
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:on
          Link Quality=36/70  Signal level=-74 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Aber meine Fritz!Box nimmt diese Stärke nicht an. Was hier hilft ist, die Sendeleistung herunterzusetzen, etwa so:

sudo iwconfig wlp2s0 txpower 10dBm

Mit nun 10 dBm kann das WLAN-Modul im Mac die Verbindung zur Fritz!Box ohne Verzögerung herstellen.

Problem gelöst.

Wie bereits erwähnt, warum das so ist, weiß ich nicht, aber der Patch wirkt. Das ist mir zu Zeit das wichtigste.

Optimierung

Da die Veränderung nur in der Session wirkt, musste ich ihn noch so einrichten, dass er beim Booten automatisch gestartet wird. Hier meine Lösung dazu:

In der Datei /usr/local/bin/set-txpower.sh wird folgendes Kommando abgelegt (sudo zum Anlegen nötig):

#!/bin/bash
/sbin/iwconfig wlp2s0 txpower 10dBm

Dann muss das Script noch ausführbar gemacht werden:

sudo chmod +x /usr/local/bin/set-txpower.sh

Dann muss ein systemd-Service unter /etc/systemd/system/set-txpower.service registriert werden, der die Datei startet. (Auch hier sudo vonnöten).

Inhalt:

[Unit]
Description=Set WiFi TX Power
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/set-txpower.sh
RemainAfterExit=true

[Install]
WantedBy=multi-user.target

Folgendes Kommando aktiviert den Service:

sudo systemctl enable set-txpower.service

Manuell lässt sich der Service so starten:

sudo systemctl start set-txpower.service

Fertig.