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:

master to slave

slave to master:

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