Hacker News new | past | comments | ask | show | jobs | submit login
Fixing the volume on my Bluetooth earbuds (ornx.net)
293 points by rain1 34 days ago | hide | past | favorite | 87 comments

Man I wish someone would do this for my bluetooth sleep mask.

It's pretty great except for one thing: When the battery is low or it's going to power off it announces it to you at full volume.

On a sleep mask.

That's actually pretty funny. I imagine you were very pissed off when you first discovered that one.

I had a similarly flawed one. I had an alarm clock which had a MSF radio sync thing built in. But every time it resync'ed with the MSF time signal it'd make the same sound as the alarm for 2-3 seconds. You couldn't turn it off. This was invariably at 3AM or some horrible time. I eventually opened it up and cut the MSF antenna out and slept better knowing the clock was always slightly wrong.

On that note, about 20 years ago, there suddenly was an abundance of small cheap alarm clocks with DCF77 receivers available. Got one of these and totally overslept every couple months. I eventually got a second alarm and set it a few minutes before the other one, and sure enough eventually there was a day where the second one (so my original one) didn't ring its alarm. I didn't look at the clock so was not able to see what was going on, but at least knew it wasn't me.

years later when I long didn't use that clock as an alarm anymore, I had it in a spot where it wouldn't properly receive the DCF signal and I noticed that it would quickly lag behind after just a few days. So my theory at that point was that sometimes the clock just managed to fall behind enough in its old spot and then resync just when the alarm would've gone off, and there was no logic to account for this. ie the clock would compare the time to the set alarm exactly once a minute, but when the clock would receive a new time signal of 7:01:00 when its local time was 6:59:59 or earlier, I'd oversleep.

How could anyone think such a "feature" was a good idea? I try to be charitable but that's got to be the result of either absurd incompetence or intentional maliciousness.

There is a VDSL modem/router/wifi/Powerline combo device by the Deutsche Telekom called "Speedport neo". It's actually totally functional andwl pretty cheap, at least a few years ago it was almost a steal on some websites.

The super awesome feature it had was that it contained a speaker that would play the Telekom jingle every time the connection was established. This cannot be disabled and would happen at night too. So if you had a flakey connection, or used it on some other provider that still had the forced disconnect every 24 hours, it would drive you nuts pretty quickly. So I assume a lot of people took too the obvious fix to this...

> or used it on some other provider that still had the forced disconnect every 24 hours

German providers disconnecting customers every night is a ridiculous feature in itself. It is condescending towards customers who require to use their internet connection at night, for example because they work at night. It could lead to always-on features being broken, backups not working, and I've had countless of times where I was gaming with a German who gets DC'ed which does not work at all in competitive gaming.

In The Netherlands, yes sometimes the connection is broken at night. Sometimes, for a longer period of time. But this is because of software or hardware maintenance, and then doing such during the night makes sense as it provides the least downtime. I get that. But there is no discernible reason German providers need to disconnect every 24 hours.

> German providers disconnecting customers every night is a ridiculous feature in itself.

It wasn't actually strictly at night, but just exactly 24h after the connection was established. But the problem was that even if you reconnected manually at a convenient time, every now and then you'd have a connection issue at a random time, and then it would keep happening at that exact time until you manually changed it again.

I'm not aware of an authoritative source for why this was the case, but most likely there must've been a technical reason like accounting, and then they just kept it around. Mind you, this only affected DSL, which at first was (apart from small regional exceptions) offered by the Telekom exclusively, and later on when resellers appeard, they had no influence on this behavior as it happened on a level where they had no access to. After a while you got consumer routers which let you choose an exact time where it would force a reconnect, so you'd at least be sure when it happened.

Ironically, when the Telekom introduced VoIP, they finally got rid of the dreaded daily disconnect, but some of the resellers kept it, like the one I'm on (cause it's cheap and otherwise rock solid). I just set it to 6 in the morning and scheduled all my backup scripts with this in mind.

While I'd have given an arm and a leg in the days of edonkey2000 for a static IP, nowadays I see the changing address as a privacy feature.

Sounds like a DHCP lease expiring.

The only explanation I heard was that they wanted to prevent people using consumer DSL for such nefarious purposes as running publicly available servers (nevermind the rather restricted uplink speed machine this hard at any scale anyway), so this was their way of forcing you to get a new IP address every 24h. Of course, services such as dyndns quickly jumped in to fix that problem.

"can't fix it without violating the modularity of the abstractions"

A bad project manager/lead could do that

My Dad had a Samsung phone with a "fully charged, unplug me" message and tone that couldn't be turned off. To make matters worse, if he ignored it and went back to sleep it would reach the threshold and pathologically start charging again ~2-3 hours later. He said "it whimpers all through the night" and could only charge it when he was awake to save his sanity.

I had a different situation, I sleep with roaring fans near my head and had to turn the phone alarm way up to hear it reliably. Then it would wake the neighbor at 430am whether it woke me or not. I purchased a separate 24hr timer and set the fans to go off at 4:25am, leaving a quiet room. And a quieter alarm always wakes me. Though I am now conditioned to hear when the fans shut off and get out of bed, and hardly ever fail to turn the alarm off in time.

> whimpers all through the night

I just bought two new Sonicare toothbrushes and maddeningly they do this. Toothbrushes.

My bluetooth ear clips have the following behavior when they want to give a low battery warning:

1. They shut down whatever audio is currently playing.

2. They take a dramatic pause.


4. They take one more dramatic pause.

5. Normal functioning resumes and you attempt to pick up on the thread of whatever the person you were talking to was saying for the past several seconds. This doesn't work well.

This announcement is, quite obviously, much worse than doing nothing at all. The worst case scenario, if a warning is just not given, is that my sound cuts out and I miss whatever someone was saying. But that is precisely the effect that the ear clips intentionally generate on an accelerated schedule!

There is no reason not to just add the warning into the existing audio stream. It should be an unobtrusive beep pattern or similar. That would take less than one second while not actively causing the same problem it's hoping it might potentially prevent.

(Speaking of awful bluetooth behavior that has no conceivable reason to exist, I lose all my normal computer audio whenever I'm using voice chat. Why? Well, voice chat takes input from my microphone, which switches the bluetooth device into "headset" mode. Headset mode converts stereo audio to mono and it is the only audio output you're allowed to use while you're providing audio input, or might potentially provide audio input.

Any applications that don't take audio input continue to try to play their audio to a bluetooth headphones device, which no longer exists, so they all lose the ability to make sounds.

Why is there more than one mode for the device to be in? Why would I want to lose functionality as a side effect of talking to my family? What's so difficult about playing different audio signals to each ear at the same time that the microphone could potentially become active? Non-bluetooth devices handle this and it's not even considered a notable feature. "The microphone doesn't shut down the headphones while you're using it." Why would it?)

> This announcement is, quite obviously, much worse than doing nothing at all. The worst case scenario, if a warning is just not given, is that my sound cuts out and I miss whatever someone was saying. But that is precisely the effect that the ear clips intentionally generate on an accelerated schedule!

There is a very good reason to announce it with fanfare: completely depleted batteries can get permanently damaged.

It also allows the user to plan better around the downtime. I'm actually able to continue with zero downtime on me in-ears because I detach one of them and power it up while the other one gets depleted further.

With my over-ears I'm unable to do that but they last many hours more. Which is logical as they're more bulky, have a larger battery, and don't have a case containing a battery.

> Speaking of awful bluetooth behavior that has no conceivable reason to exist, I lose all my normal computer audio whenever I'm using voice chat. Why? Well, voice chat takes input from my microphone, which switches the bluetooth device into "headset" mode. Headset mode converts stereo audio to mono and it is the only audio output you're allowed to use while you're providing audio input, or might potentially provide audio input.

True, this is silly, this also happens when you phone. But I actually don't want high quality sound when someone speaks. I've had people's background noise during gaming; not my preference. The irony is that with ANC, there's mics active all the time as noise cancelling depends on that.

> completely depleted batteries can get permanently damaged

This never happens, though. Every device nowadays has a controller that doesn't let the batteries deplete to a dangerous level.

My WF1000XM4 had a bug where this occurred.

But that's still a bug, obviously not intended behavior. I think i would rather have unobtrusive battery notifications than worry about the possibility of a specific type of unintended behavior that can be easily and routinely prevented by the manufactured. There's all kinds of excessive and annoying safety behaviors we could be putting into our devices but most of us get by on at least a minimum of trust.

I ended up just using a pillow speaker with a 3.5mm jack cable. Avoids problems like this I was having with bluetooth.

What does it do? Why do you want a bluetooth connection when you are trying to sleep?

You can use it to play music, I go with audio books.

it's actually better at pairing with my iphone and ipad than my apple devices, which is wild.

Product page: https://www.amazon.com/MUSICOZY-Headphones-Bluetooth-Everyth...

I'm interested to hear in what way it pairs better!

It just connects to my iphone, ipad, and macbook whether I want it to or not.

I frequently have a lot of trouble getting my airpod pros, or maxes to pair with anything when I'm right next to it.

For listening to music/white noise/droning YouTube videos while falling asleep.

Plenty of people use audio to fall asleep - be it relaxing music, white noise, nature sounds, podcasts, talk radio, boring speeches, or whateverelse. Not everyone likes the same sleeping audio as others sleeping in the same room.

The application such as Spotify could have a timer. The headphones apparently don't, nor do they have an auto go off when battery is depleted, or a way to more silently announce battery is low.

Reminds me of Futurama's NNY city clock. In a cutscene it announces at full volume: "THE TIME IS FOUR AM".

You really do not want to deplete batteries on devices where they're difficult to replace. Whether that is true for your sleep mask, I HAVE NO IDEA. A better way to deal with it is have them disable themselves after a timer. Maybe you can enforce that from the other side (I assume that is your smartphone?). Like, you can do some device automation with e.g. MacroDroid.

They could just turn off. In fact they do turn off, but only after yelling at you that they're turning off.

NICE! Way to stick with it OP!

Speaking of loud earbuds, I might have the opposite problem. I use Bose exercise earbuds on the treadmill at what I believe is a comfortable and conservative volume, but my iPhone gives me a notification that the volume is too high and I am wrecking my hearing.

Is the phone correct? If so, I'd be willing to sacrifice a bit of enjoyment for a bit of ear health. However, there's a compelling alternative hypothesis: these earbuds have a distinctively lower physical volume at a given volume setting than others I have used, so lazy modeling on Apple's part could be expected to generate a false notification like the one I receive. I want to commend Apple if they did the right thing and built a database mapping (model,volume_setting)->physical_volume. Unfortunately, the complete lack of details in the notification and feature description do not inspire confidence and I do not want to make my workouts shittier just because Apple put a college homework quality model into production.

Does anyone here know if the data science backing these notifications is competent?

I miss exactly two things from android on iOS. Both involve Bluetooth not sucking.

The first one is that the minimum volume on my Bluetooth earbuds is too damn loud on iOS. This is true for every third party set of headphones I have tried. People have been complaining about this online for a decade. The EU even passed a law to make them fix it (spoiler alert: it did not work).

FFS, min volume in the UI should map to hardware volume level integer one!

The second issue is that third party apps can’t expose music or podcasts via the car bluetooth media browsing menu. They can on android.

That means I can listen to podcasts and stream tidal using the jogwheel on my car with android, but not ios.

Other Bluetooth complaints:

Why does my Apple Watch blacklist car stereos?

Bluetooth is really buggy in iOS version N and N-1.

> The first one is that the minimum volume on my Bluetooth earbuds is too damn loud on iOS. This is true for every third party set of headphones I have tried.

That's wild. I've never experienced anything like that -- not with AirPods or Bose or a cheap brand TOZO.

Are you sure it's not a problem with the earbuds themselves, that their minimum level is higher than it should be?

If you've dug into it, what is the range/steps of Bluetooth volume levels, and which are the range/steps that iOS supports?

Also, have you ever tried dragging the volume slider in iOS? That lets you set volume smoothly, not restricted to increments. Does that not let you set the smallest volume?

I've had the same issue with some wired IEMs on iOS, using Apple's official USB-C to 3.5mm adaptor. I even have the EU model A2155 of the USB-C to 3.5mm adaptor that's supposed to have half the power of the US model.

What I found that helped was to create a custom Shortcut that "Set Media volume to 1%". iOS reports that this is 48 dB when playing pink noise. I managed to hit 47 dB when dragging to volume slider on iOS below 1%, but the Shortcuts app only seems to support integer percentages.

In my case, even the 1% volume level was too high in a quiet room, but some apps have a custom EQ setting that you can use to lower the volume further. E.g. if you're using Apple Music, you can go to Settings -> Music -> EQ and pick "Loudness" to lower the volume further.

You can buy passive inline volume knobs for 3.5mm headphones. They’re just a pair of variable resistors attached to a knob and cost about $10.

Unfortunately, they're not great to use with a phone in your pocket, since then the motion of walking around will adjust the knob and change the volume.

Although, come to think of it, I could probably just glue the knob into a fixed −10 dB of attenuation and then use software volume control to change the volume.

I have also noticed that those passive inline volume knobs tend to adjust the right and left channels by different levels, especially with low-impedance outputs like IEMs, but that might because the ones I've bought cost ~US$2 from AliExpress.

I could probably also fix the issue by buying a worse/less-powerful USB-C to 3.5mm DAC. The official Apple one is pretty well liked by the audiophile community, since it's powerful for the price, which is great if you have high-end headphones, but horrible if you have earbuds/IEMs.

Weirdly enough, the same Apple USB-C to 3.5mm DAC is much quieter on Android, since it defaults to a low hardware volume on the DAC, and Android then only uses software volume control to lower the volume, see https://issuetracker.google.com/issues/242221770.

> That's wild. I've never experienced anything like that -- not with AirPods or Bose or a cheap brand TOZO.

I had something similar with a usb 'sound card' I was using with a mac. I had to use some DSP software to artificially reduce the sound level to about 1%, and then it was usable. Worked fine on windows as I recall. I had a similar issue with a set of logitech usb speakers; one pair worked great, so I ordered a second pair, where (on windows) the lowest output volume is tremendously loud, I couldn't get the DSP software to stick though, and ended up replacing them.

In conclusion, computers are awful.

AirPods Pros and iPhone, same issue with the minimum volume not allowing a low enough volume. I want it to be quieter on the low end. I have a lot of issues with my AirPods and they are some of the best I’ve used, unfortunately.

I’ve also experienced the other issues in this thread about headsets switching modes when the microphone is activated. I had a pair of Bose noise cancelling headphones and original they worked nearly perfectly but after a firmware update the bug I updated for was fixed but it made the loopback from microphone to headphones always on. Why can’t they make any “perfect” headphones and why is this stuff seemingly so hard?

You can press and hold on the volume in the control panel on the iOS menu screen to get a fine-grained volume control and go lower than "minimum". Is even that too loud?

I’ve tried dragging the slider. One pixel is louder than the bottom stop from the volume buttons on android. Haven’t tested with bose or no-name stuff. Mostly just midrange audiophile stuff.

+1 here

My phone (Android 5, and I barely use it, frankly, so until it stops working I don’t need anything newer) does the same thing when connecting it to my car over Bluetooth, the first time after every reboot. It’s simply and flatly a stupid feature. If I could root the device I could turn off that switch ’cos it’s in a config file somewhere, but I’ve never succeeded (Samsung Galaxy J1 (2016)).

Yeah, that's what I'm afraid of lol.

It all depends on the implementation. A $2.6 trillion dollar company could probably rummage up the spare change to buy and measure the most popular earbuds/phones -- but why do that when you can

    if (volume>14) alert("You're killing your hearing!")

I don’t think the OS knows how many dB’s come out of the other end. My Boses act differently with different Bluetooth chipsets. On Linux I have to do 150% volume to hear much of anything

The computer knows what it's sending to Bluetooth and it knows some model identifiers from Bluetooth. This could be implemented well. But I agree, it probably isn't.

What if the manufacturer changes the sensitivity but keeps the Bluetooth identifier the same? I assume Apple would rather set a conservative limit for everything than risk getting sued for allowing hearing damage with an incorrect custom limit.

If not raising an alert is "allowing hearing damage" then they already do plenty of that, as does everyone else. It's not a reason to do a poor job. Maybe an excuse, but not a reason.

It'd have to set up their own audiolab and produce a long list of models and what the output levels are per volume setting. OTOH, these things should be standardized.

I just want an option for the OS to normalize everything going through the sound processor prior to coming out the other end.

> I want to commend Apple if they did the right thing and built a database mapping (model,volume_setting)->physical_volume

Even if they did, it would be out of date the moment it shipped.

But no, there's no reason to believe they'd do anything like that. It would be interesting if headphone manufacturers reported the dB range when connecting with Bluetooth to enable something like that, but I've never heard of such a thing. (That is an area where Bluetooth could enable something like that, in a way that the 3.5mm jack couldn't.)

Software updates aren't just for distributing first party malware, you know -- they could also conceivably be used to update a device database. We have the technology.

This is probably an "all of the above" situation. Implement on AirPods and push for a standard and make measurements of popular old models and have a fallback that assumes industry averages. On the scale of Apple, this is not much to ask.

Or, they could just make the volume slider run from min to max, instead of loud to louder.

Presumably the manufacturers already calibrated volume range based on the Bluetooth spec.

> Is the phone correct? If so, I'd be willing to sacrifice a bit of enjoyment for a bit of ear health.

Noise cancelling headphones/earbuds solved this problem for me. With noise cancelling I can keep volume below 20% and have a comfortable listening experience that doesn't blow up my ears.

For me, I know the Apple notification is probably right because I started noticing ear aches after long workout sessions a few years ago. This has completely gone away after noise cancelling.

Mmm, Bose works great for that. But if you accidentally go one past "lowest volume but not silent" (which is still a bit too loud when everything is quiet around you!) into "silent", then the Bose headset makes a VERY LOUD DING SOUND to alert you. Thanks Bose.

The volume which comes out of speakers and into your ears is dependent on many different things. Some that come to mind are the sensitivity and impedance of the speaker drivers, the amplifier in the earbuds and the fit over/in the ear.

They are most likely just setting a toggle at a percentage of maximum volume level. The phone has no way of knowing what the sound pressure is at your eardrums.

You can rest easy knowing that you can ignore the warning if you think it isn't loud enough with the caveat that you could be damaging your hearing over time.

> The phone has no way of knowing

It could make a useful guess based on device identifiers. Or it could make a useless guess based on industry averages or some random device an engineer had on their desk one day. It clearly does one or the other, the question is which. Useful or useless?

Occam's razor says they are not going to keep a list of all devices and their configurations including types of ear pieces and their sound pressure level output at each volume setting when they could just say if (volume > .75){ warning();} and call it a day. There is no benefit to going above and beyond in this case -- they just need to say they warned people.

I love this stuff. All of a sudden this model of earphones is quite interesting to me.

Side note: The system sounds a bluetooth device makes are among the strongest differentiating factors (with some being completely awful; see https://youtu.be/J2wPsH64JEM). Yet I have never seen a review or product page which tells you about what sound (which you will have to hear multiple times per day, with no way to opt out!) the product will make.

The ability to change them also seems like a pretty easy differentiator.

I really wish I could turn down the play/pause beep on my aftershokz. It's perfect in a loud shop with earplugs in. Sitting in a quiet office with my music down low to concentrate, it's uncomfortable and startling. I don't understand why the system sounds don't respond to the volume level.

Speaking of aftershox how about disabling the absolutely useless "redial last number" function... I've accidentally triggered that like three times. I would never ever want this feature.

Actually, one of those times was on a different bluetooth headset so it's not Aftershox specific... just the unreasonably locked down, uncustomizable nature of Bluetooth devices I guess!

I'd like a way for phones to know if the headset that is connected is a speaker set, IEMs, bone conduction, etc. The "Volume is too loud" notification is annoying when I'm using my regular speaker set and WANT the volume cranked so I can hear it across the house, and doubly-annoying when I'm using bone conduction headphones as they need to be at an appreciable volume for you to hear them well.

Ah, lucky that this is an Airoha target without firmware encryption.

Also there's an 010 Editor template for the firmware format if you're curious.


I appreciate the skill, but I can't help but lament the effort needed to do something as basic as just slightly modifying the volume a file plays at. Getting a tool to do what you want probably shouldn't require this much effort.

> I asked them via email about this and they responded promptly and said that there was nothing they could do, which is understandable

No, this is not "understandable", you paid for the product, it's a problem that should be fixed

Quick note: I got a used Tozo T6 after reading this, visually looking to be manufactured rather recently. I was unable to recreate this. In fact, I could not even have headset recognized by the official Tozo app, nor verify that the headset uses Airoha chipset, identified by AAC support. Mine only supports SBC. Either I got a fake, or internal changes were made since author purchased one.

Some of audio files sound same as what are included in partial Airoha SDKs on the Internet, but it also plays other novel voice files. If anyone is looking to independently verify/play with this result, fake AirPods might be a better path towards it.

I wish more people complained about loud / bad system sounds.

My Sony headset (wh-1000xm4) has the exact same problem, but they apparently encrypt the firmware payloads and decrypt them on device.

I've come this close to taking it apart and trying to dump and probe everything, but my shaky hands are too likely to break it.

I would pay very good money for a hackable noice-cancelling headset.

> I would pay very good money for a hackable noice-cancelling headset.

https://pine64.com/product/pinebuds-pro-open-firmware-capabl... ?

Thank you. I normally like over ear headphones, but I'll definitely consider going that route

Yes, this is cool, but what is this:

> User needs to use the programming tools provided at wiki page. Any device brick caused by hacking or improper programming may void warranty.


> Excessive flashing Pinebuds can potentially brick the device.

It’s hackable or it’s not, choose one.

Why do the earbuds have the sound files in mp3 format rather than some raw uncompressed format? Doesn't this mean that the earbuds must now have a mp3 decoder?

Is there a resource-usage argument for preferring mp3?

I dunno how big the sound files are, but mp3 is going to use a lot less storage than uncompressed PCM. Using a smaller flash chip saves money on the BOM.

Bluetooth headphones already need to manage several formats to decode, and the chipset that does that may also decode mp3, and mp3 is easy to work with to prepare the files.

Bluetooth audio uses SBC codec by default (unless your device something modern like aac or apt-x) right? I imagine that there's probably some all-in-one decoding chip that includes various codecs.

Yeah. So Bluetooth never uses mp3 for transmission as far as I am aware - it is simply not one of the codecs specified in the protocol.

So why does that decoding chip have mp3 decoding, and why use mp3 when you could just use SBC.

MP3 decoding is just math. If you have enough CPU to decode a compressed audio stream, it doesn't cost anything to also have it decode MP3.

Sure, you could store those clips in a more appropriate codec, but what do you gain? It's dead simple to encode an MP3, every audio editor from the last couple decades can do it. How common is SBC support?

If MP3 decoding is free, and MP3 encoding is free, why bother spending any effort at all on anything else? Sometimes good enough is good enough and cheap and easy wins over correct every time.

I would need the opposite:

The volume on my Airpod 2 are waaaaay to low on my Samsung phone.

No problem with the Airpods on an Ipad or with my Bose QC II on my mobile.

Bluetooth is such a pain.

disable or enable absolute volume in dev settings

I kept a pair of Tozo T6's in my pocket for several years. Honestly... buy better buds. You don't even have to spend more money. I haven't touched my Tozos since I got a pair of Comfobuds Mini.

This is the one thing I dislike about Apple Airpods. I also don't like the connection sound effect because it adds a needless 2 second delay. Would love to get rid of both sound effects.

Likely the delay is not because of the sound effect. But the other way around - they added the jingle to mask the delay.

Bluetooth link negotiation happens in a few dozens of milliseconds. Any perceptible delay is down to the host operating system setting up audio drivers. The headset can't know what the host is doing or even that there is a delay.

I wish I had such faith.

You can change the volume of those sounds under Settings > AirPods > Accessibility.

That was an amazing read. Learned quite a lot from your journey! I wish such simple things didn't need much user hacking.

A sad state of affairs in the realm of hardware and firmware design when fixing such trivialities requires so much effort

This adds yet another argument to my list of why I prefer cheap wired earbuds. But great determination!

To each their own, but for me, high quality wireless buds with ANC are worth every penny.

this was fun to read. enjoyable to follow. thanks

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