Summary
motor_thermistor.temperature always reads nan on the ODrive Micro (fw 0.6.11), regardless of configuration. The external 10K NTC thermistor is wired correctly to the THERMISTOR+/- pins and the ADC reads a valid, stable voltage via get_adc_voltage(1).
This appears to be a firmware bug in the internal decode_pin() function — no gpio_pin value (0–15, or special values 255/256/257) maps GPIO1 to the thermistor ADC channel.
Hardware
- ODrive Micro, fw 0.6.11
- External 10K NTC thermistor (beta 3950) wired to THERMISTOR+/THERMISTOR- header pins
- Motor: DM-S-6015 (14pp gimbal motor)
What works
odrv0.get_adc_voltage(1) # Returns ~2.95V (stable, valid)
odrv0.thermistor0 # Returns ~39°C (board temp, works)
odrv0.axis0.motor.fet_thermistor.temperature # Returns ~37°C (works)
With the 1kΩ internal pullup on the Micro’s THERMISTOR+ pin, the ADC voltage is consistent with a 10K NTC at room temperature:
import math
v = odrv0.get_adc_voltage(1) # 2.95V
r_ntc = 1000.0 * v / (3.3 - v) # ~8400 ohm
temp = 1.0 / (1.0/298.15 + (1.0/3950.0) * math.log(r_ntc / 10000.0)) - 273.15
# Returns ~28.3°C — correct room temp
What doesn’t work
odrv0.axis0.motor.motor_thermistor.temperature # Always nan
Current config (saved to flash)
motor_thermistor.config:
enabled: True
gpio_pin: 1
mode: 0 (Beta model)
r_ref: 10000.0
beta: 3950.0
t_ref: 25.0
temp_limit_lower: 100.0
temp_limit_upper: 120.0
temperature: nan <-- BUG
What I’ve tried
Every combination of:
gpio_pin: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 255, 256, 257mode: 0 (Beta), 1 (Steinhart-Hart)r_ref: 3300, 4700, 10000, 47000, 100000enabled: True- Save + reboot after each change
- Full erase_configuration + reconfigure from scratch
Result: always nan, regardless of settings.
The ADC path (get_adc_voltage(1)) works fine through every test, confirming the hardware is correct. The thermistor module’s internal pin-to-ADC mapping appears broken on the Micro.
Workaround
Reading get_adc_voltage(1) directly and computing temperature in the host application works, but this bypasses the firmware’s thermal protection (temp_limit_lower/upper have no effect).
Request
Is there a known working gpio_pin value for the THERMISTOR+ pin on the Micro? Or is this a confirmed firmware bug? Since the v0.6.x firmware is closed-source, a community fix isn’t possible — this would need a firmware update from ODrive.