본문으로 건너뛰기

© 2026 Molayo

HN분석2026. 06. 29. 05:48

LibrePods: Apple 생태계로부터 해방된 AirPods

요약

LibrePods는 Apple의 독점 프로토콜을 구현하여 AirPods의 핵심 기능을 타 플랫폼에서도 사용할 수 있게 하는 오픈소스 프로젝트입니다. Android 및 Linux 환경에서 노이즈 제어, 착용 감지, 배터리 확인 등의 기능을 지원합니다.

핵심 포인트

  • Apple 독점 프로토콜 구현을 통한 플랫폼 제한 해제
  • Android 및 Linux 환경에서 AirPods 기능 지원
  • 노이즈 제어, 착용 감지, 배터리 상태 확인 가능
  • 머리 제스처 및 대화 인지 기능 포함

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

이와 같은 다른 웹사이트를 발견하시면 me@kavish.xyz로 제보해 주세요.

<picture> <source media="(prefers-color-scheme: dark)" srcset="./imgs/banner-dark.png" /> <source media="(prefers-color-scheme: light)" srcset="./imgs/banner.png" /> <img alt="LibrePods" src="./imgs/banner.png" /> </picture> <div align="center" style="margin: 20px 0px;"> <a href="https://github.com/kavishdevar/librepods/releases/latest"> <img src="https://img.shields.io/github/downloads/kavishdevar/librepods/total?label=GitHub%20Downloads" /> </a> <a href="https://github.com/kavishdevar/librepods/actions/workflows/ci-android.yml"> <img src="https://github.com/kavishdevar/librepods/actions/workflows/ci-android.yml/badge.svg" /> </a> <a href="https://github.com/kavishdevar/librepods/actions/workflows/ci-linux-rust.yml"> <img src="https://github.com/kavishdevar/librepods/actions/workflows/ci-linux-rust.yml/badge.svg" /> </a> <a href="https://github.com/kavishdevar/librepods/issues"> <img src="https://img.shields.io/github/issues/kavishdevar/librepods" /> </a> <a href="https://discord.gg/HhG4ycVum4"> <img src="https://img.shields.io/discord/1441416992027574375?logoColor=white&color=5865F2&label=Discord" /> </a> </div>

LibrePods란 무엇인가요?

LibrePods를 사용하면 Apple 기기 전용인 AirPods 기능을 사용할 수 있습니다. 이 프로젝트는 AirPods와 Apple 기기 간의 데이터 교환에 사용되는 독점 프로토콜 (proprietary protocol)을 구현하여, Apple이 아닌 플랫폼에서도 노이즈 제어 모드 변경, 빠른 착용 감지 (ear detection), 정확한 배터리 상태 확인, 머리 제스처 (head gestures), 대화 인지 (conversational awareness) 등의 기능을 사용할 수 있게 합니다.

기능 가용성

기능 (Feature)LinuxAndroid
청취 모드 변경 (Changing Listening Mode)
...
기호 (Symbol)의미 (Meaning)
-------------------------------------------------------------------------
구현되었으며 정상 작동함 (Implemented and works well)
...

Find My (나의 찾기)

다음의 Find My 관련 기능들은 계획되어 있으나, 추가적인 역공학 (RE, Reverse Engineering)이 필요하며 Android에서는 루트 (root) 권한이 필요할 수 있습니다:

  • AirPods를 Find My 네트워크에 추가
  • 충전 케이스를 통해 소리를 재생하여 찾기
  • 분실 시 알림 받기
  • 케이스 충전 소리 토글

Spatial Audio (공간 음향)

현재 이 앱은 OS가 HRTF (머리 전달 함수)를 수행할 수 있도록 Android에 머리 추적 (head tracking) 정보를 제공하지 않습니다. 이 부분은 아직 완전히 탐구되지 않았으며, 루트 (root) 권한이 필요할 수 있습니다.

스테레오 사운드를 공간화 (Spatializing)하는 것은 이 프로젝트의 범위를 벗어나며, 앞으로도 제공되지 않을 것입니다. 많은 OEM들이 이를 위해 자체적인 구현 방식을 가지고 있습니다.

심박수 모니터링 (Heart Rate Monitoring) (AirPods Pro 3 및 이후 모델)

현재 작업 중이며, 더 자세한 정보는 LibrePods Discord 서버의 #⁠reverse-engineering 채널을 확인하세요. 만약 구현된다면, Android에서는 루트 (root) 권한이 필요할 가능성이 높습니다.

고음질 양방향 오디오 (High quality two-way audio)

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

Android의 오디오 시스템과 더 깊은 통합이 필요하기 때문에, 이 기능 역시 루트 (root) 권한이 필요할 가능성이 높습니다.

설치 (Installation)

VendorID 스푸핑 (VendorID Spoofing)

알고 보니, DID 프로필의 VendorID를 Apple의 것으로 변경하면 여러 가지 특별한 기능에 접근할 수 있습니다!

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

멀티 디바이스 연결성 (Multi-device Connectivity)

AirPods에는 오디오와 제어 모두를 위해 최대 두 대의 기기를 동시에 연결할 수 있습니다. 매끄러운 연결 전환이 가능합니다. Android가 AirPods를 Apple 기기인 것처럼 제어하기 시작하면 Apple 기기에는 동일한 알림(

그 외 모든 것—백그라운드 서비스 (background service), Bluetooth 관리 클래스 (AACP 및 ATT), 전체 UI, 심지어 가장 작은 컴포넌트들까지 모두 수동으로 작성되었습니다.

UI 컴포넌트의 일부는 Apache License 2.0 라이선스 하에 있는 Kyant0의 데모 앱에서 가져왔습니다.

Linux (재작성)

aacp.rsatt.rs 파일은 AI를 사용하여 Kotlin에서 Rust로 번역되었습니다. media_controller.rs 파일의 일부, 주로 Pulse 통합 부분 또한 AI로 생성되었습니다.

후원자 (Supporters)

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

<table> <tr> <td align="center"> <a href="https://github.com/davdroman"> <img src="https://github.com/davdroman.png?size=48" width="48" height="48"alt="davdroman"/><br /> @davdroman </a> </td> <td align="center"> <a href="https://github.com/tedsalmon"> <img src="https://github.com/tedsalmon.png?size=48" width="48" height="48"alt="tedsalmon"/><br /> @tedsalmon </a> </td> <td align="center"> <a href="https://github.com/wiless"> <img src="https://github.com/wiless.png?size=48" width="48" height="48"alt="wiless"/><br /> @wiless </a> </td> </tr> <tr> <td align="center"> <a href="https://github.com/SmartMsg"> <img src="https://github.com/SmartMsg.png?size=48" width="48" height="48"alt="SmartMsg"/><br /> @SmartMsg </a> </td> <td align="center"> <a href="https://github.com/lunaroyster"> <img src="https://github.com/lunaroyster.png?size=48" width="48" height="48"alt="lunaroyster"/><br /> @lunaroyster </a> </td> <td align="center"> <a href="https://github.com/ressiwage"> <img src="https://github.com/ressiwage.png?size=48" width="48" height="48"alt="ressiwage"/><br /> @ressiwage </a> </td> </tr> <tr> <table> <tr> <td align="center"> <a href="https://github.com/kkjdroid"> <img src="https://github.com/kkjdroid.png?size=48" width="48" height="48"alt="kkjdroid"/> <br /> @kkjdroid </a> </td> <td align="center"> <a href="https://github.com/CitrusJoules"> <img src="https://github.com/CitrusJoules.png?size=48" width="48" height="48"alt="CitrusJoules"/> <br /> @CitrusJoules </a> </td> <td align="center"> <a href="https://github.com/DanielReyesDev"> <img src="https://github.com/DanielReyesDev.png?size=48" width="48" height="48"alt="DanielReyesDev"/> <br /> @DanielReyesDev </a> </td> </tr> <tr> <td align="center"> <a href="https://github.com/sumitduster"> <img src="https://github.com/sumitduster.png?size=48" width="48" height="48"alt="sumitduster"/> <br /> @sumitduster </a> </td> <td align="center"> <a href="https://github.com/GrifTheDev"> <img src="https://github.com/GrifTheDev.png?size=48" width="48" height="48"alt="GrifTheDev"/> <br /> @GrifTheDev </a> </td> </tr> </table>

특별 감사 (Special Thanks)

  • 프로토콜에 대한 첫 문서를 작성해 준 @tyalie님! (tyalie/AAP-Protocol-Definition)
  • 보청기 기능 구현을 도와준 @rithvikvibhu님과 lagrangepoint 관계자분들께 감사드립니다 (gist)
  • 첫 번째 루트 패치를 도와준 @devnoname120님
  • 리눅스 앱의 첫 버전을 만들어 준 @timgromeyer님
  • High SeasLow Skies를 호스팅해 준 hackclub에 감사드립니다!
  • 물론, 테스트, 피드백 공유, 또는 단순히 관심을 보여준 등 어떤 방식으로든 프로젝트에 기여한 모든 분들께도 감사를 전합니다!

다른 플랫폼을 위한 대안:

  • CAPod - Android용 AirPods 컴패니언 앱 (play store | source code). Android 버전 16 QPR3 이하를 사용 중이며 루팅(rooted)되지 않은 경우 이 앱을 사용하세요.
  • Steam Deck용 MagicPods (website)
  • MagicPods - "Windows용 LibrePods"를 찾고 있다면 (ms store installer | website)

Star History

<a href="https://www.star-history.com/#kavishdevar/librepods&type=date&legend=top-left"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=kavishdevar/librepods&type=date&theme=dark&legend=top-left" /> <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=kavishdevar/librepods&type=date&legend=top-left" /> <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=kavishdevar/librepods&type=date&legend=top-left" /> </picture> </a>

License

LibrePods - Apple 생태계로부터 해방된 AirPods
Copyright (C) 2025 LibrePods 기여자들

이 프로그램은 자유 소프트웨어입니다. Free Software Foundation이 발표한 GNU General Public License 버전 3 또는 그 이후의 버전 조건에 따라 재배포 및/또는 수정할 수 있습니다.

이 프로그램은 유용하게 사용되기를 희망하며 배포되지만, 어떠한 보증도 제공하지 않습니다. 상품성(MERCHANTABILITY) 또는 특정 목적에 대한 적합성(FITNESS FOR A PARTICULAR PURPOSE)에 대한 묵시적 보증조차 포함되지 않습니다. 자세한 내용은 GNU General Public License를 참조하십시오.

귀하는 이 프로그램과 함께 GNU General Public License 사본을 받았어야 합니다. 받지 못했다면 https://www.gnu.org/licenses/를 참조하십시오.

Trademark Notice

GPL은 LibrePods의 이름, 로고 또는 브랜딩을 사용할 수 있는 어떠한 권리도 부여하지 않습니다. 사전 허가 없이 공식 LibrePods 프로젝트와의 제휴, 보증 또는 연관성을 암시하는 방식으로 소프트웨어, 웹사이트, 도메인, 제품, 서비스 또는 기타 프로젝트에 LibrePods의 이름과 로고를 사용할 수 없습니다.

LibrePods의 이름이나 로고가 오용되는 것을 발견하면 me@kavish.xyz로 제보해 주시기 바랍니다.

Android 앱에서 사용된 SF Pro 폰트는 Apple Inc.의 자산입니다. 이는 앱의 향후 버전에서 제거될 예정이며, 곧 오픈 소스 대안으로 교체될 것입니다.

AirPods, AirPods Pro, AirPods Max 및 AirPods 로고는 Apple Inc.의 상표입니다. LibrePods 프로젝트는 어떤 방식으로든 Apple Inc.와 제휴하거나 보증을 받지 않습니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 HN AI Posts의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0