Repository navigation
Releases
KUYASE 1.4.0
[+] — добавлено
[*] — изменено / исправлено
[-] — удалено
[+]Поддержка Яндекс Станции Мини 3 Про (pickle): контурное кольцо16 RGB LED(/dev/fb0), центральный круговой логотипoknix6 RGB LED(/dev/fb1), эмуляция подключаемого аккумуляторного модуляpogo-pin(/sys/devices/platform/ya_pd/*,18 Вт PD), усилителяACM8625S(2-002c), датчикаAW933xx(2-0034) и карточка периферии в GUI.[+]Интерактивный редактор верхней полноцветной световой панели11×8(88 RGBW LED,/dev/fb0gowin_led_device+station2:*:ring0..87) для Яндекс Станции 2 (station2) с попиксельным рисованием, палитрой кисти, регулировкой ШИМ (0..255), процедурными фигурами («Волна», «Лайк», «Радуга») и запуском фоновых шоуpanel/*.led.[+]Поддержка директивыframe:<hex_0> ... <hex_N>вHostCommand::SetLedPattern(qemu-hw-bridge) для прямой покадровой передачи произвольных RGB-буферов в световое кольцо или матричную панель.[+]Эмуляция USB-C PD контроллераHUSB238(/sys/class/power_supply/ya_pd/*), цифровых усилителейSY6045S/TAS5825M(1-002a,/tmp/amp_settings_file) и карточка управления перифериейstation2в GUI.[+]Аппаратно-точные топологии корпусов в Виртуальном двойнике:CirclePuck(4 ревизии верхней крышки дляyandexmini,yandexmini2*,bergamot/pickle,yandexmicro/plum*),SquircleCube(station2,cucumber),RectLightPanel(orion),CylinderPortable(mangoс 4-LED шкалой АКБAW9110/dev/fb0и 3-LED логотипомoknixAW21012/dev/fb1) иSaturnSphere(saturn).[+]Информационная строка-инспектор под сценой корпуса и лицевой панелью с отображением координат, аппаратного индекса светодиода/сегмента, путиsysfs//dev/fb*и цветаRGB/#HEXпри наведении курсора.[+]Профили сегментных часов на32,36и45сегментов по ревизиям плат (включая диагональные сегменты,minus,degи центральный разделительDH/DL/DM), пресет глаз Алисы (👀 Глаза) и рендеринг температуры (-5°,+24°).[+]Автоматическое сканирование штатных анимаций/system/vendor/quasar/ledpatterns/*.ledнапрямую из образа.ext4с классификацией директив (gradient,smooth,rotate), цветовой маркировкой и отдельным выпадающим списком «Из прошивки (.led)» в GUI.[*]Элементы управления и индикация лазерного дальномераToF (VL53L0X)изолированы исключительно для профиляyandexmini, где датчик присутствует физически.[*]Явная отправка паттернаHostCommand::SetLedPatternвqemu-hw-bridgeнемедленно сбрасывает активный таймер оверлея громкости (volume_overlay_until_ms).[*]Выбор между быстрыми пресетами моста, паттернами из прошивки (.led) и пользовательским кадромframe:в GUI синхронизирован со взаимным сбросом неактивного списка.[-]Неинтерактивный дубликат нижней полосы кнопок убран из увеличенной проекции световой панели11×8на профилеstation2.
KUYASE 1.3.0
[+]— добавлено,[*]— изменено/исправлено,[-]— удалено
[+] Поддержка двух поколений бинарного протокола QuasarMessage (LegacyDirect для прошивок <= 0.367 и Envelope252 с LITE_RUNTIME-конвертом payload = 252, type = 253 для прошивок >= 0.368) с автоопределением формата
[+] Поддержка интерактивной консоли /system/vendor/quasar/q cli с эмуляцией Remoting (PlaybackControlCapability, DeviceStateCapability, AliceCapability) и IOHub (EndpointStorage_, FilePlayerCapability) на портах :9875, :9850 и :9903
[+] Stateful-мок glagold на внутреннем IPC-порту :9899 (для q glagol-connections и metrics_collector) и внешнем HTTP/WebSocket API :1961 (GET /state, POST /command, управление play/pause/stop/prev/next/setVolume/sendText)
[+] Полноценный режим Full Mode (--mode full) для запуска оригинального монолита maind --platformd: единый /var/run -> /run, права 04750 (0:85) на dbus-daemon-launch-helper, автозапуск dbus-daemon --system и встроенный D-Bus стаб org.bluez + org.bluealsa
[+] Полная поддержка всех команд оригинального скрипта /system/vendor/quasar/q без его модификации (version, device-id, full-info, wifi-info, getprop, glagol-connections, start, stop, restart, backend-dev, backend-prod)
[+] Стабы окружения вендора: Linkplay fnvram (Device ID: EMU0001 для yandexmini), SDIO Wi-Fi ID (0x02d0/0xa9bf), дефолтный pcba_ids, автоинжекция devConfig (devFlag) в quasar.cfg, виртуальный netlink-интерфейс wlan0 и единый симлинк maind.log
[*] Устранено предупреждение libasound.so.2: no version information available при вызове вендорских утилит на yandexmini, yandexmicro и station2 (автоматический патчинг секции DT_VERNEED в tmpfs и LD_PRELOAD)
[*] Подстановка команд $(/system/vendor/quasar/q start|restart) больше не зависает и не выводит mkfifo: /tmp/loop_capture_pcm: File exists (закрытие унаследованных FD и очистка FIFO при SIGTERM в стабе quasar_launcher2)
[*] Инициализация гостевого окружения (D-Bus, fnvram, wlan0 и org.bluez.service через mount --bind) перенесена в qemu-hw-bridge с сохранением обратной совместимости со старыми образами .ext4 без пересборки
[*] На wlan0 сохраняется аппаратный MAC-адрес 52:4b:59:* при работе с --lan-tap, а при отключении WebSocket-клиента Glagol :1961 статус пира сбрасывается в active: false
[-] Каталог examples/ (все актуальные сценарии автоматизации находятся в tests_e2e/)
[-] Дублирующая shell-инициализация D-Bus, fnvram и сетевых заглушек в guest-init/equasar-qemu-init.sh
KUYASE v1.2.0
- Профиль
mango(Яндекс Станция Стрит,YNDX-00065): проверена сборка и эмуляция на дампе реального устройства (32-bit armhf,amlogic,a1/yandex,mango). Эмулируются 4-LED индикатор зарядаAW9110(/dev/fb0+mango:*:ring1..4, паттерныledpatterns/battery/*.led), 3-LED RGBW логотипoknixAW21012(/dev/fb1+mango:*:logo0..2, паттерныledpatterns/oknix/*.led), аудиоусилительACM8625S(2-002c, пресетыmango-acm8625.cfgиmango-acm8625-outside.cfg), кулонометр АКБCW2217(/sys/devices/virtual/cw2217_cls/cw2217_coulomb/*), контроллер зарядки USB-C PDIP2366(/sys/devices/virtual/ip2366_cls/ip2366_charger/*) и интерфейс/sys/class/power_supply/battery/*(4b4a14f,4343f2c,a63a3a4,6d1e1e2). - Побайтовый терминал VT100/ANSI на
ttyAMA0(serial_vt100.rs): консоль ядра и интерактивный/bin/sh -iпереведены на потоковый парсерSerialScreenBufferбез буферизации по\n, с поддержкой escape-последовательностейCSI K/J/H/D/C/G/P/@, автоответом на запрос позиции курсораDSR(\x1b[6nдля живогоTab-автодополнения BusyBoxash), выравниванием чанков UART по границам символовUTF-8и доставкой сигналовCtrl+C(0x03/SIGINT) иCtrl+D(0x04/VEOF) (caea33f,5a4a907,2aa841a). - Двусторонняя синхронизация громкости и голосовой транспорт (
Luna/AirPlay): распознавание голосовых команд громкости («громкость 0..10») и медиа-транспорта («пауза»,«продолжи»,«следующий трек»,«предыдущий трек») с маршрутизацией в приватную шину D-Bus/run/station-airplay/private-bus(org.gnome.ShairportSync.RemoteControl), синхронизация шкалыlast_vendor_volume(0..20<->0..10) с HTTP API рантаймаluna(:8099/api/volume/set) и двухфазная публикацияAliceState(LISTENING->recognizedPhrase) на:9875(#4, #5, #6, #7,fda2626,d47a9ee,7d15bdf, спасибо @ryysel). - Сквозной контур E2E-тестирования (
tests_e2e/): автоматическая проверка оригинальных установщиковnyakokitsu/yam(install.sh/install.ps1), рантаймаnyakokitsu/luna(install.sh/install.ps1+ HTTP API:8099) и пакетаryysel/Station-airplay(.yampkg) поверхkuyase run --headless --board <board> --snapshot --exec(7d15bdf,112d58c,c8b3e94).
Изменено
- Единый каталог плат
BOARD_CATALOGи декомпозиция workspace: описания всех профилей плат и рендерер 7-сегментных часов / матрицы21×12объединены в крейтеprotocol(boards.rs,display.rs), периферияhw-bridgeразделена на 4 доменных трейта вhw-bridge/src/devices/{mod,led_ring,aux_light,front_display,audio_hw}.rs, а GUI и распаковщики образов вkuyaseразбиты на модулиgui/{canvas,faceplates,display_geom,terminal,signal_log,docks/*},rootfs_tree.rsиarchive_formats/{ubifs,squashfs}.rs(a34df1f,161b4bd,7816b93,4061d8a,2aa841a,35fc672). - Аудиозахват
snd-aloopи ресурсы QEMU: задержка перезапуска чтения изhw:0,1,0сокращена с500 мсдо20 мс, буферdmixувеличен до680 мс(устраняет периодические выпадения звукаEPIPEпри стриминге AirPlay), добавлено автоопределение числа потоков vCPU (KUYASE_SMP,KUYASE_MEM) (#4, #5,c0258a9,fda2626, спасибо @ryysel). - Геометрия фреймбуферов светового кольца (
24 bpp): виртуальные фреймбуферыbergamot(/dev/fb0,6×1),station2(/dev/fb0,89×1) иorion(/dev/fb2,36×1) переведены на упакованный форматRGB24(24 bpp) для побайтовой совместимости с драйверами подсветкиluna(#4, #6,25b9e9d,a340079,a3b802a, спасибо @ryysel).
Исправлено
- Игнорирование
SIGINT/SIGQUITв фоновых шеллахttyAMA0иadbd: добавлен принудительный сброс маски сигналов (sigprocmask) и диспозицииSIG_DFLвpre_exec, устраняющий наследованиеS_HARD_IGNот неинтерактивногоinitи восстанавливающий прерывание команд поCtrl+C(5a4a907,2db7db3). - Приоритет SoC/DTB при автоопределении
station2иcucumber: детект платы теперь проверяет маркеры/proc/device-tree/compatible(amlogic,axgvsamlogic,a5) и DSP-профили*-acm8625.cfgраньше поляdeviceType: yandexmidiвquasar.cfg, а также сохраняет точные имена образовyandexmini2ncиplumnc(cb2ae09,3d91056,7d15bdf,7816b93). - Очистка сторонних SSH init-скриптов при подготовке дампа: в
sanitize_treeиscripts/sanitize-rootfs.*добавлено удаление кастомных скриптовS99zalicebridge-ssh(4b4a14f).
Full Changelog: 1.1.0...1.2.0
add bergamot (Station mini 3)
- Профиль
bergamot(Яндекс Станция Мини 3,YNDX-00027): проверена сборка и эмуляция на дампе реального устройства (32-bit armhf, Buildroot2020.02.1,4794652521). Эмулируются 6-LED панель (/dev/fb0+bergamot:*:ring0..5,AW21018, паттерныledpatterns/oknix/*.led), 32-сегментные часыAW21036(bergamot:white:clock{A..G}{0..3},clockDH,clockDL,clockDM,clockDEGREE,device/brightness_scale), I2C-усилительACM8625P(2-002c,bergamot-acm8625.cfg), датчик освещённостиLTR-308ALS-01(in_intensity_input) и контроллер питания USB-C PDhusb238_pd(12 В) (8c98bda). - Профили
plum,plumnc,station2,yandexmini2nc: добавлены и проверены на дампах профили Яндекс Станции Лайт 2 с часами (plum) и без часов (plumnc/ ревизияprune), Яндекс Станции 2 (station2/YNDX-00051, 88-LED панель/dev/fb0) и Станции Мини 2 без часов (yandexmini2nc/YNDX-00020) (#1, спасибо @ryysel). - Постоянный диск
/data(--persist-data): подключение отдельного образаwork/<board>-data.ext4(256 МиБ) третьимvirtio-blkдиском (/dev/vdc) с автозапуском сервисов из/data/yam(etc/init.d/S99kuyase-yam) (#1, #3,737da89, спасибо @ryysel). - Сетевой мост LAN TAP (
--lan-tap <ifname> [--lan-mac <mac>]): проброс второго сетевого интерфейса в гостевую ОС какwlan0с получением IP по DHCP в физической локальной сети (для AirPlay, mDNS и локальных сервисов) (#2, #3,737da89, спасибо @ryysel). - Пакетный headless-раннер CLI: поддержка флагов
kuyase run --headless --board <slug|all> --exec "<cmd>" --keep-aliveдля прогона shell-скриптов по всей линейке собранных образовwork/*-system.ext4(0b4e1cd) и демо-стендexamples/test_yam_lineup.py(d90cef6).
Изменено
- Образ гостевого ядра: файл ядра переименован из
Imageвkuyase-kernel-arm64.img(обратная совместимость сkernel/Imageсохранена) (bc7e066). - Окно «Образы и QEMU...» и терминал
ttyAMA0: сборка.ext4из дампа и снятие дампа по ADB переведены на пошаговый мастер, в терминал добавлено автодополнение путей поTabи история команд (ff427d1). - Аудиоконфигурация гостя (
/etc/asound.conf): добавлены устройстваpcm.dmix_spk,pcm.dmix_speakersиpcm.multi_captureповерхsnd-aloopдля совместимости с AirPlay-ресивером и штатнымaudiod(#3,61ac022,8c98bda).
Исправлено
- 0-индексированные сегменты часов на
bergamotиplum: исправлена раскладка симлинковclock{A..G}{0..3} -> clock-{a..g}{1..4}в/sys/class/leds/, устраняющая наложение первого и второго разрядов часов (8c98bda). - Автоопределение
bergamotиyandexmini2: разделён детект плат с общим скриптом/etc/init.d/S61leds_brightnessпо наличию/lib/firmware/bergamot-acm8625.cfgи распознаванию каталогаmini3вkuyase prepare(8c98bda).
Full Changelog: 1.0.0...1.1.0
1.0.0
kuyase-win64-portable.zip— портативная сборка для Windows x64 (kuyase.exe, гостевое ядроkuyase-kernel-arm64.img, демонqemu-hw-bridge, скрипты и документация)kuyase-linux64-portable.tar.gz— портативная сборка для Linux x64 (kuyase, гостевое ядроkuyase-kernel-arm64.img, демонqemu-hw-bridge, скрипты и документация)kuyase-kernel-arm64.img— пропатченное гостевое ядро Linux6.6.60(aarch64,CONFIG_COMPAT=y,i2c-stub,vfb,snd-aloop) отдельно для сборки из исходников