Hacker News
5 years ago by dannyaziz97

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

5 years ago by grishka

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

5 years ago by urda

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.

5 years ago by grishka

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.

5 years ago by urda

yeah I should be clear that the issue isn't reverse engineering, it's everything else around it.

5 years ago by neb_b

Who cares how it's built if it solves a problem for people?

5 years ago by grishka

In a $9 app that is this simple you would at the very least expect exceptional quality. But Electron makes that impossible.

5 years ago by iscrewyou

On the plus side(sarcastically), an app that doesn’t have a subscription model!

5 years ago by xtat

came here to say this- dont understand why this is so upvoted

5 years ago by some1else

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.

5 years ago by rzzzt

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.

5 years ago by stavros

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.

5 years ago by codetrotter

Agree. The name for this is clean room design.

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

5 years ago by geofft

In the US at least, clean room reverse engineering is not required (see the "case law" section of the article, which documents two cases where clean-room separation was not maintained and the reverse engineers still prevailed) nor does it necessarily protect you (all the examples in the article predate the DMCA, which puts significant restrictions on reverse-engineering itself, and as the article points out, the clean-room approach is it relevant for patents).

5 years ago by abcd_f

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.

5 years ago by drcross

>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.

5 years ago by eps

They won't sue. They will just threaten to do that and the OP will need to decide if he can afford to "engage" with them even if he may technically be in clear. To argue that reversing a protocol is not an issue you'd need to be in front of a judge and it's expensive to get there.

5 years ago by nickserv

> 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.

5 years ago by mmmmmbop

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...

5 years ago by neurostimulant

He does provide his email address on the purchase email.

5 years ago by ev1

This is insufficient; requirement is Before an order is placed You must provide: your business name, contact details and address

5 years ago by henvic

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).

5 years ago by inetknght

No, do not place Amazon ads on your page.

Do not place any ads on your page.

5 years ago by henvic

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

5 years ago by elliekelly

They might not be visually intrusive but they are indeed very intrusive. If you went to the mall would you find it intrusive if Macy’s put a little beacon on your shoulder every time you walked in the door so they could follow you around and track your movement for the next few days? The beacon is small and unassuming and tasteful - you’ll hardly even notice it! Who cares? A stalker is a stalker no matter how nicely it blends with the aesthetic.

5 years ago by bassdropvroom

> 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

OP's product doesn't rely on goodwill of individuals though. You get the app for $9. Full stop. Not "please donate $9 but you don't have to if you don't feel like it".

5 years ago by 12ian34

Ads aren't just intrusive, they're a manipulative dark pattern

5 years ago by jen20

It doesn't matter how unintrusive _your_ ads are - the shysters that make up most of the industry have poisoned the well, making _any_ ads unacceptable.

5 years ago by passivate

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.

5 years ago by Humphrey

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.

5 years ago by jonathanlydall

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.

5 years ago by Humphrey

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.

5 years ago by hanselot

Are we genuinely in hell? Are these real people?

Anyone that has issues with religion better not be buying Apple products, because sir, you are in a cult.

Disclaimer: I'm not religious, but having been religious before, its not hard to spot a cult.

5 years ago by callahad

> Have a button that cycles through which 2 devices are simultaneously connected.

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

5 years ago by Humphrey

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.

5 years ago by jonathanlydall

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.

5 years ago by 7ewis

Oh wow, owned mine for years... never knew that.

Often been annoyed when despite nothing playing on one device, it wouldn't switch. Great tip, thanks!

5 years ago by synecdoche

> Have a button that cycles through which 2 devices are simultaneously connected.

I understand this as being able to cycle through all combinations of two stored devices. I'm only able to select the next previously paired device, not a combination of two devices. Have I misunderstood the GP? I can't find any mention in the help about selection of two devices, only iteration of previously paired devices.

5 years ago by dijit

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

Daily Digest

Get a daily email with the the top stories from Hacker News. No spam, unsubscribe at any time.