Kraken x60 motor help (non frc)

Hi,

I am a part of UofM’s autonomous driving team. We are trying to experiment with the kraken to use next year over the neos but are running into some issues. We are currently just using a simple Odrive can to usb adapter (not the canivore). the motor just straight up doesn’t communicate with the can and the motor perpetually flashes alternating red lights. Our laptop can communicate with the CAN via cmd but it seems like the can to motor might be bad. Image and error msg attached.

Thanks

import phoenix6 >>> from phoenix6.hardware import TalonFX >>> motor = TalonFX(1) >>> [phoenix] CANbus Connected: can0
[phoenix] CANbus Network Up: can0
[phoenix] CANbus Failed Bring-up: can0
[phoenix] Library initialization is complete.
[phoenix-diagnostics] Server 2025.1.0 (Mar 22 2025, 22:55:55) running on port: 1250

1 Like

Frankly I don’t know much about it, but the specs say socketCan is required for the kraken if you aren’t using a rio or canivore.

Krakens can run off of normal can too. You lose a little bit of functionality though. I don’t see a terminating resistor. You need a resistor (120 ohm) on the other side of the can line. You can also control it over pwm.

2 Likes

If the image above is accurate to the testing configuration, you probably need to terminate the other end of the CAN bus for it to work properly.

1 Like

There are a couple things that I would verify:

  1. The onboard terminating resistor of the CAN to USB adapter should be enabled, and ideally the other end should also be terminated with a 120-ohm resistor. At CAN 2.0B speeds, things may work with only one terminating resistor with a short bus, but as you add more devices that will not remain true.
  2. Make sure you configure the USB to CAN adapter in SocketCAN to use the correct settings. As is the case with other FRC devices, all our devices operate at 1 Mbps on CAN 2.0B, so you need to configure the adapter to match. We have an example script to perform this setup.
6 Likes

Hi. Followup after we tried putting another terminating resistor. We don’t have 120ohms so we made a 125 ohm which should be okay. Nothing else changed but we still are still getting flashing red.

Have you sent a CAN frame with the adapter to test? What’s the result of candump can0? What’s the result of ip addr?

I would look at our non-FRC Linux user docs and Phoenix 6 example as a reference.

Also, isn’t odrive a motor controller? I didn’t know it exposed a socket can interface.

If it does, you should be fine. If not, then it won’t work and you’ll need something like a CANivore or CANable.

The Kraken has a built in integrated controller. If you want standalone like NEO, Minion may be a better fit.

Hi,

Here is our candump and ipaddr:

candump:
can0 02046BC0 [6] 78 00 63 17 02 00
can0 02046D40 [6] 00 00 00 00 00 80
can0 02045080 [8] 00 00 00 60 00 00 00 00
can0 02045180 [8] 00 00 00 C0 52 19 1E 1A
can0 020451C0 [8] 00 00 80 30 00 00 00 00
can0 02045240 [8] 00 00 00 00 00 00 00 00
can0 02045280 [8] 00 00 00 00 00 00 00 00
can0 020452C0 [8] 00 00 00 00 00 00 00 00
can0 02045300 [8] 00 00 00 5B 8B B3 00 00
can0 02045080 [8] 00 00 00 60 00 00 00 00
…goes on.
ipadd:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: wlp1s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 3c:06:30:02:49:b8 brd ff:ff:ff:ff:ff:ff
inet 35.0.27.222/20 brd 35.0.31.255 scope global dynamic noprefixroute wlp1s0f0
valid_lft 1020sec preferred_lft 1020sec
inet6 fe80::dcf1:5c84:b541:60d6/64 scope link noprefixroute
valid_lft forever preferred_lft forever
5: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP group default qlen 10
link/can

We are getting alternating orange right now, with the same setup as previously. On the documentation one of the reasons it doesn’t work could be that we aren’t connecting a “robot controller” at the bus. What does that mean? would the can work just through the laptop or do we need the roborio or something else?

Also, our can adapter is manufactured by odrive, we aren’t using the actual odrive motor controller. Here is a link if it helps.

Alternating orange means your CAN bus should be fine, the device just isn’t seeing a robot program with an enable frame. In a non-FRC context, you need to manually feed the enable frame. Also make sure your device is not FRC locked (factory default the device from Phoenix Tuner X).

With the Tuner, I’m getting “no device detected on can bus” when I try. (I just open the tuner after connecting the system and making sure the can is connected using linux)

What specific error is mentioned in that box? Note that your robot program needs to be running for Tuner X to be able to connect.