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

Doesn't work with Galaxy Buds2 #3

Open
githubcatw opened this issue Apr 5, 2022 · 10 comments
Open

Doesn't work with Galaxy Buds2 #3

githubcatw opened this issue Apr 5, 2022 · 10 comments

Comments

@githubcatw
Copy link

Firmware version R177XXU0AVC8 adds support for 360 audio:

I installed the update and ran this script. However, this script can't find the RFCOMM protocol.

python Headtracking.py MAC
Couldn't find the proprietary RFCOMM service

I modified the script to also show the service that it found (I can PM the full rawrecord on Telegram):

python Headtracking.py MAC -v
Galaxy Buds2 (****)
Searching for RFCOMM interface...
[{'host': 'MAC', 'name': b'FACTORY', 'description': '', 'port': 20, 'protocol': 'RFCOMM', 'rawrecord': b'6\x00V...\x01\x00%\x07FACCouldn't find the proprietary RFCOMM service

However, the Galaxy Buds Manager app works:

image

Environment:

  • Windows 11, version 22000.434
  • PyBluez 0.22
  • Python 3.8.2
@timschneeb
Copy link
Owner

It appears that the name of the Bluetooth profile for serial communication has changed. For the previous earbuds, it was something like GEARMANAGER, but the Buds2 use FACTORY as a name instead.

I've pushed an update that should fix this: 19f78ad

@githubcatw
Copy link
Author

I don't get any data from the buds now, and weirdly enough the buds disconnect from my machine after a few minutes and don't reconnect until I restart them.

@githubcatw
Copy link
Author

Output with -v and -t flags:

Galaxy Buds2 (****)
Searching for RFCOMM interface...
RFCOMM interface found. Establishing connection...
Connected to device.
<< OUTGOING: fd 04 00 7c 00 34 4d dd
<< OUTGOING: fd 03 00 c3 2f e9 dd
>> INCOMING: fd 27 08 61 08 03 5e 61 01 01 21 2a 01 00 bf 22 00 00 3a 01 3a 01 03 00 03 66 01 00 00 10 00 00 01 00 22 04 01 01 00 00 3f d5 dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
Exception in thread Thread-2:
Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python38\lib\threading.py", line 932, in _bootstrap_inner
    self.run()
  File "C:\Users\User\AppData\Local\Programs\Python\Python38\lib\threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\User\Downloads\BudsPro-Headtracking-master\BudsPro-Headtracking-master\RepeatedTimer.py", line 20, in _target
    self.function(*self.args, **self.kwargs)
  File "C:\Users\User\Downloads\BudsPro-Headtracking-master\BudsPro-Headtracking-master\SpatialSensorManager.py", line 44, in __keepAlive
    self.service.sendPacket(self.MSG_SPATIAL_AUDIO_CONTROL, bytes(self.CID_KEEP_ALIVE))
  File "C:\Users\User\Downloads\BudsPro-Headtracking-master\BudsPro-Headtracking-master\BluetoothService.py", line 85, in sendPacket
    self.socket.send(bytes(b))
  File "C:\Users\User\AppData\Local\Programs\Python\Python38\lib\site-packages\bluetooth\msbt.py", line 75, in send
    return bt.send (self._sockfd, data)
OSError: An established connection was aborted by the software in your host machine.

@alesya-h
Copy link

On my computer after adding missing or match["name"] == "FACTORY" (there was only or match["name"] == b"FACTORY") it causes earbuds to stutter and restart with no spatial data being printed. Logs look like that:

Alesya's Buds2 Pro
Searching for RFCOMM interface...
FACTORY
RFCOMM interface found. Establishing connection...
Connected to device.
Exception in thread Thread-2 (_target):
Traceback (most recent call last):
  File "<string>", line 3, in send
_bluetooth.error: (107, 'Transport endpoint is not connected')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/nix/store/0n4y44dnaxafqs7cg625aldrb152x7bx-python3-3.10.10/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
    self.run()
  File "/nix/store/0n4y44dnaxafqs7cg625aldrb152x7bx-python3-3.10.10/lib/python3.10/threading.py", line 953, in run
    self._target(*self._args, **self._kwargs)
  File "/home/me/p/fork/BudsPro-Headtracking/RepeatedTimer.py", line 20, in _target
    self.function(*self.args, **self.kwargs)
  File "/home/me/p/fork/BudsPro-Headtracking/SpatialSensorManager.py", line 44, in __keepAlive
    self.service.sendPacket(self.MSG_SPATIAL_AUDIO_CONTROL, bytes(self.CID_KEEP_ALIVE))
  File "/home/me/p/fork/BudsPro-Headtracking/BluetoothService.py", line 85, in sendPacket
    self.socket.send(bytes(b))
  File "<string>", line 5, in send
bluetooth.btcommon.BluetoothError: [Errno 107] Transport endpoint is not connected

Unlike @githubcatw I don't have the "Spatial Sensor" section anywhere in GalaxyBudsClient (tried 4.5.2 and master), although other features of it work fine (I'm on Linux)

@alesya-h
Copy link

Output with -v and -t (differs from @githubcatw 's - mine has 2 incoming messages with first one looking somewhat similar to theirs, and the second one being something new):

Alesya's Buds2 Pro
Searching for RFCOMM interface...
FACTORY
RFCOMM interface found. Establishing connection...
Connected to device.
<< OUTGOING: fd 04 00 7c 00 34 4d dd
<< OUTGOING: fd 03 00 c3 2f e9 dd
>> INCOMING: fd 2f 00 61 0b 04 63 63 01 00 11 00 01 00 bf 21 02 00 48 01 48 01 03 00 03 66 00 01 00 10 01 01 00 00 11 02 01 01 00 01 00 00 01 00 00 00 00 00 4d 63 dd
>> INCOMING: fd 0d 40 63 00 00 01 80 05 01 80 05 00 00 e7 a5 dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd

@githubcatw
Copy link
Author

Unlike @githubcatw I don't have the "Spatial Sensor" section anywhere in GalaxyBudsClient (tried 4.5.2 and master), although other features of it work fine (I'm on Linux)

I enabled it from the translator settings, though I don't remember how.

@sylvainf
Copy link

Hello,
I have some buds pro 2 under the latest firmware (XXU0AWA5) and I encounter exactly the same problem. The device sends several frames "fd 07 00 c3 00 00 00 00 6a dd dd" and then disconnects after about 20 seconds.

@llkjhgllkjhg
Copy link

Output with -v and -t (differs from @githubcatw 's - mine has 2 incoming messages with first one looking somewhat similar to theirs, and the second one being something new):

Alesya's Buds2 Pro
Searching for RFCOMM interface...
FACTORY
RFCOMM interface found. Establishing connection...
Connected to device.
<< OUTGOING: fd 04 00 7c 00 34 4d dd
<< OUTGOING: fd 03 00 c3 2f e9 dd
>> INCOMING: fd 2f 00 61 0b 04 63 63 01 00 11 00 01 00 bf 21 02 00 48 01 48 01 03 00 03 66 00 01 00 10 01 01 00 00 11 02 01 01 00 01 00 00 01 00 00 00 00 00 4d 63 dd
>> INCOMING: fd 0d 40 63 00 00 01 80 05 01 80 05 00 00 e7 a5 dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd
<< OUTGOING: fd 07 00 c3 00 00 00 00 6a dd dd

hello, could u plz teach me how to get R177XXU0AVC8 this firmware version if i don't know how to use python

@githubcatw
Copy link
Author

hello, could u plz teach me how to get R177XXU0AVC8 this firmware version if i don't know how to use python

If you are on a recent firmware version you have 360 audio. If you're unsure, check if your firmware version (which can be found in Earbuds settings > About earbuds in the mobile app) is above AVC8 in this list.

@llkjhgllkjhg
Copy link

hello, could u plz teach me how to get R177XXU0AVC8 this firmware version if i don't know how to use python

If you are on a recent firmware version you have 360 audio. If you're unsure, check if your firmware version (which can be found in Earbuds settings > About earbuds in the mobile app) is above AVC8 in this list.

thx, i know it had have 360 audio, but i actually want to downgrade the firmware version T_T

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

5 participants