Wifi Privacy Switch without rebooting
#1
Lightbulb 
TL;DR: use the two commands here to restart the Wifi driver after powering the Wifi again with the Privacy Switch for Wifi (Pine + F11) :
Code:
$ echo 'fe310000.dwmmc' | sudo tee /sys/bus/platform/drivers/dwmmc_rockchip/unbind
$ echo 'fe310000.dwmmc' | sudo tee /sys/bus/platform/drivers/dwmmc_rockchip/bind



The full story :

(Moving to a more general thread, because currently my reply is burried in the middle of the Manjaro discussion)

Currently, the privacy switch for Wifi cannot put back Wifi on because soldered-on-motherboard SDIO modules aren't Plug'n'Play.

Here's what you normally see if you try the usual rmmod  + modprobe route:

Code:
$ sudo rmmod brcmfmac brcmutil cfg80211
$ modprobe brcmfmac
$ dmesg
[ 1299.511038] usbcore: deregistering interface driver brcmfmac
[ 1313.114017] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[ 1313.114781] cfg80211: failed to load regulatory.db
[ 1313.132537] brcmfmac: probe of mmc0:0001:1 failed with error -110
[ 1313.133192] brcmfmac: probe of mmc0:0001:2 failed with error -110
[ 1313.133865] usbcore: registered new interface driver brcmfmac



There is a way though:

You can find the actual soldered device that answers on the mmcn mentioned above and unbind and re-bind it.

Code:
$ ls -d /sys/devices/platform/*.dwmmc/mmc_host/mmc0
/sys/devices/platform/fe310000.dwmmc/mmc_host/mmc0
$ ls -d /sys/devices/platform/*.dwmmc/mmc_host/mmc*/mmc*/mmc*/ieee80211
/sys/devices/platform/fe310000.dwmmc/mmc_host/mmc0/mmc0:0001/mmc0:0001:2/ieee80211
$ echo 'fe310000.dwmmc' | sudo tee /sys/bus/platform/drivers/dwmmc_rockchip/unbind
$ echo 'fe310000.dwmmc' | sudo tee /sys/bus/platform/drivers/dwmmc_rockchip/bind
$ dmesg
[ 1845.593897] mmc0: card 0001 removed
[ 1849.712047] dwmmc_rockchip fe310000.dwmmc: IDMAC supports 32-bit address mode.
[ 1849.712707] dwmmc_rockchip fe310000.dwmmc: Using internal DMA controller.
[ 1849.713307] dwmmc_rockchip fe310000.dwmmc: Version ID is 270a
[ 1849.713840] dwmmc_rockchip fe310000.dwmmc: DW MMC controller at irq 27,32 bit host data width,256 deep fifo
[ 1849.714799] dwmmc_rockchip fe310000.dwmmc: allocated mmc-pwrseq
[ 1849.715321] mmc_host mmc0: card is non-removable.
[ 1849.728861] mmc_host mmc0: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
[ 1849.777673] mmc_host mmc0: Bus speed (slot 0) = 148500000Hz (slot req 150000000Hz, actual 148500000HZ div = 0)
[ 1850.622467] dwmmc_rockchip fe310000.dwmmc: Successfully tuned phase to 47
[ 1850.627007] mmc0: new ultra high speed SDR104 SDIO card at address 0001
[ 1850.636215] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43456-sdio for chip BCM4345/9
[ 1852.731997] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43456-sdio for chip BCM4345/9
[ 1852.732808] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available
[ 1852.734049] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/9 wl0: Sep  7 2018 14:33:37 version 7.45.96.27 ([email protected]) (r) FWID 01-c958c084 es7.c5.n4.a3
[ 1860.053215] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready

Note -if I'm not mistaken :
  • the 'mmc0' numbering might change depending on how your OS enumerate its devices (see how /dev/mmcblk changes - on Manjaro the Wifi is on mmc0 and the internal eMMC is on mmc2, but on the factory shipped Debian - Wifi is on mmc2 and mmc0 has the external µSD)
  • but fe310000.dwmmc is how this soldered MMC interface is mapped to the Rockchip and is fixed accross OSes (it is set in the .dtb)

the bind + unbind trick can also be used if the Broadcom Wifi chip has gone crazy and needs restarting.

(source: other people with similar problems of soldered MMC modules)
  Reply
#2
Thanks for posting this, I was already wondering if it could work this way Smile
Come have a chat in the Pine A64 IRC channel >>
  Reply
#3
Great post. Don't want to move it to tutorials? also, link it to Wiki please in relevant section.
You can find me on IRC, Discord and Twitter


  Reply
#4
(11-13-2019, 06:13 PM)Luke Wrote: Great post. Don't want to move it to tutorials?

If you think it has its place there, feel free to move it (or is it something non-admin can do too ?)

Though the best long-term solution, as I've written in the Manjaro thread, would be to get the EC-firmware guys to have the keyboard also emit simulated "Wifi Soft-kill" keypresses, and the Linux side of things to do such SDIO rescan automatically whenever the EC send such key press.

(11-13-2019, 06:13 PM)Luke Wrote: also, link it to Wiki please in relevant section.

The Wiki is pointing to this trick as of now. I can also add a reverse-link.
  Reply
#5
Think this is fine, thanks.
You can find me on IRC, Discord and Twitter


  Reply


Possibly Related Threads...
Thread Author Replies Views Last Post
  Wifi not working ambein 14 508 6 hours ago
Last Post: hdk
  Unable to set wifi regulatory region electriccrowbar 0 104 12-03-2019, 12:04 AM
Last Post: electriccrowbar
  The default OS / kernel had a wifi issue? dawncold 14 642 11-23-2019, 04:53 PM
Last Post: Arwen

Forum Jump:


Users browsing this thread: 1 Guest(s)