I think this part of your question is key:
I've switched from DHCP to static IP addresses. Doing so reduced the frequency of problems and seems to have eliminated my earlier issue where wifi would be randomly dropped.
IP addressing issues could certainly cause you troubles like this. Static addressing is only treating the symptoms, though, not curing the disease. Assuming the APs you're connecting to haven't had their DHCP settings changed, focus on investigating how your phone is acting as a DHCP client. I found a bug report in which several users report the same trouble you're having (the author actually references one of your previous questions). One of the commenters found log entries related to DHCP; you mentioned in a comment that you didn't find any relevant log entries but did you see any that look like this commenter's?
Apr 1 05:26:12 unknown daemon.info dnsmasq-dhcp[522]: DHCPREQUEST(br0) 192.168.200.225 a0:0b:ba:83:65:32
Apr 1 05:26:12 unknown daemon.info dnsmasq-dhcp[522]: DHCPNAK(br0) 192.168.200.225 a0:0b:ba:83:65:32 wrong address
Additionally, a later commenter found that the DHCP client service dhcpcd
was not running on his device. He explains:
I started researching a bit, using good old Linux console and "ps" command. I noticed that:
- every time I could not connect, dhcpcd was not running.
- at least several times, Kingsoft Office process was running when the problem appeared.
So, what I did was:
- uninstalled Kingsoft Office,
- switch to static IP on all networks I use often (home, work, friends, family). I also disabled WiFi power management (read somewhere that it could help).
After these, problem disappeared. It's been gone for 2 weeks now!
He found that the DHCP client service's absence was correlated with one of his apps. Reconfigure your device to use DHCP, try to connect to one of the problem APs, then use Terminal Emulator (or similar) to run the same investigation he did by typing the command ps | grep dhcp
. The output should look something like the following:
dhcp 4858 1 924 552 ffffffff 00000000 S /system/bin/dhcpcd
This means that the dhcpcd
process is running. If dhcpcd
is not running, you'll simply be returned nothing. If that's the case, type ps
again to get a list of all current processes. Do you notice any correlations between an app you've installed and the problems you're having? As a temporary work-around, trying starting the service again by typing sudo dhcpcd
, then try again to connect.