Skip to content

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

  1. Download s32-*-darwin-arm64.tar.gz (Apple Silicon) or s32-*-darwin-x64.tar.gz (Intel) from S32-CLI Releases.
  2. Install libusb and the binary:
bash
brew install libusb
tar xf s32-1.3.10-darwin-arm64.tar.gz
sudo install -m 755 s32 /usr/local/bin/s32
s32 --version

On 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

  1. Download the linux-x64 archive from S32-CLI Releases (s32-*-linux-x64.tar.gz).
  2. Install the binary and the udev rule from the archive:
bash
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 trigger

Unplug 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).

bash
s32 --loopback hello
s32 --loopback ping
s32 --usb hello

hello prints protocol version, firmware version, serial, and device limits.

Interactive session

Keep the USB link open for multi-step edits:

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

Next