comunication between main MCU and slave MCU - tomaskovacik/audi_concert1_chorus1_volume_fix GitHub Wiki
Page where I put my notes about comunication between main MCU and slave MCU on audi concert1 chorus1 radios made by Blaupunkt
I2C comunication, slave address is 0x55
here is sketch (work in progress) which sniff communication between MCUs. Currently sniffing works only for 0x55.
sketch to grab and decode data
sniffed comunication:
SLAVE adress is 0x55 MASTER address is 0x2B
examples of comunication:
master to slave:
slave to master:
Show frequency:
8 81 23 (0x8 + 0x81) - 0x66 = 0x23
Actual frequency packet:
82 C9 1A FF (0x82 + 0xC9 + 0x1A) - 0x66 = 0xFF
/*
for 107.6MHz:
0xC9 = 201 (875+201)/10 = 107,6
0x1A = memory 1
0xFF = crc? or somehthing ..?
*/
Show text:
8 82 24 //text mode (0x8 + 0x82) - 0x66 = 0x24
Actual packet with ascii data:
A4 52 41 44 49 4F 5F 46 4D 6F
/* RADIO FM
0x6F = some sort of crc?
*/
cd mode:
8 85 27 (0x8 + 0x85) - 0x66 = 0x27
here is i2c dump for 0x55 slave:
FIS is showing :
107.6
FM1-1
8 82 24 (0x8 + 0x82) - 0x66 = 0x24
82 C9 1A FF (0x82 + 0xC9 + 0x1A) - 0x66 = 0xFF
8 81 23 (0x8 + 0x81) - 0x66 = 0x23
SEARCH
82 12 A 38 (0x82 + 0x12 + 0x0A) - 0x66 = 0x38
82 12 A 38 (0x82 + 0x12 + 0x0A) - 0x66 = 0x38
82 12 A 38 (0x82 + 0x12 + 0x0A) - 0x66 = 0x38
8 81 23 (0x8 + 0x81) - 0x66 = 0x23
82 12 A 38 (0x82 + 0x12 + 0x0A) - 0x66 = 0x38
82 12 A 38 (0x82 + 0x12 + 0x0A) - 0x66 = 0x38
82 12 A 38 (0x82 + 0x12 + 0x0A) - 0x66 = 0x38
8 81 23 (0x8 + 0x81) - 0x66 = 0x23
82 12 A 38 (0x82 + 0x12 + 0x0A) - 0x66 = 0x38
8 81 23 (0x8 + 0x81) - 0x66 = 0x23
82 12 A 38 (0x82 + 0x12 + 0x0A) - 0x66 = 0x38
82 12 A 38 (0x82 + 0x12 + 0x0A) - 0x66 = 0x38
8 81 23 (0x8 + 0x81) - 0x66 = 0x23
82 12 A 38 (0x82 + 0x12 + 0x0A) - 0x66 = 0x38
RADIO FM
FM1
8 82 24 (0x8 + 0x82) - 0x66 = 0x24
8 82 24 (0x8 + 0x82) - 0x66 = 0x24
A4 52 41 44 49 4F 5F 46 4D 6F //RADIO_FM
8 82 24 (0x8 + 0x82) - 0x66 = 0x24
91.0
FM1-5
82 23 5A 99 //875+35=910/10=91,0 // memory position 5 (0x82 + 0x23 + 0x5A) - 0x66 = 0x99
8 81 23 (0x8 + 0x81) - 0x66 = 0x23
82 23 5A 99 (0x82 + 0x23 + 0x5A) - 0x66 = 0x99
8 81 23 (0x8 + 0x81) - 0x66 = 0x23
82 23 5A 99 (0x82 + 0x23 + 0x5A) - 0x66 = 0x99
82 23 5A 99 (0x82 + 0x23 + 0x5A) - 0x66 = 0x99
8 81 23 (0x8 + 0x81) - 0x66 = 0x23
82 23 5A 99 (0x82 + 0x23 + 0x5A) - 0x66 = 0x99
8 81 23 (0x8 + 0x81) - 0x66 = 0x23
RADIO FM
FM1-6
8 81 23 (0x8 + 0x81) - 0x66 = 0x23
82 12 6A 98 (0x82 + 0x12 + 0x6A) - 0x66 = 0x98
8 81 23 (0x8 + 0x81) - 0x66 = 0x23
82 12 6A 98 (0x82 + 0x12 + 0x6A) - 0x66 = 0x98
8 81 23 (0x8 + 0x81) - 0x66 = 0x23
82 12 6A 98 (0x82 + 0x12 + 0x6A) - 0x66 = 0x98
8 81 23 (0x8 + 0x81) - 0x66 = 0x23
82 12 6A 98 (0x82 + 0x12 + 0x6A) - 0x66 = 0x98
82 12 6A 98 (0x82 + 0x12 + 0x6A) - 0x66 = 0x98
8 81 23 (0x8 + 0x81) - 0x66 = 0x23
82 12 6A 98 (0x82 + 0x12 + 0x6A) - 0x66 = 0x98
82 12 6A 98 (0x82 + 0x12 + 0x6A) - 0x66 = 0x98
8 81 23 (0x8 + 0x81) - 0x66 = 0x23
A4 52 41 44 49 4F 5F 46 4D 6F
8 82 24 (0x8 + 0x82) - 0x66 = 0x24
EUROPA 2
FM1-2
(pref: 104.8Mhz)
8 81 23 (0x8 + 0x81) - 0x66 = 0x23
82 AD 2A E3 //875+173=1048/10=104.7 memory 2 (0x82 + 0xAD + 0x2A) - 0x66 = 0xF3 != 0xE3 <== bad reading ???
8 81 23 (0x8 + 0x81) - 0x66 = 0x23
A4 45 55 52 4F 50 41 20 32 4C
8 82 24 (0x8 + 0x82) - 0x66 = 0x24
CD01
TR01
8 85 27 (0x08 + 0x85) - 0x66 = 0x27
2 8D 29 (0x02 + 0x8D) - 0x66 = 0x29
8 85 27 (0x08 + 0x85) - 0x66 = 0x27
8 85 27 (0x08 + 0x85) - 0x66 = 0x27
CD06
TR01
8 85 27 (0x08 + 0x85) - 0x66 = 0x27
2 C6 62 (0x02 + 0xC6) - 0x66 = 0x62
8 85 27 (0x08 + 0x85) - 0x66 = 0x27
CD02
TR01
8 85 27
2 C2 6E
8 85 27
CD02
TR01
CD02
TR02
8 85 27
2 85 21 << probably only ACK of some sort for change of track goes UP/RIGHT
8 85 27
8 85 27
2 84 20 << probably only ACK of some sort for change of track goes DOWN/LEFT
8 85 27
comunication for 2B adress (using https://github.com/rricharz/i2c-sniffer-100kBaud-Arduino-Mega THX!)
but this output is strange, did not correlate with picture above (logic analyzer output on i2c, when are data transfered to 2B device)
this is in CD mode, on chorus radio (hacked, should not be problem ... )
CD1 TR68 -> pressing button "FR" -> CD1 TR67
Dev=55 W Data=02 42 10 2A*
Dev=55 W Data=08 42*13*
Dev=2B W Data=46 3A 00 25
Dev=2B W Data=D4 00*33*00 00 41 25
Dev=2B W Data=D6 00 28*7F*00 36 2A*
Dev=55 W Data=08 42*13*
CD1 TR67 -> pressing button "FR" -> CD1 TR66
Dev=55 W Data=02 42 10 25
Dev=2B W Data=46 3A 00 2A*
Dev=55 W Data=08 42*13*
Dev=2B W Data=D4 00*33 00 00 40*
Dev=2B W Data=D6 00 28*7F*00 36 2A*
Dev=55 W Data=08 42*13*
CD1 TR01 -> CD1 TR02
Dev=55 W Data=02 42*10*
Dev=2B W Data=46 3A 00 2A*
Dev=55 W Data=08 42*13*
Dev=2B W Data=D4 00*01 00 00 16*
Dev=2B W Data=D6 00 28*7F*00 36 2A*
Dev=55 W Data=08 42*13*
CD1 TR02 -> CD1 TR03
Dev=55 W Data=02 42*10*
Dev=55 W Data=08 42*13*
Dev=2B W Data=46 3A 00 25
Dev=2B W Data=D4 00*01*00 00 17 25
Dev=2B W Data=D6 00 28*7F*00 36 2A*
Dev=55 W Data=08 42*13*
Dev=2B W Data=46 38 06
CD1 TR03 -> CD1 TR02
Dev=55 W Data=02 42 10 2A*
Dev=55 W Data=08 42*13*
Dev=2B W Data=46 3A 00 25
Dev=2B W Data=D4 00*01 00 00 16*
Dev=2B W Data=D6 00 28*7F*00 36 2A*
Dev=55 W Data=08 42*13*
Dev=2B W Data=46 38 06
CD1 TR01 -> CD2 TR01 -> CD3 TR01 -> CD4 TR01 -> CD5 TR01 -> CD6 TR01
Dev=55 W Data=02 61 37 2A*
Dev=55 W Data=08 42*13*
Dev=2B W Data=46 3A 00 25
Dev=2B W Data=D4 01 00*00 1C 2A*
Dev=55 W Data=08 42*13*
Dev=2B W Data=46 38 06 25
Dev=2B W Data=D6 00 08 7F*00 15*
Dev=55 W Data=08 42*13*
Dev=2B W Data=D6 00 18 7F*00 25*
Dev=55 W Data=08 42*13*
Dev=2B W Data=46 3A 00 25
Dev=2B W Data=D4 01*00*00 0A 19 2A*
Dev=55 W Data=08 42*13*
Dev=2B W Data=46 38 06 25
Dev=2B W Data=D6 00 08 7F*00 15*
Dev=55 W Data=08 42*13*
Dev=2B W Data=D6 00 18 7F*00 25*
Dev=55 W Data=08 42*13*
Dev=2B W Data=46 3A 00 25
Dev=2B W Data=D4 02 00*00 11 20*
Dev=55 W Data=08 42*13*
Dev=2B W Data=46 38 06 25
Dev=2B W Data=D6 00 08 7F*00 15*
Dev=55 W Data=08 42*13*
Dev=2B W Data=D6 00 18 7F*00 25*
Dev=55 W Data=08 42*13*
Dev=55 W Data=08 42*13*
Dev=2B W Data=46 3A 00 25
Dev=2B W Data=D4 02*00*00 11 21 2A*
Dev=55 W Data=08 42*13*
Dev=2B W Data=46 38 06 25
Dev=2B W Data=D6 00 08 7F*00 15*
Dev=55 W Data=08 42*13*
Dev=2B W Data=D6 00 18 7F*00 25*
Dev=55 W Data=08 42*13*
Dev=55 W Data=08 42*13*
Dev=2B W Data=46 3A 00 25
Dev=2B W Data=D4 02*00*00 11 21 2A*
Dev=55 W Data=08 42*13*
Dev=2B W Data=46 38 06 25
Dev=2B W Data=D6 00 08 7F*00 15*
Dev=55 W Data=08 42*13*
#know packets
55 8 81 23
0x55 0101 0101
0x08 0000 1000
0x81 1000 0001
0x23 0010 0011
55 8 82 24
0x55 0101 0101
0x08 0000 1000
0x82 1000 0010
0x24 0010 0100
55 8 85 27
0101 0101
0000 1000
1000 0101
0010 0111
55 82 C9 1A FF
0x55 0101 0101
0x82 1000 0010
0xC9 1100 1001
0x1A 0001 1010
0xFF 1111 1111
55 82 12 A 38
0x55 0101 0101
0x82 1000 0010
0x12 0001 0010
0x0A 0000 1010
0x38 0011 1000
55 82 23 5A 99
0x55 0101 0101
0x82 1000 0010
0x23 0010 0011
0x5A 0101 1010
0x99 1001 1001
55 82 12 6A 98
0x55 0101 0101
0x82 1000 0010
0x12 0001 0010
0x6A 0110 1010
0x98 1001 1000
55 A4 52 41 44 49 4F 5F 46 4D 6F
0x55 0101 0101
0xA4 1010 0100
0x52 0101 0010
0x41 0100 0001
0x44 0100 0100
0x49 0100 1001
0x4F 0100 1111
0x5F 0101 1111
0x46 0100 0110
0x4D 0100 1100
0x6F 0110 1111
55 A4 45 55 52 4F 50 41 20 32 4C
0x55 0101 0101
0xA4 1010 0100
0x45 0100 0101
0x55 0101 0101
0x52 0101 0010
0x4F 0100 1111
0x50 0101 0000
0x41 0100 0001
0x20 0010 0000
0x32 0011 0010
0x4C 0100 1100
55 2 8D 29
0x55 0101 0101
0x02 0000 0010
0x8D 1000 1100
0x29 0010 1001