Control commands - btsimonh/Behringer-BCA-2000-ASIO-driver GitHub Wiki

The BCA-2000 has a number of control commands.

in general, the control commands are in the form:

char Cmd;
char Len;
char Data[];

although since the original driver sends more data than 'Len', and does not clear it's buffers before putting in new data, it is sometimes unclear as to if bytes beyond 'Len' are important. e.g. the Midi output states 4 bytes, but uses 8...

Command codes:

02

This controls aspects of sample size/rate and enables TX and RX.
It always has 4 bytes of data.

the default startup condition is equivalent to the command
02 04 00 20 00 00

Byte0:
bits 2/3 are used for sample rate (maybe xtal select?) 00=44.1, 01=48.0, 11=88.2/96.0
bit 1 enables output
Byte1:
if 0x3a -> suspend rx
if 0x1a -> enable rx
Byte2:
bits 4/5 are used for sample rate. 00 = 44.1, 01 = 48.0, 10 = 88.2, 11 = 96.0 Byte3:
zero
Byte5: (not included in length?)
(if non zero, portE &= 0xbf) (if zero, portE |= 0x40)

Example 96000 commands used:
before RX/TX
02 04 CC 38 30 00
enable RX
02 04 CC 1A 30 00
enable TX
02 04 CE 1A 30 00

03

this is used to output Midi data
examples:
CHA
00000000: 03 04 03 90 4a 64 00 00 00 00 00 00 00 00 00 00
00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
CHB:
00000000: 03 00 00 00 00 00 00 00 00 00 03 80 34 40 00 00
00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Input:
00000000: 01 80 64 00 00 64 7f 80 00 81 10 d7 a8 d5 ed e7
00000010: ff ff 8c 00 00 01 02 01 3b b2 e4 7c c9 61 b2 df
00000020: d0 51 2d 3e 46 89 68 b7 36 e5 1b d7 b2 00 44 bd
00000030: b3 34 d3 17 00 cd 54 95 59 12 61 7a

00000000: 02 34 40 00 00 64 7f 80 00 81 10 d7 a8 d5 ed e7
00000010: ff ff 8d 00 00 01 02 01 3b b2 e4 7c c9 61 b2 df
00000020: d0 51 2d 3e 46 89 68 b7 36 e5 1b d7 b2 00 44 bd
00000030: b3 34 d3 17 00 cd 54 95 59 12 61 7a

07

seems to be a 'reset' or 'take config' command, Len is 00.
Send after enable RX

08

Controls the function of the second midi port. Len = 1, and data is 00 or 01
e.g.
08 01 00 -> midi out B = Loop?
or
08 01 01 -> midi out B is 2nd midi out?

10/11

firmware loading commands (see separate page).

12

Seems to send I2C commands to I2C address 0x11 (CS8406 digital TX chip)
Len = 07
examples:
12 07 a0 20 60 00 00 00 00
12 07 a0 80 00 34 00 00 00

⚠️ **GitHub.com Fallback** ⚠️