LibrePods: 해방된 AirPods
3 hours ago
1
- LibrePods는 AirPods와 Apple 기기 사이의 독점 프로토콜을 구현해, Apple 기기 전용 AirPods 기능을 Linux와 Android 같은 비 Apple 플랫폼에서 사용할 수 있게 하는 프로젝트임
- 지원 기능은 플랫폼별로 다르며, 청취 모드 변경, 착용 감지, 배터리 상태, 대화 인지, 자동 연결은 Linux와 Android에서 구현되어 잘 동작함
- 일부 기능은 VendorID spoofing이 필요하거나 아직 계획 단계이며, Head Gestures는 Android만 지원하고 Linux에서는 구현하지 않을 예정임
- Find My, 공간 오디오, 심박수 모니터링, 고품질 양방향 오디오는 아직 미완성이거나 탐색 중이며, Android에서는 일부 기능이 root를 필요로 할 가능성이 있음
- Android 앱과 Linux 재작성 일부에는 AI 생성 코드가 포함되어 있고, 프로젝트는 GPLv3 이상으로 배포되지만 LibrePods 이름·로고·브랜딩 사용 권리는 별도로 제한됨
LibrePods가 하는 일
- LibrePods는 AirPods와 Apple 기기 사이에서 데이터를 교환하는 독점 프로토콜을 구현함
- 이 구현으로 비 Apple 플랫폼에서도 다음 같은 AirPods 기능을 사용할 수 있음
- 노이즈 제어 모드 변경
- 빠른 착용 감지
- 정확한 배터리 상태
- Head Gestures
- Conversational Awareness
- 기타 AirPods 설정 기능
- 설치 문서는 플랫폼별로 분리되어 있음
플랫폼별 기능 지원
-
Linux와 Android 모두 구현되어 잘 동작하는 기능
- 청취 모드 변경
- 착용 감지
- 배터리 상태
- AirPods 이름 변경
- Android에서는 이름 변경 후 다시 페어링해야 할 수 있음
- Conversational Awareness
- AirPods 자동 연결
-
Android만 지원되는 기능
- Head Gestures
- 기타 접근성 설정
- Press speed
- Press and Hold duration
- Noise Cancellation with single AirPod
- Volume control on swipe
- Volume swipe speed
- 기타 일반 설정
- Press and Hold로 청취 모드 순환 또는 디지털 어시스턴트 호출
- 통화 제어 설정
- Personalized volume
- Microphone side
- 잠들 때 미디어 일시정지
- Off listening mode 활성화
- VendorID spoofing이 필요한 기능
- Loud Sound Reduction
- Hearing Aid
- Transparency Mode customization
- Multi-device connectivity
- 상태 표기 기준은 다음과 같음
- ✅: 구현되어 잘 동작함
- ⚪: VendorID spoofing 필요, 위험 부담은 사용자가 감수해야 함
- 🔴: 아직 미구현, 계획됨
- ⛔: 구현하지 않을 예정
- ❓: 알 수 없음
VendorID spoofing과 추가 기능
- VendorID spoofing은 DID Profile의 VendorID를 Apple의 값으로 바꿔 여러 특수 기능에 접근하는 방식임
- Linux에서는 /etc/bluetooth/main.conf의 DeviceID를 수정해 사용할 수 있음
- 설정 줄: DeviceID = bluetooth:004C:0000:0000
- Android에서는 Xposed가 사용 가능하고 LibrePods 모듈이 활성화된 경우 앱 설정에서 act as Apple device를 켤 수 있음
- Multi-device Connectivity는 최대 2대 기기를 AirPods에 동시에 연결해 오디오와 제어를 모두 사용할 수 있게 함
- Android가 AirPods를 가져가면 Apple 기기에는 Apple 기기처럼 "Move to iPhone" 알림이 표시됨
- 다른 기기가 가져가면 Android에도 팝업이 표시됨
- 접근성 및 보청기 관련 설정도 구성 가능함
- Transparency Mode의 amplification, balance, tone, conversation boost, ambient noise reduction
- Loud Sound Reduction
- Hearing Aid 커스터마이징과 audiogram 결과 설정
- 앱은 더 높은 정밀도가 필요하다는 이유로 청력 테스트 기능은 제공하지 않음
아직 미완성인 기능과 범위 제한
- Find My 관련 기능은 계획되어 있지만 추가 리버스 엔지니어링이 필요하고 Android에서는 root가 필요할 수 있음
- AirPods를 Find My 네트워크에 추가
- 충전 케이스에서 소리 재생
- 두고 왔을 때 알림
- 케이스 충전 소리 토글
- Spatial Audio는 현재 Android에 head tracking 정보를 제공해 OS가 HRTF를 수행하게 하지 않음
- 완전히 탐색되지 않았고 root가 필요할 수 있음
- 스테레오 사운드를 공간화하는 기능은 프로젝트 범위 밖이며 제공되지 않을 예정임
- 많은 OEM이 자체 구현을 갖고 있음
- Heart Rate Monitoring은 AirPods Pro 3 이후 모델을 대상으로 작업 중임
- 구현되더라도 Android에서는 root가 필요할 가능성이 큼
- High quality two-way audio는 iOS/iPadOS에서 AirPods가 마이크 오디오 스트림을 AACP로 보내는 동안 A2DP를 계속 사용할 수 있는 기능과 관련됨
- Android에서는 오디오와 더 깊은 통합이 필요해 root가 필요할 가능성이 큼
프로토콜, 리버스 엔지니어링, AI 사용
- 프로토콜 정보는 Nojus의 Wireshark dissector 플러그인 pabloaul/apple-wireshark를 참고할 수 있음
- LibrePods 구현 대부분에는 해당 dissector가 사용되지 않았고, 프로젝트 작성자가 dissector 제작 전에 프로토콜을 직접 리버스 엔지니어링함
- 다만 고품질 양방향 오디오와 공간 오디오 같은 향후 기능에는 해당 리버스 엔지니어링 작업이 필요했다고 밝힘
- Android 앱에서 완전히 AI 생성된 부분
- Head Gestures 전체 로직과 UI
- r2와 Xposed 모듈을 이용한 offset setup 양쪽 버전
- Troubleshooter와 LogCollector
- Android 앱의 나머지 주요 부분은 수동으로 작성됨
- background service
- AACP와 ATT Bluetooth manager 클래스
- 전체 UI와 작은 컴포넌트들
- Linux 재작성에서는 aacp.rs와 att.rs가 Kotlin에서 Rust로 AI 번역됨
- media_controller.rs 일부, 주로 Pulse 통합도 AI 생성됨
- 일부 UI 컴포넌트는 Apache License 2.0의 Kyant0's demo app에서 가져옴
대체 앱, 라이선스, 상표 고지
- 다른 플랫폼이나 조건에서 사용할 수 있는 대체 앱이 제시됨
- CAPod: Android용 AirPods companion 앱, Android 16 QPR3 이하이고 root가 없는 경우 사용 권장
- MagicPods for Steam Deck: website
- MagicPods: Windows용 LibrePods를 찾는 경우의 대안
- LibrePods는 GPLv3 이상 조건의 자유 소프트웨어로 배포됨
- GPL은 LibrePods 이름, 로고, 브랜딩 사용 권리를 부여하지 않음
- LibrePods 이름과 로고는 공식 프로젝트와의 제휴, 보증, 연관성을 암시하는 방식으로 허가 없이 사용할 수 없음
- Android 앱에 사용된 SF Pro 폰트는 Apple Inc.의 자산이며, 향후 버전에서 오픈 대안으로 교체될 예정임
- AirPods, AirPods Pro, AirPods Max, AirPods 로고는 Apple Inc.의 상표이며 LibrePods 프로젝트는 Apple Inc.와 제휴하거나 보증받지 않음
- librepods.org는 LibrePods 프로젝트의 공식 웹사이트가 아니며, 푸터에서 저작권 주장과 LibrePods 로고 사용으로 공식 웹사이트라고 부정확하게 주장한다고 경고함
-
Homepage
-
Tech blog
- LibrePods: 해방된 AirPods