USB Power issues (USB0_EN_OC) Using Auvidea J120 Carrier

Since we switched over to using the TX2 as our primary means of control, we started using a device called a CANable to connect it up to our CANbus from the Auvidea J120 carrier we use. We’ve tried using the onboard CAN but had a lot of issues with reliable timing using that, which is why we are using the CANable. The CANbus isn’t the issue though.

As a result of using the CANable, we are reliant on USB. Specifically, on the J120 Carrier, we are using the Micro USB port that is available and can act as a host or OTG port. In our case, it’s a host port. Here is where the issue comes from… Occasionally, on boot, we see some dmesg errors like this:

[ 5.899103] gs_usb 1-1:1.0: Couldn’t send data format (err=-110)
[ 5.905246] gs_usb: probe of 1-1:1.0 failed with error -110

The “-110” seems to indicate that the device is attempting to request more current than what is available and then it fails. This in turn means the kernel module doesn’t load properly and we don’t have a CANbus (can0 device) that we can connect to.

What’s interesting is that in the Auvidea J120 manual, it indicates that the power enable signal for that port comes from the A17 pin on the TX2, which in turn enables the USB power for the port (500mA max). The port is listed as USB0_EN_OC.

Our current theory is that something is going on with either the TX2 or the J120 where that port doesn’t have power enabled at the exact moment the kernel module is trying to load so it can’t source the current needed for the device. We haven’t been able to fully confirm this though and we are looking for other people who are aware of any other instances of this or of something to this. Alternatively, any thoughts on other things we can try.

The USB device does enumerate (lsusb shows it) but the kernel module won’t load. We also know that this doesn’t happen all the time and only happens maybe 1 in 30 to 1 in 50 attempts/reboots.

Simultaneous to this, we are also looking at the CANable device to make sure it isn’t trying to source more than 500mA but that seems unlikely from the schematics and what we know.

We have not tried reloading the kernel module when this occurs yet but I have a hunch that will work and might end up being our work-around. We do know that a reboot can fix it and we also know that hot plugging the CANable can fix it so I’m fairly certain unloading and reloading the module will as well.

Any help that is provided is appreciated.

Hi, the load switch of vbus is on the carrier board, it should be able to afford 500mA at least, you might need to check with Auvidea to confirm that first. The power supply output should be after enumeration. Did you check other usb devices? If this failure only happen on specific device occasionally, it might be a compatible problem.

Thanks for the response! So the device we are using really shouldn’t ever draw anywhere near 500mA though we are doing some testing to confirm that. We haven’t been in touch with Auvidea yet but will be soon once we’ve completely ruled out the device itself.

There are other devices connected to the USB 3.0 (technically one of them is a 2.0) ports but the only device connected to the micro USB port is the CANable and nothing else. All of the other devices come up fine connected to the other ports.

I’m not sure what you mean by “compatible problem”. Can you elaborate on what you mean and if there is anything we can do to check? The CANable is a USB to CAN converter that shows up as a socketCAN device under the OS.

What i said is “If this failure only happen on specific device occasionally, it might be a compatible problem.” which means maybe the device has matching problem to system.

Is it possible to measure the sequence of USB0_EN_OC and power supply of usb device? That can confirm if the sequence fits the request of device.

Thanks for explaining that. That’s what I thought you might have meant but wasn’t sure. I don’t think that’s the issue as we’re using these USB devices on a variety of systems and have only ever seen this error on the Jetson TX2 with the J120 carrier. We are looking at the device power draw though and trying to collect some measurements and I’ll post the results of that once we have them.

I’m not sure how we can measure the sequence of the device, is that diagnostic or debug information we can set some flags for to obtain? Would be happy to collect more data for it but we’re not sure how.

Thanks!

Some additional details we’ve collected as of this morning. This device is running the candlelight firmware and the source for that is available on GitHub and specifically, we know from the USB descriptor setup that it is requesting 150mA:

https://github.com/candle-usb/candleLight_fw/blob/master/src/usbd_gs_can.c

“0x4B, /* MaxPower 150 mA */”

We’ve also hooked up a meter to the device and monitored less than 0.00A (the meter we have at the moment doesn’t have additional sig figs so we are looking at alternatives and a scope).

At this point though, I’m very much inclined to think this has something to do with how the device is booting up and that particular USB port so I’m going to reach out to Auvidea support.