Настоящий документ является руководством по установке, настройке и техническому обслуживанию встроенного программного обеспечения видеоларингоскопа «СЕНСАР» версии 1.15.
Документ предназначен для IT-специалистов и сервисных инженеров, выполняющих первичную инсталляцию или обновление ПО на устройстве. Пользователям видеоларингоскопа данная инструкция не адресована.
Целью установки является развёртывание исполняемого бинарного файла и сопутствующих медиаресурсов на встроенной Linux-платформе устройства с обеспечением автоматического запуска ПО при включении питания.
Разработчик программного обеспечения: ООО «ШИФТАПП».
| Компонент | Характеристика |
| Процессор | Rockchip RV1126, ARM Cortex-A7, 4 ядра |
| Оперативная память | 1.75 ГБ DDR |
| Накопитель | eMMC (внутренняя flash-память) |
| Дисплей | ЖК, 4.5”, сенсорный, разрешение 854×480 |
| Камера | USB UVC-совместимая, поддержка MJPEG |
| Батарея | Li-ion с контроллером заряда |
| Интерфейс передачи данных | USB Type-C |
| Беспроводная сеть | Wi-Fi 802.11 b/g/n |
| NFC | UART |
| Компонент | Версия / Описание |
| Операционная система | Linux (Buildroot-based) |
| Графическая подсистема | Qt 5.9.4 (linuxfb + DRM) |
| Init-система | BusyBox init (rcS) |
| Файловая система данных | ext4 (/userdata) |
Пакет установки поставляется в виде ZIP-архива. Содержимое архива:
| Файл | Описание | Размер |
| sensar | Исполняемый файл приложения (ARM, ELF) | ~15 МБ |
| guide_video.avi | Видеоинструкция (формат MJPEG AVI) | ~100 МБ |
| laryngoscope/ | 19 изображений JPG для раздела «Инструкция по применению» | ~15 МБ |
| first-setup.bat | Скрипт первоначальной настройки нового устройства (Windows) | < 1 КБ |
| install.bat | Скрипт обновления ПО на уже настроенном устройстве (Windows) | < 1 КБ |
| INSTALL.md | Краткая инструкция по установке | < 1 КБ |
| CHANGELOG.md | История изменений версий ПО | < 1 КБ |
Перед началом установки убедитесь, что все перечисленные файлы присутствуют в распакованном архиве.
Для выполнения установки необходима рабочая станция со следующими характеристиками:
Операционная система: - Microsoft Windows 7 / 8 / 10 / 11 - Red OS 7 / 8 (или иной дистрибутив Linux с поддержкой ADB)
Необходимое программное обеспечение:
| ПО | Назначение | Источник |
| Android SDK Platform Tools (ADB) | Взаимодействие с устройством по протоколу ADB | developer.android.com/tools/releases/platform-tools |
Аппаратное обеспечение: - USB Type-C кабель для подключения устройства к рабочей станции
Проверка корректности установки — выполнить команду:
adb version
Должна отобразиться строка вида Android Debug Bridge version X.XX.
В зависимости от ситуации используется один из двух скриптов:
| Скрипт | Когда использовать |
| first-setup.bat | Первая установка на новое устройство, которое ещё не было настроено под встроенное программное обеспечение видеоларингоскопа «СЕНСАР» |
| install.bat | Обновление ПО на устройстве, где встроенное программное обеспечение видеоларингоскопа «СЕНСАР» уже установлено и настроено |
Применяется при первом развёртывании встроенного программного обеспечения видеоларингоскопа «СЕНСАР» на устройстве. Скрипт выполняет полную настройку с нуля: отключает штатное ПО производителя, настраивает автозапуск, оптимизирует загрузку.
Порядок выполнения:
Действия скрипта:
| Шаг | Действие |
| 1/12 | Диагностика текущего состояния устройства |
| 2/12 | Остановка запущенного ПО |
| 3/12 | Отключение штатного ПО производителя (S40app) |
| 4/12 | Копирование бинарного файла /data/sensar |
| 5/12 | Копирование видеоинструкции guide_video.avi |
| 6/12 | Копирование изображений laryngoscope/ |
| 7/12 | Создание скрипта автозапуска sensar-run.sh и init-скрипта S25sensar |
| 8/12 | Отключение лишних системных сервисов, оптимизация загрузки |
| 9/12 | Настройка кнопки питания (powerkey_service) |
| 10/12 | Очистка QML-кэша |
| 11/12 | Синхронизация файловой системы (sync) |
| 12/12 | Перезагрузка и автоматическая проверка результата |
Применяется для обновления версии ПО на устройстве, которое уже прошло первоначальную настройку. Скрипт только заменяет исполняемый файл и медиаресурсы — автозапуск и системные настройки не затрагиваются.
Порядок выполнения:
Действия скрипта:
| Шаг | Действие |
| 1 | Проверка ADB подключения |
| 2 | Остановка текущего ПО |
| 3 | Копирование нового бинарного файла /data/sensar |
| 4 | Копирование медиафайлов (если SEND_MEDIA=true) |
| * | Проверка порядка автозапуска (S15→S25, если требуется) |
| * | Очистка QML-кэша |
| * | Синхронизация файловой системы и перезагрузка |
Если устройство не обнаружено на шаге 1 — переподключить USB Type-C кабель и повторить.
Ручная установка применяется при отсутствии возможности запустить install.bat (например, при работе с рабочей станцией под управлением Linux), либо для выборочного обновления отдельных компонентов.
Выполнить команду:
adb devices
В выводе должна присутствовать строка с идентификатором устройства и статусом device. Если список пуст или устройство отображается как unauthorized — переподключить USB Type-C кабель, при необходимости проверить установку ADB-драйверов.
adb shell "killall sensar 2>/dev/null; killall camera 2>/dev/null; killall run.sh 2>/dev/null; true"
Команда завершает все запущенные процессы, которые могут заблокировать запись файлов. Если процессы не запущены — ошибок не возникает (обрабатывается 2>/dev/null; true).
Основной исполняемый файл:
adb push sensar /data/sensar
Видеоинструкция:
adb push guide_video.avi /userdata/guide_video.avi
Создание папки и копирование изображений инструкции по применению:
adb shell "rm -rf /userdata/laryngoscope; mkdir -p /userdata/laryngoscope"
adb push laryngoscope/. /userdata/laryngoscope/
Назначение файлов:
| Файл | Путь на устройстве | Назначение |
| sensar | /data/sensar | Основной исполняемый файл приложения |
| guide_video.avi | /userdata/guide_video.avi | Видеоинструкция в разделе «Руководство» → «Видеоинструкция» |
| laryngoscope/ | /userdata/laryngoscope/ | 19 JPG-изображений для раздела «Руководство» → «Инструкция по применению» |
Важно: При копировании папки laryngoscope использовать laryngoscope/. (с точкой в конце пути-источника). Без точки команда adb push создаёт вложенную папку /userdata/laryngoscope/laryngoscope/ вместо копирования содержимого.
adb shell "chmod +x /data/sensar"
На устройствах заказчика присутствует штатное ПО производителя (/app/camera), запускаемое через init-скрипт S40app. Его необходимо отключить:
adb shell "mv /etc/init.d/S40app /etc/init.d/disabled_S40app 2>/dev/null || true"
adb shell "killall camera 2>/dev/null; killall run.sh 2>/dev/null"
Важно: Переименование файла с суффиксом .disabled (например, S40app.disabled) не даёт нужного результата. BusyBox rcS выполняет все файлы, подходящие под паттерн S??*. Файл с именем S40app.disabled соответствует этому паттерну и будет запущен. Для корректного отключения необходимо убрать префикс S из имени файла — отсюда и форма disabled_S40app.
adb shell "echo -e '#!/bin/sh\nexport LD_LIBRARY_PATH=/usr/lib\nexport QT_QPA_FB_DRM=1\nexport QT_QPA_PLATFORM=\"linuxfb:size=800x480:mmSize=800x480:offset=0x0\"\nexport QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/event0\n/data/sensar &' > /etc/init.d/S99sensar && chmod +x /etc/init.d/S99sensar"
Скрипт /etc/init.d/S99sensar обеспечивает автоматический запуск ПО при каждом включении устройства. Переменные окружения, задаваемые скриптом, описаны в разделе 9.
adb shell reboot
После загрузки встроенное программное обеспечение видеоларингоскопа «СЕНСАР» запустится автоматически через ~30 секунд.
Если встроенное программное обеспечение видеоларингоскопа «СЕНСАР» уже установлено на устройстве и скрипт автозапуска настроен, для обновления до новой версии достаточно скопировать обновлённые файлы:
adb shell "killall sensar 2>/dev/null; true"
adb push sensar /data/sensar
adb shell "chmod +x /data/sensar"
adb push guide_video.avi /userdata/guide_video.avi
adb shell "rm -rf /userdata/laryngoscope; mkdir -p /userdata/laryngoscope"
adb push laryngoscope/. /userdata/laryngoscope/
adb shell reboot
Альтернативный способ: запустить install.bat — скрипт выполнит те же действия автоматически.
При обновлении не требуется повторно отключать старое ПО и создавать скрипт автозапуска — эти операции актуальны только при первичной установке.
Также возможен ручной запуск приложения без перезагрузки:
adb shell "killall sensar 2>/dev/null; killall camera 2>/dev/null; export LD_LIBRARY_PATH=/usr/lib && export QT_QPA_FB_DRM=1 && export QT_QPA_PLATFORM='linuxfb:size=800x480:mmSize=800x480:offset=0x0' && /data/sensar"
Если устройство подключено к сети Wi-Fi и доступен SSH, файлы можно скопировать по сети:
scp sensar root@<IP_УСТРОЙСТВА>:/data/sensar
scp guide_video.avi root@<IP_УСТРОЙСТВА>:/userdata/guide_video.avi
scp -r laryngoscope/* root@<IP_УСТРОЙСТВА>:/userdata/laryngoscope/
ssh root@<IP_УСТРОЙСТВА> "chmod +x /data/sensar && reboot"
Заменить <IP_УСТРОЙСТВА> на фактический IP-адрес из настроек Wi-Fi.
После установки рекомендуется выполнить функциональное тестирование по следующему чек-листу:
| № | Функция | Способ проверки | Ожидаемый результат |
| 1 | Запуск приложения | Включить устройство | Отображается заставка «СЕНСАР», загрузка ~5 сек |
| 2 | Изображение с камеры | Главное меню → «Сделать фото» | Видеопоток с камеры на экране, значок «ФОТО» в левом верхнем углу |
| 3 | Съёмка фото | Нажать кнопку ФОТО/ВИДЕО на рукоятке | Всплывает уведомление «Фото сохранено» |
| 4 | Запись видео | Главное меню → «Записать видео» → нажать кнопку ФОТО/ВИДЕО | Значок REC, идёт запись; повторное нажатие — остановка |
| 5 | Фотогалерея | Главное меню → «Фотогалерея» | Сетка миниатюр фотографий |
| 6 | Видеогалерея | Главное меню → «Видеогалерея» | Список видеозаписей с указанием длительности |
| 7 | Просмотр фотографии | В фотогалерее нажать на миниатюру | Полноэкранный просмотр, кнопка удаления |
| 8 | Воспроизведение видео | В видеогалерее нажать на запись | Воспроизведение, доступны кнопки управления (-5/+5 сек, перемотка, назад) |
| 9 | Настройки | Главное меню → «Настройки» | Отображаются параметры: дата/время, яркость, язык, качество, Wi-Fi трансляция, память |
| 10 | Wi-Fi | Настройки → «Wi-Fi» | Список доступных сетей, возможность подключения, статус |
| 11 | Индикатор батареи | Правый верхний угол экрана | Иконка батареи с цветовой индикацией уровня заряда |
| 12 | Автоматический сон | 10 минут без активности | Обратный отсчёт на экране, затем переход в спящий режим |
| 13 | Раздел «Руководство» | Главное меню → «Руководство» | Доступны разделы: текстовые материалы, видеоинструкция, инструкция по применению |
| 14 | Удаление файла | В просмотрщике фото/видео нажать иконку корзины (или долгое нажатие на файл в галерее) | Диалог подтверждения; кнопки ▲/▼ для выбора, ✓/M для подтверждения/отмены |
Для корректной работы встроенного программного обеспечения видеоларингоскопа «СЕНСАР» необходимо наличие следующих переменных окружения при запуске. Они задаются в скрипте автозапуска /etc/init.d/S99sensar:
| Переменная | Значение | Описание |
| LD_LIBRARY_PATH | /usr/lib | Путь к библиотекам Qt |
| QT_QPA_FB_DRM | 1 | Включение DRM-режима дисплея (обязательно для устройств заказчика) |
| QT_QPA_PLATFORM | linuxfb:size=800x480:mmSize=800x480:offset=0x0 | Параметры фреймбуфера: разрешение и смещение |
| QT_QPA_EVDEV_KEYBOARD_PARAMETERS | /dev/input/event0 | Устройство ввода физических кнопок |
Переменная QT_QPA_FB_DRM=1 является критически важной. Без неё Qt выполняет рендеринг в /dev/fb0, но DRM pipeline не подхватывает эти данные — результатом является чёрный экран при работающем приложении.
| Путь | Содержимое | Примечание |
| /data/sensar | Исполняемый файл приложения | Основной бинарный файл |
| /userdata/guide_video.avi | Видеоинструкция (MJPEG AVI) | ~100 МБ |
| /userdata/laryngoscope/ | 19 JPG-изображений | Инструкция по применению |
| /userdata/media/photos/ | Фотографии, сделанные на устройстве | Создаётся автоматически при первой съёмке |
| /userdata/media/videos/ | Видеозаписи | Создаётся автоматически при первой записи |
| /userdata/settings.json | Файл настроек приложения (JSON) | Создаётся автоматически |
| /userdata/logs/ | Метрики системы в формате CSV | Создаётся автоматически |
| /tmp/sensar.log | Лог-файл приложения | Пересоздаётся при каждом запуске |
| /etc/init.d/S99sensar | Скрипт автозапуска СЕНСАР | Создаётся при первой установке |
| /etc/init.d/S41camear_on | Скрипт включения питания камеры (GPIO) | Не изменять |
| /etc/init.d/disabled_S40app | Отключённое штатное ПО заказчика | Переименован из S40app при установке |
| Скрипт | Назначение | Допустимость изменений |
| S10atomic_commit.sh | Инициализация DRM atomic commit для дисплея | Не изменять |
| S41camear_on | Включение питания камеры через GPIO (5V + USB) | Не изменять — обязателен для работы камеры |
| disabled_S40app | Штатное ПО заказчика (отключено) | Не изменять — восстановление приведёт к конфликту |
| S99sensar | Автозапуск ПО СЕНСАР | Создаётся при первичной установке |
| S99open_wifi | Запуск Wi-Fi при загрузке | Не изменять |
Скрипт S41camear_on выполняет включение питания камеры через GPIO:
echo 255 > /sys/class/leds/5v_en/brightness
echo 255 > /sys/class/leds/usb_en/brightness
Без данного скрипта камера не получает питание и не определяется системой. Удаление или переименование этого файла приведёт к неработоспособности камеры.
Сервисное меню предназначено для технического персонала и содержит инструменты диагностики и тестирования. На устройствах, передаваемых заказчику, сервисное меню должно быть отключено.
Для включения сервисного меню создать файл-маркер:
adb shell "echo 1 > /userdata/debug.conf"
После перезапуска приложения сервисное меню становится доступным.
adb shell "rm /userdata/debug.conf"
Важно: Перед передачей устройства заказчику убедиться в отсутствии файла /userdata/debug.conf. При его наличии сервисное меню будет доступно конечному пользователю.
Для диагностики приложения используются следующие команды:
Последние 30 строк лога:
adb shell "cat /tmp/sensar.log | tail -30"
Просмотр лога в режиме реального времени:
adb shell "tail -f /tmp/sensar.log"
Полный лог:
adb shell "cat /tmp/sensar.log"
Лог-файл /tmp/sensar.log пересоздаётся при каждом запуске приложения. Для сохранения лога предыдущего сеанса необходимо скопировать его до следующей перезагрузки:
adb pull /tmp/sensar.log
adb shell "ps -ef | grep sensar"
adb shell "ps -ef | grep camera"
Встроенное программное обеспечение видеоларингоскопа «СЕНСАР» должно присутствовать в списке процессов. Процесс camera (старое ПО) не должен быть активен.
adb shell "ls /dev/video*"
adb shell "v4l2-ctl -d /dev/video0 --list-formats"
adb shell "v4l2-ctl -d /dev/video1 --list-formats"
На устройствах заказчика камера обычно располагается на /dev/video1.
adb shell "cat /sys/class/graphics/fb0/virtual_size"
adb shell "dmesg | grep -i drm"
adb shell "ifconfig wlan0"
adb shell "wpa_cli status"
adb shell "cat /sys/class/power_supply/rk-bat/capacity"
adb shell "cat /sys/class/backlight/backlight/brightness"
adb shell "ls -la /userdata/guide_video.avi"
adb shell "ls /userdata/laryngoscope/"
adb shell "ls /userdata/media/photos/"
adb shell "ls /userdata/media/videos/"
Папка laryngoscope/ должна содержать 19 JPG-файлов.
adb shell "cat /etc/init.d/S99sensar"
adb shell "ls /etc/init.d/ | grep -i app"
adb shell "ldd /data/sensar"
adb shell "ls -la /data/sensar"
| # | Проблема | Причина | Решение |
| 1 | Чёрный экран при работающем приложении | Отсутствует переменная QT_QPA_FB_DRM=1 в скрипте автозапуска | Проверить содержимое /etc/init.d/S99sensar, добавить export QT_QPA_FB_DRM=1 |
| 2 | Старое ПО запускается после отключения | Файл переименован с суффиксом .disabled (паттерн S??* в BusyBox всё равно совпадает) | Переименовать в disabled_S40app (убрать префикс S) |
| 3 | Камера не показывает изображение | Скрипт S41camear_on удалён или переименован; неплотное соединение клинка | Восстановить скрипт питания камеры; проверить физическое соединение |
| 4 | adb push создаёт вложенную папку laryngoscope/laryngoscope/ | Источник указан без точки: laryngoscope вместо laryngoscope/. | Использовать adb push laryngoscope/. /userdata/laryngoscope/ |
| 5 | Нет изображений в разделе «Инструкция по применению» | Папка laryngoscope/ не скопирована или скопирована в неверное место | Выполнить rm -rf /userdata/laryngoscope, затем скопировать повторно с точкой |
| 6 | Видеоинструкция показывает чёрный экран | Файл guide_video.avi отсутствует по пути /userdata/guide_video.avi | Скопировать файл: adb push guide_video.avi /userdata/guide_video.avi |
| 7 | Ошибка eglfs not found | Qt на устройстве не включает плагин eglfs | Использовать платформу linuxfb (не eglfs) |
| 8 | Wi-Fi не подключается | Неверный пароль, устройство вне зоны сети | Проверить пароль и уровень сигнала; удалить и добавить сеть заново; выполнить wpa_cli status |
| 9 | NFC не работает | Модуль NFC физически не подключён к плате процессора на текущих устройствах | Функциональность NFC недоступна; ответственность — производитель платы |
| 10 | Быстрая разрядка аккумулятора | Высокая яркость экрана, активный Wi-Fi, включённый стриминг | Уменьшить яркость в настройках; отключить Wi-Fi и TCP-стриминг при неиспользовании |
Ряд параметров отличается в зависимости от типа устройства:
| Параметр | Dev-устройство | Устройство заказчика |
| Разрешение экрана | 682×384 | 854×480 |
| QT_QPA_FB_DRM | Не требуется | Обязательно (=1) |
| Нода камеры | /dev/video0 | /dev/video1 |
| Штатное ПО производителя | Отсутствует | /app/camera (отключается при установке) |
| Init-скрипт штатного ПО | Отсутствует | S40app (переименовывается в disabled_S40app) |
| Питание камеры | Включается автоматически | Через скрипт S41camear_on (GPIO) |
Версия документа: ПО 1.15 Дата составления: 23.02.2026 Разработчик ПО: ООО «ШИФТАПП»
Обработка персональных данных на основании 152-ФЗ