iPhone 6 Over Temperature after Replacing Battery

I just replaced the battery in my iPhone 6. When I attempted to power it up with the new battery, I was greeted with this ominous screen:

iphone_temperature_cool_down_en

which is strange, because there’s no way that it was too hot, since it was just booting up, and it wasn’t even warm in the room where I was doing the work. I was worried that maybe I had broken something during the battery swap, but luckily, it was just bad contact in the battery connector.  It turns out that there is a temperature sensor in the battery, and if it has a bad connection, then the iPhone will think that the battery is overheating. I tried pressing down on the battery connector, but that didn’t work. Next, I simply disconnected/reconnected the battery connector, and it booted up normally. Whew!

So, if you replace your iPhone battery, and it suddenly gets the over temperature warning screen, first check the battery connection. If the warning still won’t go away, but it goes away when you reconnect your old battery, then your new battery probably has a bad temperature sensor.

To replace the battery, I mostly followed the procedure in: iPhone 6 Battery Replacement. However, I slightly modified the procedure:

  1. To remove the screen, I simply attached a suction cup at the end of the screen near the button. Then, while pulling up on the suction cup just enough to make a gap between the bottom of the screen and the back, I slid a guitar pick into the gap, starting at the bottom, and working my way down the edges of the phone, pushing it in gently. You can feel the clips releasing as you push the guitar pick in, and the screen will start to pop out, clip by clip. In Step 6 of the iFixIt instructions, they don’t emphasize the need to release the clips. If you just pull up, you’ll probably damage some or all of them.
  2. I didn’t bother disconnecting the screen. In iFixIt’s instructions, they ask you to unscrew the screen connectors and completely remove the screen. Presumably, this is so that you don’t risk damaging the screen connector, lest you let it swivel back more than 90 degrees from the back. I didn’t bother disconnecting the screen, and instead, held it ajar with my left hand while doing everything else with my right hand. This is because the tiny connectors are very fragile in the iPhone, and I didn’t want to damage the screen connector when disconnecting it, or losing the screws (I had a very bad experience when I was trying to change the battery of my iPhone 4 a few years ago.. the replacement came with a connector that was very tight.. and when I tried to disconnect it, the whole socket broke off the PCB, rendering the iPhone useless).
  3. I don’t have a pentalobe screwdriver, and I don’t intend to buy one. I’ve successfully removed/replaced the screws at the bottom of several iPhones using a Xacto knife as a screwdriver. The tips of my #11 Xacto blades always break off, and the broken off tip fits perfectly into the pentalobe screws.

Now, I’m waiting for the replacement battery to charge up, to see if it’s any good. I always have trouble finding replacement batteries that actually work better than the broken old batteries that they replace. There are a lot of shady suppliers out there who sell used or low quality batteries. I used the free Battery Life app to check the charge cycle count:

IMG_6798

The vendor I bought the battery from claimed that it would have zero charge cycle count, and it has one, but that’s close enough, so I’ll let it slide for now. The capacity is also at 1752/1752, as expected. Of course, these stats could be faked, but at least they appear to be OK, which is some piece of mind. Only usage testing will reveal whether or not I managed to buy a good replacement battery, or another dud.

Update 20160804: So, it turns out that my phone was constantly running hot with the “hand picked” replacement battery I bought on Amazon. I highly recommend that anyone who replaces their battery on an iOS product check it with the free Battery Life app. I found out that the controller chip in the replacement battery was fake. The only stats that would change were the battery voltage and charge leve. The discharge current, temperature, capacity, and cycle count were fixed. After a month of using the battery, the Cycles were still 1! I contacted the seller, and they quickly refunded my money without asking me to send back the defective battery. Buyer beware!

Accuracy of Strava vs RunKeeper vs Pyle PSWGP405BK vs Garmin Forerunner 10

I went out for a hike today, with Strava and RunKeeper simultaneously running on my iPhone 4S, and the Pyle PSWGP405BK on my wrist.  Unfortunately, my wife had the Garmin Forerunner 10, so I have to use an old track, recorded last week, at approximately the same time of day. I know that it’s not an ideal comparison, but it will have to suffice for this article.  The route was in mountainous terrain, through a canyon … a much more challenging for a GPS than the flat route that I used in my last comparison.  Here’s RunKeeper’s take on the track: rk2 Strava’s take, running simultaneously on the iPhone with RunKeeper: strava Strava’s exported GPX file, imported to RunKeeper.com: stravaonrk What’s revealing is that given the same data, RunKeeper.com and Strava calculate essentially identical distances. This becomes important when we compare them to the Pyle. Strangely, RunKeeper.com shows a 13 second shorter duration, but identical average pace. The data downloaded from the Pyle and displayed in GPS Master are identical to what displayed on the watch: gpsmaster I used the Pyle’s included wireless heart rate monitor on this hike, and its connectivity was flawless during the entire recording.  I didn’t have to moisten the contacts in order to get a good reading, which was also nice. GPS Master shows my average heart rate was 121, and the max was 155.  The plots above are speed, altitude, and heart rate. The GPX file exported from GPS Master and uploaded to RunKeeper.com: pylerk A comparison table gleaned from the above data:

Distance (mi) Calories
Strava 3.7 N/A
Strava track on RunKeeper.com 3.71 600
RunKeeper 3.53 422
Pyle PSWGP405BK 3.27 526
Pyle PSWGP405BK track on RunKeeper.com 3.40 555

Once again, the Pyle PSWGP405BK and GPS Master displayed identical data, and the calculated distance was shorter than RunKeeper’s calculation using the Pyle’s exported GPX data.  I am convinced that the Pyle’s distance calculation is too conservative… 3.27mi vs 3.40mi calculated by RunKeeper.com on the same data.  Strava calculated 3.7 mi, which is too long, due to its poor filtering of the iPhone’s noisy data stream.  The Google Earth plots below will reveal more information.  Here is a Google Earth plot of Strava (green), RunKeeper (red), Pyle (blue), and Garmin FR10 (yellow) in the most challenging part of the track: all Strava (green) vs RunKeeper (red) stravark Viewing the track reveals why Strava calculated the longest distance.  Strava’s filtering algorithm is clearly inferior to RunKeeper’s in handling the iPhone’s poor quality location data stream. Pyle (blue) vs Garmin (yellow) fr10pyle Again, not an entirely valid comparison, since the Garmin track was recorded on a different outing, but it’s quite obvious that the Garmin outperforms the Pyle in accuracy.  The Garmin is the only device that was able to trace all of the switchbacks on the trail. Even in the less challenging parts of the track, the Pyle wanders a bit.  Still, the Pyle’s accuracy far exceeds that of the apps running on the iPhone. I am very disappointed that several reviewers said that the Pyle is very accurate.  Clearly, they didn’t do their homework.  The Pyle PSWGP405BK consistently calculates distances too short.  The Forerunner 10 kicks Pyle’s ass.  But the Pyle has a compass, navigation, and heart rate monitor for about the same price, and is not that bad, as long as you don’t mind the fact that it miscalculates distance, and have to use other software in order to extract the correct distances from its track. If you want to play with my data, you can download the tracks an view them in Google Earth yourself: eckml.zip Strava doesn’t export KML, but Google Earth can easily import its KML file.  I have also included full size image files of the screen shots I showed above.  In case you decide to compare the gory details of the tracks, when I got to the top of the winding trail above, I took a little break to fix my socks in a tree-covered area.  The FR10 track doesn’t show me deviating from the trail, because I didn’t take the detour during that outing.

Previous Related Post: Garmin Forerunner 10 vs Pyle PSWGP405BK

Next Related Post:  Accuracy of Pyle PSWGP405BK vs RunKeeper Revisited

Restoring AddressBook.sqlitedb to iPhone – A Simplified Procedure

In my previous article, I described how to restore contacts from a backup to an iPhone.  The infuriating thing about restoring AddressBook.sqlitedb to an iPhone is that one can’t just drop in a replacement file, because after you reboot, the new file gets overwritten with an empty one.  I traced the overwriting of the addressbook to a process called dataaccessd.  This process can’t be killed easily, because launchd will automatically restart it if it dies.  After some testing, I have now devised a procedure which is simpler than the one described in my previous article:

This procedure assumes that you have already obtained a copy of AddressBook.sqlitedb which contains the contacts you want to restore.

1. Using iFunBox, navigate to Raw File System/Library/LaunchDaemons and copy com.apple.AddressBook.plist and com.apple.dataaccess.dataaccessd.plist to your computer.

2. Using iFunBox, delete com.apple.AddressBook.plist and com.apple.dataaccess.dataaccessd.plist from your iPhone.

3. Power off and restart your iPhone

4. Using iFunBox, copy your AddressBook.sqlitedb into the iPhone at Raw File System/var/mobile/Library/AddressBook

5. Using iFunBox, copy the com.apple.AddressBook.plist and com.apple.dataaccess.dataaccessd.plist from your computer back to the Raw File System/Library/LaunchDaemons folder in your iPhone.

6. Power off and restart the iPhone, and enjoy your restored contacts.

 

Related articles:

How to Restore Lost Contacts to Your iPhone

How to Fix a Broken GSM Signal Strength Meter in iOS 4.3.2

After using Sn0wBreeze 2.6 to update my iPhone from iOS 4.0.2 to 4.3.2, my GSM signal strength meter completely stopped working.  No matter how strong my cellular signal was, it would display no signal bars.  I suspected that the problem was that Sn0wbreeze preserved my 01.59.00 baseband from iOS 4.0.2, and that the old baseband was somehow incompatible with the signal strength meter in iOS 4.3.2.  I googled around, and sure enough, lots of people experiencing broken signal strength meters when using older basebands with iOS 4.3.x.  Fortunately, there’s an easy fix.  Installing djayb6‘s version of ultrasn0w fixer restores the functionality of the signal strength meter.  Hackstor has detailed instructions for installing ultrasn0w fixer via Cydia.  I’m not sure if the unlock works, because I don’t have another carrier’s SIM card to try, but I’m happy that I’m my signal strength meter is working again with my iOS 4.3.2/baseband 01.59.00 combination.

How to Restore Lost Contacts to Your iPhone

This article will tell you how to restore contacts which were lost/erased from iPhone, due to iTunes trashing them during a sync, especially after a firmware upgrade.  Restoration of your contacts is possible only if you either have an iTunes backup, or a copy of your AddressBook.sqlitedb.  It is particularly useful for people who lost their contacts after an upgrade to iOS 4.3.2, because iTunes refuses/fails to restore the contacts from a backup.  If you want to skip my rambling discourse, you can cut to the chase, and skip directly to the step-by-step instructions.

I’m always wary of updating my iPhone, because I’ve had many many problems with that over the years. But when the untethered jailbreak for iOS 4.3.2 came out this week, I felt it was time to finally upgrade from iOS 4.0.2. While the iPhone Dev Team has released redsn0w 0.9.6 rc 14, for this purpose, this tool isn’t appropriate for iPhone users who want to retain carrier unlocks, because it allows 4.3.2’s new baseband to be installed, for which there currently is no unlock.  In order to keep your phone unlocked, you need to use a tool which prevents your baseband from getting updated.  Luckily, iH8Sn0w has released Sn0wbreeze 2.6, which preserves your old baseband, thus allowing you to keep your unlock.

It’s important to make a backup of your iPhone via iTunes before doing any firmware updates.  Also, it’s a good idea to use iTunes to Transfer Purchases from your iPhone back to your computer.  For once, update went smoothly, and I thought I got off easy this time, because the phone booted right up after the Sn0wBreeze was done.  Little did I know that things are not always as they first appear.

The next step was to restore the phone from a backup that I’d made just prior to doing the firmware upgrade.  iTunes finished the restore without any complaints, but  when my phone rebooted, the first thing I noticed was that most of my apps were missing.  That was OK, I was able reinstall the apps via iTunes (and then had waste 1 hour rearranging my 200 apps back into folders).  When I went to use the phone, however, I discovered that all of my contacts were gone! Remember, I backed up my iPhone before doing the upgrade, so why didn’t %#$  iTunes restore my backed up contacts??? Ack! At this point, I knew that there was a high probability that I would be wasting a good part of my day getting my contacts back into the iPhone.

The contacts in iOS are stored in a file on the iPhone at /var/mobile/Library/AddressBook/AddressBook.sqlitedb.  The first step was to find where this file was backed up on my PC, and to see if it had my lost contacts in it.  I started searching my computer for the iTunes backup, and found a bunch of subfolders in C:\Users\<MyUserName>\AppData\Roaming\Apple Computer\MobileSync\Backup (Note: I’m using Windows 7).  Sure enough, there was a folder named 905279ef2efbc76bc402c0e411fc356d75ed95b0 with a timestamp around the time that I made the last backup.  Inside the folder are multitudes of files with hexadecimal filenames, as well as some .plist and .mdbx files.  Manifest.mbdb appears to be a a cross reference of the filenames to their path on the iPhone, but I didn’t want to waste time trying to find a program to decode it, so I simply opened up a Command Prompt, and grepped for a string that is unique to AddressBook.sqlitedb:

grep UpdatePersonLinkUponPersonUnlink *
Binary file 31bb7ba8914766d4ba40d6dfb6113c8b614be442 matches

Bingo!  I opened up 31bb7ba8914766d4ba40d6dfb6113c8b614be442 in GnuEmacs, and sure enough, it was an sqlite database, contained my the lost contacts from address book!  I’m curious to know if the same filename always maps to AddressBook.sqlitedb, or if the filename is random, so if any readers can verify this, please leave a comment below.  OK, it should be a piece of cake to restore the file, right?  First, I tried to fool iTunes into restoring the file for me.  I created a new backup via iTunes, and copied the old 31bb7ba8914766d4ba40d6dfb6113c8b614be442 into it and then tried to restore this hacked backup.  No dice.  iTunes noticed something was different, and complained that it couldn’t restore some of the files.

OK, how about renaming 31bb7ba8914766d4ba40d6dfb6113c8b614be442 to AddressBook.sqlitedb and then copying it to the proper location on the iPhone? Should be easy, right?  I downloaded the latest version of iFunBox, a great free utility that, among its many talents, allows you to drag and drop files in and out of any directory of a jailbroken iPhone.  Using iFunBox, I navigated to /var/mobile/Library/AddressBook, copied the AddressBook.sqlitedb from my PC over the file that was already in my iPhone.  Then, I rebooted the iPhone…. Still no contacts!  When I examined the contents of the iPhone again with iFunBox, I found that my new file had been overwritten.  The problem is that when you shut down the iPhone, it writes out the contacts from RAM, overwriting your substitute AddressBook.sqlitedb before it has a chance to read it!  How annoying!

I spent the next few hours trying various methods to get around the problem.   The most straightforward way would be to get the iPhone to crash, so that it wouldn’t have the chance to overwrite my AddressBook.sqlitedb, but I couldn’t figure out how to do that.  I tried using ssh to log into the iPhone and kill -9 random processes.  That didn’t work, but in the process, I found that a program that refreshes the AddressBook.sqlitedb:  /System/Library/PrivateFrameworks/DataAccess.framework.  The problem is, if you kill it, it immediately restarts before you have a chance to sneak your new file in. So how can one prevent that damn program from overwriting the new address book??  I tried changing the file access to readonly … it changes it back to read/write.  The process runs as a user named mobile, so I tried changing the file owner from mobile to root to prevent it from overwriting the file.  It just changes the owner back to mobile!  How frustrating!  Finally, I happened on the combination that works:  change the file owner to root, and disallow all access to the file! Eureka contacts restored!

Step by Step Procedure

Note:  This procedure requires a jailbroken iPhone.  This topic is too complicated to discuss here, and there are many tools available, but Sn0wbreeze is what I used time time round.

1. Extract AddressBook.sqlitedb from your iTunes backup

New Method:

A user has brought to my attention a cross platform program (Windows/OSX/Linux) which simplifies the extraction of AddressBook.sqlitedb from your iTunes backup. Download and launch iTunes Backup Extractor on your PC.  Click the Expert Mode button, and Navigate to and click the checkbox next to Library->AddressBook->AddressBook.sqlitedb, and click the Extract Selected button to copy the file to your PC.

Old Method:

If you already have a backup copy of AddressBook.sqlitedb from another source, skip this step. grep is a Unix command which doesn’t come with Windows.  If you don’t have a copy of it, you can download and install Gnu grep.  Find the directory containing the latest backup of your iPhone using the Windows Explorer:

Windows 7/Vista: c:\Users\USERNAME\AppData\Roaming\Apple Computer\MobileSync\Backup
Other versions of Windows: C:\Documents and Settings\USERNAME\Application Data\Apple Computer\MobileSync\Backup

Substitute your user name for USERNAME.  Find the newest subdirectory.  This is your latest backup.  Open up a Command (DOS) Prompt, and cd to the latest backup directory.  Find the file containing the backup of AddressBook.sqlitedb:

grep UpdatePersonLinkUponPersonUnlink *
Binary file 31bb7ba8914766d4ba40d6dfb6113c8b614be442 matches

Using Windows Explorer, copy the found file (in my case, it was named 31bb7ba8914766d4ba40d6dfb6113c8b614be442) and rename it to AddressBook.sqlitedb.

 

(Optional) If you want to verify the contacts before proceeding, you can view the contents of AddressBook.sqlitedb by using SQLite Database Browser.  Load AddressBook.sqlitedb into SQLite Database Browser, and select the table ABPerson from the Browse Data tab to see what names are contained in it.

Update 2011/05/19:  I have devised a simplified procedure which supercedes the remaining steps below: Restoring AddressBook.sqlitedb to iPhone – A Simplified Procedure

2. Install OpenSSH

Use Cydia to install OpenSSH on your iPhone.  You can find it by using Cydia’s search function.

3. ssh into your iPhone

Using an appropriate ssh client on your PC (I used PuTTY), ssh into your iPhone.  Your iPhone must be connected to the same WiFi network as your PC to do this.  To find your iPhone’s IP number,  go to Settings->Wi-Fi on the iPhone, and tap on the blue circled arrow next to the network you’re connected to.  Log in to your iPhone as user root, password alpine.

4. Copy your replacement AddressBook.sqlitedb to the iPhone

Download iFunBox and launch it.  Navigate to Raw File System->var->mobile->Library->AddressBook.  Drag and drop your replacement AddressBook.sqlitedb onto iFunBox to copy it to the iPhone.

5.  Change file owner and access of AddressBook.sqlitedb on the iPhone

Via ssh, type the following into the iPhone:

cd /var/mobile/Library/AddressBook
chown root AddressBook.sqlitedb
chmod 0 AddressBook.sqlitedb

Note:  the ‘o’ in “chmod o …” above is the number zero.

6. Reboot the iPhone and restore AddressBook.sqlitedb’s file attributes

Restart your iPhone.  It will act strangely because it can’t access your AddressBook.sqlitedb.  Mine was kept cycling from the boot up screen to the lock screen over and over again, and it was impossible to operate it.  Don’t worry, you can still ssh into it.  From your PC, ssh back into the iPhone and type the following commands:

cd /var/mobile/Library/AddressBook
chown mobile AddressBook.sqlitedb
chmod 644 AddressBook.sqlitedb
reboot

Your iPhone will reboot, and your contacts will be restored!  It’s a good idea to disable ssh when you’re done, or change the root password to prevent random hackers from hacking into your phone.

 

Related Articles:

Restoring AddressBook.sqlitedb to iPhone – A Simplified Procedure