Skip to content


4th of July: PCTV 80e Support

On this fine Independence Day, the PCTV 80e declares independence from the tyranny of Windows.

Ok, apologies to anyone from the U.K. for my quirky American sense of humor.

Seriously though, Trident Microsystems finally agreed to allow the DRX-J code to be released under a BSD license. This means that we can finally release a driver for the PCTV 80e.

http://www.kernellabs.com/hg/~dheitmueller/v4l-dvb-80e

The ATSC support has been tested. Haven’t had a chance to burn in the ClearQAM support. And there’s a bunch of cleanup work required before it can be submitted upstream. But it does work, and should satisfy those who have this board and want to see it working under Linux.

Thanks go out to Trident Microsystems for finally allowing this release, as well as to Hauppauge and PCTV Systems for pushing them on it for so long.

Testing/feedback welcome of course in the comments below.

Posted in 80e, drxj, em28xx.


8 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. tpreitzel says

    I can hardly believe this act of generosity on behalf of Trident MicroSystems. Personally, I’m glad that they bought the rights to this hardware! As a user of Linux, I thank you, Trident. I also thank you, Devin, for working on releasing this driver! Whoopee! I can hardly wait to download this code. My 80e is no longer an orphan sitting on the shelf! Hopefully, we’ll see this code in the Linux kernel soon!

  2. tpreitzel says

    Devin,

    I’m using a 2.6.33.6 kernel with the aforementioned v4l-dvb-80e overlay which includes the drx39xyj driver. I’m also using many v4l devices (zoneminder) which include a Hauppauge WinTV USB2 (em28xx) device for use as a remote control. Relevant kernel output from dmesg referring to drx-j driver:

    IP: [] CtrlUCode+0×167/0x4b0 [drx39xyj]
    RIP: 0010:[] [] CtrlUCode+0×167/0x4b0 [drx39xyj]
    [] ? DRXBSP_I2C_WriteRead+0×69/0×100 [drx39xyj]
    [] ? DRXDAP_FASI_WriteBlock+0×196/0×260 [drx39xyj]
    [] DRX_Ctrl+0x10d/0x8d0 [drx39xyj]
    [] ? DRXJ_DAP_WriteReg16+0×49/0×110 [drx39xyj]
    [] ? DRXDAP_FASI_WriteReg16+0×28/0×30 [drx39xyj]
    [] ? CtrlSetCfgMPEGOutput+0x29f/0xbf0 [drx39xyj]
    [] ? DRXJ_DAP_WriteReg16+0×49/0×110 [drx39xyj]
    [] DRXJ_Open+0x30c/0×920 [drx39xyj]
    [] DRX_Open+0×55/0×70 [drx39xyj]
    [] drx39xxj_attach+0×227/0×540 [drx39xyj]
    RIP [] CtrlUCode+0×167/0x4b0 [drx39xyj]

  3. tpreitzel says

    Devin,

    After removing the Hauppauge WinTV USB2 from my PC, I get following output after booting my PC with the Pinnacle PCTV 80e in place of the Hauppauge WinTV USB2:

    em28xx: New device Pinnacle Systems PCTV 80e @ 480 Mbps (2304:023f, interface 0, class 0)
    em28xx #0: chip ID is em2874
    em28xx #0: Identified as Pinnacle PCTV HD Mini (card=76)
    em28xx #0: v4l2 driver version 0.1.2
    em28xx #0: V4L2 video device registered as video1
    usbcore: registered new interface driver em28xx

    em28xx driver loaded
    [] dvb_init+0x2c2/0xa60 [em28xx_dvb]
    [] em28xx_register_extension+0×65/0xc0 [em28xx]
    [] ? em28xx_dvb_register+0×0/0×12 [em28xx_dvb]
    [] em28xx_dvb_register+0×10/0×12 [em28xx_dvb]

    HTH and thanks for the driver!

    • Devin Heitmueller says

      Hello tpreitzel,

      If you could email me the full dmesg output, it would be very helpful (so I can get more context on the problem).

      Also, do you get the error on device insertion? Or does it happen at some later point?

      Thanks,

      Devin

      • tpreitzel says

        Devin,

        I sent your requested information to Steven Toth and asked him to pass the information to you because I didn’t locate your e-mail address.

        Basically, the kernel emits errors when the PCTV 80e is inserted into a USB2 slot. The PC needs to be rebooted to regain operation.

        HTH!

  4. hesperaux says

    Excellent, excellent, excellent!
    I’m very impressed by Devin’s comittment to this project, and by this gracious move on Trident’s part. Thank you Devin for all your hard work, and thank you Trident for recognizing it. Can’t wait till I can unpack my TV stick and try it out!
    -David (hesperaux)

  5. Jeff Shanab says

    I am stuck at the exact same point as tpreitzel on a 2.6.34 gentoo amd64 kernel.
    Linux video capture interface: v2.00
    em28xx: New device Pinnacle Systems PCTV 80e @ 480 Mbps (2304:023f, interface 0, class 0)
    em28xx #0: chip ID is em2874
    em28xx #0: Identified as Pinnacle PCTV HD Mini (card=76)
    em28xx #0: v4l2 driver version 0.1.2
    em28xx #0: V4L2 video device registered as video0
    usbcore: registered new interface driver em28xx
    em28xx driver loaded
    BUG: unable to handle kernel paging request at ffffffffb80cc1c0
    IP: [] CtrlUCode+0x16d/0×450 [drx39xyj]
    PGD 17e3067 PUD 17e7063 PMD 0
    Oops: 0000 [#1] SMP
    last sysfs file:
    CPU 0
    Modules linked in: drx39xyj em28xx_dvb(+) dvb_core em28xx v4l2_common videodev v4l1_compat v4l2_compat_ioctl32 ir_common videobuf_vmalloc videobuf_core ir_core tveeprom

    Pid: 1869, comm: modprobe Not tainted 2.6.34-gentoo #8 ‘K8N’/K8N
    RIP: 0010:[] [] CtrlUCode+0x16d/0×450 [drx39xyj]
    RSP: 0000:ffff88007d48bc28 EFLAGS: 00010286
    RAX: 0000000000000000 RBX: ffff88007d48bdf8 RCX: 000000000000007d
    RDX: 0000000000000000 RSI: ffffffffa00c58e0 RDI: ffffffffb80cc1c0
    RBP: ffff88007e1d4640 R08: 0000000000000000 R09: 0000000000000002
    R10: ffffffffa00c58ea R11: 0000000000000000 R12: 0000000000000000
    R13: 0000000000000014 R14: ffff88007e2b2400 R15: ffff88007e2c3600
    FS: 00007f64fbc8e700(0000) GS:ffff880001a00000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    CR2: ffffffffb80cc1c0 CR3: 000000007d4e4000 CR4: 00000000000006f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    Process modprobe (pid: 1869, threadinfo ffff88007d48a000, task ffff88007d4d32f0)
    Stack:
    ffff88007d48bd38 0000000000000002 0006000000000002 ffff88007e1dbc40
    0000000400000029 ffff88007d48bcb8 ffff000200010029 ffff88007d48bcc8
    0000000000000001 ffffffffa00c4255 0000000000001262 0000000000000002
    Call Trace:
    [] ? DRXDAP_FASI_WriteBlock+0×185/0×270 [drx39xyj]
    [] ? DRX_Ctrl+0x7ed/0×970 [drx39xyj]
    [] ? DRXJ_DAP_ReadReg16+0×49/0×150 [drx39xyj]
    [] ? DRXDAP_FASI_WriteReg16+0×22/0×30 [drx39xyj]
    [] ? DRXJ_DAP_WriteReg16+0x4a/0×110 [drx39xyj]
    [] ? DRXJ_Open+0×323/0×880 [drx39xyj]
    [] ? DRX_Open+0×45/0×60 [drx39xyj]
    [] ? drx39xxj_attach+0x2df/0×450 [drx39xyj]
    [] ? __symbol_get+0x2f/0xd0
    [] ? dvb_init+0x2f9/0xa10 [em28xx_dvb]
    [] ? em28xx_register_extension+0x5b/0xc0 [em28xx]
    [] ? em28xx_dvb_register+0×0/0xc [em28xx_dvb]
    [] ? do_one_initcall+0×35/0×190
    [] ? sys_init_module+0xdd/0×250
    [] ? system_call_fastpath+0×16/0x1b
    Code: 0f b6 6e 09 74 b8 0f b6 c0 0f b6 fa 48 c1 e0 08 48 09 c7 0f b6 c1 48 c1 e7 08 48 09 c7 41 0f b6 c0 48 c1 e7 08 48 09 c7 48 03 3b b6 07 0f b6 57 01 c1 e0 08 09 c2 66 81 fa 00 80 75 80 48 8b
    RIP [] CtrlUCode+0x16d/0×450 [drx39xyj]
    RSP
    CR2: ffffffffb80cc1c0
    —[ end trace ebbee2ff7439d6a1 ]—
    udev: starting version 154
    bttv: driver version 0.9.18 loaded
    bttv: using 8 buffers with 2080k (520 pages) each for capture
    bttv: Bt8xx card found (0).
    bttv 0000:02:07.0: PCI INT A -> Link[LNKB] -> GSI 10 (level, low) -> IRQ 10
    bttv0: Bt878 (rev 17) at 0000:02:07.0, irq: 10, latency: 64, mmio: 0xea7fe000
    bttv0: detected: Pinnacle PCTV [bswap] [card=39], PCI subsystem ID is bd11:1200
    bttv0: using: Pinnacle PCTV Studio/Rave [card=39,autodetected]
    IRQ 10/bttv0: IRQF_DISABLED is not guaranteed on shared IRQs
    bttv0: gpio: en=00000000, out=00000000 in=00ff0fff [init]
    bttv0: i2c: checking for MSP34xx @ 0×80… not found
    bttv0: miro: id=3 tuner=2 radio=no stereo=no
    bttv0: tuner type=2
    bttv0: audio absent, no audio device found!
    All bytes are equal. It is not a TEA5767
    tuner 2-0060: chip found @ 0xc0 (bt878 #0 [sw])
    tuner-simple 2-0060: creating new instance
    tuner-simple 2-0060: type set to 2 (Philips NTSC (FI1236,FM1236 and compatibles))
    bttv0: registered device video1
    bttv0: registered device vbi0
    bttv0: PLL: 28636363 => 35468950 .. ok

    • Devin Heitmueller says

      Hi Jeff,

      I’m going to have to take some time and reproduce the problem locally, at which point I should be able to fix it.

      Devin



Some HTML is OK

or, reply to this post via trackback.