BudsPro-Headtracking icon indicating copy to clipboard operation
BudsPro-Headtracking copied to clipboard

Doesn't work with Galaxy Buds2

Open githubcatw opened this issue 4 years ago • 10 comments

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

githubcatw avatar Apr 05 '22 10:04 githubcatw

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

timschneeb avatar Apr 05 '22 12:04 timschneeb

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 avatar Apr 07 '22 17:04 githubcatw

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.

githubcatw avatar Apr 07 '22 17:04 githubcatw

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 avatar Mar 22 '23 03:03 alesya-h

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

alesya-h avatar Mar 23 '23 04:03 alesya-h

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.

githubcatw avatar Mar 31 '23 14:03 githubcatw

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.

sylvainf avatar Jun 21 '23 09:06 sylvainf

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

llkjhgllkjhg avatar Dec 04 '23 00:12 llkjhgllkjhg

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.

githubcatw avatar Dec 04 '23 04:12 githubcatw

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

llkjhgllkjhg avatar Dec 24 '23 04:12 llkjhgllkjhg