diff --git a/electrum/plugins/hw_wallet/plugin.py b/electrum/plugins/hw_wallet/plugin.py index 192912b97..debfb60ec 100644 --- a/electrum/plugins/hw_wallet/plugin.py +++ b/electrum/plugins/hw_wallet/plugin.py @@ -66,13 +66,14 @@ class HW_PluginBase(BasePlugin): return self.parent.device_manager def create_device_from_hid_enumeration(self, d: dict, *, product_key) -> Optional['Device']: + # note: id_ needs to be unique between simultaneously connected devices, + # and ideally unchanged while a device is connected. # Older versions of hid don't provide interface_number interface_number = d.get('interface_number', -1) usage_page = d['usage_page'] - id_ = d['serial_number'] - if len(id_) == 0: - id_ = str(d['path']) - id_ += str(interface_number) + str(usage_page) + # id_=str(d['path']) in itself might be sufficient, but this had to be touched + # a number of times already, so let's just go for the overkill approach: + id_ = f"{d['path']},{d['serial_number']},{interface_number},{usage_page}" device = Device(path=d['path'], interface_number=interface_number, id_=id_,