The Koch v1.1: the Dynamixel arm in a Feetech world

Every other arm supported here is a Feetech machine at 7.4 V. The Koch v1.1 is not, and that single fact decides its wiring, its driver, its price and which troubleshooting pages you can take literally.

LeRobot community · Last updated 2026-08-09

Maker
LeRobot community
Actuators
5 joints plus gripper, 6 actuators
Each one is a dimension in the action vector
Servos
Dynamixel XL330 and XL430
Supply voltage
5 V and 12 V rails depending on the servo
Dynamixel bus, so the rails are not the ones the Feetech arms use
Parts cost
roughly 250 to 350 euro per arm in parts
Platform support
Compatible
Same data pipeline, the driver is the part that differs
Also written as
Alexander Koch arm, Koch arm
Dataset format
LeRobot v2.0 or v2.1
What every model here reads. ACT, SmolVLA and Pi0.5 also take v3.0, GR00T does not.
Short answer

The Koch v1.1 is a five joint arm with a gripper from the LeRobot community, built on Dynamixel XL330 and XL430 servos rather than the Feetech bus the SO-100 family uses. Parts run roughly 250 to 350 euro and it needs 5 V and 12 V rails depending on the servo. This platform lists it as compatible: the driver differs, the recording, training and deployment path does not.

What the Koch v1.1 is

The Koch v1.1 is a low cost five joint arm with a gripper out of the LeRobot community, usually written as the Alexander Koch arm or simply the Koch arm. Kinematically it lands where an SO-100 lands: six actuators, printed structure, smart serial servos. The parts bill differs, roughly 250 to 350 euro against 110 to 150, and the reason is the servos.

Where the SO-100 family uses Feetech STS3215 units on one chain at one voltage, the Koch uses Dynamixel XL330 and XL430 servos across 5 V and 12 V rails. That is not a footnote. It decides the wiring, the tooling for the chain, the connectors on your bench, and which hardware pages here you can follow line by line.

Specifications

ItemKoch v1.1
MakerLeRobot community
Also writtenAlexander Koch arm, Koch arm
Kinematics5 joints plus gripper, 6 actuators
ServosDynamixel XL330 and XL430
Supply5 V and 12 V rails depending on the servo
Parts costroughly 250 to 350 euro per arm
Platform supportCompatible
Dataset formatLeRobot v2.0

Dynamixel instead of Feetech: the difference that matters

Feetech STS3215 and Dynamixel XL servos solve the same problem inside different ecosystems. Both are smart serial servos: you address a unit by id over a shared line and ask it for a position rather than feeding it a pulse width. What differs is the protocol, the connector, the USB interface that speaks it, the register names behind torque and position, and the voltage the motor expects.

All of that stops at the serial port. Above it, a joint angle is a joint angle. The client records the same six values per control step, writes the same LeRobot v2.0 layout and fine-tunes the same five policies. Nothing in a dataset records which brand of servo produced the numbers, which is why all four training guides exist for this arm as well.

Below the serial port almost nothing carries over from a Feetech build. Ids are written with Dynamixel tooling, the chain reaches the host through a Dynamixel USB interface rather than a Feetech bus adapter, and the limits you might inspect live in a different register map. Budget an evening for the parts that are muscle memory on one bus and unfamiliar on the other.

The data pipeline does not know what a Dynamixel is

A LeRobot v2.0 dataset holds joint positions, camera frames and the task string. There is no servo field and no arm model field in it, so a Koch recording and an SO-100 recording are structurally identical. /glossary/lerobot-dataset has the layout, /glossary/episode explains what one recording contains, /glossary/teleoperation covers the driving half.

Power: two rails, and a warning that runs both ways

A Feetech arm is one supply into one chain. A Koch is not. Which rail a given servo wants depends on the model at that joint, and a Koch build mixes two families, so you cannot infer the voltage from the joint position.

Two rails here, and neither of them is 7.4 V

Read the label on each servo rather than assuming, because 5 V and 12 V are both correct here depending on the unit. Then keep those supplies away from any Feetech hardware on the bench: the 12 V supply a Koch legitimately needs is the exact supply that destroys an SO-100, an SO-101 or a LeKiwi arm in seconds. A shared desk with unlabeled leads is how this goes wrong, and it goes wrong once.

What compatible support means in practice

The catalog marks the SO-100 and SO-101 as fully supported and the Koch v1.1 as compatible. That word is doing real work and is worth spelling out.

From the carton to the first movement

  1. 1
    Sort the servos by model, not by joint

    Separate the XL330 units from the XL430 units first and note which rail each expects. This prevents the expensive mistake later, when everything is assembled and the labels are hidden.

  2. 2
    Write the ids with the Dynamixel tooling

    Each servo needs its id set while the connector is reachable. The Feetech utility from an SO-100 build will not do this, and neither will the CLI.

  3. 3
    Follow the SO-100 build for the rhythm, not the parts

    /learn/so-100-getting-started is written for a Feetech arm, but assemble, pair, list devices, calibrate is the same sequence here. Only the servo tooling and the wiring differ.

  4. 4
    Install the client and pair this machine

    The installer from /download brings the CLI and the desktop client with the driver inside.

    bash
    curl -fsSL https://www.ay-robots.com/install.sh | sh
    ay-robots pair 4QD2-8HRM-1XV6
    ay-robots status
  5. 5
    Find the port and count six servos

    Six units answering means the Dynamixel chain is sound. Reach that point before attaching cameras.

    bash
    ay-robots devices
  6. 6
    Calibrate, then send it home

    Guide the joints to the neutral pose, press Enter to store the zero, then command the home pose. The reference belongs to this physical arm.

    bash
    ay-robots calibrate
    ay-robots home

What the platform trains and runs on a Koch v1.1

The same four policy families with the same defaults, because the defaults come from the model rather than the arm. Nothing in the table changes because the bus is Dynamixel.

PolicyGuideGPU tierEpisodes to startInference per step
SmolVLA/train/smolvla-on-koch-v1-1RTX 4090 or any 24 GB card30about 245 ms
ACT/train/act-on-koch-v1-1RTX 4090 or any 24 GB card50about 20 ms
GR00T N1.7/train/groot-n1-7-on-koch-v1-1A100 80 GB or H100 80 GB50about 152 ms
Pi0.5/train/pi0-5-on-koch-v1-1A100 80 GB or H100 80 GB50about 485 ms
bash
# Record while you teleoperate. The command starts and stops the recording, it does not drive the arm.
ay-robots record --task "stack the small block on the large block" --episodes 50 --cameras wrist,top

ay-robots datasets list --local
ay-robots datasets upload block-stack --name block-stack-koch

# No training subcommand exists. Start the run under Training in the dashboard,
# or call the start_training tool on the MCP server.

ay-robots run --model smolvla --checkpoint s3://runs/block-stack-koch/step-20000 --task "stack the small block on the large block"
ay-robots stop
Identical to a Feetech arm. Everything specific to Dynamixel happened before the first of these lines.

Model detail sits at /policies/smolvla, /policies/act, /policies/groot-n1-7 and /policies/pi0-5. If a run dies as soon as it starts, the cause is usually memory or format rather than hardware: /fix/out-of-memory-training and /fix/dataset-rejected-v3 account for most of it.

Against the other three arms

  • SO-100 and SO-101: one Feetech chain, one 7.4 V supply, roughly 110 to 170 euro in parts, full support. The cheaper and better trodden route, and the SO-100 is what /live actually runs.
  • LeKiwi: a Feetech arm at 7.4 V on a 12 V three wheel base, roughly 400 to 500 euro, and the only supported machine whose action vector is wider than six values.
  • Koch v1.1: the only Dynamixel arm here, the only one where a 12 V rail is correct rather than fatal, and the most expensive fixed arm on the list.

Frequently asked questions

Can I run a Koch v1.1 on a 7.4 V supply?

No, and the mistake runs opposite to the usual one. The Koch expects 5 V and 12 V rails depending on which servo sits at that joint, so check the label on each unit.

Do I need different training settings for a Koch?

No. Batch size, learning rate, step count and gradient accumulation are properties of the model, not the arm. The defaults are listed in /train/smolvla-on-koch-v1-1.

Can I train on Koch and SO-100 episodes mixed together?

The shapes line up, since both produce six values per control step, so a trainer accepts it. Whether it helps is another matter: link lengths and calibration zeros differ, so the same joint number means a different pose.

Does the Dynamixel bus change inference latency?

The figures here, about 20 ms for ACT up to about 485 ms for Pi0.5, are the time the model needs for one action step on the rented GPU. Transport on the servo bus is a separate cost. See /glossary/inference-latency.

Why is the Koch v1.1 more expensive than an SO-100?

The servos. A Koch build is roughly 250 to 350 euro against 110 to 150, and the Dynamixel units are where the difference sits.

Will compatible support stop working on me?

Compatible means the driver layer differs and the SO-100 is tested first. Recording, datasets, all five trainers, checkpoints and the MCP tools are shared code, so the surface where the two can diverge is the driver.

Was this page helpful?