diff --git a/Client/macos/HeadphonesBridge.mm b/Client/macos/HeadphonesBridge.mm index 4f1b58d3..59bb044c 100644 --- a/Client/macos/HeadphonesBridge.mm +++ b/Client/macos/HeadphonesBridge.mm @@ -124,7 +124,7 @@ - (BOOL)adaptiveVolume { return _hp && _hp->getAdaptiveVolume(); } static BOOL SHCLooksLikeSonyHeadset(NSString *name) { if (name.length == 0) return NO; - NSArray *prefixes = @[@"WH-", @"WF-", @"WI-", @"MDR-", @"XB", @"LinkBuds"]; + NSArray *prefixes = @[@"WH-", @"WF-", @"WI-", @"MDR-", @"XB", @"LinkBuds", @"ULT"]; for (NSString *p in prefixes) { if ([name hasPrefix:p] || [name containsString:p]) return YES; } @@ -141,6 +141,15 @@ - (void)scanAndConnectWithCompletion:(void (^)(BOOL, NSString * _Nullable))compl break; } } + // BLE/audio-only headsets (e.g. ULT WEAR) report isConnected == NO; fall back to any paired Sony headset. + if (!device) { + for (IOBluetoothDevice *paired in [IOBluetoothDevice pairedDevices]) { + if (SHCLooksLikeSonyHeadset([paired name])) { + device = paired; + break; + } + } + } if (!device) { // Fall back to the native picker if we can't auto-identify a connected Sony device.