diff --git a/src/ringdht/ringaccount.cpp b/src/ringdht/ringaccount.cpp
index f47e06f3dfa43ce19c6ccda8dc8f3bd4c553c151..4a9b7e6c2a32544bcb5d2ab94e2a4fcb099cc392 100644
--- a/src/ringdht/ringaccount.cpp
+++ b/src/ringdht/ringaccount.cpp
@@ -1517,12 +1517,20 @@ RingAccount::setAccountDetails(const std::map<std::string, std::string>& details
     parseString(details, DRing::Account::ConfProperties::RING_DEVICE_NAME, ringDeviceName_);
 
 #if HAVE_RINGNS
-    //std::string ringns_server;
     parseString(details, DRing::Account::ConfProperties::RingNS::URI,     nameServer_);
     nameDir_ = NameDirectory::instance(nameServer_);
 #endif
 
     loadAccount(archive_password, archive_pin);
+
+    // update device name if necessary
+    auto dev = knownDevices_.find(dht::InfoHash(ringDeviceId_));
+    if (dev != knownDevices_.end()) {
+        if (dev->second.name != ringDeviceName_) {
+            dev->second.name = ringDeviceName_;
+            saveKnownDevices();
+        }
+    }
 }
 
 std::map<std::string, std::string>