{"id":39133510,"url":"https://github.com/fiverecords/tallyccupro","last_synced_at":"2026-01-28T19:12:09.341Z","repository":{"id":332220681,"uuid":"1132651382","full_name":"fiverecords/TallyCCUPro","owner":"fiverecords","description":"TallyCCU Pro is an open-source hardware/software solution that enables full CCU (Camera Control Unit) control of Blackmagic Design cameras via SDI, along with tally light integration with vMix.","archived":false,"fork":false,"pushed_at":"2026-01-16T23:14:56.000Z","size":11752,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-18T05:58:10.491Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fiverecords.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-12T09:05:49.000Z","updated_at":"2026-01-16T23:13:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/fiverecords/TallyCCUPro","commit_stats":null,"previous_names":["fiverecords/tallyccupro"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/fiverecords/TallyCCUPro","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fiverecords%2FTallyCCUPro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fiverecords%2FTallyCCUPro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fiverecords%2FTallyCCUPro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fiverecords%2FTallyCCUPro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fiverecords","download_url":"https://codeload.github.com/fiverecords/TallyCCUPro/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fiverecords%2FTallyCCUPro/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28552098,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T20:59:07.572Z","status":"ssl_error","status_checked_at":"2026-01-18T20:59:02.799Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-17T21:21:59.494Z","updated_at":"2026-01-18T22:00:30.684Z","avatar_url":"https://github.com/fiverecords.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TallyCCU Pro\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eOpen-source CCU control system for Blackmagic Design cameras with vMix tally integration using the Blackmagic Arduino SDI Shield\u003c/strong\u003e\n\u003c/p\u003e\n\nTallyCCU Pro is an Arduino-based solution that provides full Camera Control Unit (CCU) functionality for Blackmagic cameras via SDI using the Blackmagic Arduino SDI Shield, along with real-time tally light integration with vMix. Control your cameras from a web browser, Bitfocus Companion, or build your own integration using the TCP API.\n\n---\n\n## Features\n\n### Camera Control\n- **Full CCU Parameters**: Iris, focus, zoom, white balance, ISO, shutter, ND filters\n- **Color Correction**: Lift, gamma, gain, offset with visual color wheels\n- **Display Settings**: Zebra, peaking, focus assist, LUT selection\n- **Audio Control**: Mic levels, headphone mix, phantom power\n- **PTZ Support**: Pan/tilt velocity and memory presets (for supported cameras)\n\n### Tally System\n- **vMix Integration**: Automatic tally lights from vMix program/preview state\n- **Flexible Mapping**: Map any vMix input to any camera ID\n- **Adjustable Brightness**: Independent front/rear tally brightness control\n\n### Connectivity\n- **Web Interface**: Full control from any browser on your network\n- **Companion Module**: Stream Deck integration via Bitfocus Companion\n- **TCP API**: Real-time bidirectional sync on port 8098\n- **Serial Configuration**: Initial setup without network access\n\n### Preset System\n- **Save/Load Presets**: Store complete camera configurations\n- **Per-Camera Presets**: 5 presets per camera, stored on SD card\n- **Group Selection**: Choose which parameter groups to include in presets\n\n---\n\n## Hardware Requirements\n\n| Component | Model | Notes |\n|-----------|-------|-------|\n| Microcontroller | **Arduino Mega 2560** | Must be Mega (not Uno) due to memory requirements |\n| Network | **Arduino Ethernet Shield 2** | W5500 chipset, includes SD card slot |\n| SDI Interface | **Blackmagic 3G-SDI Shield** | For Arduino, directly from Blackmagic |\n| Storage | **MicroSD Card** | 1-32GB, must be formatted correctly (see below) |\n| Power | **9-12V DC Power Supply** | Required - USB power alone is insufficient |\n\n### Shield Stacking Order\n\n```\n        +---------------------+\n    3   |  Blackmagic SDI     |  \u003c- Top\n        +---------------------+\n    2   |  Ethernet Shield    |  \u003c- Middle  \n        +---------------------+\n    1   |  Arduino Mega 2560  |  \u003c- Bottom\n        +---------------------+\n```\n\n### CRITICAL: I2C Bridge Wires Required\n\nThe Blackmagic SDI Shield is designed for Arduino Uno, which has I2C pins at A4/A5. The Arduino Mega has I2C on different pins (20/21), so you MUST add two jumper wires on the **Blackmagic SDI Shield**:\n\n```\nBridge connections on SDI Shield:\n  - A4 --\u003e SCL\n  - A5 --\u003e SDA\n```\n\nThese bridges route the I2C signals to the correct pins. Without them, the SDI shield will not communicate with the Arduino Mega.\n\n### CRITICAL: External Power Required\n\nThe system requires external power (9-12V DC) connected to the Blackmagic SDI Shield's power input. USB power alone does not provide enough current and the system will fail to boot properly.\n\n---\n\n## SD Card Setup\n\n### Partition and Format Requirements\n\nThe SD card MUST meet these requirements:\n\n1. **MBR Partition Table** (not GPT) - Windows and Mac sometimes create GPT partitions\n2. **Single Partition** - Only one partition on the card\n3. **Correct Filesystem**:\n   - Cards 2GB or smaller: FAT16\n   - Cards 4GB or larger: FAT32\n   - **exFAT will NOT work**\n\n### Recommended Formatting Procedure\n\n**Do NOT use Windows Explorer or Mac Disk Utility** - they may create incompatible partition tables.\n\nUse the official SD Card Formatter from the SD Association:\n1. Download from: https://www.sdcard.org/downloads/formatter/\n2. Select your SD card\n3. Choose \"Overwrite format\" (not quick format)\n4. Format the card\n\nIf you still have issues, use the SdFormatter sketch included in the SdFat library examples.\n\n### Copy Web Interface Files\n\nAfter formatting, copy these files to the SD card root:\n\n```\nSD Card Root/\n+-- index.html      (124 KB - Main CCU interface)\n+-- tally.html      (11 KB - Tally configuration)\n+-- sdcard.html     (18 KB - File manager)\n```\n\n---\n\n## Installation\n\n### Step 1: Hardware Assembly\n\n1. Stack shields in order: Mega -\u003e Ethernet -\u003e SDI Shield\n2. **Add I2C bridge wires**: A4 to pin 20, A5 to pin 21\n3. Insert formatted SD card into Ethernet Shield slot\n4. Connect 9-12V power supply to SDI Shield\n5. Connect SDI output to your camera(s)\n\n### Step 2: Arduino Firmware\n\n**Required Libraries** (install via Arduino Library Manager):\n- `SdFat` by Bill Greiman\n- `Ethernet` (built-in)\n\n**Blackmagic Library** (manual install):\n1. Download from Blackmagic website (included with Desktop Video software)\n2. Copy to Arduino libraries folder\n\n**Upload Firmware**:\n1. Open `Arduino/TallyCCUPro.ino` in Arduino IDE\n2. Select Board: `Arduino Mega or Mega 2560`\n3. Select Port: Your Arduino's COM port\n4. Click Upload\n\n### Step 3: Initial Network Configuration\n\nConnect via serial monitor (115200 baud) or use the Serial Configurator tool:\n\n```\nAvailable commands:\n  ip 192.168.1.100        Set Arduino IP address\n  subnet 255.255.255.0    Set subnet mask  \n  gateway 192.168.1.1     Set gateway\n  vmixip 192.168.1.50     Set vMix computer IP\n  status                  Show current configuration\n  reset                   Restart Arduino\n```\n\n### Step 4: Verify Installation\n\n1. Open browser: `http://YOUR_ARDUINO_IP/`\n2. You should see the CCU Control interface\n3. Select a camera and adjust tally brightness to test\n\n---\n\n## Web Interface\n\nAccess at `http://YOUR_ARDUINO_IP/`\n\n### CCU Control (index.html)\n\nThe main control interface featuring:\n- **Camera Selector**: Switch between cameras 1-8\n- **Parameter Groups**: Lens, Video, Audio, Color Correction, Display, Tally, PTZ\n- **Color Wheels**: Visual lift/gamma/gain/offset adjustment\n- **Sliders**: Precise control with step buttons and reset\n- **Presets**: Save and load 5 presets per camera\n\n### Tally Configuration (tally.html)\n\n- **vMix IP**: Address of computer running vMix\n- **Input Mapping**: Map vMix inputs to camera IDs\n- **Connection Status**: Real-time indicator\n\n### SD Card Manager (sdcard.html)\n\n- **Upload**: Drag and drop files\n- **Download**: Backup presets\n- **Delete/Rename**: File management\n\n---\n\n## Bitfocus Companion Module\n\n### Installation\n\n1. Copy `companion-module/` to Companion's dev modules directory\n2. Run `yarn install` inside the folder\n3. In Companion Settings, set developer modules path\n4. Add connection: \"TallyCCU Pro\"\n\n### Actions Available\n\n- All CCU parameters (set/increase/decrease/reset)\n- Load/Save presets\n- Change active camera\n- vMix connection toggle\n\n---\n\n## TCP Protocol (Port 8098)\n\nFor custom integrations, connect via TCP to port 8098.\n\n### Commands (send to Arduino)\n\n```\nCAM:X                           Select camera (X = 1-8)\nPARAM:key=value                 Set parameter\nPRESET:LOAD:cameraId,presetId   Load preset\nPRESET:SAVE:cameraId,presetId   Save preset\nPING                            Keep-alive\n```\n\n### Events (from Arduino)\n\n```\nCAM:X                           Camera changed\nPARAM:cameraId:key=value        Parameter updated\nTALLY:cameraId:state            Tally changed (P/V/O)\nPRESETSAVED:cameraId,presetId,name   Preset saved\nPONG                            Ping response\n```\n\n---\n\n## Project Structure\n\n```\nTallyCCUPro/\n|-- Arduino/               Arduino source code\n|-- sdcard/                 Web interface files  \n|-- companion-module/       Bitfocus Companion module\n|-- tools/                  Serial configurator\n+-- README.md\n```\n\n---\n\n## Memory Usage\n\nTallyCCU Pro is optimized for Arduino Mega's limited 8KB RAM:\n- Static buffers (no String objects)\n- Parameter caching\n- Efficient TCP handling\n- Typical free RAM: ~900 bytes\n\n---\n\n## Troubleshooting\n\n| Problem | Solution |\n|---------|----------|\n| Web interface not loading | Verify SD card is MBR/FAT16 or FAT32, reformat with SD Association tool |\n| SDI shield not responding | Check I2C bridge wires (A4-20, A5-21) |\n| System not booting | Connect external 9-12V power, USB is insufficient |\n| vMix tally not working | Verify vMix IP in tally.html, check vMix TCP API enabled |\n| Camera not responding | Verify camera ID, check SDI connection |\n\n---\n\n## Author\n\n**Joaquin Villodre** - [github.com/fiverecords](https://github.com/fiverecords)\n\n---\n\n## Links\n\n- [Blackmagic SDI Shield](https://www.blackmagicdesign.com/products/blackmagicshield)\n- [Bitfocus Companion](https://bitfocus.io/companion)\n- [SD Association Formatter](https://www.sdcard.org/downloads/formatter/)\n\n## License\n\nThis project is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0).\n\nYou are free to use, modify and redistribute this project for non-commercial purposes, provided that you give appropriate credit and keep derivatives under the same license.\n\n## Disclaimer\n\nThis project is not affiliated with, endorsed by, or sponsored by Blackmagic Design or vMix.\nBlackmagic Design and vMix are registered trademarks of their respective owners.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffiverecords%2Ftallyccupro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffiverecords%2Ftallyccupro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffiverecords%2Ftallyccupro/lists"}