This is my first howto, so use with caution, but this process worked for me so I thought I'd share. There seem to be loads of solutions to this problem in other languages (I got this one from an Italian site), but I'm yet to find one in English.
Credit to gborzi for pointing me towards the solution :)
Right, straight into it then! You're going to need a few packages to start with:
sudo apt-get install linux-source mercurial libxine1-ffmpeg dvb-utils kaffeine
Linux-source is a large file, so be patient. After this, we need to extract the source.
cd /usr/src
sudo tar -xvf linux-source*.tar.bz2
A few files need to be copied to Linux headers.
sudo cp -v linux-source-2.6.27/drivers/media/dvb/dvb-core/*.h linux-headers-$(uname -r)/drivers/media/dvb/dvb-core/
sudo cp -v linux-source-2.6.27/drivers/media/dvb/frontends/lgdt330x.h linux-headers-$(uname -r)/drivers/media/dvb/frontends/
sudo cp -v linux-source-2.6.27/drivers/media/video/msp3400-driver.h linux-headers-$(uname -r)/drivers/media/dvb/frontends/
We then go back to the home directory and download the drivers needed with Mercurial.
cd
hg clone http://mcentral.de/hg/~mrec/em28xx-new
Finally, go to the directory where the drivers were downloaded to and build them.
cd em28xx-new
sudo ./build.sh build && sudo ./build.sh install
All that remains is to reboot and open Kaffeine to start watching!
If it doesn't work immediately, try the following line and open Kaffeine again:
sudo modprobe em28xx
Let me know if it works for you :)
Edit: I've just tested this in Jaunty Alpha 6 - not working so far...