Last Update: February 3, 12:30am; ongoing article on my attempts to get my Blackjack II synchronized in Ubuntu 7.04.
I decided to forego SynCE for the time being, and investigate something I found through Plaxo. Since I’m a Plaxo Plus member, I have access to use the Windows Mobile sync tool, which can be downloaded from here: http://www.plaxo.com/downloads/windowsmobile?src=po3_toolbox_wm
(I selected ‘smartphone’, ‘cab install’, copied the CAB to my phone and installed it; it may tell you it was made for a previous version but it works just fine for me on the BJ2 which uses WM6 Standard)
Turns out the Plaxo tool is based on Funambol, found at http://www.funambol.com/ — an open source data synchronizer. If I understand this correctly, the software acts as a ‘server’, and the client end runs on the phone, so I’ve decided to scrap all of the other "sync over USB" stuff and try it out on a ‘wireless’ basis, using the EDGE/3G Internet connection.
After messing around with the downloadable source code, I just went to http://www.funambol.com/opensource/downloads.php where they clearly list precompiled versions of everything including a PIM/Email bundle, and various Windows Smartphone downloads, which will "bring your device to the highest level of SyncML functionality."
SyncML, I’ve seen that somewhere before.
Anyhow, I downloaded the Linux PIM/Email Server Bundle (http://download.forge.objectweb.org/sync4j/funambol-6.5.12.bin — 120MB) and the SmartPhone CAB (http://download.forge.objectweb.org/sync4j/funambol-smartphone-plugin-6.5.14.cab) and since that URL is kind of long to download the CAB on my phone, I used tinyurl.com. Even at 1.8MB, it was a slow download on the EDGE network.
So I unpacked the 120MB ‘server’ software:
$ sudo sh /tmp/funambol-6.5.12.bin
it prompted me to accept the AGPLv3 license, which I happily did since anything I create with it will of *course* be released as open-source. It asked if I wanted to install it under /opt/ which sounded fine to me, then asked if I wanted to start the server, to which I said no.
By this point, the client had finished downloading on the phone, so I installed it there.
While it installed, I checked out the ‘server’ side of it:
$ cd /opt/Funambol
That was as far as I got before the client installation on the BJ2 was prompting me for a server URL and a username and password. I decided to start the server app right away to test it out: (instructions on starting/stopping the server are found in /opt/Funambol/Readme.txt)
$ sudo sh /opt/Funambol/tools/bin/funambol.sh start
This actually started 5 different listeners. Since they all seem to be java-based, it was easy enough to find which ports they were running on:
$ sudo netstat -pn | grep java
tcp6 0 0 ::ffff:127.0.0.1:9001 ::ffff:127.0.0.1:60175 ESTABLISHED24912/java
tcp6 0 0 ::ffff:127.0.0.1:9001 ::ffff:127.0.0.1:57759 ESTABLISHED24912/java
tcp6 0 0 ::ffff:127.0.0.1:9001 ::ffff:127.0.0.1:52449 ESTABLISHED24912/java
tcp6 0 0 ::ffff:127.0.0.1:60175 ::ffff:127.0.0.1:9001 ESTABLISHED24959/java
tcp6 0 0 ::ffff:127.0.0.1:57759 ::ffff:127.0.0.1:9001 ESTABLISHED24970/java
tcp6 0 0 ::ffff:127.0.0.1:52449 ::ffff:127.0.0.1:9001 ESTABLISHED24943/java
unix 2 [ ] STREAM CONNECTED 47561 24943/java
unix 2 [ ] STREAM CONNECTED 47351 24912/java
and running a ‘ps fax’ shows me this:
$ ps fax | grep -i funambol
25129 pts/0 S+ 0:00 | \_ grep -i funambol
24912 pts/0 Sl 0:00 /opt/Funambol/tools/jre-1.5.0/jre/bin/java org.hsqldb.Server -database.0 /opt/Funambol/tools/hypersonic/data/funambol -dbname.0 funambol
24924 pts/0 Sl 0:02 /opt/Funambol/ctp-server/../tools/jre-1.5.0/jre/bin/java -Dfile.encoding=UTF-8 -Dfunambol.ctp-server.home=/opt/Funambol/ctp-server -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=7101 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -classpath :lib/ant-1.6.5.jar:lib/axis-1.4.jar:lib/axis-jaxrpc-1.4.jar:lib/axis-saaj-1.4.jar:lib/axis-wsdl4j-1.5.1.jar:lib/bcel-5.1.jar:lib/bsh-2.0b4.jar:lib/cluster-framework-6.5.3.jar:lib/commons-collections-3.2.jar:lib/commons-discovery-0.4.jar:lib/commons-httpclient-3.0.jar:lib/commons-lang-2.3.jar:lib/commons-logging-1.1.jar:lib/core-framework-6.5.4.jar:lib/ctp-core-6.5.4.jar:lib/ctp-mina-codec-6.5.3.jar:lib/ctp-server-6.5.8.jar:lib/ds-server-6.5.12.jar:lib/ext-6.5.2.jar:lib/funambol-ant-1.0.1.jar:lib/jdom-0.7.jar:lib/jgroups-2.5.0-GA.jar:lib/jibx-bind-1.1.2fun.jar:lib/jibx-run-1.1.2fun.jar:lib/joda-time-1.4.jar:lib/log4j-1.2.14.jar:lib/mina-core-1.1.2.jar:lib/mina-integration-jmx-1.1.2.jar:lib/p6spy-1.3.jar:lib/server-framework-6.5.7.jar:lib/slf4j-api-1.4.2.jar:lib/slf4j-log4j12-1.4.2.jar:lib/testing-tool-1.0.4.jar:lib/vmtools-0.5.jar:lib/xercesImpl-2.6.2.jar:lib/xpp3-1.1.2a-fun.jar com.funambol.ctp.server.CTPServer
24943 pts/0 Sl 0:06 /opt/Funambol/ds-server/../tools/jre-1.5.0/jre/bin/java -Xmx512M -Dfile.encoding=UTF-8 -Dfunambol.ds.home=/opt/Funambol/ds-server -Djava.library.path=/opt/Funambol/ds-server/lib/linux -Djavax.net.ssl.trustStore=/opt/Funambol/ds-server/lib/security/cacerts -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8101 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/opt/Funambol/tools/tomcat/conf/logging.properties -Djava.endorsed.dirs=/opt/Funambol/tools/tomcat/common/endorsed -classpath :/opt/Funambol/tools/tomcat/bin/bootstrap.jar:/opt/Funambol/tools/tomcat/bin/commons-logging-api.jar -Dcatalina.base=/opt/Funambol/tools/tomcat -Dcatalina.home=/opt/Funambol/tools/tomcat -Djava.io.tmpdir=/opt/Funambol/tools/tomcat/temp org.apache.catalina.startup.Bootstrap start
24959 pts/0 Sl 0:02 /opt/Funambol/inbox-listener/../tools/jre-1.5.0/jre/bin/java -Dfile.encoding=UTF-8 -Dfunambol.pushlistener.home=/opt/Funambol/inbox-listener -Dfunambol.pushlistener.config.bean=com/funambol/email/inboxlistener/InboxListenerConfiguration.xml -Djava.library.path=/opt/Funambol/inbox-listener/lib/linux -Djavax.net.ssl.trustStore=/opt/Funambol/inbox-listener/lib/security/cacerts -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=4101 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -classpath :lib/activation-1.1.jar:lib/ant-1.6.5.jar:lib/axis-1.4.jar:lib/axis-jaxrpc-1.4.jar:lib/axis-saaj-1.4.jar:lib/axis-wsdl4j-1.5.1.jar:lib/bcel-5.1.jar:lib/bsh-2.0b4.jar:lib/cluster-framework-6.5.3.jar:lib/com-funambol-admin.jar:lib/commons-codec-1.3.jar:lib/commons-collections-3.2.jar:lib/commons-dbcp-1.2.1.jar:lib/commons-discovery-0.4.jar:lib/commons-httpclient-3.0.jar:lib/commons-lang-2.3.jar:lib/commons-logging-1.1.jar:lib/commons-pool-1.3.jar:lib/core-framework-6.5.4.jar:lib/ds-server-6.5.12.jar:lib/ext-6.5.2.jar:lib/funambol-admin-dev.jar:lib/funambol-ant-1.0.1.jar:lib/funambol-inboxlistener-6.5.10.jar:lib/jdom-0.7.jar:lib/jgroups-2.5.0-GA.jar:lib/jibx-bind-1.1.2fun.jar:lib/jibx-run-1.1.2fun.jar:lib/joda-time-1.4.jar:lib/log4j-1.2.14.jar:lib/mail-1.4.jar:lib/p6spy-1.3.jar:lib/pim-framework-6.5.6.jar:lib/push-framework-6.5.8.jar:lib/server-framework-6.5.7.jar:lib/testing-tool-1.0.4.jar:lib/vmtools-0.5.jar:lib/xercesImpl-2.6.2.jar:lib/xpp3-1.1.2a-fun.jar com.funambol.email.inboxlistener.service.InboxListener
24970 pts/0 Sl 0:01 /opt/Funambol/pim-listener/../tools/jre-1.5.0/jre/bin/java -Dfile.encoding=UTF-8 -Dfunambol.pushlistener.home=/opt/Funambol/pim-listener -Dfunambol.pushlistener.config.bean=com/funambol/pimlistener/PIMListenerConfiguration.xml -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=3101 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -classpath :lib/axis-1.4.jar:lib/axis-jaxrpc-1.4.jar:lib/axis-saaj-1.4.jar:lib/axis-wsdl4j-1.5.1.jar:lib/cluster-framework-6.5.3.jar:lib/commons-collections-3.2.jar:lib/commons-dbcp-1.2.1.jar:lib/commons-discovery-0.4.jar:lib/commons-lang-2.3.jar:lib/commons-logging-1.1.jar:lib/commons-pool-1.3.jar:lib/core-framework-6.5.4.jar:lib/ext-6.5.2.jar:lib/jgroups-2.5.0-GA.jar:lib/jibx-run-1.1.2fun.jar:lib/log4j-1.2.14.jar:lib/pim-listener-6.5.8.jar:lib/push-framework-6.5.8.jar:lib/server-framework-6.5.7.jar:lib/xpp3-1.1.2a-fun.jar com.funambol.pimlistener.service.PimListener
And being a good little boy scout, I looked at the ‘quick start’ documentation as recommended by the Readme.txt file. The ‘test drive’ PDF that I downloaded recommended downloading a GUI-based administration panel, which of course is less than ideal for running on my actual hosting server where I’d likely run this app full-time instead of here at home when I could be dual-booted into Windows. So I went to the OW2 Forge download page, found the admin GUI and tried to download it. US Mirror Not Available, doh! Fine, I downloaded it from Paris, France. The only quirk was having to set JAVA_HOME in your environment before running the admin tool.
If you don’t already have a J2EE environment downloaded, try something like:
$ sudo apt-get install j2re1.4
(your mileage, of course, will vary depending on your flavor of Linux)
so here we go:
$ export JAVA_HOME=/usr/lib/jvm/java-gcj
$ sudo /opt/Funambol/admin/bin/funamboladmin
A pretty little admin tool started up, and after some poking around, noticed an error/warning in a log file about needing log4j installed, but I already had the ‘liblogkit-java’ package installed.
Anyhow, the admin tool has a prebuilt username of ‘admin’ with some unknown 2-character password. Clicking File->Login brings up the dialog, and I hit the "Login" button and it connected to my own local system. So far so good, but I have no idea what I’m looking for. The scree’s upper left panel has "Funambol Administration Tool" with my hostname ("w98home") listed underneath. Clicking once on the w98home hostname did nothing, but double-clicking expanded w98home out into a menu of options. I expanded every option and and found a ‘Users’ setting, which changed the right panel of the admin tool when I double-clicked on it. It had a user management interface, so I added a user account, which at this point I can only guess is the username/password that I need to enter on the BJ2.
So on the BJ2, I change the existing "http://my.funambol.com/sync/" url to point to my dyndns.org-friendly URL, and enter the username and password I just created, clicked ‘save’, and it gave me a new screen showing:
Email (Not synchronized)
Contacts (Not synchronized)
Calendar (Not synchronized)
Tasks (Not synchronized)
Briefcase (Not synchronized)
(tasks and briefcase were grayed out)
I scrolled to ‘contacts’ and hit the scrollwheel select button. The (Not synchronized) string change to ‘Connecting’, then came up with an error screen saying "Forbidden: please activate your account."
I also went to the community downloads page as instructed and saw TONS of tools — Exchange, Domino, Gmail, Yahoo, SugarCRM, Evolution, Mozilla Suite (Thunderbird/Firefox) and a LOT more. Dang … we’ve hit the motherlode.