Repository navigation
Releases: HaydenGriffin/afterglow-ps5
Release list
Afterglow for PS5 1.7.0
Built and tested on a PC only; not yet checked on a console.
- Visual style Off (user request). Display's visual style gains Off after MilkDrop, Halo and Spectrum: no
visuals, just the music on a black screen. With Visuals only nothing is drawn but the hints, which fade; with
Visuals + track the track card sits on black; Album and Lyrics show their posters whole, as with MilkDrop behind
them turned off. The black is true black (OLED pixels off), and MilkDrop does not render while Off, except during a
preset scan you start.
Afterglow for PS5 1.6.0
Download and install
Download Afterglow for PS5 v1.6.0 — PPSA99481.zip
Requires a jailbroken PS5 with a folder-title homebrew loader (such as ShadowMount Plus), an FTP server on the console, and Music Assistant 2.10 or newer. Tested on PS5 firmware 7.20.
- Download PPSA99481.zip above and extract it on your computer.
- Copy the whole PPSA99481 folder over FTP into /data/homebrew/ on the PS5. The app should be at
/data/homebrew/PPSA99481/eboot.bin. Preserve permissions as 0777 on every file and folder. - Wait for your homebrew loader to register it, then open Afterglow under Media on the PS5 home screen.
- In Afterglow, open Options → Settings → Account → Sign in and enter your Music Assistant server's numeric IP address and account details. Then choose Afterglow PS5 as the speaker in Music Assistant and play music.
This is a ready-to-run app folder packaged as a ZIP. Extract it before uploading; it is not a PKG installer. The Source code downloads and projectm-source.tar.gz are for developers; SHA256SUMS is optional for verifying your download.
Full setup guide and troubleshooting
What's in 1.6.0
Checked on hardware on 16 October 2026: launch, playback through the console at 59.9–60 fps, artwork, online
lyrics over HTTPS, Browse, the controls, the queue, Display settings and the lyric overlays, the Home section, dev
requests and the title's place under Media. Not yet checked on a console: sign-in and search with the system
keyboard, the light bar, 120 Hz, token renewal and timing drift over a long session.
- New logo, shared with the LG app. The wordmark's o is the sun setting below the baseline; the home-screen
icon is a close-up of that sunset, and the selection and launch backgrounds show the whole word on the horizon. - Lyrics over visuals: Position, Background, Size. Display adds three rows for the chosen overlay (One line or
Stage), kept apart and synced: Top / Middle / Bottom, Box / Shade / None and Small / Medium / Large. Overlays stay
clear of the notice line, the hints and the track card (One line at Bottom stacks above it). - Smooth progress. The song progress bar and the lyric underline (line and word by word) move every frame from
the interpolated position, easing small clock corrections and snapping only on seeks and new songs. - "More" on long lists. Sheets and lists that run past their edge fade the edge row and say More with a
chevron, top or bottom; the focused row always keeps a row of context. - Lyrics from Music Assistant, with an online fallback. When Music Assistant has none (or errs, or takes more
than 5 s), the PS5 searches LRCLIB itself over HTTPS (BearSSL, certificates checked
against the console's own CA list), sending only the song's title and first artist. Settings → Lyrics holds
Online lyrics (on by default), Retry lyrics after a failed or empty lookup, and Lyrics timing up to
10 s earlier or later in 100 ms steps with Reset lyrics timing. - A positive LRC
[offset:]now brings lyrics sooner, as the format defines. - Commands go to the right speaker. Browse, the idle poster and the controls act on a command target: the
chosen speaker, else the one followed, else the last one, else this PS5. Play now works with nothing playing. - Play on moves the music. Picking a silent speaker under Playing on moves the music there, and Play on
this PS5 brings it to the console. Speakers together lists sync groups and explains refusals. - Idle poster. With nothing playing, the paused song or recent music is set as a poster, one press away from
playing; it dims after three quiet minutes. - Browse rows read kind · artist · year (or length). Play now and Start radio return to Now playing; Play next
and Add to the queue confirm on the item's own row with a tick. - Controls: quick seek and held volume presses add up, skips collapse to one waiting skip per direction, a
second Play/Pause before Music Assistant answers undoes the first, and synced speakers use group volume. - The picture comes back when Music Assistant stops sending the waveform: the follow relay reconnects after 10 s
without frames while the queue plays, without looping on a paused speaker. - Account: token renewal hands the fresh token to every connection before the old one is revoked; Log out
revokes only this console's own token, by id. - All 395 presets LG Afterglow ships, 393 enabled. Presets that sample MilkDrop's texture images get a cloud
texture the app generates (as Butterchurn does on LG); a projectM shader fix makes the two Mandelbox presets and
"Martin - disco mix 6" render. - The poster no longer shows a stream-quality badge (Details still has the format), the song-change slide is gone
and "Next" reads "Up next", as on LG 1.5.0. - With no server set up, the screen points at Settings → Account → Sign in.
- The PS5 home screen shows the Afterglow poster block: a new icon, and selection and start-up backgrounds.
- Afterglow is a media app: it sits under Media on the home screen, beside the other music and video apps, instead
of under Games. - Publishing: README, install guide, this changelog, issue and pull request templates,
GitHub Actions for tests, lint and a release ZIP per version tag. - Fixed on the console: muted text and rules (section headings, "Saved on this PS5", the time and status lines)
were invisible on the PS5 while they drew on a PC; the poster colours are now compile-time constants. - The song's artists read "Justice, Tame Impala, SZA" from Music Assistant's queue instead of Sendspin's
slash-joined line. - Fixed before release: lyrics and saved preset ratings longer than 2 KB were cut short (the cut lyrics also kept
the online search from running); Log out now says when Music Assistant refused or did not confirm removing
the token; a renewed or new token that cannot be saved no longer retires the one the next launch reads;
unanswered account, settings and recent-music requests time out instead of blocking later ones; and HTTPS
answers are capped on the wire, not only by their body. - Dev requests can tap controller buttons (
tools/afterglow-dev.py press options right cross), so a PC can drive
the app for console screenshots. Off unlessafterglow.confsetsdev_requests.
Also new in 1.6.0, checked on a PC only so far (unit tests, mock servers and the off-screen preview):
- Music playing on another speaker can be joined or moved: Queue and Playing on offer Join (this
PS5's own player joins that speaker's group, where Music Assistant allows it) and Move here (the music
moves to the PS5, as the old Play on this PS5 row did). Nothing happens until you choose one. - Playing on says what each speaker plays: the song and artist, Paused, or Idle, instead of Speaker, Group or
Grouped. - Speakers together: Volume for each speaker sets one member's volume (
players/cmd/volume_set) beside the
group's Volume; speakers with a fixed volume are left out. - Cover art in the visuals (Visuals & presets → Picture, on by default): the presets that sample a picture
(worms, cells, seaweed, a sky…) get the song's cover instead of the generated clouds, faded in over 2 s once the
artwork and its colours have arrived, at most every 4 s. One 512 × 512 texture owned by the app is updated in
place, never one per song. Off, or no artwork, fades back to the clouds. - Change preset (was Preset duration) goes on past Every 10 min to Each song (a new preset when the queue
moves to another song, after 2 s, at least 10 s apart) and On big moments (when the music's energy jumps, at
least 25 s apart). Both follow the preset list, favourites and skip-slow as the timer does; LG Afterglow decides
the same way. - Scan to save. Details shows a QR code beside the facts that opens the playing song on a phone, on a public
service Music Assistant knows it from (Spotify, Tidal, Apple Music, YouTube Music, Deezer, Qobuz, SoundCloud),
preferring the one it streams from. Drawn on the console with Project Nayuki's QR Code generator (MIT, C version);
hidden when the song has no public page. The same link gives the same code as LG Afterglow. - Check my setup (last row of Settings): Music Assistant set up, reachable and 2.10 or newer, the token
accepted, this PS5 known as a speaker and Sendspin connected, the MilkDrop Visualizer plugin found (when following
a speaker), the console's clock within 5 minutes of the server's, lrclib.net answering (busy is not a failure) and
every preset measured, each failure with one next step. Runs only when asked. An idle poster with nothing to offer
ends its strip in Check setup, and "Ready when you are." adds "Something not right? Check my setup in
Settings." after 20 seconds without Music Assistant. - Keep a lyrics timing for one song. Changing Lyrics timing during a song (in Settings → Lyrics, or with
L2/R2 on the Lyrics poster) offers once, in Settings → Lyrics, Keep this timing for this song? (Keep / Not
now). A kept timing applies to that song's lyrics only, the other songs keep theirs, and Forget timing for this
song drops it. Kept for the 100 most recently changed songs, synced with this PS5's account settings (as LG's). - Choose other lyrics. Settings → Lyrics → Choose other lyrics swaps wrong lyrics for another version from
lrclib.net (up to six, with length, Timed or Plain and album; a much longer one says so). The pick is kept for the
song and fetched by its LRCLIB id on later plays; Automatic goes back. - **Go...