От платы до парка в одной системе

Xenolith OriginОживите ваше железо

Единый открытый движок для компьютера и платы - одно и то же приложение на экране. Встроенное безопасное обновление по сети, управление парком: платите за внедрение, не за компоненты

60 fps на плате, образ меньше 150 МБ, 10 секунд на загрузку. Один продукт вместо GUI-тулкита, сборщика образа и отдельного OTA.


60 fps
на GPU Raspberry Pi 4
~150 МБ
образ системы с GPU
~250 МБ
занято оперативки
~10 с
от включения до живого экрана

Работает на
Raspberry Pi 4 aarch64 · V3DVRadxa Zero 3E aarch64 · PanVKRadxa Rock 5C aarch64 · PanVKQEMU aarch64 · софтPi 5 · RISC-V позже

как обычно делают

Четыре вендора. Четыре счета. Один киоск.

Типичный стек киоска склеен из чужих кусков. Каждый кусок стоит денег и может сломаться отдельно.

Слишком много продуктов

GUI-тулкит, образ на Yocto, вендор обновлений, консоль устройств — четыре договора, четыре линии поддержки и часто роялти с каждой проданной платы.

Лицензии мешают

Коммерческие UI считают деньги с устройства. Закрытый киоск нарушает LGPL. Коммерческая поддержка перекидывает друг на друга.

Тяжело и медленно

Киоск на Chromium держит около гигабайта памяти и тормозит на платах уровня Pi. Android — гигабайты и минута до экрана. Композитор съедает треть кадра, пока ваш интерфейс ещё не нарисовался.


от стола к плате

Написали. Прошили. Запустили. Обновили.

Один путь от приложения на компьютере до парка плат. Без отдельного embedded-тулчейна. Без Docker на устройстве.

Написали.

Собираете и отлаживаете то же приложение на Windows, Linux или macOS в Xenolith SDK.

Прошили.

Получаете загрузочный образ: система, ядро, ваша программа. Без полугодового проекта на Yocto.

Запустили.

Один нативный файл рисует сразу на экране. Без оконного менеджера, браузера и контейнера.

Обновили.

Новое приложение — без перезагрузки платы. Новый образ системы — в запасной слот, с откатом, если что-то пошло не так.

Написали Прошили Запустили Обновили

То, что крутилось на компьютере, крутится на плате. Это не порт.


образ

Маленький образ киоска

Плата загружает закрытую систему: только нужное, проверка, что её не подменили, картинка сразу на панель. Около 150 МБ. Хватает дешёвой флеш-памяти.

Сразу на панель

Vulkan рисует на сам дисплей. Между интерфейсом и стеклом нет X11, Wayland и лишнего композитора.

Систему не переписать

Системный раздел только для чтения, при загрузке проверяется. Приложение и данные парка — на отдельном томе.

GPU, если он есть

Железная графика на Pi 4, Zero 3E и Rock 5C. Нет драйвера видео — рисуем на процессоре.

Приложение — один файл

Киоск — одна программа Xenolith, не браузер и не контейнер. Заменить её — скопировать файл.


ядра

Одно приложение. Ядро на выбор.

Интерфейс не меняется, если сменить ядро. Linux с видеокартой, Embox — когда нужно ядро реального времени. Выбор за вами.

поставляется

Linux

Картинка сразу на экран. Железная графика на Raspberry Pi 4, Radxa Zero 3E и Rock 5C. Нет драйвера GPU — рисуем на процессоре.

поставляется

Embox

Тот же киоск по HDMI — Raspberry Pi 4, Zero 3E и Rock 5C — на ядре реального времени.

частично

NuttX

Киоск уже запускается в QEMU и на Raspberry Pi 4.

Для приборов, которые едут к заказчику, берите Linux с GPU.


платы

На чём это работает

Где драйвер видео готов — пользуемся им. Где нет — рисуем на процессоре. На каждую плату свой образ.

уже работает
Плата GPU На CPU
Raspberry Pi 4 (VideoCore VI)
Radxa Zero 3E (Mali-G52)
Radxa Rock 5C (Mali-G610)
в работе
Плата GPU На CPU
Raspberry Pi 5 (VideoCore VII)
VisionFive 2 Lite (PowerVR BXE-4-32)
можно на процессоре
Плата GPU На CPU
Rockchip RK3399 (Mali-T860)
NXP i.MX 8 QuadMax (Vivante)
Другие 64-битные ARM-платы

GPU — графика на видеоядре. На CPU — программный рендер. Pi 4, Zero 3E и Rock 5C проверены на живом железе.


парк

Видеть устройства. Обновлять. Чиннить.

Агент на каждой плате и консоль в браузере: включили устройство, смотрите за ним, обновляете, открываете терминал, если что-то сломалось.

Обновить приложение

Кладёте новый файл на раздел данных и перезапускаете киоск. Плату не перезагружаете. Образ не пересобираете.

Обновить систему

Пишете новый образ в запасной слот, перезагружаете, проверяете. Не загрузилось — плата сама откатится.

Кто в сети

Устройства сами отчитываются. В консоли видно, что живое, что зависло, что молчит.

Консоль оператора

Страница в браузере: список устройств, кнопки обновления и удалённый терминал для диагностики.


для разработчика

Прошили один раз. Приложение меняете за секунды.

Компьютер и плата — одно приложение

То, что отлаживаете на ПК, то и идёт на киоск. Отдельно под устройство ничего не пишете.

Заменить приложение

После первой прошивки копируете новый файл по SSH или с флешки. Целый образ пересобираете, только когда меняется сама система.

Без месяцев на Yocto

Система, ядро и приложение становятся загрузочным образом на SD или USB за минуты.

Удобно кодинг-агентам

Инструкции по сборке и прошивке лежат рядом со стеком — агент проходит путь без отдельной шпаргалки.


тонкий клиент

Экран рисует. Данные остаются на сервере.

По желанию: терминал показывает только картинку. Логика и чувствительные данные не покидают сервер — для касс, банкоматов, медицинских киосков. Система транслирует не картинку, а виджеты - в разы быстрее и эффективнее протоколов удалённого доступа.

Работает по защищённому каналу из коробки. Раскатка на парк — по запросу.


сравнение

Рядом с привычными вариантами

Интерфейс, образ и обновления в одном продукте. Картинка сразу на экран. Ядро можно сменить.

Xenolith OriginQt / Boot to QtКиоск на ChromiumAndroid + MDMbalena / Torizon
ИнтерфейсНативный Vulkan на панели или программный рендеринг прямо на экранQt + композиторБраузерAndroid UIПриложение в контейнере
Размер образа~120–150 МБГигабайты, YoctoГигабайты2–4 ГБ+Слои контейнеров
Роялти на движок0 $С устройства / места0 $0 $нет
Парк / OTAВстроеноОтдельно Mender и компанияСами / MDMПодписка MDMСильная
ПК = устройствоДаНетНетНетЧастично
ЯдроLinux, Embox, NuttXТолько LinuxLinuxAndroidLinux + контейнеры

куда ставят

Экраны, которые работают сами

Кассы и киоски

Самообслуживание и городские автоматы, которым нужен живой экран на недорогой ARM-плате.

Панели оператора

HMI и SCADA, где важнее картинка и стек, которому можно доверять, а не десктопная ОС.

Вывески

Показ без утечек памяти и ночного перезапуска по расписанию.

Зарядка, парковка, билеты

Уличные автоматы, где считают стоимость платы, объём флеш и время до экрана.

Кассы и медицина

Тонкий клиент: пользовательские данные на терминал вообще не попадают.

Свой тулчейн

Свой компилятор, ГОСТ в составе SDK, без лицензии Qt и без чужих платформенных SDK.


свой стек

Без чужих SDK и без роялти за плату

Свой компилятор и рантайм

Clang 22, своя системная библиотека, своя сборка. Linux, Windows, macOS, Android — без платформенных SDK.

ГОСТ внутри SDK

Подпись, хеш и «Кузнечик» уже в составе. Не отдельный продукт и не навесная библиотека.

Движок не тарифицируется

Лицензия MIT. За каждое устройство с движка не берём. Платите за внедрённое устройство.


статус

Что уже работает

На живых платах сегодня — и что ещё собираем.

поставляется

Linux на трёх платах

Raspberry Pi 4 на 60 fps, Radxa Zero 3E и Rock 5C. Загрузочные образы, киоск по HDMI, проверено на железе.

поставляется

Обновление приложения без перепрошивки

Новая программа из консоли или по SSH, пока пишете код. Образ системы не трогаете.

поставляется

Киоск на Embox

Те же три платы, ядро реального времени, картинка по HDMI программным рендером.

частично

Консоль парка

Список устройств, статус, обновления приложения и системы, страница в браузере. Несколько устройств в QEMU. Для боя ещё укрепляем.

частично

Киоск на NuttX

Запускается в QEMU и на Raspberry Pi 4. То же приложение, другое ядро.

в разработке

Новые платы и быстрый старт

Raspberry Pi 5, VisionFive 2, обновления волнами, быстрее экран после включения.


что дальше

Попробуйте на парке.Отгрузите прибор.

Если делаете киоски, панели оператора или вывески и надоели четыре вендора — напишите. Движок открытый. Origin — это образ, обновления и консоль.

Запросить пилот Xenolith Engine GitHub