Inxi -n
Network:
Device-1: Broadcom BCM43602 802.11ac Wireless LAN SoC driver: brcmfmac
IF: wlp3s0 state: up mac: MY_MAC
My kernel is 6.1.44-1-MANJARO.
I am running Manjaro on an early 2015 macbook pro. Overall the experience has been mostly flawless. However, a persistent issue seems to be occuring where more often than not the wifi will simply stop working after waking from suspend.
I have tried
sudo modprobe -r brcmfmac && sudo modprobe brcmfmac
Which does fix the issue, but it is quite annoying to have to use. dmesg output is somewhat telling:
[28243.863514] ieee80211 phy5: brcmf_run_escan: error (-5)
[28243.863537] ieee80211 phy5: brcmf_cfg80211_scan: scan error (-5)
[28248.129992] ieee80211 phy5: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[28248.129997] ieee80211 phy5: brcmf_run_escan: error (-5)
[28248.130000] ieee80211 phy5: brcmf_cfg80211_scan: scan error (-5)
[28253.036835] ieee80211 phy5: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[28253.036852] ieee80211 phy5: brcmf_run_escan: error (-5)
[28253.036865] ieee80211 phy5: brcmf_cfg80211_scan: scan error (-5)
[28260.076693] ieee80211 phy5: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[28260.076711] ieee80211 phy5: brcmf_run_escan: error (-5)
[28260.076722] ieee80211 phy5: brcmf_cfg80211_scan: scan error (-5)
[28270.103325] ieee80211 phy5: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[28270.103331] ieee80211 phy5: brcmf_run_escan: error (-5)
[28270.103335] ieee80211 phy5: brcmf_cfg80211_scan: scan error (-5)
[28284.183460] ieee80211 phy5: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[28284.183491] ieee80211 phy5: brcmf_run_escan: error (-5)
[28284.183507] ieee80211 phy5: brcmf_cfg80211_scan: scan error (-5)
[28304.023315] ieee80211 phy5: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[28304.023321] ieee80211 phy5: brcmf_run_escan: error (-5)
[28304.023325] ieee80211 phy5: brcmf_cfg80211_scan: scan error (-5)
[28333.036642] ieee80211 phy5: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[28333.036648] ieee80211 phy5: brcmf_run_escan: error (-5)
[28333.036651] ieee80211 phy5: brcmf_cfg80211_scan: scan error (-5)
[28376.130137] ieee80211 phy5: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[28376.130156] ieee80211 phy5: brcmf_run_escan: error (-5)
[28376.130167] ieee80211 phy5: brcmf_cfg80211_scan: scan error (-5)
[28408.983247] ieee80211 phy5: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[28408.983253] ieee80211 phy5: brcmf_run_escan: error (-5)
[28408.983257] ieee80211 phy5: brcmf_cfg80211_scan: scan error (-5)
[28417.089927] ieee80211 phy5: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[28417.089948] ieee80211 phy5: brcmf_run_escan: error (-5)
[28417.089957] ieee80211 phy5: brcmf_cfg80211_scan: scan error (-5)
[28440.130097] ieee80211 phy5: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[28440.130115] ieee80211 phy5: brcmf_run_escan: error (-5)
[28440.130128] ieee80211 phy5: brcmf_cfg80211_scan: scan error (-5)
[28535.063302] ieee80211 phy5: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[28535.063325] ieee80211 phy5: _brcmf_set_multicast_list: Setting mcast_list failed, -5
[28537.196728] ieee80211 phy5: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[28537.196775] ieee80211 phy5: _brcmf_set_multicast_list: Setting allmulti failed, -5
[28539.330108] ieee80211 phy5: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[28539.330133] ieee80211 phy5: brcmf_cfg80211_get_channel: chanspec failed (-5)
[28541.463400] ieee80211 phy5: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[28541.463433] ieee80211 phy5: brcmf_c_set_cur_etheraddr: Setting cur_etheraddr failed, -5
[28543.596747] ieee80211 phy5: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[28543.596789] ieee80211 phy5: _brcmf_set_multicast_list: Setting BRCMF_C_SET_PROMISC failed, err=-5
[28545.730046] ieee80211 phy5: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[28547.863363] ieee80211 phy5: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[28549.996530] ieee80211 phy5: brcmf_msgbuf_query_dcmd: Timeout on response for query command
[28549.996564] ieee80211 phy5: brcmf_msgbuf_tx_ioctl: Failed to reserve space in commonring
[28549.996568] ieee80211 phy5: _brcmf_set_multicast_list: Setting mcast_list failed, -12
[28549.996572] ieee80211 phy5: brcmf_msgbuf_tx_ioctl: Failed to reserve space in commonring
[28549.996575] ieee80211 phy5: brcmf_cfg80211_set_power_mgmt: error (-12)
[28549.996578] ieee80211 phy5: brcmf_msgbuf_tx_ioctl: Failed to reserve space in commonring
[28549.996580] ieee80211 phy5: _brcmf_set_multicast_list: Setting allmulti failed, -12
[28549.996583] ieee80211 phy5: brcmf_msgbuf_tx_ioctl: Failed to reserve space in commonring
[28549.996585] ieee80211 phy5: brcmf_cfg80211_set_power_mgmt: Unable to set pm timeout, (-12)
[28549.996588] ieee80211 phy5: brcmf_msgbuf_tx_ioctl: Failed to reserve space in commonring
[28549.996590] ieee80211 phy5: _brcmf_set_multicast_list: Setting BRCMF_C_SET_PROMISC failed, err=-12
[28549.996594] ieee80211 phy5: brcmf_msgbuf_tx_ioctl: Failed to reserve space in commonring
I have noted that power management is turned on:
$ iw dev wlp3s0 get power_save
Power save: on
Which may explain it. After some digging I found the following systemd service:
[Unit]
Description=Disable WiFi Power Management
After=suspend.target
[Service]
Type=simple
ExecStartPre= /bin/sleep 10
ExecStart= /usr/bin/iw dev wlp3s0 set power_save off
[Install]
WantedBy=suspend.target
But this is more of a workaround than an actual fix. Is there any way around this or this is a common kernel bug that I just have to live with?