[mythtv-users] OT - getting capture card to work

Matt Zagrabelny mzagrabe at d.umn.edu
Thu Sep 17 03:47:54 UTC 2020


Closing the loop here...

I checked in with #linuxtv on IRC.

Turns out the PCIe configuration in the BIOS needed the speed set to Gen 1
for the slot that the capture card was in.

Myth is now working. Thank you developers for writing it.

Cheers!

-m

On Wed, Sep 16, 2020 at 11:59 AM Matt Zagrabelny <mzagrabe at d.umn.edu> wrote:

>
>
> On Wed, Sep 16, 2020 at 11:15 AM Klaas de Waal <klaas.de.waal at gmail.com>
> wrote:
>
>>
>>
>> On Wed, 16 Sep 2020 at 17:41, Matt Zagrabelny <mzagrabe at d.umn.edu> wrote:
>>
>>> Greetings,
>>>
>>> This is  a little off topic - I'm struggling to get my capture card to
>>> work.
>>>
>>> I'm starting with w_scan and mplayer to test things out before
>>> configuring Myth.
>>>
>>> Here is my card, it is a Hauppauge WinTV Quad HD PCIe:
>>>
>>> $ lspci -vvv
>>> [snip]
>>> 03:00.0 Multimedia video controller: Conexant Systems, Inc. CX23887/8
>>> PCIe Broadcast Audio and Video Decoder with 3D Comb (rev 04)
>>>         Subsystem: Hauppauge computer works Inc. WinTV-quadHD
>>>         Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
>>> ParErr- Stepping- SERR- FastB2B- DisINTx-
>>>         Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
>>> <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>         Latency: 0, Cache Line Size: 64 bytes
>>>         Interrupt: pin A routed to IRQ 19
>>>         IOMMU group: 11
>>>         Region 0: Memory at a1200000 (64-bit, non-prefetchable) [size=2M]
>>>         Capabilities: <access denied>
>>>         Kernel driver in use: cx23885
>>>         Kernel modules: cx23885
>>>
>>> 04:00.0 Multimedia video controller: Conexant Systems, Inc. CX23887/8
>>> PCIe Broadcast Audio and Video Decoder with 3D Comb (rev 04)
>>>         Subsystem: Hauppauge computer works Inc. CX23887/8 PCIe
>>> Broadcast Audio and Video Decoder with 3D Comb
>>>         Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
>>> ParErr- Stepping- SERR- FastB2B- DisINTx-
>>>         Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
>>> <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>         Latency: 0, Cache Line Size: 64 bytes
>>>         Interrupt: pin A routed to IRQ 16
>>>         IOMMU group: 12
>>>         Region 0: Memory at a1000000 (64-bit, non-prefetchable) [size=2M]
>>>         Capabilities: <access denied>
>>>         Kernel driver in use: cx23885
>>>         Kernel modules: cx23885
>>>
>>> It seems that the kernel is recognizing it okay:
>>>
>>> $ sudo journalctl -k -b
>>> [snip]
>>> Aug 15 19:59:23 zeus kernel: cx23885: cx23885 driver version 0.0.4 loaded
>>> Aug 15 19:59:23 zeus kernel: cx23885: CORE cx23885[0]: subsystem:
>>> 0070:6a18, board: Hauppauge WinTV-QuadHD-ATSC [card=57,autodetected]
>>> Aug 15 19:59:23 zeus kernel: tveeprom: Hauppauge model 165100, rev B4I6,
>>> serial# 4036150199
>>> Aug 15 19:59:23 zeus kernel: tveeprom: MAC address is 00:0d:fe:92:c3:b7
>>> Aug 15 19:59:23 zeus kernel: tveeprom: tuner model is SiLabs Si2157 (idx
>>> 186, type 4)
>>> Aug 15 19:59:23 zeus kernel: tveeprom: TV standards NTSC(M) ATSC/DVB
>>> Digital (eeprom 0x88)
>>> Aug 15 19:59:23 zeus kernel: tveeprom: audio processor is CX23888 (idx
>>> 40)
>>> Aug 15 19:59:23 zeus kernel: tveeprom: decoder processor is CX23888 (idx
>>> 34)
>>> Aug 15 19:59:23 zeus kernel: tveeprom: has no radio, has IR receiver,
>>> has no IR transmitter
>>> Aug 15 19:59:23 zeus kernel: cx23885: cx23885[0]: hauppauge eeprom:
>>> model=165100
>>> Aug 15 19:59:23 zeus kernel: cx25840 8-0044: cx23888 A/V decoder found @
>>> 0x88 (cx23885[0])
>>> Aug 15 19:59:23 zeus kernel: cx25840 8-0044: firmware: direct-loading
>>> firmware v4l-cx23885-avcore-01.fw
>>> Aug 15 19:59:23 zeus kernel: cx25840 8-0044: loaded
>>> v4l-cx23885-avcore-01.fw firmware (16382 bytes)
>>> Aug 15 19:59:23 zeus kernel: cx23885: cx23885_dvb_register() allocating
>>> 1 frontend(s)
>>> Aug 15 19:59:23 zeus kernel: cx23885: cx23885[0]: cx23885 based dvb card
>>> Aug 15 19:59:23 zeus kernel: cx23885: dvb_register(): board=57 port=1
>>> Aug 15 19:59:23 zeus kernel: si2157 7-0060: Silicon Labs
>>> Si2147/2148/2157/2158 successfully attached
>>> Aug 15 19:59:23 zeus kernel: dvbdev: DVB: registering new adapter
>>> (cx23885[0])
>>> Aug 15 19:59:23 zeus kernel: cx23885 0000:03:00.0: DVB: registering
>>> adapter 0 frontend 0 (LG Electronics LGDT3306A VSB/QAM Frontend)...
>>>
>>> Using w_scan seems to find some frequencies that are usable:
>>>
>>> $ w_scan -fa -A1 -c US -X
>>> w_scan -fa -A1 -c US -X
>>> w_scan version 20170107 (compiled for DVB API 5.11)
>>> using settings for UNITED STATES
>>> ATSC
>>> VSB US/CA, DVB-T TW
>>> scan type TERRCABLE_ATSC, channellist 1
>>> output format czap/tzap/szap/xine
>>> WARNING: could not guess your codepage. Falling back to 'UTF-8'
>>> output charset 'UTF-8', use -C <charset> to override
>>> Info: using DVB adapter auto detection.
>>>         /dev/dvb/adapter0/frontend0 -> TERRCABLE_ATSC "LG Electronics
>>> LGDT3306A VSB/QAM Frontend": good :-)
>>>         /dev/dvb/adapter1/frontend0 -> TERRCABLE_ATSC "LG Electronics
>>> LGDT3306A VSB/QAM Frontend": good :-)
>>>         /dev/dvb/adapter2/frontend0 -> TERRCABLE_ATSC "LG Electronics
>>> LGDT3306A VSB/QAM Frontend": good :-)
>>>         /dev/dvb/adapter3/frontend0 -> TERRCABLE_ATSC "LG Electronics
>>> LGDT3306A VSB/QAM Frontend": good :-)
>>> Using TERRCABLE_ATSC frontend (adapter /dev/dvb/adapter0/frontend0)
>>> -_-_-_-_ Getting frontend capabilities-_-_-_-_
>>> Using DVB API 5.11
>>> frontend 'LG Electronics LGDT3306A VSB/QAM Frontend' supports
>>> INVERSION_AUTO
>>> 8VSB
>>> QAM_64
>>> QAM_256
>>> FREQ (54.00MHz ... 858.00MHz)
>>> -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
>>> 57000: 8VSB(time: 00:00.428)
>>> 63000: 8VSB(time: 00:03.560)
>>> 69000: 8VSB(time: 00:06.692)
>>> 79000: 8VSB(time: 00:09.824)
>>> 85000: 8VSB(time: 00:12.956)
>>> 177000: 8VSB(time: 00:16.088)
>>> 183000: 8VSB(time: 00:19.216)         signal ok:        8VSB
>>> f=183000 kHz (0:0:0)
>>> 189000: 8VSB(time: 00:19.912)
>>> [snip]
>>>
>>> When I try to use that frequency in mplayer I don't get the video like I
>>> would expect:
>>>
>>> $ grep WDSEpbs ~/.mplayer/channels.conf
>>> WDSEpbs:183000000:8VSB:49:52:1
>>>
>>> $ mplayer dvb://WDSEpbs
>>> MPlayer 1.3.0 (Debian), built with gcc-10 (C) 2000-2016 MPlayer Team
>>> do_connect: could not connect to socket
>>> connect: No such file or directory
>>> Failed to open LIRC support. You will not be able to use your remote
>>> control.
>>>
>>> Playing dvb://WDSEpbs.
>>> dvb_tune Freq: 183000000
>>> dvb_streaming_read, attempt N. 6 failed with errno 0 when reading 4096
>>> bytes
>>> dvb_streaming_read, attempt N. 5 failed with errno 0 when reading 4096
>>> bytes
>>> dvb_streaming_read, attempt N. 4 failed with errno 0 when reading 4096
>>> bytes
>>> dvb_streaming_read, attempt N. 3 failed with errno 0 when reading 4096
>>> bytes
>>> dvb_streaming_read, attempt N. 2 failed with errno 0 when reading 4096
>>> bytes
>>> dvb_streaming_read, attempt N. 1 failed with errno 0 when reading 4096
>>> bytes
>>> dvb_streaming_read, return 0 bytes
>>>
>>> Exiting... (End of file)
>>>
>>> And I don't get any output.
>>>
>>> If I look at the kernel messages I see some cryptic information:
>>>
>>> $ sudo journalctl -k
>>> [snip]
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]: mpeg risc op code error
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]: TS1 B - dma channel
>>> status dump
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   cmds: init risc lo
>>> : 0xff17f000
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   cmds: init risc hi
>>> : 0x00000000
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   cmds: cdt base
>>> : 0x00010870
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   cmds: cdt size
>>> : 0x0000000a
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   cmds: iq base
>>>  : 0x00010630
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   cmds: iq size
>>>  : 0x00000010
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   cmds: risc pc lo
>>> : 0xff17f018
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   cmds: risc pc hi
>>> : 0x00000000
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   cmds: iq wr ptr
>>>  : 0x00004192
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   cmds: iq rd ptr
>>>  : 0x0000418c
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   cmds: cdt current
>>>  : 0x00010888
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   cmds: pci target lo
>>>  : 0xff27ac10
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   cmds: pci target hi
>>>  : 0x00000000
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   cmds: line / byte
>>>  : 0x000f0000
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   risc0:
>>> Sep 16 10:28:27 zeus kernel: 0x1c0002f0 [ write sol eol count=752 ]
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   risc1:
>>> Sep 16 10:28:27 zeus kernel: 0xff27a920 [ INVALID sol eol irq2 irq1 21
>>> 18 cnt1 cnt0 resync 13 count=2336 ]
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   risc2:
>>> Sep 16 10:28:27 zeus kernel: 0x00000000 [ INVALID count=0 ]
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   risc3:
>>> Sep 16 10:28:27 zeus kernel: 0x1c0002f0 [ write sol eol count=752 ]
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   (0x00010630) iq 0:
>>> Sep 16 10:28:27 zeus kernel: 0x1c0002f0 [ write sol eol count=752 ]
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   iq 1: 0xff27af00 [
>>> arg #1 ]
>>> Sep 16 10:28:27 zeus kernel: cx23885: cx23885[0]:   iq 2: 0x00000000 [
>>> arg #2 ]
>>>
>>> The top line in the above kernel messages is highlighted red:
>>>
>>> mpeg risc op code error
>>>
>>> and I've searched on that string, but didn't get much for answers.
>>>
>>> Does anyone have any insight for what I'm missing here?
>>>
>>>
>>> This can be a firmware issue.The "mpeg risc opcode error" could refer to
>> code that is running on the cx23885 chip.
>>  Maybe there is newer/better firmware for the chips on your card.
>> Firmware can be downloaded
>> https://github.com/OpenELEC/dvb-firmware/tree/master/firmware
>> It can be that your firmware file has become corrupt so downloading the
>> latest and comparing (sum <filename>) is a good idea.
>>
>
> Looks to be the same checksum:
>
> $ md5sum `locate v4l-cx23885-avcore-01.fw` /tmp/v4l-cx23885-avcore-01.fw
> a9f8f5d901a7fb42f552e1ee6384f3bb
>  /usr/lib/firmware/v4l-cx23885-avcore-01.fw
> a9f8f5d901a7fb42f552e1ee6384f3bb  /tmp/v4l-cx23885-avcore-01.fw
>
> hmmm...
>
>
> It can also be a device driver issue. You could try a different
>> distribution with a Live CD (or Live USB stick nowadays) and see if that
>> makes a difference.
>> Or you can install the device driver set from TBS (tbsdtv.com). They use
>> the latest drivers from linuxtv.org and then add their own fixes. You
>> have to clone their git and then compile it yourself.
>>
>
> Okay. Thanks for the suggestions. I'll keep digging!
>
> -m
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mythtv.org/pipermail/mythtv-users/attachments/20200916/6c1e41c9/attachment.htm>


More information about the mythtv-users mailing list