Kinesis® K-Cube™ Stepper Motor Controller

  • Peak Power Output up to 12 W
  • Seamless Operation with Many of Thorlabs' Stepper Motor Actuators
  • Operate Locally via Panel Controls or Remotely from a PC via USB

Application Idea

A KST201 Controller Being
Used to Drive an LNR25ZFS Stepper Motor Translation Stage (Sold Separately)


Power Supply
Sold Separately

Table Mounting Plate
(Included with the KST201)

Related Items

Please Wait

Click to Enlarge

Back and Top Views of the KST201 K-Cube
(See the Pin Diagrams Tab for More Information)

Click to Enlarge

KCH601 USB Controller Hub with Installed K-Cube Modules 


  • Compact Footprint: 60.0 mm x 60.0 mm x 49.2 mm
  • Differential Encoder Feedback (QEP Inputs) for Closed-Loop Positioning
  • Supports 2-Phase Bi-Polar Stepper Motors up to 15 V at 12 W (Peak)
  • High-Resolution Microstepping: 2048 Microsteps per Full Step
  • Trapezoidal or S-Curve Velocity Profiles
  • Easy-to-Use Manual Controls
    • Velocity Wheel: Variable-Speed Bidirectional Control
    • Digital Display Menu: Jogging Functionality with Position Presets
  • Full Kinesis® or APT™ Software Control Suite (See Motion Control Software Tab for Details)
  • Software Compatible with Other Kinesis and APT Controllers for Integrated Systems Development
  • Settings can be Saved to Allow Stand-Alone Operation via Top Panel Controls
  • Single-Channel Power Supply Options Available Separately
  • Multi-Axis Expansion Using USB Controller Hubs (Sold Separately)
  • Magnetic, Clip-On Optical Table Mounting Adapter Included

The KST201 K-Cube Stepper Motor Controller is a part of Thorlabs' new and growing Kinesis® line of high-end, compact motion controllers. Designed to provide easy manual or automatic control of lower powered stepper motors (up to 15 V at 12 W operation) such as our ZST and ZFS range of actuators (see the Specs tab), this single-channel controller features a choice between trapezoidal and S-shaped velocity profiles and a high theoretical microstep resolution (49,152 for a 24 full step motor, 409,600 for a 200 full step motor). It offers full and highly flexible control features that provide a unique high resolution microstepping capability in a compact unit. 

The unit has a highly compact 60.0 mm x 60.0 mm x 49.2 mm footprint, allowing it to be positioned close to the motorized system for added convenience when manually adjusting motor positions using the top panel controls. Tabletop operation also allows minimal drive cable lengths for easier cable management. Each unit also contains a front-located power switch that, when turned off, saves all user-adjustable settings. Please note that this switch should always be used to power down the unit. For convenience, a 1.5 m long Type A to Type Micro B USB 3.0 cable is included with the KST201 cube.

USB connectivity provides easy 'Plug-and-Play' PC-controlled operation with two available software platforms: our new Kinesis software package or our legacy APT (Advanced Positioning Technology) software package. The Kinesis Software features new .NET controls which can be used by 3rd party developers working in the latest C#, Visual Basic, LabVIEW™ or any .NET compatible languages to create custom applications. Our legacy APT software allows the user to quickly set up complex move sequences with advanced controls made possible via the ActiveX® programming environment. For example, all relevant operating parameters are set automatically by the software for Thorlabs stage and actuator products. For more details on both software packages, please see the Motion Control Software and APT Tutorials tabs.

Optical Table Mounting Plate
Each unit comes with a mounting plate that clips onto the base of the controller. The plate contains two magnets for temporary placement on an optical table and two counterbores for 1/4"-20 (M6) cap screws for a more permanent placement on the tabletop. Please see the Specs for a mechanical drawing of the table mounting plate and the Mounting Options tab for how to mount the plate.

Power Supply Options
The preferred power supply (single channel or hub-based) depends on the end user's application and whether you already own compatible power supplies. To that end and in keeping with Thorlabs' green initiative, we do not ship these units bundled with a power supply.

Multiple units can be connected to a single PC by using the KCH301 or KCH601 USB Controller Hubs, available below, for multi-axis motion control applications. The KCH301, shown below and to the right, allows up to three T- or K-Cube controllers to be used while the KCH601, shown to the right, allows up to six controllers to be used.

All power supply options compatible with the KST201 Motor Controller can be found below.

Other Stepper Motor Controllers
K-Cube™ Single-Channel Controller 1-, 2-, and 3-Channel Benchtop Controller Modular 2-Channel Rack System Module
KST201 Specifications
Motor Output
Motor Drive Voltage 12 to 15 V (Depending on Supply)
Motor Drive Current 750 mA (Peak)
Motor Drive Type 12-bit PWM Control
Control Algorithm Open-Loop Microstepping
Stepping 2048 Microsteps per Full Step
49,152 Microsteps per Revolution
(24 Step Motora)
Position Feedback Quadrature Encoder (QEP) Input,
5 V Differential
Encoder Feedback Bandwidth 500 kHz
Position Counter 32 bit
Operating Modes Position and Velocity
Velocity Profile Trapezoidal or 'S' Profile
Motor Drive Connector (15 Way D-Type)
Motor Drive Outputs Phase A and B
Quadrature Encoder
(QEP) Input
Limit Switch Inputs Forward, Reverse (+ Common Return)
Encoder Supply 5 V
Front Panel Controls
Sprung Potentiometer Wheel Variable-Speed Bidirectional
Velocity Control,
Forward/Reverse Jogging 
or Position Presets
Input Power Requirements
Voltage 12 to 15 V Regulated DC
(15 V Recommended)
Current 1 A (Peak)
USB Connector Type USB 3.0
USB Connection Speed USB 1.1 Full Speed (12 Mbps)
Housing Dimensionsb
(W x D x H)
60.0 mm x 60.0 mm x 49.2 mm
(2.36" x 2.36" x 1.94")
  • Optimized for use with ZST and ZFS Series Stepper Motor Actuators. See table to the right for compatible actuators.
  • Including Top Panel Controls
Compatible Motor Specifications
Motor Type 2-Phase Bi-Polar Stepper
Peak Power 12 W
Rated Phase Current Up to 1 A Peak
Step Angle Range 1.8° to 20°
Motor Drive Mode Current
Coil Resistance (Nominal) 5 to 20 Ω
Coil Inductance (Nominal) 2 to 5.5 mH
Position Control Open Loop
Compatible Thorlabs Stages and Actuators
Linear Translation Stage LNR25ZFS
Linear Actuators ZST206ZST213ZST213BZFS06,

Click to Enlarge
Mechanical Drawing of the KST201 and Included Optical Table Adapter

Motor Controller Connector

D-Type Female

D-type Female

Pin Description Pin Description Pin Description
1 Ground 6 Phase A -ve 11 Enc A +ve
2 CCW Limit Switch 7 Phase A +ve 12 Enc A -ve
3 CW Limit Switch 8 For Future Use 13 Enc B +ve
4 Phase B -ve 9 Stage Identification 14 Enc B -ve
5 Phase B +ve 10 +5 V DC 15 For Future Use


SMA Female


SMA Female

SMC Male SMC Male
+5 V TTL +5 V TTL

These connectors provide a 5 V logic level input and output that can be configured to support triggering into and out of external devices. Each port can be independently configured to control the logic level or to set the trigger as an input or output.

Computer Connection*

USB 3.0

*The USB 3.0 port is compatible with a USB 2.0 Micro B connector if the Micro B connector is plugged into the shaded region in the photo above. A USB 3.0 type A to type Micro B cable is included with the KST201.

K-Cube Mounting Options

Two options are available to securely mount our K-Cube controllers onto an optical table. An optical table mounting plate, provided with every K-Cube, allows for a single controller to be attached to an optical table. Alternatively, three- and six-port USB controller hubs are offered (sold separately) that can mount and power our K-Cube controllers. These options are described in further detail below.

Optical Table Mounting Plate
Each K-Cube unit comes with a mounting plate that clips onto the base of the controller, as shown in the animation to the right. The plate contains two magnets for temporary placement on an optical table and two counterbores for 1/4"-20 (M6) cap screws for a more permanent placement on the tabletop. Please see the Specs tab for a mechanical drawing of the table mounting plate.

Kinesis USB Controller Hubs
Multiple units can be mounted and connected to a single PC by using the KCH301 or KCH601 USB Controller Hubs. They each consist of two parts: the hub, which can support up to three (KCH301) or six (KCH601) K-Cubes or T-Cubes, and a power supply that plugs into a standard wall outlet. K-Cubes simply clip into place using the provided on-unit clips, while current- and previous-generation T-Cubes require the KAP101 Adapter Plate, shown in the animation above. The hub vastly reduces the number of USB and power cables required when operating multiple controllers.

K-Cube Table Mounting Plate

Unlike T-Cubes, every K-Cube includes a mounting plate that clips onto the base of the controller. The plate contains two magnets for temporary placement on an optical table and two counterbores for 1/4"-20 (M6) cap screws for more permanent placement on the tabletop.

Kinesis USB Controller Hubs

3- and 6-Port USB Controller Hubs allow multiple controllers to be connected to one PC for multi-axis applications. K-Cubes can be directly attached to the hubs while T-Cubes require a KAP101 Adapter Plate.

Thorlabs offers two platforms to drive our wide range of motion controllers: our Kinesis® software package or the legacy APT™ (Advanced Positioning Technology) software package. Either package can be used to control devices in the Kinesis family, which covers a wide range of motion controllers ranging from small, low-powered, single-channel drivers (such as the K-Cubes™ and T-Cubes™) to high-power, multi-channel, modular 19" rack nanopositioning systems (the APT Rack System).

The Kinesis Software features .NET controls which can be used by 3rd party developers working in the latest C#, Visual Basic, LabVIEW™, or any .NET compatible languages to create custom applications. Low-level DLL libraries are included for applications not expected to use the .NET framework. A Central Sequence Manager supports integration and synchronization of all Thorlabs motion control hardware.

Kinesis Software
Kinesis GUI Screen
APT Software
APT GUI Screen

Our legacy APT System Software platform offers ActiveX-based controls which can be used by 3rd party developers working on C#, Visual Basic, LabVIEW™, or any Active-X compatible languages to create custom applications and includes a simulator mode to assist in developing custom applications without requiring hardware.

By providing these common software platforms, Thorlabs has ensured that users can easily mix and match any of the Kinesis and APT controllers in a single application, while only having to learn a single set of software tools. In this way, it is perfectly feasible to combine any of the controllers from single-axis to multi-axis systems and control all from a single, PC-based unified software interface.

The software packages allow two methods of usage: graphical user interface (GUI) utilities for direct interaction with and control of the controllers 'out of the box', and a set of programming interfaces that allow custom-integrated positioning and alignment solutions to be easily programmed in the development language of choice.

A range of video tutorials is available to help explain our APT system software. These tutorials provide an overview of the software and the APT Config utility. Additionally, a tutorial video is available to explain how to select simulator mode within the software, which allows the user to experiment with the software without a controller connected. Please select the APT Tutorials tab above to view these videos.


Kinesis Version 1.14.47

The Kinesis Software Package, which includes a GUI for control of Thorlabs' Kinesis and APT™ system controllers.

Also Available:

  • Communications Protocol
Software Download


APT Version 3.21.6

The APT Software Package, which includes a GUI for control of Thorlabs' APT™ and Kinesis system controllers.

Also Available:

  • Communications Protocol
Software Download

Thorlabs' Kinesis® software features new .NET controls which can be used by third-party developers working in the latest C#, Visual Basic, LabVIEW™, or any .NET compatible languages to create custom applications.

This programming language is designed to allow multiple programming paradigms, or languages, to be used, thus allowing for complex problems to be solved in an easy or efficient manner. It encompasses typing, imperative, declarative, functional, generic, object-oriented, and component-oriented programming. By providing functionality with this common software platform, Thorlabs has ensured that users can easily mix and match any of the Kinesis controllers in a single application, while only having to learn a single set of software tools. In this way, it is perfectly feasible to combine any of the controllers from the low-powered, single-axis to the high-powered, multi-axis systems and control all from a single, PC-based unified software interface.

The Kinesis System Software allows two methods of usage: graphical user interface (GUI) utilities for direct interaction and control of the controllers 'out of the box', and a set of programming interfaces that allow custom-integrated positioning and alignment solutions to be easily programmed in the development language of choice.

For a collection of example projects that can be compiled and run to demonstrate the different ways in which developers can build on the Kinesis motion control libraries, click on the links below. Please note that a separate integrated development environment (IDE) (e.g., Microsoft Visual Studio) will be required to execute the Quick Start examples. The C# example projects can be executed using the included .NET controls in the Kinesis software package (see the Kinesis Software tab for details).

C Sharp Icon Click Here for the Kinesis with C# Quick Start Guide
Click Here for C# Example Projects
Click Here for Quick Start Device Control Examples
C Sharp Icon

LabVIEW can be used to communicate with any Kinesis- or APT-based controller via .NET controls. In LabVIEW, you build a user interface, known as a front panel, with a set of tools and objects and then add code using graphical representations of functions to control the front panel objects. The LabVIEW tutorial, provided below, provides some information on using the .NET controls to create control GUIs for Kinesis- and APT-driven devices within LabVIEW. It includes an overview with basic information about using controllers in LabVIEW and explains the setup procedure that needs to be completed before using a LabVIEW GUI to operate a device.

Labview Icon Click Here to View the LabVIEW Guide
Click Here to View the Kinesis with LabVIEW Overview Page
Labview Icon

The APT video tutorials available here fall into two main groups - one group covers using the supplied APT utilities and the second group covers programming the APT System using a selection of different programming environments.

Disclaimer: The videos below were originally produced in Adobe Flash. Following the discontinuation of Flash after 2020, these tutorials were re-recorded for future use. The Flash Player controls still appear in the bottom of each video, but they are not functional.

Every APT controller is supplied with the utilities APTUser and APTConfig. APTUser provides a quick and easy way of interacting with the APT control hardware using intuitive graphical control panels. APTConfig is an 'off-line' utility that allows various system wide settings to be made such as pre-selecting mechanical stage types and associating them with specific motion controllers.

APT User Utility

The first video below gives an overview of using the APTUser Utility. The OptoDriver single channel controller products can be operated via their front panel controls in the absence of a control PC. The stored settings relating to the operation of these front panel controls can be changed using the APTUser utility. The second video illustrates this process.

APT User - Overview
APT User - OptoDriver Settings

APT Config Utility

There are various APT system-wide settings that can be made using the APT Config utility, including setting up a simulated hardware configuration and associating mechanical stages with specific motor drive channels. The first video presents a brief overview of the APT Config application. More details on creating a simulated hardware configuration and making stage associations are present in the next two videos.

APT Config - Overview
APT Config - Simulator Setup
APT Config - Stage Association

APT Programming

The APT Software System is implemented as a collection of ActiveX Controls. ActiveX Controls are language-independant software modules that provide both a graphical user interface and a programming interface. There is an ActiveX Control type for each type of hardware unit, e.g. a Motor ActiveX Control covers operation with any type of APT motor controller (DC or stepper). Many Windows software development environments and languages directly support ActiveX Controls, and, once such a Control is embedded into a custom application, all of the functionality it contains is immediately available to the application for automated operation. The videos below illustrate the basics of using the APT ActiveX Controls with LabVIEW, Visual Basic, and Visual C++. Note that many other languages support ActiveX including LabWindows CVI, C++ Builder, VB.NET, C#.NET, Office VBA, Matlab, HPVEE etc. Although these environments are not covered specifically by the tutorial videos, many of the ideas shown will still be relevant to using these other languages.

Visual Basic

Part 1 illustrates how to get an APT ActiveX Control running within Visual Basic, and Part 2 goes on to show how to program a custom positioning sequence.

APT Programming Using Visual Basic - Part 1
APT Programming Using Visual Basic - Part 2


Full Active support is provided by LabVIEW and the series of tutorial videos below illustrate the basic building blocks in creating a custom APT motion control sequence. We start by showing how to call up the Thorlabs-supplied online help during software development. Part 2 illustrates how to create an APT ActiveX Control. ActiveX Controls provide both Methods (i.e. Functions) and Properties (i.e. Value Settings). Parts 3 and 4 show how to create and wire up both the methods and properties exposed by an ActiveX Control. Finally, in Part 5, we pull everything together and show a completed LabVIEW example program that demonstrates a custom move sequence.

APT Programming Using LabVIEW -
Part 1: Accessing Online Help
APT Programming Using LabVIEW -
Part 2: Creating an ActiveX Control
APT Programming Using LabVIEW -
Part 3: Create an ActiveX Method
APT Programming Using LabVIEW -
Part 4: Create an ActiveX Property
APT Programming Using LabVIEW -
Part 5: How to Start an ActiveX Control

The following tutorial videos illustrate alternative ways of creating Method and Property nodes:

APT Programming Using LabVIEW -
Create an ActiveX Method (Alternative)
APT Programming Using LabVIEW -
Create an ActiveX Property (Alternative)

Visual C++

Part 1 illustrates how to get an APT ActiveX Control running within Visual C++, and Part 2 goes on to show how to program a custom positioning sequence.

APT Programming with Visual C++ - Part 1
APT Programming with Visual C++ - Part 2


For assistance when using MATLAB and ActiveX controls with the Thorlabs APT positioners, click here.

To further assist programmers, a guide to programming the APT software in LabVIEW is also available here.

Posted Comments:
Joe Foley  (posted 2023-08-24 13:14:14.057)
Hello I have been reviewing the Kenesis software download in hopes of creating a LabVIEW .NET base VI. It seems to be missing the "Thorlabs.MotionControl.Controls.dll". Any help would be greatly apricated. Please disregard the need for an offline installer. Regards, Joe Foley
fguzman  (posted 2023-08-25 07:04:49.0)
Thanks for your enquiry. There are two solutions to this problem that we've tested and proven to work: 1 - Force LabVIEW to load the Common DLL prior to creating the K-Cube. You can do this by calling the static function 'GetSIUnitSymbol' which is contained in the Common DLL. This creates an additional project dependency in the LabVIEW project for the Common DLL which means that LabVIEW DOES check the VI and LabVIEW project location and it doesn't crash. 2 - Provide the Common DLL in the LabVIEW program folder. Simply copy the files that are missing (in this case "Thorlabs.MotionControl.Tools.Common.dll") to the folder named "C:\Program Files (x86)\National Instruments\LabVIEW". Copy all of the Kinesis files just to be on the safe side.
Joe Foley  (posted 2023-08-23 15:16:43.3)
Hello, I need to do an offline installation of the Kinesis Version 1.14.37 software. I get an error when I attempt to copy it to a removable USB drive. Is there an offline installer available? Regards, Joe Foley
fguzman  (posted 2023-08-25 07:11:03.0)
Thanks for your enquiry. I have addressed your other enquiry. If you need further assistance please contact your local Thorlabs office
Martin Tmej  (posted 2022-06-22 10:30:39.837)
Hello, is it possible to connect a signal from external scale to control the position, please? Thank you, Martin Tmej
cwright  (posted 2022-06-22 09:31:08.0)
Response from Charles at Thorlabs: Thank you for your query. Unfortunately the position of a stage connected to the KST101 cannot be scaled according to an analogue input like it can be through the KPZ101 for example. There are trigger inputs on this controller though, so it would be possible to move the device between specific positions when a TTL input signal is received.
Qiuchen Zhao  (posted 2021-10-14 11:10:10.803)
Hi, I am a KST 101 user in Purdue University. I met a question when i was trying to control a ZSF13B with Matlab. Is it possible to drive KST101 with matlab? I could get the moter series number with motor.listdevices, but always shows "Stage not recognised" when I try to connect the device. Thank you, Qiuchen
cwright  (posted 2021-10-15 10:38:46.0)
Response from Charles at Thorlabs: Thank you for your query. While our stages can sometimes be used in Matlab with the dlls they may not always work due to compatibility issues that arise with different Matlab and Kinesis versions. This is why we do not officially support Matlab. The best approach when using Matlab is to send serial commands from our APT communication protocol:
Håkan Olsson  (posted 2021-05-17 04:53:03.85)
Hello is it possible to controll the kst101 in simple way with an analog input signal ie 0-5v trigger1 forward motion and trigger2 0-5v backwards motion preferable steppless speed relative to 0-5v Rgds Håkan
cwright  (posted 2021-05-17 06:18:17.0)
Response from Charles at Thorlabs: Hello Håken and thank you for your query. No this is not possible with the KST101. The trigger ports use TTL signals and a high or low signal can be used to initiate a move but the voltage cannot control the velocity.
Paul Farnsworth  (posted 2020-08-15 19:01:42.007)
I am attempting to control some of your stepper motor actuators through the Kinesis software using Labview. I need to trigger moves externally, and the descriptions of the trigger functions imply that they could be used for this purpose. However, I can find nothing in the literature that explains how the trigger event is connected to the desired move. Suppose I set the trigger mode for one of the two triggers to TrigIN_Absolute_Move. What then? Does a subsequent move command wait for a trigger before it executes? I would appreciate any suggestions.
cwright  (posted 2020-08-18 05:43:41.0)
Response from Charles at Thorlabs: Thank you for your query. The triggers use 5V TTL logic levels and when using the triggers as an input for a move absolute, the move will be initialised when it sees a transition from the inactive to active logic state (rising or falling edge). This is referred to as the trigger polarity. If the trigger polarity is 'Trigger High' the inactive state is 0V and the move will trigger on a rising edge to 5V and vice versa for 'Trigger Low'. To trigger multiple moves the logic level will have to return to the inactive state before triggering the next move.
user  (posted 2020-01-19 08:04:23.547)
What's the best way to communicate to kst101 controllers via python? Do you have example code?
AManickavasagam  (posted 2020-01-23 06:50:59.0)
Response from Arunthathi at Thorlabs: We do not offer a documentation for the use of the KST101 with Python yet. However, we have some examples for other controllers that are based on the C API and .NET API that are included in the Kinesis software package. I have contacted you directly with the available examples which you could use as reference to build your code.
Ayuob Al  (posted 2019-11-20 15:24:22.68)
I bought KST101 controller to control the motion of stepper motor. The stepper motors that I have are : stepper motor 23hs22-2804s and Parker AMP 5023-067 Servo Motor. I did all of the hardware wiring, but the neither one of the motor moves correctly. They either don't work, or they keep spinning in the wrong direction. I’m not sure if those two motors are compatible with this controller. Hope someone would give me some help since I already bought the controller.
cwright  (posted 2019-12-03 11:03:50.0)
Response from Charles at Thorlabs: Hello Ayuob, I’m sorry to hear you are having these issues but unfortunately we cannot support the use of third party equipment with our controllers and advise against this due to the possibility of causing damage to either the controller or the motor. I would suggest though that the servo will not work with a stepper motor controller without extensive modifications to the controller.
user  (posted 2019-07-30 13:16:11.127)
Can it be controlled and programmed without ActiveX control ? If I can by serial communication or VISA command, I want to use these rather than activeX.
AManickavasagam  (posted 2019-07-30 05:06:43.0)
Response from Arunthathi at Thorlabs: Thanks for your query. Yes you are able to control the KST101 and all our APT and Kinesis compatible devices with serial communication. Please see the link to the document describing the communications command:
jean-paul.adam  (posted 2019-01-11 07:04:46.557)
Hi, I am using KST101 controllers on a PC with windows8.1 with APT. They work fine but I would like to interface them using python. Can you offer me some support for this? Best regards
bhallewell  (posted 2019-01-14 03:42:16.0)
Response from Ben at Thorlabs: Thank you for your question. We have an area on our website which covers some of the documentation & examples which we hold for third party programming here. This support includes programming with LabVIEW, APT & C#/VB. This covers support for our legacy motion control software APT, as well as Kinesis which replaces APT adding improved functionality. For Python, whilst we currently don't hold documentation or examples on the website, we may still be able to assist you. I will contact you directly to see if I can help.
douglas.shepherd  (posted 2018-07-13 19:09:37.957)
We are attempting to program three KST101 units using Kinesis in C#. Do you have an example on connecting, initializing, setting up, homing, and setting up triggering for this unit? Thank you.
bhallewell  (posted 2018-07-17 09:44:15.0)
Response from Ben at Thorlabs: Thank you for your email here. I would recommend taking a look at the .NET API included with the Kinesis software package. This will provide a KST101 C# example. Please also see our Kinesis C# Example & Quick Start projects on the following page. These include a range of WinForms & Console Applications. A similar example from this list would be the 'KDC_Console_net_managed' example which shares many Generic KCube Motor commands & device manager commands with the KST101 device. The KDC101 is a Servo Motor controller, whereas KST101 is a Stepper Motor controller. For querying & configuring Trigger Settings I would advise looking at Thorlabs::MotionControl::GenericMotorCLI::ControlParameters::KCubeTriggerConfigParams Struct Reference within the .NET API.
mkarakose  (posted 2018-04-27 14:58:20.29)
Hi, We are using ZFS06 with KST101 successfully. We use ZFS06 with a mirror holder and the mirror should touch another surface but ZFS06 pushes so hard that the mirror cracks. We want the mirror surface to touch the other one but not crack and the movement of ZFS06 to stop. We were wondering if it is possible to reduce the drive voltage supplied by KST101 to ZFS06, so that the pushing strength of ZFS06 will be lowered. Thanks in advance. Hoping to hear from you soon! Best Regards Mustafa Karaköse
AManickavasagam  (posted 2018-04-30 11:58:31.0)
Response from Arunthathi at Thorlabs: Thanks for your query. I have contacted you directly with a list of possibilities that you might want to consider for your application.
n0a.rolv  (posted 2018-04-11 09:24:38.83)
The Kinesis user guide says that each unit is shipped with a calibration file, which mine didn't. Where can I get it?
bhallewell  (posted 2018-04-16 11:22:55.0)
Response from Ben at Thorlabs: Thank you for your feedback. As per our Kinesis manual, calibration files are only provided with our NRT100, NRT150, LTS150, LTS300 and MLJ050 series stages as well as DRV013 and DRV014 actuators. I will feed this back onto our Marketing team with a view to make this more clear in the APT manual.
nkaddy  (posted 2017-07-27 10:08:59.89)
How would I control the KST101 using a joystick? Can this be done directly without running through a PC?
bhallewell  (posted 2017-07-27 10:37:59.0)
Response from Ben at Thorlabs: Within Kinesis, the menu item 'Input Devices' on the main application File menu can be used to open and configure a Joystick or Game Controller. Further details of setting up a Joystick for this function can be found in the Kinesis help file from the Kinesis software download, which can be found here.
julien.gautier  (posted 2016-10-26 14:20:49.083)
Hi I try to install apt software on XP 32 bits The software seem to be well installed but when i click on it I have the following message :(nul) is not a Win 32 application Could you help me Best regards
bhallewell  (posted 2016-10-27 03:26:41.0)
Response from Ben at Thorlabs: Unfortunately our up-to-date software packages no longer support Windows XP. I will contact you directly to discuss a solution.
william.dai  (posted 2016-06-14 17:49:03.78)
Is this controller compatible with the NRT100, 100 mm Motorized Linear Translation Stage? I am designing a fixture that benefits from the smaller footprint of this controller. If necessary, I can purchase the BSC201 controller, but the size and cost is not preferred.
bwood  (posted 2016-06-15 05:05:28.0)
Response from Ben at Thorlabs: Thank you for your feedback. Unfortunately, the NRT series of stages require the higher specifications of the BSC benchtop stepper motor controllers for correct performance. Thus we cannot recommend using the KST101 to control the NRT100.
dbarnard  (posted 2016-02-18 16:08:37.083)
Which version of the .NET framework are the Kinesis DLLs built with? I add them as references to my .NET 4.6.1 x64 project, but at run-time, it says that the Thorlabs.MotionControl.DeviceManagerCLI.dll or one of its dependencies could not be loaded. Usually, that means a x86 vs. x64 mismatch or an incompatible CLR version mismatch. I don't see it documented anywhere which version of .NET is needed for these DLLs. I am using a TST101. Also, is there a sample project that I could compile like the ones I see in the .chm file? Thanks.
bwood  (posted 2016-02-19 06:11:11.0)
Response from Ben at Thorlabs: Thank you for your feedback. Kinesis is built using .Net 4.5. The error you are seeing is usually due to either: ·Incompatible .Net versions. 4.6.1 is backward compatible to 4.5 so this should not be a problem here. ·Incompatible Platform. The Kinesis DLLs are platform specific, so you should build your application using either x86 or x64. AnyCPU may work but may result in undefined issues ·Missing support DLLs The Kinesis .Net DLLs depend upon a number of Native C DLLs. It is important that these are copied to your project output folder. We suspect that this is probably your issue. The Native C DLLs are listed in the help files. Sample projects are available, but at present they are not published. These can be obtained on request.
ahmed.bouzid  (posted 2015-08-05 10:06:34.52)
Hello, I'm looking to get some TST101s to control some ZST206s using Linux Octave scripts, hopefully. I read some of the comments below and briefly looked at the referenced "Communications Protocol" document. My question is: Is there an example you can point me to that talks to a driver like that, through USB, in Octave/Matlab that tells it to home and then move a certain number of steps? I'm not worried about the GUI here, just home, move, stop. I wanted to make sure I can get the drivers that'll allow me to do simple steps like that before I order the parts. Thank you, Ahmed
bwood  (posted 2015-08-07 05:18:22.0)
Response from Ben at Thorlabs: Thank you for your interest in our products. The system you are trying to create should be achievable. I will contact you directly with our Matlab support documentation and to discuss your requirements.
patrick.hallen  (posted 2014-06-30 17:20:42.627)
We would like to integrate the TST001 into our DAQ, which runs on Linux. Could you please provide me with information on how to control the TST001 with Linux?
msoulby  (posted 2014-07-02 04:24:06.0)
Response from Mike at Thorlabs: Our APT software is currently only compatible with Windows based operating systems. However it is possible to use our low level communication protocols over virtual COM port to control you motor in Linux. The communications protocol document can be downloaded from the following page and we will also contact you directly with some further information about the protocols.
gnishi  (posted 2013-10-30 12:24:02.547)
I am planning to control FW103 by TST001 through a Linux computer. Could you give me more information to manage TST001 by Linux OS?
msoulby  (posted 2013-10-30 13:05:00.0)
Response from Mike at Thorlabs: Currently out APT software is only compatible with windows based operating systems. If you are using a Linux based system you will have to use our low level communications protocols for our motor controllers to talk directly to the devices you are using. I have contacted you directly with a copy of this document and details of its use.
fwilliams  (posted 2013-10-23 21:29:40.36)
PROBLEM SOLVED: I found that the problem was associated with the stepper-motor actuator (ZST13). Replacing with a spare motor eliminated the problem. I will write to ask for an RMA.
msoulby  (posted 2013-10-24 06:29:00.0)
Response from Mike at Thorlabs: Firstly we are sorry to hear you have been having problems with your stepper actuator. We will contact you directly so we can expedite the replacement for you.
fwilliams  (posted 2013-10-22 18:51:01.097)
FOLLOWUP: I installed the most-recent version of APT User (APT Version 2.20), but I still get the error, even when running from APT User - happens about once every 25-60 times.
fwilliams  (posted 2013-10-22 17:04:29.503)
I have been running two TST001's, both Issue 1 Mod B. I use an ActiveX control to command both units. I use MoveJog to step the motors. Both units have run flawlessly - until today. I now get a fatal error from both units, but on a random basis. It usually occurs anywhere from 25 - 100 steps into a session. An error screen displays the following message: Error [Code = 10055]:- [MG17Comms.DLL] Internal; Internal Code = 11571202. Description: USB Comms Error Notes: A USB communications error has occurred. Extra Info: FT_IO_ERROR. A USB communication problem has occurred with this controller. Communication to this controller is suspended. The software should be closed and the controller powered off and on to try re-establishing USB communication. I try just that, and the unit runs for a while, and then fails in the same way. I made absolutely no changes to the software and/or hardware - it just started happening. I have tried unplugging all USB devices, rebooting, etc., but no joy. My driver as reported by Windows is ver. 3.2. I noticed online that your latest version is 3.3 (although the .inf file downloaded as ver. 3.3 has the same version number listed internally). I am running in a W7 x64 environment, but the ActiveX control is implemented in a 32-bit runtime compiler (Matlab). Help, please!
thomas.piok  (posted 2013-09-06 11:28:44.083)
Hello, I tried to use the activeX control - but it failed. It was not possible to install it (using the Thorlabs APT ActiceX Control manual). The delivered test program works fine. (Hardware: Win7 64 bit, Matlab 7.5; TST001) Tom
jlow  (posted 2013-09-06 14:34:00.0)
Response from Jeremy at Thorlabs: We will contact you directly to troubleshoot this.
fwilliams  (posted 2013-07-08 11:34:58.547)
Running APT User ver. 2.3.4701.37075, there is no way to delete old APT Parameter Sets. I have tried entirely deleting the application and drivers (including wiping the registry), but the old parameter sets are still there when I re-install the software. Is there a way to clean up the list of APT Parameter Sets? Where is this list saved on the computer (W7 x64)?
jlow  (posted 2013-07-08 15:46:00.0)
Response from Jeremy at Thorlabs: The configuration files are located by default under C:\Windows. The two files should be "MG17APTServer.ini" and "MG17APTUser.ini".
jlow  (posted 2013-07-09 12:03:00.0)
Response from Jeremy at Thorlabs: I misunderstood the question from earlier. The APT Parameter Sets are stored in the Windows registry. An easy way to delete the parameter sets is done via the APT User. Click on “File”, then click on either “Load Parameter Set” or “Save Parameter Set As” (doesn’t matter which). Select the parameter you want to delete, then press the “Delete” key on your keyboard. A window will pop-up asking you to confirm the deletion.
tcohen  (posted 2013-02-08 06:04:12.48)
Response from Tim at Thorlabs to ino: This will require the software to be fully uninstalled ensuring all the folders and files are removed. The error tells us that the config utility cannot read the registry files correctly, possibly through a corrupted installation. We would recommend a complete reinstall of the software with admin rights. We will contact you to make sure you are able to have a successful reinstallation.
ino  (posted 2013-01-29 09:10:12.96)
I have problems running APT Config and APT User with TST001 (firmware 1.3.0) on Windows 7 (both 32 bit and 64 bit). I have downloaded and installed the latest version of APT (software and support). When I try to start APT Config (ver. 1.1.0), the "failed to read values" message appears, and the utility looks frozen. But after 20 minutes or so, the configuration window appears, and everything works fine. The device can be detected and configured. Similar things happen when I run APT User (ver. 2.3.4701.37075). 20 minutes after I started APT User (it looks frozen), the control display appears, and I can control ZST13 with no problem. Please advise.
tcohen  (posted 2013-01-10 12:40:00.0)
Response from Tim at Thorlabs: Thank you for contacting us. There was a bug where at very slow velocities that actuator did not stop. This has been resolved and will be released in the next software version. I will contact you to provide this version.
shravan.g.shankar  (posted 2013-01-06 21:55:34.403)
Similar to some other posts that I saw below, I am having the same problem with the STOP button of the APT User software. It works only when the moving speed is set as 0.25 mm/s. I generally use the motor at low speeds where the STOP button never works. I have to wait for the whole range entered to be traversed or pull the plug on the motor(which I don't like to do).
jlow  (posted 2012-11-06 16:21:00.0)
Response from Jeremy at Thorlabs: The "Stop" button should halt a move in the APT program. It could possibly be something else running in the background that is preventing the "Stop" function from being implemented properly. I will get in contact with you directly to troubleshoot this further.
fwilliams  (posted 2012-11-02 18:31:07.77)
I currently own two TST001's that I use on a daily basis. I am running your most-recent version of APT User (ver. 2.2.4604.12615). I am writing to tell you that APT User has a bug in it, which is that "Stop" does nothing. Once the motor starts moving to a new position, the only way to stop the motion is to literally pull the power plug out of the controller. Clicking on Stop has no effect. The UI shows that the "button" is being clicked, but the control ignores the command.
user  (posted 2011-11-23 17:55:58.0)
Response from Tyler at Thorlabs: Hello Dareis, I believe the information that you are looking for is part of the documentation in the software package. Our software can be downloaded for free from the Software tab above. Just in case I misunderstood your request and application engineer will be contacting you. Thank you, Tyler
dareis  (posted 2011-11-15 10:50:36.0)
I have a Motor Controller and I'm trying to find documentation on the ActiveX parameters for different methods. Where can I find a datafile on what each paramter means when I pass it to different methods. All I can find on your website is a simple description of what each method does, not how to use them.
jjurado  (posted 2011-06-15 16:53:00.0)
Response from Javier at Thorlabs to jorda300: Please contact us at so that we can review the parameters passed for the move sequence. You should be able to run just a single move command, so we will have to investigate a bit further. Please contact us and we will gladly assist you.
jorda300  (posted 2011-06-10 10:35:24.0)
I am attempting to set Move Sequences on the "Move Sequencer" tab of the APT User. It was my understanding that if I wanted to run just ONE single row of data, all I needed to do is right click on the appropriate row of data and select Run from the pop up menu. However, for my TST001 Stepper Motor which is connected to a FW103 Filter Wheel, this feature does not work. Any ideas why not?
jjurado  (posted 2011-03-15 11:02:00.0)
Response from Javier at Thorlabs to Eric: Thank you for contacting us. It is possible for the communication issue to be brought about by fast changes in the current range from moving to stationary. This could potentially affect the noise level of the motor and cause it to stall. We would suggest reducing the the maximum current of the motor to see if this helps. You can change the Phase Powers values in the APT User utility, in the Settings screen. I will contact you directly for follow up.
echandle  (posted 2011-03-10 18:37:14.0)
I am attempting to drive ZST25 actuators with TST001 motor controllers in a stepwise fashion to generate two-dimensional grid, while providing outgoing clocks to another device that synchronize with position. Ive developed a similar LabView VI to the one provided in the example VIs, yet I receive sporadic USB communication failures with the TST001. These failures most often occur in the middle of the faster stepping sequence, despite having the bWait parameter set to true and an additional wait time in between steps. I would appreciate a copy of the communication protocol documentation for the TST001, not only to solve this problem, but to develop a multi-platform driver (for Linux specifically). Thanks! Eric
user  (posted 2010-08-24 17:38:22.0)
A reply from Jens at Thorlabs: Using the APT GUI does not allow you to make relative moves in either the APT User application or your own application. The APT GUI operates only in absolute motion. Axis length are defined x min 0mm x max 25mm (default). A negative motion will produce an error since you cannot go into the negative region. One redefine the axis values. For a 25mmm actuator one can set x min to -12.5mmm and x max to 12.5mm. Now you can negotiate a negative absolute motion command. Programming with the ActiveX methods work the same. The ActiveX when started always operates with absolute motion commands. But a relative methods may be imported. The relative method will allow you to enter a plus or negative motion value (in mm) but you cannot move into the negative region if the axis min is defined as 0mm.
doron.azoury  (posted 2010-08-24 13:14:29.0)
Im using APT in Labview, controlling a Z625B motor inside a linear stage. I cant find a way to control the direction of a relative move. positive relative move work properly. Do you have a suggestion? Thank you Doron
user  (posted 2010-05-04 04:32:44.0)
A response from Oli at Thorlabs to Craig: We will recreate this error in order look into this problem in detail we will keep you updated on progress and a solution.
craig.brideau  (posted 2010-05-03 18:26:03.0)
I had a TST001 in a T-Cube hub with a bunch of TDC001s. The firmware updater handled the TDCs ok but it kept crashing on open comms with the TST. I pulled the TST from the hub and hooked it up independently (direct USB connection, external 15V supply) and it finally updated OK.
jjessop  (posted 2009-07-24 12:26:19.0)
A response from Thorlabs to psm1: It is dues to possible known firmware bug, please download latest version from our website.
psm1  (posted 2009-07-23 14:28:18.0)
Persist to Hardware function does not work, which is a huge pain when you have to keep readjusting the limits. Also, for some reason it thinks the limit switches have been tripped. They havent. All in all a questionable piece of overpriced equipment.
Greg  (posted 2009-02-03 10:46:27.0)
A response from Greg at Thorlabs to lsandstrom: A USB Type A to Mini-B cable is included with the TST001.
lsandstrom  (posted 2009-02-03 08:30:28.0)
Is the USB cable included with the T-cubes?
Tyler  (posted 2008-08-14 10:18:06.0)
A response from Tyler at Thorlabs to life57: The software suite included with the TST001 contains ActiveX controls that can be imported into LabVIEW. Please see the tutorial included in the software package or contact tech support for addition details. Our application engineers can also provide some sample programs using the T-Cubes in the LabVIEW programming environment.
life57  (posted 2008-08-07 21:05:22.0)
i want a command language to move ZST6 by TST001 on my labviews.(not active-x) please let me know.
Back to Top

K-Cube™ Stepper Motor Controller

Click to Enlarge

KCH301 USB Controller Hub (Sold Separately) with Installed K-Cube™ Modules
  • Front Panel Velocity Wheel and Digital Display for Controlling Motorized Stages or Actuators
  • Two Bidirectional Trigger Ports to Read or Control External Equipment
  • Interfaces with Computer Using Included USB Cable
  • Fully Compatible with Kinesis® or APT™ Software Packages
  • Compact Footprint: 60.0 mm x 60.0 mm x 49.2 mm
  • Power Supply Not Included (See Below)

Thorlabs' KST201 K-Cube™ Stepper Motor Controller provides local and computerized control of a single motor axis. It features a top-mounted control panel with a velocity wheel that supports variable-speed bidirectional control with forward and reverse jogging as well as position presets. The digital display on the top panel includes a backlight that can be dimmed or turned off using the top panel menu options. The front of the unit contains two bidirectional trigger ports that can be used to read a 5 V external logic signal or output a 5 V logic signal to control external equipment. Each port can be independently configured to control the logic level or to set the trigger as an input or output.

The unit is fully compatible with our new Kinesis software package and our legacy APT control software. Please see the Motion Control Software tab for more information.

Please note that this controller does not ship with a power supply. Compatible power supplies are listed below.

Based on your currency / country selection, your order will ship from Newton, New Jersey  
+1 Qty Docs Part Number - Universal Price Available
KST201 Support Documentation
KST201K-Cube Stepper Motor Controller (Power Supply Not Included)
Back to Top

Compatible Power Supplies

photo of power supply adapters
Click for Details

Each KPS201 power supply includes one region-specific adapter, which can be selected upon checkout.
photo of power supply options
Click to Enlarge

The KPS201 Power Supply Unit
  • Individual Power Supply
    • KPS201: For K-Cubes™ or T-Cubes™ with 3.5 mm Jacks
  • USB Controller Hubs Provide Power and Communications
    • KCH301: For up to Three K-Cubes or T-Cubes
    • KCH601: For up to Six K-Cubes or T-Cubes

The KPS201 power supply outputs +15 VDC at up to 2.66 A and can power a single K-Cube or T-Cube with a 3.5 mm jack. It plugs into a standard wall outlet.

The KCH301 and KCH601 USB Controller Hubs each consist of two parts: the hub, which can support up to three (KCH301) or six (KCH601) K-Cubes or T-Cubes, and a power supply that plugs into a standard wall outlet. The hub draws a maximum current of 10 A; please verify that the cubes being used do not require a total current of more than 10 A. In addition, the hub provides USB connectivity to any docked K-Cube or T-Cube through a single USB connection.

For more information on the USB Controller Hubs, see the full web presentation.

Based on your currency / country selection, your order will ship from Newton, New Jersey  
+1 Qty Docs Part Number - Universal Price Available
KPS201 Support Documentation
KPS20115 V, 2.66 A Power Supply Unit with 3.5 mm Jack Connector for One K- or T-Cube
KCH301 Support Documentation
KCH301USB Controller Hub and Power Supply for Three K-Cubes or T-Cubes
KCH601 Support Documentation
KCH601USB Controller Hub and Power Supply for Six K-Cubes or T-Cubes