diff --git a/src/adapter.c b/src/adapter.c
index d7e2550..1839286 100644
--- a/src/adapter.c
+++ b/src/adapter.c
struct eir_data eir_data;
uint16_t eir_len;
char addr[18];
+ bool name_known;
if (length < sizeof(*ev)) {
error("Too small device connected event");
adapter_add_connection(adapter, device, ev->addr.type);
- if (eir_data.name != NULL) {
+ name_known = device_name_known(device);
+
+ if (eir_data.name && (eir_data.name_complete || !name_known)) {
device_store_cached_name(device, eir_data.name);
btd_device_device_set_name(device, eir_data.name);
}