NEW PCB Design : Cannot find odrivetool!

Hey everyone,
I designed the first version of my own PCB based on the orignal schematic.
My first test was easy: flash the program, and connect odrivetool with micro usb.

the odrive tool cannot find the board at all…

I double checked the micro usb connection, it was right.

which here PIN 2-D- connectted to (USB DM, F405 PIN44)
PIN 3-D+ connectted to (USB DP, F405 PIN45)
and between was bridged with an 22R resistor. (Just like the original design! )

flashed the program… ok

One reason might be: something wrong with my hex file?
someone is kindly send me an reliable version of the newest HEX file?

P.S. I tried the “odrivetool dfu” command, appears odrivetool doesnt find the board anyway.



I think you need some code flashed on to the chip to allow you to do a USB upgrade. Do you have an stlink you can try?


Simon is right. You need an ST-Link V2 programmer to flash the board the first time. Here’s flashing instructions:

Hello Simon,
Yes I do have a stlink V2.
the code is the HEX file which I compiled from the github source. However, I had some problem to configure the compile enviroment, the hex file is produced but not like perfect.
Since now I cann’t figure out another reason which leads to the failure, I doubt the hex file is somewhat wrong.


Hey, thank you for your tip. I red throught the page, only thing different is I flashed the program on Windows with an stlink flash software (ST-LINK Utility), and with “HEX” file instead of “ELF”, I can only flash hex file with this software.


I think flashing the hex is fine. Does it say flashing succeeded?

If you use the stlink utility you should be able to talk to the chip and just verify that it’s being detected as the device you’re compiling for. Unless someone sends you a hex file in the mean time, I’ll set up a build machine and compile the project and send you a hex file in the morning.


Yes, it is:

actually, I also used another method to flash that: I put the hex file in the route of an MDK project, and flashed it…

and didn’t work neither…
I would try the elf file with openocd later. But if doesn’t work neither, I cann’t figure out another reason:
The logic train is simple: the MCU is running, then the usb port is active, odrivetool should detect the MCU.


Hey Simon,
That is very kind. You could add the build file to the github repository if you’d like : )


I tried openocd, was flashed successfully. However the problem is still there.

I could almost sure the problem is on the HEX/ELF file or something wrong with the micro-usb.


If you used the hex file from the link I posted then it’s not likely to be a hex file issue. To clarify, are you using the same IC as the ODrive chip? If you are then the next thing to look at as you say is the USB connection.


Yes, I use exactly the same F405RGT6.
I used a reliable HEX file, the USB port still doesn’t work. Now I am doubt maybe the MCU is not running…
I checked the oscillator, find that it is not oscilating…
I use a 2 PIN 8M passive crystal, tried either 10pF and 20 pF cap, not working…
and I checked the .ioc file, double checked if the external oscillator is activated, yes it is activated.
this is how it looks like:

I just cannt figure that out.

If you’re not seeing anything on the oscillator, it might be worth recompiling to use the internal oscillator just to see if you can get any sign of life.


Same problem.
I developed the “ODrive” PCB on my own.
There is only one motor driver (M0) is implemented.
It is flashed successfully with HEX-file several times (both methods: DFU and UART)
The device is determined in proper way, but ODriveTool (runs behalf of Admin rights) doesn’t recognize the controller.
It doesn’t answer in UART-mode either.