Skip to content

USB protocol

s32 is the supported client for the S32 Editor USB interface. This page is the public contract overview: vendor interface, session, discovery, and command groups. You do not need firmware sources to use s32.

Interface

The S32 exposes a vendor USB interface (bulk endpoints 0x05 / 0x85, VID 0483, PID A56E). That interface is exclusive: close the web editor before s32 --usb.

There is no password on this interface. Whoever claims it can inspect and change the live project. This is not a network service.

Protocol version is 1. hello reports it. A mismatch fails the session instead of misparsing frames.

CLI version (s32 --version) is independent of the firmware patch on the device.

Session

  1. Claim the vendor interface.
  2. Send hello. Confirm protocolVersion is 1.
  3. Issue commands. Each request has a CRC-protected frame; the device replies with status plus an optional payload.
  4. Subscribe to events if you need live updates (watch in the CLI).

If a command is not available on the connected firmware, s32 prints the status the device returned (Forbidden for panel-only view commands, TooMany if mutating commands are issued faster than the device will accept).

Panel-only actions stay on the device. Library commands such as project delete, device add, device remove, rack clear, and push remain; s32 still prompts unless --yes is passed. view nav is hub-only (perform, main, racks, …) and teleports without pushing the panel Back stack.

Discovering the device

bash
s32 --usb hello
s32 --usb schema --emit-schema-json schema.json
s32 layout --emit-layout-json layout.json

schema lists device types, parameter names, and enum tables (including macro modes and menus). layout describes the on-disk project record for tools that decode .s32p files.

Command groups

GroupCLI
Sessionhello, ping, reset, job, schema
Projectslist, pull, push, project …
Macrosmacro, potname, knobmap
LFOslfo cfg, lfo assign
Racksrack, device, stepseq
Mapsextmap, meta, globals
UIview, screen, watch

Named tokens (mode=cc, clockMode=internal, view nav racks) are CLI sugar. On the wire, values are the integers in the schema enum tables.