You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
-
# Welcome to AirPods Like Normal contributing guide <!-- omit in toc -->
1
+
# Welcome to LibrePods contributing guide <!-- omit in toc -->
2
2
3
-
Thank you for considering a contribution to AirPods Like Normal! Your support helps bring Apple-exclusive AirPods features to Linux and Android.
3
+
Thank you for considering a contribution to LibrePods! Your support helps bring Apple-exclusive AirPods features to Linux and Android.
4
4
5
5
Read our [Code of Conduct](./CODE_OF_CONDUCT.md) to keep our community approachable and respectful.
6
6
@@ -25,19 +25,19 @@ To develop for the Android App, Android Studio is the preferred IDE. And you can
25
25
26
26
#### Create a new issue
27
27
28
-
If you find a bug or want to suggest a feature, check if an issue already exists by searching through our [existing issues](https://github.com/kavishdevar/aln/issues). If no relevant issue exists, open a new one and fill in the details.
28
+
If you find a bug or want to suggest a feature, check if an issue already exists by searching through our [existing issues](https://github.com/kavishdevar/librepods/issues). If no relevant issue exists, open a new one and fill in the details.
29
29
30
30
#### Solve an issue
31
31
32
-
Browse our [issues list](https://github.com/kavishdevar/aln/issues) to find an interesting issue to work on. Use labels to filter issues and pick one that matches your expertise. If you’d like to work on an issue, open a PR with your solution.
32
+
Browse our [issues list](https://github.com/kavishdevar/librepods/issues) to find an interesting issue to work on. Use labels to filter issues and pick one that matches your expertise. If you’d like to work on an issue, open a PR with your solution.
33
33
34
34
### Make Changes
35
35
36
36
#### Make changes locally
37
37
38
38
1. Fork the repository and clone it to your local environment.
Other devices might work too. Features like ear detection and battery should be available for any AirPods! Although the app will show unsupported features/settings. I will not be able test any other devices than the ones I already have (i.e. the AirPods Pro 2).
Check the [pinned issue](https://github.com/kavishdevar/aln/issues/20)for a list.
11
+
LibrePods unlocks Apple's exclusive AirPods features on non-Apple devices. Get access to noise control modes, adaptive transparency, ear detection, battery status, and more - all the premium features you paid for but Apple locked to their ecosystem.
14
12
13
+
## Device Compatibility
15
14
16
-
## CrossDevice Stuff
15
+
| Status | Device | Features |
16
+
|--------|--------|----------|
17
+
| ✅ | AirPods Pro (2nd Gen) | Fully supported and tested |
18
+
| ⚠️ | Other AirPods models | Basic features (battery status, ear detection) should work |
17
19
18
-
> [!IMPORTANT]
19
-
> This feature is still in development and might not work as expected. No support is provided for this feature.
20
+
Most features should work with any AirPods. Currently, testing is only performed with AirPods Pro 2.
20
21
21
-
###Features
22
+
##Key Features
22
23
23
-
-**Battery Status**: Get battery status on any device when you connect your AirPods to one of them.
24
-
-**Control AirPods**: Control your AirPods from either of your device when you connect to one, like changing the noise control mode, toggling conversational awareness, and more.
25
-
-**Automatic Device Switching**: Automatically switch between your Linux and Android device, like when you receive a call, start playing music on Android while you're connected to Linux, and more!
24
+
-**Noise Control Modes**: Easily switch between noise control modes without having to reach out to your AirPods to long press
25
+
-**Ear Detection**: Controls your music automatically when you put your AirPods in or take them out, and switch to phone speaker when you take them out
26
+
-**Battery Status**: Accurate battery levels
27
+
-**Head Gestures**: Answer calls just by nodding your head
28
+
-**Conversational Awareness**: Volume automatically lowers when you speak
29
+
-**Other customizations**:
30
+
- Rename your AirPods
31
+
- Customize long-press actions
32
+
- Few accessibility features
33
+
- And more!
26
34
27
-
Check out the demo below!
35
+
See our [pinned issue](https://github.com/kavishdevar/librepods/issues/20) for a complete feature list and roadmap.
The Linux version runs as a system tray app. Connect your AirPods and enjoy:
33
42
34
-
The Linux version is a simple tray-app, with a modern and adaptive ui. Still WIP, but most things work (battery, ear-detection, auto-pause, rename, etc.)
43
+
- Battery monitoring
44
+
- Ear detection with auto-pause
45
+
- Device renaming
46
+
- Media controls
35
47
36
-
Check out the README file in [linux](/linux) folder for more info.
48
+
> [!NOTE]
49
+
> Work in progress, but core functionality is stable and usable.
37
50
38
-
## Android
51
+
For installation and detailed info, see the [Linux README](/linux/README.md).
39
52
40
-
> Can I use aln without root?
53
+
### Android
41
54
42
-
**No, it's not possible to use aln without root.** You will have to root your device if you want to use aln, and there is no way around it. **No exceptions.**
Currently, there's a [bug in the Android Bluetooth stack](https://issuetracker.google.com/issues/371713238) that prevents the app from working (upvote the issue - click the '+1' icon on the top right corner of IssueTracker).
64
+
#### Root Requirement
56
65
57
66
> [!CAUTION]
58
-
> Until Google merges the fix **you will only be able to use aln if you are rooted**. There are **no exceptions**, don't ask about it.
67
+
> **You must have a rooted device to use LibrePods on Android.** This is due to a [bug in the Android Bluetooth stack](https://issuetracker.google.com/issues/371713238). Please upvote the issue by clicking the '+1' icon on the IssueTracker page.
68
+
>
69
+
> There are **no exceptions** to the root requirement until Google merges the fix.
59
70
60
-
In order to use aln you will have to install the module using your favorite root manager in OverlayFS mode (KernelSU, Apatch, or Magisk). If you don't know what this means, no support is provided: you will have to search by yourself on Google or ask in some Android rooting communities on Telegram.
71
+
#### Installation Methods
61
72
62
-
The module to install is available in the releases section under the name `btl2capfix.zip`.
73
+
##### Method 1: Xposed Module (Recommended)
74
+
This method is less intrusive and should be tried first:
63
75
64
-
### Android – features
76
+
1. Install LSPosed, or another Xposed provider on your rooted device
77
+
2. Download the LibrePods app from the releases section, and install it.
78
+
3. Enable the Xposed module for the bluetooth app in your Xposed manager
79
+
4. Follow the instructions in the app to set up the module.
80
+
5. Open the app and connect your AirPods
65
81
66
-
####Renaming the Airpods
67
-
When you rename the Airpods using the app, you'll need to re-pair it with your phone. Currently, user-level apps cannot directly rename a Bluetooth device. After re-pairing, your phone will display the updated name!
82
+
##### Method 2: Root Module (Backup Option)
83
+
If the Xposed method doesn't work for you:
68
84
69
-
#### Noise Control Modes
85
+
1. Download the `btl2capfix.zip` module from the releases section
86
+
2. Install it using your preferred root manager (KernelSU, Apatch, or Magisk).
87
+
3. Reboot your device
88
+
4. Connect your AirPods
70
89
71
-
- Active Noise Cancellation (ANC): Blocks external sounds using microphones and advanced algorithms for an immersive audio experience; ideal for noisy environments.
72
-
- Transparency Mode: Allows external sounds to blend with audio for situational awareness; best for environments where you need to stay alert.
73
-
- Off Mode: Disables noise control for a natural listening experience, conserving battery in quiet settings.
74
-
- Adaptive Transparency: Dynamically reduces sudden loud noises while maintaining environmental awareness, adjusting seamlessly to fluctuating noise levels.
90
+
##### Method 3: Patching it yourself
91
+
If you prefer to patch the Bluetooth stack yourself, follow these steps:
75
92
76
-
> [!IMPORTANT]
77
-
> Due to recent AirPods' firmware upgrades, you must enable `Off listening mode` to switch to `Off`. This is because in this mode, louds sounds are not reduced!
93
+
1. Look for the library in use by running `lsof | grep libbluetooth`
94
+
2. Find the library path (e.g., `/system/lib64/libbluetooth_jni.so`)
95
+
3. Find the `l2c_fcr_chk_chan_modes` function in the library
96
+
4. Patch the function to always return `1` (true)
97
+
5. Repack the library and push it back to the device. You can do this by creating a root module yourself.
98
+
6. Reboot your device
99
+
100
+
If you're unfamiliar with these steps, search for tutorials online or ask in Android rooting communities.
101
+
102
+
#### A few notes
103
+
104
+
- Due to recent AirPods' firmware upgrades, you must enable `Off listening mode` to switch to `Off`. This is because in this mode, louds sounds are not reduced!
78
105
79
-
#### Conversational Awareness
106
+
- If you have take both AirPods out, the app will automatically switch to the phone speaker. But, Android might keep on trying to connect to the AirPods because the phone is still connected to them, just the A2DP profile is not connected. The app tries to disconnect the A2DP profile as soon as it detects that Android has connected again if they're not in the ear.
80
107
81
-
Automatically lowers audio volume and enhances voices when you start speaking, making it easier to engage in conversations without removing your AirPods.
108
+
- When renaming your AirPods through the app, you'll need to re-pair them with your phone for the name change to take effect. This is a limitation of how Bluetooth device naming works on Android.
82
109
83
-
#### Automatic Ear Detection
110
+
##Development Resources
84
111
85
-
Recognizes when the AirPods are in your ears to automatically play or pause audio and adjust functionality accordingly.
112
+
For developers interested in the protocol details, check out the [AAP Definitions](/AAP%20Definitions.md) documentation.
86
113
87
-
## Check out the packet definitions at [AAP Definitions](/AAP%20Definitions.md)
114
+
## CrossDevice Stuff
115
+
116
+
> [!IMPORTANT]
117
+
> This feature is still in early development and might not work as expected. No support is provided for this feature yet.
118
+
119
+
### Features in Development
120
+
121
+
-**Battery Status Sync**: Get battery status on any device when you connect your AirPods to one of them
122
+
-**Cross-device Controls**: Control your AirPods from either device when connected to one
123
+
-**Automatic Device Switching**: Seamlessly switch between Linux and Android devices based on active audio sources
0 commit comments