Installing AVerMedia AVerTV Hybrid Volar HD (H830) on Debian (Squeeze/sid)

The AVerMedia AVerTV Hybrid Volar HD (H830) uses a tuner with TDA18272 chipset.
It seems to be an improvement of the TDA18271, with DVB-T2 support.
Unfortunately, there is no open driver, I think.

AVerMedia releases a version of a closed driver which is tested for Ubuntu.
The autoinstaller fails on debian because
- he does not know where to find the v4l/dvb-t headers
- a closed source part needs a symbol which lacks on Debian stock kernels.


We will see how to install it on Debian.
It should be adaptated for any distribution.

Step 0: the kernel

The closed source prebuild needs the symbol "mcount" to be defined. You can check if you have it with

grep mcount /lib/modules/$(uname -r)/build/Module.symvers

If "0xb4390f9a mcount vmlinux EXPORT_SYMBOL" appears, it is fine.

It is not the case in a Debian stock kernel, so we must recompile the kernel.

See e.g. http://ashgenesis.developpez.com/linux/kernel-debian/

You must me sure to enable CONFIG_FTRACE_MCOUNT_RECORD.

It is not clear that every kernel will be easy to configure.

It took the kernel from linux-source-2.6.32_2.6.32-35_all.deb (you can get it here).

Install the source with apt-get or dpkg -i.
Some hints for configuring your kernel:

cd /usr/src/linux-source-2.6.32
You can copy my .config. Caution, architecture is AMD64.
sudo make-kpkg --initrd linux-image
Install kernel image : sudo dpkg -i ../linux-image-2.6.32_2.6.32-10.00.Custom_amd64.deb

Edit: it also works with Linux kernel 3.0.0 and 3.2.0.
Unfortunately, it does not work with kernel 3.3.x and higher because the DVB API has been rewriten.

You can now reboot.

Step 1: DVB and v4l-driver

If necessary, install the V4L driver. See e.g. http://www.linwik.com/wiki/installing+the+latest+v4l+tv+tuner+drivers+in+debian+gnu+linux+5.0
It should not be necessary if you have installed the kernel source

Step 2: the driver

Download the AV driver from http://www.avermedia.com/avertv/Product/ProductDetail.aspx?Id=501&tab=APDriver

Be careful to take the right driver (32 bits or 64 bits).

tar -zxvf H830_LinuxDrv_x*_V1.0.28-beta_OEM.tar.gz

cd H830_LinuxDrv_x*_V1.0.28-beta_OEM

Then, we have to extract a tarfile included in the auto-installer:

END_OF_SCRIPT=`head H830_LinuxDrv*.sh | grep END_ | cut -f 2 -d "="`
tail -n +"$END_OF_SCRIPT" H830_LinuxDrv*.sh > installer.tar.bz2

extract :

bzip2 -d installer.tar.bz2 ; tar xvf installer.tar

cd installer

Eventually edit the Makefile to ensure that the the v4l-dvb files are in the path. It should not be necessary if you have the kernel source.

For example:

EXTRA_CFLAGS += -I/usr/src/v4l-dvb/linux/drivers/media/video
EXTRA_CFLAGS += -I/usr/src/v4l-dvb/linux/drivers/media/common/tuners
EXTRA_CFLAGS += -I/usr/src/v4l-dvb/linux/drivers/media/dvb/dvb-core
EXTRA_CFLAGS += -I/usr/src/v4l-dvb/linux/drivers/media/dvb/frontends
EXTRA_CFLAGS += -I/usr/src/v4l-dvb/v4l/

cp prebuild-x64.o prebuild.bak #(or prebuild-4G.o or prebuild-64G.o in x86)
make
KVER=$(uname -r)
mkdir backup ; cp -a /lib/modules/$KVER/kernel/drivers/media/video/cx231xx/*.ko backup/
#just in case
sudo ./install.sh

Test

I have tested DVB-T, normal and HD, with mplayer and vlc. The image is very fine.
I successfully scanned the channels with scan from dvb-apps.

However, I see error in the kernel when tuning.

[ 749.622325] tda18271_agc: unsupported configuration: 12
[ 749.622335] tda18271_tune: error -22 on line 900
[ 749.622340] tda18271_tune: failed to configure agc
[ 4289.630147] tda18271_agc: unsupported configuration: 12

I don't think it is a big deal.

Comment

If you have made step 0, installing a new appropriate source kernel, I guess the auto-installer from Avermedia should work.
But in case of trouble, it will be more difficult to debug.

Video capture

Video capture works fine. There are scripts based on mplayer for PAL or NTSC. For secam:

mplayer -quiet -slave tv:// -tv driver=v4l2:device=/dev/video1:alsa:adevice=hw.2,0:amode=1:audiorate=48000:forceaudio:volume=100:immediatemode=0:normid=14:outfmt=YUY2:input=1:buffersize=64:width=720

You may have to replace adevice=hw.2,0 by adevice=hw.1,0, depending on your configuration.
Similarly, you may have to replace device=/dev/video1 by device=/dev/video0 or something else.


Replace input=1 by input=2 if you want to use the S-video cable.

Last modification: 19.09.2012