User Tools

Site Tools

Translations of this page:

howto:fcc32ch

This is an old revision of the document!


FCC 32ch for P4P

This page is a bit of an experiment. Over time, many people have asked “Can we do 32ch and FCC on a P4p”. Based on the previous files, the answer was no. But, I have always intended to go back and look at this to see if it is possible.

What I propose to do is to look at the 32ch file, and the FCC file, and the source code that parses these files, and come to a conclusion.

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_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

Credits

if ((an unsigned __int64) objc_msgSend(v9, "the length") > = 0x29) {
  v11 = (void * ) objc_retainAutorelease(v10);
  if ( * ((_ BYTE * ) objc_msgSend(v11, "bytes") + 39) == 1)
    v2 - > NSObject_opaque[OBJC_IVAR ___ DJIAppSettings__canUseIllegalChannels] = 1;
}
If((unsigned __int64) objc_msgSend(v10, "length") > = 0x2A) {
  v12 = (void * ) objc_retainAutorelease(v10);
  if ( * ((_ BYTE * ) objc_msgSend(v12, "bytes") + 40) == 1)
    v2 - > NSObject_opaque[OBJC_IVAR ___ DJIAppSettings__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)
    * (DWORD * _) & v2 - > NSObject_opaque[OBJC_IVAR ___ DJIAppSettings__firmwareServiceType] = 2;
  Else
    * (_ DWORD * ) & v2 - > NSObject_opaque[OBJC_IVAR ___ DJIAppSettings__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 - > NSObject_opaque[OBJC_IVAR ___ DJIAppSettings__limitCameraRecordingTime] = 0;
}
If((unsigned __int64) objc_msgSend(v10, "length") > = 0x2F) {
  v16 = (void * ) objc_retainAutorelease(v10);
  If( * ((_ BYTE * ) objc_msgSend(v16, "bytes") + 45) == 1)
  v2 - > NSObject_opaque[OBJC_IVAR ___ DJIAppSettings__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)
    objc_msgSend(v2, " setSdr_force_fcc :", 1 LL);
    if (v18 & 2)
      objc_msgSend(v2, "setSdr_force_boost:", 1 LL);
    if (v18 & 4)
      objc_msgSend(v2, "setSdr_force_2_3_G:", 1 LL);
    if (v18 & 8)
      objc_msgSend(v2, "setSdr_force_2_5_G:", 1 LL);
howto/fcc32ch.1504958140.txt.gz · Last modified: 2017/09/09 11:55 by czokie