SSH access
Remote shell, file transfer, debug
SSH is off by default, for security. Turn it on in archr-launcher, then connect from your computer.
Enable SSH
Toggle in the launcher
Open Settings › Network › Network services › SSH and switch it ON (ssh.enabled=1).
The launcher creates the marker file /storage/.cache/services/sshd.conf and starts SSH with systemctl start sshd.
Optional: enable on every boot
Same menu, leave the toggle on. At boot, the network-services script recreates the marker from ssh.enabled, and systemd checks ConditionPathExists= when it starts sshd.service.
Find the device's IP
Look under Settings › Network › Wi-Fi (or in System information › Network, opened with Y on the Settings home). Or via SSH/ping 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, so anyone on the LAN can guess it. Change it in Settings › Network › Network services › Root password (SSH). Running passwd alone does not update the password ArchR has saved, and the old one can come back at boot.
Key-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/roms/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
Launcher in the way. archr-launcher runs fullscreen under sway; to run another graphical tool from SSH, stop the launcher session first:
sudo systemctl stop archr-launcher-session
# now you can run graphical tools
sudo systemctl start archr-launcher-sessionLong-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. Use /var/log/boot.log for autostart output and journalctl for the current boot. /storage/.boot_last_step tracks the run in progress; if a trace is left over, it is copied to /storage/.boot_last_hang.
Bench scripts. bench.sh <scenario> [duration] collects PSI / freq / temp / vmstat for the given duration into /storage/bench-results/. Useful when reporting a perf regression. The script is not installed in the image: take it from tools/bench.sh in the source tree and copy it to the device, for example to /flash.
Disable SSH
Same menu, toggle OFF. The marker file is removed and sshd.service stops. The next boot doesn't start it.
Security notes
- On a public LAN, anyone on the same WiFi can log in if SSH is on and the credentials are the default. Change the password.
- With Tailscale or ZeroTier enabled, your device is reachable from anywhere on that VPN. The same advice applies.
- Do not forward port 22 to your handheld from your home router: the default install isn't hardened for the public internet.
- To prevent remote SSH access, turn SSH off in the launcher. Do not count on an
archraccount withsudoas a fallback.