MPK PLAY USB TRAFFIC

Monitoring USB traffic between AKAIs MPK PLAY software (favorite editor) and MPK play mini.

I used the software Wireshark for monitoring.
The interface between my macbook and USB device is named XHC20.
It has to be started via terminal
“sudo ifconfig xhc20 UP”
I sent a total of 4 messages to monitor

Message 1 = Reference
Message 2 = Difference A
Message 3 = Difference B
Message 4 = Difference A+B

Below are the messages formatted in C arrays

Message 1
Transpose: 0
External clock: OFF

/* Frame (32 bytes) */
static const unsigned char pkt65[32] = {
0x00, 0x01, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xc3, 0xa3, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02  /* ........ */
};

/* Frame (64 bytes) */
static const unsigned char pkt66[64] = {
0x00, 0x01, 0x20, 0x01, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xc3, 0xa3, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02, /* ........ */
0x04, 0xf0, 0x47, 0x7f, 0x04, 0x44, 0x64, 0x00, /* ..G..Dd. */
0x04, 0x63, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, /* .c...... */
0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, /* ........ */
0x04, 0x00, 0x78, 0x00, 0x04, 0x00, 0x00, 0x00  /* ..x..... */
};

/* Frame (32 bytes) */
static const unsigned char pkt67[32] = {
0x00, 0x01, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xc5, 0xa3, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02  /* ........ */
};

/* Frame (64 bytes) */
static const unsigned char pkt68[64] = {
0x00, 0x01, 0x20, 0x01, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xc5, 0xa3, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02, /* ........ */
0x04, 0x01, 0x10, 0x00, 0x04, 0x10, 0x11, 0x12, /* ........ */
0x04, 0x13, 0x14, 0x15, 0x04, 0x16, 0x1f, 0x20, /* .......  */
0x04, 0x21, 0x22, 0x23, 0x04, 0x24, 0x25, 0x26, /* .!"#.$%& */
0x04, 0x27, 0x30, 0x00, 0x04, 0x7f, 0x31, 0x00  /* .'0...1. */
};

/* Frame (32 bytes) */
static const unsigned char pkt69[32] = {
0x00, 0x01, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xc7, 0xa3, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02  /* ........ */
};

/* Frame (64 bytes) */
static const unsigned char pkt70[64] = {
0x00, 0x01, 0x20, 0x01, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xc7, 0xa3, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02, /* ........ */
0x04, 0x7f, 0x32, 0x00, 0x04, 0x7f, 0x33, 0x00, /* ..2...3. */
0x04, 0x7f, 0x40, 0x00, 0x04, 0x7f, 0x41, 0x00, /* ..@...A. */
0x04, 0x7f, 0x42, 0x00, 0x04, 0x7f, 0x43, 0x00, /* ..B...C. */
0x04, 0x7f, 0x0c, 0x00, 0x04, 0x00, 0x43, 0x00  /* ......C. */
};

/* Frame (32 bytes) */
static const unsigned char pkt71[32] = {
0x00, 0x01, 0x20, 0x00, 0x0c, 0x00, 0x00, 0x00, /* .. ..... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xc9, 0xa3, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02  /* ........ */
};

/* Frame (44 bytes) */
static const unsigned char pkt72[44] = {
0x00, 0x01, 0x20, 0x01, 0x0c, 0x00, 0x00, 0x00, /* .. ..... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xc9, 0xa3, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02, /* ........ */
0x04, 0x23, 0x00, 0x00, 0x04, 0x38, 0x40, 0x40, /* .#...8@@ */
0x05, 0xf7, 0x00, 0x00                          /* .... */
};

Message 2
Transpose: +1
External clock: OFF

/* Frame (32 bytes) */
static const unsigned char pkt77[32] = {
0x00, 0x01, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xd3, 0xaa, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02  /* ........ */
};

/* Frame (64 bytes) */
static const unsigned char pkt78[64] = {
0x00, 0x01, 0x20, 0x01, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xd3, 0xaa, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02, /* ........ */
0x04, 0xf0, 0x47, 0x7f, 0x04, 0x44, 0x64, 0x00, /* ..G..Dd. */
0x04, 0x63, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, /* .c...... */
0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, /* ........ */
0x04, 0x00, 0x78, 0x00, 0x04, 0x00, 0x00, 0x00  /* ..x..... */
};

/* Frame (32 bytes) */
static const unsigned char pkt79[32] = {
0x00, 0x01, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xd5, 0xaa, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02  /* ........ */
};

/* Frame (64 bytes) */
static const unsigned char pkt80[64] = {
0x00, 0x01, 0x20, 0x01, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xd5, 0xaa, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02, /* ........ */
0x04, 0x01, 0x10, 0x00, 0x04, 0x10, 0x11, 0x12, /* ........ */
0x04, 0x13, 0x14, 0x15, 0x04, 0x16, 0x1f, 0x20, /* .......  */
0x04, 0x21, 0x22, 0x23, 0x04, 0x24, 0x25, 0x26, /* .!"#.$%& */
0x04, 0x27, 0x30, 0x00, 0x04, 0x7f, 0x31, 0x00  /* .'0...1. */
};

/* Frame (32 bytes) */
static const unsigned char pkt81[32] = {
0x00, 0x01, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xd7, 0xaa, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02  /* ........ */
};

/* Frame (64 bytes) */
static const unsigned char pkt82[64] = {
0x00, 0x01, 0x20, 0x01, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xd7, 0xaa, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02, /* ........ */
0x04, 0x7f, 0x32, 0x00, 0x04, 0x7f, 0x33, 0x00, /* ..2...3. */
0x04, 0x7f, 0x40, 0x00, 0x04, 0x7f, 0x41, 0x00, /* ..@...A. */
0x04, 0x7f, 0x42, 0x00, 0x04, 0x7f, 0x43, 0x00, /* ..B...C. */
0x04, 0x7f, 0x0d, 0x00, 0x04, 0x00, 0x43, 0x00  /* ......C. */
};

/* Frame (32 bytes) */
static const unsigned char pkt83[32] = {
0x00, 0x01, 0x20, 0x00, 0x0c, 0x00, 0x00, 0x00, /* .. ..... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xd9, 0xaa, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02  /* ........ */
};

/* Frame (44 bytes) */
static const unsigned char pkt84[44] = {
0x00, 0x01, 0x20, 0x01, 0x0c, 0x00, 0x00, 0x00, /* .. ..... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xd9, 0xaa, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02, /* ........ */
0x04, 0x23, 0x00, 0x00, 0x04, 0x38, 0x40, 0x40, /* .#...8@@ */
0x05, 0xf7, 0x00, 0x00                          /* .... */
};

Message 3
Transpose: 0
External clock: ON

/* Frame (32 bytes) */
static const unsigned char pkt629[32] = {
0x00, 0x01, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xe1, 0xaf, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02  /* ........ */
};

/* Frame (64 bytes) */
static const unsigned char pkt630[64] = {
0x00, 0x01, 0x20, 0x01, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xe1, 0xaf, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02, /* ........ */
0x04, 0xf0, 0x47, 0x7f, 0x04, 0x44, 0x64, 0x00, /* ..G..Dd. */
0x04, 0x63, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, /* .c...... */
0x04, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x03, /* ........ */
0x04, 0x00, 0x78, 0x00, 0x04, 0x00, 0x00, 0x00  /* ..x..... */
};

/* Frame (32 bytes) */
static const unsigned char pkt631[32] = {
0x00, 0x01, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xe3, 0xaf, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02  /* ........ */
};

/* Frame (64 bytes) */
static const unsigned char pkt632[64] = {
0x00, 0x01, 0x20, 0x01, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xe3, 0xaf, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02, /* ........ */
0x04, 0x01, 0x10, 0x00, 0x04, 0x10, 0x11, 0x12, /* ........ */
0x04, 0x13, 0x14, 0x15, 0x04, 0x16, 0x1f, 0x20, /* .......  */
0x04, 0x21, 0x22, 0x23, 0x04, 0x24, 0x25, 0x26, /* .!"#.$%& */
0x04, 0x27, 0x30, 0x00, 0x04, 0x7f, 0x31, 0x00  /* .'0...1. */
};

/* Frame (32 bytes) */
static const unsigned char pkt633[32] = {
0x00, 0x01, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xe5, 0xaf, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02  /* ........ */
};

/* Frame (64 bytes) */
static const unsigned char pkt634[64] = {
0x00, 0x01, 0x20, 0x01, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xe5, 0xaf, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02, /* ........ */
0x04, 0x7f, 0x32, 0x00, 0x04, 0x7f, 0x33, 0x00, /* ..2...3. */
0x04, 0x7f, 0x40, 0x00, 0x04, 0x7f, 0x41, 0x00, /* ..@...A. */
0x04, 0x7f, 0x42, 0x00, 0x04, 0x7f, 0x43, 0x00, /* ..B...C. */
0x04, 0x7f, 0x0c, 0x00, 0x04, 0x00, 0x43, 0x00  /* ......C. */
};

/* Frame (32 bytes) */
static const unsigned char pkt635[32] = {
0x00, 0x01, 0x20, 0x00, 0x0c, 0x00, 0x00, 0x00, /* .. ..... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xe7, 0xaf, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02  /* ........ */
};

/* Frame (44 bytes) */
static const unsigned char pkt636[44] = {
0x00, 0x01, 0x20, 0x01, 0x0c, 0x00, 0x00, 0x00, /* .. ..... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xe7, 0xaf, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02, /* ........ */
0x04, 0x23, 0x00, 0x00, 0x04, 0x38, 0x40, 0x40, /* .#...8@@ */
0x05, 0xf7, 0x00, 0x00                          /* .... */
};

Message 4
Transpose: +1
External clock: ON

/* Frame (32 bytes) */
static const unsigned char pkt355[32] = {
0x00, 0x01, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xed, 0xb2, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02  /* ........ */
};

/* Frame (64 bytes) */
static const unsigned char pkt356[64] = {
0x00, 0x01, 0x20, 0x01, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xed, 0xb2, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02, /* ........ */
0x04, 0xf0, 0x47, 0x7f, 0x04, 0x44, 0x64, 0x00, /* ..G..Dd. */
0x04, 0x63, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, /* .c...... */
0x04, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x03, /* ........ */
0x04, 0x00, 0x78, 0x00, 0x04, 0x00, 0x00, 0x00  /* ..x..... */
};

/* Frame (32 bytes) */
static const unsigned char pkt357[32] = {
0x00, 0x01, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xef, 0xb2, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02  /* ........ */
};

/* Frame (64 bytes) */
static const unsigned char pkt358[64] = {
0x00, 0x01, 0x20, 0x01, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xef, 0xb2, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02, /* ........ */
0x04, 0x01, 0x10, 0x00, 0x04, 0x10, 0x11, 0x12, /* ........ */
0x04, 0x13, 0x14, 0x15, 0x04, 0x16, 0x1f, 0x20, /* .......  */
0x04, 0x21, 0x22, 0x23, 0x04, 0x24, 0x25, 0x26, /* .!"#.$%& */
0x04, 0x27, 0x30, 0x00, 0x04, 0x7f, 0x31, 0x00  /* .'0...1. */
};

/* Frame (32 bytes) */
static const unsigned char pkt359[32] = {
0x00, 0x01, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xf1, 0xb2, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02  /* ........ */
};

/* Frame (64 bytes) */
static const unsigned char pkt360[64] = {
0x00, 0x01, 0x20, 0x01, 0x20, 0x00, 0x00, 0x00, /* .. . ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xf1, 0xb2, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02, /* ........ */
0x04, 0x7f, 0x32, 0x00, 0x04, 0x7f, 0x33, 0x00, /* ..2...3. */
0x04, 0x7f, 0x40, 0x00, 0x04, 0x7f, 0x41, 0x00, /* ..@...A. */
0x04, 0x7f, 0x42, 0x00, 0x04, 0x7f, 0x43, 0x00, /* ..B...C. */
0x04, 0x7f, 0x0d, 0x00, 0x04, 0x00, 0x43, 0x00  /* ......C. */
};

/* Frame (32 bytes) */
static const unsigned char pkt361[32] = {
0x00, 0x01, 0x20, 0x00, 0x0c, 0x00, 0x00, 0x00, /* .. ..... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xf3, 0xb2, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02  /* ........ */
};

/* Frame (44 bytes) */
static const unsigned char pkt362[44] = {
0x00, 0x01, 0x20, 0x01, 0x0c, 0x00, 0x00, 0x00, /* .. ..... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
0xf3, 0xb2, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, /* ..}..... */
0x00, 0x00, 0x10, 0x14, 0x01, 0x19, 0x02, 0x02, /* ........ */
0x04, 0x23, 0x00, 0x00, 0x04, 0x38, 0x40, 0x40, /* .#...8@@ */
0x05, 0xf7, 0x00, 0x00                          /* .... */
};

Leave a Reply

Your email address will not be published. Required fields are marked *