사운드 출력 장치를 Bluetooth 헤드셋으로 자동 전환하고 연결 시 A2DP 프로필을 강제로 사용합니다.

사운드 출력 장치를 Bluetooth 헤드셋으로 자동 전환하고 연결 시 A2DP 프로필을 강제로 사용합니다.

여기에는 민트 17 + MATE가 사용되었습니다. 내 블루투스 헤드셋(Plantronics Backbeat Go2)이 내 시스템에 제대로 연결되지만 이 작업을 수행하려면 몇 가지 수동 단계를 수행해야 합니다. 이 작업을 자동화하고 싶습니다.

  1. 재부팅할 때마다 장치를 완전히 연결하려면 터미널에서 pactl load-module module-bluetooth-discover를 실행해야 합니다. 시작 시 실행하기 위해 쉘 스크립트에 넣으려고 했지만 주사위는 없습니다.
  2. 내 헤드셋은 문제 없이 자동으로 연결되지만 A2DP 대신 항상 "Phone Duplex" 또는 심지어 "Off"로 기본 설정됩니다. A2DP를 강제하기 위해 몇 가지 다른 전략을 시도했지만 모두 실패했습니다.
  3. BT 헤드폰을 기본 출력 장치로 강제 설정합니다. 여기에서도 몇 가지 전략을 시도했습니다... 불행하게도 pacmd의 인덱스는 헤드셋을 연결할 때마다 변경되는 것 같아서 PA conf 파일 set-default-sink에서 이 방법으로 기본값을 강제로 적용할 수 없습니다. 그리고 나열된 이름을 사용하는 것도 작동하지 않는 것 같습니다. 헤드폰이 없으면 스피커로 전환되고, 헤드폰이 연결되어 있으면 다시 전환되지 않습니다.

이러한 문제를 해결하는 방법에 대한 제안을 보내주셔서 감사합니다!

답변1

#3에 관한 내 해결책은 다음과 같습니다.

  • 다른 모든 장치를 병합하는 통합 장치 추가(모든 장치에 동시에 출력)
  • 기본 출력 장치로 사용
  • BT 헤드폰을 제외한 다른 모든 물리적 출력을 음소거합니다.

이것의 장점은 모든 프로그램이 연결 여부에 관계없이 BT 헤드셋으로 출력을 보낼 수 있다는 것입니다. 그런 다음 헤드셋이 연결되면 소리 수신이 시작됩니다.

이렇게 하는 경우 통합 출력을 제어하려면 볼륨 컨트롤만 사용하여 flat-volumes = no설정 해야 합니다 ./etc/pulse/daemon.conf

답변2

udev 규칙을 사용하여 연결 시 프로필을 전환하는 솔루션(또는 다른 pulseaudio 명령 실행):

ACTION=="add", SUBSYSTEM=="input", ATTR{phys}=="<your headset addr>", RUN+="/usr/bin/su - <your username> -c '/usr/bin/pactl set-card-profile <your card id> a2dp_sink'"

다른 구성 파일 옵션에는 "handsfree_head_unit", "headset_head_unit" 및 "off"가 포함됩니다.

다음을 통해 카드 ID를 얻을 수 있습니다.

pactl list cards short

답변3

첫 번째 문제는 Pulse Audio가 부팅 후 Bluetooth 모듈을 언로드하기 때문에 발생하므로 시작 스크립트에 넣어도 몇 초 후에 여전히 언로드됩니다.

  • 플랜 A

    예를 들어 스크립트에 시작 지연을 추가하면 됩니다.

    sleep 10 && pactl load-module module-bluetooth-discover
    
  • 플랜 B(권장)

    1. 블루투스/펄스 오디오 플러그인을 비활성화합니다.
    2. Bluetooth 아이콘을 마우스 오른쪽 버튼으로 클릭하고 플러그인을 선택한 다음 Pulse Audio 플러그인을 선택 취소하세요.
    3. 재시작.

죄송합니다. 나머지 두 가지 질문에 대해서는 답변을 드릴 수 없습니다.

관련 정보