⚠️ This project won't be maintained anymore as it is now replaced with another one using the sdk provided by obsbot and will offer more control for your camera. It is a complete rewrite from scracth so you should take a look at OBSNIX instead !
A desktop application for controlling OBSBOT cameras (Tiny SE, Tiny 2, etc.) AI tracking modes via USB. Built with Electron and Node.js.
-
AI Mode Control: Switch between different AI tracking modes:
- Stop AI
- Normal tracking
- Upper body focus
- Close up
- Headless mode
- Lower body focus
- Desk mode
- Whiteboard mode
- Hand tracking
- Group mode
-
Live Video Preview: Real-time camera feed with automatic reconnection
-
Seamless Operation: Visual overlay during mode changes with last frame preservation
-
Multi-Camera Support: Automatic detection of OBSBOT cameras with dynamic PID resolution
-
Persistent Settings: Remembers window size, position, and selected camera
-
Device Diagnostics: Built-in USB device scanner for troubleshooting
- OBSBOT Tiny SE
- OBSBOT Tiny 2
- Other OBSBOT cameras using the same USB control protocol
- Operating System: Linux (tested on Ubuntu/Debian)
- Node.js: Version 16 or higher
- USB Access: Proper permissions to access USB devices
-
Clone the repository:
git clone <repository-url> cd t2control
-
Install dependencies:
npm install
-
Set up USB permissions (Linux only):
sudo ./setup_udev.sh
This script creates udev rules that allow non-root access to OBSBOT USB devices.
-
Start the application:
npm start
The setup_udev.sh script is crucial for proper operation on Linux systems. It:
- Creates a udev rule for OBSBOT devices (Vendor ID: 3564)
- Allows users in the
plugdevgroup to access OBSBOT cameras - Automatically reloads udev rules and triggers device detection
What the script does:
# Creates /etc/udev/rules.d/99-obsbot.rules with:
SUBSYSTEM=="usb", ATTRS{idVendor}=="3564", MODE="0666", GROUP="plugdev"
# Reloads udev rules and triggers device events
sudo udevadm control --reload-rules
sudo udevadm triggerManual setup (if script doesn't work):
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="3564", MODE="0666", GROUP="plugdev"' | sudo tee /etc/udev/rules.d/99-obsbot.rules
sudo udevadm control --reload-rules
sudo udevadm trigger- Connect your OBSBOT camera via USB
- Launch the application
- Select your camera from the dropdown (only OBSBOT cameras will be listed)
- Click "Display Video" to start the camera feed
- Use AI Control buttons to change tracking modes
- Video Section: Live camera preview with device selection and controls
- AI Control: Grid of buttons for different tracking modes
- Device Diagnostics: Collapsible section for USB device troubleshooting
- The video stream will briefly pause when changing AI modes (this is normal)
- The last frame is preserved during mode changes for visual continuity
- Use the refresh button (🔄) if you connect a camera after launching the app
- Check USB connection: Ensure the camera is properly connected
- Verify permissions: Run the setup_udev.sh script
- Check device recognition:
lsusb | grep 3564 - Use diagnostics: Open "Device Diagnostics" in the app and click "Scan OBSBOT Devices"
- Check logs: Open Developer Tools (Ctrl+Shift+I) and look for errors
- Verify camera model: Some older models may not support all commands
- Try different interface: Use the diagnostic scanner to check USB interfaces
If you see LIBUSB_ERROR_ACCESS, the USB permissions are not set correctly:
sudo ./setup_udev.sh
# Disconnect and reconnect the camera