Install
s32 1.3.10 speaks protocol 1. hello reports the firmware on the connected device. A protocol mismatch is rejected instead of misparsed.
Download archives from S32-CLI Releases. Linux and macOS need libusb-1.0. The Windows zip includes the runtime DLLs.
macOS
- Download
s32-*-darwin-arm64.tar.gz(Apple Silicon) ors32-*-darwin-x64.tar.gz(Intel) from S32-CLI Releases. - Install libusb and the binary:
brew install libusb
tar xf s32-1.3.10-darwin-arm64.tar.gz
sudo install -m 755 s32 /usr/local/bin/s32
s32 --versionOn Apple Silicon, use native Homebrew (/opt/homebrew), not a Rosetta install under /usr/local. You can install to /opt/homebrew/bin instead of /usr/local/bin if that is on your PATH.
Linux
- Download the
linux-x64archive from S32-CLI Releases (s32-*-linux-x64.tar.gz). - Install the binary and the udev rule from the archive:
tar xf s32-1.3.10-linux-x64.tar.gz
sudo install -m 755 s32 /usr/local/bin/s32
sudo apt-get install libusb-1.0-0 # Debian / Ubuntu
# sudo dnf install libusb1 # Fedora
sudo install -m 644 99-s32-editor.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm triggerUnplug and replug the S32. Without the udev rule, --usb needs root. VID/PID is 0483:A56E.
You can also write the rule yourself. TAG+="uaccess" grants the logged-in desktop session permission to claim the editor interface — that claim is full device control. Do not set MODE="0666" (world-writable) on a shared machine.
SUBSYSTEM=="usb", ATTR{idVendor}=="0483", ATTR{idProduct}=="a56e", TAG+="uaccess"Windows
Download the windows-x64 zip from S32-CLI Releases, unpack it, and put s32.exe on your PATH. Keep the bundled MinGW DLLs (libusb-1.0.dll and friends) in the same folder as s32.exe.
First command
--usb is the default when a device is attached. --loopback is the default otherwise (and for every example that must run without hardware).
s32 --loopback hello
s32 --loopback ping
s32 --usb hellohello prints protocol version, firmware version, serial, and device limits.
Interactive session
Keep the USB link open for multi-step edits:
s32 --usb # TTY with no command → REPL
s32 --usb repl
s32> list
s32> pull internal 1 /tmp/p.s32p
s32> quit--loopback state is per process. A macro set in one invocation is gone in the next. Use repl or --script for multi-step simulator flows.