PS3 File Manager

PS3 PS3 File Manager 260606-0332

mohasi

Forum Noob
Hi there, I have been working on a clean file manager for a few weeks, its partially functional. What works:

- Navigation
- Copy / Cut / Paste
- Rename
- Delete
- New file / directory
- FTP
- Image Viewer
- Audio playback (pcm, wav, ogg, flac and mp3)
- exFAT support

Ill be adding some more functionality as I go. Some of the planned stuff includes:

- New file / directory
- Zip / Unzip
- Open text / image / binary / audio / video files
- Text editor
- PS3 game mounting
- FTP
- Last updated date column

- Permissions info on a file
- Symlinking
- Search
- Encrypted files / volumes (if I can)
- NTFS/exFAT support
- Google Drive (if I can)
- Theme support

Code:
https://codeberg.org/mohasi/ps3-dev/src/branch/main/apps/file-manager

Releases:
https://codeberg.org/mohasi/ps3-dev/releases

1781052175472.png


Thank you
 
Last edited:
Worth to investigate filesystem sync functionality. Because i.e in multiMAN, if user delete eg disc image, and not wait for sync (which occurring in unknown condition), XMB will be reporting old free size from before deleting, while file is in reality deleted, leaving user in technically damaged UFS2 state without way to fix it. The same apply to all FTP servers. This works fine on 4.21 but became broken on 4.4x and still is. Something strange going on with vsh I believe, and I put bet blindly on sync/async write.
 
Worth to investigate filesystem sync functionality. Because i.e in multiMAN, if user delete eg disc image, and not wait for sync (which occurring in unknown condition), XMB will be reporting old free size from before deleting, while file is in reality deleted, leaving user in technically damaged UFS2 state without way to fix it. The same apply to all FTP servers. This works fine on 4.21 but became broken on 4.4x and still is. Something strange going on with vsh I believe, and I put bet blindly on sync/async write.
Thanks for your comment. I looked into this, and found (maybe incorrect):
  • webMAN mod does not sync, nor does IRISMAN (it has it commented out in client.c), and ManaGunz does it for NTFS/exFAT.
  • You are right, if no flushes occur, there could be discrepancy between deleted/copied files and actual disk state, which on power failure could cause issues. Although I am unsure of what exactly would happen, don't want to try.
  • There are two levels available, a per file sync using cellFsFsync(fd), and a full device sync using sys_fs_sync lv2 syscall.
I could add both, but copying and syncing after every file for thousands of files may be too heavy performance wise so I will not add that, but I will add a device sync after a batch, even if it partially fails, covering copy/move/delete. A batch can be 1 file, or a thousand. So it will still run after single files. Just not in the middle of deleting a directory with a thousand.

I will also make a similar change in my "simple-ftp-plugin", but at a lower granularity, i.e. every command. AFAIK FTP works in lock-step, so the client sends a command for every single file to delete/copy etc, so since we already have that networking delay, adding a fast sync should not cause a noticeable perf drop.

I will make the change in the next release.
 
Last edited:
Thanks mohasi! I always love coming back after a break and seeing what the devs have come up with for the scene. I'm in the process of dl'ing and will install to play around with.

Best Regards,
Desmo
 
Per file would be a death wish but after completing all file operations it is reasonable. Eventually, put that on menu/hot button fort sync on demand , however, this will be not intuitive for people.

BTW: which gfx library are you using? Tiny3D?
 
Per file would be a death wish but after completing all file operations it is reasonable. Eventually, put that on menu/hot button fort sync on demand , however, this will be not intuitive for people.

BTW: which gfx library are you using? Tiny3D?

In the file manager app, its per action, so a paste is an action, if its 1000 files it will sync after 1000, and if its a single file, it will since after just one. Same for delete. For the ftp-plugin, its per call, as the client deletes/pastes one file at a time, its per file, since the overhead there is negligible due to network. In my testing it made no difference to performance. I had 400+ small icon files, which took 20s to transfer before and the same after the change.

As for the graphics lib, I am not using any, its direct gcm drawing.



I published a new release with:

In app FTP server:
I made the ftp server code from the "simple-ftp-plugin" re-useable, and now the file manager has the same functionality. Just press SELECT to start and stop the server, the IP address will display next to the button. If you already use the "simple-ftp-plugin", or a different plugin already running on port 21, then it will detect that and disable the button, but still show you the IP address, indicating its already running.

Image Viewer:
Now you can click X on an image to open it for viewing. It supports PNG and JPG/JPEG files only for now, up to 4096x4096 in size, anything larger will be rejected gracefully. You can flick between different images in the same folder with L1/R1, and zoom in and out with L2/R2. The DPAD can be used for panning. Note that larger files will need longer to decode and display.

Other than that, the footer buttons are more dynamic, they enable and disable, and can change text based on context. The fps/memory counter is gone, but can be shown by pressing both L3+R3. There is now a "Modified" column, showing last change date for a file or dir. Dotfiles (those that start with a .) are now visible, and also some bugs were fixed.

Thanks.
 
Last edited:
Audio playback is now supported:

- Formats pcm, wav, ogg, flac and mp3
- Seeking using DPAD left/right
- Volume using DPAD up/down, sticky between tracks
- Next / Previous track using L1/L2 with loopback
- Shows filename and title from metadata (if available)

1781597369325.png


Credits: Audio playback in this app is powered by several excellent open-source, single-file audio decoders. Ogg Vorbis support uses stb_vorbis by Sean Barrett (nothings), and MP3, FLAC, and WAV support use dr_mp3, dr_flac, and dr_wav from the dr_libs collection by David Reid (mackron) — with dr_mp3's decoding core based on minimp3 by Lion (lieff). All are released into the public domain (or MIT‑0); full credit and thanks go to their authors.
 
Last edited:
This is looking amazing, going to give this a go.

Feature request:

Real debrid / premiumize etc... cloud support would be the perfect fit in your app and on ps3 in general.
 
This is looking amazing, going to give this a go.

Feature request:

Real debrid / premiumize etc... cloud support would be the perfect fit in your app and on ps3 in general.

Thanks! I had to look up what "Real debrid / premiumize" was as I hadn't even heard of it. Unfortunately I won't be doing that as its not something I am interested in, but something like Google Drive may be possible, albeit a bit hard, due to security, ciphers etc. So even if I was to somehow magically add it, it would be brittle, something Google could change their end and break for us. Will keep in back of my mind.

Hi all, I have published a new release (260621-2038). After a few days of work, I have managed to get a exFAT implementation in. Its new fresh implementation as a single file (exfat.c) based off the Microsoft specs and not the ChaN FatFs used in IRISMAN and ManaGunz.

I have thoroughly tested it and IMO its solid, in stability, security, performance etc. Highlights:

- exFAT support for USB drives
- Supports modern large drives and SD cards use, including ones over 32 GB
- Hot plug / unplug support (you can see it appear and disappear live in the file manager). Also over FTP, just press refresh in client.
- Pulling a drive mid-operation won't corrupt it
- It works with drives formatted as a simple volume or with standard partition layouts (MBR or GPT)
- The same drive is reachable both on the console (using file manager) and over FTP (using simple-ftp-plugin).
- Fast and sturdy, more resistant to damaged or oddly-formatted drives.
- Faster than IRISMAN, limited test but measured a 265MB file (read=21s, write=41s) vs IRISMAN (read=26s, write=44s). It is a slow USB flash disk.

Thank you.
 
Great news!
Could you consider a support for themes?
Yes I would like that, and will add it to the list, as a lower priority, since its something that is best done when everything else is settled. I personally would like a darker theme, but I have committed too far into this bluish one, so I don't want to mess it up. Hopefully in the future. Next I am making the FTP more faster/optimised. Then maybe video (I already had that working, but it was not quite right so I stashed it) or NTFS.
 
Thank you. ^^
Sure, that's not something super important on the rest of functionality. I understanding that.

Movian code can be reused for video maybe?

BTW: Meanwhile, I edited my earlier post, adding another request. Bookmarks. This could be nice to have predefined places for shortcut jump (i.e "PS3 Saves" << "dev_hdd0/home/00000256/savedata/").
 
Thank you. ^^
Sure, that's not something super important on the rest of functionality. I understanding that.

Movian code can be reused for video maybe?

BTW: Meanwhile, I edited my earlier post, adding another request. Bookmarks. This could be nice to have predefined places for shortcut jump (i.e "PS3 Saves" << "dev_hdd0/home/00000256/savedata/").

I did look at Movian, however, it uses ffmpeg, which I don't want to use, at least not yet. I want to focus on what I can do with the official SDK via cellVdec and cellAdec, hardware accelerated using SPUs, even if its a subset of what Movian does its good enough for me. I don't want to drag in a large dependency as its a file manager not a movie player. As long as it plays mpeg-2 / H.264 / divx that will cover most use cases. If I have to use ffmpeg, I might consider it some time.

As for your shortcuts idea, its like "Favourites/Bookmarks", but I would need to have a clear and simple flow on the UI for me to put that in. If we have a simple easy way to see and use them, Ill add it in.
 
Back
Top