B&K Components Device Interface Protocol (BKC-DIP) Specification Version 2.01.00 B&K Components Device Interface Protocol (BKC-DIP) Specification Version 2.01.
Table of Contents REVISION HISTORY ...................................................................................................................... 5 Version 2.01.00 .............................................................................................................................................. 5 Version 2.00.00.............................................................................................................................................. 5 Version 1.02.01....................
Additional Reply Display formats............................................................................................................. 13 SUMMARY OF BKC-DIP COMMANDS ....................................................................................... 14 Host to B&K Device Commands Summary ............................................................................................. 14 G (get) command ...................................................................................................
Zone Adjustment (Hardware Special) Settings: (receiveID, S, H, identifier=value,...identifier=value; cs16) ......................................................................................................................................................... 33 Zone Specific Settings: (receiveID, S, Zzz, identifier = value, ... identifier = value; cs16)...................... 34 Macro Settings: (receiveID, S, Mt, identifier = value, ... identifier = value; cs16) ..................................
Revision History Version 2.01.00 1. Add new Hardware Special Format (receiveID,G,F9;). Version 2.00.00 1. 2. 3. 4. New version of BKC-DIP with expanded capabilities and support for multi-hardware zone devices. See section New Features of BKC-DIP V2.0 vs. V1.0 for details. Override Parameters have diverged to be specific per product. Moved Override Parameters section to Product Specific Appendices’ Appendix P.
Introduction Overview 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. Through 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.
(id, cc, ss, ... ; cs16) where: ( id , cc , ss ; cs16 ) indicates the start of a message is the Receive ID (for host to B&K unit commands) or Transmit ID (for B&K unit to host commands) is the delimiter character is the command is the delimiter character is the command specifier is the checksum delimiter 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.
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, “.”.
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";04A6) (00, S, P1, 0=" Title ";04E6) 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.
New Features of BKC-DIP V2.0 vs. V1.0 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.
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(>.
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
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.
Summary of BKC-DIP Commands 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. Host to B&K Device Commands Summary G (get) command Presets: (receiveID, G, Pz=nn,
Zone Adjustment (Hardware Special) Settings: (receiveID, S, H, identifier=value,...identifier=value; cs16) (0,S,H,00=00,09=15;cs16) Set Zone Adjustment parameters 0 and 9 Zone Specific Settings: (receiveID, S, Zzz, identifier = value, ... identifier = value; cs16) (1, S, Z7, 0=”Living Room”;cs16) Set Z7 Zone title Macro Settings: (receiveID, S, Mt, identifier = value, ...
Cold Boot Command: (receiveID, X, 6; cs16) (0,X,6;cs16) Cold Boot BKC-DIP device Factory Reset Command: (receiveID, X, 7; cs16) (0,X,7;cs16) Factory Reset BKC-DIP device WARNING!: Issuing a Factory Reset Command will destroy all user modified data in the unit (preset, system settings, etc.). 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.
Hardware Zones and Groups In recent B&K Components’ devices, such as the CT 610, there is the concept of Hardware Zones, Groups, 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.
k l m n o p q r off off off off off off off off Code Sets, Zone IDs, and Logical Zones NOTE: The terms Code Set, Zone ID, and Logical Zone are synonymous. The terms Code Set, Zone ID, and Logical Zones are synonymous, 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 default Code Sets / Zone IDs / Logical Zones configured in a CT 610.
NOTE: Zone IDs (Code Sets) are referred to by number. For example, there are 9 default Zone IDs (Code Sets) in the CT 610: One Whole House Code Set: 0 Two Code Sets assigned to control multiple Hardware Zones: 3 and 4 Six Code Sets assigned to control individual Hardware Zones: 11, 12, 13, 14, 15, and 16 Logical Zones Logical Zones are the result of associating Code Sets/Zone IDs to a Group for the control of Hardware Zones.
In earlier B&K Components device (Series II products specifically), there were system parameters to allow Z1 and Z2 power and/or volume controls to be linked. With the development of the CT 610 (a 6 stereo zone unit, or up to a 12 mono zone unit), the concept of linking became even more important. In BKC-DIP V2.0x products, such as the CT 610 and CT 310, Logical Zones may be used to link command and control of multiple Hardware Zones. Groups allow a means for multiple Hardware Zones to track each other (i.
Z13 Z14 Z15 Z16 C D E F Viewing the previous Group and Code Set/Zone ID assignments there are 9 Logical Zones: Zone 0 (Whole House), Zone 3, Zone 4 and Zones 11 through Zone 16. Also, note that there is always an implicit “Whole House” Zone, numbered Zone 0, which combines all Hardware Zones into a single Logical Zone. Note, Logical Zone 11 controls Hardware Zone A, however, Hardware Zone A is also part of Logical Zone 3, and Logical Zone 0.
Z12 Z16 Z17 Z22 Z27 Z35 A.R B, C, and D A.L and A.R E and F B, C, D.L, and D.R D.R, E, and F There are several important concepts to note that are illustrated in the above Logical Zones. 1. Logical Zones need not be consecutive. Notice there are no Logical Zones 2, 5-11, 13-15, 1821, 23-26, 28-34, or 36-128. Logical Zones are with created with Groups set to use a valid Code Sets/Zone ID with any value ranging from 0 (off), 1 to 128. 2.
(0,S,PB=FF,1=04;) (0,S,PC=FF,1=08;) (0,S,PD=FF,1=0C;) (0,S,PE=FF,1=10;) (0,S,PF=FF,1=14;) (0,S,P10=FF,1=18;) Set Zone 11 current preset’s volume to –72 dB Set Zone 12 current preset’s volume to –64 dB Set Zone 13 current preset’s volume to –56 dB Set Zone 14 current preset’s volume to –48 dB Set Zone 15 current preset’s volume to –40 dB Set Zone 16 current preset’s volume to –32 dB NOTE: Remember that the Zone is specified in hexadecimal, thus 11 = Bh, 12 = Ch, 13 = Dh, 14 = Eh, 15 = Fh, and 16 = 10h.
Logical Zone Z0 Z1 Z3 Z4 Z12 Z16 Z17 Z22 Z35 Hardware Zone members A.L, A.R, B, C, D.L, D.R, E, and F A.L B and C D.L A.R B, C, and D A.L and A.R E and F D.R E, and F Assume the following Set commands were previously issued: (0,S,P10=FF,1=18;) (0,S,P16=FF,1=1A;) Set Zone 16 (10h) current preset’s volume to –32 dB Set Zone 22 (16h) current preset’s volume to –28 dB The following Get command would yield: (0,G,P23=FF,1;) Request Zone 35’s (23h) volume (0,R,G,P23=FF,1.D.R=18,1.E=1A,1.F=1A;cs16) Where 1.D.
Host to B&K Device Commands There are five basic commands that the host can transmit to a B&K Components' device: G, S, D, M, and X. Each of these, and their format specifiers, are explained in detail below. G (get) Command The "G" command is issued by the host to the BKC-DIP device to get information about the current state of the unit.
System Settings: (receiveID, G, S, identifier, ... identifier; cs16) System settings are parameters which the user may modify, but they are global, or affect the entire system. Example of these includes power on strings, source input level settings, source names, etc. Querying system settings is useful for archival purposes. NOTE: A complete list of the system identifiers is found in product specific Appendix B.
Macro Settings: (receiveID, G, Mt=mm, identifier, ... identifier;cs16) The macro number, mm, can take on the values 00h to FFh (0 to 255) depending on the amount of memory used by each macro. The macro type, t, specifies which of the various kinds of macros are being referenced. NOTE: A complete list of macro identifiers and supported macro types is found in the product specific Appendix O.
NOTE: A complete list of station identifiers is found in the product specific Appendix C. NOTE: If no identifiers are specified, all of the tuner station information is returned to the host device. For example: (00, G, T01;01BF) returns Station 2 AM frequency, FM frequency, and FM Stereo See the Tuner Station Settings: (receiveID, S, Tnn, identifier = value, ... identifier = value; cs16) section for more details. NOTE: In later B&K Component devices, the concept of Tuner Stations was discontinued.
Override Settings: (receiveID, G, O, identifier, ... identifier;cs16) There are particular parameters (which primarily have to do with RS-232 and BKC-DIP settings) which can be “overridden”, forcing specific values regardless of the corresponding System setting parameters. NOTE: A complete list of Override identifiers is found in Appendix P of the appropriate BKCDIP Product Specific Appendices. NOTE: If no identifiers are specified, all of the Override Setting information is returned to the host device.
product specific Appendix C for a detailed listing. NOTE: B&K Units after Series I (AVR 202, Ref 20, PT 3, etc.) do not support Tuner channels. If a F2 format request is made of these newer units, they will simply ignore the request. RealtimeFormat: (00, G, F3; 01B3) requests a comma delimited list of available REALTIME STATUS information identifiers and their maximum values of units with Receive IDs of 00h. See the product specific Appendix D for a detailed listing.
(0, R, F4,0= "AVR 202", 1="V2.02"...
The Get fAvorite command, like the Zone Specific favorite preset bitmaps, also indicates favorite settings, but from a Preset centric point of view. This command indicates in which logical zones a particular preset is favorite. By contrast, the Zone Specific favorite preset bitmaps indicate which presets are favorite for a particular zone. NOTE: The specifier A is used, as the F specifier was already used for Format Specification.
..., 00="Zone 1 Title", ... 00 = "Zone 1 Title" ..., 01=60, ... 01 = 60 parameter identifier (in this case, the Z1 preset title) delimits identifier on left, value on right parameter value (in this case a string) parameter identifier (in this case, Z1 volume) delimiter parameter value (in this case, 60h or 0 dB) Note that parameter identifier, equal sign, and parameter value are delimited by ",", the ASCII comma character. All of the parameter identifiers do not need to be specified.
Zone Specific Settings: (receiveID, S, Zzz, identifier = value, ... identifier = value; cs16) Just as there are parameters which are associated with preset (i.e. Preset Parameters), the are other parameters which are associated with Logical Zones. These parameters are called Zone Specific settings. The zone number, zz, can take on the values 00h to 7Fh (Zone 0 to Zone 128). If a particular Logical Zone does not exist in the current device, the command will be ignored and no echo will be generated.
escaped in order to appear in the serial macro. The escape character is the backslash, \, character. This also implies that backslashes must be escaped to differentiate its two meanings: escape or the actual backslash character.
Settings: (receiveID, S, Zzz, identifier = value, ... identifier = value; cs16) section of this document for more details. The Set favorite command, like the Zone Specific favorite preset bitmaps, can also be used to attribute favorite settings to zones, but from a Preset centric point of view. This command allows setting the favorite preset attribute of particular logical zones for a specific preset.
.. 7=1 .. .. FF=A.. Override IR Locked is locked Activate Override Timeout in 1.0 second So long as Override Active is activated, the system ignores the System Setting parameters Echo Enabled, Front Locked, and IR Locked. This allows the user to freely change these System Settings without interfering with current serial communication parameters.
(0, R, O, 0=0; cs16) Reply indicates NOT in override mode NOTE: The use of the Override Timeout is not mandatory, but very strongly recommended especially when using Override commands to modify Baud Rate. IR Command: (receiveID, S, I, z=ir; cs16) (only applicable to units with IR Control capabilities) The BKC-DIP can be used to send virtual IR commands to the attached B&K Components device.
requires servicing (however, upgrading to new software WILL automatically clear the Error Logs). The only way to clear Error Logs the use of this Set command. NOTE: For a complete listing of Error Log parameters and their meanings see the complete listing in the product specific Appendix M. D (display) Command The BKC-DIP can be used to display ASCII text to either the Front Panel Display (FP), or the On Screen Display (OSD), or to change the states of the LEDs on the front panel.
(00, D, F, T32, X0, Y0, "5 sec timeout";cs16) (00, D, O, T64, M0, X0, Y0, "10 sec timeout";cs16) would clear BOTH displays after 10 seconds when the OSD timed out. NOTE: Text cannot be displayed when zone 1 is off. NOTE: The X and Y coordinates are zero based, with x00, y00 being in the upper left corner of the display (see exception below for Overlay Mode and 16:9 Aspect Ratio). NOTE: Currently the On Screen dimensions are 28 characters by 11 characters.
Ttt Xcc Yrr where tt * 100ms is the timeout before the display is cleared, and T00 indicates the display should not timeout. Valid tt values are from 00 (no timeout) to FF (25.5 seconds).
LEDs should be active at a time: Electrical Bank A UP, LEVEL, MODE, SOURCE, PRESET, SLEEP, ENTER, MENU, DOWN Electrical Bank B CENTER LEVEL, SUB LEVEL, GROUP LEVEL, REAR LEVEL, ZONE 2 Therefore: (00, D, L, T00, 0=48;cs16) Invalid, both PRESET and ENTER cannot be active (00, D, L, T00, 0=04;cs16) Valid, only MODE active (00, D, L, T32, 0=02, 1=01;cs16) Invalid, both LEVEL and DOWN cannot be active.
M (Macro Trigger) Command: (receiveID, M, t=mm, … ,t=mm;cs16) As its name implies, the “M”, Macro Trigger, Command is used to trigger macros in the device via BKC-DIP. This allows BKC-DIP to manually fire a macro in addition to the matching of the Trigger ID and Trigger Code from a B&K Components IR remote. The Macro type is t, and mm is the macro number ranging from 00h – FEh. NOTE: Currently the only supported macro type is 0, Serial Macro.
B&K Device to Host Commands There are three basic commands that the B&K Components device can transmit to the host: E, R, and U. Each of these, and their format specifiers, are explained in detail below. E (echo) Command The "E", echo, command provides feedback to the host if the developer would like a closed loop system. The "E" command simply echoes back the previously received command, format specifier, and calculated checksum.
Using the above example: (from host) (from unit) (from unit) (01, G, P1=0, 1;0286) "G" get Z1 preset 00 command from host destined for units with 01h receive IDs (1, E, G, P1=0, 0286;0366) "E" echoed get Z1 preset 00 command from unit with 01h Transmit ID (1, R, P1=0, 1=47;0309) "R" reply containing preset info from unit with 01h Transmit ID Another example would be in reply to a host get system: (from host) (from unit) (from unit) (00, G, S;018D) "G" get system info command from host from units with 00h
row 8=" " row 9="^_ next item adjust <>" row A=" MENU setup control B " This display is from the Selected Input setup menu of Control Out B of a CT 610. Notice that the text “Input 1 On” is selected, which is indicated by the red color above. The front panel display depicts a rendition of selected portion the menu, which is: “CB INPUT 1 ON” BKC-DIP V1.0 Compliant Display Reply This display reply format is to maintain backwards compatibility with BKC-DIP V1.0 interfaces. NOTE: BKC-DIP V1.
87=0,88=0,89=0,8A=0;6168) The above example indicates the primary shortcomming with the BKC-DIP V1.0 Display Reply format, mainly that it assumed entire lines were selected at a time. This is indicated by the 81=1 in the latter portion of the reply. As a historical note, this assumption was true in Series I and PT 3 B&K devices, but not Series II and forward.
2="Input 3 On Input 4 3="Input 5 On Input 6 4="Input 7 On Input 8 5="Input 9 On Zone In 6="FM Tuner On AM Tuner 7=" 8=" 9="^_ next item adjust A=" MENU setup control B On", On", On", On", On", ", ", <>", ";561E) Notice that in contrast to BKC-DIP V1.0 display replies, there are no 80 through 8A parameters indicating selection.
1="Input 1 On Input 2 2="Input 3 On Input 4 3="Input 5 On Input 6 4="Input 7 On Input 8 5="Input 9 On Zone In 6="FM Tuner On AM Tuner 7=" 8=" 9="^_ next item adjust A=" MENU setup control B On", On", On", On", On", On", ", ", <>", ", 80="0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", 81="1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", 82="0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", 83="0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", 84="0,0,0,0,0,0,0,0,0,0,0,0,
should additional character attributes become available in the future. Selecting this format will increase Get Display message traffic, and will decrease the speed at which Display information can be captured (especially at lower baud rates). NOTE: This reply format is only available if the BKC-DIP V2.0 Enabled parameter is enabled and the appropriate OSD and VFD reply modes are set to BKC-DIP V2.
IR message: (transmitID, U, I, z=ir;cs16) When the BKC-DIP device receives an IR message, the following message is generated: (transmitID, U, I, z=ir;cs16) where transmitID is the unit's Transmit ID, ir is the received IR command, z is the zone number, and cs16 is the 16 bit checksum.
(1, U, R, A=1;cs16) Transmit ID unit Update indicating OSD update from 01h Transmit ID unit NOTE: Realtime status registers can be read using the (receiveID, G,R, ...; cs16) command regardless of settings in the Realtime Enable registers. B&K Components Device Interface Protocol (BKC-DIP) Specification Version 2.01.
Use of Receive and Transmit IDs The primary use of the BKC-DIP Receive and Transmit IDs is to differentiate multiple units on a common serial bus. NOTE: The terms "receive" and "transmit" are relative to B&K Components device's perspective. Host to unit commands (such as G, S, and D) are received by the B&K unit and therefore contain the Receive ID. Conversely, data from the B&K unit to the host are transmitted by the unit and therefore contain the Transmit ID of the unit.
(3, R, P1=FF, 0=60;cs16) UNIT3 replies with its current preset Z1 Volume (0, S, S, 1="DAT";cs16) (0, E, S, received cs16; cs16) (2, E, S, received cs16; cs16) command to set both UNIT0 and UNIT2 V2 Title UNIT0 confirms reception of command UNIT2 confirms reception of command (0, G, P1=00, 1, 2;cs16) request Z1 Preset 0 Volume and Balance from UNIT0 and UNIT2 UNIT0 confirms reception of command UNIT2 confirms reception of command UNIT0 replies with its Z1 Volume and Balance UNIT2 replies with its Z1 Vol