DEV Community

oneydef
oneydef

Posted on

I Reverse Engineered Nothing Earbuds to Build a Native Linux App

I Reverse Engineered Nothing Earbuds to Build a Native Linux App

If you use Nothing or CMF earbuds with Linux, you may have noticed a problem: there isn't an official Nothing X application for Linux.

I wanted to be able to control my earbuds without having to switch to another device, so I decided to see if I could communicate with them directly.

That's how EarA-linux started.

What is EarA-linux?

EarA-linux is an open-source native Linux companion app for Nothing and CMF earbuds.

It currently provides features such as:

  • ANC / Transparency modes
  • Equalizer
  • Battery information
  • Gesture customization
  • Find My
  • Low Latency mode
  • HFP support
  • Support for multiple Nothing / CMF models

The application communicates directly with the earbuds over Bluetooth and doesn't require the official Nothing X application.

GitHub:
https://github.com/oneydef/EarA-linux

The interesting part: the protocol

The biggest challenge wasn't building the GUI.

The earbuds expose functionality that isn't documented as a public API, so I had to investigate how the official applications communicate with the devices.

The project uses Bluetooth communication and implements the commands required to read and modify different earbud settings.

I also started documenting the protocol and the packet structure so that other developers can understand and contribute to the project.

Why Linux?

Nothing X is useful, but Linux users don't have an official equivalent.

I wanted something that feels like a normal Linux application instead of relying on:

  • a Windows installation
  • a virtual machine
  • a phone
  • unofficial web solutions

EarA-linux is built as a native Linux application and is intended to integrate naturally with the Linux desktop.

Current state

The project is still a development release.

It works with multiple Nothing and CMF models, but there are still plenty of things to improve.

I'm especially interested in testing with different generations of earbuds because protocol support can vary between models.

What's next?

Some things I'd like to improve:

  • More device support
  • Better protocol documentation
  • More configuration options
  • Better Linux desktop integration
  • Easier installation
  • More testing across distributions

If you own Nothing or CMF earbuds and use Linux, testing the application would be extremely helpful.

Bug reports, feature requests and contributions are welcome.

Links

GitHub: https://github.com/oneydef/EarA-linux

Top comments (0)