Guide
Mac can’t change the volume on a Sonos over optical? Here’s why.
Your Mac can’t change a Sonos speaker’s volume over an optical cable because the cable is one-way: TOSLINK carries audio out and nothing back, so there is no channel a volume command could travel down, and macOS locks its own control at full output. The fixes are the Sonos app or remote, an IR remote the soundbar can learn, switching to AirPlay and giving up the cable — or a menu-bar utility that catches the volume keys and sends the change to the speaker over your network, which is the one that keeps the cable and the keys.
The keyboard is fine. The speaker is fine. Here is what is really happening, everything that fixes it (including the free options), what will not fix it, and when you do not need to install anything.
The cable only goes one way
An optical cable — TOSLINK, S/PDIF, the one that goes into the small square socket with the red light behind it — is a pipe for digital audio. Samples go down it. Nothing comes back. There is no handshake, no return channel, and no volume command.
So when you select that output in System Settings, macOS is sending sound into a socket without knowing what is on the far end. It might be a Sonos Ray. It might be an amplifier, or nothing at all. Because it cannot know, it does not offer to set a level: the signal leaves at full scale, and whatever is on the other end decides how loud that is.
Press volume up — F12, or F11 for down, F10 for mute — and macOS has nothing to change. You get the on-screen overlay with the crossed-out “no” symbol under it, or no overlay at all, and in System Settings → Sound the slider for that output is greyed out — macOS may tell you outright that the selected device has no output controls. Meanwhile the speaker plays at whatever level it was last left at, which is why the problem so often shows up as a Sonos stuck at full volume that nothing on the Mac can turn down.
The volume itself lives on the Sonos, and always did. The speaker knows perfectly well how to turn itself down. It has no way to hear you ask.
How to tell this is your problem
- Your Mac’s sound reaches the speaker through a physical cable into an optical or S/PDIF socket — usually from a Thunderbolt dock or a small USB audio interface. In Sound settings the output is often named something like Digital Out or USB SPDIF Out rather than the speaker’s own name.
- In System Settings → Sound, the selected output has a greyed-out volume slider, or says it has no output controls.
- The Sonos app changes the volume without any trouble, and so does the remote if there is one.
- Switch to headphones and the keys work again immediately.
If all four are true, nothing is broken. This is what a digital output does.
Three different problems get mixed up here
- Play, pause and skip do not control the Sonos app. Different problem, different fix: those are the media keys, and the Sonos app needs Accessibility permission in System Settings → Privacy & Security before macOS will hand them over. Sonos’s own support article covers exactly this — and only this. It does not touch volume over optical.
- Volume misbehaves over AirPlay. If your Mac plays to the Sonos wirelessly, the keys already work; oddities there are AirPlay quirks, not a missing control channel. Nothing on this page applies.
- Volume keys are dead over an optical cable. This page. The cable has no way to carry the command, and no permission or setting changes that.
What does not fix it
Restarting or reinstalling
Nothing is in a bad state, so there is nothing for a restart to clear. The same goes for resetting the audio daemon.
A better cable or adapter
Every TOSLINK cable carries the same one-way signal, and so does every dock that has the socket. A dearer one does not add a control channel, because the format has none.
A setting you have not found
There is no switch in System Settings that gives the cable something it does not have. Audio MIDI Setup cannot either: a multi-output or aggregate device changes how macOS routes audio, not what a one-way cable can carry, and the digital output inside it is still fixed.
A keyboard remapping tool
Usually not. The volume keys are not ordinary keystrokes: macOS delivers them as system-defined events with no public hotkey API, so a shortcut tool cannot normally see one at all. Most people end up binding a different combination, which works, and which is a new shortcut to remember.
Advice that has expired
The threads this problem surfaces are a decade deep, and some of their best answers have since died. So that you do not spend an evening on one:
- “Use the Sonos desktop app’s shortcuts” — including the BetterTouchTool recipes that mapped the volume keys to its Cmd + = and Cmd + −. Sonos discontinued the desktop controller in May 2024; every mapping that pointed at it now points at nothing.
- “Route it through Soundflower” — the loopback driver those older guides lean on has been unmaintained for years and does not run on current macOS.
- “The volume keys cannot be intercepted” — repeated in older forum answers, and no longer true. macOS delivers the volume keys as system-defined events, and an app holding Accessibility permission can catch them with an event tap. That is precisely how the working fixes do it.
When you do not need any of this
Worth saying plainly, because it is easy to buy the wrong answer here.
- If you play to your Sonos over AirPlay, your volume keys already work. macOS knows the speaker is there and carries the level for you. Whether that is the right way round is a real question, and the optical against AirPlay comparison goes through it honestly.
- If your Mac goes into a Sonos line-in through the headphone jack — an analogue cable rather than an optical one — the keys work too, because macOS sets the level itself before the sound leaves the Mac.
- If your Sonos is fed by a television and your Mac is not in that path, this is not your problem at all.
This page is about the narrow case: audio leaving a physical optical or S/PDIF port on a Mac.
How do you control Sonos volume from a Mac keyboard, then?
Five real answers, in rough order of cost.
- The Sonos app or the speaker’s remote. Always works, free, and costs you a reach for something every time the volume is slightly wrong.
- Teach the soundbar an IR remote. Sonos soundbars can learn almost any infrared remote from the Sonos app’s settings, so a spare TV remote fixes volume for the whole room — free if a drawer has one. It is a remote, though: line of sight, another object on the desk, and nothing your keyboard knows about.
- A software attenuator (SoundSource, eqMac and friends) inserts a volume control into the audio before it leaves the Mac, which genuinely brings the keys back over optical. The trade is the reason the cable was chosen: the output is no longer the untouched, full-scale bitstream — every sample is scaled in software on its way out.
- Move to AirPlay. The keys come straight back, and the network buffer comes with them — delay, and audio landing behind the picture. The optical against AirPlay comparison weighs this honestly.
- Keep the cable, forward the keys. Leave the audio untouched on the optical cable and carry the key press separately, over the network, to the speaker that already knows how to act on it. That is what Optically does, below.
How Optically handles it
Optically is a macOS menu bar app that does the third of those. It catches volume up, volume down and mute before macOS handles them, and asks the Sonos to change its own level over your local network. What that involves, in full:
- Accessibility permission, because an event tap is the only way to catch a system-defined key before macOS does. It acts on three keys, reads no others, and stores nothing you type.
- Local Network permission, because speakers are found by asking the local network who is out there. It talks to the speaker directly using the local control Sonos already accepts — no Sonos account, no cloud API.
- The keys are tied to one output, so plugging in headphones hands them straight back to macOS. Until you have chosen one, Optically leaves them alone rather than guessing.
- The level shown is the speaker’s own, read back over the network rather than assumed, so a change made in the Sonos app shows up on your Mac too.
- Nothing waits on the network, and nothing touches the audio. The overlay paints immediately and the instruction follows behind it; the sound never passes through the app at all.
It needs macOS 14.4 or later, runs free for 14 days, and then costs $10 for one Mac and $5 for each extra one. It is a notarised download rather than a Mac App Store app: App Review’s guidelines name the volume controls among the things an app may not alter.
Related questions
Will this work with a Sonos Beam or Arc?
Volume and mute work with any Sonos on your network that accepts local control, so the app side is the same. The hardware side is not. The Sonos models with a built-in optical input are the Ray, the Playbar and the Playbase. An HDMI-only soundbar needs Sonos’s Optical Audio Adapter between the cable and the speaker — a Beam ships with one, and for other models it is a separate purchase.
Does any of this affect sound quality?
No. The audio never passes through Optically. Your Mac sends the same PCM down the same cable it did before, and the app carries only the key press. Uninstall it and the sound is identical, because the sound was never going through it.
It worked, and now the keys have stopped again
Optically says why in the menu bar whenever it decides not to redirect a key — a missing permission, an output it was not tied to, a speaker it cannot reach. The support page is that list written out, with the fix beside each one.
Next
Still deciding between a cable and wireless? Optical against AirPlay covers the trade properly, including the part where AirPlay is not the lower-quality option people assume. Got the speaker already? The Sonos Ray and Mac setup guide goes through the wiring, and the home page covers the app itself.
Not sure your setup is the one this applies to? Tell us what is on your desk — you will get an honest answer, including if it is that you need nothing.