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_C5 and Banshee_S3 builds.
  • 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 320kbps for local playback. When a GhostLink peer is connected, the transport caps tracks at 264kbps; 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.
  • 128kbps or 160kbps for 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.

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 .mp3 files 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 at 264kbps. 128kbps or 160kbps is 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.