About two years ago, I got my hands on my Series 60 Symbian phone, the Nokia 3650. This lasted me well, but eventually I upgraded and sold it. A year or so ago, I upgraded to another Series 60 phone, this time the Nokia 6600. Finally, I've just got my hands on a shiny new Nokia 6630, one of the latest Series 60 phones.
This page details how I've got them to play nicely with my Linux systems. It also details what applications I've put on them (esp. Linux related ones), how I've been (trying to) program them, what I've used them for, and other random things like that.
(This page isn't about running Linux on Series 60 phones. That's a different project, being done by Lukas Hey. He hasn't got a website yet though).
Details
Nokia N95
Nokia 6630 (alt)
Nokia 6600 (alt)
Nokia 3650 (alt)
Communicating with it
IR doesn't play nicely on my latop with Linux (useless dell thing, grr...), so I'm mostly going to be using BlueTooth. Annoyingly under Windows, the Nokia suite won't work with my bluetooth adapter and the 3650, but it plays fine with the 6600....
A quick note about charcter sets - as far as I can tell, the phone uses ISO-8859-1 as its character set (well, at least on my phone with a language set as English it does). As such, you may need to do some translation if sending accented characters to / from a computer not using this as its code page.
Linux IR - You need a newish kernel with the IR options picked, and an IR adapter that reliably works. Since I lack the latter, I can't be much help on using it with the series 60 phones. Your best bets are Linux IRDA Page and the TuxMobil IRDA Page.
Linux BlueTooth - needs a BlueTooth stack for Linux, a supported BlueTooth adapter, and possibly some kernel patches.
There are a few different stack for Linux, but I've been using the official one, BlueZ, and so far it's been fine.
As well as all the BlueTooth libraries, you'll need support in your kernel. While most of 2.4.x has had some support in it, generally it hasn't supported everything you need. The general rule of thumb is - if it offers RfComm as an option it's fine, otherwise you'll need a new version and / or some kernel patches to add in that support.
I've gone for 2.4.20 with the -mh6 BlueTooth patches applied to it.
Linux USB - With the Nokia 6630 (but not the earlier ones), USB is an option too. I haven't done much with this (I have bluetooth working fine), but it should appear as a USB serial device and mode.
I'm told you'll need the following kernel options: USB Modem (CDC ACM), USB Serial, USB Generic Serial, and FTDI 232 (under USB serial).
Details on getting the 6630 working with USB are here and here. I found that provided I had the right kernel modules, it "just worked".
With the phone plugged in, you can just use it as a modem. However, you can also use OpenObex to send and receive files. Just make sure you have a new version of OpenObex (mid-December 2005 onwards, which currently mean a CVS build) with USB support enabled (an option to configure), and a new version of ObexFtp (early January 2006 onwards, so again a CVS or snapshot version). obex_ftp and obex_test should both then show two Obex services from the phone over USB (PC Suite and SyncML) - you want to use the PC Suite one.
BlueTooth Applications & Uses
Finding Bluetooth Address - If you need to find the Bluetooth MAC address of your phone, you could try and find it via the SDP tool (service discovery protocol) or similar. However, for series 60 devices it's much easier - just key in the magic code *#2820# and the phone will report its address. While we're on this, *#0000# gives the firmware version, and *#06# gives the IMEI.
BlueTooth Dialup - Behaves just like a normal 9600 baud modem. You need to bind to rfcomm channel 1 (see /etc/bluetooth/rfcomm.conf). Then, configure it in your favourite dialup config tool, with a modem device of the /dev/rfcomm entry. After that, you can dial away as normal.
BlueTooth GPRS - This is somewhat network specific. I quick guide is here. In general though, you have to send some magic AT commands to tell the phone which GPRS gateway to use. For Vodafone UK, I use a chat script with:
Init1 = ATH Init2 = ATE1 Init3 = AT+CGDCONT=1,"IP","internet","",0,0 Dial Command = ATD Phone = *99#You might also want to use these three scripts in your ppp peers directory, tweaked for your access point and rfcomm device.
BlueTooth 3G (WCDMA) - This seems to work with exactly the same commands as above - they seem to request general packet data, rather than specifically requesting GPRS.
The third parameter of Init3 ("internet" above), needs to be the name of your 3G gateway, rather than of your GPRS gateway - though they're normally the same. It seems that the 6630 will try to connect via 3G, and fall back to GPRS if not available. I guess it'll be the same in an EDGE network, but I haven't tried.
BlueTooth File Send / Receive - Via OpenObex data transfer tools. Since I'm using BlueTooth, as well as needing OpenObex and OpenObex-Apps, I also need obexserver (grab obexserver.c and compile it in openobex-apps-1.0.0/src with cc -o obexserver obexserver.c libmisc.a -lopenobex, or on Fedora Core 4/5 cc -o obexserver obexserver.c libmisc.a /usr/lib/libopenobex.a). Provided no other BlueTooth apps are running, add the SDP for it with sdptool add --channel=10 OPUSH then run obexserver. Works great for receiving files.
To send files with obex, you need ussp-push. Grab it from here. You might need to apply a patch to make it compile with the latest OpenObex, details and patch are here. Finally, you might like to use this shell script wrapper for ussp-push (you'll need to drop in your phone's ID to the top of the file).
BlueTooth Device Mounting - Via p3nfs. Works fine once you've got the SIS onto the phone, and set up RfComm and BlueTooth pin's. The protocol seems to be 4, and not 3 as suggested by the manual.
BlueTooth XMMS Control - Via Bemused. Allows remote control of XMMS. Works really quite well.
I've updated the Linux server to support the new v1.5 commands, and you can grab this off the website.
You probably want to change the service channel from 10 to something like 9, so you can do an Obex Receive whilst Bemused is running (the service numbers clash by default). See the Readme for how to do this.
BlueTooth SyncML - It is supposedly possible to use all the SyncML stuff over bluetooth. You'll need the SyncML application on the phone (normally called Sync - see the Nokia website / CD which came with the phone). With that installed, the phone will offer to do SyncML over Bluetooth Obex, if you have the right app.
I'm told there are such apps for Linux, but I've yet to find one. to play with this though.
BlueTooth & Gammu - With a new version of Gammu, you can access an increasing number of the funcions and information on the phone. I've got it working with a connection type of "at115200", and a port of rfcomm2, having previously issued "rfcomm bind /dev/rfcomm2 id:id:id:id:id:id 1"
I don't yet know what other rfcomm values other than 1 (DUN) work with Gammu.
Bluetooth & Gnokii - The latest version of Gnokii (which Gammu is a fork of) has a fair ammount of support for Series 60, and that's increasing all the time. You'll need to grab the latest CVS version, read Docs/README-Symbian, and go here to pick up the latest .sis helper application. Doesn't do quite as much yet as Gammu with a connection of at115200, but has a lot more promise for the future.
TCP/IP over Bluetooth
Note - you will need a different version of the GNUBox SIS file depending on the phone. It only works as standard on the older phones (6600, 3650 etc). The 3g ones (eg 6630) don't have the full CSD support as standard, so you have to get a special version of GNUBox.
If you go to the GNUBox site and follow their instructions, you should be fine. The latest instructions for the use of dund make it really easy to get everything to work.
The following are old instructions, left as hints in case something goes wrong.
This is quite a tricky one. The networks don't want you to be able to do IP over Bluetooth, as this'll impact on their data revenues. Nokia, however, want to do it for some of their development stuff, and some of their windows applications.
Several people have tried to get IP over Bluetooth working from Linux. The first site to come up with a plan was this. It offered some interesting hints on how to make things work (such as some special DNS zones you'd appeared to need), but didn't quite get you there.
The next to come along was this. It describes how a lot of applications won't use the mrouter (IP over Bluetooth) access point when up.
Now for the cunning bit - it tells you about a phone side application called GnuBox (cvs here). Using this, it's possible fool a standard GSM dialup access point to actually connect to a ppp server running on your machine, over Bluetooth! However, the linux bit is a bit cryptic, and doesn't quite seem to get you there.
Finally, this guide came along, based on the previous two. It doesn't contain all the history that the other two have (which might be handy when things change for the next release), but it does have a very nice step by step guide to fooling the GSM dialup access point to connec to your machine. Armed with this, gnubox, and a working bluez setup, you should be able to get IP access over Bluetooth :)
So, to summarise: IP over Bluetooth is possible from 3650's and 6600's to Linux, if you use gnubox to tweak the setting of a gsm access point. It works nearly as well for the 6630 (but no nokia apps work with it), but you need to use the testing version of GNUBox, and possibly also to go read forum first.
Software on it
As well as the usual Nokia stuff, I've put a few more Apps onto the phone. Here's a list of the main ones, in a vague sort of order:
Good places to watch for new software are: MIDP Apps
Games on it
Everyone needs the odd game.... Beyond the usual Nokia ones, here are some of the ones I've tried and liked:
Writing For It
It supports c++ apps for Series-60, as well as Java programs (J2ME with CLDC or MIDP). There is also a funky new open language called OPL for it. Oh, and there's a python interpreter for it, currently in (closed) beta.
Java
I've been doing some java stuff, mostly with the aid of:
Currently I haven't done much Java stuff with it, but I do have Programming Wireless Devices With Java 2. I ought to find some time soon to have a real play with it.
C++
The main SDK is only available for windows, which is a little pesky. Luckily, there are ways around this:
I was unable to get the GnuPoc installation method to work. Instead, I opted for the ki-ag method (link 3 above), basically following the guide from the first link above. It proved quite straight forward, once you had downloaded everything.
My current issue is a lack of a "hello world" app to start playing with. If you use the Windows SDK and Visual Studio, you can persuade a wizard to spit you out an empty app. Since I'm not, I'm lacking a starting block. I guess I might just have to take an existing GPL app for the phone, and start ripping bits out....
File Formats:
The Nokia Suite for Windows has all sorts of converters for getting content into the best form for the phone. Nice as that is, it isn't much help for those of us here under Linux. So, I'm trying to find out what the formats really are, and how to create them under Linux.
Digital Sound (3650, 6600): Really wave files of the type RIFF (little-endian) data, WAVE audio, IMA ADPCM, mono 16000 Hz.
Can be made quite happily using Sox: sox <in.wav> -r 16000 -i -c 1 <out.wav>
Digital Sound (6630): Quite different from the earlier models (and if you give the 6630 sounds for earlier phones, it sounds bad when played back). Seems to want CD style wav data (stereo, 44100 Hz), so should be easy to get. The 6630 also has built in MP3 and MP4 audio decoders, which get used transparently.
Simple Sound: Really just unmodified MIDI files. There are some restrictions on instrument useage, number of tracks etc, but I've yet to identify these.
Videos: Are in the 3GP format, which belongs to the H263+ family. Mplayer will play them, if you edit ~/.mplayer/codec.conf, find the line videocodec ffh263, and add below that format 0x33363273. To get the video sound going is a bit more tricky, I'm still working on it.
mencoder, part of the mplayer package, is able to convert from the 3GP format into more sensible things. I've yet to play with that much though.
Another option is the to use a program from the Helix suite of software (the open source stuff from Real). They provide encoders, and players (either RealPlayer of HelixPlayer).
Certificates: It accepts X509 CA certificates in DER (binary encoded) format. You need to browse to them in the WAP/XHTML-MP browser, which is normally called "Services". The certificate import wizard is then fired up. The phone should also support WTLS certificates, but they're quite tricky to generate...
My notes on certificates for the phone are here.
Vodafone UK Specific
There are a few provider specific things with the series 60 phones. Since I'm with Vodafone in the UK, here are their ones:
Update: it seems vodafone are relaxing this restriction, and you can now get to some content through the wap GPRS gateway, but not the CSD (dialup, GSM one). However, it's not a full connection, so do get access to the "internet" GPRS gateway if you want to do anything meaningful For GSM based gateways, any ISP will work fine. However, 0845 numbers don't come out of inclusive airtime, so look into finding out the non 0845 number for your ISP For GPRS connections, you need to use an alternate access point - the "internet" one. Speak to Vodafone customer services to get your account activated for the "internet gprs gateway", if it isn't already. (Look in the GPRS settings bit of your phone, and see if there's already one called internet. Some new contracts+phones already come with access).
To get access to the internet gateway, speak to customer services. To help them find the right bit of their script, you might want to try telling them you want to connect from your laptop via your phone - they tend to tell you the wap gateway is good enough for on phone access, but that's wrong.
Once you've been enabled, you should be able to get them to SMS you the settings. Try poking around on their website for the form. Failing that, define a new access point, data bearer is GPRS, access point name is "internet" (case sensitive, all lower case), no username or password, no other changes to the default config. This will get your phone full internet GPRS access As of April 2003, none of the Vodafone website or customer services scripts could cope with the 3650 (despite the nationwide TV ads for them). They did this again in 2004 with the 6600. If they haven't heard of your phone, go to the nokia website and look up an older model in the same family (be sure to get the same revision of series 60), and claim to have that.
Current Issues
I have the following issues with the phone, help on them is appreciated: