
Ставим новую прошивку: Testing по USB-C, шаг за шагом
Мы прошили работающий Altruist Urban новой Testing-прошивкой и прошли все экраны нового интерфейса. Вот весь путь целиком — включая галочку, которую ставить нельзя.
Несколько дней назад мы рассказывали, что готовим: app-like веб-интерфейс, шифрование значений на карте, бэкап и восстановление. Теперь всё это доступно в канале Testing, и этот пост — практическая половина. Мы взяли работающий Urban, поставили на него Testing, подключили к Wi-Fi и прошли по всем экранам.
Если хотите попробовать — ниже весь путь. Если не хотите, короткая версия такая: на канале Stable Altruist обновляется сам, и кабель вам не нужен.
Когда прошивать руками вообще нужно
Устройства на Stable забирают прошивку по воздуху сами. Ручная прошивка нужна в трёх случаях: хочется Testing пораньше, хочется вернуться со Testing на Stable, или что-то сломалось так, что OTA не отрабатывает. Testing — это ровно то, что написано: сборки с изменениями, не прошедшими длительную проверку. Шероховатости будут. Рассказать о них — и есть смысл всей затеи.
Что нужно приготовить
- Компьютер с Chrome или Edge. Установщик общается с датчиком через Web Serial API, остальные браузеры страница отклоняет сама. С телефона прошить нельзя — это стоит знать до того, как нести датчик на кухонный стол.
- Кабель USB-C с данными. Кабель «только для зарядки» не покажет ничего.
- Знать свой модуль и чип. Urban бывает на ESP32-C6 (актуальный) и ESP32-C3 (старый), Insight — только C6. Установщик спросит.
Выбираем сборку
Открываем webflasher.robonomics.network. Переключатель EN/RU наверху — это не только язык интерфейса: он же выбирает, какую прошивку вам предложат, английскую или русскую.
Выбираем прошивку (у нас Urban Testing), затем чип. Список чипов появляется только после выбора прошивки — он зависит от сборки. Когда заполнено и то и другое, кнопка Connect становится зелёной.

Блок описания над выпадающими списками прокручивается, и в нём написано, что именно вы сейчас поставите: у нас — Version: R-URB_2026-07-08 | Commit: 3e2ed16 и предупреждение, что Testing-сборки не проходили длительную проверку. Взгляните туда: это разница между «я поставил новую прошивку» и «я поставил коммит 3e2ed16», а полезен в баг-репорте только второй вариант.
Нажимаем Connect и выбираем последовательный порт датчика в диалоге браузера. Установщик сразу показывает, что на устройстве стоит сейчас — например, Altruist Altruist-Urban (R-URB_2026-06.1-testing+35859af). Запишите эту строку до того, как перезапишете её.
Единственная галочка, которая важна
Жмём Install, и установщик спрашивает, стирать ли устройство перед установкой.

Галку «Erase device» не ставим. Стирание удаляет всё, что хранится на устройстве, включая его Robonomics identity — ключевую пару, благодаря которой этот датчик остаётся этим датчиком на карте. Сотрёте — устройство вернётся незнакомцем, а его история измерений останется висеть на старом адресе. Ставить эту галку осмысленно только тогда, когда вы намеренно делаете полный сброс.
Следующий диалог называет сборку, и дальше всё идёт само.

Диалог обещает две минуты. У нас всё закончилось секунд за двадцать. А вот надпись «держите страницу видимой» — не формальность: свёрнутая вкладка притормаживается браузером, и передача замедляется вместе с ней.
Что переживает обновление
Это первый вопрос, который задают все, поэтому мы не гадали, а проверили по загрузочному логу самого устройства. Со снятой галкой Erase датчик поднимается, монтирует файловую систему, читает существующий конфиг и сообщает тот же самый Robonomics-адрес и те же сохранённые Wi-Fi-креды. Интервалы отправки тоже прежние: показание на карту каждые 30 секунд, подписанный датолог — каждые 10 минут.
Коротко: настраивать заново ничего не нужно. Если в вашей текущей прошивке уже есть System → Backup & restore — всё равно сделайте бэкап заранее, это бесплатно и это единственное, что поможет, если что-то пойдёт не так.
Подключаем Wi-Fi прямо из установщика
Установщик умеет подключить датчик к сети сам, без портала настройки: пункт Connect to Wi-Fi в его меню.

Одна деталь, к которой стоит быть готовым: список сетей у нас оказался пустым. Для этого случая есть вариант Join other… — вписать имя сети руками, ввести пароль, и подключение проходит. Не забывайте, что датчик понимает только 2.4 ГГц.
После успеха откройте в том же меню Logs & Console: в загрузочном логе печатается полученный адрес — WiFi connected, IP is : …. Это самый быстрый способ его узнать, без похода в админку роутера.
Новый интерфейс по зонам
Открываем этот адрес в браузере — и видим app-like интерфейс: сайдбар на десктопе, нижние вкладки на телефоне, четыре зоны.
Показания и статус

Живые значения, сгруппированные по датчикам. В разделе Status — практические вещи: аптайм, IP-адрес, причина последней перезагрузки, свободная память и карточка Technical details: канал прошивки, коммит, модель, ESP-таргет, профиль сборки. Она подписана «useful when contacting support» — и это правда так: один скриншот этой карточки отвечает на первые пять вопросов, которые иначе задала бы поддержка.

Ниже — панель, которой раньше не было:

Data export показывает, доходят ли ваши данные до каждого сервиса по отдельности — до датолога Robonomics и до карты. Дайте ей несколько минут после перезагрузки, прежде чем делать выводы: только что перезапущенное устройство ещё не пробовало отправить датолог, они уходят раз в десять минут.
Зона карты
Всё, что относится к sensors.social, живёт в отдельной зоне. Сначала координаты:

Маленькая карта под полем — приятная мелочь: красная точка показывает, где примерно датчик себя считает, поэтому перепутанные широта с долготой видны ещё до сохранения. Обратите внимание: координаты вводятся одним полем в формате широта,долгота, а десятичный разделитель — точка. Если раскладка любит запятые, проверьте себя по точке на карте.
Дальше — то, о чём нам больше всего интересно услышать отзывы:

Publish to map позволяет выбрать, какие типы данных уходят на публичную карту. То, что вы снимете, по-прежнему видно на экране самого устройства и доступно локально — вы выбираете, что видит мир, а не что измеряет датчик.
Encrypt map values идёт дальше: отмеченные метрики уходят с устройства зашифрованными для владельца и снова становятся обычными числами, только когда вы входите на карту как владелец. Две вещи, которые стоит знать до включения. Первое: шифрование прячет показания, но не сам датчик — координаты, адрес устройства и время отправки остаются публичными. Второе: важно, кто владелец —

Устройство в режиме Standalone шифрует само себе, и его собственный бэкап открывает данные. Create group делает его владельцем для других устройств, которые присоединятся. Join group означает, что ваши значения открывает ключ мастера группы — а ваш собственный нет. Manual owner шифрует на тот адрес, который вы впишете, поэтому вписывайте внимательно: при ошибке в адресе эти показания не расшифрует никто, и бэкап устройства тут не поможет. Вот с этим режимом стоит быть особенно осознанным.
Свои интеграции
Зона Custom — это самодельные пути: собственный API-эндпоинт, InfluxDB, CSV. На них честно висят бейджи BETA и EXPERIMENTAL, так к ним и стоит относиться. Home Assistant в этом списке нет, и не должно быть: интеграция находит устройство сама.
System

Backup & restore делает полный бэкап — настройки плюс ключ владельца, — и тот же файл можно использовать для входа на карту. А значит, это не файл настроек, это учётные данные. Храните его там же, где храните пароли, и не отправляйте в чатах и почтой: поддержка никогда его не попросит.
И один экран, который стоит прочитать медленно:

Delete configuration предлагает две очень разные вещи. Wi-Fi only забывает сохранённую сеть и сохраняет адрес устройства и его историю — это то, что нужно при смене роутера, и это заметно приятнее, чем держать кнопку десять секунд. All settings стирает всё, что хранится на устройстве, включая identity. Посмотрите, какой из вариантов выбран по умолчанию, и выдохните, прежде чем нажимать красную кнопку.
В той же зоне живут консоль отладки и обычный Restart.
Как вернуться на Stable
Автоматический OTA привязан к Stable-сборкам и намеренно отключён в Testing-прошивках, поэтому само устройство обратно не вернётся. Возврат — осознанное действие: поставить Urban Stable или Insight Stable в том же установщике либо запустить ручное обновление /ota.
Если Linux не отдаёт порт
На Linux порт появляется в диалоге браузера, а открыться отказывается: Failed to execute 'open' on 'SerialPort'. Причины обычно две сразу.
Нужны права на порт — устройство появляется как /dev/ttyACM0 и принадлежит root:dialout:
sudo usermod -aG dialout $USER # затем newgrp dialout или перелогин
И ModemManager опрашивает каждое новое ttyACM-устройство на предмет «не модем ли это», удерживая порт ровно те секунды, когда он вам нужен:
sudo systemctl stop ModemManager
Чтобы закрыть тему навсегда, скажите ему игнорировать устройства Espressif — 303a это vendor id нативного USB у ESP32-C6:
printf 'SUBSYSTEM=="tty", ATTRS{idVendor}=="303a", ENV{ID_MM_DEVICE_IGNORE}="1"\n' \
| sudo tee /etc/udev/rules.d/99-esp-no-modemmanager.rules
sudo udevadm control --reload
Расскажите, что сломается
Вот и весь цикл: выбрать сборку, не ставить галку Erase, установить, подключить Wi-Fi, осмотреться. Двадцать секунд прошивки и устройство, сохранившее всё, что у него было.
Testing существует затем, чтобы проблемы всплывали здесь, а не на датчиках, которые люди уже повесили на балконе. Если что-то в новом интерфейсе читается неправильно, ведёт себя неожиданно или просто не нашлось там, где вы его искали, — это ровно тот отзыв, который нам нужен. Заводите issue в github.com/airalab/altruist-firmware и указывайте версию и коммит из карточки Technical details.