Repository navigation
Releases: mamaich/GammaOSNext-RG52mini
Release list
v1.12 — нет перезапуска на слабой батарее от громкого звука, Wi-Fi после аварийного перезапуска
Выпуск v1.12
GammaOS Next (LineageOS 21 / Android 14) для карманной консоли AISLPC RG52 Mini на Rockchip RK3562. Здесь перечислено то, что изменилось после v1.11. Главное в выпуске — консоль больше не перезагружается на слабой батарее от громкого звука, а Wi-Fi после аварийного перезапуска подключается сам.
| Образ | GammaOSCore-RG52Mini-20261018-2155.img.zip, 1,97 ГиБ (2 110 918 223 байт) |
| sha256 архива | 1ba74dcba45ee273d6155befdec7a2b080e583a752526cbd5a87b465c31e95a6 |
| sha256 образа | 019f9ff5eb84a2681e4c90cfc788c14dd0eeb75703ef40c6ab8d0b3b3d768d8e |
| Пакет обновления | GammaOSCore-RG52Mini-20261018-2155-ota.zip — для тех, кто уже на v1.3–v1.11 |
| Основа | GammaOS Next Core (вариант на базе Android TV), Android 14; изменения апстрима GammaOS Next до 1.4.4 и часть более поздних, как в v1.11 |
| Ядро | Linux 5.10.226, mamaich/kernel_rk3562_rg52mini, то же, что в v1.11 |
| Загрузчик | mamaich/u-boot-rk3562-rg52mini, тег rg52mini-1.4, тот же, что в v1.9–v1.11 |
| Раздел vendor | от Android 13 (SyachOS), с вырезанным лишним и подменённым драйвером графики |
Общая карта с GammaOS Next и dArkOS обновляется тем же пакетом, см. RG52mini-dualboot.
Перед обновлением по воздуху
Пока идёт обновление, не перезагружайте устройство, даже если экран чёрный. Обновление в это время продолжается, а в конце устройство перезагрузится само. Перезагрузка посреди записи оставит карту незагружаемой.
- После строки Checking… экран на 10–15 секунд гаснет: система передаёт его программе обновления. Потом появляются полоса и проценты.
- Пакет полный, из четырёх разделов: система, vendor, загрузочный раздел и загрузчик (тот же, что в v1.9–v1.11). На быстрой карте запись занимает около 6 минут, на медленной — до получаса.
- Обновляйтесь с заряженной батареей или на зарядке: перезапуск консоли посреди записи, о котором ниже, оставит карту незагружаемой.
- Если запись всё же прервётся и карта перестанет загружаться, её можно восстановить так же, как при первой установке: записать образ выпуска на компьютере через кардридер.
Что нового
Консоль не перезагружается на слабой батарее от громкого звука
С консоли ревизии A пришла жалоба: на 20–25 % заряда она перезагружается, если выдернуть кабель зарядки. Разобрались: дело не в кабеле, а в динамике. На слабой батарее (примерно последняя треть заряда, граница зависит от температуры) громкий звук через динамик даёт короткие броски тока усилителя, напряжение питания проседает ниже порога защиты, и микросхема питания мгновенно перезапускает консоль — с потерей несохранённого прогресса. Процессор, даже разогнанный, лишь добавляет к этому. Отключение кабеля попадало в ту же ловушку: на смену питания Android отвечал звуком зарядки на полной громкости и разом нагружал процессор. dArkOS на той же громкости сбоит точно так же, просто у неё громкость по умолчанию ниже.
Теперь, когда напряжение батареи без нагрузки опускается ниже 3,75 В, громкость динамика не поднимается выше 12 из 25 (на 16 дБ тише максимума), а если была выше — опускается до 12, и на экране появляется подсказка Battery low: speaker volume limited to 12. Наушники и HDMI не ограничиваются. Ограничение снимается, когда батарея зарядится выше 3,8 В. Подключён ли кабель, значения не имеет: от порта компьютера броски тока всё равно идут из батареи.
Проверено в режиме Overclock с полной нагрузкой на все ядра: при 3,75 В звук на громкости 12 консоль пережила, тот же звук на 25 перезапустил её.
Ограничение выключается в GammaOS Toolbox → Power & Performance → Limit speaker volume on low battery (по умолчанию включено). Выключивший его берёт риск таких перезапусков на себя. Порог и потолок можно подстроить свойствами persist.rg52.lowbat.mv (порог в мВ, 3750; 0 — выключить всё) и persist.rg52.lowbat.vol_max (потолок, 12).
Одна громкость для всех звуков
Кнопки громкости теперь меняют громкость всех звуков — системных, уведомлений, будильника, — а не только музыки и игр. Раньше звук подключения зарядки шёл на полной громкости, даже если общая громкость стояла на нуле.
Звук подключения зарядки выключен
На новой установке он выключен сразу, при обновлении по воздуху — один раз на первой загрузке. Вернуть его можно командой adb shell settings put secure charging_sounds_enabled 1.
Что чинилось
Wi-Fi после аварийного перезапуска
После аварийного перезапуска (сброс по питанию, как выше, или сбой системы) Wi-Fi сам не подключался — помогало только выключить и включить его, — а после обычной перезагрузки подключался всегда. Консоль пропадает из сети, не попрощавшись с роутером, и роутер ещё держит её прежнее соединение: на первую попытку он отвечает «повторите чуть позже». Android принимал этот ответ за переполненную точку доступа и на 5 минут переставал к ней подключаться. Теперь он повторяет попытку через пару секунд и подключается.
Что стоит проверить
Защита от перезапуска проверялась на одной консоли ревизии B. Если консоль всё же перезагрузится на низком заряде при включённом ограничении громкости, напишите, при каком заряде, в какой игре и на какой громкости, — особенно на ревизии A. Пригодятся и наблюдения, влияет ли на такие перезапуски вибрация в игре.
Подробности
Разбор решений, замеры и найденные подводные камни — в 02-план.md. Как собрать самому, включая образ карты — в 03-сборка.md.
v1.11 — сила вибрации, общая карта dArkOS (папки, платформы, BIOS), HDMI в nano
Выпуск v1.11
GammaOS Next (LineageOS 21 / Android 14) для карманной консоли AISLPC RG52 Mini на Rockchip RK3562. Здесь перечислено то, что изменилось после v1.10. Главное в выпуске — сила вибрации и совместимость с общей картой dArkOS: Daijishō видит игры в папках dArkOS, а BIOS у RetroArch общие с dArkOS. Список платформ расширен, поэтому после обновления по воздуху пересинхронизируйте библиотеку Daijishō вручную (см. «Перед обновлением по воздуху»).
| Образ | GammaOSCore-RG52Mini-20261017-2153.img.zip, 1,97 ГиБ (2 110 933 867 байт) |
| sha256 архива | 1da29d84fbb442c966e674d3ac7f7e4f2ae31e248f51c6655bc3bbe42d7db942 |
| sha256 образа | 6f3edf5c4db2cbe9ea03a9b7a1fba579d5abeea9ad6ab68656a25b1dcebba219 |
| Пакет обновления | GammaOSCore-RG52Mini-20261017-2153-ota.zip — для тех, кто уже на v1.3–v1.10 |
| Основа | GammaOS Next Core (вариант на базе Android TV), Android 14; изменения апстрима GammaOS Next до 1.4.4 и часть более поздних (см. «Из апстрима GammaOS») |
| Ядро | Linux 5.10.226, mamaich/kernel_rk3562_rg52mini, новое: сила вибрации в драйвере геймпада |
| Загрузчик | mamaich/u-boot-rk3562-rg52mini, тег rg52mini-1.4, тот же, что в v1.9 и v1.10 |
| Раздел vendor | от Android 13 (SyachOS), с вырезанным лишним и подменённым драйвером графики |
Общая карта с GammaOS Next и dArkOS обновляется тем же пакетом, см. RG52mini-dualboot.
Перед обновлением по воздуху
Пока идёт обновление, не перезагружайте устройство, даже если экран чёрный. Обновление в это время продолжается, а в конце устройство перезагрузится само. Перезагрузка посреди записи оставит карту незагружаемой.
- После строки Checking… экран на 10–15 секунд гаснет: система передаёт его программе обновления. Потом появляются полоса и проценты.
- Пакет полный, из четырёх разделов: система, vendor, загрузочный раздел и загрузчик (тот же, что в v1.9 и v1.10). На быстрой карте запись занимает около 6 минут, на медленной — до получаса.
- В этом выпуске расширен список платформ Daijishō (16 новых) и папок, где он ищет игры. На первой загрузке после обновления Daijishō один раз перезапустится: в его библиотеку добавляются новые платформы и папки. После этого запустите в Daijishō синхронизацию библиотеки вручную — без неё игры из новых папок и для новых платформ в библиотеке не появятся.
- Если запись всё же прервётся и карта перестанет загружаться, её можно восстановить так же, как при первой установке: записать образ выпуска на компьютере через кардридер.
Что нового
Сила вибрации
Моторы вибрации RG52 Mini умеют только включаться и выключаться, поэтому раньше любая вибрация шла на полную. Теперь драйвер геймпада в ядре изображает силу частым включением и выключением моторов (программный ШИМ): слабая вибрация в игре ощущается слабее, средняя — средней. Обычная вибрация Android по умолчанию осталась полной силы. Слабую вибрацию драйвер начинает с короткого толчка на полную силу — иначе мотор не трогается с места, — а дальше держит его на меньших оборотах.
Ползунок Vibration intensity в Handheld Settings → Gamepad теперь действительно меняет силу вибрации в играх и в Test vibration: крайнее левое положение — вибрации нет, крайнее правое (по умолчанию) — полная сила. Бесполезные для встроенного геймпада переключатели PWM vibration и Direct FF device скрыты.
Совместимость с общей картой dArkOS
На общей карте dArkOS (и EmuELEC) складывают игры в свои папки, и часть из них Daijishō не видел. Теперь он находит игры и в таких папках: nesh (NES), pico-8 (PICO-8), sg-1000 (Master System), pspminis (PSP), snes-hacks и snesmsu1 (SNES), msumd (Genesis), n64dd (N64).
Добавлены платформы для систем, которых в Daijishō не было: аркады (FinalBurn Neo и MAME), CP System I, II и III, Neo Geo, Atomiswave, PC Engine и PC Engine CD, Sega 32X, Sega CD, Atari 2600, Atari Lynx и Amstrad CPC - с папками dArkOS, эмуляторами RetroArch по умолчанию и обоями в стиле остальных. GameCube и PlayStation 2 есть, но скрыты: на этой консоли они не тянут. Включить их можно в настройках Daijishō.
BIOS теперь общие с dArkOS: RetroArch ищет их в ROMs/bios, как и dArkOS. Положите туда BIOS один раз - и они работают в обеих системах (нужны, например, для Sega CD, PC Engine CD и Atomiswave). То, что уже лежало в RetroArch/system, при первой загрузке копируется в ROMs/bios; файлы с теми же именами, которые там уже есть, не заменяются.
После обновления по воздуху папки и платформы добавляются в библиотеку Daijishō при первой загрузке; ваши настройки платформ при этом не меняются. Чтобы в библиотеке появились игры из новых папок, запустите синхронизацию в Daijishō.
Что чинилось
Ползунки в настройках геймпада не теряют фокус
В Handheld Settings → Gamepad после нескольких нажатий влево-вправо на любом ползунке фокус слетал с него, и выделенным становился весь экран. Каждый шаг ползунка заставлял gammapad полностью перезапускать геймпад — отпускать и заново захватывать устройства, пересоздавать виртуальный геймпад, — а экран в ответ перестраивал список устройств. Теперь такие настройки (ползунки, инверсия и чувствительность стиков, ABXY, скорости мыши, сила вибрации) применяются без перезапуска геймпада.
Динамик замолкает при подключении наушников
Если вставить проводные наушники в гнездо 3,5 мм, звук шёл и в наушники, и в динамик. Консоль видела наушники, но Android о них не знал и продолжал выводить звук на динамик. Теперь при подключении наушников звук переходит только в них, а динамик выключается; когда их вынимают, звук возвращается в динамик.
HDMI в оболочке nano
В оболочке nano HDMI не работал: при подключении кабеля в главном меню картинка на телевизор не выводилась, в игре гасли встроенный экран и звук, а после выхода из игры на телевизоре появлялись часы, встроенный экран оставался чёрным. Теперь на HDMI выводится копия экрана — и меню, и игры — во весь экран телевизора с сохранением пропорций. Когда кабель вынимают, картинка возвращается на встроенный экран. Как и в обычном Android, копия включается настройкой Force mirror mode (в nano — Settings → External Display → Force Mirror; включена по умолчанию) или External as primary.
Мастер первой настройки
На шаге Wi-Fi после подключения к сети фокус сразу переходит на кнопку Next — листать до неё через весь список сетей больше не нужно. После Wi-Fi мастер больше ничего не спрашивает и сразу переходит к настройке системы (установка приложений).
Шага «Date & time» в мастере больше нет. Раньше он появлялся лишь изредка, управлялся только мышью и, если его не трогать, сам ставил часовой пояс GMT-11 (Midway). Теперь после первой настройки пояс всегда GMT; свой пояс можно выбрать в настройках Android (Date & time).
Из апстрима GammaOS
Правки автора GammaOS Next, перенесены из его репозитория:
- SurfaceFlinger: после разового переключения на композицию через GPU (у нас — на 2 секунды при каждом повороте экрана) слои больше не остаются на GPU до следующей смены геометрии; SurfaceFlinger работает в группе процессора для приоритетных задач. Логика «ведомого» дисплея касается второго экрана — у нас это HDMI.
- Долгое нажатие «Назад» (F1/ESC для RetroArch и DraStic) выбирает приложение по окну с фокусом, а не по последней задаче.
- GammaEQ: у эквалайзера GammaOS своё состояние фильтров в каждом потоке микшера (раньше общее, звук мог хрустеть), и он обрабатывает 24- и 32-битный и float-звук. По умолчанию GammaEQ выключен, как и раньше.
- DraStic в оболочке nano: Threaded 3D больше не падает на процессорах без атомарных инструкций ARMv8.1 — а Cortex-A53 в RK3562 как раз такой.
Известные особенности
В оболочке nano игра во Flycast может зависнуть (пропадают звук и управление), если кабель HDMI во время игры на мгновение теряет контакт. В обычном Android такого не замечено.
Подробности
Разбор решений, замеры и найденные подводные камни — в 02-план.md. Как собрать самому, включая образ карты — в 03-сборка.md.
v1.10 — геймпад: скорость курсора, переключатели мыши, экран Gamepad, вибрация
Выпуск v1.10
GammaOS Next (LineageOS 21 / Android 14) для карманной консоли AISLPC RG52 Mini на Rockchip RK3562. Здесь перечислено то, что изменилось после v1.9. Выпуск про геймпад: настройки режима мыши, экран Gamepad и вибрация в играх.
| Образ | GammaOSCore-RG52Mini-20261014-2235.img.zip, 1,96 ГиБ (2 100 209 919 байт) |
| sha256 архива | a1755740c381e0dbb370b304d5b8e37cf50b3120d9e1bacc513823a6df0862f8 |
| sha256 образа | 54cc5139c03d8a2a9c4933b3d4dbd7b9caa9a9cc248d1b627f7f58ba47f1ff26 |
| Пакет обновления | GammaOSCore-RG52Mini-20261014-2235-ota.zip — для тех, кто уже на v1.3–v1.9 |
| Основа | GammaOS Next Core (вариант на базе Android TV), Android 14; изменения апстрима GammaOS Next до 1.4.4 |
| Ядро | Linux 5.10.226, mamaich/kernel_rk3562_rg52mini, то же, что в v1.8 и v1.9 |
| Загрузчик | mamaich/u-boot-rk3562-rg52mini, тег rg52mini-1.4, тот же, что в v1.9 |
| Раздел vendor | от Android 13 (SyachOS), с вырезанным лишним и подменённым драйвером графики |
Общая карта с GammaOS Next и dArkOS обновляется тем же пакетом, см. RG52mini-dualboot.
Перед обновлением по воздуху
Пока идёт обновление, не перезагружайте устройство, даже если экран чёрный. Обновление в это время продолжается, а в конце устройство перезагрузится само. Перезагрузка посреди записи оставит карту незагружаемой.
- После строки Checking… экран на 10–15 секунд гаснет: система передаёт его программе обновления. Потом появляются полоса и проценты.
- Пакет полный, из четырёх разделов: система, vendor, загрузочный раздел и загрузчик (тот же, что в v1.9). На быстрой карте запись занимает около 6 минут, на медленной — до получаса.
- Если запись всё же прервётся и карта перестанет загружаться, её можно восстановить так же, как при первой установке: записать образ выпуска на компьютере через кардридер.
Что нового
Режим мыши: скорость курсора и прокрутки, понятные переключатели
Новая настройка Cursor speed — от 0.25× (курсор вчетверо медленнее) до 2× (вдвое быстрее) с шагом 0.25, по умолчанию 1×. Меняется скорость целиком, а кривая сохраняется: малое отклонение стика по-прежнему даёт точное наведение. Scroll speed (прокрутка правым стиком) теперь такой же список вместо ползунка. Обе настройки есть в Handheld Settings → Gamepad и в экране Gamepad системных настроек.
Переключатель «Enable mouse mode» стоял включённым, когда сама мышь была выключена: на деле он лишь разрешал включать её нажатием обоих стиков. Теперь это два пункта: Mouse mode — мышь включена прямо сейчас (то же, что плитка и переключатель в меню выключателя), и Toggle with button combo — разрешение сочетания L3+R3. Выключение этого разрешения больше не теряет комбинацию: при повторном включении возвращаются L3+R3, а не SELECT+R1.
В GammaOS Toolbox системных настроек множитель скорости курсора — поле в процентах; бездействующие Stick cursor speed и Boost multiplier оттуда убраны, а изменения настроек геймпада в Toolbox теперь применяются сразу, без перезагрузки.
Что чинилось
Экран Gamepad больше не закрывается при прокрутке
В Handheld Settings → Gamepad приложение закрывалось, как только список прокручивался ниже «Invert left stick», если «Analog sensitivity» стояла не в «Off». Подписью пункта служило само выбранное значение («-10%», «+25%»), а знак процента в ней ломал отрисовку. Ошибка пришла из апстрима GammaOS.
Handheld Settings → Gamepad: лишнее скрыто
В этом экране было видно всё, что мы ещё в v1.6 спрятали из экрана геймпада в системных настройках. Теперь и здесь скрыто то, что на RG52 Mini задано под корпус или ничего не делает: выключатель и выбор устройств gammapad, тип виртуального геймпада, переназначение кнопок и осей (перезаписывало HOME/BACK и перестановку курков), кнопки режима мыши, скорость крестовины в нём, а также Hold time, Stick speed и Mouse boost, которые режим мыши не применяет. Рабочие настройки остались: инверсия и чувствительность стиков, калибровка, стик как крестовина, ABXY, вибрация, настройки мыши, профили приложений, проверка геймпада.
Вибрация в играх не залипает, крестовина в меню выключателя работает
Вибрация из игр идёт через gammapad на физический геймпад. В этом пути были две ошибки, обе из апстрима GammaOS:
- каждое включение занимало у драйвера геймпада новую ячейку эффекта и не освобождало прежнюю; через 16 включений ячейки кончались, и мотор крутился со старыми параметрами;
- gammapad получал эхо собственной команды «включить вибрацию» и пересылал его обратно в виртуальный геймпад, а тот превращал его в новое «включить» — каждые 10–15 мс, пока игра не удалит эффект. Заодно этот поток событий мешал управлению крестовиной в меню выключателя, открытом поверх игры.
Известные особенности
Часть игр сама подолгу держит вибрацию включённой. TMNT, например, каждый кадр заново просит вибрацию на 500 мс, и мотор останавливается через полсекунды после того, как игра перестанет её просить.
Подробности
Разбор решений, замеры и найденные подводные камни — в 02-план.md. Как собрать самому, включая образ карты — в 03-сборка.md. Все настройки — в 07-настройки.md.
v1.9 — загрузчик с меню выбора системы для общей карты dArkOS + GammaOS
Выпуск v1.9
GammaOS Next (LineageOS 21 / Android 14) для карманной консоли AISLPC RG52 Mini на Rockchip RK3562. Здесь перечислено то, что изменилось после v1.8. Выпуск небольшой: главное в нём — загрузчик с меню выбора системы для общей карты dArkOS + GammaOS. На обычной карте GammaOS всё работает как раньше.
| Образ | GammaOSCore-RG52Mini-20261008-2036.img.zip, 1,96 ГиБ (2 100 199 546 байт) |
| sha256 архива | 3d88d739a6a047e3eb7989e419defec82980b6bf8f19833e8628489a051e425b |
| sha256 образа | cc27531b2f57556b881f979b01d08150683be18fd0194762e9faf8c415a89c80 |
| Пакет обновления | GammaOSCore-RG52Mini-20261008-2036-ota.zip — для тех, кто уже на v1.3–v1.8 |
| Основа | GammaOS Next Core (вариант на базе Android TV), Android 14; изменения апстрима GammaOS Next до 1.4.4 |
| Ядро | Linux 5.10.226, mamaich/kernel_rk3562_rg52mini, то же, что в v1.8 |
| Загрузчик | mamaich/u-boot-rk3562-rg52mini, тег rg52mini-1.4 — новый, с меню выбора системы |
| Раздел vendor | от Android 13 (SyachOS), с вырезанным лишним и подменённым драйвером графики |
Перед обновлением по воздуху
Пока идёт обновление, не перезагружайте устройство, даже если экран чёрный. Обновление в это время продолжается, а в конце устройство перезагрузится само. Перезагрузка посреди записи оставит карту незагружаемой.
- После строки Checking… экран на 10–15 секунд гаснет: система передаёт его программе обновления. Потом появляются полоса и проценты.
- Пакет полный, из четырёх разделов: система, vendor, загрузочный раздел и загрузчик (новый, с меню выбора системы, см. ниже). На быстрой карте запись занимает около 6 минут, на медленной — до получаса.
- Если запись всё же прервётся и карта перестанет загружаться, её можно восстановить так же, как при первой установке: записать образ выпуска на компьютере через кардридер.
Что нового
Загрузчик с меню выбора системы
Новый загрузчик u-boot (rg52mini-1.4) умеет показывать меню выбора системы на общей карте dArkOS + GammaOS: GammaOS, dArkOS и, если в GammaOS Toolbox включено «Allow reboot to eMMC», система во внутренней памяти. Меню включается, только когда на карте есть обе системы. На обычной карте GammaOS загрузка идёт как раньше, без меню.
Разгон и всё остальное, кроме самого u-boot, не изменились: таблицы частот BL31, OP-TEE и dtb загрузчика побайтно те же, что в прежнем загрузчике v1.6–v1.8. «Reboot to eMMC» работает как раньше. Обновление по воздуху записывает новый загрузчик вместе с остальными разделами, и на общей карте тоже: GammaOS там обновляется тем же пакетом.
Готовая общая карта с GammaOS Next v1.9 и dArkOS выпущена отдельно: RG52mini-dualboot v1.0.
Флаги для меню на общей карте
На загрузочный раздел GammaOS теперь кладутся два файла, по которым загрузчик решает, что показывать в меню:
- пока мастер настройки GammaOS не завершён (нет папок ROMs), меню не показывается и карта сразу грузит GammaOS;
- пункт загрузки с внутренней памяти следует за переключателем «Allow reboot to eMMC» в GammaOS Toolbox.
Файлы сверяются на каждой загрузке. Обновление по воздуху записывает загрузочный раздел заново, поэтому на общей карте первая загрузка после него идёт сразу в GammaOS, а меню возвращается со следующей. На обычной карте эти файлы ни на что не влияют.
Растягивание раздела данных ищет его по имени
При первой загрузке раздел данных растягивается на всю карту. Раньше скрипт искал его по номеру (девятый раздел карты), теперь — по имени userdata. Если за ним на карте лежит ещё какой-то раздел, растягивание пропускается. Нужно для общей карты dArkOS + GammaOS, на обычной карте ничего не меняется.
Подробности
Разбор решений, замеры и найденные подводные камни — в 02-план.md. Как собрать самому, включая образ карты — в 03-сборка.md.
v1.8 — исправления: KernelSU, загрузка быстрее, разгон памяти на ревизии A
Выпуск v1.8
GammaOS Next (LineageOS 21 / Android 14) для карманной консоли AISLPC RG52 Mini на Rockchip RK3562. Здесь перечислено то, что изменилось после v1.7. Выпуск исправлений: главное в нём — снова работающий KernelSU.
| Образ | GammaOSCore-RG52Mini-20261006-2316.img.zip, 1,96 ГиБ (2 100 202 304 байт) |
| sha256 архива | 1ebdc151dea21e35a94845b49695a3d654acb11156d45cd8809d4d96111b8f4d |
| sha256 образа | 3de96ace085ee2689a7f59148e7ada028638d2d9b787216b811ba954a2fafd3e |
| Пакет обновления | GammaOSCore-RG52Mini-20261006-2316-ota.zip — для тех, кто уже на v1.3–v1.7 |
| Основа | GammaOS Next Core (вариант на базе Android TV), Android 14; изменения апстрима GammaOS Next до 1.4.4 |
| Ядро | Linux 5.10.226, mamaich/kernel_rk3562_rg52mini |
| Загрузчик | mamaich/u-boot-rk3562-rg52mini, тот же, что в v1.6 и v1.7 |
| Раздел vendor | от Android 13 (SyachOS), с вырезанным лишним и подменённым драйвером графики |
Перед обновлением по воздуху
Пока идёт обновление, не перезагружайте устройство, даже если экран чёрный. Обновление в это время продолжается, а в конце устройство перезагрузится само. Перезагрузка посреди записи оставит карту незагружаемой.
- После строки Checking… экран на 10–15 секунд гаснет: система передаёт его программе обновления. Потом появляются полоса и проценты.
- Пакет полный, из четырёх разделов: система, vendor, загрузочный раздел и загрузчик (загрузчик тот же, что в v1.6 и v1.7). На быстрой карте запись занимает около 6 минут, на медленной — до получаса.
- Если запись всё же прервётся и карта перестанет загружаться, её можно восстановить так же, как при первой установке: записать образ выпуска на компьютере через кардридер.
Что нового
KernelSU снова работает
Начиная с v1.5 приложение KernelSU Next показывало «not installed»: при урезании ядра от ненужного был выключен параметр, без которого KernelSU не находит таблицу системных вызовов и не может перехватить запуск системы, а значит, не узнаёт своё приложение. Параметр возвращён (около 1 МБ памяти ядра).
Загрузка быстрее примерно на 5 секунд
Из initrd на загрузочном разделе убраны 347 модулей ядра от прошивки производителя: с нашим ядром они не грузились ни разу, но загрузчик читал с карты лишние 33 МБ при каждом включении. От перезагрузки до готовности системы теперь около 38 секунд вместо 43.
Разгон памяти ставится и на платах ревизии A
Скрипт install-ddr928.sh отказывался ставить разгон на платах первой ревизии (Wi-Fi RK915): их загрузчик побайтно тот же, но в неиспользуемом хвосте области загрузчика остаются байты прежней версии, и скрипт считал его незнакомым. Теперь он сверяет только сами данные загрузчика. Скрипт и инструкция — в 04-частота-памяти.md; от прошивки он не зависит, его можно взять и на v1.7.
Подробности
Разбор решений, замеры и найденные подводные камни — в 02-план.md. Как собрать самому, включая образ карты — в 03-сборка.md.
v1.7 — исправления: перезагрузка ревизии A, настройки, частоты графики
GammaOS Next (LineageOS 21 / Android 14) для карманной консоли AISLPC RG52 Mini на Rockchip RK3562. Здесь перечислено то, что изменилось после v1.6. Выпуск исправлений: главное в нём — перезагрузка плат ревизии A по кнопке питания.
| Образ | GammaOSCore-RG52Mini-20261006-0743.img.zip, 1,99 ГиБ (2 132 664 896 байт) |
| sha256 архива | c515265fb0c5f4c23e38aea2ea00d9f07e9d3add5dd677e74ba88f583316c4f6 |
| sha256 образа | 264f625329c0ae0ca61701f2d03552a61924b8780e17442ac437ba6c392b3bdb |
| Пакет обновления | GammaOSCore-RG52Mini-20261006-0743-ota.zip — для тех, кто уже на v1.3–v1.6 |
| Основа | GammaOS Next Core (вариант на базе Android TV), Android 14; изменения апстрима GammaOS Next до 1.4.4 |
| Ядро | Linux 5.10.226, mamaich/kernel_rk3562_rg52mini |
| Загрузчик | mamaich/u-boot-rk3562-rg52mini, тот же, что в v1.6 |
| Раздел vendor | от Android 13 (SyachOS), с вырезанным лишним и подменённым драйвером графики |
Перед обновлением по воздуху
Пока идёт обновление, не перезагружайте устройство, даже если экран чёрный. Обновление в это время продолжается, а в конце устройство перезагрузится само. Перезагрузка посреди записи оставит карту незагружаемой.
- После строки Checking… экран на 10–15 секунд гаснет: система передаёт его программе обновления. Потом появляются полоса и проценты.
- Пакет полный, из четырёх разделов: система, vendor, загрузочный раздел и загрузчик (загрузчик тот же, что в v1.6). На быстрой карте запись занимает около 6 минут, на медленной — до получаса.
- Если запись всё же прервётся и карта перестанет загружаться, её можно восстановить так же, как при первой установке: записать образ выпуска на компьютере через кардридер.
Что нового
Ревизия A: перезагрузка по кнопке питания
На платах первой ревизии (Wi-Fi RK915) нажатие кнопки питания вместо блокировки перезагружало устройство. В v1.6 загрузчик получил таблицу частот для разгона, и из списка частот графики ушла ступень 200 МГц, на которую драйвер графики переводит её перед выключением питания. Перевод не удавался, и графика выключалась на рабочей частоте, вплоть до 900–1000 МГц. Теперь перед выключением она переходит на 300 МГц. Исправление проверено и подтверждено владельцем платы ревизии A: перезагрузки ушли.
Яркость в системных настройках больше не закрывает их
В настройках Android (Settings → Display) пункт Brightness level закрывал настройки: он открывает окно яркости из системного интерфейса, а в варианте для Android TV этого окна нет. Теперь в таком случае открывается свой диалог с ползунком яркости, им можно управлять крестовиной.
Память в Max Performance и Overclock не держится на максимуме во сне
В v1.6 память в этих режимах держалась на 928 МГц и после выключения экрана, и устройство засыпало на этой частоте. Теперь при выключении экрана память отдаётся штатному регулятору и при простое опускается, а при включении снова стоит на максимуме.
Developer options в системных настройках открывается с крестовины
В настройках Android (Settings → System) пункт Developer options не открывался кнопкой — только касанием. В Android 14 он и ещё несколько пунктов (сброс Bluetooth и Wi-Fi в Reset options, параметры сети Wi-Fi) сделаны на Jetpack Compose, а фокус крестовины стоит на строке списка, а не на элементе внутри неё. Теперь «Enter» на такой строке срабатывает как касание.
Отладка по Wi-Fi снова включается
В v1.6 переключатель «Отладка по Wi-Fi» в параметрах разработчика ничего не делал. Система при включении спрашивает «Разрешить отладку в этой сети?», а окно этого вопроса в варианте интерфейса для Android TV вырезано (Google пометил это как «проверить, можно ли убрать»). Окно возвращено.
Power Saver ограничивает и графику
В режиме Power Saver графика теперь не поднимается выше 600 МГц. Раньше её ограничивал только регулятор, а при запуске приложений частоту в обход него поднимала служба питания Rockchip — до 900 МГц. 2D-эмуляции 600 МГц хватает с запасом; в тяжёлом 3D (PSP, Dreamcast) в этом режиме возможны просадки.
Разгон графики не включается во время загрузки
Ступень графики 1000 МГц (режим Overclock) теперь недоступна с самого начала загрузки: потолок 900 МГц выставляется до запуска анимации загрузки. Раньше он появлялся только через ~19 секунд, когда применялся режим производительности, и до этого графика могла работать на разогнанной частоте — на экземпляре чипа, которому она не по силам, это грозило сбоем на каждой загрузке. В режимах Power Saver, Normal, 3D Games и Max Performance разогнанные частоты процессора и графики не используются (проверено на устройстве, в том числе при запуске приложений).
Подробности
Разбор решений, замеры и найденные подводные камни — в 02-план.md. Как собрать самому, включая образ карты — в 03-сборка.md.
v1.6 — режим Overclock, сон с HDMI, апстрим GammaOS 1.4.4
GammaOS Next (LineageOS 21 / Android 14) для карманной консоли AISLPC RG52 Mini на Rockchip RK3562. Здесь перечислено то, что изменилось после v1.5.
| Образ | GammaOSCore-RG52Mini-20261004-1232.img.zip, 1,99 ГиБ (2 132 616 254 байт) |
| sha256 архива | 4ca14bb825e2d3ea402edb08f767c76c6cfb857e254c2f1977babbff8d07541e |
| sha256 образа | 9d662ba9318232bdaabfb22019d4a99eeae70261b41b499296da924e369dc6c0 |
| Пакет обновления | GammaOSCore-RG52Mini-20261004-1232-ota.zip — для тех, кто уже на v1.3–v1.5 |
| Основа | GammaOS Next Core (вариант на базе Android TV), Android 14; изменения апстрима GammaOS Next до 1.4.4 |
| Ядро | Linux 5.10.226, mamaich/kernel_rk3562_rg52mini |
| Загрузчик | mamaich/u-boot-rk3562-rg52mini, BL31 с таблицей частот для режима Overclock |
| Раздел vendor | от Android 13 (SyachOS), с вырезанным лишним и подменённым драйвером графики |
Перед обновлением по воздуху
Пока идёт обновление, не перезагружайте устройство, даже если экран чёрный. Обновление в это время продолжается, а в конце устройство перезагрузится само. Перезагрузка посреди записи оставит карту незагружаемой.
- После строки Checking… экран на 10–15 секунд гаснет: система передаёт его программе обновления. Потом появляются полоса и проценты.
- Пакет полный, из четырёх разделов: система, vendor, загрузочный раздел и загрузчик. В этот раз переписывается и загрузчик — в нём таблица частот для режима Overclock. На быстрой карте запись занимает около 6 минут, на медленной — до получаса.
- Если запись всё же прервётся (например, сядет батарея) и карта перестанет загружаться, её можно восстановить так же, как при первой установке: записать образ выпуска на компьютере через кардридер.
- Пакет проверен на устройстве: после записи все четыре раздела побайтно совпали с пакетом, система загрузилась.
Что нового
Интерфейс больше не остаётся мелким после HDMI
С Mirror resize или External as primary встроенный экран на время подключения HDMI получает размер телевизора. Если кабель вынимали при выключенном или спящем устройстве, этот размер оставался и после перезагрузки — весь интерфейс становился мелким, как при 1920×1080. Теперь, если при загрузке внешнего дисплея нет, размер возвращается сам. Если размер уже залип в v1.5, достаточно один раз подключить и отключить HDMI. Размер, выставленный вручную (wm size), не трогается.
Сон и пробуждение с подключённым телевизором
Раньше с подключённым HDMI кнопка питания по-настоящему устройство не усыпляла: подсветка стиков продолжала гореть. А после пробуждения картинка оставалась на встроенном экране, телевизор был чёрный, и звука не было нигде, пока не вынуть кабель. Теперь устройство засыпает полностью, а после пробуждения картинка возвращается на телевизор вместе со звуком; иногда перед этим она пару секунд видна на встроенном экране. Работает и когда кабель вставлен до загрузки, и когда после. Подробности — в 05-hdmi.md.
Чёрный экран после логотипа на платах ревизии A
На платах ранней ревизии (Wi-Fi RK915) экран после логотипа загрузчика оставался чёрным при горящей подсветке, пока не нажать дважды кнопку питания. Причина нашлась и воспроизводится на любой ревизии: у панели урезана последовательность выключения — её обесточивали, не дав уйти в сон, и при быстром повторном включении она не оживала. Теперь выключение как в стоковой прошивке, а ядро вдобавок не даёт включить панель раньше чем через полсекунды после выключения.
Что именно гасит панель при загрузке на ревизии A, без такой платы на руках доказать не удалось, поэтому на ревизии A есть и страховка: в конце загрузки экран сам гаснет на полторы секунды и включается снова — то, что раньше приходилось делать двойным нажатием вслепую. Загрузочная анимация на такой плате может по-прежнему остаться тёмной, но дальше картинка появится сама. На ревизии B ничего не меняется. Если у вас плата ревизии A, напишите, как она теперь загружается. Подробности — в 02-план.md, «Чёрный экран после логотипа на ревизии A».
Settings в меню кнопки питания — панель TvSettings
Пункт Settings в меню по долгому нажатию на кнопку питания теперь открывает настройки Android TV — панель справа поверх текущего экрана — вместо полноэкранных настроек. Игра под панелью остаётся видимой и не теряет графику, а при нехватке памяти система не выгрузит её первой, как раньше, когда за полноэкранными настройками она становилась «предыдущим приложением». Панель легче и открывается быстрее, ею удобно управлять крестовиной. GammaOS Toolbox есть и там.
Режим Overclock и настоящая частота в меню питания
- Новый режим производительности Overclock — процессор 2208 МГц, графика 1000 МГц, память на верхней ступени. Ступени разгона — в дереве устройства и в BL31 загрузчика, который входит в этот выпуск. Троттлинг в Overclock начинается позже — чип работает на полных частотах почти до 93 °C, а не до 75 (аварийное выключение при 115 °C на месте). Пакет обновления на этот раз переписывает и загрузчик на карте. Если запись прервётся (например, сядет батарея), карту можно восстановить так же, как при первой установке: записать образ выпуска на ПК через кардридер. Тепловая защита работает и в нём, поэтому без радиатора разгон быстро упирается в троттлинг — для этого режима стоит наклеить радиатор, см. совет на 4PDA. Через перезагрузку Overclock не сохраняется — после загрузки включается Max Performance: если на вашем экземпляре чипа разгон окажется нестабильным, устройство не будет падать на каждой загрузке.
- Max Performance — штатные частоты оригинальной прошивки, рекомендованные вендором (процессор 2016 МГц, графика 900 МГц), без разгона; память теперь стоит на верхней ступени всё время, пока режим выбран.
- 2016 МГц — по-настоящему на чипах бина L3 (самые частые): напряжение этой ступени 1,125 В вместо 1,100, и процессор при метке 2016 МГц работает на ~2007 МГц вместо ~1950. Ступень общая: Max Performance стоит на ней постоянно, Normal выходит на неё под нагрузкой, поэтому там под нагрузкой процессор потребляет около 7 % больше; в простое разницы нет.
- Меню кнопки питания показывает настоящую частоту процессора и графики из аппаратных счётчиков чипа, а не запрошенную: на штатном напряжении при «2016 МГц» процессор на деле работал на 1910–1960 МГц в зависимости от температуры. Простаивающая графика показывается как
idle, колонки строки больше не прыгают. - Режимы в меню выбора идут по росту производительности: Power Saver, Normal, 3D Games, Max Performance, Overclock. Плитка в панели управления nano перебирает их в том же порядке (кроме Overclock — его выбирают в меню).
- В оболочке nano стало можно выбрать режим 3D Games — пункт был в списке, но не применялся.
Быстрее, прохладнее, свободнее память
Подробно, с замерами и тем, что можно подкрутить самому, — 08-производительность.md. Главное:
- тепловая защита больше не выключается, пока вы жмёте кнопки — HAL питания из vendor на каждое нажатие (и даже на дрожание стика) отключал её; теперь ядро следит за температурой и в игре;
- меньше фоновой работы процессора: служба из vendor раз в секунду опрашивала подсветку (5–6 % одного ядра), система раз в секунду стучалась к несуществующей камере, опрос геймпада стал вдвое дешевле — в простое вдвое меньше прерываний;
- больше свободной памяти: без лишней трассировки ядра, пула выключенного zswap, отладочных файлов ядра и drmserver;
- GL-игры и эмуляторы выводятся на экран напрямую: драйвер графики больше не отдаёт им 10-битный буфер, который экран не умеет показывать без лишней работы GPU;
- загрузка на 4 секунды быстрее: готовая политика SELinux вместо компиляции на каждой загрузке и без секундной паузы в меню загрузчика.
Настройка EmuELEC прямо из GammaOS Toolbox
При включении GammaOS Toolbox → System → Allow reboot to eMMC («Разрешить перезагрузку в eMMC») Toolbox предлагает сразу подготовить EmuELEC/RGBox во внутренней памяти к работе рядом с картой GammaOS: общая папка ROMs, подсветка при загрузке, без вопросов первого запуска. Это тот же restore-emmc.sh из 06-emuelec-на-emmc.md, только без adb: по согласию он запускается сам и показывает свой журнал. Спрашивает при каждом включении, повторный запуск ничего не портит; пункт меню включается при любом ответе. Имейте в виду: настройка меняет систему во внутренней памяти, и заменой или извлечением карты она не отменяется — вернуть как было можно только перепрошивкой заводской прошивки (об этом предупреждает и сам вопрос). Переключатель теперь стоит после настроек zRAM и переведён на русский.
Режим HDMI и поворот экрана — и в настройках оболочки nano
Оболочка nano открывает настройки Android TV, а в их GammaOS Toolbox наших пунктов не было. Теперь там есть HDMI output mode (раздел External Display) и Keep the screen in landscape (раздел Display) — работают так же, как в обычном Toolbox.
Из апстрима GammaOS
Bluetooth выключен на чистой установке
На свежей установке Bluetooth теперь выключен, а шага Bluetooth в мастере первой настройки нет: кому нужно, включает его в Bluetooth & Accessories или в быстром меню. При обновлении сохраняется то, что было. И Bluetooth больше не включается сам после того, как его выключили: раньше его снова включали обновление списка устройств и поиск при открытии экрана, теперь — только явное сопряжение или подключе...
v1.5 — звук и режимы HDMI, подсветка стиков, больше памяти
GammaOS Next (LineageOS 21 / Android 14) для карманной консоли AISLPC RG52 Mini на Rockchip RK3562. Здесь перечислено то, что изменилось после v1.4.
| Образ | GammaOSCore-RG52Mini-20261002-0852.img.zip, 2,00 ГиБ (2 145 296 330 байт) |
| sha256 архива | 412932a2b295a0d5d05d4975bab1cc751f0df57e29a86e56a6124dcb135d7a56 |
| sha256 образа | 7fc8bdf0fb0d4c3d26fb9efc1e46bee9aadffedd9775b292035fbac068cf2b72 |
| Пакет обновления | GammaOSCore-RG52Mini-20261002-0852-ota.zip — для тех, кто уже на v1.3 или v1.4 |
| Основа | GammaOS Next Core (вариант на базе Android TV), Android 14 |
| Ядро | Linux 5.10.226, mamaich/kernel_rk3562_rg52mini |
| Загрузчик | mamaich/u-boot-rk3562-rg52mini |
| Раздел vendor | от Android 13 (SyachOS), с вырезанным лишним и подменённым драйвером графики |
Перед обновлением по воздуху
Пока идёт обновление, не перезагружайте устройство, даже если экран чёрный. Обновление в это время продолжается, а в конце устройство перезагрузится само. Перезагрузка посреди записи оставит карту незагружаемой.
- После строки Checking… экран на 10–15 секунд гаснет: система передаёт его программе обновления. Потом появляются полоса и проценты.
- Пакет полный, из четырёх разделов (система, vendor, загрузочный раздел и загрузчик), и пишется дольше прежних: на быстрой карте около 6 минут, на медленной — до получаса. Подсветка стиков, звук по HDMI и новое ядро приходят только так.
- Обновление с v1.3 и с v1.4 проверено: ход записи на экране виден в обоих случаях. Если экран всё же останется чёрным — ждите, запись идёт (см. «Ход обновления снова виден» ниже).
Что нового
Памяти стало на 24 МиБ больше, загрузка на 3,6 с быстрее
Не фокус и не перенастройка: столько памяти на устройстве попросту не доставалось системе. Total RAM в dumpsys meminfo вырос с 2 003 520 K до 2 027 896 K, и ещё около 6 МиБ освободилось внутри ядра — они видны как свободная память.
Образ ядра стал на треть меньше (44,9 → 29,9 МБ), это +10,9 МиБ. Выключены таблица символов для статических функций, дескрипторы отладочных сообщений и трассировщик вызовов, отладочная сборка драйвера GPU и драйверы железа, которого нет ни на одной ревизии платы: камерный тракт, проводной Ethernet, SATA, NVMe, сырая флеш-память, аудиокодеки других плат, контроллеры сенсорных экранов, Btrfs и XFS. Всё, что может пригодиться снаружи — USB-камеры и тюнеры, USB-модемы и переходники на UART, USB-сеть, Bluetooth-свистки, геймпады, USB-звук, флешки с exFAT/FAT/NTFS, — осталось. Событийная трассировка, на которой держатся atrace и Perfetto, тоже.
Освобождён буфер логотипа загрузчика, 3,5 МиБ. Загрузчик резервирует его под заставку, а ядро его никогда не возвращало.
Параметры загрузки ядра, +5,4 МиБ: отображение памяти крупными блоками (rodata=on) и хэш-таблицы файлового кэша по реальной нужде, а не по объёму памяти. Они прописываются в extlinux.conf на загрузочном разделе.
Буфер консоли ядра вдвое меньше (16 бит на пиксель): 1,75 МиБ. Картинка при загрузке та же.
Загрузка от включения до готовности системы — 43,7 с вместо 45,4: загрузчик читает образ поменьше, а ядро не тратит время на поиск несуществующего железа. Ещё около полутора секунд дал логотип загрузчика: он пережат из 2,7 МБ в 22 КБ (восьмибитный BMP со сжатием RLE8, на вид тот же), а файлы с загрузочного раздела загрузчик читает медленно. С ним — 41,8 с (один замер).
Область защищённого мира сокращена с 10 МиБ до 6. Прошивка OP-TEE объявляет её загрузчику, а тот вырезает из памяти, доступной системе. Две находки: во-первых, ранние версии прошивки (до апреля 2024) укладывались в 8 МиБ вместо 10, как и написано в документации Rockchip, — взята самая свежая из таких. Во-вторых, хвост области — несекретное окно обмена сообщениями, и на этом устройстве оно не используется вовсе: Android к защищённому миру не обращается, а загрузчик заканчивает свои дела до запуска системы. Окно возвращено системе правкой в загрузчике.
Проверено тем, что могло сломаться: сон с пробуждением, смена частоты памяти под нагрузкой и сверка 700 МиБ, пропущенных через память.
Анимация загрузки держится до экрана оболочки
Раньше анимация заканчивалась за 7–9 секунд до того, как Daijisho показывал свою заставку, и всё это время экран был чёрным. Теперь она идёт, пока оболочка не нарисует первый экран. Если оболочка не появится за 20 секунд или открыто меню кнопки питания, анимация уходит сама. Выключается свойством persist.rg52.bootanim.hold=0.
Кадр анимации теперь в своём настоящем размере на экране, 480×480, а не 2880×2880: пока она держится, GPU не тратит силы и 32 МиБ памяти на уменьшение огромной текстуры 60 раз в секунду. Линии логотипа стали ровными.
Заодно исправлено моргание экрана негативом при каждой загрузке. Его давало подтверждение переключения режима мыши: gammapad при старте сбрасывает режим, и это считалось переключением. Теперь экран моргает только при настоящем переключении.
Ход обновления снова виден
Во время обновления по воздуху экран мог оставаться чёрным до самого конца записи, хотя само обновление шло нормально. Причин нашлось две: подсветку гасило выключение экрана перед прошивкой (если экран с момента загрузки хоть раз уходил в сон), а при долгой подготовке — таймаут экрана, после которого Android обнулял яркость. Теперь прошивальщик не даёт экрану погаснуть, пока готовится, а потом сам держит подсветку включённой. Действует для обновлений, запущенных уже из этой версии: прошивальщик берётся из работающей системы.
Игры больше не поворачивают экран
Приложение, запросившее портретную ориентацию, раньше разворачивало экран боком. Теперь экран всегда остаётся горизонтальным. Приложения, которые умеют подстроиться под горизонтальный экран (например, idTech4A++), так и работают, на весь экран; а те, что умеют только портретную ориентацию, показываются вертикальной полосой по центру. Переключатель — в GammaOS Toolbox, раздел Screen Rotation: Keep the screen in landscape (в русском интерфейсе — «Не поворачивать экран по запросу приложений»), по умолчанию включён.
Подсветка стиков работает
Кольца подсветки вокруг стиков теперь управляются из GammaOS, как на устройствах, которые GammaOS поддерживает из коробки: выбор цвета (JoystickLedPicker), GammaOS Toolbox → RGB, Nano. Подсветка гаснет вместе с экраном и возвращается с ним.
У контроллера подсветки семь цветов (красный, зелёный, синий, жёлтый, голубой, пурпурный, белый), «бегущий огонь», дыхание и четыре уровня яркости. Произвольный цвет сводится к ближайшему из семи, а левым и правым стиком по отдельности управлять нельзя — так устроено железо. Эффекты GammaOS:
- E1 — разноцветные огни бегут по кругу (как в заводской прошивке, по умолчанию);
- E2 — плавный перелив по цветам;
- E3 — дыхание выбранным цветом;
- свой цвет — ровный выбранный цвет;
- «цвет по экрану» — подсветка следует за картинкой.
Яркость по умолчанию следует за яркостью экрана; в GammaOS Toolbox это можно выключить и задать ползунком.
Подсветке нужен новый загрузочный раздел (в нём включён порт контроллера), поэтому она заработает после обновления полным пакетом или записи образа карты.
Режим выхода HDMI
GammaOS Toolbox → External Display → HDMI output mode (в русском интерфейсе — «Режим выхода HDMI»). По умолчанию «Авто», как и раньше: режим, который предпочитает телевизор. В списке — режимы, которые телевизор сообщил сам, и всегда 640×480, 1024×768, 1280×720 и 1920×1080 при 60 Гц: их можно выбрать, даже если телевизор не прислал свой список. Режим меняется сразу, без переподключения кабеля.
Пригодится, если картинка на телевизоре выглядит слишком крупной или мыльной: например, 1280×720 совпадает с разрешением встроенного экрана.
HDMI сразу показывает весь экран. Force mirror mode (GammaOS Toolbox → External Display) теперь включён по умолчанию: раньше на телевизор уходило только активное приложение отдельным дисплеем, а встроенный экран всё равно гас — видеоконтроллер у устройства один. И вопрос «Mirror to external display?» при Force mirror mode или External as primary больше не задаётся. Раньше он рисовался на погасшем встроенном экране, и чтобы его увидеть, приходилось дважды нажимать выключатель. Кто выключал Force mirror сам — настройка сохранится. Всё про HDMI на этом устройстве — в 05-hdmi.md.
Разгон памяти до 928 МГц — одним скриптом
Необязательная правка загрузчика во внутренней памяти теперь ставится скриптом install-ddr928.sh прямо на устройстве, в Android или в Linux стоковой прошивки, без UART: он сам проверяет устройство и версию загрузчика, делает резервную копию и сверяет запись, умеет вернуть стоковые 798 МГц. Риски прежние — 04-частота-памяти.md.
Исправлена и ручная инструкция: прежде она записывала файл загрузчика целиком, а в его хвосте лежит хранилище vendor (серийный номер, MAC-адреса) того устройства, с которого он снят. Теперь в файле только загрузчик, а пишутся только его две копии. Если вы ставили разгон по старой инструкции, верните своё хранилище из резервной копии — команда в описании.
Звук по HDMI
Раньше при подключённом HDMI звук всё равно шёл из динамиков устройства. Теперь он идёт на телевизор, а при отключении кабеля возвращается в динамик. Исправлено сразу в четырёх местах: в дереве устройства был выключен блок, через который процессор отдаёт звук HDMI-мосту (да ещё и указан не на те выводы); Android не замечал подключения кабеля; мост терял настройку звука, когда включалась картинка; а заводской эквалайзер аудио-HAL Rockchip ронял звуковую службу при каждом подключении и отключении HDMI — он отключён. Эквалайзеры уровня Android, например GammaEQ, эт...
v1.4 — обновление по воздуху, загрузка с eMMC, Bluetooth не роняет ядро
GammaOS Next (LineageOS 21 / Android 14) для карманной консоли AISLPC RG52 Mini на Rockchip RK3562. Выкладывается полный образ SD-карты и — впервые — пакет обновления по воздуху.
| Архив | GammaOSCore-RG52Mini-20260928-2122.img.xz, 1,70 ГиБ |
| Пакет обновления | GammaOSCore-RG52Mini-20260928-2122-ota.zip, 1,62 ГиБ |
| sha256 архива | 353392ea1c29aad842bbcf6ec3cb9925def4c2962389b98b1752eadbd5b3f8c2 |
| sha256 образа | cba09f527d9b94ff59d32f3f83b3e0961b0f63824b8a278e203c5190f918bee2 |
| Ядро | Linux 5.10.226, kernel_rk3562_rg52mini |
| Загрузчик | u-boot-rk3562-rg52mini |
Что нового
Обновление по воздуху наконец работает. Если у вас v1.3 — карту вынимать не нужно: приложение обновлений само найдёт сборку, скачает и поставит, показывая ход записи на экране. Это первый выпуск, к которому приложен пакет: механизм чинился в v1.3, и получить его по воздуху устройства с v1.2 всё равно не смогли бы.
Bluetooth больше не роняет ядро. Драйвер AIC8800 освобождал буфер, который уже освободила hci_recv_frame() — та владеет им и на каждом своём пути ошибки освобождает сама. При выключении устройства это происходило пачками, по полторы-две сотни раз за одну остановку, разрушая списки памяти ядра; падало потом в стороне — в сетевом коде или прямо внутри распределителя. Та же строка есть во всех копиях этого драйвера, которые удалось найти, включая самые свежие.
Выбранный режим производительности переживает перезагрузку. Раньше он на каждой загрузке выбирался по источнику питания и перебивал выбранное вручную. Прежнее поведение осталось — снимите галку «Remember performance mode across reboots».
Перезагрузка в систему на внутренней памяти. Включите в GammaOS Toolbox «Allow reboot to eMMC», и в меню выключателя, сразу за «Restart», появится «Reboot to eMMC»: устройство поднимется не с карты, а с eMMC. Флаг одноразовый, обычная перезагрузка возвращает на карту. Пригодится тем, у кого на внутренней памяти стоит вторая система.
Swap Mode больше не затирает ручную настройку. Появился пункт «Custom»: если размеры заданы в Toolbox, меню это показывает и ничего не меняет. Раньше любое состояние округлялось до ближайшего режима, и первый же заход в меню его стирал.
Из апстрима. Яркость перестала сбрасываться к умолчанию на каждой загрузке, убраны две вспышки подсветки при старте, звук в эмуляторах запускается втрое быстрее.
Как поставить
С v1.3 — по воздуху. Приложение обновлений, кнопка проверки. Ход записи виден на экране, устройство перезагрузится само.
С нуля или с версий до v1.3 — записать образ на карту. Распакуйте архив или скормите его прямо программе записи: Balena Etcher и Raspberry Pi Imager читают .xz сами, WinRAR его тоже открывает. Карта от 8 ГБ. При первой загрузке userdata растягивается на всю карту — это две загрузки подряд.
Необязательно: память на 928 МГц
Штатные 798 МГц — настройка загрузчика, а не предел микросхем. На нашем экземпляре память устойчиво работает на 928 МГц: +13 % пропускной способности. В образе этого нет и быть не может — код инициализации памяти запускается с внутренней eMMC, а не с карты. Кто захочет — как это сделать, проверить и откатить.
Полное описание выпуска, с разбором решений и замерами: https://github.com/mamaich/GammaOSNext-RG52mini/blob/develop/doc/rg52mini/release-v1.4.md
v1.3 — ход прошивки на экране, подкачка в меню выключателя, старые игры
GammaOS Next (LineageOS 21 / Android 14) для карманной консоли AISLPC RG52 Mini на Rockchip RK3562. Выкладывается полный образ SD-карты: записал и загрузился, собирать ничего не нужно.
| Архив | GammaOSCore-RG52Mini-20260927-1906.img.xz, 1,70 ГиБ |
| sha256 архива | 76b8acfeeee39979295bebe7309ee1d253d9ad747c070f1b9e84dbdf773a0158 |
| sha256 образа | 68245097e27784b9f0a927ffa0b99b3b2195a8537b3acc55b70e08b2e0b94590 |
| Ядро | Linux 5.10.226, kernel_rk3562_rg52mini |
| Загрузчик | u-boot-rk3562-rg52mini |
Что нового
Во время обновления виден ход записи. Раньше экран гас на пять минут, и понять, работает устройство или зависло, было нельзя. Теперь прошивка забирает панель себе и рисует полосу, проценты и предупреждение не выключать питание.
Режим подкачки переключается из меню выключателя. Новый пункт «Swap Mode»: только zRAM (по умолчанию), zRAM с файлом подкачки, только файл, без подкачки вовсе. Если тяжёлая игра вылетает через пару минут — это первое место, куда стоит заглянуть. Заодно исправлено то, из-за чего настройки zRAM до сих пор вообще ни на что не влияли: система vendor поднимала его своим правилом позже нас и перекрывала выбранный размер.
Старые игры ставятся обычным установщиком. Android 14 отказывался ставить всё, что собрано под SDK ниже 23, причём сообщал о несовместимости с ТВ — что уводило в сторону от настоящей причины. Порог теперь задаётся конфигурацией устройства и снят: ретро-порты десятилетней давности ставятся из файлового менеджера, без adb и без ключей обхода.
Обновление по воздуху заработало, пакет придёт со следующим выпуском. Штатное приложение обновлений само находит сборку, скачивает и ставит её. К этому выпуску пакет намеренно не приложен: механизм чинился именно здесь, и устройства с v1.2 получить его по воздуху всё равно не смогли бы. Первый пакет выйдет с v1.4 — и вот его получат уже все, кто стоит на v1.3.
Мелочи. Убрана служба rkpdapp, будившая устройство по двенадцать раз в сутки впустую. В настройках снова листается список кнопками. Режим производительности выбирается при включении: от батареи — обычный, с зарядкой — максимальный. Мастер первой загрузки говорит, чем занят, вместо минутной паузы. Убраны падения ядра при перезапуске каркаса — система vendor лезла с mkswap в работающее устройство подкачки.
Как записать
- Распакуйте архив или скормите его прямо программе записи — Balena Etcher и Raspberry Pi Imager читают
.xzсами, WinRAR его тоже открывает. - Запишите на карту от 8 ГБ, вставьте в консоль и включите.
При первой загрузке userdata растягивается на всю карту — это две загрузки подряд, вмешательства не требуется. Обновление с прошлых версий — только перезаписью карты, данные при этом теряются.
Необязательно: память на 928 МГц
Штатные 798 МГц — настройка загрузчика, а не предел микросхем. На нашем экземпляре память устойчиво работает на 928 МГц: +13 % пропускной способности. В образе этого нет и быть не может — код инициализации памяти запускается с внутренней eMMC, а не с карты. Кто захочет — как это сделать, проверить и откатить.
Известные особенности
- Пакет обновления по воздуху к этому выпуску не приложен — см. выше, он выйдет с v1.4.
- Если подключить USB к выключенному устройству, u-boot показывает значок батареи и гасит экран. Это его режим зарядки, а не зависание: включается обычной кнопкой питания.
- SELinux в режиме permissive — осознанно, на устройстве включён root.
Полное описание выпуска, с разбором решений и замерами: https://github.com/mamaich/GammaOSNext-RG52mini/blob/develop/doc/rg52mini/release-v1.3.md