When [GATT] Cache = yes is set in configuration BlueZ does not use cached UUIDs for the list of service UUIDs. However, it doesn't clear the in-memory list of UUIDs received from advertising data, so when a device is scanned, connected and disconnected, the internal state still reflects that the UUIDs from the advertising data have already been handled. device_add_eir_uuids() ignored the UUIDs from the advertising data because both dev->le_state.svc_resolved == true and dev->eir_uuids still contains the UUIDs from the previous scan session. v2 changes: * split into two patches * always clear eir_uuids list on disconnect * move le_state.svc_resolved = false to gatt_cache_cleanup() Issue: https://github.com/bluez/bluez/issues/192 David Lechner (2): device: clear eir_uuids list on disconnect device: set le_state.svc_resolved = false in gatt_cache_cleanup() src/device.c | 4 ++++ 1 file changed, 4 insertions(+) -- 2.25.1