Releases: kavishdevar/librepods
linux-v0.1.0
Full Changelog: v0.1.0-rc.4...linux-v0.1.0
v0.2.0-alpha (multi-device, accessibility features, and liquid glass)
Important
If you downloaded the build before 04:30 UTC, October 1, please download it again if you are experiencing crashes. (Fixed compatibility issues with Magisk by calling su instead of using a full path.)
What's Changed
Android
bunch of new features, check #202 and the branch's readme
- adds multi-device capability
- adds accessibility features (like customizing transparency mode)
- adds loud sound reduction option
- adds camera control
- adds hearing aid adjustments (not hearing test!)
- liquid glass (just because it was easy to implement, mostly, just more rounded corners)
- adds a bunch of settings that already should've been there in the first place, check screenshots in the branch
Linux
- [Linux] Read AirPods state from BLE broadcast when not connected by @tim-gromeyer in #138
- [Linux] Compress images by @tim-gromeyer in #139
- [ImgBot] Optimize images by @imgbot[bot] in #140
- [Linux] Add Qr-Code to sync irk and enc key by @tim-gromeyer in #142
- [Linux] Fix battery sometimes showing 127% by @tim-gromeyer in #143
- [Linux] Improvementens to noise control mode by @tim-gromeyer in #144
- [Linux] New ear detection implementation by @tim-gromeyer in #145
- [Linux] Replace
playerctlby @tim-gromeyer in #147 - [Linux] DBus fixes by @tim-gromeyer in #148
- [Linux] Remember battery state (closes #149) by @tim-gromeyer in #150
- [Linux] Autostart im hidden mode by @tim-gromeyer in #156
- [Linux] Rename to Librepods by @tim-gromeyer in #157
- [Linux] Start/Stop BLE scan when going to sleep by @tim-gromeyer in #162
- Fixes and improvements to the Linux readme by @mbmjertan in #168
- Add option for alternate head tracking packets by @Copilot in #176
- android: add ability to launch digital assistant on long press by @kavishdevar in #180
- Fixed build instructions for ubuntu by @Raspberrynani in #183
- [Linux] chore: change logging name airpodsApp -> Librepods by @NL-TCH in #194
- fix: update rename function call for airPods by @naveen521kk in #191
- [Linux] Let users edit Phone bluetooth MAC via GUI by @NL-TCH in #195
- android,linux: update feature flags packet data byte to remove adaptive volume by @kavishdevar in #192
- i18n: add chinese translation by @qlenlen in #200
- [Linux] Autobuild app on any branch change + publish artifact by @NL-TCH in #196
New Contributors
- @mbmjertan made their first contribution in #168
- @Copilot made their first contribution in #176
- @Raspberrynani made their first contribution in #183
- @NL-TCH made their first contribution in #194
- @naveen521kk made their first contribution in #191
- @qlenlen made their first contribution in #200
Full Changelog: v0.1.0-rc.4...v0.2.0-alpha
nightly release (f547cc1)
Linux
- add option to set phone MAC from app settings
- fix random volume jumps (thanks @gheinzer!)
Android
- add option to launch digital assistant on long press (requires 2025 beta fw)
- fix #27 (again, thanks to @gheinzer)
- add alternate head tracking packets for beta fw (to be manually enabled from app settings)
Auto-generated notes
What's Changed
- [Linux] Read AirPods state from BLE broadcast when not connected by @tim-gromeyer in #138
- [Linux] Compress images by @tim-gromeyer in #139
- [ImgBot] Optimize images by @imgbot[bot] in #140
- [Linux] Add Qr-Code to sync irk and enc key by @tim-gromeyer in #142
- [Linux] Fix battery sometimes showing 127% by @tim-gromeyer in #143
- [Linux] Improvementens to noise control mode by @tim-gromeyer in #144
- [Linux] New ear detection implementation by @tim-gromeyer in #145
- [Linux] Replace
playerctlby @tim-gromeyer in #147 - [Linux] DBus fixes by @tim-gromeyer in #148
- [Linux] Remember battery state (closes #149) by @tim-gromeyer in #150
- [Linux] Autostart im hidden mode by @tim-gromeyer in #156
- [Linux] Rename to Librepods by @tim-gromeyer in #157
- [Linux] Start/Stop BLE scan when going to sleep by @tim-gromeyer in #162
- Fixes and improvements to the Linux readme by @mbmjertan in #168
- Add option for alternate head tracking packets by @Copilot in #176
- android: add ability to launch digital assistant on long press by @kavishdevar in #180
- Fixed build instructions for ubuntu by @Raspberrynani in #183
- [Linux] chore: change logging name airpodsApp -> Librepods by @NL-TCH in #194
- fix: update rename function call for airPods by @naveen521kk in #191
- [Linux] Let users edit Phone bluetooth MAC via GUI by @NL-TCH in #195
- android,linux: update feature flags packet data byte to remove adaptive volume by @kavishdevar in #192
- i18n: add chinese translation by @qlenlen in #200
- [Linux] Autobuild app on any branch change + publish artifact by @NL-TCH in #196
New Contributors
- @mbmjertan made their first contribution in #168
- @Copilot made their first contribution in #176
- @Raspberrynani made their first contribution in #183
- @NL-TCH made their first contribution in #194
- @naveen521kk made their first contribution in #191
- @qlenlen made their first contribution in #200
- @gheinzer made their first contribution in #192
Full Changelog: v0.1.0-rc.4...nightly
edit keeping this just in case anything goes wrong with newer release.
v0.1.0-rc.4
Features and Improvements
- BLE Support:
- Battery information when not connected: The app can now detect your AirPods if they're turned on to show accurate battery information even if they're not connected to Android (or linux for cross device features). This is basically what currently available apps do, but LibrePods can also decrypt the part of the BLE broadcast.
- Automatic connections: When you receive a call, or start playing media, based on your preferences (check screenshots in README), the app will automatically connect to AirPods.
- The app can now get all the configuration information from the AirPods, like conversation awareness, adaptive audio etc.. These settings will not be overwritten when you change them on an apple device and connect back to Android.
- Improved the island. Improved animations, and you can now pull down to open the app and push up to dismiss.
- Improved audio disconnection when not worn.
- Add support for pre-A12, location permission is requestion instead of the new bluetooth permissions.
Important
A few changes were needed to support pre-A12 versions, and one of these changes requires a fresh install of the app.
- If you have already installed the app as a system app by using the root module, you will have to flash the root module again instead of updating the app using the apk.
- If you have not installed it as a system app, you will have to uninstall the app. Since this version gets the config data from the AirPods itself, most of your settings will stay with a notable exception of the long press to cycle between config (AirPods might not always send this).
Linux
- Add more control commands by @tim-gromeyer in #127
- Add One Bud ANC Mode setting by @tim-gromeyer in #128
- Move all device related properties to new class by @tim-gromeyer in #135
- Fix UI not working by @tim-gromeyer in #137
Full Changelog: v0.1.0-rc.3...v0.1.0-rc.4
v0.1.0-rc.3
Features & Improvements
- Added troubleshooter for easier log access (810a3c9)
- Added option to maintain audio connection when none are worn (01432ce)
- Improved conversational awareness functionality (4c73200, fixes #122)
- Added support for listening to intents to set ANC mode for integrating with other apps(45ed8a3)
- Separated actual battery notifications from persistent service notification (116f7dd)
Bug Fixes
- Fixed ear detection logic when none, either, or both AirPods are worn (364a6f4)
- Fixed MediaController fallback volume for conversational awareness (9b96218)
- Fixed SharedPreference listener for conversational awareness customizations (42e0f48)
- Initialized shared preference keys on first launch (06de276)
- Fixed battery monitoring in the connected popup window (7ffcd68, fixes #117)
- Fixed AirPods connection monitoring in UI (295c49f, fixes #118)
Other Changes
- Updated Haze library uses (9baa3c9)
- Added SharedPreference listeners to service (98aef13)
- Made customizations and head tracking screens scrollable (aec9c71)
- Added app description (51ca4c1)
Fixed Issues
- #122: Improved conversational awareness
- #118: Listen for AirPods connection in UI
- #117: Listen for battery in the connected popup window
Full Changelog: v0.1.0-rc.2...v0.1.0-rc.3
v0.1.0-rc.2
What's Changed
- [Linux] Use Qt 6.4 for compatibility with Debian Stable by @eswyft in #116
- [Android] Fix XPosed module (58dfed9)
- [Android] Add option to switch between control center like window and cycling between modes when clicking the QS tile.
Note
The SystemUI Volume Panel hook has only been tested on stock AOSP. May or may not work on other devices. Same with the link to open LibrePods app from the android settings app. But, the icons and battery metadata should be set.
The module available in this release installs the app as a system app and grants BLUETOOTH_PRIVILEGED permission for setting metadata, that's it. If you do not need that, just stick with the plain APK. If the XPosed module doesn't work for you, you may try to use a less reliable method by installing the btl2capfix root module in available v0.0.3.
New Contributors
Full Changelog: v0.1.0-rc.1...v0.1.0-rc.2
v0.1.0-rc.1
What's new
Big changes:
- Easier workaround: Added XPosed backed hooking. The app can now directly hook onto the Bluetooth process without needing to replace library.
- Head Gestures: Answer calls just by nodding
- Improved QS Tile: Greatly improves the QS tile functionality, it can switch to the off listening mode as well. and if you chose, it can open a control center-esque window for quickly controlling conversational awareness and noise control modes without cycling through the modes.
- Rebranding: I think it's pretty evident :)
- Linux app: The linux app has core features implemented thanks to @tim-gromeyer, go check it out at /linux.
- Better system integration: The app sends battery information to Android, and ASI*. It also adds a button to the volume slider that allows you to quickly change noise control modes. This may only work on non-OEM skins.
And, there's of course a lot of minor refactoring, improvements all over, and bug fixes. Still found one? Create an issue!
Note
To be able to send info the Android and ASI, the app needs BLUETOOTH_PRIVILEGED permission, which is only granted to system apps. So if you wish to do that, you can install the root module. If you are unable to use the XPosed hook, you can use the other with patch root module. (WIll be simplified soon.) might cause a boot loop, do not use until further development.
PRs
- [Linux] Implement renaming airpods by @tim-gromeyer in #88
- [Linux] Add battery indicator by @tim-gromeyer in #89
- [Linux] Enhance GUI with icons by @tim-gromeyer in #90
- [ImgBot] Optimize images by @imgbot in #91
- [Linux] Use segment control for setting noise control mode by @tim-gromeyer in #92
- Change radare2 download URL to GitHub releases by @devnoname120 in #93
- [Linux] CA state parsing, robuster handshake, persistent window by @tim-gromeyer in #94
- [Linux] Implement proper disconnection detection by @tim-gromeyer in #95
- [Linux] Improved disconnect behavior by @tim-gromeyer in #97
- Add more documentation by @tim-gromeyer in #96
- [Linux] Improve connection stability by @tim-gromeyer in #98
- [Linux] GUI improvements by @tim-gromeyer in #100
- Linux usability improvements by @tim-gromeyer in #104
- [Linux] Add settings page by @tim-gromeyer in #105
- [Linux] Add CLI flag to hide the window on startup by @jdholtz in #109
- Delete old code by @tim-gromeyer in #110
- [Linux] Dynamically find device sink name by @tim-gromeyer in #108
- [Linux] Add seperators to tray, add tray option to reopen app and settings, prevent duplicate instances of app from being opened by @jazzysoggy in #111
New Contributors
- @imgbot made their first contribution in #91
- @jdholtz made their first contribution in #109
- @jazzysoggy made their first contribution in #111
Full Changelog: nightly...v0.4.0-rc.1
v0.0.3-hotfix
Important
Please clear the app data after installing.
I forgot to add BLUETOOTH_ADVERTISE permissions when asking for all permissions upon first launch. This permission was for CrossDevice services.
v0.0.3
Finally, thanks to @devnoname120, we now have an easy way to patch! Just download the module and install it from your favorite root manager app.
What's changed
- A new dynamic island looking popup for when audio switches to AirPods, and for cross device services (final touches soon!).
- Improved animations
- Widgets!
- The battery widget is completely revamped, and now matches the iOS battery widget.
- There is now a new widget to switch noise control mode right from the home screen.
- Customizations!
- Now you can customize the volume to which the music will be lowered to when you start speaking, or even pause it!
Small stuff
- Worked out the packet for customizing transparency mode (accessibility settings)
- a WIP app for linux - try it out yourself!
- refactored a lot of stuff so that i can understand my code a few months later :p
Contributions!
- Improve ALN notifications by @devnoname120 in #21
- Add on-device patcher module for Magisk/KernelSU by @devnoname120 in #34
- Fix ui text by @tim-gromeyer in #36
- Remove unused cURL that got reintroduced by error by @devnoname120 in #38
- README — Add instructions for on-device patcher by @devnoname120 in #39
- Patcher module: abort for qti libraries by @devnoname120 in #40
- Add
.editorconfigfile by @devnoname120 in #42 - Remove legacy patchers by @devnoname120 in #41
Make sure to join to the telegram channel for updates!
As always, feel free to report bugs here, or in the telegram discussion group!
New Contributors
- @devnoname120 made their first contribution in #21
- @tim-gromeyer made their first contribution in #36
Full Changelog: v0.0.2...v0.0.3
v0.0.2
A very polished Android app with lots of new features and bug fixes!
💥 Major changes
- A popup!
- A popup is now shown whenever AirPods are connected!
- Battery Notification
- Instead of having to open the app every time to check the battery, you can now get to know the battery levels of your AirPods just by glancing at the notification!
- Better device detection!
- The app now always runs in the background listening for bluetooth connections and automatically handshakes with the AirPods and starts receiving and manages other data like ear detection, conversational awareness, etc.
- The app will now communicate with the AirPods even if they were already connected before opening the app.
- And, it can also detect AirPods if the app is already open or running in the background, obviously!
- The app would detect disconnections as well, and change the settings UI (to "No AirPods connected") as soon as the AirPods are disconnected.
- QuickSetting Tile! I've finally fixed the QuickSetting tile to change the noise control mode.
- Force/Manual connection
- If the app doesn't connect to the AirPods, or crashes, or anything else were to happen rendering the app to not function as expected, you can now manually hit the refresh button (at the top of the app's settings screen, beside the AirPods' name) to manually check for any AirPods connected and communicate with them. This is the ultimate solution to many problems you may potentially face while using the apps.
Important
Enable the Display over other apps permission from the Settings app for the popup to show!
Note
The QuickSetting Tile will only allow you to change between Transparency, Adaptive, and Noise Cancellation, and not Off listening mode, but you can change to off from the app.
🎨 Other changes
- Use a different library to blur the content behind the top app bar, improves performance.
- The UI fetches the last saved battery information instead of waiting for AirPods to send it.
- Made the battery icon in the app a little longer to match newer versions of iOS/iPadOS.
- Better error-handling, enclosed most of the crash-prone code in try-catch blocks.
- Readme Update by @SriviharReddy in #9
Warning
There are a few known bugs.
- The app would sometimes close the connection to the AirPods itself. If it does ever happen to you, try opening the app and try to test if the AirPods are sending any data using the
Debugview. If the app is not receiving data, hit the aforementioned reconnect button at the top in the settings screen. - The app might show
nullas the device name in the popup as if you haven't changed your name from the app. To fix this, just rename the AirPods by hitting theNamefield in the app, even the current name works.
🐛 Found any bugs?
Create a issue, or discuss either in the Telegram discussions channel or in this release's discussion.
New Contributors
- @SriviharReddy made their first contribution in #9. Thank you for your contribution in updating the workaround instructions in the readme! :)
Full Changelog: v0.0.1...v0.0.2