/jvc-remote

JVC Camera Remote Protocol

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

JVC Remote

Usage

For interactive use inkvoke the script like this:
python3 -i listen.py
then you can call functions as follows:
>>>initCam()
>>>sendCmd("Autoiris", 0)
>>>sendKey("Iris", 127)

Pinout

26pin_studio_10pin_remote_6pin_tally.xls

Es wird nur der Remote Anschluß benötigt.
Der Stecker ist ein gewönlicher 6pin Mini-Din (der PS/2 Stecker) Anschluß.
Zum Beispiel: http://www.reichelt.de/SE-DIO-M06/3/index.html?&ACTION=3&LA=446&ARTICLE=17457&artnr=SE-DIO+M06

Protokoll

Signallevel: 3.3V
Format: 9600baud 1E8 (8 daten, 1 stop-bit, even-parity)

Protocol Flow

Typical Sequence

Normal CCU to CAM flow
Direction (seen from OCP) TX RX TX RX
length (in Byte) 1 1 3-4 1
Purpose Startbyte ACK Data ACK
Note: there is also the possibility to do CAM to CCU communication,
which seems to be requested by a special char (0x90)

Startbyte

Startbyte
Bit 0 1 2 3 4 5 6 7
Purpose Transmission Start 0 Special data
On normal (non special) transmission: treat data as number of bytes to be transmitted.
If Special bit is set: data is the payload for the request this transmission was requested with. (see 3 byte data bitflags)

Speculative interpretation of ACK byte:

ACK byte
Bit 0 1 2 3 4 5 6 7
Funktion ACK UNIMPL ACK UNIMPL 0 UNIMPL 0

0xA0 => transmission understood, everything OK
0xF2 => transmission understood, but Feature not implemented

Data bytes:

4 Byte:

Daten
Byte 0 1 2 3
Bit 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
Purpose key 0 value checksum

3 Byte:

Data
Byte 0 1 2
Bit 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
Purpose Command Bitflags Set Value Checksum

Bitflags[2] = apply setting
Bitflags[1] = request special transmission

Features

This table was taken from cmds.csv wich was made by capturing the init sequence of CCU and CAM.
With this handshake all available/unavailable Features should be negotiated.

cmd type

cmd => 3 byte
key => 4 byte

setting

hex value for a specific setting (topic)
must be treated differently for key and cmd

value

value to be set for the setting

bitfield

currently we are thinking these bits represet specific flags
applies only to 3 byte commands; also see the section about 3 byte data

cam response

Response byte sent by the Camera,
tells if the requested feature is available in the specific model.
The following table was created by listening to communication with a JVC GM-HY251 //TODO: camera model?

topic

human readable representation of the setting-id
for example cmd setting 0x07 is understood as gain control

value-representation

human readable representation of the values a setting can have.
such as ON, OFF, incremental values, specific operation modes, ...

cmd type setting value bitfield cam response topic value-representation
cmd 0x00 0x0 0b0100 IMPL Colorbars
cmd 0x01 0x0 0b0100 IMPL Detail
cmd 0x02 0x0 0b0100 IMPL Autoiris
cmd 0x02 0x1 0b0100 IMPL Autoiris
cmd 0x03 0x0 0b0100 IMPL White Bal Manual
cmd 0x03 0x1 0b0100 IMPL White Bal Preset
cmd 0x03 0x2 0b0100 IMPL White Bal A
cmd 0x03 0x3 0b0100 IMPL White Bal B
cmd 0x03 0xf 0b0100 IMPL White Bal full auto
cmd 0x06 0x0 0b0110 UNIPLM Auto White
cmd 0x06 0x1 0b0110 IMPL Auto White
cmd 0x07 0x0 0b0100 IMPL Gain 0dB
cmd 0x07 0x1 0b0100 IMPL Gain 6dB
cmd 0x07 0x2 0b0100 IMPL Gain 9dB
cmd 0x07 0x3 0b0100 IMPL Gain 12dB
cmd 0x07 0x4 0b0100 IMPL Gain 18dB
cmd 0x07 0x5 0b0100 UNIPLM Gain
cmd 0x07 0x6 0b0100 UNIPLM Gain
cmd 0x07 0x8 0b0100 IMPL Gain
cmd 0x07 0x8 0b0100 IMPL Gain ALC
cmd 0x07 0xa 0b0100 IMPL Gain 3dB
cmd 0x07 0xe 0b0100 UNIPLM Gain
cmd 0x08 0x0 0b0100 IMPL Tally PGM
cmd 0x08 0x1 0b0100 IMPL Tally PGM
cmd 0x09 0x0 0b0100 IMPL Call
cmd 0x09 0x1 0b0100 IMPL Call
cmd 0x0b 0x0 0b0110 UNIPLM
cmd 0x0c 0x0 0b0100 IMPL Shutter off
cmd 0x0c 0x1 0b0100 UNIPLM Shutter
cmd 0x0c 0x2 0b0100 IMPL Shutter 1/120
cmd 0x0c 0x3 0b0100 IMPL Shutter 1/250
cmd 0x0c 0x4 0b0100 IMPL Shutter 1/500
cmd 0x0c 0x5 0b0100 IMPL Shutter 1/1000
cmd 0x0c 0x6 0b0100 IMPL Shutter 1/2000
cmd 0x0c 0xf 0b0100 UNIPLM Shutter
cmd 0x0f 0x0 0b0100 IMPL Black Toe unmod
cmd 0x0f 0x1 0b0100 IMPL Black Toe stretch
cmd 0x0f 0x2 0b0100 IMPL Black Toe compress
cmd 0x1b 0x0 0b0100 UNIPLM
cmd 0x1b 0x1 0b0100 UNIPLM
cmd 0x1c 0x0 0b0100 IMPL Auto Knee
cmd 0x1d 0x0 0b0100 IMPL Gamma
cmd 0x1d 0x1 0b0100 IMPL Gamma
cmd 0x1d 0x2 0b0100 IMPL Gamma
cmd 0x1d 0x3 0b0100 IMPL Gamma
cmd 0x1d 0x4 0b0100 IMPL Gamma
cmd 0x47 0x0 0b0100 IMPL GENLOCK SC 0
cmd 0x47 0x1 0b0100 IMPL GENLOCK SC 90
cmd 0x47 0x2 0b0100 IMPL GENLOCK SC 180
cmd 0x47 0x3 0b0100 IMPL GENLOCK SC 270
cmd 0x4a 0x0 0b0100 IMPL DNR
cmd 0x4b 0x0 0b0100 UNIPLM
cmd 0x4b 0x1 0b0100 UNIPLM
cmd 0x4b 0x2 0b0100 UNIPLM
cmd 0x4b 0xf 0b0100 UNIPLM
cmd 0x4c 0x0 0b0100 IMPL
cmd 0x4c 0x1 0b0100 IMPL
cmd 0x4c 0x2 0b0100 IMPL
cmd 0x4c 0xf 0b0100 UNIPLM
cmd 0x4d 0x0 0b0100 IMPL Skin Detail
cmd 0x4e 0x1 0b0100 UNIPLM
cmd 0x4f 0x0 0b0100 UNIPLM
cmd 0x4f 0x1 0b0100 UNIPLM
cmd 0x4f 0x2 0b0100 UNIPLM
cmd 0x50 0x1 0b0100 IMPL Full Auto Shooting
cmd 0x51 0x0 0b0100 UNIPLM
cmd 0x51 0x1 0b0100 UNIPLM
cmd 0x52 0x0 0b0100 IMPL
cmd 0x53 0x0 0b0100 IMPL Tally PVW
cmd 0x53 0x1 0b0100 IMPL Tally PVW
cmd 0x7c 0x1 0b0100 IMPL
cmd 0x7d 0x1 0b0100 IMPL
key 0x00 0x340 IMPL Iris
key 0x02 IMPL Gain R
key 0x03 IMPL Gain B
key 0x06 IMPL Master Black
key 0x12 0x530 UNIPLM
key 0x14 0x400 IMPL
key 0x16 0x400 IMPL
key 0x26 0x328 IMPL Red
key 0x26 0x404 IMPL Red
key 0x27 0x230 IMPL Blue
key 0x27 0x41c IMPL Blue
key 0x32 0x604 IMPL
key 0x36 0x114 IMPL Gamma Master
key 0x37 0x114 IMPL Gamma G
key 0x40 0x340 IMPL Autoiris
key 0x56 0x26e UNIPLM
key 0x74 0x801 UNIPLM
key 0xb4 0x801 UNIPLM Genlock H Phase 1
key 0xb5 0x801 UNIPLM Genlock H Phase 2
key 0xf2 0x008 UNIPLM
key 0xf2 0x00c UNIPLM
key 0xf2 0x80c UNIPLM
key 0xf3 0x00c UNIPLM
key 0xf3 0xf7c UNIPLM