F30POST
F30POST
2012-2015 BMW 3-Series and 4-Series Forum
BMW Garage BMW Meets Register Today's Posts
BMW 3-Series and 4-Series Forum (F30 / F32) | F30POST > Technical Forums > Navigation, iDrive, Audio, Video, Bluetooth, Phone, Cameras, Electronics > Experience with 10.25" android 7.1 HU's
ARMA SPEED
Post Reply
 
Thread Tools Search this Thread
      06-10-2019, 04:45 PM   #2223
Kri
Major
Austria
1084
Rep
1,048
Posts

Drives: E87
Join Date: Dec 2017
Location: Germany

iTrader: (0)

Quote:
Originally Posted by Svenson View Post
For what do you need recovery mode. Is your display not normally running?
To update the System ? my unit has no update function active at the Android system itself.
Edit: my main issue is that it does not load directly into the Anbdroid BMW GUI, its showing a lockscreen when it does start.

sincerely Chri

Last edited by Kri; 06-10-2019 at 04:54 PM..
Appreciate 0
      06-11-2019, 12:15 AM   #2224
Svenson
Private
Svenson's Avatar
8
Rep
67
Posts

Drives: F11 530d
Join Date: Dec 2016
Location: Europe

iTrader: (0)

Quote:
Originally Posted by Kri View Post
To update the System ? my unit has no update function active at the Android system itself.

sincerely Chri
Don't need this.
Download the update, copy the px6.zip to a clean FAT32 formatted USB stick and insert it on the usb connector from the device. Wait a moment then will pop up a window for starting the update.

Last edited by Svenson; 06-11-2019 at 01:46 AM..
Appreciate 0
      06-11-2019, 03:14 AM   #2225
Kri
Major
Austria
1084
Rep
1,048
Posts

Drives: E87
Join Date: Dec 2017
Location: Germany

iTrader: (0)

Quote:
Originally Posted by Svenson View Post
Don't need this.
Download the update, copy the px6.zip to a clean FAT32 formatted USB stick and insert it on the usb connector from the device. Wait a moment then will pop up a window for starting the update.
I already tried this, but it was not working, only the normal screen appeared to check the SD card for media, but no update message.

sincerely Chri
Appreciate 0
      06-11-2019, 04:14 AM   #2226
__fred__
Private First Class
Netherlands
50
Rep
139
Posts

Drives: BMW 5 series E60, Mercedes S
Join Date: Apr 2019
Location: Amsterdam, Netherlands

iTrader: (0)

So I patched the unit in my car today using the original firmware update procedure and it does not dim anymore.

I talked about the car type that is encoded in the flash file as the last 10 bytes of the file and is also in flash memory and that the bootloader checks wether they match. If they don't, the update process will hang on the "waiting to become ready". This is a signal that the firmware is NOT compatible with your device. Don't try to flash it then.

However my car type id was corrupt in memory:

Code:
06-11 08:52:19.555  8472  8472 I UpdateMcuService: onReceive: action: com.choiceway.eventcenter.EventUtils.KSW_ZXW_MCUUPGRADE_MCU_ARM_EVT
06-11 08:52:19.572  8472  8498 I UpdateMcuService: --->>> KSW mcu_upgrade byRecvdata[i] = 0x41; fileData[fileData.length - 10 + i] = 0x41
06-11 08:52:19.573  8472  8498 I UpdateMcuService: --->>> KSW mcu_upgrade byRecvdata[i] = 0x51; fileData[fileData.length - 10 + i] = 0x51
06-11 08:52:19.573  8472  8498 I UpdateMcuService: --->>> KSW mcu_upgrade byRecvdata[i] = 0x44; fileData[fileData.length - 10 + i] = 0x42
06-11 08:52:19.573  8472  8498 I UpdateMcuService: --->>> KSW mcu_upgrade byRecvdata[i] = 0x0; fileData[fileData.length - 10 + i] = 0x0
06-11 08:52:19.573  8472  8498 I UpdateMcuService: --->>> KSW mcu_upgrade byRecvdata[i] = 0x4f; fileData[fileData.length - 10 + i] = 0x4d
06-11 08:52:19.573  8472  8498 I UpdateMcuService: --->>> KSW mcu_upgrade byRecvdata[i] = 0x0; fileData[fileData.length - 10 + i] = 0x0
06-11 08:52:19.573  8472  8498 I UpdateMcuService: --->>> KSW mcu_upgrade byRecvdata[i] = 0x59; fileData[fileData.length - 10 + i] = 0x57
06-11 08:52:19.573  8472  8498 I UpdateMcuService: --->>> KSW mcu_upgrade byRecvdata[i] = 0x0; fileData[fileData.length - 10 + i] = 0x0
06-11 08:52:19.573  8472  8498 I UpdateMcuService: --->>> KSW mcu_upgrade byRecvdata[i] = 0x15; fileData[fileData.length - 10 + i] = 0x15
06-11 08:52:19.574  8472  8498 I UpdateMcuService: --->>> KSW mcu_upgrade byRecvdata[i] = 0x14; fileData[fileData.length - 10 + i] = 0x14
06-11 08:52:19.574  8472  8498 I UpdateMcuService: --->>> KSW 车型匹配失败
This is the logcat output from the upgrade process. It compares the car type that was received from memory with the car type from the update file. Byte for byte is compared.

"车型匹配失败" translates to "Model Matching Failed". Unfortunately the UI is not updated then. It's only visible in the log.

Note that the B M W characters in the firmware file are D(B+2) O(M+2) Y(W+2) in my memory. These seem corrupt. All other numbers match. So I took a chance and updated the firmware bytes in the update file and it flashed without issues.

What I will do is start patching MCU updates and placing links on the wiki to the patched binaries. I'll also update the wiki with this knowledge. And last: nomorebigideas If you can send me either a picture of your MCU string from the settings info screen or the update file from the unit in your car: Then I'll patch yours first, you sent me the test unit after all.
Appreciate 0
      06-11-2019, 04:15 AM   #2227
__fred__
Private First Class
Netherlands
50
Rep
139
Posts

Drives: BMW 5 series E60, Mercedes S
Join Date: Apr 2019
Location: Amsterdam, Netherlands

iTrader: (0)

Quote:
Originally Posted by Kri View Post
I already tried this, but it was not working, only the normal screen appeared to check the SD card for media, but no update message.

sincerely Chri
You also need to set the partition table type to MBR. A Guid partition table isn't understood. Also, make sure your USB drive does not exceed 32GB.
Appreciate 0
      06-11-2019, 04:31 AM   #2228
koutsouk
Private First Class
Greece
31
Rep
190
Posts

Drives: BMW E60
Join Date: Mar 2018
Location: Greece

iTrader: (0)

Quote:
Originally Posted by __fred__ View Post
You also need to set the partition table type to MBR. A Guid partition table isn't understood. Also, make sure your USB drive does not exceed 32GB.
Hello FRED
Have you seen in your disassembly process if there are timing options for shutting down the unit?
For now is 30sec . Is there code for that?
Appreciate 0
      06-11-2019, 04:36 AM   #2229
__fred__
Private First Class
Netherlands
50
Rep
139
Posts

Drives: BMW 5 series E60, Mercedes S
Join Date: Apr 2019
Location: Amsterdam, Netherlands

iTrader: (0)

Quote:
Originally Posted by koutsouk View Post
Hello FRED
Have you seen in your disassembly process if there are timing options for shutting down the unit?
For now is 30sec . Is there code for that?
I still have to look at that. I found some shutdown code, but it seems to send the shutdown command immediately. It might be that it takes android 30 seconds to do a graceful shutdown though and that that is the 30 seconds you measure.
Appreciate 0
      06-11-2019, 04:43 AM   #2230
koutsouk
Private First Class
Greece
31
Rep
190
Posts

Drives: BMW E60
Join Date: Mar 2018
Location: Greece

iTrader: (0)

Quote:
Originally Posted by __fred__ View Post
I still have to look at that. I found some shutdown code, but it seems to send the shutdown command immediately. It might be that it takes android 30 seconds to do a graceful shutdown though and that that is the 30 seconds you measure.

It sends the shutdown command immediately after the key is off ? It reads that through CAN BUS i guess .
If that can be altered it will be very nice .
I am trying to think why there isn`t an option for this.
Maybe the consumption is too much and drain the battery ?
Have you measured the current consumption with the unit in standby or even when a navigation app is running?
We could then have a thought about if that is possible without draining the car battery so much , although i do not think that a battery can have any problem with that because the CCC is working for 8 minutes if i am correct without the key on ignition in the OEM system and powers the screen also.
Another thing is that although the sound from radio is working without the ignition key why the screen does not power up?
Maybe that can be solved with rewiring ???
Appreciate 0
      06-11-2019, 05:24 AM   #2231
amfgray
New Member
0
Rep
21
Posts

Drives: X5 F15 3d
Join Date: Mar 2019
Location: Russia

iTrader: (0)

Quote:
Originally Posted by __fred__ View Post
I still have to look at that. I found some shutdown code, but it seems to send the shutdown command immediately. It might be that it takes android 30 seconds to do a graceful shutdown though and that that is the 30 seconds you measure.
Dear Fred, what do You think - is it possible to reassign actions on idrive buttons or to make actions for idrive buttons which are not used by default for some reason? Thx
Appreciate 0
      06-11-2019, 05:46 AM   #2232
nomorebigideas
Private
6
Rep
63
Posts

Drives: BMW X3 xDrive20d SE (2011)
Join Date: Mar 2018
Location: UK

iTrader: (0)

Quote:
Originally Posted by __fred__ View Post
So I patched the unit in my car today using the original firmware update procedure and it does not dim anymore.

I talked about the car type that is encoded in the flash file as the last 10 bytes of the file and is also in flash memory and that the bootloader checks wether they match. If they don't, the update process will hang on the "waiting to become ready". This is a signal that the firmware is NOT compatible with your device. Don't try to flash it then.

However my car type id was corrupt in memory:

Code:
06-11 08:52:19.555  8472  8472 I UpdateMcuService: onReceive: action: com.choiceway.eventcenter.EventUtils.KSW_ZXW_MCUUPGRADE_MCU_ARM_EVT
06-11 08:52:19.572  8472  8498 I UpdateMcuService: --->>> KSW mcu_upgrade byRecvdata[i] = 0x41; fileData[fileData.length - 10 + i] = 0x41
06-11 08:52:19.573  8472  8498 I UpdateMcuService: --->>> KSW mcu_upgrade byRecvdata[i] = 0x51; fileData[fileData.length - 10 + i] = 0x51
06-11 08:52:19.573  8472  8498 I UpdateMcuService: --->>> KSW mcu_upgrade byRecvdata[i] = 0x44; fileData[fileData.length - 10 + i] = 0x42
06-11 08:52:19.573  8472  8498 I UpdateMcuService: --->>> KSW mcu_upgrade byRecvdata[i] = 0x0; fileData[fileData.length - 10 + i] = 0x0
06-11 08:52:19.573  8472  8498 I UpdateMcuService: --->>> KSW mcu_upgrade byRecvdata[i] = 0x4f; fileData[fileData.length - 10 + i] = 0x4d
06-11 08:52:19.573  8472  8498 I UpdateMcuService: --->>> KSW mcu_upgrade byRecvdata[i] = 0x0; fileData[fileData.length - 10 + i] = 0x0
06-11 08:52:19.573  8472  8498 I UpdateMcuService: --->>> KSW mcu_upgrade byRecvdata[i] = 0x59; fileData[fileData.length - 10 + i] = 0x57
06-11 08:52:19.573  8472  8498 I UpdateMcuService: --->>> KSW mcu_upgrade byRecvdata[i] = 0x0; fileData[fileData.length - 10 + i] = 0x0
06-11 08:52:19.573  8472  8498 I UpdateMcuService: --->>> KSW mcu_upgrade byRecvdata[i] = 0x15; fileData[fileData.length - 10 + i] = 0x15
06-11 08:52:19.574  8472  8498 I UpdateMcuService: --->>> KSW mcu_upgrade byRecvdata[i] = 0x14; fileData[fileData.length - 10 + i] = 0x14
06-11 08:52:19.574  8472  8498 I UpdateMcuService: --->>> KSW 车型匹配失败
This is the logcat output from the upgrade process. It compares the car type that was received from memory with the car type from the update file. Byte for byte is compared.

"车型匹配失败" translates to "Model Matching Failed". Unfortunately the UI is not updated then. It's only visible in the log.

Note that the B M W characters in the firmware file are D(B+2) O(M+2) Y(W+2) in my memory. These seem corrupt. All other numbers match. So I took a chance and updated the firmware bytes in the update file and it flashed without issues.

What I will do is start patching MCU updates and placing links on the wiki to the patched binaries. I'll also update the wiki with this knowledge. And last: nomorebigideas If you can send me either a picture of your MCU string from the settings info screen or the update file from the unit in your car: Then I'll patch yours first, you sent me the test unit after all.
Fred - you're a hero! Congrats on achieving what was thought to be impossible! I'll send you a photo shortly - really appreciate it.

You may have to tell people with non 10.35" screens how to update the MCU, as 8.8" users don't have an onboard SD card reader. The USB method just hangs constantly.
Appreciate 0
      06-11-2019, 06:43 AM   #2233
__fred__
Private First Class
Netherlands
50
Rep
139
Posts

Drives: BMW 5 series E60, Mercedes S
Join Date: Apr 2019
Location: Amsterdam, Netherlands

iTrader: (0)

Quote:
Originally Posted by nomorebigideas View Post
Fred - you're a hero! Congrats on achieving what was thought to be impossible! I'll send you a photo shortly - really appreciate it.

You may have to tell people with non 10.35" screens how to update the MCU, as 8.8" users don't have an onboard SD card reader. The USB method just hangs constantly.
No, it won't hang if you have the right MCU update. The exact string (up until the date field) must match with your unit, then it will work. If you run logcat through adb and monitor for messages, you will see why it failed. Most likely because the car ID does not match. They don't clean up the UI, so the process seems to hang. It doesn't hang, it just failed.
Appreciate 0
      06-11-2019, 06:44 AM   #2234
__fred__
Private First Class
Netherlands
50
Rep
139
Posts

Drives: BMW 5 series E60, Mercedes S
Join Date: Apr 2019
Location: Amsterdam, Netherlands

iTrader: (0)

Quote:
Originally Posted by amfgray View Post
Dear Fred, what do You think - is it possible to reassign actions on idrive buttons or to make actions for idrive buttons which are not used by default for some reason? Thx
This is something I will be working on next. After I've cleaned up and patched al the MCU's around.
Appreciate 0
      06-11-2019, 08:52 AM   #2235
__fred__
Private First Class
Netherlands
50
Rep
139
Posts

Drives: BMW 5 series E60, Mercedes S
Join Date: Apr 2019
Location: Amsterdam, Netherlands

iTrader: (0)

OK, patches are here:

https://github.com/chinesebmwheadunits/mcu

In case anyone has another MCU update (different hardware string), i'd be very interested.
Appreciate 0
      06-11-2019, 09:35 AM   #2236
antonius2018
Private
27
Rep
87
Posts

Drives: BMW F32
Join Date: Jun 2018
Location: EU - Portugal

iTrader: (0)

Quote:
Originally Posted by __fred__ View Post
OK, patches are here:

https://github.com/chinesebmwheadunits/mcu

In case anyone has another MCU update (different hardware string), i'd be very interested.
Sorry if this is a stuppid question or a repetition of previous questions, but I'm a newbie here and I'm still trying to understand what's happening here.

I have the MCU version on the photo (AVIN USA PX6 bought last month).
If I do the MCU update you published what can I expect new from my unit? It doesn't dims anymore, is that so?
Thanks, and sorry for the question!
Attached Images
 
Appreciate 0
      06-11-2019, 09:40 AM   #2237
__fred__
Private First Class
Netherlands
50
Rep
139
Posts

Drives: BMW 5 series E60, Mercedes S
Join Date: Apr 2019
Location: Amsterdam, Netherlands

iTrader: (0)

Quote:
Originally Posted by antonius2018 View Post
Sorry if this is a stuppid question or a repetition of previous questions, but I'm a newbie here and I'm still trying to understand what's happening here.

I have the MCU version on the photo (AVIN USA PX6 bought last month).
If I do the MCU update you published what can I expect new from my unit? It doesn't dims anymore, is that so?
Thanks, and sorry for the question!
That is correct! More information about the different versions and the procedure is here: https://github.com/chinesebmwheaduni.../wiki/Software
Let me know if it works BTW.

Last edited by __fred__; 06-11-2019 at 09:47 AM..
Appreciate 2
      06-11-2019, 09:49 AM   #2238
antonius2018
Private
27
Rep
87
Posts

Drives: BMW F32
Join Date: Jun 2018
Location: EU - Portugal

iTrader: (0)

Quote:
Originally Posted by __fred__ View Post
That is correct! More information about the different versions and the procedure is here: https://github.com/chinesebmwheaduni.../wiki/Software

Thank you!
I'm a little afraid I'll do something wrong, but let's see if get the courage to do it.

Last edited by antonius2018; 06-11-2019 at 10:50 AM..
Appreciate 0
      06-11-2019, 10:17 AM   #2239
koutsouk
Private First Class
Greece
31
Rep
190
Posts

Drives: BMW E60
Join Date: Mar 2018
Location: Greece

iTrader: (0)

Quote:
Originally Posted by __fred__ View Post
That is correct! More information about the different versions and the procedure is here: https://github.com/chinesebmwheaduni.../wiki/Software
Let me know if it works BTW.
As you said in your unit you had different first letters code.
How you managed to install the new MCU file since it compares with that id?
My unit has in the MCU field 035243bYC-CCC-HW8-180921
Can i use any of these MCU files or it will not install???
Appreciate 0
      06-11-2019, 10:19 AM   #2240
amfgray
New Member
0
Rep
21
Posts

Drives: X5 F15 3d
Join Date: Mar 2019
Location: Russia

iTrader: (0)

Quote:
Originally Posted by __fred__ View Post
That is correct! More information about the different versions and the procedure is here: https://github.com/chinesebmwheaduni.../wiki/Software
Let me know if it works BTW.
I'm interested if Units with android 7 and 8 versions have the same MCU hardware or not. Wondering about it because firmware are different and android 8 has one zip file and nobody has separate MCU file update for android 8 Head units.
As I understand You are dealing with MCU of android 7 HU, will it be suitable to use with HU8?
Appreciate 0
      06-11-2019, 10:22 AM   #2241
__fred__
Private First Class
Netherlands
50
Rep
139
Posts

Drives: BMW 5 series E60, Mercedes S
Join Date: Apr 2019
Location: Amsterdam, Netherlands

iTrader: (0)

I found something in the firmware that is interesting and unusual. Almost all development of embedded microcontrollers is done in good old C. A C compiler is almost always available and in case the chip does not run a full OS, the toolchain of the microcontroller manufacturer or something similar is used. It's almost always an assembler and C toolchain.
Almost all C compilers use null terminated strings. You can recognize a function like strlen (which calculates the length of a string) in assembly from a mile away because it needs to look for a NULL character in the string to find its length. When strings are passed between functions, the stack can be used in C as well.
In the firmware from these units, the compiled code uses length prefixed strings where the length of the string is stored before the first character. These are called Pascal-strings because Pascal is a major language that stores it's strings in Length-prefixed format. They are also always pointers to the heap. Never stack allocated.

So I started looking for Pascal compilers that are available for STM32 microcontrollers and it turns out that there is only ONE compiler (apart from open source) available: https://www.mikroe.com/mikropascal-arm

I'm pretty sure that this is the IDE + toolkit that was used to assemble our firmware. I'm planning on downloading and installing the IDE as it has more than 1200 library functions. It might be that it's easier to recognize functions based on the source code.

It seemed strange to me that I could not really recognize any of the initialization code in the firmware, based on the initialization code that ST provides itself. When you compile the example code from ST to initialize the clock etc. it's really different from our MCU code). This could be a logical explanation. TBC....
Appreciate 1
      06-11-2019, 10:24 AM   #2242
__fred__
Private First Class
Netherlands
50
Rep
139
Posts

Drives: BMW 5 series E60, Mercedes S
Join Date: Apr 2019
Location: Amsterdam, Netherlands

iTrader: (0)

Quote:
Originally Posted by amfgray View Post
I'm interested if Units with android 7 and 8 versions have the same MCU hardware or not. Wondering about it because firmware are different and android 8 has one zip file and nobody has separate MCU file update for android 8 Head units.
As I understand You are dealing with MCU of android 7 HU, will it be suitable to use with HU8?
I think so, as the MCU updates I got from the PX6 versions seem pretty similar and have exactly the same car type codes.

To be safe, only install 2019 version in the MCU repository. These come from PX6, android 8 units.
Appreciate 1
      06-11-2019, 11:07 AM   #2243
amfgray
New Member
0
Rep
21
Posts

Drives: X5 F15 3d
Join Date: Mar 2019
Location: Russia

iTrader: (0)

Quote:
Originally Posted by __fred__ View Post
I think so, as the MCU updates I got from the PX6 versions seem pretty similar and have exactly the same car type codes.

To be safe, only install 2019 version in the MCU repository. These come from PX6, android 8 units.
Thx, and what do You think about different manufacturers: mine is 045247bXHCN, and Your is 023042bGS. Looks completely different Your thought about interchangeability
Attached Images
 
Appreciate 0
      06-11-2019, 11:33 AM   #2244
__fred__
Private First Class
Netherlands
50
Rep
139
Posts

Drives: BMW 5 series E60, Mercedes S
Join Date: Apr 2019
Location: Amsterdam, Netherlands

iTrader: (0)

Definitely not Compatible. You could ask the seller for an mcu upgrade file. I will patch it for you
Appreciate 1
Post Reply

Bookmarks


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off



All times are GMT -5. The time now is 02:12 AM.




f30post
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
1Addicts.com, BIMMERPOST.com, E90Post.com, F30Post.com, M3Post.com, ZPost.com, 5Post.com, 6Post.com, 7Post.com, XBimmers.com logo and trademark are properties of BIMMERPOST