o-gs / dji-firmware-tools

Tools for handling firmwares of DJI products, with focus on quadcopters.
GNU General Public License v3.0
1.52k stars 420 forks source link

P3A P3S_FW_V01.11.0020.bin how to open FCC? #127

Closed gaifeng8864 closed 4 years ago

gaifeng8864 commented 4 years ago

When I exported JSON using "lightbridge_stm32_hardcoder.py", I found that "P3A P3S_FW_V01.11.0020_m0900.elf" had a lot of options that were not found, and the last generated "P3S_FW_V01.11.0020_m0900.bin" was burned into the drone. After that, my drone image transmission distance is smaller. When I use these tools on this version of P3S_FW_V01.11.0020, do I need to change those parameters? thanks

mefistotelis commented 4 years ago

Here's a full log of testing a firmware with m0900 identical to yours. Use it as a refernce to check whether something is wrong with your run.

The test include extraction, changing values in JSON and modifying the binary to JSON changes:

### TEST of hardcoders with P3X_FW_V01.11.0030 ###
fw/P3X_FW_V01.11.0030.bin: Opening for extraction
fw/P3X_FW_V01.11.0030.bin: Package format version 2016 detected
fw/P3X_FW_V01.11.0030.bin: Header:
{   'entry_count': 17,
    'hdrend_offs': 950,
    'magic': 305419896,
    'magic_ver': 1,
    'manufacturer': b'DJI',
    'model': b'P3X',
    'padding': '00000000000000000000',
    'timestamp': 1504073841,
    'ver_latest': 17498142,
    'ver_latest_enc': 160103691,
    'ver_rollbk': 17498132,
    'ver_rollbk_enc': 160103681}
fw/P3X_FW_V01.11.0030.bin: Module index 0
{   'decrypted_len': 905728,
    'decrypted_md5': 'a6f0e3375c3a8417d8090f1c27d1826d',
    'dt_offs': 950,
    'encrypt_type': 1,
    'reserved2': 1,
    'spcoding': 16,
    'splvalue': 0,
    'stored_len': 905728,
    'stored_md5': 'c0c9ee22ae23700e7f3d41d00a4a5ca8',
    'target': 'm0306',
    'target_name': 'main '
                   'controller '
                   "'A3' "
                   'app',
    'version': '02.04.5170'}
fw/P3X_FW_V01.11.0030.bin: Module index 1
{   'decrypted_len': 43776,
    'decrypted_md5': 'cc3baf52297f2eb67adf98f0270956f4',
    'dt_offs': 906678,
    'encrypt_type': 1,
    'reserved2': 1,
    'spcoding': 16,
    'splvalue': 0,
    'stored_len': 43776,
    'stored_md5': 'bbd8964489204dfdb8858d5824a116b0',
    'target': 'm0305',
    'target_name': 'main '
                   'controller '
                   "'A3' "
                   'ldr',
    'version': '34.02.0009'}
fw/P3X_FW_V01.11.0030.bin: Module index 2
{   'decrypted_len': 97032,
    'decrypted_md5': '391e3bd702bf6ef8cb1f85c2f5d92be3',
    'dt_offs': 950454,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 97032,
    'stored_md5': '391e3bd702bf6ef8cb1f85c2f5d92be3',
    'target': 'm0400',
    'target_name': 'gimbal '
                   'mdl '
                   '0',
    'version': '01.48.0000'}
fw/P3X_FW_V01.11.0030.bin: Module index 3
{   'decrypted_len': 18348,
    'decrypted_md5': '9500f8d9c0f4e381178a59a2b3183af2',
    'dt_offs': 1047486,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 18348,
    'stored_md5': '9500f8d9c0f4e381178a59a2b3183af2',
    'target': 'm1100',
    'target_name': 'battery '
                   'controller '
                   '1 '
                   'app',
    'version': '01.08.0000'}
fw/P3X_FW_V01.11.0030.bin: Module index 4
{   'decrypted_len': 23034,
    'decrypted_md5': 'c6a8fcda6e025855a639b96db3e4b9e1',
    'dt_offs': 1065834,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 23034,
    'stored_md5': 'c6a8fcda6e025855a639b96db3e4b9e1',
    'target': 'm1101',
    'target_name': 'battery '
                   'controller '
                   '2 '
                   'app',
    'version': '02.00.0033'}
fw/P3X_FW_V01.11.0030.bin: Module index 5
{   'decrypted_len': 42382,
    'decrypted_md5': '1eefbfc3053a409e0b4e4ff7ea2cc557',
    'dt_offs': 1088868,
    'encrypt_type': 0,
    'reserved2': 3073,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 42382,
    'stored_md5': '1eefbfc3053a409e0b4e4ff7ea2cc557',
    'target': 'm1200',
    'target_name': 'electronic '
                   'speed '
                   'control '
                   '0',
    'version': '01.13.0000'}
fw/P3X_FW_V01.11.0030.bin: Module index 6
{   'decrypted_len': 42382,
    'decrypted_md5': '1eefbfc3053a409e0b4e4ff7ea2cc557',
    'dt_offs': 1131250,
    'encrypt_type': 0,
    'reserved2': 3073,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 42382,
    'stored_md5': '1eefbfc3053a409e0b4e4ff7ea2cc557',
    'target': 'm1201',
    'target_name': 'electronic '
                   'speed '
                   'control '
                   '1',
    'version': '01.13.0000'}
fw/P3X_FW_V01.11.0030.bin: Module index 7
{   'decrypted_len': 42382,
    'decrypted_md5': '1eefbfc3053a409e0b4e4ff7ea2cc557',
    'dt_offs': 1173632,
    'encrypt_type': 0,
    'reserved2': 3073,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 42382,
    'stored_md5': '1eefbfc3053a409e0b4e4ff7ea2cc557',
    'target': 'm1202',
    'target_name': 'electronic '
                   'speed '
                   'control '
                   '2',
    'version': '01.13.0000'}
fw/P3X_FW_V01.11.0030.bin: Module index 8
{   'decrypted_len': 42382,
    'decrypted_md5': '1eefbfc3053a409e0b4e4ff7ea2cc557',
    'dt_offs': 1216014,
    'encrypt_type': 0,
    'reserved2': 3073,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 42382,
    'stored_md5': '1eefbfc3053a409e0b4e4ff7ea2cc557',
    'target': 'm1203',
    'target_name': 'electronic '
                   'speed '
                   'control '
                   '3',
    'version': '01.13.0000'}
fw/P3X_FW_V01.11.0030.bin: Module index 9
{   'decrypted_len': 2680,
    'decrypted_md5': '08e01b61a70e503bb60362eaf4d734cc',
    'dt_offs': 1258396,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 2680,
    'stored_md5': '08e01b61a70e503bb60362eaf4d734cc',
    'target': 'm1500',
    'target_name': 'transmitter '
                   'usb '
                   "'IG810 "
                   "LB2_68013_TX'",
    'version': '01.01.0512'}
fw/P3X_FW_V01.11.0030.bin: Module index 10
{   'decrypted_len': 77876,
    'decrypted_md5': '47bea6b588988517d7731a677eaaef44',
    'dt_offs': 1261076,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 77876,
    'stored_md5': '47bea6b588988517d7731a677eaaef44',
    'target': 'm1700',
    'target_name': 'visual '
                   'positioning '
                   'module '
                   "'camera'",
    'version': '01.01.0263'}
fw/P3X_FW_V01.11.0030.bin: Module index 11
{   'decrypted_len': 25908,
    'decrypted_md5': 'def18f11a3b0ae5ab53624d52c0e322e',
    'dt_offs': 1338952,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 25908,
    'stored_md5': 'def18f11a3b0ae5ab53624d52c0e322e',
    'target': 'm1701',
    'target_name': 'visual '
                   'positioning '
                   'module '
                   "'sonar'",
    'version': '01.00.0519'}
fw/P3X_FW_V01.11.0030.bin: Module index 12
{   'decrypted_len': 4194304,
    'decrypted_md5': '2c3976888e71103fd4bd78f76452cb65',
    'dt_offs': 1364860,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 4194304,
    'stored_md5': '2c3976888e71103fd4bd78f76452cb65',
    'target': 'm1900',
    'target_name': 'lightbridge '
                   'FPGA '
                   'on '
                   'air '
                   'model '
                   '0',
    'version': '01.00.2144'}
fw/P3X_FW_V01.11.0030.bin: Module index 13
{   'decrypted_len': 56823260,
    'decrypted_md5': '1f95d61c7564f6fcd43f46fb88a43236',
    'dt_offs': 5559164,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 56823260,
    'stored_md5': '1f95d61c7564f6fcd43f46fb88a43236',
    'target': 'm0100',
    'target_name': 'camera '
                   "'Ambarella "
                   "A9SE' "
                   'App',
    'version': '01.32.5432'}
fw/P3X_FW_V01.11.0030.bin: Module index 14
{   'decrypted_len': 412780,
    'decrypted_md5': '7c433748d9ba5dc77ca058572b59be3c',
    'dt_offs': 62382424,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 412780,
    'stored_md5': '7c433748d9ba5dc77ca058572b59be3c',
    'target': 'm0101',
    'target_name': 'camera '
                   "'Ambarella "
                   "A9SE' "
                   'Ldr',
    'version': '01.32.5432'}
fw/P3X_FW_V01.11.0030.bin: Module index 15
{   'decrypted_len': 3363336,
    'decrypted_md5': '62e63c7b2ddd4695a1fd9be58bf6db28',
    'dt_offs': 62795204,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 3363336,
    'stored_md5': '62e63c7b2ddd4695a1fd9be58bf6db28',
    'target': 'm0800',
    'target_name': 'video '
                   'encoder '
                   "'DaVinci "
                   'Dm368 '
                   "Linux'",
    'version': '00.13.0007'}
fw/P3X_FW_V01.11.0030.bin: Module index 16
{   'decrypted_len': 75796,
    'decrypted_md5': '1bc165f4f3fc2ecc87bcb17a3e90a208',
    'dt_offs': 66158540,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 75796,
    'stored_md5': '1bc165f4f3fc2ecc87bcb17a3e90a208',
    'target': 'm0900',
    'target_name': 'lightbridge '
                   'MCU '
                   "'STM32F103'",
    'version': '04.01.0000'}
fw/P3X_FW_V01.11.0030.bin: Headers checksum E1B1 matches.
fw/P3X_FW_V01.11.0030.bin: Extracting module index 0, 905728 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 0 stored checksum c0c9ee22ae23700e7f3d41d00a4a5ca8
fw/P3X_FW_V01.11.0030.bin: Extracting module index 1, 43776 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 1 stored checksum bbd8964489204dfdb8858d5824a116b0
fw/P3X_FW_V01.11.0030.bin: Extracting module index 2, 97032 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 2 stored checksum 391e3bd702bf6ef8cb1f85c2f5d92be3
fw/P3X_FW_V01.11.0030.bin: Extracting module index 3, 18348 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 3 stored checksum 9500f8d9c0f4e381178a59a2b3183af2
fw/P3X_FW_V01.11.0030.bin: Extracting module index 4, 23034 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 4 stored checksum c6a8fcda6e025855a639b96db3e4b9e1
fw/P3X_FW_V01.11.0030.bin: Extracting module index 5, 42382 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 5 stored checksum 1eefbfc3053a409e0b4e4ff7ea2cc557
fw/P3X_FW_V01.11.0030.bin: Extracting module index 6, 42382 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 6 stored checksum 1eefbfc3053a409e0b4e4ff7ea2cc557
fw/P3X_FW_V01.11.0030.bin: Extracting module index 7, 42382 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 7 stored checksum 1eefbfc3053a409e0b4e4ff7ea2cc557
fw/P3X_FW_V01.11.0030.bin: Extracting module index 8, 42382 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 8 stored checksum 1eefbfc3053a409e0b4e4ff7ea2cc557
fw/P3X_FW_V01.11.0030.bin: Extracting module index 9, 2680 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 9 stored checksum 08e01b61a70e503bb60362eaf4d734cc
fw/P3X_FW_V01.11.0030.bin: Extracting module index 10, 77876 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 10 stored checksum 47bea6b588988517d7731a677eaaef44
fw/P3X_FW_V01.11.0030.bin: Extracting module index 11, 25908 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 11 stored checksum def18f11a3b0ae5ab53624d52c0e322e
fw/P3X_FW_V01.11.0030.bin: Extracting module index 12, 4194304 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 12 stored checksum 2c3976888e71103fd4bd78f76452cb65
fw/P3X_FW_V01.11.0030.bin: Extracting module index 13, 56823260 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 13 stored checksum 1f95d61c7564f6fcd43f46fb88a43236
fw/P3X_FW_V01.11.0030.bin: Extracting module index 14, 412780 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 14 stored checksum 7c433748d9ba5dc77ca058572b59be3c
fw/P3X_FW_V01.11.0030.bin: Extracting module index 15, 3363336 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 15 stored checksum 62e63c7b2ddd4695a1fd9be58bf6db28
fw/P3X_FW_V01.11.0030.bin: Extracting module index 16, 75796 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 16 stored checksum 1bc165f4f3fc2ecc87bcb17a3e90a208
+ cp P3X_FW_V01.11.0030_m0100.bin P3X_FW_V01.11.0030_m0100.orig.bin
+ ./amba_fwpak.py -vvv -x -m P3X_FW_V01.11.0030_m0100.bin
P3X_FW_V01.11.0030_m0100.bin: Opening for extraction
P3X_FW_V01.11.0030_m0100.bin: Header:
{   'crc32': '6F478666',
    'model_name': b'FC30'
                  b'0X',
    'ver_info': '0.0-0000'}
P3X_FW_V01.11.0030_m0100.bin: After detection, expecting 5 entries
P3X_FW_V01.11.0030_m0100.bin: Entries:
[{   'crc32': 'D4C52AE1',
    'dt_len': 9269056}, {   'crc32': '3651528E',
    'dt_len': 3889408}, {   'crc32': '87A3DCF3',
    'dt_len': 11624704}, {   'crc32': '6155791D',
    'dt_len': 5038864}, {   'crc32': '90B87999',
    'dt_len': 27001088}]
P3X_FW_V01.11.0030_m0100.bin: Post Header:
{   'part_size': '00000800 '
                 '00040000 '
                 '00040000 '
                 '00100000 '
                 '02000000 '
                 '00500000 '
                 '00f00000 '
                 '00a00000 '
                 '03c00000 '
                 '01e00000 '
                 '00000000 '
                 '00500000 '
                 '00c00000 '
                 '00500000 '
                 '00100000'}
P3X_FW_V01.11.0030_m0100.bin: Entry 0
{   'build_date': '2016-09-21',
    'crc32': '989B36D1',
    'dt_len': 9268800,
    'flag1': '00000000',
    'flag2': '00000000',
    'magic': 'A324EB90',
    'mem_addr': '0E600000',
    'padding': '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000',
    'version': '1.0'}
P3X_FW_V01.11.0030_m0100.bin: Extracting entry  0, pos      140, len  9268800 bytes
P3X_FW_V01.11.0030_m0100.bin: Entry  0 data checksum 989B36D1 matched OK
P3X_FW_V01.11.0030_m0100.bin: Entry  0 cummulative checksum D4C52AE1 matched OK
P3X_FW_V01.11.0030_m0100.bin: Entry 1
{   'build_date': '2016-09-21',
    'crc32': 'D97B99C4',
    'dt_len': 3889152,
    'flag1': '00000000',
    'flag2': '00000000',
    'magic': 'A324EB90',
    'mem_addr': '0FF00000',
    'padding': '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000',
    'version': '1.0'}
P3X_FW_V01.11.0030_m0100.bin: Extracting entry  1, pos  9269196, len  3889152 bytes
P3X_FW_V01.11.0030_m0100.bin: Entry  1 data checksum D97B99C4 matched OK
P3X_FW_V01.11.0030_m0100.bin: Entry  1 cummulative checksum 3651528E matched OK
P3X_FW_V01.11.0030_m0100.bin: Entry 2
{   'build_date': '2016-09-21',
    'crc32': 'C6DFEDAB',
    'dt_len': 11624448,
    'flag1': '00000001',
    'flag2': '00000000',
    'magic': 'A324EB90',
    'mem_addr': '03C00000',
    'padding': '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000',
    'version': '1.0'}
P3X_FW_V01.11.0030_m0100.bin: Extracting entry  2, pos 13158604, len 11624448 bytes
P3X_FW_V01.11.0030_m0100.bin: Entry  2 data checksum C6DFEDAB matched OK
P3X_FW_V01.11.0030_m0100.bin: Entry  2 cummulative checksum 87A3DCF3 matched OK
P3X_FW_V01.11.0030_m0100.bin: Entry 3
{   'build_date': '2016-09-21',
    'crc32': 'F6A51577',
    'dt_len': 5038608,
    'flag1': '00000000',
    'flag2': '00000000',
    'magic': 'A324EB90',
    'mem_addr': '00508000',
    'padding': '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000',
    'version': '1.0'}
P3X_FW_V01.11.0030_m0100.bin: Extracting entry  3, pos 24783308, len  5038608 bytes
P3X_FW_V01.11.0030_m0100.bin: Entry  3 data checksum F6A51577 matched OK
P3X_FW_V01.11.0030_m0100.bin: Entry  3 cummulative checksum 6155791D matched OK
P3X_FW_V01.11.0030_m0100.bin: Entry 4
{   'build_date': '2016-09-21',
    'crc32': '65014D0D',
    'dt_len': 27000832,
    'flag1': '00000000',
    'flag2': '00000000',
    'magic': 'A324EB90',
    'mem_addr': '00001000',
    'padding': '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000',
    'version': '1.0'}
P3X_FW_V01.11.0030_m0100.bin: Extracting entry  4, pos 29822172, len 27000832 bytes
P3X_FW_V01.11.0030_m0100.bin: Entry  4 data checksum 65014D0D matched OK
P3X_FW_V01.11.0030_m0100.bin: Entry  4 cummulative checksum 90B87999 matched OK
P3X_FW_V01.11.0030_m0100.bin: Total cummulative checksum 6F478666 matched OK
+ ./amba_sys2elf.py -vv -e -l 0x6000000 --section .ARM.exidx@0x464800:0 -p P3X_FW_V01.11.0030_m0100_part_sys.a9s
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Opening for conversion to ELF
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Opening P3X_FW_V01.11.0030_m0100_part_sys.a9h
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Memory base address set to 0x0e600000
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Searching for sections
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Set '.ARM.exidx' section at file pos 0x00464800, size 0x00000000
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Set '.text' section at file pos 0x00000000, size 0x00464800
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Set '.data' section at file pos 0x00464800, size 0x00472640
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Set '.bss' section at file pos 0x008d6e40, size 0x057291c0
P3X_FW_V01.11.0030_m0100_part_sys.a9s: ELF template 'amba_sys2elf_template.elf' copied to 'P3X_FW_V01.11.0030_m0100_part_sys.elf', 5140 bytes
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Section '.text' memory address set to 0x0e600000, alignment 0x40
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Section '.ARM.exidx' memory address set to 0x0ea64800, alignment 0x40
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Section '.data' memory address set to 0x0ea64800, alignment 0x40
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Section '.bss' memory address set to 0x0eed6e40, alignment 0x40
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Updating entry point and section headers
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Preparing ELF section '.text' from binary pos 0x00000000
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Preparing ELF section '.ARM.exidx' from binary pos 0x00464800
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Preparing ELF section '.data' from binary pos 0x00464800
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Preparing ELF section '.bss' from binary pos 0x008d6e40
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Writing changes to 'P3X_FW_V01.11.0030_m0100_part_sys.elf'
+ ./amba_sys_hardcoder.py -vvv -x -e P3X_FW_V01.11.0030_m0100_part_sys.elf
P3X_FW_V01.11.0030_m0100_part_sys.elf: Opening for extract
P3X_FW_V01.11.0030_m0100_part_sys.elf: Found section .text at 0xe600000
P3X_FW_V01.11.0030_m0100_part_sys.elf: Found section .data at 0xea64800
P3X_FW_V01.11.0030_m0100_part_sys.elf: Found section .arm_vfe_header at 0x000000
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress   1%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  10%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  20%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  30%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  40%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  50%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  61%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  70%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  81%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  90%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress 100%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Pattern of DjiMsgSettingsInit ver P3X_FW_V01.01 located at 0xe8682d8
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress   1%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  10%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  20%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  30%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  40%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  50%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  61%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  70%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  81%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  90%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress 100%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Pattern of DjiUstVideoQualitySetInner ver P3X_FW_V01.01 located at 0xe801994
P3X_FW_V01.11.0030_m0100_part_sys.elf: All expected functions were found
P3X_FW_V01.11.0030_m0100_part_sys.elf: Extracted 30 hardcoded values
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0100_part_sys.json 'og_hardcoded[.]p3x_ambarella[.][a-z_]*_authority_level' 1
+ JSONFILE=P3X_FW_V01.11.0030_m0100_part_sys.json
+ VALNAME='og_hardcoded[.]p3x_ambarella[.][a-z_]*_authority_level'
+ VALSET=1
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]p3x_ambarella[.][a-z_]*_authority_level"\)$/\11\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0100_part_sys.json
+ ./amba_sys_hardcoder.py -vvv -u -e P3X_FW_V01.11.0030_m0100_part_sys.elf
P3X_FW_V01.11.0030_m0100_part_sys.elf: Opening for update
P3X_FW_V01.11.0030_m0100_part_sys.elf: Found section .text at 0xe600000
P3X_FW_V01.11.0030_m0100_part_sys.elf: Found section .data at 0xea64800
P3X_FW_V01.11.0030_m0100_part_sys.elf: Found section .arm_vfe_header at 0x000000
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress   1%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  10%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  20%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  30%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  40%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  50%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  61%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  70%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  81%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  90%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress 100%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Pattern of DjiMsgSettingsInit ver P3X_FW_V01.01 located at 0xe8682d8
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress   1%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  10%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  20%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  30%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  40%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  50%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  61%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  70%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  81%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  90%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress 100%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Pattern of DjiUstVideoQualitySetInner ver P3X_FW_V01.01 located at 0xe801994
P3X_FW_V01.11.0030_m0100_part_sys.elf: All expected functions were found
Making code re: mov r0, #(?P<encrypt_query_fail_authority_level>[0-9a-fx]+)
Compiling code: mov r0, #0x1
At 0xe86838c, replacing 0000a0e3 -> 0100a0e3 to set encrypt_query_fail_authority_level
Making code re: mov r0, #(?P<verify_state_good_authority_level>[0-9a-fx]+)
Compiling code: mov r0, #0x1
Making code re: mov r0, #(?P<verify_state_bad_authority_level>[0-9a-fx]+)
Compiling code: mov r0, #0x1
At 0xe8683b8, replacing 0000a0e3 -> 0100a0e3 to set verify_state_bad_authority_level
P3X_FW_V01.11.0030_m0100_part_sys.elf: Updated 2 out of 30 hardcoded values
+ arm-none-eabi-objcopy -O binary P3X_FW_V01.11.0030_m0100_part_sys.elf P3X_FW_V01.11.0030_m0100_part_sys.a9s
+ ./amba_fwpak.py -vvv -a -m P3X_FW_V01.11.0030_m0100.bin
P3X_FW_V01.11.0030_m0100.bin: Opening for creation
P3X_FW_V01.11.0030_m0100.bin: Entry  0 checksum 4D94C3F7
P3X_FW_V01.11.0030_m0100.bin: Entry  1 checksum D97B99C4
P3X_FW_V01.11.0030_m0100.bin: Entry  2 checksum C6DFEDAB
P3X_FW_V01.11.0030_m0100.bin: Entry  3 checksum F6A51577
P3X_FW_V01.11.0030_m0100.bin: Entry  4 checksum 65014D0D
P3X_FW_V01.11.0030_m0100.bin: Recomputing checksums
P3X_FW_V01.11.0030_m0100.bin: Total cummulative checksum 7C73BBA1
+ set +x
### OK: Amount of changes in bin file, 30, is reasonable. ###
### SUCCESS: Binary file changes are within acceptable limits. ###
+ openssl des3 -md md5 -d -k Dji123456 -in P3X_FW_V01.11.0030_m0800.bin -out P3X_FW_V01.11.0030_m0800_decrypted.tar.gz
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
+ tar -zxf P3X_FW_V01.11.0030_m0800_decrypted.tar.gz
+ cp ./dji/bin/encode_usb ./P3X_FW_V01.11.0030_m0800-encode_usb.elf
+ cp ./P3X_FW_V01.11.0030_m0800-encode_usb.elf ./P3X_FW_V01.11.0030_m0800-encode_usb.orig.elf
+ ./dm3xx_encode_usb_hardcoder.py -vv -x -e P3X_FW_V01.11.0030_m0800-encode_usb.elf
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Opening for extract
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress   9%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  19%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  29%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  40%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  52%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  62%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  73%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  83%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  93%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress 100%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Pattern of encryptThrFxn-original ver P3X_FW_V01.07 located at 0xf2ec
Found pre-determined address of encryptThrFxn at 0x00f2ec
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  11%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  21%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  32%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  42%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  52%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  62%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  73%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  83%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  93%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress 100%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Pattern of encryptThrFxn-encpass ver P3X_FW_V01.07 was not found; closest was 8 lines at 0xf2ec
Found pre-determined address of Encrypt_Request at 0x0172a4
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  16%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  26%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  36%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  47%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  56%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  66%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  77%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  88%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  97%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress 100%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Pattern of Encrypt_Request ver P3X_FW_V01.07 located at 0x172a4
P3X_FW_V01.11.0030_m0800-encode_usb.elf: All expected functions were found
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Extracted 1 hardcoded values
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0800-encode_usb.json 'og_hardcoded[.]p3x_dm3xx[.]startup_encrypt_check_always_pass' 1
+ JSONFILE=P3X_FW_V01.11.0030_m0800-encode_usb.json
+ VALNAME='og_hardcoded[.]p3x_dm3xx[.]startup_encrypt_check_always_pass'
+ VALSET=1
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]p3x_dm3xx[.]startup_encrypt_check_always_pass"\)$/\11\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0800-encode_usb.json
+ ./dm3xx_encode_usb_hardcoder.py -vv -u -e P3X_FW_V01.11.0030_m0800-encode_usb.elf
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Opening for update
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress   9%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  19%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  29%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  40%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  52%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  62%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  73%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  83%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  93%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress 100%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Pattern of encryptThrFxn-original ver P3X_FW_V01.07 located at 0xf2ec
Found pre-determined address of encryptThrFxn at 0x00f2ec
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  11%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  21%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  32%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  42%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  52%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  62%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  73%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  83%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  93%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress 100%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Pattern of encryptThrFxn-encpass ver P3X_FW_V01.07 was not found; closest was 8 lines at 0xf2ec
Found pre-determined address of Encrypt_Request at 0x0172a4
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  16%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  26%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  36%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  47%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  56%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  66%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  77%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  88%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  97%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress 100%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Pattern of Encrypt_Request ver P3X_FW_V01.07 located at 0x172a4
P3X_FW_V01.11.0030_m0800-encode_usb.elf: All expected functions were found
At 0x00f30c, replacing 0030a0e108300be508301be5000053e30200001a0100a0e3 -> 0130a0e308009fe50030c0e5000053e3020000eaf0ef1400 to set startup_encrypt_check_always_pass
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Updated 1 out of 1 hardcoded values
+ cp -f ./P3X_FW_V01.11.0030_m0800-encode_usb.elf ./dji/bin/encode_usb
+ tar -zcf P3X_FW_V01.11.0030_m0800_decrypted.tar.gz ./dji
+ rm -rf ./dji
+ openssl des3 -md md5 -e -k Dji123456 -in P3X_FW_V01.11.0030_m0800_decrypted.tar.gz -out P3X_FW_V01.11.0030_m0800.bin
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
+ set +x
### OK: Amount of changes in bin file, 11, is reasonable. ###
### SUCCESS: Binary file changes are within acceptable limits. ###
+ cp P3X_FW_V01.11.0030_m0306.bin P3X_FW_V01.11.0030_m0306.orig.bin
+ ./arm_bin2elf.py -vvv -e -b 0x8020000 --section .ARM.exidx@0x085d34:0 --section .bss@0x07fe0000:0xA000 --section .bss2@0x17fe0000:0x30000 --section .bss3@0x37fe0000:0x30000 -p P3X_FW_V01.11.0030_m0306.bin
P3X_FW_V01.11.0030_m0306.bin: Opening for conversion to ELF
P3X_FW_V01.11.0030_m0306.bin: Memory base address set to 0x08020000
P3X_FW_V01.11.0030_m0306.bin: Searching for sections
P3X_FW_V01.11.0030_m0306.bin: Set '.ARM.exidx' section at file pos 0x00085d34, size 0x00000000
P3X_FW_V01.11.0030_m0306.bin: Set '.text' section at file pos 0x00000000, size 0x00085d34
P3X_FW_V01.11.0030_m0306.bin: Set '.data' section at file pos 0x00085d34, size 0x000574cc
P3X_FW_V01.11.0030_m0306.bin: Set '.bss' section at file pos 0x07fe0000, size 0x0000a000
P3X_FW_V01.11.0030_m0306.bin: ELF template 'arm_bin2elf_template.elf' copied to 'P3X_FW_V01.11.0030_m0306.elf', 5140 bytes
P3X_FW_V01.11.0030_m0306.bin: Section '.text' memory address set to 0x08020000, alignment 0x20
P3X_FW_V01.11.0030_m0306.bin: Section '.ARM.exidx' memory address set to 0x080a5d34, alignment 0x04
P3X_FW_V01.11.0030_m0306.bin: Section '.data' memory address set to 0x080a5d34, alignment 0x04
P3X_FW_V01.11.0030_m0306.bin: Section '.bss' memory address set to 0x10000000, alignment 0x20
P3X_FW_V01.11.0030_m0306.bin: Section '.bss2' memory address set to 0x20000000, alignment 0x20
P3X_FW_V01.11.0030_m0306.bin: Section '.bss3' memory address set to 0x40000000, alignment 0x20
P3X_FW_V01.11.0030_m0306.bin: Updating entry point and section headers
P3X_FW_V01.11.0030_m0306.bin: Preparing ELF section '.text' from binary pos 0x00000000
P3X_FW_V01.11.0030_m0306.bin: Updating section '.text' and shifting subsequent sections
P3X_FW_V01.11.0030_m0306.bin: Preparing ELF section '.ARM.exidx' from binary pos 0x00085d34
P3X_FW_V01.11.0030_m0306.bin: Updating section '.ARM.exidx' and shifting subsequent sections
P3X_FW_V01.11.0030_m0306.bin: Preparing ELF section '.data' from binary pos 0x00085d34
P3X_FW_V01.11.0030_m0306.bin: Updating section '.data' and shifting subsequent sections
P3X_FW_V01.11.0030_m0306.bin: Preparing ELF section '.bss' from binary pos 0x07fe0000
P3X_FW_V01.11.0030_m0306.bin: Updating section '.bss' and shifting subsequent sections
P3X_FW_V01.11.0030_m0306.bin: Preparing ELF section '.bss2' from binary pos 0x17fe0000
P3X_FW_V01.11.0030_m0306.bin: Updating section '.bss2' and shifting subsequent sections
P3X_FW_V01.11.0030_m0306.bin: Preparing ELF section '.bss3' from binary pos 0x37fe0000
P3X_FW_V01.11.0030_m0306.bin: Updating section '.bss3' and shifting subsequent sections
P3X_FW_V01.11.0030_m0306.bin: Writing changes to 'P3X_FW_V01.11.0030_m0306.elf'
+ ./dji_flyc_hardcoder.py -vvv -x -e P3X_FW_V01.11.0030_m0306.elf
P3X_FW_V01.11.0030_m0306.elf: Opening for extract
P3X_FW_V01.11.0030_m0306.elf: Found section .text at 0x8020000
P3X_FW_V01.11.0030_m0306.elf: Found section .data at 0x80a5d34
P3X_FW_V01.11.0030_m0306.elf: Found section .arm_vfe_header at 0x000000
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  25%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  40%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  52%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  64%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  76%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  88%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of wp_check_input_mission_validity ver P3X_FW_V01.05.0030 located at 0x8065790
Found pre-determined address of wp_check_input_mission_validity at 0x8065790
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver wm330_0306_v03.01.10.93, progress  63%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver wm330_0306_v03.01.10.93, progress  75%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver wm330_0306_v03.01.10.93, progress  87%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver wm330_0306_v03.01.10.93, progress  99%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of wp_check_input_mission_validity ver wm330_0306_v03.01.10.93 was not found; closest was 4 lines at 0x806b608
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  60%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  72%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  84%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  96%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of wp_mission_data_verify ver P3X_FW_V01.05.0030 located at 0x8065a54
Found pre-determined address of wp_mission_data_verify at 0x8065a54
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver wm330_0306_v03.01.10.93, progress  64%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver wm330_0306_v03.01.10.93, progress  76%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver wm330_0306_v03.01.10.93, progress  88%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of wp_mission_data_verify ver wm330_0306_v03.01.10.93 was not found; closest was 3 lines at 0x8065a54
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress  18%
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress  54%
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress  91%
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of firmware_release_marking ver wm330_0306_v03.01.10.93 located at 0x80fcc16
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  25%
Variable 'log_printf_debug' defined but not used within matched regex
Variable 'loc_51089E' defined but not used within matched regex
Variable 'loc_5108A2' defined but not used within matched regex
Variable 'cstr_dji_demo_lala_haha' defined but not used within matched regex
Variable 'cstr_dji_sdk_set_key_val' defined but not used within matched regex
Variable 'cstr_req_real' defined but not used within matched regex
Variable 'cstr_sdk_version_error' defined but not used within matched regex
Variable 'unkval_4350' defined but not used within matched regex
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  37%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  49%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  85%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  97%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of check_activation_authority ver wm330_0306_v03.01.10.93 located at 0x8046e86
Found pre-determined address of check_activation_authority at 0x8046e86
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress  41%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress  53%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress  65%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress  78%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress  90%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of check_activation_authority ver wm220_0306_v03.01.10.93 was not found; closest was 2 lines at 0x8047822
Found pre-determined address of check_activation_authority at 0x8046e86
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress  41%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress  53%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress  65%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress  78%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress  90%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of check_activation_authority ver wm220_0306_v03.02.13.12 was not found; closest was 3 lines at 0x8046e86
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  60%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  71%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  84%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  96%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of system_init ver P3X_FW_V01.07.0060 was not found; closest was 16 lines at 0x80203fc
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  25%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  37%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  49%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  86%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  98%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of imu_init ver wm330_0306_v03.01.10.93 was not found; closest was 1 lines at 0x802051c
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  25%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  37%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  49%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  86%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  98%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of imu_init ver wm220_0306_v03.01.10.93 was not found; closest was 1 lines at 0x802051c
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  87%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of navi_init ver wm330_0306_v03.01.10.93 was not found; closest was 1 lines at 0x8020d38
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  87%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of navi_init ver wm220_0306_v03.01.10.93 was not found; closest was 1 lines at 0x8020d38
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  60%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  71%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  84%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  96%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of init_config_table_version ver wm330_0306_v03.01.10.93 was not found; closest was 3 lines at 0x8087d08
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  60%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  72%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  84%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  96%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of init_config_table_version ver wm220_0306_v03.01.10.93 was not found; closest was 1 lines at 0x802023a
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  25%
Variable 'byte_20435FE2' defined but not used within matched regex
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  40%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  52%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  64%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  76%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  88%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of log_version_info ver P3X_FW_V01.07.0060 located at 0x804753c
Found pre-determined address of log_version_info at 0x804753c
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress  42%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress  56%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress  69%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress  81%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress  94%The hal_push_mc_version requires pre-determined address from previously found functions; no such address exists
The hal_push_mc_version requires pre-determined address from previously found functions; no such address exists
The pvstru_D61C requires pre-determined address from previously found functions; no such address exists

P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of log_version_info ver wm330_0306_v03.01.10.93 was not found; closest was 2 lines at 0x8077f36
Found pre-determined address of log_version_info at 0x804753c
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress  41%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress  53%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress  65%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress  78%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress  90%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of log_version_info ver wm220_0306_v03.01.10.93 was not found; closest was 1 lines at 0x8047680
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  25%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  39%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  51%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  63%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  76%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  88%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of version_check_sub1 ver wm330_0306_v03.01.10.93 was not found; closest was 2 lines at 0x809f2b4
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  25%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  37%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  49%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  85%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  97%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of version_check ver wm330_0306_v03.01.10.93 was not found; closest was 3 lines at 0x8026a2a
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'system_init' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'imu_init' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'hal_push_mc_version' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'navi_init' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'init_config_table_version' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'version_check_sub1' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'version_check' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'pvstru_D61C' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: From expacted functions, 8 were not found
P3X_FW_V01.11.0030_m0306.elf: Extracted 7 hardcoded values
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0306.json 'og_hardcoded[.]flyc[.]min_alt_below_home' -800.0
+ JSONFILE=P3X_FW_V01.11.0030_m0306.json
+ VALNAME='og_hardcoded[.]flyc[.]min_alt_below_home'
+ VALSET=-800.0
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]flyc[.]min_alt_below_home"\)$/\1-800.0\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0306.json
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0306.json 'og_hardcoded[.]flyc[.]max_alt_above_home' 4000.0
+ JSONFILE=P3X_FW_V01.11.0030_m0306.json
+ VALNAME='og_hardcoded[.]flyc[.]max_alt_above_home'
+ VALSET=4000.0
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]flyc[.]max_alt_above_home"\)$/\14000.0\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0306.json
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0306.json 'og_hardcoded[.]flyc[.]max_wp_dist_to_home' 6000.0
+ JSONFILE=P3X_FW_V01.11.0030_m0306.json
+ VALNAME='og_hardcoded[.]flyc[.]max_wp_dist_to_home'
+ VALSET=6000.0
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]flyc[.]max_wp_dist_to_home"\)$/\16000.0\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0306.json
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0306.json 'og_hardcoded[.]flyc[.]max_mission_path_len' 40000.0
+ JSONFILE=P3X_FW_V01.11.0030_m0306.json
+ VALNAME='og_hardcoded[.]flyc[.]max_mission_path_len'
+ VALSET=40000.0
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]flyc[.]max_mission_path_len"\)$/\140000.0\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0306.json
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0306.json 'og_hardcoded[.]flyc[.]max_speed_pos' 25.0
+ JSONFILE=P3X_FW_V01.11.0030_m0306.json
+ VALNAME='og_hardcoded[.]flyc[.]max_speed_pos'
+ VALSET=25.0
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]flyc[.]max_speed_pos"\)$/\125.0\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0306.json
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0306.json 'og_hardcoded[.]flyc[.]max_speed_neg' -25.0
+ JSONFILE=P3X_FW_V01.11.0030_m0306.json
+ VALNAME='og_hardcoded[.]flyc[.]max_speed_neg'
+ VALSET=-25.0
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]flyc[.]max_speed_neg"\)$/\1-25.0\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0306.json
+ ./dji_flyc_hardcoder.py -vvv -u -e P3X_FW_V01.11.0030_m0306.elf
P3X_FW_V01.11.0030_m0306.elf: Opening for update
P3X_FW_V01.11.0030_m0306.elf: Found section .text at 0x8020000
P3X_FW_V01.11.0030_m0306.elf: Found section .data at 0x80a5d34
P3X_FW_V01.11.0030_m0306.elf: Found section .arm_vfe_header at 0x000000
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  25%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  40%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  52%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  64%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  76%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  88%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of wp_check_input_mission_validity ver P3X_FW_V01.05.0030 located at 0x8065790
Found pre-determined address of wp_check_input_mission_validity at 0x8065790
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver wm330_0306_v03.01.10.93, progress  63%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver wm330_0306_v03.01.10.93, progress  75%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver wm330_0306_v03.01.10.93, progress  87%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver wm330_0306_v03.01.10.93, progress  99%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of wp_check_input_mission_validity ver wm330_0306_v03.01.10.93 was not found; closest was 4 lines at 0x806b608
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  60%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  72%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  84%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  96%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of wp_mission_data_verify ver P3X_FW_V01.05.0030 located at 0x8065a54
Found pre-determined address of wp_mission_data_verify at 0x8065a54
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver wm330_0306_v03.01.10.93, progress  64%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver wm330_0306_v03.01.10.93, progress  76%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver wm330_0306_v03.01.10.93, progress  88%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of wp_mission_data_verify ver wm330_0306_v03.01.10.93 was not found; closest was 3 lines at 0x8065a54
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress  18%
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress  54%
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress  91%
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of firmware_release_marking ver wm330_0306_v03.01.10.93 located at 0x80fcc16
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  25%
Variable 'log_printf_debug' defined but not used within matched regex
Variable 'loc_51089E' defined but not used within matched regex
Variable 'loc_5108A2' defined but not used within matched regex
Variable 'cstr_dji_demo_lala_haha' defined but not used within matched regex
Variable 'cstr_dji_sdk_set_key_val' defined but not used within matched regex
Variable 'cstr_req_real' defined but not used within matched regex
Variable 'cstr_sdk_version_error' defined but not used within matched regex
Variable 'unkval_4350' defined but not used within matched regex
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  37%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  49%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  85%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  97%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of check_activation_authority ver wm330_0306_v03.01.10.93 located at 0x8046e86
Found pre-determined address of check_activation_authority at 0x8046e86
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress  41%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress  53%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress  65%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress  78%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress  90%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of check_activation_authority ver wm220_0306_v03.01.10.93 was not found; closest was 2 lines at 0x8047822
Found pre-determined address of check_activation_authority at 0x8046e86
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress  41%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress  53%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress  65%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress  78%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress  90%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of check_activation_authority ver wm220_0306_v03.02.13.12 was not found; closest was 3 lines at 0x8046e86
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  60%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  71%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  84%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  96%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of system_init ver P3X_FW_V01.07.0060 was not found; closest was 16 lines at 0x80203fc
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  25%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  37%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  49%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  86%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  98%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of imu_init ver wm330_0306_v03.01.10.93 was not found; closest was 1 lines at 0x802051c
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  25%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  37%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  49%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  86%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  98%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of imu_init ver wm220_0306_v03.01.10.93 was not found; closest was 1 lines at 0x802051c
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  87%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of navi_init ver wm330_0306_v03.01.10.93 was not found; closest was 1 lines at 0x8020d38
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  87%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of navi_init ver wm220_0306_v03.01.10.93 was not found; closest was 1 lines at 0x8020d38
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  60%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  71%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  84%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  96%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of init_config_table_version ver wm330_0306_v03.01.10.93 was not found; closest was 3 lines at 0x8087d08
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  60%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  72%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  84%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  96%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of init_config_table_version ver wm220_0306_v03.01.10.93 was not found; closest was 1 lines at 0x802023a
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  25%
Variable 'byte_20435FE2' defined but not used within matched regex
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  40%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  52%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  64%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  76%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  88%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of log_version_info ver P3X_FW_V01.07.0060 located at 0x804753c
Found pre-determined address of log_version_info at 0x804753c
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress  42%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress  56%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress  69%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress  81%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress  94%The hal_push_mc_version requires pre-determined address from previously found functions; no such address exists
The hal_push_mc_version requires pre-determined address from previously found functions; no such address exists
The pvstru_D61C requires pre-determined address from previously found functions; no such address exists

P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of log_version_info ver wm330_0306_v03.01.10.93 was not found; closest was 2 lines at 0x8077f36
Found pre-determined address of log_version_info at 0x804753c
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress  41%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress  53%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress  65%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress  78%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress  90%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of log_version_info ver wm220_0306_v03.01.10.93 was not found; closest was 1 lines at 0x8047680
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  25%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  39%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  51%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  63%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  76%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  88%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of version_check_sub1 ver wm330_0306_v03.01.10.93 was not found; closest was 2 lines at 0x809f2b4
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  25%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  37%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  49%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  85%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  97%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of version_check ver wm330_0306_v03.01.10.93 was not found; closest was 3 lines at 0x8026a2a
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'system_init' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'imu_init' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'hal_push_mc_version' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'navi_init' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'init_config_table_version' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'version_check_sub1' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'version_check' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'pvstru_D61C' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: From expacted functions, 8 were not found
At 0x8065b88, replacing 000048c3 -> 000048c4 to set min_alt_below_home
At 0x80660c0, replacing 000048c3 -> 000048c4 to set min_alt_below_home_inst2
At 0x8065b8c, replacing 00007a44 -> 00007a45 to set max_alt_above_home
At 0x80660c4, replacing 00007a44 -> 00007a45 to set max_alt_above_home_inst2
At 0x8065bd4, replacing 0000fa44 -> 0080bb45 to set max_wp_dist_to_home
At 0x8065c50, replacing 0060ea46 -> 00401c47 to set max_mission_path_len
At 0x8065ca0, replacing 00007041 -> 0000c841 to set max_speed_pos
At 0x8065ca4, replacing 000070c1 -> 0000c8c1 to set max_speed_neg
Making code re: dcb "(?P<firmware_version>[0-9][0-9][.][0-9][0-9][.][0-9][0-9][.][0-9][0-9])"
Compiling code: dcb "02.04.10.00"
P3X_FW_V01.11.0030_m0306.elf: Updated 6 out of 7 hardcoded values
+ arm-none-eabi-objcopy -O binary P3X_FW_V01.11.0030_m0306.elf P3X_FW_V01.11.0030_m0306.bin
+ set +x
### OK: Amount of changes in bin file, 12, is reasonable. ###
### SUCCESS: Binary file changes are within acceptable limits. ###
+ cp P3X_FW_V01.11.0030_m0900.bin P3X_FW_V01.11.0030_m0900.orig.bin
+ ./arm_bin2elf.py -vvv -e -b 0x8008000 --section .ARM.exidx@0x0D500:0 --section .bss@0x17FF7700:0x5A00 --section .bss2@0x37ff8000:0x6700 --section .bss3@0x38008000:0x5500 --section .bss4@0x38018000:0x2200 --section .bss5@0x3a1f8000:0x100 --section .bss6@0x3a418000:0x500 -p P3X_FW_V01.11.0030_m0900.bin
P3X_FW_V01.11.0030_m0900.bin: Opening for conversion to ELF
P3X_FW_V01.11.0030_m0900.bin: Memory base address set to 0x08008000
P3X_FW_V01.11.0030_m0900.bin: Searching for sections
P3X_FW_V01.11.0030_m0900.bin: Set '.ARM.exidx' section at file pos 0x0000d500, size 0x00000000
P3X_FW_V01.11.0030_m0900.bin: Set '.text' section at file pos 0x00000000, size 0x0000d500
P3X_FW_V01.11.0030_m0900.bin: Set '.data' section at file pos 0x0000d500, size 0x00005314
P3X_FW_V01.11.0030_m0900.bin: Set '.bss' section at file pos 0x17ff7700, size 0x00005a00
P3X_FW_V01.11.0030_m0900.bin: ELF template 'arm_bin2elf_template.elf' copied to 'P3X_FW_V01.11.0030_m0900.elf', 5140 bytes
P3X_FW_V01.11.0030_m0900.bin: Section '.text' memory address set to 0x08008000, alignment 0x20
P3X_FW_V01.11.0030_m0900.bin: Section '.ARM.exidx' memory address set to 0x08015500, alignment 0x20
P3X_FW_V01.11.0030_m0900.bin: Section '.data' memory address set to 0x08015500, alignment 0x20
P3X_FW_V01.11.0030_m0900.bin: Section '.bss' memory address set to 0x1ffff700, alignment 0x20
P3X_FW_V01.11.0030_m0900.bin: Section '.bss2' memory address set to 0x40000000, alignment 0x20
P3X_FW_V01.11.0030_m0900.bin: Section '.bss3' memory address set to 0x40010000, alignment 0x20
P3X_FW_V01.11.0030_m0900.bin: Section '.bss4' memory address set to 0x40020000, alignment 0x20
P3X_FW_V01.11.0030_m0900.bin: Section '.bss5' memory address set to 0x42200000, alignment 0x20
P3X_FW_V01.11.0030_m0900.bin: Section '.bss6' memory address set to 0x42420000, alignment 0x20
P3X_FW_V01.11.0030_m0900.bin: Updating entry point and section headers
P3X_FW_V01.11.0030_m0900.bin: Preparing ELF section '.text' from binary pos 0x00000000
P3X_FW_V01.11.0030_m0900.bin: Updating section '.text' and shifting subsequent sections
P3X_FW_V01.11.0030_m0900.bin: Preparing ELF section '.ARM.exidx' from binary pos 0x0000d500
P3X_FW_V01.11.0030_m0900.bin: Updating section '.ARM.exidx' and shifting subsequent sections
P3X_FW_V01.11.0030_m0900.bin: Preparing ELF section '.data' from binary pos 0x0000d500
P3X_FW_V01.11.0030_m0900.bin: Updating section '.data' and shifting subsequent sections
P3X_FW_V01.11.0030_m0900.bin: Preparing ELF section '.bss' from binary pos 0x17ff7700
P3X_FW_V01.11.0030_m0900.bin: Updating section '.bss' and shifting subsequent sections
P3X_FW_V01.11.0030_m0900.bin: Preparing ELF section '.bss2' from binary pos 0x37ff8000
P3X_FW_V01.11.0030_m0900.bin: Updating section '.bss2' and shifting subsequent sections
P3X_FW_V01.11.0030_m0900.bin: Preparing ELF section '.bss3' from binary pos 0x38008000
P3X_FW_V01.11.0030_m0900.bin: Updating section '.bss3' and shifting subsequent sections
P3X_FW_V01.11.0030_m0900.bin: Preparing ELF section '.bss4' from binary pos 0x38018000
P3X_FW_V01.11.0030_m0900.bin: Updating section '.bss4' and shifting subsequent sections
P3X_FW_V01.11.0030_m0900.bin: Preparing ELF section '.bss5' from binary pos 0x3a1f8000
P3X_FW_V01.11.0030_m0900.bin: Updating section '.bss5' and shifting subsequent sections
P3X_FW_V01.11.0030_m0900.bin: Preparing ELF section '.bss6' from binary pos 0x3a418000
P3X_FW_V01.11.0030_m0900.bin: Updating section '.bss6' and shifting subsequent sections
P3X_FW_V01.11.0030_m0900.bin: Writing changes to 'P3X_FW_V01.11.0030_m0900.elf'
+ ./lightbridge_stm32_hardcoder.py -vvv -x -e P3X_FW_V01.11.0030_m0900.elf
P3X_FW_V01.11.0030_m0900.elf: Opening for extract
P3X_FW_V01.11.0030_m0900.elf: Found section .text at 0x8008000
P3X_FW_V01.11.0030_m0900.elf: Found section .data at 0x8015500
P3X_FW_V01.11.0030_m0900.elf: Found section .arm_vfe_header at 0x000000
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set09_cmd12-original ver P3X_FW_V01.07, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set09_cmd12-original ver P3X_FW_V01.07 located at 0x80121b4
Found pre-determined address of cmd_exec_set09_cmd12 at 0x80121b4
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set09_cmd12-constatt ver P3X_FW_V01.07, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set09_cmd12-constatt ver P3X_FW_V01.07 was not found; closest was 21 lines at 0x80121b4
Found pre-determined address of cmd_exec_set09_cmd12 at 0x80121b4
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set09_cmd12-original ver C1_FW_V01.04-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set09_cmd12-original ver C1_FW_V01.04-m1400 was not found; closest was 15 lines at 0x80121b4
Found pre-determined address of cmd_exec_set09_cmd12 at 0x80121b4
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set09_cmd12-constatt ver C1_FW_V01.04-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set09_cmd12-constatt ver C1_FW_V01.04-m1400 was not found; closest was 15 lines at 0x80121b4
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver P3X_FW_V01.01, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver P3X_FW_V01.01 was not found; closest was 2 lines at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver P3X_FW_V01.05, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver P3X_FW_V01.05 was not found; closest was 2 lines at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver P3X_FW_V01.08, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver P3X_FW_V01.08 located at 0x800d7c6
Found pre-determined address of init_fpga_config at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver P3X_FW_V01.03-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver P3X_FW_V01.03-m1400 was not found; closest was 1 lines at 0x800d7c6
Found pre-determined address of init_fpga_config at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver C1_FW_V01.05-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver C1_FW_V01.05-m1400 was not found; closest was 3 lines at 0x8013560
Found pre-determined address of init_fpga_config at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver C1_FW_V01.05-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver C1_FW_V01.05-m1401 was not found; closest was 2 lines at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver P3X_FW_V01.04, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver P3X_FW_V01.04 was not found; closest was 2 lines at 0x800cf4c
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver P3X_FW_V01.05, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver P3X_FW_V01.05 was not found; closest was 2 lines at 0x800cf4c
Variable 'ofdm_receiver_id' defined but not used within matched regex
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver P3X_FW_V01.08, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver P3X_FW_V01.08 located at 0x800f0bc
Found pre-determined address of tcx_config_update1 at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver C1_FW_V01.03-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver C1_FW_V01.03-m1400 was not found; closest was 2 lines at 0x800f0bc
Found pre-determined address of tcx_config_update1 at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver C1_FW_V01.05-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver C1_FW_V01.05-m1400 was not found; closest was 1 lines at 0x800f0bc
Found pre-determined address of tcx_config_update1 at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver C1_FW_V01.06-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver C1_FW_V01.06-m1400 was not found; closest was 1 lines at 0x800f0bc
Found pre-determined address of tcx_config_update1 at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver C1_FW_V01.05-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver C1_FW_V01.05-m1401 was not found; closest was 1 lines at 0x800f0bc
Found pre-determined address of tcx_config_update1 at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver C1_FW_V01.06-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver C1_FW_V01.06-m1401 was not found; closest was 1 lines at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_power_zone ver P3X_FW_V01.08, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_power_zone ver P3X_FW_V01.08 located at 0x800fdc2
P3X_FW_V01.11.0030_m0900.elf: Search for update_tcx_power_zone_flag-original ver C1_FW_V01.05-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of update_tcx_power_zone_flag-original ver C1_FW_V01.05-m1400 was not found; closest was 2 lines at 0x8009842
P3X_FW_V01.11.0030_m0900.elf: Search for update_tcx_power_zone_flag-setfcc ver C1_FW_V01.05-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of update_tcx_power_zone_flag-setfcc ver C1_FW_V01.05-m1400 was not found; closest was 2 lines at 0x8009842
P3X_FW_V01.11.0030_m0900.elf: Search for update_tcx_power_zone_flag-original ver C1_FW_V01.05-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of update_tcx_power_zone_flag-original ver C1_FW_V01.05-m1401 was not found; closest was 1 lines at 0x8009038
P3X_FW_V01.11.0030_m0900.elf: Search for update_tcx_power_zone_flag-setfcc ver C1_FW_V01.05-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of update_tcx_power_zone_flag-setfcc ver C1_FW_V01.05-m1401 was not found; closest was 1 lines at 0x8009038
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set00_cmd01b ver P3X_FW_V01.04, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set00_cmd01b ver P3X_FW_V01.04 was not found; closest was 5 lines at 0x8012122
Variable 'regB' defined but not used within matched regex
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set00_cmd01b ver P3X_FW_V01.08, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set00_cmd01b ver P3X_FW_V01.08 located at 0x801226e
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set00_cmd01 ver C1_FW_V01.04-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set00_cmd01 ver C1_FW_V01.04-m1400 was not found; closest was 1 lines at 0x80081a0
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set00_cmd01 ver C1_FW_V01.04-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set00_cmd01 ver C1_FW_V01.04-m1401 was not found; closest was 1 lines at 0x80081a0
P3X_FW_V01.11.0030_m0900.elf: Warning: No variant of function 'update_tcx_power_zone_flag-original' was found
P3X_FW_V01.11.0030_m0900.elf: Warning: No variant of function 'update_tcx_power_zone_flag-setfcc' was found
P3X_FW_V01.11.0030_m0900.elf: Warning: From expacted functions, 2 were not found
P3X_FW_V01.11.0030_m0900.elf: Extracted 23 hardcoded values
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0900.json 'og_hardcoded[.]lightbridge_stm32[.]packet_received_attenuation_override' 1
+ JSONFILE=P3X_FW_V01.11.0030_m0900.json
+ VALNAME='og_hardcoded[.]lightbridge_stm32[.]packet_received_attenuation_override'
+ VALSET=1
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]lightbridge_stm32[.]packet_received_attenuation_override"\)$/\11\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0900.json
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0900.json 'og_hardcoded[.]lightbridge_stm32[.]packet_received_attenuation_value' 0
+ JSONFILE=P3X_FW_V01.11.0030_m0900.json
+ VALNAME='og_hardcoded[.]lightbridge_stm32[.]packet_received_attenuation_value'
+ VALSET=0
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]lightbridge_stm32[.]packet_received_attenuation_value"\)$/\10\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0900.json
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0900.json 'og_hardcoded[.]lightbridge_stm32[.]board_[a-z0-9]*_attenuation_[a-z0-9]*_[a-z0-9]*' 0
+ JSONFILE=P3X_FW_V01.11.0030_m0900.json
+ VALNAME='og_hardcoded[.]lightbridge_stm32[.]board_[a-z0-9]*_attenuation_[a-z0-9]*_[a-z0-9]*'
+ VALSET=0
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]lightbridge_stm32[.]board_[a-z0-9]*_attenuation_[a-z0-9]*_[a-z0-9]*"\)$/\10\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0900.json
+ ./lightbridge_stm32_hardcoder.py -vvv -u -e P3X_FW_V01.11.0030_m0900.elf
P3X_FW_V01.11.0030_m0900.elf: Opening for update
P3X_FW_V01.11.0030_m0900.elf: Found section .text at 0x8008000
P3X_FW_V01.11.0030_m0900.elf: Found section .data at 0x8015500
P3X_FW_V01.11.0030_m0900.elf: Found section .arm_vfe_header at 0x000000
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set09_cmd12-original ver P3X_FW_V01.07, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set09_cmd12-original ver P3X_FW_V01.07 located at 0x80121b4
Found pre-determined address of cmd_exec_set09_cmd12 at 0x80121b4
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set09_cmd12-constatt ver P3X_FW_V01.07, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set09_cmd12-constatt ver P3X_FW_V01.07 was not found; closest was 21 lines at 0x80121b4
Found pre-determined address of cmd_exec_set09_cmd12 at 0x80121b4
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set09_cmd12-original ver C1_FW_V01.04-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set09_cmd12-original ver C1_FW_V01.04-m1400 was not found; closest was 15 lines at 0x80121b4
Found pre-determined address of cmd_exec_set09_cmd12 at 0x80121b4
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set09_cmd12-constatt ver C1_FW_V01.04-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set09_cmd12-constatt ver C1_FW_V01.04-m1400 was not found; closest was 15 lines at 0x80121b4
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver P3X_FW_V01.01, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver P3X_FW_V01.01 was not found; closest was 2 lines at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver P3X_FW_V01.05, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver P3X_FW_V01.05 was not found; closest was 2 lines at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver P3X_FW_V01.08, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver P3X_FW_V01.08 located at 0x800d7c6
Found pre-determined address of init_fpga_config at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver P3X_FW_V01.03-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver P3X_FW_V01.03-m1400 was not found; closest was 1 lines at 0x800d7c6
Found pre-determined address of init_fpga_config at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver C1_FW_V01.05-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver C1_FW_V01.05-m1400 was not found; closest was 3 lines at 0x8013560
Found pre-determined address of init_fpga_config at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver C1_FW_V01.05-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver C1_FW_V01.05-m1401 was not found; closest was 2 lines at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver P3X_FW_V01.04, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver P3X_FW_V01.04 was not found; closest was 2 lines at 0x800cf4c
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver P3X_FW_V01.05, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver P3X_FW_V01.05 was not found; closest was 2 lines at 0x800cf4c
Variable 'ofdm_receiver_id' defined but not used within matched regex
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver P3X_FW_V01.08, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver P3X_FW_V01.08 located at 0x800f0bc
Found pre-determined address of tcx_config_update1 at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver C1_FW_V01.03-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver C1_FW_V01.03-m1400 was not found; closest was 2 lines at 0x800f0bc
Found pre-determined address of tcx_config_update1 at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver C1_FW_V01.05-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver C1_FW_V01.05-m1400 was not found; closest was 1 lines at 0x800f0bc
Found pre-determined address of tcx_config_update1 at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver C1_FW_V01.06-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver C1_FW_V01.06-m1400 was not found; closest was 1 lines at 0x800f0bc
Found pre-determined address of tcx_config_update1 at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver C1_FW_V01.05-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver C1_FW_V01.05-m1401 was not found; closest was 1 lines at 0x800f0bc
Found pre-determined address of tcx_config_update1 at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver C1_FW_V01.06-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver C1_FW_V01.06-m1401 was not found; closest was 1 lines at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_power_zone ver P3X_FW_V01.08, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_power_zone ver P3X_FW_V01.08 located at 0x800fdc2
P3X_FW_V01.11.0030_m0900.elf: Search for update_tcx_power_zone_flag-original ver C1_FW_V01.05-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of update_tcx_power_zone_flag-original ver C1_FW_V01.05-m1400 was not found; closest was 2 lines at 0x8009842
P3X_FW_V01.11.0030_m0900.elf: Search for update_tcx_power_zone_flag-setfcc ver C1_FW_V01.05-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of update_tcx_power_zone_flag-setfcc ver C1_FW_V01.05-m1400 was not found; closest was 2 lines at 0x8009842
P3X_FW_V01.11.0030_m0900.elf: Search for update_tcx_power_zone_flag-original ver C1_FW_V01.05-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of update_tcx_power_zone_flag-original ver C1_FW_V01.05-m1401 was not found; closest was 1 lines at 0x8009038
P3X_FW_V01.11.0030_m0900.elf: Search for update_tcx_power_zone_flag-setfcc ver C1_FW_V01.05-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of update_tcx_power_zone_flag-setfcc ver C1_FW_V01.05-m1401 was not found; closest was 1 lines at 0x8009038
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set00_cmd01b ver P3X_FW_V01.04, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set00_cmd01b ver P3X_FW_V01.04 was not found; closest was 5 lines at 0x8012122
Variable 'regB' defined but not used within matched regex
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set00_cmd01b ver P3X_FW_V01.08, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set00_cmd01b ver P3X_FW_V01.08 located at 0x801226e
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set00_cmd01 ver C1_FW_V01.04-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set00_cmd01 ver C1_FW_V01.04-m1400 was not found; closest was 1 lines at 0x80081a0
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set00_cmd01 ver C1_FW_V01.04-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set00_cmd01 ver C1_FW_V01.04-m1401 was not found; closest was 1 lines at 0x80081a0
P3X_FW_V01.11.0030_m0900.elf: Warning: No variant of function 'update_tcx_power_zone_flag-original' was found
P3X_FW_V01.11.0030_m0900.elf: Warning: No variant of function 'update_tcx_power_zone_flag-setfcc' was found
P3X_FW_V01.11.0030_m0900.elf: Warning: From expacted functions, 2 were not found
Making code re: movs    r1, #(?P<board_ad4_attenuation_tx1_ce>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800fe0a, replacing 3221 -> 0021 to set board_ad4_attenuation_tx1_ce
Making code re: movs    r1, #(?P<board_ad4_attenuation_tx2_ce>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800fe14, replacing 2c21 -> 0021 to set board_ad4_attenuation_tx2_ce
Making code re: movs    r1, #(?P<board_ad5_attenuation_tx1_ce>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800fe1a, replacing 2c21 -> 0021 to set board_ad5_attenuation_tx1_ce
Making code re: movs    r1, #(?P<board_ad5_attenuation_tx2_ce>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800fe24, replacing 2d21 -> 0021 to set board_ad5_attenuation_tx2_ce
Making code re: movs    r1, #(?P<board_ar6_attenuation_tx1_ce>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800fe2c, replacing 1421 -> 0021 to set board_ar6_attenuation_tx1_ce
Making code re: movs    r1, #(?P<board_ar6_attenuation_tx2_ce>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800fe36, replacing 1421 -> 0021 to set board_ar6_attenuation_tx2_ce
Making code re: movs    r1, #(?P<board_ad2_attenuation_tx1_ce>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800fe50, replacing 2c21 -> 0021 to set board_ad2_attenuation_tx1_ce
Making code re: movs    r1, #(?P<board_ad2_attenuation_tx2_ce>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800fe5a, replacing 2d21 -> 0021 to set board_ad2_attenuation_tx2_ce
Making code re: movs    r1, #(?P<board_ar7_attenuation_tx1_ce>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800fe60, replacing 0c21 -> 0021 to set board_ar7_attenuation_tx1_ce
Making code re: movs    r1, #(?P<board_ar7_attenuation_tx2_ce>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800fe6a, replacing 0c21 -> 0021 to set board_ar7_attenuation_tx2_ce
Making code re: movs    r1, #(?P<board_ad4_attenuation_tx1_fcc>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800fe70, replacing 0a21 -> 0021 to set board_ad4_attenuation_tx1_fcc
Making code re: movs    r1, #(?P<board_ad4_attenuation_tx1_init>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800d9ce, replacing 0a21 -> 0021 to set init_fpga_config.board_ad4_attenuation_tx1_init
Making code re: movs    r1, #(?P<board_ad4_attenuation_tx1_cnup>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800f200, replacing 0a21 -> 0021 to set tcx_config_update1.board_ad4_attenuation_tx1_cnup
Making code re: movs    r1, #(?P<board_ad4_attenuation_tx2_fcc>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800fe7a, replacing 0421 -> 0021 to set board_ad4_attenuation_tx2_fcc
Making code re: movs    r1, #(?P<board_ad4_attenuation_tx2_init>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800d9d8, replacing 0421 -> 0021 to set init_fpga_config.board_ad4_attenuation_tx2_init
Making code re: movs    r1, #(?P<board_ad4_attenuation_tx2_cnup>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800f20a, replacing 0421 -> 0021 to set tcx_config_update1.board_ad4_attenuation_tx2_cnup
Making code re: movs    r1, #(?P<board_ad5_attenuation_tx1_fcc>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800fe80, replacing 0421 -> 0021 to set board_ad5_attenuation_tx1_fcc
Making code re: movs    r1, #(?P<board_ad5_attenuation_tx1_init>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800d9de, replacing 0421 -> 0021 to set init_fpga_config.board_ad5_attenuation_tx1_init
Making code re: movs    r1, #(?P<board_ad5_attenuation_tx1_cnup>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800f210, replacing 0421 -> 0021 to set tcx_config_update1.board_ad5_attenuation_tx1_cnup
Making code re: movs    r1, #(?P<board_ad5_attenuation_tx2_fcc>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800fe8a, replacing 0521 -> 0021 to set board_ad5_attenuation_tx2_fcc
Making code re: movs    r1, #(?P<board_ad5_attenuation_tx2_init>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800d9e8, replacing 0521 -> 0021 to set init_fpga_config.board_ad5_attenuation_tx2_init
Making code re: movs    r1, #(?P<board_ad5_attenuation_tx2_cnup>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800f21a, replacing 0521 -> 0021 to set tcx_config_update1.board_ad5_attenuation_tx2_cnup
Making code re: movs    r1, #(?P<board_ar6_attenuation_tx1_fcc>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800fe92, replacing 0a21 -> 0021 to set board_ar6_attenuation_tx1_fcc
Making code re: movs    r1, #(?P<board_ar6_attenuation_fpga_init>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800d9f4, replacing 0a21 -> 0021 to set init_fpga_config.board_ar6_attenuation_fpga_init
Making code re: movs    r1, #(?P<board_ar6_attenuation_tx1_init>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800da04, replacing 0a21 -> 0021 to set init_fpga_config.board_ar6_attenuation_tx1_init
Making code re: movs    r1, #(?P<board_ar6_attenuation_fpga_cnup>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800f29e, replacing 0a21 -> 0021 to set tcx_config_update1.board_ar6_attenuation_fpga_cnup
Making code re: movs    r1, #(?P<board_ar6_attenuation_tx1_cnup>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800f2ae, replacing 0a21 -> 0021 to set tcx_config_update1.board_ar6_attenuation_tx1_cnup
Making code re: movs    r1, #(?P<board_ar6_attenuation_tx2_fcc>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800fe9c, replacing 0a21 -> 0021 to set board_ar6_attenuation_tx2_fcc
Making code re: movs    r1, #(?P<board_ar6_attenuation_tx2_init>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800da0e, replacing 0a21 -> 0021 to set init_fpga_config.board_ar6_attenuation_tx2_init
Making code re: movs    r1, #(?P<board_ar6_attenuation_tx2_cnup>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800f2b8, replacing 0a21 -> 0021 to set tcx_config_update1.board_ar6_attenuation_tx2_cnup
Making code re: movs    r1, #(?P<board_ad2_attenuation_tx1_fcc>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800feb6, replacing 0421 -> 0021 to set board_ad2_attenuation_tx1_fcc
Making code re: movs    r1, #(?P<board_ad2_attenuation_tx1_init>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800da66, replacing 0421 -> 0021 to set init_fpga_config.board_ad2_attenuation_tx1_init
Making code re: movs    r1, #(?P<board_ad2_attenuation_tx1_cnup>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800f25e, replacing 0421 -> 0021 to set tcx_config_update1.board_ad2_attenuation_tx1_cnup
Making code re: movs    r1, #(?P<board_ad2_attenuation_tx2_fcc>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800fec0, replacing 0521 -> 0021 to set board_ad2_attenuation_tx2_fcc
Making code re: movs    r1, #(?P<board_ad2_attenuation_tx2_init>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800da70, replacing 0521 -> 0021 to set init_fpga_config.board_ad2_attenuation_tx2_init
Making code re: movs    r1, #(?P<board_ad2_attenuation_tx2_cnup>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800f268, replacing 0521 -> 0021 to set tcx_config_update1.board_ad2_attenuation_tx2_cnup
Making code re: movs    r1, #(?P<board_ar7_attenuation_tx1_fcc>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800fed2, replacing 0221 -> 0021 to set board_ar7_attenuation_tx1_fcc
Making code re: movs    r1, #(?P<board_ar7_attenuation_fpga_init>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800da3a, replacing 0221 -> 0021 to set init_fpga_config.board_ar7_attenuation_fpga_init
Making code re: movs    r1, #(?P<board_ar7_attenuation_tx1_init>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800da4a, replacing 0221 -> 0021 to set init_fpga_config.board_ar7_attenuation_tx1_init
Making code re: movs    r1, #(?P<board_ar7_attenuation_fpga_cnup>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800f23c, replacing 0221 -> 0021 to set tcx_config_update1.board_ar7_attenuation_fpga_cnup
Making code re: movs    r1, #(?P<board_ar7_attenuation_tx1_cnup>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800f24c, replacing 0221 -> 0021 to set tcx_config_update1.board_ar7_attenuation_tx1_cnup
Making code re: movs    r1, #(?P<board_ar7_attenuation_tx2_fcc>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800fedc, replacing 0221 -> 0021 to set board_ar7_attenuation_tx2_fcc
Making code re: movs    r1, #(?P<board_ar7_attenuation_tx2_init>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800da54, replacing 0221 -> 0021 to set init_fpga_config.board_ar7_attenuation_tx2_init
Making code re: movs    r1, #(?P<board_ar7_attenuation_tx2_cnup>[0-9a-fx]+)
Compiling code: movs    r1, #0x0
At 0x800f256, replacing 0221 -> 0021 to set tcx_config_update1.board_ar7_attenuation_tx2_cnup
Making code re: movs    r0, #(?P<packet_received_attenuation_value>[0-9a-fx]+)
Compiling code: movs    r0, #0x0
At 0x80121f6, replacing a078 -> 0020 to set packet_received_attenuation_override
P3X_FW_V01.11.0030_m0900.elf: Updated 22 out of 23 hardcoded values
+ arm-none-eabi-objcopy -O binary P3X_FW_V01.11.0030_m0900.elf P3X_FW_V01.11.0030_m0900.bin
+ set +x
### OK: Amount of changes in bin file, 46, is reasonable. ###
### SUCCESS: Binary file changes are within acceptable limits. ###

To run the test yourself, use:

./tests/test_hardcoders_p3x.sh
gaifeng8864 commented 4 years ago

这是使用与您的m0900相同的固件测试固件的完整日志。 使用它作为参考,检查您的跑步是否有问题。

测试包括提取,更改JSON中的值以及将二进制文件修改为JSON更改:

### TEST of hardcoders with P3X_FW_V01.11.0030 ###
fw/P3X_FW_V01.11.0030.bin: Opening for extraction
fw/P3X_FW_V01.11.0030.bin: Package format version 2016 detected
fw/P3X_FW_V01.11.0030.bin: Header:
{   'entry_count': 17,
    'hdrend_offs': 950,
    'magic': 305419896,
    'magic_ver': 1,
    'manufacturer': b'DJI',
    'model': b'P3X',
    'padding': '00000000000000000000',
    'timestamp': 1504073841,
    'ver_latest': 17498142,
    'ver_latest_enc': 160103691,
    'ver_rollbk': 17498132,
    'ver_rollbk_enc': 160103681}
fw/P3X_FW_V01.11.0030.bin: Module index 0
{   'decrypted_len': 905728,
    'decrypted_md5': 'a6f0e3375c3a8417d8090f1c27d1826d',
    'dt_offs': 950,
    'encrypt_type': 1,
    'reserved2': 1,
    'spcoding': 16,
    'splvalue': 0,
    'stored_len': 905728,
    'stored_md5': 'c0c9ee22ae23700e7f3d41d00a4a5ca8',
    'target': 'm0306',
    'target_name': 'main '
                   'controller '
                   "'A3' "
                   'app',
    'version': '02.04.5170'}
fw/P3X_FW_V01.11.0030.bin: Module index 1
{   'decrypted_len': 43776,
    'decrypted_md5': 'cc3baf52297f2eb67adf98f0270956f4',
    'dt_offs': 906678,
    'encrypt_type': 1,
    'reserved2': 1,
    'spcoding': 16,
    'splvalue': 0,
    'stored_len': 43776,
    'stored_md5': 'bbd8964489204dfdb8858d5824a116b0',
    'target': 'm0305',
    'target_name': 'main '
                   'controller '
                   "'A3' "
                   'ldr',
    'version': '34.02.0009'}
fw/P3X_FW_V01.11.0030.bin: Module index 2
{   'decrypted_len': 97032,
    'decrypted_md5': '391e3bd702bf6ef8cb1f85c2f5d92be3',
    'dt_offs': 950454,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 97032,
    'stored_md5': '391e3bd702bf6ef8cb1f85c2f5d92be3',
    'target': 'm0400',
    'target_name': 'gimbal '
                   'mdl '
                   '0',
    'version': '01.48.0000'}
fw/P3X_FW_V01.11.0030.bin: Module index 3
{   'decrypted_len': 18348,
    'decrypted_md5': '9500f8d9c0f4e381178a59a2b3183af2',
    'dt_offs': 1047486,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 18348,
    'stored_md5': '9500f8d9c0f4e381178a59a2b3183af2',
    'target': 'm1100',
    'target_name': 'battery '
                   'controller '
                   '1 '
                   'app',
    'version': '01.08.0000'}
fw/P3X_FW_V01.11.0030.bin: Module index 4
{   'decrypted_len': 23034,
    'decrypted_md5': 'c6a8fcda6e025855a639b96db3e4b9e1',
    'dt_offs': 1065834,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 23034,
    'stored_md5': 'c6a8fcda6e025855a639b96db3e4b9e1',
    'target': 'm1101',
    'target_name': 'battery '
                   'controller '
                   '2 '
                   'app',
    'version': '02.00.0033'}
fw/P3X_FW_V01.11.0030.bin: Module index 5
{   'decrypted_len': 42382,
    'decrypted_md5': '1eefbfc3053a409e0b4e4ff7ea2cc557',
    'dt_offs': 1088868,
    'encrypt_type': 0,
    'reserved2': 3073,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 42382,
    'stored_md5': '1eefbfc3053a409e0b4e4ff7ea2cc557',
    'target': 'm1200',
    'target_name': 'electronic '
                   'speed '
                   'control '
                   '0',
    'version': '01.13.0000'}
fw/P3X_FW_V01.11.0030.bin: Module index 6
{   'decrypted_len': 42382,
    'decrypted_md5': '1eefbfc3053a409e0b4e4ff7ea2cc557',
    'dt_offs': 1131250,
    'encrypt_type': 0,
    'reserved2': 3073,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 42382,
    'stored_md5': '1eefbfc3053a409e0b4e4ff7ea2cc557',
    'target': 'm1201',
    'target_name': 'electronic '
                   'speed '
                   'control '
                   '1',
    'version': '01.13.0000'}
fw/P3X_FW_V01.11.0030.bin: Module index 7
{   'decrypted_len': 42382,
    'decrypted_md5': '1eefbfc3053a409e0b4e4ff7ea2cc557',
    'dt_offs': 1173632,
    'encrypt_type': 0,
    'reserved2': 3073,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 42382,
    'stored_md5': '1eefbfc3053a409e0b4e4ff7ea2cc557',
    'target': 'm1202',
    'target_name': 'electronic '
                   'speed '
                   'control '
                   '2',
    'version': '01.13.0000'}
fw/P3X_FW_V01.11.0030.bin: Module index 8
{   'decrypted_len': 42382,
    'decrypted_md5': '1eefbfc3053a409e0b4e4ff7ea2cc557',
    'dt_offs': 1216014,
    'encrypt_type': 0,
    'reserved2': 3073,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 42382,
    'stored_md5': '1eefbfc3053a409e0b4e4ff7ea2cc557',
    'target': 'm1203',
    'target_name': 'electronic '
                   'speed '
                   'control '
                   '3',
    'version': '01.13.0000'}
fw/P3X_FW_V01.11.0030.bin: Module index 9
{   'decrypted_len': 2680,
    'decrypted_md5': '08e01b61a70e503bb60362eaf4d734cc',
    'dt_offs': 1258396,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 2680,
    'stored_md5': '08e01b61a70e503bb60362eaf4d734cc',
    'target': 'm1500',
    'target_name': 'transmitter '
                   'usb '
                   "'IG810 "
                   "LB2_68013_TX'",
    'version': '01.01.0512'}
fw/P3X_FW_V01.11.0030.bin: Module index 10
{   'decrypted_len': 77876,
    'decrypted_md5': '47bea6b588988517d7731a677eaaef44',
    'dt_offs': 1261076,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 77876,
    'stored_md5': '47bea6b588988517d7731a677eaaef44',
    'target': 'm1700',
    'target_name': 'visual '
                   'positioning '
                   'module '
                   "'camera'",
    'version': '01.01.0263'}
fw/P3X_FW_V01.11.0030.bin: Module index 11
{   'decrypted_len': 25908,
    'decrypted_md5': 'def18f11a3b0ae5ab53624d52c0e322e',
    'dt_offs': 1338952,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 25908,
    'stored_md5': 'def18f11a3b0ae5ab53624d52c0e322e',
    'target': 'm1701',
    'target_name': 'visual '
                   'positioning '
                   'module '
                   "'sonar'",
    'version': '01.00.0519'}
fw/P3X_FW_V01.11.0030.bin: Module index 12
{   'decrypted_len': 4194304,
    'decrypted_md5': '2c3976888e71103fd4bd78f76452cb65',
    'dt_offs': 1364860,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 4194304,
    'stored_md5': '2c3976888e71103fd4bd78f76452cb65',
    'target': 'm1900',
    'target_name': 'lightbridge '
                   'FPGA '
                   'on '
                   'air '
                   'model '
                   '0',
    'version': '01.00.2144'}
fw/P3X_FW_V01.11.0030.bin: Module index 13
{   'decrypted_len': 56823260,
    'decrypted_md5': '1f95d61c7564f6fcd43f46fb88a43236',
    'dt_offs': 5559164,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 56823260,
    'stored_md5': '1f95d61c7564f6fcd43f46fb88a43236',
    'target': 'm0100',
    'target_name': 'camera '
                   "'Ambarella "
                   "A9SE' "
                   'App',
    'version': '01.32.5432'}
fw/P3X_FW_V01.11.0030.bin: Module index 14
{   'decrypted_len': 412780,
    'decrypted_md5': '7c433748d9ba5dc77ca058572b59be3c',
    'dt_offs': 62382424,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 412780,
    'stored_md5': '7c433748d9ba5dc77ca058572b59be3c',
    'target': 'm0101',
    'target_name': 'camera '
                   "'Ambarella "
                   "A9SE' "
                   'Ldr',
    'version': '01.32.5432'}
fw/P3X_FW_V01.11.0030.bin: Module index 15
{   'decrypted_len': 3363336,
    'decrypted_md5': '62e63c7b2ddd4695a1fd9be58bf6db28',
    'dt_offs': 62795204,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 3363336,
    'stored_md5': '62e63c7b2ddd4695a1fd9be58bf6db28',
    'target': 'm0800',
    'target_name': 'video '
                   'encoder '
                   "'DaVinci "
                   'Dm368 '
                   "Linux'",
    'version': '00.13.0007'}
fw/P3X_FW_V01.11.0030.bin: Module index 16
{   'decrypted_len': 75796,
    'decrypted_md5': '1bc165f4f3fc2ecc87bcb17a3e90a208',
    'dt_offs': 66158540,
    'encrypt_type': 0,
    'reserved2': 1,
    'spcoding': 0,
    'splvalue': 0,
    'stored_len': 75796,
    'stored_md5': '1bc165f4f3fc2ecc87bcb17a3e90a208',
    'target': 'm0900',
    'target_name': 'lightbridge '
                   'MCU '
                   "'STM32F103'",
    'version': '04.01.0000'}
fw/P3X_FW_V01.11.0030.bin: Headers checksum E1B1 matches.
fw/P3X_FW_V01.11.0030.bin: Extracting module index 0, 905728 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 0 stored checksum c0c9ee22ae23700e7f3d41d00a4a5ca8
fw/P3X_FW_V01.11.0030.bin: Extracting module index 1, 43776 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 1 stored checksum bbd8964489204dfdb8858d5824a116b0
fw/P3X_FW_V01.11.0030.bin: Extracting module index 2, 97032 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 2 stored checksum 391e3bd702bf6ef8cb1f85c2f5d92be3
fw/P3X_FW_V01.11.0030.bin: Extracting module index 3, 18348 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 3 stored checksum 9500f8d9c0f4e381178a59a2b3183af2
fw/P3X_FW_V01.11.0030.bin: Extracting module index 4, 23034 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 4 stored checksum c6a8fcda6e025855a639b96db3e4b9e1
fw/P3X_FW_V01.11.0030.bin: Extracting module index 5, 42382 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 5 stored checksum 1eefbfc3053a409e0b4e4ff7ea2cc557
fw/P3X_FW_V01.11.0030.bin: Extracting module index 6, 42382 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 6 stored checksum 1eefbfc3053a409e0b4e4ff7ea2cc557
fw/P3X_FW_V01.11.0030.bin: Extracting module index 7, 42382 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 7 stored checksum 1eefbfc3053a409e0b4e4ff7ea2cc557
fw/P3X_FW_V01.11.0030.bin: Extracting module index 8, 42382 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 8 stored checksum 1eefbfc3053a409e0b4e4ff7ea2cc557
fw/P3X_FW_V01.11.0030.bin: Extracting module index 9, 2680 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 9 stored checksum 08e01b61a70e503bb60362eaf4d734cc
fw/P3X_FW_V01.11.0030.bin: Extracting module index 10, 77876 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 10 stored checksum 47bea6b588988517d7731a677eaaef44
fw/P3X_FW_V01.11.0030.bin: Extracting module index 11, 25908 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 11 stored checksum def18f11a3b0ae5ab53624d52c0e322e
fw/P3X_FW_V01.11.0030.bin: Extracting module index 12, 4194304 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 12 stored checksum 2c3976888e71103fd4bd78f76452cb65
fw/P3X_FW_V01.11.0030.bin: Extracting module index 13, 56823260 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 13 stored checksum 1f95d61c7564f6fcd43f46fb88a43236
fw/P3X_FW_V01.11.0030.bin: Extracting module index 14, 412780 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 14 stored checksum 7c433748d9ba5dc77ca058572b59be3c
fw/P3X_FW_V01.11.0030.bin: Extracting module index 15, 3363336 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 15 stored checksum 62e63c7b2ddd4695a1fd9be58bf6db28
fw/P3X_FW_V01.11.0030.bin: Extracting module index 16, 75796 bytes
fw/P3X_FW_V01.11.0030.bin: Module index 16 stored checksum 1bc165f4f3fc2ecc87bcb17a3e90a208
+ cp P3X_FW_V01.11.0030_m0100.bin P3X_FW_V01.11.0030_m0100.orig.bin
+ ./amba_fwpak.py -vvv -x -m P3X_FW_V01.11.0030_m0100.bin
P3X_FW_V01.11.0030_m0100.bin: Opening for extraction
P3X_FW_V01.11.0030_m0100.bin: Header:
{   'crc32': '6F478666',
    'model_name': b'FC30'
                  b'0X',
    'ver_info': '0.0-0000'}
P3X_FW_V01.11.0030_m0100.bin: After detection, expecting 5 entries
P3X_FW_V01.11.0030_m0100.bin: Entries:
[{   'crc32': 'D4C52AE1',
    'dt_len': 9269056}, {   'crc32': '3651528E',
    'dt_len': 3889408}, {   'crc32': '87A3DCF3',
    'dt_len': 11624704}, {   'crc32': '6155791D',
    'dt_len': 5038864}, {   'crc32': '90B87999',
    'dt_len': 27001088}]
P3X_FW_V01.11.0030_m0100.bin: Post Header:
{   'part_size': '00000800 '
                 '00040000 '
                 '00040000 '
                 '00100000 '
                 '02000000 '
                 '00500000 '
                 '00f00000 '
                 '00a00000 '
                 '03c00000 '
                 '01e00000 '
                 '00000000 '
                 '00500000 '
                 '00c00000 '
                 '00500000 '
                 '00100000'}
P3X_FW_V01.11.0030_m0100.bin: Entry 0
{   'build_date': '2016-09-21',
    'crc32': '989B36D1',
    'dt_len': 9268800,
    'flag1': '00000000',
    'flag2': '00000000',
    'magic': 'A324EB90',
    'mem_addr': '0E600000',
    'padding': '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000',
    'version': '1.0'}
P3X_FW_V01.11.0030_m0100.bin: Extracting entry  0, pos      140, len  9268800 bytes
P3X_FW_V01.11.0030_m0100.bin: Entry  0 data checksum 989B36D1 matched OK
P3X_FW_V01.11.0030_m0100.bin: Entry  0 cummulative checksum D4C52AE1 matched OK
P3X_FW_V01.11.0030_m0100.bin: Entry 1
{   'build_date': '2016-09-21',
    'crc32': 'D97B99C4',
    'dt_len': 3889152,
    'flag1': '00000000',
    'flag2': '00000000',
    'magic': 'A324EB90',
    'mem_addr': '0FF00000',
    'padding': '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000',
    'version': '1.0'}
P3X_FW_V01.11.0030_m0100.bin: Extracting entry  1, pos  9269196, len  3889152 bytes
P3X_FW_V01.11.0030_m0100.bin: Entry  1 data checksum D97B99C4 matched OK
P3X_FW_V01.11.0030_m0100.bin: Entry  1 cummulative checksum 3651528E matched OK
P3X_FW_V01.11.0030_m0100.bin: Entry 2
{   'build_date': '2016-09-21',
    'crc32': 'C6DFEDAB',
    'dt_len': 11624448,
    'flag1': '00000001',
    'flag2': '00000000',
    'magic': 'A324EB90',
    'mem_addr': '03C00000',
    'padding': '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000',
    'version': '1.0'}
P3X_FW_V01.11.0030_m0100.bin: Extracting entry  2, pos 13158604, len 11624448 bytes
P3X_FW_V01.11.0030_m0100.bin: Entry  2 data checksum C6DFEDAB matched OK
P3X_FW_V01.11.0030_m0100.bin: Entry  2 cummulative checksum 87A3DCF3 matched OK
P3X_FW_V01.11.0030_m0100.bin: Entry 3
{   'build_date': '2016-09-21',
    'crc32': 'F6A51577',
    'dt_len': 5038608,
    'flag1': '00000000',
    'flag2': '00000000',
    'magic': 'A324EB90',
    'mem_addr': '00508000',
    'padding': '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000',
    'version': '1.0'}
P3X_FW_V01.11.0030_m0100.bin: Extracting entry  3, pos 24783308, len  5038608 bytes
P3X_FW_V01.11.0030_m0100.bin: Entry  3 data checksum F6A51577 matched OK
P3X_FW_V01.11.0030_m0100.bin: Entry  3 cummulative checksum 6155791D matched OK
P3X_FW_V01.11.0030_m0100.bin: Entry 4
{   'build_date': '2016-09-21',
    'crc32': '65014D0D',
    'dt_len': 27000832,
    'flag1': '00000000',
    'flag2': '00000000',
    'magic': 'A324EB90',
    'mem_addr': '00001000',
    'padding': '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000 '
               '00000000',
    'version': '1.0'}
P3X_FW_V01.11.0030_m0100.bin: Extracting entry  4, pos 29822172, len 27000832 bytes
P3X_FW_V01.11.0030_m0100.bin: Entry  4 data checksum 65014D0D matched OK
P3X_FW_V01.11.0030_m0100.bin: Entry  4 cummulative checksum 90B87999 matched OK
P3X_FW_V01.11.0030_m0100.bin: Total cummulative checksum 6F478666 matched OK
+ ./amba_sys2elf.py -vv -e -l 0x6000000 --section .ARM.exidx@0x464800:0 -p P3X_FW_V01.11.0030_m0100_part_sys.a9s
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Opening for conversion to ELF
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Opening P3X_FW_V01.11.0030_m0100_part_sys.a9h
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Memory base address set to 0x0e600000
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Searching for sections
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Set '.ARM.exidx' section at file pos 0x00464800, size 0x00000000
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Set '.text' section at file pos 0x00000000, size 0x00464800
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Set '.data' section at file pos 0x00464800, size 0x00472640
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Set '.bss' section at file pos 0x008d6e40, size 0x057291c0
P3X_FW_V01.11.0030_m0100_part_sys.a9s: ELF template 'amba_sys2elf_template.elf' copied to 'P3X_FW_V01.11.0030_m0100_part_sys.elf', 5140 bytes
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Section '.text' memory address set to 0x0e600000, alignment 0x40
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Section '.ARM.exidx' memory address set to 0x0ea64800, alignment 0x40
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Section '.data' memory address set to 0x0ea64800, alignment 0x40
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Section '.bss' memory address set to 0x0eed6e40, alignment 0x40
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Updating entry point and section headers
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Preparing ELF section '.text' from binary pos 0x00000000
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Preparing ELF section '.ARM.exidx' from binary pos 0x00464800
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Preparing ELF section '.data' from binary pos 0x00464800
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Preparing ELF section '.bss' from binary pos 0x008d6e40
P3X_FW_V01.11.0030_m0100_part_sys.a9s: Writing changes to 'P3X_FW_V01.11.0030_m0100_part_sys.elf'
+ ./amba_sys_hardcoder.py -vvv -x -e P3X_FW_V01.11.0030_m0100_part_sys.elf
P3X_FW_V01.11.0030_m0100_part_sys.elf: Opening for extract
P3X_FW_V01.11.0030_m0100_part_sys.elf: Found section .text at 0xe600000
P3X_FW_V01.11.0030_m0100_part_sys.elf: Found section .data at 0xea64800
P3X_FW_V01.11.0030_m0100_part_sys.elf: Found section .arm_vfe_header at 0x000000
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress   1%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  10%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  20%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  30%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  40%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  50%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  61%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  70%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  81%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  90%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress 100%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Pattern of DjiMsgSettingsInit ver P3X_FW_V01.01 located at 0xe8682d8
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress   1%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  10%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  20%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  30%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  40%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  50%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  61%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  70%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  81%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  90%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress 100%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Pattern of DjiUstVideoQualitySetInner ver P3X_FW_V01.01 located at 0xe801994
P3X_FW_V01.11.0030_m0100_part_sys.elf: All expected functions were found
P3X_FW_V01.11.0030_m0100_part_sys.elf: Extracted 30 hardcoded values
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0100_part_sys.json 'og_hardcoded[.]p3x_ambarella[.][a-z_]*_authority_level' 1
+ JSONFILE=P3X_FW_V01.11.0030_m0100_part_sys.json
+ VALNAME='og_hardcoded[.]p3x_ambarella[.][a-z_]*_authority_level'
+ VALSET=1
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]p3x_ambarella[.][a-z_]*_authority_level"\)$/\11\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0100_part_sys.json
+ ./amba_sys_hardcoder.py -vvv -u -e P3X_FW_V01.11.0030_m0100_part_sys.elf
P3X_FW_V01.11.0030_m0100_part_sys.elf: Opening for update
P3X_FW_V01.11.0030_m0100_part_sys.elf: Found section .text at 0xe600000
P3X_FW_V01.11.0030_m0100_part_sys.elf: Found section .data at 0xea64800
P3X_FW_V01.11.0030_m0100_part_sys.elf: Found section .arm_vfe_header at 0x000000
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress   1%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  10%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  20%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  30%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  40%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  50%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  61%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  70%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  81%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress  90%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiMsgSettingsInit ver P3X_FW_V01.01, progress 100%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Pattern of DjiMsgSettingsInit ver P3X_FW_V01.01 located at 0xe8682d8
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress   1%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  10%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  20%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  30%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  40%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  50%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  61%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  70%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  81%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress  90%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Search for DjiUstVideoQualitySetInner ver P3X_FW_V01.01, progress 100%
P3X_FW_V01.11.0030_m0100_part_sys.elf: Pattern of DjiUstVideoQualitySetInner ver P3X_FW_V01.01 located at 0xe801994
P3X_FW_V01.11.0030_m0100_part_sys.elf: All expected functions were found
Making code re: mov   r0, #(?P<encrypt_query_fail_authority_level>[0-9a-fx]+)
Compiling code: mov   r0, #0x1
At 0xe86838c, replacing 0000a0e3 -> 0100a0e3 to set encrypt_query_fail_authority_level
Making code re: mov   r0, #(?P<verify_state_good_authority_level>[0-9a-fx]+)
Compiling code: mov   r0, #0x1
Making code re: mov   r0, #(?P<verify_state_bad_authority_level>[0-9a-fx]+)
Compiling code: mov   r0, #0x1
At 0xe8683b8, replacing 0000a0e3 -> 0100a0e3 to set verify_state_bad_authority_level
P3X_FW_V01.11.0030_m0100_part_sys.elf: Updated 2 out of 30 hardcoded values
+ arm-none-eabi-objcopy -O binary P3X_FW_V01.11.0030_m0100_part_sys.elf P3X_FW_V01.11.0030_m0100_part_sys.a9s
+ ./amba_fwpak.py -vvv -a -m P3X_FW_V01.11.0030_m0100.bin
P3X_FW_V01.11.0030_m0100.bin: Opening for creation
P3X_FW_V01.11.0030_m0100.bin: Entry  0 checksum 4D94C3F7
P3X_FW_V01.11.0030_m0100.bin: Entry  1 checksum D97B99C4
P3X_FW_V01.11.0030_m0100.bin: Entry  2 checksum C6DFEDAB
P3X_FW_V01.11.0030_m0100.bin: Entry  3 checksum F6A51577
P3X_FW_V01.11.0030_m0100.bin: Entry  4 checksum 65014D0D
P3X_FW_V01.11.0030_m0100.bin: Recomputing checksums
P3X_FW_V01.11.0030_m0100.bin: Total cummulative checksum 7C73BBA1
+ set +x
### OK: Amount of changes in bin file, 30, is reasonable. ###
### SUCCESS: Binary file changes are within acceptable limits. ###
+ openssl des3 -md md5 -d -k Dji123456 -in P3X_FW_V01.11.0030_m0800.bin -out P3X_FW_V01.11.0030_m0800_decrypted.tar.gz
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
+ tar -zxf P3X_FW_V01.11.0030_m0800_decrypted.tar.gz
+ cp ./dji/bin/encode_usb ./P3X_FW_V01.11.0030_m0800-encode_usb.elf
+ cp ./P3X_FW_V01.11.0030_m0800-encode_usb.elf ./P3X_FW_V01.11.0030_m0800-encode_usb.orig.elf
+ ./dm3xx_encode_usb_hardcoder.py -vv -x -e P3X_FW_V01.11.0030_m0800-encode_usb.elf
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Opening for extract
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress   9%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  19%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  29%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  40%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  52%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  62%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  73%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  83%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  93%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress 100%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Pattern of encryptThrFxn-original ver P3X_FW_V01.07 located at 0xf2ec
Found pre-determined address of encryptThrFxn at 0x00f2ec
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  11%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  21%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  32%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  42%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  52%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  62%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  73%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  83%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  93%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress 100%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Pattern of encryptThrFxn-encpass ver P3X_FW_V01.07 was not found; closest was 8 lines at 0xf2ec
Found pre-determined address of Encrypt_Request at 0x0172a4
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  16%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  26%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  36%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  47%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  56%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  66%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  77%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  88%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  97%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress 100%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Pattern of Encrypt_Request ver P3X_FW_V01.07 located at 0x172a4
P3X_FW_V01.11.0030_m0800-encode_usb.elf: All expected functions were found
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Extracted 1 hardcoded values
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0800-encode_usb.json 'og_hardcoded[.]p3x_dm3xx[.]startup_encrypt_check_always_pass' 1
+ JSONFILE=P3X_FW_V01.11.0030_m0800-encode_usb.json
+ VALNAME='og_hardcoded[.]p3x_dm3xx[.]startup_encrypt_check_always_pass'
+ VALSET=1
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]p3x_dm3xx[.]startup_encrypt_check_always_pass"\)$/\11\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0800-encode_usb.json
+ ./dm3xx_encode_usb_hardcoder.py -vv -u -e P3X_FW_V01.11.0030_m0800-encode_usb.elf
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Opening for update
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress   9%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  19%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  29%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  40%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  52%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  62%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  73%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  83%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress  93%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-original ver P3X_FW_V01.07, progress 100%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Pattern of encryptThrFxn-original ver P3X_FW_V01.07 located at 0xf2ec
Found pre-determined address of encryptThrFxn at 0x00f2ec
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  11%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  21%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  32%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  42%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  52%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  62%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  73%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  83%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress  93%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for encryptThrFxn-encpass ver P3X_FW_V01.07, progress 100%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Pattern of encryptThrFxn-encpass ver P3X_FW_V01.07 was not found; closest was 8 lines at 0xf2ec
Found pre-determined address of Encrypt_Request at 0x0172a4
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  16%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  26%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  36%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  47%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  56%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  66%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  77%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  88%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress  97%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Search for Encrypt_Request ver P3X_FW_V01.07, progress 100%
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Pattern of Encrypt_Request ver P3X_FW_V01.07 located at 0x172a4
P3X_FW_V01.11.0030_m0800-encode_usb.elf: All expected functions were found
At 0x00f30c, replacing 0030a0e108300be508301be5000053e30200001a0100a0e3 -> 0130a0e308009fe50030c0e5000053e3020000eaf0ef1400 to set startup_encrypt_check_always_pass
P3X_FW_V01.11.0030_m0800-encode_usb.elf: Updated 1 out of 1 hardcoded values
+ cp -f ./P3X_FW_V01.11.0030_m0800-encode_usb.elf ./dji/bin/encode_usb
+ tar -zcf P3X_FW_V01.11.0030_m0800_decrypted.tar.gz ./dji
+ rm -rf ./dji
+ openssl des3 -md md5 -e -k Dji123456 -in P3X_FW_V01.11.0030_m0800_decrypted.tar.gz -out P3X_FW_V01.11.0030_m0800.bin
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
+ set +x
### OK: Amount of changes in bin file, 11, is reasonable. ###
### SUCCESS: Binary file changes are within acceptable limits. ###
+ cp P3X_FW_V01.11.0030_m0306.bin P3X_FW_V01.11.0030_m0306.orig.bin
+ ./arm_bin2elf.py -vvv -e -b 0x8020000 --section .ARM.exidx@0x085d34:0 --section .bss@0x07fe0000:0xA000 --section .bss2@0x17fe0000:0x30000 --section .bss3@0x37fe0000:0x30000 -p P3X_FW_V01.11.0030_m0306.bin
P3X_FW_V01.11.0030_m0306.bin: Opening for conversion to ELF
P3X_FW_V01.11.0030_m0306.bin: Memory base address set to 0x08020000
P3X_FW_V01.11.0030_m0306.bin: Searching for sections
P3X_FW_V01.11.0030_m0306.bin: Set '.ARM.exidx' section at file pos 0x00085d34, size 0x00000000
P3X_FW_V01.11.0030_m0306.bin: Set '.text' section at file pos 0x00000000, size 0x00085d34
P3X_FW_V01.11.0030_m0306.bin: Set '.data' section at file pos 0x00085d34, size 0x000574cc
P3X_FW_V01.11.0030_m0306.bin: Set '.bss' section at file pos 0x07fe0000, size 0x0000a000
P3X_FW_V01.11.0030_m0306.bin: ELF template 'arm_bin2elf_template.elf' copied to 'P3X_FW_V01.11.0030_m0306.elf', 5140 bytes
P3X_FW_V01.11.0030_m0306.bin: Section '.text' memory address set to 0x08020000, alignment 0x20
P3X_FW_V01.11.0030_m0306.bin: Section '.ARM.exidx' memory address set to 0x080a5d34, alignment 0x04
P3X_FW_V01.11.0030_m0306.bin: Section '.data' memory address set to 0x080a5d34, alignment 0x04
P3X_FW_V01.11.0030_m0306.bin: Section '.bss' memory address set to 0x10000000, alignment 0x20
P3X_FW_V01.11.0030_m0306.bin: Section '.bss2' memory address set to 0x20000000, alignment 0x20
P3X_FW_V01.11.0030_m0306.bin: Section '.bss3' memory address set to 0x40000000, alignment 0x20
P3X_FW_V01.11.0030_m0306.bin: Updating entry point and section headers
P3X_FW_V01.11.0030_m0306.bin: Preparing ELF section '.text' from binary pos 0x00000000
P3X_FW_V01.11.0030_m0306.bin: Updating section '.text' and shifting subsequent sections
P3X_FW_V01.11.0030_m0306.bin: Preparing ELF section '.ARM.exidx' from binary pos 0x00085d34
P3X_FW_V01.11.0030_m0306.bin: Updating section '.ARM.exidx' and shifting subsequent sections
P3X_FW_V01.11.0030_m0306.bin: Preparing ELF section '.data' from binary pos 0x00085d34
P3X_FW_V01.11.0030_m0306.bin: Updating section '.data' and shifting subsequent sections
P3X_FW_V01.11.0030_m0306.bin: Preparing ELF section '.bss' from binary pos 0x07fe0000
P3X_FW_V01.11.0030_m0306.bin: Updating section '.bss' and shifting subsequent sections
P3X_FW_V01.11.0030_m0306.bin: Preparing ELF section '.bss2' from binary pos 0x17fe0000
P3X_FW_V01.11.0030_m0306.bin: Updating section '.bss2' and shifting subsequent sections
P3X_FW_V01.11.0030_m0306.bin: Preparing ELF section '.bss3' from binary pos 0x37fe0000
P3X_FW_V01.11.0030_m0306.bin: Updating section '.bss3' and shifting subsequent sections
P3X_FW_V01.11.0030_m0306.bin: Writing changes to 'P3X_FW_V01.11.0030_m0306.elf'
+ ./dji_flyc_hardcoder.py -vvv -x -e P3X_FW_V01.11.0030_m0306.elf
P3X_FW_V01.11.0030_m0306.elf: Opening for extract
P3X_FW_V01.11.0030_m0306.elf: Found section .text at 0x8020000
P3X_FW_V01.11.0030_m0306.elf: Found section .data at 0x80a5d34
P3X_FW_V01.11.0030_m0306.elf: Found section .arm_vfe_header at 0x000000
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  25%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  40%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  52%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  64%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  76%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  88%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of wp_check_input_mission_validity ver P3X_FW_V01.05.0030 located at 0x8065790
Found pre-determined address of wp_check_input_mission_validity at 0x8065790
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver wm330_0306_v03.01.10.93, progress  63%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver wm330_0306_v03.01.10.93, progress  75%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver wm330_0306_v03.01.10.93, progress  87%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver wm330_0306_v03.01.10.93, progress  99%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of wp_check_input_mission_validity ver wm330_0306_v03.01.10.93 was not found; closest was 4 lines at 0x806b608
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  60%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  72%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  84%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  96%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of wp_mission_data_verify ver P3X_FW_V01.05.0030 located at 0x8065a54
Found pre-determined address of wp_mission_data_verify at 0x8065a54
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver wm330_0306_v03.01.10.93, progress  64%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver wm330_0306_v03.01.10.93, progress  76%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver wm330_0306_v03.01.10.93, progress  88%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of wp_mission_data_verify ver wm330_0306_v03.01.10.93 was not found; closest was 3 lines at 0x8065a54
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress  18%
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress  54%
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress  91%
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of firmware_release_marking ver wm330_0306_v03.01.10.93 located at 0x80fcc16
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  25%
Variable 'log_printf_debug' defined but not used within matched regex
Variable 'loc_51089E' defined but not used within matched regex
Variable 'loc_5108A2' defined but not used within matched regex
Variable 'cstr_dji_demo_lala_haha' defined but not used within matched regex
Variable 'cstr_dji_sdk_set_key_val' defined but not used within matched regex
Variable 'cstr_req_real' defined but not used within matched regex
Variable 'cstr_sdk_version_error' defined but not used within matched regex
Variable 'unkval_4350' defined but not used within matched regex
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  37%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  49%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  85%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  97%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of check_activation_authority ver wm330_0306_v03.01.10.93 located at 0x8046e86
Found pre-determined address of check_activation_authority at 0x8046e86
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress  41%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress  53%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress  65%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress  78%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress  90%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of check_activation_authority ver wm220_0306_v03.01.10.93 was not found; closest was 2 lines at 0x8047822
Found pre-determined address of check_activation_authority at 0x8046e86
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress  41%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress  53%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress  65%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress  78%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress  90%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of check_activation_authority ver wm220_0306_v03.02.13.12 was not found; closest was 3 lines at 0x8046e86
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  60%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  71%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  84%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  96%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of system_init ver P3X_FW_V01.07.0060 was not found; closest was 16 lines at 0x80203fc
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  25%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  37%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  49%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  86%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  98%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of imu_init ver wm330_0306_v03.01.10.93 was not found; closest was 1 lines at 0x802051c
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  25%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  37%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  49%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  86%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  98%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of imu_init ver wm220_0306_v03.01.10.93 was not found; closest was 1 lines at 0x802051c
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  87%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of navi_init ver wm330_0306_v03.01.10.93 was not found; closest was 1 lines at 0x8020d38
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  87%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of navi_init ver wm220_0306_v03.01.10.93 was not found; closest was 1 lines at 0x8020d38
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  60%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  71%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  84%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  96%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of init_config_table_version ver wm330_0306_v03.01.10.93 was not found; closest was 3 lines at 0x8087d08
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  60%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  72%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  84%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  96%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of init_config_table_version ver wm220_0306_v03.01.10.93 was not found; closest was 1 lines at 0x802023a
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  25%
Variable 'byte_20435FE2' defined but not used within matched regex
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  40%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  52%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  64%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  76%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  88%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of log_version_info ver P3X_FW_V01.07.0060 located at 0x804753c
Found pre-determined address of log_version_info at 0x804753c
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress  42%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress  56%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress  69%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress  81%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress  94%The hal_push_mc_version requires pre-determined address from previously found functions; no such address exists
The hal_push_mc_version requires pre-determined address from previously found functions; no such address exists
The pvstru_D61C requires pre-determined address from previously found functions; no such address exists

P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of log_version_info ver wm330_0306_v03.01.10.93 was not found; closest was 2 lines at 0x8077f36
Found pre-determined address of log_version_info at 0x804753c
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress  41%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress  53%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress  65%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress  78%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress  90%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of log_version_info ver wm220_0306_v03.01.10.93 was not found; closest was 1 lines at 0x8047680
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  25%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  39%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  51%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  63%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  76%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  88%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of version_check_sub1 ver wm330_0306_v03.01.10.93 was not found; closest was 2 lines at 0x809f2b4
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  25%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  37%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  49%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  85%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  97%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of version_check ver wm330_0306_v03.01.10.93 was not found; closest was 3 lines at 0x8026a2a
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'system_init' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'imu_init' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'hal_push_mc_version' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'navi_init' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'init_config_table_version' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'version_check_sub1' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'version_check' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'pvstru_D61C' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: From expacted functions, 8 were not found
P3X_FW_V01.11.0030_m0306.elf: Extracted 7 hardcoded values
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0306.json 'og_hardcoded[.]flyc[.]min_alt_below_home' -800.0
+ JSONFILE=P3X_FW_V01.11.0030_m0306.json
+ VALNAME='og_hardcoded[.]flyc[.]min_alt_below_home'
+ VALSET=-800.0
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]flyc[.]min_alt_below_home"\)$/\1-800.0\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0306.json
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0306.json 'og_hardcoded[.]flyc[.]max_alt_above_home' 4000.0
+ JSONFILE=P3X_FW_V01.11.0030_m0306.json
+ VALNAME='og_hardcoded[.]flyc[.]max_alt_above_home'
+ VALSET=4000.0
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]flyc[.]max_alt_above_home"\)$/\14000.0\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0306.json
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0306.json 'og_hardcoded[.]flyc[.]max_wp_dist_to_home' 6000.0
+ JSONFILE=P3X_FW_V01.11.0030_m0306.json
+ VALNAME='og_hardcoded[.]flyc[.]max_wp_dist_to_home'
+ VALSET=6000.0
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]flyc[.]max_wp_dist_to_home"\)$/\16000.0\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0306.json
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0306.json 'og_hardcoded[.]flyc[.]max_mission_path_len' 40000.0
+ JSONFILE=P3X_FW_V01.11.0030_m0306.json
+ VALNAME='og_hardcoded[.]flyc[.]max_mission_path_len'
+ VALSET=40000.0
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]flyc[.]max_mission_path_len"\)$/\140000.0\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0306.json
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0306.json 'og_hardcoded[.]flyc[.]max_speed_pos' 25.0
+ JSONFILE=P3X_FW_V01.11.0030_m0306.json
+ VALNAME='og_hardcoded[.]flyc[.]max_speed_pos'
+ VALSET=25.0
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]flyc[.]max_speed_pos"\)$/\125.0\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0306.json
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0306.json 'og_hardcoded[.]flyc[.]max_speed_neg' -25.0
+ JSONFILE=P3X_FW_V01.11.0030_m0306.json
+ VALNAME='og_hardcoded[.]flyc[.]max_speed_neg'
+ VALSET=-25.0
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]flyc[.]max_speed_neg"\)$/\1-25.0\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0306.json
+ ./dji_flyc_hardcoder.py -vvv -u -e P3X_FW_V01.11.0030_m0306.elf
P3X_FW_V01.11.0030_m0306.elf: Opening for update
P3X_FW_V01.11.0030_m0306.elf: Found section .text at 0x8020000
P3X_FW_V01.11.0030_m0306.elf: Found section .data at 0x80a5d34
P3X_FW_V01.11.0030_m0306.elf: Found section .arm_vfe_header at 0x000000
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  25%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  40%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  52%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  64%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  76%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress  88%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver P3X_FW_V01.05.0030, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of wp_check_input_mission_validity ver P3X_FW_V01.05.0030 located at 0x8065790
Found pre-determined address of wp_check_input_mission_validity at 0x8065790
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver wm330_0306_v03.01.10.93, progress  63%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver wm330_0306_v03.01.10.93, progress  75%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver wm330_0306_v03.01.10.93, progress  87%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver wm330_0306_v03.01.10.93, progress  99%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_check_input_mission_validity ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of wp_check_input_mission_validity ver wm330_0306_v03.01.10.93 was not found; closest was 4 lines at 0x806b608
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  60%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  72%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  84%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress  96%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver P3X_FW_V01.05.0030, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of wp_mission_data_verify ver P3X_FW_V01.05.0030 located at 0x8065a54
Found pre-determined address of wp_mission_data_verify at 0x8065a54
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver wm330_0306_v03.01.10.93, progress  64%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver wm330_0306_v03.01.10.93, progress  76%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver wm330_0306_v03.01.10.93, progress  88%
P3X_FW_V01.11.0030_m0306.elf: Search for wp_mission_data_verify ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of wp_mission_data_verify ver wm330_0306_v03.01.10.93 was not found; closest was 3 lines at 0x8065a54
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress  18%
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress  54%
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress  91%
P3X_FW_V01.11.0030_m0306.elf: Search for firmware_release_marking ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of firmware_release_marking ver wm330_0306_v03.01.10.93 located at 0x80fcc16
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  25%
Variable 'log_printf_debug' defined but not used within matched regex
Variable 'loc_51089E' defined but not used within matched regex
Variable 'loc_5108A2' defined but not used within matched regex
Variable 'cstr_dji_demo_lala_haha' defined but not used within matched regex
Variable 'cstr_dji_sdk_set_key_val' defined but not used within matched regex
Variable 'cstr_req_real' defined but not used within matched regex
Variable 'cstr_sdk_version_error' defined but not used within matched regex
Variable 'unkval_4350' defined but not used within matched regex
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  37%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  49%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  85%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress  97%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of check_activation_authority ver wm330_0306_v03.01.10.93 located at 0x8046e86
Found pre-determined address of check_activation_authority at 0x8046e86
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress  41%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress  53%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress  65%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress  78%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress  90%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of check_activation_authority ver wm220_0306_v03.01.10.93 was not found; closest was 2 lines at 0x8047822
Found pre-determined address of check_activation_authority at 0x8046e86
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress  41%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress  53%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress  65%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress  78%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress  90%
P3X_FW_V01.11.0030_m0306.elf: Search for check_activation_authority ver wm220_0306_v03.02.13.12, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of check_activation_authority ver wm220_0306_v03.02.13.12 was not found; closest was 3 lines at 0x8046e86
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  60%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  71%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  84%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress  96%
P3X_FW_V01.11.0030_m0306.elf: Search for system_init ver P3X_FW_V01.07.0060, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of system_init ver P3X_FW_V01.07.0060 was not found; closest was 16 lines at 0x80203fc
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  25%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  37%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  49%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  86%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress  98%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of imu_init ver wm330_0306_v03.01.10.93 was not found; closest was 1 lines at 0x802051c
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  25%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  37%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  49%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  86%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress  98%
P3X_FW_V01.11.0030_m0306.elf: Search for imu_init ver wm220_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of imu_init ver wm220_0306_v03.01.10.93 was not found; closest was 1 lines at 0x802051c
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress  87%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of navi_init ver wm330_0306_v03.01.10.93 was not found; closest was 1 lines at 0x8020d38
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress  87%
P3X_FW_V01.11.0030_m0306.elf: Search for navi_init ver wm220_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of navi_init ver wm220_0306_v03.01.10.93 was not found; closest was 1 lines at 0x8020d38
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  60%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  71%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  84%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress  96%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of init_config_table_version ver wm330_0306_v03.01.10.93 was not found; closest was 3 lines at 0x8087d08
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  24%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  36%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  48%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  60%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  72%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  84%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress  96%
P3X_FW_V01.11.0030_m0306.elf: Search for init_config_table_version ver wm220_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of init_config_table_version ver wm220_0306_v03.01.10.93 was not found; closest was 1 lines at 0x802023a
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  25%
Variable 'byte_20435FE2' defined but not used within matched regex
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  40%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  52%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  64%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  76%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress  88%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver P3X_FW_V01.07.0060, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of log_version_info ver P3X_FW_V01.07.0060 located at 0x804753c
Found pre-determined address of log_version_info at 0x804753c
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress  42%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress  56%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress  69%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress  81%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress  94%The hal_push_mc_version requires pre-determined address from previously found functions; no such address exists
The hal_push_mc_version requires pre-determined address from previously found functions; no such address exists
The pvstru_D61C requires pre-determined address from previously found functions; no such address exists

P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of log_version_info ver wm330_0306_v03.01.10.93 was not found; closest was 2 lines at 0x8077f36
Found pre-determined address of log_version_info at 0x804753c
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress  41%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress  53%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress  65%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress  78%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress  90%
P3X_FW_V01.11.0030_m0306.elf: Search for log_version_info ver wm220_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of log_version_info ver wm220_0306_v03.01.10.93 was not found; closest was 1 lines at 0x8047680
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  25%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  39%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  51%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  63%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  76%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress  88%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check_sub1 ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of version_check_sub1 ver wm330_0306_v03.01.10.93 was not found; closest was 2 lines at 0x809f2b4
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  12%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  25%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  37%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  49%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  61%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  73%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  85%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress  97%
P3X_FW_V01.11.0030_m0306.elf: Search for version_check ver wm330_0306_v03.01.10.93, progress 100%
P3X_FW_V01.11.0030_m0306.elf: Pattern of version_check ver wm330_0306_v03.01.10.93 was not found; closest was 3 lines at 0x8026a2a
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'system_init' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'imu_init' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'hal_push_mc_version' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'navi_init' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'init_config_table_version' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'version_check_sub1' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'version_check' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: No variant of function 'pvstru_D61C' was found
P3X_FW_V01.11.0030_m0306.elf: Warning: From expacted functions, 8 were not found
At 0x8065b88, replacing 000048c3 -> 000048c4 to set min_alt_below_home
At 0x80660c0, replacing 000048c3 -> 000048c4 to set min_alt_below_home_inst2
At 0x8065b8c, replacing 00007a44 -> 00007a45 to set max_alt_above_home
At 0x80660c4, replacing 00007a44 -> 00007a45 to set max_alt_above_home_inst2
At 0x8065bd4, replacing 0000fa44 -> 0080bb45 to set max_wp_dist_to_home
At 0x8065c50, replacing 0060ea46 -> 00401c47 to set max_mission_path_len
At 0x8065ca0, replacing 00007041 -> 0000c841 to set max_speed_pos
At 0x8065ca4, replacing 000070c1 -> 0000c8c1 to set max_speed_neg
Making code re: dcb   "(?P<firmware_version>[0-9][0-9][.][0-9][0-9][.][0-9][0-9][.][0-9][0-9])"
Compiling code: dcb   "02.04.10.00"
P3X_FW_V01.11.0030_m0306.elf: Updated 6 out of 7 hardcoded values
+ arm-none-eabi-objcopy -O binary P3X_FW_V01.11.0030_m0306.elf P3X_FW_V01.11.0030_m0306.bin
+ set +x
### OK: Amount of changes in bin file, 12, is reasonable. ###
### SUCCESS: Binary file changes are within acceptable limits. ###
+ cp P3X_FW_V01.11.0030_m0900.bin P3X_FW_V01.11.0030_m0900.orig.bin
+ ./arm_bin2elf.py -vvv -e -b 0x8008000 --section .ARM.exidx@0x0D500:0 --section .bss@0x17FF7700:0x5A00 --section .bss2@0x37ff8000:0x6700 --section .bss3@0x38008000:0x5500 --section .bss4@0x38018000:0x2200 --section .bss5@0x3a1f8000:0x100 --section .bss6@0x3a418000:0x500 -p P3X_FW_V01.11.0030_m0900.bin
P3X_FW_V01.11.0030_m0900.bin: Opening for conversion to ELF
P3X_FW_V01.11.0030_m0900.bin: Memory base address set to 0x08008000
P3X_FW_V01.11.0030_m0900.bin: Searching for sections
P3X_FW_V01.11.0030_m0900.bin: Set '.ARM.exidx' section at file pos 0x0000d500, size 0x00000000
P3X_FW_V01.11.0030_m0900.bin: Set '.text' section at file pos 0x00000000, size 0x0000d500
P3X_FW_V01.11.0030_m0900.bin: Set '.data' section at file pos 0x0000d500, size 0x00005314
P3X_FW_V01.11.0030_m0900.bin: Set '.bss' section at file pos 0x17ff7700, size 0x00005a00
P3X_FW_V01.11.0030_m0900.bin: ELF template 'arm_bin2elf_template.elf' copied to 'P3X_FW_V01.11.0030_m0900.elf', 5140 bytes
P3X_FW_V01.11.0030_m0900.bin: Section '.text' memory address set to 0x08008000, alignment 0x20
P3X_FW_V01.11.0030_m0900.bin: Section '.ARM.exidx' memory address set to 0x08015500, alignment 0x20
P3X_FW_V01.11.0030_m0900.bin: Section '.data' memory address set to 0x08015500, alignment 0x20
P3X_FW_V01.11.0030_m0900.bin: Section '.bss' memory address set to 0x1ffff700, alignment 0x20
P3X_FW_V01.11.0030_m0900.bin: Section '.bss2' memory address set to 0x40000000, alignment 0x20
P3X_FW_V01.11.0030_m0900.bin: Section '.bss3' memory address set to 0x40010000, alignment 0x20
P3X_FW_V01.11.0030_m0900.bin: Section '.bss4' memory address set to 0x40020000, alignment 0x20
P3X_FW_V01.11.0030_m0900.bin: Section '.bss5' memory address set to 0x42200000, alignment 0x20
P3X_FW_V01.11.0030_m0900.bin: Section '.bss6' memory address set to 0x42420000, alignment 0x20
P3X_FW_V01.11.0030_m0900.bin: Updating entry point and section headers
P3X_FW_V01.11.0030_m0900.bin: Preparing ELF section '.text' from binary pos 0x00000000
P3X_FW_V01.11.0030_m0900.bin: Updating section '.text' and shifting subsequent sections
P3X_FW_V01.11.0030_m0900.bin: Preparing ELF section '.ARM.exidx' from binary pos 0x0000d500
P3X_FW_V01.11.0030_m0900.bin: Updating section '.ARM.exidx' and shifting subsequent sections
P3X_FW_V01.11.0030_m0900.bin: Preparing ELF section '.data' from binary pos 0x0000d500
P3X_FW_V01.11.0030_m0900.bin: Updating section '.data' and shifting subsequent sections
P3X_FW_V01.11.0030_m0900.bin: Preparing ELF section '.bss' from binary pos 0x17ff7700
P3X_FW_V01.11.0030_m0900.bin: Updating section '.bss' and shifting subsequent sections
P3X_FW_V01.11.0030_m0900.bin: Preparing ELF section '.bss2' from binary pos 0x37ff8000
P3X_FW_V01.11.0030_m0900.bin: Updating section '.bss2' and shifting subsequent sections
P3X_FW_V01.11.0030_m0900.bin: Preparing ELF section '.bss3' from binary pos 0x38008000
P3X_FW_V01.11.0030_m0900.bin: Updating section '.bss3' and shifting subsequent sections
P3X_FW_V01.11.0030_m0900.bin: Preparing ELF section '.bss4' from binary pos 0x38018000
P3X_FW_V01.11.0030_m0900.bin: Updating section '.bss4' and shifting subsequent sections
P3X_FW_V01.11.0030_m0900.bin: Preparing ELF section '.bss5' from binary pos 0x3a1f8000
P3X_FW_V01.11.0030_m0900.bin: Updating section '.bss5' and shifting subsequent sections
P3X_FW_V01.11.0030_m0900.bin: Preparing ELF section '.bss6' from binary pos 0x3a418000
P3X_FW_V01.11.0030_m0900.bin: Updating section '.bss6' and shifting subsequent sections
P3X_FW_V01.11.0030_m0900.bin: Writing changes to 'P3X_FW_V01.11.0030_m0900.elf'
+ ./lightbridge_stm32_hardcoder.py -vvv -x -e P3X_FW_V01.11.0030_m0900.elf
P3X_FW_V01.11.0030_m0900.elf: Opening for extract
P3X_FW_V01.11.0030_m0900.elf: Found section .text at 0x8008000
P3X_FW_V01.11.0030_m0900.elf: Found section .data at 0x8015500
P3X_FW_V01.11.0030_m0900.elf: Found section .arm_vfe_header at 0x000000
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set09_cmd12-original ver P3X_FW_V01.07, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set09_cmd12-original ver P3X_FW_V01.07 located at 0x80121b4
Found pre-determined address of cmd_exec_set09_cmd12 at 0x80121b4
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set09_cmd12-constatt ver P3X_FW_V01.07, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set09_cmd12-constatt ver P3X_FW_V01.07 was not found; closest was 21 lines at 0x80121b4
Found pre-determined address of cmd_exec_set09_cmd12 at 0x80121b4
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set09_cmd12-original ver C1_FW_V01.04-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set09_cmd12-original ver C1_FW_V01.04-m1400 was not found; closest was 15 lines at 0x80121b4
Found pre-determined address of cmd_exec_set09_cmd12 at 0x80121b4
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set09_cmd12-constatt ver C1_FW_V01.04-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set09_cmd12-constatt ver C1_FW_V01.04-m1400 was not found; closest was 15 lines at 0x80121b4
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver P3X_FW_V01.01, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver P3X_FW_V01.01 was not found; closest was 2 lines at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver P3X_FW_V01.05, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver P3X_FW_V01.05 was not found; closest was 2 lines at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver P3X_FW_V01.08, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver P3X_FW_V01.08 located at 0x800d7c6
Found pre-determined address of init_fpga_config at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver P3X_FW_V01.03-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver P3X_FW_V01.03-m1400 was not found; closest was 1 lines at 0x800d7c6
Found pre-determined address of init_fpga_config at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver C1_FW_V01.05-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver C1_FW_V01.05-m1400 was not found; closest was 3 lines at 0x8013560
Found pre-determined address of init_fpga_config at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver C1_FW_V01.05-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver C1_FW_V01.05-m1401 was not found; closest was 2 lines at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver P3X_FW_V01.04, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver P3X_FW_V01.04 was not found; closest was 2 lines at 0x800cf4c
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver P3X_FW_V01.05, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver P3X_FW_V01.05 was not found; closest was 2 lines at 0x800cf4c
Variable 'ofdm_receiver_id' defined but not used within matched regex
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver P3X_FW_V01.08, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver P3X_FW_V01.08 located at 0x800f0bc
Found pre-determined address of tcx_config_update1 at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver C1_FW_V01.03-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver C1_FW_V01.03-m1400 was not found; closest was 2 lines at 0x800f0bc
Found pre-determined address of tcx_config_update1 at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver C1_FW_V01.05-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver C1_FW_V01.05-m1400 was not found; closest was 1 lines at 0x800f0bc
Found pre-determined address of tcx_config_update1 at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver C1_FW_V01.06-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver C1_FW_V01.06-m1400 was not found; closest was 1 lines at 0x800f0bc
Found pre-determined address of tcx_config_update1 at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver C1_FW_V01.05-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver C1_FW_V01.05-m1401 was not found; closest was 1 lines at 0x800f0bc
Found pre-determined address of tcx_config_update1 at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver C1_FW_V01.06-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver C1_FW_V01.06-m1401 was not found; closest was 1 lines at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_power_zone ver P3X_FW_V01.08, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_power_zone ver P3X_FW_V01.08 located at 0x800fdc2
P3X_FW_V01.11.0030_m0900.elf: Search for update_tcx_power_zone_flag-original ver C1_FW_V01.05-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of update_tcx_power_zone_flag-original ver C1_FW_V01.05-m1400 was not found; closest was 2 lines at 0x8009842
P3X_FW_V01.11.0030_m0900.elf: Search for update_tcx_power_zone_flag-setfcc ver C1_FW_V01.05-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of update_tcx_power_zone_flag-setfcc ver C1_FW_V01.05-m1400 was not found; closest was 2 lines at 0x8009842
P3X_FW_V01.11.0030_m0900.elf: Search for update_tcx_power_zone_flag-original ver C1_FW_V01.05-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of update_tcx_power_zone_flag-original ver C1_FW_V01.05-m1401 was not found; closest was 1 lines at 0x8009038
P3X_FW_V01.11.0030_m0900.elf: Search for update_tcx_power_zone_flag-setfcc ver C1_FW_V01.05-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of update_tcx_power_zone_flag-setfcc ver C1_FW_V01.05-m1401 was not found; closest was 1 lines at 0x8009038
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set00_cmd01b ver P3X_FW_V01.04, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set00_cmd01b ver P3X_FW_V01.04 was not found; closest was 5 lines at 0x8012122
Variable 'regB' defined but not used within matched regex
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set00_cmd01b ver P3X_FW_V01.08, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set00_cmd01b ver P3X_FW_V01.08 located at 0x801226e
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set00_cmd01 ver C1_FW_V01.04-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set00_cmd01 ver C1_FW_V01.04-m1400 was not found; closest was 1 lines at 0x80081a0
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set00_cmd01 ver C1_FW_V01.04-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set00_cmd01 ver C1_FW_V01.04-m1401 was not found; closest was 1 lines at 0x80081a0
P3X_FW_V01.11.0030_m0900.elf: Warning: No variant of function 'update_tcx_power_zone_flag-original' was found
P3X_FW_V01.11.0030_m0900.elf: Warning: No variant of function 'update_tcx_power_zone_flag-setfcc' was found
P3X_FW_V01.11.0030_m0900.elf: Warning: From expacted functions, 2 were not found
P3X_FW_V01.11.0030_m0900.elf: Extracted 23 hardcoded values
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0900.json 'og_hardcoded[.]lightbridge_stm32[.]packet_received_attenuation_override' 1
+ JSONFILE=P3X_FW_V01.11.0030_m0900.json
+ VALNAME='og_hardcoded[.]lightbridge_stm32[.]packet_received_attenuation_override'
+ VALSET=1
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]lightbridge_stm32[.]packet_received_attenuation_override"\)$/\11\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0900.json
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0900.json 'og_hardcoded[.]lightbridge_stm32[.]packet_received_attenuation_value' 0
+ JSONFILE=P3X_FW_V01.11.0030_m0900.json
+ VALNAME='og_hardcoded[.]lightbridge_stm32[.]packet_received_attenuation_value'
+ VALSET=0
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]lightbridge_stm32[.]packet_received_attenuation_value"\)$/\10\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0900.json
+ modify_json_value_inplace P3X_FW_V01.11.0030_m0900.json 'og_hardcoded[.]lightbridge_stm32[.]board_[a-z0-9]*_attenuation_[a-z0-9]*_[a-z0-9]*' 0
+ JSONFILE=P3X_FW_V01.11.0030_m0900.json
+ VALNAME='og_hardcoded[.]lightbridge_stm32[.]board_[a-z0-9]*_attenuation_[a-z0-9]*_[a-z0-9]*'
+ VALSET=0
+ sed -i '/^[ \t]*"setValue"[ \t]*:[ \t]*\([0-9.-]\+\|"[0-9a-zA-Z. #:;_\+-]\+"\),$/{
       $!{ N        # append the next line when not on the last line
         s/^\([ \t]*"setValue"[ \t]*:[ \t]*\)\([0-9a-zA-Z. #:;_\+"-]\+\)\(,\n[ \t]*"name"[ \t]*:[ \t]*"og_hardcoded[.]lightbridge_stm32[.]board_[a-z0-9]*_attenuation_[a-z0-9]*_[a-z0-9]*"\)$/\10\3/
                    # now test for a successful substitution, otherwise
                    #+  unpaired "a test" lines would be mis-handled
         t sub-yes  # branch_on_substitute (goto label :sub-yes)
         :sub-not   # a label (not essential; here to self document)
                    # if no substituion, print only the first line
         P          # pattern_first_line_print
         D          # pattern_ltrunc(line+nl)_top/cycle
         :sub-yes   # a label (the goto target of the t branch)
                    # fall through to final auto-pattern_print (2 lines)
       }    
     }' P3X_FW_V01.11.0030_m0900.json
+ ./lightbridge_stm32_hardcoder.py -vvv -u -e P3X_FW_V01.11.0030_m0900.elf
P3X_FW_V01.11.0030_m0900.elf: Opening for update
P3X_FW_V01.11.0030_m0900.elf: Found section .text at 0x8008000
P3X_FW_V01.11.0030_m0900.elf: Found section .data at 0x8015500
P3X_FW_V01.11.0030_m0900.elf: Found section .arm_vfe_header at 0x000000
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set09_cmd12-original ver P3X_FW_V01.07, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set09_cmd12-original ver P3X_FW_V01.07 located at 0x80121b4
Found pre-determined address of cmd_exec_set09_cmd12 at 0x80121b4
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set09_cmd12-constatt ver P3X_FW_V01.07, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set09_cmd12-constatt ver P3X_FW_V01.07 was not found; closest was 21 lines at 0x80121b4
Found pre-determined address of cmd_exec_set09_cmd12 at 0x80121b4
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set09_cmd12-original ver C1_FW_V01.04-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set09_cmd12-original ver C1_FW_V01.04-m1400 was not found; closest was 15 lines at 0x80121b4
Found pre-determined address of cmd_exec_set09_cmd12 at 0x80121b4
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set09_cmd12-constatt ver C1_FW_V01.04-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set09_cmd12-constatt ver C1_FW_V01.04-m1400 was not found; closest was 15 lines at 0x80121b4
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver P3X_FW_V01.01, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver P3X_FW_V01.01 was not found; closest was 2 lines at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver P3X_FW_V01.05, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver P3X_FW_V01.05 was not found; closest was 2 lines at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver P3X_FW_V01.08, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver P3X_FW_V01.08 located at 0x800d7c6
Found pre-determined address of init_fpga_config at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver P3X_FW_V01.03-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver P3X_FW_V01.03-m1400 was not found; closest was 1 lines at 0x800d7c6
Found pre-determined address of init_fpga_config at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver C1_FW_V01.05-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver C1_FW_V01.05-m1400 was not found; closest was 3 lines at 0x8013560
Found pre-determined address of init_fpga_config at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for init_fpga_config ver C1_FW_V01.05-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of init_fpga_config ver C1_FW_V01.05-m1401 was not found; closest was 2 lines at 0x800d7c6
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver P3X_FW_V01.04, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver P3X_FW_V01.04 was not found; closest was 2 lines at 0x800cf4c
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver P3X_FW_V01.05, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver P3X_FW_V01.05 was not found; closest was 2 lines at 0x800cf4c
Variable 'ofdm_receiver_id' defined but not used within matched regex
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver P3X_FW_V01.08, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver P3X_FW_V01.08 located at 0x800f0bc
Found pre-determined address of tcx_config_update1 at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver C1_FW_V01.03-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver C1_FW_V01.03-m1400 was not found; closest was 2 lines at 0x800f0bc
Found pre-determined address of tcx_config_update1 at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver C1_FW_V01.05-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver C1_FW_V01.05-m1400 was not found; closest was 1 lines at 0x800f0bc
Found pre-determined address of tcx_config_update1 at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver C1_FW_V01.06-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver C1_FW_V01.06-m1400 was not found; closest was 1 lines at 0x800f0bc
Found pre-determined address of tcx_config_update1 at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver C1_FW_V01.05-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver C1_FW_V01.05-m1401 was not found; closest was 1 lines at 0x800f0bc
Found pre-determined address of tcx_config_update1 at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_update1 ver C1_FW_V01.06-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_update1 ver C1_FW_V01.06-m1401 was not found; closest was 1 lines at 0x800f0bc
P3X_FW_V01.11.0030_m0900.elf: Search for tcx_config_power_zone ver P3X_FW_V01.08, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of tcx_config_power_zone ver P3X_FW_V01.08 located at 0x800fdc2
P3X_FW_V01.11.0030_m0900.elf: Search for update_tcx_power_zone_flag-original ver C1_FW_V01.05-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of update_tcx_power_zone_flag-original ver C1_FW_V01.05-m1400 was not found; closest was 2 lines at 0x8009842
P3X_FW_V01.11.0030_m0900.elf: Search for update_tcx_power_zone_flag-setfcc ver C1_FW_V01.05-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of update_tcx_power_zone_flag-setfcc ver C1_FW_V01.05-m1400 was not found; closest was 2 lines at 0x8009842
P3X_FW_V01.11.0030_m0900.elf: Search for update_tcx_power_zone_flag-original ver C1_FW_V01.05-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of update_tcx_power_zone_flag-original ver C1_FW_V01.05-m1401 was not found; closest was 1 lines at 0x8009038
P3X_FW_V01.11.0030_m0900.elf: Search for update_tcx_power_zone_flag-setfcc ver C1_FW_V01.05-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of update_tcx_power_zone_flag-setfcc ver C1_FW_V01.05-m1401 was not found; closest was 1 lines at 0x8009038
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set00_cmd01b ver P3X_FW_V01.04, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set00_cmd01b ver P3X_FW_V01.04 was not found; closest was 5 lines at 0x8012122
Variable 'regB' defined but not used within matched regex
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set00_cmd01b ver P3X_FW_V01.08, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set00_cmd01b ver P3X_FW_V01.08 located at 0x801226e
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set00_cmd01 ver C1_FW_V01.04-m1400, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set00_cmd01 ver C1_FW_V01.04-m1400 was not found; closest was 1 lines at 0x80081a0
P3X_FW_V01.11.0030_m0900.elf: Search for cmd_exec_set00_cmd01 ver C1_FW_V01.04-m1401, progress 100%
P3X_FW_V01.11.0030_m0900.elf: Pattern of cmd_exec_set00_cmd01 ver C1_FW_V01.04-m1401 was not found; closest was 1 lines at 0x80081a0
P3X_FW_V01.11.0030_m0900.elf: Warning: No variant of function 'update_tcx_power_zone_flag-original' was found
P3X_FW_V01.11.0030_m0900.elf: Warning: No variant of function 'update_tcx_power_zone_flag-setfcc' was found
P3X_FW_V01.11.0030_m0900.elf: Warning: From expacted functions, 2 were not found
Making code re: movs  r1, #(?P<board_ad4_attenuation_tx1_ce>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800fe0a, replacing 3221 -> 0021 to set board_ad4_attenuation_tx1_ce
Making code re: movs  r1, #(?P<board_ad4_attenuation_tx2_ce>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800fe14, replacing 2c21 -> 0021 to set board_ad4_attenuation_tx2_ce
Making code re: movs  r1, #(?P<board_ad5_attenuation_tx1_ce>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800fe1a, replacing 2c21 -> 0021 to set board_ad5_attenuation_tx1_ce
Making code re: movs  r1, #(?P<board_ad5_attenuation_tx2_ce>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800fe24, replacing 2d21 -> 0021 to set board_ad5_attenuation_tx2_ce
Making code re: movs  r1, #(?P<board_ar6_attenuation_tx1_ce>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800fe2c, replacing 1421 -> 0021 to set board_ar6_attenuation_tx1_ce
Making code re: movs  r1, #(?P<board_ar6_attenuation_tx2_ce>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800fe36, replacing 1421 -> 0021 to set board_ar6_attenuation_tx2_ce
Making code re: movs  r1, #(?P<board_ad2_attenuation_tx1_ce>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800fe50, replacing 2c21 -> 0021 to set board_ad2_attenuation_tx1_ce
Making code re: movs  r1, #(?P<board_ad2_attenuation_tx2_ce>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800fe5a, replacing 2d21 -> 0021 to set board_ad2_attenuation_tx2_ce
Making code re: movs  r1, #(?P<board_ar7_attenuation_tx1_ce>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800fe60, replacing 0c21 -> 0021 to set board_ar7_attenuation_tx1_ce
Making code re: movs  r1, #(?P<board_ar7_attenuation_tx2_ce>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800fe6a, replacing 0c21 -> 0021 to set board_ar7_attenuation_tx2_ce
Making code re: movs  r1, #(?P<board_ad4_attenuation_tx1_fcc>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800fe70, replacing 0a21 -> 0021 to set board_ad4_attenuation_tx1_fcc
Making code re: movs  r1, #(?P<board_ad4_attenuation_tx1_init>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800d9ce, replacing 0a21 -> 0021 to set init_fpga_config.board_ad4_attenuation_tx1_init
Making code re: movs  r1, #(?P<board_ad4_attenuation_tx1_cnup>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800f200, replacing 0a21 -> 0021 to set tcx_config_update1.board_ad4_attenuation_tx1_cnup
Making code re: movs  r1, #(?P<board_ad4_attenuation_tx2_fcc>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800fe7a, replacing 0421 -> 0021 to set board_ad4_attenuation_tx2_fcc
Making code re: movs  r1, #(?P<board_ad4_attenuation_tx2_init>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800d9d8, replacing 0421 -> 0021 to set init_fpga_config.board_ad4_attenuation_tx2_init
Making code re: movs  r1, #(?P<board_ad4_attenuation_tx2_cnup>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800f20a, replacing 0421 -> 0021 to set tcx_config_update1.board_ad4_attenuation_tx2_cnup
Making code re: movs  r1, #(?P<board_ad5_attenuation_tx1_fcc>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800fe80, replacing 0421 -> 0021 to set board_ad5_attenuation_tx1_fcc
Making code re: movs  r1, #(?P<board_ad5_attenuation_tx1_init>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800d9de, replacing 0421 -> 0021 to set init_fpga_config.board_ad5_attenuation_tx1_init
Making code re: movs  r1, #(?P<board_ad5_attenuation_tx1_cnup>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800f210, replacing 0421 -> 0021 to set tcx_config_update1.board_ad5_attenuation_tx1_cnup
Making code re: movs  r1, #(?P<board_ad5_attenuation_tx2_fcc>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800fe8a, replacing 0521 -> 0021 to set board_ad5_attenuation_tx2_fcc
Making code re: movs  r1, #(?P<board_ad5_attenuation_tx2_init>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800d9e8, replacing 0521 -> 0021 to set init_fpga_config.board_ad5_attenuation_tx2_init
Making code re: movs  r1, #(?P<board_ad5_attenuation_tx2_cnup>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800f21a, replacing 0521 -> 0021 to set tcx_config_update1.board_ad5_attenuation_tx2_cnup
Making code re: movs  r1, #(?P<board_ar6_attenuation_tx1_fcc>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800fe92, replacing 0a21 -> 0021 to set board_ar6_attenuation_tx1_fcc
Making code re: movs  r1, #(?P<board_ar6_attenuation_fpga_init>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800d9f4, replacing 0a21 -> 0021 to set init_fpga_config.board_ar6_attenuation_fpga_init
Making code re: movs  r1, #(?P<board_ar6_attenuation_tx1_init>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800da04, replacing 0a21 -> 0021 to set init_fpga_config.board_ar6_attenuation_tx1_init
Making code re: movs  r1, #(?P<board_ar6_attenuation_fpga_cnup>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800f29e, replacing 0a21 -> 0021 to set tcx_config_update1.board_ar6_attenuation_fpga_cnup
Making code re: movs  r1, #(?P<board_ar6_attenuation_tx1_cnup>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800f2ae, replacing 0a21 -> 0021 to set tcx_config_update1.board_ar6_attenuation_tx1_cnup
Making code re: movs  r1, #(?P<board_ar6_attenuation_tx2_fcc>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800fe9c, replacing 0a21 -> 0021 to set board_ar6_attenuation_tx2_fcc
Making code re: movs  r1, #(?P<board_ar6_attenuation_tx2_init>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800da0e, replacing 0a21 -> 0021 to set init_fpga_config.board_ar6_attenuation_tx2_init
Making code re: movs  r1, #(?P<board_ar6_attenuation_tx2_cnup>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800f2b8, replacing 0a21 -> 0021 to set tcx_config_update1.board_ar6_attenuation_tx2_cnup
Making code re: movs  r1, #(?P<board_ad2_attenuation_tx1_fcc>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800feb6, replacing 0421 -> 0021 to set board_ad2_attenuation_tx1_fcc
Making code re: movs  r1, #(?P<board_ad2_attenuation_tx1_init>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800da66, replacing 0421 -> 0021 to set init_fpga_config.board_ad2_attenuation_tx1_init
Making code re: movs  r1, #(?P<board_ad2_attenuation_tx1_cnup>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800f25e, replacing 0421 -> 0021 to set tcx_config_update1.board_ad2_attenuation_tx1_cnup
Making code re: movs  r1, #(?P<board_ad2_attenuation_tx2_fcc>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800fec0, replacing 0521 -> 0021 to set board_ad2_attenuation_tx2_fcc
Making code re: movs  r1, #(?P<board_ad2_attenuation_tx2_init>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800da70, replacing 0521 -> 0021 to set init_fpga_config.board_ad2_attenuation_tx2_init
Making code re: movs  r1, #(?P<board_ad2_attenuation_tx2_cnup>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800f268, replacing 0521 -> 0021 to set tcx_config_update1.board_ad2_attenuation_tx2_cnup
Making code re: movs  r1, #(?P<board_ar7_attenuation_tx1_fcc>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800fed2, replacing 0221 -> 0021 to set board_ar7_attenuation_tx1_fcc
Making code re: movs  r1, #(?P<board_ar7_attenuation_fpga_init>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800da3a, replacing 0221 -> 0021 to set init_fpga_config.board_ar7_attenuation_fpga_init
Making code re: movs  r1, #(?P<board_ar7_attenuation_tx1_init>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800da4a, replacing 0221 -> 0021 to set init_fpga_config.board_ar7_attenuation_tx1_init
Making code re: movs  r1, #(?P<board_ar7_attenuation_fpga_cnup>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800f23c, replacing 0221 -> 0021 to set tcx_config_update1.board_ar7_attenuation_fpga_cnup
Making code re: movs  r1, #(?P<board_ar7_attenuation_tx1_cnup>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800f24c, replacing 0221 -> 0021 to set tcx_config_update1.board_ar7_attenuation_tx1_cnup
Making code re: movs  r1, #(?P<board_ar7_attenuation_tx2_fcc>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800fedc, replacing 0221 -> 0021 to set board_ar7_attenuation_tx2_fcc
Making code re: movs  r1, #(?P<board_ar7_attenuation_tx2_init>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800da54, replacing 0221 -> 0021 to set init_fpga_config.board_ar7_attenuation_tx2_init
Making code re: movs  r1, #(?P<board_ar7_attenuation_tx2_cnup>[0-9a-fx]+)
Compiling code: movs  r1, #0x0
At 0x800f256, replacing 0221 -> 0021 to set tcx_config_update1.board_ar7_attenuation_tx2_cnup
Making code re: movs  r0, #(?P<packet_received_attenuation_value>[0-9a-fx]+)
Compiling code: movs  r0, #0x0
At 0x80121f6, replacing a078 -> 0020 to set packet_received_attenuation_override
P3X_FW_V01.11.0030_m0900.elf: Updated 22 out of 23 hardcoded values
+ arm-none-eabi-objcopy -O binary P3X_FW_V01.11.0030_m0900.elf P3X_FW_V01.11.0030_m0900.bin
+ set +x
### OK: Amount of changes in bin file, 46, is reasonable. ###
### SUCCESS: Binary file changes are within acceptable limits. ###

要自己运行测试,请使用:

./tests/test_hardcoders_p3x.sh
gaifeng8864 commented 4 years ago

P3X_FW_V01.11.0030

Thank you for your help. My drone model is P3A. The latest firmware version displayed on the official website is "P3S_FW_V01.11.0020.bin". I saw that you are using P3X_FW_V01.11.0030. What is the difference between P3S_FW_V01.11.0020 and P3X_FW_V01.11.0030? In addition to the machine model, the numbers on the back are different. How was V01.11.0030 obtained?

mefistotelis commented 4 years ago

P3X and P3S differ only in camera and FPV firmware (m010? and m0800).

Version V01.11.0030 is a fix to .0020 which reverts a "fix" in ESC firmware. The only difference is the ESC firmware. The "fix" DJI made enabled strict validation of ESC state, which made some completely functional drones to show "ESC Status Error".

V01.11.0030 was shared by a DJI employee on phantompilots forum. Like all firmwares, you can get it with DankDroneDownloader.

gaifeng8864 commented 4 years ago

great job. I re-created the P1765Fw3.bin file, but the transmission distance is still not much improved compared to normal, only about 1.7KM. Can I change the JOSN file to the following to open the FCC?

[ { "index" : 0, "description" : "What to do when received a packet with transceiver power set request; 0 - use the received attenuation value, 1 - override the value with constant one", "minValue" : 0, "maxValue" : 1, "defaultValue" : 0, "setValue" : 1, "name" : "og_hardcoded.lightbridge_stm32.packet_received_attenuation_override" }, { "index" : 1, "description" : "Constant attenuation value used when packet_received_attenuation_override is enabled; unit depends on OFDM board type", "minValue" : 0, "maxValue" : 255, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.packet_received_attenuation_value" }, { "index" : 2, "description" : "Transceiver attenuation value for board type 4 with Analog Devices chip, change by 1 means 0.25 dBm", "minValue" : 0, "maxValue" : 255, "defaultValue" : 50, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.board_ad4_attenuation_tx1_ce" }, { "index" : 3, "description" : "Transceiver attenuation value for board type 4 with Analog Devices chip, change by 1 means 0.25 dBm", "minValue" : 0, "maxValue" : 255, "defaultValue" : 44, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.board_ad4_attenuation_tx2_ce" }, { "index" : 4, "description" : "Transceiver attenuation value for board type 5 with Analog Devices chip, change by 1 means 0.25 dBm", "minValue" : 0, "maxValue" : 255, "defaultValue" : 44, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.board_ad5_attenuation_tx1_ce" }, { "index" : 5, "description" : "Transceiver attenuation value for board type 5 with Analog Devices chip, change by 1 means 0.25 dBm", "minValue" : 0, "maxValue" : 255, "defaultValue" : 45, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.board_ad5_attenuation_tx2_ce" }, { "index" : 6, "description" : "Transceiver attenuation value for board type 6 with Artosyn chip, change by 1 means 1 dBm", "minValue" : 0, "maxValue" : 63, "defaultValue" : 20, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.board_ar6_attenuation_tx1_ce" }, { "index" : 7, "description" : "Transceiver attenuation value for board type 6 with Artosyn chip, change by 1 means 1 dBm", "minValue" : 0, "maxValue" : 63, "defaultValue" : 20, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.board_ar6_attenuation_tx2_ce" }, { "index" : 8, "description" : "Transceiver attenuation value for board type 2 with Analog Devices chip, change by 1 means 0.25 dBm", "minValue" : 0, "maxValue" : 255, "defaultValue" : 44, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.board_ad2_attenuation_tx1_ce" }, { "index" : 9, "description" : "Transceiver attenuation value for board type 2 with Analog Devices chip, change by 1 means 0.25 dBm", "minValue" : 0, "maxValue" : 255, "defaultValue" : 45, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.board_ad2_attenuation_tx2_ce" }, { "index" : 10, "description" : "Transceiver attenuation value for board type 7 with Artosyn chip, change by 1 means 1 dBm", "minValue" : 0, "maxValue" : 63, "defaultValue" : 12, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.board_ar7_attenuation_tx1_ce" }, { "index" : 11, "description" : "Transceiver attenuation value for board type 7 with Artosyn chip, change by 1 means 1 dBm", "minValue" : 0, "maxValue" : 63, "defaultValue" : 12, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.board_ar7_attenuation_tx2_ce" }, { "index" : 12, "description" : "Transceiver attenuation value for board type 4 with Analog Devices chip, change by 1 means 0.25 dBm", "hint1" : "value of 0 means minimal attenuation and therefore max output power of the transceiver", "minValue" : 0, "maxValue" : 255, "defaultValue" : 10, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.board_ad4_attenuation_tx1_fcc" }, { "index" : 13, "description" : "Transceiver attenuation value for board type 4 with Analog Devices chip, change by 1 means 0.25 dBm", "minValue" : 0, "maxValue" : 255, "defaultValue" : 4, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.board_ad4_attenuation_tx2_fcc" }, { "index" : 14, "description" : "Transceiver attenuation value for board type 5 with Analog Devices chip, change by 1 means 0.25 dBm", "minValue" : 0, "maxValue" : 255, "defaultValue" : 4, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.board_ad5_attenuation_tx1_fcc" }, { "index" : 15, "description" : "Transceiver attenuation value for board type 5 with Analog Devices chip, change by 1 means 0.25 dBm", "minValue" : 0, "maxValue" : 255, "defaultValue" : 5, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.board_ad5_attenuation_tx2_fcc" }, { "index" : 16, "description" : "Transceiver attenuation value for board type 6 with Artosyn chip, change by 1 means 1 dBm", "minValue" : 0, "maxValue" : 63, "defaultValue" : 10, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.board_ar6_attenuation_tx1_fcc" }, { "index" : 17, "description" : "Transceiver attenuation value for board type 6 with Artosyn chip, change by 1 means 1 dBm", "minValue" : 0, "maxValue" : 63, "defaultValue" : 10, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.board_ar6_attenuation_tx2_fcc" }, { "index" : 18, "description" : "Transceiver attenuation value for board type 2 with Analog Devices chip, change by 1 means 0.25 dBm", "minValue" : 0, "maxValue" : 255, "defaultValue" : 4, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.board_ad2_attenuation_tx1_fcc" }, { "index" : 19, "description" : "Transceiver attenuation value for board type 2 with Analog Devices chip, change by 1 means 0.25 dBm", "minValue" : 0, "maxValue" : 255, "defaultValue" : 5, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.board_ad2_attenuation_tx2_fcc" }, { "index" : 20, "description" : "Transceiver attenuation value for board type 7 with Artosyn chip, change by 1 means 1 dBm", "minValue" : 0, "maxValue" : 63, "defaultValue" : 2, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.board_ar7_attenuation_tx1_fcc" }, { "index" : 21, "description" : "Transceiver attenuation value for board type 7 with Artosyn chip, change by 1 means 1 dBm", "minValue" : 0, "maxValue" : 63, "defaultValue" : 2, "setValue" : 0, "name" : "og_hardcoded.lightbridge_stm32.board_ar7_attenuation_tx2_fcc" }, { "index" : 22, "description" : "Firmware version number", "minValue" : "00.00.00.00", "maxValue" : "99.99.99.99", "setValue" : "04.01.00.00", "name" : "og_hardcoded.lightbridge_stm32.mcu_firmware_version" } ]

mefistotelis commented 4 years ago

Yes, that looks fine.

gaifeng8864 commented 4 years ago

Yes, that looks fine.

thank you very much! Tomorrow I will replace a place to test again. I hope that the cause of the interference alone is less than 5KM instead of the P1765Fw3.bin file.