Fixing location awareness of N900 IM

Nokias N900 cellular phone is a location aware device. Usually it has been able to display your location in the  status message of instant messaging services like Jabber or Skype. This function has stopped working completely some time ago. This article describes the underlying problem and presents a fix to restore the function again.

Usually one can enable the N900 phone to display the current location in the status message by tapping the status bar and selecting “Availability”. Afterwards the availability window opens, where the button “my location” can be tapped. Then one can select the precision of the position from street level to town level. Afterwards the current location is being published to contacts. Currently enabling this function does not publish any location to ones contacts. After installing sysklogd, the syslog gives a first hint, where the problem is located:

Aug 31 18:37:33 Nokia-N900 nm-nav-provider[11138]: GLIB WARNING **
default – Could not connect to
http://loc.desktop.maps.svc.ovi.com/geocoder/rgc/1.0?total=1&lat=52.308704391494393&long=13.252864412963390&token=9b87b24dffafdfcb6dfc66eeba834caa
Aug 31 18:37:33 Nokia-N900 [1621]: GLIB WARNING ** rtcom-presence-ui –
null pointer passed to the navigation_provider_location_to_address callback

After killing the nm-nav-provider process and restarting /usr/lib/nokiamaps-navigation-provider/nm-nav-provider from an xterm  a more detailed error message can be seen:

^
http://loc.desktop.maps.svc.ovi.com/geocoder/rgc/1.0?total=1&lat=52.308704391494393&long=13.252864412963390&token=9b87b24dffafdfcb6dfc66eeba834caa:1: parser error : Document is empty
^
http://loc.desktop.maps.svc.ovi.com/geocoder/rgc/1.0?total=1&lat=52.308704391494393&long=13.252864412963390&token=9b87b24dffafdfcb6dfc66eeba834caa:1: parser error : Start tag expected, ‘<‘ not found

Thus there is a problem with the request sent to Nokias web service. Most probably Nokia has changed the web service in the meanwhile. However, using the same request without the token leads to the desired result. This can be easily tried out by entering the requests URL in a web browser. Unfortunately nm-nav-provider is closed source, so it cannot easily be modified. A hex editor can be used to search for the token string and then the request can be zero terminated in front of  it.

Hexedit view of nm-nav-provider token location for webservice

Figure: hexedit view of nm-nav-provider token location for webservice

There are two positions with a matching request in the 0.109-3+0m5 version of nm-nav-provider, one at position 0x73F7 and one at 0x7689. The latter is the relevant one for the problem. Replacing the byte at this address by a zero terminates the request string and leads to a request that can be understood by Nokias web service. One has to kill the nm-nav-provider process before being able to write to the file.

Unfortunately the modified binary cannot be published here, because of license restrictions, but an easy way to patch the file can be provided. First of all, enhanced busybox needs to be installed on the N900. Then execute the following line as root user  inside an xterm:

cd /usr/lib/nokiamaps-navigation-provider/; cp nm-nav-provider nm-nav-provider.bak; killall nm-nav-provider;dd conv=notrunc bs=1 count=1 seek=30345 if=/dev/zero of=nm-nav-provider

This line works for nokiamaps-navigation-provider-0.109-3+0m5. After execution, the location can be published to contacts again. The only problem remaining is up to you. Do you really want that all your contacts know your location?

best regards
Jürgen

 

1 Star2 Stars3 Stars4 Stars5 Stars (5 votes, average: 5.00 out of 5)
Loading...

MeeGo 1.1 released

The MeeGo Project has released the version 1.1 for Intel Atom and ARMv7 for Download. MeeGo is the fusion of Intels Netbook OS Moblin and Nokias Maemo. The new Linux distribution is available with three different Desktops.

The Version User Experience (UX) for Netbooks uses the well known GTK Interface of the Moblin distribution. The variant  for In-Vehicle Infotainment (IVI) is optimized for in car use. The third variant Handset UX is designed for use with mobile phones and internet tablets. Handset UX should work on N900 Nokia mobile phones and is planned to be installed on the new N9 instead of Symbian-OS.

Jürgen

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Pimp up your internet tablet

cgwort

Did you ever ask yourself how to make your internet tablet more powerful?

For a Linux based device like Nokias N810 this question is quite easy to answer.  You can easily increase overall performance and responsiveness by using a “better” kernel than the stock kernel on your internet tablet. A further advantage is that you can add features that are not available in the stock kernel. Below you will find instructions on how to build your own optimized preemptive kernel or how to install my prebuilt kernel.

Nokia N810 Internet Tablet
Nokia N810 Internet Tablet

In both cases the following features are covered:

  1. preemtive kernel
  2. high-speed sd-cards
  3. screen rotation
  4. more granular backlight sertting
  5. easy-debian image

Read the rest of this entry »

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Nokia N810 GPS fix solution

The Nokia N810 with its internal GPS is a device that should fit well for navigation purposes. Below you can see it running navit. In my opinion this is the best available navigation software for the N810. Navit is the main reason for me for wanting the GPS unit in the N810 to be reliable. Get the svn version from here: Gerrit’s Techie Stuff. Some hints on getting navit to run on the N810 can be found on wiki.navit-project.org.

N810 running Navit
N810 running Navit

Sadly the internal GPS unit of the N810 is known to be very problematic and occasionally hardly gets a fix. The suspect seems to be the gpsdriver. It writes i.e. the almanac data to /var/lib/gps/nvd_data. This file seems to be corrupt sometimes when the gpsdriver writes it. Probably the problem occurs when the GPS unit has no fix. The bug entry on this topic on bugs.maemo.org inspired me to write a small wrapper script for the gpsd that copies a backup to /var/lib/gps/nvd_data and watches the gps-daemon. When the GPS unit has a fix it creates a new backup copy of the nvd_data file for later use. Since I use the script, acquiring a GPS fix never took me more than five minutes anymore (without AGPS, with AGPS it is faster, of course).

If you also want to give my script a try, install bash via program manager and download my script from here: gpsd wrapper script for n810 (1226)

The most convenient way to get the script to the n810 and to perform the necessary changes is to log into the tablet using ssh. How to get ssh to run on your internet tablet is described here: internettabletblog

Log into your tablet using ssh and rename the original gpsd.

-sh-3.2# mv /usr/sbin/gpsd /usr/sbin/gpsd.orig

Then copy my script to the tablet (replace XXX.XXX.XXX.XXX with the ip of your tablet):

scp gpsd root@XXX.XXX.XXX.XXX:/usr/sbin/

Afterwards fix the permissions of the script on the tablet:

-sh-3.2# chmod a+rx /usr/sbin/gpsd

That’s all, now you should have a much better working GPS unit in your N810. Since I only have one device to test this on, please leave a comment if this also worked for you.

regards

Jürgen

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...