Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Soundcore Q30 not showing on Device list on Linux #141

Open
vinoff opened this issue Dec 5, 2024 · 28 comments
Open

Soundcore Q30 not showing on Device list on Linux #141

vinoff opened this issue Dec 5, 2024 · 28 comments

Comments

@vinoff
Copy link

vinoff commented Dec 5, 2024

I am connected to my Soundcore Q30 on my desktop and they are working fine. However, I can't seem to get OpenSCQ30 working...

The device list shows as "(None)". Clicking Refresh does nothing. Nor does "Connect"..

Any suggestions?

I am running Arch-Linux, openscq30-gui 1.14.1-1. Q30's firmware is 04.33..

@Oppzippy
Copy link
Owner

Oppzippy commented Dec 6, 2024

What is the first half of your Q30's mac address? I had been filtering the devices by mac addresses starting with AC:12:2F or E8:EE:CC since I thought all soundcore devices were within those ranges, but I recently encountered some other ranges (not included in a release yet), so it's possible yours is outside the expected range.

@vinoff
Copy link
Author

vinoff commented Dec 6, 2024

> bluetoothctl
[soundcore Q30]# Agent registered
[soundcore Q30]# devices
Device 98:47:44:93:C8:6D soundcore Q30
Device E8:EE:CC:76:50:1A soundcore Liberty 4 NC

Seems to be 98:47:44:93:C8:6D.

@Oppzippy
Copy link
Owner

It should be fully working now as of v1.16.0. Feel free to re-open if there are still problems.

@vinoff
Copy link
Author

vinoff commented Dec 14, 2024

I tested it on Android (package has not yet been updated on AUR so I cannot test it on linux yet) and it doesn't work on Android.. Same problem, the device is not found..

@Oppzippy
Copy link
Owner

Now that's surprising. I use the same method as the official Soundcore app on Android for device filtering, and that's checking if the device name contains "Soundcore". Is the device name something other than "Soundcore Life Q30" for you?

@Oppzippy Oppzippy reopened this Dec 14, 2024
@vinoff
Copy link
Author

vinoff commented Dec 14, 2024

Yes, I had changed it to "q30" in the bluetooth settings.. Now, I changed it to "Soundcore Life Q30". Dunno if that should make a difference, but it didn't.

Here is what I see when I click on Pair:

1

And here is a screenshot of the official soundcore app. Seems like the device name is just "Q30". That name is not changeable it seems.

2

Oppzippy added a commit that referenced this issue Dec 14, 2024
As seen in GH-141, the S in soundcore can be lowercase, so the pattern
should be case insensitive.
@Oppzippy
Copy link
Owner

> bluetoothctl
[soundcore Q30]# Agent registered
[soundcore Q30]# devices
Device 98:47:44:93:C8:6D soundcore Q30
Device E8:EE:CC:76:50:1A soundcore Liberty 4 NC

I forgot that this comment had the device name in it. Looks like the name does have soundcore in it, just with a lowercase s. I made the filter case insensitive in v1.16.1, so that should fix it.

@vinoff
Copy link
Author

vinoff commented Dec 14, 2024

> bluetoothctl
[soundcore Q30]# Agent registered
[soundcore Q30]# devices
Device 98:47:44:93:C8:6D soundcore Q30
Device E8:EE:CC:76:50:1A soundcore Liberty 4 NC

I forgot that this comment had the device name in it. Looks like the name does have soundcore in it, just with a lowercase s. I made the filter case insensitive in v1.16.1, so that should fix it.

That was in Linux though, not on Android...? I haven't tested v1.16.0 on Linux yet, since I am using the package from AUR (arch linux) and it has not yet been updated. The screenshots I showed were android's.

@vinoff
Copy link
Author

vinoff commented Dec 14, 2024

v1.16.1 still doesn't work on android..

@Oppzippy
Copy link
Owner

That was in Linux though, not on Android

My mistake, wasn't aware bluetoothctl devices output aliases and not the actual device name. So I guess the "soundcore" part was added by you, and the actual name is just "Q30" as you said. It's very strange, I have no idea why they removed the "Soundcore Life" part from the device name. I'll look into what I can do, but the solution might need to just be having a separate "Pair Device (Unfiltered)" button or something.

@vinoff
Copy link
Author

vinoff commented Dec 15, 2024

That was in Linux though, not on Android

My mistake, wasn't aware bluetoothctl devices output aliases and not the actual device name. So I guess the "soundcore" part was added by you, and the actual name is just "Q30" as you said. It's very strange, I have no idea why they removed the "Soundcore Life" part from the device name. I'll look into what I can do, but the solution might need to just be having a separate "Pair Device (Unfiltered)" button or something.

I don't think I added anything to the device name on Linux.. Is it possible that the device name is different depending on the OS? On Android, it is "Q30" and on Linux, it is "soundcore Q30"? Because that is what I am seeing.

I will test the v1.16.1 on Linux soon and I will let you know if it works.

@Oppzippy
Copy link
Owner

Oppzippy commented Dec 15, 2024

It shouldn't change, the device is broadcasting its name whether or not anything is connected to it. I had a look at the Bluetooth spec and HCI_Write_Local_Name for changing the device's name on the device itself does exist, but I'm pretty sure that's very different from renaming a device in the operating system's UI, which is just giving it an alias locally.

Here's what happens if I rename the device to "Q30" and scan with the "Soundcore" name filter:

image

Even though my alias no longer has "Soundcore" in the name, the actual name the device is broadcasting does still contain "Soundcore".

On Android, the simplest way to figure out the real name seems to be to un-pair and re-pair.

On linux:

❯ bluetoothctl info
Device AC:12:2F:C8:6E:08 (public)
        Name: Soundcore Life Q30
        Alias: Q30 Test Alias

@vinoff
Copy link
Author

vinoff commented Dec 15, 2024

This is what I get on Linux:

> bluetoothctl info
Device 98:47:44:93:C8:6D (public)
        Name: soundcore Q30
        Alias: soundcore Q30

On android, I unpaired and paired and the name remains Q30 in the soundcore app (Device Name: Q30, as the screenshot I posted earlier shows). On android, in the bluetooth settings, it says "John's soundcore Q30".

v1.16.1 doesn't work on android. Waiting to test on Linux.

@vinoff
Copy link
Author

vinoff commented Dec 16, 2024

@Oppzippy, I just tested v1.17.0 on Android:

aaaab

Clicking on "Pair Device (Unfiltered)" does find a device.. However, after pairing, I see the screenshot above.. If I click on that, nothing happens.. As in, I can't do anything with it. The only thing I can do is long-click to unpair.

@Oppzippy
Copy link
Owner

A few questions:

  1. Are you sure you're connecting to the right device? The mac address there starts with 61 rather than 98 like before.
  2. On linux, if you run bluetoothctl and then scan on, wait a bit, and then devices, are there two entries for Q30 with different mac addresses? scan on will scan for both bluetooth low energy and non low energy devices, and I saw something in a different issue indicating that it may be possible for different mac addresses to be used for each of those.

Next, please do the following so I can ensure the BLE services are as I expect. It's possible that newer devices don't support BLE, so if you get no results, that could be the case.

  1. bluetoothctl
  2. connect YOUR_DEVICES_MAC_ADDRESS - this is needed even if already connected, since it will cause GATT services to be discovered, and that does not occur automatically. This should output a giant list of services and such.
  3. exit
  4. Post the output of this command:
bluetoothctl gatt.list-attributes | grep -E "/org/bluez/" | xargs -I {} bluetoothctl gatt.attribute-info "{}"

@vinoff
Copy link
Author

vinoff commented Dec 17, 2024

  1. No. It seems like I was not connecting to the right device.. I think.. Sorry, my bad.
  2. No, just 1 entry.

I did the whole connect thing, and that command gives no output.

Now, on Android:

Bluetooth ON, but I am not yet connected to my device. I see the John's soundcore Q30 on "pair device (unfiltered)". I click on it, and then I see this:

SSSSSSS

However, clicking on it, all I see is a loading, and then it goes back to the screen above.

However, if I am already connected to the device via bluetooth, the headphones don't show up on openSCQ30.

What am I doing wrong?

EDIT: I unpaired from android's bluetooth. I then paired using only OpenSCQ30. The entry is added (just like in the screenshot above), but the device is not really connected via bluetooth. Clicking on that entry does nothing.

@Oppzippy
Copy link
Owner

It's seems that you're not doing anything wrong and that they removed BLE support in newer devices, since they don't actually use that in their app. I'll need to change the implementation on all platforms except web to use standard bluetooth. Web Bluetooth only supports BLE, so it won't be possible to support newer devices on web.

@Oppzippy
Copy link
Owner

One last thing to check just to make sure. On Android in a chromium based browser, navigate to chrome://bluetooth-internals. Go to the devices tab, and start scan until Q30 shows up. Then, click inspect. If there are services listed there, screenshot it. If not, well, the solution is a lot of work and won't happen soon.

@vinoff
Copy link
Author

vinoff commented Dec 17, 2024

One last thing to check just to make sure. On Android in a chromium based browser, navigate to chrome://bluetooth-internals. Go to the devices tab, and start scan until Q30 shows up. Then, click inspect. If there are services listed there, screenshot it. If not, well, the solution is a lot of work and won't happen soon.

I tried this but couldn't find the device in the browser.. I used bromite. Scanned for a while but didn't find the device.. Might have to use a different browser? I really didn't find many devices, just 1 thing. I will see if it can find my other soundcore earphones later.

@Oppzippy
Copy link
Owner

It will only show bluetooth low energy devices there, so if it's not showing up, it doesn't support BLE. Unfortunate.

@vinoff
Copy link
Author

vinoff commented Dec 20, 2024

I just tested on Linux with v1.17.0 and sure enough I get the following error:

"Device BLE Service Not Found".

@Oppzippy
Copy link
Owner

Oppzippy commented Jan 8, 2025

As of v1.18.0, bluetooth classic is used rather than bluetooth low energy, so that should fix the problem. Please let me know if it's working now.

@Mrnofish
Copy link

Mrnofish commented Jan 8, 2025

Won't switching to regular Bluetooth on BLE-supporting devices result in a reduction in battery life ?

@Oppzippy
Copy link
Owner

Oppzippy commented Jan 8, 2025

I haven't measured or anything, but considering the official Soundcore app doesn't make use of BLE at all, I doubt it has a noticeable impact. Audio is over bluetooth classic in either case, so it's not like we're avoiding running bluetooth classic by using BLE.

@vinoff
Copy link
Author

vinoff commented Jan 9, 2025

Tested (v1.18.0) on Android:

On the screen that says "soundcore Q30 - Paired", I click on it, it shows "Loading for a second or so and then goes back to the same screen. Nothing happens.

@Mrnofish
Copy link

Mrnofish commented Jan 9, 2025

1.18 is working for me on Q30 and Android. However, #146 is unchanged.

@vinoff
Copy link
Author

vinoff commented Jan 10, 2025

Tested 1.18.1 on Android and it is still not working. Pressing the paired headphones, it just shows "Loading" for like 2 secs and then goes back to the main screen.

EDIT: Seems like OpenSCQ30 actually pairs the device (if it is unpaired). However, I have no access to anything else. Should I not be seeing some settings, such as ANC settings and whatnot?

@Oppzippy
Copy link
Owner

v1.18.1 was a fix for a different issue, so I wasn't expecting anything to change with this. I really should have done this ages ago, but I added a button in the settings page to copy logs to clipboard in v1.19.0. Please try to connect, and then post the error logs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants