Skip to content

The V2 Goggles Firmware Situation

Joonas Trussmann edited this page Mar 20, 2022 · 13 revisions

The firmware situation on the V2 Goggles is quite complicated, the following is an attempt to explain it.

DIY mode vs Drone mode

The V2 Goggles have 2 separate lines of firmware packages, depending on which mode you are in when you are flashing. If you are in DJI Digital FPV System mode a.k.a. DIY mode a.k.a. Air Unit/Caddx Vista mode then your device identifies as gp150 and gets gp150 firmware packages. If your device is in DJI FPV Drone mode then your device identifies as gl170 and gets the gl170 firmware packages.

Both the gp150 and gl170 firmware packages include and update BOTH modes, they are NOT flashed independently. In other words, when you update in DIY mode, Drone mode is also updated and vice versa. Which actual version of which software you get depends on what was included in that package and is not immediately obvious, more on that below.

Firmware versions

First, currently margerine only officially supports V01.00.0606 when flashed from DIY mode. We know this is problematic for DJI FPV drone users as you will get a permanent version mismatch popup on screen and while so far it looks like everything else still works fine, there may indeed be some subtle compatibility issues. If you need to fly the FPV drone and are worried about potential issues then we recommend holding off on downgrading to 0606 and rooting with margerine for the time being.

You don't need to worry about being able to flash 0606 in future as long as you don't upgrade to V01.02.0015 (or newer) in drone mode, which will prevent all future downgrades. If DJI stops offering 0606 in Assistant in DIY mode at a future date, we will be able to release a custom flasher to downgrade to 0606 anyway.

Now, onto what's actually going on with the different version. In short, DIY mode 0606 includes a roughly equivalent version of 0000 or 0001 drone mode software and vice versa. However, the drone mode FWs all have an exception for the DIY software where instead of reporting the real flashed firmware version in the GUI and for compatibility checks, it's hard coded to appear as (and has the features of) 0606. When in doubt as to which version you're actually running, either check the menus in drone mode or what assistant reports as the current version. DIY mode menus are not reliable for determining which FW version you are actually running.

Margerine compatibility

What does this mean for (future) margerine compatibility? Some time around drone mode FW 0020 (which is actually older than the downgrade disabling 0015) or earlier DJI changed out security mechanisms that are shared between both modes preventing margerine's current exploit chain from enabling root and adb. This means that 0020 is fundamentally incompatible with margerine for the time being, however can still be downgraded. 0015 is the same as 0020, but prevents all future downgrades. So, theoretically, with time permitting, we may be able to achieve compatibility with drone FWs older than 0020 and 0015.

However, just because the basic exploit chain works doesn't mean margerine will just be compatible as is, because we also depend on several fixed memory addresses which have since 0606 changed on newer drone mode FWs. Furthermore, any mods developed for DJI's existing binaries will be dependent on the exact binary version of specific executables in a given FW as they are updated (or not) independently of each other when building FW packages. Thus, the community will need to pick a specific FW version to target for the best possible compatibility.

We're exploring several different promising avenues to make the situation better in future for DJI FPV drone users. Hang tight, and just don't flash to 0015. If you ABSOLUTELY MUST for some reason, then flash 0606 first, run margerine and validate you have adb access to the the Goggles. Then proceed to to update. As of 0015, the unlock sticks around with the upgrade. However, your real-life compatibility with any mods the community produces may be severely limited. Still, if you absolutely must update for some reason, this gives you the best chance of being able to use some customization features in future.