Backing up the Blackberry 8100 on Linux with barry

About a week ago, I had a multi-level phone disaster. My mobile phone microphone and speaker died a drawn out and frustrating death, leaving the rest of my Blackberry 8100 perfectly functional. I then discovered that my Vonage VoIP (and failover for the mobile voicemail) had not been sending voicemail notifications for about two months. I only missed one consulting contract opportunity and a call from my tax consultant… The awesome voicemail-to-text transcription is still broken but the rest works now.

Fortunately,

  just bought a shiny new iPhone (the regret! the sadness that I was not as wise!) and loaned me his old Nokia. With the aid of the Nokia, I quickly convinced the T-Mobile support person that my phone was defective and they needed to send me a new one.

The new phone arrived after only about 5 days of struggling with an alien mobile phone. The problem: I want to backup and restore my Blackberry in Linux, after The Great Cell Phone Disaster of ’07 (in which I lost the 33 phone numbers that won me a bet with

over who had the most kernel hackers’ phone numbers).

I’m a pretty accomplished googler for random strange tools. I download the source and fix a missing ID or a bad return value on a regular basis. But backing up my Blackberry almost defeated me. Here’s the solution I finally ended up with.

1. Ignore the web backup sites. Not only was the Blackberry backup service cleverly hidden in all cases, but when I tried to install the client through my Blackberry web browser, I had one of three fabulous results: 404, 503, and client in zip format (which the Blackberry can’t deal with). Suspect bad (or malicious?) proxying on the first two; incompetence on the second.

2. Use the barry local backup tool for Linux:

http://netdirect.ca/software/packages/barry/

The .debs aren’t in any repository I know of, and some of the dependencies aren’t either. I couldn’t get the libopensync plugin installed without some serious gymnastics, so I left it. There was a lot of:

dpkg –install package
dpkg –remove package
apt-get install libwhatever
(repeat)

I’m not an accomplished dpkg person, so probably there’s an easier way to do that. There was a little detour in there to import some GPG key for a repo that previously hadn’t had one before I could update my package lists.

3. barry doesn’t like the Blackberry to be in mass storage mode. I run my own kernel with most everything compiled in, including the usb mass storage module. Facing a kernel recompile and reboot, I instead found a tidbit culled from the development mailing lists. Running bcharge in a particular way will reset it out of mass storage mode (breset won’t):

$ bcharge -o

4. Run the barrybackup GUI:

$ barrybackup

Click on the backup button. When it’s done, quit.

5. Hook up the new Blackberry and run bcharge -o again, then start barrybackup again. Click on restore. Then find your backup file, since your new device has a different PIN and it won’t automatically show it. The file is in ./barry/backup/<PIN>. There’s no confirmation window, so expect it to start restoring immediately. In my phone’s case, there was an error message about not being able to restore the timezone data but it happily kept going.

I thought several times of my friend Zach Brown the kernel hacker who always cackles “It just works!” at me from behind his PowerBook (which does NOT have Linux installed).

UPDATE: The Saga Continues!  T-Mobile had some issues with re-enabling my phone for the data service, and for a while I just had a pretty black sleek… PHONE.  I want my intarweb!  As seems usual of late, there’s no known reason why this happened, and the fix is to reset all the software involved without actually changing anything.