Pinnacle Hybrid TV Tuner PCTV 330e in Ubuntu 10.10 Maverick

The problem seems to be with the USB ID eb1a:2881 which doesn’t appear to be a valid card ID

So try forcing it to be identified as Hauppauge WinTV HVR 900

sudo rmmod em28xx_dvb
sudo rmmod em28xx
sudo modprobe em28xx card=10 i2c_scan=1

if that doesn’t work, try to forcing it to be identified as Terratec Hybrid XS

sudo rmmod em28xx_dvb
sudo rmmod em28xx
sudo modprobe em28xx card=11 i2c_scan=1

Then let me know what dmesg says.

In this way now i can scan frequencies with w_scan.

On every system startup must be done that operations?
If so how can i automate the execution of that operation on system startup?


See last method first


You could try creating a script and adding it to init.d…

Create a script in /etc/init.d called something like my-tvcard:

sudo gedit /etc/init.d/my-tvcard

When gedit opens a blank file, add these 5 lines to it:

#!/bin/bash # My INIT script to unload the dvb drivers then reload with correct parameters rmmod em28xx_dvb rmmod em28xx modprobe em28xx card=11 i2c_scan=1

and SAVE the file.

Now make it executable:

sudo chmod +x /etc/init.d/my-tvcard

Then update-rc.d to add it to all default runlevels:

sudo update-rc.d my-tvcard defaults

Now try rebooting, and see if the card works.

If it DOESN’T work, you can remove the changes with:

sudo update-rc.d my-tvcard remove

then delete the file you created with:

sudo rm /etc/init.d/my-tvcard

Another method would be to add the commands to rc.local:

sudo gedit /etc/rc.local

Add these 3 lines:

rmmod em28xx_dvb rmmod em28xx modprobe em28xx card=11 i2c_scan=1

just above the:
exit 0

so the end reads:

rmmod em28xx_dvb rmmod em28xx modprobe em28xx card=11 i2c_scan=1 exit 0

SAVE the file, and reboot.

Yet another method (but less secure… ie. it contains your password)…

Make a hidden executable script in your home folder called

sudo gedit ~/

containing the text:

#!/bin/bash echo "YOUR LOGIN PASSWORD" | sudo -S rmmod em28xx_dvb echo "YOUR LOGIN PASSWORD" | sudo -S rmmod em28xx echo "YOUR LOGIN PASSWORD" | sudo -S modprobe em28xx card=11 i2c_scan=1
(obviously you need to add YOUR password)

SAVE the file.

Make it executable with:

chmod +x ~/

Now, go to System>Preferences>StartUp Applications, click Add and make the fields read -

Name: my-tvcard (or whatever you want)
Command: /home/username/
Comment: DVB-TV driver script (or whatever you want)
(change username for YOUR username)

And click Add

Now reboot.

Probably the easiest method…

Instead of adding the script as a startup application, you could add it to the command line contained in the kaffeine launcher… so the script runs the commands prior to loading kaffiene.

ie. make the script read:

#!/bin/bash echo "YOUR LOGIN PASSWORD" | sudo -S rmmod em28xx_dvb echo "YOUR LOGIN PASSWORD" | sudo -S rmmod em28xx echo "YOUR LOGIN PASSWORD" | sudo -S modprobe em28xx card=11 i2c_scan=1 kaffeine

make it executable.

and have the kaffeine “launcher” (shortcut) point to the script instead of directly at kaffeine.

Thank you Mark my Pinnacle Hybrid TV Tuner works very well.

I want to study linux dvb and linux dvb api. I’d like to increase my knowledge on

  • streaming audio and video
  • electronic program guide
  • conditional access module

Can you give me some intersesting source for documentation?

Thank you again

Sorry but I don’t really know… I suppose you could start here:

You could subscribe to the mailing lists here:

Or ask for further info on the IRC channel:

#linuxtv @


Maybe a search of sourceforge might throw up something of interest ?


I am trying to install PCTV Hybrid Pro Stick 330e on Ubuntu v11.4 (64bit) and tried your codes.

However, after typing the following:
sudo hg clone

I get the following message:
abort: requirement ‘<?xml version="1.0" encoding="ANSI_X3.4-1968"?>’ not supported!

Can you help me solving the error?


Yes… that error means the address can’t be found… the reason…

You’ve entered a 1 (number one) in v41-dvb-drxd

it should be a lower case L

ie. Video 4 Linux (V4L-DVB-DRXD in lower case)


So sorry for the typo earlier!

Now when I do:
sudo make

I get the following error:

sudo make
make -C /usr/src/v4l-dvb-drxd/v4l
make[1]: Entering directory /usr/src/v4l-dvb-drxd/v4l' scripts/ ./scripts/ make[1]: Leaving directory /usr/src/v4l-dvb-drxd/v4l’
make[1]: Entering directory /usr/src/v4l-dvb-drxd/v4l' perl scripts/ /lib/modules/2.6.38-8-generic/build ./.myconfig ./config-compat.h creating symbolic links... ln -sf . oss make -C firmware prep make[2]: Entering directory /usr/src/v4l-dvb-drxd/v4l/firmware’
make[2]: Leaving directory /usr/src/v4l-dvb-drxd/v4l/firmware' make -C firmware make[2]: Entering directory /usr/src/v4l-dvb-drxd/v4l/firmware’
CC ihex2fw
Generating vicam/firmware.fw
Generating dabusb/firmware.fw
Generating dabusb/bitstream.bin
Generating ttusb-budget/dspbootcode.bin
Generating cpia2/stv0672_vp4.bin
Generating av7110/bootcode.bin
make[2]: Leaving directory /usr/src/v4l-dvb-drxd/v4l/firmware' Kernel build directory is /lib/modules/2.6.38-8-generic/build make -C /lib/modules/2.6.38-8-generic/build SUBDIRS=/usr/src/v4l-dvb-drxd/v4l modules make[2]: Entering directory /usr/src/linux-headers-2.6.38-8-generic’
CC [M] /usr/src/v4l-dvb-drxd/v4l/tuner-xc2028.o
/usr/src/v4l-dvb-drxd/v4l/tuner-xc2028.c: In function ‘free_firmware’:
/usr/src/v4l-dvb-drxd/v4l/tuner-xc2028.c:252:3: error: implicit declaration of function ‘kfree’
/usr/src/v4l-dvb-drxd/v4l/tuner-xc2028.c: In function ‘load_all_firmwares’:
/usr/src/v4l-dvb-drxd/v4l/tuner-xc2028.c:314:2: error: implicit declaration of function ‘kzalloc’
/usr/src/v4l-dvb-drxd/v4l/tuner-xc2028.c:314:13: warning: assignment makes pointer from integer without a cast
/usr/src/v4l-dvb-drxd/v4l/tuner-xc2028.c:365:21: warning: assignment makes pointer from integer without a cast
/usr/src/v4l-dvb-drxd/v4l/tuner-xc2028.c: In function ‘xc2028_attach’:
/usr/src/v4l-dvb-drxd/v4l/tuner-xc2028.c:1269:13: warning: assignment makes pointer from integer without a cast
make[3]: *** [/usr/src/v4l-dvb-drxd/v4l/tuner-xc2028.o] Error 1
make[2]: *** [module/usr/src/v4l-dvb-drxd/v4l] Error 2
make[2]: Leaving directory /usr/src/linux-headers-2.6.38-8-generic' make[1]: *** [default] Error 2 make[1]: Leaving directory /usr/src/v4l-dvb-drxd/v4l’
make: *** [all] Error 2

I am using Ubuntu 11.4 (64bit), is that the reason I am still getting the error?

I followed the following instruction:

At a guess, I’d say rename (or delete) the /usr/src/v4l-dvb-drxd directory:
Code: [Select]
sudo mv /usr/src/v4l-dvb-drxd /usr/src/v4l-dvb-drxd-old
and start again, but this time leave out these 2 commands:


sudo wget
sudo patch -p1 < drxd_2_6_35.di ff

I still get the above errors.


Yes, they’ve obviously changed something in kernel 2.6.38 so the patch for 2.6.35 no longer works.

You could try this… it would be an “at your own risk” kind of thing though… beyond the installation I cannot test them, but they seem to install OK on Natty running in a VM.

The only thing I can find for kernel 2.6.38 is someone who has modified the drivers for that kernel (see link 1 below), but they don’t include the make file, so I’ve used the make file from the 2.6.35 version (see link 2 below) and they seem to compile correctly, but I cannot test them as I no longer have a 330e

Download the pre-modified drivers for 2.6.38 that DO include the make file here:

unpack them… cd to the directory… and run:

sudo make install

Links (in Italian so use Google translate if needed) -,455503.0.html

FYI, apparently the drivers are going to be built in to the next kernel release 2.6.39

Wow! This appears to be related to an issue I am having.

I have a usb video capture card intended to connect to a VCR so I can convert my old (and priceless to me) videos to dvd and to store on a hard drive.

It has the empia 2861 chipset. It appears to be detected. I have been attempting to use firstly VLC and then secondly kdenlive as the capture program.

To save retyping everything I take the liberty of setting out the link here:

Whilst the vendor indicated that this card was not reported to work with linux my suspicion is that I might not be too far away here. If there are any tips to push it over the line I’ll be very grateful.

Which distro and version are you using ? empia em28xx based cards were supposed to work out of the box with Lucid, but I seem to remember something about /dev/dsp only appearing sometimes in Maverick.

Anything relevant in dmesg ?

dmesg | grep -e em28 -e v4l

and is /dev/dsp present when the card is plugged in ?


I’m using kubuntu 11.04 on a dell inspiron 630m laptop.

Unfortunately the card is at home but I’ll post the output later.

Code is

dmesg | ian@ian-MXC051:~$ dmesg | grep -e em28 -e v4l
[11158.444471] em28xx: New device @ 480 Mbps (eb1a:2861, interface 0, class 0)
[11158.444676] em28xx #0: chip ID is em2860
[11158.541678] em28xx #0: board has no eeprom
[11158.576059] em28xx #0: found i2c device @ 0x4a [saa7113h]
[11158.617554] em28xx #0: Your board has no unique USB ID.
[11158.617561] em28xx #0: A hint were successfully done, based on i2c devicelist hash.
[11158.617564] em28xx #0: This method is not 100% failproof.
[11158.617567] em28xx #0: If the board were missdetected, please email this log to:
[11158.617569] em28xx #0:       V4L Mailing List  <>
[11158.617572] em28xx #0: Board detected as EM2860/SAA711X Reference Design
[11158.696028] em28xx #0: Identified as EM2860/SAA711X Reference Design (card=19)
[11158.696034] em28xx #0: Registering snapshot button...
[11158.696863] input: em28xx snapshot button as /devices/pci0000:00/0000:00:1d.7/usb1/1-7/input/input8
[11159.208457] saa7115 14-0025: saa7113 found (1f7113d0e100000) @ 0x4a (em28xx #0)
[11159.976228] em28xx #0: Config register raw data: 0x10
[11160.000365] em28xx #0: AC97 vendor ID = 0x414c4740
[11160.012232] em28xx #0: AC97 features = 0x5990
[11160.012235] em28xx #0: Unknown AC97 audio processor detected!
[11160.472029] em28xx #0: v4l2 driver version 0.1.2
[11161.538093] em28xx #0: V4L2 video device registered as video0
[11161.538098] em28xx #0: V4L2 VBI device registered as vbi0
[11161.555892] usbcore: registered new interface driver em28xx
[11161.555896] em28xx driver loaded

And here is the output of ls /dev

agpgart          fw0                 port    rfkill    tty11  tty31  tty51      ttyS12  ttyS4       vcs3
autofs           hpet                ppp     root      tty12  tty32  tty52      ttyS13  ttyS5       vcs4
block            input               psaux   rtc       tty13  tty33  tty53      ttyS14  ttyS6       vcs5
bsg              kmsg                ptmx    rtc0      tty14  tty34  tty54      ttyS15  ttyS7       vcs6
btrfs-control    log                 pts     scd0      tty15  tty35  tty55      ttyS16  ttyS8       vcsa
bus              loop0               ram0    sda       tty16  tty36  tty56      ttyS17  ttyS9       vcsa1
cdrom            loop1               ram1    sda1      tty17  tty37  tty57      ttyS18  uinput      vcsa2
cdrw             loop2               ram10   sda2      tty18  tty38  tty58      ttyS19  urandom     vcsa3
char             loop3               ram11   sda3      tty19  tty39  tty59      ttyS2   usbmon0     vcsa4
console          loop4               ram12   sg0       tty2   tty4   tty6       ttyS20  usbmon1     vcsa5
core             loop5               ram13   sg1       tty20  tty40  tty60      ttyS21  usbmon2     vcsa6
cpu              loop6               ram14   shm       tty21  tty41  tty61      ttyS22  usbmon3     vga_arbiter
cpu_dma_latency  loop7               ram15   snapshot  tty22  tty42  tty62      ttyS23  usbmon4     video0
disk             mapper              ram2    snd       tty23  tty43  tty63      ttyS24  usbmon5     zero
dri              mcelog              ram3    sr0       tty24  tty44  tty7       ttyS25  v4l
dvd              mem                 ram4    stderr    tty25  tty45  tty8       ttyS26  vbi0
dvdrw            net                 ram5    stdin     tty26  tty46  tty9       ttyS27  vboxdrv
ecryptfs         network_latency     ram6    stdout    tty27  tty47  ttyprintk  ttyS28  vboxnetctl
fb0              network_throughput  ram7    tty       tty28  tty48  ttyS0      ttyS29  vboxusb
fd               null                ram8    tty0      tty29  tty49  ttyS1      ttyS3   vcs
full             oldmem              ram9    tty1      tty3   tty5   ttyS10     ttyS30  vcs1
fuse             pktcdvd             random  tty10     tty30  tty50  ttyS11     ttyS31  vcs2

That help? IIRC I think I saw something that said that dsp became deprecated when pulse became the ubuntu default (I might be wrong there)


Try forcing it to be identified as a GADMEI UTV 330

sudo rmmod em28xx_dvb
sudo rmmod em28xx
sudo modprobe em28xx card=37

Then let me know what dmesg says… similar to what the guy did (dmesg output) in this posting:

If the above doesn’t work, try:

sudo rmmod em28xx_dvb
sudo rmmod em28xx
sudo modprobe em28xx card=35

Both attempts failed with the error that there was no em28xx_dvb in proc/modules.

The second and 3rd lines of both commands were then executed and the dmsg output was as in the attached files:

I imagine that 90% of the output is quite irrelevant to the point but I thought I would bundle the lot up :slight_smile:


OK, (after a bit of research)… try this :-

sudo rmmod em28xx
sudo modprobe em28xx card=1

card=1 is what the cardlist says the eb1a:2861 should be defined as:

It’s also referenced (for the kernel) in em28xx-cards.c (lines 1771 and 1772) as EM2820_BOARD_UNKNOWN now if you follow THAT link to em28xx.h (line 45), you’ll also see the card should be defined as card=1 and NOT card=19 as it’s curently (and wrongly) being defined as/set to using a “best guess” based on the i2c devicelist hash (as stated in your dmesg.log).

It uses (or if the USB ID is to be believed, is supposed to use) the EM2820 chip… but your drivers are currently being loaded based on the i2c devicelist hash, which is setting up the drivers for an EM2860 chip.

If that STILL doesn’t work…

Have you got the make/model or anything else that may help us identify it ?

Is this a TV/Capture card (with tuner) or “Capture only” card ?

What are you using to test the card ? … and how ?

BTW, if this works, it won’t survive a reboot and will have to be entered the next time you boot… but there are instructions for writing a script somewhere in this thread… if that helps.

It now gets interesting :slight_smile:

Here is what I bought and where I bought it.

Since buying it, in trying to make it work, I have seen this identified as an Easycap DC60+ (not to be confused with the Easycap DC60 - which has a different chipset).

In attempting to further identify the thing for you this morning, I found claims that anything bearing that name is a fake (although tbh the thing I have has never claimed to have that name). To complicate things further I have this morning connected it to my win XP virtual machine, which I run within virtualbox. The card has been identified by windows as a grabster av350, and windows has downloade3d and installed the software for it. I’ve no movie software on the virtual machine though, and no access at the moment to a video source so I can’t test it. But I’m finding this all very strange!

I’ve tried connecting a camcorder to it via the cables that came with it as a test. Nothing, although it routinely works without issue when connected by firewire.

Hmm… if you Google grabster AV350, it seems (if Windows is right) it’s a Terratec Grabster AV350… the CARDLIST suggests card=68 for the “Terratec AV350”… so give:

sudo rmmod em28xx
sudo modprobe em28xx card=68

a shot.

Though you may also want to give card=67 a go… 67 = Terratec Grabby


as 72 → Gadmei UTV330+ (em2861), which is probably an Easycap DC60+ as opposed to the first attempt which was a Gadmei UTV330 (Easycap DC60)

I’ve also seen Easycap DC60+ mentioned… I’ll look into that furhter.

I think we are making some headway :slight_smile:

I have tried all the card combinations running the rmmod each time before.

While running modprobe nothing happened, except on card 68, and as a result the light on the card came on.

Also, in the interim, whilst having no video source, I fired up windows movie maker in the virtual machine and selected capture and it too made the light come on. That’s not to say it will work of course, but it looks promising.

At last… a sign of life… please let me know how you get on when you’ve had the chance to test it properly :slight_smile:

and remember, ATM it won’t survive a reboot, so you’ll have to enter it again.

Looks like Windows was probably getting it right then… Terratec Grabber AV350… Given long enough I suppose even Windows was bound to get something right :wink: