--- title: "💀 Изменение VID/PID и имени устройста Arduino" date: 2023-04-29T13:26:50+03:00 draft: false tags: [arduino, hardware, hack, usb, tutorial] --- ℹ️ Это руководство представляет из себя вольный [перевод статьи](https://www.shellhacks.com/arduino-change-devices-vid-pid-name/) с сайта shellhacks.com. ## Введение Идентификаторы производителей устройств (_VID_) и идентификаторы продуктов устройств (_PID_) — это 16-разрядные числа, используемые для идентификации USB-устройств. По этим номерам компьютер определяет какое USB-устройству подключено к нему и какие драйверы использовать для работы с ним. Если планируется разрабатывать какую-нибудь USB-клавиатуру HID на базе Arduino, то возможно захочеться изменить VID, PID коды и название устройста на свои, чтобы компьютер или любой другой хост распознавал её как стандартную клавиатуру. В этой заметке я покажу, как изменить VID/PID и название устройства на базе Arduino на примере Arduino Pro Micro. ## Изменение VID, PID и имени устройства Arduino Для просмотра информации о подключенных USB-устройствах в Linux можно использовать утилиту `lsusb`: ```sh lsusb - sample output - Bus 003 Device 008: ID 1b4f:9207 SparkFun SparkFun Pro Micro ``` * `1b4f` — ID производителя (VID) * `9207` — ID продукта (PID) * `SparkFun` — Имя производителя * `SparkFun Pro Micro` — Имя продукта Чтобы просмотреть USB-устройства в Windows, необходимо нажать клавишу **⊞ Win** и найти «Диспетчер устройств» в меню «Пуск». Каждый раз, когда на Arduino загружается скетч, VID, PID и идентификаторы также загружаются на устройство. Эти значения определены в файле `boards.txt`. Файл `boards.txt` может находиться в нескольких местах, например: ```text # Windows C:\Program Files (x85)\Arduino\hardware\arduino\avr\ C:\Users\\AppData\Local\Arduino15\packages\SparkFun\hardware\avr\\ # Linux /opt/arduino-/hardware/arduino/avr/ /home//.arduino15/packages/SparkFun/hardware/avr// ``` В моем случае файл `boards.txt` находился в следующей директории: ```sh cd ~/.arduino15/packages/SparkFun/hardware/avr/1.1.13/ cp boards.txt boards.txt.orig vi boards.txt ``` Чтобы подменить VID, PID и имя МК Arduino Pro, я внёс следующие изменения: ```sh diff -Nur boards.txt.orig boards.txt --- boards.txt.orig 2022-01-17 14:04:41.248786790 +0100 +++ boards.txt 2022-01-17 15:28:07.863530923 +0100 @@ -94,8 +94,9 @@ promicro.build.core=arduino:arduino promicro.build.variant=promicro promicro.build.mcu=atmega32u4 -promicro.build.usb_product="SparkFun Pro Micro" -promicro.build.vid=0x1b4f +promicro.build.usb_manufacturer="Logitech, Inc." +promicro.build.usb_product="Unifying Receiver" +promicro.build.vid=0x046d promicro.build.extra_flags={build.usb_flags} ######################### Pro Micro 3.3V / 8MHz ################################ @@ -115,7 +116,7 @@ promicro.menu.cpu.16MHzatmega32U4.build.pid.0=0x9206 promicro.menu.cpu.16MHzatmega32U4.build.pid.1=0x9207 -promicro.menu.cpu.16MHzatmega32U4.build.pid=0x9207 +promicro.menu.cpu.16MHzatmega32U4.build.pid=0xc535 promicro.menu.cpu.16MHzatmega32U4.build.f_cpu=16000000L promicro.menu.cpu.16MHzatmega32U4.bootloader.extended_fuses=0xCB ``` Затем, после того как я перезапустил Arduino IDE и загрузил скетч на устройство, МК Arduino Pro была распознана компьютером как стандартная USB-клавиатура Logitech: ```sh lsusb - sample output - Bus 003 Device 016: ID 046d:c535 Logitech, Inc. Unifying Receiver ```