Mal Minhas
Copyright © 2002 by Mal Minhas
This document is distributed under the terms of the GPL (GNU Public License).
The Symbian OS GNU/Linux How To is intended to operate as a public resource to comprehensively document connectivity between Symbian OS smartphones and GNU/Linux software. Currently only smartphones based on Symbian OS v6.1 and v7.0 are covered.
This How To is primarily aimed at technically-minded users of Nokia 7650 and Sony Ericsson P800 smartphones who would like to know how they can get their devices to communicate wirelessly with Linux based PCs using Bluetooth and Infrared (IrDA). The good news for you is that there is excellent wireless comms protocol interoperability between these Symbian OS devices and Linux. This is certainly not the case for smartphones powered by other operating systems we could mention.
In this guide, basic use cases such as beaming of vCards, general file beaming and IP connectivity are covered. In addition, where appropriate, suggestions are made regarding useful software that could be developed on top of the existing connectivity. It's worth noting that there is considerable scope for innovation here.
The use cases in this How To have been fully tested using a PIII desktop and a Dell Latitude CPx laptop both running Mandrake 8.2 (kernel 2.4.18). Infrared has been tested with both built-in SIR hardware on the laptop as well as an Extended Systems Jeteye serial dongle on the desktop. irda-utils-0.9.15 was used for user-side IrDA utilities. Bluetooth was tested using a TDK USB dongle and v1.2.3 of Nokia's GPL Affix stack for Linux.
The Linux IrDA stack and irda-utils are relatively mature and so the IrDA use cases described below are liable to work on wide range of Linux configurations.
The Affix Bluetooth stack is not as mature as IrDA so you may experience problems particularly with bleeding edge configurations. You should check the Affix home page for information about configuration. Having said that, you should not encounter too many problems with Affix on Mandrake 8.2.
This section will be used to document working configurations and problem areas so please contact us if you have any information regarding Symbian OS IrDA and Bluetooth interop with other distros.
Symbian OS is an evolution of Psion's 32-bit EPOC platform that debuted in 1997 in the Psion Series 5 PDA. The Psion Series 5 was a landmark device in many ways. The story of how EPOC was conceived and implemented is covered in greater detail in the Professional Symbian Programming book. It is beyond the scope of this How To to go through the various bits of Symbian terminology (e.g., Psion's EIKON UI framework) covered in that book.
The first release of EPOC in the Psion Series 5 was referred to as "EPOC Release 1". Subsequent revisions of the platform incremented this version number at the rate of approximately one a year. In 1998, Symbian was created as a spin-off from Psion Software Ltd co-owned by Psion, Nokia, Ericsson and Motorola. The purpose of the spin-off was to develop an advanced software platform for a new combination of consumer products called smartphones which would combine telephony and computing capability. This represented a change in direction for the EPOC platform from its origin as a PDA platform. Accordingly around a year later, the platform officially became Symbian OS rather than EPOC.
The first platform release of Symbian OS was v5.0 which was used in the Psion Series 5mx and Psion Revo PDAs. The Ericsson R380 was built on Symbian OS v5u. The Nokia 9210 Communicator was built on Symbian OS v6.0 and the Nokia 7650 imaging phone is built on Symbian OS v6.1. This platform constitutes the core of the Nokia Series 60 platform which has itself been licenced to a number of handset manufacturers. The latest incarnation of Symbian OS is v7.0 which is at the core of the UIQ platform used in the Sony Ericsson P800 smartphone. The exact API changes in Symbian OS from v5.0 through to v7.0 are not really documented anywhere. There is some material on the Symbian web site describing v6.1 functionality and also v7.0 functionality but it doesn't go into great details regarding differences. In practice, you should find that although many APIs have evolved and new components such as Bluetooth added to the platform, the Symbian OS architecture and programming paradigms remain close to that of Psion's original EPOC platform.
Today, Symbian is co-owned by Psion, Nokia, Sony Ericsson, Motorola, Matsushita (Panasonic), Samsung and Siemens.
There have been a number of key Symbian OS devices shipped since 1998:
Symbian's web site hosts a useful resource page holding information about Symbian OS SDKs for each of the platforms from Symbian OS v5 to Symbian OS v7.0. You can freely download both the Series 60 SDK and the UIQ SDK for Symbian OS v7.0 once you register with Nokia and Sony Ericsson respectively.
Symbian OS SDKs are designed for Windows only. However, those of you who are interested in developing Symbian OS software on Linux will be pleased to know that thanks to the gnupoc initiative, it is now possible to install and use these SDKs on your favourite development platform. Unfortunately, the Symbian OS tool chain still contains a small number of binaries which are not yet free software so gnupoc is currently forced to maintain an awkward unnecessary dependency on the wine Windows emulator. Hopefully, this situation will change once the handset manufacturers realise the benefits of having a viable Symbian OS development platform on Linux.
This HowTo does not cover gnupoc any further though it can be read as a useful companion for developers using gnupoc who wish to figure out how to get files on and off Symbian OS devices from their Linux PCs.
The IrDA (Infrared Data Association) protocol specifications are available at IrDA's official web site. The IrDA protocol suite is well supported on Symbian OS. A core IrDA stack protocol module (irda.prt) provides socket access to the IrMUX and IrTinyTP protocols and also encapsulates the IrLAP link layer and the IAS query layer.
Most IrDA interoperability use cases revolve around two protocol layers called IrCOMM and IrOBEX built on top of the core IrDA protocols. IrCOMM specifies a virtual serial port emulation that can be used by a PPP connection to enable IP connectivity. IrOBEX is an object exchange (or "beaming") protocol closely related to HTTP that is the recommended way to transfer data between IrDA-compliant devices. IrOBEX is an important connectivity protocol since it has been reused as the basis of the Bluetooth generic object exchange profile (GOEP). Symbian OS has excellent IrCOMM and IrOBEX support. IrCOMM is supported through a core virtual serial port module (ircomm.csy). IrOBEX is supported through a client side library (obex.dll) that is also used for OBEX over Bluetooth use cases. Both modules lie above the core IrDA stack.
IrDA support is a standard part of the Linux 2.4 kernel series and many modern distributions offer support for the IrDA stack and IrCOMM serial port emulation. If you have built-in IrDA hardware then it's quite likely that it will be automatically picked up during a Linux distribution installation - this is certainly the case with Mandrake.
If you do not have Linux IrDA support enabled, you will need to rebuild your kernel to include it. The official Linux Infrared HowTo available here covers how to build IrDA and IrCOMM support into a Linux kernel. If you are not familiar with Linux kernel building, you should also read the Linux Kernel HowTo before attempting anything else. The key steps required to build IrDA support into a Linux kernel are outlined in the next subsection.
You can build IrDA support statically into a Linux kernel or in the
form of kernel modules. You should opt for kernel module support unless
you have a specific reason not to.
Before you begin building your kernel, you need to su to root.
Then you need to ensure that you have kernel sources available under
/usr/src/linux. Now you can cd to this directory:
cd /usr/src/linux
At this point you are ready to begin. For Mandrake kernels, you need to do
a make mrproper if it is the first time you have built a kernel.
Note that this call will remove any existing .config files:
make mrproper
Now you can invoke make xconfig to fire up the X Kernel Configurator
which gives you a graphical (X) interface to the contents of the
.config file:
make xconfig
Under this UI, you should see a button titled
"IrDA (infrared) support". Selecting this will allow you
to choose which IrDA kernel modules you want to build. On clicking the
button you should see this dialog window:
Kernel Configurator: main IrDA options
In the above diagram, we have selected IrDA module support (m) in the
kernel and we have elected for IrCOMM support only as IrLAN, IrNET and
the IrDA Ultra protocol are not supported on Symbian OS.
The IrDA device drivers should be selected through the embedded
"Infrared-port device drivers" button which brings up
this dialog window:
Kernel Configurator: IrDA driver options
In this case, we have selected modules for both native IrDA driver
(irport) and serial driver (irtty) support
for IrDA. It is a good idea to select both if you aren't sure how
to access IrDA support on your PC. irtty support is required
for all serial IrDA dongles.
We have also selected driver modules for the popular Extended Systems
Jeteye serial IrDA dongle and generic USB IrDA dongles. The latter is
an example of a FIR (Fast InfraRed) driver module.
Once you've finished with the Kernel Configurator you can save your changes and proceed with building the kernel and corresponding IrDA modules using the following commands:
make dep
make clean
make bzImage
make modules
make modules_install
At the end of this, the new kernel bzImageshould be in
/usr/src/linux/arch/i386/boot and the corresponding
kernel modules should be in /lib/modules/2.4.n where
n is the version of the kernel you have.
A uname -a will tell you what your current kernel is.
Once you have built your kernel, you need to update
/boot/grub/menu.lst if you are using the GRUB bootloader
and /etc/lilo.conf if you are using LILO.
It's worth noting that the Kernel HowTo covers common problems that you might hit with Linux kernel building and installation.
Assuming you have IrDA support enabled in your kernel and the
appropriate module has been built for your serial dongle, you
are in a position to test that IrDA is working correctly.
To do this, you first need to invoke lsmod as
root to see whether you have the appropriate kernel modules
loaded. If you have a Jeteye dongle, you should see the
following in the list of currently loaded modules:
Module Size Used by Not tainted
esi 928 1 (autoclean)
irtty 5920 2 (autoclean)
irda 90508 1 (autoclean) [esi irtty]
If these modules are not present, you could try loading them
manually by invoking modprobe <module>. Here's
an example showing how to load the esi and
irda modules:
modprobe esi irda
The kernel modules to be aware of for Jeteye serial dongle support
are as follows:
Provided you can load the IrDA kernel modules, you should be able to
start IrDA services using the irattach utility which
comes as part of the irda-utils package described in more
detail in section 3.2.4. Here is an example use of irattach
from a working system enabling Jeteye dongle support on COM1 with
discovery enabled:
irattach /dev/ttyS0 -d esi -s1
You can use irattach to establish the key configuration
information you need and then use it to set up an IrDA config file which
you should find here: /etc/sysconfig/irda
This config file needs to contain the right dongle (esi)
and the right serial port used by the dongle (/dev/ttyS0
for COM1). Note that IrDA support seems to work only if discovery is set
to "yes". Here's a /etc/sysconfig/irda corresponding to the
earlier irattach command:
IRDA=yes
DEVICE=/dev/ttyS0
DONGLE=esi
DISCOVERY=yes
Now you can start IrDA services at any time as follows:
/etc/init.d/irda start
and stop them using:
/etc/init.d/irda stop
The /etc/init.d/irda script is a copy of the
/etc/rc.d/init.d/irda system start up script so once
you have correctly set up the /etc/sysconfig/irda config
file, IrDA support will also be automatically enabled at boot time.
Setting up IrDA support with a serial dongle is relatively straightforward.
If you need to set up built-in IrDA support on a laptop, then you may need to
go into the laptop's BIOS to find out which physical serial port IrDA is
configured to use. You may also need to enable SIR mode in BIOS and then
use irattach to ensure that everything is working. Here is an
example from a working config with IrDA support enabled on COM4:
irattach /dev/ttyS3 -s
Note that you do not need to pass in any dongle module. Other than that,
the same kernel modules highlighted in the previous section
(i.e., irtty.o, irda.o,
ircomm.o and ircomm-tty.o) are used to
provide built-in IrDA support.
FIR mode is also supported with some built-in IrDA ports but it depends on the particular chipset. More information on Linux FIR support is available here
Linux IrDA support can be enhanced with the user side
irda-utils package. Assuming you have built and tested
the IrDA kernel modules OK, you can install irda-utils.
The latest version is irda-utils-0.9.15.tar.gz which
should work on 2.4.x and 2.5.x series kernels. It's available from
Jean Tourrilhes site where you can also find a really useful
Linux-IrDA quick tutorial.
Useful irda-utils programs include:
irattach: Utility for testing basic IrDA support.irdadump: IrDA packet analyser (root only).irpsion5: Utility for transferring data data to Psion Series 5/7 devices.
If IrDA support is correctly set up on Linux, the irdadump
command should show trailing IrLAP discovery sequences every 2-3 seconds.
Each sequence consists of 7 XID frames separated by approximately 90ms.
The following log shows two discovery sequences:
15:40:43.272951 xid:cmd cf8d16da > ffffffff S=6 s=0 (14)
15:40:43.362939 xid:cmd cf8d16da > ffffffff S=6 s=1 (14)
15:40:43.452928 xid:cmd cf8d16da > ffffffff S=6 s=2 (14)
15:40:43.542931 xid:cmd cf8d16da > ffffffff S=6 s=3 (14)
15:40:43.632933 xid:cmd cf8d16da > ffffffff S=6 s=4 (14)
15:40:43.722936 xid:cmd cf8d16da > ffffffff S=6 s=5 (14)
15:40:43.812930 xid:cmd cf8d16da > ffffffff S=6 s=* malm hint=0400 [ Computer ] (20)
15:40:46.272952 xid:cmd cf8d16da > ffffffff S=6 s=0 (14)
15:40:46.362940 xid:cmd cf8d16da > ffffffff S=6 s=1 (14)
15:40:46.452930 xid:cmd cf8d16da > ffffffff S=6 s=2 (14)
15:40:46.542929 xid:cmd cf8d16da > ffffffff S=6 s=3 (14)
15:40:46.632930 xid:cmd cf8d16da > ffffffff S=6 s=4 (14)
15:40:46.722937 xid:cmd cf8d16da > ffffffff S=6 s=5 (14)
15:40:46.812931 xid:cmd cf8d16da > ffffffff S=6 s=* malm hint=0400 [ Computer ] (20)
...
Below is some irdadump output from a Nokia 7650 with Infrared
enabled.
15:30:16.272952 xid:cmd cf8d16da > ffffffff S=6 s=0 (14)
15:30:16.362934 xid:cmd cf8d16da > ffffffff S=6 s=1 (14)
15:30:16.452929 xid:cmd cf8d16da > ffffffff S=6 s=2 (14)
15:30:16.542933 xid:cmd cf8d16da > ffffffff S=6 s=3 (14)
15:30:16.542925 xid:rsp cf8d16da < 4ef47f8f S=6 s=2 Nokia 7650 hint=9225 [ PDA/Palmtop Modem Telephony IrCOMM IrOBEX ] (28)
15:30:16.632931 xid:cmd cf8d16da > ffffffff S=6 s=4 (14)
15:30:16.722956 xid:cmd cf8d16da > ffffffff S=6 s=5 (14)
15:30:16.812931 xid:cmd cf8d16da > ffffffff S=6 s=* malm hint=0400 [ Computer ] (20)
15:30:17.422925 xid:cmd ffffffff < 4ef47f8f S=1 s=0 (14)
15:30:17.422956 xid:rsp cf8d16da > 4ef47f8f S=1 s=0 malm hint=0400 [ Computer ] (20)
15:30:17.542925 xid:cmd ffffffff < 4ef47f8f S=1 s=* Nokia 7650 hint=9225 [ PDA/Palmtop Modem Telephony IrCOMM IrOBEX ] (28)
15:30:17.592925 snrm:cmd ca=fe pf=1 cf8d16da < 4ef47f8f new-ca=5c
LAP QoS: Baud Rate=115200bps Max Turn Time=500ms Data Size=2048B Window Size=1 Add BOFS=0 Min Turn Time=1000us Link Disc=20s (32)
15:30:17.592967 ua:rsp ca=5c pf=1 cf8d16da > 4ef47f8f
LAP QoS: Baud Rate=115200bps Max Turn Time=500ms Data Size=2048B Window Size=7 Add BOFS=0 Min Turn Time=10000us Link Disc=12s (31)
15:30:18.132933 rr:cmd < ca=5c pf=1 nr=0 (2)
15:30:18.132961 rr:rsp > ca=5c pf=1 nr=0 (2)
15:30:18.152929 i:cmd < ca=5c pf=1 nr=0 ns=0 LM slsap=54 dlsap=00 CONN_CMD (6)
15:30:18.152969 i:rsp > ca=5c pf=1 nr=1 ns=0 LM slsap=00 dlsap=54 CONN_RSP (6)
15:30:18.212928 rr:cmd < ca=5c pf=1 nr=1 (2)
15:30:18.212943 rr:rsp > ca=5c pf=1 nr=1 (2)
15:30:18.232933 i:cmd < ca=5c pf=1 nr=1 ns=1 LM slsap=54 dlsap=00 GET_VALUE_BY_CLASS: "mRouter" "IrDA:TinyTP:LsapSel" (33)
15:30:18.232958 i:rsp > ca=5c pf=1 nr=2 ns=1 LM slsap=00 dlsap=54 GET_VALUE_BY_CLASS: No such class (11)
15:30:18.292931 rr:cmd < ca=5c pf=1 nr=2 (2)
15:30:18.292954 rr:rsp > ca=5c pf=1 nr=2 (2)
15:30:18.312933 i:cmd < ca=5c pf=1 nr=2 ns=2 LM slsap=54 dlsap=00 GET_VALUE_BY_CLASS: "IrDA:IrCOMM" "Parameters" (28)
15:30:18.312960 i:rsp > ca=5c pf=1 nr=3 ns=2 LM slsap=00 dlsap=54 GET_VALUE_BY_CLASS: No such class (11)
15:30:18.372927 rr:cmd < ca=5c pf=1 nr=3 (2)
15:30:18.372943 rr:rsp > ca=5c pf=1 nr=3 (2)
15:30:18.392932 i:cmd < ca=5c pf=1 nr=3 ns=3 LM slsap=54 dlsap=00 GET_VALUE_BY_CLASS: "IrModem" "IrDA:TinyTP:LsapSel" (33)
15:30:18.392952 i:rsp > ca=5c pf=1 nr=4 ns=3 LM slsap=00 dlsap=54 GET_VALUE_BY_CLASS: No such class (11)
15:30:18.452927 rr:cmd < ca=5c pf=1 nr=4 (2)
15:30:18.452941 rr:rsp > ca=5c pf=1 nr=4 (2)
15:30:18.472932 i:cmd < ca=5c pf=1 nr=4 ns=4 LM slsap=54 dlsap=00 GET_VALUE_BY_CLASS: "IrLPT" "IrDA:IrLMP:LsapSel" (30)
15:30:18.472955 i:rsp > ca=5c pf=1 nr=5 ns=4 LM slsap=00 dlsap=54 GET_VALUE_BY_CLASS: No such class (11)
15:30:18.542928 rr:cmd < ca=5c pf=1 nr=5 (2)
15:30:18.542948 rr:rsp > ca=5c pf=1 nr=5 (2)
15:30:18.562929 i:cmd < ca=5c pf=0 nr=5 ns=5 LM slsap=54 dlsap=00 DISC (6)
15:30:18.572932 i:cmd < ca=5c pf=1 nr=5 ns=6 LM slsap=01 dlsap=02 CONN_CMD (6)
15:30:18.572950 rr:rsp > ca=5c pf=1 nr=7 (2)
15:30:18.632928 rr:cmd < ca=5c pf=1 nr=5 (2)
15:30:18.632943 rr:rsp > ca=5c pf=1 nr=7 (2)
15:30:18.702929 rr:cmd < ca=5c pf=1 nr=5 (2)
15:30:18.702947 rr:rsp > ca=5c pf=1 nr=7 (2)
15:30:18.762934 rr:cmd < ca=5c pf=1 nr=5 (2)
15:30:18.762963 rr:rsp > ca=5c pf=1 nr=7 (2)
15:30:19.012932 rr:cmd < ca=5c pf=1 nr=5 (2)
15:30:19.012956 rr:rsp > ca=5c pf=1 nr=7 (2)
15:30:19.302934 rr:cmd < ca=5c pf=1 nr=5 (2)
15:30:19.302965 rr:rsp > ca=5c pf=1 nr=7 (2)
15:30:19.652930 rr:cmd < ca=5c pf=1 nr=5 (2)
15:30:19.652950 rr:rsp > ca=5c pf=1 nr=7 (2)
15:30:20.042934 rr:cmd < ca=5c pf=1 nr=5 (2)
15:30:20.042965 rr:rsp > ca=5c pf=1 nr=7 (2)
15:30:20.492932 rr:cmd < ca=5c pf=1 nr=5 (2)
15:30:20.492955 rr:rsp > ca=5c pf=1 nr=7 (2)
15:30:20.992933 disc:cmd < ca=0x5c pf=1 (2)
15:30:20.992958 ua:rsp ca=5c pf=1 cf8d16da > 4ef47f8f (10)
15:30:22.272946 xid:cmd cf8d16da > ffffffff S=6 s=0 (14)
15:30:22.362931 xid:cmd cf8d16da > ffffffff S=6 s=1 (14)
15:30:22.452928 xid:cmd cf8d16da > ffffffff S=6 s=2 (14)
15:30:22.542931 xid:cmd cf8d16da > ffffffff S=6 s=3 (14)
15:30:22.632929 xid:cmd cf8d16da > ffffffff S=6 s=4 (14)
15:30:22.722932 xid:cmd cf8d16da > ffffffff S=6 s=5 (14)
15:30:22.812940 xid:cmd cf8d16da > ffffffff S=6 s=* malm hint=0400 [ Computer ] (20)
...
Note that the 7650 attempts to connect to Linux and sends out a
series of IrDA IAS service queries starting with one on
mRouter. The mRouter query attempts to locate a
remote mRouter service which is employed by the Windows Connectivity
Suite software to provide a conduit for backup/restore and Contacts/Agenda
synchronisation on the PC. PC Connectivity and mRouter are covered in
greater detail in a separate section of this HowTo.
OBEX support for Linux must be downloaded separately from the
OpenOBEX site
Two packages are required, openobex
and openobex-apps - we used version 0.9.8.
You need to ensure that you do a
./configure --prefix=/usr to get the
openobex-0.9.8 libs in the right directory.
Infrared beaming between Linux and Symbian OS uses IrOBEX. The type of data that can be beamed between the two platforms includes:
.vcf).vcs)The appropriate command to use for infrared beaming from Linux to a Symbian OS smartphone is somewhat ironically:
irobex_palm3
Since no file is named, the program will wait for incoming data.
All incoming files are stored in /tmp. Contacts and Agenda entries
come over as .vcf and .vcs files and are
beamed from these respective applications.
In order to beam files, you will need to have a Symbian OS file browser present.
The P800 has a built-in file browser but the 7650 does not. Dominique Hugo
has written a comprehensive freeware 7650 file browser which you can download
here.
Alternatively, you can use the GPL
forward
application to inspect and selectively beam file attachments lying
in the 7650 Messaging Inbox to Linux.
The appropriate command to use for beaming a file from Linux is:
irobex_palm3 <file>
This will transfer a vCard, vCalendar entry or a file to any Symbian
OS device with Infrared enabled. Files appear in the Messaging Inbox
and if they are recognised by Symbian OS they are imported into the
relevant applications. This is the case for Contacts and Agenda with
correctly formatted .vcf and .vcs files.
The P800 has a file browser which allows you to locate beamed files.
The 7650 has no file browser but files sitting as attachments in the
Messaging Inbox can be taken off it using the
forward
application. In both cases, the Symbian OS device can be
used for general purpose file storage.
It is straightforward to set up dial-up networking (DUN) over infrared from a Linux device acting as a terminal (DTE) to a Symbian OS smartphone acting as an infrared modem. In order to do so, it's worth gaining some familiarity with the Linux PPP daemon (pppd) and with dial-up chat scripts. The PPP HowTo and pppd man page are important resources in this regard.
In order to begin, you need to ensure that you have switched on IR modem functionality on the phone. On Symbian OS devices, this is generally enabled separately from general IR receive functionality and may only allow connection for a limited duration. On the 7650 you enable infrared modem using the Modem control applet under the main system Connectivity folder. On the P800 you enable infrared modem using the Infrared settings in the Control Panel. In both cases, IR modem functionality and general IrDA functionality (which includes PC Connectivity) are mutually exclusive because they both require the single Symbian OS IrCOMM port.
Once you've enable IR modem on your Symbian OS device, you need to ensure that
you have set up your chat script correctly before attempting to connect as a
PPP client over IrCOMM.
Note that on Linux, IrCOMM support should be available on the
/dev/ircomm0 virtual serial port.
Assuming all this is in place and you have aligned your IrDA ports,
invoking the following on Linux should establish a dial-up connection
over infrared:
pppd -d -detach call ppp0 /dev/ircomm0
Note that for pppd 2.4.1 the corresponding chat command that this invokes is held in /etc/ppp/peers/ppp0 which on Mandrake 8.2 consists of a single pppd option:
connect "/usr/sbin/chat -f /etc/sysconfig/network-scripts/chat-ppp0"
This invokes the chat script /etc/sysconfig/network-scripts/chat-ppp0 which you will need to edit appropriately if you have never set it up before. In particular, you will need to fill in the relevant ISP specific details. Here is a basic version of this chat script that works for dial-up connection to Freeserve (a UK ISP) over GSM:
ABORT 'BUSY'
ABORT 'ERROR'
ABORT 'NO CARRIER'
ABORT 'NO DIALTONE'
ABORT 'Invalid login'
ABORT 'Login incorrect'
ECHO OFF
'' 'ATZ'
SAY "Dialling Freeserve...\n"
'OK' 'ATDT08450796699'
TIMEOUT 30
SAY "Waiting for connection\n'"
CONNECT ''
SAY "Connected to FreeServe, logging in...\n"
ogin: <myusername>
assword: <mypassword>
TIMEOUT 50
'~--' ''
SAY "Successfully logged into FreeServe, starting pppd.\n"
It is also possible to establish a connection over GPRS for which you need to replace the dial string ATDT command with the following sequence in your chat script:
'' AT*99***n#
where n corresponds to your GPRS profile (typically 1).
You also need to remove the username and password strings.
It is possible to set up Symbian OS devices to connect to a pppd server instance on Linux directly over IR via PPP. In order to do this, however, it is necessary to configure the relevant PPP settings on both your Symbian OS device and Linux.
In order to set up the Linux side of the link, you need to prepare
pppd for incoming connections. There are some security issues here
relating to the setuid root nature of pppd and you will need to
su to root in order to proceed. You could make things work
by changing the global pppd options file /etc/ppp/options
but it's better to set up incoming pppd connections with separate pppd
peer scripts. The pppd man pages cover this in some detail. First you
need to create (as root) an appropriate file in /etc/ppp/peers
(e.g., /etc/ppp/peers/incomingIrda) which contains information
about the serial port for incoming pppd service plus information on link
authentication, DNS and IP settings like this:
noauth
local
modem
proxyarp
/dev/ircomm0
ms-dns <mydnsserveripaddress >
192.168.0.3:192.168.0.4
Then you can invoke pppd as follows:
pppd -d -detach call incomingIrda
In order to set up the Symbian OS device, you will need to manipulate the CommDB (Comms Internet Database) on the Symbian OS device which holds information relating to phone and modem settings. It used to be possible to do this manually on the Psion 5 and Revo devices using the Modem control panel applet but this functionality has been obfuscated in Symbian OS 6.0 and beyond. For 7650 users, the GPL gnubox application should offer some pointers as to how you could proceed. Gnubox will turn your 1-box 7650 into a 2-box you can use with Linux and provides IP connectivity to your 7650 over infrared (and Bluetooth) through Linux. You will need to ensure that you switch on IP forwarding in order to get gnubox to work:
echo "1" > /proc/sys/net/ipv4/ip_forward
Please note that at the time of writing, the gnubox application is of experimental status.
The advantage of 2-box operation is that it means you're able to get IP connectivity without paying a netop for the privilege. If you have ADSL, you'll get this additional IP connectivity for free with your 7650 connected through proxyarp as a capillary of the Internet:
192.168.0.x
Nokia LAN segment
7650 (ethernet)
IP forward
+ proxyarp |
| enabled |
--- ----------- |
| | | | |
| | <- - - - - - - - - - - -> | Linux box |------
| | PPP link | | |
--- ----------- |
192.168.0.7 192.168.0.8 192.168.0.2 |
| IP gateway
--------
| ADSL |
| router |======> Internet
| + NAT |
--------
192.168.0.1
There is good infrared interoperability between Linux and older Symbian OS devices, particularly the Psion Series 5mx and Revo. A very useful resource for all Linux-Psion interoperability issues is the existing Linux and Psion How To.
The Psion Series 5/5mx, Psion Revo and Psion Netbook all use a proprietory
beaming protocol called eikirda for beaming. Support for this protocol
was dropped after Symbian OS 5u in favour of the now standard
IrOBEX protocol. However, support for the old eikirda protocol is
provided on Linux in the form of the handy irpsion5 utility that
comes as part of the Linux irda-utils package.
irpsion5 can be used to rescue files stranded on an old Psion
device. It also allows you to use the Psion device as a file storage facility.
plptools.org.
The older kit used to allow you to configure direct PPP connections over IR using the control panel "Internet" wizard. This functionality is still in place today but has been obscured in the smartphone-centric Symbian OS releases 6.1 and 7.0 leading to the requirement for tools like gnubox to open up the underlying support to users.
IrCOMM can be used to or PPP clients by invoking /dev/ircomm0
For example, minicom can be invoked and you can use it to talk to
/dev/ircomm0. And also getty stuff. All handy for Series 5/5mx/Revo owners.
The Bluetooth hardware and software specifications are only available to members of the Bluetooth Consortium at the Bluetooth SIG's official web site www.bluetooth.org. For users and developers wishing to gain a good understanding of the Bluetooth specification and architecture, Bluetooth Explained. is a handy resource. The Bluetooth specification goes one stage further than the IrDA specs in that it comprehensively covers both protocols and use cases. The key Bluetooth protocols are HCI for access to the Bluetooth radio (which operates in the 2.4GHz ISM band), L2CAP for basic data services, SDP for service discovery and RFComm for serial emulation. The Bluetooth use cases are formalised through the a collection of profiles such as the Serial Port Profile (SPP), the Dial-Up Networking Profile (DUNP) and the File Transfer Profile (FTP). The Bluetooth profiles build upon each other from the mandatory GAP (Generic Access Profile) which covers inquiry, connection, device pairing, data transfer and disconnection.
The Bluetooth protocols and profiles are well supported on Symbian OS. A core Bluetooth stack protocol module (bt.prt) provides socket access to the L2CAP and RFComm protocols and also encapsulates HCI access. SDP and security are managed through separate APIs. Profiles are woven into the Symbian OS system architecture. For example, DUNP support requires the use of the TCPIP networking subsystem.
Symbian OS Bluetooth stack architecture
The Nokia 7650 supports the following profiles: GAP, SPP, FAXP, DUNP, LANP, OPP, FTP. Below is a listing of the output of an SDP service record browse of a 7650. Note that DUNP and FTP are both supported on RFComm channel 1, SPP is supported on channel 2 and OPP and FTP are supported on RFComm channels 9 and 10 respectively.
==============================
Service Name: Fax
------------------------------
SvcRecHdl: 0x10000
Service Class ID List:
"Fax" (0x1111)
"Generic Telephony" (0x1204)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Port/Channel: 1
Profile Descriptor List:
"Fax" (0x1111)
Version: 0x0100
Browse Group List:
"PublicBrowseGroup" (0x1002)
==============================
Service Name: Dial-up Networking
------------------------------
SvcRecHdl: 0x10001
Service Class ID List:
"Dialup Networking" (0x1103)
"Generic Networking" (0x1201)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Port/Channel: 1
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100
Browse Group List:
"PublicBrowseGroup" (0x1002)
==============================
Service Name: OBEX Object Push
------------------------------
SvcRecHdl: 0x10003
Service Class ID List:
"Obex Object Push" (0x1105)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Port/Channel: 9
"OBEX" (0x0008)
Profile Descriptor List:
"Obex Object Push" (0x1105)
Version: 0x0100
Browse Group List:
"PublicBrowseGroup" (0x1002)
==============================
Service Name: Bluetooth Serial Port
------------------------------
SvcRecHdl: 0x10035
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Port/Channel: 2
Browse Group List:
"PublicBrowseGroup" (0x1002)
==============================
Service Name: OBEX File Transfer
------------------------------
SvcRecHdl: 0x10039
Service Class ID List:
"Obex File Transfer" (0x1106)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Port/Channel: 10
"OBEX" (0x0008)
Profile Descriptor List:
"Obex File Transfer" (0x1106)
Version: 0x0100
Browse Group List:
"PublicBrowseGroup" (0x1002)
The P800 supports GAP, SPP, DUNP and OPP as well as the Bluetooth Headset Profile. Note that the Headset Profile uses audio routing hardware in the P800 to handle the audio stream. The Headset Profile is not supported on the 7650. Below is a corresponding listing of the output of an SDP service record browse of a P800:
==============================
Service Name: Voice gateway
Service Description: Voice gateway
Service Provider: Sony Ericsson
------------------------------
SvcRecHdl: 0x10000
Service Class ID List:
"Headset Audio Gateway" (0x1112)
"Generic Audio" (0x1203)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Port/Channel: 8
Profile Descriptor List:
"Headset" (0x1108)
Version: 0x0100
Browse Group List:
"PublicBrowseGroup" (0x1002)
==============================
Service Name: OBEX Object Push
------------------------------
SvcRecHdl: 0x10001
Service Class ID List:
"Obex Object Push" (0x1105)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Port/Channel: 1
"OBEX" (0x0008)
Profile Descriptor List:
"Obex Object Push" (0x1105)
Version: 0x0100
Browse Group List:
"PublicBrowseGroup" (0x1002)
==============================
Service Name: Bluetooth Serial Port
Service Description: Bluetooth Serial Port
Service Provider: Symbian Ltd.
------------------------------
SvcRecHdl: 0x10002
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Port/Channel: 2
Browse Group List:
"PublicBrowseGroup" (0x1002)
==============================
Service Name: Dial-up Networking
Service Description: Dial-up Networking
Service Provider: Sony Ericsson
------------------------------
SvcRecHdl: 0x10003
Service Class ID List:
"Dialup Networking" (0x1103)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Port/Channel: 3
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100
Browse Group List:
"PublicBrowseGroup" (0x1002)
The official Linux Bluetooth stack is BlueZ (bluez.sourceforge.net). BlueZ consists of a number of kernel modules that provide basic Bluetooth stack support for the HCI and L2CAP layers of the Bluetooth protocol stack. User side daemons provide RFComm and SDP support. BlueZ is not well integrated with the OpenObex implementation which limits it's scope for interoperability with Symbian OS based smartphones. If you want good Bluetooth interop between Linux and Symbian OS you need to install Nokia's GPL Affix Bluetooth stack for Linux rather than BlueZ.
Note that if you previously installed BlueZ, you need to remove it and its accompanying user side utilities before you can install Affix. To remove user installed BlueZ user side utilities and libraries:
Now you just need to remove the BlueZ kernel modules and kernel source in order to . It's worth As BlueZ is the official Linux Bluetooth stack, it's quite possible that your distribution already installed various BlueZ specific kernel modules even if you didn't.
USB should now be working OK. Main module that interfaces hci
with USB is hci_usb. With just the USB dongle plugged in,
lsmod (as root) should show:
bluez [hci_usb]
usbcore [hci_usb usb-uhci]
hci_usb
usb-uhci (unused)
hci_uart.o, hci_usb.o, hci_vhci.o
in /lib/modules/2.4.18/kernel/drivers/bluetooth and
bluez.o, bnep.o, l2cap.o and sco.o
in /lib/modules/2.4.18/kernel/net/bluetooth
Uninstalling the BlueZ drivers involves removing the relevant modules
from /lib/modules and source from /usr/src/linux
directories and comment out /etc/modules.conf entries for
BlueZ. Also need to remove the Bluetooth USB driver.
Set up /etc/modules.conf:
alias net-pf-31 hci
alias bt-proto-0 l2cap
alias bt-proto-2 sco
# for PCMCIA??
alias tty-ldisc-15 hci_uart
Now do depmod -a to see.
If you want to, you can opt to rebuild kernel modules at this stage
rather than manually delete the BlueZ modules in /lib/modules.
The commands to do this (as root) are:
make modules
make modules_install
In order to install the Affix Bluetooth stack, you need to install the affix-kernel modules first:
make config
make all
make install
Provided everything works OK, you should see affix.o, affix_pan.o and affix_rfcomm.o go into /lib/modules/2.4.18/kernel/net/bluetooth and affix_uart.o and affix_usb.o go into /lib/modules/2.4.18/kernel/drivers/bluetooth.
To complete the installation you need to install the affix
package itself which contains all the profile support.
The ? package uses existing OpenObex implementation.
./configure
make
make install
You need to ensure that openobex-0.9.8 is installed or else the Affix installation will fail. It is needed for FTP and OPP support.
btctl and btsrv are the two main user
side utilities for controlling the Affix Bluetooth stack. btctl is used to
manage all outgoing connections and btsrv to handle services for incoming
connections. Below are a collection of ways of invoking btctl to illustrate
the sort of things you can do with it. You should familiarise yourself with
this powerful Bluetooth management tool.
To display status:
btctl
To change name of device to "My Linux Box":
btctl name "My Linux Box"
To discover Bluetooth devices (4 sec timeout):
btctl discovery 4
To list current devices:
btctl list
To browse the SDP service records on device 3 in this list:
btctl browse 3
To make discoverable and connectable (the default mode for Affix):
btctl scan + conn
To set the PIN for device 3 to "1234":
btctl addpin 3 1234
To connect to the remote Serial Port service running on device 1 in the list:
btctl connect 1 SER
Invoking btctl status will give you the currently active
lines (ie. RFComm connections). To disconnect line 0:
btctl disconnect 0
To fire up incoming service handlers:
btsrv --debug
<Discuss pairing and bonding at this point and how you can set up connection between your 7650 and Linux PC to come on without any authorisation being required each time. You will need to re-establish the bonding on reboot of Linux.>
<Discuss the GTK+ 1.2 graphical front end (afe) for btctl and btsrv.>
Ethereal plugin: patch available from affix.sourceforge.net for ethereal-0.9.7. To apply patch:
patch -i <patchfile>
in the ethereal-0.9.7 source directory.
There are two Bluetooth beaming specific profiles, OPP and FTP. OPP is generally used to beam vCards and vCalendar entries via OBEX. FTP is used to beam files.
Under Affix, both are supported through service handlers managed through
btsrv. Pushed files go to ~/Inbox for users or
/var/spool/affix for root. These files can be imported into
the Evolution mail client but with the proviso that the vCards do not contain
picture information. On the P800 you can additionally beam all your vCards
in on embedded vCard which serves as a handy way of backing up the data. For
incoming OBEX connections on Linux, you need to fire up the Affix OPP and FTP
services. In order to do file beaming from the 7650, however, you need a file
browser application as was highlighted in Section 3.3.1. You can download
a comprehensive freeware 7650 file browser that supports Bluetooth beaming
here.
Effectively this means you
get a view on the 7650's underlying file system as the file transfer is done
using FTP. Alternatively, you can use the GPL
forward
application to inspect and selectively beam file attachments lying
in the 7650 Messaging Inbox to Linux.
The 7650 supports both FTP and OPP services. P800 only supports OPP. In order
to send objects or files from Linux to these smartphones you use
btctl ftp.
To send object.vcf to device 1 in the discovered list:
btctl ftp
> push 1 object.vcf
Something?
It is straightforward to set up DUN over Bluetooth from a Linux device acting
as a DTE to a Symbian OS smartphone acting as a Bluetooth modem. First you
need to use btctl to establish a connection to the DUN service
running on the smartphone:
btctl connect n DUN
where n is number of the Symbian OS device in the listing given by
btctl list.
If you have problems establishing a pairing between Linux and the smartphone,
you should reset the PIN for the Symbian OS device as follows:
btctl addpin n 1234
Again, replace n with the number for your device in
btctl list. The PIN here has been set to "1234".
Now when you try to btctl connect you will need to enter the PIN
you added in the 7650 when prompted. To avoid the annoying additional
"Accept connection request from <remote Linux PC>" prompt on the
7650 you can set your Linux box as authorised by going into the system
Connectivity->Bluetooth->Paired Devices panel and selecting
Options->Set as authorised. Now you will be able to automatically connect to
DUN with the btctl connect n DUN command
Invoking btctl status at this point should show the active
Bluetooth RFComm connection on /dev/bty0:
Connected lines:
line: 0 [/dev/bty0], bda: 00:02:ee:4d:8c:9f, channel: 1
It is possible to disconnect this connection at any stage as follows:
btctl disconnect 0
Once you've established the DUN connection, you need to invoke pppd to
run a chat script over the connection before you can
connect as a PPP client over /dev/bty0.
The following command will do this for you:
pppd -d -detach call ppp0 /dev/bty0
Note that for pppd 2.4.1 the corresponding chat command that this invokes is held in /etc/ppp/peers/ppp0 and on Mandrake 8.2 this invokes the chat script /etc/sysconfig/network-scripts/chat-ppp0. Here is a basic version of this chat script that works for dial-up connection to Freeserve over GSM:
ABORT 'BUSY'
ABORT 'ERROR'
ABORT 'NO CARRIER'
ABORT 'NO DIALTONE'
ABORT 'Invalid login'
ABORT 'Login incorrect'
ECHO OFF
'' 'ATZ'
SAY "Dialling Freeserve...\n"
'OK' 'ATDT08450796699'
TIMEOUT 30
SAY "Waiting for connection\n'"
CONNECT ''
SAY "Connected to FreeServe, logging in...\n"
ogin: <myusername>
assword: <mypassword>
TIMEOUT 50
'~--' ''
SAY "Successfully logged into FreeServe, starting pppd.\n"
It is also possible to establish a connection over GPRS for which you need to replace the dial string ATDT command with the following sequence in your chat script:
'' AT*99***n#
where n corresponds to your GPRS profile context ID
(typically 1). You also need to remove the username and
password strings.
It is possible to set up Symbian OS devices to connect to a pppd instance on Linux directly over Bluetooth via PPP. In order to do this, however, it is necessary to configure the PPP settings on both your Symbian OS device and Linux.
In order to set up the Linux side of the link, you need to prepare
pppd for incoming connections. There are some security issues here
relating to the setuid root nature of pppd and you will need to
su to root in order to proceed. You could make things work
by changing the global pppd options file /etc/ppp/options
but it's better to set up incoming pppd connections with separate pppd
peer scripts. The pppd man pages cover this in some detail. First you
need to create (as root) an appropriate file in /etc/ppp/peers
(e.g., /etc/ppp/peers/myBluetooth7650) which contains
information about the serial port for incoming pppd service plus
information on link authentication, DNS and IP settings like this:
noauth
local
modem
proxyarp
/dev/bty0
ms-dns <mydnsserveripaddress>
192.168.0.5:192.168.0.6
Then you can invoke pppd as follows:
pppd -d -detach call myBluetooth7650
In order to set up the Symbian OS device, you will need to manipulate
the CommDB (Internet settings database) on the Symbian OS device which
holds information relating to phone and modem settings. Specifically
you need to set an empty ISP dial string. This will force a direct PPP
connection over the designated virtual serial port which for Bluetooth
will correspond to BTCOMM::0 on Symbian OS. It used to be
possible to do this manually on the Psion 5 and Revo devices using the
Modem control panel applet but this functionality has been obfuscated
in Symbian OS 6.0 and beyond. For 7650 users, the GPL
gnubox
application should offer some pointers as to how to proceed
programatically. Gnubox will turn your 1-box 7650 into a 2-box you
can use with Linux and provides IP connectivity to your 7650 over
Bluetooth (and infrared) through Linux. Gnubox can be used to discover
and set up the connection to your Linux LAN access point.
You will need to ensure that you switch on IP forwarding in order to
get gnubox to work:
echo "1" > /proc/sys/net/ipv4/ip_forward
Please note that at the time of writing, the gnubox application is approaching beta...
The advantage of 2-box operation is that it means you're able to get IP connectivity without paying an ISP for the privilege. If you have ADSL, you'll get this additional IP connectivity for free with your 7650 is connected through proxyarp as a capillary of the Internet. This is an interesting use case since it constitutes an good example of piranha networking in operation. Furthermore, it is possible to adapt the gnubox utility to set up this connection to be automatically enabled once an authenticated and authorised Symbian OS smartphone comes within range of the Linux LAN access point. An interesting project would be to port a VOIP stack to the 7650 and then you might not need to spend any money on phone calls... What's more, you'd be able to access data and voice functionality simultaneously. This kind of "Bluetooth WLAN" setup could be particularly cost effective for SOHO environments with cheap ADSL connections.
For Symbian OS devices up to Symbian OS 6.1, PC Connectivity is based on the legacy Psion PLP protocol which provides basic peer to peer link connection between Symbian OS and Windows-based EPOC and Symbain Connectivity Suite software. The plptools initiative reverse-engineered this protocol and in the process generated some excellent protocol documentation. The plptools team also figured out the higher level backup/restore protocol that runs over the PLP link and put together a nice KDE utility for backing up Psion 5/5mx and Psion Revo devices over serial cable or infrared.
Apart from the plptools output, there is very little freely available material on the PLP-based PC Connectivity architecture and protocols. However, Symbian have hosted a useful introduction to the general architecture and functionality of the PC side software available here
For Symbian OS 6.1, the PLP protocol has been deprecated in favour of a PPP based peer to peer connection architecture.
Discuss mRouter and the move away from PLPTools for 6.1 and 7.0.Once the mRouter connection is up, backup/restore is accessed through port 3002 and contacts synchronisation through port 3003. Details of the corresponding protocols are not currently available. If the specification for this protocol were to be more opened up, it would allow interested parties to integrate contacts synchronisation support into the Ximian Evolution Workgroup and Personal Information Manager.
It is possible to import .vcf files from a Nokia 7650 into the
Evolution mail client as long as they do not contain photos. Here is a full
vCard (with thumbnail photo) beamed from a 7650 to Linux:
BEGIN:VCARD
VERSION:2.1
N:Brent;David
TEL;VOICE:01234567891
TEL;CELL:01234567891
EMAIL:d.brent@wernham-hogg.co.uk
ADR:;;Slough Trading Estate;Slough;;;U.K.
TITLE:Office Manager
ORG:Wernham-Hogg
NOTE:This is not a real person
PHOTO;TYPE=JPEG;ENCODING=BASE64:
/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEj
JR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARES
EhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2Nj
Y2NjY2NjY2NjY2NjY2P/wAARCABgAFADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA
AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh
MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6
Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ
mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx
8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp
anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE
xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDp
DScD2pe9Ia4iUG6qV7qcFop3MC3YCodX1FbOIqpy5HArkZJJbmQnlmJ+taRgrXew
at2R0Q8RqT/q+KuWuswTj5iFI965qDSLqYZCkA1YGiXaDg4pt0yuRnWR3MUi7lcY
+tSggjIOa4mb7XZjbJnb2Ird0DUftEPlSv8AMOBnrik4pq8XcTTT1NqjFFFZ7CEp
rsEQsegGacajnXfC65xkYo6jORud2pakQDxnH4VtWmmwQKDtBaqWlwpbyytIwG04
yautqVupCq4JNOpduy2NY2S03NGMhcAACnMRWXLeYUsp4HNZ41K4uJCqHYucZPWo
imy3Se5tXdvHcQlHAORXLw5sdUABwobH4VtwsSQryE596ztbtfLlWVehqqbSlbuT
KLSszq42DoGBzkZp9UNIcvYxlvSr2abVnYw6CdaRxlTjuKU0dqT3Gc4lqGmnWUng
5x61UulhjYCNMsfQV0k0Cebv6Fhg+9VpLWLOSoGKHJ3udFNpKxV02AyWr+YOSOKp
vpzmUgEj6VYudTFs3lxDAx1pLPUGlXfleDg0WlutLmqerT28y3ZWQjUM5OR60uox
JNEFboDxUi3SzKMYpHUONpPBqG3e99SWm3r9xPprAQ7FGAvAq6KrWcQjjwDnPerO
e1Wm3qzmnbmdthM0hpaTJoJGSIHGDWZqUrRoQvUitQ9KzNVXaASMgj9aLbGtNpSS
ZyziS5YiXI2njFLCpgJKHd6jNWoo0ZZNzYJPWoIhBAxLSZrS/Q2ST1ZftLsMOm1h
1FaMdwHwD3rmnukWctGeKvWd4HcDPeocOqKc4tWbOujAWMAelSZrOhvGcbY0BIHr
UwmnH/LL9aFHQ429S1SE1G88affcD6mq0mp2ydZBxTUW9ibouEgDJwKztQmjeFlw
SB1I7Vn3uuxE7UJKjrjvVCbxArRFPLAU8AetUoW1Y09SjqEjq528Ke9ZbOx6mrV1
P5zEqTjriqDE5Jq/Ipu7JASaswzGDnPNQEgICPSoixY0kF7GzYaxLb3QkJyvQj2r
oJvEluqDyhuYjp6VxK4Xkmnh8nOelDs9yWrs3ri9ZycuSaovI755PNP2DBJOAOpp
iRSXsnlQD5R1Y1q2kiUio7Fm2x5JPenCylYgEYz2rS+xxW2FBy3c9qjmuFiBPVjw
Ki19WVczJYyriJASxOMdSTSvbGAHzRhscCt3T7EQxG7uMbiM89hWLqFz9pnLDhRw
KQymSW+lKAF60hIXIppOTzRYRJuz0pQwHFRZo3CiwAD/2Q==
END:VCARD
Here is a .vcs Agenda entry beamed over from a Nokia 7650:
BEGIN:VCALENDAR VERSION:1.0 BEGIN:VEVENT UID:5 DESCRIPTION:Office meeting with Gareth DTSTART:20030107T090000 DTEND:20030107T090000 X-EPOCAGENDAENTRYTYPE:APPOINTMENT CLASS:PRIVATE DCREATED:20030107T000000 LAST-MODIFIED:20030107T181100 END:VEVENT END:VCALENDAR
An interesting project would be put together a Perl script that can translate between Symbian OS vCard format and native Evolution vCard format.
| 08/12/02 | v0.1 | Mal Minhas |
|
| 02/01/03 | v0.2 | Mal Minhas |
|
| 07/01/03 | v0.3 | Mal Minhas |
|
If you have any feedback or additional information particularly regarding interoperability issues with other Linux distributions, please mail me at: mal@symbianos.org.