This is an old revision of the document!
This page was previously hidden content. The team that has contributed to this work has in a private channel agreed it is time to release this material.
Feel free to contribute / update this material to expand on the details here.
Unlocking the entire system with license (big switch):
Change LED Status (can play with LED speed etc)
getBean() function that parses param file located at res/raw/flyc_param_infos)
NFZ Flight State Change (could potentially change to Flying Normally)
PnUqLQk4MAN3TCU7DjA+OzVDJCsTcDQFIXUhJw45MRAGGg== g_config.flying_limit.max_height_0
EU8gJQ8qFQ00Qz0jEzc2Cg== HeightLimitation
PnUqLQk4MAN3TCU7DjA+OzVDJCsTcDQFIXU7IwM3LBcGGg== g_config.flying_limit.max_radius_0
HUM6NgYwOgEVQyQrEz8tDTZE DistanceLimitation
Decrypt above with:
python defog_one_string.py 2 STRINGtoDECRYPT
nfz db encryption key | slkIUOIjf234w4dfaLIKJ793s3j |
Geo1860 aes key | hpBzum8Ht1aGpB8YCB2&KcW#jwdaWBx9 |
Geo aes key | E72AA69EC4B8E342B3DCC3A7834EB |
Geo1860 db Signature key | E72AA69EC4B8E342B3DCC3A7834EB |
remove:
assets/expansion/internal/flysafe/dji.nfzdb.confumix assets/expansion/internal/flysafe/dji.nfzdb.sig
remove:
<service android:name=“dji.assets.obbdownloader.download.ObbDownloadService”/> <service android:name=“dji.pilot.flyforbid.FlyforbidUpdateService” android:stopWithTask=“true”/>
remove:
.line 202
<dji.pilot.publics.widget.DJIStateTextView android:enabled=“true” android:textSize=“20.0sp” android:textColor=“@color/white” android:gravity=“center” android:layout_gravity=“bottom” android:id=“@id/v2_upgrade_data_ok_btn” android:background=“@drawable/common_bottom_btn_selector” android:visibility=“invisible” android:layout_width=“fill_parent” android:layout_height=“50.0dip” android:text=“@string/tip_upgrade_data_start” android:maxLines=“1" /> <dji.pilot.publics.widget.DJIStateTextView android:enabled=“true” android:textSize=“20.0sp” android:textColor=“@color/white” android:gravity=“center” android:layout_gravity=“bottom” android:id=“@id/v2_upgrade_data_finish_btn” android:background=“@drawable/common_bottom_btn_selector” android:visibility=“visible” android:layout_width=“fill_parent” android:layout_height=“50.0dip” android:text=“@string/ok” android:maxLines=“1" />
if "%%f"=="removeNFZ" ( echo.-: Deleting all NFZ db all files... del /f /q "assets\expansion\internal\flysafe\dji.nfzdb.confumix" del /f /q "assets\expansion\internal\flysafe\dji.nfzdb.sig" del /f /q "assets\expansion\internal\flysafe\flysafe_areas_djigo.db" del /f /q "assets\expansion\internal\flysafe\flysafe_polygon_1860.db" del /f /q "assets\expansion\internal\flysafe\flyforbid_airmap\*.json" del /f /q "res\raw\flyforbid.json" copy /b NUL "res\raw\flyforbid.json" )
if [ "$patch" == "removeNFZ" ] then rm assets/expansion/internal/flysafe/dji.nfzdb.confumix rm assets/expansion/internal/flysafe/dji.nfzdb.sig rm assets/expansion/internal/flysafe/flysafe_areas_djigo.db rm assets/expansion/internal/flysafe/flysafe_polygon_1860.db rm assets/expansion/internal/flysafe/flyforbid_airmap/*.json rm res/raw/flyforbid.json touch res/raw/flyforbid.json fi
diff -Naur orig/AndroidManifest.xml mod/AndroidManifest.xml
--- orig/AndroidManifest.xml 2018-01-25 21:31:44.000000000 -0500 +++ mod/AndroidManifest.xml 2018-01-25 21:36:55.000000000 -0500 @@ -72,7 +72,6 @@ <service android:name="dji.pilot2.flymonitor.service.FlyMonitorService" android:stopWithTask="true"/> <service android:name="dji.pilot.flightrecord.DJIRecordService" android:stopWithTask="true"/> <service android:name="dji.pilot.battery.service.BatteryCheckService" android:stopWithTask="true"/> - <service android:name="dji.pilot.flyforbid.FlyforbidUpdateService" android:stopWithTask="true"/> <receiver android:name="dji.pilot2.publics.receiver.NetworkStatShutdownReceiver"> <intent-filter> <action android:name="android.intent.action.ACTION_SHUTDOWN"/> @@ -276,7 +275,6 @@ </intent-filter> </receiver> <activity android:configChanges="keyboard|keyboardHidden|orientation|screenSize" android:name="dji.assets.InstallActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"/> - <service android:name="dji.assets.obbdownloader.download.ObbDownloadService"/> <activity android:label="@string/app_name" android:name="dji.setting.ui.MainActivity" android:screenOrientation="sensorLandscape" android:theme="@android:style/Theme.NoTitleBar" android:windowSoftInputMode="stateHidden"/> <activity android:name="dji.checklist.TestCheckListActivity" android:screenOrientation="sensorLandscape"/> <activity android:excludeFromRecents="true" android:launchMode="singleTop" android:name="com.dji.update.view.UpdateDialogActivity" android:taskAffinity="" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
diff -Naur orig/smali_classes3/dji/data/upgrade/d/a.smali mod/smali_classes3/dji/data/upgrade/d/a.smali
--- orig/smali_classes3/dji/data/upgrade/d/a.smali 2018-01-25 21:31:56.000000000 -0500 +++ mod/smali_classes3/dji/data/upgrade/d/a.smali 2018-01-25 21:45:50.000000000 -0500 @@ -483,8 +483,6 @@ .line 211 iget-object v0, p0, Ldji/data/upgrade/d/a;->l:Ldji/publics/widget/dialog/c; - invoke-virtual {v0}, Ldji/publics/widget/dialog/c;->show()V - .line 212 return-void .end method @@ -652,8 +650,6 @@ .line 293 iget-object v1, p0, Ldji/data/upgrade/d/a;->m:Ldji/publics/widget/dialog/c; - invoke-virtual {v1}, Ldji/publics/widget/dialog/c;->show()V - goto :goto_0 .end method @@ -770,8 +766,6 @@ .line 341 iget-object v0, p0, Ldji/data/upgrade/d/a;->n:Ldji/publics/widget/dialog/c; - invoke-virtual {v0}, Ldji/publics/widget/dialog/c;->show()V - goto :goto_0 .end method @@ -1413,8 +1407,6 @@ .line 421 iget-object v0, p0, Ldji/data/upgrade/d/a;->p:Ldji/publics/widget/dialog/c; - invoke-virtual {v0}, Ldji/publics/widget/dialog/c;->show()V - goto :goto_0 .end method @@ -1455,8 +1447,6 @@ .line 435 iget-object v0, p0, Ldji/data/upgrade/d/a;->j:Ldji/data/upgrade/d/b; - invoke-virtual {v0}, Ldji/data/upgrade/d/b;->show()V - goto :goto_0 .end method @@ -1618,8 +1608,6 @@ .line 482 iget-object v0, p0, Ldji/data/upgrade/d/a;->q:Ldji/publics/widget/dialog/c; - invoke-virtual {v0}, Ldji/publics/widget/dialog/c;->show()V - goto :goto_0 .end method
diff -Naur orig/apktool.yml mod/apktool.yml
--- orig/apktool.yml 2018-01-25 16:29:49.000000000 -0500 +++ mod/apktool.yml 2018-01-25 21:25:46.000000000 -0500 @@ -5,8 +5,6 @@ - arsc - data - assets/build -- assets/expansion/internal/flysafe/dji.nfzdb.confumix -- assets/expansion/internal/flysafe/dji.nfzdb.sig - webp - so - h264
How to fully remove NFZ from 4.1.22 GO and on your stock firmware drone WITHOUT mixing firmware. These are instructions for MAVIC only for now. Coming soon for Spark,P4, I2. Stay tuned. Following these steps will allow you almost the full monty. All performance mods will work, but you still can’t bypass GO Altitude limits, but you can use stock firmware and NOT have to bypass NFZ in parameters. Yes, you read that right. You will be rid of ALL NFZ zones on the map, all of the pop-ups and warnings in the app and be able to arm and fly ANYWHERE! You will have all other benefits of the FW such as Quickshots, Precision Landing etc.
Just to be clear, this project was undertaken to get around DJIs INCORRECT NFZ and Warning zones that they implemented without any legal obligation or requirement.
Tools/software needed:
Without getting into the details of what jezzab has done for all of us…here is what you do:
Test in an area where you had NFZ warnings before, WITH PROPS OFF. I am NOT telling you to fly in a NFZ. Use your smarts. You are responsible for your flying. Not DJI.
Material sourced from https://docs.google.com/document/d/1wyTr96r8iN6FF3XXVtNhi9HrCFJSd3_QPijCJPADcPY/edit#