Skip to content

Releases

Moonlight TCL 30.1.9

Choose a tag to compare

@pabragin pabragin released this 08 Nov 15:40

Moonlight TCL — for TCL Google TVs running Android 14 firmware (C8K, C6K, QM6K, QM8K and similar). Background: moonlight-stream/moonlight-android#1533. Requires Android 14 (minSdk 34).

30.1.9: keyboard layout, pairing name, streaming core

  • On-screen keyboard types what is on the keycap whatever layout the PC is in. Latin letters, digits and punctuation used to go as key presses, so with a Russian layout on the PC "q" typed "й". They now go as text; with Ctrl or Alt held they are still key presses, so shortcuts like Ctrl+C work. Esc, Tab, Enter, arrows and F-keys are unchanged.
  • Pairing uses the TV's own name from Android settings (Settings → System → About → Device name), so Sunshine and Apollo list the client as, for example, "Smart TV Pro 2" instead of a model code. Already paired PCs keep the old name until you pair again.
  • moonlight-common-c picks up 11 more upstream commits: replay detection on the RTSP and control streams, control messages larger than 64 KB, stricter STUN response checks, no ENet back-pressure on large payloads, and ENet disconnects with short headers handled correctly.
  • Server web UI shows an error when the paired certificate can't be read, instead of silently doing nothing.
  • Dialogs: leaving the stream or a launcher shortcut no longer closes a dialog that another screen is still showing.
  • Translations: the web UI sign-in and certificate messages are translated into all 32 languages.

Installs as an update over 30.1.8 and earlier Moonlight TCL builds (versionCode 300109).


Moonlight TCL 30.1.9: экранная клавиатура печатает символ с клавиши при любой раскладке на ПК (раньше при русской раскладке «q» превращалась в «й»), с Ctrl или Alt клавиши по-прежнему работают как сочетания. При сопряжении ПК видит имя телевизора из настроек Android вместо кода модели (у уже сопряжённых ПК имя сменится после повторного сопряжения). В ядро стриминга добавлены 11 исправлений из upstream: защита от повторов пакетов, большие управляющие сообщения, проверки STUN, обработка отключений ENet. Веб-интерфейс сервера показывает ошибку вместо молчания, если сертификат сопряжения не читается; диалоги одного экрана больше не закрываются при выходе из другого; переводы дополнены во всех языках. Ставится обновлением поверх 30.1.8.

Moonlight TCL 30.1.8

Choose a tag to compare

@pabragin pabragin released this 27 Oct 18:01

Moonlight TCL — for TCL Google TVs running Android 14 firmware (C8K, C6K, QM6K, QM8K and similar). Background: moonlight-stream/moonlight-android#1533. Requires Android 14 (minSdk 34).

30.1.8: streaming core fixes from upstream

  • moonlight-common-c catches up with upstream: a use-after-free of queued gamepad packets, uninitialized data in the ping packet, a memory leak and many spec fixes in the RTSP parser, control-stream encryption without an extra copy, mouse movement that no longer starves during fast input, pen batching fixes, ENet disconnects handled only when they are addressed to us.
  • Typed text (on-screen keyboard, dictation) now travels on the keyboard channel, so it can't race with key presses sent at the same moment.
  • Apollo commands on old GameStream hosts: a missing entry shifted the server command, clipboard and file-transfer slots in the older packet tables. Sunshine and Apollo were not affected.
  • Print Screen on a USB keyboard reaches the PC (it was sent as an invalid key code). Upstream PR #1618.
  • PowerA wired Xbox pads over USB no longer report Guide held down, which put Steam into its Guide chord layout. Upstream PR #1621.
  • Server web UI (PC menu → Open server settings) accepts only the certificate the PC was paired with. Before, any certificate for the PC's address was accepted, so someone on your network able to intercept traffic could show a fake Sunshine login. A PC that isn't paired yet is checked by address only, as before, since its web UI is where you type the PIN. Reported by yuliwilliam/moonlight-tcl.
  • moonlight-tcl:// links open the app (moonlight-tcl://open) or start a stream (moonlight-tcl://stream?host=<PC name>&app=<app name>) from Home Assistant's Android TV Remote or anything else that starts apps on the TV; see the README. From yuliwilliam/moonlight-tcl.
  • An error for a missing PC or app after a launcher shortcut or link no longer vanishes and leaves an empty screen when Moonlight was already open.

Installs as an update over 30.1.7 and earlier Moonlight TCL builds (versionCode 300108).


Moonlight TCL 30.1.8: ядро стриминга (moonlight-common-c) обновлено до свежего upstream: исправлены use-after-free пакетов геймпада, неинициализированные данные в ping-пакете, утечка и разбор RTSP, пакетная отправка мыши и пера. Набранный текст (экранная клавиатура, диктовка) идёт по каналу клавиатуры и не перемешивается с нажатиями. Print Screen на USB-клавиатуре доходит до ПК, проводные геймпады PowerA больше не «держат» кнопку Guide. Веб-интерфейс сервера принимает только сертификат сопряжённого ПК. Ссылки moonlight-tcl://open и moonlight-tcl://stream?host=…&app=… запускают приложение или стрим из Home Assistant (см. README). Ставится обновлением поверх 30.1.7.

Moonlight TCL 30.1.7

Choose a tag to compare

@pabragin pabragin released this 27 Oct 16:19

Moonlight TCL — for TCL Google TVs running Android 14 firmware (C8K, C6K, QM6K, QM8K and similar). Background: moonlight-stream/moonlight-android#1533. Requires Android 14 (minSdk 34).

30.1.7: Back on the IR remote opens the stream menu again

  • Back during a stream now works from the remote in IR mode, as it does over Bluetooth. Recent T653T01 firmware (V667, V669) adds an internal virtual-search input device that claims to be a gamepad. Moonlight then took Back from the TV's IR receiver for a gamepad button and sent it to the PC, so the stream menu never opened. Verified on a C7K with V669. Thanks @AntonisKoutsouras (#7).

30.1.6 in short: rumble for the 8BitDo Ultimate 2.4G over Bluetooth (#5); controller information shows Bluetooth HID rumble support, in every app language (#6).

Installs as an update over 30.1.6 and earlier Moonlight TCL builds (versionCode 300107).


Moonlight TCL 30.1.7: кнопка «Назад» на пульте в ИК-режиме снова открывает меню стрима. Свежие прошивки T653T01 (V667, V669) добавляют служебное устройство virtual-search, которое объявляет себя геймпадом, и Moonlight отправлял «Назад» с ИК-приёмника на ПК как кнопку геймпада. По Bluetooth пульт работал и раньше. Спасибо @AntonisKoutsouras. Ставится обновлением поверх 30.1.6.

Moonlight TCL 30.1.6

Choose a tag to compare

@pabragin pabragin released this 27 Oct 08:13

Moonlight TCL — for TCL Google TVs running Android 14 firmware (C8K, C6K, QM6K, QM8K and similar). Background: moonlight-stream/moonlight-android#1533. Requires Android 14 (minSdk 34).

30.1.6: rumble for the 8BitDo Ultimate 2.4G over Bluetooth

  • 8BitDo Ultimate 2.4G (2dc8:3012, D-mode Bluetooth) now rumbles: both motors with independent strength. It uses its own output report, not the one of the other 8BitDo pads. Verified on a TCL C7K with controller firmware 2.04. Thanks @AntonisKoutsouras (#5).
  • Controller information (Settings → Advanced) shows Supported over Bluetooth HID (<format>) for pads that rumble through the app's Bluetooth path, instead of "Not Supported" from Android's own vibrator check, in every app language (#6).

Installs as an update over 30.1.5 and earlier Moonlight TCL builds (versionCode 300106).


Moonlight TCL 30.1.6: вибрация для 8BitDo Ultimate 2.4G по Bluetooth (режим D, оба мотора, проверено на C7K, спасибо @AntonisKoutsouras). Экран «Информация о контроллерах» теперь показывает поддержку вибрации через Bluetooth HID вместо «Не поддерживается» (на всех языках приложения). Ставится обновлением поверх 30.1.5.

Moonlight TCL 30.1.5

Choose a tag to compare

@pabragin pabragin released this 13 Oct 20:59

Moonlight TCL — for TCL Google TVs running Android 14 firmware (C8K, C6K, QM6K, QM8K and similar). Background: moonlight-stream/moonlight-android#1533. Requires Android 14 (minSdk 34).

30.1.5: the freeze is fixed in TV firmware, the second layer only where it isn't

The whole-TV freeze when you leave the stream or open a menu over it is a bug in MediaTek's display composer. Comparing the firmware images shows where TCL fixed it:

Platform Models Fixed in
T653T01 / 0012T01 C6K, C7K, C8K, X11K, C955 and similar V655
T653T02 / 0012T02 QM8K, QM7K, Q77K, QM6K, 2024 QM8/QM7 (North America) V339

Keep a second layer above the video (Settings → Advanced) is now on by default only below those versions, and off on fixed firmware, where it would only slow the picture down. If you already changed the switch yourself, your choice stays. Updating the TV firmware is the better fix: check yours in the TV's own settings (not Moonlight's): Settings → System → About → Software version. #1

The README explains the cause.

Installs as an update over 30.1.4 and earlier Moonlight TCL builds (versionCode 300105).


Moonlight TCL 30.1.5: зависание всего телевизора при выходе из стрима или при меню поверх видео — ошибка композитора MediaTek в прошивке; по сравнению образов TCL исправила его в V655 (T653T01: C6K, C7K, C8K, X11K) и V339 (0012T02: QM8K, QM7K, Q77K, QM6K). «Второй слой поверх видео» теперь включён по умолчанию только на прошивках старше этих версий; на исправленных он выключен. Если вы уже меняли переключатель вручную, ваш выбор сохраняется. Лучшее решение — обновить прошивку телевизора. Ставится обновлением поверх 30.1.4.

Moonlight TCL 30.1.4

Choose a tag to compare

@pabragin pabragin released this 13 Oct 20:31

Moonlight TCL — for TCL Google TVs running Android 14 firmware (C8K, C6K, QM6K, QM8K and similar). Background: moonlight-stream/moonlight-android#1533. Requires Android 14 (minSdk 34).

30.1.4: second layer on by default for older firmware

Keep a second layer above the video (Settings → Advanced) is now also on by default on TCL's global firmware branch (T653T01 / 0012T01: C6K, C7K, C8K, X11K, C955 and similar) before V655, for example V604, V622, V624, V643. Those versions freeze the TV when you leave the stream or open a menu over it. #1

It stays on by default on the North American branch (0012T02: QM8K, QM7K, Q77K, QM6K) as in 30.0.2. On V655 and newer it stays off. If you already changed the switch yourself, your choice stays.

To check your firmware, open the TV's own settings (not Moonlight's): Settings → System → About → Software version.

Installs as an update over 30.0.2 and earlier Moonlight TCL builds (versionCode 300104).


Moonlight TCL 30.1.4: «Второй слой поверх видео» («Настройки → Дополнительно») теперь включён по умолчанию и на глобальной ветке прошивок TCL (T653T01 / 0012T01: C6K, C7K, C8K, X11K и похожие) с версиями до V655 (V604, V622, V624, V643), на которых телевизор зависает при выходе из стрима. На североамериканской ветке (0012T02) он включён, как и в 30.0.2; на V655 и новее остаётся выключенным. Если вы уже меняли переключатель вручную, ваш выбор сохраняется. Ставится обновлением поверх 30.0.2.

Moonlight TCL 30.0.2

Choose a tag to compare

@pabragin pabragin released this 13 Oct 18:07

Moonlight TCL — for TCL Google TVs running Android 14 firmware (C8K, C6K, QM6K, QM8K and similar). Background: moonlight-stream/moonlight-android#1533. Requires Android 14 (minSdk 34).

30.0.2: defaults that follow your TV's firmware

The two switches from 30.0.1 (Settings → Advanced) now pick their default from the TV's firmware. If you already changed a switch yourself, your choice stays.

  • Keep a second layer above the video is on by default on TCL's North American firmware branch (0012T02: QM8K, QM7K, Q77K, QM6K, 2024 QM8/QM7). That branch doesn't have the exit-freeze fix other TCL firmware got. #1
  • TV game mode is off by default on TCL TVs with the Realtek G15 platform (0016T01: some C6K, P8K, P8L, A400M) running firmware older than V048.000462, which corrupts video above 1080p in game mode. #2

Everywhere else nothing changes. To check your firmware, open the TV's own settings (not Moonlight's): Settings → System → About → Software version.

Installs as an update over 30.0.1 and earlier Moonlight TCL builds (versionCode 300103).


Moonlight TCL 30.0.2: переключатели из 30.0.1 («Настройки → Дополнительно») теперь выбирают значение по умолчанию по прошивке телевизора; если вы уже меняли их вручную, ваш выбор сохраняется. «Второй слой поверх видео» включён по умолчанию на североамериканской ветке прошивок TCL (0012T02: QM8K, QM7K, Q77K, QM6K), где нет исправления зависаний при выходе. «Игровой режим телевизора» выключен по умолчанию на TCL с платформой Realtek G15 (0016T01) и прошивкой старше V048.000462, где он портит видео выше 1080p. На остальных телевизорах ничего не меняется. Ставится обновлением поверх 30.0.1.

Moonlight TCL 30.0.1

Choose a tag to compare

@pabragin pabragin released this 10 Oct 03:02

Moonlight TCL — for TCL Google TVs running Android 14 firmware (C8K, C6K, QM6K, QM8K and similar). Background: moonlight-stream/moonlight-android#1533. Requires Android 14 (minSdk 34).

30.0.1: two switches for TV firmware problems

Both are in Settings → Advanced.

  • TV game mode (recommended), on by default. The stream asks the TV for minimal picture processing. Turn it off if video above 1080p is corrupted (wrong crop, shifted image, green and blue bands at 4K): this happens on TCL TVs with a Realtek SoC, such as the Brazilian C6K. #2
  • Keep a second layer above the video (only if the TV freezes), off by default. A tiny transparent surface stays above the video, and on exit the video is removed before the stream screen closes. For TVs that freeze or go black when you leave the stream. The picture gets slower. #1

Installs as an update over 30 and earlier Moonlight TCL builds (versionCode 300102).


Moonlight TCL 30.0.1: два переключателя для проблем прошивки телевизора, оба в «Настройки → Дополнительно». «Игровой режим телевизора (рекомендуется)» включён по умолчанию: стрим просит телевизор минимально обрабатывать картинку; выключите его, если видео выше 1080p искажено (так бывает на TCL с процессором Realtek, например бразильском C6K). «Второй слой поверх видео (только при зависаниях)» выключен по умолчанию: над видео держится крошечная прозрачная поверхность, а при выходе видео убирается до закрытия экрана стрима; для телевизоров, которые зависают или гаснут при выходе из стрима; картинка при этом медленнее. Ставится обновлением поверх 30.

Moonlight TCL 30

Choose a tag to compare

@pabragin pabragin released this 05 Oct 11:02

Moonlight TCL — for TCL Google TVs running Android 14 firmware (C8K, C6K, QM6K, QM8K and similar). Background: moonlight-stream/moonlight-android#1533. Requires Android 14 (minSdk 34).

30: a new interface for the TV, an on-screen keyboard, 32 languages

Version numbers start over from a round 30: one number per release, no suffixes.

  • One screen instead of two. The PCs are chips in the header with a status dot, the selected PC's apps are posters below. Pairing, Wake-on-LAN, hidden apps, details and deletion sit in a dark action panel (Menu, or Y on the pad).
  • Settings in two panes: categories on the left, rows on the right, every row the same shape with its control in one column. Left and Back return to the categories, OK flips a switch or opens the chooser or the slider; switches and values animate. 45 options in seven categories (85 in ten before). Codec, "Show 90 and 120", full range video moved to Video; low-latency audio and host audio to Audio.
  • On-screen keyboard with dictation (Game menu → On-screen keyboard): Latin and Cyrillic pages, Shift/Ctrl/Alt/Win, a page of special keys. D-pad or left stick moves, A types, X deletes, Y is space, the bumpers switch pages, Select or the mic button dictates through the TV's own speech recognizer (microphone permission asked once). Latin letters go as key presses and follow the PC's layout, Cyrillic goes as text.
  • Game menu reordered: Quit session, Disconnect, On-screen keyboard and Statistics first.
  • 32 languages, every translation complete, right-to-left layouts for Arabic, Hebrew and Persian. The app follows the TV's language or the per-app language chosen in Android settings.
  • Fixes: the profile pill and the PC name no longer blink at every poll; the app grid comes back to the last app after a trip to the header; Back in settings steps to the categories instead of closing the screen; "Go to Server Config" now really opens the Sunshine/Apollo web UI in the in-app browser: the PC's own certificate is accepted, the login is asked for, and Back closes the page (the web UI's single-page history used to swallow it).
  • Leaner: no AndroidX, Material or OkHttp, framework widgets only, the host is reached through HttpsURLConnection. APK 2.1 MB with all languages (2.7 MB in tcl6).

Installs as an update over any earlier Moonlight TCL build on Android 14 (versionCode 300). Stack traces from this build can be read with out/mapping-30.txt in the repository's release workflow.


Moonlight TCL 30: новый интерфейс для телевизора, экранная клавиатура, 32 языка. Нумерация версий начинается заново с круглой 30, одно число на релиз, без дописок. Один экран вместо двух: компьютеры чипами в шапке с точкой статуса, приложения выбранного ПК постерами ниже, сопряжение, Wake-on-LAN, скрытые приложения и удаление в тёмной панели действий (Menu или Y на геймпаде). Настройки в две панели: категории слева, строки справа, у каждой строки одна форма и одна колонка управления; «влево» и «назад» возвращают к категориям, OK переключает или открывает список и ползунок, переключатели и значения анимированы; 45 пунктов в семи категориях вместо 85 в десяти, кодек, «Показывать 90 и 120» и полный диапазон перенесены в «Видео», звук с низкой задержкой и «Звук и на ПК» в «Звук». Экранная клавиатура с голосовым набором через распознавание речи телевизора: латиница и кириллица, Shift/Ctrl/Alt/Win, спецклавиши, управление крестовиной или стиком. В меню игры первыми идут «Завершить сессию», «Отключиться», клавиатура и статистика. Интерфейс полностью переведён на 32 языка, для арабского, иврита и фарси раскладка справа налево. Исправлено мигание профиля и имени ПК на главном экране, прыжок курсора на крайнее приложение после шапки, BACK в настройках, закрывавший весь экран, и пункт «Открыть настройки сервера»: веб-интерфейс Sunshine/Apollo теперь действительно открывается во встроенном браузере, сертификат ПК принимается, запрашивается логин, а «назад» закрывает страницу. Без AndroidX и OkHttp, APK 2,1 МБ со всеми языками.

Moonlight TCL 20.2.10-tcl6

Choose a tag to compare

@pabragin pabragin released this 30 Sep 21:03

Moonlight TCL — for TCL Google TVs running Android 14 firmware (C8K, C6K, QM6K, QM8K and similar). Background: moonlight-stream/moonlight-android#1533. Requires Android 14 (minSdk 34).

20.2.10-tcl6: three frame-loss fixes from upstream moonlight-common-c

Nothing changes in a stream without packet loss. When packets do go missing, the stream now recovers the way upstream Moonlight does since September 2026:

  • No speculative loss reports while reference-frame invalidation is off. The client used to report a frame as lost as soon as the FEC arithmetic said it could not be recovered, which started an IDR wait without ever asking the host for the IDR frame; if the frame then arrived after all, up to 120 consecutive frames were dropped (moonlight-common-c #147). Now a loss is only reported when RFI is on and the host can act on it.
  • A partially dropped IDR frame is handled correctly instead of confusing the depacketizer.
  • RFI after a multi-block frame loss invalidates the right frames again.

Everything else is 20.2.10-tcl5: gamepad cards over the stream (connect, low battery, charger), the charge strip on the PC and app lists, the compact in-game menu and dialogs.

Installs as an update over any earlier Moonlight TCL build on Android 14. Stack traces from this build can be read with out/mapping-20.2.10-tcl6.txt in the repository's release workflow.


Moonlight TCL 20.2.10-tcl6: три исправления потерь кадров из апстримного moonlight-common-c. В стриме без потерь пакетов ничего не меняется; при потерях восстановление теперь идёт так же, как в основном Moonlight с сентября 2026. Клиент больше не объявляет кадр потерянным заранее, пока выключена инвалидация опорных кадров: раньше это запускало ожидание IDR-кадра без запроса его у хоста, и если кадр всё-таки доходил, отбрасывалось до 120 кадров подряд (moonlight-common-c #147). Частично потерянный IDR-кадр обрабатывается корректно, инвалидация после потери нескольких блоков кадра снова указывает на нужные кадры. Остальное как в 20.2.10-tcl5: карточки геймпадов в стриме, полоска заряда в списках ПК и приложений, компактное меню и диалоги.