Using MSN and ICQ with the built-in Palm Pre Messenger

The Palm Pre is a pretty awesome phone, but there are a few minor drawbacks. One, the built-in IM client only supports AIM and Google Talk at this point. I'm sure others will be added in the future, since the messenger uses the same libpurple that Pidgin does, but until then you're either stuck with those two, or probably trying to find some workaround.

Google talk is really just a jabber (or XMPP) server. Jabber is nice because it can connect to other Jabber servers. There are also plugins that allow Jabber to talk directly to other IM networks, including AOL, MSN, Yahoo, and ICQ. AOL doesn't matter for us, since we have support included with the phone. I do use MSN and ICQ quite a bit, so I that's what I'm going to focus on. There are some public jabber servers out there that already do this, but I'm just a little nervous about storing all of my IM passwords on some random server run by people I don't know.

First off, I need a Jabber server. We use one called Openfire at work, and it seems pretty nice. Unfortunately, it's Java, and my personal server runs FreeBSD. I haven't had much luck getting the two to work together, so I didn't feel like trying. FreeBSD has packages for a couple other jabber servers - jabberd2 and ejabberd. I went with jabberd2, which can be found in ports under net-im/jabberd. I built mine with MySQL support, since I use MySQL for a lot of other things. It supports several other databases if you prefer something else.

Installing jabberd2 was easy with a simple 'make install clean'. From there, follow the official jabberd2 Basic Configuration Guide to set it up. It's very easy, and the configs are straightforward. Doesn't need anything fancy, you just need to be able to connect to it from the internet. Make note of the hostname you set, and you will want to add a DNS entry for it if you don't have one already. Its not 100% required, but you should generate an SSL certificate too.

Then, I installed transports for the other IM protocols I want to use. I chose PyMSNt for MSN and pyicqt for ICQ. These are in ports under net-im/jabber-pymsn and net-im/jabber-pyicq, respectively. To setup the MSN transport to connect to my Jabber server, I opened its only config file (/usr/local/etc/jabber-pymsn.xml on FreeBSD), and changed the following:

<pymsnt>
  <jid>msn.mydomain.com</jid>
  <host>x.x.x.x</host>
  <mainServer>x.x.x.x</mainServer>
</pymsnt>

Where <jid> is a hostname for the transport (make sure it has a valid DNS entry), <host> is your server's public IP address, and <mainServer> is the IP of your jabber server. You can change other stuff if you want, but those are the important ones. The ICQ transport configuration (/usr/local/etc/jabber-pyicq.xml in FreeBSD) was very similar - I made the same changes as above. After all this is done, we can start the services. I added these lines to my /etc/rc.conf:

jabberd_enable="YES"
jabber_pymsn_enable="YES"
jabber_pyicq_enable="YES"

and ran the three startup scripts:

# /usr/local/etc/rc.d/jabberd start
# /usr/local/etc/rc.d/jabber-pymsn-transport start
# /usr/local/etc/rc.d/jabber-pyicq-transport start

Obviously, these will be different if you're on a linux or other server, so refer to each package's documentation to be sure. Once my server is up and running, I need to connect my Google Talk account to my new transports. You will need to do this from a standalone jabber client. For this purpose, I recommend using a client called Psi. First, you will need to set it up to log into your GTalk account. This is pretty straightforward, just follow the walkthrough here.

Once you're connected, right-click on the account in the main window and select Service Discovery:

In the Address: bar, type the hostname of your jabber server. You should then see a list of transports. Right-click on one, and click "Register":

You will then be prompted for your username and password for that network. The Psi client will also ask you to authorize the Transport accounts, as well as all of your contacts from that IM network. And that's just about it. One thing I would recommend is logging into Gmail and cleaning up your contacts list. Each contact from the networks you added will show up on your Gmail contacts as something like "icqnumber@icq.yourjabberserver.com". On my Pre, I prefer to have all profiles for a particular contact merged. To make this happen automatically, edit each jabber buddy's name in your Gmail contacts to match the name you already have set in your Pre's contact list. If you have multiple IM accounts for one person, you can merge the two contacts. I'd also recommend setting the transport accounts (which will show up as just msn.yourjabberserver.com or simlar) to never show up in chat. This will prevent them from appearing in the Messenger app on the Pre. Finally, log into your GTalk from the Pre. Your MSN and ICQ friends will all show up as Google Talk users, but you can see which IM account you're talking to from the conversation window.

And that's it. I'm sure I forgot something, but feel free to leave a comment if you run into any trouble.

1337 XMPP

A few years ago, I was a total XMPP fanatic. I was working for Ford at the time. I installed ejabberd and used Pandion as the client. One thing I liked about both was that I could modify them heavily to suit our needs. It was fun programming in a purely functional language, Erlang, and Pandion was a breeze to extend. I integrated Windows Remote Assistance into Pandion so that IT could easily connect to anyone requesting help through the chat app.

I've had an XMPP project on my list of "stuff to do that doesn't pay money" for the longest time. Your post is secretly telling me to get off my ass and start working on it. Thanks for being so pushy, indirectly.

In order for this to work I

In order for this to work I have to keep the PSI application running on my PC? When i close it I lose all the MSn contacts so I assume that is the only way it can work.

colinb's picture

Nope, you only have to run

Nope, you only have to run PSI once to set up the connections. The Gtalk servers will remember them after you disconnect.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.
  • Images can be added to this post.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.