====== DJI Configs Files ====== **NOTE: The dji_configs files do not work on the most recent DJI GO software versions, you must be on 4.1.12 or older. This information is here for archival purposes only unless you wish to perform an IPA Rollback [[howto:iosrollback|Click Here For More Details]] or are sideloading an older app onto your Android device** The DJI Configs file mod will work on both Android and iOS. The maximum power at which consumer products can transmit on the 2.4Ghz wifi frequency used by DJI aircraft is 0.1 watts (0.1W) in many countries. In a minority of countries, including the U.S. it is 1W. Some countries lie in between. Only one country, India, allows more than 1W (In India, the max is 4W!). In most parts of the world DJI aircraft uses a power output of 0.1W by default, which is pretty weak. In the U.S., it uses 0.4W. However, the equipment can be configured to a maximum of 1.5 Watts of TX power anywhere in the world with the directions below. ===== Warnings ===== * Changing the video frequency to 2.33 or 2.57 ghz will be using the ISM/LIPD band. Transmitting below 0.1W is permitted in most countries without a license. Transmitting on these frequencies at higher power require the operator to hold a HAM radio license in most countries. Make sure you check your local laws before applying these changes. * Transmitting at higher power levels than the 0.5W is not approved by DJI. Do not use this power level unless you understand the risks of transmitting at this power level. ===== Supported Versions ===== There have been many questions about supported software/firmware on an aircraft, remote control, and even DJI go itself. This part of this page will attempt to answer some of those questions. Firstly, lets look at how this all works: - DJI GO parses, and sends commands to an RC based on an config file - The RC receives the messages from DJI go, and updates its own radio settings, and passes the commands to the AC - The AC receives the messages from the RC, and reconfigures its radio settings. ===== 32 Channel Mod file ===== This file adds additional channels within the 2.4 ghz band increasing them to 32. Depending on the GO App, by selecting "manual channel selection" one of the additional channels can be set. This can be useful in certain circumstances for example when flying multiple dji craft in the same proximity. Or in a dense interference area. Currently, the 32 Ch. mod cannot be combined with the FCC mods. =====Manual Apply the config (Android) ===== * Download your config file from one of the options below * Rename the file to .DJI.configs (note the preceding ".") * Kill the DJI GO 4 app on your android device * Connect your device to your PC * Copy the .DJI.configs file to this folder on your device: \Android\data\dji.go.v4\files * done =====Auto Apply the config (Android) with App===== * Download and install ForceBoost Patch App https://drive.google.com/file/d/1AUTvIHB3vHeEerYJfBsS4vxh18QKNoC2 * Click on the desired patch * done ===== Is FCC mod working? How to check? ==== To make some clarity about the FCC argument and to verify if it is working, as the wide confusion surrounding the subject, I wanted to tell you that **the FCC mod using the .DJI.configs** (take care: put the **dot DJI dot configs** file in the right folder **\Android\data\dji.go.v4\files**)** works**, it doesn't matter of the number of WIFI CHANNELS shown by the application. In a nutshell, to avoid misunderstanding, FILE insertion will enable FCC mode even if you are in a non-FCC area. You will not see anything about your application that warns you whether it is active or not. **It works just fine.** The only way to test the FCC mode is to measure transmit power with a dedicated tool, or, as I did, fly two drones, mavic in my case, in the same place at the same time and in the same configurations, with the only difference in the presence of the .DJI.configs file in one of the two drones. Well, one mavic at a distance of about 3800 meters had WEAK SIGNAL and activated the automatic RTH, the other, continued to fly and at a distance of about 4500 meters it had 4 receive notches on the total of 5 in both the controller and in HD. (test stopped because no need to go further) Here the REAL test showing that .DJI.configs is really working (**thanks to @GabrieleFK14** for hardware testing) **CE MODE** https://postimg.org/image/3y11dge9f/ ** FCC 1.5w BOOST MODE (TAKE CARE)** https://s13.postimg.org/3l9n7blpz/FCC_Boost_Mode_1.5w.jpg how it has tested https://drive.google.com/open?id=1YW47GcpA3hDWGiqj6x2mIJWWKR_XpbtD (By Lukappaseidue) **EDIT 06/28/2018:** There is a trick to know if you are in FCC or CE Mode. I found this on the forum MavicPilots ( https://mavicpilots.com/threads/how-to-know-if-you-are-in-fcc-or-ec-mode.38479/ ). A big thank to DragonJah. In transmission setting, if you look at the signal graph, you can see than there is two horizontal lines, one for the "~1km" and one for the "~4km". If you are in EC mode, the "~1km" line is just under 90 dbm/mhz, so between 90 and 100dbm/mhz and the "~4km" line is between 100 and 110 dbm/mhz. {{:howto:photo_26-06-2018_23_10_04.jpg?400|}} If you are in FCC mode, the "~1km" line is between 80 and 90 dbm/mhz and the "~4km" line is juste upper 100 dbm/mhz, so between 90 and 100dbm/mhz. {{:howto:photo_27-06-2018_23_49_06.jpg?400|}} I tried with the 1.5W file but the graph stay like if I was in the EC Mode... ===== Apply the config (iOS) ===== This hack is really simple. You only need itunes on your computer. However, there is one more step required for OSX to enable displaying of hidden files in finder before you can start * OSX - Display hidden files defaults write com.apple.finder AppleShowAllFiles -bool YES killAll Finder * Download your config file from one of the options below * Rename the file to .DJI.configs (note the preceding ".") * Kill the DJI GO 4 app on your apple device * Connect your iPhone/iPad/iPod to your PC and open itunes * In iTunes, click your apple device, go to apps, scroll to the bottom and find DJI GO 4 * Add the file in itunes to DJI GO 4 and click Sync/Apply Note: For OSX users. After dragging the file into iTunes, you will not see it there. iTunes is still hiding the file from you even though it has copied to that folder successfully. If you want to check... or even to upload the file without iTunes, check out [[http://www.i-funbox.com/]] ===== Files ===== I added a new column that describes where these configurations have been confirmed to be working as expected. The effect of these files in other devices is unknown. ^Power or Description^Video Frequency^File^Tested On^ |Default - 0.09W|2.4-2.475ghz|{{ :howto:dji.configs_force_ce |}}|Mavic| |Default - 0.09W|2.33ghz |{{ :howto:dji.configs_force_ce_23 |}}|Mavic| |Default - 0.09W|2.57ghz |{{ :howto:dji.configs_force_ce_25 |}}|Mavic| |FCC - 0.4W |2.4-2.475ghz|{{ :howto:dji.configs_force_fcc |}}|Mavic| |FCC - 0.4W |2.33ghz |{{ :howto:dji.configs_force_fcc_and_23 |}}|Mavic| |FCC - 0.4W |2.57ghz |{{ :howto:dji.configs_force_fcc_and_25 |}}|Mavic| |1.5W |2.4-2.475ghz|{{ :howto:dji.configs_force_boost |}}|Mavic| |1.5W |2.33ghz |{{ :howto:dji.configs_force_boost_and_23 |}}|Mavic| |1.5W |2.57ghz |{{ :howto:dji.configs_force_boost_and_25 |}}|Mavic| |32 Channel Mod | |{{ :howto:dji.configs_32-ch_mod |}}|P3P, P3A, P4P| |FCC+ChannelMod | |{{ :howto:dji.configs_force_fcc_32-ch_mod|}}|Experimental| ===== Spectrum Analyzer Observations ===== Extensive testing of the mod's with a spectrum analyzer in this video by beanbubba. You can find more of his testing at https://mavicpilots.com/threads/mavic-radio-mods-primer.34444/ {{youtube>5uecdm0lWcE}} ===== Detailed Video Tutorial ===== This tutorial was created by digdat0. He has many tutorials on [[https://flyflydrones.com/ |his website]] {{youtube>OxpsdW9zY2E}} ===== Hex Dumps ===== Below, we can see the data contained in each of these files. It is easy to see the individual bits that change for power and frequency tweaks. What is not so obvious at the moment is what part of this file does the 32 channel mod. If anyone has that detail, it would be useful information. ==== dji.configs_32-ch_mod ==== 00000000 44 4a 49 20 53 4f 46 54 57 41 52 45 20 43 4f 4e |DJI SOFTWARE CON| 00000010 46 49 47 20 3a 20 44 4f 20 4e 4f 54 20 44 45 4c |FIG : DO NOT DEL| 00000020 45 54 45 21 00 00 00 01 11 11 11 11 11 11 11 11 |ETE!............| 00000030 ==== dji.configs_force_boost ==== 00000000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................| 00000010 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................| 00000020 01 01 01 01 01 01 01 01 00 00 00 00 00 00 00 22 |..............."| 00000030 22 22 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |""..............| 00000040 00 00 00 00 00 00 00 |.......| ==== dji.configs_force_boost_and_23 ==== 00000000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................| 00000010 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................| 00000020 01 01 01 01 01 01 01 01 00 00 00 00 00 00 00 66 |...............f| 00000030 66 66 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |ff..............| 00000040 00 00 00 00 00 00 00 |.......| ==== dji.configs_force_boost_and_25 ==== 00000000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................| 00000010 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................| 00000020 01 01 01 01 01 01 01 01 00 00 00 00 00 00 00 aa |...............?| 00000030 aa aa 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |??..............| 00000040 00 00 00 00 00 00 00 |.......| 00000047 ==== dji.configs_force_ce ==== 00000000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................| 00000010 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................| 00000020 01 01 01 01 01 01 01 01 00 00 00 00 00 00 00 44 |...............D| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 |.......| 00000047 ==== dji.configs_force_ce_23 ==== 00000000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................| 00000010 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................| 00000020 01 01 01 01 01 01 01 01 00 00 00 00 00 00 00 44 |...............D| 00000030 44 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |DD..............| 00000040 00 00 00 00 00 00 00 |.......| 00000047 ==== dji.configs_force_ce_25 ==== 00000000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................| 00000010 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................| 00000020 01 01 01 01 01 01 01 01 00 00 00 00 00 00 00 88 |................| 00000030 88 88 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 |.......| 00000047 ==== dji.configs_force_fcc ==== 00000000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................| 00000010 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................| 00000020 01 01 01 01 01 01 01 01 00 00 00 00 00 00 00 11 |................| 00000030 11 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 |.......| 00000047 ==== dji.configs_force_fcc_and_23 ==== 00000000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................| 00000010 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................| 00000020 01 01 01 01 01 01 01 01 00 00 00 00 00 00 00 55 |...............U| 00000030 55 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |UU..............| 00000040 00 00 00 00 00 00 00 |.......| 00000047 ==== dji.configs_force_fcc_and_25 ==== 00000000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................| 00000010 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................| 00000020 01 01 01 01 01 01 01 01 00 00 00 00 00 00 00 99 |................| 00000030 99 99 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 |.......| 00000047 ===== Credits ===== * credit to vk2fro for starting this FAQ * The config files here were sourced from a file Mavic FCC configs.zip - However, the source of this is lost in the mist of time. Anyone who wants to claim authorship - please let us know on slack. I found here http://forum.rcdesign.ru/attachment.php?attachmentid=1341758&d=1499227235 * Found some stuff on a Russian forum. Two interesting things: * I found a version of these files published by SaNX at http://forum.rcdesign.ru/f132/thread500402-6.html * SaNX also provided a block of code at http://forum.rcdesign.ru/f132/thread500402-4.html that I will quote below for archival purposes ===== Code ===== The code below was reverse engineered from DJI GO 4.1.12. It is included here to help people see that even the latest DJI GO app still parses this file. void __cdecl -[DJIAppSettings loadDJICfg](DJIAppSettings *self, SEL a2) { DJIAppSettings *v2; // x19 struct objc_object *v3; // x0 void *v4; // x0 void *v5; // x21 void *v6; // x0 __int64 v7; // x20 void *v8; // x0 void *v9; // x0 void *v10; // x21 void *v11; // x0 void *v12; // x0 void *v13; // x0 __int64 v14; // x8 void *v15; // x0 void *v16; // x0 void *v17; // x0 char v18; // w22 v2 = self; v3 = +[DJIFileHelper fetchDocumentPath](&OBJC_CLASS___DJIFileHelper, "fetchDocumentPath"); v4 = (void *)objc_retainAutoreleasedReturnValue(v3); v5 = v4; v6 = objc_msgSend(v4, "stringByAppendingPathComponent:", CFSTR(".DJI.configs")); v7 = objc_retainAutoreleasedReturnValue(v6); objc_release(v5); v8 = objc_msgSend(&OBJC_CLASS___NSData, "dataWithContentsOfFile:", v7); v9 = (void *)objc_retainAutoreleasedReturnValue(v8); v10 = v9; if ( v9 ) { v2->_canUseIllegalChannels = 0; v2->_mfiDisable = 0; v2->_firmwareServiceType = 0; v2->_limitCameraRecordingTime = 1; v2->_simulatorInternalDisable = 0; if ( (unsigned __int64)objc_msgSend(v9, "length") >= 0x29 ) { v11 = (void *)objc_retainAutorelease(v10); if ( *((_BYTE *)objc_msgSend(v11, "bytes") + 39) == 1 ) v2->_canUseIllegalChannels = 1; } if ( (unsigned __int64)objc_msgSend(v10, "length") >= 0x2A ) { v12 = (void *)objc_retainAutorelease(v10); if ( *((_BYTE *)objc_msgSend(v12, "bytes") + 40) == 1 ) v2->_mfiDisable = 1; } if ( (unsigned __int64)objc_msgSend(v10, "length") >= 0x2D ) { v13 = (void *)objc_retainAutorelease(v10); v14 = *((unsigned __int8 *)objc_msgSend(v13, "bytes") + 43); if ( (_DWORD)v14 == 2 ) v2->_firmwareServiceType = 2; else v2->_firmwareServiceType = v14 == 1; } if ( (unsigned __int64)objc_msgSend(v10, "length") >= 0x2E ) { v15 = (void *)objc_retainAutorelease(v10); if ( *((_BYTE *)objc_msgSend(v15, "bytes") + 44) == 1 ) v2->_limitCameraRecordingTime = 0; } if ( (unsigned __int64)objc_msgSend(v10, "length") >= 0x2F ) { v16 = (void *)objc_retainAutorelease(v10); if ( *((_BYTE *)objc_msgSend(v16, "bytes") + 45) == 1 ) v2->_simulatorInternalDisable = 1; } if ( (unsigned __int64)objc_msgSend(v10, "length") >= 0x31 ) { v17 = (void *)objc_retainAutorelease(v10); v18 = *((_BYTE *)objc_msgSend(v17, "bytes") + 48); if ( v18 & 1 ) -[DJIAppSettings setSdr_force_fcc:](v2, "setSdr_force_fcc:", 1LL); if ( v18 & 2 ) -[DJIAppSettings setSdr_force_boost:](v2, "setSdr_force_boost:", 1LL); if ( v18 & 4 ) -[DJIAppSettings setSdr_force_2_3_G:](v2, "setSdr_force_2_3_G:", 1LL); if ( v18 & 8 ) -[DJIAppSettings setSdr_force_2_5_G:](v2, "setSdr_force_2_5_G:", 1LL); } } objc_release(v10); objc_release(v7); }