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.
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!
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]
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!
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
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!
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)
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
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