← All docs
Inputs

Serial input

For props built around an Arduino Uno, Mega, or any board that opens a USB CDC serial port and prints text on press, XOSC's serial mode is the right fit.

How XOSC parses serial

By default, XOSC opens the port with a line parser: incoming bytes are buffered, split on \n, and each non-empty line becomes a trigger. The signature is serial:<port>:<trimmed-line>, so two different lines on the same port are two different bindings.

If your firmware emits raw bytes without delimiters, the raw parser mode is exposed under the hood (SerialOpenRequest.parser = "raw"); a UI toggle is on the roadmap.

Choosing a port

The inspector lists every COM port the OS reports. If your board doesn't show up, check Device Manager → Ports (COM & LPT) — most Arduino boards need the CH340 or FTDI driver installed. Once it shows there, click Refresh in XOSC.

Baud rate

Match whatever your firmware's Serial.begin() uses. The default in our list is 9600, but most modern boards run 115200 — check your sketch. A mismatched baud rate produces gibberish on the wire and you'll see scrambled "lines" in the debug log.

Example Arduino sketch

const int BUTTON_PIN = 2;
int lastState = HIGH;

void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
Serial.begin(115200);
}

void loop() {
int s = digitalRead(BUTTON_PIN);
if (s != lastState) {
lastState = s;
if (s == LOW) Serial.println("BTN1_DOWN");
else Serial.println("BTN1_UP");
}
delay(5);
}

In XOSC: switch to Serial capture, open the port at 115200, click Bind next press, then press the button. The line BTN1_DOWN becomes the binding. Press again and OSC fires.