Jump to content

1% driver for omnia here


Guest kabkab

Recommended Posts

Guest kabkab

original driver taken from DXID1 firmware and patched to show battery capacity by 1%.

however, you never got exact value, you'll always got "somethin near".

also, battery controller return very chaotic values, so you always get "a bit up" and "a bit down" values during high load of device.

- All, what you doing - you doing at you own RISK!

- Make backup before installing

Samsung i900

Install:

1. Install developer certificates (attached)

2. Download zylonite_battdrvr.zip

3. Copy (with Resco File Explorer) attached zylonite_battery.dll to you \windows\ directory and overwrite original file

3. Reboot (Soft reset)

Remove:

1. Rename \windows\zylonite_battery.dll to anything else (for example to 1.dll)

2. Reboot (Soft reset). Original file will be recovered from you ROM

3. Delete renamed file (1.dll)

Samsung i910

Installation:

1. install developer certificates

2. verify, that size of \windows\zylonite_battery.dll is 43520 bytes (if you have another size - sorry! or continue at your own risk)

3. backup your copy of \windows\zylonite_battery.dll to somethin (for example zylonite_battery.dll.org)

4. download zylonite_battdrvr_i910.zip

5. copy patched driver (64 or 256 - details below)

6. reboot (Soft Reset)

Deinstallation:

1. Rename installed patched driver to something (like 1.dll)

2. Restore you backup (you should make backup at step 3 of installation!!!)

3. Soft reset

4. Delete renamed patched driver.

Difference between 64 and 256.

This is values used to calculate average voltage value (in original driver only 15 values used).

So, in case of 64 you got more accuracy but more chaotic jumping up and down during high load of device.

In case of 256 you got less accuracy, but less jumping, so % value is more stable.

Choose yourself!

Btw, anyway, after SoftReset you have some jumping while values (64 or 256) is collected.

Also, after charging (when you disconnect device) you have grow (jumping) % value for some time - because device driver try to "compensate" charging values. It's ok, in 2-3 min it's stop grow and start show real value.

Same happen when you connect you device and start charging.

Post you feedback! :-)

Certs.cab

zylonite_battdrvr.zip

zylonite_battdrvr_i910.zip

Edited by kabkab
Link to comment
Share on other sites

Guest WolfpackInCO

just did this on my Omnia 910 and I can confirm it to work! Awesome. Yet another thing that should have been built into the original rom.

For those wondering how to see it in the new increments, if you have MS3 the battery widget will display it. There's also many taskbar add-ons on XDA that should work as well.

Link to comment
Share on other sites

Guest dwallersv
Very nice.

Would you be willing to patch the i910 driver as well?

Don't need to... the posted hack works on the 910 (verified personally).

Now... where was that registry entry for setting the low-batt threshold? I want to set mine to 25% now that it's possible.

Edited by dwallersv
Link to comment
Share on other sites

Guest blazingwolf
Don't need to... the posted hack works on the 910 (verified personally).

Now... where was that registry entry for setting the low-batt threshold? I want to set mine to 25% now that it's possible.

You verified how?

Link to comment
Share on other sites

Guest dwallersv
You verified how?

Installed it. MS3 battery widget showed 82% when I rebooted, dropped to 81%, then 80%.

EDIT: Spoke too soon... Works after reboot, but as soon as the value drops to a mod(20) (the old increments) value, it stays there.

First reboot, as I said above, went 82->81->80, then stuck. Ran some power hungry stuff, didn't go down any more. Rebooted, came up at 67%. ticked down from there until it hit 60%, then stayed put again.

So it's sort of working. Something else in the OS pays attention when it hits a multiple of 20, and then messes with it.

Also, Gregoris taskbar battery icon doesn't handle non-mod(20) values, so the little percentage shown over the battery graphic is incomprehensible pixels of junk for all other values.

After a brief charge, battery is showing 70% right now in MS3 widget. S2U2 digital battery icon in the menubar also works, and shows the 1% increments (also showing 70% right now).

EDIT: Just plugged the phone in, and found some interesting (and exciting!) results: MS3 battery widget and S2U2 digital battery icon show the charge level of the battery while charging!!! Before installing this hack, everything always showed 100% while the phone was plugged in. Now I'm getting the actual charge state of the battery.

What's more, S2U2 shows this in green, with a fade-blinking of the value, indicating that it's charging. Obviously functionality that is a part of S2U2 that worked on other phones, and now does on the Omnia with this hacked driver. Grigoris taskbar icon shows 100% when plugged in, just like it always did. Not surprised, as he only modified some icons; what's displayed there is controlled by WM.

Also, doesn't seem to be getting stuck on 20% increments, at least while charging. Ticked up through the seventies to 80, and then right on past. Currently showing 91% charge and rising (slowly).

I'll have to experiment again with discharge to see if there is some sort of "catch" on the 20% increments for real, or if it was just a fluke.

EDIT: Another observation. The power button is glowing green now during charge when it's not fully charged. Used to glow red, then turn green on full charge. Hope this doesn't mean the LiIon charging circuit is being screwed up some way, and this is strictly a software issue. I'll know when I get the charge complete popup, or not.

EDIT: More... it won't stay asleep (suspend) wihle charging with this change. This is new behavior. Doesn't seem to have that problem while discharging, which is a relief and means this hack is still usable.

It will increase charge times, though, without being able to put the phone to sleep while it's juicing up.

Edited by dwallersv
Link to comment
Share on other sites

Guest WolfpackInCO
Installed it. MS3 battery widget showed 82% when I rebooted, dropped to 81%, then 80%.

Actually I'm now not sure it works so well on my i910. It's jumping all over the board when I plug then un-plug. After partial charging then unplugging, it continues to climb up. There's a definite delay in response time. The display under Settings / Power remains steady, however.

Edit - mine also won't allow the screen to shut off either, as reported below.

Edited by WolfpackInCO
Link to comment
Share on other sites

Guest jmart518

Installed and the battery part works nice, however it will not allow the screen to shut off. It can dim, but once it shuts off, it is immediatly turned back on (about 2 sec). Any ideas on how to fix this?

Update:

Only when plugged in and I manually turn off the screen it stays off! When it is on battery power, keeps waking up even with a manual screen shut off.

Edited by jmart518
Link to comment
Share on other sites

Guest dwallersv
Installed and the battery part works nice, however it will not allow the screen to shut off. It can dim, but once it shuts off, it is immediatly turned back on (about 2 sec). Any ideas on how to fix this?

Update:

Only when plugged in and I manually turn off the screen it stays off! When it is on battery power, keeps waking up even with a manual screen shut off.

See post above -- I'm having the exact opposite situation, which I can live with.

@WolfpackInCO: That jumping around of the value is actually a virtue, not a bug. It's simply showing you the actual battery voltage, which will swing around a bit when transitioning from having a charge voltage applied vs. a load. Nothing to worry about there -- it stabilizes after a minute or so. There's obviously some sort of moving-window averaging going on in the driver.

Link to comment
Share on other sites

Guest jmart518

Yeah, the jumping around and delay time is ok with me. I am just worried about battery life with the constant waking up.

Link to comment
Share on other sites

Guest kabkab

glad to hear, that it's working (at least on some devices! :) ).

In general: samsung battery driver got some values from battery and perform some internal calculations.

Based on this calculations driver perform some actions (like turn off backlight when battery charge less than 10%).

All this things did not touched!!! All remain the same!!!

I do only one thing - at exit of the function guys from samsung insert his 10% function, like

if (value>criteria1) - return 100%

if (value>criteria2) - return 90%

and so on...

This function is used only by OS to return this value (percentage) to programs, which request them (like indicator in top bar, widget in SPB MS3 and so on).

I patch this function and actially split criteria's to smaller step and return 1% instead of 10%.

I checked twice on my own i900 (original english firmware DXID1) - it's working pretty well and i have no bugs, like dimming screen, or green button on top of device or freeze on some value (except than it stands at 100% after full charge a lot of time).

So, i see only one bug - fellas, that have some problems may be have not DXID1 firmware and not same driver. May be other functions of DXID1 driver did not work like functions in your driver. So you have some bugs.

If you need - u can check and told you size of mine "unpatched" driver - so you can "match" it by size.

Sorry, but i cannot check and patch drivers in every firmware which you are using.

Same for i910 - i cannot check (and will not do "BLIND" patch without testing), because i did not have such device. So you are use this driver at you own risk (as anyone else, btw). <_<

Edited by kabkab
Link to comment
Share on other sites

Guest kabkab
Would you be willing to patch the i910 driver as well?

i don't wanna make "blind" patch.

btw, as i see, you driver have 5% step. it is not enough for you? :-)

ps. oops, something strage, some 20% step found... complex driver and it's really differ from i900 driver!!

Link to comment
Share on other sites

Guest dwallersv

BTW folks, note that the battery is not 100% charged when percentage reported by this new driver is 100%!!

This has to do with the charging algorithm for Li batteries, and the manner in which charge level is determined.

Charge level is a simple formula that is based solely on the battery voltage level. When, under charge, the voltage reads 4.2V, that is considered 100%. Capacity under load generally assumes around 3.8-4.0V as 100%, but again this is an approximation that is worse the greater the load.

Accurate charge level under charge and under load are more complex factors of both voltage and current measurements. During charge, the charge circuit first applies whatevever voltage necessary to provide a constant current to the battery until the voltage reaches 4.2V. Then the charger switches over to a constant voltage process, while the battery continues to take and store power as the current gradually falls off. When the current falls below C/15*, thereabouts, the battery is considered fully charged.

Li batteries must not be charged higher than 4.235/cell, or they can ignite and explode. This is why 4.2V is the standard operating value for full charge. When an Li cell reaches 4.2V it is about 80% of full capacity, even though a simple voltage measure will consider that "100%". If the charging process is stopped at this point and a moderate load applied (translation: unplug the phone, now running on battery), the charge level will drop immediately and then stabilize in the neighborhood of 100%.

If the charge is allowed to complete, pumping in more electrons at 4.2V until the current drops off to the cutoff value, then power is removed, it will stay at 100% or close to it.

This depends on the load current. Higher loads will result in lower voltage across the battery due to internal resistance of the battery, even though no appreciable charge has been extracted. This is why current must be accounted for in accurately calculating remaining capacity.

So, for either charging, or discharging, and accurate measure of battery charge requires accounting for both voltage and current for the cell, and the formula for each state (charge, discharge) are different. Most battery state measurements are based on voltage only, so the figures have substantial error-bars. It's really nutty, IMO, since Li charging circuits are all "smart" these days, monitoring voltage and current to manage charging safely. There is no good reason these measurements couldn't be made easily available, or better yet, add the minor circuitry necessary to have the charge monitor spit out a charge level on either charge or discharge that would be accurate.

Link to comment
Share on other sites

Guest kabkab
Charge level is a simple formula that is based solely on the battery voltage level.

yes, you are 100% right.

but samsung driver did not provide in any form current (which depends on battery load and so on).

so you NEVER got real values (it's just cannot be calculated)!

Link to comment
Share on other sites

Guest dwallersv
i910 BLIND PATCH - BE CAREFUL AND MAKE BACKUP!!!

Installation:

1. install developer certificates from #1 post

2. verify, that size of \windows\zylonite_battery.dll is 43520 bytes (if you have another size - sorry! or continue at your own risk)

3. backup your copy of \windows\zylonite_battery.dll to somethin (for example zylonite_battery.dll.org)

4. copy patched driver

5. reboot

Deinstallation:

1. Rename installed patched driver to somethin

2. Restore you backup (you should make backup at step 3 of installation!!!)

3. Soft reset

4. Delete renamed patched driver.

zylonite_battdrvr.zip

kabkab, you da man!!! Installed it, some brief testing shows it working, and the quirks I found on the 910 with your 900 version are gone -- power light is red during charging like it should be, phone suspends just fine either charging or discharging. In short, everything seems to be operating normally except I'm getting 1% increments now. Thank you so much. I think we can forget what we were discussing in private messages.

One comment on the accuracy of the percentage values: I suspect they are reasonably accurate during discharge. I have no factual basis for that, but it makes sense to me that they would tune the voltage-based algorithm to represent a true remaining charge as close as possible given the idle current draw when then device is awake (i.e. when you are simply looking at it to see the battery charge, for example).

Start getting the device busy, and the percentage becomes less accurate -- reading lower than actual remaining charge. During charging the indicator is complete junk, reading well above the actual charge in the battery, and not very useful to determine charge level.

Accurate to within 1% on discharge? No way. But, I'll bet far more accurate than +/-20%, the original accuracy. Within 5%? I'd take that bet...

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.