Pinnacle Hybrid TV Tuner PCTV 330e in Ubuntu 10.10 Maverick

How to istall the drivers and firmware for a Pinnacle Hybrid TV Tuner PCTV 330e (aka. WinTV-HVR 900 (R2)) in Ubuntu 10.10 Maverick Meerkat (and probably other versions).

You’re going to use Kaffiene and/or VLC as the DVB-TV player(s).

First make sure the “Universe” and “Multiverse” repositories are enabled… Follow the instructions in this post:
http://linuxforums.org.uk/frequently-asked-questions/install-flashplayer-java-and-mp3-support-in-ubuntu/msg38852/#msg38852

Now make sure Synaptic, Ubuntu Software Centre, and the system Updater are all closed…

Then you’ll need to install some other packages, so in a terminal enter:

sudo apt-get install mercurial build-essential linux-image-$(uname -r) linux-headers-$(uname -r)

then:

sudo apt-get install linux-firmware-nonfree dvb-apps libncurses5-dev

then:

sudo apt-get install vlc kaffeine libxine1 libxine1-all-plugins phonon-backend-xine

Next you need to download, patch, edit, build and install the driver, so enter these commands hitting enter after each line…

cd /usr/src
sudo hg clone http://kernellabs.com/hg/~dheitmueller/v4l-dvb-drxd
cd v4l-dvb-drxd
sudo wget http://xgazza.altervista.org/Linux/DVB/Drivers/drxd_2_6_35.diff
sudo patch -p1 < drxd_2_6_35.diff

Now you need to generate the .config file, so run:

sudo make menuconfig

When an ncurses GUI opens, dont change anything, just “Exit” and “Save” changes.

Then continue with:

sudo sed -i 's/CONFIG_DVB_FIREDTV=m/CONFIG_DVB_FIREDTV=n/' ./v4l/.config
sudo make
sudo make install

The next thing you need to do is add some firmware files to the /lib/firmware directory…

cd /lib/firmware
sudo wget http://kernellabs.com/firmware/drxd/drxd-a2-1.1.fw
sudo wget http://kernellabs.com/firmware/drxd/drxd-b1-1.1.fw

Next you need to download the Windows drivers and use the extract_xc3028.pl tool to extract the xc3028-v27.fw firmware from the Windows hcw85bda.sys file then move it to /lib/firmware

cd ~
wget http://www.steventoth.net/linux/xc5000/HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip
unzip -j HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip Driver85/hcw85bda.sys
cp /usr/src/linux-headers-$(uname -r)/Documentation/video4linux/extract_xc3028.pl ~/
chmod +x extract_xc3028.pl
./extract_xc3028.pl
sudo mv xc3028-v27.fw /lib/firmware/xc3028-v27.fw

Now reboot.

Kaffeine should now recognize your hardware as a digital tv receiver.

Hi i am new in ubuntu and i am trying to install pctv usb 330e on ubuntu 10 64bit.

after typing: sudo make menuconfig

i get :make -C /usr/src/v4l-dvb-drxd/v4l menuconfig
make[1]: Entering directory /usr/src/v4l-dvb-drxd/v4l' make -C /lib/modules/2.6.35-22-generic/build -f /usr/src/v4l-dvb-drxd/v4l/Makefile.kernel config-targets=1 mixed-targets=0 dot-config=0 SRCDIR=/lib/modules/2.6.35-22-generic/build v4l-mconf make[2]: Entering directory /usr/src/linux-headers-2.6.35-22-generic’
make -f /lib/modules/2.6.35-22-generic/build/scripts/Makefile.build obj=scripts/kconfig hostprogs-y=mconf scripts/kconfig/mconf
*** Unable to find the ncurses libraries or the
*** required header files.
*** ‘make menuconfig’ requires the ncurses libraries.


*** Install ncurses (ncurses-devel) and try again.


make[3]: *** [scripts/kconfig/dochecklxdialog] Error 1
make[2]: *** [v4l-mconf] Error 2
make[2]: Leaving directory /usr/src/linux-headers-2.6.35-22-generic' make[1]: *** [/lib/modules/2.6.35-22-generic/build/scripts/kconfig/mconf] Error 2 make[1]: Leaving directory /usr/src/v4l-dvb-drxd/v4l’
make: *** [menuconfig] Error 2

what i am doing wrong?

Re-run the first 2 commands, as libncurse5-dev didn’t get installed… which is why the output says:

*** Install ncurses (ncurses-devel) and try again.

:slight_smile:

Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package libncurse5-dev

That’s what i get in the 2 command

Ooops… My apologies :-[ … (typo) it should have been libncurses5-dev … I’ve now fixed the line in above instructions.

run the top 2 commands again… this time there should be no error.

it’s ok but now i get this: destination directory: v4l-dvb-drxd
abort: destination ‘v4l-dvb-drxd’ is not empty

OK, best bet… rename the existing /usr/src/v4l-dvb-drxd to /usr/src/old-v4l-dvb-drxd and start again.

Open a terminal and enter:

sudo mv /usr/src/v4l-dvb-drxd /usr/src/old-v4l-dvb-drxd

hit enter, and your password when asked.

Now start the instructions from the beginning.

Once you’re done, you can delete the /usr/src/old-v4l-dvb-drxd directory if you wish.

remoh@remoh-System-Product-Name:~$ chmod +x extract_xc3028.pl
remoh@remoh-System-Product-Name:~$ ./extract_xc3028.pl
./extract_xc3028.pl: line 1: syntax error near unexpected token newline' ./extract_xc3028.pl: line 1:
remoh@remoh-System-Product-Name:~$ sudo mv xc3028-v27.fw /lib/firmware/xc3028-v27.fwmv: cannot stat `xc3028-v27.fw’: No such file or directory

what about this error?

Looks like the new version of perl needs a new version of the extract_xc3028.pl perl script.

I’ve fixed the instructions in the above tutorial.

But all YOU need to do is delete the old version in your home directory, get the new version, run it, then move the firmware… so open a terminal and enter:

cd ~
rm extract_xc3028.pl
cp /usr/src/linux-headers-$(uname -r)/Documentation/video4linux/extract_xc3028.pl ~/
chmod +x extract_xc3028.pl
./extract_xc3028.pl
sudo mv xc3028-v27.fw /lib/firmware/xc3028-v27.fw

Now reboot.

remoh@remoh-System-Product-Name:/usr/src$ sudo hg clone http://kernellabs.com/hg/~dheitmueller/v4l-dvb-drxd
abort: error: No route to host

that is what i get now

has this PC got an internet connection ? … if it has, try again, maybe the site was down for a while, I just tried the same command and it worked perfectly.

I don’t understand why you started from the beginning again… you were nearly done, except for the firmware.

ok kaffeine now scan my area and get some channels but it gives me this error

Cannot find demux plugin for MRL “fifo:/home/remoh/.kde/share/apps/kaffeine/dvbpipe.m2t”.

and another question. is it possible to watch analog channel with kaffeine or do i have to use other program?

OK, make sure you have the “Universe” and “Multiverse” repos enabled… instructions here:
http://linuxforums.org.uk/frequently-asked-questions/install-flashplayer-java-and-mp3-support-in-ubuntu/

then install:

sudo apt-get install kaffeine libxine1 libxine1-all-plugins phonon-backend-xine

As suggested here:
https://help.ubuntu.com/community/Kaffeine

Can you let me know if this gets rid of the demux plugin error, so I can add them to the main tutorial… thanks.


I can’t help you with the “is it possible to watch analog channel with kaffeine” question, as I don’t have a PCTV 330e

but a quick “Google” seems to suggest not, so you will probably be better off with vlc or mplayer for analogue (or maybe tvtime).

http://kaffeine.kde.org/

VLC is supposed to support DVB-TV and Analogue, so you may want to try that.

sudo apt-get install vlc

Yes digital tv works perfect now
Thanks a lot .

You’re welcome :slight_smile: … Any chance you can let us know how you get on with Analogue ? … and which software (if any) works best… Thanks.

on “sudo make” I’ve got this error:

giacomino@icaro:/usr/src/v4l-dvb-drxd$ sudo make
make -C /usr/src/v4l-dvb-drxd/v4l 
make[1]: Entering directory `/usr/src/v4l-dvb-drxd/v4l'
perl scripts/make_config_compat.pl /lib/modules/2.6.32-32-generic/build ./.myconfig ./config-compat.h
creating symbolic links...
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.32-32-generic/build
make -C /lib/modules/2.6.32-32-generic/build SUBDIRS=/usr/src/v4l-dvb-drxd/v4l  modules
make[2]: Entering directory `/usr/src/linux-headers-2.6.32-32-generic'
  CC [M]  /usr/src/v4l-dvb-drxd/v4l/tuner-xc2028.o
  CC [M]  /usr/src/v4l-dvb-drxd/v4l/tuner-simple.o
  CC [M]  /usr/src/v4l-dvb-drxd/v4l/tuner-types.o
  CC [M]  /usr/src/v4l-dvb-drxd/v4l/mt20xx.o
  CC [M]  /usr/src/v4l-dvb-drxd/v4l/tda8290.o
  CC [M]  /usr/src/v4l-dvb-drxd/v4l/tea5767.o
  CC [M]  /usr/src/v4l-dvb-drxd/v4l/tea5761.o
  CC [M]  /usr/src/v4l-dvb-drxd/v4l/tda9887.o
  CC [M]  /usr/src/v4l-dvb-drxd/v4l/tda827x.o
  CC [M]  /usr/src/v4l-dvb-drxd/v4l/au0828-core.o
  CC [M]  /usr/src/v4l-dvb-drxd/v4l/au0828-i2c.o
  CC [M]  /usr/src/v4l-dvb-drxd/v4l/au0828-cards.o
  CC [M]  /usr/src/v4l-dvb-drxd/v4l/au0828-dvb.o
  CC [M]  /usr/src/v4l-dvb-drxd/v4l/au0828-video.o
/usr/src/v4l-dvb-drxd/v4l/au0828-video.c: In function 'au0828_uninit_isoc':
/usr/src/v4l-dvb-drxd/v4l/au0828-video.c:184: error: implicit declaration of function 'usb_free_coherent'
/usr/src/v4l-dvb-drxd/v4l/au0828-video.c: In function 'au0828_init_isoc':
/usr/src/v4l-dvb-drxd/v4l/au0828-video.c:254: error: implicit declaration of function 'usb_alloc_coherent'
/usr/src/v4l-dvb-drxd/v4l/au0828-video.c:255: warning: assignment makes pointer from integer without a cast
make[3]: *** [/usr/src/v4l-dvb-drxd/v4l/au0828-video.o] Error 1
make[2]: *** [_module_/usr/src/v4l-dvb-drxd/v4l] Error 2
make[2]: Leaving directory `/usr/src/linux-headers-2.6.32-32-generic'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/usr/src/v4l-dvb-drxd/v4l'
make: *** [all] Error 2

What I got to do (i’m doing this on ubuntu 10.04)?
Thanks

At a guess, I’d say rename (or delete) the /usr/src/v4l-dvb-drxd directory:

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 http://xgazza.altervista.org/Linux/DVB/Drivers/drxd_2_6_35.diff sudo patch -p1 < drxd_2_6_35.diff

Those patch the drivers for compiling for the 2.6.35 (Maverick) kernel… you are using the 2.6.32 (Lucid) kernel.

If that doesn’t work, let me know and I’ll test it in a 10.04 VM.

As Mourinho said: “well done”.
But now I can’t tune with kaffeine:

kaffeine(2464) DvbDevice::frontendEvent: tuning failed

This is dmesg output:

[  394.533496] Linux video capture interface: v2.00
[  394.571239] em28xx: New device USB 2881 Video @ 480 Mbps (eb1a:2881, interface 0, class 0)
[  394.571329] em28xx #0: chip ID is em2882/em2883
[  394.655281] em28xx #0: i2c eeprom 00: 1a eb 67 95 1a eb 81 28 58 12 5c 00 6a 20 6a 00
[  394.655296] em28xx #0: i2c eeprom 10: 00 00 04 57 64 57 00 00 60 f4 00 00 02 02 00 00
[  394.655309] em28xx #0: i2c eeprom 20: 56 00 01 00 00 00 02 00 b8 00 00 00 5b 1e 00 00
[  394.655322] em28xx #0: i2c eeprom 30: 00 00 20 40 20 80 02 20 10 02 00 00 00 00 00 00
[  394.655335] em28xx #0: i2c eeprom 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[  394.655347] em28xx #0: i2c eeprom 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[  394.655360] em28xx #0: i2c eeprom 60: 00 00 00 00 00 00 00 00 00 00 20 03 55 00 53 00
[  394.655372] em28xx #0: i2c eeprom 70: 42 00 20 00 32 00 38 00 38 00 31 00 20 00 56 00
[  394.655385] em28xx #0: i2c eeprom 80: 69 00 64 00 65 00 6f 00 00 00 00 00 00 00 00 00
[  394.655398] em28xx #0: i2c eeprom 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[  394.655410] em28xx #0: i2c eeprom a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[  394.655423] em28xx #0: i2c eeprom b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[  394.655435] em28xx #0: i2c eeprom c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[  394.655447] em28xx #0: i2c eeprom d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[  394.655460] em28xx #0: i2c eeprom e0: 5a 00 55 aa 79 55 54 03 00 17 98 01 00 00 00 00
[  394.655472] em28xx #0: i2c eeprom f0: 0c 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00
[  394.655487] em28xx #0: EEPROM ID= 0x9567eb1a, EEPROM hash = 0xb8846b20
[  394.655489] em28xx #0: EEPROM info:
[  394.655490] em28xx #0:	AC97 audio (5 sample rates)
[  394.655492] em28xx #0:	USB Remote wakeup capable
[  394.655494] em28xx #0:	500mA max power
[  394.655497] em28xx #0:	Table at 0x04, strings=0x206a, 0x006a, 0x0000
[  394.657277] em28xx #0: Identified as Unknown EM2750/28xx video grabber (card=1)
[  394.657282] em28xx #0: Your board has no unique USB ID.
[  394.657286] em28xx #0: A hint were successfully done, based on eeprom hash.
[  394.657289] em28xx #0: This method is not 100% failproof.
[  394.657291] em28xx #0: If the board were missdetected, please email this log to:
[  394.657293] em28xx #0: 	V4L Mailing List  <linux-media@vger.kernel.org>
[  394.657296] em28xx #0: Board detected as Pinnacle Hybrid Pro
[  394.745151] tvp5150 2-005c: chip found @ 0xb8 (em28xx #0)
[  394.760287] tuner 2-0061: chip found @ 0xc2 (em28xx #0)
[  394.781755] xc2028 2-0061: creating new instance
[  394.781762] xc2028 2-0061: type set to XCeive xc2028/xc3028 tuner
[  394.781776] usb 2-5: firmware: requesting xc3028-v27.fw
[  394.811225] xc2028 2-0061: Loading 80 firmware images from xc3028-v27.fw, type: xc2028 firmware, ver 2.7
[  394.869050] xc2028 2-0061: Loading firmware for type=BASE (1), id 0000000000000000.
[  395.778487] xc2028 2-0061: Loading firmware for type=(0), id 000000000000b700.
[  395.793098] SCODE (20000000), id 000000000000b700:
[  395.793109] xc2028 2-0061: Loading SCODE for type=MONO SCODE HAS_IF_4320 (60008000), id 0000000000008000.
[  395.917390] em28xx #0: Config register raw data: 0x58
[  395.918291] em28xx #0: AC97 vendor ID = 0xffffffff
[  395.918662] em28xx #0: AC97 features = 0x6a90
[  395.918666] em28xx #0: Empia 202 AC97 audio processor detected
[  396.041828] tvp5150 2-005c: tvp5150am1 detected.
[  396.153394] em28xx #0: v4l2 driver version 0.1.2
[  396.243671] em28xx #0: V4L2 video device registered as video0
[  396.243676] em28xx #0: V4L2 VBI device registered as vbi0
[  396.244334] em28xx audio device (eb1a:2881): interface 1, class 1
[  396.244379] em28xx audio device (eb1a:2881): interface 2, class 1
[  396.244425] usbcore: registered new interface driver em28xx
[  396.244430] em28xx driver loaded
[  396.325421] usbcore: registered new interface driver snd-usb-audio
[  396.332432] tvp5150 2-005c: tvp5150am1 detected.
[  396.585407] xc2028 2-0061: attaching existing instance
[  396.585414] xc2028 2-0061: type set to XCeive xc2028/xc3028 tuner
[  396.585419] em28xx #0: em28xx #0/2: xc3028 attached
[  396.585442] DVB: registering new adapter (em28xx #0)
[  396.585448] DVB: registering adapter 0 frontend 0 (Zarlink ZL10353 DVB-T)...
[  396.586093] em28xx #0: Successfully loaded em28xx-dvb
[  396.586099] Em28xx: Initialized (Em28xx dvb Extension) extension
[ 394.657282] em28xx #0: Your board has no unique USB ID.

What is the output from:

lsusb

this is my lsusb:

giacomino@icaro:~$ lsusb
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 002: ID 04fc:0005 Sunplus Technology Co., Ltd 
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 003: ID eb1a:2881 eMPIA Technology, Inc. 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

This is the output of dvbsnoop:

giacomino@icaro:~$ dvbsnoop -s feinfo
dvbsnoop V1.4.50 -- http://dvbsnoop.sourceforge.net/ 

---------------------------------------------------------
FrontEnd Info...
---------------------------------------------------------

Device: /dev/dvb/adapter0/frontend0

Basic capabilities:
    Name: "Zarlink ZL10353 DVB-T"
    Frontend-type:       OFDM (DVB-T)
    Frequency (min):     174000.000 kHz
    Frequency (max):     862000.000 kHz
    Frequency stepsiz:   166.667 kHz
    Frequency tolerance: 0.000 kHz
    Symbol rate (min):     0.000000 MSym/s
    Symbol rate (max):     0.000000 MSym/s
    Symbol rate tolerance: 0 ppm
    Notifier delay: 0 ms
    Frontend capabilities:
        auto inversion
        FEC 1/2
        FEC 2/3
        FEC 3/4
        FEC 5/6
        FEC 7/8
        FEC AUTO
        QPSK
        QAM 16
        QAM 64
        QAM AUTO
        auto transmission mode
        auto guard interval
        auto hierarchy

Current parameters:
Error(22): frontend ioctl: Invalid argument