Загрузка контроллера Teensy, подключенного к компьютеру через СОМ порт при отсутствии других Teensy, не вызывает затруднений. Однако, загрузка одновременно-подключенной группы контроллеров Teensy может оказаться проблематичной [1,2,3,4]. Варианты решения этой проблемы обсуждаются ниже.  Контроллеры Teensy могут работать со многими протоколами, в которых отсутствует имя COM порта (например, клавиатура, мышь, джойстик, аудио, RawHID и др.), поэтому программа teensy_post_compile, выполняемая загрузку, не использует имена последовательных портов COMx. Она использует имена местоположений USB. Например, usb:0/140 000/0/8/1», в котором закодирован физический USB‑контроллер и последовательность концентраторов/портов для доступа к фактическому USB‑устройству. Этот способ точно указывает к какой USB плате нужно получить доступ, независимо от того, какой протокол она в настоящее время реализует.  Проблема загрузки заключается в том, что загрузчик в автоматическом режиме выдает  местоположение первого найденного контроллера, и, при наличии нескольких однотипных контроллеров подключенных к компьютеру, найденное местоположение может не соответствовать требуемому контроллеру, что и дает неверный результат.  В среде разработки Arduino IDE имя местоположения USB контроллеров Teensy отображается внизу справа, например, Teensy 4.1 on usb:0/140000/0/8/1. При перестыковке контроллера к другому USB порту изменяется имя его местоположения.  Программа «teensy_ports», входящая в комплект программ Teensyduino, Version 1.58 (Рисунок 1), формирует список всех подключенных контроллеров Teensy и названия их портов. Пример списков параметров, подключенных к компьютеру двух контроллеров Teensy (3.2 и 4.1), сформированный программой «teensy_ports», показан на Рисунок 2. Рисунок 2. Пример списка параметров контроллеров Teensy, сформированный программой «teensy_ports». При нажатии кнопки на поверхности платы контроллера Teensy 4.1 вместо номера COM порта в списке Port Arduino IDE (меню > Tools > Port) появляется его label (см. Рисунок 2), например,  как показано на Рисунок 3 (слева). Label показывает уникальные идентификаторы USB устройства: VID (идентификатор производителя) и PID (идентификатор устройства). Эти данные USB устройства и его серийный номер можно прочитать специальными утилитами. Из списка COM портов диспетчера устройств исчезает порт контроллера (COM7 в этом примере) на кнопку которого нажали, см. Рисунок 3 (справа).                     Рисунок 3. Пример списков Port консоли Arduino IDE (слева) и диспетчера устройств (справа) после нажатия на кнопку контроллера. Отсутствует COM7. После загрузки контроллера в списке диспетчера устройств появляется COM-номер контроллера, загрузившего программу (см. Рисунок 4).  Рисунок 4. Cписок COM портов диспетчера устройств.  Образец написания команды загрузки hex кода в контроллер Teensy (без использования Arduino IDE) можно получить, выполнив следующую последовательность. Подключите Teensy к USB порту компьютера Загрузите Arduino IDE Выберите тип платы Teensy из меню >Tools > Board > Выберите СОМ порт платы из меню > Tools > Port > Установите флажок upload в закладке Preferences: меню Arduino IDE > File > Preferences > Show verbose output during > upload Запустите меню >Sketch > Upload или нажмите После завершения загрузки, в окне вывода Arduino IDE консоли можно найти команду загрузки hex кода: “teensy_post_compile” (см. Рисунок 5), которая выглядит, например, так: D:\Program Files (x86)\Arduino\hardware\teensy/../tools/teensy_post_compile -file=Blink_4_1.ino -path=C:\Users\bob_d\AppData\Local\Temp\arduino_build_280409 -tools=D:\Program Files (x86)\Arduino\hardware\teensy/../tools -board=TEENSY41 -reboot -port=usb:0/140000/0/6 -portlabel=hid#vid_16c0&pid_0478 Bootloader -portprotocol=Teensy  Рисунок 5. Местоположение команды загрузки hex кода в контроллер.   К сожалению, программа “teensy_ports” (Рисунок 2) не показывает уникальный серийный номер контроллеров, а поскольку VID и PID контроллеров однотипных контроллеров, например, Teensy 4.1 совпадают, то в случае нескольких Teensy 4.1, подключенных к компьютеру, невозможно определить в какой именно контроллер будет загружена откомпилированная программа. Загрузчик автоматически попытается выполнить загрузку на первое устройство, которое сможет найти. Подсказкой в установлении связи между конкретным Teensy 4.1 и соответствующей консоли Arduino IDE может служить изменение вида консоли в момент нажатия кнопки контроллера как показано на Рисунок 6.  Рисунок 6. Изменение вида консоли в момент нажатия кнопки соответствующего контроллера Teensy 4.1: Начальное состояние à изменение вызванное нажатием кнопки à результат. Для минимизации неправильных загрузок, перед нажатием кнопки контроллера следует закрыть (если он открыт) загрузчик контроллеров Teensy показанный на Рисунок 7. Рисунок 7. Загрузчик контроллеров Teensy. Перезагрузку контроллера Teensy 4.1 можно обеспечить и физическим отсоединением всех других Teensy 4.1от USB портов компьютера, через которые подается питание контроллеров.  Отключение от питания можно выполнить также присоединением контакта “On/Off” платы контроллера Teensy 4.1 (например, при помощи дополнительной кнопки или электронного реле) к заземлению GND [5]. Подключение контакта “On/Off” к заземлению на 4 секунды выключает питание контроллера, при этом запись номера COM порта контроллера исчезает из списка портов диспетчера устройств. Подключение на 0,5 секунды возвращает питание 3,3 В и перезагружает контроллер, запись COM порта контроллера восстанавливается.  Но как выполнить перезагрузку двух и более однотипных контроллеров, например, Teensy 4.1 находящихся в труднодоступном месте устройства и подключенных к компьютеру через сетевой концентратор (хаб)? Нажатие кнопок контроллеров в этом случае можно обеспечить при помощи соленоидов. Такой пример показан на Рисунок 8. Усилие, необходимое для нажатия кнопки контроллера Teensy 4.1, должно быть не менее 650 г.  Рисунок 8. Соленоиды макета для переключения кнопок контроллеров Teensy 4.1.    Not Downloading to Correct COM port Problem with Multiple Teensy on Windows 10 Can't compile/upload for two teensies simultaneously Обмен данными между двумя Teensy 4.0 и ПК: танцы с бубном Teensy 4.1 Development Board