Repository navigation
Releases: vedatkilic/budsy
Release list
v1.5.0 — Budsy
Galaxy Buds for Mac is now Budsy — same app, new name. "Galaxy Buds" is Samsung's trademark, and the app is heading to the Mac App Store, so it needed a name of its own.
Signed and notarized. This is the first release signed with a Developer ID certificate and notarized by Apple. It opens like any other Mac app: no "Apple could not verify" dialog, no right-click → Open, no quarantine flag to remove. If a previous version ended up in the Trash because of that dialog, this is the fix.
What changes on your Mac
- The bundle identifier is now
com.nivorbit.budsy, so macOS asks for Bluetooth permission once more on first launch — allow it, or the app can't reach the earbuds. Re-enable Launch at login in the app if you had it on. - Homebrew: the cask is now
budsy.brew upgrademigrates automatically; a fresh install isbrew install --cask vedatkilic/tap/budsy. - The app is installed as
Budsy.app. You can delete the oldGalaxy Buds.appfrom /Applications. - Custom equalizer curves carry over from the previous versions.
Everything from 1.4.x stays: the redesigned panel, reconnect after sleep, Buds2 / Buds FE noise control, correct firmware version readout.
For bug reports the unified-log subsystem is now com.nivorbit.budsy:
/usr/bin/log show --last 1h --predicate 'subsystem == "com.nivorbit.budsy"'
v1.4.2
A redesign of the whole app around the way macOS draws its own menu-bar panels.
What changed
- One panel, no windows. Clicking the menu-bar icon opens a quick view in the style of the Control Center Sound panel; Settings… expands the same panel in place to the full dashboard. Nothing opens in a separate window any more.
- Native look. The panel uses the system's popover vibrancy, sits where the Bluetooth and Sound panels sit, and draws its content straight on the glass: section titles, rows, hairlines, pill-shaped segment pickers, and the system accent colour on every control.
- Every page rebuilt on the same language: Sound & ANC, Earbud controls, Equalizer, Find earbuds, Firmware, About and the connect wizard. Pages are as tall as their content; nothing scrolls unless it has to.
- Listening modes show their full names (Off / Ambient Sound / Adaptive / Noise Cancelling), localized in all 11 languages.
- Switches now show their on-colour (the panel can take keyboard focus without bringing the app forward).
Install / upgrade
brew upgrade --cask galaxy-buds, or download the DMG below.- The app is ad-hoc signed. If macOS says it can't verify the developer, don't choose "Move to Trash" — pick Done, then open it from System Settings → Privacy & Security → Open Anyway; or remove the quarantine flag:
xattr -dr com.apple.quarantine "/Applications/Galaxy Buds.app". A notarized build is in the works.
v1.4.1
Bug-fix release for the reports that came in on Reddit and GitHub.
Fixed
- Reconnect after sleep. The app couldn't reconnect once the Mac had slept: the link died silently and every retry dialled a stale cached channel. The channel is now closed on sleep, reopened a few seconds after wake, and retries always run a fresh service lookup.
- Buds2 and Buds FE: Off / Ambient / ANC switch. Both models were missing from the capability table. ANC strength is hidden for them since the hardware only switches it on or off.
- Software version on Buds2 / Buds2 Pro showed garbled text. The firmware build name is now located in the payload instead of read from a Buds3/4 Pro-only offset.
- Launch at login stopped working after the 1.3.0 bundle-identifier change and after reinstalling. The preference is now stored and re-registered at launch.
- The ANC strength rail no longer extends past the first and last step.
Diagnostics
- The connection log is now persisted to the unified log, so it can be collected without opening the app:
/usr/bin/log show --last 1h --predicate 'subsystem == "com.nivorbit.galaxybuds"'
Install / upgrade
brew upgrade --cask galaxy-buds, or download the DMG below.- The app is ad-hoc signed; on first launch right-click → Open.
v1.4.0
Galaxy Buds for Mac v1.4.0
Menu-bar panel
- The case battery now has its own dial, alongside separate ones for the left and right earbud, each showing a charging bolt where the earbuds report one. The case reports only while the buds are sitting in it, so it shows an em dash the rest of the time instead of a misleading 0%.
- The listen-mode picker is drawn the way the Galaxy Wearable app draws it — circles strung along a rail — and the panel and the settings window now share one implementation instead of two that had drifted apart.
ANC strength has its real range
ANC strength was never a Low/High toggle. The earbuds report it as a 0-based step, which the app read as a boolean and so showed "Low" for every value above one — and there was no way to pick a step.
Probing NOISE_REDUCTION_LEVEL against Buds4 Pro confirmed it writes that step directly and the earbuds echo it back unchanged. Buds3 Pro and Buds4 Pro now offer the same five steps the phone app does, through a minus/plus control that matches it. Other models keep the two steps the protocol assumes for them.
Accessibility
The mode circles now carry their label and selected state, and the strength control is a single adjustable element rather than a row of anonymous buttons.
Install
brew install --cask vedatkilic/tap/galaxy-buds
Or download the .dmg below and drag to Applications. First launch: right-click → Open (unsigned app).
v1.3.0
Galaxy Buds for Mac v1.3.0
The menu-bar icon fix
On some Macs the menu-bar icon simply never appeared, leaving the app with no way to reach it. macOS was refusing to place the status item for the app's old bundle identifier: the item existed and reported itself visible, but its window was never given a real slot — it came back at the pre-notch menu bar height, parked underneath the clock, so nothing was ever drawn.
Everything else was ruled out first: the app's preferences, Control Center's preferences, restarting Control Center and SystemUIServer, duplicate LaunchServices registrations, running from /Applications, a reboot, and the build metadata — which is identical to a control app that works. The identifier was the only thing that changed the outcome, so the bundle identifier is now com.nivorbit.galaxybuds.
What that means when you upgrade
macOS keys some things to the bundle identifier, so this one upgrade asks a little of you:
- Bluetooth permission is requested again. Allow it when prompted, or the app can't reach the earbuds.
- Launch at login turns off. Re-enable it in the app's settings if you use it.
- Your custom equalizer curve carries over automatically — the app copies it from the old preferences on first launch.
If a copy of the old build is still running (from a stale login item), the new one now recognises it and hands off instead of fighting over the control channel.
Install
brew install --cask vedatkilic/tap/galaxy-buds
Or download the .dmg below and drag to Applications. First launch: right-click → Open (unsigned app).
v1.2.1
Galaxy Buds for Mac v1.2.1
Fixes for the menu bar and for how quickly a failed connection is reported.
Fixes
- The menu-bar icon could disappear for good. The status item allowed itself to be dragged off the menu bar, and macOS remembers that — which leaves a menu-bar-only app with nothing to click. The launch-time visibility toggle that forced a re-layout could write the same state if the app was killed at the wrong moment. The item can no longer be removed, and a remembered "hidden" state is cleared on launch.
- The panel opened in the bottom-left corner and couldn't be moved. It anchored to the status item's window without checking that the item was actually placed in the menu bar; an unplaced item reports an origin near the bottom of the screen. The panel now anchors only to a real menu-bar position, falls back to top-centre otherwise, and can be dragged by its background.
- Failed connections took 72s to report. With the earbuds away, macOS keeps serving a stale service record, so the control channel appeared to resolve and only the connection attempt revealed nothing was there. That was noticed after 10s but left to idle out against a 35s watchdog. An error now surfaces in about 45s.
Other
- The app declares
LSUIElement, and the diagnostics log now records whether the menu-bar item was actually placed.
Install
brew install --cask vedatkilic/tap/galaxy-buds
Or download the .dmg below and drag to Applications. First launch: right-click → Open (unsigned app).
v1.2.0
Galaxy Buds for Mac v1.2.0
New
-
Firmware updates — a new Firmware page checks the community archive of Samsung's official builds, shows what's published for your model, and installs it over the same Bluetooth control channel the rest of the app uses. Only strictly newer builds are ever offered (no downgrades), and the update refuses to start unless both earbuds are above half battery.
⚠️ Treat this as experimental. Everything up to the flash is verified against real data, but the flash itself has not been run on hardware — the Buds4 Pro on hand already runs the newest published build, and downgrading to create a test is the one thing that actually risks bricking a device. If you use it, keep the earbuds in the open case with your Mac nearby and don't quit the app. -
Copy diagnostics — About now keeps a connection log (service records, chosen channel, attempt timings) and copies it to the clipboard for bug reports. It is also mirrored to the unified log under subsystem
com.nivorbit.budsapp.
Fixes
- Endless "Connecting…" / "Connection Failed" loop (#2) — the background auto-connect cleared the visible error state every 15s, so a failure was wiped and re-surfaced forever. A silent auto-connect no longer clears a surfaced error.
- False connection timeouts — one watchdog covered all three connection attempts, so it could fire mid-retry. Measured against hardware,
openConnection()alone blocks 3–15s before service discovery even starts, which is how the old timeout reported "connection timed out" on a healthy device. Each attempt now gets its own 35s budget under a 60s total, and the RFCOMM open path gained a failure route it never had. - Control channel not found on some units — the app now probes all four SPP service UUIDs Samsung earbuds are known to use, including the alternative-mode record, instead of only the one expected for the model.
- Messages larger than the Bluetooth channel MTU are now split across writes instead of being dropped.
Localization
- The new firmware and diagnostics strings are translated across all 11 supported languages.
Install
brew install --cask vedatkilic/tap/galaxy-buds
Or download the .dmg below and drag to Applications. First launch: right-click → Open (unsigned app).
v1.1.0
Galaxy Buds for Mac v1.1.0
New
- Custom 9-band equalizer — a dedicated Equalizer page with a draggable 63Hz–16kHz curve (±10 per band) on Buds3 Pro / Buds3 FE / Buds4 / Buds4 Pro. Presets show the device's own curve read-only; your custom curve persists across reconnects and restarts.
- Send audio to phone — a To phone button in the panel drops the Mac's Bluetooth link so the buds fall back to your phone, and Connect on Mac reclaims them. macOS has no API to release only the audio profile, so the full link is dropped and auto-reconnect stays paused until you ask for it back.
- Seamless Connection (multipoint) is now enabled automatically on models that support it. Without it a paired phone can claim the single bud link and the app loses contact with the earbuds; audio routing is handled by the hand-off button instead.
Fixes
- Left earbud stuck at 1% — the status message was read one byte short, surfacing the firmware revision as the left battery level.
- Buds3/4 Pro settings reading the wrong bytes — sidetone, ambient customisation and call-path used the older Buds Pro field layout, so they looked like they reset on every reconnect. ANC strength was never read at all and always showed Low.
- Equalizer vs. voice focus — both were decoded from the same byte; the equalizer preset now reads correctly.
- Device colour was resolved from the wrong byte.
Reliability
- The SDP poll window is now 8s (was 2.5s) — the buds often need 3–5s to expose their control channel after a phone multipoint session.
- Failed connections retry twice with backoff before showing an error; the overall connect timeout is now 30s.
Localization
- The new equalizer and hand-off strings are translated across all 11 supported languages.
Install
brew install --cask vedatkilic/tap/galaxy-buds
Or download the .dmg below and drag to Applications. First launch: right-click → Open (unsigned app).
Custom equalizer, multipoint, hand-off and the status-parsing fixes were contributed by @koalakid2 in #3 — thank you.
v1.0.3
Galaxy Buds for Mac v1.0.3
Fixes
- Connection reliability: a single in-flight connection guard stops auto-connect from racing the manual connect flow, which could leave the app stuck on "Connecting…".
- Panel always reachable: the quick panel now clamps fully on-screen, even when the menu-bar icon is hidden behind the notch.
- Menu-bar item: never collapses to zero width; position now persists.
- Relaunch: opening the app again re-surfaces the panel.
Install
brew install --cask vedatkilic/tap/galaxy-buds
Or download the .dmg below and drag to Applications. First launch: right-click → Open (unsigned app).
v1.0.2
What's new
- Quit action — a Quit button in the menu-bar popover footer, plus the standard ⌘Q keyboard shortcut.
- Full localization — the Quit label and menu title are translated across all 11 supported languages.
Install
brew install --cask vedatkilic/tap/galaxy-buds
Or download Galaxy-Buds-1.0.2.dmg below and drag to Applications.
SHA256: fcf58d3613988e0349e2a9b939cf03c1b892a71831e92be0526286716ec14e2f