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
- Claim the vendor interface.
- Send
hello. ConfirmprotocolVersionis 1. - Issue commands. Each request has a CRC-protected frame; the device replies with status plus an optional payload.
- Subscribe to events if you need live updates (
watchin 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
s32 --usb hello
s32 --usb schema --emit-schema-json schema.json
s32 layout --emit-layout-json layout.jsonschema 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
| Group | CLI |
|---|---|
| Session | hello, ping, reset, job, schema |
| Projects | list, pull, push, project … |
| Macros | macro, potname, knobmap |
| LFOs | lfo cfg, lfo assign |
| Racks | rack, device, stepseq |
| Maps | extmap, meta, globals |
| UI | view, 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.