Не удается получить доступ к Bluetooth-динамику от пользователя данных www -

Когда вы используете здесь документы -, вы должны помнить о разнице при цитировании или не цитировании токена EOF. Без кавычек любая подстановка команд будет выполняться в основной оболочке, а не в Docker. Сравните эти два:

$ cat <<EOF
$(echo ok)
EOF

ok

И:

$ cat <<"EOF"
$(echo ok)
EOF

$(echo ok)

Поэтому, если вы хотите передавать команды, включая подстановку команд, в Docker, токен следует заключать в кавычки.

Кстати,

  1. Кстати, почему вы используете подоболочку для sockperf?
  2. Метки устарели, а новый синтаксис — $().
1
06.03.2021, 21:29
1 ответ

Я полагаю, что основная проблема заключается в том, что оба пользователя пытаются получить контроль над звуковой картой/звуковым драйвером. Это связано с тем, что служба PulseAudio по умолчанию просто пытается создать главный демон.

Согласно моему предыдущему комментарию, в вики Arch Linux есть хорошая статья Разрешение нескольким пользователям одновременно использовать PulseAudio .

Цель вышеприведенного примера состоит в том, чтобы один пользователь создал основной демон, к которому подключались другие пользователи PA, таким образом разделяя один мастер-сеанс. Посмотрите на это так: у вас есть один человек, владеющий музыкальной студией с динамиками -, а другие арендуют ее для воспроизведения музыки через эти динамики. Но кто-то должен контролировать установку. PA может обрабатывать довольно много клиентов, а также может быть основан на TCP/UDP и действовать как настройка Sonos для нескольких Raspberry Pi;)

Чтобы решить эту -проблему нескольких арендаторов,создайте конфигурацию импульса для пользователя pi:(Пропустите, если у вас уже есть default.paв~/.config/pulse/)

sudo cp /etc/pulse/default.pa  ~/.config/pulse/default.pa
sudo chown pi:pi ~/.config/pulse/default.pa

Измените конфигурацию piимпульса ~/.config/pulse/default.pa, добавив следующее в конец конфигурации:

load-module module-native-protocol-unix auth-anonymous=1 socket=/tmp/pulse-socket

В домашнем каталоге www-dataсоздайте/отредактируйте ~/.config/pulse/client.confи добавьте следующее:

default-server = unix:/tmp/pulse-socket

Это дает указание piсоздать сокет PulseAudio на /tmp/pulse-socketи, в свою очередь, указывает www-dataподключиться к этому сокету, а не создавать новый.

Имейте в виду, что сокет должен быть доступен обоим пользователям, и в вашем случае он находится под /tmp, который обычно -доступен для записи во всем мире. Это может быть слишком много, и в этом случае переместите сокет туда, где только два пользователя имеют доступ.

1
18.03.2021, 22:26

Теги

Похожие вопросы