Readit News logoReadit News
dannyaziz97 · 5 years ago
I really love my Bose headphones and in the past year I've used them almost exclusively on my Mac.

Started running into problems where because I didn't have visibility on the battery level they would die on me during focused work or meetings

I know there's some way to get the voice assistant to tell me the battery level but that's not as useful as being able to glance in the top-right hand corner and having to move from my keyboard to press some buttons I can't see on my head is a bit silly?

So thanks to this repo (https://github.com/Denton-L/based-connect) and the ability to dump Bluetooth logs from Android to Wireshark I was able to figure out how the official Bose app communicates to the headphones not just to get information but also to send commands such as Connecting/Disconnecting paired devices, changing the noise canceling level and media control

It wasn't all easy, there's not great support for Bluetooth in the JS world and I wanted it to be cross-platform one day so Swift was off the table but it turns out to use the SPP protocol on Macos you have to go through the IOBluetooth APIs - Thanks to Pyobjc I was able to call the native Objective-C api's from Python and thanks to Pybluez I was able to use an interface that was a complete replica of Python's built-in sockets

Would to head some feedback

grishka · 5 years ago
Expected a github repo link but instead it's closed source and it costs $9 and it apparently doesn't even allow you to set the noise cancellation level. So it's $9 for an app that has two buttons that send bluetooth packets and it also reads the battery level in some clearly standard way because Android and iOS both show that natively. There's probably less than a screen worth of code.

edit: looking at the tweet[1] it's an electron app... An electron mac app for $9. Let that sink in.

[1] https://twitter.com/DannyAziz97/status/1389482681608679424

urda · 5 years ago
Honestly it feels really scummy to have reversed engineer (which itself is not an issue) the protocol, use a name way-too-similar too "Bose", closed source, and of course charging 9 bucks for a page of Javascript.
grishka · 5 years ago
I have no issues with reverse engineering, especially in the name of interoperability (which is btw an exception from copyright laws in many countries), but the rest... yikes.
neb_b · 5 years ago
Who cares how it's built if it solves a problem for people?
grishka · 5 years ago
In a $9 app that is this simple you would at the very least expect exceptional quality. But Electron makes that impossible.
iscrewyou · 5 years ago
On the plus side(sarcastically), an app that doesn’t have a subscription model!
xtat · 5 years ago
came here to say this- dont understand why this is so upvoted
some1else · 5 years ago
Great app! If you want to keep distributing it, you'll have to find a less "Bose-sounding" name. I am not a lawyer, but as far as I can tell: a) they can't prevent you from implementing a reverse-engineered protocol, b) they can take legal action against you for trademark infringement / damages.
rzzzt · 5 years ago
Re: a), the best thing is to document the protocol, then let someone else (who has not seen the insides of the original application) implement it based on the documentation.
stavros · 5 years ago
It doesn't sound like the OP has seen the insides of the original application either, sounds like it was just the protocol that was reverse engineered, from the packets.
codetrotter · 5 years ago
Agree. The name for this is clean room design.

https://en.wikipedia.org/wiki/Clean_room_design

abcd_f · 5 years ago
If they would want to make OP’s life difficult, they will find a way. Even through the protocol reversing angle.

Most likely there’s a clause in their EULA that prohibits reversing anything related once you start using a product. The only way around it is to show that you never accepted the EULA in the first place. That in itself is difficult, especially since the OP is being open about already using their products.

Not to be a skeptical old fart, but this won’t end well. Especially since it’s a $ software.

drcross · 5 years ago
>Even through the protocol reversing angle.

This is reverse engineering in the same way that I redraw a map of my drainage pipes when there's a leak in my house. My plumber is not going to sue me and neither will Bose.

nickserv · 5 years ago
> Will this void my warranty or destroy my beloved headphones? > > No! > Boze.app communicates with your headphones in the exact same way that the official Bose Connect app does.

I'm not sure how you can know that the protocol is exactly the same without access to Bose's technical documentation, and extensive testing on all supported models.

Furthermore, it would be Bose that decides what constitutes a violation of their warranty, not you.

This seems borderline unethical to me.

mmmmmbop · 5 years ago
Super cool project! Sharing two related pieces of feedback:

1. I'd be willing to buy the app, but I'm missing info on support guarantees. I.e. is there some commitment to support potential changes to the Bose communication protocol for some time period? Personally, I'd be hesitant to pay $9 for an app that might just break with the next Bose update.

2. I wanted to reach out to you to ask about 1, but I didn't find a way to contact you. I don't have Twitter, and there seems to be no e-mail address or anything on the website.

(Also related to 2: Not wanting to sound like a buzzkill, but I think at least in the UK you are legally obliged to have some contact information on your website. [0])

[0] https://www.legislation.gov.uk/uksi/2002/2013/regulation/6/m...

neurostimulant · 5 years ago
He does provide his email address on the purchase email.
ev1 · 5 years ago
This is insufficient; requirement is Before an order is placed You must provide: your business name, contact details and address
henvic · 5 years ago
I'd advice you stop charging and just place Amazon ads on your page. Besides being safer as people said, it'd easily generate more money for you.

Ads are not "worse", and it's going to be safer for you, and you could've made a lot more money from it because people would go to your website and many would download it, even if they feel they don't need it... Also, many people are interested in noise canceling headphones, and this would likely be how you'd make money out of Amazon's affiliate program :)

I myself have a Bose QC35 headphone, but use it on wired mode (to my Blue Yeti X mic), so I'd be one of the people who downloads it... but I wouldn't pay for it. However, if you had an ad there maybe I'd click on it if it showed the newer and greater 700 headphone with a nice price.

https://affiliate-program.amazon.com/

* I speak this from experience, as I made about ~500 USD with this post here https://henvic.dev/posts/homelab/ even though I added ads on it just when it was not hot anymore (had a few dozen thousands views, but mostly on the first days when I still didn't have ads).

inetknght · 5 years ago
No, do not place Amazon ads on your page.

Do not place any ads on your page.

henvic · 5 years ago
I'm gladly going to remove all my ads on my page if you promise to give me money through GitHub Sponsors or something lol

Money matters. Not everyone is rich to not care about that. In my case, what I make is still below what makes a difference in my life, but if I can multiply by 10 times it's going to make a lot of difference.

* I promise my ads aren't that intrusive. lol

passivate · 5 years ago
Systemic issues prevent individual devs from finding alternative means of revenue. Its easy for someone to say stop using ads, but most people here work for companies that advertise online, and thus their livelihood is interlinked with ads in some fashion or another. We can acknowledge this reality and simultaneously work towards changing it.
Humphrey · 5 years ago
I like the idea... But... My QC35ii's already:

- tell me the battery level when turn them on, and the batteries last for so long that they rarely get low enough for me to care what the level is.

- Have a button that cycles through which 2 devices are simultaneously connected. I can't imagine a system menu being anymore convenient than a dedicated button on my ear.

I wouldn't consider buying it unless it changed the deeper settings such as self voice level (I change this often while zooming). That's the only setting that doesn't have a quick shortcut physical button on the device.

jonathanlydall · 5 years ago
Thank you!

I have QC36ii's as well and I didn't know that I could use the headphones themselves to switch which devices are connected. I've always used the app on my iPhone to control this, which is problematic if I'm on a call on my computer and it's paired with my AppleTV.

Humphrey · 5 years ago
Hehe! I can now understand why you went to th effort of reverse engineering! But yes, just slide the power button past the on position.

First slide will tell you which device's are connected.

Subsequent slides will cycle through the device's in what appears to be most recently connected order. Subsequent slides cycle to the next device and when you hear the name you want, stop.

Also, since two devices can be connected at once, the device you least recently connected to will be disconnected.

It's super intuitive once you get the hang of it.

Dead Comment

callahad · 5 years ago
> Have a button that cycles through which 2 devices are simultaneously connected.

I'm feeling very dumb asking this, but... which button is that?

Humphrey · 5 years ago
The Power button. Just push it past the on position.

First slide will tell you which device's are connected.

Subsequent slides will cycle through the device's in what appears to be most recently connected order. Subsequent slides cycle to the next device and when you hear the name you want, stop.

Once device is connected, you can cycle again to select a second device.

Also, since two devices can be connected at once, the device you least recently connected to will be disconnected.

It's super intuitive once you get the hang of it.

jonathanlydall · 5 years ago
I wanted to know myself, so I just checked the guide on the iOS app which actually tells you this. The slider on right ear piece which is also used to turn the headset on/off. A short held slide to the right apparently switches connected devices, while a long held slide opens it for pairing.
dijit · 5 years ago
For those on Linux; I had great success with the “based-connect” program, which enables me to configure “known devices” (which one is primary and so on) and, crucially, configure noise cancelling.

https://github.com/Denton-L/based-connect