Prolink Pixelview PlayTV Pro

From LinuxTVWiki
Jump to navigation Jump to search

Prolink's Pixelview PlayTV Pro is powerful analog TV card.

The card works well, however needs some tweaks in modprobe.conf to work properly.

Overview/Features

The device provides:

  • TV support
  • FM support
  • remote control

Components Used

bttv for TV, FM and remote control support for LIRC.
ir-kbd-i2c to make LIRC support our remote control without special kernel module.

Identification

00:0a.0 0400: 109e:036e (rev 02)
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 32 (4000ns min, 10000ns max)
        Interrupt: pin A routed to IRQ 10
        Region 0: Memory at eb000000 (32-bit, prefetchable) [size=4K]
        Kernel driver in use: bttv
        Kernel modules: bttv

00:0a.1 0480: 109e:0878 (rev 02)
        Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Interrupt: pin A routed to IRQ 10
        Region 0: Memory at eb001000 (32-bit, prefetchable) [size=4K]
        Kernel modules: bt878

Shorter output, human-friendly:

00:0a.0 Multimedia video controller [0400]: Brooktree Corporation Bt878 Video Capture [109e:036e] (rev 02)
00:0a.1 Multimedia controller [0480]: Brooktree Corporation Bt878 Audio Capture [109e:0878] (rev 02)

Making it Work

Firmware

Anything more than vanilla kernel provides is not required.

Drivers

Anything we should do, is modifying /etc/modprobe.conf (in Fedora it's almost empty, in SUSE messed "a little bit").

options bttv card=70 tuner=28 radio=1

Sample kernel output

bttv: driver version 0.9.17 loaded
bttv: using 8 buffers with 2080k (520 pages) each for capture
bttv: Bt8xx card found (0).
bttv0: Bt878 (rev 2) at 0000:00:0a.0, irq: 10, latency: 32, mmio: 0xeb000000
bttv0: using: Prolink Pixelview PV-BT878P+ (Rev.4C,8E) [card=70,insmod option]
bttv0: gpio: en=00000000, out=00000000 in=00ffffff [init]
bttv0: tuner type=28
bttv0: i2c: checking for MSP34xx @ 0x80... not found
bttv0: i2c: checking for TDA9875 @ 0xb0... not found
bttv0: i2c: checking for TDA7432 @ 0x8a... not found
tuner 1-0061: chip found @ 0xc2 (bt878 #0 [sw])
bttv0: registered device video0
bttv0: registered device vbi0
bttv0: registered device radio0
bttv0: PLL: 28636363 => 35468950 .. ok
input: bttv IR (card=70) as /class/input/input6
bt878: AUDIO driver version 0.0.0 loaded
bt878: Bt878 AUDIO function found (0).
bt878_probe: card id=[0x0], Unknown card.
bt878: probe of 0000:00:0a.1 failed with error -22

According the output, support for the card seems to be broken, but at least FM and remote control works (currently I have no TV input in my room).

Remote Control Support

bttv with provided options and ir-kbd-i2c *MUST* be loaded before starting LIRC.
This can be easily done in Fedora and SUSE (didn't tested others).

Fedora

In Fedora you can edit /etc/rc.d/init.d/lirc

Add modprobe ir-kbd-i2c between start() { and echo -n $"Starting infrared remote control daemon ($prog): "
Add chmod 777 /dev/lircd between retval=$? and echo.

Fragment of /etc/rc.d/init.d/lic should look like this:

start() {
    modprobe ir-kbd-i2c
    echo -n $"Starting infrared remote control daemon ($prog): "
    daemon $exec $LIRCD_OPTIONS
    retval=$?
    chmod 777 /dev/lircd
    echo
    status $prog >/dev/null 2>&1
    if [ $? -eq 0 -a "$ENABLE_LIRCMD" = "yes" ] ; then
        echo -n $"Starting infrared remote control mouse daemon ($prog2): "
        daemon $exec2 $LIRCMD_OPTIONS
        retval=$?
        echo
    fi
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

Also, edit /etc/sysconfig/lirc:

LIRCD_OPTIONS="-H dev/input -d phys=pci-0000:00:0a.0/ir0"

Value after -d depends on output of one command:

$ cat /proc/bus/input/devices |grep ir
P: Phys=pci-0000:00:0a.0/ir0

Change Phys to phys and copy.

SUSE

In SUSE you don't need to edit init scripts. Only /etc/sysconfig/lirc, simmiliar to Fedora's one, but they separated LIRC parameters and it's easier in SUSE. You can use sysconfig editor from YaST, but to get phys address, you need terminal.

LIRC configuration

As I wrote above, you have now basic configuration to make LIRC work, however LIRC doesn't recognize your buttons.

Here you go, your brand new /etc/lircd.conf ;) .

# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
#
# this config file was automatically generated
# using lirc-0.8.2(dev/input) on Wed Jan 16 23:51:58 2008
#
# contributed by Jakub 'Livio' Rusinek <jakub.rusinek@gmail.com>
#
# brand: Prolink PixelView /etc/lircd.conf
# model no. of remote control: PlayTV Pro 
# devices being controlled by this remote: Prolink PixelView PlayTV Pro 
#

begin remote

  name  /etc/lircd.conf
  bits           16
  eps            30
  aeps          100

  one             0     0
  zero            0     0
  pre_data_bits   16
  pre_data       0x8001
  gap          199980
  toggle_bit_mask 0x80010003

      begin codes
          tvfm                     0x0182
          scan                     0x00E2
          zoom                     0x00D9
          power                    0x0074
          vol+                     0x0192
          vol-                     0x0193
          chan+                    0x0073
          chan-                    0x0072
          loop                     0x018B
          +100                     0x0195
          mute                     0x0071
          source                   0x00A7
          0                        0x000B
          1                        0x0002
          2                        0x0003
          3                        0x0004
          4                        0x0005
          5                        0x0006
          6                        0x0007
          7                        0x0008
          8                        0x0009
          9                        0x000A
          -                        0x004A
          +                        0x004E
          function                 0x008D
          reset                    0x0162
          freeze                   0x0184
      end codes

end remote