Modular Linux kernel for the Gemini PDA

For the Debian Technology Preview image for the Gemini PDA a monolithic kernel has been used. In order to get as many peripherals as possible working a modular kernel is necessary. So I decided to build a custom kernel.

Since the suspend on lid close feature only works with the community kernel, the kernel source from has been used. After cloning I have followed the instructions on During kernel configuration I have changed the following options:

•Enabled kernel modules
•Enabled modules for nearly all USB devices
•Enabled modules for nearly all filesystems
•Enabled modules for nearly all encryptions/hashes/compressions
•Enabled multiple options for iptables

Disabled ANDROID_PARANOID_NETWORK (for not having to add the user for every network service to the groups aid_inet_raw and aid_inet)
•Enabled CONFIG_JUMP_LABEL (for better performance)
•Enabled CONFIG_TASK_IO_ACCOUNTING (for using iotop)

This results in this kernel configuration: gemini-3.18.41+-config.gz (252 downloads)

After building the kernel modules for the iptables MIRROR target (will not be usable with the default iptables version on the Gemini) and frandom have been added.

Those who do not want to go through this themselves can download my kernel from here:

Kernel Image: linux_boot-gemini-3.18.41+.img (228 downloads)
Modules: modules_firmware-gemini-3.18.41+.tar.gz (248 downloads)

Downloads outdated, new version at: Improved modular Linux kernel for the Gemini PDA

Instructions for flashing the image can be found on: Make sure to use the same scatter file that has been used for the initial flashing. Using the Download only mode of the flash tool is sufficient. Uncheck all partitions but linux_boot (or boot if you boot into linux as default). For the linux_boot respectively the boot partition select the downloaded kernel image. After flashing, copy the modules archive onto your Gemini and extract it in your root directory:

cd /
tar -xzf /path_to/modules_firmware-gemini-3.18.41+.tar.gz

After rebooting the device should feel a bit smoother and many USB peripherals should work.


1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)

Some first tests with the Gemini PDA

Last week my Gemini PDA has arrived. There have been some problems with devices from the first batch especially regarding the keyboard and the device not containing the X27 SoC but a X25 SoC.  At least one later device also has been reported being powered by the X25 SoC. Thus I wanted to do some basic testing before flashing Linux onto it. So I have installed CPUZ and A1 SD Bench on it and did some (very) basic testing.

First we will have a look at the CPUZ output. Here we can clearly see that this Gemini is powered by an X27 SoC with its two Cortex-A72 and eight Cortex A53.


Gemini PDA CPU – CPUZ screenshot

The last part of the SoC screen shows the Mali-T880 GPU.

Gemini GPU - CPUZ

Gemini GPU – CPUZ screenshot

Some more device information regarding display resolution and amount of memory can be seen below.

Gemini PDA device info - CPUZ

Gemini PDA device information – CPUZ screenshot

The two screenshots below show the sensors available in the Gemini. This might be interesting later to see if all of them can also be accessed from Linux.

Gemini PDA Sensors - CPUZ

Gemini PDA Sensors – CPUZ screenshot

Gemini PDA Sensors - CPUZ 2nd page

Gemini PDA more Sensors – CPUZ screenshot

Finally some speed tests regarding the internal memory and the SD card using A1 SD Bench have been performed.

Gemini PDA memory bench

Gemini PDA memory bench – A1 SD Bench

The speed of the internal memory looks good, however it is strange that the write speed is shown to be faster than the read speed. This might be a bug in the benchmark app. Unfortunately the SD card speed of approximately 20MB/sec is disappointing. The SD card used is a U1/A1 capable SanDisk Ultra 200G which is rated up to 100 MB/sec for reading. Trying the same card with Linux and an USB3 card reader proves the spec:

# hdparm -t /dev/sdd1

Timing buffered disk reads: 280 MB in 3.00 seconds = 93.32 MB/sec

So there might be an incompatibility with this card or some driver issue. Maybe some later tests with Linux will show. At least the results would be comparable then, because of using the same tool.

The device seems to be as expected an after flashing Linux we can have a look into some more details.  The process of flashing Linux already is well documented on github and on, thus it will not be covered here.

Stay tuned for updates.


1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)

Unboxing of the Gemini PDA

What is going on here? An unboxing article on Well, this is the exception, since the Gemini is an exceptional device like Nokias N900 has been before and in the future hopefully the some day finished  Neo900 might be. Well, I do not want to stray away any further. About 13 month ago I have backed Planet Computers Gemini PDA Indiegogo campaign. Planet Computers has promised a device that is different from anything else, that is available for purchase. The Gemini is a PDA class clamp-shell device with a fully integrated keyboard and touchscreen that is designed for Android, but also capable of running Linux. No need to go through the specs here, everything interesting regarding these can be read on Planet Computers web page or on Wikipedia. Last week, after a long time of waiting, the parcel with the 4G version of the Gemini, the connectivity kit and the optional camera finally arrived. The order id has been in the 20XX range and the device is with a non UK keyboard, so the device is most probably from the third batch.

Gemini parcel

Parcel containing the Gemini PDA

After opening the parcel and removing some wrapping material one can see multiple smaller boxes containing the device and its accessories.

The opened parcel

The opened parcel

The boxes shown in the photo below contain from left to right, the leather pouch, the special HDMI adapter (only this one allows connecting an external display), the Gemini, the USB type C hub, the external camera addon and an additional charger.

Boxes containing PDA and accessories

Boxes containing the Gemini PDA and accessories

The larger box welcomes us with “hello” printed in several languages and contains  a smaller black box containing the manual and the cover removal tool (needed to insert a SIM card and a SD card), the PDA itself and (still in the larger box) a charger and the Type C to Type A USB cable.

PDA box

The opened PDA box

Below we have a closer look to the PDA well wrapped in foil.

Gemini in foil

Gemini wrapped in foil

After removing the foil we can see its full beauty.

Gemini PDA

The Gemini PDA

With the opened device we can see the the display and the German QWERTZ keyboard. The keyboard feels solid and has no wobbly keys like it has been reported by backers who have received devices from the first batch.

opened Gemini PDA

The opened Gemini PDA with display and keyboard

Phone manufacturers recommend to charge the devices a first time fully before using. Most probably this is a myth without any use than having a fully charged device, but anyway I did.


Charging the Gemini PDA for the first time

I am hoping you have enjoyed the photo series. Further articles regarding testing some aspects of the device, Linux on the Gemini, and hopefully some solutions will follow. Does it really contain a X27 CPU? We will find out later. Stay tuned for updates.


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

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
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:

^ parser error : Document is empty
^ 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


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

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.


1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)

Pimp up your internet tablet


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)

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

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 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: [download#23]

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.



1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)