Blackmagic HyperDeck Extreme HDR User Manual RS-422 Control
What is RS-422 Control?
The RS-422 standard is a serial deck control broadcast standard and has been used by broadcasters since the early 1980s and is found on many decks, linear editors, non linear editors and broadcast automation products. All current HyperDeck models support this standard so can be integrated into broadcast automation, remote control systems, editing systems and any kind of custom control you might like to design yourself.
HyperDeck Extreme also supports file based commands from the Advanced Media Protocol via RS-422. This lets you control your HyperDeck with an external device using AMP commands such as adding clips to a playlist, determining the filename of the next clip, looping a single clip or timeline, or clearing a playlist.
Using an External RS-422 Controller
All current HyperDeck models feature an industry standard Sony™ compatible RS-422 deck control port, which has the correct pin connections for a direct connection to any remote controller that supports RS-422.
You can use pre-manufactured 9 pin cables as long as each end of the cable is wired ‘pin for pin’ where the same pin numbers on each end of the cable are connected together. If you would like to make custom cables, please refer to the accompanying wiring diagram.
Using RS-422 control means you can build your own custom controller, or incorporate your HyperDeck Extreme into an already existing RS-422 control solution.
For example, you can remotely start and stop recording and playback of your HyperDeck as well as performing other common jog and shuttle functions. The full list of supported RS-422 commands is in the following section named ‘supported RS-422 commands’.
RS-422 remote pin connections
Receive (–) | Receive (+) | Transmit (–) | Transmit (+) | Ground Pins |
---|---|---|---|---|
2 | 7 | 8 | 3 | 1, 4, 6, 9 |
Remote port on HyperDeck Extreme 8K HDR
Supported RS-422 Commands
Command | Reply | No Remote | Notes | ||
---|---|---|---|---|---|
0 - System Control | |||||
0x00 | 0x11 | DeviceTypeRequest | NTSC: 0xF0E0 PAL: 0xF1E0 24P: 0xF2E0 | Enabled | |
1 - Slave Response | |||||
0x20 | 0x00 | Stop | Acknowledge | Disabled | |
0x20 | 0x01 | Play | Acknowledge | Disabled | |
0x20 | 0x02 | Record | Acknowledge | Disabled | |
0x20 | 0x04 | StandbyOff | Acknowledge | Disabled | |
0x20 | 0x05 | StandbyOn | Acknowledge | Disabled | |
0x20 | 0x0F | Eject | Acknowledge | Disabled | |
0x20 | 0x10 | FastFwd | Acknowledge | Disabled | |
0x21 | 0x11 | JogFwd1 | Acknowledge | Disabled | |
0x22 | 0x11 | JogFwd2 | Acknowledge | Disabled | Treated as N=1; Same as JogFwd1 |
0x21 | 0x12 | VarFwd1 | Acknowledge | Disabled | Uses ShuttleFwd1 |
0x22 | 0x12 | VarFwd2 | Acknowledge | Disabled | Treated as N=1; Same as VarFwd1 |
0x21 | 0x13 | ShuttleFwd1 | Acknowledge | Disabled | |
0x22 | 0x13 | ShuttleFwd2 | Acknowledge | Disabled | Treated as N=1; Same as ShuttleFwd1 |
0x20 | 0x20 | Rewind | Acknowledge | Disabled | |
0x21 | 0x21 | JogRev1 | Acknowledge | Disabled | |
0x22 | 0x21 | JogRev2 | Acknowledge | Disabled | Treated as N=1; Same as JogRev1 |
0x21 | 0x22 | VarRev1 | Acknowledge | Disabled | Uses ShuttleRev1 |
0x22 | 0x22 | VarRev2 | Acknowledge | Disabled | Treated as N=1; Same as VarRev1 |
0x21 | 0x23 | ShuttleRev1 | Acknowledge | Disabled | |
0x22 | 0x23 | ShuttleRev2 | Acknowledge | Disabled | Treated as N=1; Same as ShuttleRev1 |
0x20 | 0x30 | Preroll | Acknowledge | Disabled | |
0x24 | 0x31 | CueData | Acknowledge | Disabled | |
0x20 | 0x34 | SyncPlay | Acknowledge | Disabled | |
0x20 | 0x40 | Preview | Acknowledge | Disabled | Status bits are set |
0x20 | 0x41 | Review | Acknowledge | Disabled | Status bits are set |
0x20 | 0x43 | OutpointPreview | Acknowledge | Disabled | |
0x22 | 0x5C | DMCSetFwd | Acknowledge | Disabled | |
0x22 | 0x5D | DMCSetRev | Acknowledge | Disabled | |
0x20 | 0x60 | FullEEOff | Acknowledge | Disabled | |
0x20 | 0x61 | FullEEOn | Acknowledge | Disabled | |
0x20 | 0x63 | SelectEEOn | Acknowledge | Disabled | |
4 - Preset/Select Control | |||||
0x40 | 0x10 | InEntry | Acknowledge | Disabled | |
0x40 | 0x11 | OutEntry | Acknowledge | Disabled | |
0x44 | 0x14 | InDataPreset | Acknowledge | Disabled | |
0x44 | 0x15 | OutDataPreset | Acknowledge | Disabled | |
0x40 | 0x18 | InShift+ | Acknowledge | Disabled | |
0x40 | 0x19 | InShift- | Acknowledge | Disabled | |
0x40 | 0x1A | OutShift+ | Acknowledge | Disabled | |
0x40 | 0x1B | OutShift- | Acknowledge | Disabled | |
0x40 | 0x20 | InReset | Acknowledge | Disabled | |
0x40 | 0x21 | OutReset | Acknowledge | Disabled | |
0x40 | 0x22 | AInReset | Acknowledge | Disabled | |
0x40 | 0x23 | AOutReset | Acknowledge | Disabled | |
0x44 | 0x31 | PrerollPreset | Acknowledge | Disabled | |
0x40 | 0x40 | AutoModeOff | Acknowledge | Disabled | ignored, Status bit remembered |
0x40 | 0x41 | AutoModeOn | Acknowledge | Disabled | ignored, Status bit remembered |
0x41 | 0x37 | InputCheck | Acknowledge | Disabled | |
6 - Sense Request | |||||
0x61 | 0x0A | TimeCodeGenSense | — | — | |
0x61 | 0x0C | CurrentTimeSense | — | — | |
0x60 | 0x10 | InDataSense | InData | Enabled | |
0x60 | 0x11 | OutDataSense | OutData | Enabled | |
0x60 | 0x12 | AInDataSense | AInData | Enabled | |
0x60 | 0x13 | AOutDataSense | AOutData | Enabled | |
0x61 | 0x20 | StatusSense | StatusData | Enabled | |
0x60 | 0x2B | RemainTimeSense | RemainTimeData | Enabled | |
0x60 | 0x2E | SpeedSense | SpeedData | Enabled | |
0x60 | 0x31 | PrerollTimeSense | PreRollTimeData | Enabled | |
0x60 | 0x36 | TimerModeSense | TimerModeData | Enabled | |
0x60 | 0x3E | RecordInhibitSense | RecordInhibitStatus | Enabled | |
7 - Sense Reply | |||||
0x78 | 0x00 | Timer1Data | — | — | Current Time and 00:00:00:00 |
0x78 | 0x04 | LTCUserBitsTimeData | — | — | Current Time and 00:00:00:00 |
0x78 | 0x06 | VITCUserBitsTimeData | — | — | Current Time and 00:00:00:00 |
0x74 | 0x06 | VITCTimeData | — | — | Current Time |
0x74 | 0x07 | UserBitsVITCTimeData | — | — | 00:00:00:00 |
0x74 | 0x08 | GenTCData | — | — | Current Time |
0x78 | 0x08 | GenTCUBData | — | — | Current Time and 00:00:00:00 |
0x74 | 0x09 | GenUBData | — | — | 00:00:00:00 |
0x74 | 0x10 | InData | — | — | |
0x74 | 0x11 | OutData | — | — | |
0x74 | 0x12 | AInData | — | — | |
0x74 | 0x13 | AOutData | — | — | |
0x74 | 0x14 | CorrectedLTCTimeData | — | — | Current Time |
0x70 | 0x20 | StatusData | — | — | Please see “Status Bits” sheet: Limited to 9 bytes of status, silently truncated |
0x76 | 0x2B | RemainTimeData | — | — | |
0x71 | 0x2E | SpeedData | — | — | |
0x74 | 0x31 | PrerollTimeData | — | — | |
0x71 | 0x36 | TimerModeData | — | — | Returns 0 (TimeCode) |
0x72 | 0x3E | RecordInhibitStatus | — | — | |
A - Advanced Media Protocol | |||||
0xA1 | 0x01 | AutoSkip | Acknowledge | Disabled | 8-bit signed number of clips to skip from current clip |
0xAX | 0x15 | ListNextID | IDListing | Enabled | when x = 0 single clip request when x = 1, # clips can be specified in the send data |
0x20 | 0x29 | ClearPlaylist | Acknowledge | Disabled | |
0x41 | 0x42 | SetPlaybackLoop | Acknowledge | Disabled | Bit 0 loop mode enable, 0=false 1=true Bit 1 is single clip/timeline 0=single clip 1=timeline |
0x41 | 0x44 | SetStopMode | Acknowledge | Disabled | 0 = Off 1 = Freeze on last frame 2 = Freeze on next clip 3 = Show black |
0x4f | 0x16 | AppendPreset | Acknowledge | Disabled | 2 Bytes for the length N of the clip name N Bytes for each character of the clip name 4 Byte in point timecode (format is FFSSMMHH) 4 Byte out point timecode (format is FFSSMMHH) |
Blackmagic Extensions | |||||
0x82 | 0x02 | BMDSeekToTimelinePosition | Acknowledge | Disabled | 16-bit big endian fractional position [0..65535] |
0x81 | 0x03 | BMDSeekRelativeClip | Acknowledge | Disabled | One-byte signed integer, which is the number of clips to skip (negative for backwards). |
0x87 | 0x04 | BMDScrubTimelineDelta | Acknowledge | Disabled | 1 Byte unsigned integer, which is the whence, where 0 = Set 1 = Current 2 = End 4 Byte 32bit big endian unsigned integer, which is the delta to scrub by. 1 Byte signed integer, which is the delta’s sign, where a value less than 0 will set the delta scrub to a negative value. 1 Byte unsigned integer, which is the unit of time to scrub by, where 0 = Frames 1 = Milliseconds |
0x85 | 0x05 | BMDPlay | Acknowledge | Disabled | 2 Bytes 16bit big endian signed integer, which is the speed to play at, where a value of 100 = 1.0x 1 Byte unsigned integer, which is the playback flags bitfield, where bit 0 = Loop which is the playback type, where 0 = Play 1 Byte unsigned integer, which is the scroll boolean flag, where 0 evaluates as false and all other values evaluate as true. |
0x80 | 0x06 | BMDClip | Acknowledge | Disabled |
RS-422 Developer Information
bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2 | bit 1 | bit 0 | |
---|---|---|---|---|---|---|---|---|
Byte 0 | 0 | 0 | Cassette out | Servo Ref | 0 | 0 | 0 | Local |
Byte 1 | Standby | 0 | Stop | 0 | Rewind | Forward | Record | Play |
Byte 2 | Servo Lock | 0 | Shuttle | Jog | Var | Direction | Still | 1 |
Byte 3 | Auto Mode | 0 | 0 | 0 | Aout Set | Ain Set | Out Set | In Set |
Byte 4 | Select EE | Full EE | Loop Playback | 0 | 0 | 0 | 0 | 0 |
Byte 5 | Scroll | 0 | 0 | 0 | Loop Clip | 0 | 0 | 0 |
Byte 6 | 0 | Lamp Still | Lamp Fwd | Lamp Rev | 0 | 0 | 0 | 0 |
Byte 7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte 8 | 0 | 0 | Near EOT | EOT | 0 | 0 | 0 | Rec Inhibit |
Byte 9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Variables
Cassette Out | Set if no SSD is present |
Local | Set if Remote is disabled (local control) |
Standby | Set if a disk is available |
Direction | Clear if playback is forwarding, set if playback is reversing |
Still | Set if playback is paused, or if in input preview mode |
Auto Mode | Set if in Auto Mode |
Select EE, Full EE | Set if in input preview mode |
Lamp Still/Fwd/Rev | Set according to playback speed and direction |
Near EOT | Set if total space left on available SSDs is less than 3 minutes |
EOT | Set if total space left on available SSDs is less than 30 seconds |
Others | ||
Cue Complete (byte 2, bit 0) | Always 1: Cue requests are always instantaneous | |
HyperDeck Serial RS-422 Protocol | ||
Protocol | Based on Sony 9-pin protocol | |
Interface | Baud rate | 38.4 Kbps |
1 start bit | ||
8 data bits | ||
1 stop bit | ||
1 parity bit | ||
Odd parity |
Up Next
Was this information helpful?