LSS-4DOF Robotic Arm - Unable to Communicate via Standard ASCII Serial (Linux User)

Hello,

I recently purchased an assembled LSS-4DOF Robotic Arm from Lynxmotion (via RobotShop). According to the product description, the unit was manufacturing tested.

I am working from a Linux (Ubuntu 22.04) system and attempting to communicate directly with the arm via standard serial ASCII commands over /dev/ttyUSB0 (using 115200 baud).
I have verified:

  • USB detection and device enumeration (ttyUSB0 present).
  • Correct Linux serial drivers (ch341 loaded).
  • External servo power is connected and stable.
  • Serial connection opens successfully using picocom or screen.

When sending standard ASCII queries (e.g., #254Q + Enter), the device responds only with unreadable characters (garbage data).
I have clinically tested different baud rates (9600, 57600, 250000) with no success.
Only at 115200 baud do I receive any characters — but they are not valid responses.

I do not have access to Windows, and therefore cannot use the FlowArm software.

My goals:

  • Confirm if the unit is stuck in a special mode (e.g., FlowArm protocol, bootloader).
  • Understand if there is a way to reset the LSS servos or LSS Adapter back to standard LSS ASCII command mode.
  • Proceed with direct ASCII control from Linux or Raspberry Pi.

Any help or official guidance would be greatly appreciated.

Thank you!

Jasmine

Hi Jasmine,

Welcome to our RobotShop / Lynxmotion community…!!

Looking in your order you got the “Assembled” version of the 4DoF arm which, indeed, should have been tested.

However sending a “#254” command address all servos as the same time and they will also try to answer all at the same time which gives you unreadable characters.

Try to talk to One servo at a time based on the IDs on the wiki.
Ex: #1Q

All the best,

2 Likes

Hi dialfonzo,
Of course, silly me! Yes, it’s all working now.
Thank you so much.
Jasmine

Hi Jasmine,

There is a trick if you want to query or address multiple servo at once by creating Groups.
If that’s something you want to do.

Thanks for contacting the RobotShop / Lynxmotion support center.

Here’s a clear explanation of Group Commands and Slots based on LSS Firmware v370 and the LSS Communication Protocol:


:small_blue_diamond: Group Commands

Group commands allow multiple servos to receive and respond to a single serial command without bus contention.

:white_check_mark: Why use Group Commands?

  • Efficient communication
  • Avoids response collisions
  • Speeds up multi-servo queries or updates

:white_check_mark: Example (Using Direct IDs):

#0QD#5QD#10QD\r
  • Asks servos with IDs 0, 5, and 10 to send back their positions.
  • They’ll all try to reply at once (can cause collisions unless managed).

To combine position + current in a single line:

#0QD0QC0#5QD0QC0\r
  • 0 after each command separates them properly.
  • Servo 0 and 5 each report position (QD) and current (QC).

:small_blue_diamond: Auto Baud Rate (ABR)

Lets servos automatically detect the baud rate on power-up.

  • Enable once:
#254ABR1\r
  • Enable, and re-enable after 30s inactivity:
#254ABR2,30\r

:warning: ABR is not compatible with LSS Config software currently.


:small_blue_diamond: Delayed Query Response

Used to scan the full bus without response collisions.

#254QID120\r
  • Sends a global query for servo IDs.
  • Each servo waits: 200ÎĽs + ID * 120ÎĽs before replying.
  • Helps prevent collision when querying all IDs.

:warning: #254QID with no parameter risks conflict (kept for backward compatibility).


:small_blue_diamond: Slots System

Slots allow you to assign a logical index (slot) to each servo for safe group communication.

:white_check_mark: Why use Slots?

  • Prevents bus collisions during group queries
  • Useful when servo IDs are not sequential

:hammer_and_wrench: Setup Example:

Let’s say your servos have IDs: 0, 5, and 10.
You want them to be Slot 0, 1, and 2, respectively.

#254SLOTCOUNT3\r   // Defines 3 slots total
#5SLOT1\r          // ID 5 → Slot 1
#10SLOT2\r         // ID 10 → Slot 2

(ID 0 defaults to Slot 0 so it doesn’t need to be set)

:white_check_mark: Group Query by Slot:

#254QD\r
  • Queries all slots for position (QD)
  • Responses are auto-delayed based on slot order
#254QD0QC0\r
  • Queries all slots for position + current

:mag: Summary: ID vs Slot

Feature ID-based Slot-based
Setup Effort Low (default) Needs manual config
Collision Risk High None (delayed)
Sequential Needed? Yes No
Reconfig on Power-Up? No (slots reset) Yes (set at each power-up)

Would you like a diagram showing slot setup vs ID communication?