LynxMotion HT1 loses CAN ID

Hi,
We’re currently using 3 LynxMotion HT1 servos, they work perfectly fine, except sometimes they seem to lose their CAN ID randomly. Has it ever happened to one of you guys? Do you have an idea why it happens and how to solve it?

Best regards,
Jeremy

@jayduf69 Welcome to the RobotShop Community. Can you indicate what you mean by “CAN ID”? The IS is set via serial as opposed to CAN BUS. Are you using the action command “ID” or the configuration command “CID”? If you use ID, you need to set it once during that session (each time the servo starts up or loses power), whereas CID only needs to be sent once (not each time you run the code) and it’s saved to the servo’s memory. Losing the ID is not a known issue.

1 Like

It seems to return to its factory state, we can’t adress it anymore, we need to unplug our 2 other servos and use the command to set the CID again. it happened to us about 4 times now on different motors.

Thanks

@jayduf69 Appreciate the update.

We have not had any previous incidents reported to us from customers where servos have only lost one part of a configuration such as the ID. Hypotheses:

  • Can you ensure your code does not use the ID or CID command at all? You should only need to set this once and do not need to have it set every time the code is run
  • Can you ensure you do not accidentally send an ID, CID or RESET command, or some other command which might impact a servo setting?
  • Can you ensure the button on the servo itself is not accidentally being touched?
  • Is there the possibility that something external to the servos is affecting them (not a normal USB to serial adapter, weird power etc.), or that the original ID or CID command send to the servos was not properly received?

We’ll need to know a lot more if we’re to help troubleshoot or diagnose what might be happening.

1 Like

Hi,

  • We’re not using any CID commands unless we need to set a new one.
  • We sometimes use reset commands for the new settings to take effect
  • We’ve checked for the buttons, there’s no way it can be pressed by accident
  • Our power and comms have been checked with an oscilloscope and everything’s fine
1 Like

@jayduf69 I’ll bring another developer into this conversation to see if they have ideas.

Hello @jayduf69, welcome to the forum

Can you tell us what configuration you are using? For example, an LSS Adapter board with 3 servos.
Can you share a picture of your set up?

Are you sending commands to servos simultaneously? Did you make sure to set the ID of each one separately and the same baud rate for all?
It is possible that if you have multiple servos with the same ID there may be collisions and this may cause errors.
If you are unsure you set the servos IDs correctly I suggest checking this tutorial:

Have you ever tried to use RC mode, using the CRC command? In this mode, the servo will no longer accept serial commands. The servo can be placed back into smart mode by using the button menu.

Regards

1 Like

We’re only using Serial commands. I can’t send a picture of our setup since it’s confidential. We’ve set IDs separately and we are sending different commands to different servos at the same time to obtain simultaneous movement. We’re using a Teensy 4.1.

1 Like

Is the Teensy 3.3V serial logic as opposed to 5V logic? Could it be that commands are not being properly received?

1 Like

We’re using a level shifter from 3.3V to 5.5V and vice versa

1 Like

Hi jayduf69,

I’ve been using the LSS and never experienced an ID lost before.
Maybe it has to do with the nature of your code.

Here are some things I’m thinking about:

  • Do you use a Library for your Teensy or plain code ?
  • When you say “randomly” does it happen quickly or it can take weeks/months ?
    (If it happens quickly, a logic analyzer could be useful to verify what the servos are getting)
  • When it happens, have you tried to just power cycle the servos ? I’m asking that to eliminate the servo being in a “locked” software mode maybe.

In theory if all of your servos are out of the ID=0 you don’t need to unplug them to set the ID, unless you are telling us that all of the servos goes back to the ID=0 at the same time ?

2 Likes

We’re using a HT1 library we made ourselves where we can use functions to send Serial commands to the servos. One servo usually loses its ID every week or so. We’ve tried powering on and off but without success. we usually just send a new ID using the Serial command CID. You’re right about the part where we don’t need to unplug them all since they’re not all back to ID 0. Thanks!

1 Like

If you are willing to test that, here is my suggestion.

Since the servo that loose its ID seems to be always the same one, I would change the ID for this servo physically and in your code and use the old ID on another servo.

My test would be to discriminate if the issue is material (that particular servo) or linked to the code itself.

(Obviously, if you could swap the two servos Physically that would be even better.)

The thing is, it’s not always the same servo. I meant it usually happens one at a time. but the 3 servos lost their ID at some point in our testing…

Thanks

That’s odd to be honest and it seems to be something related to your code / library.
Would you happen to have a “CID” command in your library that you could remove entirely ?

our CID command is only in a function which is never called anywhere. One of our motor reset last night… It was working perfectly when I left the office and when we started up the machine this morning, one of our motor wasn’t responsive due to ID loss. Is there anything electrically, like a number of power offs and power on that could reset something in the LynxMotion HT1?

Two of our motors are connected in daisy chain, which mean they share the same power and RX TX. They seem to be the motors that lose their ID. Most of the time only one at a time

No - The only way to change an ID is to do a Configure ID or a Factory Reset.
Before fixing the ID on your servo, have you verified if it was set to something else than Zero ?

All of your servos should share the same serials unless you use two different port on your PC / Microcontroller.

If it was my setup, I would remove the CID entirely from your library.
This is usually set in the LSS-Config and might solve your issue.

It always comes back to 0. Is there a way to a factory reset without pressing the button?

If for some reasons you use the “DEFAULT + CONFIRM” OR “DEFAULT + RESET” function, it will reset all of the settings including the ID.