Some examples of using TWAPI with USB.
proc usb_enum {} { set wmi [wmi_root] set devices [$wmi ExecQuery {Select * from win32_usbcontrollerdevice}] $devices -iterate -cleanup device { set dependent [$device Dependent] if {[regexp -nocase {win32_pnpentity\.deviceid="(.*)"} $dependent -> id]} { set pnp_entities [$wmi ExecQuery "select * from win32_pnpentity where deviceid='$id'"] $pnp_entities -iterate -cleanup pnp_entity { puts [$pnp_entity Description] } $pnp_entities -destroy } } $devices -destroy $wmi -destroy } (tcl) 170 % usb_enum USB Root Hub (xHCI) USB Root Hub Generic USB Hub USB Composite Device Lenovo EasyCamera Intel(R) Centrino(R) Wireless Bluetooth(R) 4.0 + High Speed Adapter ....
See https://www.magicsplat.com/blog/device-notifications/