LinuxForum.Fans
Тема

помогите с настройкой alsa

Автор: v4567 11 сообщений 5805 просмотров
#373312

Драйверы alsa включены в ядро монолитно, причём все, из-за того что изначально не известно что за звукавуха будет. Само ядро скомпилено с поддержкой модулей. На системе иксов и графики нет. Есть фреймбуфер и он работает нормально. При загрузке ядра они инициализируются нормально:

text
ALSA device list:
 #0: Dummy 1
 #1: Loopback 1
 #2: Virtual MIDI Card 1
 #3: MTPAV on parallel port at 0x378
 #4: MPU-401 UART at 0x330, irq 10
 #5: Intel 82801BA-ICH2 with ALC200,200P at irq 5

Получается что реальный драйвер:

text
#5: Intel 82801BA-ICH2 with ALC200,200P at irq 5

Вот вывод команды hwinfo --sound

text
16: PCI 1f.5: 0401 Multimedia audio controller
  [Created at pci.318]
  Unique ID: W60f.nGIWnWXS6V3
  SysFS ID: /devices/pci0000:00/0000:00:1f.5
  SysFS BusID: 0000:00:1f.5
  Hardware Class: sound
  Model: "Intel 82801BA/BAM AC'97 Audio Controller"
  Vendor: pci 0x8086 "Intel Corporation"
  Device: pci 0x2445 "82801BA/BAM AC'97 Audio Controller"
  SubVendor: pci 0x4005 "Avance Logic Inc."
  SubDevice: pci 0x22dd
  Revision: 0x05
  Driver: "snd_intel8x0"
  Driver Modules: "snd_intel8x0"
  I/O Ports: 0xb800-0xb8ff (rw)
  I/O Ports: 0xbc00-0xbc3f (rw)
  IRQ: 5 (no events)
  Module Alias: "pci:v00008086d00002445sv00004005sd000022DDbc04sc01i00"
  Config Status: cfg=new, avail=yes, need=no, active=unknown

Если я не ошибаюсь то с ядром и инициализацией звуковухи всё нормально.........???????


Собраны из исходников такие пакеты:
alsa-lib-1.0.27.2
alsa-utils-1.0.27.2
pulseaudio-1.1

Всё собралось без ошибок и нормально установилось. Одно замечание когда собирал эти пакеты то загруженное ядро было без поддержки alsa, это уже потом после того как я собрал эти пакеты я перекомпилировал ядро с включённой alsa.
Вот выводы некоторых команд:

text
cat /proc/asound/cards
 0 [Dummy          ]: Dummy - Dummy
                      Dummy 1
 1 [Loopback       ]: Loopback - Loopback
                      Loopback 1
 2 [VirMIDI        ]: VirMIDI - VirMIDI
                      Virtual MIDI Card 1
 3 [port           ]: MTPAV - MTPAV on parallel port
                      MTPAV on parallel port at 0x378
 4 [UART           ]: MPU-401 UART - MPU-401 UART
                      MPU-401 UART at 0x330, irq 10
 5 [I82801BAICH2   ]: ICH - Intel 82801BA-ICH2
                      Intel 82801BA-ICH2 with ALC200,200P at irq 5
text
cat /proc/asound/version
Advanced Linux Sound Architecture Driver Version k3.13.5.
cat /proc/asound/oss/sndstat
Sound Driver:3.8.1a-980706 (ALSA emulation code)
Kernel: Linux server.ua 3.13.5 #1 SMP Wed Mar 12 21:09:05 EET 2014 i686
Config options: 0

Installed drivers: Type 10: ALSA emulation

Card config: Dummy 1 Loopback 1 Virtual MIDI Card 1 MTPAV on parallel port at 0x378 MPU-401 UART at 0x330, irq 10 Intel 82801BA-ICH2 with ALC200,200P at irq 5

Audio devices: 0: Dummy PCM (DUPLEX) 1: Loopback PCM (DUPLEX) 5: Intel 82801BA-ICH2 (DUPLEX)

Synth devices: NOT ENABLED IN CONFIG

Midi devices: 2: Virtual Raw MIDI 3: MTP AV MIDI 4: MPU-401 UART MIDI

Timers: 31: system timer

Mixers: 0: Dummy Mixer 1: Loopback Mixer 2: mixer20 3: mixer30 4: mixer40 5: Realtek ALC200,200P rev 0

Теперь о проблемах, при выполнении команды: alsamixer выдаёт вот что:

text
 ALSA lib control.c:843:(snd_ctl_open_conf) Invalid type for CTL default definition 

cannot open mixer: Недопустимый аргумент

При выполнении команды: alsactl init выдаёт вот что:

text
 ALSA lib conf.c:4706:(snd_config_expand) Load defaults error: File exists 
 ALSA lib control.c:953:(snd_ctl_open_noupdate) Invalid CTL hw:0 

Я так понял что надо принудительно прописать устройство вместо hw:0 прописать hw:5 но что то перепробовал варианты и ничего не получается. Пожалуйста помогите. Прошу строго не ругать.

#373316

1. Зачем ядро собрано монолитно-то? Почему не модулями?
2.

text
# lspci -k | grep -i -A2 audio

на всякий случай покажите.
3.

text
aplay -l
aplay -L

в студию.
4. pulseaudio не нужен, это другой сервер звука.
5. man asound.conf, asoundrc.
И да, зачем из исходников-то собирать, когда, во-первых, можно пакет готовый поставить, во-вторых, ALSA и так работает?

#373322

Вот выводы команд:

text
lspci -k | grep -i -A2 audio
00:1f.5 Multimedia audio controller: Intel Corporation 82801BA/BAM AC'97 Audio Controller (rev 05)
        Subsystem: Avance Logic Inc. Device 22dd
        Kernel driver in use: snd_intel8x0
text
aplay -l
**** List of PLAYBACK Hardware Devices ****
ALSA lib conf.c:4706:(snd_config_expand) Load defaults error: Файл существует
ALSA lib control.c:953:(snd_ctl_open_noupdate) Invalid CTL hw:0
aplay: device_list:277: control open (0): Файл существует
ALSA lib conf.c:4706:(snd_config_expand) Load defaults error: Файл существует
ALSA lib control.c:953:(snd_ctl_open_noupdate) Invalid CTL hw:1
aplay: device_list:277: control open (1): Файл существует
ALSA lib conf.c:4706:(snd_config_expand) Load defaults error: Файл существует
ALSA lib control.c:953:(snd_ctl_open_noupdate) Invalid CTL hw:2
aplay: device_list:277: control open (2): Файл существует
ALSA lib conf.c:4706:(snd_config_expand) Load defaults error: Файл существует
ALSA lib control.c:953:(snd_ctl_open_noupdate) Invalid CTL hw:3
aplay: device_list:277: control open (3): Файл существует
ALSA lib conf.c:4706:(snd_config_expand) Load defaults error: Файл существует
ALSA lib control.c:953:(snd_ctl_open_noupdate) Invalid CTL hw:4
aplay: device_list:277: control open (4): Файл существует
ALSA lib conf.c:4706:(snd_config_expand) Load defaults error: Файл существует
ALSA lib control.c:953:(snd_ctl_open_noupdate) Invalid CTL hw:5
aplay: device_list:277: control open (5): Файл существует
text
aplay -L
ALSA lib conf.c:4706:(snd_config_expand) Load defaults error: Файл существует
ALSA lib control.c:953:(snd_ctl_open_noupdate) Invalid CTL hw:0
Ошибка сегментирования

Вот это да!!!!!!!

Получается что скомпилилось с ошибкой..........!?!?!?!?!?!



Пользуйтесь тегами BBCode. yars.

#373323

Скомпилилось с ошибкой - это так?

#373362

Хотелось бы знать, на какой системе и в каком дистрибутиве вы пытаетесь настроить звук? LFS? Вообще, если вы не уверены, какой именно драйвер нужен для того или иного устройства, имеет смысл, как я говорил, собирать драйверы модулями, а не монолитно в ядро вкомпиливать.
У вас загружен snd_intel8x0, он обеспечивает работу интегрированного звука на некоторых материнских платах с чипсетами Intel. А что говорит

text
# lsmod | grep snd

?

Получается что скомпилилось с ошибкой
Нет, тут другое. Подробности должны быть в выводе
text
# dmesg | tail

Помимо вышеназванного модуля нужны еще несколько модулей snd_*. Ну и при помощи ldd проверьте доступность зависимостей. И, думаю, тут может быть дело в неправильных правилах udev.

#373425

Система lfs версия 7.0

[

text
# lsmod | grep snd

ничего не вывел

в dmesg по поводу alsa вот что:

text
ALSA device list:
 #0: Dummy 1
 #1: Loopback 1
 #2: Virtual MIDI Card 1
 #3: MTPAV on parallel port at 0x378
 #4: MPU-401 UART at 0x330, irq 10
 #5: Intel 82801BA-ICH2 with ALC200,200P at irq 5

Вот зависимые библиотеки:

Показать
text

ldd `type -p alsamixer`
        linux-gate.so.1 =>  (0xb776e000)
        libformw.so.5 => /usr/lib/libformw.so.5 (0xb7755000)
        libmenuw.so.5 => /usr/lib/libmenuw.so.5 (0xb774d000)
        libpanelw.so.5 => /usr/lib/libpanelw.so.5 (0xb7749000)
        libncursesw.so.5 => /lib/libncursesw.so.5 (0xb76f3000)
        libasound.so.2 => /usr/lib/libasound.so.2 (0xb75e5000)
        libm.so.6 => /lib/libm.so.6 (0xb75b9000)
        libdl.so.2 => /lib/libdl.so.2 (0xb75b4000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb7599000)
        libc.so.6 => /lib/libc.so.6 (0xb7408000)
        librt.so.1 => /lib/librt.so.1 (0xb73ff000)
        /lib/ld-linux.so.2 (0xb776f000)

ldd `type -p aserver` linux-gate.so.1 => (0xb7790000) libasound.so.2 => /usr/lib/libasound.so.2 (0xb7679000) libm.so.6 => /lib/libm.so.6 (0xb764e000) libdl.so.2 => /lib/libdl.so.2 (0xb7649000) libpthread.so.0 => /lib/libpthread.so.0 (0xb762e000) librt.so.1 => /lib/librt.so.1 (0xb7625000) libc.so.6 => /lib/libc.so.6 (0xb7493000) /lib/ld-linux.so.2 (0xb7791000)

ldd `type -p alsactl` linux-gate.so.1 => (0xb775c000) libasound.so.2 => /usr/lib/libasound.so.2 (0xb7645000) libm.so.6 => /lib/libm.so.6 (0xb761a000) libdl.so.2 => /lib/libdl.so.2 (0xb7615000) libpthread.so.0 => /lib/libpthread.so.0 (0xb75fa000) libc.so.6 => /lib/libc.so.6 (0xb7469000) librt.so.1 => /lib/librt.so.1 (0xb745f000) /lib/ld-linux.so.2 (0xb775d000)

ldd `type -p aplay` linux-gate.so.1 => (0xb772c000) librt.so.1 => /lib/librt.so.1 (0xb771a000) libasound.so.2 => /usr/lib/libasound.so.2 (0xb760c000) libm.so.6 => /lib/libm.so.6 (0xb75e1000) libdl.so.2 => /lib/libdl.so.2 (0xb75dc000) libpthread.so.0 => /lib/libpthread.so.0 (0xb75c1000) libc.so.6 => /lib/libc.so.6 (0xb742f000) /lib/ld-linux.so.2 (0xb772d000)

Вот файл /etc/udev/rules.d/90-alsa-restore.rules

text

ACTION=="add", SUBSYSTEM=="sound", KERNEL=="controlC*", KERNELS!="card*", GOTO="alsa_restore_go"
GOTO="alsa_restore_end"

LABEL="alsa_restore_go" TEST!="/etc/alsa/state-daemon.conf", RUN+="/usr/sbin/alsactl restore $attr{number}" TEST=="/etc/alsa/state-daemon.conf", RUN+="/usr/sbin/alsactl nrestore $attr{number}"

LABEL="alsa_restore_end"

#373427

Вот весь dmesg:

http://pastebin.com/gnL2LNJQ

В конце загрузка модулей с ошибками, это загрузка модулей dahdi - они просто были скомпилены под другое ядро, ч другим ядром загружаются нормально.

#373428

А если просто [console=root]lsmod[/console] ? Хотя, если у вас ядро монолитное, то модулей и не будет, советую пересобрать его с целью localmodconfig.

#373429

Как я писал, ядро собрано с поддержкой модулей и два модуля в нём есть, этот код появляяется только когда включаешь поддержку модулей, почему так не знаю.

text

lsmod
Module                  Size  Used by
hysdn                  57240  0
diva_mnt              240521  0

Смысл делать alsa драйвера модулями, я думаю с ядром всё в порядке.

#373432
v4567 написал:

В конце загрузка модулей с ошибками, это загрузка модулей dahdi - они просто были скомпилены под другое ядро, ч другим ядром загружаются нормально.

На этот счет, думаю, помочь должна команда

text
# depmod -a

а по звуку идеи пока кончились...

Смысл делать alsa драйвера модулями, я думаю с ядром всё в порядке.

Ну, может, и в порядке. Ок, ваше право, хотя мне непонятна идея ядра монструозных размеров, в котором вкомпилено все кроме пары модулей.

#374773

Разобрался с alsa Может кому пригодится.
Проблема наверное была в том что не был установлен пакет alsa-plugins-1.0.27
в общем удалили пакеты alsa-lib, alsa-utils и pulseaudio всё почистил, потом заново установил в таком порядке:

text

alsa-lib-1.0.27.2
alsa-firmware-1.0.27
alsa-plugins-1.0.27
alsa-oss-1.0.25
alsa-utils-1.0.27.2
pyalsa-1.0.26 даже библиотеку для питона поставил.

Потом в конфиге /etc/asound.conf прописал

text

pcm.!default
{
 type hw
 card I82801BAICH2
}

ctl.!default { type hw card I82801BAICH2 }

pcm.!default { type plug slave.pcm "dmixer" }

pcm.dsp0 { type plug slave.pcm "dmixer" }

pcm.dmixer { type dmix ipc_key 1024 slave { pcm "hw:5,0" period_time 0 period_size 1024 buffer_size 8192 rate 44100 } bindings { 0 0 1 1 } }

ctl.mixer0 { type hw card 5 }

Выполнил следующие команды:
alsactl init 5 - 5 это моя аудио карточка, именно надо было init 5, просто init не работало.
alsamixer
alsactl store

Потом при загрузке системы выполняю alsactl restore и всё динамики и микрофон работает.
Только не понятно, судя по данным:

text

cat /proc/asound/cards
 0 [Dummy          ]: Dummy - Dummy
                      Dummy 1
 1 [Loopback       ]: Loopback - Loopback
                      Loopback 1
 2 [VirMIDI        ]: VirMIDI - VirMIDI
                      Virtual MIDI Card 1
 3 [port           ]: MTPAV - MTPAV on parallel port
                      MTPAV on parallel port at 0x378
 4 [UART           ]: MPU-401 UART - MPU-401 UART
                      MPU-401 UART at 0x330, irq 10
 5 [I82801BAICH2   ]: ICH - Intel 82801BA-ICH2
                      Intel 82801BA-ICH2 with ALC200,200P at irq 5
text

cat /proc/asound/devices | grep capture
  3: [ 0- 0]: digital audio capture
  6: [ 1- 1]: digital audio capture
  8: [ 1- 0]: digital audio capture
 19: [ 5- 1]: digital audio capture
 21: [ 5- 0]: digital audio capture
text

cat /proc/asound/pcm
00-00: Dummy PCM : Dummy PCM : playback 8 : capture 8
01-00: Loopback PCM : Loopback PCM : playback 8 : capture 8
01-01: Loopback PCM : Loopback PCM : playback 8 : capture 8
05-00: Intel ICH : Intel 82801BA-ICH2 : playback 1 : capture 1
05-01: Intel ICH - MIC ADC : Intel 82801BA-ICH2 - MIC ADC : capture 1

Получается что динамики hw:5,0 а микрофон hw:5,1 Но на самом деле и динамики и микрофон hw:5,0
Команда: arecord -D hw:5,1 -f dat /tmp/mic.wav не работает пишет ошибка ввода/вывода, а вот команда:
arecord -D hw:5,0 -f dat /tmp/mic.wav работает и пишет с микрофона в файд /tmp/mic.wav
Вот такие вот дела..........

Войдите или зарегистрируйтесь, чтобы ответить.