No description
  • Python 89.6%
  • Java 4.9%
  • Shell 3.9%
  • C 0.8%
  • C++ 0.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-23 13:17:17 +03:00
.githooks Record Google TV port research, compatibility patches and RAM canary 2026-10-22 00:19:47 +03:00
docs Integrate signed NoOTA Settings and Xiaomi bridge into Android 14 images 2026-10-23 13:17:17 +03:00
tools Integrate signed NoOTA Settings and Xiaomi bridge into Android 14 images 2026-10-23 13:17:17 +03:00
work/port Move decoder and RAM boot packaging to bounded external storage 2026-10-23 11:49:46 +03:00
.gitattributes Assemble reproducible RAM-only software-crypto Google TV candidate 2026-10-22 07:46:49 +03:00
.gitignore Remove local artifact caches and enforce source-only storage 2026-10-22 10:45:09 +03:00
AGENTS.md Rebuild signed Android 14 base images in bounded host workspace 2026-10-23 12:46:08 +03:00
README.md Rebuild signed Android 14 base images in bounded host workspace 2026-10-23 12:46:08 +03:00

Xiaomi S55 Mini LED → Google TV

Cleanup2026-10-22: по запросу пользователя удалены все локальные бинарные inputs, образы, APK/JAR/toolchains и build/repro caches. Ниже сохранена история проверок, не перечень существующих файлов. В проекте только исходники и журналы Текстовые отчёты сохранены приватно в ../mitv-enhanced/diagnostics/artifact-cleanup-20261022 Для новой сборки нужен отдельно согласованный внешний каталог и лимит места Подготовка USB остановлена; полный RAM-носитель не подготовлен, ТВ не трогался

2026-10-23, fresh rebuild: реально собраны три текущих base images с Xiaomi VNDK30, NoOTA framework и тремя подписанными APEX Fresh readback4719entries/3646file hashes;164APK проверены на SDK34 Это ещё не R13/full working port: runtime/Settings/SELinux/hardware layers открыты Внешний workspace занимает9.36GiB из согласованных12GiB, не внутри Git

Цель — рабочий Google TV-порт на китайский Xiaomi MiTV-MFTR0 / freeguy Исследуем Android14 userspace TCL T653T01 V613 при сохранении Xiaomi kernel/vendor, панели/TCON/подсветки, HDMI, звука, Wi-Fi/BT и индивидуальных DRM-данных

Рабочий порт пока не получен На ТВ остаётся Xiaomi Android11 с ранее установленными Magisk и GMS core Android14 init/framework/Google TV UI ещё не загружались

Разработка строго RAM-only: не прошиваем разделы и не сохраняем изменения на ТВ Тестовые data/metadata тоже только в RAM; ограничения в work/port/ram-only-constraints.json Сейчас только host/static: пользователь запретил любые обращения к устройству work/port/device-access.json блокирует ADB/UART/boot/staging entrypoints Утром доступ автоматически не возобновляется: нужна новая явная команда пользователя

Текущее состояние

Базовый объединённый R12 RAM-кандидат сохраняет FS10/R11 software KeyMint/startup/OOBE и добавляет настоящий ARM32 linkerconfig как real inode в отдельном runtime APEX subtree, signed whole-APEX Xiaomi CEC slice и минимальный read-only policy delta с согласованным split fallback Handoff14images/146binds воспроизведён192/192files;73negativefixtures rejected Собран настоящий RAM-only boot container; Android14 на ТВ всё ещё не запускался Это не hardware Widevine L1 профиль: физические crypto/DRM providers исключены Ни device lock, ни default/native/carrier safety gates не открывались

Новый Settings-only R13 добавляет настоящий пункт Xiaomi display/audio/AFR в donor Google TV Settings, сохраняя NoOTA и permission/install screens. APK воспроизведён22/22files, отдельный полный readonly EROFS subtree —8/8files; это не проверка ART или интерфейса на ТВ Устранение нехватки раннего loop-слота вынесено в собственный tiny ARM32 LOOP_CTL_ADD16 helper, без storage attach/write Отдельно подготовлены native rollback fail-STOP и ручной runtime acceptance; они не включены автоматически в runnable profile и не закрывают native IO/TEE/RPMB safety Все компоненты пока host-only; аппаратный DRM/L1 и девять TCL HAL не решены Собран R13 packet и настоящий RAM boot: 201/201packetfiles reproducible, boot218CPIO/40negativefixtures PASS Loop16 implementation интегрирована, но live provisioning/boot не проверены

Дополнительно построен DERIVED linkerconfig reference с доказанными TCL thal effects. Новый static-common ARM32 build и runtime subtree включены в отдельный R12, не меняя frozen FS10/R11/defaults. Прежний dynamic standalone PIE сохранён как отдельный эксперимент Реальные границы CEC: whole-APEX + read policy All-domain IO guard отклонён для runnable profile: его direct-block denials ломают настоящий DM lifecycle, runtime safety не доказана Подробности новых компонентов: RAM KeyMint delivery, обе policy routes, early-keystore defect и startup addon Fresh user0/Gatekeeper и FRP activation проверены по actual donor DEX/config, без объявления runtime Binder/KeyMint/property state доказанным

Новые classpath startup checks разрешают 43actual PB fragments во все80selected JAR references без missing/duplicates Через genuine source derivation выбран и новый CEC DEX в system-server classpath Actual TCL APEX bootstrap при captured true вызывает flattened activation и затем OnBootstrap, в отличие от reference AOSP Игнорирование первого return закреплено: успешный общий exit не докажет mounts Actual OnStart/status ordering подтверждает activation call и staged activated → derive/ART/odsign → snapshotde → ready Native error path может вызвать rollback/reboot; его persistent IO safety открыта Текущий R12 UI continuity проверяет actual bytes 165OS/APEX APK:14Google originals сохранены, required-library misses0 В расширенной области найден ещё retained Xiaomi vendor resource APK с missing com.xiaomi.mitv.api; scan eligibility не доказана, общий runtime статус BLOCKED Узкий actual TCL PMS audit прослеживает named scan roots и OEM settings hook, но не выдаёт их за global non-installation proof Из166recursive APK только5проверены SDK34 заново,161использует exact-byte наследование прежнего manifest/signature proof, не fresh full verification

Последний собранный host-срез: filesystem-images-v613-r10-hdmi, 4717 entries/3640 independently checked files. В actual system_ext включены TCL TIF quarantine, disabled Xiaomi provider и настоящий fullscreen TvView viewer system/product сохранены через independent COW clones и полный readback Точный FS10 состав и воспроизведение Текущий объединённый host/RAM-комплект

Базовый FS9 UI audit:163 APK/163 packages,0 signature/manifest errors и 0 missing required Java libraries. Это прежний baseline для перечисленного incremental continuity, не свежая SDK34 проверка всех APK нового FS10 Его неизменённые inputs и границы сохранены отдельно Собран отдельный RAM handoff с новым retained namespace /mnt/product/tvmod Старый /mnt/.tvmod признан дефектным: donor vold выбирает его для unmount Ниже также сохранена история предшествующего frozen-r8; текущие inputs, границы проверок и команды собраны в новом host-кандидате

Последующие host-only этапы добавляют настоящий отключённый HDMI TvInputService, native AOSP14 VINTF/linkerconfig проверки и слинкованный ARM32 software KeyMint FS10 — новый host image candidate, но ещё не запущенная рабочая прошивка Native kernel compatibility проходит, но девять mandatory TCL HAL отсутствуют TCL linkerconfig содержит собственный thal, поэтому AOSP output только reference Подробности: native VINTF, compiled kernel policyvers, HDMI provider, early keystore, AOSP linkerconfig, TCL отличия

Software KeyMint действительно собран с official headers/AIDL/Bionic CRT, actual donor libraries и проверенными private ABI anchors; две независимые сборки побайтно совпали. Это не аппаратный KeyMint/Widevine и не проверенный на устройстве early-keystore profile: TEE/RPMB isolation и actual namespaces не закрыты Отдельный subtract-only SELinux эксперимент проходит настоящий strict AOSP14 compiler без удаления6772 assertions, но убирает потенциально функциональные permissions, поэтому не заменяет production policy-v6 Карантин TCL TIF persistent preload и обоих native RC включён в FS10, но не включает автоматически собственный HDMI provider Подробности: KeyMint build, strict policy experiment, TCL TV Input quarantine

Для собственного HDMI provider собран отдельный fullscreen TvView viewer: только реальные опубликованные own HDMI IDs, ручной выбор, zero permissions, без HOME replacement и без автоматического Arm. Он включён в FS10; 35 host contract tests и47-file independent APK repro прошли; видео на ТВ не проверено Viewer и его границы

Отдельный software-keystore RAM draft сохраняет genuine keystore2/odsign startup и убирает physical manifest/RC fallbacks, но намеренно непригоден к deployment. Existing Keymaster domain одновременно не допускает4AIDL registrations и разрешает raw TEE ioctls Поэтому executable не получает unsafe SELinux label, а draft не принят staging Новый отдельный SELinux domain experiment разрешает4AIDL registrations и запрещает364selected raw-device permission queries при неизменных old-type semantics. Новый optional R11 объединяет эти части в host-пакет, но не доказывает runtime crypto или аппаратную изоляцию

Google OOBE patch удаляет только два TCL setup hook filters по доказанным genuine Google no-hook branches. Google APK, provisioning и PartnerReceiver/resources не подменяются; product image не менялся Отдельный RAM handoff доставляет patched APK как один typed file bind Из-за63488B превышения старого payload area создан явно opt-in RAM-only boot layout с relocated byte-identical signed vbmeta. Footer меняется, boot hash остаётся INVALID: это не flash image, не boot success и не разрешение теста

  • Три donor image получены, CRC32 проверены, SHA256 зафиксированы, содержимое извлечено
  • Xiaomi ARM32/VNDK30/FCM5; donor ARM32, SDK34, EROFS system + ext4 system_ext/product
  • Найдено 9 отсутствующих TCL HAL; изучены клиенты, fallback paths и Xiaomi Java/HIDL API
  • Патч отключает TCL screen capture, который иначе ждёт отсутствующий screencontrol HAL
  • Настоящий Xiaomi VNDK30 включён в assembled tree, VNDK34 донора сохранён
  • Объединённая SELinux policy компилируется с реальными AOSP14 init flags Это не strict neverallow pass: актуальный отдельный аудит сохраняет381 конфликт
  • Собран отдельный RAM readonly loop-mount canary, vendor и Android14 handoff заблокированы
  • Первый RAM-canary прошёл 24 preboot gates и дошёл до Starting kernel UART-сессия потеряна во время capture; Linux/mount completion пока не подтверждён
  • Позднее четыре исходных image успешно смонтированы RO на работающем stock kernel Это отдельный прежний тест в private namespace, не Android14 boot и не проверка новых images
  • Google TV Home найден в donor image; дополнительно скачивать APKMirror не требуется
  • Реальный assembled tree: 4726 entries с authoritative Android metadata, а не Mac ownership
  • 84 точных TCL-platform APK переподписаны своим platform key; 80 других signer сохранены
  • Три APEX с nested APK и patched tcl-service.jar собраны, crypto/metadata/repro проверки прошли
  • Собраны три derived EROFS image с проверкой всех inode/xattrs/content, без прошивки
  • Settings OTA UI убран отдельно, обычные permission/install screens не менялись
  • В обязательном RAM-профиле удалены7 exact-pinned DSU/postinstall/dangling-preopt files
  • Fresh RAM data/metadata templates готовы, реализован fail-closed PID1 handoff в donor selinux_setup
  • До APEX разрешён только проверенный bootstrap ELF closure:37 файлов,0 unresolved DT_NEEDED
  • Реализованы readonly vendor app masks и enforcing verifier с fail-closed checks
  • Девять hardware inputs восстановлены из уже существующих локальных бэкапов Семь читаются RO; persist/tvcertificate используют отдельные RAM shadows
  • Добавлены72 RAM-only hardware replacements; physical mount/format shell routes заблокированы
  • Собран свой signed Hardware Bridge: реальные Android14 display modes/AFR/TvInput/audio API Xiaomi PQ/EDID/backend не эмулируются, аппаратные функции ещё не подтверждены
  • Policy v6:1724 valid contexts,0 permissive,37 effective AV probes,13 negative fixtures
  • Final-r8 EROFS:4712 entries/3638 files independently verified, vendor source не меняется
  • Убраны3 duplicate-base APK variants и4 stale compiled siblings Сохраняются stable NetworkStack14 и global/non-JP WebView/LiveTV, Google payload не меняется
  • Реальный dybridge gate ro.odm.feature.dybridge_enable закреплён false до init callers Property precedence/imports проверены отдельно, поздние источники блокируются
  • Все runtime/native/carrier gates по умолчанию BLOCKED; Android14 на ТВ не запускался

Подробности: журнал, совместимость, аппаратные hooks, RAM-схема аппаратный RAM-тест, OTA, изолированный handoff, assembled tree, platform signing, APEX integration, filesystem images, RAM storage, host-only lock, Settings без OTA, vendor APK isolation, RAM init handoff, port policy, RAM boot image, Hardware Bridge, VINTF gates, safe init graph, secure-codec port, package selection, Google TV UI payload native startup, vendor ELF ABI, read-only Xiaomi backend, его интеграция, secure allocator, реальные HWC modes/AFR, TCL HAL clients и границы adapters

Что хранится здесь

Исходники инструментов, текстовые патчи, обезличенные отчёты и инструкции Не публикуются donor APK/JAR/images, private дампы, UART/logcat, идентификаторы, DRM-сертификаты и ключи подписи Исходные device backups остаются в отдельно разрешённом приватном mitv_backups

dependencies/, diagnostics/ и Magisk runtime — локальные игнорируемые inputs В текущем workspace они подключены к существующим файлам mitv-enhanced, без дублирования гигабайт Эти symlinks не входят в Git; чистому checkout нужны соответствующие inputs по инструкциям аудита

Воспроизводимые этапы

  1. Получить совместимые donor images: tools/inspect_ota_remote.py, tools/fetch_ota_member.py, tools/decode_full_ota_blocks.py; источники и ограничения в docs/DONOR_RESEARCH.ru.md
  2. Подготовить официальный Magisk30.7 и его ARM32 static BusyBox по pinned hashes из tools/check_port_bootstrap.py, собственный stock boot передать через --stock-boot
  3. Выполнить python3 tools/check_port_bootstrap.py и python3 tools/build_port_smoke_boot.py --help
  4. Для SELinux host tool: sh tools/build_host_secilc.sh, затем команды из аудита совместимости
  5. tools/stage_google_tv_port.py создаёт только derived staging tree, не готовую прошивку В r3 включены screen-capture/APEX-mode/fuseblk patches и VNDK30 payload
  6. Полная host-сборка: tools/assemble_port_candidate.py, tools/resign_port_platform.py, tools/integrate_port_apexes.py, tools/patch_settings_update_ui.py, tools/build_port_filesystems.py; порядок и inputs описаны в связанных документах
  7. tools/build_ram_port_data.py создаёт только новые локальные sparse ext4 templates Успех host-сборки не разрешает запуск Android14 или изменение device-access policy
  8. tools/build_port_runtime_overlay.py, tools/build_port_policy.py и tools/build_xiaomi_hardware_bridge.py создают source-pinned overlays Повторяемый --extra-overlay у filesystem builder включает OS replacements/additions, оставляя vendor replacements только для RAM handoff tools/select_port_packages.py создаёт точный дополнительный7-file removal overlay После него tools/audit_port_ui.py проверяет actual final APK/APEX manifests/signatures
  9. tools/build_port_handoff.py связывает literal EROFS SAR, RO hardware images, RAM policy/helpers/data и original pinned USB KOs По умолчанию запрещает запуск, не связывается с TV и не создаёт разрешение на тест
  10. tools/build_port_handoff_boot.py создаёт настоящий RAM boot image из явно pinned handoff package; tools/check_port_handoff_boot.py независимо проверяет boot header/kernel/DTB/CPIO/integrity и16 negative fixtures Копирование stock signed AVB metadata не делает изменённый boot аутентичным

Старый tools/stage_port_smoke_files.py заблокирован: он писал в userdata и не соответствует нынешнему RAM-only ограничению, даже если тот же каталог использовался раньше с разрешения

Никогда не запускайте recovery installer TCL на Xiaomi и не считайте canary успешным портом Не relock с изменённым boot; аппаратные разделы и saved bootcmd не являются местом для экспериментов