 |
hd3000 dvb 2.6.12.3 drivers and atscscan freeze me |
 |
Posted: Sat Aug 06, 2005 1:00 pm |
|
|
| leeolds |
|
|
| |
| Joined: 23 Jul 2005 |
| Posts: 4 |
|
|
|
 |
 |
 |
|
When I run atscscan, my computer locks up hard. I have to shut off power at the supply in order to reset it. This happens when atscscan reaches the first frequency with a station in my area.
I'm following the directions in the nice write-up that PeterKnaggs posted:
http://pchdtv.com/forum/viewtopic.php?t=928
http://www.penlug.org/twiki/bin/view/Main/DigitalTelevisionDVB
The drivers are from kernel 2.6.12.3+, and atscscan is from latest cvs dvb-apps: http://www.linuxtv.org/cvs.php
When I run the command: atscscan atsc/us-NTSC-center-frequencies-8VSB the firmware loads as expected, and the scan proceedes through a bunch of frequencies that are not used in my area. When the scan reaches freq 497000000 (KCTS in my area) the computer freezes, requiring a hardware reset.
Here are the kernel messages from loading the modules and firmware:
Aug 6 09:41:09 kernel: Linux video capture interface: v1.00
Aug 6 09:41:09 kernel: cx2388x dvb driver version 0.0.5 loaded
Aug 6 09:41:09 kernel: cx88[0]: subsystem: 7063:3000, board: pcHDTV HD3000 HDTV [card=22,autodetected]
Aug 6 09:41:09 kernel: TV tuner 52 at 0x1fe, Radio tuner -1 at 0x1fe
Aug 6 09:41:09 kernel: : chip found @ 0xc2 (cx88[0])
Aug 6 09:41:09 kernel: tuner 2-0061: type set to 52 (Thomson DDT 7610 (ATSC/NTSC))
Aug 6 09:41:09 kernel: ACPI: PCI Interrupt 0000:00:09.2[A] -> Link [LNKB] -> GSI 10 (level, low) -> IRQ 10
Aug 6 09:41:09 kernel: cx88[0]/2: found at 0000:00:09.2, rev: 5, irq: 10, latency: 32, mmio: 0xea000000
Aug 6 09:41:09 kernel: cx88[0]/2: cx2388x based dvb card
Aug 6 09:41:09 kernel: DVB: registering new adapter (cx88[0]).
Aug 6 09:41:09 kernel: DVB: registering frontend 0 (pcHDTV HD3000 HDTV)...
Aug 6 09:45:29 kernel: or51132: Waiting for firmware upload(dvb-fe-or51132-vsb.fw)...
Aug 6 09:45:37 kernel: or51132: Version: 10001134-19430000 (113-4-194-3)
Aug 6 09:45:38 kernel: or51132: Firmware upload complete.
The kernel config is: http://www.leeolds.org/~lee/pchdtv/config.txt
and all the modules that were loaded at the time are: http://www.leeolds.org/~lee/pchdtv/lsmod.txt
The only difference I can see from Peter's write up is
1) For me, modprobe cx88-dvb causes lgdt330x to be loaded as well.
2) firmware_class.ko is never unloaded because it's used by another module.
Any suggestions? Thanks! |
|
Last edited by leeolds on Thu Aug 11, 2005 9:36 pm; edited 1 time in total |
|
|
|
 |
 |
|
 |
Posted: Mon Aug 08, 2005 10:45 am |
|
|
| PeterKnaggs |
|
|
| |
| Joined: 21 Mar 2005 |
| Posts: 54 |
|
|
|
 |
 |
 |
|
I'm not sure exactly which kernel patch you're using, but looking in
http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.13-rc6.bz2
the cx88-dvb.c now has an include like this:
+#ifdef HAVE_LGDT330X
+# include "lgdt330x.h"
+#endif
which would be why the lgdt330x module is being loaded for you.
Perhaps reconfigure your kernel without DVB_LGDT330X, it seems that for
our HD3000 card we shouldn't need it (it's for LGDT3302 or LGDT3303
based cards (e.g. the DViCO FusionHDTV Gold)). |
|
|
|
|
 |
 |
|
 |
Posted: Wed Aug 10, 2005 12:19 am |
|
|
| leeolds |
|
|
| |
| Joined: 23 Jul 2005 |
| Posts: 4 |
|
|
|
 |
 |
 |
|
With kernel 2.6.12.3, I could get azap to tune a station, but I couldn't save video data, and scan would cause my system to freeze. I went to the 2.6.13-rc* kernels hoping that the cx88 driver updates would fix the problems.
Most recently I've tried with 2.6.13-rc6. I'm still getting the freeze-up's. It looks like the kernel config rules require the lgdt330. 'make xconfig' with debug on shows me:
| Code: | DVB Support for cx2388x based TV cards (VIDEO_CX88_DVB)
type: tristate
prompt: DVB Support for cx2388x based TV cards
dep: VIDEO_DEV && VIDEO_CX88 && DVB_CORE
select: VIDEO_BUF_DVB
dep: VIDEO_DEV && VIDEO_CX88 && DVB_CORE
select: DVB_MT352
dep: VIDEO_DEV && VIDEO_CX88 && DVB_CORE
select: DVB_OR51132
dep: VIDEO_DEV && VIDEO_CX88 && DVB_CORE
select: DVB_CX22702
dep: VIDEO_DEV && VIDEO_CX88 && DVB_CORE
select: DVB_LGDT330X
dep: VIDEO_DEV && VIDEO_CX88 && DVB_CORE
defined at drivers/media/video/Kconfig:327
This adds support for DVB/ATSC cards based on the
Connexant 2388x chip. |
When I edit Kconfig and remove the"select" and "dep" lines associated with LGDT330, unselect DVB_LG330X and build the kernel, the "modprobe cx88-dvb" fails to load and the kernel logs an unknown symbol error.
Any other ideas? I'm not sure what to try next.
Thanks |
|
|
|
|
 |
 |
Additional information |
 |
Posted: Thu Aug 11, 2005 9:32 pm |
|
|
| leeolds |
|
|
| |
| Joined: 23 Jul 2005 |
| Posts: 4 |
|
|
|
 |
 |
 |
|
Here is some additional information about my machine:
$ lspci
0000:00:00.0 Host bridge: VIA Technologies, Inc. VT8366/A/7 [Apollo KT266/A/333]
0000:00:01.0 PCI bridge: VIA Technologies, Inc. VT8366/A/7 [Apollo KT266/A/333 AGP]
0000:00:08.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
0000:00:09.0 Multimedia video controller: Conexant Winfast TV2000 XP (rev 05)
0000:00:09.2 Multimedia controller: Conexant: Unknown device 8802 (rev 05)
0000:00:0a.0 CardBus bridge: Ricoh Co Ltd RL5c475 (rev 80)
0000:00:0d.0 Unknown mass storage controller: Promise Technology, Inc. PDC20265 (FastTrak100 Lite/Ultra100) (rev 02)
0000:00:0e.0 Multimedia audio controller: C-Media Electronics Inc CM8738 (rev 10)
0000:00:11.0 ISA bridge: VIA Technologies, Inc. VT8233 PCI to ISA Bridge
0000:00:11.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06)
0000:00:11.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1b)
0000:00:11.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1b)
0000:00:11.4 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1b)
0000:00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 70)
0000:01:00.0 VGA compatible controller: Matrox Graphics, Inc. MGA G550 AGP (rev 01)
| Code: | $ cat /proc/interrupts
CPU0
0: 13483943 XT-PIC timer
1: 1122 XT-PIC i8042
2: 0 XT-PIC cascade
5: 0 XT-PIC yenta
7: 2 XT-PIC parport0
9: 0 XT-PIC acpi
10: 74588 XT-PIC ide2, cx88[0]
11: 4099464 XT-PIC uhci_hcd:usb1, uhci_hcd:usb2, uhci_hcd:usb3, CMI8738-MC6, eth0, eth1, mga@PCI:1:0:0
12: 334886 XT-PIC i8042
14: 84279 XT-PIC ide0
15: 31 XT-PIC ide1
NMI: 0
LOC: 0
ERR: 0
MIS: 0 |
cx88 and ide2 share interrupt 10. Is this a problem? |
|
|
|
|
 |
 |
|
 |
Posted: Sat Aug 13, 2005 12:55 pm |
|
|
| PeterKnaggs |
|
|
| |
| Joined: 21 Mar 2005 |
| Posts: 54 |
|
|
|
 |
 |
 |
|
The system here has two of the HD3000 cards in it, and /proc/interrupts looks
like this. It still might be worth trying your HD3000 card in a differenc PCI slot,
to see if it makes any difference. It seems from other posts that sometimes
the slot beside the AGP slot is troublesome.
[code]
CPU0
0: 60960 IO-APIC-edge timer
1: 61 IO-APIC-edge i8042
7: 0 IO-APIC-edge parport0
9: 0 IO-APIC-level acpi
14: 24 IO-APIC-edge ide0
50: 913 IO-APIC-level uhci_hcd:usb3, ohci1394, cx88[0], cx88[0]
58: 0 IO-APIC-level uhci_hcd:usb4
66: 3 IO-APIC-level ohci1394
169: 33 IO-APIC-level cx88[1], cx88[1], eth0
201: 98 IO-APIC-level EMU10K1
217: 5315 IO-APIC-level libata
225: 2 IO-APIC-level uhci_hcd:usb1, ehci_hcd:usb5
233: 0 IO-APIC-level uhci_hcd:usb2
NMI: 0
LOC: 60882
ERR: 0
MIS: 0
[/code]
I don't see anything in your kernel config to cause such a problem,
it all looks correct. Have you any way to connect up a serial console cable
to another computer? Perhaps there would be some panic message
that could be seen with serial console that isn't being seen now when the system
freezes. Otherwise, we'd probably need to run the thing under kgdb and perhaps
debug further.
The way you describe it freezing only when atscscan finds a good frequency to
tune to, seems to indicate that the drivers are working correctly, and the problem
is something to do with transferring the data (atscscan reads a bit of the PSIP
to figure out the station name and stuff).
Could you try something in the meantime? Just make an $HOME/.azap/channels.conf
containing the frequency that causes the hang (mark it with "NAME" for example),
and see if you can tune to it OK using:
[code]
./dvb-apps/util/szap/azap NAME
[/code]
Then try it with the "-r" flag too:
[code]
./dvb-apps/util/szap/azap -r NAME
[/code]
If these give you the FE_HAS_LOCK, then the station is tuned OK and the card
is working.
So then try running "./dvb-apps/util/dvbtraffic/dvbtraffic", which
reads the full transport stream from the dvr of the card after setting the frontend
filter to capture the full stream (using the DMX_SET_PES_FILTER ioctl with
dmx_pes_filter_params.pid = 0x2000;)
If dvbtraffic causes the same system freeze, it would narrow the problem
to just the data transfer or interrupt handling on the PCI bus. |
|
|
|
|
 |
 |
Progress? |
 |
Posted: Sun Aug 14, 2005 4:21 am |
|
|
| leeolds |
|
|
| |
| Joined: 23 Jul 2005 |
| Posts: 4 |
|
|
|
 |
 |
 |
|
For the previous posts, the card was in the second pci slot, (not directly adjacent to the agp slot - one pci slot was between them). Azap tuned and locked the station as it should. Dvbtraffic froze the machine hard, just like the scan did. (The machine also freezes, although only temporarily, when the firmware is loading. I'm not sure if this is normal, or indicative of the same problem.)
As an experiment, I've moved the card down two slots. With the new pci slot, the driver no longer automatically recognizes the card as a pcHDTV HD3000. Thanks to useful kernel messages, I figured out how to manually specify the correct card: After unloading all the modules as described in your howto, I loaded the cx88-dvb and depended modules in two steps.
monster:/var/log# modprobe -v cx88xx card=22
insmod /lib/modules/2.6.13-rc6monster/kernel/drivers/media/video/videodev.ko
insmod /lib/modules/2.6.13-rc6monster/kernel/drivers/media/video/tveeprom.ko
insmod /lib/modules/2.6.13-rc6monster/kernel/drivers/media/video/btcx-risc.ko
insmod /lib/modules/2.6.13-rc6monster/kernel/drivers/media/common/ir-common.ko
insmod /lib/modules/2.6.13-rc6monster/kernel/drivers/media/video/video-buf.ko
insmod /lib/modules/2.6.13-rc6monster/kernel/drivers/i2c/algos/i2c-algo-bit.ko
insmod /lib/modules/2.6.13-rc6monster/kernel/drivers/media/video/cx88/cx88xx.ko card=22
monster:/var/log# modprobe -v cx88-dvb
insmod /lib/modules/2.6.13-rc6monster/kernel/drivers/media/dvb/frontends/dvb-pll.ko
insmod /lib/modules/2.6.13-rc6monster/kernel/drivers/media/dvb/frontends/cx22702.ko
insmod /lib/modules/2.6.13-rc6monster/kernel/drivers/media/dvb/frontends/lgdt330x.ko
insmod /lib/modules/2.6.13-rc6monster/kernel/drivers/media/dvb/dvb-core/dvb-core.ko
insmod /lib/modules/2.6.13-rc6monster/kernel/drivers/media/video/video-buf-dvb.ko
insmod /lib/modules/2.6.13-rc6monster/kernel/drivers/media/dvb/frontends/or51132.ko
insmod /lib/modules/2.6.13-rc6monster/kernel/drivers/media/dvb/frontends/mt352.ko
insmod /lib/modules/2.6.13-rc6monster/kernel/drivers/media/video/cx88/cx8802.ko
insmod /lib/modules/2.6.13-rc6monster/kernel/drivers/media/video/cx88/cx88-dvb.ko
monster:/var/log#
I then ran azap:
and it loaded the firmware, and successfully locked the station. Kernel messages:
Aug 14 02:28:48 monster kernel: Linux video capture interface: v1.00
Aug 14 02:29:06 monster kernel: cx2388x dvb driver version 0.0.5 loaded
Aug 14 02:29:06 monster kernel: cx88[0]: subsystem: 3063:3000, board: pcHDTV HD3000 HDTV [card=22,insmod option]
Aug 14 02:29:06 monster kernel: TV tuner 52 at 0x1fe, Radio tuner -1 at 0x1fe
Aug 14 02:29:06 monster kernel: : chip found @ 0xc2 (cx88[0])
Aug 14 02:29:06 monster kernel: tuner 2-0061: type set to 52 (Thomson DDT 7610 (ATSC/NTSC))
Aug 14 02:29:06 monster kernel: ACPI: PCI Interrupt 0000:00:0b.2[A] -> Link [LNKD] -> GSI 5 (level, low) -> IRQ 5
Aug 14 02:29:06 monster kernel: cx88[0]/2: found at 0000:00:0b.2, rev: 5, irq: 5, latency: 32, mmio: 0xea000000
Aug 14 02:29:06 monster kernel: cx88[0]/2: cx2388x based dvb card
Aug 14 02:29:06 monster kernel: DVB: registering new adapter (cx88[0]).
Aug 14 02:29:06 monster kernel: DVB: registering frontend 0 (pcHDTV HD3000 HDTV)...
Aug 14 02:31:27 monster kernel: or51132: Waiting for firmware upload(dvb-fe-or51132-vsb.fw)...
Aug 14 02:31:35 monster kernel: or51132: Version: 10001134-19430000 (113-4-194-3)
Aug 14 02:31:35 monster kernel: or51132: Firmware upload complete.
Here is the new lspci output:
0000:00:00.0 Host bridge: VIA Technologies, Inc. VT8366/A/7 [Apollo KT266/A/333]
0000:00:01.0 PCI bridge: VIA Technologies, Inc. VT8366/A/7 [Apollo KT266/A/333 AGP]
0000:00:08.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
0000:00:0a.0 CardBus bridge: Ricoh Co Ltd RL5c475 (rev 80)
0000:00:0b.0 Multimedia video controller: Conexant Winfast TV2000 XP (rev 05)
0000:00:0b.2 Multimedia controller: Conexant: Unknown device 8802 (rev 05)
0000:00:0d.0 Unknown mass storage controller: Promise Technology, Inc. PDC20265 (FastTrak100 Lite/Ultra100) (rev 02)
0000:00:0e.0 Multimedia audio controller: C-Media Electronics Inc CM8738 (rev 10)
0000:00:11.0 ISA bridge: VIA Technologies, Inc. VT8233 PCI to ISA Bridge
0000:00:11.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06)
0000:00:11.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1b)
0000:00:11.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1b)
0000:00:11.4 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1b)
0000:00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 70)
0000:01:00.0 VGA compatible controller: Matrox Graphics, Inc. MGA G550 AGP (rev 01)
And the new 'cat /proc/interrupts' output:
CPU0
0: 734382 XT-PIC timer
1: 8560 XT-PIC i8042
2: 0 XT-PIC cascade
5: 29 XT-PIC uhci_hcd:usb1, uhci_hcd:usb2, uhci_hcd:usb3, cx88[0]
7: 3 XT-PIC parport0
9: 0 XT-PIC acpi
10: 9804 XT-PIC ide2
11: 222885 XT-PIC CMI8738-MC6, yenta, eth0, eth1, mga@PCI:1:0:0
12: 77463 XT-PIC i8042
14: 13399 XT-PIC ide0
15: 31 XT-PIC ide1
NMI: 0
LOC: 0
ERR: 0
MIS: 0
Running dvbtraffic no longer freezes the machine! Yippee!
But when I run dvbtraffic I see kernel message spew like this:
Aug 14 03:16:43 monster kernel: cx88[0]/2: setting the interrupt mask
Aug 14 03:16:43 monster kernel: cx88[0]/2: clearing mask
Aug 14 03:16:43 monster kernel: cx88[0]/0: irq loop -- clearing mask
Aug 14 03:16:44 monster kernel: cx88[0]/2: cx8802_timeout
Aug 14 03:16:44 monster kernel: cx88[0]/2: cx8802_stop_dma
Aug 14 03:16:44 monster kernel: cx88[0]/2: restarting queue
Aug 14 03:16:44 monster kernel: cx88[0]/2: cx8802_restart_queue
Aug 14 03:16:44 monster kernel: cx88[0]/2: cx8802_restart_queue: queue is empty
Aug 14 03:16:44 monster kernel: cx88[0]/2: queue is empty - first active
Aug 14 03:16:44 monster kernel: cx88[0]/2: cx8802_start_dma 752
Aug 14 03:16:44 monster kernel: cx88[0]/2: setting the interrupt mask
Aug 14 03:16:44 monster kernel: cx88[0]/2: [de22bec0/0] cx8802_buf_queue - first active
Aug 14 03:16:44 monster kernel: cx88[0]: irq mpeg [0x20000] par_err*
Aug 14 03:16:44 monster kernel: cx88[0]/2: general errors: 0x00020000
Aug 14 03:16:44 monster kernel: cx88[0]/2: cx8802_stop_dma
Aug 14 03:16:44 monster kernel: cx88[0]/2: cx8802_restart_queue
Aug 14 03:16:44 monster kernel: cx88[0]/2: cx8802_start_dma 752
Aug 14 03:16:44 monster kernel: cx88[0]/2: setting the interrupt mask
Aug 14 03:16:44 monster kernel: cx88[0]: irq mpeg [0x20000] par_err*
Aug 14 03:16:44 monster kernel: cx88[0]/2: general errors: 0x00020000
Aug 14 03:16:44 monster kernel: cx88[0]/2: cx8802_stop_dma
Aug 14 03:16:44 monster kernel: cx88[0]/2: cx8802_restart_queue
Aug 14 03:16:44 monster kernel: cx88[0]/2: cx8802_start_dma 752
Aug 14 03:16:44 monster kernel: cx88[0]/2: setting the interrupt mask
Aug 14 03:16:44 monster kernel: cx88[0]: irq mpeg [0x20000] par_err*
Aug 14 03:16:44 monster kernel: cx88[0]/2: general errors: 0x00020000
Also, atscscan runs it still doesn't find what it should. Instead of:
>>> tune to: 207000000:8VSB
service is running. Channel number: 11:1. Name: 'KNTV-HD'
service is running. Channel number: 11:2. Name: 'NBC Wea'
I see:
>>> tune to: 497000000:8VSB
WARNING: filter timeout pid 0x0000
WARNING: filter timeout pid 0x1ffb
>>> tune to: 551000000:8VSB
WARNING: filter timeout pid 0x0000
WARNING: filter timeout pid 0x1ffb
>>> tune to: 575000000:8VSB
WARNING: filter timeout pid 0x0000
WARNING: filter timeout pid 0x1ffb
>>> tune to: 605000000:8VSB
WARNING: filter timeout pid 0x0000
WARNING: filter timeout pid 0x1ffb
Also, running test_dvr as below when azap is running produces the same kernel message spew as dvbtraffic, and a zero length test.mpg file:
BUF_SIZE=1925120 ./dvb-apps/test/test_dvr $HOME/test.mpg 0x2000
Thanks for looking at this... |
|
|
|
|
 |
 |
|
 |
Posted: Sun Aug 14, 2005 11:02 am |
|
|
| PeterKnaggs |
|
|
| |
| Joined: 21 Mar 2005 |
| Posts: 54 |
|
|
|
 |
 |
 |
|
Loading the firmware here on my machine doesn't freeze anything, all tasks continue
to run as usual. The only evidence that the firmware is loading is a very high system time.
The only unexpected output I see from media/video/cx88/cx88-mpeg.c is an occasional
| Code: |
cx88[0]: irq mpeg [0x100000] ts_err?*
|
A lot of the debug messages you're seeing from media/video/cx88/cx88-mpeg.c were
added in by the http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.13-rc6.bz2
you're using, they don't seem to be in 2.6.12.3 that I'm using.
Having a look at the code in cx88-mpeg.c, it seems that in the function cx8802_irq,
you should never get the KERN_WARNING "irq loop -- clearing mask". I'm not familiar
with this cx_read stuff, but getting this warning would seem to indicate that interrupts
are getting lost or not handled: the MO_PCI_INTSTAT is the PCI interrupt status,
and cx_read(MO_PCI_INTSTAT) reads the interrupt status out of
cx88_core->lmmio which I guess is the memory mapped from the cx88 card's
interrupt register. I haven't written device drivers, so I might be completely wrong here
Have you tried booting your machine without APIC for the PCI bus? I'm not sure
how to do it, but have a look around the kernel sources, it might be something like
apic=off
or
pci=noapic
Of course, it's possible the machine wouldn't boot at all with these settings, or have
bad performance, so be careful
Could you also try booting the plain 2.6.12.3 kernel. At least that way, it'd be easier to
compare your "dmesg" driver loading messages to what I get on the machine here,
and other things might be easier to compare also.
There's some APIC config options in your kernel config that are new, I'm not sure
what they do yet, but you have them set to "=y" at the moment. They're probably fine,
though.
Thanks for your tip on using "card=22" when loading the module,
I'll have to add it to my hints page, in case it helps other folks  |
|
|
|
|
 |
pcHDTV Forum Index -> HD-2000/3000 drivers
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
All times are GMT - 7 Hours
Page 1 of 1
|
|
|
|
|