diff --git a/src/datamodel.c b/src/datamodel.c
index 2ed57751224d4f599dc9ca98ebfb0ac8f1406681..ce6e29f98d0ee003992d9edaf7616c53efd7b491 100644
--- a/src/datamodel.c
+++ b/src/datamodel.c
@@ -912,7 +912,7 @@ static int get_USBUSBHostsHostDevice_DeviceNumber(char *refparam, struct dmctx *
 static int get_USBUSBHostsHostDevice_USBVersion(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
 {
 	struct dm_data *p = (struct dm_data *)data;
-	return read_sysfs_usb_port(p->additional_data, "bcdDevice", value);
+	return read_sysfs_usb_port(p->additional_data, "version", value);
 }
 
 static int get_USBUSBHostsHostDevice_DeviceClass(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
@@ -927,6 +927,12 @@ static int get_USBUSBHostsHostDevice_DeviceSubClass(char *refparam, struct dmctx
 	return read_sysfs_usb_port(p->additional_data, "bDeviceSubClass", value);
 }
 
+static int get_USBUSBHostsHostDevice_DeviceVersion(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
+{
+	struct dm_data *p = (struct dm_data *)data;
+	return read_sysfs_usb_port(p->additional_data, "bcdDevice", value);
+}
+
 static int get_USBUSBHostsHostDevice_DeviceProtocol(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
 {
 	struct dm_data *p = (struct dm_data *)data;
@@ -1069,6 +1075,21 @@ static int get_USBUSBHostsHostDevice_IsSuspended(char *refparam, struct dmctx *c
 	return 0;
 }
 
+static int get_USBUSBHostsHostDevice_IsSelfPowered(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
+{
+#if 0
+	char status[16] = {0};
+	struct dm_data *p = (struct dm_data *)data;
+
+	__read_sysfs_usb_port(p->additional_data, "power/runtime_status", status, sizeof(status));
+	if(DM_LSTRNCMP(status, "suspended", 9) == 0)
+		*value= "1";
+	else
+		*value = "0";
+#endif
+	return 0;
+}
+
 static int get_USBUSBHostsHostDevice_ConfigurationNumberOfEntries(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
 {
 	struct dm_data *p = (struct dm_data *)data;
@@ -1232,7 +1253,7 @@ DMLEAF tUSBUSBHostsHostDeviceParams[] = {
 {"USBVersion", &DMREAD, DMT_STRING, get_USBUSBHostsHostDevice_USBVersion, NULL, BBFDM_BOTH},
 {"DeviceClass", &DMREAD, DMT_HEXBIN, get_USBUSBHostsHostDevice_DeviceClass, NULL, BBFDM_BOTH},
 {"DeviceSubClass", &DMREAD, DMT_HEXBIN, get_USBUSBHostsHostDevice_DeviceSubClass, NULL, BBFDM_BOTH},
-//{"DeviceVersion", &DMREAD, DMT_UNINT, get_USBUSBHostsHostDevice_DeviceVersion, NULL, BBFDM_BOTH},
+{"DeviceVersion", &DMREAD, DMT_UNINT, get_USBUSBHostsHostDevice_DeviceVersion, NULL, BBFDM_BOTH},
 {"DeviceProtocol", &DMREAD, DMT_HEXBIN, get_USBUSBHostsHostDevice_DeviceProtocol, NULL, BBFDM_BOTH},
 {"ProductID", &DMREAD, DMT_UNINT, get_USBUSBHostsHostDevice_ProductID, NULL, BBFDM_BOTH},
 {"VendorID", &DMREAD, DMT_UNINT, get_USBUSBHostsHostDevice_VendorID, NULL, BBFDM_BOTH},
@@ -1245,7 +1266,7 @@ DMLEAF tUSBUSBHostsHostDeviceParams[] = {
 {"Parent", &DMREAD, DMT_STRING, get_USBUSBHostsHostDevice_Parent, NULL, BBFDM_BOTH, DM_FLAG_REFERENCE},
 {"MaxChildren", &DMREAD, DMT_UNINT, get_USBUSBHostsHostDevice_MaxChildren, NULL, BBFDM_BOTH},
 {"IsSuspended", &DMREAD, DMT_BOOL, get_USBUSBHostsHostDevice_IsSuspended, NULL, BBFDM_BOTH},
-//{"IsSelfPowered", &DMREAD, DMT_BOOL, get_USBUSBHostsHostDevice_IsSelfPowered, NULL, BBFDM_BOTH},
+{"IsSelfPowered", &DMREAD, DMT_BOOL, get_USBUSBHostsHostDevice_IsSelfPowered, NULL, BBFDM_BOTH},
 {"ConfigurationNumberOfEntries", &DMREAD, DMT_UNINT, get_USBUSBHostsHostDevice_ConfigurationNumberOfEntries, NULL, BBFDM_BOTH},
 {0}
 };