Overview
The StreamDock CPP SDK is an SDK for directly controlling StreamDock devices on Linux, Windows, and macOS systems without relying on software. You can easily achieve direct device control through this SDK.

How StreamDock CPP SDK Communicates with Devices
The StreamDock CPP SDK uses HIDAPI to communicate with devices. HIDAPI is a simple cross-platform library for communicating with HID devices. View details
On different platforms, the SDK uses different system APIs to monitor device plug/unplug events:
- Windows: Uses Windows message mechanism (WM_DEVICECHANGE) to monitor device hot-plug events
- Linux: Uses
libudevto monitor device plug/unplug events, implementing device hot-plug support - macOS: Uses
IOKitframework to monitor device events
Supported Device Models
StreamDock CPP SDK currently supports the following device models:
- StreamDock 293/293s (Old platform)
- StreamDock 293V3/293sV3 (New platform)
- StreamDock N1/N3/N3V2/N3V25 (New platform)
- StreamDock N4/N4Pro (New platform)
- StreamDock M3/M18/M18V2/M18V3 (New platform)
- K1 Pro (New platform)
- StreamDock XL (New platform)
Platform Features
Linux
- Device Hot-plug Monitoring: Real-time monitoring of device plug/unplug events through
libudev - Multi-device Support: Can connect to and control multiple StreamDock devices simultaneously
- Asynchronous Event Processing: Supports asynchronous processing of device events for improved response speed
- Permission Management: Supports configuring device access permissions through udev rules or running with sudo permissions
Windows
- Device Hot-plug Monitoring: Real-time monitoring of device plug/unplug events through Windows message mechanism (WM_DEVICECHANGE)
- Multi-device Support: Can connect to and control multiple StreamDock devices simultaneously
- Asynchronous Event Processing: Supports asynchronous processing of device events for improved response speed
- DLL Support: Provides pre-compiled transport.dll to simplify integration process
macOS
- Multi-device Support: Can connect to and control multiple StreamDock devices simultaneously
- Asynchronous Event Processing: Supports asynchronous processing of device events for improved response speed
- Permission Management: Requires granting application permissions to access USB devices
Old vs New Platform Differences
- Old Platform Devices (e.g., 293/293s): All commands must be executed serially (synchronously), asynchronous operations are not supported
- New Platform Devices (e.g., N series, M series): Support asynchronous command execution with faster response speed
TIP
C++ version 17 or above is recommended, Linux recommends Ubuntu 20.04 or above, zlib recommends 1.2.11, libpng recommends 1.6.37, libjpeg recommends v9b, OpenCV: 4.12.0 or higher version (pre-compiled versions provided for Windows platform)
