Web lists-archives.com

Radio: dsp access error with MyCinema-P7131 Hybrid


Brief summary: With "MyCinema-P7131 Hybrid" TV/radio PCI card, the saa7134 module says "dsp access error" when trying to capture sound from the ALSA device in radio mode.

I have a "MyCinema-P7131 Hybrid" TV/Radio PCI card. Running Debian GNU/Linux (testing) with the 2.6.18-4-686 kernel. The saa7134 driver included in this kernel didn't know about my particular card, so I had to use the following override: "options saa7134 card=78 tuner=54" (advice found here: http://gentoo-wiki.com/HARDWARE_saa7134).

Yesterday I pulled the V4L-DVB snapshot from the HG repository and built the modules from there. The new driver properly identifies my card (as type 112), so I removed the overrides. The only override I left in /etc/modprobe.d is this:

install saa7134 /sbin/modprobe --ignore-install saa7134 $CMDLINE_OPTS && /sbin/modprobe saa7134-alsa

...to automatically load saa7134-alsa after loading saa7134. (Could the audio device be "detected" automatically so that the ALSA driver loads?) I also have dvb-fe-tda10046.fw in /lib/firmware which seems to actually load into the card: "tda1004x: found firmware revision 20 -- ok" (can be seen from dmesg).

I can watch TV with mplayer without problems:

mplayer -tv device=/dev/video1:driver=v4l2:immediatemode=0:alsa=1:adevice=hw.2,0:audiorate=32000:amode=1:buffersize=32:channlist=europe-west tv://E8

(/dev/video0 is my webcam.)

I have to use immediatemode=0 and capture the sound through ALSA because this card doesn't have an analog audio output that I could connect to the sound card's line input.

However, radio doesn't work. Here is what I try:

mplayer -radio device=/dev/radio0:driver=v4l2:adevice=hw=2.0:arate=32000 radio://89.50/capture

(I have no idea why the adevice suboption has different syntax in -tv and -radio options.)

I have to use /capture for the same reason as why I have to use immediatemode=0 for TV.

What happens is that mplayer stalls at "Cache fill: 0.00% (0 bytes)". strace shows that mplayer runs a background worker process at this time. The foreground process keeps updating this line with "0 bytes" while the background one repeatedly calls ioctl(6, 0x800c4151, ...) which returns 0. Under fd 6 is open /dev/snd/pcmC2D0c. Before entering the loop, the following ioctls have been made by mplayer on this fd: AGPIOC_ACQUIRE or APM_IOC_STANDBY, AGPIOC_INFO, AGPIOC_RELEASE or APM_IOC_SUSPEND, then an mmap2 for reading and an mmap2 for writing, then ioctl 0xc25c4110 several times, then 0xc25c4111, 0xc0684113, 0x4140, 0xc0684113.

At the same time when mplayer tries to read the sound from the device, the kernel repeatedly prints the following (can be seen from dmesg): "saa7133[0]: dsp access error". Adding more verbosity (audio_debug=1) when loading the kernel modules doesn't seem to make this info more detailed.

I also tried to tune without /capture (mplayer tunes the card and then starts idling, hoping that the sound gets though the loopback audio cable, which I don't have) and doing the following while tuned:

arecord -D hw:2,0 -f S16_LE -c 2 -r 32000

What happens is that arecord outputs the RIFF header and stalls. strace shows something very similar to what mplayer does, however arecord doesn't fork.

Also, after an attempt to tune the radio, TV sound stops working, while the picture is still OK. Sound only reappears after rebooting, and even unloading saa7134-alsa and saa7134 and loading them back doesn't fix the TV sound.

I've searched through the archives of this mailing list, as well as through the internet, of course, but found no relevant information. I'll be grateful for any help.

Below is what the kernel modules say when loading:

saa7130/34: v4l2 driver version 0.2.14 loaded
saa7133[0]: found at 0000:05:02.0, rev: 209, irq: 233, latency: 64, mmio: 0xfeaff000 saa7133[0]: subsystem: 1043:4876, board: ASUSTeK P7131 Hybrid [card=112,autodetected]
saa7133[0]: board init: gpio is 40000
input: saa7134 IR (ASUSTeK P7131 Hybri as /class/input/input8
tuner 1-004b: chip found @ 0x96 (saa7133[0])
tuner 1-004b: setting tuner address to 61
tuner 1-004b: type set to tda8290+75a
saa7133[0]: i2c eeprom 00: 43 10 76 48 54 20 1c 00 43 43 a9 1c 55 d2 b2 92
saa7133[0]: i2c eeprom 10: ff ff ff 0f ff 20 ff ff ff ff ff ff ff ff ff ff
saa7133[0]: i2c eeprom 20: 01 40 01 02 03 01 01 03 08 ff 00 d5 ff ff ff ff
saa7133[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7133[0]: i2c eeprom 40: ff 21 00 c2 96 10 03 32 55 50 ff ff ff ff ff ff
saa7133[0]: i2c eeprom 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7133[0]: i2c eeprom 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7133[0]: i2c eeprom 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7133[0]/audio: tvaudio thread scan start [1]
saa7133[0]/audio: scanning: B/G D/K I
saa7133[0]: registered device video1 [v4l2]
saa7133[0]: registered device vbi0
saa7133[0]: registered device radio0
saa7134 ALSA driver for DMA sound loaded
saa7133[0]/alsa: saa7133[0] at 0xfeaff000 irq 233 registered as card -1
DVB: registering new adapter (saa7133[0]).
DVB: registering frontend 0 (Philips TDA10046H DVB-T)...
tda1004x: setting up plls for 48MHz sampling clock
tda1004x: found firmware revision 20 -- ok

Alexey Feldgendler <alexey@xxxxxxxxxxxxxx>
[ICQ: 115226275] http://feldgendler.livejournal.com

video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@xxxxxxxxxx?subject=unsubscribe