car_ui/README.md
2026-09-15 16:42:27 +03:00

4.7 KiB
Raw Blame History

Car UI

Reference hardware

Текущая конфигурация:

  • Raspberry Pi 4 Model B (4 GB RAM);
  • 7" IPS touchscreen (1024×600);
  • HDMI video / USB touch.

Подробное описание аппаратной конфигурации:

docs/hardware.md

Architecture

В production-режиме полноценный Desktop Environment не используется.

Raspberry Pi 4B
      ↓
Debian 13 (Trixie)
      ↓
systemd
      ↓
multi-user.target
      ↓
tty1
      ↓
car-ui.service
      ↓
Qt EGLFS
      ↓
DRM/KMS
      ↓
Car UI

Bluetooth подготавливается отдельным bt-unblock.service, который снимает RFKill-блокировку перед запуском Car UI.

Project structure

car_ui/
├── assets/             # Ресурсы приложения
├── audio/              # Работа с аудио
├── controllers/        # Контроллеры приложения
├── docs/               # Документация
├── screens/            # Экраны интерфейса
├── scripts/            # Build / run / deploy scripts
├── services/           # Сервисы приложения
├── system_configs/     # systemd units и системная конфигурация
├── themes/             # Темы интерфейса
├── ui/                 # UI-компоненты
│
├── car_ui.spec         # Конфигурация PyInstaller
├── main.py             # Entry point
├── requirements.txt    # Python-зависимости
└── README.md

Quick start

Development

Подготовить окружение и собрать проект:

./scripts/build.sh

build.sh автоматически:

  • создаёт .venv, если окружение отсутствует;
  • устанавливает зависимости из requirements.txt;
  • собирает приложение через PyInstaller.

Для запуска исходного кода:

./scripts/run.sh

Логи прямого запуска сохраняются в:

debug.log

Build

Собрать standalone-приложение:

./scripts/build.sh

Результат сборки:

dist/car_ui/
├── car_ui
└── _internal/

PyInstaller использует конфигурацию:

car_ui.spec

Deploy

Установить готовую сборку в систему:

sudo ./scripts/deploy.sh

Приложение устанавливается в:

/opt/car_ui/

Production systemd service запускает:

/opt/car_ui/car_ui

Production and Development modes

Car UI поддерживает два режима работы системы.

Car mode

Используется для штатной работы магнитолы:

multi-user.target
        ↓
       tty1
        ↓
    Qt EGLFS
        ↓
      Car UI

Desktop Environment при этом не запускается.

Development mode

Для разработки используется обычный:

graphical.target
        ↓
Desktop Environment
        ↓
scripts/run.sh

Инструкции по настройке и переключению режимов находятся в:

docs/auto-start.md

First system setup

Инструкция по подготовке чистой Debian 13 (Trixie), установке системных зависимостей, сборке и первоначальному развёртыванию:

docs/first-system-setup.md

Configuration

Конфигурация UI хранится в:

~/.config/car_ui/ui.conf

Marker files

В корне проекта могут использоваться специальные marker-файлы.

reset

Сигнал приложению выполнить сброс до заводских настроек.

Создать:

touch reset

Удалить:

rm reset

dev_mode_enable

Включает режим разработчика приложения.

Создать:

touch dev_mode_enable

Удалить:

rm dev_mode_enable

Documentation

Основная документация проекта находится в docs/:

  • first-system-setup.md — подготовка чистой системы;
  • auto-start.md — systemd, автоматический запуск и переключение Car / Development mode.