/ogo-shell

WIP odroid-go filemanager/media-player thing

Primary LanguageCGNU General Public License v3.0GPL-3.0

ogo-shell

File browser, music player and image viewer for the odroid-go.

Screenshots

File Browser

Media Player

Image Vieiwer

Features

  • Browse the sdcard
  • Display Metadata/Details of files
  • Audio Player
    • Supported Formats: MP3, OGG, WAV, FLAC, Modules(MOD,XM,IT,S3M)
    • Experimental support for some chiptunes using gme
    • Plays all audio files in a folder as a playlist
    • Audio can be played through Speaker or external DAC
  • Image viewer
    • Opens small jpg, png, bmp files
  • Optionally can launch roms using go-play emulators

There are a lot more ideas for features and improvements. You can find some of them in the TODO.md file.

Usage

Download

You should be able to download the latest fw file from Githubs releases.

Controls for File Browser

  • UP: Go one file up in menu
  • DOWN: Go one file down
  • RIGHT: Jump page down
  • LEFT: Jump page up
  • A: Go into directory/Show file details/Play file
  • B: Go up a directory
  • MENU: Go back to firmware
  • START: Display file details
  • SELECT: Toggle file sizes(May make displaying slower)

Controls for Music Player

  • A: Play/Pause
  • B: Close Song, Go back(Later: Continue playing in the background)
  • VOLUME: Switch DAC/Speaker
  • SELECT:
    • Press shortly: Toggle display backlight for longer battery life
    • Press for longer than one second: Toggle keylock and display
  • START: Toggle playlist playing mode(repeat playlist)
  • UP: Increase volume
  • DOWN: Decrease volume
  • RIGHT: Next Song
  • LEFT: Previous Song

Controls for Image Vieiwer

  • B: Close Image, Go back
  • RIGHT: Open next image in folder
  • LEFT: Open previous image in folder
  • START: Toggle fullscreen mode

Building

For building I used the v3.2-odroid branch from crashoverdrive as a base.

In addition to that I patched the the sdcard functions of the idf to lock/unlock a mutex. This mutex is used to synchronize access to the HSPI bus which is shared by the sdcard and display on the odroid go. The patch is located in the patches folder.

So, to build the application you need to have the esp-idf installed.

To build the firmware you also need to have the mkfw utility installed. Then simply run make dist to make the .fw file. Take a look at the Makefile to see how it works and if you want to change the path to the mkfw utility.

If you wan't to build the fw file that includes the emulators you can use the script at tools/make_emus_fw.sh. Before running it make sure you set the GO_PLAY_PATH to the path where your go-play repository is cloned at.

Acknowledgements

I used the hello-world-app from Jeff Kent which uses his hardware-lib to handle the odroids hardware. It made the development easier even though I had to modify some functions to provide me with error context. Thanks! Take a look at LICENSE.template for the license of his code.

The name and concept of this application is inspired by the similar 3dshell from joel16.

The audio playing libraries used are stb_vorbis, dr_mp3, dr_flac, dr_wav, libxmp-lite and gme.

For the image viewer stb_image is used.

License

I chose GPLv3 for ogo-shell mainly to be more compatible with future libraries I want to use. Take a look at LICENSE for a copy of the license.