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)