diff --git a/tools/ci/python_packages/ttfw_idf/IDFDUT.py b/tools/ci/python_packages/ttfw_idf/IDFDUT.py index 6682760ae4..6fb3686185 100644 --- a/tools/ci/python_packages/ttfw_idf/IDFDUT.py +++ b/tools/ci/python_packages/ttfw_idf/IDFDUT.py @@ -369,9 +369,27 @@ class IDFDUT(DUT.SerialDUT): with open(output_file, 'wb') as f: f.write(content) + @staticmethod + def _sort_usb_ports(ports): + """ + Move the usb ports to the very beginning + :param ports: list of ports + :return: list of ports with usb ports at beginning + """ + usb_ports = [] + rest_ports = [] + for port in ports: + if 'usb' in port.lower(): + usb_ports.append(port) + else: + rest_ports.append(port) + return usb_ports + rest_ports + @classmethod def list_available_ports(cls): - ports = [x.device for x in list_ports.comports()] + # It will return other kinds of ports as well, such as ttyS* ports. + # Give the usb ports higher priority + ports = cls._sort_usb_ports([x.device for x in list_ports.comports()]) espport = os.getenv('ESPPORT') if not espport: # It's a little hard filter out invalid port with `serial.tools.list_ports.grep()`: