Audio forwarder. Copyright 1999 Pete Wyckoff . This is a pre-release, and might oops your machine. It seems stable enough on mine right now, regardless of which daemons are up/down, and where Ctrl-C lands in various processes, but I may have missed some corner cases. Comments are welcome, in particular on nice ways to expand this to handle arbitrary character devices, and how not to have to hard-code all known ioctls into the code. Patches are even more welcome. It's only been tested with linux kernels 2.3.3 and 2.3.5, both uniprocessor and SMP versions. Glibc version 2.1. The players: client machine - no soundcard fakeaudio.o module - listens on char device major 14, and responds for /dev/audio, /dev/dsp, /dev/mixer. Forwards system calls to the userspace daemon. afwd client userspace program - opens /dev/audio in a special way to tell the module it's the process that will forward system calls to some other machine. Opens a socket to the server machine. generic audio program - e.g. "cat foo.au > /dev/audio". Calls open/read/write/ioctl which are handled by the fakeaudio.o module. server machine - has soundcard afwd server userspace program - start with "afwd -r". Listens for socket connections, receives requests from client, performs them locally, and returns the results. Only one audio client at a time is supported, just like on a single machine. For mixing, check out EsounD (ref?). To start it all: server$ afwd -r & client# insmod fakeaudio client$ ./afwd & client$ cat incoming_call.au > /dev/audio To shut it down nicely: client$ echo kill all audio users client$ killall afwd client# rmmod fakeaudio server$ killall afwd The afwd daemon on the server must have permissions to open the audio devices, which are all 666 on my machine. Also there's no client authentication, but I only use it behind my firewall. Again, patches are welcome!