maxpkg
Native Package Manager (maxctl), IPC Hardware Arbiter & Multi-Language SDK (Rust, C, C++, Go, Zig) for Yandex Station Max
- Add-on
- Alpha
- Low brick risk
This project hasn't been claimed by its maintainer yet, so its details come from the community. Is it yours? Claim it
maxpkg v0.2.0 - Native Package Manager, Kernel EventBus & Multi-Language HAL SDK (Pre-Release)
[!WARNING] Статус API: Experimental / Unstable (Pre-1.0) Текущая архитектура
libmax_hal, шинаEventBusи контракты SDK находятся в активной разработке и ещё не зафиксированы. В следующих версиях возможны полные переработки (rewrites) отдельных модулей и ломающие изменения C-ABI без сохранения обратной совместимости. Всегда используйтеmaxctlиmaxpkg-sdk-aarch64-v0.2.0.zipиз одного и того же релиза.
Added
- Ядерная событийная шина
EventBus(modules::events/max_events_*):- Единый блокирующий мультиплексор
poll(2)с нулевой нагрузкой на CPU (0%в режиме ожидания), объединяющий:EventKind::Input (3)— прямое чтение/dev/input/event0..3со встроенным конечным автоматом распознавания жестов (click,double_click,quadro_click,long_press) и вращения энкодера.EventKind::BtPower (4)— мгновенное чтение 8-байтовых бинарных структур ядраstruct rfkill_eventиз/dev/rfkill(RFKILL_TYPE_BLUETOOTH) с автоматической фильтрацией стартовыхRFKILL_OP_ADDсостояний.EventKind::SoundPlay (7)— ядерныйinotify(IN_OPEN | IN_CLOSE_WRITE) на/data/data/com.yandex.io.sdk/files/system/sounds/{common,ru-RU}, перехватывающий момент открытия любого системного звука демономquasmodromd.EventKind::AliceState (6)— ядерныйinotify(IN_OPEN) на каталогledpatterns, определяющий переходы состояний Алисы (listening,speaking,thinking,bluetooth,muted,idle) без чтенияlogcat.EventKind::BtConfig (5)— ядерныйinotify(IN_CLOSE_WRITE) на/data/misc/bluedroid/bt_config.confпри сопряжении или обновлении профиля Bluetooth-клиента.EventKind::Tick (2)— встроенный периодический таймерtimerfd_create(CLOCK_MONOTONIC)(set_tick_ms) для совмещения реактивной обработки событий и рендера кадровfb4/fb5в одном потоке.EventKind::Stop (1)— мгновенное пробуждениеpoll(2)при полученииSIGTERM/SIGINTот супервизораmaxctl.
- Единый блокирующий мультиплексор
- Транзакционная подмена системных звуков в модуле
audio(SoundOverrideManager):- Новые методы
override_sound(target_rel, custom_src)иrestore_sounds()во всех 5 SDK (max_audio_override_sound,max_audio_restore_sounds). - Автоматическое резервное копирование оригинальных звуков Яндекса в
MAX_PKG_DATA/sound_backups/при первой подмене. - Выставление прав
0644и системного владельцаu0_a38:u0_a38(libc::chown) для бесшовного чтения процессомcom.yandex.io.sdk. - Автоматическая проверка и самовосстановление подменённых файлов при попытке их перезаписи со стороны OTA (
ensure_all_applied()) и гарантированный возврат заводских звуков вDropпри остановке пакета.
- Новые методы
- Аппаратный DSP Master Mute в модуле
audio:- Методы
is_muted()иset_mute(bool)(max_audio_is_muted,max_audio_set_mute), управляющие напрямую регистромNUMID_MASTER_MUTE = 68(ctl 67) в/dev/snd/controlC0за< 0.2 мс.
- Методы
- Приватная сборка и поставка готовых бинарных артефактов:
- Полное удаление локальных путей хост-машины из исходников и бинарных артефактов (
--remap-path-prefix,-ffile-prefix-map,-trimpath,llvm-strip) с автоматическим аудитом приватности на этапе сборки (scripts/build_all.ps1). - Скрипт автоматической сборки и публикации релизов
scripts/release.ps1и GitHub Actions workflow.github/workflows/release.yml, формирующие готовые архивыmaxpkg-runtime-aarch64(для установки на колонку) иmaxpkg-sdk-aarch64(предсобранныеlibmax_hal.a,libmax_hal.soи заголовки для разработки пакетов без компиляции ядра).
- Полное удаление локальных путей хост-машины из исходников и бинарных артефактов (
Changed
- Полный отказ от порождения дочерних процессов (
fork/exec) в модулеsystem:- Чтение и запись системных свойств Android (
get_prop/set_prop) переведены с вызовов/system/bin/getpropи/system/bin/setpropна прямые FFI-вызовы__system_property_getи__system_property_setиз системной библиотеки Bioniclibc.so. - Получение IPv4-адреса и сетевой статистики
wlan0(wifi()) переведено с вызова/system/bin/ipна прямой ядерный вызовioctl(SIOCGIFADDR)и чтение/sys/class/net/wlan0/statistics/{rx,tx}_bytes.
- Чтение и запись системных свойств Android (
- Перевод всех пакетов (
bt-memes,pkg-rust,pkg-c,pkg-cpp,pkg-go,pkg-zig) наEventBus:- Убраны циклы поллинга
sleep_ms()в пользу блокирующего ожидания ядерных событийnext_event(-1).
- Убраны циклы поллинга
Готовые артефакты релиза (aarch64-linux-android, без компиляции)
| Файл | Назначение |
|---|---|
maxpkg-runtime-aarch64-v0.2.0.tar.gz | Полный комплект для Яндекс Станции Макс: бинарник maxctl, динамическая библиотека libmax_hal.so, автоустановщик install-on-station.sh и 6 готовых пакетов (bt-memes, pkg-rust, pkg-c, pkg-cpp, pkg-go, pkg-zig) |
maxpkg-sdk-aarch64-v0.2.0.zip | SDK для разработчиков пакетов: предсобранные libmax_hal.a и libmax_hal.so (aarch64-linux-android, API 28), заголовки C99 (max_hal.h) и C++17 (max_hal.hpp), модули для Go (maxhal), Zig (maxhal.zig), Rust (max-sdk) и docs/API.md |
maxctl-aarch64-linux-android | Отдельный исполняемый файл пакетного менеджера и супервизора maxctl |
libmax_hal.so | Отдельная разделяемая библиотека ядра HAL (C-ABI) |
libmax_hal.a | Отдельная статическая библиотека ядра HAL для статической линковки |
SHA256SUMS.txt | Контрольные суммы SHA-256 всех бинарных файлов релиза |
Быстрая установка на Яндекс Станцию Макс
tar -xzf maxpkg-runtime-aarch64-v0.2.0.tar.gz -C /data/local/tmp/
sh /data/local/tmp/maxpkg-runtime/install-on-station.sh
Сборка собственного пакета с готовым maxpkg-sdk-aarch64-v0.2.0.zip (без компиляции Rust)
# C99:
aarch64-linux-android28-clang -std=c99 -O2 main.c -I./include -L./lib -lmax_hal -ldl -llog -lm -o my-pkg
# C++17:
Before you start
- How hard is it?
- HardUses the command line or developer tools.
- What you need
- Comfort with the command line
- A computer
- Can it break my device?
- Very unlikely to break anything.
- Can I undo it?
- The project doesn't say. Assume you can't.
Did it work for you?
Did maxpkg v0.2.0 work on your Yandex Station?
No reports yet for v0.2.0.
One-tap reports from owners. Bricked reports are checked before they count.
Compatibility
Devices: Yandex Station.
No compatibility information yet.
Getting started
From the project's README ("Быстрая установка из готового релиза (без компиляции)"):
В каждом релизе на странице Releases публикуются готовые артефакты под aarch64-linux-android:
- maxpkg-runtime-aarch64-vX.Y.Z.tar.gz — готовый комплект для установки на Яндекс Станцию Макс (bin/maxctl, lib/libmaxhal.so, скрипт install-on-station.sh и скомпилированные пакеты bt-memes, pkg-rust, pkg-c, pkg-cpp, pkg-go, pkg-zig).
- maxpkg-sdk-aarch64-vX.Y.Z.zip — комплект разработчика со статической и динамической библиотеками (lib/libmaxhal.a, lib/libmaxhal.so) и заголовками/модулями для C99, C++17, Go, Zig и Rust, позволяющий собирать собственные плагины без компиляции ядра.
Развёртывание на колонке из архива релиза:
tar -xzf maxpkg-runtime-aarch64-v0.2.0.tar.gz -C /data/local/tmp/ sh /data/local/tmp/maxpkg-runtime/install-on-station.sh
Risk and recovery
- Brick risk
- Low
- Requires opening the device
- No
Releases
| Version | Name | Released |
|---|---|---|
| v0.2.0 | maxpkg v0.2.0 (Pre-Release)Pre-release | 28 October 2026 |
Credits, license and support
- License
- Apache-2.0