I’d recently been having some issues with my Google Pixel 3XL - I’ve had the phone a while, so it’s fairly common for some little issues to crop up nearing the end of a contract (just as the warranty expires of course..)

This however was a bit of a shitty one. The bluetooth and WiFi would suddenly turn off (normally when I’m driving somewhere and relying on the bluetooth for Waze) and just would not turn back on.

Unfortunately, this is apparently a known issue with the Pixel phones and the Android 11 update. Joy.

I’d tried the ol’ turn it off and on again, resetting the WiFi and bluetooth settings etc.

Sometimes this worked, sometimes it’d just take a few hours and then come back. I’d even tried a full factory reset to see if it’d stop it for good.

Today however it has persisted through it all… and knowing that sending it off to get repaired wasn’t going to happen, I thought “fuck it, I’m going to find out what’s going on”.

I launched the adb shell and started logcat:

03-01 13:32:04.439  1054  1054 E [email protected]: Failed to write driver state control param: Invalid argument
03-01 13:32:04.440  1054  1054 E [email protected]: Failed to load WiFi driver
03-01 13:32:04.440  1054  1054 E [email protected]: Failed to initialize firmware mode controller
03-01 13:32:04.440  1054  1054 E [email protected]: Wifi HAL start failed
03-01 13:32:04.442  1528  1828 E HalDevMgr: Cannot start IWifi: 9 ()
03-01 13:32:04.442  1528  1828 E WifiVendorHal: Failed to start vendor HAL
03-01 13:32:04.442  1528  1828 E WifiNative: Failed to start vendor HAL
03-01 13:32:04.442  1528  1828 E WifiNative: Failed to start Hal
03-01 13:32:04.443  1528  1828 E WifiClientModeManager: Failed to create ClientInterface. Sit in Idle
03-01 13:32:04.443  1528  1828 D WifiScanRequestProxy: Sending scan available broadcast: false
03-01 13:32:04.445  1528  1847 D WifiHandler.WifiScanningService: handleMessage Received message=159775 sendingUid=1000
03-01 13:32:04.445  1528  1828 I WifiScanRequestProxy: Scanning is disabled
03-01 13:32:04.446  1528  1847 I WifiScanningService: Received a request to disable scanning, UID = 1000
03-01 13:32:04.446  1528  1847 I WifiScanningService: wifi driver unloaded
03-01 13:32:04.447  1528  1828 D WifiClientModeManager: received an invalid message: { when=-20s604ms what=2 arg1=2 target=com.android.wifi.x.com.android.internal.util.StateMachine$SmHandler }
03-01 13:32:04.447  1528  1828 D WifiController: STA disabled, return to DisabledState.
03-01 13:32:04.447  1528  1828 D WifiController: EnabledState.exit()
03-01 13:32:04.447  1528  1828 D WifiController: DisabledState.enter()
03-01 13:32:05.156  1046  1118 I CHRE    : @ 2299.644: [cc] onArResult activity=5, conf=421
03-01 13:32:05.973  1528  2212 I WifiService: getConnectionInfo uid=10146
03-01 13:32:05.974  1528  2212 V WifiService: getConnectionInfo: hideBssidSsidAndNetworkId=true, hideDefaultMacAddress=true

Interesting, but not entirely useful - a quick Google of things like “[email protected]: Failed to load WiFi driver” didn’t turn up any results which weren’t related to custom ROMs.

I was starting to think rooting my phone was going to be the only way of fixing a failing WiFi driver. Thankfully rooting Google devices is fairly easy, so following a guide from xda-developers.com, I got into the fastboot bootloader.

The command “fastboot flashing unlock” didn’t work for me, as I hadn’t enabled this in the developer options. Sigh. Another quick reboot to enable that and oh… the WiFi and Bluetooth is working again…

I’m not sure if doing a “hard reboot” into the bootloader is any different than a normal reboot, but maybe it helped?

UPDATE 06/03/2021

The issue came back, and some further searching found this thread with a weird suggestion:

Temporary fixes are to restart the phone and when the Google Logo appears, tap the back of the phone.

It works. Turn off your phone, turn it back on and when the Google logo appears, tap anywhere on the back of your phone (a bit harder than typing on a old keyboard or something).

There’s also a video (archived) on YouTube by “To create a” (copied below) showing a board repair for this problem.

Seems it’s more hardware than software…