MP3 Playback
Play MP3 files over GhostLink using the Audio app
On this page
The Audio app plays MP3 files stored on the SD card and streams them over GhostLink between the two chips in The Banshee.
Prerequisites
- An audio-enabled build: the Banshee C5, T-Deck, M5Stack CoreS3-SE, or CrowPanel Advanced P4. The Banshee’s two-chip audio setup uses the
Banshee_C5andBanshee_S3builds. - For the Banshee, a GhostLink connection between the control/display chip and the audio receiver chip.
- MP3 files on the SD card in
/mnt/ghostesp/audio. - MP3 bitrate up to
320kbpsfor local playback. When a GhostLink peer is connected, the transport caps tracks at264kbps; higher-bitrate files are rejected with an on-device toast. - For headphone output on the Banshee, the TLV320DAC3100 route is detected once before playback starts.
File Setup
Create this folder on the SD card:
/mnt/ghostesp/audio
Copy .mp3 files into that folder. The Audio app scans the folder when it opens and lists the tracks alphabetically. Up to 64 MP3 files are listed; any beyond that are ignored.
Recommended encoding:
- MP3, constant bitrate when possible.
128kbpsor160kbpsfor best reliability.- Standard sample rates such as
44.1kHz.
Opening the App
On the device UI, open:
Apps → Audio
If no MP3 files are found, the app shows a toast asking for files in /mnt/ghostesp/audio.
Controls
- Tap a track row to start playback.
- Use previous/next to switch tracks.
- Use play/pause to pause or resume playback.
- Encoder rotation adjusts volume on supported hardware.
- Touch-drag inside the track list scrolls the list.
The currently selected row is marked SEL. The active track is marked PLAY; paused playback is marked PAUSE.
Playback Behavior
Audio data is sent over GhostLink as a paced stream. The receiver reports its audio buffer fill level and playback time back to the sender so the stream can adapt to real receiver conditions.
The app displays:
- Current track name.
- Elapsed and estimated total time.
- Playback state.
- Detected bitrate.
- Receiver buffer percentage when feedback is available.
- Volume percentage.
Pause is immediate: the receiver discards buffered audio and resets output so it does not continue playing through the queued buffer.
GhostLink Commands
These commands are used internally by the Audio app and can be useful for debugging:
audio start
audio stop
audio pause
audio resume
audio flush
audio state <fill_bytes> <capacity_bytes> <played_ms>
audio state is sent by the receiver to report buffer fill and playback clock. The sender uses it for progress display and adaptive pacing.
Troubleshooting
- Audio app is missing: The build has no audio player or output path. The Audio player appears on the Banshee C5, T-Deck, M5Stack CoreS3-SE, and CrowPanel Advanced P4 builds; on the Banshee, make sure both chips are flashed with the correct paired builds.
- No files shown: Check that the SD card contains
.mp3files in/mnt/ghostesp/audio(up to 64 are listed). - Bitrate toast appears: Re-encode the file. Local playback accepts up to
320kbps; when a GhostLink peer is connected the transport caps tracks at264kbps.128kbpsor160kbpsis recommended. - Playback underruns or stutters: Try a lower bitrate file and confirm GhostLink is connected with no other streaming app active.
- No headphone output: Reconnect headphones before starting playback so one-shot route detection can select the right output path.
- Progress looks wrong: Some VBR files do not expose accurate duration data. CBR files produce more stable estimates.
