Coding Professional HU without ICOM

Information about coding your BMW

Moderators: babybmwadmin, marco_polo, Producethis, Lambster, Rich196

Post Reply
bjt
Enthusiastic Member
Enthusiastic Member
Posts: 913
Joined: Mon Apr 14, 2014 3:12 pm

Coding Professional HU without ICOM

Post by bjt » Sun Nov 12, 2017 10:12 pm

I have a late-model Professional head unit (2014 manufacture) without MOST. These late model HUs can't be coded properly using a cheap K/D-CAN cable - NCS Expert will report no response from the control unit. I believe this is because some of the coding blocks are quite large, for example on a late-model RAD2 some of the blocks are around 96 bytes long. There's some kind of synchronisation/buffering problem when using a cable. Apparently, ICOM-B doesn't suffer from these problems.

When using NCS Expert to read the coding data, a TRC file is produced despite the errors, but it's really unclear how valid this file is.
Likewise when coding using NCS, some changes seem to be written, but again it's unclear what exactly happens.

Using the c_c_lesen and c_c_schreiben Tool32 jobs it's possible to read and write individual coding blocks. Unfortunately the larger coding blocks suffer from the same problems as when using NCS (no response from control unit). The smaller blocks work fine though and these control some useful parameters like microphone type, voice control language and usb/telephone/voice enable flags.

Using the c_c_lesen free addressing mode, it may be possible to read individual bytes from the larger coding blocks and thereby circument the large block problems, but I haven't yet been able to make the free addressing mode work. I always get an ERROR_BIN_BUFFER.

Here's an example of using c_c_lesen and c_c_schreiben to change the voice control language from German to English.

WARNING/DISCLAIMER - Binary coding can brick your radio or any other control unit you use it with, if you get it wrong. Proceed with caution and at your own risk. I strongly recommend you understand all the parameters here before proceeding. You need to understand hexadecimal numbers and bitmasks. Probably only advisable for the SW/HW engineers out there.

NCS Dummy is a great source of info for binary coding. Here we can see the first RAD2 coding block is 16 bytes long at 300000.
Image

And the parameter we want to change is at offset 6 and occupies the whole byte (mask FF). The value we want to set for English is 4.
Image

Build a c_c_lesen parameter block following the documentation. The address AABBCCDD gets swizzled in the format DDCCBBAA. The 16 byte output buffer is padded with FF.
Image

Build a c_c_schreiben parameter block following the documentation. Change the byte at offset 6 from 01 (German) to 04 (English). We are writing the whole coding block back to memory.
Image

Read the coding block again to make sure our changes were committed.
Image

The radio only seems to read these parameters on startup, so let the car go to sleep (20 mins or so after locking) before testing.
E87 130i M Sport, now with added doors!
E81 130i M Sport aka the Pocket Rocket - Fell victim to the Monday morning commute

BMW_Fun
Junior Member
Junior Member
Posts: 3
Joined: Tue Nov 14, 2017 10:10 pm

Re: Coding Professional HU without ICOM

Post by BMW_Fun » Tue Nov 14, 2017 10:23 pm


bjt
Enthusiastic Member
Enthusiastic Member
Posts: 913
Joined: Mon Apr 14, 2014 3:12 pm

Re: Coding Professional HU without ICOM

Post by bjt » Wed Nov 15, 2017 9:19 am

Cool, yes that's exactly what I'm doing.

Unfortunately it doesn't work for the larger RAD2 coding blocks at 00302000 and 00303000. I get an "no response from ECU" error. It seems to be connected to the blocks being large.

Any ideas about how to use the "free addressing" mode instead of "block addressing"? This might allow individual bytes to be modified in those large coding blocks without having to read/write the whole block.
E87 130i M Sport, now with added doors!
E81 130i M Sport aka the Pocket Rocket - Fell victim to the Monday morning commute

User avatar
Wibbles
Too Much Time To Waste Member
Too Much Time To Waste Member
Posts: 4694
Joined: Thu Feb 17, 2011 7:53 pm
Location: Tyne & Wear

Re: Coding Professional HU without ICOM

Post by Wibbles » Wed Nov 15, 2017 1:57 pm

Impressive work chaps.

ICOM is the way to properly code these units. I have one if coding is required.
F21 M135i - AW CR - lots of options.
Coding for all BMW's: Enquiries@BRdiagnostics.co.uk
Please visit my BabyBMW sponsors section: Here

BMW_Fun
Junior Member
Junior Member
Posts: 3
Joined: Tue Nov 14, 2017 10:10 pm

Re: Coding Professional HU without ICOM

Post by BMW_Fun » Thu Nov 16, 2017 1:28 pm

Work fine, have to know length

bjt
Enthusiastic Member
Enthusiastic Member
Posts: 913
Joined: Mon Apr 14, 2014 3:12 pm

Re: Coding Professional HU without ICOM

Post by bjt » Thu Nov 16, 2017 4:25 pm

BMW_Fun wrote:
Thu Nov 16, 2017 1:28 pm
Work fine, have to know length
Have you managed to read a block as large as 0x90 bytes? That's how big block 302000 on RAD22.C34 is...
E87 130i M Sport, now with added doors!
E81 130i M Sport aka the Pocket Rocket - Fell victim to the Monday morning commute

BMW_Fun
Junior Member
Junior Member
Posts: 3
Joined: Tue Nov 14, 2017 10:10 pm

Re: Coding Professional HU without ICOM

Post by BMW_Fun » Mon Nov 20, 2017 11:33 pm

NETTODAT.TRC
B 00300000,0010,40,02,02,5A,03,02,02,01,00,00,00,00,00,00,00,00
B 00301000,0010,A0,F0,3C,08,00,00,00,00,00,00,00,00,00,00,00,00
B 00302000,0010,3E,A4,4F,94,F1,D9,38,23,F0,6B,06,27,C9,27,C2,4A
B 00302010,0010,96,62,2C,12,00,E3,65,22,D3,E6,00,11,F4,7C,06,76
B 00302020,0010,25,71,60,97,CC,F4,4B,02,71,4B,7A,E3,D4,C4,E2,97
B 00302030,0010,00,80,BE,7E,F0,8E,C1,01,7D,3D,F4,14,87,66,AE,3A
B 00302040,0010,B0,6B,78,91,52,C7,53,81,3C,F6,02,92,61,73,35,36
B 00302050,0010,19,6D,96,8D,CD,C3,E5,0C,46,64,5C,16,86,D8,94,C8
B 00302060,0010,0E,54,A4,32,41,9D,DC,B1,48,2F,57,F1,E0,24,23,1E
B 00302070,0010,B7,E1,F0,1E,CC,F6,AF,6A,F2,00,D3,DC,00,00,00,00
B 00302080,0010,38,E3,7C,C7,14,83,00,00,00,3F,B0,69,00,00,00,3F
B 00302090,0010,D4,28,80,47,AF,3F,D4,28,7F,B0,38,C0,47,96,23,92
B 003020A0,0010,C8,DC,65,38,00,00,00,3E,87,5A,00,00,00,3F,42,A2
B 003020B0,0010,81,72,BB,3F,42,A2,7E,83,2A,C1,70,A0,00,35,07,E8
B 003020C0,0010,08,3F,06,7D,03,F0,00,AE,04,00,00,16,FD,A8,FF,9C
B 00303000,0010,00,12,1B,22,2B,30,34,37,39,3B,3D,3F,41,43,45,47
B 00303010,0010,49,4B,4D,4F,51,53,55,57,59,5B,5D,5F,61,63,65,67
B 00303020,0010,69,6B,6D,6F,71,73,75,77,79,7A,7C,7E,80,82,85,88
B 00303030,0010,8B,8E,91,93,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF
B 00303040,0010,33,38,40,1D,00,F5,00,F5,00,00,00,F5,00,F5,00,00
B 00303050,0010,00,00,00,00,00,13,00,00,08,2D,08,2D,00,10,30,00
B 00303060,0010,00,00,00,20,33,02,FD,00,00,00,1E,31,00,00,00,F9
B 00303070,0010,F8,F8,F8,00,00,00,32,05,70,00,00,00,00,00,00,00
B 00303080,0010,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
B 00303090,0010,00,00,00,00,00,00,00,00,00,00,00,FB,03,0A,00,00
B 003030A0,0010,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
B 003030B0,0010,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
B 003030C0,0010,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
B 003030D0,0005,01,00,00,00,00

Post Reply

Return to “Coding/Software”