:Zolid/Kworld DVD maker (USB EM2861 video capture device) on Ubuntu Linux

by levien on zo 13 januari 2008 // Posted in misc // under

Last year I bought a cheap :ZOLID High-Speed DVD Maker at Aldi. Of course it was only packaged with Windows software, so I spent some time researching how to get the thing to work on Ubuntu Linux. It turns out that the device is sold under a number of different names (Yakumo MovieMixer, Kworld DVD Maker, Tevion DVD Maker, probably others as well) and is based on an Empiatech EM2861 chip. A Video4Linux (V4L) driver for this chip is included in the standard Ubuntu Linux kernel modules (em28xx), but in Ubuntu version before 8.10 it does not recognise the USB IDs of this particular device. So for older Ubuntu versions (up to Hardy Heron), it is necessary to compile and install the "experimental" branch. Luckily this is very easy. Open a terminal, and go to a directory where you want to store the source-files for the drivers (if you don't have a dedicated source directory, your home-directory should be OK). Then do:

apt-get install linux-source linux-headers-generic mercurial
hg clone http://mcentral.de/hg/~mrec/v4l-dvb-experimental
cd v4l-dvb-kernel
make
sudo make install

After a reboot the kernel should recognise the DVD Maker and create a Video4Linux device for it. This is the relevant bit of output from dmesg:

[ 23.556000] Linux video capture interface: v2.00
[ 23.560000] usbcore: registered new interface driver snd-usb-audio
[ 23.592000] usbcore: registered new interface driver hiddev
[ 23.684000] em28xx v4l2 driver version 0.0.1 loaded
[ 23.684000] em28xx new video device (eb1a:2861): interface 0, class 255
[ 23.684000] em28xx: device is attached to a USB 2.0 bus
[ 23.684000] em28xx: you're using the experimental/unstable tree from mcentral.de
[ 23.684000] em28xx: there's also a stable tree available but which is limited to
[ 23.684000] em28xx: linux <=2.6.19.2
[ 23.684000] em28xx: it's fine to use this driver but keep in mind that it will move
[ 23.684000] em28xx: to http://mcentral.de/hg/~mrec/v4l-dvb-kernel as soon as it's
[ 23.684000] em28xx: proved to be stable
[ 23.684000] em28xx #0: Alternate settings: 8
[ 23.684000] em28xx #0: Alternate setting 0, max size= 0
[ 23.684000] em28xx #0: Alternate setting 1, max size= 0
[ 23.684000] em28xx #0: Alternate setting 2, max size= 1448
[ 23.684000] em28xx #0: Alternate setting 3, max size= 2048
[ 23.684000] em28xx #0: Alternate setting 4, max size= 2304
[ 23.684000] em28xx #0: Alternate setting 5, max size= 2580
[ 23.684000] em28xx #0: Alternate setting 6, max size= 2892
[ 23.684000] em28xx #0: Alternate setting 7, max size= 3072
[ 23.724000] usbcore: registered new interface driver usbhid
[ 23.724000] drivers/usb/input/hid-core.c: v2.6:USB HID core driver
[ 23.752000] attach_inform: tvp5150 detected.
[ 23.816000] tvp5150 1-005c: tvp5150am1 detected.
[ 23.912000] em28xx #0: V4L2 device registered as /dev/video0
[ 23.912000] em28xx #0: Found Yakumo MovieMixer
[ 23.912000] usbcore: registered new interface driver em28xx

Note that you will have to reinstall the modules every time the Ubuntu kernel is updated. So it's a good idea to keep the directory containing the source tree around somewhere, and repeat the "make install" after every kernel update.

Watching and recording video:

In theory, you should be able to use any application that is V4L2 compliant for watching and recording the video input from the DVD Maker. In practice, I had quite a bit of trouble with most applications on my laptop. I found that MPlayer and MEncoder were the only ones that could display and record both video and audio without problems on my system. This is the script I use to record PAL composite video to an MPEG4 AVI file:

1
2
3
4
5
#!/bin/bash

mencoder -tv driver=v4l2:input=1:width=720:height=576 \
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900 \
-o $1 -vf lavcdeint tv://

Just save the above to a text-file (say recordvideo.sh), make it executable (e.g. by doing: chmod a+x recordvideo.sh) and put it in a place where your shell can find it (sudo cp recordvideo.sh /usr/local/bin). You can then record video by doing something like "recordvideo.sh output.avi", and press Ctrl-C when you're done recording. You may have to change some options to get it to work on your device. Especially the input numbering apparently varies between devices. For instance on my device input=1 selects composite video. However, for the Kworld DVD maker this has been reported to select S-Video, and you have to use input=0 instead. With audio everything's a bit more tricky, as the DVD Maker registers an USB Audio device and its ALSA device name may vary between systems. For me, this works:

1
2
3
4
5
#!/bin/bash

mencoder -tv driver=v4l2:input=1:width=720:height=576:forceaudio:alsa:adevice=hw.1,0 \
-ovc lavc -oac mp3lame -lavcopts vcodec=mpeg4:vbitrate=900 \
-o $1 -vf lavcdeint tv://

To watch the composite video input from the DVD Maker (with audio), I use the following:

mplayer -tv driver=v4l2:input=1:width=720:height=576:forceaudio:alsa:adevice=hw.1,0 \
-vf screenshot -vf pp=ci -zoom tv://

This will give you full-screen deinterlaced video. As a useful feature, it has the "screenshot" filter enabled, so you can save screenshots from the input simply by pressing the "s"-key. If you want only webcam-style periodic screenshots, you could do something like:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/bash

mplayer -tv driver=v4l2:input=1:width=720:height=576:forceaudio:alsa:adevice=1.0 \
-vf pp=lb -zoom tv:// -frames 1 -vo jpeg

output=`date +%Y%m%d-%H-%M-%S`.jpg
mv 00000001.jpg $output
echo Frame written to $output

sleep 30

This will save an image from the input to a date-coded JPEG file every 30 seconds. The method I used in all the examples above captures raw video and compresses that. However, according to the specs, the device should be able to do MPEG-2 compression in hardware. This would save a significant amount of USB-bus bandwidth and CPU-time. Unfortunately I haven't been able to get this to work yet.

Mac users:

Unfortunately there is no free em28xx driver for the Mac yet. Markus Rechberger is apparently working on one: http://www.wikiservice.at/dse/wiki.cgi?MarkusRechberger/MacOSX If you don't mind paying an additional \$30, there is a commercial EM28xx driver and video capture application for Mac OS X called Echo FX VideoGlide.

References:

Updates:

2008-02-03: As of Ubuntu 8.10 (Intrepid Ibex), the v4l devices in the kernel have been updated and this device is recognised out of the box.