Skip to content

[Feature/Bug] Custom EQ from Samsung app is reset when connecting via GalaxyBudsClient #720

Description

@Deatrax

When a Custom EQ profile is configured using the Samsung Galaxy Wearable app on Android, connecting the Galaxy Buds to GalaxyBudsClient (on macOS, Windows, or Linux) silently resets the EQ to a fixed preset (Dynamic by default). The custom per-band EQ values set on the phone are lost.

This happens because GalaxyBudsClient does not implement the CUSTOM_EQUALIZE_RECV (msg ID 105) and CUSTOM_EQUALIZE_SEND (msg ID 137) SPP messages. When the device reports EqualizerMode = 0 (which is what it reports when a custom EQ is active), the app interprets this as "EQ disabled" and falls back to the Dynamic preset.

Using Galaxy Buds3 Fe


To Reproduce

  1. Connect Galaxy Buds to an Android phone using the Samsung Galaxy Wearable app
  2. Open Sound → Equalizer → set a Custom EQ (manually adjust the per-band sliders)
  3. Disconnect from the phone and connect the Galaxy Buds to a Mac/Windows/Linux machine running GalaxyBudsClient
  4. Open the Equalizer page in GalaxyBudsClient
  5. Observe: the EQ is set to Dynamic (or another preset) — the custom band values are gone

Expected behavior
GalaxyBudsClient should read the custom EQ band values from the device using the CUSTOM_EQUALIZE_RECV message and display them in the Equalizer page without overwriting them. Ideally, the app should also allow the user to adjust individual frequency bands (like the Samsung app does) and send those values back to the device using CUSTOM_EQUALIZE_SEND.


Screenshots
N/A — the issue is that the Equalizer page shows a preset slider instead of per-band controls when custom EQ is active.


Desktop:

  • OS: macOS 15.7.2 (24G325)
  • Application version: 5.2.1.0

Additional context
The relevant SPP message IDs are already defined in the codebase (SppMessageEnums.cs) but are not handled:

  • CUSTOM_EQUALIZE_RECV = 105 — sent from the device to report current custom band values
  • CUSTOM_EQUALIZE_SEND = 137 — sent to the device to set custom band values

The root cause in code is in EqualizerPageViewModel.cs line 84:

// If EQ disabled, set to Dynamic (2) by default
EqPreset = e.EqualizerMode == 0 ? 2 : e.EqualizerMode - 1;

When custom EQ is active, EqualizerMode is 0, so the app treats it as "disabled" and defaults to Dynamic. I am working on a PR to fix this.


Log files
Not applicable for this issue — the behaviour is by design (missing feature), not a crash or connection error.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions