Fireware multiple ODrive for one time

I have the following task. At the moment I have to connect to each ODrive and reflash each one separately. I would like a python script that can reflash all the wheels at once and not connect to each one separately.

Hi! Which ODrive is this?

Hi, ODrive S1. I found the repository ODriveResources/examples/can_enumerate.py at master · odriverobotics/ODriveResources · GitHub. But at the moment when I scan Odrive. It prints 0 Odrives found. But in Anaconda terminal I see text about 2 ODrives available (serial numbers)

What ODrive firmware version are you running? And are they connected over CAN? can_enumerate.py assumes so.

Yes, I am using CAN, firmware v0.6.10. They connected over CAN.

Hm, interesting. Have you verified that both ODrives can communicate normally over CAN? e.g. if you assign them both node IDs, set some periodic messages to nonzero rate, and run run candump can0, then you see messages from both ODrives?

If you could post a picture of your wiring, that could be helpful!

Unfortunately I can’t share the wiring. At the moment the problem is that find_any returns the first device found. Because of which all attempts to find odrivers are nullified. I have firmware version v0.6.10, I dug around the forum and people claim that there is a find_all function although it is not in the odrive module.

You can pass the specific serial number of the ODrive you’d like to connect to to find_any.

For example: odrv1 = odrive.find_any(serial_number='395234813331').

However, your issue also points to a possible flaw in your can wiring – can_enumerate should work. Can you show how you’re calling the command? What CAN adapter are you using, or is it built into your computer/embedded computer? Are baudrates set correctly, and is the S1 on the same ground net as your CAN adapter / embedded computer? Does each S1 have a unique node ID, or a node ID set to 0x63 (unaddressed)?