Get the latest tech news

Reverse-engineering my speakers' API to get reasonable volume control


I got some fancy new speakers last week. They’re powered speakers and they have streaming service integrations built in, unlike the 35-year-old passive speakers I’m upgrading from. Overall they’re great! But they’re so loud that it’s difficult to make small volume adjustments within the range of safe volume levels for my apartment. To solve that, I’m building a custom volume knob for them them that will give me more precise control within the range I like to listen in.

After exploring that web interface for a few minutes with my browser’s network dev tools, I found that the speakers expose a pretty straightforward HTTP API, including GET /api/getData and POST /api/setData, which allow me to read and write the current volume level, among other things. After that, I found that the speakers’ web interface has a page that allows me to download system logs, which turned out to include a copy of the part of the filesystem that stores the current settings! I tried to do that in a single HTML file, but ran into CORS issues when sending requests to the speakers, so I put together a tiny server using Bun.

Get the Android app

Or read this on Hacker News

Read more on:

Photo of API

API

Photo of speakers

speakers

Photo of engineering

engineering

Related news:

News photo

Fear of over-engineering has killed engineering altogether

News photo

Twitter API leak reveals group of protected users that are allowed to break TOS

News photo

Google slashes maps API prices in India – weeks after a competitor emerged