Sorry in advance for the long post, but I had a spare afternoon so did some experimenting. Tentatively positive outcome!
I was about to try the downgrade from 0400 via Assistant 2 (v1.2.4 for MacOS), as unlike other users have seen, it shows earlier versions as downgradeable for me, I can go back as far as V01.04.0100.
Anyway, I thought I ought to go through and eliminate other issues I've seen mentioned as possible causes before I did that:
- Different cables - I tried three, both side and bottom connector, still get the green pixellation, gimbal control lag and loss of signal in a couple of minutes. Also observed that the "LANDING" message on the controller was delayed until a few seconds after I'd already landed the drone this time, so it seems all smartphone-driven control or status outputs from the device are being delayed.
- I tried two different phones - I only have two Android phones at the moment; a Pixel 2XL running Android 9, and a Nexus 6P. I tried the Pixel first, and it was fine for around 8 minutes before the pixellation, lag and video connection was lost. The Nexus 6P only made it to just over a minute and a half before the same thing happened. I repeated this twice, and the Nexus 6P always lasted barely a third of the time that the 2XL did before glitching up.
- I reformatted the SD card after each attempt, didn't make a difference.
- I checked the signal interference, as although I'm on a farm in the middle of nowhere, you never know. The interference line was flat at the bottom of the graph - no interference.
- I switched both phones into airplane mode before testing, no effect on the outcome either way.
So that yielded no positive result, and the drone was pretty hot by this point so I swapped batteries, and decided to try the one last thing before the firmware downgrade - a 9.7in iPad Pro, with a brand new lightning cable. I'd tried the iPad before but the cable was frayed, and I wasn't able to get any image at all in DJI Go 4. It seems that the cable was toast, as the new cable has resolved the issue. Even though the drone was running super hot, and the iPad got a little warm by the end due to being in direct sunlight in 30-degree heat, I had no video drop-outs, no gimbal lag and fewer jitters than I've ever seen from my drone this past year of owning it!
Given that the more powerful Android phone took longer to lose the video feed, I have a hypothesis: The new more secure way that the Mavic is now controlled relies on a stronger encryption within the control protocol that is run on the smartphone. That would explain why the lag and issues kick in way later on the newer and more powerful Pixel 2XL, than the older and slower Nexus 6P. Due to either CPU optimisation issues, or RAM filling up, and the encryption/decryption process being labour intensive, more and more of the signal is being buffered up until either a GC event takes place, or the app itself determines that the deficit is too large to recover from, and kills the video receiving process.
The iPad Pro, being way more powerful might just be able to deal with the process more easily. Or it could be that the type of decryption done on the video signal is just more efficient in the iOS app version.
Either way it's only a partial fix, because I'm not going to bring a full-size iPad with me everywhere I go to fly my drone, but at least I have an option to make it work now, and can (so far, three times without a failure since) repeatably prevent the issue.
Also hopeful that it's something that can be fixed with an Android app update, and not a firmware upgrade! Seems to just be an optimisation issue.