[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: TV-Karte (cx88): Rauschen nach booten/start hald



On May 12 21:58, Thomas Kaepernick wrote:

> Da ich gerade selber wegen einer Soundsache am Suchen bin, habe ich
> einige ALSA-Utilities gefunden. Ich habe hier als Oberfläche und
> Enviroment GNOME. Das gnome-volume-control Programm bietet unter dem
> Meü-Punkt Bearbeiten die Möglichkeit, das Gerät zu wechseln. U.a. wird
> mir meine Soundkarte und die TV-Karte zur Auswahl angeboten. Also müßte
> das entsprechende ALSA-Tool auch an der TV-Karte regeln können. 
> 
> $ man -k sound | grep ALSA
> alsactl (1)          - advanced controls for ALSA soundcard driver
> alsamixer (1)        - soundcard mixer for ALSA soundcard driver, with
> ncurses interface
> amixer (1)           - command-line mixer for ALSA soundcard driver
> aplay (1)            - command-line sound recorder and player for ALSA
> soundcard driver
> arecord (1)          - command-line sound recorder and player for ALSA
> soundcard driver
> asoundconf (1)       - utility to read and change the user's ALSA
> library configuration
> 

Hi Thomas (+ die anderen)

Ich hab noch weiter gelesen und getestet:

Ich kann bei meiner Karte den Sound außer über das loopback-Kabel (wie jetzt)
auch direkt über die PCI-Schnittstelle via dem cx88-alsa Modul bekommen [1,2].
Die Lösung, "tvtime + arecord" wie in [1] und verwandte Methoden, also den
Sound getrennt vom TV-Programm zu hören,

    $ arecord -D hw:1,0 -f dat | aplay
    $ arecord -D hw:1 -c 2 -r 48000 -f S16_LE -t wav | aplay -
    $ sox -c 2 -t alsa hw:1 -t alsa hw:0

funktioniert zwar nicht (keine Fehler, message "playing ..." u.s.w. aber kein
Sound, nur Stille :)), aber mit mplayer gehts.

    $ mplayer tv:// -tv driver=v4l2:alsa:adevice=hw.1:amode=1:audiorate=48000:volume=100:immediatemode=0:norm=PAL-BG:mjpeg

Da jedoch mplayer's TV-Funktionalität recht eingeschränkt ist, ist das
keine Lösung.

Wenn ich Vorschlag, unter Gnome das audio-device zu wechseln, tue ("change
device: Conexant CX8811 (Alsa mixer)"), bekomme ich keinen einzigen Regler
angezeigt. Ich bekomme in der Device-Liste die TV-karte auch nur dann
angezeigt, wenn das cx88-alsa Modul geladen ist.  Daher kann man wohl, selbst
wenn ich Regler angezeigt bekommen würde, nur die PCI-Lautstärke regeln,
nicht die über das loopback-Kabel (also den line-out der Karte). Im alsamixer
gibt's auch keine Regler, die das ändern.  Ich habe auch mit alsactl(1)
rumgespielt. Es scheint zwar, als könnte man damit was anfangen, aber es
schreibt mit `alsactl store ...` auch nur den "current driver state" in
/var/lib/alsa/asound.state. Änderungen in dem file bringen demnach (getestet)
auch nix:

    @@ -1,22 +1,22 @@
     state.CX8811 {
            control.1 {
                    comment.access 'read write'
                    comment.type INTEGER
                    comment.count 2
                    comment.range '0 - 63'
                    comment.dbmin -6300
                    comment.dbmax 0
                    iface MIXER
                    name 'Playback Volume'
    -               value.0 63
    -               value.1 63
    +               value.0 0
    +               value.1 0
            }

Ich vermute mal, das "value.{0,1}" wohl Lautstärken sind. Die Alsa-duko dazu
ist recht mager (jedenfalls was ich so in /usr/share/doc/alsa* und auf der
alsa-hompage gesehen hab).  Wenn man noch in /etc/init.d/alsa-utils das
aufrufen von `alsactl store` verhindert (damit beim runterfahren die Werte auf 0
bleiben) und dann neu startet, ändert sich nix: Rauschen am line out. Also: (a)
alsactl und /var/lib/alsa/asound.state haben anscheinend auf den line out
keinen Einfluss und (b) value.{0,1} sind, wenn überhaupt, Lautstärken, die mit
dem cx88-alsa zu tun haben.

Wie auch immer, entgegen meinen ursprünglichen Behauptungen denke ich, dass es
sich doch um ein kernel + Modul (lade/reihenfolge?) + Interrupt Problem
handelt. Ich hab einfach mal zum testen nen aktuellen vanilla kernel
(2.6.26-rc4) kompiliert, und siehe da, es ist wohl ein Interruptproblem. Hier
mal ein grep in kern.log nach dem boot:

    /var/log# grep 17:26 kern.log > kern.log.now
    /var/log# egrep -io "kernel:.*irq.*(3|4|5).*" kern.log.now
    kernel: PCI: Using IRQ router VIA [1106/3177] at 0000:00:11.0
    kernel: serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
    kernel: serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
    kernel: 00:02: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
--> kernel: 00:03: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
    kernel: PCI: setting IRQ 3 as level-triggered
    kernel: PCI: Found IRQ 3 for device 0000:00:10.0
    kernel: uhci_hcd 0000:00:10.0: irq 9, io base 0x0000a400
    kernel: PCI: Found IRQ 3 for device 0000:00:10.1
    kernel: PCI: Found IRQ 3 for device 0000:00:10.2
    kernel: PCI: Found IRQ 3 for device 0000:00:10.3
    kernel: PCI: setting IRQ 5 as level-triggered
    kernel: PCI: Found IRQ 5 for device 0000:00:09.0
    kernel: PCI: Sharing IRQ 5 with 0000:00:0f.0
    kernel: PCI: Sharing IRQ 5 with 0000:00:0f.1
    kernel: ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
    kernel: ide1 at 0x170-0x177,0x376 on irq 15
    kernel: parport0: PC-style at 0x378 (0x778), irq 7, dma 3 [PCSPP,TRISTATE,COMPAT,ECP,DMA]
    kernel: PCI: Found IRQ 5 for device 0000:00:0f.0
    kernel: PCI: Sharing IRQ 5 with 0000:00:09.0
    kernel: PCI: Sharing IRQ 5 with 0000:00:0f.1
--> kernel: cx88[0]/0: found at 0000:00:0f.0, rev: 3, irq: 5, latency: 32, mmio: 0xd3000000
    kernel: PCI: Found IRQ 5 for device 0000:00:0f.1
    kernel: PCI: Sharing IRQ 5 with 0000:00:09.0
    kernel: PCI: Sharing IRQ 5 with 0000:00:0f.0
    kernel: PCI: setting IRQ 4 as level-triggered
    kernel: PCI: Found IRQ 4 for device 0000:00:11.5
    kernel: irq 4: nobody cared (try booting with the "irqpoll" option)
    kernel:  [<c013fd37>] __report_bad_irq+0x24/0x69
    kernel:  [<c01406df>] handle_level_irq+0x4d/0x8a
    kernel:  [<c01057c3>] do_IRQ+0x4b/0x60
    kernel:  [<c011bf43>] do_softirq+0x35/0x43
    kernel:  [<c011c219>] irq_exit+0x25/0x53
    kernel: Disabling IRQ #4
    kernel: irq 3: nobody cared (try booting with the "irqpoll" option)
    kernel:  [<c013fd37>] __report_bad_irq+0x24/0x69
    kernel:  [<c01406df>] handle_level_irq+0x4d/0x8a
    kernel:  [<c01057c3>] do_IRQ+0x4b/0x60
    kernel:  [<c011bf43>] do_softirq+0x35/0x43
    kernel:  [<c011c219>] irq_exit+0x25/0x53
--> kernel: Disabling IRQ #3  

Genau bei "Disabling IRQ #3" fängt der line-out der Karte an zu rauschen.
Weiterhin: Die cx88 Karte hat anscheinend mit IRQ 3 nix zu tun (sondern mit 5).
Das Einzige, wo IRQ 3 noch vorkommt, ist "ttyS1...". Und nu? Kennt sich da
jemand aus?


[1] http://linuxtv.org/v4lwiki/index.php/Cx88_devices_(cx2388x)
[2] http://www.mythtv.org/wiki/index.php/PCI_TV_audio

steve


Reply to: