Hayden Griffin

Afterglow

A Music Assistant player for LG TVs and the PS5: the artwork, word-by-word lyrics and the queue from the remote or a DualSense, with MilkDrop visuals drawn in time with the music.

Afterglow on a PS5: the cover in a square, the current lyric line underlined as it is sung, and up next with its artistsAfterglow's PS5 views: Album, one lyric line over the visuals, the large lyric over the visuals, and the Display settings

An unofficial Music Assistant player for a jailbroken PS5. It joins Music Assistant as a speaker and plays through the console, shows the artwork, word-by-word lyrics and the queue, lets you browse and play with a DualSense, and draws MilkDrop visuals from the music you hear. It can also follow another speaker and draw what that speaker plays, without sounding a second copy.

It is the PS5 twin of Afterglow for LG webOS: the same poster design and the same Music Assistant account, written natively in C++ and OpenGL for the console.

Afterglow is independent of, and not endorsed by, Music Assistant or Sony Interactive Entertainment. It is built on BlackBearReloaded's ps5-homebrew-ui and keeps its licence, GPL-3.0-or-later.

What it does

Four console captures: the Album poster, One line lyrics over MilkDrop, Stage lyrics over MilkDrop, and the Display settings with the lyric overlay rows

Requirements

Status: Afterglow has run on one PS5, on system software 7.20; the pictures here are screenshots from it. Checked there with 1.6.0: playback through the console at 59.9–60 fps, artwork, online lyrics, Browse, the controls, the queue, the Display settings and lyric overlays, and the Home section. Signing in with the system keyboard, the light bar and 120 Hz have been tested on a PC (unit tests, mock servers and the off-screen preview) but not yet on a console. Other consoles, firmware versions and homebrew enablers haven't been tried. Reports either way are very welcome.

Install

Download PPSA99481.zip from the releases, or build it (below). Extract it and copy the PPSA99481 folder to /data/homebrew/ on the console over FTP. Wait for your homebrew enabler to register the title, then start Afterglow from the home screen; it sits with the media apps, not the games.

Sign in with Options → Settings → Account → Sign in: the system keyboard asks for Music Assistant's address, your username and password. The PS5 keeps its own long-lived token, named after the console, which you can revoke in Music Assistant or with Log out; the password is not stored. Then choose Afterglow PS5 as the speaker in Music Assistant and play something. The setup guide walks through every step, including the optional afterglow.conf.

Controls

On the poster or the visuals, with nothing open:

Button Does
Cross Play / pause
L1 / R1 Previous / next song
D-pad left / right Back / ahead 10 seconds
D-pad up / down Volume; pages plain lyrics in the Lyrics view
Square Visuals only, Visuals + track, Album, Lyrics
Triangle Lyrics over the visuals: off, one line, stage
L2 / R2 Previous / next preset; in the Lyrics view, lyrics earlier / later
L3 Lock the preset
R3 Favourite the preset
Options The playback controls and the Browse, Now playing, Queue and Settings sheets
Hold Circle Close Afterglow (1.5 s)

In the sheets, up and down move, left and right change a value, Cross selects, Circle goes back and Options closes everything. The full list is in docs/AFTERGLOW.md.

Settings

Press Options for the playback controls: a row of tiles (previous, play, next, back and ahead 10 s, favourite, Details, Display) and a strip with Browse, Now playing, Queue, Settings and, once configured, Home. Settings holds the source, visuals and presets, lyrics timing, sound and sync, the account and a status page, and Check my setup. Settings for this console are kept on the console and, with Sync settings with Music Assistant on, in your Music Assistant account; preset favourites are shared with your other Afterglows. Every row is described in docs/AFTERGLOW.md.

Privacy

Afterglow talks to your Music Assistant server: Sendspin for the audio, its API for artwork, lyrics, the queue and your library, and the MilkDrop Visualizer relay when following a speaker. Artwork comes through Music Assistant's image proxy. With a Home section configured, it also talks to your Home Assistant, subscribing only to the entities you list.

The one other service is lyrics. When Music Assistant has none for a song, the PS5 asks lrclib.net directly over HTTPS, sending only the song's title and first artist (no account, token or device id). Choose other lyrics sends the same search, and a song whose lyrics you chose is fetched by that LRCLIB record's id. LRCLIB sees the request coming from your network. Turn Online lyrics off (Options → Settings → Lyrics) to stop it; it is on by default.

Check my setup asks lrclib.net for one fixed record (/api/get/1: no song, nothing about you) to see that it answers, only when you run it and Online lyrics is on. The Scan to save code in Details is drawn on the console from the link Music Assistant already sent; nothing is sent.

The console stores its Music Assistant token in the app's own storage (/download0/hui/afterglow.auth), never your password. A token or Home Assistant token you put in afterglow.conf sits in the install folder, which anything with FTP access to the console can read. There is no analytics or telemetry. The dev request path for checking a console from a PC is off unless you turn it on.

Development

The build runs in a Linux container (native on ARM64 and x86-64; on a Mac, Colima or another local Docker works) and cross-compiles for the PS5 with the public PS5 Payload SDK:

docker build -f Dockerfile.afterglow -t afterglow-builder .
docker run --rm -v "$PWD:/work" afterglow-builder make app    # dist/PPSA99481/ and dist/PPSA99481.zip
docker run --rm -v "$PWD:/work" afterglow-builder make test-unit
docker run --rm -v "$PWD:/work" afterglow-builder make lint

The interface also renders on a PC, off-screen, with the same code and shaders. The README images above were captured on a PS5 running 1.6.0. To render a preview with made-up music and an invented cover:

AFTERGLOW_PREVIEW=1 AFTERGLOW_COVER=docs/images/preview-cover.png AFTERGLOW_LYRICS=karaoke \
  tools/host-snapshots.sh build/afterglow-preview afterglow

docs/AFTERGLOW.md covers the configuration file, the preset scan, the checks and what has not been verified on hardware. AGENTS.md is the guide for working in the repository (for people and coding agents alike), and docs/UI_KIT.md introduces the ps5-homebrew-ui kit underneath. See the changelog.

Support

Afterglow is free and open source. If it made your setup better, you can buy me a coffee. Bug reports and pull requests are just as welcome.

Credits

Full notices, with what the app folder ships, are in THIRD_PARTY_NOTICES.md.

Licence

GPL-3.0-or-later; see LICENSE. Afterglow's additions are by Hayden Griffin; the ps5-homebrew-ui code it is built on is Copyright © 2026 BlackBearReloaded. Third-party components keep their own licences.

Disclaimer