Metr Pro Updates

Doesn’t matter in my case if toggled or not.

1 Like

I tried it today and they both work now.

1 Like

Hmmm… what’s the consensus on the fix to upload?? I can’t upload either :pensive:

1 Like

Use the option “Automatic Uploads” in the Records settings for now.

1 Like

If you can’t upload:

  1. Make sure you have active connection to the board that you have recorded with
  2. Upload. For further uploads you don’t need to have connection
  3. If you switch boards and upload doesn’t work, repeat 1-2
1 Like

I think I’ve run into a strange bug.

metr appears to have wiped my app settings. not to defaults. but just some other settings including setting the app to “no app” so I can’t set them back over metr/ble.

I have two boards both pretty much the same. dual focbox over CAN metr on primary app set to PPM. + UART. metr pro connected to uart. VX1 remote connected via PPM to primary vesc.

I had an issue with the remote and while trying to debug it I checked in metr to see if it was sending signal, I went into the calibrate PPM wizard from the expert menu. that worked for a moment but then I tried to pair a different remote including a power cycle. metr didn’t connect anymore. I’m not sure if i noticed before or after the power cycle. when I got hooked up via USB I found the app set to noapp and a bunch of other app settings changed to random stuff. (not the defaults. )

Today on the other board. basically the same thing happened.

in both cases the motor configs were unaffected.

I happen to save my configs so I can give a custom diff of what was changed:

first board diff
+++ /var/folders/5z/4jb92sz1487b8zvx21md16s00000gp/T/tmp.N6zTEoPH	2020-07-26 18:51:29.000000000 -0700
--- /var/folders/5z/4jb92sz1487b8zvx21md16s00000gp/T/tmp.RbmiGXSB	2020-07-26 18:51:29.000000000 -0700
@@ -1,115 +1,115 @@
 app_adc_conf.cc_button_inverted: 0
 app_adc_conf.ctrl_type: 0
+app_adc_conf.hyst: 0
-app_adc_conf.hyst: 0.15
+app_adc_conf.multi_esc: 0
-app_adc_conf.multi_esc: 1
+app_adc_conf.ramp_time_neg: 0
-app_adc_conf.ramp_time_neg: 0.1
+app_adc_conf.ramp_time_pos: 0
-app_adc_conf.ramp_time_pos: 0.3
 app_adc_conf.rev_button_inverted: 0
+app_adc_conf.safe_start: 0
-app_adc_conf.safe_start: 1
 app_adc_conf.tc: 0
+app_adc_conf.tc_max_diff: 0
-app_adc_conf.tc_max_diff: 3000
 app_adc_conf.throttle_exp: 0
 app_adc_conf.throttle_exp_brake: 0
+app_adc_conf.throttle_exp_mode: 0
-app_adc_conf.throttle_exp_mode: 2
+app_adc_conf.update_rate_hz: 0
-app_adc_conf.update_rate_hz: 500
+app_adc_conf.use_filter: 0
-app_adc_conf.use_filter: 1
+app_adc_conf.voltage2_end: 0
-app_adc_conf.voltage2_end: 3
 app_adc_conf.voltage2_inverted: 0
+app_adc_conf.voltage2_start: 0
-app_adc_conf.voltage2_start: 0.9
+app_adc_conf.voltage_center: 0
-app_adc_conf.voltage_center: 2
+app_adc_conf.voltage_end: 0
-app_adc_conf.voltage_end: 3
 app_adc_conf.voltage_inverted: 0
+app_adc_conf.voltage_start: 0
-app_adc_conf.voltage_start: 0.9
 app_balance_conf.current_boost: 0
 app_balance_conf.deadzone: 0
-app_balance_conf.hertz: 1000
+app_balance_conf.hertz: 50
 app_balance_conf.kd: 0
 app_balance_conf.ki: 0
 app_balance_conf.kp: 0
+app_balance_conf.overspeed_duty: 0
-app_balance_conf.overspeed_duty: 0.9
+app_balance_conf.pitch_fault: 0
-app_balance_conf.pitch_fault: 20
+app_balance_conf.roll_fault: 0
-app_balance_conf.roll_fault: 45
+app_balance_conf.startup_pitch_tolerance: 0
-app_balance_conf.startup_pitch_tolerance: 20
+app_balance_conf.startup_roll_tolerance: 0
-app_balance_conf.startup_roll_tolerance: 8
+app_balance_conf.startup_speed: 0
-app_balance_conf.startup_speed: 30
+app_balance_conf.tiltback_angle: 0
-app_balance_conf.tiltback_angle: 15
+app_balance_conf.tiltback_duty: 0
-app_balance_conf.tiltback_duty: 0.75
+app_balance_conf.tiltback_high_voltage: 0
-app_balance_conf.tiltback_high_voltage: 100
 app_balance_conf.tiltback_low_voltage: 0
+app_balance_conf.tiltback_speed: 0
-app_balance_conf.tiltback_speed: 5
 app_balance_conf.use_switches: 0
 app_chuk_conf.ctrl_type: 0
+app_chuk_conf.hyst: 0
-app_chuk_conf.hyst: 0.15
+app_chuk_conf.multi_esc: 0
-app_chuk_conf.multi_esc: 1
+app_chuk_conf.ramp_time_neg: 0
-app_chuk_conf.ramp_time_neg: 0.2
+app_chuk_conf.ramp_time_pos: 0
-app_chuk_conf.ramp_time_pos: 0.4
+app_chuk_conf.smart_rev_max_duty: 0
-app_chuk_conf.smart_rev_max_duty: 0.07
+app_chuk_conf.smart_rev_ramp_time: 0
-app_chuk_conf.smart_rev_ramp_time: 3
+app_chuk_conf.stick_erpm_per_s_in_cc: 0
-app_chuk_conf.stick_erpm_per_s_in_cc: 3000
 app_chuk_conf.tc: 0
+app_chuk_conf.tc_max_diff: 0
-app_chuk_conf.tc_max_diff: 3000
 app_chuk_conf.throttle_exp: 0
 app_chuk_conf.throttle_exp_brake: 0
+app_chuk_conf.throttle_exp_mode: 0
-app_chuk_conf.throttle_exp_mode: 2
+app_chuk_conf.use_smart_rev: 0
-app_chuk_conf.use_smart_rev: 1
+app_nrf_conf.address__0: 0
-app_nrf_conf.address__0: 198
+app_nrf_conf.address__1: 0
-app_nrf_conf.address__1: 199
 app_nrf_conf.address__2: 0
+app_nrf_conf.channel: 0
-app_nrf_conf.channel: 76
 app_nrf_conf.crc_type: 1
+app_nrf_conf.power: 0
-app_nrf_conf.power: 3
+app_nrf_conf.retries: 0
-app_nrf_conf.retries: 3
 app_nrf_conf.retry_delay: 0
+app_nrf_conf.send_crc_ack: 0
-app_nrf_conf.send_crc_ack: 1
+app_nrf_conf.speed: 0
-app_nrf_conf.speed: 1
-app_ppm_conf.ctrl_type: 1
+app_ppm_conf.ctrl_type: 3
+app_ppm_conf.hyst: 0
-app_ppm_conf.hyst: 0.15
+app_ppm_conf.max_erpm_for_dir: 0
-app_ppm_conf.max_erpm_for_dir: 4000
+app_ppm_conf.median_filter: 0
-app_ppm_conf.median_filter: 1
+app_ppm_conf.multi_esc: 0
-app_ppm_conf.multi_esc: 1
+app_ppm_conf.pid_max_erpm: 0
-app_ppm_conf.pid_max_erpm: 15000
+app_ppm_conf.pulse_center: 0
-app_ppm_conf.pulse_center: 1.536
+app_ppm_conf.pulse_end: 0
-app_ppm_conf.pulse_end: 1.932
+app_ppm_conf.pulse_start: 0
-app_ppm_conf.pulse_start: 1.14
+app_ppm_conf.ramp_time_neg: 0
-app_ppm_conf.ramp_time_neg: 0.2
+app_ppm_conf.ramp_time_pos: 0
-app_ppm_conf.ramp_time_pos: 0.2
+app_ppm_conf.safe_start: 0
-app_ppm_conf.safe_start: 1
+app_ppm_conf.smart_rev_max_duty: 0
-app_ppm_conf.smart_rev_max_duty: 0.07
+app_ppm_conf.smart_rev_ramp_time: 0
-app_ppm_conf.smart_rev_ramp_time: 3
 app_ppm_conf.tc: 0
+app_ppm_conf.tc_max_diff: 0
-app_ppm_conf.tc_max_diff: 3000
 app_ppm_conf.throttle_exp: 0
 app_ppm_conf.throttle_exp_brake: 0
+app_ppm_conf.throttle_exp_mode: 0
-app_ppm_conf.throttle_exp_mode: 2
+app_to_use: 0
-app_to_use: 4
+app_uart_baudrate: 0
-app_uart_baudrate: 115200
+can_baud_rate: 0
-can_baud_rate: 2
 controller_id: 0
+imu_conf.accel_confidence_decay: 0
-imu_conf.accel_confidence_decay: 1
 imu_conf.accel_offsets__0: 0
 imu_conf.accel_offsets__1: 0
 imu_conf.accel_offsets__2: 0
+imu_conf.gyro_offset_comp_clamp: 0
-imu_conf.gyro_offset_comp_clamp: 5
 imu_conf.gyro_offset_comp_fact__0: 0
 imu_conf.gyro_offset_comp_fact__1: 0
 imu_conf.gyro_offset_comp_fact__2: 0
 imu_conf.gyro_offsets__0: 0
 imu_conf.gyro_offsets__1: 0
 imu_conf.gyro_offsets__2: 0
+imu_conf.madgwick_beta: 0
-imu_conf.madgwick_beta: 0.1
 imu_conf.mahony_ki: 0
+imu_conf.mahony_kp: 0
-imu_conf.mahony_kp: 0.3
 imu_conf.mode: 0
 imu_conf.rot_pitch: 0
 imu_conf.rot_roll: 0
 imu_conf.rot_yaw: 0
+imu_conf.sample_rate_hz: 1
-imu_conf.sample_rate_hz: 200
+imu_conf.type: 0
-imu_conf.type: 1
 pairing_done: 0
+permanent_uart_enabled: 0
-permanent_uart_enabled: 1
 send_can_status: 0
+send_can_status_rate_hz: 0
-send_can_status_rate_hz: 50
+shutdown_mode: 0
-shutdown_mode: 1
 timeout_brake_current: 0
 timeout_msec: 1000
 uavcan_enable: 0
second board diff
+++ /var/folders/5z/4jb92sz1487b8zvx21md16s00000gp/T/tmp.iU9c2JZH	2020-07-26 18:48:28.000000000 -0700
--- /var/folders/5z/4jb92sz1487b8zvx21md16s00000gp/T/tmp.jerWJyoe	2020-07-26 18:48:28.000000000 -0700
@@ -1,115 +1,115 @@
 app_adc_conf.cc_button_inverted: 0
 app_adc_conf.ctrl_type: 0
+app_adc_conf.hyst: 0
-app_adc_conf.hyst: 0.15
+app_adc_conf.multi_esc: 0
-app_adc_conf.multi_esc: 1
+app_adc_conf.ramp_time_neg: 0
-app_adc_conf.ramp_time_neg: 0.1
+app_adc_conf.ramp_time_pos: 0
-app_adc_conf.ramp_time_pos: 0.3
 app_adc_conf.rev_button_inverted: 0
+app_adc_conf.safe_start: 0
-app_adc_conf.safe_start: 1
 app_adc_conf.tc: 0
+app_adc_conf.tc_max_diff: 0
-app_adc_conf.tc_max_diff: 3000
 app_adc_conf.throttle_exp: 0
 app_adc_conf.throttle_exp_brake: 0
+app_adc_conf.throttle_exp_mode: 0
-app_adc_conf.throttle_exp_mode: 2
+app_adc_conf.update_rate_hz: 0
-app_adc_conf.update_rate_hz: 500
+app_adc_conf.use_filter: 0
-app_adc_conf.use_filter: 1
+app_adc_conf.voltage2_end: 0
-app_adc_conf.voltage2_end: 3
 app_adc_conf.voltage2_inverted: 0
+app_adc_conf.voltage2_start: 0
-app_adc_conf.voltage2_start: 0.9
+app_adc_conf.voltage_center: 0
-app_adc_conf.voltage_center: 2
+app_adc_conf.voltage_end: 0
-app_adc_conf.voltage_end: 3
 app_adc_conf.voltage_inverted: 0
+app_adc_conf.voltage_start: 0
-app_adc_conf.voltage_start: 0.9
 app_balance_conf.current_boost: 0
 app_balance_conf.deadzone: 0
+app_balance_conf.hertz: 0
-app_balance_conf.hertz: 1000
 app_balance_conf.kd: 0
 app_balance_conf.ki: 0
 app_balance_conf.kp: 0
+app_balance_conf.overspeed_duty: 0
-app_balance_conf.overspeed_duty: 0.9
+app_balance_conf.pitch_fault: 0
-app_balance_conf.pitch_fault: 20
+app_balance_conf.roll_fault: 0
-app_balance_conf.roll_fault: 45
+app_balance_conf.startup_pitch_tolerance: 0
-app_balance_conf.startup_pitch_tolerance: 20
+app_balance_conf.startup_roll_tolerance: 0
-app_balance_conf.startup_roll_tolerance: 8
+app_balance_conf.startup_speed: 0
-app_balance_conf.startup_speed: 30
+app_balance_conf.tiltback_angle: 0
-app_balance_conf.tiltback_angle: 15
+app_balance_conf.tiltback_duty: 0
-app_balance_conf.tiltback_duty: 0.75
+app_balance_conf.tiltback_high_voltage: 0
-app_balance_conf.tiltback_high_voltage: 100
 app_balance_conf.tiltback_low_voltage: 0
+app_balance_conf.tiltback_speed: 0
-app_balance_conf.tiltback_speed: 5
 app_balance_conf.use_switches: 0
 app_chuk_conf.ctrl_type: 0
+app_chuk_conf.hyst: 0
-app_chuk_conf.hyst: 0.15
+app_chuk_conf.multi_esc: 0
-app_chuk_conf.multi_esc: 1
+app_chuk_conf.ramp_time_neg: 0
-app_chuk_conf.ramp_time_neg: 0.2
+app_chuk_conf.ramp_time_pos: 0
-app_chuk_conf.ramp_time_pos: 0.4
+app_chuk_conf.smart_rev_max_duty: 0
-app_chuk_conf.smart_rev_max_duty: 0.07
+app_chuk_conf.smart_rev_ramp_time: 0
-app_chuk_conf.smart_rev_ramp_time: 3
+app_chuk_conf.stick_erpm_per_s_in_cc: 0
-app_chuk_conf.stick_erpm_per_s_in_cc: 3000
 app_chuk_conf.tc: 0
+app_chuk_conf.tc_max_diff: 0
-app_chuk_conf.tc_max_diff: 3000
 app_chuk_conf.throttle_exp: 0
 app_chuk_conf.throttle_exp_brake: 0
+app_chuk_conf.throttle_exp_mode: 0
-app_chuk_conf.throttle_exp_mode: 2
+app_chuk_conf.use_smart_rev: 0
-app_chuk_conf.use_smart_rev: 1
+app_nrf_conf.address__0: 0
-app_nrf_conf.address__0: 198
+app_nrf_conf.address__1: 0
-app_nrf_conf.address__1: 199
 app_nrf_conf.address__2: 0
+app_nrf_conf.channel: 0
-app_nrf_conf.channel: 76
 app_nrf_conf.crc_type: 1
+app_nrf_conf.power: 0
-app_nrf_conf.power: 3
+app_nrf_conf.retries: 0
-app_nrf_conf.retries: 3
 app_nrf_conf.retry_delay: 0
+app_nrf_conf.send_crc_ack: 0
-app_nrf_conf.send_crc_ack: 1
+app_nrf_conf.speed: 0
-app_nrf_conf.speed: 1
-app_ppm_conf.ctrl_type: 1
+app_ppm_conf.ctrl_type: 3
+app_ppm_conf.hyst: 0
-app_ppm_conf.hyst: 0.1
+app_ppm_conf.max_erpm_for_dir: 0
-app_ppm_conf.max_erpm_for_dir: 4000
+app_ppm_conf.median_filter: 0
-app_ppm_conf.median_filter: 1
+app_ppm_conf.multi_esc: 0
-app_ppm_conf.multi_esc: 1
+app_ppm_conf.pid_max_erpm: 0
-app_ppm_conf.pid_max_erpm: 15000
+app_ppm_conf.pulse_center: 0
-app_ppm_conf.pulse_center: 1.53
+app_ppm_conf.pulse_end: 0
-app_ppm_conf.pulse_end: 1.927
+app_ppm_conf.pulse_start: 0
-app_ppm_conf.pulse_start: 1.137
+app_ppm_conf.ramp_time_neg: 0
-app_ppm_conf.ramp_time_neg: 0.2
+app_ppm_conf.ramp_time_pos: 0
-app_ppm_conf.ramp_time_pos: 0.2
+app_ppm_conf.safe_start: 0
-app_ppm_conf.safe_start: 1
+app_ppm_conf.smart_rev_max_duty: 0
-app_ppm_conf.smart_rev_max_duty: 0.11
+app_ppm_conf.smart_rev_ramp_time: 0
-app_ppm_conf.smart_rev_ramp_time: 0.5
 app_ppm_conf.tc: 0
+app_ppm_conf.tc_max_diff: 0
-app_ppm_conf.tc_max_diff: 3000
 app_ppm_conf.throttle_exp: 0
 app_ppm_conf.throttle_exp_brake: 0
+app_ppm_conf.throttle_exp_mode: 0
-app_ppm_conf.throttle_exp_mode: 2
+app_to_use: 0
-app_to_use: 4
+app_uart_baudrate: 0
-app_uart_baudrate: 115200
+can_baud_rate: 0
-can_baud_rate: 2
 controller_id: 0
+imu_conf.accel_confidence_decay: 0
-imu_conf.accel_confidence_decay: 1
 imu_conf.accel_offsets__0: 0
 imu_conf.accel_offsets__1: 0
 imu_conf.accel_offsets__2: 0
+imu_conf.gyro_offset_comp_clamp: 0
-imu_conf.gyro_offset_comp_clamp: 5
 imu_conf.gyro_offset_comp_fact__0: 0
 imu_conf.gyro_offset_comp_fact__1: 0
 imu_conf.gyro_offset_comp_fact__2: 0
 imu_conf.gyro_offsets__0: 0
 imu_conf.gyro_offsets__1: 0
 imu_conf.gyro_offsets__2: 0
+imu_conf.madgwick_beta: 0
-imu_conf.madgwick_beta: 0.1
 imu_conf.mahony_ki: 0
+imu_conf.mahony_kp: 0
-imu_conf.mahony_kp: 0.3
 imu_conf.mode: 0
 imu_conf.rot_pitch: 0
 imu_conf.rot_roll: 0
 imu_conf.rot_yaw: 0
+imu_conf.sample_rate_hz: 0
-imu_conf.sample_rate_hz: 200
+imu_conf.type: 0
-imu_conf.type: 1
 pairing_done: 0
+permanent_uart_enabled: 0
-permanent_uart_enabled: 1
 send_can_status: 0
+send_can_status_rate_hz: 0
-send_can_status_rate_hz: 50
+shutdown_mode: 0
-shutdown_mode: 1
 timeout_brake_current: 0
 timeout_msec: 1000
 uavcan_enable: 0
3 Likes

Please collect log file from metr app -> Settings -> Show Logs and send it to support@metr.at

Yes, turns out power cycling board during PPM detection is not a good idea. When opening PPM dialog, metr app changes app_ppm_conf_ctrl_type so that your motors do not spin while you calibrate. On closing PPM dialog, metr app restores configuration. But in your case power cycle resulted in configuration zeroed out. I will think about possible solutions

1 Like

brilliant. thanks for the confirmation.

I know how to avoid it now too. and I can probably reproduce it. just to prove you right.

so. that makes sense.

but now that I think about it. why would my actual app to use get changed?

and all those other values?

shouldn’t it write the intermediate state of only this change… and nothing else. and that would survive reboot?

instead it changed a lot of stuff. including disabling the uart by setting app to none.

hmm.

2 Likes

I agree it would be nice to survive reboot, but I never tested that and apparently it doesn’t. But I will try to fix it!

5 Likes

I still get a greyed out button when trying to upload files while connected to my Onewheel (old Metr hardware). Same goes for older files from early July that did upload at that time.

Is there anything I can try to do?

Uploads work again and are pretty quick in doing it. :ok_hand:t3:

Only thing i noticed is that it kicks you back to the realtime tab instead of back to the records.

The second real time layer has the Connections status on top, instead of the bottom. On purpose?

Short answer: uploads do not work any more for old modules.

I did some breaking changes on the server side for client authentication. Now all modules use strong passwordless authentication for uploads. Unfortunately this broke old metr modules, since they don’t use crypto. I don’t really have a good solution for old modules at the moment, maybe I can figure out something. But at least in-app web view is now fully featured and you can see all the details without uploading to the server.

@xsynatic You can hide second status cell. Enter layout editing mode on the second screen and tap it to disable. When resetting layout it is hidden by default. I think you accidentally enabled it.

1 Like

I found it. The issue was that the box was out of bounds or at least not visible on editing mode. I had to reset the layout, that fixed it.

@rpasichnyk

Could I ask of a small feature request? Is it possible to present split motor(VESC?) RPM values in the log? Had some weird behavior today with one side sticking, would have been nice to look which side was doing it…

2 Likes

Could you provide more detail on this please?

Does this mean all uploaded GPS information was in the clear?

Oh no

Tell me Metr CAN is close to launch so I can upgrade :weary:

1 Like

Any ideas why I got negative temp and 0
Battery. What did I breaaakkkk :eyes:

I am.lookimg for this answer for quite some time now… I am hesitating to order a regular one and then the next day the can version will be released :joy:

2 Likes