GUI frontend for moonlight-embedded, (currently) runs on webOS

Moonlight TV

Moonlight TV is a GUI front end for Moonlight GameStream Client. With some components from moonlight-embedded. It was originally designed for LG webOS TVs, but may support running in more devices in the future.

Features

  • Supports up to 4 controllers
  • Utilizes system hardware decoder to get best performance (webOS 3/4)
  • Easy to port to other OSes (Now runs on macOS, Linux, Raspberry Pi)

Screenshots

Launcher

Settings

In-game Overlay

Download

Download IPK from Latest release

Installation Guide

Compatibility Status

Gamepad Setup

Building for webOS

Follow instructions here

In order to build IPK package, you'll also need to have an additional package called jo installed.

Comments
  • [COMPAT] Noticable delay when using Xbox One Controller with 8bitdo wireless adapter v1 on LG C9

    [COMPAT] Noticable delay when using Xbox One Controller with 8bitdo wireless adapter v1 on LG C9

    Basic information

    • Device model: ( OLED66C9PLA )
    • Firmware version: ( 05.10.25 )
    • webOS version: ( 4.9.3 )
    • Moonlight version: ( 1.4.1)
    • Is audio working: ( Yes )
    • Is video working: ( 128060 )
    • Is input working: ( YES )

    Description

    Hello!

    After fixing my previous issue (#139), I now have my controller working.. but just when I ran moonlight on my Raspberry Pi, I can still notice a delay when using moonlight from my TV. This makes me believe this is not really a moonlight TV issue, but I still think it's worth an issue here!

    I would like to ask for assistance; how can I find out what is causing this delay and how can I improve it?

    Both my PC and TV are using an ethernet cable. I am using an xbox one controller with an 8bitdo wireless adapter.

    When i run a game like the binding of isaac/elden ring and move my character around in a circle, you can see that sometimes the circles are not completed; some inputs are missed or delayed.

  • [BUG] Cannot move mouse in remote desktop

    [BUG] Cannot move mouse in remote desktop

    Describe the bug

    When I use remote desktop wiki I cannot move the mouse on the host PC. Whenever I move the mouse all that happens is that the mouse in WebOS moves over the screen and the host PC's mouse is not moved.

    To Reproduce

    Steps to reproduce the behavior:

    1. Setup and enter remote desktop
    2. Try to move mouse

    Expected behavior

    The mouse on the remote desktop moves

    Basic information

    • Moonlight version: 1.4.1
    • Model: OLED65B8PUA
    • webOS version: 4.4.1
  • [BUG] raspiOs bullseye 64bit

    [BUG] raspiOs bullseye 64bit

    Describe the bug Hello! i'm trying to build moonlight-tv on my raspberry bullseye lite 64 bit, and by running the script ./scripts/raspi/easy_build.sh, got this error:

    ... some non error logs above ...
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    CMake Error at /usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:165 (message):
      Could NOT find BroadcomMMAL (missing: MMAL_CORE_LIBRARY MMAL_UTIL_LIBRARY
      MMAL_VC_CLIENT_LIBRARY)
    Call Stack (most recent call first):
      /usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:458 (_FPHSA_FAILURE_MESSAGE)
      cmake/FindBroadcomMMAL.cmake:38 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
      CMakeLists.txt:124 (find_package)
    
    
    -- Configuring incomplete, errors occurred!
    See also "/home/pi/moonlight-tv/build/CMakeFiles/CMakeOutput.log".
    See also "/home/pi/moonlight-tv/build/CMakeFiles/CMakeError.log".
    Start build
    gmake: *** Sem regra para processar o alvo 'moonlight' .  Pare.
    Build package
    CPack Error: CPack generator not specified
    

    To Reproduce

    Steps to reproduce the behavior:

    1. install latest raspiOs bullseye lite 64 bit on a pi4 machine
    2. git checkout v1.4.0
    3. run ./scripts/raspi/easy_build.sh

    Basic information

    • Moonlight TV version: 1.4.0
    • Model: pi4
    • raspiOS: bullseye-lite, 64-bit
  • [COMPAT] 8BitDo Adapter 2 only working in PSC & MD modes.

    [COMPAT] 8BitDo Adapter 2 only working in PSC & MD modes.

    • Device model: 55UK6090PUA
    • Firmware version: 05.45.04
    • webOS version: 4.4.1
    • Moonlight version: 1.4.0
    • Is audio working: Yes
    • Is video working: Yes
    • Is input working: No

    Out of the 6 manual pairing modes, I'm able to get some response from my controller in PSC mode (VIEW + DOWN) and in MD mode (VIEW + UP + LEFT). Both these which have unacceptable mappings for my xbox one controller, analog sticks not working, triggers acting as digital buttons, etc. In these two modes, I can partially navigate though moonlight tv menus and see it recognized in gamepad-tester.com streamed from my host machine. My tv is displaying correct looking HID and XPAD connection messages for all the modes. Also, the adapter was updated to the latest (1.01) firmware.

  • [COMPAT] LG OLED55B8LLA only working with one specific set of settings and allows no change, not even bitrate

    [COMPAT] LG OLED55B8LLA only working with one specific set of settings and allows no change, not even bitrate

    Basic information

    • Device model: (OLED55B8LLA)
    • Firmware version: (05.40.26)
    • webOS version: (4.4.0)
    • Moonlight version: (1.4.0)
    • Is audio working: (Yes)
    • Is video working: (Yes but Only 1080p 120hz)
    • Is input working: (Yes)

    Description

    I setup Moonlight TV for a friend on his TV and encountered a pretty bizarre issues. It will work only when set to a very specific set of setting which are these:

    Resolution: 1920x1080 Framerate: 120fps Bitrate: 35000 Video: NDL Audio: NDL

    These settings work every time but if the bitrate is set to 34000 for example Moonlight will try to connect, then show a black screen with the "Unstable Connection" info and then disconnect. Same if I try to set the FPS or resolution value to anything other than 1080p 120hz. Even going down to 30fps doesn't work. One time I managed to connect with 1080p 60hz 20000 bitrate but the connection only lasted for a few seconds before dropping again. 1080p 120hz 35000 was stable for an hour or more.

    If I change the video-decoder to SMP it also only connects with these specific values but shows a black screen. The overlay shows that the stream is connected but nothing but a black image is received even with HDR and h265 off. I know his webOS version is too old for SMP with h265 and SMP.

    Now 1080p 120hz would be enough for my friend but we ideally would like to drop down to 60fps as the Network FPS shows that it mostly just hovers around 78fps resulting in a pretty juddering experience even with 60fps games. The RTT latency was 1ms through the bank.

    It's just bizarre to me that we can't go anywhere lower from 1080p 120fps 35000.

    Specs of the host PC:

    CPU: Intel i7 6700 GPU: GeForce 1070 Ti (Driver version: 511.79) RAM: 16GB OS: Windows 11 Pro RTM

    Monitor 1: Connection: DisplayPort Resolution: 1440p Refresh Rate: 144hz G-Sync: Compatibility Mode enabled

    Monitor 2: Connection: DVI --> HDMI Resolution: 1080p Refresh Rate: 60hz G-Sync: No

    We already tried dropping and matching the resolution and refresh-rate of the monitor to match, disconnecting one or both monitors and rebooting all devices several times, Moonlight will still only work with these specific settings.

    Network Setup:

    PC -- (LAN) -- Router 1 -- Wall LAN Plug -- Router 2 -- (LAN) -- TV

    With Wall LAN Plug I mean actual LAN ports in his apartment walls not DLAN Powerline so effectively it's a straight wired connection between all devices.

    If I can provide any more information to solve this issue please let me know and I'll contact my friend.

    And of course thanks for the hard work making all this possible, it was a bit mindblowing seeing Moonlight running directly on the TV :) If we only could get 1080p 60 or 4k60 working it would be perfect.

  • [BUG] Controller registering twice when disconnected during play

    [BUG] Controller registering twice when disconnected during play

    Describe the bug

    Whenever my controller gets disconnected during play (loose cable) and it is plugged back in, it is registered as a second controller on my PC. This means that the game won't function with the controller anymore without restarting, because its set as a secondary controller even though the original should no longer exist or should be marked as the same controller.

    To Reproduce

    Steps to reproduce the behavior:

    1. Start a game
    2. Disconnect controller
    3. Reconnect controller
    4. Controller won't recognize

    Expected behavior

    I'd either expect the original controller to unregister so that any new controller is picked up as controller 1, or the reconnected controller resumes the previous session when reconnected.

    Basic information

    • Moonlight version: 1.3.0
    • Model: LGC1
    • webOS version 6.2.0-35
Lab2: using a physical embedded systems to interact with virtual embedded systems.
Lab2: using a physical embedded systems to interact with virtual embedded systems.

Lab2: dotDevice EmSys Autumn 2021 In this lab you will use your TinyPico to interact with a virtual embedded system. Current Virtual Lab URL: [http://

Oct 20, 2021
My computer graphics playground. Currently has a raytracer implemented with D3D11 compute shader.
My computer graphics playground. Currently has a raytracer implemented with D3D11 compute shader.

Graphics Playground I use this project as my "toy" engine. I'll be implementing various graphics projects in this repository. The code here is not sui

Aug 26, 2021
A set of open c++ game development tools that are lightweight, easy-to-integrate and free to use. Currently hosting a magicavoxel .vox full scene loader.
A set of open c++ game development tools that are lightweight, easy-to-integrate and free to use. Currently hosting a magicavoxel .vox full scene loader.

open game tools Open game tools is a set of unencumbered, free, lightweight, easy-to-integrate tools for use in game development. So far it contains:

Jun 15, 2022
A place to collaborate on code for the Embedded.fm book club. Currently reading "STM32 ARM Programming for Embedded Systems".

Welcome to the Book Club Code site! This is a place for the Embedded.fm book club to collaborate and learn together. Repo Structure Guide Top-level fo

Jan 13, 2022
Moonlight port for Nintendo Switch
Moonlight port for Nintendo Switch

Moonlight-Switch Moonlight-Switch is a port of Moonlight Game Streaming Project for Nintendo Switch. Thanks a lot to Rock88 and his Moonlight-NX, lots

Jun 13, 2022
An extremely hacky VNC server for WebOS - Works by reading directly from the GPU's framebuffer.
An extremely hacky VNC server for WebOS - Works by reading directly from the GPU's framebuffer.

webos-vncserver An extremely hacky VNC server for WebOS - Works by reading directly from the GPU's framebuffer. Requires root privileges.

Apr 7, 2022
hyperion.ng video grabber for webOS

hyperion-webos hyperion.ng grabber for webOS. This piece of software does high-framerate/low-latency capture of contents displayed directly on webOS T

Jun 12, 2022
Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports.
Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports.

libui: a portable GUI library for C This README is being written. Status It has come to my attention that I have not been particularly clear about how

Jun 19, 2022
This is a collection of widgets and utilities for the immediate mode GUI (imgui) that I am developing for the critic2 GUI
This is a collection of widgets and utilities for the immediate mode GUI (imgui) that I am developing for the critic2 GUI

ImGui Goodies This is a collection of widgets and utilities for the immediate mode GUI (imgui) that I am developing for the critic2 GUI. Currently, th

Jun 22, 2022
Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.

RetroArch RetroArch is the reference frontend for the libretro API. Popular examples of implementations for this API includes video game system emulat

Jun 22, 2022
Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.

RetroArch RetroArch is the reference frontend for the libretro API. Popular examples of implementations for this API includes video game system emulat

Jun 23, 2022
A Zig binding to the webview library. Make Zig applications with a nice HTML5 frontend a reality!
A Zig binding to the webview library. Make Zig applications with a nice HTML5 frontend a reality!

A Zig binding to the webview library. Make Zig applications with a nice HTML5 frontend a reality!

Jun 14, 2022
Provenance - An iOS & tvOS Frontend for Multiple Emulators
Provenance - An iOS & tvOS Frontend for Multiple Emulators

iOS & tvOS multi-emulator frontend, supporting various Atari, Bandai, NEC, Nintendo, Sega, SNK and Sony console systems…

Jun 20, 2022
A modern frontend for Neovim.
A modern frontend for Neovim.

A modern frontend for Neovim.

Jun 22, 2022
wwasm (Wgmlgz wasm) - is a c++ & reactjs liblary for connecting c++ backend and reactjs frontend.
wwasm (Wgmlgz wasm) - is a c++ & reactjs liblary for connecting c++ backend and reactjs frontend.

WWASM (Wgmlgz wasm) - is a c++ & reactjs liblary for connecting c++ backend and reactjs frontend.

Nov 23, 2021
NaiveCC: a compiler frontend for a subset of C
 NaiveCC: a compiler frontend for a subset of C

NaiveCC: a compiler frontend for a subset of C This is a toy compiler frontend for a subset of the C programming language based on the LR(1) parsing t

Nov 15, 2021
Writing a basic compiler frontend following LLVM's tutorial, with complete added supports Hindi and UTF-8 in general
Writing a basic compiler frontend following  LLVM's tutorial, with complete added supports Hindi and UTF-8 in general

सारस | SARAS Started with following LLVM's tutorial In development, a hobby project only JIT is broken right now, 'jit' branch par code hai uska Compi

May 1, 2022
Deluxe68 - A simple register allocator frontend for 68k assembly

Deluxe68 Deluxe68 is a simple (stupid) register allocator frontend for 68k assembly. It is a source to source translator, so you'll need your regular

Nov 4, 2021
A single header C++ wasm frontend library leveraging Emscripten
A single header C++ wasm frontend library leveraging Emscripten

Livid Livid is a single header C++ wasm frontend library leveraging Emscripten. Usage The code looks something like this: #include "livid/livid.hpp" #

Jun 22, 2022