REVISION HISTORY ...................................................................................................................... 5
Version 2.00.00.............................................................................................................................................. 5
Version 1.02.01.............................................................................................................................................. 5
Version 1.02.00.............................................................................................................................................. 5
Version 1.01.xx.............................................................................................................................................. 5
ID, Receive or Transmit............................................................................................................................. 7
Delimiter Character ,.................................................................................................................................. 7
Tag Delimiter : ........................................................................................................................................... 9
NEW FEATURES OF BKC-DIP V2.0 VS. V1.0............................................................................ 10
8 alpha-numeric character tags................................................................................................................. 10
Changes to the Parser Allowing “ , : ; ( ) in Strings................................................................................ 10
Additional Intelligence require in Host Parser ......................................................................................... 11
SubIdentifiers Indicating Hardware Zone information .......................................................................... 12
Zone Specific specifier................................................................................................................................ 12
SUMMARY OF BKC-DIP COMMANDS ....................................................................................... 14
Host to B&K Device Commands Summary.............................................................................................14
G (get) command...................................................................................................................................... 14
S (set) Command...................................................................................................................................... 14
D (display) Command .............................................................................................................................. 15
X (executive) Command........................................................................................................................... 15
B&K Device to Host Commands Summary.............................................................................................16
E (echo) Command................................................................................................................................... 16
R (reply) Command.................................................................................................................................. 16
U (update) Command............................................................................................................................... 16
HARDWARE ZONES, CODE SETS AND ZONE IDS, LOGICAL ZONES .................................. 17
Zone IDs................................................................................................................................................... 18
HOST TO B&K DEVICE COMMANDS......................................................................................... 25
G (get) Command....................................................................................................................................... 25
Serial Macro ......................................................................................................................................... 34
Escape Characters in Serial Macros ................................................................................................. 34
IR Macro............................................................................................................................................... 34
IR Command : (receiveID, S, I, z=ir; cs16).............................................................................................. 37
Front Panel Commands: (receiveID, S, F, z=fp; cs16)............................................................................. 37
Error Logs: (receiveID, S, E, identifier=value,...identifier=value; cs16) ................................................. 38
D (display) Command ................................................................................................................................ 38
On Screen Display (O): (receiveID, D, O, Ttt, Mm, Xcc, Yrr, "text", ... Xrr, Ycc, "text"; cs16)(only
applicable to units with On Screen Display capabilities) ......................................................................... 38
LED display: (receiveID, D, L, Ttt, n=bitmap; cs16).............................................................................. 40
X (executive) Command ............................................................................................................................. 41
M (Macro Trigger) Command: (receiveID, M, t=mm, … ,t=mm;cs16)............................................... 43
B&K DEVICE TO HOST COMMANDS......................................................................................... 44
E (echo) Command..................................................................................................................................... 44
Implementing Software Flow Control using Echo Commands................................................................ 44
R (reply) Command.................................................................................................................................... 44
Reply from the Get Display command (transmitID, G, D, d; cs16)......................................................... 45
BKC-DIP V2.0 Compliant Display Reply without Attributes.............................................................. 47
BKC-DIP V2.0 Compliant Display Reply with Attributes................................................................... 48
U (update) Command ................................................................................................................................. 50
Status message: (transmitID, U, S, n=“status message”;cs16)................................................................. 50
BKC-DIP Active message: (transmitID, U, S, 0=“BKC-DIP ACTIVE”;cs16) ................................... 50
IR message: (transmitID, U, I, z=ir;cs16)................................................................................................ 51
Front Panel message: (transmitID, U, F, z=ir;cs16) ................................................................................. 51
Realtime Status message: (transmitID, U, R, identifier=value;cs16)....................................................... 51
USE OF RECEIVE AND TRANSMIT IDS..................................................................................... 53
The Receive ID................................................................................................................. ........................... 53
The Transmit ID......................................................................................................................................... 53
A Multiple Unit Example........................................................................................................................... 53
3. Added note about 16:9 Aspect ratio interaction with OSD Display row specification.
Version 1.02.00
1. This is the first version of this documentation which is specified by version number.
2. This document includes augmentation to the original BKC-DIP V1.01 protocol and
supercedes information found in “B&K Components Device Interface Protocol (BKC-DIP) V1.01 Protocol Document”.
Version 1.01.xx
1. Documentation earlier than Version 1.02.00 was not specified by a version number. This
encompasses all documentation prior to 08/07/00. Prior documentation entitled “B&K Components Device Interface Protocol (BKC-DIP) V1.01 Protocol Document” described
BKC-DIP Version 1.01 is therefore referred to as Version 1.01.xx here.
The following is the specification and implementation details of the B&K Components Device
Interface Protocol, BKC-DIP. BKC-DIP is an ASCII text based serial protocol. The electrical
specification is RS-232, thus B&K Components' devices may be controlled by standard "COM"
ports or similar serial devices. Thro ugh the use of Receive and Transmit IDs, multiple B&K
Components units may be controlled on a common serial bus.
Document Conventions
All numbers are assumed to be hexadecimal
from 0 to F.
For example:
The number 19 is the hexadecimal numbe r 19 which is (1 x 16
25 decimal. Similarly, EA is the hexadecimal number EA which is (14 x 16
(10 x 16
may use the xxh notation to remind the reader that the number is implicitly
hexadecimal where xx are the hexadecimal characters 0 - F. Thus the previous
examples would be 19h and EAh respectively, the "h" indicating hexadecimal.
Italics indicate a non-literal string.
For example:
(00,G, P00, 0;cs16) cs16 indicates the calculated checksum and does NOT literally appear in the
data stream.
Important concepts are denoted by NOTE:
0
) or 234 decimal. For clarity, some descriptions regarding numbers
Product Specific Appendices
Although all RS-232 capable B&K Components’ devices support the BKC-DIP protocol,
implementation details vary according to product family. The examples used in this document are
based on the CT 610 and REF 30 products. Make sure to consult the product specific appendices
for the specific B&K Components’ unit being controlled.
Supported RS-232 Settings
The currently supported baud rates are:
1200, 2400, 9600, 14400, 19200, 28800, 38400, 57600, and 115200
The currently supported serial settings are N-8-1:
N, no parity
8, eight bit data
1, one stop bit
Hardware flow control is not supported.
Basic Protocol Syntax
The B&K Components Device Interface Protocol (BKC-DIP) is an ASCII text based serial
protocol. All commands follow the same basic format:
idis the Receive ID (for host to B&K unit commands) or Transmit ID (for B&K
unit to host commands)
, is the delimiter character
cc is the command
, is the delimiter character
ssis the command specifier
; is the checksum delimiter
cs16 is 16-bit (optional, but recommended) checksum
) indicates the end of a message
NOTE: Leading zeros may be omitted.
NOTE: Upper and lower case characters may be used interchangeably. (00,G, P01; 01EB ) is
equivalent to (00,g, p1; 1FB )
Begin/End Message Characters ()
The ASCII open/close parenthesis characters "(" and ")" not occurring in a double quoted string
indicate the beginning and the end of a BKC-DIP message respectively.
NOTE: Each time an open parenthesis character not occurring in a double quoted string is
received, the parsing engine's state is reset. In the event of the host and B&K
Component's device loses sync, the "(" will abort any previous state and the
communication will once again be in sync except under conditions detailed in New
Features of BKC-DIP V2.0 vs. V1.0.
ID, Receive or Transmit
The first token of each BKC-DIP message is an ID, which can be 00h – 7Fh. This allows up to
128 different units to be controlled on the same serial bus.
NOTE: The receive ID FFh is also supported as a “global” or “universal” receive ID. Any B&K
Components device on a serial channel would respond to commands with a receive ID of
FFh regardless of their specified receive ID. This is useful for determining if any B&K
Components devices are on a particular serial channel.
See section entitled Use of Receive and Transmit IDs for more details.
Delimiter Character ,
All members of a BKC-DIP message are delimited by "," an ASCII comma (with the exception of
the checksum delimiter ";", see below).
NOTE: Unlike V1.0 BKC-DIP, commas are allowed in double quoted strings (such as text
strings as in "Comma, IS valid"). Refer to New Features of BKC-DIP V2.0 vs. V1.0 for
details.
Checksum Delimiter ;
The checksum of each message is optionally transmitted embedded in the message to assure data
has not been corrupted during transmission. The checksum is the 4 digits hexadecimal digits (0-F)
directly following the ";" delimiter. Software designed to parse BKC-DIP serial streams can
easily detect the ";" delimiter, thus making message parsing simple.
NOTE: Unlike V1.0 BKC-DIP, semi-colons are allowed in double quoted strings (such as text
strings as in "Semi-colon; valid"). Refer to New Features of BKC-DIP V2.0 vs. V1.0
for details.
Identifier SubIdentifier Delimiter .
On units where multiple hardware zones can be “linked” using “Code Sets” to logical zones, such
as the CT 610, identifiers from the unit may have addition SubIdentifiers. These SubIdentifiers
are delimited from the identifier via an ASCII period, “.”.
An example reply which contains SubIdentifier Delimiters (and subsequently SubIdentifiers) is:
(0, R, G, P7=FF, 1.A=20, 1.B=18, 1.D.L=10; cs16)
This response containing Volume information for the current preset of Zone 7, P7=FF, indicates
that there are 3 different hardware zones attached to the logical zone 7.
NOTE: For an in depth discussion of Har dware Zones vs. Logical Zones, see section Hardware
Zones, Code Sets and Zone IDs, Logical Zones.
Checksum
The checksum itself is a 16 bit quantity calculated by summing all of the incoming ASCII
characters up to and including the ";" checksum delimiter AND excluding the begin message "(".
For example, the checksum for the following message would be calculated as:
(00, G, P00; 01EA)
( begin message character, ignored in checksum calculation, reset checksum
For example, the following two commands both yield the same checksum, 01DFh.
(00, G, P00; 01EA) (00, G, P00; 01EA)
However, the following two commands yield different checksums because of the whitespace in the
second title:
(00, S, P1, 0="Title";0 4 A6)
(00, S, P1, 0=" Title " ;0 4E6) white space characters before and after Title
Tag Delimiter :
It is often useful to be able to determine which response from the B&K Component’s device
corresponds to a particular command issued by the host. To facilitate this, an optional tag may be
concatenated to the receive ID. This tag may be up to 8 alpha-numeric characters in length, and is
then concatenated to the transmit ID of the message(s) generated by the unit.
A few examples to demonstrate the use of the tag:
(0:1234wxyz, G, P3=1, 0;053D) Get Z3 Preset 1, parameter 0 with tag
(0:1234wxyz,E,G,P3=1,053D;065A) Echo from unit with tag 1234wxyz
(0:1234wxyz,R,P3=1,0="His TV ";0897)Reply from unit with tag 1234wxyz
NOTE: The use of tags is optional. If no tag delimiter is detected in the received command, no
tag is appended in the response from the unit.
NOTE: Unlike V1.0 BKC-DIP, V2.0’s tag is 8 characters long, as opposed to only 4. Refer to
New Features of BKC-DIP V2.0 vs. V1.0 for details.
NOTE: Messages generated autonomously by the unit (such as “U” update commands) do no t
have tags associated with them.
NOTE: Unlike V1.0 BKC-DIP, colons are allowed in double quoted strings (such as text strings
as in "Colon : valid"). Refer to New Features of BKC-DIP V2.0 vs. V1.0 for details.
1234wxyz
(0,U,I,1=24;0261) Update IR command Z1 of 24 (Volume +), no tag
Several new features have been added to the BKC-DIP protocol. For those familiar with BKCDIP V1.0, this section concisely lists all the new features now available. For those just becoming
acquainted with BKC-DIP, you may want to note which features are not available in the B&K
Components devices with V1.0 BKC-DIP implementations.
NOTE: If using this document with a BKC-DIP V1.0 device, please remember that the following
features do not apply. This will NOT be explicitly noted throughout the remainder of the
documentation.
The changes from protocol V1.0 to V2.0 are listed below.
8 alpha-numeric character tags
The optional tag which can be appended to the receive ID with a colon, “:” has been increased to 8
alpha-numeric characters as opposed to 4.
Changes to the Parser Allowing “ , : ; ( ) in Strings
Perhaps the most important change to BKC-DIP V2.0 from V1.0 is the augmented support for
strings. In previous versions of BKC-DIP specific characters could only appear as protocol syntax
and were not allowed in any other context, specifically strings.
In adding the new Serial Macro feature (see the Macro specifier section below), it was desirable
to allow BKC-DIP commands to be emitted. This implied that entire BKC-DIP commands needed
to be supported as a valid BKC-DIP string, which further implied that BKC-DIP delimiters (i.e. “ ,
: ; ( ) ) NOT be interpeted inside double quoted strings.
This further implied the addition of the escape character “\”, backslash to allow double quotes and
the escape character itself to be embedded into strings.
Notice the BKC-DIP command (0:1234,S,P1=0,0=”Title”;) as a string in the previous example.
Parser Synchronization
In V1.0 versions of BKC-DIP, any time the parser received an opening parenthesis, “(“, the parser
state machine was reset. This implied that no matter what characters had previously be sent to the
BKC-DIP device, sending a ( would begin a new BKC-DIP command.
The same still holds true with one very important exception: double quoted strings (which are
delimited by the ASCII character “, 34). The V2.0 BKC-DIP parser holds state regarding finding
a double quote character. When the parser finds a double quote it will not interpret any character
until it finds a matching unescaped double quote. This implies that the parser could get into a state
that a open parenthesis would not reset, namely if the parser is in the midst of a quoted string. The
following examples will illustrate.
Let’s assume that a user wanted to set Zone 1 Preset 0’s title to extremely clever and descriptive
word “Title ”. The user began typing the following:
It is then realized that the user has misspelled. With a V1.0 BKC-DIP parser, simply retyping the
command would correct the issue as the parser would be reset upon receiving the openning “(“.
However, that is not the case with the V2.0 parser, as the parser is currently in a state of
accumulating characters for the string <“Pit> (the < and > characters added for clarity). The
parser will not interpret the “(“ character as part of the BKC-DIP syntax, but merely more of the
string <”Pit(>.
Additional Intelligence require in Host Parser
When developing a BKC-DIP V2.0 parser additional intelligence must be incorporated so BKCDIP syntax is not interpreted when appearing in double quoted strings. The following is pseudo
code for the state machine for such a parser:
BeginCommandState
If the character = ‘(‘
Reset state (i.e. checksum calculation
Next state = GetReceiveIDState
GetReceiveIDState
Add the character to the checksum calculation
If the character = ‘,’ or ‘:’
Indicates last character of ReceiveID
If the character = ‘:’
Next state = GetTagState
Else
Next state = FillCommandBufferState
Else
Add the character to the ReceiveID
GetTagState
Add the character to the checksum calculation
If the character = ‘,’
Indicates last character of the tag
Next state = FillCommandBufferState
Else
Add character to the tag
FillCommandBufferState
Add the character to the checksum calculation
If the character = ‘“’
Next state = QuotedStringState
Add character to command buffer
Convert the character to upper case
If the character = ‘;’
Indicates checksum possibly coming
Next state = ChecksumState
Else if the character = ‘(‘
Next state = Begi nCommandState
Add the character to the checksum calculation
If the character = ‘\’
Next state = CharacterEscapeState
Else if the character = ‘”’
Next state = FillCommandBufferState
Add character to command buffer
CharacterEscapeState
Add the character to the checksum calculation
Next state = QuotedStringState
Add character to command buffer
ChecksumState
If the character = ‘)’
Indicates completion of checksum
If checksum = calculated checksum or no checksum received
Further command parsing
Next state = BuildCommandState
Else
Add character to the checksum
SubIdentifiers Indicating Hardware Zone information
SubIdentifiers have been added to augment parameter identifiers to identify to which Hardware
Zone the values is associated. These take the form of “.A”, “.B”, “.C”, etc. for stereo Hardware
Zones and “D.L”, “D.R”, “E.L”, “E.R”, “F.L”, “F.R”, etc. for mono Hardware Zones. Please refer
to the Hardware Zones, Code Sets and Zone IDs, Logic al Zones and SubIdentifiers sections
later in this document for further details about Hardware Zones, Logical Zones, and
SubIdentifiers.
Zone Specific specifier
Since new multi-zone devices have varying number of Logical Zones (based upon the System
Settings for Zone IDs and Code Sets), the Zone Specific specifier, “Z”, has been added to Get and
Set commands. Please refer to sections Zone Specific Settings: (receiveID, G, Zzz, identifier, ...
identifier;cs16) and Zone Specific Settings: (receiveID, S, Zzz, identifier = value, ... identifier =
value; cs16) for more details.
Macro specifier
An additional specifier, M (for Macro), has been added to the Get and Set commands to allow
Serial Macro configuration. Please refer to sections Macro Settings: (receiveID, G, Mt=mm,
identifier, ... identifier;cs16) and Macro Settings: (receiveID, S, Mt, identifier = value, ...
identifier = value; cs16) for more details.
Macro Trigger Command
To allow BKC-DIP triggering of the new Macro features, the M command has been added to
BKC-DIP. This allows a specific Macro (type and number) to be triggered via BKC-DIP. Please
refer to M (Macro Trigger) Command: (receiveID, M, t=mm, … ,t=mm;cs16) section for more
details.
Favorite Settings of a Preset
To allow an easy mechanism to Get/Set the favorite of a particular presets across several Logical
Zones in a single command, the Favorite Command added to BKC-DIP. Please refer to Favorite
Settings of a Preset: (receiveID, G, A, identifier, ... identifier;cs16) and Favorite Settings of a
Preset: (receiveID, S, A, identifier=value, ... identifier=value;cs16) for more details
Additional Reply Display formats
There are two new reply formats for Display Replies, in addtion to a BKC-DIP V1.0 compatible
format. See sections BKC-DIP V1.0 Compliant Display Reply, BKC-DIP V2.0 Compliant
Display Reply without Attributes, and BKC-DIP V2.0 Compliant Display Reply with
Attributes for more details.
The following is a summary of the BKC-DIP commands and some brief examples. Each
command is described in detail in the remainder of the document. The commands are broken in to
two categories: Host to B&K Device Commands and B&K Device to Host Commands.
(00, G, M0=20;0296) Get Serial Macro 32’s settings
(0,G,M0;0187) Get All Serial Macros
Tuner Station Se t tings: (receiveID, G, Tnn, <identifier, ... identifier>;cs16)
(0,G,T12;cs16) Get Tuner channel 18 all parameters
Realtime Status: (receiveID, G, R, <identifier, ... identifier>; cs16)
(0,G,R,3;cs16) Get Realtime Status parameter 3
Override Settings: (receiveID, G, O, <identifier, ... identifier>; cs16)
Reinitialize BKC-DIP State Command: (receiveID, X, 8; cs16)
(0,X,8;cs16) Reinitialize BKC-DIP State parameters
Test Tone State Command: (receiveID, X, 9, level; cs16)
(0,X,9,2;cs16) Test Tone on at –30.0 dB level
(0,X,9,0;cs16) Test Tone off
Mute State Command: (receiveID, X, A, z=muteState; cs16)
(0,X,A,1=1;cs16) Mute Z1
(0,X,A,2=0;cs16) Unmute Z2
B&K Device to Host Commands Summary
E (echo) Command
(2, E, G, P1=00, 0228;0393) Echo from unit 02h for Get Z1 Preset 0 command
R (reply) Command
(2, R, P2=1,3=5;02D8) Reply from unit 02h Z2 Preset 1 parameter 3 info
(0, R, D, F, 0="X FRONT PANEL XX ",80=1;cs16)
Reply from the Get Display command (transmitID, G, D, d; cs16)
U (update) Command
Status message: (transmitID, U, S, 0=“BKC-DIP ACTIVE”;cs16)
(0,U,S,0=”BKC-DIP ACTIVE”;cs16) Ready for BKC-DIP commands
IR message: (transmitID, U, I, z=ir;cs16) (0,U,I,1=C4;cs16) Update to host from Zone 1 <Volume ->
Front Panel message: (transmitID, U, F, z=ir;cs16)
(0,U,F,1=A;cs16) Update to host from Zone 1 front panel <Volume ->
Realtime Status message: (transmitID, U, R, identifier=value;cs16)
(0,U,R,5=sample rate;cs16) Update from sample rate change
Hardware Zones, Code Sets and Zone I Ds, Logical Zones
In recent B&K Components’ devices, such as the CT 610, there is the concept of Hardware Zones
and Logical Zones. This has implications with regards to BKC-DIP. In order to understand these
parts of BKC-DIP, an understanding of Hardware and Software zones is required. This section
describes the concepts of Hardware Zones, overlapping the assignments of Code Sets/Zone IDs to
link command and control of Hardwar e Zones to form Logical Zones, and SubI dentifiers (which is
how BKC-DIP presents Hardware Zone information).
NOTE: References to the B&K Components CT 610 will be used as examples since it is the first
B&K product to contain these features. Again, recall that BKC-DIP V1.0 is a subset of
V2.0x featur es. Thus this sectio n has no meaning in BKC-DIP V1.0 products.
Hardware Zones
As the name implies, Hardware zones relate t o hardware. Thus a Hardware zone ca n be thought
of as the output jacks of the Device. On the CT 610, for example, there are 6 (stereo) output zones
lettered A – F. In some instances a stereo zone can be “split” into 2 mono zones which are further
subspecified by “.L” or “.R” referring to the left or the right half respectively.
NOTE: Hardware Zones are referred to by letter. For example, the CT 610 6 stereo zone
outputs are referred to as A, B, C, D, E, and F respectively. As another example, if all 6
zones of a CT 610 were configured to be mono zones, they would be referred to as A.L,
A.R, B.L, B.R, C. L, C.R, D.L, D.R, E.L, E .R, F.L, and F.R respe ctively.
Code Sets, Zone IDs, and Logical Zones
NOTE: The terms Code Set, Zone ID, and Logical Zone are synonomous.
The terms Code Set, Zone ID, and Logical Zones are synonomous, however various contexts
typically use a specific terminology.
NOTE: Code Sets, Zone IDs, and Logical Zones are referred to by number. For example,
there are 9 the default Code Sets / Zone IDs / Logical Zones of the CT 610, which are 0,
3, 4, 11, 12, 13, 14, 15, and 16.
Code Sets
As in earlier B&K Components devices there are system parameters to allow command and
control of individual Zones (ZA and ZB, previously Z1 and Z2). The term Code Set is primarily
used in conjunction with Infa Red remotes and keypads. A Code Set is essentially a particular
product ID associated with an IR remote. This Code Set is assigned to control a particular
Hardware Zone (or Zones).
Currently, there are two types of Code Sets supported in the CT 610 and CT 310 associated with
each Hardware Zone: Group and Individual. This implies that multiple remotes can uniquely
control the same Hardware Zone.
NOTE: Code Sets are referred to by number. For example, there are 9 default Code Sets in
the CT 610:
Two Group Code Sets: 3 and 4
Six Individual Code Sets: 4, 11, 12, 13, 14, 15, and 16