P3 Firmware How to read the the P3X FW LOG FILE

Joined
Sep 9, 2018
Messages
2
Reaction score
2
Age
63
Hi All - Firstly thanks for all your posts in this forum so much brilliant info

I need help please - I have been trying to upgrade the firmware on my P3 Pro with no success and I am not understanding how to read the log file to help myself (I like to understand rather than skipping to the solution)

The file is attached - I presume that this file is showing that for some reason versions aren't compatible - I have stepped through the file and my thoughts are that the firmware is looking for a particular version to be present and hasn't found it. Then installed the versions that it has available but these versions still don't bring it to a version to continue from

It then appears that it enters a continuous loop I- I am thinking that it is looking for a version that can be used to make the upgrade and can't find it so then starts again and will continue to do this forever and a day.

So does this mean that I have to find older firmware and start the upgrade path with firmware that is much older and then after doing so successfully I will then be able to install the latest?

Understanding the log file is education so as well as helping me solve this it will help me use it effectively in the future

Your help will be very much appreciated
Thanks in advance
 

Attachments

  • P3X_FW_LOG_AB.txt
    34.4 KB · Views: 212
Hi All - Firstly thanks for all your posts in this forum so much brilliant info

I need help please - I have been trying to upgrade the firmware on my P3 Pro with no success and I am not understanding how to read the log file to help myself (I like to understand rather than skipping to the solution)

The file is attached - I presume that this file is showing that for some reason versions aren't compatible - I have stepped through the file and my thoughts are that the firmware is looking for a particular version to be present and hasn't found it. Then installed the versions that it has available but these versions still don't bring it to a version to continue from

It then appears that it enters a continuous loop I- I am thinking that it is looking for a version that can be used to make the upgrade and can't find it so then starts again and will continue to do this forever and a day.

So does this mean that I have to find older firmware and start the upgrade path with firmware that is much older and then after doing so successfully I will then be able to install the latest?

Understanding the log file is education so as well as helping me solve this it will help me use it effectively in the future

Your help will be very much appreciated
Thanks in advance
This is what stands out to me from your LOG_AB.

[00031842][15 00][00] device not detected.
[00044922][08 00][00] device not detected.

Modules 8/15 showing as “device not detected” is a common failure with P3Ps. It normally presents as no video feed showing in the app, with the error message “No Image Transmission.” The problem is almost always on the gimbal top (main) board.

You’ll be able to find basically endless amounts of posts here and in other forums if you search using those terms shown above in bold.

Two frequently referenced posts here are both from member @quaddamage. He’s basically the leading authority on diagnosing and in some cases even fixing the issue. Several other members here have been successful following his lead. Some, such as @KachemakDiver among others, have become quite good at fixing (re-flashing) an often afflicted component.

Click here for the most referenced troubleshooting chart, and click here for the popular post outlining the re-flashing I mentioned earlier.

Remember to always keep a fan blowing on your P3P while it’s powered up during updates and/or troubleshooting. It is prone to overheating and causing component damage on the gimbal top (main) board.

Good luck!
 
I like to understand rather than skipping to the solution
Ok, let's look at the log.

The log contains several updates, new ones are appended at the end.
The log on SD-card is just a copy of a log stored internally within NAND connected to Ambarella, so it may contain old updates at top, not only the ones you performed with the current SD-card. Ambarella stores the log internally, and then copies it to SD-card near the end of update process.

So let's start:

Code:
 [00014971]========== remo-con disconnect. boot(15) ============
 [00015029]Packet [C:\P3X_FW_V01.11.0020.bin] detected, card sn [0xda946925].
 [00015078]Packet upgrade start...

During boot, Ambarella found a file on SD-card which looks like a firmware update. Ambarella reads that file:

Code:
 [00015136]Packet checking...
 [00015190]Packet vlink 01.11.0020 <-> 01.11.0020.
 [00015272]Done.

Ambarella compares the FW package version from new file with something, not sure what 'vlink' is; sometimes the 'vlink' states previous version of FW package, sometimes not. Here, I'm pretty sure previous version of the FW package was v01.06.0060, but version shown was different.. anyway, the version directly after word 'vlink' is the one found in new file.

So now we go into the most interesting part:

Code:
 [00015328]Version checking[1]...
 [00015422][03 06][00] v2.4.20.50 -> v2.4.20.50
 [00015507][03 05][00] v34.2.0.9 -> v34.2.0.9
 [00015565][04 00][00] v1.48.0.0 -> v1.48.0.0
 [00015707][11 00][00] v1.8.0.0 -> v1.8.0.0
 [00016042][11 01][00] v1.8.0.0 -> v2.0.0.33, firmware v1.8.0.0 not support.
 [00016093][11 01][00] v1.8.0.0 -> v2.0.0.33
 [00016200][12 00][00] v1.12.0.0 -> v1.12.0.0
 [00016312][12 01][00] v1.12.0.0 -> v1.12.0.0
 [00016420][12 02][00] v1.12.0.0 -> v1.12.0.0
 [00016519][12 03][00] v1.12.0.0 -> v1.12.0.0
 [00029068][15 00][00] device not detected.
 [00029173][17 00][00] v1.1.1.7 -> v1.1.1.7
 [00029338][17 01][00] v1.0.2.7 -> v1.0.2.7
 [00029405][19 00][00] v1.0.8.96 -> v1.0.8.96
 [00029456][01 00][00] v1.32.5432 -> v1.32.5432
 [00029513][01 01][00] v1.32.5432 -> v1.32.5432
 [00042062][08 00][00] device not detected.
 [00042145][09 00][00] v2.13.0.0 -> v4.1.0.0 need upgrade.
 [00042202]Done.

So what we have here is:
Code:
[timestamp][module][instance] <current_fw> -> <new_fw>

Timestamp is in milliseconds and time 0 was when the device was turned on. Instance is always 0 as every device in Phantom 3 is present exactly once, there is no redundancy for modules.

Now, what are the modules? This is the most important question for understanding all DJI drones.

DJI drones have several processors, linked into internal network. Each processor is different, manufactured by different company, with different architecture, has its own programming (its own firmware), its own power delivery system, its own RAM and "hard disk" (which is just NAND flash memory). So every 'module' is a separate computer, which boots and works independently of others. These computers are exchanging information and cooperating, of course, but each one boots separately from its own firmware, and automatically starts applications depending on its function.

So what you're getting from DJI as "firmware" is really a collection of different firmwares, packed together into one file - this is why I call it 'firmware package'. The version of that package isn't really that important for each module - firmware of every module is developed separately within DJI, different people work on them and they release their firmware modules with their own versions. So what each module knows and cares about is the module version, not package version.

On the modules, for example, let's look at Ambarella chip. The same chip you will find in most GoPros and other Action Cams. This is the chip which is actually responsible for controlling the firmware update process - it finds FW package on sd-card, extracts that, and distributes to all other modules if they need an update. But Ambarella is also a module, it's m0100 to be exact (we tend to write modules as mXXXX instead of '[XX XX]' as most tools for handling firmware use that convention).

Ambarella knows what version of firmware it uses - it can "ask itself" for that. But for other modules - Ambarella doesn't know. They're separate entities after all. But Ambarella knows identifiers (addresses) of all the modules, and they are all connected into internal network within the drone. So Ambarella starts asking all modules for their firmware version (not FW package version, but FW module version of their respective modules).

And this is what we have in that log. Information about how each module responded when asked about FW version, compared to the version found within FW package file.

Now, there is one problem - some modules have "device not detected" - they did not responded on the query from Ambarella. So they're either not connected to the internal network, or are not booting, or crashing, and therefore cannot respond.

Which modules have that issue? m1500 and m0800. One is Cypress chip, the other is DaVinci chip. And it so happens that communication to Cypress (m1500) is routed through DaVinci (m0800). So Cypress probably isn't dead, it just cannot respond because DaVinci is not forwarding the messages to it. So the only issue seem to be that DaVinci isn't responding to queries from Ambarella.

Anyway, continuing explanation of the log next we have:

Code:
 [00044254]Waiting for user confirm...
 [00054300]Timeout, start upgrade automatically.

 [00054400]Firmware upgrading[1]...
 [00054472][09 00] Firmware upgrade start...
 [00106683][09 00] Firmware upgrade finished successfully.
 [00106729]Done.

Which means Ambarella waits 54.300-44.254 = 10 seconds, but since there is no keyboard connected to Ambarella there is no input in that time, and then Ambarella starts updating the modules which require an update.

It finds only m0900 eligible for update, so it only updates this one module. The rest is already at expected version, and the modules which are not responding cannot be updated.

Why the "device not found" modules cannot be updated? Because Ambarella cannot ask them to update. They're not responding. They're not accepting requests. It's like you tried to update your PC through network while it crashes on startup. You can't - it won't download the update from network if it cannot boot to operating system.

Back to the update log, now we have:

Code:
 [00106785]Version checking[2]...
 [00106869][03 06][00] v2.4.20.50 -> v2.4.20.50
 [00106949][03 05][00] v34.2.0.9 -> v34.2.0.9
 [00107003][04 00][00] v1.48.0.0 -> v1.48.0.0
 [00107130][11 00][00] v1.8.0.0 -> v1.8.0.0
 [00107249][11 01][00] v1.8.0.0 -> v2.0.0.33, firmware v1.8.0.0 not support.
 [00107366][11 01][00] v1.8.0.0 -> v2.0.0.33
 [00107479][12 00][00] v1.12.0.0 -> v1.12.0.0
 [00107581][12 01][00] v1.12.0.0 -> v1.12.0.0
 [00107704][12 02][00] v1.12.0.0 -> v1.12.0.0
 [00107815][12 03][00] v1.12.0.0 -> v1.12.0.0
 [00120366][15 00][00] device not detected.
 [00120459][17 00][00] v1.1.1.7 -> v1.1.1.7
 [00120601][17 01][00] v1.0.2.7 -> v1.0.2.7
 [00120695][19 00][00] v1.0.8.96 -> v1.0.8.96
 [00120745][01 00][00] v1.32.5432 -> v1.32.5432
 [00120807][01 01][00] v1.32.5432 -> v1.32.5432
 [00133361][08 00][00] device not detected.
 [00133441][09 00][05] v4.1.0.0 -> v4.1.0.0
 [00133490]Packet upgrade failed at version checking.

So after Ambarella updated one module, it tried ask every module for its version again, hoping something will unstuck. But it didn't - m0800 is still dead. So Ambarella declared that firmware update failed, there isn't much more it can do.

And that's the whole log for one boot. There were a few reboots after that, but these go with the same pattern I already explained.
 
Last edited:

Members online

No members online now.

Forum statistics

Threads
143,066
Messages
1,467,358
Members
104,935
Latest member
Pauos31