During my last kernel upgrade I recognized that the iptables mirror target I published here, here and here does not work anymore with kernel version 2.6.36. You can download the newer version for 2.6.36 and probably future kernels here:
To build the module, boot the kernel you want to use the module with. Afterwards unpack the archive, run the compile.sh script and the install.sh script.
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:
$IPTABLES -A INPUT -j MIRROR
Beware: The use of the mirror target may have strange results, i.e. if you want to connect to the iptables protected machine, you may end up connecting to the local machine without recognizing it. It also may use much bandwith. Worst case: if you have two machines using this module they may end up playing pingpong. 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.
Last year I published the first version of my linux headtracking driver for the VR920 HMD here. Currently I am working on a new driver version which will have the following additional features:
Multiple Protocols: -UDP multicast (as before) -UDP unicast (for flightgear connection and perhaps more) -mouse emulation (via uinput) -joystick emulation (via uinput) -character device for direct angle readings (via cuse, will require a kernel >= 2.6.31)
Inverting of axes (to have moving the head up making the mouse pointer up or down, depending on needs)
Scaling of data (i.e. to match screen size with mouse mode)
Customisable delay between sensor readings
User interface separated from the driver
With the upcoming MPX and the mouse emulation it should be possible to control the visible viewport by turning around the head. Controlling the view for games or other software that do not natively support headtracking should also be possible with the emulation.
In the current development stage most of the features are basically working so expect the new driver to be released soon.
On my x86_64 gentoo box, running gnome and therefore pulseaudio, I experienced the problem that when and after playing some flash videos (i.e. youtube) the sound device was blocked and no other application was able to play sound. After killing the plugin sound worked just normal, but that was no convenient way.
64-bit flash plugin for Firefox
My first suspective was the 32-Bit flash plugin I used in my 64-bit Firefox until now. So I replaced it by the new 64-bit plugin, which did not solve the problem, since it does also not use pulseaudio for playback. But I include the steps for completeness here:
For other linux distributions like Debian, Ubuntu, Redhat or Suse you obviously have to search the appropriate plugin and install it the distribution-specific way. Afterwards you have to remove the 32-bit plugin from nspluginwrapper, which makes 32-bit plugins available for 64-bit firefox:
As I stated before this does not solve the problem, but at least it gives one a 64-bit flash plugin 😉
Make alsa applications use the pulseaudio server
There is a pulseaudio plugin for alsa, which is necessary for playback of alsa sound via the pulseaudio server. So the next step is to install this plugin. For gentoo it is contained in the alsa-plugins package. So for the gentoo way:
emerge alsa-plugins
Afterwards make sure that your /etc/asound.conf contains the following lines:
pcm.pulse { type pulse } ctl.pulse { type pulse } pcm.!default { type pulse } ctl.!default { type pulse }
After restarting alsa everything that is playing sound via alsa now uses pulseaudio via the plugin and the sound device is no more used concurrently. One can playback via pulseaudio after using flash sites or even at the same time. Mission accomplished!
OSS emulation for pulseaudio
Sadly the above only works for applications directly using the alsa sound system. Applications depending on OSS (i.e. all Java Applications), using the kernel layer alsa oss emulation, still block the audio device, so the the kernel layer OSS emulation is a no go with pulseaudio. Include the corresponding modules in /etc/modprobe.d/blacklist.conf or remove the emulation completely from your kernel configuration.
Of course this only shuts off these applications completely but is neccesary for the further steps to work. We´re lucky, we can use a daemon which provides the OSS devices (/dev/dsp, etc.) and links them via fuse to the pulseaudio daemon. For this we need to load the cuse kernel module (add it to /etc/modules.autoload.d/kernel-2.6 and it gets loaded automatically on next reboot) or when not available add the functionality to your kernel configuration and rebuild your kernel.
Now we´re ready to install ossp, the daemon I mentioned before. It is available from Sourceforge, probably also in your distributions package repository. For gentoo users, as usual there is a more easy way. I found an ebuild for ossp on gentoo bugzilla, which I got to work with minor modifications. You can download the modified ebuild here:
For having osspd started automatically on every system boot I lazily included it in my /etc/conf.d/local.start.
echo /usr/sbin/osspd >> /etc/conf.d/local.start
Now sound should just work as one expects it to. Different sources can playback at the same time. No blocked devices occur because of concurrency, no matter which sound API the applications use.
The iptables mirror target I published here and here does not work anymore with kernel version 2.6.35. You can download the newer version for 2.6.35 and probably future kernels here:
It should work with kernels since 2.6.31. To build the module, boot the kernel you want to use the module with. Afterwards unpack the archive, run the compile.sh script and the install.sh script.
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:
$IPTABLES -A INPUT -j MIRROR
Beware: The use of the mirror target may have strange results, i.e. if you want to connect to the iptables protected machine, you may end up connecting to the local machine without recognizing it. It also may use much bandwith. Worst case: if you have two machines using this module they may end up playing pingpong. 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.
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.
Recently, when updating the gentoo linux on my amd64 box I got errors when building packages with the doc USE flag. All failing packages were using the gtkdoc tool for generating the documentation. Nowhere in the web was a topic concerning this problem. All these packages failed similar to example for libbonobo below. But many other ebuilds, i.e. glib, gedit etc. were also affected.
Writing libbonobo-bonobo-persist-file.html for refentry(libbonobo-bonobo-persist-file) Writing libbonobo-bonobo-persist-stream.html for refentry(libbonobo-bonobo-persist-stream) Writing libbonobo-bonobo-persist-client.html for refentry(libbonobo-bonobo-persist-client) Writing persist.html for chapter(persist) Writing debugging.html for refentry(debugging) Writing libbonobo-faq.html for refentry(libbonobo-faq) Writing libbonobo-bonobo-config-database.html for refentry(libbonobo-bonobo-config-database) Writing misc.html for chapter(misc) Writing ix01.html for index Writing index.html for book(index) Writing index.sgml for book(index) Writing libbonobo.devhelp for book(index) Writing libbonobo.devhelp2 for book(index) gtk-doc: Fixing cross-references try vitry vish: /usr/bin/vim: Datei oder Verzeichnis nicht gefunden readline() on closed filehandle NEWFILE at /usr/bin/gtkdoc-fixxref line 467. Use of uninitialized value in substitution (s///) at /usr/bin/gtkdoc-fixxref line 470. Use of uninitialized value in substitution (s///) at /usr/bin/gtkdoc-fixxref line 471. Use of uninitialized value in substitution (s///) at /usr/bin/gtkdoc-fixxref line 475. Use of uninitialized value in substitution (s///) at /usr/bin/gtkdoc-fixxref line 476. Use of uninitialized value in substitution (s///) at /usr/bin/gtkdoc-fixxref line 477. Use of uninitialized value in substitution (s///) at /usr/bin/gtkdoc-fixxref line 478. Use of uninitialized value in substitution (s///) at /usr/bin/gtkdoc-fixxref line 479. Use of uninitialized value in substitution (s///) at /usr/bin/gtkdoc-fixxref line 480. Use of uninitialized value in substitution (s///) at /usr/bin/gtkdoc-fixxref line 481. Can’t delete html/_temp_src.15046.h.html: Datei oder Verzeichnis nicht gefunden at /usr/bin/gtkdoc-fixxref line 486. make[1]: *** [html-build.stamp] Fehler 2 make[1]: Leaving directory `/var/tmp/portage/gnome-base/libbonobo-2.24.3/work/libbonobo-2.24.3/doc/api’ make: *** [all-recursive] Fehler 1
After some days of searching I was able to track the issue down to the part of gtk-docfixref that uses vim for highlighting. Perhaps my gtk-doc version (gtk-doc-1.13-r2) is not compatible to my vi version (vim-7.2.303). Even uninstalling vi for testing purposes was not successful since at least this version of gtk-docfixref tries to use vi even if it is not installed.
Line 290 of gtkdoc fixref:
if (“/usr/bin/vim” ne “”) {
Changing this line to
if (“/usr/bin/vim” ne “/usr/bin/vim”) {
for forcing gtk-docfixref to always ignore vi was the (temporary) solution for me. Afterwards I was again able to build all the packages using gtk-doc for documentation.
Since I did not find any information about the problem in the web I am quite unsure if I should open a bug report for it or if it is only a local problem. So, if you experience the same problem please leave a comment.
Today, when I ran the regular update of my gentoo systems there was an update for compiz-fusion in portage. The compiz update did not work out of the box on my x8_64 systems, missing keywords, blocking packages, etc.
!!! All ebuilds that could satisfy “>=x11-plugins/compiz-plugins-main-0.8.6” have been masked. !!! One of the following masked packages is required to complete your request: – x11-plugins/compiz-plugins-main-0.8.6 (masked by: ~amd64 keyword)
the last line is there just because I don´t know if there will be a newer version of compiz-plugins-unsuported or not.
emerge compiz-fusion
[blocks B ] x11-plugins/compiz-fusion-plugins-extra (“x11-plugins/compiz-fusion-plugins-extra” is blocking x11-plugins/compiz-plugins-extra-0.8.4-r1) [blocks B ] x11-plugins/compiz-fusion-plugins-main (“x11-plugins/compiz-fusion-plugins-main” is blocking x11-plugins/compiz-plugins-main-0.8.4-r1)