[Q] troubleshooting WiFi battery consumption. research done. - Android Q&A, Help & Troubleshooting

Hi guys, i flashed my rom to an updated official version not to long ago. after the flash i noticed WiFi is taking up 20-25% of my battery usage. battery life from full to naught is just 6 hours without any use. there's two other higher battery consuming items but they are cell standby and phone idle each at 25++%, but i learnt from my local LG O4X forum that they are nothing to worry about.
I tried to search over the internet for solutions which brought up serveral answers like:
wifi.supplicant_set_scan_interval=300 in build.prop (i had to create this line because there wasn't any, and doesn't help my problem. Line Deleted.)
then i realise whether the above works depends on
config.xml from a folder that also doesn't exists on my phone, which probably means wifi.supplicant_set_scan_interval=300 doesn't work at all.
Then from somewhere i learnt of another file wpa_supplicant.config in system/etc/wifi/
Inside this config file lies a whole load of #'ed texts that descripts what each line does but one caught my attention which is
Code:
# AP scanning/selection
# By default, wpa_supplicant requests driver to perform AP scanning and then
# uses the scan results to select a suitable AP. Another alternative is to
# allow the driver to take care of AP scanning and selection and use
# wpa_supplicant just to process EAPOL frames based on IEEE 802.11 association
# information from the driver.
# 1: wpa_supplicant initiates scanning and AP selection
# 0: driver takes care of scanning, AP selection, and IEEE 802.11 association
# parameters (e.g., WPA IE generation); this mode can also be used with
# non-WPA drivers when using IEEE 802.1X mode; do not try to associate with
# APs (i.e., external program needs to control association). This mode must
# also be used when using wired Ethernet drivers.
# 2: like 0, but associate with APs using security policy and SSID (but not
# BSSID); this can be used, e.g., with ndiswrapper and NDIS drivers to
# enable operation with hidden SSIDs and optimized roaming; in this mode,
# the network blocks in the configuration file are tried one by one until
# the driver reports successful association; each network block should have
# explicit security policy (i.e., only one option in the lists) for
# key_mgmt, pairwise, group, proto variables
[B]ap_scan=2[/B]
this is my current setting.
After trying all these my WiFi seems to be still taking up too much battery and at the 'show processes overlay' i still see 'wpa_supplicant' running on and off with approx 5 seconds intervals in between.
My only worry is the methods i've tried are not applicable for ICS, which my phone is. On the link i've attached there's this newer wpa_supplicant_8 version for ICS. How to determine which version im on?
There seems to be more and more ways to troubleshoot as i look further and further, but im not really willing to risk venturing into unknown area without knowledge. Are there any other ways to fix my WiFi consumption issue? i need a fix desperately.

Related

iwmulticall binary.. (or some way to interace with the BCM4329 PM)

So far, I have not found a way to turn off power management.. Usually it goes like this -
iwconfig eth0 power off
I did notice wmiconfig and thus tried wmiconfig --getpower which gave me:
eth1
Power mode is rec
Power mode can be rec or maxperf..
If any of you have used the broadcom drivers in Linux, you'll know that they slow down big time when power management is set to 'All Packets Received'. On my laptop with a 300mb/sec 5ghz 802.11n connection, I get 2MB/sec with PM on.. 19MB/sec with PM off. It matters..
I haven't been able to find much on wmiconfig due to MS having an identical name for one of its utilities. I'm going to try the iwmulticall binary from my g2 now.... ok.. got errors. it listed lo, tunl0, and gre0.. then it died.. heh.
Has anyone turned off the PM or been able to interface with the bcm wifi chip? It'd be even cooler if we could turn up the tx-power a little.
Nothing? Do you guys think the bottleneck for wifi transfer speed is the emmc?!
Any progress?
I have an Adam, which uses same wmiconfig and BCM4329 wifi.
wmiconfig have options like --power maxperf , but when I use it and try --getpower it reports back rec mode and not maxperf
Also there is option --txoptbursting 1 but not sure if it worked or at lease I don't know how to check if it has changed.
Yes. I can get 4-5MB/second (receive via ubuntu ncftp as client, gtab server) with power management turned off. CIFS has slightly lower speeds - but that's normal. SFTP is also decent (allows me to access / in its entirety as if it were mounted locally).
Anyways... put this in /system/xbin/
http://home.comcast.net/~ibladesi/iwmulticall
and start symlinking to it... like so
# cd /system/xbin/
/system/xbin # ln -s /system/xbin/iwmulticall iwconfig
Here are the symlinks you can create in addition to iwconfig:
iwgetid iwlist iwpriv iwspy
My normal use for it is-
iwconfig wlan0 power off
So I made a script and named it fstwan so its quick to type.
Don't try to set the txpower, that seems to be broken with all android devices.
And yeah, wmiconfig seems to be complete horse****.. that's even worse than bs. I don't think that this will change the tame nature of the wifi radio's power output.. I think it has more to do with system utilization.. its such strange default behavior. For example, using a ssh client to connect to the device is brutal in terms of responsiveness, turn pm off and viola, its like you're using adb.

removing wifi scan ro. lines from build.prop & using setprop "on demand" wifi call?

removing wifi scan ro. lines from build.prop & using setprop "on demand" wifi call?
If I understand correctly, many people add certain lines to their build prop to allow settings on the device as read only i.e ro.
However for many people having this as set could mean in such cases where wifi scan interval is set to hi (or more frequent i.e 20)to enable maintained wifi connection during calls....that they will suffer with some amounts of battery drain.
Other people who are not interested in wifi calling could (could and usually do) set the scanning to a much high (or infrequent scan value of like 180) this is fine in most cases where battery consumption is considerably less and more desirable and even better when coupled with a modem to suit their region, provider and band.
But lets say someone uses wifi calling, but they don't want to permanently "set" i.e. an ro line within the build prop to constantly scan 20 when they are not on a wifi call. This is mostly true for most wifi callers around, unless the phone they are using is a dedicated inhouse wifi device (and yes I have considered a nice lil cheaper to do this with my self) anyway I hope you guys can see where I am headed with this?
Could say a script be generated where when a process is enabled that it calls the script to ramp up wifi scanning to a smaller more frequent value 20 when "ON A WIFI CALL" (that being the process) and then revert to a lower value (set otherwise so to speak) and conserve batter when "NOT ON A WIFI CALL" ?
If so can someone direct me with how to go about doing this?
I am in the process of setting up an installation package for T-mobile users on ICS using Galaxy S & variants of....and would like to include in my installation package a way of detecting and removing the wifi scan intival from the build.prop ro line and then paste the my scripting within system.
I already know how to make a install script that does the detect and CHANGE or detect and REMOVE in the build prop for ALL types of ICS Galaxys.....however I am not sure about how to generate and then intitate an "on-demand" scripting for wifi calls? I assume that this is a setprop type function if so long as the ro function is gone (which is a read only and set at a higher precedent than any other functions if I believe right?)
Any help or pointed would be greatly appreciated.
James

[Q] While tethered, why doesn't Fascinate listen for port 139 and 445?

I'm using a Samsung Fascinate with AOKP Milestone 5 by Stephen.k.spear.
My second device is an Asus Transformer TF-101 running Megatron CM9 based ROM by ricardopvz.
I use WiFi Tether for Root that is no longer beta and available on the market so I have the newest version. My WiFi tether set up options that are pertinent to this post are as follows:
1. Change Device Profile
a. Samsung Galaxy Nexus (CDMA/LTE)
2. Change Setup Method
a. Netd (master)
3. Change LAN
a. 192.168.1.0/24
4. Routing Fix
a. Routing fix is NOT enabled
5. Default DNS settings
I have no issues tethering, it works very well, very fast. I can ping by hostname from each device while tethered. I have set both device name entries in the host file.
My issue while tethering: When I run netstat on the Transformer, I can see that wlan0 is listening on port 139(NetBIOS) and 445(SMB). However, when I netstat on the Fascinate, it is NOT listening to either of these ports. I use the Samba app available from the market and have configured all the appropriate settings for both devices.
Using the ip route command, I can see that both devices show appropriate routing on 192.168.1.x to the appropriate adapter (wlan0).
Why won't the Fascinate listen for the two ports when the adapter (wlan0) appears to be working fine, routing is good, pinging by NetBIOS name from the hosts file, and Samba is broadcasting NetBIOS and SMB?
My purpose for this post and the questions is to be able to perform wireless syncing between the two devices and a computer for various directories like Pictures and Documents. I want all three devices to be the same. If I go home and connect to WiFi the IP addresses will change and I will constantly have to adjust settings. I'm looking for a seamless option because I use tether almost as much as I use home WiFi.
I figured it out. WiFi Tether app creates a rule with iptables called wireless-tether. It's regenerated each time the app starts by using the tether.edify file in the app's data directory. If you edit the firewall rule it will default back after the app starts again. I have emailed the dev to see if they can allow some user options so the traffic can pass internally such as netbios and samba.
The default linux rules allow all traffic which is why netstat on the tablet passes netbios and smb. The tablet is connecting wirelessly with no changes to iptables.
Also, standard home wifi on the phone would also pass the traffic because no additional rules to the iptables are being made.

[Q] Why does't ICS supports IPv6 on WIFI?

I mean this is stupid... you can have IPv6 APN and everything, but on WIFI you cant get IPv6 address... I have dualstack LAN at home, every client should get local IPv4 address and public IPv6. But for some silly reason Google decided to not include this in to ICS, but since there is support for UMTS IPv6 APNs it should WORK technically... This works flawlessly on iPhone4S and other clients (read computers) that supports IPv6 on my LAN...
From what I can see, ICS manages to configure a IPv6 global address on its wlan0 interface via autoconfiguration.
Looking at results from tcpdump and other command line tools, there seem to be two other problems:
1) Even though there is a router on the LAN sending router advertisements and the device configures its address, it does not seem to install or use the the default gateway. I am able to ping the phone via IPv6 on the same local /64 global, and its link local, and am able to ping those devices back from the device (ping6 via busybox). I cannot however ping past the local IPv6 global network.
2) None of the web browsers on the phone I have tried seem to be doing AAAA lookups. Confirmed tcpdump, even when trying to resolve names that only have AAAA records, the request only ever goes out for an A record and never a AAAA.
I was able to run a web server on the same local /64 the phone was configured on, and was able to browse to it by its IPv6 address directly through the browser. So it does work, just missing the default route and AAAA DNS functionality it seems.
As an FYI this was tested on a rooted Galaxy S3 SGH-I747M running 4.0.4. I'm assuming the IPv6 functionality wouldn't be any different between this and the SII, but maybe I'm wrong.
themikea said:
1) Even though there is a router on the LAN sending router advertisements and the device configures its address, it does not seem to install or use the the default gateway. I am able to ping the phone via IPv6 on the same local /64 global, and its link local, and am able to ping those devices back from the device (ping6 via busybox). I cannot however ping past the local IPv6 global network.
Click to expand...
Click to collapse
I have a Galaxy S3 SPH-L710 running Android 4.0.4, and I had the same problem with it not configuring the default IPv6 route. There is a sysctl variable that controls whether the Linux kernel automatically adds the default route advertised in the IPv6 Router Advertisement messages, and it defaults to 0 (off) on the phone. Look at /proc/sys/net/ipv6/conf/default/accept_ra_defrtr.
themikea said:
2) None of the web browsers on the phone I have tried seem to be doing AAAA lookups. Confirmed tcpdump, even when trying to resolve names that only have AAAA records, the request only ever goes out for an A record and never a AAAA.
Click to expand...
Click to collapse
When I set accept_ra_defrtr to 1 and cycled my Wi-Fi connection, it came back up and added the default IPv6 route. Now test-ipv6.com on my phone gives me a 10/10 on both IPv4 and IPv6, meaning the DNS resolver is asking for AAAA records too and even preferring them when a host has both A and AAAA, which is the recommended and desired behavior. Loading comcast6.net on my phone shows my IP address as an IPv6 address.
Trouble is, setting sysctl variables in /proc/sys will not survive through a reboot, and there is no /etc/sysctl.conf on Android, so I don't know where to stash this setting so it gets applied on every boot. There is no file anywhere in /system that contains "accept_ra_defrtr" except for the vpnclient.ko kernel module, and that's not loaded, so I'd guess the kernel has been modified to disable IPv6 default routes by default.
Any idea if there's an Android equivalent of inittab or sysctl.conf or how might I go about setting that sysctl variable automatically on boot?
whitslack said:
I have a Galaxy S3 SPH-L710 running Android 4.0.4, and I had the same problem with it not configuring the default IPv6 route. There is a sysctl variable that controls whether the Linux kernel automatically adds the default route advertised in the IPv6 Router Advertisement messages, and it defaults to 0 (off) on the phone. Look at /proc/sys/net/ipv6/conf/default/accept_ra_defrtr.
When I set accept_ra_defrtr to 1 and cycled my Wi-Fi connection, it came back up and added the default IPv6 route. Now test-ipv6.com on my phone gives me a 10/10 on both IPv4 and IPv6, meaning the DNS resolver is asking for AAAA records too and even preferring them when a host has both A and AAAA, which is the recommended and desired behavior. Loading comcast6.net on my phone shows my IP address as an IPv6 address.
Trouble is, setting sysctl variables in /proc/sys will not survive through a reboot, and there is no /etc/sysctl.conf on Android, so I don't know where to stash this setting so it gets applied on every boot. There is no file anywhere in /system that contains "accept_ra_defrtr" except for the vpnclient.ko kernel module, and that's not loaded, so I'd guess the kernel has been modified to disable IPv6 default routes by default.
Any idea if there's an Android equivalent of inittab or sysctl.conf or how might I go about setting that sysctl variable automatically on boot?
Click to expand...
Click to collapse
bro look at your /system/etc/init.d. if it exists, you can add a new script as
#!/system/bin/sh
echo 1>/sys/XXXXXXX
in init.d and name it 89enipv6 or sth.
if it don't work, check your /system/bin/sysinit. if it doesn't exist, google and copy one.
Does anyone know how I can disable IPV6 on my S3 ?
ahoslc said:
Does anyone know how I can disable IPV6 on my S3 ?
Click to expand...
Click to collapse
Why do you want to disable IPv6? It's new better version of IP protocol and should be used whenever it possible.
runapp said:
bro look at your /system/etc/init.d. if it exists, you can add a new script as
#!/system/bin/sh
echo 1>/sys/XXXXXXX
in init.d and name it 89enipv6 or sth.
if it don't work, check your /system/bin/sysinit. if it doesn't exist, google and copy one.
Click to expand...
Click to collapse
In my case of 4.1.3 the value of 0 rewrited in /proc/sys/net/ipv6/conf/wlan0/accept_ra_deftrt on every wifi interface restart, even independently on "all"/"default" values.

How to fix 5GhZ wifi in custom ROMs

So, many custom ROMs -- including CM10.1, Carbon -- won't connect to certain 802.11a/n networks. This seems to be because they are distributing a UK-specific version of the file /system/etc/wifi/nvram_net.txt, which is loaded by the dhd module on enabling wifi.
The version they distribute contains the line:
ccode=GB
If you edit the file and change this line to
ccode=ALL
and turn off and back on wifi in your system settings, you should be able to connect just fine.
(The mac80211 stack should be taking care of regulatory compliance anyways, so I think this is unnecessary anywhere. But if somehow this short-circuits the kernel's efforts, you may find yourself in trouble with the FCC or equivalent. This should be fairly easy to test, but I am not worried enough to take the time -- for this to cause problems, you would also need a router that ignores the regulatory environment. Those are hard to find in the US, at least.)

Categories

Resources