kmix и hdmi

Решил тут на днях попробовать по hdmi передать звук на ЖК ТВ.
Так вот проблема в том, что kmix отказывается регулировать громкость по hdmi (выбран канал master).
Пробовал в alsamixer - все ползунки - не помогает.
Пробовал phonon-vlc и phonon-mplayer.

Временно решил проблему через pulseaudio… но это не вариант )

Возможно есть у кого то идеи на счет возможной проблемы?..

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC892 Analog [ALC892 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 1: ALC892 Digital [ALC892 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
$ ls -l /dev/snd
drwxr-xr-x  2 root root       60 июня  17 22:23 by-path
crw-rw----+ 1 root audio 116,  9 июня  17 22:23 controlC0
crw-rw----+ 1 root audio 116,  8 июня  17 22:23 hwC0D2
crw-rw----+ 1 root audio 116,  7 июня  17 22:23 hwC0D3
crw-rw----+ 1 root audio 116,  6 июня  17 22:24 pcmC0D0c
crw-rw----+ 1 root audio 116,  5 июня  17 22:24 pcmC0D0p
crw-rw----+ 1 root audio 116,  4 июня  17 22:23 pcmC0D1p
crw-rw----+ 1 root audio 116,  3 июня  17 22:23 pcmC0D2c
crw-rw----+ 1 root audio 116,  2 июня  18 12:16 pcmC0D3p
crw-rw----  1 root audio 116,  1 июня  17 22:23 seq
crw-rw----+ 1 root audio 116, 33 июня  17 22:23 timer
$ lsmod | grep snd
snd_hda_codec_hdmi     23672  1 
snd_hda_codec_realtek    60313  1 
snd_hda_intel          24053  2 
snd_hda_codec          94273  3 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_intel
snd_hwdep               6300  1 snd_hda_codec
snd_pcm                74958  3 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel
snd_page_alloc          7217  2 snd_pcm,snd_hda_intel
snd_timer              18966  1 snd_pcm
snd                    58997  11 snd_hda_codec_realtek,snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_hda_codec,snd_hda_intel
soundcore               5410  1 snd
Спасибо всем за помощь… :)

Для себя нашел одно из возможных решений:

phonon-mplayer + smplayer (в настройках звука для smplayer - выставил alsa)

$ more .mplayer/config 
# Write your default config options here!
heartbeat-cmd="qdbus org.freedesktop.ScreenSaver  /ScreenSaver SimulateUserActivity"
#ao=pulse
#ao=alsa:device=hw=0.3
#mixer-channel=Master
#a52drc=1
#softvol=yes

$ more .asoundrc 
pcm.softvol {
        type softvol
        slave {
                pcm "hdmi"
        }
        control {
                name "Master"
                card 0
        }
}
pcm.!default {
        type plug
        slave.pcm "softvol"
}
В продолжении темы:
Захотелось тут на днях подключить веб-камеру + еще наушники (на передней панеле ПК)
В Кедах использую phonon-mplayer.

Долго курил маны искал конфиги бил в бубен и т.п.
Но так и не нашел толкого объяснения, как заглушить hdmi и заставить идти звук только на наушники в передней панеле компа автоматически при их подключении.
Вручную мутить не очень удобно, хотя работает.
Есть предположение, что на основе событий писать скрипты даже вроде нашел какое событие отвечает за это:
sudo hexdump -C /dev/input/event[b]15[/b]
Без использования (что я там ниже напишу hdmi и т.п. без .asoundrc) только если использовать аналог, все отлично мутится - колонки на наушники, но колонки я выкинул и решил заставить работать hdmi звук на TV.

Пока получилось сделать одновременный вывод звука на hdmi стерео и наушники (видимо и колонки тоже :) )стерео + независимая регулировка hdmi и наушников + возможность hdmi или наушники вручную мутить + регулировка звука в приложениях которые юзают фонон.

Конфиг mplayer - для фононовских приложений.
$ cat .mplayer/config 
# Write your default config options here!
heartbeat-cmd="qdbus org.freedesktop.ScreenSaver  /ScreenSaver SimulateUserActivity"
softvol=yes

Конфиг альсы с использование dmix, multi, softvol и созданием отдельного регулятора для hdmi.
$ cat .asoundrc
pcm.analog-hw {
type plug
  slave.pcm "dmix:0,0"
}
ctl.analog-hw {
  type hw
  card 0
}
pcm.digital-hw {
type plug
  slave.pcm "dmix:0,3"
}
pcm.hdmi_complete {
  type softvol
  slave.pcm digital-hw
  control.name Hdmi
  control.card 0
}
pcm.dmix-analog {
  type dmix
  ipc_key 1234
  slave {
    pcm "analog-hw"
    period_time 0
    period_size 1024
    buffer_size 4096
    rate 48000
  }
}
ctl.dmix-analog {
  type hw
  card 0
}
pcm.dmix-digital {
  type dmix
  ipc_key 1235
  slave {
    pcm "hdmi_complete"
    period_time 0
    period_size 1024
    buffer_size 4096
    rate 48000
  }
}
ctl.dmix-digital {
  type hw
  card 0
}
pcm.!default {
  type plug
  slave {
    pcm multi
    rate 48000
  }
  ttable.0.0 1.0
  ttable.1.1 1.0
  ttable.0.2 1.0
  ttable.1.3 1.0
}
ctl.!default {
  type hw
  card 0
}
pcm.multi {
  type multi
  slaves.a.pcm "analog-hw"
  slaves.a.channels 2
  slaves.b.pcm "hdmi_complete"
  slaves.b.channels 2
  bindings.0.slave a
  bindings.0.channel 0
  bindings.1.slave a
  bindings.1.channel 1
  bindings.2.slave b
  bindings.2.channel 0
  bindings.3.slave b
  bindings.3.channel 1
}
ctl.multi {
  type hw
  card 0

Чтоб карточки не скакали после перезагрузок (usb от веб камеры).
$ cat /etc/modprobe.d/sound.conf
options snd_hda_intel index=0
options snd_usb_audio index=1

Убрал в Kmix - восстанавливать громкость при входе в систему.

А вообще вот думаю стоит ли так мучится, чтобы отказаться от pulseaudio
С ним в принципе по умолчанию все нормально работает… :)

Кто то, что то может подсказать или сталкивался с такой проблемой?
Сделал вот такой велосипед…, но вот цикл бесконечный напрягает, может, кто лучше подскажет, по acpi состояние наушников не отслеживается…
#!/bin/bash
oldstatus="no string"
while [ 1 ]; do
    status=$(grep 'Pin-ctls' '/proc/asound/card0/codec#2' | grep '0x00' | wc -l)
 if [ "$status" != "$oldstatus" ]; then
        if [ "$status" == 5 ]; then
           amixer sset 'IEC958',1  mute -q
           oldstatus="$status"
        else
           amixer sset 'IEC958',1  unmute -q
           oldstatus="$status"
        fi
    fi
sleep 3
done

Все больше склоняюсь после этого к пульсе… :)
 
Зарегистрироваться или войдите чтобы оставить сообщение.