www-data 사용자로부터 블루투스 스피커에 접근할 수 없습니다

www-data 사용자로부터 블루투스 스피커에 접근할 수 없습니다

Raspberry Pi 4에 호스팅된 웹 서버의 블루투스 스피커에서 오디오 파일을 실행하려고 합니다.

저는 이 pulseaudio-module-bluetooth모듈과 함께 PulseAudio를 사용합니다.

해당 계정을 통해 블루투스 스피커에서 음악을 재생할 수 있지만 사용자 계정(웹 서버에서 사용하는 계정)으로는 작동 pi하지 않습니다 .www-data

두 계정 모두에서 PulseAudio 장치를 나열할 때 표시되는 내용은 다음과 같습니다.

여기에 이미지 설명을 입력하세요. (블루투스 장치는 pi 계정에는 표시되지만 www-data 계정에는 표시되지 않습니다)

문제를 조사할 때 일부 모듈이 계정에 대해 로드되었지만 계정 pi에 대해서는 로드되지 않은 것을 발견했습니다 www-data.

여기에 이미지 설명을 입력하세요.

수동으로 로드하려고 시도했지만 다음 오류가 발생합니다.

raspberrypi pulseaudio[384]: E: [pulseaudio] module.c: Module "module-bluez5-discover" should be loaded once at most. Refusing to load.
raspberrypi pulseaudio[384]: E: [pulseaudio] module.c: Failed to load module "module-bluetooth-discover" (argument: ""): initialization failed.

모듈이 이미 pi 계정에 로드되어 있으므로 이는 의미가 있습니다.

시스템에서 실행되는 PulseAudio 서비스 인스턴스가 하나만 있기 때문에 로드된 모듈이 어떻게 다른지 이해가 되지 않습니다. 그렇죠?

어쨌든 모듈의 이러한 차이점은 내 질문과 관련이 없을 수도 있지만 언급하는 것이 유용하다고 생각합니다.


서비스 구성은 다음과 같습니다.

[Unit]
Description=PulseAudio Daemon

[Install]
WantedBy=multi-user.target

[Service]
Type=simple
PrivateTmp=true
ExecStart=/usr/bin/pulseaudio --system --realtime --disallow-exit --no-cpu-limit

이 문제를 해결하기 위해 내가 한 일은 다음과 같습니다.

  • www-data다음 그룹 에 추가했습니다 : audio, bluetoothpulsepulse-access
  • $HOME폴더 를 정의 하고 www-data폴더를 폴더에 /home/pi/.config/pulse복사했습니다 .www-data $HOME

그것을 작동시킬 아이디어가 있습니까?

감사해요

답변1

내 생각에 가장 큰 문제는 두 사용자 모두 사운드 카드/사운드 카드 드라이버를 제어하려고 한다는 것입니다. 이는 기본 PulseAudio 서비스가 단순히 기본 데몬 생성을 시도하기 때문입니다.

내 이전 의견에 따르면 Arch Linux 위키에는 다음과 같은 기사가 있습니다.여러 사용자가 동시에 PulseAudio를 사용할 수 있도록 허용.

위 예의 목표는 한 사용자가 다른 PA 사용자가 연결할 수 있는 마스터 데몬을 생성하여 마스터 세션을 공유하도록 하는 것입니다. 이렇게 보면 스피커가 있는 음악 스튜디오를 소유한 사람이 있고, 스피커를 통해 음악을 재생하기 위해 스튜디오를 임대하는 사람이 있습니다. 하지만 누군가는 설정을 제어해야 합니다. PA는 꽤 많은 클라이언트를 처리할 수 있으며, TCP/UDP 기반일 수도 있고 여러 Raspberry Pi에서 Sonos 설정 역할을 할 수도 있습니다.

이 다중 테넌트 문제를 해결하려면 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일반적으로 누구나 쓸 수 있습니다. 이는 너무 많은 양일 수 있으며, 이 경우 두 명의 사용자만 액세스할 수 있는 위치로 소켓을 이동합니다.

관련 정보