I've spent a long time trying things that didn't work, so here's a summary of what I DID finally get to work. My provider is T-Mobile; you will need to change appropriate settings if yours is not (the APN and maybe the username/password).
- Download and install OpenMotif 2.3. Version 2.2 will not do, and neither will lesstif.
- Get the latest XmBlackBerry source from CVS. The released version 0.1.0 did not work for me. Compile and install.
- Run XmBlackBerry. It should report a device /dev/pts/NNN where it has connected the modem.
- Put this device in your pppd configuration file, along with other options (example below)
- Bring up ppp by typing "pppd call [connection name]", or in my case "pppd call blackberry". You can also use the "pon" wrapper if you prefer.
Here is my full pppd config file, installed in /etc/ppp/peers/blackberry, including some options which are probably not relevant:
debug debug debug
connect "/usr/sbin/chat -f /etc/chatscripts/blackberry-chat"
novj # refused anyway, no point in trying every time
here is my chat script, /etc/chatscripts/blackberry, including some options which probably have no effect. You might try with just the CGDCONT and ATDT to start with. It's important to keep the command to abort on "ERROR", not part of many default scripts, because this is the return code I get if the dial fails (such as if there is no GPRS connection)
ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT DELAYED ABORT ERROR
- I found that I did not need the FLAG fixup code in XmBlackBerry; I changed the "#if 1" to an "#if 0" in serdata.c to remove it. I also set option "flag_time=0" on the ppp_async module.
- I hacked XmBlackBerry to create a symlink to /dev/blackberry from whatever /dev/pts/ file it opened, since copying it manually seemed like it would get old fast.
- Once you have it working reliably, you can take out the "debug" and "nodetach" options, and have pppd run in the background.
- Kernels used were 2.6.17 and 2.6.22, with identical results on both.
- Transfer rates were in the 30-60kbps range (remember this is not an EDGE device, so this is entirely within spec); latencies were 600-800 ms.
- If you can talk to the modem, but get no reponse to PPP LCP frames, try updating your version of XmBlackBerry. I had this problem when I was using 0.1.0 instead of the CVS version. I have not looked in detail at what actually changed.
- If you cannot negotiate PAP, it may be that you supplied a blank username and password to pppd. This is correct for t-mobile, but pppd interprets blank as "don't have any information" and therefore refuses to negotiate PAP authentication in the LCP phase. I found that I had to supply dummy values (I used "blank" and "blank"), which were then ignored, and allowed me to log in anyway. (I actually figured that out *after* compiling a custom pppd which would allow me to use blanks... so you can learn from my experience and not go there)
- If you don't get DNS (for example, if you see "<ms-dns1 0.0.0.0>" instead of a server), make sure you have a good signal and try again. I found that this happened when the phone did not actually have a GPRS connection, but only GSM. (if it had had no connection at all, it would have returned ERROR instead of CONNECT after the dial command). With TMobile, the DNS server I get is always 188.8.131.52, but since not getting one seems to be symptomatic of a deeper problem, filling it in by hand probably won't help.
- If you get occasional random disconnects and/or your blackberry reboots, I don't know. I still have this problem. I tried wiping and reinstalling the OS under Windows with the RIM tools, and that might have helped some, but I'm still having problems afterwards.
If you want it to work via Bluetooth, I think you're just SOL; from what I understand, the 4.1.x.x OS versions simply do not have the capability, and 4.2 probably will not be released for the 7000 devices.
I will update this post if I find errors or find better solutions to anything.