Flightgear-2.8.0 with quad buffered stereo

In the article Flightgear with quad buffered stereo I have written about how to get quad buffered stereo to work with the famous flight simulator FlightGear. Recently FlightGear-2.8.0 has been released. The problem with quad buffered stereo still persists with FlightGear-2.8.0 .

One expects to enable stereoscopic mode in FlightGear starting it with the following line:


When starting flightgear this way, one gets the following console output and no stereoscopic view:

Warning: detected OpenGL error ‘invalid operation’ after RenderBin::draw(,)

Getting FlightGear to work with quad-buffered stereo

The reason for the above error message and the resulting broken stereo mode is, that the stereo context does not get initialized properly. The details are described here: Flightgear with quad buffered stereo. Unfortunately the patch I proposed in the mentioned post does not work for flightgear-2.8.0. However, the good news is, it only required a slight modification, the WindowBuilder.cxx file no longer is in src/Main, but in the src/Viewer directory. You can download the new patch from here: flightgear-2.8.0-stereoscopic.patch (2023)

Hopefully the patch finds its way into the next flightgear release.

As usual for quad buffered stereo, you have to use a professional graphics board that supports quad buffered stereo, like a NVIDIA Quadro FX or a Ati FireGL and proper display hardware, like shutter glasses, a HMD or a stereoscopic projection system, to benefit from it. To use the quad buffered stereo mode start flightgear with the environment variables mentioned above. Afterwards you probably have to enable quad buffered stereo mode by selecting the Stereoscopic View Options Item in the the View menu.

The Gentoo way

For gentoo users I have created an overlay. Like the previous one it contains patches and modified ebuilds for flightgear with working quad buffer support. You may get the overlay from here: flightgear-2.8.0 overlay (2066) Download the overlay and extract it in /usr/local/portage. Be sure to include the following line in your /etc/make.conf:


Then emerge flightgear and enjoy it in three dimensions.

Have fun


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:

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


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

glsldevil binaries

About one year ago I wrote about the OpenGL/GLSL debugger glsldevil in the article gentoo ebuild for glsldevil-1.1.5 and provided a gentoo ebuild for it. Unfortunately glsldevil seems not to be available anymore from the web page of the University of Stuttgart (http://cumbia.informatik.uni-stuttgart.de/glsldevil/), which has rendered the ebuild useless.

Edit 29/5/2012: The original download site of the University of Stuttgart is available again.

Since the license of glsldevil  permits redistribution, I decided to upload my local copy, to make glsldevil available for the public again. Unfortunately this only includes the Linux binaries (32bit and 64bit) and neither Windows binaries or the source code.

You can download the Linux binaries from here: glsldevil-1.1.5.tar.gz (1984)

For use with the ebuild, just copy the file to /usr/portage/distfiles/.



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

php-5.4.1_rc1 fails with apache-2.4.1 on gentoo

Today the apache-2.4.1 ebuild has appeared in gentoos portage tree. Emerging php-5.4.1_rc1 fails with installed apache-2.4.1 web server  on gentoo with the following error message:

Configuring SAPI modules
checking for AOLserver support… no
checking for Apache 1.x module support via DSO through APXS… no
checking for Apache 1.x module support… no
checking whether to enable Apache charset compatibility option… no
checking for Apache 2.0 filter-module support via DSO through APXS… no
checking for Apache 2.0 handler-module support via DSO through APXS…

Sorry, I cannot run apxs.  Possible reasons follow:

1. Perl is not installed
2. apxs was not found. Try to pass the path using –with-apxs2=/path/to/apxs
3. Apache was not built using –enable-so (the apxs usage page is displayed)

The output of /usr/sbin/apxs follows:
./configure: line 8325: /usr/sbin/apxs: No such file or directory
configure: error: Aborting

The reason for this is, that the apxs executable does not get installed with the apache-2.4.1 ebuild. According to gmane.org this issue got fixed with the apache-2.4.1-r1 ebuild.  However, after upgrading apache to 2.4.1-r1 emerging php still fails with the same error message. A quick look onto the filesystem shows that /usr/sbin/apxs got installed as well as the /usr/sbin/apxs2 symlink got created.

mittelerde sbin # ls -alsh apxs*
24K -rw-r–r– 1 root root  23K  1. Apr 16:14 apxs
0 lrwxrwxrwx 1 root root   14  1. Apr 16:14 apxs2 -> /usr/sbin/apxs

This also reveals the reason for emerging php failing with apache-2.4.1-r1. The /usr/sbin/apxs perl-script coming with the apache-2.4.1-r1 ebuild lacks the executable flag.

Thus a simple

chmod +x /usr/sbin/apxs

solves the issue and emerging php afterwards works like a charm. Most probably this will get fixed with the next apache ebuild. To get the apache configuration working after the 2.4 upgrade, you might want to read: Upgrading to 2.4 from 2.2.


1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)

iptables mirror target for linux kernel 3.3

After my last kernel upgrade I tried to build the iptables mirror target published here. The iptables mirror target takes the packet sent to your machine and returns the same packet to the machine the packet came from. Thus, let’s say someone tries to scan your machine or tries an attack he would scan his own machine or even attack his own machine. When I tried it with kernel version 3.3 , it did not build anymore with the current linux kernel. However, this time only a minor modification has been neccesary. Another header file had to be included and a function name has changed.  You can download the newer release for kernel version 3.3 and probably future kernels here:

MIRROR.3.3.0.tar.gz (2256) gplv3-127x51

The kernel module has been tested with kernel version linux-3.3-vserver- To build the module, boot the kernel you want to use the module with. Afterwards unpack the archive and run the compile.sh script to build the module. Then run the install.sh script for installing the compiled module into the /lib/modules directory for your kernel.

Now you may use the mirror target in place of the REJECT or DROP target in the INPUT, FORWARD and PREROUTING chains, like this in your firewall script:


Beware: The use of the mirror target may lead to strange results, in example if you want to connect to an iptables protected machine which uses the mirror target, you may end up connecting to the local machine without recognizing it. It also may use much bandwith. The worst case occurs if you have two machines using the module. These machines may end up playing ping pong. So you have been warned, use with caution and at your own risk. For more information see: MIRROR target.

Downloads for older kernel versions are below. Notice the version numbering 2.6.25 works for kernels up to 2.6.27. 2.6.28 also works for 2.6.29 and 2.6.30 kernels. The 2.6.13 version of the module should work up to kernel version 2.6.16.

MIRROR.2.6.13.tar.gz (3046)
MIRROR.2.6.24.tar.gz (3488)
MIRROR.2.6.25.tar.gz (3206)
MIRROR.2.6.28.tar.gz (3260)
MIRROR.2.6.31 (3089)
MIRROR.2.6.35.tar.gz (3016)
MIRROR.2.6.36.tar.gz (3104)
MIRROR.2.6.37.tar.gz (2850)
MIRROR.3.0.7.tar.gz (2532)
MIRROR.3.1.0.tar.gz (2226)




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

udev-182 needs CONFIG_ DEVTMPFS in kernel

After the latest upgrades on my gentoo vserver system running a 3.3.0 Linux  vserver-kernel (vserver-sources-, the system did not start up properly anymore. No kernel modules got loaded and even the network devices have not been available after a reboot. This is more or less the worst case, since then one has to be physically in front of the machine and can not repair the system via ssh remote login.

The kernel upgrade was not the reason for this,  but the upgrade to udev-182. This is what the log said:

Mar 21 17:20:05 mittelerde /etc/init.d/sshd[5563]: ERROR: cannot start sshd as net.eth0 would not start
Mar 21 17:20:09 mittelerde /etc/init.d/udev-mount[6075]: Udev uses a devtmpfs mounted on /dev to manage devices.
Mar 21 17:20:09 mittelerde /etc/init.d/udev-mount[6076]: This means that CONFIG_DEVTMPFS=y is required
Mar 21 17:20:09 mittelerde /etc/init.d/udev-mount[6077]: in the kernel configuration.
Mar 21 17:20:09 mittelerde /etc/init.d/udev-mount[6067]: ERROR: udev-mount failed to start
Mar 21 17:20:09 mittelerde /etc/init.d/udev[6066]: ERROR: cannot start udev as udev-mount would not start
Mar 21 17:21:06 mittelerde /etc/init.d/net.eth0[6463]: ERROR: interface eth0 does not exist

With the information “CONFIG_DEVTMPFS=y is required” the log contains the necessary hint to get things to work. The CONFIG_DEVTMPFS option had to be enabled in the kernel. Afterwards the kernel has to be recompiled. The option can be found in menuconfig under Device Drivers-> Generic Driver options and is called Maintain a devtmpfs filesystem to mount at /dev.  For getting the devfs automatically mounted at boot time it makes sense to also enable the option Automount devtmpfs at /dev, after the kernel mounted the rootfs (CONFIG_DEVTMPFS_MOUNT).

It is safe to enable these options with older udev versions. Doing so protects your system from not working any more when you get the udev update later.


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

One hundredth article anniversary

We, the authors of MyGNU.de are proud to celebrate an anniversary today. This is the one hundredth article published on this blog. But how does one celebrate such an anniversary? For sure, the best way is to write another article. Well, and perhaps drinking a beer or two.

Lets summarize some history. This blog, MyGNU.de started on November 29th 2008 – roughly three years ago. During these years Thorsten and I had the opportunity to provide useful information, helpful scripts and programs to you, our readers. – At least we hope so. This way we have been able to give something back to the open source community that has supported us in so many ways. We have written about solutions to many problems, regarding the Linux operating system, we encountered. It would be to much to write if I tried to mention every single article now, but some have to be mentioned.  For sure the highlights, that can be found on this website are SIV, the stereoscopic image viewer and vrtrack the headtracking driver for the Vuzix VR920 head mounted display.  The most popular download until now has been the Iptables Mirror target, which I ported to 2.6 and 3.x Linux kernels. The kernel module enables one to create a more active Iptables firewall by returning the attack to the attacker. In total it got 5897 hits until today. In the beginning some of the articles were shorter than the more recent ones, but with time our knowledge and writing skills evolved and some recent articles are of quite high quality. We hope you have enjoyed reading the articles and got some useful insights and information.

For the future we hope to keep on this way and improve our skills, to write better and more useful articles and software and publish these on MyGNU.de.

“So say we all.”

Well, now there is only one last thing to to do. To say thank you! We have to say thanks to you for reading, and we have to say thank you to our company the main-host.de GmbH for providing the webspace for this blog.

Happy anniversary MyGNU.de!

best regards and keep on reading


1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)