[Desire General] Tsjoklat:
You should do this procedure every time you replace the battery (tested working on HTC Desire GSM):

Advanced Battery Calibration (tested and verified on Oxygen + bravoGSM)

Intro:

This will actually calibrate your battery, unlike other methods out there. After calibration, empty will be at 0% not some arbitrary value like 18%. For added comfort, you can perform steps 1-5 until you are comfortable with the routine; on the first run stop at step 5, don’t plug in and watch where your battery dies to give you an idea of the time window available – then on the next run you will know when to plug in. This ensures a smooth and error-free routine. You don’t actually need to do this since the app will tell you when to plug in. Once you’ve done a dry run, plug in, charge for a few minutes until the phone doesn’t shut off when you disconnect the charger, and repeat the process.

Caveats:

When entering the values for the battery registers, pay particular attention that the entered values are the correct ones which are shown below. Failure to enter these values correctly could result in your battery being permanently bricked. You have been warned!

Pre-requisites:

• _thalamus kernel >= 2.6.35.14_r2 RC1 or CyanogenMod kernel.

• A functioning brain (ask your parents about this)

• Patience

• Jon Richards’ “Nexus One Battery Calibrator” application a.k.a. NOBCAP (available on android market), installed

• An almost dead battery (that is mis-reporting its capacity) with what you think is about ~2% remaining – i.e. if your battery dies at 18%, get ready at about 20%

• AC battery charger at the ready

Process:

1. Set your screen time-out to 10 minutes.

2. Run NOBCAP

a. If General tab displays fields but no values, kernel is wrong, see pre-requisites

b. If General tab displays fields filled with values, kernel is right, enable airplane mode on the phone

3. In NOBCAP, menu --> settings -->

a. Check: GPS polling, ACR adjustment, advanced options

b. UNcheck: Airplane and Wake lock. Go back.

4. Go to LearnPrep tab

a. Set age: 100% --> save

b. For

i. OEM batteries ; Set mAh: 1452 --> save

ii. Aftermarket batteries ; Set mAh: 1650 --> save

c. Register: 0x66

Value: a4 --> save

d. Register: 0x65

Value: 06 --> save

e. Register: 0x10

Value: 04 --> save

5. Go to LearnMode tab

6. Scroll down and Set Detect Learn Mode to ON.

7. When Real-Time Voltage (µV) <= 3201000, i.e. when the battery is “empty”, the app will prompt you to quickly plug in your charger.

8. If you were successful here, the learn-flag LEARNF will now be lit and your battery charging.

9. LYPTFA - Leave your phone the .... alone.

10. When charging completes, the CHGTF flag will be lit, Battery Status Register 0x81 displayed, your battery calibrated.

11. Unplug. Reboot.

Supplementary:

The application monitors the battery chip registers. As charging nears completion the pulse current (mA) sent to the battery gradually diminishes in amplitude. This will tail off at about -20mA which the battery interprets as “charging complete” and the battery registers are stamped with its newly determined capacity values. Activating the screen, or any function which subsequently draws current pulls the charge current above -20mA and which the battery detects as charge complete – this is why you should LYPTFA. It’s okay to set an extended screen-timeout and occasionally touch the screen to reset the screen-off timer (i.e. keep the screen on) to keep an eye on charging without affecting charge current.

As an additional experiment, install JuicePlotter, run it once, and enable graphing. This will also monitor dis/charge cycles and give you an idea of the memory effect that the battery suffers from.