Please select Into the mobile phone version | Continue to access the computer ver.
How DJI FPV flight data works
6838 9 2021-5-8
Uploading and Loding Picture ...(0/1)
o(^-^)o
Denis9
lvl.1

Canada
Offline

Good day all,


Please use this thread to discuss and learn tips about flight data from the DJI FPV combo system.

Flight data is a combination of telemetry and other data such as battery information and operating modes. This data is logged durring operation and is very very useful to analize ongoing issues and understand what went wrong if the drone crashes. Also, this flight data is escencial when subitting a waranty claim to DJI.


I would like to better undertand the following:
-- Where is the flight data stored during flight ?

-- How can the flight data be downloaded to a computer ?

-- What data is available if the drone is lost in a fly away scenario and never recovered ?
-- What are the possible ways to analyse the DJI FPV flight data ?


It would be great to hear from people who have experience with usign flight data from the DJI FPV system.

Also, @Duane Degn is very knowledgeable in the topic and it would be great to hear from him.



Fly safe everyone !!


2021-5-8
Use props
Buster1
lvl.4
Flight distance : 677028 ft
United States
Offline

I know that I flew 10-15 flights without any memory cards in either the drone or goggles, and flight data was saved and available. Both the DJI Fl app and downloading that to Airdata supplies a ton of information.

I think the Find My Drone button in the DJI Fly app might use some of this data to help get the final coordinates of a lost drone.

As far as analyzing the data you can get from flight data, there are many options. You can read my thread Here on how I did a series of 7 identical flight tests only varying speed, and calculated the drone’s Best Range Airspeed!
2021-5-8
Use props
Duane Degn
First Officer
Flight distance : 622234 ft
United States
Offline

"Also, @Duane Degn is very knowledgeable in the topic and it would be great to hear from him."

You're nice to say that but I'm pretty new to using the flight logs myself.

I think this subject is very extensive. The only apps I've used to access flight logs are DJI's Fly App and the app supplied by AirData.com.

The way I download data from my FPV drone is to use the DJI Fly app.  From the Fly app I select Profile\More and this will bring up the Flight Data Center. From here I load the data from the goggles. The OTG adaptor needs to be connected to the goggles. After pressing the clock face symbol in the top right corner, the display updates with the files on the goggles. Pressing the far right icon of the file should start the upload. Once upload is complete, the flight info can be viewed with the Fly app using either the map or the satellite background.

Once you have the flight data has been downloaded from the goggles, it can be sync'd it with the DJI account. The Airdata website lets me import the data from DJI.

This is the way I've used the flight data. There are likely other ways to do this. There may be better ways to do this.

Since it can take a while to download the data from the goggles, I usually power the goggles with my bench top power supply. I set the voltage to 12.0V. The goggles draw over 800mA while the data is being transferred. This is more current than the goggles normally use. Apparently the goggles are powering my tablet while I download the data. Normally the goggles draw about 600mA.

I recently took apart one of my DJI FPV drones to see the various parts. I think this chip is where the data is stored in the drone.
DjiDroneSanDisk.jpg

The chip shown above is on the PCB located behind the camera gimbal. The PCB is fastened to the opposite side to the metal heatsink than the camera gimbal. I'm not positive this is where the data is stored, it just seems likely the SanDisk chip is a memory chip.

The goggles likely have a similar storage chip.

I don't think I've successfully retrieved the flight data from the drone directly. It's much easier to power the goggles for an extended period than powering the drone for an extended period. I don't know if there is a difference between the data recorded in the goggles and the data recorded in the drone.
2021-5-8
Use props
vanptran1234
New

Australia
Offline

sync your lost drone and use dji fpv assist and sync with the account binded with the fpv combo and log in into dji flyapp and hook up your otg cable supplied when u purchase the fpv combo and hook up your remote and or goggle to dji flyapp  via otg and a type cable to communicate between google or remote to mobile and sync your flight logs in the profile button and press on "more" button  with the arrow pointing right, swipe down to refresh the log, u should have your flight logs  if its not there, u need to check what other email account you created and logged in when you purchased and binded account to activate the system
2022-8-25
Use props
vanptran1234
New

Australia
Offline

vanptran1234 Posted at 8-25 02:50
sync your lost drone and use dji fpv assist and sync with the account binded with the fpv combo and log in into dji flyapp and hook up your otg cable supplied when u purchase the fpv combo and hook up your remote and or goggle to dji flyapp  via otg and a type cable to communicate between google or remote to mobile and sync your flight logs in the profile button and press on "more" button  with the arrow pointing right, swipe down to refresh the log, u should have your flight logs  if its not there, u need to check what other email account you created and logged in when you purchased and binded account to activate the system

press on the date you flight log should open
2022-8-25
Use props
ValleyForge
lvl.4
Flight distance : 24754 ft
Australia
Offline

Is there a definitive list of what telemetry is recorded? I can certainly see the traditional stuff, but would appreciate a list of the parameters recorded or accessible.
2023-2-9
Use props
Sean-bumble-bee
Captain
Flight distance : 15997 ft
  • >>>
United Kingdom
Offline

ValleyForge Posted at 2-9 17:29
Is there a definitive list of what telemetry is recorded? I can certainly see the traditional stuff, but would appreciate a list of the parameters recorded or accessible.

The txt flight log can be decrypted by https://www.phantomhelp.com/LogViewer/Upload/  and the txt log output by the resulting page as a csv, it is 275 columns wide.
The DAT, also down loaded  from the goggles can be read by CsvView  = https://datfile.net/CsvView/downloads.html and the results put out as a csv 677 columns wide
2023-2-17
Use props
ValleyForge
lvl.4
Flight distance : 24754 ft
Australia
Offline

Sean-bumble-bee Posted at 2-17 14:01
The txt flight log can be decrypted by https://www.phantomhelp.com/LogViewer/Upload/  and the txt log output by the resulting page as a csv, it is 275 columns wide.
The DAT, also down loaded  from the goggles can be read by CsvView  = https://datfile.net/CsvView/downloads.html and the results put out as a csv 677 columns wide

Ta. I'll trawl through that and hopefully it will have some useful headers.
2023-2-17
Use props
Sean-bumble-bee
Captain
Flight distance : 15997 ft
  • >>>
United Kingdom
Offline

The following are some of the columns I use in compiling a pilots log book, some are derived by calculation, the number after the $ symbol is the column number based on the csv for the GO app. The numbers in brackets, where they exist are the a, b, c, d..........xx alphabetic 'names' of the column. In some cases the fly app uses similar column titles or does not show values. The program reads the information from the Phantomhelp csv's. The programme has grown as I have added additional items to track and my 'coding' is not consistant.

Drone_type_$63     drone_name_$234  drone_sn(b)_$233      drone_act_date_$235      DAT_file_nos_$210      Firmware_Ver_$240     cameraSN_a $236     cameraSN_b $264     controller_sn(a)_$237           App_Ver_$232      battery-sn(a)_(JF)_$266      bat_cent_cell_sn_(DP)_$120      bat_prod_dat_(DQ)_$121      charge-count_(U)_$111      Flight_length_(sec)_IS_$253     Drone_switched_on_time_(sec)_(BH)_$60     bat_volt_start_(V)_(EJ)_$140)      Latitude_$13_(deg)      Longitude_$14_(deg)     max_distance_running_(m)_$11      Distance travelled_(m)_$10        max-height_(m)_$254     lowest_point_(m)_$15     Max_pitch_forward_$20     Max_roll_right_$21     Max_roll_left_$21     max_speed_(m/s)_$255     max_descent_rate_(m/s)_$256      max_climb_rate_(m/s)_$19      Gimbal_down_(BR)_$70     gimbal_down_average_$70     Gimbal_up_(BR)_$70     gimbal_up_average     photo_count_$257     video_count_$165     card_size_(kb)_(FU)_$177     card_space_start_(kb)_$178           Max_GPS_sats_$50     Av_GPS_sats_$50     Nos_of_lines_$248     

The following is the programming I use to recognise what a particular column contains, it might be of use to you as a guide concerning what to look for,  its probably VERY crude programming but it works for me so I am satisfied with it.   

as an example the line            
if (($i ~/CENTER_BATTERY.loopNum/) || ($i ~/BATTERY.timesCharged/))                    {BatLoop_12 = i  }
would, in plain English, read
if the column title  ($i)  contains (~/......./) "CENTER_BATTERY.loopNum"   or  (||)  "BATTERY.timesCharged"  then do something {.......}

&& = " and" ,  

!~/......./ = " does not contain whatever is between the //" .

You are probably interested in the names between each pair of //

Some of these 'names' were, I think, written with using the airdata csv in mind but those csv's do not contain all teh info I wanted in the log book.

             if  ($i ~/RECOVER.aircraftName/)                                {Drone_Name_01  = i }
             if  ($i ~/DETAILS.aircraftS/)                                           {DroneSnD_02    = i  }
             if  ($i ~/RECOVER.aircraftS/)                                         {DroneSnR_03    = i  }
             if  ($i ~/DETAILS.cameraS/)                                            {CameraSnD_30   = i  }
             if  ($i ~/RECOVER.cameraS/)                                    {CameraSnR_31   = i  }
             if  ($i ~/RECOVER.activeTimestamp/)                          {DrActDate_04   = i  }
             if  ($i ~/HOME.dataRecorderFileIndex/)                     {DAT_05        = i  }
             if  ($i ~/FIRMWARE.version/)                                           {FirmVer_24        = i  }            
             if  ($i ~/DETAILS.rcS/)                                               {CtrSnD_06        = i  }
             if  ($i ~/RECOVER.rcS/)                                                   {CtrSnR_07        = i  }
             if  ($i ~/RECOVER.appVersion/)                                   {AppVer_23        = i  }
########         if  ($i ~/RECOVER.appVersionPhone/)                                                                                          {nos_22__column = i  }
             if  ($i ~/OSD.droneType/)                                                                                                                {Drone_type_30  = i  }            
             if  ($i ~/DETAILS.batteryS/)                                                                                                                    {BatSnD_08        = i  }
             if  ($i ~/RECOVER.batteryS/)                                                                                                                  {BatSnR_09        = i  }
             if  ($i ~/CENTER_BATTERY.productDate/)                                                                                            {BatProDate_10  = i  }
             if  ($i ~/CENTER_BATTERY.serialNo/)                                                                                                    {BatCcellSn_11  = i  }
             if (($i ~/CENTER_BATTERY.loopNum/) || ($i ~/BATTERY.timesCharged/))                    {BatLoop_12 = i  }
             if (($i !~/CENTER/)&&($i !~/voltagePercent/) && (($i ~/SMART_BATTERY.voltage/) ||($i ~/BATTERY.voltage/))) {BatVolt_35 = i  }
             if (($i ~/SMART_BATTERY.battery/) || ($i ~/BATTERY.chargeLevel/))                              {BatPercent_36    = i  }            
             if  ($i ~/OSD.latitude/)                                                                                         {Lati_13        = i  }
             if  ($i ~/OSD.longitude/)                                                                                                      {Longi_14       = i  }
             if (($i ~/CALC.travelled/) ||($i ~/DETAILS.totalDistance/))                                                   {DistTrav_15    = i  }
####### heights                                                         
             if ((($i ~/OSD.height/) && ($i !~/OSD.heightMax/)) || ($i ~/height_above_takeoff/))                      {height_33      = i  }
#             if  ($i ~/OSD.altitude/)                                                                                                        {Altitude_28    = i  }
             if  ($i ~/DETAILS.maxHeight/)                                                                                           {MaxHeight_16   = i  }
####### speeds
             if  ($i ~/DETAILS.maxHorizontalSpeed/)                                                                                          {MaxHoriSp_17   = i  }
             if  ($i ~/DETAILS.maxVerticalSpeed/)                                                                                                    {MaxVerSp_18    = i  }
             if (($i ~/zSpeed/) && ($i !~/Max/))                                                                                                    {Zup_21           = i  }
             if (($i ~/CALC.distance.running_max/) ||( $i ~/HOME.distance/))                                                         {DistRunMax_41  = i  }
             if ( ($i !~/CALC.distance.running_max/) && (($i ~/CALC.distance/) || ($i ~/HOME.distance/)))          {Distance_9     = i  }
if ((($i ~/OSD.hSpeed/) || ($i ~/CUSTOM.hSpeed/)) && ($i !~/OSD.hSpeedMax/)&&($i !~/CUSTOM.hSpeed.running_max/)&&($i !~/CALC.hSpeed/)) {Hspeed_11 = i  }            
########         if (($i ~/CALC.distance.running_max/) || ($i ~/max_distance/))        {nos_19__column  = i ; sprint FNR"," 19","i }
## controller elevator
             if  ($i ~/RC.aileron/)                                                     {Aileron_90        = i  }
             if  ($i ~/RC.elevator/)                                                     {Elevator_91     = i  }   
             if  ($i ~/DETAILS.totalTime/)                                                         {Flightlength_20 = i  }
             if (($i ~/GIMBAL.pitch/) && ($i !~/Adjust/) || ($i ~/gimbal_pitch/))  {GimPitch_32     = i  }
##photos            
             if ($i ~/DETAILS.photoNum/)                                                       {PhotoCount_25   = i  }
             if ($i ~/CAMERA_INFO.photoState/)                                                {PhotoState_42   =i }
             if ($i ~/CAMERA.isPhoto/)                                                                 {Mini_2_photo_63 =i }
##videos            
             if ($i ~/CAMERA_INFO.recordState/)                                               {RecordState_43      =i }
             if ($i ~/CAMERA.isVideo/)                                                           {FPV_video_count_64 =i }
#memory card                                      

             if  ($i ~/CAMERA_INFO.sdCardTotalSize/)                                       {CardSize_26   = i  }
             if  ($i ~/CAMERA_INFO.sdCardFreeSize/)                                        {CardSpace_34  = i  }         
             if (($i ~/OSD.gpsNum/) || ($i ~/satellites/))                        {GPS_37         = i  }
             if ((($i ~/OSD.flyTime/) && (($i ~/s/)) || ($i ~/time(millisecond)/)))  {FlyingTime_27    = i  }
             if (($i ~/OSD.pitch/) || ($i ~/pitch(degrees)/))                                {DronePitch_38     = i  }
             if (($i ~/OSD.roll/) || ($i ~/roll(degrees)/))                                  {DroneRoll_39     = i  }
             if  ($i ~/DETAILS.recordLineCount/)                                          {LineCount_29     = i  }            
             if  ($i ~/HOME.goHomeHeight/)                                        {goHomeHeight   = i  }
             if  (($i ~/SD.flycState/) && ($i !~/SD.flycState.RAW/))               {flystate_name  = i  }
             if  ($i ~/OSD.yaw/)                                                            {OSD_yaw_77     = i  }   
             if  (($i ~/GIMBAL.yaw/) && ($i !~/GIMBAL.yawAngle/))            {GIMBAL_yaw_78     = i  }   


2023-2-17
Use props
ValleyForge
lvl.4
Flight distance : 24754 ft
Australia
Offline

I was fiddling around and discovered Telemetry Overlay will pull out the g forces from the data.
2023-2-20
Use props
Advanced
You need to log in before you can reply Login | Register now

Credit Rules