XMPlayer | All-in-One Media Center for muOS with a Familiar Interface

XMPlayer

XMPlayer is an all-in-one, XMB-inspired media suite designed specifically for handheld gaming devices running muOS (and other CFWs with PortMaster support, test builds available). It provides a clean, easy-to-use interface for managing and enjoying your music, videos, and photos.

XMPlayer is a media suite application for Linux handhelds. It is NOT a custom firmware or an emulation frontend. The main focus is on media content other than games.

Disclaimer: XMPlayer is developed for educational purposes and is not affiliated with Sony or the XrossMediaBar brand.


Features

  • XMB Interface: A responsive XrossMediaBar UI we all know and love.
  • Responsive UI: UI is responsive to different screen sizes, resolutions, and aspect ratios.
  • Content Indexing: Content indexing allows handling large media libraries without slowing down the UI.
  • System Integration: Live battery percentage and clock display in the status bar.

Video Player

Provides special configurations to CFW’s built-in MPV and ffplay for high-performance video playback.


Music Player

A dedicated audio player interface with album art, track info, and playback controls. Common audio formats are supported. Moreover, basic support for VGM files and chiptune formats are available. Playback performance may differ depending on chiptune format and hardware, more information here.

Photo Viewer

Browse and view your photo collection.

File Browser

Browse your handheld’s file system and access media files outside the main directories. Both single and dual SD card setups are supported.

Customizable Themes

Fluid particle animations and customizable color themes to your liking. You can set a (dynamic) wallpaper too!

No Games?

The goal of this project is to address the multimedia playback shortcomings of gaming handhelds. It is a Love2D application running under CFW. For the time being, I lack both the motivation and the skills to create a complete frontend. However, I do plan to add a feature in future releases that allows PSP game forwarding to PPSSPP for the sake of this app being for all-in-one media and nostalgia.

This project’s aim is to utilize XMB’s ease of use for media content and many people’s familiarity in the retro gaming community. This project does not aim to fully replicate or provide 1:1 functionalities with the original XMB interface of Sony devices. This project is a reimagination and adaptation, not a hard copy.


Installation

muOS App (.muxapp)

Prerequisites

  • A handheld device running muOS. At least 1 GB of RAM is recommended for a smooth experience.
  • Your music, videos, and photos organized into dedicated folders on your SD card. Both single and dual SD card setups are supported.

Steps

  1. Download the latest release and put in in the ARCHIVES folder on your SD card.
  2. Install the XMPlayer.muxapp file using Archive Manager.
  3. Go to Applications menu and launch XMPlayer.
  4. At launch, XMPlayer will ask you to set media directories. Set all media directories you plan to use from Settings > Media Directories.

Need help where to locate?

  • For single SD card setups, the SD card contents are mounted to /mnt/mmc.
  • For dual SD card setups, /mnt/mmc refers to the 1st SD card, and /mnt/sdcard refers to the 2nd.
  1. Under Media Directories, select Reindex Media and Restart App. XMPlayer will index your media library for you. After that, XMPlayer is ready to use.

Controls

Button XMB Menu Music Player Video Player (MPV) Video Player (ffplay) Photo Viewer
D-Pad Left/Right Change Tabs Previous/Next Track Seek ±5s
Menu+Left/Right: Seek Chapters
Seek ±5s Pan Left/Right
D-Pad Up/Down Navigate Menu Items - Seek ±60s
Menu+Up/Down: Seek ±15min
Seek ±60s Pan Up/Down
A Select / Open / Confirm Play / Pause Play / Pause
Menu+A: Take Screenshot
Play/Pause Reset View
B Back / Cancel Return to XMB Skip Frames Skip Frames Zoom Out
X Context Menu Playback Options Toggle Mute Toggle Mute Zoom In
Y - (Hold) Hotkey Display Show OSD
Menu+Y: Toggle OSD
- Rotate 90°
L1 - Previous Track Previous Video - Previous Image
L2 - Seek -10s Cycle Audio Tracks - -
R1 - Next Track Next Video - Next Image
R2 - Seek +10s Cycle Subtitles - -
Start - - Adjust Aspect Ratio
Menu+Start: Adjust Video Zoom (Panscan)
- Toggle Info
Select - - Return to XMB Return to XMB Return to XMB

Customization

You can personalize XMPlayer via Settings > Theme Settings:

  • Theme: Toggle between Light and Dark modes.
  • Theme Color: Choose from the colors of RetroArch’s color presets for its XMB interface.
  • Wallpaper: Select an image from your photos as a wallpaper!
  • Wallpaper Effects: Add blur, tint, brightness effects to better match your style.

More customization options are on the way!


Roadmap

v0.1 Beta

  • Mark/unmark videos as watched.
  • Play videos from where you left off.
  • Shuffle play: music (folder, album, artist)
  • Play all & Shuffle play: videos (folder)
  • Extended music playback controls. (repeat, hold, sleep, etc.)
  • Auto display sleep.
  • Continue playback while display turned off (+ lid closed for clamshells)
  • Wallpaper and customization.

v0.2 Symphony

  • Portmaster build target and test releases.
  • Custom playlists for video and music.
  • VGM file support (.spc, .nsf, …)
  • One new visualizer.

v0.3 Frontier (Planned)

  • Audiobooks support with dedicated player (bookmarks, chapters, …).
  • Web radio streaming.
  • Media library search.
  • One new visualizer.

Planned for Later Versions

  • Photo gallery.
  • Image slideshows.
  • Custom icon sets.
  • Add support for other media formats?

Credits

  • Built with Love2D.
  • Icons provided by Remix Icon library.
  • simpleScale script from tomlum’s simpleScale.
  • System information provided by muOS.
  • PlayStation, XrossMediaBar, and XMB are trademarks of Sony Interactive Entertainment Inc.

8 Likes

you son of a gun, I was looking for this, THANK YOU!

No, thank YOU :laughing: It’s still in early development, so I’d really appreciate community’s feedback and suggestions.

This is epic! Thank you for making this!

1 Like

Hey,
Just installed this on my RG35XX-H, and the inputs dont seem to work.
I’m on muOS 2601.1 Funky Jacaranda

Sorry to hear that. Would you mind sharing the log file in /mnt/mmc/MUOS/application/XMPlayer/.xmplayer/log.txt ? I could only develop this on a RG35XX SP so far, so compatibility with other devices is untested.

Sure! here it is:

Thank you, looks like the issue is about gptokeyb2 can’t find a required library (libinterpose.aarch64.so), which maps the button inputs to the app. I will be researching this issue. By the meantime, can you make sure PortMaster on your device is up to date and working? The library file should be in /mnt/mmc/MUOS/PortMaster/libinterpose.aarch64.so. If not, that may be the issue. You may want to try reinstalling PortMaster from Task Toolkit.

Edit: Found on Reddit:
A few pre-requisite checks:

(1) Updating to the latest PortMaster version available:

PortMaster App => Options => Update PortMaster.

(2) Updating all the Runtime libraries:

PortMaster App => Options => Runtime Manager => Download All. (new runtime libraries recently added)

(3) Updating individual ports within Portmaster App:

PortMaster App => Options => Update Ports.

Hmm this is very strange
[/mnt/mmc/MUOS/PortMaster]# ls .
7zzs.aarch64 libgl_EmuELEC.txt mod_knulli.txt
7zzs.armhf libgl_JELOS.txt mod_muOS.txt
7zzs.x86_64 libgl_Miyoo.txt muos
PortMaster.sh libgl_REGLinux.txt oga_controls
PortMasterDialog.txt libgl_ROCKNIX.txt oga_controls_settings.txt
astcenc.aarch64 libgl_UnofficialOS.txt pugwash
autoinstall libgl_default.txt pugwash.txt
batocera libgl_knulli.txt pylibs
config libgl_muOS.txt pylibs.zip.md5
control.txt libgl_uConsole.txt resources
device_info.txt libinterpose.aarch64.so retrodeck
exlibs libinterpose.armhf.so runtimes
funcs.txt libinterpose.x86_64.so sdl2imgshow.aarch64
gamecontrollerdb.txt libs sdl2imgshow.armhf
gameinfo.xml licenses sdl2imgshow.x86_64
gptokeyb log.txt sdl_resolution.aarch64
gptokeyb.armhf mapper.py sdl_resolution.armhf
gptokeyb.x86_64 miyoo sdl_resolution.x86_64
gptokeyb2 mod_.txt tasksetter
gptokeyb2.armhf mod_Batocera.txt themes
gptokeyb2.x86_64 mod_EmuELEC.txt trimui
harbourmaster mod_JELOS.txt utils
innoextract.aarch64 mod_Miyoo.txt version
innoextract.armhf mod_REGLinux.txt xdelta3
innoextract.x86_64 mod_ROCKNIX.txt xdelta3.armhf
knulli mod_TrimUI.txt xdelta3.x86_64
libgl_Batocera.txt mod_UnofficialOS.txt

libinterpose.aarch64.sois there, however if i run gptokeyb2, it says not found?

[/mnt/mmc/MUOS/PortMaster]# ./gptokeyb2
./gptokeyb2: error while loading shared libraries: libinterpose.aarch64.so: cannot open shared object file: No such file or directory

I have updated PortMaster, i didn’t update all the runtimes yet, they are big and i dont have a proper internet source.

I have most of my stuff on sd2, including applications, not sure if this is relevant.

Ok, I have

  • Downloaded all runtimes
  • Updated ports
  • Updated PortMaster
    same issue. gptokeyb works, but gptokeyb2 doesnt

This is interesting. All files seem to be in place. But applications being launched from SD2 might actually be relevant. Try copying libinterpose.aarch64.so manually to .xmplayer/libs, so gptokeyb2 can find it. Because the line export LD_LIBRARY_PATH="$APP_DIR/libs:$LD_LIBRARY_PATH" in the launch script allows loading libraries from there.

Copying libinterpose.aarch64.so to .xmplayer/libs solved the issue! gptokeyb2 starts and i can navigate the interface.
Thank You!
So I’m guessing this is an issue with PortMaster?

Glad to hear it! I will update the launch script on next releases for setups that use SD2 as the applications directory. Thank you for your cooperation and bug reporting!
I suppose the issue is about both PortMaster and the app. I missed the edge case of apps being installed on SD2 instead of SD1.

1 Like

Please refer to the following,

1 Like

Thanks for the app! It’s great!

I have a problem on TUI brick - 4:3 video is not showing full screen, it goes to the left side. Also ui scaling a bit too tiny for me

These issues should be related to TUI Brick’s higher screen resolution. The upcoming v0.2 release will introduce true UI scaling to account for all resolutions and aspect ratios. Glad you liked the app!

1 Like

That’s great to hear. Thank you for your job!

Hi again! The new release is almost complete, so I’ve just uploaded a pre-release on GitHub for muOS testers. UI and video scaling issues should have been fixed with this update, would you mind checking if they are resolved?

2 Likes

Hey ,I tried it the only problem I faced is when clicking on start the video just feels like zoomed in now as a result some part of video gets cut out from the screen.i liked the one from 0.1.3 because clicking on the start button there perfectly streched out any video to my 4:3 aspect ratio had no issue,no cutout of video.

Oh thanks for testing it! That crop is the panscan feature, you can use Start button to adjust zoom rate. But I can definitely bring back stretch to screen as well. For example Start is for stretch to screen and Menu+Start is for panscan adjustment

1 Like