Simple test
Print basic information about all connected USB devices, including basic info about the first available configuration.
examples/usb_host_descriptors_simpletest.py
1# SPDX-FileCopyrightText: 2017 Scott Shawcroft, written for Adafruit Industries
2# SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries
3#
4# SPDX-License-Identifier: Unlicense
5
6import time
7
8import usb.core
9
10import adafruit_usb_host_descriptors
11
12DIR_IN = 0x80
13
14while True:
15 print("searching for devices")
16 for device in usb.core.find(find_all=True):
17 print("pid", hex(device.idProduct))
18 print("vid", hex(device.idVendor))
19 print("man", device.manufacturer)
20 print("product", device.product)
21 print("serial", device.serial_number)
22 print("config[0]:")
23 config_descriptor = adafruit_usb_host_descriptors.get_configuration_descriptor(device, 0)
24
25 i = 0
26 while i < len(config_descriptor):
27 descriptor_len = config_descriptor[i]
28 descriptor_type = config_descriptor[i + 1]
29 if descriptor_type == adafruit_usb_host_descriptors.DESC_CONFIGURATION:
30 config_value = config_descriptor[i + 5]
31 print(f" value {config_value:d}")
32 elif descriptor_type == adafruit_usb_host_descriptors.DESC_INTERFACE:
33 interface_number = config_descriptor[i + 2]
34 interface_class = config_descriptor[i + 5]
35 interface_subclass = config_descriptor[i + 6]
36 print(f" interface[{interface_number:d}]")
37 print(f" class {interface_class:02x} subclass {interface_subclass:02x}")
38 elif descriptor_type == adafruit_usb_host_descriptors.DESC_ENDPOINT:
39 endpoint_address = config_descriptor[i + 2]
40 if endpoint_address & DIR_IN:
41 print(f" IN {endpoint_address:02x}")
42 else:
43 print(f" OUT {endpoint_address:02x}")
44 i += descriptor_len
45 print()
46 time.sleep(5)