2022-08-04 23:28:43

by John Klug

[permalink] [raw]
Subject: Apparent State Problem between Pair method of Device1 and Paired property

BlueZ 5.64
DBus Monitor output

If I understand this log correctly, member=Pair gets an error reply of "error_name=org.bluez.Error.AlreadyExists", "Already Paired", even though the "Paired"? property is false, and never gets a "PropertiesChanged" member message.

This problem went away after rebooting, but happened over and over again, every time I ran my program.

If I understand this log correctly, member=Pair gets an error reply of "error_name=org.bluez.Error.AlreadyExists", "Already Paired", even though the "Paired" property is false, and never gets a "PropertiesChanged" member message.

Is this a problem in my program, or a bug? Because I was getting this issue, I put a loop in my program to Pair multiple times, waiting a second between attempts, and always check the get results of the Paired property which was always false. Each time I attempted the pair, I got the error that it was already paired.

signal time=1659650136.651160 sender=:1.0 -> destination=(null destination) serial=2676 path=/; interface=org.freedesktop.DBus.ObjectManager; member=InterfacesAdded
object path "/org/bluez/hci0/dev_CC_F9_57_89_8C_2D"
...
dict entry(
string "Paired"
variant boolean false
)
...
method call time=1659650137.811326 sender=:1.96 -> destination=org.bluez serial=9 path=/org/bluez/hci0/dev_CC_F9_57_89_8C_2D; interface=org.freedesktop.DBus.Properties; member=Get
string "org.bluez.Device1"
string "Paired"
method return time=1659650137.816719 sender=:1.0 -> destination=:1.96 serial=2680 reply_serial=9
variant boolean false
method call time=1659650137.840411 sender=:1.96 -> destination=org.bluez serial=10 path=/org/bluez/hci0/dev_CC_F9_57_89_8C_2D; interface=org.freedesktop.DBus.Properties; member=Set
string "org.bluez.Device1"
string "Trusted"
variant boolean true
signal time=1659650137.843321 sender=:1.0 -> destination=(null destination) serial=2681 path=/org/bluez/hci0/dev_CC_F9_57_89_8C_2D; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
string "org.bluez.Device1"
array [
dict entry(
string "Trusted"
variant boolean true
)
]
array [
]
...
method return time=1659650137.846560 sender=:1.0 -> destination=:1.96 serial=2682 reply_serial=10
method call time=1659650137.864578 sender=:1.96 -> destination=org.bluez serial=11 path=/org/bluez/hci0/dev_CC_F9_57_89_8C_2D; interface=org.bluez.Device1; member=Pair
error time=1659650137.876352 sender=:1.0 -> destination=:1.96 error_name=org.bluez.Error.AlreadyExists reply_serial=11
string "Already Paired" ***Says Already Paired? How is that possible?***
method call time=1659650137.894983 sender=:1.96 -> destination=org.bluez serial=12 path=/org/bluez/hci0/dev_CC_F9_57_89_8C_2D; interface=org.freedesktop.DBus.Properties; member=Get
string "org.bluez.Device1"
string "Paired"
method return time=1659650138.950032 sender=:1.0 -> destination=:1.96 serial=2686 reply_serial=14
variant boolean false

signal time=1659650139.690503 sender=:1.0 -> destination=(null destination) serial=2687 path=/; interface=org.freedesktop.DBus.ObjectManager; member=InterfacesAdded
object path "/org/bluez/hci0/dev_CC_F9_57_89_8C_2D/service000a"
array [
dict entry(
string "org.freedesktop.DBus.Introspectable"
...



I then tried again after rebooting:

method call time=1659652894.256912 sender=:1.13 -> destination=org.bluez serial=11 path=/org/bluez/hci0/dev_CC_F9_57_89_8C_2D; interface=org.bluez.Device1; member=Pair
signal time=1659652896.898455 sender=:1.11 -> destination=(null destination) serial=72 path=/org/bluez/hci0/dev_CC_F9_57_89_8C_2D; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
string "org.bluez.Device1"
array [
dict entry(
string "UUIDs"
variant array [
string "00001800-0000-1000-8000-00805f9b34fb"
string "00001801-0000-1000-8000-00805f9b34fb"
string "0000180a-0000-1000-8000-00805f9b34fb"
string "0000fe59-0000-1000-8000-00805f9b34fb"
string "edf50000-681e-4b92-999c-e16b3a8bc046"
string "edf50000-681e-4b92-999c-e16b3a8bc047"
]
)
dict entry(
string "ServicesResolved"
variant boolean true
)
dict entry(
string "Paired"
variant boolean true
)
]
array [
]
method call time=1659652904.269624 sender=:1.13 -> destination=org.bluez serial=12 path=/org/bluez/hci0/dev_CC_F9_57_89_8C_2D; interface=org.freedesktop.DBus.Properties; member=Get
string "org.bluez.Device1"
string "Paired"
method return time=1659652904.280169 sender=:1.11 -> destination=:1.13 serial=73 reply_serial=12
variant boolean true



John Klug