libobsbot Rust SDK for OBSBOT cameras

License Release

libobsbot is a cross-platform Rust SDK for OBSBOT cameras. It implements the camera-control wire protocol from observed USB traffic and ships a stable C ABI so the same library can drive PTZ, image controls, white balance, HDR, FOV, face AE/focus, AI auto-framing, and audio controls from any GPL-compatible application.

Status: v0.0.0 - pre-release. The protocol is decoded for the Meet 2, including the selector-0x02 RPC CRC. Synchronous setters and getters work end-to-end against real hardware; a per-device status poller and a hot-plug watcher feed the same event channel; the C ABI exposes the full surface.

Got an OBSBOT camera we don't support? See the hardware-support matrix and open a new-hardware issue with a .pcapng attached.

Scope (v1)

The other ~200 SDK methods (file transfer, network / WiFi, Bluetooth, NDI / RTSP, gimbal presets, AI gesture, scheduling, watermark, tally light, SD card) are Tail Air / Tiny features and out of scope for v1.

Platforms

OSStatus
Linux First-class. Goal: work while the camera is also open in Zoom/OBS/Cheese - route through the uvcvideo driver rather than detaching it.
macOS Supported. Works while other apps (FaceTime, Zoom, OBS, Photo Booth, …) have the camera open.
Windows The camera must be bound to WinUSB via Zadig. Binding WinUSB removes the camera from usbvideo.sys, so it becomes unusable in Zoom/OBS until the driver is restored.

Provenance

The implementation is derived from observed USB wire behavior of a real OBSBOT Meet 2, plus public sources. Permitted inputs:

Every selector / payload constant in the per-model command table references a committed .pcapng under doc/protocol/<model>/, and the commit that adds the constant cites the capture file. See the sourcing rule for the contributor policy.

License

GPL-3.0-only. See the LICENSE file. Note that linking to liblibobsbot from a non-GPL-compatible application is incompatible with this license.