Summary
If you have these problems with the wi-fi (WLAN) on your FairPhone 2:
- If the network is 5 GHz only: you still see the network in the Wi-Fi menu, listed as “Saved”, but when you tell it to connect, nothing happens. Or maybe it shows “Scanning…” and “Connecting…” briefly and goes back to “Saved” without any error messages.
- If the network supports both 2.4 GHz and 5 GHz: it connects on 5 GHz, then randomly loses connection after a while and reconnects on 2.4 GHz. You can see the band and channel in an app like Net Analyzer.
The solution is to go into the settings of your access point (router) and configure the 5 GHz band to use a fixed channel between 36 and 112. Channels 116 through 128 do not work on the FairPhone 2, or at least not on my specimen. The specifications on the official website do not say anything about which channels/frequencies are supposed to be supported.
If your router is a Fritz!Box similar enough to mine, here’s how to do it:
- Go to http://fritz.box in a web browser and log in.
- Click Wireless > Radio Channel.
- Select “Adjust radio channel settings”.
- Select the channels of your choice from the dropdown menus.
- Click Apply.
Investigation
So here’s how I found this out. Maybe it contains useful troubleshooting tips even if you’re having wifi problems with a different underlying cause.
For a long time, I’ve been having trouble with the wifi connection of my FairPhone 2 (currently OS version 19.11.2) at home. My wifi access point is a Fritz!Box 5490, which supports both 2.4 GHz (b/g/n) and 5 GHz (n/a/ac) wifi bands. Theoretically, the FairPhone 2 supports all of these too (except for “a” which is not enabled in the FritzBox and obsolete anyway). The access point is configured to use the same network name (let’s call it home
) for both 2.4 GHz and 5 GHz.
Eventually I found out that there is sometimes a lot of interference on the 2.4 GHz band. The signal chart in the FritzBox shows that it happens in 10-second bursts at 30-second intervals, and it happens on all channels, so I don’t think it’s caused by another wifi network. Whatever the cause, I decided that I wanted to use the 5 GHz band exclusively, which seems to be free of interference.
Using the same network name (SSID) of home
on both the 2.4 GHz and the 5 GHz band allows devices to switch to whatever band seems to give the best performance. Unfortunately, there’s no way in Android to tell it to only use one or the other, or even to see which one it’s using. Fortunately, the FritzBox lets you configure a different name for each of them, so I set the network name to home2
for 2.4 GHz and home5
for 5 GHz. On my FP2, I saved only the home5
network so it couldn’t even try to connect to home2
.
This made the problem worse: instead of frequently losing the 5 GHz connection and connecting back immediately on 2.4 GHz, it now sometimes lost the 5 GHz connection and wouldn’t connect at all. The network was still visible, but it showed as “Saved” and seemingly wouldn’t make any attempt to connect, even when poking the Connect button manually.
The cause was that the FritzBox was configured to select an optimal interference-free channel automatically, and it would sometimes switch to a channel that isn’t actually supported by the FairPhone. This leads to the weird situation where the FP2 can still see the network (probably because beacons are being broadcast on 2.4 GHz channels as well) but it cannot connect. The Android OS is apparently terrible at giving feedback to the user in this situation.
If you enable developer mode, you can turn on this option: Settings > Developer options > Enable Wi-Fi Verbose Logging. This adds some ugly looking details to the Wi-Fi menu. If the connection failed because the channel is not supported, you get NETWORK_SELECTION_DISABLED_ASSOCIATION_REJECTION=1
(the number 1
increases every time the connection failed due to this reason).
I did a little study on which channels work reliably. The method:
- Change the channel in the FritzBox.
- Turn wifi on the FP2 off and on again.
- See if it connects. If not, tap the network name and then Connect.
- If it connects, record
OK
, otherwiseFAIL
.
I did this several times for most channels, in somewhat random order. The results:
36 OK
40 OK
44 OK/OK
48 OK
52 FAIL/OK/OK *
56 FAIL/OK/OK *
60 OK
64 OK
100 OK/OK
104 OK
108 OK
112 OK/OK
116 FAIL/FAIL
120 FAIL/FAIL
124 FAIL/FAIL
128 FAIL/FAIL
*
It’s possible that I was too impatient or sloppy on the first attempt for channels 52 and 56, because afterwards they were fine. This article (in German) might have biased me, because it claims that many devices only support channels 36 through 48.
It took me months of frustration to finally discover this, so I hope this post helps someone!