ARCH R

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.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, 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.


# 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/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-session

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. 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 archr account with sudo as a fallback.

On this page