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-2.3.3.1), 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.

Jürgen

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

nvidia-drivers-295.17 solve black screen problem

Using nvidia linux drivers from version 270.X to 275.X with some graphics boards, in example the Quadro FX 350M which is built into the Dell Precision M65 notebook,  resulted in a black screen or window for OpenGL applications. Even glxgears did only output a black window. The problem has been discussed on forums.opensuse.org. A downgrade to a lower driver version, in example the version 260.X drivers is not applicable anymore, since these drivers do dot build against a recent linux-3 kernel. A upgrade to newer drivers also was not possible, since driver versions from 285.X to 295.10 did not work at all for this graphics board. Recently version 295.17 of nvidias beta driver has become available, which solves this issue. Download links are available on nvnews.net.

For gentoo users I have modified the nvidia-drivers  ebuild for the 295.17 driver. You can download my modified overlay, nvidia-drivers-295.17.tar.gz (895) and extract it in /usr/local/portage. Be sure to include the following line in your /etc/make.conf:

PORTDIR_OVERLAY=”/usr/local/portage”

Afterwards you may emerge nvdidia-drivers-295.17.

Jürgen

 

 

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

tuxonice problems with nvidia-drivers-270.41.06

A few days ago nvidia-drivers-270.41.06 appeared in the gentoo partage tree. During my regular updates it got installed. Afterwards turonice did not work anymore with the configuration I wrote about in zen-sources-2.6.38_p20110501 with tuxonice.

The dmesg output during supend to disk was:

Freezing processes & syncing filesystems.
Stopping fuse filesystems.
Freezing user space processes … (elapsed 0.01 seconds) done.
Stopping normal filesystems.
Freezing remaining freezable tasks … (elapsed 0.01 seconds) done.
Preparing Image. Try 1.
Restarting normal filesystems.
Stopping fuse filesystems.
Freezing user space processes … (elapsed 0.00 seconds) done.
Stopping normal filesystems.
Freezing remaining freezable tasks …
Freezing of tasks failed after 20.00 seconds (1 tasks refusing to freeze, wq_busy=0):
khugepaged      R  running task        0   619      2 0x00800000
ffff88004ef24fa0 ffffffff81692eb9 ffff88004ef24fa0 ffff8800cf13e0c0
ffff8800c861e000 ffff8800c861e010 ffff8800c861e000 ffff8800cf13e330
ffff8800c861ffd8 ffff8800c861e010 ffff8800cf13e148 ffff8800cf13e330
Call Trace:
[<ffffffff81692eb9>] ? schedule+0x729/0xea0
[<ffffffff8169308b>] ? schedule+0x8fb/0xea0
[<ffffffff8110d4ab>] ? __page_check_address+0x10b/0x190
[<ffffffff8110d9f6>] ? page_referenced_one+0x96/0x220
[<ffffffff8110eb7a>] ? page_referenced+0x2da/0x370
[<ffffffff810f13fd>] ? shrink_page_list+0x21d/0x5d0
[<ffffffff810f1b9e>] ? shrink_inactive_list+0x15e/0x4d0
[<ffffffff812d74b8>] ? __next_cpu+0x18/0x30
[<ffffffff8103877b>] ? resched_best_mask+0x3b/0xd0
[<ffffffff810f22bb>] ? shrink_zone+0x3ab/0x500
[<ffffffff810f32bf>] ? do_try_to_free_pages+0xcf/0x470
[<ffffffff810f3965>] ? try_to_free_pages+0xa5/0x1c0
[<ffffffff810e7d5c>] ? __alloc_pages_nodemask+0x49c/0x900
[<ffffffff81050496>] ? try_to_del_timer_sync+0x76/0x110
[<ffffffff81050690>] ? process_timeout+0x0/0x10
[<ffffffff81126461>] ? khugepaged_alloc_hugepage+0x51/0xe0
[<ffffffff81061c70>] ? autoremove_wake_function+0x0/0x30
[<ffffffff811266bd>] ? khugepaged+0xad/0x10e0
[<ffffffff81061c70>] ? autoremove_wake_function+0x0/0x30
[<ffffffff81126610>] ? khugepaged+0x0/0x10e0
[<ffffffff81126610>] ? khugepaged+0x0/0x10e0
[<ffffffff81061706>] ? kthread+0x96/0xa0
[<ffffffff8103c6af>] ? schedule_tail+0x4f/0x110
[<ffffffff81003bd4>] ? kernel_thread_helper+0x4/0x10
[<ffffffff81061670>] ? kthread+0x0/0xa0
[<ffffffff81003bd0>] ? kernel_thread_helper+0x0/0x10

Cleaning up…
Restarting all filesystems …
Restarting tasks … done.
video LNXVIDEO:00: Restoring backlight state
TuxOnIce debugging info:
– TuxOnIce core  : 3.2
– Kernel Version : 2.6.38.4-zen
– Compiler vers. : 4.4
– Attempt number : 1
– Parameters     : 17 700428 2 1 -2 4
– Overall expected compression percentage: 50.
– Compressor is ‘lzf’.
– Block I/O active.
Used 0 pages from swap on /dev/sda6.
– Max outstanding reads 1. Max writes 0.
Memory_needed: 1024 x (4096 + 360 + 112) = 4677632 bytes.
Free mem throttle point reached 0.
– Swap Allocator enabled.
Swap available for image: 2098481 pages.
– File Allocator active.
Storage available for image: 0 pages.
– No I/O speed stats available.
– Extra pages    : 0 used/500.
– Result         : Hibernation was aborted.
: Freezing filesystems and/or tasks failed.

Somehow there seems to be a problem with nvidia-drivers-270.41.06. After downgrading to nvidia-drivers-260.19.44 tuxonice worked as usual.

Addon:

This solution was partly wrong. As I noticed later, the problem still persists occasionally. With the older nvidia-driver the probability that the problem occurs just was lower. However, the main reason  for the tuxonice abort is some incompatibility between tuxonice and the new transparent hugepage feature of the kernel. As a workaround one may disable the transparent hugepage support before suspension and reenable it afterwards. I.e. one can include something like the following in his hibernate configuration:

OnSuspend 90 echo ‘never’ > /sys/kernel/mm/transparent_hugepage/enabled

OnResume 90 echo ‘always’ > /sys/kernel/mm/transparent_hugepage/enabled

or

OnResume 90 echo ‘madvise’ > /sys/kernel/mm/transparent_hugepage/enabled

Jürgen

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

Flightgear with VR920 headtracking

Recently I basically got Flightgear to work with quad buffered stereo. The only thing that was still missing for having the Vusix VR920 head mounted display fully supported in the flight simulator was headtracking.

However, with my new headtracking driver, VR920 headtracking in Flightgear is possible at last. A good part of the work has been done by Anders Gidenstam who provided the original Nasal module, the headtracking protocol description and usage instructions for his webcam based headtracking solution for Flightgear.

Download and copy the protocol description headtrack.xml (980) to $FG_ROOT/Protocol. For me (gentoo system) this location is /usr/share/games/FlightGear/Protocol/, probably for many others it is /usr/share/FlightGear/Protocol/

Afterwards download unzip the modified Nasal module headtracking.nas (1035) to ~/.fgfs/Nasal. It is important to use your home directory and NOT i.e. /usr/share/games/FlightGear/Nasal/.

Then make sure that the vr920 headtracking driver runs in UDP mode. If running Flightgear on the same machine as the headtracking driver, which should be the usual case, just use 127.0.0.1 as destionation IP for the driver and use 4242 as destination port. These are the default settings of the driver.

Finally run Flightgear with these options: –generic=socket,in,<hz>,,<port>,udp,headtrack –prop:/sim/headtracking/enabled=1

If you also want to have quad buffered stereo with it (you need an nvidia quadro board, with assumably a pre G80 Chip or probably an ATI FireGL, never tried that, and a stereo enabled xserver) use the patch from FlightGear with quad buffered stereo. For instructions on how to get the xserver to work in stereoscopic mode see: Vuzix VR920 with Linux and active 3D stereo

For the described configuration you can use the following little startup script:

export OSG_STEREO_MODE=QUAD_BUFFER
export OSG_STEREO=ON
fgfs –generic=socket,in,25,,4242,udp,headtrack –prop:/sim/headtracking/enabled=1

Now have much fun and enjoy a new experience with your VR920 and Flightgear in stereo with headtracking.

best regards

Jürgen

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

VRTrack 1.0 – headtracking driver for the vr920 HMD

As I promised in New version of the vr920 headtracking driver coming soon here is the new version of my headtracking driver for the Vuzix VR920 iwear for Linux. It calculates yaw, pitch and roll from the accelerometer and magnetometer data (The device has got three of each). This makes a 3DOF tracking possible and allows you to look around in a 3D Scene.  In example you can use the driver with my stereoscopic image viewer SIV. The driver averages the sensor readings with an improved algorithm, which gives a far smoother experience than with the initial driver version. The driver package consists of a daemon which can be run in the background and for convenience a basic control application that enables one to easily tweak the various driver settings and to callibrate the device. For general Information on how to use the device with Linux see: Vuzix VR920 with Linux and active 3D stereo.

The driver provides the trackingdata in different formats to the application using it. It always writes the data to /dev/headtracking. A line read from /dev/vrtrack consists of six floats that correspond a sensor reading in this format:

yaw pitch roll x y z

Yaw, pitch and roll are angles from 0 to 360 degrees. X, y and z are always zero for the vr920, since it only supports three degrees of freedom. These values are reserved for future devices which may support six degrees of freedom, in the hope to propose a standard for tracking devices.

The driver can scale the readings and invert the axes independantly to get the needed value range for the used application and a pleasant experience.

For maximum compatibility with existing applications there are four other modes of operation available that can be enabled separately:

  • Joystick emulation
    The driver emulates a joystick device /dev/input/jsX. The readings for yaw, pitch and roll are the X,Y and Z axis of the emulated joystick. This may be used to enable basic headtracking support in games that do not natively support headtracking.
  • Mouse emulation
    The driver emulates a joystick device /dev/input/mouseX. The readings for yaw and pitch are being translated to X and Y of the mouse device, so when you look right the mouse pointer moves to the right and when you look up the pointer moves upwards and vice versa.  This may also be used to enable basic headtracking support in games that do not natively support headtracking. It can also be used to just control the mouse pointer of the window system. Controlling the viewport of the window system can also be a resonable purpose. With the new MPX extension in xorg this may be possible.
  • UDP – network
    In UDP mode the driver sends the tracking data via network as UDP unicast. The approach to send the data out via network makes the language used for writing the application independant from the language used for developing the driver. The packet sent to the clients contains the three angles, yaw, pitch and roll and x,y and z as 32 bit fixed point in Q16.16 format. This mode may i.e. used to control flightgear.
  • Multicast – network
    In multicast mode the driver sends the tracking data via network as UDP multicast, thus many clients may read the data, which makes parallelization more possible, i.e. one could use one machine for rendering and another machine for calculations. In addition to this, the approach to send the data out via network makes the language used for writing the application independant from the language used for developing the driver. The tracking data sent to the clients contains the three angles, yaw, pitch and roll and for easy usage a viewmatrix, one can directly use with scenegraph libraries. If you intend to develop an application using the headtracking of the VR920 see the file democlient.cpp included in the download for details on how to get the data into your application. This mode is used by the stereoscopic image viewer SIV.
Below is a screenshot of the control application during callibration of a vr920 device:
control_appvrtrack driver during calibration ( screenshot)

Important note: During calibration make sure that the display of the device is displaying something. Since the displays not only showing a blue screen influences the sensor data (at least with my device) you’ll end with wrong calibration else. You may use i.e. nvidia-settings to ensure this. For detailed usage instructions see the readme included in the download.

Download:

I decided to publish the driver under the creative common noncommercial license. You may download the full source from here: vrtrack-1.0.tar.gz (1296), an x86_64 binary from here: vrtrack-1.0-x86_64.tar.gz (1185) , or an i686 binary from here: vrtrack-1.0-x86.tar.gz (1158). An Archlinux PKGBUILD provided by Feilen is available here: aur.archlinux.org More binary/distribution specific formats may be available in the future. The x86_64 binary has been build on an up to date gentoo system, the i686 binary on ubuntu hardy. For the i686 binary you may install libconfig++ i.e. libconfig++8_1.3.2-2 from here: libconfig++ If none of the binaries works for you, you may have to build from source…

You need to have libusb, libconfig++, libfuse and libcurses installed on your system. For ubuntu users I included the small shell script ubuntu_install_deps.sh that installs the dependencies. Maybe it works also for for other Debian-based distributions. Gentoo users just have to make sure that  libusb, ncurses, fuse, and libconfig have been emerged. Your kernel version has to be at least 2.6.31 and you must have cuse enabled in your kernel.

Footnote:

If you like the driver, feel free to link to www.mygnu.de. If you developed an application using the tracking data provided by the driver please leave a comment, because then I can review the application and eventually write about it. To request commercial licenses contact us at info(at)mygnu.de. Well, if you just want to support our work on MyGNU.de use the donate button 😉

best regards

Jürgen

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

New version of the vr920 headtracking driver coming soon

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)
  • Better filtering algorithm (more stable headtracking)
  • 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.

Stay tuned for updates

Jürgen

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

pulseaudio – flash blocks the audio device

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:

echo “=www-plugins/adobe-flash-10.2.161.22_pre20100915 **” >> /etc/portage/package.keywords

emerge adobe-flash

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:

nspluginwrapper  -r /usr/lib/mozilla/plugins/npwrapper.libflashplayer.so

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.

screenshot

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.

kernel configuration for cuse

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: ossp-1.3.2.ebuild (927)

To use the ebuild, just copy it to/usr/local/portage/media-sound/ossp/ . You probably have to create the directory. Then run

ebuild /usr/local/portage/media-sound/ossp-1.3.2.ebuild digest

Be sure to include the following line in your /etc/make.conf.

PORTDIR_OVERLAY=”/usr/local/portage”

Also include ossp into your /etc/portage/package.keywords

echo “media-sound/ossp **” >> /etc/portage/package.keywords

Afterwards just

emerge ossp

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.

Jürgen

References:

BombStrike´s blog: How to use two different computers with two differents OSes seemlessly

H3X.SE: FAQ

Linux Live: ALSA and Jack Cooperate using PulseAudio

Gentoo Bugzilla: osspd ebuild

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