Автор Тема: ALSA несколько одинаковых звуковых карт  (Прочитано 3903 раз)

Оффлайн sagax

  • Начинающий
  • *
  • Сообщений: 4
Добрый день, помогите пожалуйста настроить несколько звуковых карт для бессбойной работы
На сегодняшний момент есть вот что:
   -- файл настроек .asoundrc
pcm.card_0 {
    type hw
    card 0
    device 0
}
pcm.card_1 {
    type hw
    card 1
    device 0
}
pcm.card_2 {
    type hw
    card 2
    device 0
}
pcm.card_3 {
    type hw
    card 3
    device 0
}
pcm.card_4 {
    type hw
    card 4
    device 0
}
   -- bash скрипт записи звука с этих самых звуковых карт, для примера привожу только один, остальные отличаются только номерами звуковых карт в параметре hw
#!/bin/bash
NAME=record_line_1
PIDFILE=/var/run/$NAME.pid
CA="$HOME/radio"
Year=`date "+%Y"`
Month=`date "+%m"`
Day=`date "+%d"`
DATE=`date "+%Y%m%d - %H%M00"`
mkdir -p $CA/$NAME/$Year/$Month/$Day/ 2>/dev/null
cd $CA/$NAME/$Year/$Month/$Day/
arecord -D card_1 -c 1 -d 3599 -f S16_LE | lame -m m --resample 24 -b 24 - "$DATE".mp3
exit 0

и вот проблема в том что иногда свет пропадает и после включения происходит (не каждый раз, но бывает) перемена мест карт в alsa. Меняется "hw" некоторых карт местами.

подскажите пожалуйста, как hw привязать жестко к определенной карте? или же как сделать уникальные имена каждой карты привязанные к pci слоту и использовать из в .asoundrc и скрипте записи?


   -- вот сами карты
cat /proc/asound/cards
 0 [CMI8738        ]: CMI8738-MC6 - C-Media CMI8738
                      C-Media CMI8738 (model 55) at 0xd800, irq 21
 1 [CMI8738_1      ]: CMI8738 - C-Media CMI8738
                      C-Media CMI8738 (model 37) at 0xd400, irq 22
 2 [CMI8738_2      ]: CMI8738 - C-Media CMI8738
                      C-Media CMI8738 (model 37) at 0xd000, irq 23
 3 [CMI8738_3      ]: CMI8738 - C-Media CMI8738
                      C-Media CMI8738 (model 37) at 0xb800, irq 20
 4 [CMI8738_4      ]: CMI8738 - C-Media CMI8738
                      C-Media CMI8738 (model 37) at 0xb400, irq 21

Linux 2.6.32-std-def-alt20.M50P.1 i686 GNU/Linux
устанавливал SimplyLinux пятую версию

Оффлайн dubrsl

  • alt linux team
  • ***
  • Сообщений: 238
Для привязки физических карт к устройствам, существует параметр index у соотвкетствующего модуля ядра.
Например посмотрите файл
# cat /etc/modprobe.d/alsa-modindex.conf
#### AC97 software sound chips
## spare index=0 for a real soundcard (if any)
#options snd_intel8x0 index=2
#options snd_hda_intel index=2
#options snd_via82xx index=2
#options snd-bt87x index=3
#options snd_intel8x0m index=4
#options snd-atiixp-modem index=4
#options snd-via82xx-modem index=4

options snd_pcsp index=10

## if you experience noisy sound with VIA AC97 audio,
## try to uncomment this and play with 4/2/1:
#options snd-via82xx dxs_support=4

Если мдуль для всех карточек один, то можно указать индекс с привязкой по прерыванию или id
WBR,
Slava

Оффлайн sagax

  • Начинающий
  • *
  • Сообщений: 4
c options "modul" index=x
все получилось
теперь порядковый номер index=x и есть hw:x
это удобно
но у двух карт одинаковый модуль
и как справится с ним по прерыванию или id не могу найти
у кого есть рецепт - напишите пожалуйста, уже гуглить замучался я

Получилось сделать привязку к индексу у звуковых карт с разным модулем, а как быть с одинаковыми модулями не знаю, ничего не получается,
пытаюсь делать по этим примерам
http://www.gentoo.ru/content/pravila-udev-pomogite-ponyat-logiku
http://zeroone.homeunix.net/~blip/computer/linux/sound/
http://comments.gmane.org/gmane.linux.altlinux.community/107003
http://archlinux.org.ru/forum/viewtopic.php?t=6732&p=63392

при правилах в /etc/modprobe.d/alsa-modindex.conf карты исчезают, а в dmesg пишет что
snd_emu10k1: Unknown parameter `vid'
snd_emu10k1: Unknown parameter `vid'

а вот сами правила /etc/modprobe.d/alsa-modindex.conf

## get PC speaker off the way
options snd_pcsp index=9
# START
# rules for audiocard
alias snd-card-10 snd-intel8x0
alias snd-slot-10 snd-intel8x0
alias snd-card-11 snd-ice1724
alias snd-slot-11 snd-ice1724
alias snd-card-12 snd-emu10k1
alias snd-slot-12 snd-emu10k1
alias snd-card-13 snd-emu10k1
alias snd-slot-13 snd-emu10k1
alias snd-card-15 snd-usb-audio
alias snd-slot-15 snd-usb-audio

#
options   snd-intel8x0 index=10
options snd-ice1724 index=11
options   snd-emu10k1 index=12 vid="0x1102" pid="0x0004"
options   snd-emu10k1 index=13 vid="0x1102" pid="0x0002"
options snd-usb-audio index=15 id="USB20Camera"

# END

в таком виде карты с индексом 12 и 13 исчезают
Что делать?
мне необходимо чтобы в параметре идентификации звуковой карты hw:x  не менялся
« Последнее редактирование: 18.04.2012 10:53:56 от sagax »

Оффлайн dubrsl

  • alt linux team
  • ***
  • Сообщений: 238
[root@dubrline ~]# modinfo snd-emu10k1
filename:       /lib/modules/2.6.32-ovz-el-alt60/kernel/sound/pci/emu10k1/snd-emu10k1.ko
license:        GPL
description:    EMU10K1
author:         Jaroslav Kysela <perex@perex.cz>
firmware:       emu/emu1010_notebook.fw
firmware:       emu/emu0404.fw
firmware:       emu/micro_dock.fw
firmware:       emu/emu1010b.fw
firmware:       emu/audio_dock.fw
firmware:       emu/hana.fw
srcversion:     FE93FA7631ADBF23CF5DC5B
alias:          pci:v00001102d00000008sv*sd*bc*sc*i*
alias:          pci:v00001102d00000004sv*sd*bc*sc*i*
alias:          pci:v00001102d00000002sv*sd*bc*sc*i*
depends:        snd-pcm,snd-ac97-codec,snd-util-mem,snd,snd-page-alloc,snd-rawmidi,snd-timer,snd-hwdep,snd-seq-device
vermagic:       2.6.32-ovz-el-alt60 SMP mod_unload modversions 686
parm:           index:Index value for the EMU10K1 soundcard. (array of int)
parm:           id:ID string for the EMU10K1 soundcard. (array of charp)
parm:           enable:Enable the EMU10K1 soundcard. (array of bool)
parm:           extin:Available external inputs for FX8010. Zero=default. (array of int)
parm:           extout:Available external outputs for FX8010. Zero=default. (array of int)
parm:           seq_ports:Allocated sequencer ports for internal synthesizer. (array of int)
parm:           max_synth_voices:Maximum number of voices for WaveTable. (array of int)
parm:           max_buffer_size:Maximum sample buffer size in MB. (array of int)
parm:           enable_ir:Enable IR. (array of bool)
parm:           subsystem:Force card subsystem model. (array of uint)

Тут видно что таких параметров (vid и pid)  нет. Есть id. Его обычно смотрят с помощью lspci -nn.
Например
[root@dubrline ~]# lspci -nn -d 8086:293e
00:1b.0 Audio device [0403]: Intel Corporation 82801I (ICH9 Family) HD Audio Controller [8086:293e] (rev 03)
WBR,
Slava

Оффлайн sagax

  • Начинающий
  • *
  • Сообщений: 4
нет, ID звуковой карты можно посмотреть в
cat /etc/proc/asound/cards

но и за этот материал спасибо, узнать что умеет собственно сам загружаемый модуль было очень полезно, спасибо!

Оффлайн gvy

  • alt linux team
  • ***
  • Сообщений: 1 008
    • Альт на Эльбрусе
    • Email
--
Michael Shigorin | ALT Linux Team | ANNA-News | Сделано у нас | altlinux.org/эльбрус