LINUX.ORG.RU

Puseaudio в chroot на android

 , , ,


0

1

Хочу пробрасывать звук по сети на смартфон. Пока что самым перспективным вариантом выглядит pulseaudio, благо linux deploy на смарте всё равно установлен. Казалось бы, запустить в нём пульс и радоваться? Ан нет. Dbus в чруте системный, прав на доступ к шине нет. Без этого пульс запускаться не хочет. Можно ли это как-то обойти?

Попробовал поднять dbus от пользователя по инструкции из арчвики. Не вышло, при попытке сделать systemctl --user status dbus.service выдаёт Failed to get D-Bus connection: Операция не позволена.

★★★★★

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

Это у тебя вообще systemctl до systemd --user достучаться не может. Что за дистрибутив развёрнут на смарте?

Попробуй

  1. DBUS_SESSION_BUS_ADDRESS= systemctl --user status dbus (это принудительный фоллбэк на приватный systemd'шный сокет), или
  2. DBUS_SESSION_BUS_ADDRESS=/run/user/$UID/bus systemctl --user status dbus (это принудительное использование per-user шины, которую ты пытаешься поднять).

А ещё systemctl status user@$UID — запущен ли у тебя юзерский инстанс как таковой?

Но, вообще говоря, пульсе необязательно нужен dbus. По-моему. По крайней мере, я могу её запустить как DBUS_SESSION_BUS_ADDRESS= DISPLAY= pulseaudio, и оно работает (хоть и плюётся двумя варнингами при старте).

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

Что за дистрибутив развёрнут на смарте?

Арч.

DBUS_SESSION_BUS_ADDRESS= systemctl --user status dbus

DBUS_SESSION_BUS_ADDRESS=/run/user/$UID/bus systemctl --user status dbus

systemctl status user@$UID

На всё ответ один - «Операция не позволена». Похоже, у меня тупо systemctl не работает. :-)

Но, вообще говоря, пульсе необязательно нужен dbus. По-моему. По крайней мере, я могу её запустить как DBUS_SESSION_BUS_ADDRESS= DISPLAY= pulseaudio, и оно работает (хоть и плюётся двумя варнингами при старте).

Оно, конечно, запустилось, но ни pamixer, ни cmus к нему подключиться не могут.

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

Мда. Обработка ошибок в systemd сделана хорошо, а вот вывод информации об ошибках — мягко говоря, не очень...

А ты можешь подключиться к системной шине dbus хоть чем-нибудь? И существует ли /run/systemd/private?

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

А ты можешь подключиться к системной шине dbus хоть чем-нибудь?

Похоже, нет. Как точно проверить?

И существует ли /run/systemd/private?

Неа.

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

Похоже, нет. Как точно проверить?

busctl --system
dbus-send --system --dest=org.freedesktop.DBus --type=method_call --print-reply / org.freedesktop.DBus.Introspectable.Ping

Неа.

А директория /run/systemd? Она существует/непуста? Если нет, то можно считать, что systemd у тебя в системе нет :)

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

busctl --system

NAME                                PID PROCESS         USER             CONNECTION    UNIT                      SESSIO
:1.1                                  - -               -                -             -                         -     
org.freedesktop.DBus                  - -               -                -             -                         -     
org.freedesktop.PolicyKit1            - -               -                (activatable) -                         -     
org.freedesktop.RealtimeKit1          - -               -                (activatable) -                         -     
org.freedesktop.hostname1             - -               -                (activatable) -                         -     
org.freedesktop.import1               - -               -                (activatable) -                         -     
org.freedesktop.locale1               - -               -                (activatable) -                         -     
org.freedesktop.login1                - -               -                (activatable) -                         -     
org.freedesktop.machine1              - -               -                (activatable) -                         -     
org.freedesktop.network1              - -               -                (activatable) -                         -     
org.freedesktop.resolve1              - -               -                (activatable) -                         -     
org.freedesktop.systemd1              - -               -                (activatable) -                         -     
org.freedesktop.timedate1             - -               -                (activatable) -                         -     
lines 1-14/14 (END)
dbus-send --system --dest=org.freedesktop.DBus --type=method_call --print-reply / org.freedesktop.DBus.Introspectable.Ping

Error org.freedesktop.DBus.Error.UnknownMethod: org.freedesktop.DBus does not understand message Ping

А директория /run/systemd? Она существует/непуста? Если нет, то можно считать, что systemd у тебя в системе нет :)

Фейл. Нет такой директории. А разве systemd обязателен для dbus?

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

Нет, необязателен, конечно. Просто ты пытался запустить dbus-демон из-под systemd, а тут выясняется, что у тебя и systemd-то нет.

Тогда запускай dbus-daemon руками (с флагом --print-address) и экспортируй то, что он напечатает, в переменную DBUS_SESSION_BUS_ADDRESS. И уже из этой оболочки (как дочерние процессы оной) запускай пульсу и все приложения. Или передавай каждому процессу DBUS_SESSION_BUS_ADDRESS отдельно.

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

Тогда запускай dbus-daemon руками (с флагом --print-address) и экспортируй то, что он напечатает, в переменную DBUS_SESSION_BUS_ADDRESS.

# dbus-daemon --config-file=/etc/dbus-1/session.conf --print-address
unix:abstract=/tmp/dbus-AFvngmEPAi,guid=dde926949d7a302c1040f92755a94d3d

Терминал не отдаёт. В другом терминале:

# export DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-AFvngmEPAi,guid=dde926949d7a302c1040f92755a94d3d
# pulseaudio --start --log-target=newfile:pulse.log
# cat pulse.log
E: [pulseaudio] client-conf-x11.c: Вызов xcb_connection_has_error() вернул «true».

Axon ★★★★★
() автор топика
Последнее исправление: Axon (всего исправлений: 1)
Ответ на: комментарий от Axon
$ export DISPLAY= DBUS_SESSION_BUS_ADDRESS=

$ export DBUS_SESSION_BUS_ADDRESS=$(dbus-daemon --session --print-address --fork)

$ echo $DBUS_SESSION_BUS_ADDRESS 
unix:abstract=/tmp/dbus-ThkkPjthAF,guid=e83171ebc7510725c44f6aa855a9539f

$ pulseaudio --daemonize=true --log-target=newfile:pulse.log

$ cat pulse.log
W: [pulseaudio] pid.c: Stale PID file, overwriting.

$ pacmd stat
Memory blocks currently allocated: 1, size: 63,9 КиБ.
Memory blocks allocated during the whole lifetime: 56, size: 2,9 МиБ.
Memory blocks imported from other processes: 0, size: 0 Б.
Memory blocks exported to other processes: 0, size: 0 Б.
Total sample cache size: 0 Б.
Default sample spec: s16le 2-канальный 4410
Default channel map: front-left,front-right
Default sink name: alsa_output.pci-0000_00_1b.0.analog-stereo
Default source name: alsa_input.pci-0000_00_1b.0.analog-stereo
Memory blocks of type POOL: 1 allocated/18 accumulated.
Memory blocks of type POOL_EXTERNAL: 0 allocated/0 accumulated.
Memory blocks of type APPENDED: 0 allocated/0 accumulated.
Memory blocks of type USER: 0 allocated/0 accumulated.
Memory blocks of type FIXED: 0 allocated/38 accumulated.
Memory blocks of type IMPORTED: 0 allocated/0 accumulated.

$DISPLAY сброшена? dbus-daemon запускаешь с флагом --session?

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

Хм. Перезапустил систему, повторил эти команды, вроде, сработало. Но при этом:

# mpg123 song.mp3 
xcb_connection_has_error() returned true

[module.c:129] error: Failed to open module sdl: file not found

[module.c:129] error: Failed to open module jack: file not found
xcb_connection_has_error() returned true
xcb_connection_has_error() returned true
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
        version 1.22.1; written and copyright by Michael Hipp and others
        free software (LGPL) without any warranty but with best wishes

Playing MPEG stream 1 of 1: song.mp3 ...
xcb_connection_has_error() returned true

[pulse.c:84] error: Failed to open pulse audio output: Connection terminated

[audio.c:643] error: failed to open audio device

[mpg123.c:547] error: failed to reset audio device: Socket operation on non-socket

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

Круто. Проверил - пульс почему-то не запущен. Поднял обратно, убедился, что процесс висит, запускаю плеер - опять фейл. И пульс опять лежит. ЧЗХ?

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

Запустил пульс без daemonize=true, так и есть, процесс молча валится при попытке что-то проиграть.

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

Bluetooth...

anonymous
()

Очень прошу, написать сюда результат изысканий каким бы он ни был. Спасибо.

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