Code Monkey home page Code Monkey logo

retronas's Introduction

RetroNAS

About | WARNING Security | Supported Systems | WARNING Filenames | Help Wanted | Thanks and Credits | How To

Status

RetroNAS is a tool that installs other tools, and is a rolling release. Each time the command line "retronas" tool is run, the core project is updated to its latest stable release. Third party tools that RetroNAS installs are done so via a mix of Debian APT repositories (which can be managed via standard package manager and system update tools), and for specialised tools via upstream project pages (these can be updated by re-running the tool installer).

Features are promoted from a feature branch into a branch called testing where it will sit until we are comfortable with the feature before being promoted to the "stable" main branch.

Branches

  • feature_name: new features WIP, may be broken
  • testing: new complete work, needs to be tested further
  • main: considered stable

Users can opt in/out of these brances using the Branch tool available in the Update menu. It is suggested you only opt into the testing branch if you wish you provide feedback on new features we consider complete. Opting into a feature_name branch will not receive any support as the work is not considered complete.

Community feedback and bug reporting is vital. Please click the "Issues" button in GitHub to report problems. When reporting an issue please include the branch you are currently on which is reported on the main menu in current releases of RetroNAS

Please read the Wiki to see what's going on.

About

RetroNAS is a suite of tools designed to turn a low cost Raspberry Pi, old computer or even Virtual Machine into a NAS (Network Attached Storage) device for retro PCs, microcomputers and consoles.

You can use it as a central file store or backup server for your old and new computers and consoles, a NAS with far more space than your old systems can natively attach (far exceeding the 2TB limit of solutions like FAT32 formatted direct-attached drives), or as a file drop between various computers that may not be compatible with each other's various network file sharing tools. It also offers some interesting tools like proxies to help very old web browsers read and download information from the modern Internet.

It uses a number of open source tools to configure services and network protocols not found on modern NAS devices that are compatible with a large variety of retro systems.

In general, most of these services require a client with some sort of TCP/IP stack. There are exceptions however. e.g.: EtherDFS, as a dedicated Layer 2 protocol for MS-DOS machines with a packet driver and matching client software, or AppleTalk, Apple's pre-TCP protocol for AppleShare and AFP (Apple Filer Protocol) file sharing (although RetroNAS also supports AFP over TCP for newer Macs).

You will generally need to have some sort of home TCP/IP based network with the correct hubs/switches, cables and NICs (Network Interface Cards) for this to work.

Future options are planned to integrate dial-up modem, PPP or SLIP connected systems. This is currently work in progress.

For a complete guide and list of supported systems and protocols, see the Wiki section.

If you want to chat about RetroNAS, come say hi on Twitter.

WARNING Security

Due to the nature of retro computing, many of the tools and protocols used in this project are COMPLETELY INSECURE.

Most of these offer little to no encryption of either data or passwords, some offer access to your system without any authentication at all, and some of the protocols have known exploits that cannot be fixed due to their legacy design.

Please consider using this software only on a private network, and at the very least behind a firewall that denies inbound traffic from the Internet.

The services RetroNAS installs will attempt to run as unprivileged user accounts where possible, but the RetroNAS installer scripts themselves all run as root/sudo (the "Adminstrator" account in Linux). These have the power to dramatically change and break working systems, so please ensure you either review the code first, or run this only on a system dedicated to the purpose.

If you want a modern, secure, open source NAS and have no interest in retro systems, projects like Open Media Vault, TrueNAS, UnRAID or vendor supplied devices like QNAP and Synology NAS devices might be a better fit.

Supported systems

RetroNAS aims to support as many legacy and retro systems as possible. If a system has some sort of network capabilities and an open source service exists to serve that capability, RetroNAS can attempt to integrate it.

Some of the projects/protocols include are:

  • Samba 4.X - LANMan (NTLMv1, NTLMv2), NetBIOS, CIFS, SMB
  • Netatalk 2.X - Older AppleShare over AppleTalk (and TCP/IP too)
  • Netatalk 3.X - More modern AFP / Apple Filing Protocol over TCP/IP only
  • EtherDFS - layer 2 file sharing for MS-DOS
  • FTP - Common file transfer protocol
  • TFTP - Lightweight trivial file transfer protocol
  • lighttpd HTTP - Web server for all HTTP clients and web browsers
  • ps3netsrv - File streaming for PlayStation 3 + CFW/HEN + MultiMan or webMAN MOD

Some of the supported systems include:

  • MS-DOS and clones such as PC-DOS and FreeDOS
  • Microsoft Windows 95 and up
  • Apple GS/OS, Classic Mac System 6 and System 7
  • Apple Mac OS8, OS9, OS X 10.0 and up
  • Atari ST with FTP client or HTTP browser
  • Amiga Workbench 3.X and up with FTP client or HTTP browser
  • Nintendo 3DS with Homebrew Channel and FBI installer
  • Nintendo GameCube with BroadBand Adaptor and Swiss homebrew
  • Sony PlayStation 2 with OpenPS2Loader
  • Sony PlayStation 3 with CFW/HEN and webMAN-MOD
  • Microsoft XBox 360 with JTAG/RGH, custom dash and ConnectX plugin
  • MiSTer FPGA
  • Many more planned

Some of the extra services include:

  • Nintendo 3DS with FBI - QR code auto generation for CIA installs over WiFi
  • WebOne HTTP proxy for legacy web browsers without SSL/TLS or Web2.0 support to browse the modern Internet
  • Syncthing secure personal file sharing with no cloud services needed
  • gogrepo - back up your entire GOG library for DRM-free offline installs
  • Many more planned

Please see the How To section for a comprehensive list of all protocols, supported systems and features.

WARNING Filenames

Due to the retro nature of computing, it's strongly advised to follow some basic guidelines when using RetroNAS:

  • Linux filesystems are case sensitive, but most old computers and operating systems are not (some new ones aren't either). It's strongly recommended to name all files and folders lower case in Linux where possible. Files like "filename.txt" and "Filename.txt" will appear identical to some legacy operating systems, and may confuse them.
  • Linux can read filenames up to 255 characters in length, but most old computers and operating systems cannot. It is strongly recommmended to keep the main RetroNAS top level directory and the main directories below it to 8 characters or fewer.
  • If wanting to share files with very old operating systems, it's strongly recommended to name them in an "8.3" format (8 charcters or fewer for the filename, 3 characters or fewer for the file extension).
  • Some operating systems can handle all sorts of interesting special characters and spaces in file names, some cannot. It's strongly recommended to avoid any characters outside of regular English characters ("a-z"), numbers ("0-9") hyphen ("-") and underscore ("_ ") and stick with character encodings such as ASCII or UTF-8.

Help Wanted

This project is in early development, but already there are a lot of people asking for it to be available as a Docker container for Synology/QNAP/UnRAID style setups.

I don't have access to these, but if you do and have experience with Docker and especially complex networking and service management and would like to contribute, please contact me.

There will be limitations with this method (port conflicts with internal SMB/CIFS, non-IP traffic like AppleTalk/EtherDFS probably won't work, etc), and likewise managing the numerous services that all need to start (and currently rely on systemd). But for simple SMB/CIFS things like MiSTer and OpenPS2Loader, there could be options to integrate in with these devices.

Client-side documentation is also quite limited. Making videos showing how to use RetroNAS with retro computers and consoles is time consuming, so if you have done so, please let me know about your videos in the "Discussion" pages.

Thanks and Credits

"If I have seen further it is by standing on the shoulders of Giants" -- Sir Isaac Newton

RetroNAS is merely a small set of scripts that utilise Ansible to install and configure a wide array of open source tools written by others.

The true heroes are the people behind each of these open source projects, all of whom have done the hard work - reverse engineering proprietary code/protocols, creating new code/protocols, writing homebrew tools and new code for old consoles and computers, and giving them all away under permissive licenses. This project would not exist without their work.

See the Wiki section for a list of all the tools included, and acknowledgement of the individual authors behind them. Without these people, this project could not exist.

Thanks to the kind humans on the OCAU (Overclockers Australia) forums Retro section who have been brave enough to test this in early alpha stages, give feedback on things, recommend packages, and be generally enthusiastic.

Thanks to Bob from RetroRGB for being excited about every dumb idea I come up with, and constantly reminding me that real people need better UX.

Thanks to sairuk for not only cleaning up my garbage code, but also for extending the project much further than I ever could.

How To

Full howto in the wiki: https://github.com/retronas/retronas/wiki

retronas's People

Contributors

birdybro avatar blathers16 avatar daleking avatar danmons avatar frederic-mahe avatar minoroffense avatar sairuk avatar teeko7 avatar thehughhefner avatar tjanas avatar toryalai1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

retronas's Issues

Mister cifs mount

Hello,

I noticed some errors in the wiki for the misterfpga configuration.

Is this ok if I paste the corrected text here ? (the wiki is in read only)

Thanks

Cockpit & Mister FPGA Install Fails

After a fresh install of RetroNAS I see this error when I enable Cockpit;

TASK [Cockpit - Install from repo] *****************************************************************************
client_loop: send disconnect: Broken pipe

I also see the same error when I enable Mister FPGA too.

I have seen this on two different installs now.

Andy

Cockpit doesn't install correctly for 32-bit or 64-bit raspberry pi os, pi 4gb?

I was able to get into retronas, but I noticed when I try to install cockpit, it will go through but at the very end it shows this very long red error message.

When I check services running, cockpit is not running. When I try to access the pi through the web browser ipaddress:9090, it doesn't work, because cockpit isn't working.

BUT if I install it manually via: `sudo apt install cockpit', then it works! Why is that?

Changing TLD path in setup results in error

I have installed RetroNAS on a privileged Proxmox lxc with Ubuntu 20.04 LTS.
After that I was trying to setup the top level directory. But that results in an error:

Can't make new window at (-1,21), size (24,80).

So I setup the path manually in the

/opt/retronas/ansible/retronas_vars.yml

Installing Mister_FPGA worked but trying to change the path again with the gui still did not work.

Configuration directory for user edited content

We need to create a configuration directory outside of the main config dir so that users settings can persist over re-installations

e.g. /home/{{ retronas_user }}/.retronas/

This will need to be also handled as part of the username change feature

Trouble recreating symlinks for ROM folders

Due to the way i copied over my rom folders I ended up with the symlinks for roms/nintentdo/famicom_disk and roms/nintendo/nes having the wrong ownership and permissions. I deleted the symlinks (confirming that the direcotires they pointed to are still there) and reran the Samba for MISTer script in the TUI but the symlinks did not get re-created.

Any idea how to correct this?

RaspiOS Desktop 32bit does not configure Samba completely

I tried installing retronas under a Hyper-V VM running Raspberry Pi OS for x86 PC (2021-01-11-raspios-buster-i386-rpd.iso)

Did the apt update thingies. Installed Samba and Mister options from retronas.
I'm trying to get the Samba share from multiple Windows 10/11 and Manjaro Linux PCs, but it denies the username (pi) and password.
Tried resetting passwords and all things in retronas-Global configuration. Also tried adding new user and configured it with retronas, still didn't work.

Tried to research and found the logs at /var/log/samba, this is how it looks like:

[2022/02/10 23:02:05.885439, 0] ../lib/param/loadparm.c:784(lpcfg_map_parameter)
  Unknown parameter encountered: "client ntlm auth"
[2022/02/10 23:02:05.885496, 0] ../lib/param/loadparm.c:1810(lpcfg_do_global_parameter)
  Ignoring unknown parameter "client ntlm auth"
[2022/02/10 23:02:05.885539, 0] ../lib/param/loadparm.c:784(lpcfg_map_parameter)
  Unknown parameter encountered: "ntlmv2 auth"
[2022/02/10 23:02:05.885606, 0] ../lib/param/loadparm.c:1810(lpcfg_do_global_parameter)
  Ignoring unknown parameter "ntlmv2 auth"
[2022/02/10 23:02:05.900006, 0] ../lib/param/loadparm.c:1861(lpcfg_do_service_parameter)
  Global parameter socket options found in service section!

Please let me know if anyone has ideas about why, I assume ntlm/ntlmv2 are already configured in retronas but somehow this particular setup did not work. It could be something within my network too, but normally I don't experience weird problems when sharing folders between and around Linux and Windows machines.

Dialog translation support / String consistency

Future state thought

Refactor the dialogs to source a strings file at the top of each script that will not only provide string consistency, reducing duplication but will also permit sourcing translations based on the $LANG or similar env vars.

something like

_CONFIG=/opt/retronas/dialog/retronas.cfg
_LANG=/opt/retronas/etc/lang/$LANG.string

rn_tcpser() {
source $_CONFIG
source $_LANG
dialog \
  --backtitle "${RN_TITLE}" \
  --title "${RN_TITLE} ${RN_TCPSER} ${RN_MENU}" \
  --clear \
  --menu "${RN_IPADDRESS}: ${MY_IPS} \
  \n
  \n${RN_PLSOPT}" ${MG} 10 \
  "01" "${RN_MAIN_MENU}" \

where

/opt/retronas/etc/lang/$LANG.string would look like

RN_TITLE=RetroNAS
RN_TCPSER=TCPSer
RN_MENU=menu
RN_IPADDRESS="My IP addresses:"
RN_PLSOPT=Please select an option
RN_MAIN_MENU=Main Menu

ps3netsrv install error

Having no success with ps3netserv installation on my pi4/4gb w/ retropie image

It fails at this part:
TASK [ps3netsrv - build layout] **********************************************************************************************************************************************
failed: [localhost] (item={'src': '../../roms/sony/playstation3/games', 'dest': 'GAMES'}) => {"changed": false, "gid": 1000, "group": "pi", "item": {"dest": "GAMES", "src": "../../roms/sony/playstation3/games"}, "mode": "0775", "msg": "src file does not exist, use "force=yes" if you really want to create the link: /data/retronas/ps3/ps3netsrv/GAMES/../../roms/sony/playstation3/games", "owner": "pi", "path": "/data/retronas/ps3/ps3netsrv/GAMES", "size": 4096, "src": "../../roms/sony/playstation3/games", "state": "directory", "uid": 1000}
failed: [localhost] (item={'src': '../../roms/sony/playstation3/iso', 'dest': 'PS3ISO'}) => {"changed": false, "gid": 1000, "group": "pi", "item": {"dest": "PS3ISO", "src": "../../roms/sony/playstation3/iso"}, "mode": "0775", "msg": "src file does not exist, use "force=yes" if you really want to create the link: /data/retronas/ps3/ps3netsrv/PS3ISO/../../roms/sony/playstation3/iso", "owner": "pi", "path": "/data/retronas/ps3/ps3netsrv/PS3ISO", "size": 4096, "src": "../../roms/sony/playstation3/iso", "state": "directory", "uid": 1000}
failed: [localhost] (item={'src': '../../roms/sony/playstation2/dvd', 'dest': 'PS2ISO'}) => {"changed": false, "gid": 1000, "group": "pi", "item": {"dest": "PS2ISO", "src": "../../roms/sony/playstation2/dvd"}, "mode": "0775", "msg": "src file does not exist, use "force=yes" if you really want to create the link: /data/retronas/ps3/ps3netsrv/PS2ISO/../../roms/sony/playstation2/dvd", "owner": "pi", "path": "/data/retronas/ps3/ps3netsrv/PS2ISO", "size": 4096, "src": "../../roms/sony/playstation2/dvd", "state": "directory", "uid": 1000}
failed: [localhost] (item={'src': '../../roms/sony/playstation1/iso', 'dest': 'PSXISO'}) => {"changed": false, "gid": 1000, "group": "pi", "item": {"dest": "PSXISO", "src": "../../roms/sony/playstation1/iso"}, "mode": "0775", "msg": "src file does not exist, use "force=yes" if you really want to create the link: /data/retronas/ps3/ps3netsrv/PSXISO/../../roms/sony/playstation1/iso", "owner": "pi", "path": "/data/retronas/ps3/ps3netsrv/PSXISO", "size": 4096, "src": "../../roms/sony/playstation1/iso", "state": "directory", "uid": 1000}
failed: [localhost] (item={'src': '../../roms/sony/playstationportable/iso', 'dest': 'PSPISO'}) => {"changed": false, "gid": 1000, "group": "pi", "item": {"dest": "PSPISO", "src": "../../roms/sony/playstationportable/iso"}, "mode": "0775", "msg": "src file does not exist, use "force=yes" if you really want to create the link: /data/retronas/ps3/ps3netsrv/PSPISO/../../roms/sony/playstationportable/iso", "owner": "pi", "path": "/data/retronas/ps3/ps3netsrv/PSPISO", "size": 4096, "src": "../../roms/sony/playstationportable/iso", "state": "directory", "uid": 1000}
failed: [localhost] (item={'src': '../../roms/videos/bdiso', 'dest': 'BDISO'}) => {"changed": false, "gid": 1000, "group": "pi", "item": {"dest": "BDISO", "src": "../../roms/videos/bdiso"}, "mode": "0775", "msg": "src file does not exist, use "force=yes" if you really want to create the link: /data/retronas/ps3/ps3netsrv/BDISO/../../roms/videos/bdiso", "owner": "pi", "path": "/data/retronas/ps3/ps3netsrv/BDISO", "size": 4096, "src": "../../roms/videos/bdiso", "state": "directory", "uid": 1000}
failed: [localhost] (item={'src': '../../roms/videos/dvdiso', 'dest': 'DVDISO'}) => {"changed": false, "gid": 1000, "group": "pi", "item": {"dest": "DVDISO", "src": "../../roms/videos/dvdiso"}, "mode": "0775", "msg": "src file does not exist, use "force=yes" if you really want to create the link: /data/retronas/ps3/ps3netsrv/DVDISO/../../roms/videos/dvdiso", "owner": "pi", "path": "/data/retronas/ps3/ps3netsrv/DVDISO", "size": 4096, "src": "../../roms/videos/dvdiso", "state": "directory", "uid": 1000}
to retry, use: --limit @/opt/retronas/ansible/install_ps3netsrv.retry

PLAY RECAP *******************************************************************************************************************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=1

Doesn't seem to think the sources exist.
So far I've:
-run as root
-manually created the directories
-edited the playbook to use the full path /data/retronas/roms/
all to no avail.

I've also checked out the install_ps3netsrv.retry file and it seems to be empty save for one line:
localhost
I've also tried updating permissions through the retronas script, with no success.

Any help would be appreciated! And if this is a dumb fix please forgive me :P

Error creating folders

I thought this error was related to Symlink, however it seems to be something with the fact that I have changed my top level directory?

retronas GC error
retronas xbox error

Questions and notes installing on a DietPi

I use DietPi as my server and as expected some of the services are already duplicated from the things I install within DietPi.

I saw your warning about lighttpd possibly replacing existing HTTP server setups, but how does it apply for the other services? I'm almost afraid to try installing Samba because I already have it running the DietPi way, and I already configured CIFS share for the MiSTer, so those would seem to be redundant in my setup.

I would like however to take advantage of your concept about symbolic links and possibly supporting multiple kinds of structures for other retro systems, but for now I don't have a multiple-use case yet outside of MiSTer.

For now, I'm checking your Check Services menu to see if retronas detects the services that DietPi already configured. Seems to work out fine, except for Syncthing.

systemctl --no-pager --full status syncthing@dietpi
Unit [email protected] could not be found.

Not sure why @ is needed in this case, but I'm able to ping my Syncthing using this, so please consider changing your script if possible.

systemctl --no-pager --full status syncthing

As a status report, I have the following existing services in DietPi that were correctly detected:
Samba
lighttpd
OpenSSH

And the following I installed from retronas without conflicts/issues under DietPi:
Cockpit
Webone

Sorry for a lot of ramble, but hope this is useful in any way.

RaspiOS Desktop 32bit error on ROM import from Smokemonster SMDBs

Got this error on RaspiOS Desktop 32bit build of retronas when trying to install "ROM import from Smokemonster SMDBs"

It seems python-is-python3 is some Ubuntu package, so it may not be there for RaspiOS.

TASK [ROM Import - Install build tools] *********************************************************
failed: [localhost] (item=['python3', 'python-is-python3', 'git']) => {"changed": false, "item": ["python3", "python-is-python3", "git"], "msg": "No package matching 'python-is-python3' is available"}
        to retry, use: --limit @/opt/retronas/ansible/install_romimport.retry

PLAY RECAP **************************************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=1

3ds cia roms -

Should the cia directory for the qr generater be a symbolic link to the roms/nintendo/3ds directory?

Assuming that its still a pending an update from before the roms folder was implemented.

ps3netsrv write permissions are bad

ps3netsrv's default write permissions appear strange. It writes a file with no read access and a sticky bit permission (when you rip a PS3 game from disc to ISO via tools like Multi-MAN).

The initial write is fine if it completes successfully, but then can't read back.

I've put in a chown/chmod command in "Global configuration" (changed it just today to include sticky-bit removal), however that's kind of annoying to have to remember to do every time the user rips a game.

ps3netsrv itself runs as the RetroNAS user via the systemd startup service, so I'm not sure if running as root changes anything.

I'll need to check upstream with the ps3netsrv developers too I think.

I'll try to do another rip later in the week and record the exact permissions that land on-disk.

Lighttpd installation error

I am unable to install Nintendo 3DS QR code generator for FBI Homebrew, when running journalctl -xe I get the below ouput, any ideas on how to fix this?

I tried installing lighttpd on its own, but same issue unfortunately.

-- Subject: Automatic restarting of a unit has been scheduled
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- Automatic restarting of the unit lighttpd.service has been scheduled, as the result for
-- the configured Restart= setting for the unit.
Feb 01 20:06:41 retronas systemd[1]: Stopped Lighttpd Daemon.
-- Subject: A stop job for unit lighttpd.service has finished
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- A stop job for unit lighttpd.service has finished.
--
-- The job identifier is 4027 and the job result is done.
Feb 01 20:06:41 retronas systemd[1]: lighttpd.service: Start request repeated too quickly.
Feb 01 20:06:41 retronas systemd[1]: lighttpd.service: Failed with result 'exit-code'.
-- Subject: Unit failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- The unit lighttpd.service has entered the 'failed' state with result 'exit-code'.
Feb 01 20:06:41 retronas systemd[1]: Failed to start Lighttpd Daemon.
-- Subject: A start job for unit lighttpd.service has failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- A start job for unit lighttpd.service has finished with a failure.

Error when trying to change "Top Level Directory"

Hi there, I'm following through your "RetroNAS Storage and Cockpit" video, but cannot make it past the point where it asks me to change my "Top Level Direcotry" to "/storage". I took a slo-mo recording of the screen as it flashes an error message. Here's what it says:

retronas_path.sh: line 22: exit: /storage: numeric argument required
/opt/retronas/dialog/common.sh: line 148: local: '01': invalid variable name for name reference

When i peeked inside the "retronas_path.sh", it looks like you may be missing an "exit 0" in the first case statement". I tried to fix it, but the "retronas_path.sh" file keeps getting overwritten when I launch retronas.sh.

Please advise.

PS3 Help

I have made a couple of ISO with my own Ps3 games they rip ok to PS3 folder on Retronas Folders but can't seem to play the games
Error seem to get is
1: ISO Type: 32
2: ISO Path (i) [/net_host0/PS3ISO/My Game ISO
3: ISO Path (0)
4: ISO Segs: 1
5: Error: 80010002 (Einval)

[wiki] MiSTer optional cifs mount line in guide leads to 'No Files' on MiSTER

In the wiki, there is a bit mentioning an optional line in the script.

"Optionally you may add an additional option to the cifs_mount.ini file to minimise the amount you need to navigate to load games

LOCAL_DIR="games""

Having this line in my cifs ini caused the core, at least GBA in my testing, display "No Files"
Once I took out this line and rebooted, the problem went away and I can load the games.
This is my first time using MiSTer admittedly, and all I've done is the initial update_all.sh.
Otherwise looking good thank you!

Getting errors can't install Need Help

Ive been trying for 3 days to install Retronas and getting the same error
when I get to the line where I have to put in chmod a+x ./install_ retronas.sh says it can't find the file does not exist
says above the previous line ECHO installation failed check previous messages

Mister FPGA: mame and hbmame roms folder non-standard with upstream project

The citfs_mount.sh script mounts the mame and hbmame rom folders into the following:

  • /media/fat/cifs/mame
  • /media/fat/cifs/hbmame

The update_all.sh script somehow downloads the roms to the following folders:

  • /media/fat/games/mame
  • /media/fat/games/hbmame

But these folders are on the internal sdcard.
Is this a downloader thing or a cifs thing?

ps3netserv installation error and incorrect symlinked layout

I am getting the below error when trying to install ps3netserv:

Not sure if this is relevant but currently running debian and the folder onto which I have set the top level directory of retronas is pointing at an SMB share mounted in a folder created in my ~/ directory.

It does work fine if unmount the SMB share, but that would mean putting my ISOs in the server itself which is a separate machine from where I would prefer to store the ISOs (the SMB share is from my truenas box).

Any advice or guidance would be appreciated.

TASK [ps3netsrv - build layout] **************************************************************************************************************************************************************
failed: [localhost] (item={'src': '../../roms/sony/playstation3/games', 'dest': 'GAMES'}) => {"ansible_loop_var": "item", "changed": false, "gid": 1000, "group": "samus", "item": {"dest": "GAMES", "src": "../../roms/sony/playstation3/games"}, "mode": "0755", "msg": "src file does not exist, use "force=yes" if you really want to create the link: /home/samus/truenas-storage/ps3/ps3netsrv/GAMES/../../roms/sony/playstation3/games", "owner": "samus", "path": "/home/samus/truenas-storage/ps3/ps3netsrv/GAMES", "size": 0, "src": "../../roms/sony/playstation3/games", "state": "directory", "uid": 1000}
failed: [localhost] (item={'src': '../../roms/sony/playstation3/iso', 'dest': 'PS3ISO'}) => {"ansible_loop_var": "item", "changed": false, "gid": 1000, "group": "samus", "item": {"dest": "PS3ISO", "src": "../../roms/sony/playstation3/iso"}, "mode": "0755", "msg": "src file does not exist, use "force=yes" if you really want to create the link: /home/samus/truenas-storage/ps3/ps3netsrv/PS3ISO/../../roms/sony/playstation3/iso", "owner": "samus", "path": "/home/samus/truenas-storage/ps3/ps3netsrv/PS3ISO", "size": 0, "src": "../../roms/sony/playstation3/iso", "state": "directory", "uid": 1000}
failed: [localhost] (item={'src': '../../roms/sony/playstation2/dvd', 'dest': 'PS2ISO'}) => {"ansible_loop_var": "item", "changed": false, "item": {"dest": "PS2ISO", "src": "../../roms/sony/playstation2/dvd"}, "msg": "Error while linking: [Errno 95] Operation not supported: b'../../roms/sony/playstation2/dvd' -> b'/home/samus/truenas-storage/ps3/ps3netsrv/PS2ISO'", "path": "/home/samus/truenas-storage/ps3/ps3netsrv/PS2ISO"}
failed: [localhost] (item={'src': '../../roms/sony/playstation1/iso', 'dest': 'PSXISO'}) => {"ansible_loop_var": "item", "changed": false, "item": {"dest": "PSXISO", "src": "../../roms/sony/playstation1/iso"}, "msg": "Error while linking: [Errno 95] Operation not supported: b'../../roms/sony/playstation1/iso' -> b'/home/samus/truenas-storage/ps3/ps3netsrv/PSXISO'", "path": "/home/samus/truenas-storage/ps3/ps3netsrv/PSXISO"}
failed: [localhost] (item={'src': '../../roms/sony/playstationportable/iso', 'dest': 'PSPISO'}) => {"ansible_loop_var": "item", "changed": false, "item": {"dest": "PSPISO", "src": "../../roms/sony/playstationportable/iso"}, "msg": "Error while linking: [Errno 95] Operation not supported: b'../../roms/sony/playstationportable/iso' -> b'/home/samus/truenas-storage/ps3/ps3netsrv/PSPISO'", "path": "/home/samus/truenas-storage/ps3/ps3netsrv/PSPISO"}
failed: [localhost] (item={'src': '../../roms/videos/bdiso', 'dest': 'BDISO'}) => {"ansible_loop_var": "item", "changed": false, "item": {"dest": "BDISO", "src": "../../roms/videos/bdiso"}, "msg": "Error while linking: [Errno 95] Operation not supported: b'../../roms/videos/bdiso' -> b'/home/samus/truenas-storage/ps3/ps3netsrv/BDISO'", "path": "/home/samus/truenas-storage/ps3/ps3netsrv/BDISO"}
failed: [localhost] (item={'src': '../../roms/videos/dvdiso', 'dest': 'DVDISO'}) => {"ansible_loop_var": "item", "changed": false, "item": {"dest": "DVDISO", "src": "../../roms/videos/dvdiso"}, "msg": "Error while linking: [Errno 95] Operation not supported: b'../../roms/videos/dvdiso' -> b'/home/samus/truenas-storage/ps3/ps3netsrv/DVDISO'", "path": "/home/samus/truenas-storage/ps3/ps3netsrv/DVDISO"}

PLAY RECAP ***********************************************************************************************************************************************************************************
localhost : ok=4 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0

Scripts not accessible

I get the below when clicking the Scripts section in retronas:

Dimmer_n3b4nVU7c6

Then it goes back to the main menu, I cant access any of the scripts unfortunately, must have something to do with today's update? because It was working fine yesterday.

Also, where are the scripts located exactly in the filesystem? running debian btw..

[Talk] Switch ansible from playbook to roles

I am in love with this project, and i'm also in love with Ansible.

At the current stage of the project, I think that having most of the logic in playbooks will lead to future problems, such as disaster recovery or update difficultie

I also think the current system with shell scripts and dialog is an excellent solution that offers great possibilities and should be future-proof.

I have a lot of experience with Ansible, so it's possible that these changes seem simple to me while it may not be so clear to you, and I apologize for that. Please note that I am offering my help in making these changes, I am also willing to make them if you are comfortable with the demonstration.

About the changes I want to propose.

At first, create a single playbook and move current logic in different roles.
The syntax is roughly the same between playbook and roles.
In this playbook, we add tags on each entry, one for each role.
Then, update the shell scripts to call tag instead of different playbook.yml (doc: https://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html)

For example, if we move install_cockpit.yml inside a role with the tag "cockpit" in the main playbook.yml, we can call this role with the command : ansible-playbook -t cockpit playbook.yml and this is where the magic start to shine, we can call multiple tags in one command, ansible-playbook -t cockpit,samba playbook.yml

Next step of the magic, we can also use host variables to further simplify the operation (doc: https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#adding-variables-to-inventory).

For example, we set in the playbook the "cockpit" role is attached to the variable "cockpit", then in the inventory, we add the variable "cockpit" to the host localhost.
The variable file is a plain ini file or a yaml file, and since the file will be saved on disk, the user's configuration will persist.
Then we only have to run ansible-playbook playbook.yml to apply the exact same configuration each time, permitting the user to update his installation with a simple and unique command.

The conversion from playbook to role can be done one playbook at a time and with minor modifications each time.
There is many other things we can do with Ansible, but I suggest to keep it simple.

Thank you so much for your time, I look forward to discussing this topic with each of you.

Retroarch Support?

So - I'm pretty sure this is an enhancement request... I've got my unraid server setup to do much of what is trying to be accomplished here, but I'd love to look into shifting it into this once someone (or I, if I get bored enough) builds a docker container for unraid.

That being said, the dealbreaker on alot of this has been a lack of support for Retroarch. What seemingly should be easy has proved difficult because while retroarch is on a number of platforms, I haven't found a single unified way that would work across all devices to network my rom collection to it - certain operating systems like windows and linux would support it, but for example, Android doesn't seem to have native support for something like SAMBA.

Thinking maybe work would need to be done from both ends (RetroNAS and Retroarch)... but maybe I'm missing something.

Navigational issue with the TUI

Reported on OCAU

"Looks like a bug in the RetroNAS menu (I'm in the terminal now, not Cockpit). If I go into "07 Advanced", then back out to main menu, then select "01 Exit RetroNAS" it takes me back into 07."

Confirmed this behaviour, raising for record.

When there was ambiguity during exit, sometime the incorrect script was called even tho the correct CHOICE was returned to the case statement.

PCEngine / NEC Symlinks Failing

This just started happening, not sure if a recent commit changes something, just posting here for awareness. Thanks!

TASK [Generic ROM dir - build NEC symlinks] ***************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => (item={'src': 'pcengine', 'dest': 'turbografx16'})
failed: [localhost] (item={'src': 'pcengine/iso', 'dest': 'pcenginecd'}) => {"ansible_loop_var": "item", "changed": false, "gid": 1000, "group": "cha", "item": {"dest": "pcenginecd", "src": "pcengine/iso"}, "mode": "0775", "msg": "src file does not exist, use \"force=yes\" if you really want to create the link: /mnt/nfs/storage/roms/nec/pcenginecd/pcengine/iso", "owner": "cha", "path": "/mnt/nfs/storage/roms/nec/pcenginecd", "size": 10, "src": "pcengine/iso", "state": "directory", "uid": 1000}
ok: [localhost] => (item={'src': 'pcengine/iso', 'dest': 'turbografxcd'})

Cockpit issue with large WD drive

Report from Twitter from a user who couldn't format and mount a large WD Elements 16TB drive via Cockpit.

Thread starts here, but we diverge into messages about half way:
https://twitter.com/lylotic/status/1490944794138673153

Only working solution was to "gdisk" the drive in Linux, format in Windows, then mount as NTFS via Cockpit, which appears to have worked. Attempts to partition in cockpit produced errors, and mounting came back with "file too large" errors.

Inevitably that caused issues with non-POSIX ownership, however "uid=pi,gid=pi" custom mount options solved that.

[Edit] no it didn't. I'll need to test NTFS more.

Strangely, another WD user with a large disk has an issue here too:
#24

I'm unsure if the issue was the drive size, something WD are doing, something on the RPi side, or cockpit. I'll try to make an upstream issue with cockpit at least to see if anyone there has seen this. I don't have a USB disk large enough to simulate this for testing myself, nor any of the WD family of USB drives.

PS3NETSERV // PSXISO Folder Performance

Not sure if this is an issue or intentional but the PS1 ROMS that I have got stored here \retrosmb\retronas\roms\sony\playstation1 are not appearing in the PS3NETSRV PSXISO Folder. Is there anyway to make that work?

I can't see my disk (Raspberry Pi OS Lite 64-bit)

Hi,

I can't see my disk from the cockpit and I can't format/partition it.

There was this error in the logs: Error loading modules: Error opening directory “/usr/lib/aarch64-linux-gnu/udisks2/modules”: No such file or directory

I was able to remove this error by creating the directory /usr/lib/aarch64-linux-gnu/udisks2/modules, but after a reboot I still don't see my disk.

The error no longer appears in the logs.

Is the problem caused by my 64-bit Raspberry Pi OS installation?

Web GUI open questions

I'm working on a web GUI over here (early and non-functional)
There are a bunch questions that should be addressed rather sooner than later:

Root privilige handling.

I'd rather not run the whole thing as root. Maybe better to have a separate process that can execute pre-defined stuff with root priviliges.

The multi-user problem

@danmons knows the project in and out. Do we have to ensure that only one user is doing stuff at the same time?

CSS

I can do some basic stuff, but it's not going to look cream-of-the-crop. Help very much appreciated

Generating web GUI options from TUI

I have a very basic proof-of-concept of this working, but it's really going to need some specific begin-end comment markers and separators (e.g. between tool name and description) to work well.

Some little technical details

Will ask Dan directly

Missing systems

I noticed some systems missing, for example:

  • sega game gear
  • sega megadrive 32x
  • bandai wonderswan color
  • snk neogeo pocket color
  • nec supergrafx (yes, that one with 5 games)

I will submit a PR in few hours, reply to this tread if you have found more missing systems

ps3netsrv Install Failure

Good day! Attempting to install ps3netsrv on a clean install, fails at the Install Build Tools task. Thanks!

TASK [ps3netsrv - Install build tools] ********************************************************************************************************************************************************************************************************************************************************
[WARNING]: Updating cache and auto-installing missing dependency: python-apt
failed: [localhost] (item=['make', 'automake', 'autoconf', 'gcc', 'g++', 'meson', 'ninja-build', 'curl', 'wget', 'build-essential', 'unzip', 'libmbedtls-dev', 'libmbedtls12', 'coreutils']) => {"ansible_loop_var": "item", "changed": false, "cmd": "apt-get install --no-install-recommends python-apt -y -q", "item": ["make", "automake", "autoconf", "gcc", "g++", "meson", "ninja-build", "curl", "wget", "build-essential", "unzip", "libmbedtls-dev", "libmbedtls12", "coreutils"], "msg": "E: Package 'python-apt' has no installation candidate", "rc": 100, "stderr": "E: Package 'python-apt' has no installation candidate\n", "stderr_lines": ["E: Package 'python-apt' has no installation candidate"], "stdout": "Reading package lists...\nBuilding dependency tree...\nReading state information...\nPackage python-apt is not available, but is referred to by another package.\nThis may mean that the package is missing, has been obsoleted, or\nis only available from another source\nHowever the following packages replace it:\n  python3-apt-dbg:armhf python3-apt:armhf python3-apt-dbg python3-apt\n  python-apt-doc python-apt-common\n\n", "stdout_lines": ["Reading package lists...", "Building dependency tree...", "Reading state information...", "Package python-apt is not available, but is referred to by another package.", "This may mean that the package is missing, has been obsoleted, or", "is only available from another source", "However the following packages replace it:", "  python3-apt-dbg:armhf python3-apt:armhf python3-apt-dbg python3-apt", "  python-apt-doc python-apt-common", ""]}

PLAY RECAP ************************************************************************************************************************************************************************************************************************************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0 

PS2 VMC - Memory cards taking MINUTES to save rather than seconds

I think this can be considered as a bug. If you use the VMC (Virtual Memory Card) function within Open PS2 Loader with your Retronas PS2 share, it will take Minutes to save Memory Card game data rather than Seconds which most (including me initially) will lose patience and just turn off the PS2 assuming it has crashed when trying to save.

XML parsing error with GOG sync

Setup the GOG sync and while refreshing the list of games I was getting the following:

20:20:16 | ( 2 / 14) fetching game details for blake_stone_aliens_of_gold...
20:20:22 | xml parsing error occurred trying to get md5 data for setup_blake_stone_-_aliens_of_gold_1.0_(28043).exe
20:20:26 | xml parsing error occurred trying to get md5 data for blake_stone_aliens_of_gold_2.0.0.2.dmg
20:20:29 | xml parsing error occurred trying to get md5 data for gog_blake_stone_aliens_of_gold_2.0.0.6.sh

Could be the XML schema changed? Or maybe they switched from md5 to another hashing scheme? Tough to say, not quite sure what the URLs are for those XML documents so I can't check their contents.

apt-key deprecated

retronas_error

Just tried to setup Cockpit through RetroNAS and ran into this error. I followed all the steps within the install guide multiple times, everything before that runs fine, but when it come to the key signing phase, I always get this error.

Is there something I can be doing wrong?

Thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.