LINUX.ORG.RU

Перезапуск аудиоприложения по событию udev

 , , ,


0

1

Здравствуйте. Есть у меня USB-звуковуха (Lexicon Alpha, если интересно) и с ней одна проблема: не дружит с суспендом. После выхода из сна приходится передёргивать кабель, чтобы она заработала. Но тут ещё одна проблема: из-за этих манипуляций отваливается регулировка громкости в трее (перестаёт регулировать). Написал я скрипт и правило udev, чтобы это дело починить:

ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1210", ATTR{idProduct}=="000a", RUN+="/home/pcuser/restart_volumeicon.sh"
#!/bin/sh
set -x
xhost local:pcuser
export DISPLAY=:0
export XAUTHORITY=/home/pcuser/.Xauthority
killall volumeicon
sleep 3
/bin/su pcuser -c '/usr/bin/volumeicon'

Всё работает, кроме запуска volumeicon. Думал, может, глюк в самом volumeicon, попробовал volti, он на долю секунды моргает в трее и пропадает. Попробовал вписать в скрипт вызов deadbeef, он запускается, но в настройках вывода нет моей звуковухи (значит, регулировщики не запускались по этой причине). Как это решить? Ну или как избежать перезапуска всех аудиоприложений после передёргивания карты?



Последнее исправление: cetjs2 (всего исправлений: 2)

Есть у меня USB-звуковуха (Lexicon Alpha, если интересно) и с ней одна проблема: не дружит с суспендом.

Лучше копать в эту сторону. Почему же не дружит? Какой дистрибутив и ядро?

Deleted
()
Ответ на: комментарий от Deleted

Дистрибутив Debian Jessie, ядро 3.13.1-pf. Видимо, такова особенность этой карты, она не просыпается и под Win7. И, кстати, в lsusb её тоже нет. Вывод dmesg при подключёнии карты:

[11620.984668] usb 2-1.2: new full-speed USB device number 53 using ehci-pci
[11621.088666] usb 2-1.2: config 1 has an invalid interface number: 4 but max is 3
[11621.088670] usb 2-1.2: config 1 has no interface number 3
[11621.092162] usb 2-1.2: New USB device found, idVendor=1210, idProduct=000a
[11621.092165] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[11621.092167] usb 2-1.2: Product: Lexicon Alpha
[11621.092168] usb 2-1.2: Manufacturer: Lexicon
[11621.102387] 53:1:1: cannot get freq at ep 0x1
[11621.105390] 53:1:2: cannot get freq at ep 0x1
[11621.109140] 53:2:1: cannot get freq at ep 0x82
[11621.112288] 53:2:2: cannot get freq at ep 0x82
[11728.176937] 53:1:1: cannot get freq at ep 0x1

PamidoR
() автор топика
Последнее исправление: PamidoR (всего исправлений: 1)
Ответ на: комментарий от PamidoR

Не думаю, что её можно вылечить программно, я уже смирился с передёргиванием. Так что, наверное, лучше просто понять, как её задействовать в приложениях, запущенных udev'ом.

PamidoR
() автор топика

...пни все это по жесткому в разных состояниях компа udevadm trigger, если заработает, то есть множество вариантов запустить твою звуковуху в разных режимах

Trauka
()
Ответ на: комментарий от PamidoR

Не думаю, что её можно вылечить программно, я уже смирился с передёргиванием. Так что, наверное, лучше просто понять, как её задействовать в приложениях, запущенных udev'ом.

...сам долго парился с похожей проблемой, но анонимус решил ее в раз вот в этой теме...за что ему, еще раз, душевное спасибо.

Trauka
()

Насколько я понял по косвенным признакам, у вас голая ALSA. Так вот, Pulseaudio решит вашу проблему на корню.

Axon ★★★★★
()

Иконка в трее пропадает по одной простой причине: udev прибивает скрипт со всеми потомками как только завершается обработка события. Эта особенность регулярно вызывает проблемы, посмотри, например, эти темы: Fedora 20. Не работает правило udev при подключении/отключении внешнего питания., udev/systemd автоматический бэкап на usb носитель. Почитай man udev (про RUN). Решается через сервис systemd, перезапускающий volumeicon по событию udev.

Небольшое объяснение для хейтеров: udev полностью синхронен, systemd - наоборот, поэтому решение технически оправдано. В тех тредах больше подробностей.

mtk
()

Ещё, помнится, в pm-utils есть фича SUSPEND_MODULES: автоматическая выгрузка проблемных модулей ядра перед суспендом (rmmod) и modprobe после просыпания. Такой вариант должен быть прозрачным для юзерспейса (аудиовыход не должен пропадать).

mtk
()
Ответ на: комментарий от PamidoR

Кстати, volumeicon и у меня часто вылетал (без причины). Если будешь пробовать pulseaudio, рекомендую pasystray вместо volumeicon.

mtk
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.