FORUMS
Remove All Ads from XDA

[Solved] TS FREEZE FIXED / Orientation offset calibration & G-SENSOR CALIBRATION FIX

907 posts
Thanks Meter: 203
 
By memin1857, Senior Member on 8th October 2010, 07:12 PM
Post Reply Email Thread
UPDATE: (13/11) A patch has been developed that completely eliminates TS FREEZE for good.
Thanks to mdebeljuh and jdivic, I tested it and it seems to be working perfectly.
Check post 140 on page 14:
http://forum.xda-developers.com/show...&postcount=140
UPDATE: (20/11)A new patched 8.2 kernel without logging (better for daily use) is available.
Check post 234 on page 24:
http://forum.xda-developers.com/show...&postcount=234

-----

EDIT: If you did autocalibration and messed your g-sensor, read post 10 & 11 to see a fix for it. (before going through post 1)
EDIT 2: Freezes of sensors and touch screen seem to be related to offset values. See post 10 & 11

Post 1 is for orientation offset. Check post 10 & 11 for g-sensor and ts freeze fix.
----

If your orientation is off when you lay your phone on a level surface and can't calibrate it in Android (because many people found it gets corrupted after auto calibration), this is one way to do so. (Winmo g-sensor calibration does not seem to affect android orientation)

Install an app that displays sensor information along with pitch and roll. (such as SensorDebug from Android market)
Put your phone on a level surface such as the floor or a table.
Note your pitch and roll values.
Use rootexplorer or similar file manager to edit /data/misc/AK8973Prms.txt file. (open in text editor) (For ASTRO CHECK POST 70 in page 7)
You will see AOFFSET.x and AOFFSET.y at the bottom. (May be on top if you autocalibrated previously)
y affects pitch and x affects roll, there is about 4 to 1 ratio.
What you are trying to do is make pitch and roll 0 with minimum flicker.
Press and hold home button to switch between rootexplorer and sensordebug. Your changes will be reflected in realtime (with most builds). Go back and forth a few times to get perfect result. (You can press and hold home button to go back and forth) If you think changing values don't have an affect, try to temprorarily change AOFFSET.x=90 and return to your app. When phone is on the table, your leveling bubble or pitch/roll must be way off. This way you can see if with your build changes are reflected in realtime or not. If not try restarting, use different sensor app and give feedback please. (After that revert AOFFSET.x to 0 or other value your want to fix back orientation)

For example:
If pitch is 3 and roll is -1
you may start by
AOFFSET.x=4
AOFFSET.y=-12
Then adjust with 1 increments to get rid of flicker.
It is best to adjust one value at a time.

EDIT: IF YOU WANT TO CALIBRATE Z AXIS, CHECK POST 61 in page 7

Calibrated AOFFSET values for my phone are x=2 y=-9 z=12

You can use gpsstatus or bubble app (to find bubble app search the market for bz.ktk.bubble and enable "show angle" from bubble apps settings.) for visual check of orientation calibration. Because of the protruding camera lens of hd2, there can be 1 degree difference between sideways and normal orientation. (It seems you can adjust in about 0.25 degree increments by each 1 increment of AOFFSET and compansate by lowering AOFFSET=y by 2 that gives 0 degrees in both normal and sideways orientation in bubble app)

- You don't need to reboot for most builds (if there is no affect check post 11)
- You don't need to kill/restart akmd
- You don't even need to close sensor app
- Because of not perfect kernel/build support for sensors, you may see them freeze when you move the phone (TS will also freeze). With evo kernels, just wait a few seconds and it will resume. (With nexus kernels they may freeze until sleep/wakeup) Interestingly the values of AK8973Prms.txt affect shake/move freezes. I wrote about this in post 10 and 11.

IT IS A GOOD IDEA TO BACKUP COMPLETE ANDROID FOLDER BEFOREHAND just in case something goes wrong. Chefs say you shouldn't auto calibrate your g-sensor under Android because with many people it gets messed up. Also good idea to backup your /data/misc/AK8973Prms.txt

You may have trouble accessing data folder with a file manager other than rootexplorer. Your build must be rooted. (most are) It is a good idea to update your su binary inside superuser app settings TWICE. If you change permissions of /data /data/misc folders you may access them even with standart astro file manager. Try chmod 777 /data from terminal emulator.
This procedure is also possible with adb or droidexplorer. But my way of doing is practical and it is in realtime. If your build has different file name, please tell us.
This IS a development thread, please don't tell me to post in generic section or clutter.
This is manual workaround for non-working auto calibration. If auto-calibration works in the future, it may very well fix your freezes.

Values of AK8973Prms.txt file may solve touch screen/sensor freeze problems with your games. Feedbacks are always welcome. We should find out what the other values do exactly. Also check post 10 & 11
The Following 5 Users Say Thank You to memin1857 For This Useful Post: [ View ] Gift memin1857 Ad-Free
 
 
8th October 2010, 07:30 PM |#2  
nobnut's Avatar
Senior Member
Thanks Meter: 2,704
 
More
Wow, thank you. I will certainly try this when I am sober (tomorrow morning).

I appreciate your taking the time to share this.

Have a good weekend!
8th October 2010, 07:32 PM |#3  
noellenchris's Avatar
Inactive Recognized Developer / Retired Moderator
Flag Marlton, NJ
Thanks Meter: 889
 
More
Thanks! worked great....
8th October 2010, 07:57 PM |#4  
crawlingcity's Avatar
Inactive Recognized Developer
Flag Porto
Thanks Meter: 1,152
 
Donate to Me
More
thanks! worked perfectly
8th October 2010, 08:37 PM |#5  
Senior Member
Thanks Meter: 31
 
More
haha.. funny, this is the RIGHT way to do it: (credit goes to me )
1) put your phone on the surface and then
2) Gscript to stop gsen.
3) Go to callibration tool and press callibrate..
4) activate Gsensor through Gscript.
thats it and gsensor is fully callibrated to your way. no need to mess with system files.
The Following User Says Thank You to eeeeeee For This Useful Post: [ View ] Gift eeeeeee Ad-Free
8th October 2010, 08:42 PM |#6  
OP Senior Member
Flag Istanbul
Thanks Meter: 203
 
More
Quote:
Originally Posted by eeeeeee

haha.. funny, this is the RIGHT way to do it: (credit goes to me )
1) put your phone on the surface and then
2) Gscript to stop gsen.
3) Go to callibration tool and press callibrate..
4) activate Gsensor through Gscript.
thats it and gsensor is fully callibrated to your way. no need to mess with system files.

Don't you think I already knew that? I wrote this long procedure because calibration tool corrupts calibration and doesn't work with many people. With many builds, chefs write don't calibrate your sensor. You need the gsensor script to be able to stop gsensor (kill akmd) since you didn't share it, people won't be able to do it anyway.
I suggest backing up complete Android folder before attempting to auto calibrate g-sensor within Android. Forum is full of people who calibrated under android and everything is messed up.
8th October 2010, 08:46 PM |#7  
Senior Member
Thanks Meter: 31
 
More
Quote:
Originally Posted by memin1857

Don't you think I already knew that? I wrote this long procedure because calibration tool corrupts calibration and doesn't work with many people. With many builds, chefs write don't calibrate your sensor. You need the gsensor script to be able to stop gsensor (kill akmd) since you didn't share it. People won't be able to it anyway.
I suggest backing up complete Android folder before attempting to auto calibrate g-sensor within Android. Forum is full of people who calibrated under android and everything is messed up.

gsensor calibration tool causes nothing.. in my way -> t does exactly what you do..
i know that with the evo kernel the gsensor callibration is kinda corrupted, but it still works perfectly when following my orders.
although i would suggest not doing this with gsensor on.
as long as the gsensor is off when calibrating, there is no risk to mess the gsensor up.

although when callibrating with gsensor on messes the whole thing up, you can fix it following my orders again.


although its still nice that you edited the beginning of your tutorial:
Quote:
Originally Posted by memin1857

If your orientation is off when you lay your phone on a level surface and can't calibrate it in Android (because many people found it gets corrupted after auto calibration), this is one way to do so. (Winmo g-sensor calibration does not seem to affect android orientation)

8th October 2010, 08:56 PM |#8  
OP Senior Member
Flag Istanbul
Thanks Meter: 203
 
More
Quote:
Originally Posted by eeeeeee

gsensor calibration tool causes nothing.. in my way -> t does exactly what you do..
i know that with the evo kernel the gsensor callibration is kinda corrupted, but it still works perfectly when following my orders.
although i would suggest not doing this with gsensor on.
as long as the gsensor is off when calibrating, there is no risk to mess the gsensor up.

although when callibrating with gsensor on messes the whole thing up, you can fix it following my orders again.

I have made extensive tests and found out that you are actually doing no proper calibration. You are breaking other things.
- If you disable g-sensor before you open your sensor app (calibration tool) than you get no data from the g-sensor (since you disabled it) and can't calibrate.
- Phone must be very still while you disable g-sensor or the orientation data will get frozen at wrong values. And sensor app must be open beforehand.
If you fail calibration (y axis) will get messed up badly and won't work again. It wil flicker between full up and full down and further calibration attempts will make compass constantly spin.
- Still if you could do it all, nothing changes, offset is still there and calibration is wrong after following your instructions. (Try bubble app or sensor app with real sensitive degree values and you will see)
I searched your posts and saw that you are complaining about touch freezes. Maybe if you don't do auto calibration you may get less freezes?
Also please DO share anything you know. It is not enough to just say -disable g-sensor with gscript- People don't know that script, and if you don't share they can't do it. I saw your thread, you got 0 replies in 20 days, maybe because it doesn't work.
I advise against doing autocalibration. And remember, this is not a pissing contest. We are not doing this for the credit. We should be doing this for helping community. (You should have written nicer, instead of looking like showing off how genious you are and how fool we are. We know some things too.)
My way of doing it is NOT direct calibration. It is providing offset to g-sensor data that many people can do without the risk and can be restored back easily.
Note: I have found out that calibration tool generates a file named AccPrmsF.ini in the same folder with extreme z value. Sometimes a bma_result.txt gets created again with wrong values. Its content is input to AK8973Prms.txt again with extreme z value. If you restore your original AK8973Prms.txt g-sensor starts working properly again. (see post 10 & 11)
8th October 2010, 09:08 PM |#9  
n_god's Avatar
Senior Member
Flag BURSA
Thanks Meter: 114
 
Donate to Me
More
eywallah bro
8th October 2010, 10:10 PM |#10  
OP Senior Member
Flag Istanbul
Thanks Meter: 203
 
More
How to restore g-sensor
If you calibrated with android calibration tool and your g-sensor freaked out. Here is how to fix it:
Use rootexplorer to
Delete AccPrmsF.ini and bma_result.txt file in /data/misc (if they exist)
Edit AK8973Prms.txt in /data/misc folder with rootexplorer to these values:

[AK8973]
HDOE_STATUS_SLIDER_OPEN=1
HDOE_STATUS_SLIDER_CLOSE=0
HDOE_SUCTEMP=114
HDAC_SLIDER_OPEN.x=128
HDAC_SLIDER_OPEN.y=135
HDAC_SLIDER_OPEN.z=4
HOFFSET_SLIDER_OPEN.x=250
HOFFSET_SLIDER_OPEN.y=593
HOFFSET_SLIDER_OPEN.z=175
HDAC_SLIDER_CLOSE.x=0
HDAC_SLIDER_CLOSE.y=0
HDAC_SLIDER_CLOSE.z=0
HOFFSET_SLIDER_CLOSE.x=0
HOFFSET_SLIDER_CLOSE.y=0
HOFFSET_SLIDER_CLOSE.z=0
ASENSE.x=256
ASENSE.y=256
ASENSE.z=256
AOFFSET.x=0
AOFFSET.y=0
AOFFSET.z=0

(These values may not solve freezes, check post 11 for different values that may fix freezes)
Some nexus based builds don't have slider open/close lines.

No need to reboot, just save and it should work instantly with most builds. (If it doesn't check post 11) If you delete AK8973Prms.txt or it may get recreated with wrong values (full zeroes) and freak out again. AOFFSET.z=xxx seems to be the culprit of calibrate tools vertical corruption. (Becomes full up or full down like digital when z=veryhigh). Only editing it to zero may solve the problem.
These values may change in time, or between builds. Those were my values, you may try to boot a new version of your android build and rip the file from it and use that instead.
If your g-sensor does not work at all after reboot you may need to restart it. Open terminal emulator and enter these commands:
su
/system/bin/akmd
Now it should be working.
Please tell if it worked for you. By comparing values and working on these values we may as well make g-sensor much better. (Accelerometer doesn't seem to be calibrated) If your build has different file name, please tell us. The instructions in post 10 may not be perfect and I am still working on this and will post if I find anything new. Of course kernel support is also required for getting less flickers, no freezes, proper poll intervall, correct i2c frequency and proper calibration.

EDIT: The values keep changing by itself. Interesting part is I am getting less shake/move freezes (or freezes in only one direction) in sensor apps or games now! I am experimenting with different values and it definitely affects how often freezes happen. I am trying to get the values of what a real calibration would do. Maybe sensor freezes happen when values are out of range. I am sure a proper calibration will get rid of these freezes but since with the current kernels we can't do proper auto calibration, maybe we can do manual one for now. Seems usual x y z accelerometer values are between 10 and -10. When freezes happen they seem to be more than 10 or less than -10. ASENSE values change the range of x y z (minimum working asense is 45 and the more you set the less range x y z has). Also ppp data seem to freeze/restart when sensor freezes happen. If freezes are eliminated even ppp data might work better! Some of the findings might be wrong, of course.
It seems you can update AK8973Prms.txt in realtime with droidexplorer and changes are reflected in realtime when you reopen, switch to the sensor app or sleep/wakeup. This makes testing easier.
It seems I have found non freezing values. Check next post. (Post 11)
9th October 2010, 01:29 AM |#11  
OP Senior Member
Flag Istanbul
Thanks Meter: 203
 
More
Freezes are fixed now.
EVEN IF YOU ARE NOT GETTING TOUCH SCREEN / G-SENSOR FREEZES WITH USUAL USAGE OF YOUR PHONE, INSTALL SENSOR DEBUG, BUBBLE, COMPASS APP OR GAMES AND TRY IF THEY FREEZE WHEN YOU SHAKE/MOVE THE PHONE OR WALK WITH THE PHONE IN YOUR HAND. Bubble app is the most freezing app. To find it ssearch the market for bz.ktk.bubble. Enable "show angle" from bubble apps settings. Game example: Teeter
Make sure it has been at least 2 minutes since Android has booted. (Or it may fool you as it is busy when first home screen appears after boot)
Freezes have been mostly eliminated with newer builds/kernels, but they are not completely gone.

I am no longer getting any freezes in any app now. Not in compass apps, not in games, not in sensor displaying apps, not in calibration tool. I am also not getting freezes while I am walking with the phone.
I am not yet sure how this exactly happened (as I always had freezes in those apps when the phone moved) but currently my android build updates the AK8973Prms.txt file every minute by itself (doesn't change very much, but quite different from the beginning) and the current values have absolutely no freezes.
These values have no more freezes. (since they keep changing it may not last for days) Please try:

[AK8973]
HDOE_STATUS_SLIDER_OPEN=2
HDOE_STATUS_SLIDER_CLOSE=0
HDOE_SUCTEMP=111
HDAC_SLIDER_OPEN.x=4
HDAC_SLIDER_OPEN.y=135
HDAC_SLIDER_OPEN.z=8
HOFFSET_SLIDER_OPEN.x=-849
HOFFSET_SLIDER_OPEN.y=1179
HOFFSET_SLIDER_OPEN.z=-653
HDAC_SLIDER_CLOSE.x=0
HDAC_SLIDER_CLOSE.y=0
HDAC_SLIDER_CLOSE.z=0
HOFFSET_SLIDER_CLOSE.x=0
HOFFSET_SLIDER_CLOSE.y=0
HOFFSET_SLIDER_CLOSE.z=0
ASENSE.x=256
ASENSE.y=256
ASENSE.z=256
AOFFSET.x=0
AOFFSET.y=0
AOFFSET.z=0

Seems
A low HDAC_SLIDER_OPEN.x value
A large negative HOFFSET_SLIDER_OPEN.x value
A high HOFFSET_SLIDER_OPEN.y value
A large negative HOFFSET_SLIDER_OPEN.z value
and along with some other thing I did/happened fixed my freeze problems.

Some nexus based builds don't have slider open/close lines.

Change the AOFFSET.x y and z values to your device to level it on a table. (check post 1)
I am not attaching the file itself to this post because of differences between windows and linux with text files, just to be safe. (Paragraphs get messed up)

Also using the calibration tool with the phone face down gives better results with z axis. (to be able to tap on calibrate, put your phone on the table and make it just go over the edge of the table and tap from underside)
We need some feedback from other people now. Devs are welcome to use this information to open up ways to fix g-sensor in kernel.
I am using mdeejay desire hd 3.4 build. These may be different in other builds. If you find out please share.

Freezes returned after reboot. I am trying to find out how refix again.

I AM ASKING EVERYBODY TO TELL
1) If they have the freezes with their default configuration with bubble/sensor app moving/walking etc.
2) If my values fix the freeezes
3) If their filenames etc is different
4) Please also write your build and kernel type/version/base winmo rom and radio

Example: (copy paste and edit in your post please)
Default configuration have freezes: YES
New values fix freezes: YES
Different files: NO
Build/Kernel: mdeejay desire hd 3.4 / huanyu #21 evo base miri WM6.5 (21916) v19.1 (3.14 base) 2.15.50 radio

This is not over yet, with feedback we might find exact long term fix for everyone.

EDIT: These values work with some people. If they don't work you, experiment with different values. Since the results are reflected in realtime for most builds (no reboot required) it is much easier. Also don't edit the file on windows pc, it may get messed up. Some builds auto update the values when sensor app is reopened/switched to.
IMPORTANT: Try to temprorarily change AOFFSET.x=90 and return to your app. When phone is on the table, your leveling bubble or pitch/roll must be way off. This way you can see if with your build changes are reflected in realtime or not. If not try restarting and give feedback please. (After that revert AOFFSET.x to 0 or other value your want to fix back orientation)


EDIT 2: My sensors seem to be working perfectly since I also calibrated the z-axis. (post 61 on page 7) I need confirmation on this.
The Following User Says Thank You to memin1857 For This Useful Post: [ View ] Gift memin1857 Ad-Free
Post Reply Subscribe to Thread

Guest Quick Reply (no urls or BBcode)
Message:
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes