diff --git a/man/udevadm.xml b/man/udevadm.xml
index b515f3c79c..556f845dce 100644
--- a/man/udevadm.xml
+++ b/man/udevadm.xml
@@ -336,10 +336,18 @@
R:
Device number in /sys/ (i.e. the numeric suffix of the last component of P:)
+
+ J:
+ Device ID
+
U:
Kernel subsystem
+
+ B:
+ Driver subsystem
+
T:
Kernel device type within subsystem
diff --git a/src/udev/udevadm-info.c b/src/udev/udevadm-info.c
index 824b6fc726..0a1da3ed31 100644
--- a/src/udev/udevadm-info.c
+++ b/src/udev/udevadm-info.c
@@ -323,9 +323,15 @@ static int print_record(sd_device *device, const char *prefix) {
if (sd_device_get_sysnum(device, &str) >= 0)
printf("%sR: %s%s%s\n", prefix, ansi_highlight_white(), str, ansi_normal());
+ if (sd_device_get_device_id(device, &str) >= 0)
+ printf("%sJ: %s%s%s\n", prefix, ansi_highlight_white(), str, ansi_normal());
+
if (sd_device_get_subsystem(device, &subsys) >= 0)
printf("%sU: %s%s%s\n", prefix, ansi_highlight_green(), subsys, ansi_normal());
+ if (sd_device_get_driver_subsystem(device, &str) >= 0)
+ printf("%sB: %s%s%s\n", prefix, ansi_highlight_green(), str, ansi_normal());
+
if (sd_device_get_devtype(device, &str) >= 0)
printf("%sT: %s%s%s\n", prefix, ansi_highlight_green(), str, ansi_normal());
@@ -376,8 +382,9 @@ static int record_to_json(sd_device *device, sd_json_variant **ret) {
assert(device);
assert(ret);
- /* We don't show any shorthand fields here as done in print_record() except for SYSNAME and SYSNUM as
- * all the other ones have a matching property which will already be included. */
+ /* We don't show any shorthand fields here as done in print_record() except for SYSNAME, SYSNUM,
+ * DRIVER_SUBSYSTEM, and DEVICE_ID, as all the other ones have a matching property which will already
+ * be included. */
if (sd_device_get_sysname(device, &str) >= 0) {
r = sd_json_variant_set_field_string(&v, "SYSNAME", str);
@@ -391,6 +398,18 @@ static int record_to_json(sd_device *device, sd_json_variant **ret) {
return r;
}
+ if (sd_device_get_driver_subsystem(device, &str) >= 0) {
+ r = sd_json_variant_set_field_string(&v, "DRIVER_SUBSYSTEM", str);
+ if (r < 0)
+ return r;
+ }
+
+ if (sd_device_get_device_id(device, &str) >= 0) {
+ r = sd_json_variant_set_field_string(&v, "DEVICE_ID", str);
+ if (r < 0)
+ return r;
+ }
+
FOREACH_DEVICE_PROPERTY(device, key, val) {
r = sd_json_variant_set_field_string(&v, key, val);
if (r < 0)