oDrive 3.6 Won't Connect

Hello,

I’ve been bench testing for a few months now on with a 56V odrive 3.6. Powered up the PSU today and suddenly have no communication with the board. The power led lights up. But serial commands won’t work. Usb communication doesn’t work. I have no idea what might have happened as I made no changes since I last used it two days ago.

I’ve tried changing usb ports and cables. I’ve tried a different OS. In windows, the device doesn’t show up at all in the device manager. If I switch to DFU it does show up. So I figured I’d try to re flash the firmware

I’ve tried using odrivetool dfu on both windows and mac. With the dip switch on run it just hangs at Wating for Odrive…

When I switch to DFU I get this (on osx):

ODrive control utility v0.4.11
Waiting for ODrive…
Traceback (most recent call last):
File “/usr/local/bin/odrivetool”, line 142, in
odrive.dfu.launch_dfu(args, logger, app_shutdown_token)
File “/usr/local/lib/python3.7/site-packages/odrive/dfu.py”, line 454, in launch_dfu
update_device(device, firmware, logger, cancellation_token)
File “/usr/local/lib/python3.7/site-packages/odrive/dfu.py”, line 266, in update_device
otp_data = dfudev.read_sector(otp_sector)
File “/usr/local/lib/python3.7/site-packages/odrive/dfuse/DfuDevice.py”, line 195, in read_sector
self.set_address_safe(sector[‘addr’])
File “/usr/local/lib/python3.7/site-packages/odrive/dfuse/DfuDevice.py”, line 159, in set_address_safe
raise RuntimeError(“An error occured. Device Status: {!r}”.format(status))
RuntimeError: An error occured. Device Status: (11, 10, 0, 0)
Segmentation fault: 11

I get a different error in windows.

I’ve tried to use the STLink to flash. It failed as well.

sudo openocd -f interface/stlink-v2.cfg -f target/stm32f4x.cfg -c init -c “reset halt” -c “flash write_image erase ODriveFirmware_v3.6-56V.elf” -c “reset run” -c exit

Open On-Chip Debugger 0.10.0

Licensed under GNU GPL v2

For bug reports, read

http://openocd.org/doc/doxygen/bugs.html

Info : auto-selecting first available session transport “hla_swd”. To override use 'transport select '.

Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD

adapter speed: 2000 kHz

adapter_nsrst_delay: 100

none separate

Info : Unable to match requested speed 2000 kHz, using 1800 kHz

Info : Unable to match requested speed 2000 kHz, using 1800 kHz

Info : clock speed 1800 kHz

Info : STLINK v2 JTAG v29 API v2 SWIM v7 VID 0x0483 PID 0x3748

Info : using stlink api v2

Info : Target voltage: 3.153975

Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints

Info : Unable to match requested speed 2000 kHz, using 1800 kHz

Info : Unable to match requested speed 2000 kHz, using 1800 kHz

adapter speed: 1800 kHz

target halted due to debug-request, current mode: Thread

xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc

auto erase enabled

Info : device id = 0x10076413

Warn : STM32 flash size failed, probe inaccurate - assuming 1024k flash

Info : flash size = 1024kbytes

Error: stm32x device protected

Error: failed erasing sectors 0 to 5

Any thoughts on what else to try? Any idea as to what might have occurred? I need to buy 3 more odrives to complete my project, but now I’m a bit concerned about the reliability.

Thanks for any help in advance!

We’re not sure why this happens but it’s a thing. In the ODrive firmware folder, and with an STLink connected, use the command “make unlock” to unlock the chip, then “make flash”. You should only have to unlock it once

Thanks for the reply! Just to clarify, are you saying I just navigate to my firmware download folder in osx terminal then type “make unlock” and “make flash” or are these commands within openocd?

Thanks!

After doing some googling I found this command:

openocd -f interface/stlink-v2.cfg -f target/stm32f4x.cfg -c init -c “reset halt” -c “stm32f4x unlock 0” -c “reset run” -c shutdown

Which seemed to do the trick and allowed the chip to be unlocked. I did a reinstall of the firmware and now I’m able to reconnect to the board over usb with the odrive tool. Unfortunately it overwrote all my settings however.

Any idea what’s causing this bug? Would love to know if there’s something I can do to avoid it in the future. Also hoping that theres some kind of way to save a configuration file in the future so that restores are a lot less work.**

1 Like

That command is the same as make unlock from the Firmware folder :wink:

Not sure what causes it. Yes, you can make a backup of your config https://docs.odriverobotics.com/odrivetool#configuration-backup

Thanks again for the help. Didn’t know about the backup, will have to do that for the future. I did try “make unlock”. But got error messages. Prob user error.