Прошивка нового образа на Arduino UNO Q
Узнайте, как прошить новый образ (операционную систему Linux) на плату UNO Q с помощью Arduino Flasher CLI.
Arduino UNO Q работает под управлением операционной системы Linux, которая поставляется предустановленной на плате.
Обычно нет необходимости переустанавливать ОС на плате (этот процесс также известен как прошивка образа), поскольку ОС автоматически получает обновления на регулярной основе.
Однако если вы хотите полностью сбросить плату и выполнить чистую установку, это возможно. Для этого процесса потребуются некоторые дополнительные инструменты, установленные на вашем компьютере.
Предупреждение
Обратите внимание, что инструкции в этом руководстве полностью очистят плату, и все файлы и конфигурации, сохранённые на плате, будут уничтожены.
Требования
Аппаратные требования
Соединительный провод «мама-мама» (female-to-female jumper wire)
Программные требования
Не менее 10 ГБ свободного дискового пространства
Для повторной прошивки платы мы будем использовать инструмент Arduino Flasher CLI:
Скачайте Arduino Flasher CLI
Примечание
Обратите внимание, что этот инструмент загрузит образ размером более 1 ГБ. Рекомендуется стабильное интернет-соединение и не менее 10 ГБ свободного дискового пространства.
Пользователи Linux: необходимые разрешения USB
Если вы используете Linux, рекомендуется настроить разрешения USB-устройств перед попыткой прошивки платы. Процесс прошивки взаимодействует с платой через ADB (Android Debug Bridge) по USB, что требует доступа на запись к файлам USB-устройств, создаваемым при подключении платы к компьютеру.
Без надлежащих разрешений процесс прошивки завершится ошибкой с сообщением:
adb: insufficient permissions for device
Это происходит потому, что UNO Q работает в особом режиме во время процесса прошивки, называемом Emergency Download Mode (EDL). Этот режим использует другую USB-конфигурацию, отличную от обычной работы.
В обычном режиме работы плата представляется с USB VID 2341 и PID 0078. При переходе в режим EDL для прошивки или операций восстановления она переключается на USB VID 05c6 и PID 9008. Ваша система Linux должна распознавать и предоставлять разрешения для обоих режимов, поэтому нам необходимо установить правила udev для обеих конфигураций.
Установка необходимых правил udev
Правильный способ настройки необходимых разрешений для вашей учётной записи пользователя — через udev rules (правила udev). Следующие правила udev предоставят вашей учётной записи доступ к UNO Q в обоих режимах работы:
# Operating mode
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0078", MODE="0660", TAG+="uaccess"
# EDL mode
SUBSYSTEMS=="usb", ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="9008", MODE="0660", TAG+="uaccess"
Выполните эту команду для установки необходимых правил udev:
echo \
'# Operating mode
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0078", MODE="0660", TAG+="uaccess"
# EDL mode
SUBSYSTEMS=="usb", ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="9008", MODE="0660", TAG+="uaccess"' \
| \
sudo \
tee \
"/etc/udev/rules.d/60-Arduino-UNO-Q.rules" \
&& \
sudo \
udevadm control \
--reload-rules \
&& \
sudo \
udevadm trigger
Эта команда создаёт файл правил udev, который указывает Linux автоматически предоставлять доступ к UNO Q при каждом подключении. Параметр MODE="0660" устанавливает права доступа к файлу так, чтобы владелец и группа могли читать и записывать данные на устройство. Параметр TAG+="uaccess" предоставляет доступ именно вашей текущей учётной записи пользователя.
После создания правил команда перезагружает все правила udev без необходимости перезагрузки системы, а затем применяет новые правила ко всем уже подключённым устройствам. Это означает, что если ваша UNO Q в данный момент подключена, она немедленно получит правильные разрешения.
Вы можете проверить установку с помощью следующей команды:
cat /etc/udev/rules.d/60-Arduino-UNO-Q.rules
Вы должны увидеть оба правила udev — одно для режима работы (Operating mode) и одно для режима EDL.
Чтобы проверить, обнаружена ли UNO Q, используется следующая команда:
lsusb | grep -E "2341:0078|05c6:9008"
Совет
Для получения дополнительной информации о разрешениях USB в Linux и устранении неполадок обратитесь к разделу Linux Host Setup в Руководстве пользователя.
После установки правил udev отключите плату UNO Q от компьютера, подождите несколько секунд, затем снова подключите её. Это поможет применить новые разрешения. После повторного подключения вы можете перейти к следующим шагам процесса прошивки.
Альтернативный метод установки
Вы можете использовать официальный скрипт post-install из репозитория Arduino Core Zephyr для автоматической настройки этих разрешений. Этот скрипт выполняет ту же установку правил udev, что и ручной метод, описанный выше.
Чтобы загрузить и запустить скрипт post-install, перейдите в каталог Downloads и используйте wget для загрузки скрипта из репозитория:
cd ~/Downloads
wget https://raw.githubusercontent.com/arduino/ArduinoCore-zephyr/main/post_install.sh
chmod +x post_install.sh
sudo ./post_install.sh
Если wget недоступен в вашей системе, вы можете использовать curl вместо него:
cd ~/Downloads
curl -O https://raw.githubusercontent.com/arduino/ArduinoCore-zephyr/main/post_install.sh
chmod +x post_install.sh
sudo ./post_install.sh
sudo ~/.arduino15/packages/arduino/hardware/zephyr/<version>/post_install.sh
Также вы можете клонировать весь репозиторий и запустить скрипт оттуда:
cd ~/Downloads
git clone https://github.com/arduino/ArduinoCore-zephyr.git
cd ArduinoCore-zephyr
chmod +x post_install.sh
sudo ./post_install.sh
При появлении запроса введите свой пароль. Скрипт создаст файл правил udev, перезагрузит правила udev и применит их ко всем подключённым в данный момент устройствам — точно так же, как при ручном методе установки.
После запуска скрипта вы можете проверить установку с помощью той же команды, что и в разделе ручной установки:
cat /etc/udev/rules.d/60-arduino-zephyr.rules
Обратите внимание, что скрипт создаёт файл с именем 60-arduino-zephyr.rules, а не 60-Arduino-UNO-Q.rules, но он содержит те же правила разрешений для обоих режимов работы.
После установки правил udev любым из методов отключите плату UNO Q от компьютера, подождите несколько секунд, затем снова подключите её. Это позволит применить новые разрешения. После повторного подключения вы можете перейти к следующим шагам процесса прошивки.
Проверка доступа ADB
Перед попыткой прошивки образа следует проверить, что ADB может обнаружить вашу плату без ошибок разрешений. Выполните следующую команду:
adb devices
Эта команда выводит список всех устройств Android Debug Bridge, подключённых к вашей системе. Ваша UNO Q должна появиться в списке без каких-либо сообщений об ошибках. Или используйте следующую команду для доступа к UNO Q:
adb shell
Если вы видите insufficient permissions в выводе, это означает, что правила udev не были применены корректно или плату необходимо переподключить.
Если ошибки разрешений сохраняются, пожалуйста, убедитесь, что правила udev были установлены в правильное расположение. Проверьте, что вы отключили и снова подключили плату после установки правил, так как существующие подключения не применяют новые разрешения автоматически. Убедитесь, что вы закрыли и снова открыли все терминалы или приложения, которые были запущены при установке правил.
Если проблемы по-прежнему сохраняются, попробуйте перезапустить службу udev:
sudo systemctl restart systemd-udevd
После перезапуска службы отключите плату, подождите несколько секунд и снова подключите её. Затем снова выполните adb devices или adb shell, чтобы убедиться, что плата обнаружена корректно. Как только ADB покажет ваше устройство без ошибок, вы можете уверенно переходить к шагам прошивки.
Загрузка и установка инструмента CLI
Скачайте Arduino Flasher CLI для вашей ОС (MacOS / Linux / Windows)
Распакуйте скачанный файл (вы получите исполняемый бинарный файл с именем
arduino-flasher-cli)
Проверка установки инструмента
Перед прошивкой нового образа убедитесь, что инструмент arduino-flasher-cli работает. Ниже приведены инструкции по проверке работоспособности инструмента на вашей ОС.
MacOS
Перейдите в распакованную папку (например, arduino-flasher-cli-x.x.x-darwin-arm64) и выполните следующую команду:
./arduino-flasher-cli
Вы должны увидеть что-то вроде:
Это означает, что инструмент работает, и мы можем перейти к подготовке оборудования.
Важно
Не запускайте файл непосредственно из Finder — вы получите окно с ошибкой:
Поскольку инструмент запускается из командной строки с определёнными флагами (описаны далее), нет причин запускать его из Finder.
Windows
Перейдите в распакованную папку (например, arduino-flasher-cli-x.x.x-windows-amd64) и выполните следующую команду:
arduino-flasher-cli
Должно появиться новое окно с предложением установить драйвер. Установите его и снова выполните arduino-flasher-cli в терминале.
Это означает, что инструмент работает, и мы можем перейти к подготовке оборудования.
Linux
Перейдите в распакованную папку (например, arduino-flasher-cli-x.x.x-linux-amd64) и выполните следующую команду:
./arduino-flasher-cli
Вы должны увидеть что-то вроде:
Это означает, что инструмент работает, и мы можем перейти к подготовке оборудования.
Примечание
В некоторых системах Linux arduino-flasher-cli может завершиться с ошибкой непосредственно перед прошивкой. Это может произойти, если загружен модуль ядра qcserial. Ниже описано обходное решение этой проблемы.
Исправление проблемы с qcserial (только для Linux)
Откройте терминал и проверьте, присутствует ли qcserial, выполнив команду:
lsmod | grep qcse
Если модуль присутствует, команда вернёт:
> lsmod | grep qcse
qcserial 24576 0
usb_wwan 24576 1 qcserial
usbserial 69632 2 qcserial,usb_wwan
Затем проверьте, блокирует ли qcserial последовательный порт ttyUSB0, выполнив sudo dmesg:
> sudo dmesg
[31633.372270] qcserial ttyUSB0: Qualcomm USB modem converter now disconnected from ttyUSB0
[31633.372308] qcserial 3-3:1.0: device disconnected
Эту проблему можно решить, отключив (или добавив в чёрный список) модуль ядра qcserial в системе Linux.
Создайте или отредактируйте файл конфигурации с именем
blacklist-modem.confв каталоге/etc/modprobe.d/:
sudo nano /etc/modprobe.d/blacklist-modem.conf
В этом файле необходимо добавить в чёрный список модуль
qcserial:
blacklist qcserial
Сохраните файл и перезагрузите систему, чтобы конфигурация вступила в силу.
Подготовка оборудования
Чтобы подготовить оборудование к прошивке, выполните следующие действия:
Отключите плату от компьютера.
Подключите соединительный провод «мама-мама» между двумя контактами, указанными на изображении:
Прошивка образа на плату
На этом шаге мы загрузим новый образ на плату с помощью Arduino Flasher CLI.
Подключите плату к компьютеру с помощью кабеля USB-C.
Откройте терминал и перейдите в каталог, куда вы распаковали Arduino Flasher CLI (обычно
cd /Downloads).Выполните следующую команду в терминале:
./arduino-flasher-cli flash latest
Начнётся последовательность загрузки (образ весит более 1 ГБ). После завершения загрузки образ будет прошит на плату. Обратите внимание: это займёт несколько минут. Не отключайте USB-кабель во время этого процесса.
После завершения прошивки и сообщения об успехе от инструмента удалите соединительный провод «мама-мама» между двумя контактами, указанными на изображении выше, затем выполните перезагрузку по питанию платы (отключите и снова подключите USB), чтобы она загрузилась с новой ОС.
Описанные выше шаги обобщены на графике ниже:
Устранение неполадок
Убедитесь, что Arduino Flasher CLI распакован и доступен.
Проверьте, что замкнуты правильные контакты, и что они замкнуты до подключения платы к компьютеру.
Убедитесь, что плата не завершила загрузку к моменту запуска команды прошивки (
./arduino-flasher-cli flash latest).Проверьте, что вы запускаете команду из правильного каталога, куда был распакован Arduino Flasher CLI.
После того как инструмент сообщит об успешной установке, выполните перезагрузку по питанию платы с удалённой перемычкой.