1P by neo 2023-11-25 | favorite | 댓글 1개

블루투스 스택 수정을 통한 오디오 품질 개선

  • 무선 헤드폰 사용자들은 표준 블루투스 SBC 코덱을 사용할 때 낮은 음질과 고음 부족을 경험함.
  • aptX나 LDAC 코덱 지원 기기를 구매하는 것이 일반적인 해결책이지만, 이러한 코덱들은 라이선스 비용이 발생하여 기기가 더 비쌈.
  • 현재 블루투스 스택과 헤드폰의 인위적인 제한으로 인해 SBC의 낮은 품질이 발생하며, 이는 소프트웨어 수정만으로 모든 기기에서 우회 가능함.

SBC 코덱

  • SBC는 연결 설정 단계에서 협상되는 다양한 매개변수를 가짐: 오디오 채널 유형 및 수, 주파수 대역 수, 패킷당 오디오 블록 수, 양자화 비트 할당 알고리즘, 양자화 과정에서 사용되는 최대 및 최소 비트 풀.
  • 현재 블루투스 스택은 일반적으로 Joint Stereo, 8 대역, 16 블록, Loudness, 비트풀 2..53의 옵션 세트를 협상함.
  • 비트풀 값은 인코딩 비트레이트를 변경하는 매개변수로, 높을수록 비트레이트와 품질이 향상됨.

블루투스 스택 수정

  • 모든 A2DP 호환 블루투스 스택은 Dual Channel 모드를 지원해야 하지만, 이 모드를 강제로 사용할 방법이 없음.
  • Android 8.1과 9에 대한 패치를 만들어 개발자 메뉴에 Dual Channel 모드를 추가하고, Bluetooth 장치 설정에 "HD Audio" 코덱으로 표시됨.
  • 이 패치는 LineageOS, Resurrection Remix, crDroid와 같은 대체 펌웨어에 통합됨.

551과 452 kbps의 유래

  • 블루투스 시간 분할 기술은 대용량 고정 크기 패킷을 효율적으로 전송하기 위해 설계됨.
  • 데이터 전송은 슬롯을 통해 이루어지며, 5개 슬롯이 한 번의 전송에서 전송될 수 있는 최대 수임.
  • 5개 슬롯에서 2Mbps 속도로 최대 679바이트, 3Mbps 속도로 최대 1021바이트를 전송할 수 있음.

이 모든 것이 왜 필요한가?

  • aptX의 음질에 대한 일반적인 믿음과 달리, 경우에 따라 SBC가 표준 328k 비트레이트보다 나쁜 오디오 품질을 생산할 수 있음.
  • SBC는 동적으로 주파수 대역에 대한 양자화 비트를 할당하며, aptX는 일정한 비트 수로 주파수 대역을 양자화함.
  • 고비트레이트 SBC를 사용하면 대부분의 경우 aptX보다 우수한 음질을 얻을 수 있으며, EDR 3 Mb/s 지원 헤드폰에서는 aptX HD에 매우 근접한 음질을 제공함.

더 나아갈 수 있을까?

  • Android 패치셋은 EDR 2 mbps 기기의 비트레이트를 452 kbps에서 595 kbps로 더 높일 수 있는 추가 옵션을 제공함.
  • persist.bluetooth.sbc_hd_higher_bitrate 변수를 1로 설정하여 더 높은 비트레이트를 활성화할 수 있음.

기기와의 호환성

  • SBC Dual Channel은 거의 모든 헤드폰, 스피커, 차량 헤드유닛에서 지원됨.
  • 이 모드로 인해 문제가 발생하는 기기는 매우 드물지만, 호환성에 대한 자세한 정보는 4pda와 xda-developers에서 찾을 수 있음.

음질 비교

  • 실시간으로 브라우저에서 SBC(뿐만 아니라 aptX 및 aptX HD)로 오디오를 인코딩하는 웹 서비스를 만들어 다양한 SBC 프로필과 코덱의 음질을 비교할 수 있음.

안드로이드 개발자에게 연락하기

  • Google의 블루투스 스택 개발자들에게 AOSP에 패치를 포함시킬 것을 요청했지만, 아직 답변을 받지 못함.
  • Gerrit 코드 리뷰 시스템에서도 개발에 관련된 사람들로부터 어떠한 코멘트도 받지 못함.

결론

  • LineageOS, Resurrection Remix, crDroid 펌웨어 사용자들은 Bluetooth 장치 설정에서 체크박스를 선택하여 블루투스 오디오 품질을 향상시킬 수 있음.
  • 리눅스 사용자들도 Pali Rohár의 패치를 설치하여 더 높은 SBC 비트레이트를 얻을 수 있음.

GN⁺의 의견

이 글에서 가장 중요한 것은 기존의 블루투스 오디오 품질을 소프트웨어 수정만으로 개선할 수 있다는 점이다. 이는 비용이 많이 드는 새로운 코덱을 지원하는 기기를 구매하지 않고도 기존 기기에서 높은 품질의 오디오를 경험할 수 있게 해주는 매력적인 솔루션이다. 특히, 오픈 소스 펌웨어를 사용하는 사용자들에게 이러한 수정이 가능하다는 것은 기술에 대한 접근성을 높이고, 사용자가 자신의 기기를 더욱 제어할 수 있게 해주는 흥미로운 발전이다.

Hacker News 의견
  • SBC의 넓은 지원과 자연스러운 확장성에 대한 긍정적인 평가

    SBC가 널리 지원되는 것은 훌륭하며, 기존 표준의 자연스러운 확장으로 보임. 개인적으로 SBC 대비 LDAC이나 AAC의 문제가 아니라, HFP의 품질이 떨어진다는 점에 문제가 있음. 마이크가 켜지는 순간 90년대로 돌아간 듯한 느낌을 받음. 양방향 블루투스 오디오의 품질 개선을 바라는 마음.

  • 안드로이드 블루투스 스택 내 버그에 대한 심층 분석과 하드웨어의 변이성 지적

    이 기사는 블루투스 일반에 대한 것이 아니라 안드로이드 블루투스 스택 내 버그에 대한 심층 분석임. 작성자가 전혀 언급하지 않은 것은 사용되는 하드웨어가 매우 다양하다는 점임. 안드로이드는 수많은 블루투스 칩셋 위에서 작동함. 따라서 한 하드웨어에서 패치가 작동하는 것처럼 보여도 다른 안드로이드 폰에서는 작동하지 않을 수 있음. 또한, 장치가 현재 수행하고 있는 다른 작업에 따라 달라질 수 있음. 예를 들어, BT+Wifi 칩셋을 공유하고 있고, 와이파이를 통해 비디오를 스트리밍하면서 헤드폰으로 오디오를 스트리밍하는 경우, 장치는 와이파이 사용과 BT에 기반하여 자원을 할당해야 함. 따라서 로컬에 저장된 오디오와 스트림을 통한 오디오는 반드시 동일한 CODEC 매개변수를 얻는 것은 아님. 이 주제에는 저자가 고려하지 않은 미묘한 차이가 많으므로 읽는 것에 주의해야 함.

  • Windows에서 'Alternative A2DP Driver'를 통한 SBC 매개변수 조정 및 AAC, aptX, LDAC 사용 경험 공유

    "Alternative A2DP Driver"는 Windows에서 이 기능을 제공함. SBC 매개변수를 사용자 정의하고 AAC, aptX(시도해보지는 않음)를 사용할 수 있음. 경험상 잘 작동하며, 소니 XM4와 함께 LDAC을 사용할 수 있음. 시험판이지만 저렴함. 고품질 모드에서 블루투스 범위가 감소하는 것을 보고 실제로 코덱(또는 적어도 무언가)이 변경되고 있음을 확인함. 위의 링크는 제휴 관계가 없음.

  • Linux에서 SBC XQ와 mSBC를 통한 더 높은 비트레이트 오디오 및 헤드셋 오디오 품질 향상 가능성 언급

    리눅스에서는 "SBC XQ"라는 것을 통해 더 높은 비트레이트의 SBC 오디오를 활성화할 수 있음. 마찬가지로 "mSBC"를 사용하여 더 높은 품질의 헤드셋 오디오를 사용할 수 있음(물론 SBC나 APTX에 비해 여전히 낮은 품질임). 많은 헤드폰이 더 나은 오디오 코덱을 지원하지만, 지원이 보편적이지 않고 양방향 오디오 개선도 확실하지 않음. 구글에서 이런 기능이나 비슷한 것을 이미 통합하기를 바람.

  • 블루투스 오디오 프로파일에서 미리 긴 버퍼링을 허용하는 기능의 필요성 제기

    블루투스 오디오 프로파일에서 미리 긴 시간 동안 버퍼링을 할 수 있는 기능의 발명을 바람. 예를 들어, 1분짜리 노래를 재생할 때, 전체 노래가 버퍼링되어야 함. '일시 정지'를 클릭하거나 볼륨을 변경할 경우 버퍼는 버려져야 함. 하지만 긴 버퍼는 휴대폰의 전력 절약과 불안정한 라디오 연결성을 견딜 수 있게 해줌.

  • LineageOS에서의 높은 품질 오디오 전송 기능 사용 경험 및 사용자 경험 개선 필요성 언급

    LineageOS에서 이 기능을 사용해본 경험이 있으며, 매우 만족함. 3P 코덱을 지원하지 않는 차량 스테레오와 같은 장치로 더 높은 품질의 오디오를 전송할 수 있는 기능이 매우 유용함. 또한 헤드폰에서도 큰 이점을 얻을 수 있음. 사용자 경험은 다소 개선이 필요하지만, 기능 자체는 훌륭함.

  • 제목에 연도(2019) 추가의 필요성 및 PulseAudio와 PipeWire에서의 구현 사실 언급

    제목에 (2019)를 추가하는 것이 좋을 것임. "모든 현재 블루투스 스택"에 대한 언급이 있지만, 이러한 기능들은 이미 PulseAudio와 PipeWire에서 구현되어 있음.

  • Dual Channel과 Joint Stereo 간의 비트레이트 차이가 실제 오디오 품질에 미치는 영향에 대한 회의적인 견해

    551 kbps의 Dual Channel이 328 kbps의 Joint Stereo보다 눈에 띄게 더 나은 품질을 제공한다는 것에 대해 회의적임. 대부분의 음악에서는 단지 더 많은 비트를 중복 정보 인코딩에 사용하는 것이 아닌지 의문임.

  • MacOS에서 HFP 품질 개선 방법에 대한 질문 및 Linux에서 mSBC를 사용한 경험 공유

    MacOS에서 Bluetooth를 사용하여 HFP의 품질을 개선할 수 있는 방법을 아는 사람이 있는지 질문함. 리눅스에서 mSBC를 사용하여 꽤 좋은 품질을 경험했지만, MacOS에서는 완전히 열악하고 전화선/모노 품질로 전환됨. Darwin에서 제대로 작동하게 만드는 해킹이 이미 있는지 궁금함.

  • SBC 사용 여부를 몰랐던 경험과 해당 게시물에 대한 감사 표현

    Lineage 18-1을 사용하면서 SBC 기능을 사용하고 있었는지 몰랐음. 이 게시물을 통해 SBC 기능을 사용하고 있었다는 것을 알게 됨. "magic -"