Kein Hardwaremixing: Workarount gesuchd

pyropeter

pyropeter

..geht mit foo in die bar
Guten Morgen,


Der S/P-DIF Ausgang meiner Soundkarte beherscht kein Hardwaremixing (natürlich nicht).
Dies scheint immer wieder Programme vor Probleme zu stellen, die versuchen, per ALSA auf hw-Devices zuzugreifen.

Die Symptome sind dann oft wie folgt:

1. Phonon startet/VLC startet/Irgendwas anderes startet.
2. Der Ton (S/P-DIF) verstummt.
3. Ich lade snd_hda_intel neu.
4. Ton funktioniert wieder.

Systemangaben:
Code:
<*//>< # arch linux


<*//>< uname -a
Linux eddie 2.6.32-ARCH #7 SMP PREEMPT Fri Dec 4 15:39:16 CET 2009 x86_64 Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz GenuineIntel GNU/Linux


<*//>< lspci | grep -i Audio
00:1b.0 Audio device: Intel Corporation 82801JI (ICH10 Family) HD Audio Controller
07:00.1 Audio device: ATI Technologies Inc R700 Audio Device [Radeon HD 4000 Series]


<*//>< lspci -vv -s 00:1b.0
00:1b.0 Audio device: Intel Corporation 82801JI (ICH10 Family) HD Audio Controller
	Subsystem: ASRock Incorporation Device 0888
	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: 32 bytes
	Interrupt: pin A routed to IRQ 22
	Region 0: Memory at fe9f8000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: <access denied>
	Kernel driver in use: HDA Intel
	Kernel modules: snd-hda-intel



<*//>< modinfo snd_hda_intel
filename:       /lib/modules/2.6.32-ARCH/kernel/sound/pci/hda/snd-hda-intel.ko
description:    Intel HDA driver
license:        GPL
alias:          pci:v00001022d*sv*sd*bc04sc03i00*
alias:          pci:v00001002d*sv*sd*bc04sc03i00*
alias:          pci:v00001102d00000009sv*sd*bc*sc*i*
alias:          pci:v00006549d00001200sv*sd*bc*sc*i*
alias:          pci:v000010DEd00000D97sv*sd*bc*sc*i*
alias:          pci:v000010DEd00000D96sv*sd*bc*sc*i*
alias:          pci:v000010DEd00000D95sv*sd*bc*sc*i*
alias:          pci:v000010DEd00000D94sv*sd*bc*sc*i*
alias:          pci:v000010DEd00000AC3sv*sd*bc*sc*i*
alias:          pci:v000010DEd00000AC2sv*sd*bc*sc*i*
alias:          pci:v000010DEd00000AC1sv*sd*bc*sc*i*
alias:          pci:v000010DEd00000AC0sv*sd*bc*sc*i*
alias:          pci:v000010DEd000007FDsv*sd*bc*sc*i*
alias:          pci:v000010DEd000007FCsv*sd*bc*sc*i*
alias:          pci:v000010DEd00000777sv*sd*bc*sc*i*
alias:          pci:v000010DEd00000776sv*sd*bc*sc*i*
alias:          pci:v000010DEd00000775sv*sd*bc*sc*i*
alias:          pci:v000010DEd00000774sv*sd*bc*sc*i*
alias:          pci:v000010DEd00000590sv*sd*bc*sc*i*
alias:          pci:v000010DEd0000055Dsv*sd*bc*sc*i*
alias:          pci:v000010DEd0000055Csv*sd*bc*sc*i*
alias:          pci:v000010DEd0000044Bsv*sd*bc*sc*i*
alias:          pci:v000010DEd0000044Asv*sd*bc*sc*i*
alias:          pci:v000010DEd000003F0sv*sd*bc*sc*i*
alias:          pci:v000010DEd000003E4sv*sd*bc*sc*i*
alias:          pci:v000010DEd00000371sv*sd*bc*sc*i*
alias:          pci:v000010DEd0000026Csv*sd*bc*sc*i*
alias:          pci:v000010B9d00005461sv*sd*bc*sc*i*
alias:          pci:v00001039d00007502sv*sd*bc*sc*i*
alias:          pci:v00001106d00003288sv*sd*bc*sc*i*
alias:          pci:v00001002d0000AA48sv*sd*bc*sc*i*
alias:          pci:v00001002d0000AA40sv*sd*bc*sc*i*
alias:          pci:v00001002d0000AA38sv*sd*bc*sc*i*
alias:          pci:v00001002d0000AA30sv*sd*bc*sc*i*
alias:          pci:v00001002d0000AA28sv*sd*bc*sc*i*
alias:          pci:v00001002d0000AA20sv*sd*bc*sc*i*
alias:          pci:v00001002d0000AA18sv*sd*bc*sc*i*
alias:          pci:v00001002d0000AA10sv*sd*bc*sc*i*
alias:          pci:v00001002d0000AA08sv*sd*bc*sc*i*
alias:          pci:v00001002d0000AA00sv*sd*bc*sc*i*
alias:          pci:v00001002d0000970Fsv*sd*bc*sc*i*
alias:          pci:v00001002d0000960Fsv*sd*bc*sc*i*
alias:          pci:v00001002d00007919sv*sd*bc*sc*i*
alias:          pci:v00001002d0000793Bsv*sd*bc*sc*i*
alias:          pci:v00001002d00004383sv*sd*bc*sc*i*
alias:          pci:v00001002d0000437Bsv*sd*bc*sc*i*
alias:          pci:v00008086d0000811Bsv*sd*bc*sc*i*
alias:          pci:v00008086d00003B56sv*sd*bc*sc*i*
alias:          pci:v00008086d00003A6Esv*sd*bc*sc*i*
alias:          pci:v00008086d00003A3Esv*sd*bc*sc*i*
alias:          pci:v00008086d0000293Fsv*sd*bc*sc*i*
alias:          pci:v00008086d0000293Esv*sd*bc*sc*i*
alias:          pci:v00008086d00002911sv*sd*bc*sc*i*
alias:          pci:v00008086d0000284Bsv*sd*bc*sc*i*
alias:          pci:v00008086d0000269Asv*sd*bc*sc*i*
alias:          pci:v00008086d000027D8sv*sd*bc*sc*i*
alias:          pci:v00008086d00002668sv*sd*bc*sc*i*
depends:        snd-pcm,snd,snd-page-alloc,snd-hda-codec
vermagic:       2.6.32-ARCH SMP preempt mod_unload 
parm:           index:Index value for Intel HD audio interface. (array of int)
parm:           id:ID string for Intel HD audio interface. (array of charp)
parm:           enable:Enable Intel HD audio interface. (array of bool)
parm:           model:Use the given board model. (array of charp)
parm:           position_fix:Fix DMA pointer (0 = auto, 1 = none, 2 = POSBUF). (array of int)
parm:           bdl_pos_adj:BDL position adjustment offset. (array of int)
parm:           probe_mask:Bitmask to probe codecs (default = -1). (array of int)
parm:           probe_only:Only probing and no codec initialization. (array of bool)
parm:           single_cmd:Use single command to communicate with codecs (for debugging only). (bool)
parm:           enable_msi:Enable Message Signaled Interrupt (MSI) (int)
parm:           patch:Patch file for Intel HD audio interface. (array of charp)
parm:           power_save:Automatic power-saving timeout (in second, 0 = disable). (int)
parm:           power_save_controller:Reset controller in power save mode. (bool)


<*//>< dmesg | egrep -i "HDA|Intel|00:1b.0|sound"
  Intel GenuineIntel
Performance Events: Core2 events, Intel PMU driver.
CPU0: Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz stepping 0a
CPU1: Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz stepping 0a
pci 0000:00:1b.0: reg 10 64bit mmio: [0xfe9f8000-0xfe9fbfff]
pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
pci 0000:00:1b.0: PME# disabled
iTCO_wdt: Intel TCO WatchDog Timer Driver v1.05
HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
HDA Intel 0000:00:1b.0: setting latency timer to 64
hda_codec: ALC888: BIOS auto-probing.
input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input6
HDA Intel 0000:07:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17
HDA Intel 0000:07:00.1: setting latency timer to 64
hda-intel: IRQ timing workaround is activated for card #0. Suggest a bigger bdl_pos_adj.
HDA Intel 0000:07:00.1: PCI INT B disabled
HDA Intel 0000:00:1b.0: PCI INT A disabled
HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
HDA Intel 0000:00:1b.0: setting latency timer to 64
hda_codec: ALC888: BIOS auto-probing.
input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input7
HDA Intel 0000:07:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17
HDA Intel 0000:07:00.1: setting latency timer to 64
hda-intel: azx_get_response timeout, switching to polling mode: last cmd=0x002f0d00
HDA Intel 0000:07:00.1: PCI INT B disabled
HDA Intel 0000:00:1b.0: PCI INT A disabled
HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
HDA Intel 0000:00:1b.0: setting latency timer to 64
hda_codec: ALC888: BIOS auto-probing.
input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input8
HDA Intel 0000:07:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17
HDA Intel 0000:07:00.1: setting latency timer to 64
HDA Intel 0000:07:00.1: PCI INT B disabled
HDA Intel 0000:00:1b.0: PCI INT A disabled
HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
HDA Intel 0000:00:1b.0: setting latency timer to 64
hda_codec: ALC888: BIOS auto-probing.
input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input9
HDA Intel 0000:07:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17
HDA Intel 0000:07:00.1: setting latency timer to 64
HDA Intel 0000:07:00.1: PCI INT B disabled
HDA Intel 0000:00:1b.0: PCI INT A disabled
HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
HDA Intel 0000:00:1b.0: setting latency timer to 64
hda_codec: ALC888: BIOS auto-probing.
input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input10
HDA Intel 0000:07:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17
HDA Intel 0000:07:00.1: setting latency timer to 64
HDA Intel 0000:07:00.1: PCI INT B disabled
HDA Intel 0000:00:1b.0: PCI INT A disabled
HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
HDA Intel 0000:00:1b.0: setting latency timer to 64
hda_codec: ALC888: BIOS auto-probing.
input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input11
HDA Intel 0000:07:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17
HDA Intel 0000:07:00.1: setting latency timer to 64
HDA Intel 0000:07:00.1: PCI INT B disabled
HDA Intel 0000:00:1b.0: PCI INT A disabled
HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
HDA Intel 0000:00:1b.0: setting latency timer to 64
hda_codec: ALC888: BIOS auto-probing.
input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input12
HDA Intel 0000:07:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17
HDA Intel 0000:07:00.1: setting latency timer to 64
HDA Intel 0000:07:00.1: PCI INT B disabled
HDA Intel 0000:00:1b.0: PCI INT A disabled
HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
HDA Intel 0000:00:1b.0: setting latency timer to 64
hda_codec: ALC888: BIOS auto-probing.
input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input13
HDA Intel 0000:07:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17
HDA Intel 0000:07:00.1: setting latency timer to 64
Modules linked in: snd_hda_intel ntfs bluetooth rfkill fuse nls_cp437 vfat fat ipv6 snd_hda_codec_atihdmi snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss snd_hda_codec_realtek fan battery ac tda827x snd_hda_codec radeon snd_hwdep tda1004x snd_pcm snd_timer dvb_usb_m920x ttm snd dvb_usb drm_kms_helper dvb_core drm i2c_algo_bit soundcore snd_page_alloc psmouse i2c_i801 serio_raw pcspkr irtty_sir r8169 usbhid intel_agp button processor thermal iTCO_wdt evdev sg mii sir_dev i2c_core hid irda crc_ccitt iTCO_vendor_support rtc_cmos rtc_core rtc_lib ext3 jbd mbcache sr_mod cdrom sd_mod usb_storage uhci_hcd floppy ahci libata scsi_mod ehci_hcd usbcore [last unloaded: snd_hda_intel]
Modules linked in: snd_hda_intel ntfs bluetooth rfkill fuse nls_cp437 vfat fat ipv6 snd_hda_codec_atihdmi snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss snd_hda_codec_realtek fan battery ac tda827x snd_hda_codec radeon snd_hwdep tda1004x snd_pcm snd_timer dvb_usb_m920x ttm snd dvb_usb drm_kms_helper dvb_core drm i2c_algo_bit soundcore snd_page_alloc psmouse i2c_i801 serio_raw pcspkr irtty_sir r8169 usbhid intel_agp button processor thermal iTCO_wdt evdev sg mii sir_dev i2c_core hid irda crc_ccitt iTCO_vendor_support rtc_cmos rtc_core rtc_lib ext3 jbd mbcache sr_mod cdrom sd_mod usb_storage uhci_hcd floppy ahci libata scsi_mod ehci_hcd usbcore [last unloaded: snd_hda_intel]
HDA Intel 0000:07:00.1: PCI INT B disabled
HDA Intel 0000:00:1b.0: PCI INT A disabled
HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
HDA Intel 0000:00:1b.0: setting latency timer to 64
hda_codec: ALC888: BIOS auto-probing.
input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input14
HDA Intel 0000:07:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17
HDA Intel 0000:07:00.1: setting latency timer to 64
HDA Intel 0000:07:00.1: PCI INT B disabled
HDA Intel 0000:00:1b.0: PCI INT A disabled
HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
HDA Intel 0000:00:1b.0: setting latency timer to 64
hda_codec: ALC888: BIOS auto-probing.
input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input15
HDA Intel 0000:07:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17
HDA Intel 0000:07:00.1: setting latency timer to 64
HDA Intel 0000:07:00.1: PCI INT B disabled
HDA Intel 0000:00:1b.0: PCI INT A disabled
HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
HDA Intel 0000:00:1b.0: setting latency timer to 64
hda_codec: ALC888: BIOS auto-probing.
input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input16
HDA Intel 0000:07:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17
HDA Intel 0000:07:00.1: setting latency timer to 64
HDA Intel 0000:07:00.1: PCI INT B disabled
HDA Intel 0000:00:1b.0: PCI INT A disabled
HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
HDA Intel 0000:00:1b.0: setting latency timer to 64
hda_codec: ALC888: BIOS auto-probing.
input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input17
HDA Intel 0000:07:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17
HDA Intel 0000:07:00.1: setting latency timer to 64
HDA Intel 0000:07:00.1: PCI INT B disabled
HDA Intel 0000:00:1b.0: PCI INT A disabled
HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
HDA Intel 0000:00:1b.0: setting latency timer to 64
hda_codec: ALC888: BIOS auto-probing.
input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input18
HDA Intel 0000:07:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17
HDA Intel 0000:07:00.1: setting latency timer to 64
HDA Intel 0000:07:00.1: PCI INT B disabled
HDA Intel 0000:00:1b.0: PCI INT A disabled
HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
HDA Intel 0000:00:1b.0: setting latency timer to 64
hda_codec: ALC888: BIOS auto-probing.
input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input19
HDA Intel 0000:07:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17
HDA Intel 0000:07:00.1: setting latency timer to 64
HDA Intel 0000:07:00.1: PCI INT B disabled
HDA Intel 0000:00:1b.0: PCI INT A disabled
HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
HDA Intel 0000:00:1b.0: setting latency timer to 64
hda_codec: ALC888: BIOS auto-probing.
input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input20
HDA Intel 0000:07:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17
HDA Intel 0000:07:00.1: setting latency timer to 64
hda-intel: IRQ timing workaround is activated for card #0. Suggest a bigger bdl_pos_adj.


<*//>< cat /etc/modprobe.d/sound.conf 
alias snd-card-0 snd-hda-intel
alias sound-slot-0 snd-hda-intel


<*//>< aplay -L
default:CARD=Intel
    HDA Intel, ALC888 Analog
    Default Audio Device
front:CARD=Intel,DEV=0
    HDA Intel, ALC888 Analog
    Front speakers
surround40:CARD=Intel,DEV=0
    HDA Intel, ALC888 Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=Intel,DEV=0
    HDA Intel, ALC888 Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Intel,DEV=0
    HDA Intel, ALC888 Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Intel,DEV=0
    HDA Intel, ALC888 Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Intel,DEV=0
    HDA Intel, ALC888 Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Intel,DEV=0
    HDA Intel, ALC888 Digital
    IEC958 (S/PDIF) Digital Audio Output
null
    Discard all samples (playback) or generate zero samples (capture)
phononbar
    phonon workaround V
hdmi:CARD=HDMI
    HDA ATI HDMI, ATI HDMI
    HDMI Audio Output


<*//>< cat /etc/asound.conf 
pcm.phononbar {
    type iec958             # IEC958 subframe conversion PCM
    slave {                 # Slave definition
        pcm "iec958:CARD=Intel,DEV=0"
        #period_time 0
        #period_size 1024
        #buffer_size 8192
        #rate 44100 #many new cards are 48000 only
        format "S16_LE"
    }
    hint {
        show on
        description "phonon workaround V"
    }
}


<*//>< cat /etc/asound.state 
state.Intel {
	control.1 {
		comment.access 'read write'
		comment.type INTEGER
		comment.count 2
		comment.range '0 - 31'
		comment.dbmin -4650
		comment.dbmax 0
		iface MIXER
		name 'Front Playback Volume'
		value.0 0
		value.1 0
	}
	control.2 {
		comment.access 'read write'
		comment.type BOOLEAN
		comment.count 2
		iface MIXER
		name 'Front Playback Switch'
		value.0 true
		value.1 true
	}
	control.3 {
		comment.access 'read write'
		comment.type INTEGER
		comment.count 2
		comment.range '0 - 31'
		comment.dbmin -4650
		comment.dbmax 0
		iface MIXER
		name 'Surround Playback Volume'
		value.0 0
		value.1 0
	}
	control.4 {
		comment.access 'read write'
		comment.type BOOLEAN
		comment.count 2
		iface MIXER
		name 'Surround Playback Switch'
		value.0 true
		value.1 true
	}
	control.5 {
		comment.access 'read write'
		comment.type INTEGER
		comment.count 1
		comment.range '0 - 31'
		comment.dbmin -4650
		comment.dbmax 0
		iface MIXER
		name 'Center Playback Volume'
		value 0
	}
	control.6 {
		comment.access 'read write'
		comment.type INTEGER
		comment.count 1
		comment.range '0 - 31'
		comment.dbmin -4650
		comment.dbmax 0
		iface MIXER
		name 'LFE Playback Volume'
		value 0
	}
	control.7 {
		comment.access 'read write'
		comment.type BOOLEAN
		comment.count 1
		iface MIXER
		name 'Center Playback Switch'
		value true
	}
	control.8 {
		comment.access 'read write'
		comment.type BOOLEAN
		comment.count 1
		iface MIXER
		name 'LFE Playback Switch'
		value true
	}
	control.9 {
		comment.access 'read write'
		comment.type INTEGER
		comment.count 2
		comment.range '0 - 31'
		comment.dbmin -4650
		comment.dbmax 0
		iface MIXER
		name 'Side Playback Volume'
		value.0 0
		value.1 0
	}
	control.10 {
		comment.access 'read write'
		comment.type BOOLEAN
		comment.count 2
		iface MIXER
		name 'Side Playback Switch'
		value.0 true
		value.1 true
	}
	control.11 {
		comment.access 'read write'
		comment.type BOOLEAN
		comment.count 2
		iface MIXER
		name 'Headphone Playback Switch'
		value.0 true
		value.1 true
	}
	control.12 {
		comment.access 'read write'
		comment.type INTEGER
		comment.count 2
		comment.range '0 - 31'
		comment.dbmin -3450
		comment.dbmax 1200
		iface MIXER
		name 'Mic Playback Volume'
		value.0 0
		value.1 0
	}
	control.13 {
		comment.access 'read write'
		comment.type BOOLEAN
		comment.count 2
		iface MIXER
		name 'Mic Playback Switch'
		value.0 false
		value.1 false
	}
	control.14 {
		comment.access 'read write'
		comment.type INTEGER
		comment.count 2
		comment.range '0 - 31'
		comment.dbmin -3450
		comment.dbmax 1200
		iface MIXER
		name 'Front Mic Playback Volume'
		value.0 0
		value.1 0
	}
	control.15 {
		comment.access 'read write'
		comment.type BOOLEAN
		comment.count 2
		iface MIXER
		name 'Front Mic Playback Switch'
		value.0 false
		value.1 false
	}
	control.16 {
		comment.access 'read write'
		comment.type INTEGER
		comment.count 2
		comment.range '0 - 31'
		comment.dbmin -3450
		comment.dbmax 1200
		iface MIXER
		name 'Line Playback Volume'
		value.0 0
		value.1 0
	}
	control.17 {
		comment.access 'read write'
		comment.type BOOLEAN
		comment.count 2
		iface MIXER
		name 'Line Playback Switch'
		value.0 false
		value.1 false
	}
	control.18 {
		comment.access 'read write'
		comment.type INTEGER
		comment.count 2
		comment.range '0 - 31'
		comment.dbmin -3450
		comment.dbmax 1200
		iface MIXER
		name 'CD Playback Volume'
		value.0 0
		value.1 0
	}
	control.19 {
		comment.access 'read write'
		comment.type BOOLEAN
		comment.count 2
		iface MIXER
		name 'CD Playback Switch'
		value.0 false
		value.1 false
	}
	control.20 {
		comment.access 'read write'
		comment.type INTEGER
		comment.count 2
		comment.range '0 - 3'
		comment.dbmin 0
		comment.dbmax 3000
		iface MIXER
		name 'Mic Boost'
		value.0 0
		value.1 0
	}
	control.21 {
		comment.access 'read write'
		comment.type INTEGER
		comment.count 2
		comment.range '0 - 3'
		comment.dbmin 0
		comment.dbmax 3000
		iface MIXER
		name 'Front Mic Boost'
		value.0 0
		value.1 0
	}
	control.22 {
		comment.access 'read write'
		comment.type BOOLEAN
		comment.count 2
		iface MIXER
		name 'Capture Switch'
		value.0 true
		value.1 true
	}
	control.23 {
		comment.access 'read write'
		comment.type BOOLEAN
		comment.count 2
		iface MIXER
		name 'Capture Switch'
		index 1
		value.0 true
		value.1 true
	}
	control.24 {
		comment.access 'read write'
		comment.type INTEGER
		comment.count 2
		comment.range '0 - 31'
		comment.dbmin -1650
		comment.dbmax 3000
		iface MIXER
		name 'Capture Volume'
		value.0 0
		value.1 0
	}
	control.25 {
		comment.access 'read write'
		comment.type INTEGER
		comment.count 2
		comment.range '0 - 31'
		comment.dbmin -1650
		comment.dbmax 3000
		iface MIXER
		name 'Capture Volume'
		index 1
		value.0 0
		value.1 0
	}
	control.26 {
		comment.access 'read write'
		comment.type ENUMERATED
		comment.count 1
		comment.item.0 Mic
		comment.item.1 'Front Mic'
		comment.item.2 Line
		comment.item.3 CD
		iface MIXER
		name 'Input Source'
		value Mic
	}
	control.27 {
		comment.access 'read write'
		comment.type ENUMERATED
		comment.count 1
		comment.item.0 Mic
		comment.item.1 'Front Mic'
		comment.item.2 Line
		comment.item.3 CD
		iface MIXER
		name 'Input Source'
		index 1
		value Mic
	}
	control.28 {
		comment.access read
		comment.type IEC958
		comment.count 1
		iface MIXER
		name 'IEC958 Playback Con Mask'
		value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
	}
	control.29 {
		comment.access read
		comment.type IEC958
		comment.count 1
		iface MIXER
		name 'IEC958 Playback Pro Mask'
		value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
	}
	control.30 {
		comment.access 'read write'
		comment.type IEC958
		comment.count 1
		iface MIXER
		name 'IEC958 Playback Default'
		value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
	}
	control.31 {
		comment.access 'read write'
		comment.type BOOLEAN
		comment.count 1
		iface MIXER
		name 'IEC958 Playback Switch'
		value true
	}
	control.32 {
		comment.access 'read write'
		comment.type BOOLEAN
		comment.count 1
		iface MIXER
		name 'IEC958 Default PCM Playback Switch'
		value true
	}
	control.33 {
		comment.access 'read write'
		comment.type INTEGER
		comment.count 2
		comment.range '0 - 31'
		comment.dbmin -3450
		comment.dbmax 1200
		iface MIXER
		name 'Beep Playback Volume'
		value.0 0
		value.1 0
	}
	control.34 {
		comment.access 'read write'
		comment.type BOOLEAN
		comment.count 2
		iface MIXER
		name 'Beep Playback Switch'
		value.0 false
		value.1 false
	}
	control.35 {
		comment.access 'read write'
		comment.type INTEGER
		comment.count 1
		comment.range '0 - 31'
		comment.dbmin -4650
		comment.dbmax 0
		iface MIXER
		name 'Master Playback Volume'
		value 31
	}
	control.36 {
		comment.access 'read write'
		comment.type BOOLEAN
		comment.count 1
		iface MIXER
		name 'Master Playback Switch'
		value true
	}
	control.37 {
		comment.access 'read write user'
		comment.type INTEGER
		comment.count 2
		comment.range '0 - 255'
		comment.tlv '0000000100000008ffffec1400000014'
		comment.dbmin -5100
		comment.dbmax 0
		iface MIXER
		name 'PCM Playback Volume'
		value.0 255
		value.1 255
	}
	control.38 {
		comment.access 'read write user'
		comment.type INTEGER
		comment.count 2
		comment.range '0 - 99'
		comment.tlv '0000000100000008ffffec1400000033'
		comment.dbmin -5100
		comment.dbmax -51
		iface MIXER
		name Phonon
		value.0 99
		value.1 99
	}
	control.39 {
		comment.access 'read write user'
		comment.type INTEGER
		comment.count 2
		comment.range '0 - 120'
		comment.tlv '0000000100000008fffff44800000032'
		comment.dbmin -3000
		comment.dbmax 3000
		iface MIXER
		name 'Digital Capture Volume'
		value.0 60
		value.1 60
	}
}
state.HDMI {
	control.1 {
		comment.access read
		comment.type IEC958
		comment.count 1
		iface MIXER
		name 'IEC958 Playback Con Mask'
		value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
	}
	control.2 {
		comment.access read
		comment.type IEC958
		comment.count 1
		iface MIXER
		name 'IEC958 Playback Pro Mask'
		value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
	}
	control.3 {
		comment.access 'read write'
		comment.type IEC958
		comment.count 1
		iface MIXER
		name 'IEC958 Playback Default'
		value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
	}
	control.4 {
		comment.access 'read write'
		comment.type BOOLEAN
		comment.count 1
		iface MIXER
		name 'IEC958 Playback Switch'
		value false
	}
}

(Ich hoffe, Ich habe keine wichtige Information vergessen.)

Was ich jetzt bräuchte, wäre ein ALSA-Setup, das als default-Device eines mit Softwaremixing anbietet. Ziel ist:

1. Der Ton soll einen Start einer "fehlerhaften" Appplikation überleben.
2. Ich möchte Minitube ausprobieren können, das per Qt oder KDE auf Phonon zugreift.


MfG, PyroPeter
 
Zuletzt bearbeitet:
P

pferdefreund

Gast
Ich hab mal was von nem dmix-plugin für alsa gehört - obs das ist ?
 
pyropeter

pyropeter

..geht mit foo in die bar
Ich habe keine Ahnung von ALSA, aber dmix sieht schon mal nicht schlecht aus.

Weitere Informationen:

Code:
[root@eddie etc]# aplay -D iec958:CARD=Intel,DEV=0 foo.wav 
Playing WAVE 'foo.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

Das funktioniert einwandfrei. Auch mehrmals hintereinander. Nicht aber gleichzeitig ("aplay: main:608: audio open error: Device or resource busy")
Danach funktioniert mein "normales" Setup per default-device, dass den Ton dann nach setzen von "S/PDIF" in alsamixer "irgendwie" per S/PDIF ausgibt, nicht mehr. (Oben genannte Symptome)

------

Code:
aplay -D hw:0,1 foo.wav
funktioniert auch.

Ich habe mir dann das hier zusammengebastelt:
Code:
pcm.dmix_test {
        type dmix
        ipc_key 321456  # any unique value
        ipc_key_add_uid true
        slave {
                pcm "hw:0,1"
                format S16_LE
                rate 44100
        }
}

Die Config habe ich größtenteils von http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html kopiert.
Das erlaubt nun gleichzeitiges Abspielen mit zwei aplay's. (huhu deki)
Ich werde nun testen, ob ich die rate und format-Werte noch ändern kann, je nachdem, was mein Receiver unterstützt.
Danach werde ich gucken, was denn wohl Phonon (erschauder) zu dem dmix-device sagt.

----------
Code:
[root@eddie asound]# aplay -D dmix_test foo.wav
Playing WAVE 'foo.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
underrun!!! (at least -1260467843931.547 ms long)
underrun!!! (at least -1260467843931.548 ms long)
Die beiden Fehlermeldungen erschienen kurz vor Ende der Datei, aber noch zu früh, um dadurch ausgelöst worden zu können. Das hängt doch sicher mit den rate/format-Einstellungen zusammen?


MfG, PyroPeter

EDIT:

Neue asound.conf:

Code:
pcm.!default dmix_plug
ctl.!default dmix_plug

pcm.dmix_test {
        type dmix
        ipc_key 321456  # any unique value
        ipc_key_add_uid true
        slave {
                pcm "hw:0,1"
                format S16_LE
                #rate 44100
		rate 48000
        }
}

pcm.dmix_plug {
	type plug
	slave.pcm "dmix_asym"
	hint {
		show on
		description "S/PDIF out + dmix + asym + plug"
	}
}

ctl.dmix_plug {
	#type hw
	#card "Intel"
	type shm
}

pcm.dmix_asym {
	type asym
	playback.pcm "dmix_test"
	capture.pcm "fake_capture"
}

pcm.fake_capture {
	type null
}

Nun habe ich ein ganz tolles Problem:
Mehrere aplays laufen, nur xmms2+aplay oder phonon+aplay funktionieren nicht.
Code:
[root@eddie asound]# aplay -D dmix_plug foo.wav 
ALSA lib pcm_dmix.c:1010:(snd_pcm_dmix_open) unable to open slave
aplay: main:608: audio open error: Device or resource busy

Mein (teilbelegter) Verdacht ist, dass xmms2 und phonon auf das mixer-device zugreifen (ctl.dmix_plug) und dieses nicht simultan von mehreren Prozessen benutzt werden kann.

Ich bin ja mal gespannt, ob ich es jemals schaffen werde, ein einigermaßen funktionierendes Sound-Setup zu finden.


MfG, PyroPeter
 
Zuletzt bearbeitet:

Ähnliche Themen

kein Sound bei sämtlichen Distributionen...

Asus U30sd + Arch + Alsa...

Rollei Mini Wifi Camcorder

Hardware Problem

USB Fehler bei aufwachender Platte

Oben