업데이트로 돌아가기
New releaseSep 1, 2026

librepods nightly-53679cc

Apple 생태계로부터 해방된 AirPods

공유

[!WARNING] librepods.org는 LibrePods 프로젝트의 공식 웹사이트가 아닙니다. 이 사이트는 저작권을 주장하고 푸터에 LibrePods 로고를 사용하여 프로젝트의 공식 웹사이트인 것처럼 부정확하게 주장하고 있습니다. 동시에, 이 프로젝트가 LibrePods 프로젝트나 그 개발자들과 관련이 없다고 명시하고 있습니다.

다른 그러한 웹사이트를 발견하면 [email protected]로 신고해 주세요.

LibrePods

LibrePods란 무엇인가요?

LibrePods를 사용하면 Apple 기기 전용인 AirPods 기능을 사용할 수 있습니다. AirPods와 Apple 기기 간에 데이터를 교환하는 데 사용되는 독점 프로토콜을 구현하여 비 Apple 플랫폼에서 노이즈 컨트롤 모드 변경, 빠른 착용 감지, 정확한 배터리 상태, 헤드 제스처, 대화 인식 등의 기능을 사용할 수 있게 해줍니다.

기능 가용성

기능LinuxAndroid
청취 모드 변경✅✅
착용 감지✅✅
배터리 상태✅✅
AirPods 이름 변경
Android 관련 참고 사항Android에서는 이름을 변경한 후 AirPods를 다시 페어링해야 합니다. Android가 최신 이름을 사용하지 않을 수 있기 때문입니다.
✅✅
큰 소리 감소🔴⚪
헤드 제스처⛔✅
대화 인식✅✅
AirPods에 자동 연결✅✅
보청기🔴⚪
투명도 모드 사용자 지정🔴⚪
다중 기기 연결 (Bluetooth 멀티포인트; 2대의 기기만)⚪⚪
기타 접근성 설정 (클릭하여 펼치기)
  • 누르기 속도
  • 길게 누르기 지속 시간
  • 단일 AirPod로 노이즈 캔슬링
  • 스와이프로 볼륨 조절
  • 볼륨 스와이프 속도
🔴✅
기타 일반 설정
  • 길게 눌러 청취 모드 순환/디지털 어시스턴트 호출 (디지털 어시스턴트 호출은 최신 펌웨어 필요)
  • 통화 제어 구성
  • 개인화된 볼륨
  • 큰 소리 감소 (VendorID 스푸핑 필요)
  • 마이크 방향
  • 잠들 때 미디어 일시정지 (최신 펌웨어 필요)
  • Off listening mode를 활성화하여 Off로 전환
🔴✅
헤드 트래킹 공간 음향❓❓
심박수 모니터링🔴🟡
나의 찾기❓❓
고품질 양방향 오디오🟡🟡
기호의미
✅구현되었으며 잘 작동함
⚪VendorID 스푸핑 필요; 사용 시 본인 책임
🟡실험적/작업 진행 중
🔴아직 구현되지 않음; 계획됨
⛔구현되지 않을 예정
❓알 수 없음

나의 찾기

나의 찾기와 관련된 다음 기능들이 계획되어 있지만, 추가적인 RE가 필요하며 Android에서는 루트 권한이 필요할 수 있습니다:

  • AirPods를 나의 찾기 네트워크에 추가
  • 충전 케이스를 통해 소리를 재생하여 찾기
  • 두고 갈 때 알림
  • 케이스 충전 소리 전환

공간 음향

현재 앱은 OS가 HRTF를 수행할 수 있도록 Android에 헤드 트래킹 정보를 제공하지 않습니다. 이는 완전히 탐구되지 않았으며, 루트 권한이 필요할 수 있습니다.

스테레오 사운드의 공간화는 이 프로젝트의 범위를 벗어나며 절대 제공되지 않을 것입니다. 많은 OEM들이 자체적인 구현을 가지고 있습니다.

심박수 모니터링

Android

android/rewrite 브랜치에서 사용 가능합니다. 빌드

Linux

아직 사용할 수 없습니다 (컴퓨터에서는 유용하지 않을 것 같습니다. 제안 사항이 있으면 토론을 만들어 주세요.)

고품질 양방향 오디오

iOS/iPadOS에서는 AirPods가 AACP를 통해 마이크의 오디오 스트림을 전송하는 동안에도 A2DP를 계속 사용할 수 있습니다.

Android

Headset/Handsfree 프로필로 전환하지 않고 AirPods의 마이크를 사용하여 앱 내에서 오디오를 녹음하는 것이 가능합니다. 하지만, 이를 다른 앱/전화 통신에 사용 가능하게 하려면 루트 권한이 필요할 수 있으며, 가능하다고 해도 불확실합니다.

녹음기는 작업 진행 중이며, android/rewrite 브랜치에서 사용 가능합니다. 빌드

Linux

PR #655를 확인해 주세요.

설치

VendorID 스푸핑

DID 프로필의 VendorID를 Apple의 것으로 변경하면 여러 특수 기능에 접근할 수 있다는 것이 밝혀졌습니다!

Linux에서는 /etc/bluetooth/main.conf의 DeviceID를 편집하여 이를 수행할 수 있습니다. 설정 파일에 DeviceID = bluetooth:004C:0000:0000 줄을 추가하세요. Android에서는 앱 설정에서 act as Apple device 설정을 활성화할 수 있습니다 (Xposed가 사용 가능하고 LibrePods 모듈이 활성화된 경우에만 표시됨).

다중 기기 연결

최대 두 대의 기기가 AirPods에 동시에 연결될 수 있으며, 오디오와 제어 모두 가능합니다. 원활한 연결 전환. Android가 마치 Apple 기기인 것처럼 AirPods를 인계받을 때 Apple 기기에 동일한 알림이 표시됩니다 ("Move to iPhone"). Android도 다른 기기가 인계받을 때 팝업을 표시합니다.

접근성 설정 및 보청기

투명도 모드 사용자 지정 (증폭, 밸런스, 톤, 대화 부스트, 주변 소음 감소) 및 큰 소리 감소와 같은 접근성 설정을 구성할 수 있습니다.

모든 보청기 사용자 지정은 Android에서 수행할 수 있으며 (Linux는 곧), 청력도 결과 설정을 포함합니다. 앱은 청력 검사를 수행하는 방법을 제공하지 않습니다. 훨씬 더 많은 정밀도가 필요하기 때문입니다. 이미 사용 가능한 청력도 결과를 사용하는 것이 훨씬 좋습니다.

프로토콜 및 리버스 엔지니어링

사용된 프로토콜에 대한 자세한 내용은 Nojus (@pabloaul)의 Wireshark 디섹터 플러그인을 참조하세요: pabloaul/apple-wireshark

디섹터는 LibrePods의 대부분의 구현에서 사용되지 않았습니다. 이 디섹터가 만들어지기 전에 제가 직접 프로토콜을 리버스 엔지니어링했습니다. 하지만 양방향 고품질 오디오와 공간 음향을 포함한 많은 (미래의) 기능들은 그들의 RE 노력 없이는 불가능했을 것입니다!

AI 사용

Android 앱

앱의 다음 부분들은 완전히 AI로 생성되었습니다:

  • 헤드 제스처 - 로직과 UI를 포함한 전부
  • r2+the xposed 모듈과의 오프셋 설정 (두 버전 모두)
  • 문제 해결사 및 LogCollector

나머지 모든 것 - 백그라운드 서비스, Bluetooth 관리자 클래스 (AACP 및 ATT), 전체 UI, 가장 작은 컴포넌트까지도 수동으로 작성되었습니다.

일부 UI 컴포넌트는 Kyant0의 데모 앱에서 차용했으며, 이는 Apache License 2.0에 따라 라이선스가 부여됩니다.

Linux (rewrite)

aacp.rs와 att.rs 파일은 AI를 사용하여 Kotlin에서 Rust로 번역되었습니다. media_controller.rs 파일의 일부, 주로 pulse 통합도 AI로 생성되었습니다.

후원자

프로젝트를 지원해 주시는 모든 분들께 큰 감사를 드립니다!

카테고리