2P by GN⁺ 1일전 | ★ favorite | 댓글 1개
  • 애플 기기 전용으로 제한된 AirPods의 고급 기능을 안드로이드/리눅스등 비(非)애플 기기에서도 사용할 수 있게 하는 오픈소스 앱
  • 노이즈 제어, 적응형 투명 모드, 자동 귀 감지, 배터리 상태 표시, 헤드 제스처, 대화 인식 등 주요 기능 지원
  • AirPods Pro 2세대와 3세대에서 대부분 기능이 완전 작동하며, 다른 모델은 기본 기능만 지원
  • Android에서는 루팅과 Xposed 모듈이 필요하며, Bluetooth DID 후킹을 통해 애플 기기로 인식시켜 추가 기능 활성화 가능
  • 애플 생태계에 묶이지 않고 AirPods의 프리미엄 기능을 자유롭게 활용할 수 있는 도구

LibrePods 개요

  • LibrePods는 애플 독점 AirPods 기능을 비애플 기기에서 해제해 사용할 수 있게 하는 프로젝트
    • 지원 기능 : 노이즈 제어 모드, 적응형 투명 모드, 귀 감지, 보청기 모드, 배터리 상태 표시
    • 사용자가 지불한 프리미엄 기능을 애플 생태계 외부에서도 활용 가능하게 함

기기 호환성

  • AirPods Pro (2세대) : 완전 지원 및 테스트 완료
  • AirPods Pro (3세대) : 심박수 측정을 제외하고 완전 지원
  • 기타 AirPods 모델: 배터리 상태, 귀 감지 등 기본 기능만 작동 가능
  • 대부분 기능은 모든 AirPods에서 작동 가능하나, 개발자는 AirPods Pro 2세대만 테스트함

주요 기능

  • 노이즈 제어 모드: AirPods을 직접 조작하지 않고도 모드 전환 가능
  • 귀 감지: 착용·탈착 시 음악 재생 자동 제어 및 스피커 전환
  • 배터리 상태 표시: 정확한 배터리 잔량 확인
  • 헤드 제스처: 고개 끄덕임으로 전화 수신
  • 대화 인식: 사용자가 말할 때 자동으로 볼륨 감소
  • 보청기 기능, 투명 모드 사용자 설정, 2대 기기 동시 연결 등 고급 기능 지원
    • 별표(*) 표시된 기능은 Bluetooth DID 후킹 활성화 필요

플랫폼 지원

  • Linux

    • 이전 버전은 기능이 제한적이며, 유지보수자가 작업할 시간이 부족함
    • 새로운 버전이 개발 중이며 관련 PR(#241)이 존재
  • Android

    • 다양한 설정 화면, 알림, 위젯, 접근성 옵션 스크린샷 제공
    • 루팅 및 Xposed 필수, 이는 Android Bluetooth 스택의 버그 때문
      • Google Issue Tracker 링크 제공, 수정 전까지 예외 없음
    • 과거에는 overlayfs 기반 비루팅 방식도 있었으나, 기기별 차이로 인해 중단됨
    • Xposed 사용 시 DID 후킹을 통해 추가 기능 활성화 가능

Bluetooth DID (Device Identification) 후킹

  • 제조사 ID를 Apple로 변경하면 여러 특수 기능 접근 가능
  • 2대 기기 동시 연결 지원: 오디오 및 제어 모두 가능하며, 기기 간 전환 시 알림 표시
  • 접근성 및 보청기 설정: 투명 모드 세부 조정, 대화 증폭, 주변 소음 감소 등 설정 가능
    • 청력 테스트 기능은 포함되지 않으며, 기존 오디오그램 결과를 불러와 사용
  • 기능 활성화를 위해 앱 설정에서 ‘act as Apple Device’ 옵션을 켜야 함

추가 주의사항

  • 최신 AirPods 펌웨어에서는 ‘Off listening mode’ 를 활성화해야 완전한 오프 모드 전환 가능
  • AirPods을 모두 빼면 자동으로 스피커로 전환되지만, Android가 재연결을 시도할 수 있음
    • 앱은 이를 감지해 A2DP 프로필을 자동으로 해제
  • AirPods 이름 변경 시 재페어링 필요, 이는 Android Bluetooth 명명 방식의 한계
  • Android 설정 앱에 AirPods 아이콘과 배터리 상태를 표시하려면 시스템 앱으로 설치해야 함

라이선스

  • LibrePods는 GNU General Public License v3 하에 배포되는 자유 소프트웨어
  • 상업적 보증은 없으며, 모든 상표 및 로고는 각 소유자의 자산임
  • AirPods 이미지, 심볼, SF Pro 폰트는 Apple Inc.의 소유
Hacker News 의견
  • Bluetooth DID(Device Identification) Hook를 살펴보다가, 제조사 ID를 Apple로 바꾸면 여러 특수 기능에 접근할 수 있다는 걸 알게 되었음
    Apple이 이런 식으로 비규제 상태에서 독점 기능을 유지하는 건 규제 기관의 제재를 받아야 한다고 생각함. 사실 AirPods는 다른 기기에도 연결은 잘 되지만, 고급 기능 노출이 제한되어 있음

    • AirPods는 어떤 기기에도 연결은 가능하며, 다른 블루투스 헤드폰과 비슷한 성능을 냄. 다만 일부 전용 드라이버가 필요한 기능은 Apple 기기에서만 작동함
    • 나도 AirPods와 AirPods Pro 여러 버전을 써봤는데, 비Apple 기기 연결은 문제없이 잘 되었음
    • 실제로 Apple은 이미 DMA 관련 재판을 받고 있음. 관련 기사: FSFE 뉴스
    • Bluetooth 표준 기구가 Apple을 제재해서, 상호운용성(interoperability) 을 해치는 행위를 막아야 한다고 생각함
    • 이런 행위는 불법적인 제품 끼워팔기(product tying) 로 보고, FTC나 EU 경쟁위원회에 신고해야 한다고 봄
  • Apple 생태계 밖에서 AirPods를 쓰고 싶을 때 쓸만한 멋진 프로젝트
    다만 Android Bluetooth 구현의 버그 때문에 루팅된 안드로이드 기기와 작은 패치가 필요함
    관련 이슈: Google Issue Tracker

    • 이건 Android의 버그라기보다 AirPods가 Bluetooth 스펙을 위반하고, 표준 요청 전에 특수 핸드셰이크를 요구하기 때문이라고 봄. Android가 이런 비표준 장치를 위해 우회 코드를 넣는 건 비합리적임
    • 오디오 재생 시작부터 헤드셋에서 소리가 나올 때까지의 지연(latency) 이 얼마나 되는지 궁금함. AnkiDroid로 공부할 때 짧은 음성 클립이 많아서, 블루투스 이어폰의 지연이 문제였음. 앱이 짧은 무음 오디오를 미리 재생하는 식으로 해결할 수도 있을 듯함
    • 한 사람이 Apple의 폐쇄 생태계와 Android의 불안정성(jank) 을 동시에 뚫고 이걸 구현했다는 게 놀라움
    • 마지막 두 댓글이 웃김 — “수정 필요함” / “원래 엔지니어들이 해고돼서 그래”
    • 대기업 버그 리포트의 전형적인 사례 같음. 사용자는 문제를 깊게 분석했는데, 회사는 우선순위 낮음으로 처리하고 방치함
  • Apple이 AirPods Pro 3를 iOS 18과 호환 불가로 만든 게 너무 화남
    같은 H2 칩, 같은 iOS 기기인데, 기능을 유지하려면 iOS 26으로 강제 업그레이드해야 했음. Apple 지원팀도 이유를 몰라서 “그냥 잘 될 거예요”만 반복했음

  • Mark Zuckerberg가 인터뷰에서 AirPods의 폐쇄적 페어링 구조를 불공정하다고 언급했음. Meta 제품과의 연동을 위해 돈을 써서라도 해결하길 바람

    • 하지만 문제의 본질은 AirPods의 폐쇄성 자체가 아니라, Apple이 타사 접근을 차단(lock-out) 하는 데 있음. Apple Watch도 마찬가지로, 타사가 iPhone과 동등하게 연동되는 스마트워치를 만들 수 없게 막고 있음
    • Apple의 폐쇄 생태계를 타사가 열어야 할 의무는 없다고 생각함
  • 이런 프로젝트는 멋지지만, 존재해야 한다는 사실 자체가 문제임. Apple은 오픈소스 소프트웨어를 활용하면서도, 자신들의 폐쇄 정책 때문에 더 많은 OSS 우회 프로젝트를 강제함

    • Pixel Buds를 iPhone에서 쓰는 것도 마찬가지임. Apple이나 Google의 잘못이라기보다, 벤더 락인(vendor lock-in) 을 당연시하는 사회 구조의 문제라고 봄. 두 회사가 Bluetooth 확장을 협력해서 진행했다면 모두에게 이득이었을 것임. 하지만 단기 이익 중심의 구조라 이런 변화는 우리 세대에서는 불가능할 듯함
    • AirPods는 Android에서도 오디오 재생은 가능하지만, iOS/macOS의 편의 기능을 쓰려면 루팅과 Bluetooth 스택 패치가 필요함
    • Apple의 폐쇄 생태계가 결과적으로 더 많은 오픈소스를 만들어내는 게 아이러니함
    • 이런 복잡한 과정을 보니, 나는 여전히 유선 이어폰을 고수하길 잘했다고 느낌. REDMAGIC 9S Pro와 Etymōtic ER4XR 조합은 충전도 필요 없고, 분실 걱정도 없고, 스파이 행위도 불가능함. AirPods의 “투명 모드”, “헤드 제스처” 같은 기능은 나에겐 불필요함. 그래도 이런 프로젝트로 비Apple 기기에서도 AirPods가 지원되는 건 반가움
    • Apple이 OSS에 많은 코드를 기여하는 것도 사실임
  • 조절 가능한 투명 모드(tunable transparency) 는 정말 좋은 아이디어라고 생각함
    트롬본을 연주할 때 AirPods Pro는 거의 완벽한 청력 보호 장치처럼 느껴짐. 하지만 주변 소리가 커지면 내 연주 소리가 사라지는 게 아쉬움. 내 악기 소리만 더 들리게 하거나, 노이즈 캔슬링과 투명 모드의 혼합이 가능하면 좋겠음

    • Apple은 접근성 메뉴의 9가지 프리셋 EQ만 제공함. 이 EQ가 오디오 재생과 투명 모드 모두에 적용되므로, 그중 하나가 맞으면 좋겠음
  • Beats 이어폰은 AirPods와 같은 칩셋과 드라이버를 쓰지만, Android와의 호환성이 훨씬 좋았던 걸로 기억함. 지금도 그런지는 모르겠음

  • Pine64 Pine Buds를 플래싱해봤는데, 기본 설정 외에는 소리를 제대로 맞출 수가 없었음. 그래도 UI는 꽤 멋졌음

  • 이런 프로젝트를 보면, 오픈 OS의 장점이 얼마나 큰지 새삼 느껴짐

  • 아버지를 위해 AirPods를 보청기처럼 써보고 싶었지만, iPhone 조작이 어려워서 시도하지 못했음. 이 프로젝트를 이용해 더 단순한 인터페이스로 구현할 방법이 궁금함

    • 보청기 설정은 한 번만 하면 되고, 이후엔 증폭 조절만 스템을 스와이프로 하면 됨. iPhone 없이도 사용 가능함