Is Your DJI O3 Spying On You?
March 16, 2023 - 7 min read
So, you've got a shiny new DJI O3 System for your drone, it's been performing great, and you're loving the footage. But, you plugged it into your computer for an update and stumbled across the plethora of log files available for download, some ranging into the size of GBs. In your desire to learn more you download one, but... oh no! It's encrypted! What could this mean? Is DJI spying on you? Is your data being sent to the Chinese government? Is Mr. Xi judging you every time you crash?
The TLDR is no your DJI O3 is not spying on you, In this post, we'll explore exactly what data the O3 is logging, why it's logging it, the reason it's encrypted and why you shouldn't be worried about it.
What is DJI O3?
For those who aren't in the FPV hobby, The DJI O3 is a Digital Transmitter, built for DIY DJI FPV drones. It's a small, lightweight, and powerful transmitter that allows you to fly your drone with a first-person view transmitted directly to a set of goggles worn by the pilot. It's based on DJI's latest Ocusync technology, Ocusync 3, leading to the groundbreakingly creative name O3 Air Unit.
What is the O3 Logging?
Everything, but also... nothing. Let me explain.
The O3 is still a relatively new product for DJI, and as such, it's still under active development. When developing a product it's vital to get accurate user feedback when an issue occurs. Think, having a user message support and say "the video cut off", it's not much help to DJI, and it's not much help to the user as DJI can't do anything about the issue without having tangible data to act upon. So to help with this DJI log all the information about the state of the O3 they can while it's in use, giving them an immediate, clear picture of what's going on with the O3, and what the user is experiencing. This data is then used to help DJI debug issues, and improve the product.
This is a Data-Driven Development approach, utilized correctly, it can be an extremely useful part of the product development lifecycle.
We won't go into the specifics of each file, as there are over 600 of them and the vast majority are just boring console log files that look a lot like this, they're useful for DJI to understand what state the O3 unit is in, what commands are running, if any errors are being thrown, but beyond that are very generic to each device.
[18.679032] c1 398 (Binder:283_2) [EXFAT] (mmcblk1p1[179:33]): mounted successfully!
[19.046370] c1 965 (event_task) timesync data alignment flag is false.
[19.046445] c1 965 (event_task) index 0 source time:10661871 irq time:25065642 delta: -14403771
[19.046453] c1 965 (event_task) timesync data align successfully.delta index:0 delta time:-14403770.
[30.689877] c0 5 (kworker/0:0) tps65912_ldo5_set_off1: disabling
[31.175778] c2 1 (init) init: Received control message 'stop' for 'dji_sdrs_agent' from pid: 1678 (stop dji_sdrs_agent)
[31.175880] c2 1 (init) init: Sending signal 9 to service 'dji_sdrs_agent' (pid 492) process group...
It's really really boring stuff
The DSP Logs
The majority of the log file size is coming from the DSP Logs, What is the DSP? It stands for Digital Signal Processor, it's how DJI is able to process the video data from the camera and send it to the goggles with minimal latency. The DSP is a very powerful combination of hardware and software at the core of O3, and it's able to do a lot of processing in a very short amount of time, and as such crunches through a huge amount of data every second.
The DSP logs will contain information about the state of the DSP, i.e. Latency, Video data throughput metadata, the state of the processor, memory utilization, etc. This is useful for DJI to understand how the DSP is performing while in real-world use, and if there are any issues with the DSP that may be the cause of the issue the user is experiencing.
The data contained within these files is binary, which means it's not nicely formatted for human consumption like our last example, so instead we can use a tool called binocle sharkdp/binocle to visualize the data with fancy colors, it makes spotting patterns and anomalies much easier.
As you can see, this is highly organized data with a clear repeating pattern and structure. It also shows us that there's nothing scary such as video data being logged within. For example, here is a visualization of a video file, as you can see, it's a lot messier and random, with no discernable repeating patterns.
The DSP Logs alone make up over 1.6GB of the log file used during our analysis.
To quote Joonas, the founder of fpv.wtf "They're on full blast"
The remainder of the files are a mix of logs, some information about the specific O3 unit, such as serial number, firmware version and other miscellaneous information that is really only useful to DJI for identifying what the rest of the operating system is doing at the current point in time.
Why is the data encrypted?
The data is encrypted because of its sensitivity to DJI's Intellectual Property, This data could potentially be used by competitors to reverse engineer DJI's technology, and as such, it's in DJI's business interests to try and protect it.
This is also why DJI does not, and will never provide a tool for you to decrypt this data. Even if they did, the data contained is effectively useless to 99.99% of end users, with the slim minority of users who could garner some use from the information already have other, far superior means to obtain it.
That said, for the curious 0.01% we've developed a web tool for you to decrypt the data yourself! It's a "Very Very Handy Thing".
Why can't I erase the data?
Simple, DJI need to keep the data integrity in case of a warranty claim. It gives them a ground truth of data to trust when they're assessing your case. If you erase the data, they have no simple way of knowing if the issue is covered by warranty.
You may argue you need to delete it so you can sell your O3, but as demonstrated the data contains nothing identifiable, nothing personal and nothing that could be used to track you or cause concern for your privacy. It's just a bunch of logs and debug data that has absolutely no value to anyone but DJI.
Why doesn't WalkSnail do this?
They do! It's just not so exposed to you as the end user.
WalkSnail has notoriously bad supporting infrastructure around their products, so much so that we made an unofficial firmware website for the good of the community because they couldn't figure it out! In this case, the files would be pulled off the file system on the VTX or Goggles when they're sent back to Caddx for repair/warranty. Every product that runs with an operating system on a non-read-only filesystem will be storing logs of some form, they're incredibly useful for the manufacturer.
To further, the Open Source fpv.wtf project even takes logs in a very similar fashion, When you open the web configurator you're asked if you want to send logs to the developers, this helps them with debugging issues, and gives invaluable insights into how the tool is performing with alerts and warnings of issues before they become a problem.
The DJI O3 unit is an amazing progression in technology for the FPV Field. It's pushing the boundaries on digital video transmission, however, with it still being a relatively new product for DJI, logging and debugging data is being collected verbosely on the O3 unit to help DJI understand any issues that arise while out in the real world. This logging data is exactly that, nothing more, nothing less. The logs are only so large due to the DSP Logs with the frequency they're written at, it can be expected that these will shrink in time as the product matures and DJI iron out the remaining issues.
If you're concerned about being tracked by DJI, you'd be better off looking toward one of the many connected DJI applications that have constant communication with DJI's servers. If enough interest is in the subject, we will explore this further in a future blog post. To further the point, the device you're reading this post on has undoubtedly collected more valuable information about you, your browsing habits and your interests in the past 10 minutes than the O3 unit ever will.
In a world of rapidly diminishing privacy, it is vital to be informed about what data your gadgets and services are collecting, but also just as important not to create dangerous claims based on a lack of information and speculation that can cause unnecessary panic and fear.
Dispelling some claims
I think it's more than enough to store 512/512 px black white image 10 fps for spying or surveillance
Sorry, No. DJI really don't care about watching your flight playback. It's just not useful data from an engineering perspective let alone a surveillance use. To further, if DJI REALLY wanted your flight videos, the DJI FLY app has functionality to download files from the SD card, and then do what they please with them, however, this makes absolutely no business sense for DJI.
... Yet another creepy product strategy mistake by DJI. Massive privacy issue. As an O3 air unit customer, I find secret logging like this insulting ...
This is not a creepy product strategy, but a standard practice used in almost every technology product you own. As for being a "Massive privacy issue", DJI is only ever sent this data when and only when you send it to them, Its sole purpose is for debugging hardware and software issues, it contains no PII (Personally Identifiable Information) and is encrypted. It's not being sent to DJI without your consent, and it's not being sent to DJI without your knowledge. If you don't want DJI to have this data, don't send it to them.