Hacker Newsnew | past | comments | ask | show | jobs | submit | more dgrcode's commentslogin

Yep, I forgot to add it and I'll update the post providing that option.

The reason I didn't add it is because I tried it and didn't work for me, so I just forgot it was even an option.

Thanks for the heads up!


I didn't know about the AVCTP, but I completely agree on the possible alternatives Bluetooth could use.

From what I've read in the last few days researching to write the post, it feels like Bluetooth was designed under some constraints 20 years ago, and it keeps using the same constraints.

For example, it's unreal to me that the bandwidth for a Bluetooth connection is around 3 Mbps when we've had 4G with 100 Mbps for over 10 years, let alone 5G at 20Gbps.

And yes, the codecs in the firmware is really bad, although very convenient for the companies selling devices I guess. There aren't enough incentives there for the change.


That bluetooth constraint is probably due to battery usage.


Yep that's another one that has improved significantly over the years.

I charge my headphones once per month, maybe twice. I'd gladly charge them once per week if that means I get nice audio in and outside calls.


I did a deep dive to understand why sound quality is really bad –or reduced, as Apple puts it– when using my bluetooth headphones.

I read through Apple's documentation, Bluetooth standards, and Wikipedia articles for different codecs, and I tried to summarize my findings in this post. The post talks about Mac, but it's probably relevant to other OSs as well.

As a disclaimer, I want to state that I've made this investigation for fun, learning, but also profit. I'm working on a Mac app that aims to help with the audio quality when using bluetooth headphones. I decided to work on this project out of frustration, probably shared with more people here, and that's why I'm submitting it.

I hope you find it interesting.


> I decided to work on this project out of frustration, probably shared with more people here, and that's why I'm submitting it.

Frustration is great to initiate action, but usually doesn't work well as a sustained source of motivation. Sometimes it's just a matter of rephrasing the situation. You have an appreciation for audio quality - let that (rather than the frustration) guide Recadio's continued development. Wish you best on the journey <3


Same issue I had with Windows. Bluetooth headset is awful for calls.

Interesting enough, no codec-related issues if you use Bluetooth headset with mobile phone.


Your app seems nice. I’d love more control over Bluetooth on my Macs. Is this device able to wake this Mac from sleep? If both these headphones are connected, what heuristic should be used to select the input/output?


> Is this device able to wake this Mac from sleep? Do you mean my app? It doesn't change the wakeup behavior. For my Mac that means it'll wake up when I turn on my bluetooth headphones.

> If both these headphones are connected, what heuristic should be used to select the input/output? My app remember your choice for a given group of connected devices. That means that, if you haven't chosen anything, the default behavior will take place. If you select one of them, it will remember the choice and auto-switch to that one when the same group of devices is connected. I hope it makes sense.


It does. I was just venting what I think should be built-in functionality and the void third party apps should try to fill if Apple continues to choose otherwise.

For instance, I turn on my Sony 1000MX4 in the living room to listen to music on my iPhone. The iMac wakes up in the office and if it has an YouTube video paused in Safari or the Music app in the foreground, the input won't switch to the iPhone unless I manually change it on Sony's app.

Or, I have a meeting and need to use a decent microphone in order to be heard, so the wired mic connected to the Mac should be selected when the MX4 is off, but instead it reaches for the AirPods that are sitting in the bedside table in the bedroom. Stuff like that.


You mention at the end that you can automatically switch input sources with SoundSource. How do you do this? I have SoundSource and it does not do this.


To be honest I haven't used SoundSource myself, but one of the early users of the app I made talked me about it. He mentioned he could select the input/output devices and Mac wouldn't change them when connecting a bluetooth device, as it does by default.

It's not exactly what my app does, but I thought it could fix the auto-switch for many users.

I'll definitely update the post if SounceSource cannot be used to fix the auto-switch. Thanks for the heads up!


You should remove "Mac" from your article, sans to where you first found this issue out and what the Apple-specific nomenclature is.

This is simply a Bluetooth issue and why Bluetooth is bad if you care about audio quality.


From my own experience, and from what I got from the article, the lower quality full duplex BT is only part of the problem. The major issue is that the mode is selected automatically on macOS.

I never had this problem with Pulseaudio and Blueman, for example. The microphone isn't even registered until I manually change modes for the connection.

Another annoying thing is that the mac is so aggressive when connecting to devices over BT. I regularly have to restart stuff because my mac hijacked the connection. It seems to do it even when the lid is closed.


For music, that's just not true. AAC is widely supported and sounds transparent to me; I'm not sure if I could detect SBC at high bitrates either.

For voice/HFP, I agree, and LC3 can't arrive soon enough. I'm actually really surprised Apple doesn't use anything proprietary/better than mSBC for their AirPods.


I suspect the GP meant for voice. It’s just atrocious no matter what for any device, due to the HFP restriction.


Yes, with the A2DP profile (high quality music) things work good enough for me not to notice. Maybe you could hear some differences on a side to side comparison, but it's good enough.

The real problem comes with the HFP profile. Lack of decent codecs, and bandwidth limitations of Bluetooth make it really hard to solve. Not to mention the vast majority of devices you own can't upgrade codecs, or just won't because there aren't incentives.


Opus provides excellent voice quality at 10 kbps (less than 1/6th of what PCM uses at 8 kHz), at a latency of 26.5 ms, so it's definitely not a technical problem for HFP either.

There's always the risk of unknown patent claims, but the same is true for any other codec not older than 15 or so years.


I actually didn't know about Opus, but having read a bit about it, how aren't we using that codec for all things audio? It's open source, has good platform support, quality seems to similar to AAC, it could be used for HPF. What's stopping the adoption of Opus in Bluetooth standards?


Supposedly Google's Pixel Buds support it!

I can only suspect why it's still so rare, but my guess would be either a fear of unknown patent claims, a lack of readily available hardware implementations, or a combination of both.


I have the pixel buds A-series, and using my pixel 7a I can feel the quality going down when on a call. It might be just the latest buds, or my pixel 7a not supporting the codec, or the HFP not being set to use it ¯\_(ツ)_/¯


Not really. I have decent quality when connecting my headphones to my phone or Windows laptop. It's just my Apple laptop that suffers.

And if you read the article, it is an Apple problem since macOs chooses the wrong bluetooth profile.


It is a general issue of Bluetooth. And the solution are improved codecs for HFP. Seems like people are skeptical if BLE Audio and L3C can make a big change.

Let us see. Ah hear. Pipewire seems to support it already on Linux.


I agree improved codecs is one of the solutions. I think other solutions could appear if Bluetooth wasn't restricted to a 3Mbps bandwidth, which seems to me –I have no information on this– it's a very outdated constraint.

I mean, 4G has existed for over a decade and it supports 100Mbps bandwidths. With that bandwidth it could use uncompressed audio and support stereo for both output and input.

Regarding LC3, I've read people complain that it forces the Bluetooth Low Energy, removing a few features like multi-point connection and a few others.


Isn't it possible to use LC3 over Bluetooth Classic HFP? And isn't LE audio advertised as flexibly supporting multiple streams, much better than Classic? That means, it's just bad implementations, not a principal limitation? Apparently some phones and headphones support it now, but oddly enough there is absolutely no information to find about the specific level of support.


  Location: Spain
  Remote: Yes (preferred)
  Willing to relocate: Yes
  Technologies: TypeScript, React, React Native, NextJS, NodeJS, TailwindCSS, Three.js, React Three Fiber. Also some Python, Java, Kotlin, SwiftUI
  Résumé/CV: https://dgrcode.com/cv.pdf
  Email: see cv
I'm a software engineer with 7 years experience. Started my career working at a mid sized startup. The last few years I've worked as a freelancer, also bootstrapping some side projects. I'm full-stack but have slight preference towards frontend. I enjoy learning and solving problems. Outside of tech I also make music. cv link: https://dgrcode.com/cv.pdf


I lived in NY for 3 months and the amount of noise pollution there was insane. The one that I really couldn't believe was the J train on Brooklyn's Broadway. You could be yelling at someone 3ft/1m apart and they couldn't hear you because of the train noise.

I wonder if New Yorkers realise how absolutely crazy that is.


As someone who lives in NY for 10 years, I don't know how I wasn't so aware before but I've lately become acutely conscious of how we are surrounded by near constant extreme noise pollution levels. Maybe most people just exist in this the way I used to, not thinking about it, it's so normalised that people can't imagine how it could be any different.

The worst to me is that people have internalised this so far that they don't see any problem in contributing to this pollution themselves. Just a few weeks ago, someone on my block wanted to move their car at 4 am on like a Wednesday for whatever reason. Unfortunately for this person, someone else had double parked next to their car overnight (a chronically common issue in Brooklyn where I live for some reason). This neighbour somehow thought it would be perfectly reasonable to start honking constantly to alert the person who should move their car to let them out. At 4 am. When they would obviously be waking up many other people nearby that had nothing to do with the issue. In my 10 years here, that level of inconsideration was still pretty shocking to me.


I lived in NY for about 4 years, and I'm still amazed by the similar things I saw. For example, one day my upstairs neighbour didn't feel like pulling up the drive way, so she just parked her car in the middle of our cramped, busy one way street so she could run upstairs and grab some things.

Of course all the people stuck trying to drive down the street started honking and yelling. She got back to the car, yelled back at them and drove off.

I wouldn't consider doing something like that in a million years, but for native New Yorkers, it's par for the course.


Well not everywhere in Spain, but definitely in some places. I lived in a small town where that was the case. Some people used to meet at a small shop just in front of my house and cars would honk all the time just to say hi.

They would then stop the car and actually talk with them, but honking was somehow mandatory


I lived in Dublin, Ireland, for a while and every. Single. Day. There was a fire alarm going off. It drove me insane. I had already forgotten how crazy that was and your message made me remember it. Now I can appreciate more not having that where I currently live :)


Looking forward to those electric blowers


They do exist and seem to work reasonably well, from the few I've seen used around my neighborhoods.


I think this is just not a concern for the general population. There are solutions available if we wanted to address this issue.

There could be a restriction on the vehicle. Some European cities have zones with restricted access to vehicles based on their CO2 emissions. There are stickers that you have to put on your windshield to drive into those areas.

We could have some "noise emission" regulations that ban some vehicles from driving at certain times, like before 9am or after 7pm.

It would be similar to the CO2 emission regulations, there's no need to measure the emissions because you have a sticker that already say what your emission levels are.


Hard to enforce those in the US

We could make re-registering more difficult or impossible for people with addresses in areas with those kind of ordinances

Enthusiasts will have nominal addresses but it can be a deterrent


I think this is a great project to refresh algebra and whatever language you choose to use.

I implemented a ray tracer with Kotlin just to learn the language, and got to use many features and learn them by practice.

Even finding and fixing bugs were fun, as I had to guess where the physics of the light had gone wrong.


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

Search: