Blackmagic Pocket Cinema Camera 4K

Blackmagic Pocket Cinema Camera User Manual Developer Information

Blackmagic Pocket Cinema Camera 4K

Blackmagic Bluetooth Camera Control

Blackmagic cameras with Bluetooth LE implement a variety of features and commands that allow users to control their cameras wirelessly. Developers have full access to these features for their custom applications.

The following services and characteristics describe the full range of communication options that are available to the developer.

Service: Device Information Service

UUID: 180A

Characteristics

Camera Manufacturer

UUID: 2A29

Read the name of the manufacturer (always “Blackmagic Design”).

Camera Model

UUID: 2A24

Read the name of the camera model (“Pocket Cinema Camera 6K” or “Pocket Cinema Camera 4K”).

Service: Blackmagic Camera Service

UUID: 291D567A-6D75-11E6-8B77-86F30CA893D3

Characteristics

Outgoing Camera Control (encrypted)

UUID: 5DD3465F-1AEE-4299-8493-D2ECA2F8E1BB

Send Camera Control messages

These messages are identical to those described in the Blackmagic SDI Camera Control Protocol section below. Please read that section for a list of supported messages and required formatting information.

For an example of how packets are structured, please see the ‘example protocol packets’ section in this document.

Incoming Camera Control (encrypted)

UUID: B864E140-76A0-416A-BF30-5876504537D9

Request notifications for this characteristic to receive Camera Control messages from the camera.

These messages are identical to those described in the Blackmagic SDI Camera Control Protocol section below. Please read that section for a list of supported messages and required formatting information.

Timecode (encrypted)

UUID: 6D8F2110-86F1-41BF-9AFB-451D87E976C8

Request notifications for this characteristic to receive timecode updates.

Timecode (HH:MM:SS:mm) is represented by a 32-bit BCD number: (eg. 09:12:53:10 = 0x09125310)

Camera Status (encrypted)

UUID: 7FE8691D-95DC-4FC5-8ABD-CA74339B51B9

Request notifications for this characteristic to receive camera status updates.

The camera status is represented by flags contained in an 8-bit integer:

None

= 0x00

Camera Power On

= 0x01

Connected

= 0x02

Paired

= 0x04

Versions Verified

= 0x08

Initial Payload Received

= 0x10

Camera Ready

= 0x20

Send a value of 0x00 to power a connected camera off.

Send a value of 0x01 to power a connected camera on.

Device Name

UUID: FFAC0C52-C9FB-41A0-B063-CC76282EB89C

Send a device name to the camera (max. 32 characters).

The camera will display this name in the Bluetooth Setup Menu.

Protocol Version

UUID: 8F1FD018-B508-456F-8F82-3D392BEE2706

Read this value to determine the camera’s supported CCU protocol version.

📘

NOTE Encrypted characteristics can only be used once a device has successfully bonded or paired with the Blackmagic Camera. Once a connection has been established, any attempt to write to an encrypted characteristic will initiate bonding. For example, writing a ‘Camera Power On’ (0x01) message to the Camera Status characteristic.

Once bonding is initiated, the camera will display a 6-digit pin in the Bluetooth Setup Menu. Enter this pin on your device to establish an encrypted connection. The device will now be able to read, write and receive notifications from encrypted characteristics.

Blackmagic SDI and Bluetooth Camera Control Protocol

Version 1.5

If you are a software developer you can use the Blackmagic SDI and Bluetooth Camera Control Protocol to construct devices that integrate with our products. Here at Blackmagic Design, our approach is to open up our protocols and we eagerly look forward to seeing what you come up with!

Overview

This document describes an extensible protocol for sending a unidirectional stream of small control messages embedded in the non-active picture region of a digital video stream. The video stream containing the protocol stream may be broadcast to a number of devices. Device addressing is used to allow the sender to specify which device each message is directed to.

Assumptions

Alignment and padding constraints are explicitly described in the protocol document. Bit fields are packed from LSB first. Message groups, individual messages and command headers are defined as, and can be assumed to be, 32 bit aligned.

Blanking Encoding

A message group is encoded into a SMPTE 291M packet with DID/SDID x51/x53 in the active region of VANC line 16.

Message Grouping

Up to 32 messages may be concatenated and transmitted in one blanking packet up to a maximum of 255 bytes payload. Under most circumstances, this should allow all messages to be sent with a maximum of one frame latency.

If the transmitting device queues more bytes of message packets than can be sent in a single frame, it should use heuristics to determine which packets to prioritize and send immediately. Lower priority messages can be delayed to later frames, or dropped entirely as appropriate.

Abstract Message Packet Format

Every message packet consists of a three byte header followed by an optional variable length data block. The maximum packet size is 64 bytes.

Destination device (uint8)

Device addresses are represented as an 8 bit unsigned integer. Individual devices are numbered 0 through 254 with the value 255 reserved to indicate a broadcast message to all devices.

Command length (uint8)

The command length is an 8 bit unsigned integer which specifies the length of the included command data. The length does NOT include the length of the header or any trailing padding bytes.

Command id (uint8)

The command id is an 8 bit unsigned integer which indicates the message type being sent. Receiving devices should ignore any commands that they do not understand. Commands 0 through 127 are reserved for commands that apply to multiple types of devices. Commands 128 through 255 are device specific.

Reserved (uint8)

This byte is reserved for alignment and expansion purposes. It should be set to zero.

Command data (uint8[])

The command data may contain between 0 and 60 bytes of data. The format of the data section is defined by the command itself.

Padding (uint8[])

Messages must be padded up to a 32 bit boundary with 0x0 bytes. Any padding bytes are NOT included in the command length.

Receiving devices should use the destination device address and or the command identifier to determine which messages to process. The receiver should use the command length to skip irrelevant or unknown commands and should be careful to skip the implicit padding as well.

Defined Commands

Command 0 : change configuration

Category (uint8)

The category number specifies one of up to 256 configuration categories available on the device.

Parameter (uint8)

The parameter number specifies one of 256 potential configuration parameters available on the device. Parameters 0 through 127 are device specific parameters. Parameters 128 though 255 are reserved for parameters that apply to multiple types of devices.

Data type (uint8)

The data type specifies the type of the remaining data. The packet length is used to determine the number of elements in the message. Each message must contain an integral number of data elements.

Currently defined values are:

0: void / boolean

A void value is represented as a boolean array of length zero. The data field is a 8 bit value with 0 meaning false and all other values meaning true.

1: signed byte

Data elements are signed bytes

2: signed 16 bit integer

Data elements are signed 16 bit values

3: signed 32 bit integer

Data elements are signed 32 bit values

4: signed 64 bit integer

Data elements are signed 64 bit values

5: UTF-8 stringData elements represent a UTF-8 string with no terminating character.

Data types 6 through 127 are reserved.

128: signed 5.11 fixed pointData elements are signed 16 bit integers representing a real number with 5 bits for the integer component and 11 bits for the fractional component The fixed point representation is equal to the real value multiplied by 2^11. The representable range is from -16.0 to 15.9995 (15 + 2047/2048).

Data types 129 through 255 are available for device specific purposes.

Operation type (uint8)

The operation type specifies what action to perform on the specified parameter. Currently defined values are:

0: assign value

The supplied values are assigned to the specified parameter. Each element will be clamped according to its valid range. A void parameter may only be 'assigned' an empty list of boolean type. This operation will trigger the action associated with that parameter. A boolean value may be assigned the value zero for false, and any other value for tru

1: offset / toggle value

Each value specifies signed offsets of the same type to be added to the current parameter values. The resulting parameter value will be clamped according to their valid range. It is not valid to apply an offset to a void value. Applying any offset other than zero to a boolean value will invert that value.

Operation types 2 through 127 are reserved.
Operation types 128 through 255 are available for device specific purposes.

Data (void)

The data field is 0 or more bytes as determined by the data type and number of elements.

The category, parameter, data type and operation type partition a 24 bit operation space.

Group

ID

Parameter

Type

Index

Minimum

Maximum

Interpretation

Lens

0.0

Focus

fixed16

0.0

1.0

0.0 = near, 1.0 = far

0.1

Instantaneous autofocus

void

trigger instantaneous autofocus

0.2

Aperture (f-stop)

fixed16

-1.0

16.0

Aperture Value (where fnumber = sqrt(2^AV))

0.3

Aperture (normalised)

fixed16

0.0

1.0

0.0 = smallest, 1.0 = largest

0.4

Aperture (ordinal)

int16

0

n

Steps through available aperture values from minimum

(0) to maximum (n)

0.5

Instantaneous auto aperture

void

trigger instantaneous auto aperture

0.6

Optical image stabilisation

boolean

true = enabled, false = disabled

0.7

Set absolute zoom (mm)

int16

0

max

Move to specified focal length in mm, from minimum (0) to maximum (max)

0.8

Set absolute zoom (normalised)

fixed16

0.0

1.0

Move to specified focal length:

0.0 = wide, 1.0 = tele

0.9

Set continuous zoom (speed)

fixed16

-1.0

+1.0

Start/stop zooming at specified rate: -1.0 = zoom wider fast, 0.0 = stop, +1 = zoom tele fast

Group

ID

Parameter

Type

Index

Minimum

Maximum

Interpretation

Video

1.0

Video mode

[0] = frame rate

fps as integer (eg 24, 25, 30, 50, 60)

[1] = M-rate

0 = regular, 1 = M-rate

int8

[2] = dimensions

0 = NTSC, 1 = PAL, 2 = 720,

3 = 1080, 4 = 2kDCI, 5 = 2k16:9, 6 = UHD, 7 = 3k Anamorphic, 8 = 4k DCI, 9 = 4k 16:9, 10 = 4.6k 2.4:1, 11 = 4.6k

[3] = interlaced

0 = progressive, 1 = interlaced

[4] = Color space

0 = YUV

1.1

Gain (up to Camera 4.9)

int8

1

128

1x, 2x, 4x, 8x, 16x, 32x, 64x, 128x gain

1.2

Manual White Balance

int16

[0] = color temp

2500

10000

Color temperature in K

int16

[1] = tint

-50

50

tint

1.3

Set auto WB

void

Calculate and set auto white balance

1.4

Restore auto WB

void

Use latest auto white balance setting

1.5

Exposure (us)

int32

1

42000

time in us

1.6

Exposure (ordinal)

int16

0

n

Steps through available exposure values from minimum

(0) to maximum (n)

1.7

Dynamic Range Mode

int8 enum

0

2

0 = film, 1 = video, 2 = extended video

1.8

Video sharpening level

int8 enum

0

3

0 = off, 1 = low, 2 = medium, 3 = high

  • = file frame rate

  • = sensor frame rate

  • = frame width

Recording format

int16

  • = frame height

  • = flags

fps as integer (eg 24, 25, 30, 50, 60, 120)

fps as integer, valid when sensor-off-speed set (eg 24, 25, 30, 33, 48, 50, 60, 120), no change will be performed if this value is set to 0

in pixels

in pixels

[0] = file-M-rate

[1] = sensor-M-rate, valid when sensor-off-speed-set

[2] = sensor-off-speed

[3] = interlaced

[4] = windowed mode

1.10

Set auto exposure mode

int8

0

4

0 = Manual Trigger, 1 = Iris, 2 = Shutter, 3 = Iris + Shutter, 4 = Shutter + Iris

1.11

Shutter angle

int32

100

36000

Shutter angle in degrees, multiplied by 100

1.12

Shutter speed

int32

Current sensor frame rate

5000

Shutter speed value as a fraction of 1, so 50 for 1/50th of a second

1.13

Gain

int8

-128

127

Gain in decibel (dB)

1.14

ISO

int32

0

2147483647

ISO value

1.15

Display LUT

int8

[0] = selected LUT

0 = None, 1 = Custom, 2 = film to video, 3 = film to extended video

[1] = enabled or not

0 = Not enabled, 1 = Enabled

1.16

ND Filter

fixed16

[0] = stops

0.0

16.0

f-stop of ND filter to use

Group

ID

Parameter

Type

Index

Minimum

Maximum

Interpretation

Audio

2.1

Headphone level

fixed16

0.1

1.0

0.0 = minimum, 1.0 = maximum

2.2

Headphone program mix

fixed16

0.1

1.0

0.0 = minimum, 1.0 = maximum

2.3

Speaker level

fixed16

0.1

1.0

0.0 = minimum, 1.0 = maximum

2.4

Input type

int8

0

3

0 = internal mic, 1 = line level input, 2 = low mic level input, 3 = high mic level input

2.5

Input levels

fixed16

[0] ch0

0.0

1.0

0.0 = minimum, 1.0 = maximum

[1] ch1

0.0

1.0

0.0 = minimum, 1.0 = maximum

2.6

Phantom power

boolean

true = powered, false = not powered

Output

3.0

Overlay enables

uint16 bit field

bit flags:

  • = display status,

  • = display frame guides Some cameras don't allow separate control of frame guides and status overlays.

3.1

Frame guides style (Camera 3.x)

int8

0

8

0 = HDTV, 1 = 4:3, 2 = 2.4:1,

3 = 2.39:1, 4 = 2.35:1, 5 = 1.85:1, 6 = thirds

3.2

Frame guides opacity (Camera 3.x)

fixed16

0.1

1.0

0.0 = transparent, 1.0 = opaque

[0] = frame guides style

0 = off, 1 = 2.4:1, 2 = 2.39:1, 3 = 2.35:1, 4 = 1.85:1, 5 = 16:9, 6 = 14:9, 7 = 4:3, 8 = 2:1, 9 = 4:5, 10 = 1:1

Overlays

[1] = frame guide opacity

0

100

0 = transparent, 100 = opaque

3.3

(replaces .1 and .2 above from Cameras 4.0)

int8

[2] = safe area percentage

0

100

percentage of full frame used by safe area guide (0 means off)

[3] = grid style

bit flags:

  • = display thirds,

  • = display cross hairs,

  • = display center dot,

  • = display horizon

Display

4.0

Brightness

fixed16

0.0

1.0

0.0 = minimum, 1.0 = maximum

4.1

Exposure and focus tools

int16 bit field

0x1 = zebra, 0x2 = focus assist, 0x4 = false color

0 = disable, 1 = enable

4.2

Zebra level

fixed16

0.0

1.0

0.0 = minimum, 1.0 = maximum

4.3

Peaking level

fixed16

0.0

1.0

0.0 = minimum, 1.0 = maximum

4.4

Color bar enable

int8

0

30

0 = disable bars, 1-30 = enable bars with timeout (seconds)

4.5

Focus Assist

int8

[0] = focus assist method

0 = Peak, 1 = Colored lines

[1] = focus line color

0 = Red, 1 = Green, 2 = Blue, 3 = White, 4 = Black

4.6

Program return feed enable

int8

0

30

0 = disable, 1-30 = enable with timeout (seconds)

Group

ID

Parameter

Type

Index

Minimum

Maximum

Interpretation

Tally

5.0

Tally brightness

fixed16

0.0

1.0

Sets the tally front and tally rear brightness to the same level.

  • = minimum,

  • = maximum

5.1

Front tally brightness

fixed16

0.0

1.0

Sets the tally front brightness.

  • = minimum,

  • = maximum

5.2

Rear tally brightness

fixed16

0.0

1.0

Sets the tally rear brightness.

  • = minimum,

  • = maximum Tally rear brightness cannot be turned off

Reference

6.0

Source

int8 enum

0

2

0 = internal, 1 = program, 2 = external

6.1

Offset

int32

+/- offset in pixels

Configuration

7.0

Real Time Clock

int32

[0] time

_

_

BCD - HHMMSSFF (UCT)

[1] date

_

_

BCD - YYYYMMDD

7.1

System language

string

[0-1]

_

_

ISO-639-1 two character language code

7.2

Timezone

int32

_

_

_

Minutes offset from UTC

7.3

Location

int64

[0] latitude

_

_

BCD - s0DDdddddddddddd where s is the sign: 0 = north (+), 1 = south (-); DD degrees, dddddddddddd decimal degrees

[1] longitude

_

_

BCD - sDDDdddddddddddd where s is the sign: 0 = west (-), 1 = east (+); DDD degrees, dddddddddddd decimal degrees

Group

ID

Parameter

Type

Index

Minimum

Maximum

Interpretation

Color Correction

8.0

Lift Adjust

fixed16

[0] red

-2.0

2.0

default 0.0

[1] green

-2.0

2.0

default 0.0

[2] blue

-2.0

2.0

default 0.0

[3] luma

-2.0

2.0

default 0.0

8.1

Gamma Adjust

fixed16

[0] red

-4.0

4.0

default 0.0

[1] green

-4.0

4.0

default 0.0

[2] blue

-4.0

4.0

default 0.0

[3] luma

-4.0

4.0

default 0.0

8.2

Gain Adjust

fixed16

[0] red

0.0

16.0

default 1.0

[1] green

0.0

16.0

default 1.0

[2] blue

0.0

16.0

default 1.0

[3] luma

0.0

16.0

default 1.0

8.3

Offset Adjust

fixed16

[0] red

-8.0

8.0

default 0.0

[1] green

-8.0

8.0

default 0.0

[2] blue

-8.0

8.0

default 0.0

[3] luma

-8.0

8.0

default 0.0

8.4

Contrast Adjust

fixed16

[0] pivot

0.0

1.0

default 0.5

[1] adj

0.0

2.0

default 1.0

8.5

Luma mix

fixed16

0.0

1.0

default 1.0

8.6

Color Adjust

fixed16

[0] hue

-1.0

1.0

default 0.0

[1] sat

0.0

2.0

default 1.0

8.7

Correction Reset Default

void

reset to defaults

Group

ID

Parameter

Type

Index

Minimum

Maximum

Interpretation

10.0

Codec

  • = basic codec

int8 enum

  • = code variant

0 = CinemaDNG, 1 = DNxHD, 2 = ProRes, 3 = Blackmagic RAW

CinemaDNG: 0 = uncompressed, 1 = lossy 3:1, 2 = lossy 4:1

ProRes:

0 = HQ,

1 = 422,

2 = LT,

3 = Proxy, 4 = 444,

5 = 444XQ

Blackmagic RAW:

0 = Q0, 1 = Q5,

2 = 3:1, 3 = 5:1, 4 = 8:1, 5 = 12:1

Media

10.1

Transport mode

int8

[0] = mode

0 = Preview, 1 = Play, 2 = Record

[1] = speed

-ve = multiple speeds backwards, 0 = pause, +ve = multiple speeds forwards

[2] = flags

1<<0 = loop, 1<<1 = play all, 1<<5 = disk1 active, 1<<6 = disk2 active, 1<<7 = time-lapse recording

[3] = slot 1 storage medium

0 = CFast card, 1 = SD Card, 2 = SSD Recorder,

3 = USB

[4] = slot 2 storage medium

0 = CFast card, 1 = SD Card, 2 = SSD Recorder,

3 = USB

10.2

Playback Control

int8 enum

[0] = clip

0 = Previous, 1 = Next

10.3

Still Capture

void

Capture

11.0

Pan/Tilt Velocity

fixed16

[0] = pan velocity

-1.0

1.0

-1.0 = full speed left,

1.0 = full speed right

[1] = tilt velocity

-1.0

1.0

-1.0 = full speed down,

1.0 = full speed up

PTZ

Control

11.1

Memory Preset

int8 enum

[0] = preset command

0 = reset, 1 = store location, 2 = recall location

int8

[1] = preset slot

0

5

Group

ID

Parameter

Type

Index

Minimum

Maximum

Interpretation

Metadata

12.0

Reel

int16

[0] = reel

0

999

12.1

Scene Tags

signed byte

[0] = scene tags

-1 = None

0 = WS 1 = CU 2 = MS 3 = BCU 4 = MCU 5 = ECU

[1] = interior / exterior

0 = Exterior 1 = Interior

[2] = day / night

0 = Night 1 = Day

12.2

Scene

string

[0-4] = scene

[0] = take number

1

99

12.3

Take

signed byte

[1] = take tags

1 = None

0 = PU 1 = VFX

2 = SER

12.4

Good Take

void

[0] = good take

12.5

Camera ID

string

[0-28] = ID

12.6

Camera Operator

string

[0-28] = operator

12.7

Director

string

[0-27] = director

12.8

Project Name

string

[0-28] = project

12.9

Lens Type

string

[0-55] = type

12.10

Lens Iris

string

[0-19] = iris

12.11

Lens Focal Length

string

[0-29] = focal length

12.12

Lens Distance

string

[0-49] = distance

12.13

Lens Filter

string

[0-29] = filter

12.14

Slate Mode

signed byte

[0] = type

0 = Recording 1 = Playback

12.15

Slate Target

string

[0-31] = name

Example Protocol Packets

Operation

Packet Length

Byte

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

header command data

destination

length

command

reserved

category

parameter

type

operation

trigger instantaneous auto focus on camera 4

8

4

4

0

0

0

1

0

0

turn on OIS on all cameras

12

255

5

0

0

0

6

0

0

1

0

0

0

set exposure to 10 ms on camera 4 (10 ms = 10000 us = 0x00002710)

12

4

8

0

0

1

5

3

0

0x10

0x27

0x00

0x00

add 15% to zebra level (15 % = 0.15 f = 0x0133 fp)

12

4

6

0

0

4

2

128

1

0x33

0x01

0

0

select 1080p 23.98 mode on all cameras

16

255

9

0

0

1

0

1

0

24

1

3

0

0

0

0

0

subtract 0.3 from gamma adjust for green & blue (-0.3 ~= 0xfd9a fp)

16

4

12

0

0

8

1

128

1

0

0

0x9a

0xfd

0x9a

0xfd

0

0

4

4

0

0

0

1

0

0

255

5

0

0

0

6

0

0

1

0

0

0

4

8

0

0

1

5

3

0

0x10

0x27

0x00

0x00

all operations combined

76

4

6

0

0

4

2

128

1

0x33

0x01

0

0

255

9

0

0

1

0

1

0

24

1

3

0

0

0

0

0

4

12

0

0

8

1

128

1

0

0

0x9a

0xfd

0x9a

0xfd

0

0

Was this information helpful?