gmallios / SoundcoreManager

Control Soundcore headphones with the power of Rust.
https://gmallios.github.io/SoundcoreManager/
127 stars 10 forks source link

Soundcore Space Q45/A3040 Support #18

Open gmallios opened 1 year ago

gmallios commented 1 year ago

Current status of Soundcore Space Q45 (A3040) support:

Wireshark logs along with a description are much needed!

gmallios commented 1 year ago

@capz @neverknowsless @adriantoddross If you have the Q45, please test out the latest build 🙂

capz commented 1 year ago

@gmallios what do you need me to try? I've downloaded the latest build as linked from the main page but when i start it i don't see my Q45 show up, even though it is connected and working. Are there specific steps i need to do or things i need to disable? I am using multipoint connection so it's connected to my phone and pc at the same time. Not sure if that's an issue or not.

gmallios commented 1 year ago

@gmallios what do you need me to try? I've downloaded the latest build as linked from the main page but when i start it i don't see my Q45 show up, even though it is connected and working. Are there specific steps i need to do or things i need to disable? I am using multipoint connection so it's connected to my phone and pc at the same time. Not sure if that's an issue or not.

Try with only the pc connected and also check if you have the latest build. If neither works, reply with the Bluetooth name of the device. The app now filters the device list using the Bluetooth name. Also, are you able to change the Bluetooth name of the Q45s through the official Soundcore App?

wimmme commented 1 year ago

I could help to test too, i have both the Space Q45 and the A3i

JCdots commented 1 year ago

I can help with the Q45.

Saarsk commented 10 months ago

I have the Q45, but I use Linux and Android only.

Is it possible to use a traffic analyzer on Android to gather the commands from the app to the headphones?

Soundcore has repair guides and replacement parts, so their attitude towards "tinkering" might be positive. Did you try to contact them and ask for useful information that would aid development?

gmallios commented 10 months ago

I have the Q45, but I use Linux and Android only.

Is it possible to use a traffic analyzer on Android to gather the commands from the app to the headphones?

Soundcore has repair guides and replacement parts, so their attitude towards "tinkering" might be positive. Did you try to contact them and ask for useful information that would aid development?

Unfortunately Linux or Android are not supported as of now because the app uses a custom Bluetooth library since no Rust libraries exist which support RFCOMM and are cross-platform. I have planned to switch over to the BLE protocol by using the btleplug library which is cross-platform but it's not done as of now.

You can capture pcap files on android which will help aid development a lot but I don't think Soundcore/Anker would be able or be willing to release details on the protocol and their firmware due to lincensing. They even obfuscated the latest versions of their app which made reverse engineering their protocol non-trivial and much more time consuming.

If you figure out how to export pcap files please add upload them and link them to this issue. Just make sure to begin capturing before you open the app, since some communication takes place while connecting. I will also be getting the Q45s in christmas so support is coming (you can see progress on the nom_parsing branch). Thanks!

RunTheBot commented 9 months ago

Nice project I was testing this with my Q45. I'm just stuck on loading screen. Logs seam normal to me

image

[2024-02-06][02:30:55][DEBUG][soundcoremanager::tray] Setting tray menu to connected status: false
[2024-02-06][02:30:55][DEBUG][soundcoremanager::device] Closing device
[2024-02-06][02:30:56][DEBUG][bluetooth_lib::win32::scanner] Found 9 devices using win32 bt scan
[2024-02-06][02:31:12][DEBUG][bluetooth_lib::win32::scanner] Found 8 devices using win32 bt scan
[2024-02-06][02:31:15][DEBUG][bluetooth_lib::win32::scanner] Found 8 devices using win32 bt scan
[2024-02-06][02:31:20][TRACE][bluetooth_lib::winrt::rfcomm] Trying to connect to E8:EE:CC:64:62:9D with uuid 0CF12D31-FAC3-4553-BD80-D6832E7B3040
[2024-02-06][02:31:20][DEBUG][bluetooth_lib::win32::scanner] Found 7 devices using win32 bt scan
[2024-02-06][02:31:20][DEBUG][bluetooth_lib::winrt::rfcomm] Found 1 rfcomm services
[2024-02-06][02:31:20][DEBUG][bluetooth_lib::winrt::rfcomm] Found rfcomm services with guids: [0CF12D31-FAC3-4553-BD80-D6832E7B3040]
[2024-02-06][02:31:20][TRACE][bluetooth_lib::winrt::rfcomm] Attempting to connect to service: Bluetooth#Bluetooth00:e9:3a:cc:8e:6e-e8:ee:cc:64:62:9d#RFCOMM:00000000:{0cf12d31-fac3-4553-bd80-d6832e7b3040}
[2024-02-06][02:31:20][TRACE][bluetooth_lib::winrt::rfcomm] Successfully connected to service. Creating data reader and writer
[2024-02-06][02:31:20][TRACE][bluetooth_lib::winrt::rfcomm] Successfully created data reader and writer
[2024-02-06][02:31:20][DEBUG][soundcoremanager::device] Connected to device: soundcore Space Q45