LINUX.ORG.RU

Jack, systemd и dbus - помогите скрестить

 , ,


0

2

Ну нету у меня иксов и никогда не будет, ибо мой оранжевый пи лежит возле колонок и ждет, когда ему по сетке пошлют звук (ну так задумывалось) - но как всегда все вышло через ж.

Итак создал юзера jack добавил в группу audio, убедился, что aplay радостно играет песенку через девайс hw:0

А вот теперь задачка натравить на девайс hw:0 джек. Да так, чтобы он запускался с помощью systemd как сервис и ждал звука с основного пк.

Ну проблем тут много, даже не знаю с какой начать. Наверное с той, чтобы научить systemd запускать jack, затем запускать jack_load netmanager, чтобы этот jack_load netmanager сумел увидеть основной сервер jack, затем сумел не повиснуть на 10 сек и вывалиться с ошибками, а таки заработал и начал ожидать подключения клиента.

Юнит jack.service пока такой

[Unit]
Description=JACK
After=sound.target

[Service]
LimitRTPRIO=infinity
LimitMEMLOCK=infinity
User=jack
ExecStart=/usr/bin/jackd -R -P89 -dalsa -dhw:0 -r44100 -p128 -n3

[Install]
WantedBy=multi-user.target
По мне это замечательный юнит, но результат печалит меня :(
Failed to connect to session bus for device reservation Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Oct 19 00:51:43 router jackd[24509]: Audio device hw:0 cannot be acquired...
Oct 19 00:51:43 router jackd[24509]: Cannot initialize driver
Oct 19 00:51:43 router jackd[24509]: JackServer::Open failed with -1
Oct 19 00:51:43 router jackd[24509]: Failed to open server
Oct 19 00:51:43 router systemd[1]: jack.service: main process exited, code=exited, status=255/n/a
Oct 19 00:51:43 router systemd[1]: Unit jack.service entered failed state.
Блин, зачем звуку иксы?.. бред какой то

А если просто под юзером залогиниться и ввести в консоль такое

export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket
а затем запускать из этой же консоли jack, то он стартует, только толку нету, потому что если затем ввести jack_load netmanager, получаем подвисон и отвал с ошибками
Cannot read socket fd = 5 err = Success
Cannot open jack_load client
CheckRes error
JackSocketClientChannel read fail

Правда если натравить jack на dummy, а не на алсу, то jack_load netmanager стартует нормально, но толку нет, потому что dummy - это фейковая пустышка.

Что делать, куда копать?

Наверное я неправильно задал вопрос. Я же знаю, что во всем dbus виноват. Как его натравить на 2 программы, чтобы они друг друга видели? Как это сделать с помощью systemd при загрузке - потом разберемся.

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

Не , ну хочешь jack - понятно . Pulseaudio . Ога . Пш-пш-аудио , как его здесь зовут . На пи не ставил , но по сети работает .

anonymous ()

Начни с того, что удали поцтероподелки. Без пыщ-пыщ-аудио и говноД тебе будет значительно легче.

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

Да мне вообще по барабану что. Просто jack умеет на других платформах представляться аудио карточкой и у него есть функция передачи по сети. А так то да - старая чрезмерно навороченная прога - не люблю такие.

У пульсы тоже есть функция передачи по сети, но на первый взгляд у jack все круче используется udp, а не tcp как в пульсе. принимающее устройство может быть мастером, а передающее слейвом (как и должно быть). пульса очень любит пересинхронизации, когда данные должны передаваться и играться как есть.

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

Начни с того, что удали поцтероподелки. Без пыщ-пыщ-аудио и говноД тебе будет значительно легче.

Да пофиг на них, можно и без них. системД и так нет, а скрипт с тем, что мне нужно можно запускать и по другому. Главное, чтобы хоть как нибудь заработало.

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