This module uses the Sony Visca protocol to control PTZ cameras. While it is focused on features and protocols implemented in Sony cameras it does work with many other PTZ cameras that us the VISCA protocol over UDP.
- Companion v3.5 or later — This module requires
@companion-module/basev1.11+ which uses thenode22runtime, supported starting in Companion v3.5. - Latest camera firmware — Sony periodically releases firmware updates that fix VISCA protocol issues. Please ensure your camera is running the latest available firmware before reporting bugs. Firmware updates can be found on Sony's support site.
- Go to the Actions tab on GitHub
- Find the latest workflow run for the branch you want to test
- Download the pkg artifact (it will save as
pkg.zipcontaining the module.tgz) - Extract the
.tgzfile from the zip - In Companion, go to the Modules tab and click Import module package
- Select the
.tgzfile to install it - Go to the Connections tab and open your Sony VISCA connection's config
- Click the pencil icon next to Module Version and select the imported version from the dropdown
We've recently added per-model inquiry polling, new camera support, and protocol-accurate byte-level parsing for all supported camera families. Much of this was implemented from protocol documentation without hardware access. We need community help verifying behavior on cameras other than the BRC-X400.
If you have any of the following cameras, please test the module and report any issues with variables showing incorrect values, feedbacks not highlighting correctly, or unexpected log errors.
Untested models:
- BRC-AM7
- BRC-X1000
- BRC-H780
- BRC-H800
- BRC-X401
- ILME-FR7 / ILME-FR7K
- SRG-A40 / SRG-A12
- SRG-X40UH / SRG-H40UH
- SRG-120DH
- SRG-201SE / SRG-300SE / SRG-301SE
- SRG-300H
- SRG-X120 / SRG-X400 / SRG-X402
- SRG-201M2 / SRG-HD1M2
BRC-X1000 / BRC-H780 / BRC-H800 — Pan/tilt position The X1000 family uses 5-nibble (20-bit) pan coordinates with 4-nibble (16-bit) tilt, a mixed format unique to this family. Please verify:
- Pan and tilt position variables update correctly as the camera moves
- Pan and tilt position bars track smoothly from end to end
- If image flip is supported on your model, confirm the tilt position bar adjusts when flip is toggled
BRC-X1000 / BRC-H780 / BRC-H800 — Inquiry block 03 Block 03 (Enlargement) was recently added for the X1000 family. Please verify these variables update correctly:
- NR 2D/3D Level, Gamma, Image Flip, Color Gain, AE Speed, NR Level, Chroma Suppress, Gain Limit
ILME-FR7 / ILME-FR7K — Individual inquiry polling The FR7 does not support block inquiries. Polling uses individual VISCA queries instead. Please verify:
- Zoom position, focus position, focus mode, power, and WB mode update in real time
- Pan/tilt position bar tracks correctly (FR7 uses 20-bit coordinates on both axes)
- Low-priority state updates work: knee setting/mode, detail mode, auto iris, AGC, auto shutter, ND filter mode/auto/clear
- If ceiling-mounted, confirm the tilt position bar range adjusts correctly
SRG-X40UH / SRG-H40UH — Inquiry blocks 01-04 All four blocks were corrected from protocol documentation. Please verify:
- White balance speed and detail level show correct values (previously read from wrong byte positions)
- Block 02 variables: spotlight, flicker cancel, IR cut filter, image stabilizer, WB offset, camera ID
- Block 03/04 variables: AF timing, NR levels, image flip, AE speed, detail settings, visibility enhancer
BRC-AM7 — New model support Newly added model using FR7-like individual inquiries. Please verify:
- Basic connection and polling works
- ND filter, audio level, and recording controls function correctly
- Auto framing toggle works
- Red, green, and yellow tally commands work with keepalive
- 20-bit pan/tilt position variables and bars track correctly
- Tele convert and knee controls respond as expected
SRG-300H — New model support Newly added model using legacy-style 6-block inquiries. Please verify:
- Basic connection and polling works
- All 6 inquiry blocks (00-05) return correct variable values
- ICR, wide dynamic range, and image stabilizer controls function correctly
- 16 camera presets work correctly (recall and save)
SRG-A40 / SRG-A12 — New model support These are newly added models. Please verify:
- Basic connection and polling works
- Gain limit action is available and shows correct values
- Block 03 variables include chroma suppress and gain limit
- Block 04 variables include defog and defog level
SRG-120DH / SRG-201SE / SRG-300SE / SRG-301SE — Inquiry blocks 03-05 Blocks 03-05 were recently added for legacy cameras. Please verify:
- Block 03: AF timing, color gain, gamma, high sensitivity, NR level, chroma suppress, gain limit
- Block 04: defog status
- Block 05: color hue
- Fixed WB mode presets (Auto, Indoor, Outdoor, One Push, Manual, Auto2) appearing on FR7/AM7 cameras that don't support those modes
- Fixed FR7/AM7 WB mode presets (ATW, Memory A, Preset) appearing on non-FR7 cameras
- Achieved full protocol command coverage across all 10 Sony VISCA protocol documents
- Added Ramp Curve action, variable, preset, and polling (X400/X40UH/X1000/FR7/AM7)
- Added Low Light Basis Brightness on/off/toggle, level, feedback, variable, and polling (X400/X40UH/X1000)
- Added Detail Setting on/off with toggle for FR7/AM7
- Added Preset Separate Mode (Speed/Duration) for FR7/AM7
- Added High-Res Zoom In/Out/Stop with 16-bit speed for FR7/AM7
- Added per-color Color Gain Direct and Color Hue Direct (master + R/G/B/Cyan/Magenta/Yellow) for legacy cameras
- Added Image Stabilizer Hold mode for SRG-300H
- Added Video Format Select for X400/X40UH
- Added Standby Mode (Side/Neutral) for X400/X40UH
- Added Picture Effect (Off/Neg.Art/B&W) for X400/X40UH/legacy cameras
- Added White Balance Offset Direct (-7 to +7) for advanced cameras
- Added Multi Selector (10 directions + press/release) for FR7/AM7
- Added Multi Function Dial Set and Rotate (CW/CCW with steps) for FR7/AM7
- Added Color System (HDMI/DVI YUV/GBR) for 120DH/360SHE/300H
- Added Info Display on/off for legacy cameras
- Fixed preset IDs using hex strings instead of 1-based integers, which caused silent failures on alphanumeric values (#100)
- Updated development build install instructions for Companion v4.2+
- Added BRC-AM7 camera support (group 6) with FR7-like individual inquiries, 20-bit pan/tilt, ND filter, audio, recording, auto framing, tele convert, knee controls, and red/green/yellow tally
- Added SRG-300H camera support (group 3d) with legacy-style 6-block inquiries, 16-bit pan/tilt, ICR, WD mode, image stabilizer, brightness, 30x zoom, and 16 presets
- Added hostname support in Target IP config field with DNS resolution to IPv4
- Added PTZ Auto Framing toggle action, variable, feedback, and preset for FR7 and SRG-A40/A12
- Added FR7 White Balance Mode action with ATW / Memory A / Preset choices and presets
- Added FR7 Push AF/MF preset (press-and-hold)
- Added tally keepalive support for all tally-capable models (X400, X1000, 360SHE, FR7)
- Added tally toggle/on/off action modes with 10-second keepalive timer
- Added tally red variable and feedback for all tally-capable models
- Added tally green variable, feedback, and preset for FR7
- Added FR7 to CAP_TALLY capability set
- Added CAP_AUTO_FRAMING capability set for FR7 + SRG-A40/A12
- Added FR7 WB mode choices to White Balance Mode feedback
- Added preset filtering by feedback availability (prevents model-filtered feedbacks from showing on wrong models)
- Added optimistic state updates for tally and auto framing actions
- Added low-priority inquiry polling for tally state and auto framing state
- Added degree-based pan/tilt positioning with Raw/Degrees unit toggle on the Absolute Position action
- Added Pan/Tilt Relative Move action for offset moves in degrees (e.g. "+10° pan")
- Added panDegrees and tiltDegrees variables showing current position in degrees
- Added PT At Position feedback that highlights when camera is within a configurable tolerance of a target degree position
- Added degree-based presets: Center, Pan Left/Right 90°, Tilt Up 45°, Pan ±10° relative
- Added per-model degree-to-raw conversion covering all supported camera families
- Fixed pan/tilt position inquiry not triggering feedback updates (checkFeedbacks was missing)
- Updated README with minimum Companion version (v3.5) and camera firmware requirements
- Added SRG-360SHE and SRG-280SHE camera support (group 3c) with 20-bit pan/tilt, block inquiries 00-03, tally, and zoom ratio tables
- Added Bright exposure mode to exposure mode actions and toggle for cameras that support it (120DH, 300SE/301SE/201SE, 360SHE/280SHE)
- Added Bright Mode preset (toggle between Auto and Bright)
- Added CAP_TALLY capability set for tally support across X400/X1000 and 360SHE families
- Refactored pan/tilt absolute position command to support 4+4, 5+4, and 5+5 nibble encoding across all camera families
- Added inquiry polling with per-family block definitions for real-time camera state (zoom, focus, iris, gain, shutter, exposure mode, WB mode, pan/tilt position, and many more)
- Added per-model filtering of actions, presets, feedbacks, and variables based on camera capabilities
- Added 97+ variables with confirmed state from camera polling
- Added 14 boolean feedbacks (focus mode, exposure mode, WB mode, zoom mode, backlight, spotlight, exposure comp, recording, PT slow mode, selected preset, last preset used, and more)
- Added position bar variables for pan, tilt, zoom, focus, and iris
- Added zoom ratio variable with per-model interpolation tables
- Added zoom mode toggle action (cycles through up to three modes)
- Added FR7 individual inquiry polling (FR7 does not support block inquiries)
- Added FR7 low-priority inquiries for knee, detail, ND filter, auto iris, AGC, auto shutter, and ceiling mode
- Added FR7 20-bit pan/tilt coordinate support with per-model position bar ranges
- Added SRG-A40 and SRG-A12 camera support with dedicated inquiry blocks and GAIN_LIMIT choices
- Added inquiry blocks 03-05 for SRG-120DH and SRG-300SE legacy cameras
- Added X1000 inquiry block 03 (enlargement settings)
- Added configurable preset colors for multi-camera identification (set per-instance in connection config)
- Added last preset recalled feedback and variable
- Added selected preset feedback to camera preset buttons
- Added focus near limit individual inquiry for full 16-bit precision
- Fixed per-family inquiry block byte positions and masks across X40UH, X1000, X400, 300SE, and legacy families
- Fixed X1000 pan/tilt parsing for mixed 5-nibble pan / 4-nibble tilt format
- Fixed focus position bar to scale based on actual focusNearLimit instead of protocol maximum
- Fixed focusNearLimit value from block inquiry (was 1/256 of actual value)
- Fixed redundant "Status: ok" logging during normal polling
- Fixed upgrade script ordering to preserve v2.7.5 positional indexes
- Updated protocol documentation with clarified byte/nibble/bit notation
- Updated presets with position bars, zoom ratio, and improved text sizing
- Updated custom command action to support variables in command strings
- Added details for enabling VISCA to HELP.md
- Updated dependencies
- Fixed bug that prevented presets from highlighting when saving
- Fixed default camera Id in new configs
- Finished Camera Preset Selection action and feedback #77
- Fixed issue that required disabling and re-enabling a new instance when added to companion.
- Added selection of and some specific settings for ILME-FR7, ILME-FR7k, SRG-120DH, SRG-201SE, SRG-300SE, and SRG-301SE cameras.
- Fixed regression bug which affected new instances.
- Added Camera model and frame rate choices to config and updated actions to have correct Iris/Gain/Shutter values for each model/frame rate combination.
- Added clearer purpose in README.md
- Implemented a "viscaId" variable and an "Override VISCA ID" action to enable communications with multiple cameras from the same instance. This is a feature requested in issue #47.
NOTE It is expected that this feature only works with VISCA over serial. When communicating over IP the cameras ignore the VISCA Id
- Update dependency for better upgrade experience
- Add Preset handling using the variable presetSelector
- Improved regex validation for custom command
- Add Custom Command action
- Add variable speed zoom and focus actions and presets
- Add speed controls and variables for PTZF functions
- Add upgrade script to handle changes
- Rework actions and presets for consistency and preparing for new features
- Rework feedbacks, moved text updates to variables
- Updated documentation to include all implemented actions, presets, and variables
- Add Exposure Compensation actions and presets
- Add Spotlight Compensation On/Off
- Add Zoom Modes and preset to cycle through
- Add Noise Reduction action
- Add Latency selection action
- Add menu actions and presets
- Update Camera Preset presets to highlight and save when pressed for 2 seconds
- Add feedbacks for Auto Focus and Auto Iris
- Add rotation enabled presets for Stream Deck + and Loupe Deck knobs
- Compatible with Companion 3.x
- Feature parity with v1.2.12
- Add White Balance actions and presets
- Add dual function presets