Some Linux games (in fact, most) are still using OSS
, namely Enemy Territory
or Quake III Arena
for example. Even if your sound subsystem is well configured (either with real OSS
or with ALSA
’s OSS
emulation), you may encounter a no sound problem under these games.
Sometimes there’s an error message associated:
1
2
3
...
/dev/dsp: Input/output error
Could not mmap /dev/dsp
Here’s how to fix this:
First, get the name of the executable of the program you’re trying to launch. For quake3 it’s quake3.x86
or quake3-smp.x86
if you have multiple CPU cores. Then, as root:
1
# echo "quake3.x86 0 0 direct" > /proc/asound/card0/pcm0p/oss
This should do it. Of course, replace quake3.x86
by the actual name of your game’s executable file. You may try to replace direct by disable if the first doesn’t work.
- Side note 1: “card0” is right if you have only one sound card. If you have several cards, try also card1, card2, etc.
- Side note 2: the
sudo
fanatics (like me) will notice that:
1
$ sudo echo "whatever" > /somewhere/where/only/root/has/access
… doesn’t work. This is because the redirection “>” is made by the currently running shell (under your user account). Only the command echo
is done with root access, which is useless. You may use this instead:
1
$ echo "whatever" | sudo tee /somewhere/where/only/root/has/access
- Side note 3: For
Quake III Arena
, you may want to try the open-source version of the engine. It works way better (for me, at least) than the ID version. They useSDL
for the sound instead ofOSS
, and it’s really nicer. Google for ioquake3 if you’re interested. It’s packaged at freshrpms too.