Playing with Series 60 Phones and Linux

Many many moons ago, I got my hands on my first Series 60 Symbian phone, the Nokia 3650. This lasted me well, but eventually I upgraded and sold it. I then upgraded to another Series 60 phone, this time the Nokia 6600. That was followed by the Nokia 6630, and lastly by the Nokia N95.

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.

However, since then, I've moved over to a Nokia N900, which runs Linux. I can certainly recommend it over the Series 60 phones!


Details Communicating with it BlueTooth Applications & Uses
TCP/IP over BlueTooth Software on it Games on it
Writing For It File Formats Vodafone UK Specific
Current Issues Other Sites Of Interest  

(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, and I'm not even sure if he's still working on it).


Details

Nokia N95

  • Runs Series 60 v3 Feature Pack 1 (based on Symbian 9.2)
  • Runs Java (J2ME with CLDC v1.1 and MIDP v2.0)
  • 320 x 240 65536 colour screen (normally 240 x 235 usable screen area)
  • Supports Bluetooth, Wireless (802.11bg), USB and IR
  • Does GSM (triband), GPRS and 3G (WCDMA)
  • Runs on a pair of ARM ARM11 processors (332MHz each)
  • Hot swap Micro SD Card
  • Video and audio stereo out via 3.5mm plugs
  • Sound card (appears to do stereo, 16 bit, 48kHz, but need to check)

Nokia 6630 (alt)

  • Runs Series 60 v2 Feature Pack 2 (based on Symbian 8.0a)
  • Runs Java (J2ME with CLDC v1.1 and MIDP v2.0)
  • Supports Bluetooth and USB (no IR)
  • Does GSM (triband), GPRS and 3G (WCDMA)
  • 176 x 208 65536 colour screen
  • Runs on an ARM processor (220 MHz ARM9 cpu, probably a ARM920T), on the ARM Integrator platform
  • Hot swap RS DV MMC Cards (requires 1.8V reduced size MMC, but you'll normally end up getting a dual voltage 1.8/3.0V one)
  • Sound card (appears to do stereo, 16 bit, 44.1kHz, but need to check)

Nokia 6600 (alt)

  • Runs Series 60 v2 (based on Symbian 7.0s)
  • Runs Java (J2ME with CLDC v1 and MIDP v2)
  • Supports IR and Bluetooth
  • Does GSM (triband), HSCSD and GPRS
  • 176 x 208 65536 colour screen
  • Runs on an ARM processor (104 MHz ARM9 cpu, probably a ARM920T), on the ARM Integrator platform
  • Internally mounted MMC Card (full size, normal 3v)
  • Sound card which does mono, 8 bit, 16kHz sound (may also do higher?)

Nokia 3650 (alt)

  • Runs Series 60 (based on Symbian 6.1)
  • Runs Java (J2ME with CLDC v1 and MIDP v1)
  • Supports IR and Bluetooth
  • Does GSM (triband), HSCSD and GPRS
  • 176 x 208 4096 colour screen
  • Runs on an ARM processor (104 MHz ARM9 cpu, probably a ARM920T), on the ARM Integrator platform
  • Sound card which does mono, 8 bit, 16kHz sound (may also do higher?)

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:

Communication Related:
  • p3nfs - Allows you to mount your phone on your laptop via BlueTooth. Very handy.
  • Bemused - allows you to use your phone as a remote control for xmms over BlueTooth.
  • Opera - A full web browser on your phone. It's great!
  • Putty - ssh access on the move. Brilliant.
  • VNC - gui access to your servers on the move.
  • IP View - Shows current IPs bound to the phone, and let's you ping things. Handy for debugging connection issues.
  • AvantGo - The mobile browser. Haven't made it behave yet when it comes to registration and the connection
  • Agile Messenger - Generic instant messenger (AIM, ICQ, MSN etc)
  • FeedBurner RSS Reader
  • WLIrc - an IRC client
  • gnubox - allows you to tweak dial access points to actually use bluetooth
  • Gnapplet - phone side portion used with gnokii to manage your phone
  • CellTrack - detailed info on what cell you're in, and where you've been
  • CellSpotting - tag the physical location of cells, then find information about their surrounding areas.
  • GETrack - log your location (from your bluetooth GPS) to a file, and send it to your computer in a number of formats.
  • NMEA_Inf.py - my own python script for showing information from a bluetooth GPS, logging it etc.
Media Related:
  • ReadM - An ebook reader that supports reading from compressed archives. Also happens to play mp3s (badly). Note - the mime filters don't play nicely on the 6630
  • Mp3Player - A mp3 player, which works OK, but costs money and doesn't do playlists
  • OggPlay - an ogg music player, also does MP4 and MP3 if the phone supports them
  • Pdf+ - a pdf viewer (all platforms)
  • Adobe Reader - official adobe PDF viewer (6630/6680 only)
  • QuickOffice - Word / Excel / PowerPoint reader and editors (viewer only on 3650)
General System Tools:
  • AutoLock - automatically lock the keypad when you leave the phone alone
  • KI Switcher - a task manager thingy Note - won't work on 6630
  • FExplorer - a file management tool (much better than Nokia's File Manager)
  • Symbian Sysinfo - only an example Symbian app, but shows very large amounts of info on the phone.
  • NewLC SysInfo - another SysInfo package, a bit more user friendly and with some different info

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:

  • Sun 1 Mobile Edition
  • Nokia J2ME Suite for Linux
  • Nokia Series 60 Simulator for Linux

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:

  • None of the standard gateways will get you out to the internet, only to the WAP gateway. If you want internet access (for email, IP enabled applications etc), you'll need to define your own gateways
    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:

  • Content copier and SMSs. None of the content copies (be that in the PC Suite, or the transfer wizard on the phone) seem to copy SMSs. They only seem to do Calendar, Contacts etc.
  • Lack of decent, open source MP3 players. With the 6630, the phone itself will decode MP3s, so this is less of an issue, but it's a pain on the older ones
  • Fragmentation of documentation. It'd be nice to have some documents and users guides with real technical meat in them, rather than keep having to go pester nokia tech support.
  • Don't have Syncing going to anything under linux. A few of the links below might help, but I've yet to play much

Other Sites Of Interest