@Alex-Kushleyev
I updated to the new firmware.
However, ESC ID 3 doesn't work now.
ESC ID 3 is set as the fallback from this message.
WARNING: 57600 baud rate is the fallback baud rate if ESC params are not valid
I then attempted to rewrite the parameter using this command, but it failed.
./voxl-esc-upload-params.py --params-file ../voxl-esc-params/boards/esc_params_generic_m0129_pwm.xml --device /dev/slpi-uart-2 --baud-rate 57600
In light of this situation, could you advise if it's possible to fix the configuration issue with ESC ID 3 for proper functionality?
Logs:
Here is the log of the firmware update, and it's successful.
voxl2-mini:~/voxl-esc/voxl-esc-tools(enable-pwm-input-in-firmware)$ ./voxl-esc-scan.py
Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00)
[GCC 8.4.0]
Found voxl-esc tools bin version: 1.6
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000
Sending library name request: libslpi_qrb5165_io.so
Received standard error event 2
Sending initialization request
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 2000000, protocol: firmware
INFO: ESC Information:
INFO: ---------------------
ID : 0
Board : version 40: ModalAi 4-in-1 ESC (M0129-3)
UID : 0x2039333557555304003D0036
Firmware : version 37, hash a0ca0a86
Bootloader : version 184, hash 10bf24c8
ID : 1
Board : version 40: ModalAi 4-in-1 ESC (M0129-3)
UID : 0x2039333557555304003D0032
Firmware : version 37, hash a0ca0a86
Bootloader : version 184, hash 10bf24c8
ID : 2
Board : version 40: ModalAi 4-in-1 ESC (M0129-3)
UID : 0x2039333557555304003D0034
Firmware : version 37, hash a0ca0a86
Bootloader : version 184, hash 10bf24c8
ID : 3
Board : version 40: ModalAi 4-in-1 ESC (M0129-3)
UID : 0x2039333557555304003D0038
Firmware : version 37, hash a0ca0a86
Bootloader : version 184, hash 10bf24c8
---------------------
voxl2-mini:~/voxl-esc/voxl-esc-tools(enable-pwm-input-in-firmware)$ ./voxl-esc-upload-firmware-all.sh
Usage:
- Autodetect board and upload latest firmware to all ESCs:
./voxl-esc-upload-firmware-all.sh
- Autodetect board and upload latest firmware to a single ESC ID <esc_id>:
./voxl-esc-upload-firmware-all.sh <esc_id>
Detecting ESCs...
Received standard error event 2
[INFO] M0129-3 detected
ESC Firmware: modalai_esc_firmware_m0129_3_v0_39_RC13_eef79926.bin
Flashing all ESCs
Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00)
[GCC 8.4.0]
Found voxl-esc tools bin version: 1.6
INFO: Firmware file name : /home/root/voxl-esc/voxl-esc-tools/firmware/modalai_esc_firmware_m0129_3_v0_39_RC13_eef79926.bin
INFO: Firmware file size : 23024 bytes
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000
Sending library name request: libslpi_qrb5165_io.so
Received standard error event 2
Sending initialization request
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 2000000
INFO: ESC(s) detected: [0, 1, 2, 3]
INFO: Sending reset command to ESC ID 0
Updated baud rate to 230400
INFO: Installing firmware to ESC ID 0 : /home/root/voxl-esc/voxl-esc-tools/firmware/modalai_esc_firmware_m0129_3_v0_39_RC13_eef79926.bin
Progress: 100% [##################################################]
INFO: Firmware successfully updated for ESC id 0
Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00)
[GCC 8.4.0]
Found voxl-esc tools bin version: 1.6
INFO: Firmware file name : /home/root/voxl-esc/voxl-esc-tools/firmware/modalai_esc_firmware_m0129_3_v0_39_RC13_eef79926.bin
INFO: Firmware file size : 23024 bytes
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000
Sending library name request: libslpi_qrb5165_io.so
Received standard error event 2
Sending initialization request
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 2000000
INFO: ESC(s) detected: [1, 2, 3]
INFO: Sending reset command to ESC ID 1
Updated baud rate to 230400
INFO: Installing firmware to ESC ID 1 : /home/root/voxl-esc/voxl-esc-tools/firmware/modalai_esc_firmware_m0129_3_v0_39_RC13_eef79926.bin
Progress: 100% [##################################################]
INFO: Firmware successfully updated for ESC id 1
Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00)
[GCC 8.4.0]
Found voxl-esc tools bin version: 1.6
INFO: Firmware file name : /home/root/voxl-esc/voxl-esc-tools/firmware/modalai_esc_firmware_m0129_3_v0_39_RC13_eef79926.bin
INFO: Firmware file size : 23024 bytes
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000
Sending library name request: libslpi_qrb5165_io.so
Received standard error event 2
Sending initialization request
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 2000000
INFO: ESC(s) detected: [2, 3]
INFO: Sending reset command to ESC ID 2
Updated baud rate to 230400
INFO: Installing firmware to ESC ID 2 : /home/root/voxl-esc/voxl-esc-tools/firmware/modalai_esc_firmware_m0129_3_v0_39_RC13_eef79926.bin
Progress: 100% [##################################################]
INFO: Firmware successfully updated for ESC id 2
Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00)
[GCC 8.4.0]
Found voxl-esc tools bin version: 1.6
INFO: Firmware file name : /home/root/voxl-esc/voxl-esc-tools/firmware/modalai_esc_firmware_m0129_3_v0_39_RC13_eef79926.bin
INFO: Firmware file size : 23024 bytes
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000
Sending library name request: libslpi_qrb5165_io.so
Received standard error event 2
Sending initialization request
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 2000000
INFO: ESC(s) detected: [3]
INFO: Sending reset command to ESC ID 3
Updated baud rate to 230400
INFO: Installing firmware to ESC ID 3 : /home/root/voxl-esc/voxl-esc-tools/firmware/modalai_esc_firmware_m0129_3_v0_39_RC13_eef79926.bin
Progress: 100% [##################################################]
INFO: Firmware successfully updated for ESC id 3
And then I uploaded the parameters. It seems to write IDs 0, 1, and 2, but it fails for ID 3.
voxl2-mini:~/voxl-esc/voxl-esc-tools(enable-pwm-input-in-firmware)$ ./voxl-esc-upload-params.py --params-file ../voxl-esc-params/boards/esc_params_generic_m0129_pwm.xml
Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00)
[GCC 8.4.0]
Found voxl-esc tools bin version: 1.6
INFO: Params file name : ../voxl-esc-params/boards/esc_params_generic_m0129_pwm.xml
INFO: Params file size : 7419 bytes
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000
Sending library name request: libslpi_qrb5165_io.so
Received standard error event 2
Sending initialization request
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 2000000
INFO: ESCs detected:
INFO: ---------------------
ID: 1, SW: 39, HW: 40: ModalAi 4-in-1 ESC (M0129-3)
ID: 2, SW: 39, HW: 40: ModalAi 4-in-1 ESC (M0129-3)
---------------------
INFO: Loading XML config file...
INFO: Uploading params for ESC ID 255...
-- board config
-- id config
-- uart config
-- tune config
DONE
INFO: Resetting ESCs...
DONE
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 250000
INFO: Scanning for ESC bootloader: /dev/slpi-uart-2, baud: 230400
Updated baud rate to 230400
ERROR: No ESC(s) detected
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 921600
INFO: Scanning for ESC bootloader: /dev/slpi-uart-2, baud: 230400
Updated baud rate to 230400
ERROR: No ESC(s) detected
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 230400
INFO: Scanning for ESC bootloader: /dev/slpi-uart-2, baud: 230400
Updated baud rate to 230400
ERROR: No ESC(s) detected
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 57600
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 57600
INFO: ESCs detected:
INFO: ---------------------
ID: 0, SW: 39, HW: 40: ModalAi 4-in-1 ESC (M0129-3)
---------------------
INFO: Loading XML config file...
INFO: Uploading params for ESC ID 255...
-- board config
-- id config
-- uart config
-- tune config
DONE
INFO: Resetting ESCs...
DONE
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 115200
INFO: Scanning for ESC bootloader: /dev/slpi-uart-2, baud: 230400
ERROR: voxl_uart_read_bytes: Bus '12' is not initialized
Updated baud rate to 230400
ERROR: No ESC(s) detected
Scan command says ID 3 is fallback mode.
voxl2-mini:/$ voxl-esc
Starting Wizard
What do you want to do?
1) scan 3) spin 5) upload_params
2) detect 4) upgrade_firmware
#? 1
enabling bridge
bridge enabled
Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00)
[GCC 8.4.0]
Found voxl-esc tools bin version: 1.6
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000
Sending library name request: libslpi_qrb5165_io.so
Received standard error event 2
Sending initialization request
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 2000000, protocol: firmware
INFO: ESC Information:
INFO: ---------------------
ID : 0
Board : version 40: ModalAi 4-in-1 ESC (M0129-3)
UID : 0x2039333557555304003D0036
Firmware : version 39, hash eef79926
Bootloader : version 184, hash 10bf24c8
ID : 1
Board : version 40: ModalAi 4-in-1 ESC (M0129-3)
UID : 0x2039333557555304003D0032
Firmware : version 39, hash eef79926
Bootloader : version 184, hash 10bf24c8
ID : 2
Board : version 40: ModalAi 4-in-1 ESC (M0129-3)
UID : 0x2039333557555304003D0034
Firmware : version 39, hash eef79926
Bootloader : version 184, hash 10bf24c8
---------------------
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 250000
INFO: Scanning for ESC bootloader: /dev/slpi-uart-2, baud: 230400
Updated baud rate to 230400
WARNING: No ESC(s) detected
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 921600
INFO: Scanning for ESC bootloader: /dev/slpi-uart-2, baud: 230400
ERROR: voxl_uart_read_bytes: Bus '12' is not initialized
Updated baud rate to 230400
WARNING: No ESC(s) detected
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 57600
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 57600, protocol: firmware
INFO: ESC Information:
INFO: ---------------------
ID : 3
Board : version 40: ModalAi 4-in-1 ESC (M0129-3)
UID : 0x2039333557555304003D0038
Firmware : version 39, hash eef79926
Bootloader : version 184, hash 10bf24c8
---------------------
WARNING: 57600 baud rate is the fallback baud rate if ESC params are not valid
WARNING: Please verify params using voxl-esc-verify-params.py
WARNING: Motors will not spin unless valid params are present
---------------------
Found ESCs:
id: 0, port: /dev/slpi-uart-2, baud rate: 2000000
id: 1, port: /dev/slpi-uart-2, baud rate: 2000000
id: 2, port: /dev/slpi-uart-2, baud rate: 2000000
id: 3, port: /dev/slpi-uart-2, baud rate: 57600
successfully pinged ESCs
disabling bridge
bridge disabled
DONE
./voxl-esc-upload-params.py --params-file ../voxl-esc-params/boards/esc_params_generic_m0129_pwm.xml --device /dev/slpi-uart-2 --baud-rate 57600

esc_params_generic_m0129_pwm.xml
<EscParameters>
<IdParams>
<param name="id" value="127"/> <!-- 0-7 .. 127 means use hardware ID pins to read ID-->
<param name="dir" value="2"/> <!-- 0=fwd, 1=rev, 2=fwd id-based, 3=rev id-based -->
</IdParams>
<UartParams>
<param name="protocol_version" value="2"/> <!-- reserved for future use -->
<param name="input_mode" value="0"/> <!-- reserved for future use -->
<param name="baud_rate" value="2000000"/> <!-- communication bit rate -->
<param name="char_timeout_ns" value="0"/> <!-- not used -->
<param name="cmd_timeout_ns" value="100000000"/> <!-- timeout for incoming commands before ESC will stop the motor -->
</UartParams>
<TuneParams>
<param name="pwm_frequency" value="48000"/> <!-- switching freqency of PWM signal going to motors. 24Khz and 48Khz are only options for now -->
<param name="vbat_nominal_mv" value="14800"/> <!-- used for sanity checking and limiting of voltage-dependent funcions -->
<param name="num_cycles_per_rev" value="7"/> <!-- number of pole pairs in the motor. used for converting electrical frequency to mechanical rpm -->
<param name="min_rpm" value="4000"/> <!-- minimum RPM that will be attempted, otherwise capped -->
<param name="max_rpm" value="29344"/> <!-- maximum RPM that will be attempted, otherwise capped -->
<param name="min_pwm" value="70"/> <!-- cap for minimum power to be ever applied. max is 999 -->
<param name="max_pwm" value="999"/> <!-- cap for maximum power to be ever applied. max is 999 -->
<param name="pwm_vs_rpm_curve_a0" value="0"/> <!-- this is actually motor_voltage vs rpm curve.. using legacy naming -->
<param name="pwm_vs_rpm_curve_a1" value="0"/> <!-- Emax RS1306 3300KV with tri-blade 3x3x3 -->
<param name="pwm_vs_rpm_curve_a2" value="0"/>
<param name="kp" value="0"/> <!-- RPM controller proportional gain -->
<param name="ki" value="0"/> <!-- RPM controller proportional gain -->
<param name="max_kpe" value="0"/> <!-- maximum proportional erorr term (max is 999) -->
<param name="max_kie" value="0"/> <!-- maximum integral error term (max is 999) -->
<param name="max_rpm_delta" value="0"/> <!-- cap for maximum rpm error used in RPM controller -->
<param name="spinup_type" value="0"/> <!-- 0: traditional, 1: sinusoidal -->
<param name="spinup_power" value="70"/> <!-- power used to during spin-up procedure -->
<param name="latch_power" value="80"/> <!-- power used during latching stage of spin-up (out of 999)-->
<param name="spinup_power_ramp" value="8"/> <!-- it will take ( 4096 / (spinup_power_ramp*10000) ) seconds to ramp sinusoidal start-up power from 0 to spinup_power -->
<param name="spinup_rpm_target" value="1000"/> <!-- Desired RPM at the end of the sinusoidal spin-up procedure -->
<param name="spinup_time_ms" value="1000"/> <!-- Duration of the sinusoidal spin-up procedure -->
<param name="spinup_bemf_comp" value="0"/> <!-- 0: disable, 1:enable back-emf compensation in sinusoidal spin-up procedure -->
<param name="motor_kv" value="2850 "/> <!-- kV value of the motor. used in back-emf compensation during spin-up -->
<param name="min_num_cross_for_closed_loop" value="100"/> <!-- exit latching mode of fixed power after this number of zero crossings -->
<param name="protection_stall_check_rpm" value="1000"/> <!-- if motor spins below this RPM, stall check will trigger and stop / restart the motor -->
<param name="brake_to_stop" value="0"/> <!-- apply brake when stopping motor (or not) -->
<param name="stall_timeout_ns" value="20000000"/> <!-- after spin-up, if no zero crossing is not detected for this amount of time, motor is considered stalled -->
<param name="require_reset_if_stalled" value="0"/> <!-- require sending an array of zero commands to reset before next spin-up, if motor stalled -->
<param name="tone_freqs" value="[200, 215, 225, 250, 0,0,0,0, 0,0,0,0]"/> <!-- 200 is 2000Hz, max 255 -->
<param name="tone_durations" value="[10, 10, 10, 10, 0,0,0,0, 0,0,0,0]"/> <!-- duration of each tone in units of 10 milli-seconds. Poor naming!!! -->
<param name="tone_powers" value="[60, 60, 60, 60, 0,0,0,0, 0,0,0,0]"/> <!-- max is 255 -->
<param name="dt_threshold_ns" value="150000"/> <!-- during start up, ignore inter-commutation times less than this val, probably noise -->
<param name="max_dt_ns" value="2500000"/> <!-- min and max values for time between two commutations. these are used as caps -->
<param name="min_dt_ns" value="10000"/>
<param name="dt_bootstrap_ns" value="2000000"/> <!-- filter bootstrap value for commutation dt during start up -->
<param name="spinup_stall_dt_ns" value="6000000"/> <!-- during spin-up, if no zero crossing is not detected for this amount of time, motor is considered stalled -->
<param name="spinup_stall_check_ns" value="30000000"/> <!-- time after beginning of spinup to start checking for spinup stall -->
<param name="alignment_time_ns" value="0"/> <!-- alignment time before spin-up -->
<param name="timing_advance" value="0"/>
<param name="sense_advance" value="0"/>
<param name="demag_timing" value="0"/> <!-- unused -->
</TuneParams>
</EscParameters>