저는 Linux를 처음 사용하고 Bluetooth 스크립팅을 처음 사용합니다. 지금까지 내가 발견 한 것은 다음과 같습니다.
- Bluez가 기본 BT 스택입니다.
- BluezTools는 Bluez와보다 쉽게 상호 작용하는 데 사용할 수있는 유틸리티 세트입니다.
- DBus는 Bluez가 하드웨어와 직접 상호 작용하면서 연결하는 인터페이스입니다.
- PulseAudio는 시스템에서 오디오를 생성하는 서브 시스템입니다.
이것은 말이됩니다. BT 헤드폰의 특정 프로파일에 직접 연결할 수있는 명령을 실행할 수있는 BlueTooth 헤드폰 세트 (페어링 및 트러스트 후)가 있다고 가정하겠습니다.
내가 생각한 기술 경로는 다음과 같습니다.
- 헤드폰을 켭니다.
- bt-audio -c 와 같은 BluezTools 명령을 실행하십시오.
- 기기가 서비스에 연결될 때까지 기다립니다.
- PulseAudio는 이제 새로운 출력 장치를 선택해야합니다
- 다른 명령을 실행하여 오디오를 새로운 출력 오디오 (BT 헤드폰)로 변경하십시오.
- 원활한 청취 경험을 즐기십시오.
이 모든 것이 논리적으로 보이지만 실제 구현은 이와 같지 않으며 WHY를 찾고 있으므로 문제를 더 잘 이해하고 해결할 수 있습니다.
이것은 실제로 일어나는 일입니다.
- 헤드폰을 켭니다.
- bt-audio -c 와 같은 BluezTools 명령을 실행하십시오.
- 기기가 서비스에 연결될 때까지 기다립니다.
- PulseAudio는 이제 새로운 출력 장치를 선택해야합니다
- PulseAudio 명령을 실행하여 오디오 프로파일을 전화 품질에서 고 충실도로 변경하십시오.
이것에 대해 조금 확장하겠습니다. 블루투스 헤드셋은 2 가지 품질 모드 (전화 및 충실도)를 제공합니다. 음악 감상에는 1 만 적합합니다.
BT 헤드폰이 각 품질 모드를 서비스로 제공 할 것으로 예상됩니다. 맞습니까? 이 가정은 틀릴 수 있지만 다음과 같은 것을 기대합니다.
bt-audio -c highFidelity 프로필
또는
BT- 오디오 -changeProfile highFidelityProfile
대신 Bluez는 장치에 대한 RAW 연결을 처리하는 것으로 보이며 거기에서 다음을 실행해야합니다 : pacmd set-card-profile $ INDEX a2dp
이것은 근본적으로 잘못된 것 같습니다. 오디오 서브 시스템의 품질 관리가 왜 펄스 나 알사 또는 다른 사운드 서브 시스템에 대해 다른 구현이 필요한가?
내가 무엇을 놓치고 있습니까? Bluez / BluezTools 등을 사용하여 특정 프로파일에 직접 연결할 수없는 이유는 무엇입니까?