ARCH R

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 SettingsNetworkEnable 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.local

mDNS publishes archr.local automatically (Avahi).


Connect

ssh root@archr.local
# or with the IP:
ssh root@192.168.x.x

Default credentials:

user        root
password    archr

Change the password after the first successful login. The default is published — anyone on the LAN can guess it.

passwd

# on your computer
ssh-copy-id root@archr.local

Then 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 sshd

File 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 emustation

Long-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 scrape

Inspecting 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 root if you'd rather no one log in as root over SSH. The archr user has sudo for whenever you need elevated commands.

On this page