SSH access
Remote shell, file transfer, debug
SSH is off by default for security. Turn it on through the EmulationStation menu, then connect from your computer.
Enable SSH
Toggle in ES
EmulationStation → ** ** (Start) → System Settings → Network → Enable SSH → ON.
ArchR creates /storage/.cache/services/sshd.conf (the trigger file the systemd unit watches), then systemctl start sshd.
Optional: enable on every boot
Same menu, leave the toggle on. The trigger file persists, so sshd.service starts at boot via ConditionPathExists=.
Find the device's IP
In ES → System Information shows IP. Or via ssh from any device on the same LAN:
ping archr.localmDNS publishes archr.local automatically (Avahi).
Connect
ssh root@archr.local
# or with the IP:
ssh root@192.168.x.xDefault credentials:
user root
password archrChange the password after the first successful login. The default is published — anyone on the LAN can guess it.
passwdKey-based auth (recommended)
# on your computer
ssh-copy-id root@archr.localThen disable password auth on the device (over SSH already logged in):
sudo sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo systemctl restart sshdFile transfer
scp (one-shot copy) is the simplest way to move files. ROMs, save-states, screenshots:
# upload a ROM
scp game.sfc root@archr.local:/storage/roms/snes/
# download all screenshots
scp root@archr.local:'/storage/screenshots/*' ~/Pictures/r36s-screenshots/
# upload a directory
scp -r ~/roms/psx root@archr.local:/storage/roms/For continuous sync, use rsync instead — it skips files that didn't change:
rsync -avh --delete ~/roms/snes/ root@archr.local:/storage/roms/snes/For graphical access, your file manager probably supports sftp://root@archr.local/storage/roms/.
SSH tips
EmulationStation in the way. ES locks the framebuffer; you can't run an X/wayland program over SSH. But you can stop ES and run a one-shot tool:
sudo systemctl stop emustation
# now you can run things
sudo systemctl start emustationLong-running tasks (scrape, rsync TBs, etc.). Use screen or nohup so they survive SSH disconnects:
screen -S scrape
skyscraper -p snes
# Ctrl-A D to detach. Reattach later: screen -r scrapeInspecting boot. Logs land in /var/log/boot.log (not journalctl — journald is volatile). The autostart trace is in /storage/.boot_last_step only when the previous boot hung.
Bench scripts. /flash/bench.sh <scenario> [duration] collects PSI / freq / temp / vmstat for the given duration into /storage/bench-results/. Useful when reporting a perf regression.
Disable SSH
Same menu, toggle OFF. The trigger file is removed and sshd.service stops. The next boot doesn't start it.
Security notes
- Public LAN risk: with default creds and SSH on, anyone on the same WiFi can log in. Change the password.
- Tailscale/ZeroTier: if you enable a VPN, your device is reachable from anywhere on that VPN — same advice applies.
- Port forwarding: do not forward port 22 to your handheld from your home router. The default install isn't hardened for the public internet.
- Disabling root:
sudo passwd -l rootif you'd rather no one log in as root over SSH. Thearchruser hassudofor whenever you need elevated commands.