Wireless Village/OMA IMPS/baraza.im experiments

We were talking about Wireless Village the other day in the osmocom IRC channel with @fixeria et al.

Today @billy549 pointed me towards Baraza ::: Free Mobile IM, which was an open source server for the Wireless Village protocol:

It uses XMPP as the message backend and PostgreSQL as the database backend.
Kannel (both as a library for WBXML/WAP and as a service for sending WAP Push SMS) is used.

Managed to find the original CVS repo on SourceForge, converted it to Git and pushed it here:

Then patched the code and Makefiles to build somewhat on a modern-ish Debian 11 system:

Sadly, WAP Push SMS are somewhat required for proper operation. I can theoretically send those within Germany, but other countries might get tricky. (bring your own Kannel/SMPP + proxy, I guess?).
Without them, you need to trick the client into refreshing the server side data. Normally the network would inform the phone via WAP Push that new messages/state has occured.

If someone has a compatible phone and wants to give this a shot, send a message (here or via IRC). The server is public (for now).


It never ceases to amaze me whatever weird stuff people did at application layer with feature phones. Somehow I never witnessed any of that back in the day. I guess I was too much into using a phone as phone and using a PDA (Palm,… )for anything more sophisticated (possibly using a phone via serial/IrDA for connectivity).

1 Like

Wow, it’s definitely a nice find! And good to see you got it running!

Can you share your patches and/or build tips? I would like to get it running on my side and try connecting Sony Ericsson phones. This “My friends” app is something that always piqued my curiosity, but I never managed to get it working.

I just checked the Wireless Village specifications, in particular the “CSP Transport Binding”. Chapter 8 “TRANSPORT BINDING FOR CIR CHANNEL” defines the TRANSPORT ALTERNATIVES:

  • WAP 1.2 or WAP 2.0 push using WSP unit push message and SMS as a bearer
  • WAP 1.2 or WAP 2.0 push using WSP unit push message and UDP/IP as a bearer
  • Standalone UDP/IP binding
  • Standalone TCP/IP binding

The UDP/IP requires a “white” IP address and is not going to work with NAT, while the TCP/IP binding requires the client to establish connection to the server (see chapter 8.1.3 “Standalone TCP/IP Binding”). The WV client does indicate its supported transports in the client capability. Would be interesting to know which transports does the WV client in Nokia phones support. Can you share a PCAP?

Of course. It’ll need more love & attention for a really well working service.

I used a Debian 11 (bullseye) amd64 machine.

apt install postgresql kannel kannel-dev kannel-extras autoconf build-essential libc6-dev libresolv* libgnutls* libgcrypt-dev libiksemel*
systemctl disable --now kannel

Pushed my changes to:

Those probably break both the XMPP interoperability and TLS handling.
Both aren’t useful anyway, as no XMPP servers allow for such crap crypto anymore.

So you’d probably want to replace the TLS implementation with something a little less awful than GnuTLS.

You will then need to create a PostgreSQL database and user.

postgres=# create database barazad;
postgres=# create user barazad with encrypted password 'databasePasswordHere';
postgres=# grant all privileges on database barazad to barazad;

The import of the table structure failed for me for some reason.
I then manually imported the .sql file with the pgAdmin tool, which seemed to work. No idea why.

Ideally, you’d also want a reverse proxy in front of this, probably nginx or Apache.

1 Like

Bildschirmfoto 2023-10-21 um 16.14.21

That’s a bit unfortunate.

I also found a J2ME client (and PC client!) someone had made for IMPS - SmartVas. I’m unable to test it properly on my Nokia 9300i as it runs into an exception, but I’d be curious if it works on any other devices; sadly it’s too big (and likely too new) for my Nokia 6310i…