LINUX.ORG.RU
ФорумAdmin

Программа автоматического определения профилей для PulseAudio

 


0

3

Для иксов есть класная прога autorandr, которая сама определяет какие моники подключены и какой профиль подтянуть при разной комбинации.

У меня на ноуте 3 разных аудио карты (девайса).

  • интегрированная
  • внешняя через usb
  • bluetooth наушники

Я хочу настроить приоритетность карт, к примеру, если подключен bluetooth, то выводить звук на него, все остальное отключить, если внешняя и блютуза нету, то только на внешнюю, ну и т.д.. Т.е. чтоб были профили и их автоопределение как в autorandr. Т.е. при подключении девайся автонастройка профиля. Есть ли такая програмулина для пульсы?

★★

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

autorandr xfce

Спасибо за информацию об autorandr! Отличная штука, уже месяц использую в Xubuntu, благодаря вам.

А по PulseAudio мне вам помочь нечем.

LeNiN ★★
()

ты бы написал используешь какое DE или нет. В моем случае plasma-pa вроде норм разруливает между встроенными динамиками, наушниками и доком. Хотя может просто везет.

anonymous
()

Конкретно твой конфиг можно накостылить (у меня один в один такой же). Но готового решения нет, нужно именно править конфиги.

  • Ставим usb звуковуху синком по умолчанию(любой pactl так умеет)
  • Врубаем модуль switch-on-connect для блютус.
  • Возможно ещё немножечко пердолимся по форумам и арчевики.
  • Наслаждаемся глючной работой модулей…
pon4ik ★★★★★
()

Кстати да, по той же ссылке на экзамплы - есть описание как повесить действие на подключение/отключение девайса. В любом случае много ручных телодвижений при том и вне pulseaudio. Интересно как там firewire поживает…

pon4ik ★★★★★
()
Ответ на: autorandr xfce от LeNiN

Использую KDE полностью со всеми зависимостями с kde-applications-meta . Особенно бесит, когда выключаю один моник через hdmi - профиль определяет, что исчезла звуковая карта в монике и переключает профиль с наушников в что-то другое (хотя моник при как аутпут не стоял)

deathangel908 ★★
() автор топика
23 октября 2019 г.
Ответ на: комментарий от pon4ik

А как в udev найти как стригерить какой-то ивент? начинаю с dmesg:

3091.814253] input: Creative Technology Ltd SB Omni Surround 5.1 Consumer Control as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.1/1-2.1:1.4/0003:041E:322C.0052/input/input188

Дальше мониторю udev на какие ивенты тригерятся

sudo udevadm monitor --environment --udev

Дальше смотрю какие аттрибуты есть

udevadm info --attribute-walk --path "devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.1"

Создаю /etc/udev/rules.d/52-sbomni.rules:

SUBSYSTEM=="usb" ATTRS{product}=="SB Omni Surround 5.1" ACTION=="add" RUN="/tmp/lol.sh" ENV{DEVTYPE}=="usb_device"
SUBSYSTEM=="input" ATTRS{product}=="SB Omni Surround 5.1" ACTION=="remove" RUN="/tmp/lol.sh"

Но remove тригерится 2 раза. Я конечно могу начать перебором фильтровать все атрибуты, но у меня usb сгорит до того момента, как я пойму, что мне именно задать.

Как мне понять какие аттрибуты стригерили мой remove? Здесь мой лог

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

SUBSYSTEM==«input» ATTRS{product}==«SB Omni Surround 5.1» ACTION==«remove» RUN=«/tmp/lol.sh»

ACTION==«remove», SUBSYSTEM==«usb», ATTR{idProduct}==«322c», RUN=«/tmp/lol.sh»

Порядок важен, и заключительное действие RUN= в конце.

irton ★★★★★
()
Ответ на: комментарий от deathangel908

Абсолютно без понятия. На эту тему лучше отдельный пост в admin создать.

pon4ik ★★★★★
()

Как так получилось, что искоробочное поведение module-switch-on-connect тебя не устроило? Как часто ты втыкаешь звуковуху и тебе нужно, чтобы звук на неё не переключался?

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

Ну bluetooth уши держат ток часов 5, так что довольно таки часто. При подключении ушей, у них выбирается корректный профиль, но они стоят после звуковой карты, и у нее стоит Output, выходит, что звук играет с внешней звуковухи, и с наушников не играет вообще. Вот что происходит после подключения. При отключении, профиль SbOmni должен меняться на output вместо off - чего тоже не происходит.

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

Ага понял, у тебя при отключении устройства remove срабатывает для нескольких подустройств т.е. Убирается card, потом еще что-то и еще, но это все имеет idproduct одинаковый. Надо выбрать дополнительно к idproduct характеристику которая есть только у card например и добавить в правило

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

Как это сделать? Я пол часа втыкал и вытыкать usb звуковуху, мне задолбалось. Должен же быть какой-то алгоритм. Просто udev monitor не показывает аттрибуты к примеру, при каждом remove. Также если ли какой-то способ посмотреть какое правило вызвало мой скрипт?

deathangel908 ★★
() автор топика
Ответ на: комментарий от deathangel908

Как не показывает, показывает. Смотри там в логе где action=remove и ниже все атрибуты перечисляет для устройства которому remove делается.

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

Ну отлично, откуда мне знать что на этот remove был вызван мой скрипт?

Не сильно вижу закономерность между

ACTION==«remove», SUBSYSTEM==«usb», ATTR{idProduct}==«322c», RUN=«/tmp/lol.sh»

И около 10и таких логов при извлечении устройства. Особенно, учитывая, что скрипт срабатывает 4 раза а не 10. Не понятно, какие здесь аттрибута затригерили его и т.п.

UDEV  [107524.277713] remove   /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.1 (usb)
ACTION=remove
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.1
SUBSYSTEM=usb
DEVNAME=/dev/bus/usb/001/089
DEVTYPE=usb_device
PRODUCT=41e/322c/100
TYPE=0/0/0
BUSNUM=001
DEVNUM=089
SEQNUM=9695
USEC_INITIALIZED=107494321711
adb_user=yes
ID_PATH=pci-0000:00:14.0-usb-0:2.1
ID_PATH_TAG=pci-0000_00_14_0-usb-0_2_1
ID_FOR_SEAT=usb-pci-0000_00_14_0-usb-0_2_1
MAJOR=189
MINOR=88
DEVLINKS=/dev/android
TAGS=:seat:uaccess:

deathangel908 ★★
() автор топика

Хм. Проблема, в принципе, понятна, но поскольку нет универсального решения, то и костылить придётся мастырить на скриптах. А в таком случае и посоветовать, в принципе, нечего. pacmd в руки и пошёл свой идеальный мир строить.

Лично мне гораздо проще в кдешном миксере один раз вручную проставить выходы нужным приложениям, и теперь всё само переключается куда надо. Например, подключил усбшную звуковуху, появилась в микшере, я нужные приложения на неё покидал, подключил наушники - и уже на них покидал. В результате когда я работаю через звуковуху, или через наушники - система помнит какие проги куда. При чём, если подключить усб - файрфокс прыгает в него, а стоит подключить наушники, то туда. А плеер так и оставил в усб основным. Как-то так. И мне даже пофиг кто этим рулит, пульса, кде, или ещё глубже. И я доволен.

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

Ну я так и делал, уже месяца 3 подряд, теперь просто надоело, легче один раз убить пару часов, чем каждый раз по пол минуты на это тратить. Я вообще изначально думал, что есть какая-то прога для этого, неужели никто до этого не встречался с такой проблемой? Как вообще switch-on-connect должен работать? Я что-то не вижу в нем никакой пользы из-за того, что есть приоритетность девайсов (хз как ее изменить) на новоподключенный модуль просто ничего не выводится

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

При подключении должно играть в то, что подключилось, при отключении - предыдущее. У тебя загружен module-switch-on-connect или нет? Если да, то это баг в pulseaudio, надо репортить. Если нет - то это баг в дистрибутиве, ящитаю, надо репортить.

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

Не всем нужна столь прямолинейная логика.

pon4ik ★★★★★
()
Ответ на: комментарий от t184256

Я не нашел как проверить, `man pactl` ниче не показывает. В конфиге он висит.

: grep module-switch-on-connect /etc/pulse/default.pa
load-module module-switch-on-connect

deathangel908 ★★
() автор топика
5 января 2020 г.

Как временное решение установил paprefs виртуальный девайс, который выводит звук на все системы сразу.

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