How to Sync your Blackberry in Linux
UPDATES (Jan 2, 2007):
I am now editing the original post to reflect changes in software and also add tips on how to sync with Google Calendar. (ScheduleWorld now has built-in Google Calendar support, so this makes it easy to synchronize your address book and calendar between your Blackberry, Evolution, and Google Calendar).
Also, I haven't been able to check it out yet, but check out BCharge to charge your Blackberry with Linux!
Ok, I'll admit, I used the title of the post to grab your attention. But don't worry! I'm not lying about anything here!
Just a few quick disclaimers before we get started:
0. I'm relatively new to linux, so bear with me here if I sound like a newbie. However, I had the balls to jump right into it and try lots of different things, so I hope you can appreciate that. Trust me, I spent many many hours of trial and error to figure this solution out. I think I'm going a little crazy, actually. The fact that I started this list with the number 0 should tell you something...
1. I didn't test this setup with anything else besides the stuff I had access to. In other words, I only know that this setup works on the Blackberry 7100t phone (although I imagine it would work for any 4.0.2 OS-enabled BB device) and it works with Evolution 2.4.1 (default with Ubuntu 5.10 Breezy Badger).
2. Don't expect a 100% sync. Everyone and their mother knows that Blackberry support on Linux is barely existant. Sure, there are a small handful of projects in development (infinite development, in most cases...sigh, vaporware). But for the most part there's not much we can do.
What I managed to figure out:
UPDATE: I am currently syncing both my address book and my calendar with ScheduleWorld. This means that I am syncing them with my Evolution client, but thanks to ScheduleWorld's new built-in Google Calendar sync, I am also syncing with Google Calendar! How sweet is that?
How to Sync your Blackberry in Linux
Things you'll need:- Your Blackberry device running at least the 4.1 OS
- A Windows install (on your box or your grandmother's, doesn't matter) with Blackberry Desktop Software installed and the USB cable. For all you linux uber-zealots, sorry guys, I know I'm making you use Windows here...I dunno, hold your breath or something :rolleyes:
- Evolution 2.4.1 Note: I'm not sure whether or not any older/newer versions will work, I would imagine they would...it mostly depends on the next piece of software, which is:
- SyncEvolution 0.5 (formerly known as Sync4jEvolution): Probably the only opensource solution for integrating Evolution with SyncML. I'm sorry, but I gotta say...that's kinda sad. I guess it works though. See the tutorial below.
- An account with ScheduleWorld: These guys are pretty cool. Their service is free and it actually works. They even have a nice web-based interface for you to mess with. Anyways, if you want to set up your own Sync4j server, be my guest...I tried it but decided to go with the ScheduleWorld route instead (was having silly networking issues that I didn't feel like resolving).
- Funambol Blackberry Client - UPDATE: The latest Funambol Blackberry client supports a lot more than the previous clients did! I highly suggest you upgrade your Blackberry device to at least OS 4.1 (required, visit website of your phone provider) and use this client.
- Patience. Seriously. Not only does this whole process take a while, but the syncing itself is pretty slow.
What to do:
Step 1 - Backup:
Boot into Windows (or shove grandma aside) and backup all your Blackberry data. I'm not going to go over how to do that here because I'm assuming most of you Blackberry users know how to do this (and if not, google it or check out the bb website, it's not hard).
Once you do that, get back into Ubuntu (or whatever distro you use...I guess this solution should work in all Linux distros? Anyone wanna check for me?) and go into your Home folder. Unhide all them fancy .folders (ctrl+H in ubuntu) and look for the .evolution folder. Make a copy of it elsewhere (or go into it and backup whatever contents you want...I'm paranoid so I just back everything up).
Step 2 - Set up an account with ScheduleWorld:
What you're going to need here is to change your password (by default they email you a numerical password when you sign up, I guess you could keep it the same if you wanted to) and also take note of the "account" number, which is listed on the preference page as "12345@Scheduleworld.com" (where 12345 is going to be your number). Write this down somewhere because you are going to need it.
Step 3 - Setup SyncEvolution:
UPDATE: A lot of people were having trouble installing SyncEvolution. The good news is, SyncEvolution now has pre-compiled binaries on their website, and better instructions on how to install it.
Also, ScheduleWorld configuration files are included by default (you'll have to copy them over from the "etc" directory in the source package...follow these instructions)- Open the extracted folder for syncevolution and find the "etc" directory. Inside you'll find another directory called scheduleworld_1. Copy this to your /home/.sync4j/evolution directory (so that it becomes /home/.sync4j/evolution/scheduleworld_1)
- Open this file. You should see a folder called spds. Open that too.
- Now we have two folders, sources and syncml. Open the syncml folder first. Notice the config.txt file? Open it.
- Edit this file as follows: Replace line 5 with
Code:
syncURL = http://sync.scheduleworld.com/funambol/ds
username = (your scheduleworld #)
password = (your password)
If you want, you can also change the "maxlogdirs" variable to some number, the details on that is explained in the file itself. - Now save this file, and back up to the spds directory. This time open the sources folder and open the config files in the address and calendar folders. You can update the one in the todo folder if you want, but keep in mind that your Blackberry device won't support the todo list as of now. For all of the files, the only change that you really need to make here is:
Code:
# picks one of Evolution's data sources:
# enter either the name or the full URL
evolutionsource = Personal
Note: "Personal" is the default name for all the databases in Evolution...at least, it was in mine. If yours is different, replace it with whatever you call your contacts list/calendar. Save the files once you're done editing them. - Now it's time to attempt the first syncs. Open up a terminal and type in the following command to sync your addressbook:
Code:
syncevolution scheduleworld_1 addressbook
And of course, replace "addressbook" with "calendar" to sync the calendar. Be patient, as this could take some time to sync depending on how much information you have, and sometimes it looks like it's just frozen. Give it time. - Optional: Make a cronjob to have this done automatically at a certain time interval. Google "crontab" and you'll figure that out.
Step 4 - Setup your Blackberry:
Although there are a few bugs with the new Funambol client (noted in the readmes in the client zip files), the latest beta version works way better than the last one. However, initial sync will be very slow, so I recommend you do this overnight.
Plug your BB into your windows boot and install the Sync4j client using the Application loader (again, I won't explain this in detail because if you have a BB you probably know how to do this, and if not, hit up the BB website).
Once the client is installed, open it up and click your wheel in, and go to Configuration.
Fill out the information as follows:
(See ScheduleWorld Funambol Client information in the Preferences Panel of Scheduleworld for info)
Save this configuration and exit the client. Then go back into the client and click your wheel in and synchronize! And maybe go grab a coffee while it happens...:whistle:
-NinjitsuStylee
UPDATE: One additional thing...if you ever get an error during sync that says something like "max connections open", just give your device a hard reboot (aka take the battery out and stick it back in). I'm not 100% sure why this error comes up but it has something to do with the way your network provider handles data.
Re: How to Sync your Blackberry in Linux
this is awesome.. i'm going to try this tonight..
Thanks for the post!
Matt
Re: How to Sync your Blackberry in Linux
Sounds good, drop a reply if you have any problems or have any questions, I've subscribed to the thread.
Re: How to Sync your Blackberry in Linux
Hi,
I don't own a Blackberry, but I know of OpenSync which also implements SyncML.
See http://www.in.fh-merseburg.de/~jahn/ for Ubuntu (Dapper Drake) packages.
Best regards,
Whoopie
Re: How to Sync your Blackberry in Linux
I actually looked into OpenSync. I'm not sure how well it'll work with Blackberry, but it's a relatively new(ish) development. I might look into it in the future if RIM decides to be more evil :(
Re: How to Sync your Blackberry in Linux
I got an error when I tried to install, during the .configure stage, here is the output:
./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... no
configure: configuring the client library
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... no
checking for g++... no
checking for c++... no
checking for gpp... no
checking for aCC... no
checking for CC... no
checking for cxx... no
checking for cc++... no
checking for cl... no
checking for FCC... no
checking for KCC... no
checking for RCC... no
checking for xlC_r... no
checking for xlC... no
checking for C++ compiler default output file name... configure: error: C++ compiler cannot create executables
See `config.log' for more details.
configure: error: configuring client library failed
roshan@roshan-laptop:~/syncevolution-0.3$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... no
configure: configuring the client library
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... no
checking for g++... no
checking for c++... no
checking for gpp... no
checking for aCC... no
checking for CC... no
checking for cxx... no
checking for cc++... no
checking for cl... no
checking for FCC... no
checking for KCC... no
checking for RCC... no
checking for xlC_r... no
checking for xlC... no
checking for C++ compiler default output file name... configure: error: C++ compiler cannot create executables
See `config.log' for more details.
configure: error: configuring client library failed
Thanks for the help.
Re: How to Sync your Blackberry in Linux
Can you post the detailed error from the config.log?
It looks like your gcc (the C++ compiler) isn't properly installed...and if it is, I bet it's a permissions error.
Make sure you've got proper execute permissions on your media.....
(if you're clueless, ask and I shall explain more)
Re: How to Sync your Blackberry in Linux
First, thanks for responding and being so helpful. I am running everything as root, so I don't think it is a permissions thing.
The contents of config.log:
Code:
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by configure, which was
generated by GNU Autoconf 2.59. Invocation command line was
$ ./configure
## --------- ##
## Platform. ##
## --------- ##
hostname = roshan-laptop
uname -m = i686
uname -r = 2.6.15-26-686
uname -s = Linux
uname -v = #1 SMP PREEMPT Sat Jul 22 12:10:30 WST 2006
/usr/bin/uname -p = unknown
/bin/uname -X = unknown
/bin/arch = i686
/usr/bin/arch -k = unknown
/usr/convex/getsysinfo = unknown
hostinfo = unknown
/bin/machine = unknown
/usr/bin/oslevel = unknown
/bin/universe = unknown
PATH: /usr/local/sbin
PATH: /usr/local/bin
PATH: /usr/sbin
PATH: /usr/bin
PATH: /sbin
PATH: /bin
PATH: /usr/bin/X11
PATH: /usr/games
## ----------- ##
## Core tests. ##
## ----------- ##
configure:1558: checking for a BSD-compatible install
configure:1613: result: /usr/bin/install -c
configure:1624: checking whether build environment is sane
configure:1667: result: yes
configure:1732: checking for gawk
configure:1761: result: no
configure:1732: checking for mawk
configure:1748: found /usr/bin/mawk
configure:1758: result: mawk
configure:1768: checking whether make sets $(MAKE)
configure:1792: result: no
configure:2007: configuring the client library
configure:2011: error: configuring client library failed
## ---------------- ##
## Cache variables. ##
## ---------------- ##
ac_cv_env_CC_set=
ac_cv_env_CC_value=
ac_cv_env_CFLAGS_set=
ac_cv_env_CFLAGS_value=
ac_cv_env_CPPFLAGS_set=
ac_cv_env_CPPFLAGS_value=
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_CXXCPP_set=
ac_cv_env_CXXCPP_value=
ac_cv_env_CXXFLAGS_set=
ac_cv_env_CXXFLAGS_value=
ac_cv_env_CXX_set=
ac_cv_env_CXX_value=
ac_cv_env_EPACKAGE_CFLAGS_set=
ac_cv_env_EPACKAGE_CFLAGS_value=
ac_cv_env_EPACKAGE_LIBS_set=
ac_cv_env_EPACKAGE_LIBS_value=
ac_cv_env_F77_set=
ac_cv_env_F77_value=
ac_cv_env_FFLAGS_set=
ac_cv_env_FFLAGS_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_PKG_CONFIG_set=
ac_cv_env_PKG_CONFIG_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_path_install='/usr/bin/install -c'
ac_cv_prog_AWK=mawk
ac_cv_prog_make_make_set=no
## ----------------- ##
## Output variables. ##
## ----------------- ##
ACLOCAL='${SHELL} /home/roshan/syncevolution-0.3/missing --run aclocal-1.9'
AMDEPBACKSLASH=''
AMDEP_FALSE=''
AMDEP_TRUE=''
AMTAR='${SHELL} /home/roshan/syncevolution-0.3/missing --run tar'
AR=''
AUTOCONF='${SHELL} /home/roshan/syncevolution-0.3/missing --run autoconf'
AUTOHEADER='${SHELL} /home/roshan/syncevolution-0.3/missing --run autoheader'
AUTOMAKE='${SHELL} /home/roshan/syncevolution-0.3/missing --run automake-1.9'
AWK='mawk'
CC=''
CCDEPMODE=''
CFLAGS=''
CPP=''
CPPFLAGS=''
CXX=''
CXXCPP=''
CXXDEPMODE=''
CXXFLAGS=''
CYGPATH_W='echo'
DEFS=''
DEPDIR=''
ECHO='echo'
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP=''
EPACKAGE_CFLAGS=''
EPACKAGE_LIBS=''
EXEEXT=''
F77=''
FFLAGS=''
INSTALL_DATA='${INSTALL} -m 644'
INSTALL_PROGRAM='${INSTALL}'
INSTALL_SCRIPT='${INSTALL}'
INSTALL_STRIP_PROGRAM='${SHELL} $(install_sh) -c -s'
LDFLAGS=''
LIBOBJS=''
LIBS=''
LIBTOOL=''
LN_S=''
LTLIBOBJS=''
MAKEINFO='${SHELL} /home/roshan/syncevolution-0.3/missing --run makeinfo'
OBJEXT=''
PACKAGE='syncevolution'
PACKAGE_BUGREPORT=''
PACKAGE_NAME=''
PACKAGE_STRING=''
PACKAGE_TARNAME=''
PACKAGE_VERSION=''
PATH_SEPARATOR=':'
PKG_CONFIG=''
RANLIB=''
SET_MAKE='MAKE=make'
SHELL='/bin/sh'
STRIP=''
SYNC4J=''
SYNC4JSRC=''
SYNC4J_CFLAGS='-I/home/roshan/syncevolution-0.3/src/client-api.build/include/common -I/home/roshan/syncevolution-0.3/src/client-api.build/include'
SYNC4J_LIBS='-L/home/roshan/syncevolution-0.3/src/client-api.build/src -lsync4j'
SYNC4J_SUBDIR='/home/roshan/syncevolution-0.3/src/client-api.build'
VERSION='0.3'
ac_ct_AR=''
ac_ct_CC=''
ac_ct_CXX=''
ac_ct_F77=''
ac_ct_RANLIB=''
ac_ct_STRIP=''
ac_pt_PKG_CONFIG=''
am__fastdepCC_FALSE=''
am__fastdepCC_TRUE=''
am__fastdepCXX_FALSE=''
am__fastdepCXX_TRUE=''
am__include=''
am__leading_dot='.'
am__quote=''
am__tar='${AMTAR} chof - "$$tardir"'
am__untar='${AMTAR} xf -'
bindir='${exec_prefix}/bin'
build=''
build_alias=''
build_cpu=''
build_os=''
build_vendor=''
datadir='${prefix}/share'
exec_prefix='NONE'
host=''
host_alias=''
host_cpu=''
host_os=''
host_vendor=''
includedir='${prefix}/include'
infodir='${prefix}/info'
install_sh='/home/roshan/syncevolution-0.3/install-sh'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localstatedir='${prefix}/var'
mandir='${prefix}/man'
mkdir_p='mkdir -p --'
oldincludedir='/usr/include'
prefix='NONE'
program_transform_name='s,x,x,'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sysconfdir='${prefix}/etc'
target_alias=''
## ----------- ##
## confdefs.h. ##
## ----------- ##
#define PACKAGE "syncevolution"
#define PACKAGE_BUGREPORT ""
#define PACKAGE_NAME ""
#define PACKAGE_STRING ""
#define PACKAGE_TARNAME ""
#define PACKAGE_VERSION ""
#define VERSION "0.3"
configure: exit 1
Re: How to Sync your Blackberry in Linux
Hey, no problem, help is what this place is all about :)
Anyways, do you have the g++ package installed? I've seen errors similar to yours and they can happen if gcc is installed without c++ support.
Open up synaptic and search for the packaged called "g++" (without quotes of course).
Make sure it's installed (along with its dependancies which synaptic will take care of automatically) and let me know if you're still having trouble :)
Re: How to Sync your Blackberry in Linux
Progress made. Now .configure complains that I have an incompatible evolution-data-server. My currently installed evolution-data-server package is at version 1.6.1-0ubuntu5.
Thanks again.