Blogs

PHP on crack

I had a chuckle while reading Ed Finkler's PHP6 wish list. After reading the comment by Damien Seguy I almost fell off my chair.

Try running the following code under PHP

<?php ${'!@#$%^&*()[]:;"<>,./?'} = "i bet this won't work!<br>\n"; ${"omg???!!! wtf???!!! :D"} = "omg it does<br>\n"; echo ${'!@#$%^&*()[]:;"<>,./?'} . ${"omg???!!! wtf???!!! :D"};

It worked here on PHP 5.2.3 with ubuntu security fixes. I got

i bet this won't work!<br>
omg it does<br>

This contradicts the PHP manual, but hey it works.

Hello Planet Ubuntu Australia

Last week my blog was added to Planet Ubuntu Australia, the syndication site for Australian Ubuntu LoCo participants' blogs.

I have been rather busy with work and family commitments lately. I am hoping to give my poor neglected blog a little more TLC.

Linksys will Fix the SRW224G4 Firmware - Eventually

Yesterday I spent about 20 minutes discussing the lack of Firefox/gecko engine browser support in the webgui on the SRW224G4 with someone from Linksys. It was an interesting discussion.

When the SRW224G4 was originally released it supported Firefox but this support was dropped in a later revision which added support for new features and an updated user interface. The plan now is to put the Firefox support back in the next major release of the firmware. If I had a revision 1.0 switch I could downgrade my firmware, but the revision 1.0 firmware which supports Firefox will brick a 1.1 unit.

There were no firm commitments given, but I was told that I should see a Firefox compatible firmware for my SRW224G4 released sometime in the first half of 2008.

During the discussion I found out that the SRW224G4 information on Linksys' Australian website is way out of date compared to the US, the current datasheet makes it clear that the product is only usable with IE. I was told that this would be brought to the attention of the appropriate people, and fixed soon. Hopefully the phone support people will also be told what the real situation is with support for Firefox and other gecko based browsers.

Until I get the new firmware, I have 3 options, use a clunky console app for administering my switch, use IE under WINE or return it and get a refund. I am still deciding what I will do.

I don't think Linksys will be on the top of my list of networking kit vendors for a while. Dropping Firefox support is a serious regression in my book, regardless of the reason for it. I know the tech support guys are the first to cop it from users and the last to be informed about product changes, but the lack information about this issue has been very frustrating. The people responsible for maintaining the various Linksys websites should really lift their game.

If anyone can recommend a good supplier of relatively inexpensive, but reliable SIP desktop handsets, please post a comment.

Linksys Knows the SRW224G4 is Broken and Won't Fix it

Yesterday I emailed Linksys a link to my post about Linksys SRW224G4 switch being unusable with firefox and other FOSS browsers. The only response I received was an auto responder telling me to expect a response within 24 hours. After over 28 hours and another email, I still had no response. I wasn't expecting to get a "it has now been fixed, please test with this beta firmware - [link]", but I did expect something along the lines of "we have received your message and have forwarded it to the relevant section, you should receive a response in the next 5 business days". Instead of waiting any longer, I called Linksys.

After calling I spoke to one of the front line helpdesk people who put me though to Wendell, a Senior Technician at Linksys. I also spoke to Wendell last week about my problems with their WebView webGUI on the SRW224G4.

Wendell again told me that it worked with Internet Explorer 5.5+ and that I may find that some pages wouldn't work properly with firefox. After pushing Wendell, he agreed that it wasn't a case of some pages not working properly, but the unit was unless with any browser other than IE. He also told me that this was an issue which had been known by Linksys for some time, and that currently they have no plans to fix support for browsers other than IE 5.5+. I asked for information about where this was documented, Wendell pointed me to the release notes (a MS Word .doc) for the version 1.2.2a firmware for the SRW224G4/SRW248G4 which is only designed for revision 1.0 hardware - I have a revision 1.1 model, which doesn't have any firmware updates available.

The release notes contained the following information at the bottom of page 1.

8. Web browser availability

The web management interface is best viewed using Internet Explorer 5.5 and up, with a resolution of 1024 x 768. In the current software version, certain pages cannot be viewed well using other browsers. It is recommended to apply the following workarounds.

[then on the next page]

Note: Internet Explorer web browser must be installed prior to running the following procedures.

This is the first time I have ever been told that I should read the release notes for the latest available version of firmware for a device before purchasing it as the release notes may contradict the data sheet for the product.

The datasheet states

Features [...]
  • WebView monitoring allows administrators to view the current status and configuration using their favorite web browser

Under the management heading it states:

Web User Interface Built-in Web UI for easy browser-based configuration (HTTP/HTTPS)

The minimum requirements are pretty clear too:

  • Web-based Configuration Java-enabled Browser
  • Cat5 Ethernet Network Cable
  • TCP/IP Protocol installed on each computer within the network
  • Network Adapter installed in each computer
  • Network Operating System (e.g. Windows®, Linux, MacOS X)

My favourite browser is firefox, and I have java installed (although I see no need for java in the webgui), but I still can't administer my switch.

Instead of sending the unit back to the retailer for a refund, I would much rather see Linksys fix their faulty product.

These days, firefox, and other gecko based browsers, aren't niche browsers, they have a growing market share, not only in Australia, but globally. Large vendors should be supporting open standards and platforms, not just the dominant player.

I would recommend that anyone looking at purchasing any Linksys equipment look for alternatives which are more Free/Open Source Software friendly.

A link to this post will also be sent to Linksys, not just the help desk this time, and I will see what response I get. Keep watching.

Linksys SRW224G4 WebGUI is Broken

Last week I bought a Linksys SRW224G4 switch for my rack. It seemed like a nice piece of kit, and I got it for a good price.

The first part of the setup went well enough, using the telnet interface. As I wanted to get my head around all the options the switch offered, I thought I would try WebView (aka the webgui). The image below shows what I got with Firefox, on Konqueror is worse.

screenshot of broken Linksys SRW224G4 WebGUI

The Linksys helpdesk wasn't very helpful. Most calls weren't returned when promised and the scripts didn't seem to deal with this issue. In the end I was told to use Internet Explorer. I knew it worked with IE6 running under WINE, but that isn't the point. This is a modern piece of network infrastructure - it should work on any browser, especially one which has almost 30% market share in Oceania.

For the last 5 years or so I have used a fair bit of Linksys kit, as I find they build high quality network equipment. Another big plus for Linksys in my book has been their support for FOSS and hacking - especially the WRT54GL and NSLU2. Now I am not so sure.

Instead of just waiting for the ticket to make its way through the internal bureaucracy of Linksys so that eventually a developer investigates the bug, I thought I would lay it all out here for them. So here we go.

The error in the error console is:

Error: tbl.firstChild.firstChild has no properties
Source File: http://192.168.XXX.YYY/js/tabs.js
Line: 24

The code is question is as follows (line 24 is in highlighted:

[...] function setTabset(ths) { [...] var tbl = ths.parentNode.parentNode.parentNode.parentNode; subLinks = document.getElementsByName("lnk"); for (var i = 0; i < subLinks.length; i++) { if (subLinks[i] == ths) { if (subLinks[i].innerHTML == "LogOut") { var msg = "Are you sure you want to Log Off?"; if (!confirm(msg)) { return; } } curTd = tbl.firstChild.firstChild.childNodes[tab].style; [...]

The argument passed to the function above is a HTML element with an id attribute of 'tab_0'. This element exists, it is the "Setup" tab in the screenshot above. Lets walk through the relevant bits of the code.

var tbl = ths.parentNode.parentNode.parentNode.parentNode;

This steps 4 levels up the DOM tree, from the tab_0 element (the whole webgui is rendered using tables). This works fine. Now tbl references a table element with an id of 'Table2'.

Now we skip down to the line which has the error.

curTd = tbl.firstChild.firstChild.childNodes[tab].style;

This attempts to step down 3 levels from the top of the table to one of the tabs and retrieve the style object for that element. Here are the steps

  • tbl - the table itself
  • tbl.firstChild - the first child node of the table - a text node
  • tbl.firstChild.firstChild - a non existent node as the parent is a text node with no children

Why does this work on IE, but not Firefox/Konqueror and other FOSS browsers? I haven't checked for konq, but I know that the gecko engine (used by Firefox, SeaMonkey, IceWeasel etc etc), the DOM parses is whitespace sensitive. Every bit of text (whitespace or otherwise) is considered to be a text node. This is W3C compliant, there is even a bug report for it - see bug #26179 on mozilla's bugzilla.

This is pretty easy to fix, I haven't tested the code below for this case, but something like it usually works.

/* * Find the first child which is a html element */ function findFirstChild(elm) { if ( !elm.childNodes.length ) { return; } var children = elm.childNodes.length; for ( var i = 0; i <= children; ++i ) { if ( elm.childNodes[i].nodeType == 1 ) { return elm.childNodes[i]; } } return; } [...] function setTabset(ths) { [...] curTd = findFirstChild(findFirstChild(tbl)).childNodes[tab].style; [...]

I hope that Linksys sets their QA team on the SRW224G4 firmware with firefox to find the other bugs like this one. Unless Linksys fixes there gecko based browser support rather promptly, I won't be recommending (or using) their products in future.

Special thanks to the Firebug and DOM Inspector extensions which made this so much easier to trace.

Linksys will be emailed a link to this post and my ticket number. I will keep people posted on how things progress.

phpGroupWare Now Using Subversion on savannah

phpGroupWare is now using subversion for its version control system. We are the first project to use svn on savannah. So far the transition has been pretty smooth. The motivation was trying to merge a 80k line unified diff into the phpGW tree from the ReSight tree - something CVS couldn't really handle.

Before switching to SVN, there had been some discussion in the past about which version control system we should use. There were appealing aspects of using a distributed version control system, such as git, which is supported on savannah or bzr and mercurial which aren't. For some the show stopper was the lack of IDE integration and cross platform GUI support. In the end SVN was the only solution which met the needs of our current developer community.

Now that we are using svn, SVK is an interesting option for people who want to keep in sync with our tree, but maintain their own internal trees. As part of the ReSight project, we are looking at using svk to make patch pushing easier for both sides. I will blog about anything which I think the community will find useful, about using SVK with phpgw's SVN repository.

For more information about using SVN with phpGW see the subversion information page on savannah.

There will still be some changes to be made to make nightly builds to function properly again, along with some documentation updates on the website.

boy 2.0

boy 2.0 Ben Elias Tisdale-Hall sign with photo

On Thursday November 29, 2007 at 04:54 AEDT, Ben Elias Tisdale-Hall was born at the Angliss Hospital's Family Birth Centre! He was a big 4.14kg (or 9lb 2oz) boy. All doing well.

Here is a quick changelog for those who are interested.

  • 0100 Julie wakes up with early labour signs
  • 0200 Julie tries waking me up
  • 0205 I finally come to my senses and get up
  • 0215 We ring the hospital
  • 0250 We arrive at the hospital
  • 0454 Our little bundle of joy arrives into the world
  • 1 Dec 2007 Julie and I finally agree on the name

Noah is really getting into being a big brother. Having Julie's mum around has made things a lot easier. Second time around everything seem to come more naturally, but it is more chaotic with 2 little ones to look after.

Later this week I should catch up on my mail and RSS feeds

Selling the Sun Fire T2000

I have finally gotten around to listing my Sun Fire T2000 which I won from Sun on ebay. If you are in the market for an almost new Sun Fire T2000, checkout the listing on ebay.

If it doesn't sell, I will be looking at other options for off loading it. It is overkill for my home office, and too noisy.

To keep sweet with the ebay ToS, I can only accept offers via ebay until the auction has ended. If you want to make an offer, check out the ebay listing.

The server will run Solaris, Gentoo or Ubuntu 6.10 and maybe other variants of Linux.

Update: I just sold the server - YAY! [25Nov2007]

My New Toy - The Nokia N95

About 7 weeks ago I bought a Nokia N95 and I love it. I considered the Neo 1973 from openMoko, a completely open phone platform was appealing, but at the end of the day it isn't certified for Australia, it doesn't have WIFI or a camera nor does it do HSDPA/3G, all things on must have list. The iPhone was never in the race.

I picked up phone for just over 800AUD via ebay, they have since dropped a little in price. It is an Australia version with full local warranty support. The only downside is that it a 3 branded version, not a generic, but hey it works.

The phone got a real work out during my trip to Norway and it worked well. The GPS is a little slow to lock, but once it gets a lock it is right to go. The wifi works well. It is handy knowing if wifi is available somewhere before booting your laptop. I took a stack of pictures with the 5M pixel camera, the ones in bad light or inside aren't fantastic, but when taking shots outside it works a treat. The "DVD quality video" is pretty good too. It makes better movies than our old DVD based handycam. I am planning to use the phone at the birth of my second child (due any day now).

As I expected the phone "just works" as a standalone device, but the real test is how well it works with a Linux desktop. I can report that with Ubuntu 7.10 (aka Gutsy Gibbon) the N95 works well for all the stuff you really need. Below is a couple of quick mini howtos for a few things that you might want to with your N95. Some of the instructions are generic enough that they may work with little (or no) change with other handsets.

Disclaimer: I accept no responsibility for any data loss or stress caused by you following these instructions. Also you should carefully check your warranty before trying any of this. That said - "I just worked for me".

Pairing

For the bluetooth related stuff below you will need to pair your phone and PC. The quickest and easiest way to do this is using the bluetooth-applet. Here is how to do it:

  • Install the bluez-gnome deb - sudo apt-get install bluez-gnome
  • Once installed you should have a bluetooth icon in your GNOME system tray, if not just run "bluetooth-applet &" from the console
  • Right click on the icon and click "Browse Devices"
  • Your phone should be in the list, click on it and then click the Connect button
  • On your phone enter a 4 digit PIN when prompted - it can be anything you like
  • The bluetooth icon will then flash, click on it and enter the same PIN
  • Now your phone and PC should be paired
  • To make sure they are paired we will connect via obex-ftp
  • Right click on the icon and click "Browse Devices"
  • Your phone should be in the list, click on it and then click the Connect button
  • When prompted on your phone allow the connection
  • Nautilus should now launch and you you 2 folders "C:" (internal phone memory) and "E:" (microSD card)

Your PC and N95 are now paired and should be able to communicate via bluetooth without any problems.

Exchanging Files

Copying files to/from the N95 can be a little slow. Lets go from slowest to fastest.

Bluetooth

Copying files using bluetooth is very simple with a gnome desktop and the N95 using OBEX-FTP. Just install OBEX-FTP support for nautilus - "sudo apt-get install gnome-vfs-obexftp". Anytime you want to access the files on your phone via obexftp, just fire up nautilus and type "obex:///" and wait for a list of devices to be displayed. Double click on your phone and you are right to go. It can be rather slow copying files from your phone to your PC this way, but if you don't want to find cables or card readers it works. By slow I mean 30mins for a 100Mb video to copy.

There is also the gnome-obex-server package, which allows you to push content from your phone onto your PC, but I found this slow and I had to jump through too many hoops on the phone to send a file.

USB Cable

The N95 comes with a USB cable with a mini USB connector for connecting your N95 to your PC. When you plug the cable in the phone asks you which mode you wish to use. If you select Mass Storage it is treated like a usb mass storage device by and gnome-volume-manager, so it is mounted as soon as you plug it in. You are then able to access your microSD card.

I haven't been able to get the "Media Player" mode to work with the desktop music players I have tried it with - Rhythmbox, Banshee and Amarok. When used in "Mass Storage" mode it is possible to use File > Scan removable media in Rhythmbox.

Card reader

This is the fatstest way to read data from the microSD card. On the N95 press the power button for half a second, scroll down the list of options and select "Remove memory card", then remove your card from your phone. Now just put in into the SD card adaptor that came with the phone and use it like a normal SD card. Transfers speeds are quite good using this method.

Sync

Setting up sync with the N95 and opensync was relatively painless. I am syncing contacts with evolution, I have also tried with calendar events, which seemed to work as well, I haven't tried todos as I don't use them.

Start off by installing the bits we need

$ sudo apt-get install multisync-gui opensync-plugin-evolution opensync-plugin-syncml

This should also install all the dependencies needed to make opensync work.

On the N95 go Menu > Tools > Sync > PC Suite > Edit Sync Profile. First start by editing the settings under Applications. Lifeblog, Text messages and Bookmarks aren't supported by opensync, so disable them but setting "Include in sync" to No. You can also disable Calendar, Notes (really ToDos) if you wish.

As I had already transferred contacts from my old SE v600i to the N95 and I wanted to sync with an existing addressbook I had some issues. Namely 2 contacts didn't want to sync - I never found out which ones. So I found the easiest way to setup the sync was to create a new addressbook in evo.

  • Go into contacts ([ctrl]-2)
  • From the menu select File > New > Addressbook
  • Fill in the information - Type: "On This Computer", Name: "Phone" (or something else that makes sense for you
  • Click OK
In your GNOME menu under accessories, select multisync-gui. Now we need to create the sync pair.
  • Click the Add button
  • Give the group a meaningful name, such as "n95-evo" and click apply
  • Click the edit button for your new group
  • Tick the checkboxes for those sources which you don't want to use - you must disabled note as this isn't supported by the N95, this list should match the config on your phone
  • Click the Add Member button
  • Select Evolution 2.x from the list of options and Click Apply
  • Select which addressbook you want to sync with - in our case "Phone" (or which ever one you created above)
  • Click the Add Member button
  • This time select SyncML over OBEX Client
  • This where your XML hacking skills come into it (or you can just use my config
    <config>
    	<bluetooth_address>AD:DR:OF:MY:FO:NE</bluetooth_address>
    	<bluetooth_channel>10</bluetooth_channel>
    	<interface>0</interface>
    	<identifier>PC Suite</identifier>
    	<version>1</version>
    	<wbxml>1</wbxml>
    	<username></username>
    	<password></password>
    	<type>2</type>
    	<usestringtable>1</usestringtable>
    	<onlyreplace>0</onlyreplace>
    	<recvLimit>0</recvLimit>
    	<maxObjSize>0</maxObjSize>
    	<contact_db>Contacts</contact_db>
    	<calendar_db>Calendar</calendar_db>
    	<note_db>Notes</note_db>
    </config>
    
    		
    Change AD:DR:OF:MY:FO:NE to the address of your phone Note: I have only been able to get the N95 to sync with opensync using bluetooth.
  • Click Close
  • Click the "Refresh" and the sync should start
  • You have now synced your Nokia N95 with your Linux desktop! YAY!
  • All of your contacts from your phone should now be added to your evo addressbook
  • In evolution, copy any contacts from other addressbooks to the "Phone" addressbook
  • In multisync-gui click the "Refresh" button again and wait for the sync to complete

After I make changes to either either my N95 or evolution contacts I sync them. If you are also syncing your calendar you probably want to sync at least daily

Occasionally you may get conflicts. The GUI allows you to choose which one you want to keep. Having merge support in the GUI would be nice, but I can live with one taking precedence over the other on a per record basis.

Firmware Upgrades and Installing Maps

You need a real box Windows XP to upgrade the firmware or install full maps on the phone. I quickly tried using the usb support in qemu to connect the phone to a virtual version of XP, but I couldn't get it to work. It would be nice if Nokia offered firmware upgrades "over the air" so you could just use WIFI to upgrade the phone's firmware.

You can load map data as you move around, using mobile data, but this is an expensive way of doing it. You only need the map loader software installed on the Windows machine and then you can use the phone in mass storage mode of the microSD card to load the map data. I might try loading map data via qemu one day, but I have all the maps loaded that I currently need.

Software

In terms of what extra software you might want to install on the phone, here is a list of what I am using:

  • PuTTY - SSH on the phone, it is handy when I really need SSH and I don't have my laptop with me. Goota love a phone running SSH2 with public key authentication.
  • VNC. There is a Symbian sponsored port of TightVNC now available for the N95 and other S60 handsets. I am yet to get working properly
  • Fring is a free (as in beer) VoIP and IM app for mobile devices. It works pretty well. I have some issues using it with NodePhone, but I probably just have to tweak something there
  • I am also running the Lotus Sametime client, so I can keep in touch with the ReSight team out on the road. Pidgin is still the best Sametime (or general IM) client I have found, but there is no symbian port (hint hint)

Where is opera mini? I removed it, as I found the WebKit based browser on the N95 nicer in the longer run. It might use more bandwidth, but that is fine when using WIFI for most of your browsing anyway.

Overall

The Nokia N95 is certainly one nice handset. The battery life sucks - mine goes on charge every evening. The phone will never win an award from the FSF for freedom, but it never set out to do that. It sets out to be an all in one device and I think it achieves that goal pretty well. It is certainly usable under Linux, even if it does have some distance to go before it can really be considered truly Linux friendly.

About 7 weeks ago I bought a Nokia N95 and I love it. I considered the Neo 1973 from openMoko, a completely open phone platform was appealing, but at the end of the day it isn't certified for Australia, it doesn't have WIFI or a camera nor does it do HSDPA/3G, all things on must have list. The iPhone was never in the race.

I picked up phone for just over 800AUD via ebay, they have since dropped a little in price. It is an Australia version with full local warranty support. The only downside is that it a 3 branded version, not a generic, but hey it works.

The phone got a real work out during my trip to Norway and it worked well. The GPS is a little slow to lock, but once it gets a lock it is right to go. The wifi works well. It is handy knowing if wifi is available somewhere before booting your laptop. I took a stack of pictures with the 5M pixel camera, the ones in bad light or inside aren't fantastic, but when taking shots outside it works a treat. The "DVD quality video" is pretty good too. It makes better movies than our old DVD based handycam. I am planning to use the phone at the birth of my second child (due any day now).

As I expected the phone "just works" as a standalone device, but the real test is how well it works with a Linux desktop. I can report that with Ubuntu 7.10 (aka Gutsy Gibbon) the N95 works well for all the stuff you really need. Below is a couple of quick mini howtos for a few things that you might want to with your N95. Some of the instructions are generic enough that they may work with little (or no) change with other handsets.

Disclaimer: I accept no responsibility for any data loss or stress caused by you following these instructions. Also you should carefully check your warranty before trying any of this. That said - "I just worked for me".

Pairing

For the bluetooth related stuff below you will need to pair your phone and PC. The quickest and easiest way to do this is using the bluetooth-applet. Here is how to do it:

  • Install the bluez-gnome deb - sudo apt-get install bluez-gnome
  • Once installed you should have a bluetooth icon in your GNOME system tray, if not just run "bluetooth-applet &" from the console
  • Right click on the icon and click "Browse Devices"
  • Your phone should be in the list, click on it and then click the Connect button
  • On your phone enter a 4 digit PIN when prompted - it can be anything you like
  • The bluetooth icon will then flash, click on it and enter the same PIN
  • Now your phone and PC should be paired
  • To make sure they are paired we will connect via obex-ftp
  • Right click on the icon and click "Browse Devices"
  • Your phone should be in the list, click on it and then click the Connect button
  • When prompted on your phone allow the connection
  • Nautilus should now launch and you you 2 folders "C:" (internal phone memory) and "E:" (microSD card)

Your PC and N95 are now paired and should be able to communicate via bluetooth without any problems.

Exchanging Files

Copying files to/from the N95 can be a little slow. Lets go from slowest to fastest.

Bluetooth

Copying files using bluetooth is very simple with a gnome desktop and the N95 using OBEX-FTP. Just install OBEX-FTP support for nautilus - "sudo apt-get install gnome-vfs-obexftp". Anytime you want to access the files on your phone via obexftp, just fire up nautilus and type "obex:///" and wait for a list of devices to be displayed. Double click on your phone and you are right to go. It can be rather slow copying files from your phone to your PC this way, but if you don't want to find cables or card readers it works. By slow I mean 30mins for a 100Mb video to copy.

There is also the gnome-obex-server package, which allows you to push content from your phone onto your PC, but I found this slow and I had to jump through too many hoops on the phone to send a file.

USB Cable

The N95 comes with a USB cable with a mini USB connector for connecting your N95 to your PC. When you plug the cable in the phone asks you which mode you wish to use. If you select Mass Storage it is treated like a usb mass storage device by and gnome-volume-manager, so it is mounted as soon as you plug it in. You are then able to access your microSD card.

I haven't been able to get the "Media Player" mode to work with the desktop music players I have tried it with - Rhythmbox, Banshee and Amarok. When used in "Mass Storage" mode it is possible to use File > Scan removable media in Rhythmbox.

Card reader

This is the fatstest way to read data from the microSD card. On the N95 press the power button for half a second, scroll down the list of options and select "Remove memory card", then remove your card from your phone. Now just put in into the SD card adaptor that came with the phone and use it like a normal SD card. Transfers speeds are quite good using this method.

Sync

Update: I am no longer using OpenSync. I am using Funambol's S60 SyncML app, which works a treat for syncing with my Zimbra server.

Setting up sync with the N95 and opensync was relatively painless. I am syncing contacts with evolution, I have also tried with calendar events, which seemed to work as well, I haven't tried todos as I don't use them.

Start off by installing the bits we need

$ sudo apt-get install multisync-gui opensync-plugin-evolution opensync-plugin-syncml

This should also install all the dependencies needed to make opensync work.

On the N95 go Menu > Tools > Sync > PC Suite > Edit Sync Profile. First start by editing the settings under Applications. Lifeblog, Text messages and Bookmarks aren't supported by opensync, so disable them but setting "Include in sync" to No. You can also disable Calendar, Notes (really ToDos) if you wish.

As I had already transferred contacts from my old SE v600i to the N95 and I wanted to sync with an existing addressbook I had some issues. Namely 2 contacts didn't want to sync - I never found out which ones. So I found the easiest way to setup the sync was to create a new addressbook in evo.

  • Go into contacts ([ctrl]-2)
  • From the menu select File > New > Addressbook
  • Fill in the information - Type: "On This Computer", Name: "Phone" (or something else that makes sense for you
  • Click OK

In your GNOME menu under accessories, select multisync-gui. Now we need to create the sync pair.

  • Click the Add button
  • Give the group a meaningful name, such as "n95-evo" and click apply
  • Click the edit button for your new group
  • Tick the checkboxes for those sources which you don't want to use - you must disabled note as this isn't supported by the N95, this list should match the config on your phone
  • Click the Add Member button
  • Select Evolution 2.x from the list of options and Click Apply
  • Select which addressbook you want to sync with - in our case "Phone" (or which ever one you created above)
  • Click the Add Member button
  • This time select SyncML over OBEX Client
  • This where your XML hacking skills come into it (or you can just use my config
    
    <config>
    	<bluetooth_address>AD:DR:OF:MY:FO:NE</bluetooth_address>
    	<bluetooth_channel>10</bluetooth_channel>
    	<interface>0</interface>
    	<identifier>PC Suite</identifier>
    	<version>1</version>
    	<wbxml>1</wbxml>
    	<username></username>
    	<password></password>
    	<type>2</type>
    	<usestringtable>1</usestringtable>
    	<onlyreplace>0</onlyreplace>
    	<recvLimit>0</recvLimit>
    	<maxObjSize>0</maxObjSize>
    	<contact_db>Contacts</contact_db>
    	<calendar_db>Calendar</calendar_db>
    	<note_db>Notes</note_db>
    </config>
    
    		
    Change AD:DR:OF:MY:FO:NE to the address of your phone Note: I have only been able to get the N95 to sync with opensync using bluetooth.
  • Click Close
  • Click the "Refresh" and the sync should start
  • You have now synced your Nokia N95 with your Linux desktop! YAY!
  • All of your contacts from your phone should now be added to your evo addressbook
  • In evolution, copy any contacts from other addressbooks to the "Phone" addressbook
  • In multisync-gui click the "Refresh" button again and wait for the sync to complete

After I make changes to either either my N95 or evolution contacts I sync them. If you are also syncing your calendar you probably want to sync at least daily

Occasionally you may get conflicts. The GUI allows you to choose which one you want to keep. Having merge support in the GUI would be nice, but I can live with one taking precedence over the other on a per record basis.

Firmware Upgrades and Installing Maps

You need a real box Windows XP to upgrade the firmware or install full maps on the phone. I quickly tried using the usb support in qemu to connect the phone to a virtual version of XP, but I couldn't get it to work. It would be nice if Nokia offered firmware upgrades "over the air" so you could just use WIFI to upgrade the phone's firmware.

You can load map data as you move around, using mobile data, but this is an expensive way of doing it. You only need the map loader software installed on the Windows machine and then you can use the phone in mass storage mode of the microSD card to load the map data. I might try loading map data via qemu one day, but I have all the maps loaded that I currently need.

Software

In terms of what extra software you might want to install on the phone, here is a list of what I am using:

  • PuTTY - SSH on the phone, it is handy when I really need SSH and I don't have my laptop with me. Goota love a phone running SSH2 with public key authentication.
  • VNC. There is a Symbian sponsored port of TightVNC now available for the N95 and other S60 handsets. I am yet to get working properly
  • Fring is a free (as in beer) VoIP and IM app for mobile devices. It works pretty well. I have some issues using it with NodePhone, but I probably just have to tweak something there
  • I am also running the Lotus Sametime client, so I can keep in touch with the ReSight team out on the road. Pidgin is still the best Sametime (or general IM) client I have found, but there is no symbian port (hint hint)

Where is opera mini? I removed it, as I found the WebKit based browser on the N95 nicer in the longer run. It might use more bandwidth, but that is fine when using WIFI for most of your browsing anyway.

Overall

The Nokia N95 is certainly one nice handset. The battery life sucks - mine goes on charge every evening. The phone will never win an award from the FSF for freedom, but it never set out to do that. It sets out to be an all in one device and I think it achieves that goal pretty well. It is certainly usable under Linux, even if it does have some distance to go before it can really be considered truly Linux friendly.

Happenings

I am still alive. I had planned to blog regularly while I was in Norway, but that didn't happen for various reasons - mostly lack of time. I have a backlog of stuff to post now.

Norway was great, ReSight are a great company to work for. It now looks like we will get a stable release of phpGroupWare's HEAD branch out this year. yay! I plan to blog more about what is happening with phpGW and ReSight - watch this space.

Bangkok is an insane place. I realised that having a fight over 6AUD was pointless and gave up - scammer^Wtuk tuk driver 1, stupid tourist 0. I think if I go back to Bangkok

Russell Coker has started an unofficial Linux Users Victoria (LUV) Planet, which I am syndicated on - hi all :)