Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Control your Bose headphones from your Mac's menubar (boze.app)
450 points by dannyaziz97 12 days ago | hide | past | favorite | 239 comments

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

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

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.

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.

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

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

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

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

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

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.

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.

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.

Agree. The name for this is clean room design.


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

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.

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

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.

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

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

He does provide his email address on the purchase email.

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

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.


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

No, do not place Amazon ads on your page.

Do not place any ads on your page.

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

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.

If you're this worried about being tracked, you can always choose to turn off cookies, JavaScript, and maybe try the ToR browser. No problem with this either!

If I placed a magnetic beacon holder in my arm, I sure wouldn't bother. That is the case with most browser users, unfortunately. If they aren't happy with that, they might consider switching browser vendors to ones that protect more their privacy.

Awful as they might be, ads are part of society and a source of revenue (and information!) for many.

> If you're this worried about being tracked, you can always choose to turn off cookies, JavaScript, and maybe try the ToR browser.

Half of the internet doesn't work without JavaScript these days, the rest barely works on TOR because of the likes of Cloudflare.

I do take steps to prevent internet stalking but I don’t find the “stalkers are part of society and need to earn a living, too” argument all that persuasive.

Guess what I find the 'remove all ads' arguments? Much less persuasive.

Then it’s a good thing I haven’t put forth such an argument! Advertisements aren’t what I take issue with - it’s the tracking that comes along with them that I find repugnant.

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

OP's comment was for them to remove the $9 and go ad supported though.

That's right. Then when someone mentions they'd rather have a product that can be bought because ads and trackers are the devil, OP suggests they'll remove ads if they pinky promise to to sponsor. Buying a product is different from being a sponsor.

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

I'm not the biggest fan of ads either, but "manipulative dark pattern"? Come on now.

If you are going to call ads a "dark pattern", you might as well call capitalism a dark pattern. That's not say either are positive, but I think your terminology is extreme.

Going by the wiki[0], I absolutely stand by my comment that ads fit this description.

[0]: https://en.wikipedia.org/wiki/Dark_pattern

Many ads fit that description. Many don't. Characterizing ads in general as a dark pattern dilutes your message about the problematic ones, in my opinion.

Some of them are just telling me about, say, a TV show or movie that is coming out. Nothing deceptive, nothing bothersome about it. I think it is quite a stretch to consider that the term "dark pattern" applies to that.

I understand that ads that are targeted are bothersome to many due to privacy issues, but I personally don't mind that Amazon and Ebay regularly show me ads for skateboard/roller sport equipment, music keyboards and other midi controllers, shoes of styles I like, and so on. But you seem to be simply saying ALL ads, even untargeted, non deceptive ads such as for a movie or car or something are "dark patterns." I don't get that.

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.

Okay, but now how about you pay me and everyone else who uses ads to remove them?

If you provide a service I want, sure. I’m more than happy to pay for software and moderately happy to pay for subscriptions, but with it I expect ironclad guarantees about data being local, and absolutely no tracking.

Is this you? https://github.com/jen20

If so, maybe you want to use my https://github.com/henvic/httpretty

Just give me, say, $300/month, and I'm taking out all ads from my website. Don't lose this unique opportunity :P

> Is this you?


> ... maybe you want to use my https://github.com/henvic/httpretty

No, because I have a commercially licensed version of Proxie available, which is more flexible since it doesn’t require code modification, and (in my opinion) produces prettier output.

Additionally, there is no incentive to buy httpretty since it is distributed under a permissive license - by using it, I would likely never see an ad (though I would, of course, carefully audit the code before adopting it to ensure it does not do anything underhand).

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.

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.

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.

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.

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

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

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.

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.

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!

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

> I can't find any mention in the help about selection of two devices, only iteration of previously paired devices.

When a new device is selected, the least recently selected device is disconnected. So once your first device is selected, start cycling again and select your second device. It's just a FIFO (First in first out) queue of devices.

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.


Charging for a Bose product with a Boze name.. You’re going to get sued.

If it was free or open source you could argue you’re not profiting from it, but the way it’s presented..

You’re selling software with the likeness of a brand for the products sold by the brand.

Hope you’ve got a lawyer.

You’re probably lucky that they’re a research driven organisation given the founder donated majority shares for it to MIT with a mission lock clause which means it’s never going to be acquired by a tech giant or private equity. This is good because it means they don’t have for profit lawyers on staff to fuck over people like you. Nevertheless you’re still screwed.

The maker has been advertising the product like crazy and even though they have been told this already has yet to change the name.

So more then likely expect this to be taken down in the next few weeks.

I would expect a C&D from a lawyer company any day now, and more then likely they will ask for the domain as well. Since ACPA will classify this as "cyber squatting" since you are charging for the product.

You're also reverse engineering which is a gray zone as it is AND charging for the result.

So I wouldn't be surprised if instead of a C&D they just went straight to lawsuit.

I don't take quite the same bearish view on this app.

I suspect the "reverse engineering" here was just looking at Bluetooth LE GATT attributes and values, which you can just look at using something like Bluetility [1]. There appears to be some exemptions to DMCA for compatibility so long as the author didn't copy Bose' code, but IANAL. [2]

The name I think is the more challenging part because it's very close - probably a C&D if it becomes popular to change the name.

[1] https://github.com/jnross/Bluetility

[2] https://www.eff.org/issues/coders/reverse-engineering-faq

This is a trademark issue, not a copyright one.


In the audio industry, professionals describe Bose as a litigious company - so its more than likely to get litigated. Bose has an army of lawyers on staff for stuff like this.

In this case it would be completely normal and legitimate for Bose to sue.

You need to defend your trademarks otherwise courts will render them moot.

> You need to defend your trademarks otherwise courts will render them moot.

Sort of.

You need to prevent your trademark from becoming generic.

You also need to go after infringers in a reasonable amount of time, or you may lose the ability to collect monetary damages from that particular infringer at a later time (laches); however, progressive encroachment mitigates this to some extent (if you ignore a minor infringement, you can still sue if the infringement substantially expands, overriding the laches defense).

There's no requirement that you defend every case of trademark infringement, that's just overzealous lawyers who like to get paid a lot of money for sending threatening letters.

In this case Bose could ignore Boze and it wouldn't cause any issues. If Boze later expanded their business in a way that would increase the threat to the Bose trademark (for example, launching their own branded headphones, or directly competing with a Boze iOS app) then Bose could sue at that time under the progressive encroachment doctrine.

All that said,

> In this case it would be completely normal and legitimate for Bose to sue.

is completely correct.

To their defense, Boze _really does_ sound similar to Bose, and it can be called intentionally confusing.

Calling it anything else would be fine.

The tone of this comment is unfortunate. Likely, the app will not make enough money for bose to care, and if it does, he’ll receive a cease and desist. But, “hope you’ve got a lawyer”? Serious? Why the vitriol towards a maker? The subtext of your comment is the OP is stupid. They could just change the name and destroy half your argument.

Unfortunately Bose HAS to care in order to protect their trademark. That’s literally how trademark works. It has nothing to do with how big they are. Lawyers are 100% going to get involved and any of your bizarre posturing to the contrary is ridiculous.

What if they don‘t know officially?

Trademark has to be actively defended. It is quite unlike copyright in that respect. They can allow you to use the name under generous conditions, but if there is any chance that they could have reasonably known, and this post is definitely proof of that IMO, then they have to defend their trademark against infringement.

Bizarre posturing? That’s a strange choice of words. I didn’t say lawyers wouldn’t get involved, but at any rate, the chance isn’t 100%. I said OP is not likely to be sued.

Maybe not sued, but it’s very likely they will get a “cease & desist” letter soon.

Didn't intend vitriol or malice with that statement. And it's not about how much money they make - I suspect they probably at most made $100 off of this, it's the fact they're even charging for it - puts it squarely in the "for commercial gain" camp to the lawyers.

But the OP clearly doesn't have much of a background or worry for this, likely due to inexperience, age or just doesn't care. If they don't care, all the power to them - but I think they should be worried because litigation sucks for anyone.

He missed a step by not calling it "Bozo".

The "consumer confusion" headlines and legal filings would be works of art.

Exactly. Like when Nathan Fielder opened a coffee shop named “Dumb Starbucks”, called it a conceptual art project, and operated for [:strikethrough: months] days, making hundreds of thousands without ever getting sued.

    > "and operated for months"
3ish days: opened Friday evening, closed down on Monday. And gave away the coffee (OK, I'm sure there was a fair amount made from the TV show).

I have the same feeling. OP might can ask for donations, but charging is way too risky

I don't think free/paid/donationware matters. There are plenty of both free and paid utilities around for working with AirPods, but they're not from "Appel".

Noncommercial use can be one factor in copyright fair use. (And it's a factor in a defense. The other party can still take you to court.)

This seems IANAL to be, reverse engineering aside, to be more about trademark. I agree with the other comments that cease and desist now is the best path to hopefully avoid expensive legal bills.

Apparently there is a company called Appel, Inc.


Of course, they're not in software or hardware, so your point stands.

He'll just get a cease and desist. No need for lawyers unless he wants to fight it, or if he is making significant money off this app (which I doubt).

Good chance Bose will be aware of the bad publicity it would create to be too aggressive about this, it just would make them look bad for not providing such a thing in the first place. They have to defend their trademark, yeah, but unless this is actually a well known product, they aren't at risk of it being genericized.

This isn't a david vs goliath this is a clear violation of trademark law and other laws and borderline illegal.

They reverse engineer a protocol, built an app for it, bought a domain with a single character (s -> z) difference (cyber-squatting) and are charging for it.

That is not cyber squatting... it's not like they are trying to get people who accidentally misspell Bose. I don't think they are trying to deceive either, they are making it crystal clear that this isn't a Bose produced app, but they are also making clear that it is FOR Bose devices.

And it isn't a "clear violation of trademark law" either, almost nothing is clear in trademark law until a court makes a ruling.

Regardless, fine, big corporations will do what big corporations will do. I don't think the Bozeapp guy is risking anything other than having to change the name, or possibly pull the app. Big deal. "Hope you hire lawyers" is an extreme comment.

I wish more of us in communities like this would cheer on the little guy, rather than jumping to the defense of big litigious companies (before they have even acted). Reverse engineering a protocol, because the big company didn't bother accommodating your device, seems well within the spirit of a forum called "Hacker News." To me, reverse engineering a protocol so you can add functionality is no different from what hot rodders have done to their automobile engines for a century. You're figuring out how it works so you can make it work more to your liking.

(and yes, in my opinion it is totally a David and Goliath situation)

> They reverse engineer a protocol, built an app for it, bought a domain with a single character (s -> z) difference (cyber-squatting) and are charging for it.

None of these things are crimes.

> None of these things are crimes.

Perhaps, but no one is talking about criminal charges. Torts, like the trademark violation here, are still illegal and a basis for legal consequences, you just don’t get prison, death, or other uniquely-criminal penalties for them.

You need to at least use a different URL. They are going to pinch that off you in no time.

Hopefully this isn't the only possible outcome...

Someone at Bose may also be interested in this kind of development.

The best outcome is just to change the name right now and be careful not to violate trademarks and avoid any chance of conflict. They won’t be sued if they hurry to rename it to something generic, change the domain name, change the wording to say “compatible with headphones made by Bose”, include prominent text that says “Bose is a trademark of Bose Corporation and this product is not endorsed or supported by them in any way”, stop using their trademarks incorrectly (some instances are improperly lowercase), etc.

They can even redirect the old domain to the new one for a while. A company like Bose is not going to punish a mistake that was corrected in good faith in a timely manner.

Interestingly in OP's tweet (same username as his HN username): [1], he credits [2], who made a Linux CLI for the same functionality, and named it "based-connect". And the CLI-coder got a summer internship at Bose, so it doesn't seem Bose was that mad.

But still, using the name Boze is cease and desist magnet.

Makes me wonder how much work OP did, did he just wrap the CLI around an Electron UI?

[1] https://twitter.com/DannyAziz97/status/1389481926113775616 [2] https://dentonliu.com/projects.html

"Just" develop a nice UI?

That’s a pretty low bar especially compared to reverse engineering a hardware communication protocol

I don't know if this app works or not, but if there were a piece of software that I could use for my Sony XM2 headphones to cleanly switch between devices, it'd be in "shut up and take my money" territory by default. Was tempted to buy the XM4 headphones because I thought this was what they were advertising with the bluetooth switching, but I've read that feature doesn't work well for the devices that implement it (not the Sony headphones specifically).

So agreeing with everyone, go with a different name. Also selfishly, try and figure out a way to do this with non-Bose headphones and add it.

For what it's worth, I just replaced my o.g QC35s with the XM4s and get along just fine with it.

I keep it connected to my Pixel 5 and a Pi running OSMC attached to a TV and can pretty seamlessly switch between the devices by playing media on whichever device I want to hear.

That’s really cool. Is there a way to, in my case, switch from iPhone to PC and back pretty simply or is it a matter of syncing?

Is it a Bose product? It sounds like he reversed engineer the protocol for controlling bose headphones. That's OK. He is infringing on the trademark though.

Even if he weren't infringing on the trademark and everything was above board, Bose would likely still sue him as you can sue anyone for any reason. Would they win?, probably not, but does he have the money to make them lose?, definitely not.

Is that what you'd do if you were Bose? That seems incredibly foolish. It would waste a lot of money, and get them bad publicity, only to stop someone who actually is making their products more attractive.

A smarter idea would be to send a cease and desist. Maybe before that, a nice email to start with. "Hey, we like what you're doing, but unfortunately you'll have to change the name."

"You’re going to get sued."

I am not sure anymore. With twitter and cancel culture around? I can't imagine the legal fees and terrible optics would NOT be worth this. Maybe if this person was Sony with deep pockets. But there is no reason for Bose to chase some app that makes $50 a month.

The problem is the name: it's too close to the protected mark. You need to enforce your trademark or else you weaken the protections afforded by it.

I doubt it would come to a lawsuit though unless the developer resisted. More than likely Bose will send a C&D and the developer will comply. It's a fairly reasonable request in this case.

This sounds so great! I wish I could do this for my Sony Headphones app.

I use my Sony WF-1000XM3s almost exclusively with my Mac and it's a shame that each time I need to pair with my iPhone to change the settings. I could possibly use an external software and set the settings to default from the Sony Headphones app but then I won't be able to control Clear Bass, so well yes, there needs to be a Mac app for Sony too.

What settings are you changing? I have the same headphones and never change anything. I use the Wavelet app on my phone to properly balance its frequencies.

I'm using the Sony Headphones app for mainly changing the Clear Bass to my liking and for checking the battery status of the case and the buds. Just to be clear, I'm referring to WF and not WH.

Battery levels show up natively on iOS so I’m not sure why they don’t on macOS as well. Starting to think the macOS Bluetooth stack is just incomplete.

Totally agree. Just to be able to see the battery level on macOS would be a great improvement.

Guess I need to start looking at macOS development properly and learn reverse engineering. Price worth paying for that additional flexibility haha since I'm pretty sure I'll be upgrading to another pair of Sony wireless buds or the WH series if I have to.

All you have to do is tap the power button on the XM3 headphones and it will tell you the battery level.

I have trouble with the value proposition. If I understand correctly only the noise-cancelling toggle is a proprietary Bluetooth feature of the Bose? Since f.e. Toothfairy[1] also handles the connection of -all- BT devices for your mac (not only Bose headphones), shows battery info and is $ 5.99.

[1] https://c-command.com/toothfairy/

This is interesting. The biggest problem I have with my Bose is that they are listening to another device (e.g. my phone) instead of my macbook, even if they are Bluetooth connected. What I would do with the authors app is disconnect my phone from the headphones. I'm not sure I can do this with Toothfairy.

Not sure if this is on other Bose headphones, but my QC35's can cycle through known devices with the power button

[edit] removed assumption about functionality presence on all Bose headphones

By chance do you know of a Windows alternative (likely w/o the battery level indicator and the like, but specifically the redirecting the headphones/airpods/whatever to the device or to another such as a paired phone part)?

How did you figure out the Bluetooth protocol and commands? I have a Cannondale app for my bike, which is reading the Bluetooth wheel sensor to display speed and mileage. I'd like to build my own app for it but clueless on how to figure out the pairing and transmitted data.

The ANT+ protocol is pretty standard in cycling tech, it might be worth seeing if you can reverse engineer anything using that, as it'll likely have more standard data than trying to reverse engineer BLE payloads

He mentioned Denton Liu in a tweet, who made this: https://github.com/Denton-L/based-connect

You might enjoy this guy who figured out the Bluetooth protocol for good under desk bike: https://codaris.github.io/UnderDeskBike/

@dannyaziz97 can you explain why you're promoting this on twitter and in the title as you reverse engineering the iOS app when you've used a pre-existing library that does all the work? It's quite dishonest to not lead with building on the work of others to promote your product.

I have no idea if that's a real issue or not, but have changed the title from "Show HN: I reverse engineered the Bose iOS app and rebuilt it for Mac" to what the page itself says, which is more informative anyhow.

It seems someone has taken on the spirit of "Move fast, break feelings"


The Bose app for iOS is a dumpster fire. I fired up Charles Proxy to poke around and found out it was using the Facebook SDK. I just want to control my headphones—I’d prefer it if I didn’t have to send telemetry to FB to do that! (App since deleted and I’ve accepted having fewer controls.)

> Windows 10 and Linux support coming soon

Great to hear! I have had a lot of issues with getting high quality bi-directional audio (e.g. for video calls) to work with my QC35s on both Windows and Linux on both my Thinkpad and desktop since it defaults back to the HFP profile instead of A2DP. I don't fully understand the problem and I don't get why it seems to work fine on Macbooks. I'd (unfortunately) be happy to pay the price you've quoted for this app if it solves that problem well.

I use QC35s with Windows and Linux and have always found them excellent despite having what appears to be the same behaviour as you. This is what I have:

Once paired, two audio output devices are created - "Bose QuietComfort 35 Stereo" (A2DP) and "Bose QuietComfort 35 Hands-Free AG Audio" (HFP). The A2DP one is the default output source for the PC, so I get this behaviour:

* When I'm not in a call of any form, normal system audio (Youtube, Spotify etc.) comes through A2DP with good quality

* When I start a call, the headphones switch to HFP (you can tell due to increase in hiss) and audio quality drops. During this time you can't hear what the PC is playing over the A2DP output (unless I switch the default Windows output).

I'd be curious to know if you get different behaviour on Macbooks because the above "one profile at a time" always seemed to me to be a fixed limitation of the hardware and Bluetooth.

Interesting that the HFP is usable for you. When I've tried to get it working on Linux using blueman, pavucontrol and pulseaudio-bluetooth, switching to HFP is so terrible that I default back to the trusty 3.5mm TRRS jack for calls.

I haven't personally tried it on a MacBook but I do know that colleagues seem to use their bluetooth headphones just fine with no clear quality drop.

This is due to PulseAudio not having proper support for decent quality HFP/HSP. There was a PR to PulseAudio for this exact thing that seemed to have been completely stranded: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge...

Edit: actually there might have been some movement on this after all? Some comments in that ticket seem to indicate that this has been improved on master.

Thanks for linking this, I hadn't come across this before. You're right there does seem to be some very recent progress. I'll have a go with what's in the master branch there.

The latest development version (unreleased) of Pulse Audio has great support for HFP with WBS/mSBC.

I've been using it for weeks (months?) with great results.

Wow, wonderful news. Thanks!

Yes - I get the same (good) performance as Windows on multiple Linux machines. I'm running Fedora which may help, but I had to do no fiddling - just worked 'out of the box'.

I've been using QC35s with a Macbook for a long while and thanks to your comment I finally understand why sometime the headphones would switch to a different "mode" where there is a lot of hissing in the background and the button (which I have configured to switch NR levels) wouldn't do anything.

Super interesting, thank you!

So apparently this "mode" comes from the headphones switching to HFP. Interesting that in this mode the left button presses are ignored...

I'll try to notice when it's doing this. I have the feeling it's when I am on a call but not all programs do that. I use Slack, Facetime, and sometimes Google Meet via Chrome. I'm pretty confident only some of these trigger the switch, and whenever the call ends the phones go back to A2DP.

It's absolutely infuriating that there's no easy way to configure this. I'd love to be able to turn off HFP altogether to always ensure that I use an external mic.

Instead every app seems to figure out their own behavior for this.

Current Bluetooth profiles don't support high-quality bidirectional audio.

"Bluetooth LE Audio" is supposed to resolve this in the future.

Works fine with pipewire; same high quality as what I experience when connecting to my Android phone;

Keywords to search for:

bluez5.sbc-xq-support = true

bluez5.headset-roles = [ hfp_ag ]

bluez5.msbc-support = true

I will check this out, thanks.

Interestingly, I have the opposite problem! On my Windows computer and Android phone, I get decent quality bidirectional audio for calls, but on my (2014) Macbook it always switches to mono.

I was all excited about this and then I saw that it is a paid app with no access to the source.

I don't think you're quite the target audience for this then.

It's $9... And most apps don't give you access to source. This seems very reasonable.

Would you still pay for it if the source were available? (Fellow indie hacker here)

Not OP, but I would and I have (Blink term emulator for iOS)

I bought it because i couldnt be bothered to set up XCode, figure out the build, and sideload it. Im not a pro-developer so that always takes me time. Also the price was reasonable. In fact, that the source is open encouraged the purchase for many reasons.

I think one of the problems of Stallman and the GPL (I love Stallman, anI think he was the most prescient visionary of the field of computing as it pertains to society) is that there is little recourse for a GPL project to get punked by a freeloading company (who will often not even acknowledge their use of GPL nevermind open source their code). I think Stallman and the GPL are still right, but there are issues that need to be better addressed (i don't know how)

I might not need OP's app but generally for apps I do need, I'm happy to pay some premium for open source for the added trust and risk of being ripping off.

yes. there's a problem with the QC35 I want to fix. It will beep everytime it loses or gains a BT connection. when I'm watching a movie and my phone is in the other room, the headphones constantly connect and disconnect from the phone, making an incessant beeping.

Hacker News is a strange combination of capitalist and libre. The man delivers value. Why should you be entitled to the fruits of his labor for free?

FOSS is a gift. No one is obligated to give a gift.

as others have pointed out, he'll probably make more money giving this away and putting ads on his page.

All these things that require and support only a mobile app to set up are tremendously irritating. I use my headphones with my Mac and would like to be able to configure and update them there.

Can we get over this "mobile is replacing everything" meme? It's obviously not happening. I never thought it would happen, but a bunch of people started predicting it via faulty reasoning by loose analogy with the mainframe to PC transition.

You don't need a mobile app to set these headphones up at all. Everything is available on the device with phyiscal buttons (part of the reason it's such a good pair of headphones), the tech existed before people became conditioned on having apps for everythng.

As far as I know, you can't manage the list of paired devices from just the headphones, as well as managing the noise cancellation level on the original QC35.

While the part with configuration is true, it is at least possible to update some of the headphones using https://btu.bose.com/#section=install

I tried the app on my mojave macbook and it's throwing an error when trying to connect to the headphone (I sent the details to your email). Hopefully it's something that easy to fix as there are many people like me who still stuck on mojave for the time being due to 32-bit apps support.

Not sure if it works, but there's an open source version of this one for Sony headphones.

Edit: forgot the link to repo: https://github.com/Plutoberth/SonyHeadphonesClient

I thought this sort of this was expressly verboten by the various Apple dev agreements?

     You may not and You agree not to, or to enable others to, copy (except as expressly permitted under this Agreement), decompile, reverse engineer, disassemble, attempt to derive the source code of, modify, decrypt, or create derivative works of the Apple Software, Apple-issued certificates or any services provided by the Apple Software or otherwise provided hereunder, or any part thereof (except as and only to the extent any foregoing restriction is prohibited by applicable law or to the extent as may be permitted by licensing terms governing use of open-sourced components or sample code included with the Apple Software).

It's not Apple software though, right? It's Bose's software.

I am not sure how ownership is defined for apps in the app store. I know they have access to better lawyers though.

This app isn't in the store.

But the app that was reversed engineered was right?

Well done, but as others have said, change the name asap.

Is it a web app? UI doesn't look native to me

Based on this tweet by OP, it's Electron + React: https://twitter.com/DannyAziz97/status/1389482681608679424?s...

A heads up that this may be a scam.

I purchased the add-on yesterday and never received an email with a download link. I emailed Danny twice, per his website's instructions in case the email was not received, and he's not responding. Sure it's only been 24 hours and I'll wait a little longer before doing a charge back, but just a warning for the wise.

@dannyaziz97 if you see this, please either deliver on your product or refund me my purchase.


Just bought it! I'd recommend adding SPF, DKIM and DMARC record to your domain so that emails don't ends up in spam (that probably the reason they currently do).

Also, please test your download page on different browsers.

It's neat that it shows the Bose devices' battery level.

AFAIK the Apple APIs don't display that on macOS because it doesn't fully implement the Bluetooth spec (it does on iOS).

One of my apps gathers battery info for all almost Apple devices (and some non-Apple), but I had trouble getting battery info for Bose, Logitech, Sennheiser (etc..) bluetooth devices without very low-level hacks that I wouldn't ship in an app destined for casual users.

On a similar note, I love my QC35s for the simple fact that this kind of an interface is available for them in general—I haven’t been able to find other Bluetooth devices that have a controlling app like this, though maybe I’m looking in the wrong places.

Does anyone know of any Bluetooth adapters that have a connection app like Bose Connect that would allow me to add Bluetooth to an existing receiver via RCA? That would be awesome!

Battery level is way off from what my Bose headphones say. Shows my iPhone twice, trying to connect to them say failed to connect. Eh, at least it was only $9.

I am feeling weird about this one because I'd totally pay for this app, but not $9. On one hand, I understand that the author spent a lot of work on it, and $9 is not that big a price, but somehow my intuition vehemently protests it. If it costed under $5 I'd probably not even think about it. Maybe my intuition is messed up by years of free stuff.

Does anyone know of other Bluetooth adapters that do something similar to the Bose Connect app? Where you can specify which devices are connected to it like that?

Ideally I’d be able to use an adapter to pair to a set of speakers I use on my desk, and be able to specify which devices are connected to those speakers. I don’t care whether it’s a desktop or mobile app

Yeeh. Can you make it for iOS as well? I would love an alternate app that does not send all my data about what im hearing to bose..

"All my data"? What data are you referring to specifically?

Awesome stuff!

Wish someone would do this for Logitech Harmony remote controls.

1. The software was terrible but hardware was awesome.

2. The entire line is discontinued.

Could you give some hints how this was done? There is an app for Boss's WAZA-AIR for Android and iOS that I'd really like to have on my Mac. The app itself is much more complex so the question here is if it matters? Or you just took a blackbox and made it run on Macs?

I definitely don't get people here protecting Bose's proprietary sources. It's a consumer-unfriendly with bad customer support that just keeps it products dying.

I'd wish I looked at their user forums before buying QC35.

While your at it, might as well add a 'disconnect on sleep, reconnect on wake' option too. My bose headphones would stay connected to my laptop often even after I closed it and it got annoying to switch them to my phone.

Looks like it does not handle firmware updates, which is a plus. I uninstalled the app when they started rolling a firmware update to my QC35 that was widely reported to reduce the effectiveness of the noise cancellation.

FYI, you can officially roll back firmware to a specific version from Bose, and there are 'hacks' [0] (simple MiTM) to allow downgrading to any version.

0. https://github.com/bosefirmware

On a side note: some while ago MacOS was showing battery status for bluetooth connected headphones. Now it doesn't. Is there any way to turn it on again? On the other hand: iPhones are still showing battery level.

It displayed battery level for the Magic Mouse as well at one point.

It still does

Has anyone replaced the battery in their QC35's? Mine are getting older, and the battery is still going fine, but I haven't found a reliable source for batteries. Maybe it has changed in 6 months.

Is there a link to a deep dive into the reverse engineering of the app?

This can be done with blueutil (available in brew).

`blueutil --paired` to list devices and their addresses, then `blueutil --connect <address>` and `blueutil --disconnect <address>` to switch.

I doubt you can run blueutil directly on the headset. This app controls the headset's pairings, from the Mac.

Sorry, a little off topic: iOS and iPasOS apps generally run fine with macOS on M1 Macs.

Neat project, I hope the author doesn’t have legal hassles.

As other people wrote already - you should rename the app, or you will get sued for trademark infringement, soon.

Great delivery with no app stores involved. I can totally see this app grow to support more devices.

I wonder if it supports Bose on-ear wireless… Is there a compatibility table somewhere?

Was going to buy... but unfortunately it's credit card only :'(

The battery depleting as you scroll down the page is a nice touch.

Do we have something similar for Sony Headphones WH-1000

Is this legal?

That's a program that you can run on your machine to interoperate with your peripherals. If we have concerns about this being legal, our standards for ownership are way too low.

The problem isn't the functionality -- it's the branding. boze.app for Bose headphones. Theres too much likeness.

The program, yes. The name, probably not.

Yeah, the Bose legal department is probably laughing right now at the easy slam dunk...

To elaborate, the lawyers will probably say the fact that it's made to work with their headphones, and the name which can be confused with theirs, means it's a misuse of their trademark, and it's confusing enough that people might think it's an official Bose app, and who knows what sort of nastiness might be hiding in there.

Should've called it "esob app" or something. Or wait for the cease and desist and rename it to "Butt-Head Headphone Company app" (reference: [1])

[1] https://en.wikipedia.org/wiki/Apple_Inc._litigation#Libel_di...

But then there would be a bit of a Streisand effect - as it draws attention to their lack of a non-phone tool to control their expensive headphones.

If they were to just shut Boze down, then they'll have angry customers.

If they were to create their own version of the tool, then most people would be happy.

If they were also prepared to give the Boze creator a fraction of the money earmarked for their lawyers, to pull the app and point to the official one - then everybody's happy.

To the corporation, the value of protecting their trademark vastly outweighs any profit loss from pissing off the couple of hundred people who are using this app (who, coincidentally, already own Bose headphones).

And not because they are evil... IIKC you have to demonstrate your credible effort in defending your trademark or you risk legally losing it. So even if you are ok with such use, you still have to defend your trademark legally or it can bite you in the future.

Which is always where these projects get screwed: the lawyers are able to get easy cease and desists and make credible threats for leverage merely due to trademark law; and yet somehow people make this same mistake over and over again :/.

The fact that it's sold, most likely not.

That makes no difference: while I am not a layer and you absolutely should contact your lawyer before doing something like this to get your ducks in a row (and generally you would thereby be a fool to use what I say as "legal advice"), the relevant fair use here comes from legal precedent and even explicit exemptions required to ensure "software interoperability", not some concept surrounding "non-commercial use" (which I think is highly unlikely to protect you in almost any situation).

I think so. I believe that the Oracle vs Google case gave legal precedent that recreating the functionality of APIs from other companies is fair use.

My understanding of that case is the ruling was very specific to it, the judges tried very hard NOT to make an precedent.

cool, can you add an audio equalizer ? :)

Can confirm. I made the first unofficial Dropbox client for Android years ago called "Droidbox". Different name, different logo, explicit labeling of "unofficial" and they still wanted to sue the pants off me.

I made the first unofficial Google Voice mobile app back in the day, and less that 100 people ever used it, so I didn't hear a daggum word from them. Would have been nice to catch their eyes though.

Interesting. I once wrote/sold a voicemail-reading app that logged in, scraped Vonage's web site, and let you listen to your voicemail. I was careful to not use trademarked image assets, but I did mention that my software was compatible with their service, mentioning them by name in the app store description. They never went after me! Maybe I got very lucky, or I was just small potatoes. The app wasn't popular, so they didn't think they could squeeze any money out of me (they would be right).

In theory, this should be okay under "Nominative Fair Use": You're only using the name to refer to the actual thing. People are more justifiably sued when their name for their product can be confused as being possibly associated with whatever they work with.

In practice, you can get sued anyway. You'll probably win, but getting sued sucks even if you win.

Legitimate question, from someone who had just built an app (that will have a cost) that is a helper to Dropbox and has 'Dropbox' in the name.

Where do you think the line is? There are several apps on the Mac app store that have 'Dropbox' in their name and are charged. Is the difference they they are all 'sidecar's that rely on you have Dropbox?

Without a license agreement they're all trademark violations. Pick a non-confusing unique name to save some trouble.

Apparently Box is not confusing with Dropbox.

Box pre-dates Dropbox by a couple of years.

I wonder why they didn't go after a competitor named "Dropbox".

Some negotiations probably happened behind the scenes.

BOX, INC. v. DROPBOX, INC. | United States Patent and Trademark Office [1]

[1] https://ttabvue.uspto.gov/ttabvue/v?pno=91200450&pty=OPP&eno...

We detached this subthread from https://news.ycombinator.com/item?id=27035901.

Did you tell them you could build such a system yourself quite trivially by getting an FTP account, mounting it locally with curlftpfs, and then using SVN or CVS on the mounted filesystem?

For those who don't get it, this is a reference to the greatest HN comment of all time - https://news.ycombinator.com/item?id=8863.

For “greatest comment” I was thinking of cmdrtaco’s comment about the iPod, but I guess that was slashdot.


HN is famous for knee-jerk dismissals of tech and companies that then go on to become wildly successful: https://news.ycombinator.com/item?id=19270689

Mostly HN comments about this kind of thing should be ignored. It’s easy to be critical and negative about anything new, it’s a lot harder to be right.

The greatest HN comment is obviously cperciva's: https://news.ycombinator.com/item?id=35079

Yeah, you’re right - that one is my absolute favorite. Even includes a PG cameo.

And getting a 53 on the Putnam at 14 is wild. I wonder how that happens, what leads to that (in addition to obvious high ability).

Good parents? Early access to good books? Do some people just have a more intuitive sense for math? Tons of practice?

>HN is famous for knee-jerk dismissals of tech and companies that then go on to become wildly successful:

It is extra funny to find this comment considering the top comment in this thread. Someone makes a good looking, simple, and useful app and the top comment is nothing about the work put in, the quality of the app, potential improvements, or anything like that. Instead it is a knee-jerk dismissal of "you’re going to get sued" and "hope you’ve got a lawyer." The more things change...

"What you have built is illegal" is hardly the same as "I don't believe in your vision."

What they built isn't illegal. The naming and branding of what they built likely infringes on a trademark. Either way, the point was more this communities urge to knee-jerkingly dismiss a project for whatever reason. There is often a default of "this is why it won't work" or "this is why you are wrong".

>For “greatest comment” I was thinking of cmdrtaco’s comment about the iPod

In fairness, it probably wasn't obvious that Apple had a hit until the 4th generation iPod in 2004. (iTunes didn't even run on Windows to support earlier models when they were released.)

I’d argue it was - maybe not obvious, but I knew it was a big deal.

The nomad and other players at the time sucked (I wanted to get one for my dad). Plastic, poor build quality, software would often freeze up and crash.

The nomad looked like a cd player, why? Just bad design and not thinking about it.

You’re right though that 2004 it started to really take off.

I wasn't really into digital music at the time and only had a Windows system in any case. I definitely viewed Apple through the lens of a computer company. I even wrote a research note in 2003 (as an IT industry analyst) suggesting that Apple should perhaps view itself more as a home entertainment company [1]. I noted that they had the iPod and iTunes music download service but I pretty much mentioned that in passing, perhaps because I was really thinking of home entertainment in the context of a living room home theater system.

I did buy a 4G the following year. (It also took me a few years to get an iPhone after initial release.)

[1] http://bitmasons.com.s3-website-us-east-1.amazonaws.com/pubs...

Flyertalk wasn't keen on the next big thing either

"ever since i semi-retired a little over a year ago, i been traveling A LOT and i hated it when people tried to reach me when i am on the plane or out of the country. so i asked myself -- wouldn't it be cool if i just set a status for my iPhone, similar to how you can set a status on yahoo messenger or skype."

Only response was

" It appears that this requires the other party to also have the app installed, right? "


At least with that one whatsapp's original idea switched from statuses to messaging because they saw the users using their ability to set statuses to message each other. That paired with awful SMS in most of the world let them dominate.

That's quite a different thing from what (I'm guessing Jan Koum?) is pitching here. So it'd be easier to not make the jump I think.

I loved my nomad...

I was afraid my reference was too old, and people would just downvote not understanding what the heck I was on about.

This one never gets too old. Even with the no-jokes policy here, I can't resist upvoting "you could build such a system yourself quite trivially" posts.

I see your dropbox comment and raise you a "did you win the putnam":


I never noticed that this comment, one of the best known of HN, is flagged.

I definitely laughed after reading this thread. Would advise others to read it.

I love that HN is largely free from attempts at jokes, but I will laugh at this one every time.

That reference is plain cruel. You’re a terrible person. :P

Buy other sound equipment


Some people get upset when others buy or like BOSE. You're not supposed to!

Pay no attention to the hivemind or the audiophile cult. I've had plenty headphones in my life and BOSE are among the best I've had at their price point. YMMV.

Which headphone do you have?

I see posts saying Sony as having better sound and similar of not better active noice cancelling for about an the same price. Haven't tried Sony first hand but my Bose qc35 are extremely comfortable.

The Sony WH1000XM4 ear cups aren't as "deep" as the QC35s, my ears can touch the foam and it takes a bit to get used to that coming from the Bose.

I dont know, most of the equipment I have bought was not worth the price. There are other vendors with better quality for the same price. There was only one system from Bose I really liked though, the car audio in the older Infiniti cars.

I have a bunch of Bose gear, and I'm generally happy with them.

Why did I get them? I like the industrial design of their products, and the sound is more than good enough for me.

Do I know that I can get better sounding gear for my money? Yes, absolutely. In fact, I used to hate on Bose for that very reason when I was younger.

Do I care that I can get better sounding gear for my money? Not nearly as much as I used to. When I am buying audio gear, I'm no longer interested in doing research. I just want something (preferably compact) that looks nice in my home and sounds good to my non-audiophile ears. Having said that, everyone has their own set of priorities, and should do what is best for their own situation.

I really like how HN does not approve to have an experience any more.

More and more monkeys.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact