Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
a1017cb
fix(media): correct Cedar frame submission and initialization cleanup
Producdevity Sep 20, 2026
7e6ceac
refactor(input): share controller sampling between streaming services
Producdevity Sep 20, 2026
4bc42d8
fix(auth): honor device-code expiry and polling intervals
Producdevity Sep 20, 2026
552c54f
feat(gfn): add native GeForce NOW streaming
Producdevity Sep 20, 2026
790dd1c
fix(build): package Cedar from the installed library directory
Producdevity Sep 20, 2026
9c18f39
fix(ci): declare native SDL dependencies for host tests
Producdevity Sep 22, 2026
b33fc91
fix(gfn): retain ICE candidates received before the offer
Producdevity Sep 22, 2026
f9b59d7
fix(gfn): reject invalid token lifetimes
Producdevity Sep 22, 2026
89b0b91
fix(gfn): honor cancellation during session discovery
Producdevity Sep 22, 2026
01fff5a
fix(input): preserve Guide combinations and Escape cancellation
Producdevity Sep 22, 2026
3700a77
refactor(session): share UUID generation between providers
Producdevity Sep 22, 2026
185f248
docs: clarify streaming requirements and dArkOS support
Producdevity Sep 22, 2026
3724080
fix(build): isolate target pkg-config dependencies
Producdevity Sep 22, 2026
f5a176b
fix(gfn): route ICE candidates by SDP media index
Producdevity Sep 22, 2026
455f4b5
chore(build): clarify prerequisites and test failures
Producdevity Sep 22, 2026
3605740
fix(build): apply FFmpeg patch series in order
Producdevity Oct 10, 2026
a8dcbc2
fix(build): avoid unsupported ARM64 atomic helpers
Producdevity Oct 10, 2026
5a38821
fix(http): send bodies with PUT and PATCH requests
Producdevity Oct 10, 2026
a0f96d2
feat(gfn): play Free-tier ads natively
Producdevity Oct 10, 2026
7d59a06
fix(gfn): tolerate optional ad control metadata
Producdevity Oct 16, 2026
07d971d
fix(gfn): keep ad downloads off environment proxies
Producdevity Oct 16, 2026
06107fe
fix(gfn): expand optional VAST macros without rejecting ads
Producdevity Oct 16, 2026
1f08b93
fix(gfn): restore audio state and track each ad independently
Producdevity Oct 16, 2026
a8b5338
fix(gfn): handle live ad artwork and reporting failures
Producdevity Oct 16, 2026
6e1146e
fix(gfn): preserve cancellation during ad cleanup
Producdevity Oct 17, 2026
9320451
docs(test): include the AdChoices image fixture
Producdevity Oct 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install host test dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends binutils libcurl4-openssl-dev libexpat1-dev libsdl2-dev pkg-config
- run: tools/bootstrap.sh
- run: tools/zig.sh build fmt-check
- run: tools/zig.sh build test
Expand Down
67 changes: 44 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@

<img width="640" height="480" alt="GreenOvercast game library" src="packaging/portmaster/greenovercast/screenshot.png" />

GreenOvercast is a native Xbox Cloud Gaming client for small ARM64 Linux
handhelds. It requests a stream matching the device display and uses hardware
video decoding on supported H700 and Rockchip firmware.
GreenOvercast is a native Xbox Cloud Gaming and GeForce NOW client for small
ARM64 Linux handhelds, with hardware video decoding on supported H700 and
Rockchip firmware.

This independent project is not affiliated with or endorsed by Microsoft.
This independent project is not affiliated with Microsoft or NVIDIA.

Requires an [Xbox Game Pass plan](https://www.xbox.com/cloud-gaming) that includes cloud gaming and internet access.
You need internet access and an account for your chosen service:

- Xbox: an [Xbox Game Pass plan](https://www.xbox.com/cloud-gaming) that includes cloud gaming.
- [GeForce NOW](https://www.nvidia.com/en-us/geforce-now/): a membership and access to the games you want to play.

## Install

Expand All @@ -19,9 +22,9 @@ the [PortMaster FAQ](https://portmaster.games/faq.html#do-i-have-to-use-portmast
When the installation finishes, return to the device frontend and launch
GreenOvercast from Ports.

The first launch shows a Microsoft device code. Open
[microsoft.com/link](https://www.microsoft.com/link) on another device and enter
the code to sign in.
Choose Xbox or GeForce NOW, then open the sign-in link shown on screen on
another device and enter the code. Your login is saved. You can switch services
from Settings without closing the app.

GreenOvercast is experimental.

Expand All @@ -44,28 +47,46 @@ GreenOvercast is experimental.
Settings include Xbox/Nintendo face-button layouts, game artwork, and Sign
out. Games that return a 16:9 stream remain letterboxed on 4:3 displays.

GeForce NOW uses the same gamepad controls. For store dialogs and game
launchers, press Select + Y to toggle mouse mode: D-pad or left stick moves the
pointer, A clicks, B right-clicks, and L1 / R1 scroll. Store sign-in may still be
required inside the stream.

GeForce NOW Free sessions may show ads before the game. Start opens ad information
when an icon is shown; B returns to the ad or cancels playback.

## Supported devices

| Device | OS | Status |
| ---------- | ------------------------------- | ------ |
| RG35XX-H | muOS 2508.4 | Tested |
| RG40XX-H | Knulli (Batocera 42) | Tested |
| RG40XX-H | ROCKNIX 20260801 | Tested |
| Miyoo Flip | SpruceOS 4.2.0 | Tested |
| R36S | AmberELEC prerelease-20250515 | Tested |

Hardware decoding is verified on the H700 systems above. muOS and Knulli use
CedarX; ROCKNIX 20260801 uses the bundled Cedrus modules. Tested Rockchip builds
use Rockchip MPP on RK3566 with SpruceOS and RK3326 with AmberELEC. Other
| Device | SoC | OS | Status |
| ---------- | --------------- | ----------------------------- | ------ |
| RG35XX-H | Allwinner H700 | muOS 2508.4 | Tested |
| RG40XX-H | Allwinner H700 | Knulli (Batocera 42) | Tested |
| RG40XX-H | Allwinner H700 | ROCKNIX 20260801 | Tested |
| Miyoo Flip | Rockchip RK3566 | SpruceOS 4.3.3 | Tested |
| R36S | Rockchip RK3326 | AmberELEC prerelease-20250515 | Tested |

Hardware decoding is verified on the configurations above. H700 uses CedarX on
muOS and Knulli, and Cedrus on ROCKNIX. RK3566 and RK3326 use Rockchip MPP. Other
devices fall back to software decoding, which is too slow for normal gameplay.

The release requires glibc 2.38 or newer. ArkOS ships glibc 2.30 and is not
supported.
GeForce NOW playback has been tested on muOS, Knulli, SpruceOS, and the R36S
running dArkOS 02012026. R36S frame pacing still needs work. The ROCKNIX and
Comment thread
cubic-dev-ai[bot] marked this conversation as resolved.
AmberELEC rows above currently cover Xbox playback.

The release requires glibc 2.38 or newer. ArkOS (glibc 2.30) is not supported;
the tested dArkOS fork uses glibc 2.41.

## Build

You need a Linux or macOS host with `cmake`, `curl`, `git`, `make`, `patch`,
`perl`, and `python3`.
You need a Linux or macOS host with CMake 3.24+, `curl`, `git`, `make`, `patch`,
`perl`, `pkg-config`, `python3`, and `tar`.

Build validation also needs `llvm-readelf` or GNU `readelf` (`binutils` on
Debian/Ubuntu, or `llvm` with its `bin` directory on `PATH` on macOS).

Host tests also need SDL2, curl and Expat development files: install
`libsdl2-dev libcurl4-openssl-dev libexpat1-dev pkg-config` on Debian/Ubuntu or
`sdl2 curl expat pkg-config` with Homebrew.

```sh
tools/bootstrap.sh
Expand Down
9 changes: 7 additions & 2 deletions THIRDPARTY.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,14 @@ release. Full license texts for the bundled libraries ship alongside the port in
| [CedarX](https://github.com/allwinner-zh/media-codec) (Allwinner H.264 decoder) | LGPLv2.1-or-later | Hardware H.264 decode (shared) |
| [Linux Cedrus](https://www.kernel.org/) (7.0.11) | GPL-2.0-only | ROCKNIX H700 V4L2 Request decoder modules |
| [Rockchip MPP](https://github.com/rockchip-linux/mpp) (v1.1.0) | Apache-2.0/MIT | Optional Rockchip H.264 decode (shared) |
| [FFmpeg](https://ffmpeg.org/) (libavcodec, libavutil, libswscale) | LGPLv2.1-or-later | H.264 decode, JPEG artwork, and color conversion |
| [FFmpeg](https://ffmpeg.org/) | LGPLv2.1-or-later | Video/audio decode, MP4 ads, artwork, and color conversion |
| [Expat](https://libexpat.github.io/) | MIT | VAST XML parsing (static) |
| [zlib](https://zlib.net/) | Zlib | PNG decompression (static into FFmpeg) |
| [libudev-zero](https://github.com/illiliti/libudev-zero) | ISC | V4L2 media-device discovery (static) |
| [SDL2](https://www.libsdl.org/) | Zlib | Window, renderer, audio, and controller input (device) |
| [OpenSSL](https://www.openssl.org/) | Apache-2.0 | TLS, WebRTC DTLS, and credential encryption (static) |
| [libcurl](https://curl.se/) | curl (MIT-style) | HTTP for Xbox services (static) |
| [libcurl](https://curl.se/) | curl (MIT-style) | HTTP and WebSocket transport (static) |
| [Opus](https://opus-codec.org/) | BSD-3-Clause | Audio decode (static) |

Xbox and NVIDIA icons are from [Bootstrap Icons](https://github.com/twbs/icons)
(MIT).
Loading
Loading