{"id":49435448,"url":"https://github.com/jcalado/companion-surface-d200","last_synced_at":"2026-04-29T16:40:19.643Z","repository":{"id":352809994,"uuid":"1216345778","full_name":"jcalado/companion-surface-d200","owner":"jcalado","description":"Bitfocus Companion surface plugin for the Ulanzi Stream Controller D200","archived":false,"fork":false,"pushed_at":"2026-04-21T08:28:32.000Z","size":124,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-21T09:26:34.157Z","etag":null,"topics":["bitfocus-companion","companion","companion-surface","hid","node-hid","stream-controller","stream-deck","typescript","ulanzi","ulanzi-d200"],"latest_commit_sha":null,"homepage":"https://www.ulanzi.com/products/stream-controller-d200","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jcalado.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-04-20T20:13:22.000Z","updated_at":"2026-04-21T08:28:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jcalado/companion-surface-d200","commit_stats":null,"previous_names":["jcalado/companion-surface-d200"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/jcalado/companion-surface-d200","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcalado%2Fcompanion-surface-d200","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcalado%2Fcompanion-surface-d200/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcalado%2Fcompanion-surface-d200/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcalado%2Fcompanion-surface-d200/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jcalado","download_url":"https://codeload.github.com/jcalado/companion-surface-d200/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcalado%2Fcompanion-surface-d200/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32435116,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T13:34:34.882Z","status":"ssl_error","status_checked_at":"2026-04-29T13:34:29.830Z","response_time":110,"last_error":"SSL_read: 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":["bitfocus-companion","companion","companion-surface","hid","node-hid","stream-controller","stream-deck","typescript","ulanzi","ulanzi-d200"],"created_at":"2026-04-29T16:40:18.696Z","updated_at":"2026-04-29T16:40:19.637Z","avatar_url":"https://github.com/jcalado.png","language":"JavaScript","funding_links":["https://ko-fi.com/jcalado"],"categories":[],"sub_categories":[],"readme":"# companion-surface-ulanzi-d200\n\nCompanion surface plugin for the **[Ulanzi Stream Controller D200](https://www.ulanzi.com/products/stream-controller-d200)**: 13 physical\nbuttons on a 5×3 grid plus a status window, 196×196 px icons.\n\nBuilt against [`@companion-surface/base`](https://github.com/bitfocus/companion-surface-api).\nWire protocol reverse-engineered with help from\n[redphx/strmdck](https://github.com/redphx/strmdck) and USBPcap captures of\nUlanzi Studio.\n\n## Features\n\n- 13 configurable buttons, each with a Companion-rendered icon\n- Brightness control from Companion\n- Button press/release events\n- Small-window status display with seven modes (analog dial clock, four\n  digital clock variants (time; time + weekday; time + date; date + time +\n  weekday), system stats (CPU / RAM), or a custom background image),\n  selectable per-surface via the ⚙ **Config** panel. Digital modes honour a\n  12/24-hour checkbox. Background images are loaded from a local file path\n  (PNG/JPEG), automatically resized and center-cropped to 458×196.\n\n## Quickstart\n\nRequires **Companion 4.3.0+** and **Node 22**.\n\n```bash\nyarn install\nyarn build\n```\n\nThen register the build directory with Companion as a developer module and\nenable it under **Modules → Surfaces**. Windows works out of the box; Linux\nneeds a udev rule and a USB 2.0 hub.\n\nSee [**SETUP.md**](./SETUP.md) for the full walkthrough, platform notes,\nfirmware quirks, and troubleshooting.\n\n## Development\n\n```bash\nyarn dev       # tsc --watch\nyarn build     # → dist/\nyarn package   # full package for Companion\n```\n\n## Not yet implemented\n\n- Keyboard emulation on interface 1 (intentionally left to `usbhid`)\n\n## Support the project\n\nIf this plugin is useful to you, you can buy me a coffee at\n[ko-fi.com/jcalado](https://ko-fi.com/jcalado). Support helps keep the project\nmaintained and encourages future work (more surfaces, bug fixes, features).\n\n## License\n\nMIT.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcalado%2Fcompanion-surface-d200","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjcalado%2Fcompanion-surface-d200","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcalado%2Fcompanion-surface-d200/lists"}