Benchtop Stepper Motor Controllers

  • Motor Speeds up to 3000 RPM
  • 409,600 Microsteps per Revolution of Motor
  • Seamless Operation with Thorlabs Stages/Motors

Full Suite of Software Support Tools Included


BSC201 Rear Panel

Related Items

Please Wait
BSC203 (Use with our DRV Series of Stepper Motors)


  • High-Resolution Microstepping Control for Very Fine Positioning Applications
  • Differential Encoder Feedback (QEP Inputs) for Closed-Loop Positioning
  • Motor Control I/O Port (Jogging, Interlocks)
  • Full Software Control Suite Supplied
  • Intuitive Software Graphical Control Panels
  • Extensive ActiveX® Programming Interfaces
  • Fully Integrated Software for Use with Other APT™ Family Controllers

These APT Stepper Motor Controllers are the next generation of enhanced controllers using the familiar APT User interface. Many new features are provided, including a choice between trapezoidal and S-shaped velocity profiles, a higher theoretical microstep resolution (409,600 for a 200 full step motor), and speeds more than twice that achieved by their predecessors.

Designed for use with our DRV series of actuators (DRV208, DRV225, and DRV250*), these one-, two- and three-channel 50 W stepper motor controllers are capable of driving high-power, 2-phase bi-polar stepper motors, with or without encoder feedback. They have been designed to drive the higher power, stepper-motor-equipped nanopositioning actuators and stages offered by Thorlabs [e.g., LNR502(/M) and NRT150(/M)]. Alternatively, generic two-phase, bi-polar motors of varying step sizes can also be driven; see the Specs tab for compatible motor information. Cables for connecting the DRV series actuator to the controller are shipped with the actuators, however replacement cables are available: the 1 m long PAA612 and the 3 m long PAA613. Please note that these controllers are not suitable for use with our ZST or ZFS series of stepper motors.

USB connectivity provides easy plug-and-play PC operation. Multiple units can be connected to a single PC via standard USB hub technology for multi-axis motion control applications. Coupling this with the very user friendly APT software allows the user to very quickly get up and running with reasonably complex move sequences in a short period of time. For example, all relevant operating parameters are set automatically for Thorlabs' stage/actuator products. Advanced custom motion control applications and sequences are also possible using the extensive ActiveX® programming environment described in more detail on the Motion Control Software and APT Tutorials tabs.

Additionally, these APT controllers support Thorlabs' 2-axis joystick console. This joystick console provides intuitive, tactile, manual positioning along with two-axis control. In most applications, the default parameter settings saved within the controller allow the joystick to be used out-of-the-box, with no need for further setup, thereby negating the requirement to be connected to a host PC and allowing true remote operation. However, depending on the actuator being driven, some software setting adjustment may be required. All cables are supplied. Please note this joystick is not compatible with former generation BSC10x series controllers.

Owners of our two-channel BSC202 controller may have their controllers upgraded by Thorlabs to support a third channel. Please contact Tech Support for more details.

*These stepper motor controllers are also compatible with our previous-generation DRV001, DRV013, and DRV014 actuators.

Other Stepper Motor Controllers
K-Cube™ Single-Channel Controller  1-, 2-, and 3-Channel Benchtop Controller Modular 2-Channel Rack System Module
Item # BSC201 BSC202, BSC203
Input and Output
Motor Drive Connector
(15-Pin, D-Type Female)
2-Phase Bipolar Motor Drive Output
Differential Quadrature Encoder (QEP) Input
Forward, Reverse Limit Switch Inputs
Encoder 5 V (with Ground)
Control IO Connector
(15-Pin, D-Type Female)
Jog Forward/Back Input (TTL)
User Logic Input/Output (TTL)
Single-Ended Analog Input (0 - 10 V)
User 5 V (with Ground) 100 mA Max
Trigger Input/Output (TTL)
Motor Resolution
Microsteps per Full Step 2048
For 200 Step Motor 409,600 Microsteps/Rev
Motor Drive Voltage 48 V
Motor Drive Power Up to 50 W (Peak) / 25 W (Average)
Motor Speeds Up to 3000 RPM (200 Full Step Motor)
Encoder Feedback Bandwidth 500 KHz (500,000 Counts/s)
Input Power Requirementsa
Voltage 85-264 VAC
Power 100 W (Peak) 200 W (Peak)
Fuse 3.15 A
Housing Dimensions (W x D x H) 152 mm x 244 mm x 104 mm (6" x 9.6" x 4.1") 240 mm x 360 mm x 133 mm (9.5" x 14.2" x 5.2")
Weight 3.18 kg (7 lbs) 6.7 kg (14.75 lbs)
Compatible Motor Specifications
Peak Powers 15 to 50 W
Average Power 25 W (Max)
Step Angle Range 20° to 1.8°
Coil Resistance (Typical) 4 - 15 Ω
Coil Inductance (Typical) 4 - 15 mH
Rated Phase Currents (Typical) 0.1 - 1 A
  • Location-specific power cord included.

Control I/O Connector


Motor Drive Connector

d-type lon

Pin Description Return Pin Description Return
1 User 5 V I/O 9 9 User 0 V -
2 Jog Forwardsa 9 10 Jog Backwardsa 9
3 Not Used 9 11 Analog Inb 9
4 Trigger In - 12 Trigger Out 9
5 User 0 V - 13 Not Used 5
6 Not Used - 14 Not Used 6
7 Digital (User) In - 15 Digital (User) Out 9
8 Keyed Pin -      
Pin Description Pin Description
1 Encoder A +ve 9 CW Limit Switch
2 Encoder A -ve 10 CCW Limit Switch
3 Encoder B +ve 11 0 V User
4 Encoder B -ve 12 For Future Use
5 5 V User 13 For Future Use
6 For Future Use 14 Motor Phase B+
7 Motor Phase B- 15 Motor Phase A+
8 Motor Phase A-    
  • Jog inputs must be short circuit to User 0 V (pin 9) in order to function.
  • Analog In is 0 to 5 V with respect to 0 V (pin 9). The input can be read by calling the LLGetADCInputs method in the APT software - see the APTServer help file for more details.

Computer Connection

USB Type B


USB Type B to Type A Cable Included

Remote Handset Connector

Compatible with MJC001 Joystick 

Pin Description
1  RX (Controller Input)
2 Ground
3 Ground
4 +5V, 100 mA Power Supply
5 TX (Controller Output)
6 Ground

Driver Flexibility

Stepper motors provide better low-speed performance and positioning stability than their DC servo motor counterparts. A wide range of 2-phase, bipolar stepper motors and associated actuators are commercially available, each with its own characteristics, such as step resolution, peak phase current or voltage, and lead screw pitch. To support such a wide range of motors, the apt™ BSC200 Series Stepper Controller is fully configurable (parameterized) with key settings exposed through the associated software graphical interface panels. Motor step resolution and lead screw pitch can be set for a particular motor/actuator combination, phase currents can be limited to suitable peak powers as required, and limit switch configuration is accommodated through flexible logic settings.

Moreover, relative and absolute moves can be initiated with move profiles set using velocity profile parameters (including acceleration/decelleration). Similarly, homing (zero position datum) sequences have a full set of associated parameters that can be adjusted for a particular stage or actuator. For simplicity of operation, the apt™ software incorporates pre-configured settings for each Thorlabs stage and actuator, while still exposing all parameters individually for use with third-party stepper-motor-driven systems.

For convenience and ease of use, adjustment of all key parameters is possible through direct interaction with intuitive software graphical panels. For example, a move to the next position can be initiated by clicking directly on the position display and entering a new value.


Note that all such settings and parameters are also accessible through the ActiveX® programmable interfaces for automated alignment sequences. Refer to the Motion Control Software tab for further information on the apt™ software support for the BSC200 Series.

Full Software GUI Control Suite & ActiveX® Controls Included

A full and sophisticated software support suite is supplied with the BSC200. The suite includes a number of out-of-the-box user utilities to allow immediate operation of the unit without any detailed pre-configuration. All operating modes can be accessed manually, and all operating parameters may be changed and saved for next time use. For more advanced 'custom' motion control applications, a fully featured ActiveX® programming environment is also included to facilitate custom application development in a wide range of programming environments. Note that all such settings and parameters described above are also accessible through these ActiveX® programmable interfaces. For further information on the apt™ software support for the BSC200 series, refer to the Motion Control Software tab. Demonstraton videos illustrating how to program the apt™ software are also available for viewing on the Video Tutorial tab.


The ActiveX® apt™ system software shipped with these stepper motor controllers is also compatible with other members of the apt™ family of controllers, including our multi-channel, rack-based system and smaller optical table mountable 'Cube' controllers. This single, unified software offering allows seamless mixing of apt™ benchtop, table top, and rack-based units in any single positioning applicaiton.


The key innovation of the apt™ range of controllers and associated mechanical products is the ease and speed with which complete automated alignment/positioning systems can be engineered at both the hardware and software level. All controllers in the apt™ range are equipped with USB connectivity. The 'multi-drop' USB bus allows multiple apt™ units to be connected to a single controller PC using commerical USB hubs and cables. When planning a multi-channel application, simply add up the number and type of drive channels required and connect together the associated number of APT controllers.

Encoded Feedback - Positioning Accuracy

These stepper motor controllers also supports encoder feedback through dedicated quadrature-encoded pulse (QEP) inputs. A “built in” algorithm can be enabled to allow the stepper system to reach and maintain an encoded position through a highly configurable iterative move sequence. For custom closed-loop algorithms, the apt™software exposes the encoder position for access through the ActiveX® programmable interfaces.

Software Developers Support CD

A developer's kit is shipped with all of our apt™ series controllers. This additional software support is intended for use by software developers working on large, system integration projects that incorporate apt™ products. The kit contains an extensive selection of useful code samples as well as a library of Video Tutorials.

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.37

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:
Soonyoung Cha  (posted 2023-05-02 16:06:51.857)
Dear Thorlabs, I am using BSC201 to run NRT150. After connecting USB to PC, I tried to operate with Kinesis, but it cannot call the controller with error 'device not responding'. I can find the controller from Kinesis at 'connect' tab with correct serial number, but I cannot make it connect to operate. One other strange thing is that the enable button is turned off (But power is on). How to fix this problem? Thank you. Soonyoung
fguzman  (posted 2023-05-04 07:31:26.0)
Thanks for contacting Thorlabs. Could you please help us check you have the latest Kinesis and firmware versions? After you have the latest version of Kinesis, you can update the firmware via "Firmware Update Utility". I will contact you directly to further discuss your application.
Aurelien David  (posted 2023-03-22 14:31:33.593)
I am trying to ensure the controller only operates within a certain range of positions, to avoid physical collision. - Is there a way to use a hardware switch that stops the controller if the switch is triggered (i.e. an interlock)? -If not, is there a robust way to do this in software? I am worried that a software approach won't work if the power is lost and the controller loses its position.
JReeder  (posted 2023-03-24 09:06:44.0)
Thank you for your enquiry. I have reached out to you directly to discuss your application and the functionality of these stepper motor controllers.
yuon song  (posted 2023-01-19 15:07:21.417)
Dear thorlabs Hello, I made a 2 axis scanning stage using your BSC202 controller, NRT100/M stage and labview. Unfortunately, the system's triggering isn't quite right. This issue appears to be a stage or controller issue. please contact me to solve the problem. thank you. song
DJayasuriya  (posted 2023-01-20 04:50:50.0)
Thank you for your enquiry. We have got in touch with you directly to troubleshoot your issue.
Grayson Ries  (posted 2023-01-17 11:32:48.237)
Hi, I had a question about the Config. I am using 2 NRT100 devices and I am using a OWIS gmbh motor and the OWIS is not being recognized by the Config as the OWIS gmbh motor is not plugged into the motor drive an instead the Interconnect. is there an adapter or cable that could be used to connect the OWIS motor into the motor drive? Please let me know Thanks, Grayson Ries
JReeder  (posted 2023-01-18 10:41:19.0)
Thank you for your enquiry. The interconnect on the BSC20X series is currently reserved for future use and is not implemented. We do not have any adaptor cables designed for compatibility with 3rd party actuators. You will need to create your own adaptor cable to connect your 3rd party actuator to the BSC, in this instance you might find the pin diagrams for the BSC useful, which can be found on the product page here:
Song Yuon  (posted 2022-11-17 18:52:03.217)
Dear thorlabs Hello, I use BSC 202 benchtop controller. I'm programming using examples, but I'm running into some problems. 1. I used the SetTriggerSwitches property node to give a trigger externally and used GetTriggerSwitches to check it. However, I connected Pins 9 and 12 of the Control I/O Connector to the oscilloscope and checked them, but I did not notice any difference. We would like to inform you of the necessary method to use the triggering function and receive related materials. thank you.
JReeder  (posted 2022-12-02 05:11:33.0)
Thank you for your enquiry. You can find the relevant information for setting the triggers using the .NET API under the following folder after installing the Kinesis Software: C:\Program Files\Thorlabs\Kinesis. In order to change the trigger settings, the command "SetTriggerSwitches()" should be used. The parameter used by this command is a byte which describes the trigger settings. Please find further information on this byte on pages 135-137 of the Communications Protocol: I have reached out to you directly to troubleshoot why you are not seeing a change in the trigger output.
user  (posted 2022-10-12 09:20:49.41)
Dear Thorlabs, Using C# and Kinesis 64bit libs to talk to a BSC103. While developing the program I would like to use a simulated device instead with the Kinesis simulator. I took your code directly from Thorlabs.MotionControl.DotNet_API and compiled with VS2022 Community, Windows 10 64-bit PC. Running admin cmd the homing command will always give "70000123 is not a valid serial number". While debugging I can see that DeviceManagerCLI.GetDeviceList() returns zero serialnumbers. What is the culprit here? Thanks for your time in advance!
cwright  (posted 2022-10-13 05:45:39.0)
Response from Charles at Thorlabs: Thank you for your query. Please ensure that the Kinesis Simulator program is running in the background and that the Kinesis control GUI is not open. You cannot connect both your C# program and Kinesis to the simulator at the same time. This could be one problem. You are also using the wrong serial number for a BSC103 device, which begins with "40", not "70". Technical support with reach out to you.
Robert Roos  (posted 2022-10-10 14:19:26.82)
Dear ThorLabs, I have a question about interfacing with the BSC20x. Is the USB a regular serial connection? We are considering the controller for our setup, controlled by a TwinCAT PLC. Running the full user interface is then not a good option. We want to use the FW103H/M filterwheel. Could we also use the trigger TTL to switch the filters? How would we program such actions? Thank you in advance for any advice! Kind regards, Robert Roos
DJayasuriya  (posted 2022-10-12 06:08:04.0)
Thank you for your inquiry, Yes this is correct there is a FTDI chip converts the data packets to serial commands. The serial commands can be found here to control the respective stage : We have got in touch with directly for more information.
user  (posted 2022-08-29 17:53:44.403)
What's the meaning of the bWait time-out in the LabView code? What changes from setting the value from True to False?
cwright  (posted 2022-08-31 03:42:27.0)
Response from Charles at Thorlabs: Thank you for your query. This documentation can be found in the APTServer.chm help file. I will use the Home command as an example. If the bWait parameter is set to 'False', the method returns as soon as the homing sequence has been initiated. If bWait is set to 'True', MoveHome returns only after the motors have finished homing. In either mode, a HomeComplete event is fired once the homing sequence has been completed. When a client application needs to perform a homing sequence, it is more efficient programming practice to set bWait to 'False' and respond to the HomeComplete event. This event driven approach allows a client application to service other tasks while the motors are homing.
Yuon Song  (posted 2022-07-18 04:25:01.13)
Dear Thorlabs. Hello, I am using BSC202 controller and XY stage using 2 NRT100/M. I have a few questions about configuring the system using LABVIEW. 1. I use the 'SetMoveAbsolutePosition(Decimal position)' and 'MoveAbsolute' property nodes to move the stage. However, if I enter a value less than 1mm, it doesn`t work. I want distance values ​​less than 1mm. Tell me the suitable way please. 2. About 'SetMoveAbsolutePosition_Device unit(int 32 Position)' property node, I want to know definition of the'device unit' . This is not easy to find. 3. I want to know the distance traveled per 1 revolution of the NRT100/M stepper motor stage. Or the distance traveled per step. 4. The maximum acceleration of NRT100/M stage is 30mm/sec^2. Is there a way to immediately stop the stage when it stops? I look forward to your reply. thank you
cwright  (posted 2022-07-19 03:39:56.0)
Response from Charles at Thorlabs: Thank you for contacting us. Please see answers to your questions below. 1. I use the 'SetMoveAbsolutePosition(Decimal position)' and 'MoveAbsolute' property nodes to move the stage. However, if I enter a value less than 1mm, it doesn`t work. I want distance values ​​less than 1mm. Tell me the suitable way please. We will reach out to ask for your VI as it is often not possible to diagnose software without seeing the actual program. I have an example which sets the position to less than 1mm using these commands and the stage moves without issue. I will provide this. 2. About 'SetMoveAbsolutePosition_Device unit(int 32 Position)' property node, I want to know definition of the'device unit' . This is not easy to find. The device units are how the device measures movement, before any calculations are applied. For stepper motors this is microsteps, for DC stages it is encoder counts. 3. I want to know the distance traveled per 1 revolution of the NRT100/M stepper motor stage. Or the distance traveled per step. Please see section 4.1 "Specification" of the NRT100/M manual. The movement per revolution of the lead screw is 1 mm and there are 409,600 microsteps per revolution when using our controllers. 4. The maximum acceleration of NRT100/M stage is 30mm/sec^2. Is there a way to immediately stop the stage when it stops? In the Continuous Jog mode you can specify the stop profile as "Immediate". The motor will stop quickly, in an unprofiled manner.
Ching-Wei Lin  (posted 2022-04-20 09:25:19.603)
Hi, I was trying to use Kinesis .NET in LabVIEW to control the system and found an annoying bug. The dll files can only be stored in the same folder as the labVIEW project file or one layer under. If these dlls were saved in two layers or more under, the .NET container cannot load the dll. I am wondering if you could help us to solve this problem. Thanks. Best, Ching-Wei
DJayasuriya  (posted 2022-04-21 10:23:36.0)
Thank you for inquiry. Of course. we have got in touch with you directly to resolve this.
user  (posted 2022-01-10 04:31:58.35)
Hello, I use the stepper motor controller BSC203. For controlling I use APT software. Is it possible to build vector graphics to set the trajectory of movement? And if there is, what kind of application is needed?
DJayasuriya  (posted 2022-01-10 06:47:05.0)
Thank you for your inquiry. We will get in touch with you directly to resolve your issue.
carlos Reyes  (posted 2021-08-04 05:25:08.517)
Hello, I am working with integrating the benchtop stepper controller (BSC203) with Labview. I have been successful in creating the .NET container and integration of the control in Labview. When opening Kinesis the serial number is 70174934-1/ 70174934-2/ 70174934-3. I am able to create a motor control in Labview when passing the serial number 70174934 as a property node. However this only creates one control for one axis. When I pass the serial number as: 70174934-1 there is an error message saying no devices found. So my problem is that I can only control one axis, can you help me solve this? Carlos
DJayasuriya  (posted 2021-08-05 03:26:51.0)
Thank you for your inquiry. We will get in touch with you directly to resolve this issue.
Maria Romodina  (posted 2021-07-23 14:36:53.043)
Dear thorlabs support team, I am trying to write LabView program to control the motion of ODL220/M using BBD201 controller. I tried Kinesis LabView examples, but after a few steps, stage stops and doesn't move any more. It moves again, when I press Disable and then Enable butten. It seems, that after the step, stage can't rich settled position and continue to move around this position. The same problem appears when I use default Kinesis software (not LabView VI). Seems that stage works fine with APT program. But I couldn't find the LabView APT VI examples for BBD201. I will be very grateful if you help me to solve this problem. Or, if you send me the link on LabView APT VI examples for BBD201. Best wishes, Dr. Maria Romodina Postdoctoral Fellow Russell Emeritus group Max Planck Institute for the Science of Light Staudtstr. 2, 91058 Erlangen, Germany Tel.: +49-9131-7133-251 Email:
cwright  (posted 2021-07-26 09:19:53.0)
Response from Charles at Thorlabs: Hello Maria and thank you for your query. The LabVIEW examples for both Kinesis and APT can be found at the following link: It may be that the PID settings, which determine how the controller manages the trajectory and settling position of the stage, are not set correctly in Kinesis. Using the most up to date version of both the Kinesis software and the firmware for your controller should correct this. The firmware can be updated using the firmware update utility which installs with Kinesis. I will contact you about this.
jinsu lee  (posted 2021-06-23 12:05:46.55)
I use Labview 2017 64 bits, 64bits Window, Kinesis for 64 bits SW 64 bits window I use controller BSC202 to build XY translation stage. However, Labview's Kinesis front panel doesn't recognize the controller. Kinesis software itself recognizes the controller and motor well. I can home and move the stage. What can I do to deal with this problem? Thanks
YLohia  (posted 2021-08-27 02:40:47.0)
Hello, there are a few reasons as to why this error can occur, most commonly is that the incorrect bit version is being used. Another common reason for this error is that the .NET assemblies have not been copied over to the same directory as where the LabVIEW project is saved. In order for LabVIEW to find the .NET assemblies, they have to be placed in the root folder of the LabVIEW project in which you're attempting to use them. Therefore, if you try to write your virtual instrument outside of any saved projects and/or if the required DLLs are not placed in the correct location, LabVIEW will throw that error. This happens even if you specifically show it where the assemblies are located.
user  (posted 2021-06-14 17:38:10.74)
Dear Thorlabs, Hello, I would like to control NRT100/M stage and BSC202 by Python. So, could you please send me example codes? Thanks!!
cwright  (posted 2021-06-15 05:41:00.0)
Response from Charles at Thorlabs: Hello and thank you for your query. While we do not officially support python we do have an example we can provide as a courtesy. There are a few ways you can use Python with our controllers. You would be able to use Kinesis’ .NET API via the clr module (if you're using IronPython) or Kinesis’s C API via the ctypes module(if you're using CPython). The DLLs required are located in the installation directory. Alternatively, as our devices use an FTDI chip to communicate with a host PC over USB, you can use serial commands via the pySerial module. The requisite commands and serial parameters can be found in our communications protocol -
zhi zhang  (posted 2021-06-04 15:02:02.4)
The accelerated speed of the motor is very important for me, but I do not know how to control it with APT, is it possible to change the accelerated speed in Labview?
cwright  (posted 2021-06-07 06:58:01.0)
Response from Charles at Thorlabs: Thank you for your query. Using APT in LabVIEW, the user can control the acceleration through the motor method "SetVelParams". There are APT examples on the website which you can follow, particularly TL Motor which demonstrates how to get and set the velocity and acceleration parameters.
Emgy Lee  (posted 2021-04-26 20:33:48.407)
I trying to control BSC201 by Labview,VISA, RSR232, setting communications parameters according to APT Communications Protocol. However, there is no any response after giving messages by "VISA Write". I am wondering if the message format is wrong(TX 10,02,01,01,11,01) or there is any step I missed. Any advise? Thanks. (P.S. I know how to use active X APT, but I still want to control BSC201 by VISA. )
cwright  (posted 2021-04-26 12:01:24.0)
Response from Charles at Thorlabs: Thank you for your query. The correct command would be (10, 02, 01, 01, 21, 01). For these controllers the host sends a message to the motherboard that the sub-modules are plugged into, with the destination field of each message indicating which slot the message must be routed to. Please see page 35 of the APT communications protocol for more information about this style of controller:
Scott Tower  (posted 2021-04-19 13:22:06.49)
I have BSC201 running an HDR50. I am using LabVIEW 2019. It builds and runs from the LabVIEW development environment, but I get a "This VI is not executable." when I try to run it as a LabVIEW executable. Any ideas? Thank you.
DJayasuriya  (posted 2021-04-20 10:46:50.0)
than you for your inquiry. When creating a LabVIEW executable to control a BSC201 only the Thorlabs.MotionControl.Benchtop.StepperMotorCLI.dll, Thorlabs.MotionControl.Benchtop.StepperMotorUI.dll and Thorlabs.MotionControl.Controls.dll will be copied to the exe's ...\data folder and will throw the 'This VI is not executable' error. All the dll's will need to be copied to the ...\data folder to run the executable successfully.
charles askins  (posted 2021-03-17 15:51:10.93)
We are running three NRT-150 stepper translation stages with a BSC203 controller. Motion control is open loop. I see that the BSC203 backpanel connections include "Differential Quadrature Encoder (QEP) Input". Does this mean I can supply my own quadrature encoder signal and have the BSC203 control the NRT-150 with my encoder? Assume my encoder has TTL quadrature levels, and higher data capacity than required. My encoded motion resolution will be around 0.15 micron.
cwright  (posted 2021-03-23 12:32:24.0)
Response from Charles at Thorlabs: Hello and thank you for your query. This would not be supported within our software but there is a serial command described in the communications protocol which could enable closed loop operation: would need to set the encoder constant according to the instructions laid out in the command protocol (p 144) and you would need to figure out your own values for the PID loop as we have not determined these for this stage.
Aidan Jones  (posted 2021-03-15 13:50:33.51)
I see that you put a keyed pin into your control I/O port. Did you send the appropriate cable to use the port, or do you offer it anywhere on Thorlabs? Also, I am wanting to use this with TTL pulses generated from my camera. Is there a way to connect the stepper motor in such a way to TTL pulses? This might be possible through a BNC to D-Sub adapter. Do you supply anything like that?
cwright  (posted 2021-03-17 05:53:39.0)
Response from Charles at Thorlabs: Thank you for your query. Unfortunately we do not supply this cable for the control I/O port. As this is often used by those integrating it into their own systems, we leave how this is handled to the individual user. I would suggest a standard 15 Pin dsub and clipping a pin. Pin 4 of the control I/O can be used to provide an input trigger pulse which can control the attached stepper motor. This pulse should not exceed 5V. This pulse can trigger a relative move, absolute move or home the stage, depending on the settings chosen for the device using our Kinesis software.
H. Meyer  (posted 2021-03-11 14:20:52.363)
Hi, i'm using a Thorlabs BSC203 Controller with a MLS203 Stage. Can I control this with Linux and Python? Is there any possibility? I want to control this with a Raspberry pi. Thanks a lot
DJayasuriya  (posted 2021-03-16 09:56:44.0)
Thank you for your inquiry. yes this is possible. These use a FTDI chip to communicate with a PC, so you would need to establish a virtual com port in Linux. The commands and serial parameters can be found in our communications protocol -
Idan Yokev  (posted 2020-12-07 03:39:51.783)
Hi, I'm using the .net dll's to control BSC203 that is connected to 3 DRV028s that drive NanoMax600 stage. At first the Motor object Move commands worked in device units, and didn't know the allowed limits (it didn't know it's driving a NonaMax stage). Then, at some point it did know, and had internal limits. I assume that the Kinesis software wrote information on the device. What is the method (via Kinesis) to ensure that this is always the case? Can it be done by code? Is there a method to query the device and understand whether it has to use 'device units' or can accept physical dimensions?
cwright  (posted 2020-12-08 06:36:50.0)
Response from Charles at Thorlabs: Hello and thank you for your query. The first time you open Kinesis it will write a device configuration to a file which is then by used by default. If you never open Kinesis it would assume it's a DRV208, then if you have opened Kinesis and set the stage association as MAX600 it would recognise it as such. If you want to change or query the motor configuration then you would need to use the MotorDeviceSettings Class. The technical support team will reach out to you to see if you need further support with this.
user  (posted 2020-10-26 01:13:14.68)
Hello. There is keyed pin on control I/O connector. What is this for? Do I have to remove it before to connect?
cwright  (posted 2020-10-28 09:34:53.0)
Response from Charles at Thorlabs: Thank you for your query. The keyed pin does not need to be removed. It is there to ensure that the motor drive cable cannot be plugged into the Control I/O connector by accident. If you are making a cable to connect to the I/O port then it would be sensible to use a D-Sub connector which allows you to install select pins.
Patrick Noyes  (posted 2020-10-06 20:56:54.457)
I have a BSC202 that I am running from Labview. I can successfully operating the controller when connected to the programming computer but I need to run the controller from a compiled VI on a different computer. I have placed copies of the Thorlabs DLLs all over the place but they will not load into a compiled VI. Please advise
DJayasuriya  (posted 2020-10-20 03:28:37.0)
Thank you for your inquiry. When you are running the VI separately LabView should generate a VI object file. If Labview does not recognise the VI, this should be recompiled. It might be necessary to force the VI to recompile, using + + Run Button, before it will run correctly. Hope this helps, please don't hesitate to get in touch with your local tech support team if any issues come up.
Gregory Whaley  (posted 2020-03-10 13:23:13.193)
I have a BSC203 stepper controller and a BPC303 Piezo controller and I would like to control them using python on linux. Do you have any support or know of any open source repositories in using python/linux for interfacing to these controllers?
cwright  (posted 2020-03-11 09:22:19.0)
Response from Charles at Thorlabs: Hello Gregory. The .NET DLL's we supply with our Kinesis software are unfortunately only compatible with Windows installations so the only option is using serial commands via the pySerial module. Our devices use an FTDI chip to communicate with a host PC over USB and you will just need to establish a virtual com port in Linux. The requisite commands and serial parameters can be found in our communications protocol -
Angel Perez  (posted 2019-11-25 03:34:35.517)
Hi. I have a BSC103 system for controlling three NRT100/m linear translation stages. I would like to control them through Python 3.7 language. Is it possible? Where can I find the necessary modules to be imported and some information about it? Thank you.
DJayasuriya  (posted 2019-12-03 06:27:00.0)
Response from Dinuka at Thorlabs: Thank you for your question. Yes it is possible to control using Python 3.7. You would be able to use Kinesis’ .NET API via the clr module (if you're using IronPython) or Kinesis’s C API via the ctypes module(if you're using CPython).The DLLs required are located in the installation directory. I will get in touch with you directly with some examples as well. Hope this helps.
Evert van de Waal  (posted 2019-06-06 04:49:57.733)
Recently the BSC201 we work with changed its behaviour when communicating with APT over USB: previously it kept on sending MGMSG_MOT_GET_STATUSUPDATE, even when I did not send MGMSG_MOT_ACK_DCSTATUSUPDATE. Now it stops after some 5 seconds, even when I do. Any movement is abruptly stopped. After a few seconds the device suddenly jerks a few degrees, then stops again. Reconnecting to the device does not solve anything: it no longer responds to any requests. This is a very vexing problem, as the setup has become unworkable. I have no idea what changed, perhaps some setting, or the firmware was updated by a college, I have no idea. Any idea how I can tackle this problem? Kinesis is able to control the device, but of course Kinesis is useless when you want to script movements and control the object being moved at the same time.
rmiron  (posted 2019-06-11 04:41:25.0)
Response from Radu at Thorlabs: Hello, Evert. I should say that BSC201 is not programmed to respond to MGMSG_MOT_ACK_DCSTATUSUPDATE. Instead, you should send an MGMSG_HW_START_UPDATEMSGS command in order to receive update messages every 100 msec. That will happen until you send an MGMSG_HW_STOP_UPDATEMSGS. Now, what is more interesting is that the behaviour you are observing describes perfectly the expected behaviour of a BBD20x controller. Such controllers respond to MGMSG_MOT_ACK_DCSTATUSUPDATE by sending update messages every 100 ms for 5 seconds. Provided that this information was not helpful, I suggest that you reach out to your local technical support team for further assistance.
jim.mcginnis  (posted 2018-09-14 11:53:43.637)
BSC203 configured with three SCC001 stepper controllers - after power cycle, connecting, configuring, and driving the steppers works properly. Shutting down the application driving the steppers via the controller (C#) - which disconnects the channels and the controller results in channel errors the next time the application is started UNLESS the BSC203 is power cycled. Polling the controller channels for status.status returns 0 instead of the nominal return witch appears to be uint 32 all bits set. Is it necessary to power cycle the BSC203 every time the application connects? What is the correct shutdown sequence for the stepper channels and controller? stepper reset during initialization of the stepper channels (prior to connect) does not ameliorate the issues and failures. What is the minimum startup and shutdown sequence for the SCC001 steppers and the BSC203 controller that allows restarting the application without power cycling the BSC203??? Thanks for your valuable time. Jim
bhallewell  (posted 2018-09-20 05:42:13.0)
Response from Ben at Thorlabs: Thank you for your question here. You are correct that this behaviour would typically be associated with how closing communication with the device is handled within your program. The correct shut down sequence should be as follows: In .NET (C#) channel.StopPolling(); device.Disconnect(true); In C API // stop polling SBC_StopPolling(testSerialNo, 1); // close device SBC_Close(testSerialNo);
user  (posted 2018-03-01 21:17:18.75)
when i use labview program ATP, i checked the 'persist setting to hardware' to save setting change; Backlash correction. However, if i quit and then re-run the program, it will return to its original state. How can i solve it?
bhallewell  (posted 2018-03-22 09:47:12.0)
Response from Ben at Thorlabs: The persisted settings option is designed to save persistable parameters such as Backlash, Velocity, Joystick settings etc. for use of the device free from use with a control PC. When you open a new instance of the APT User interface these persisted parameters will be overwritten. I would recommend using the SetBLashDist() method to assign a value within your program.
pihulj  (posted 2017-12-22 14:21:57.907)
when i use c++ to program, if (SBC_Open(testSerialNo) == 0) SBC_Open can't find ThorlabsCustomSettings.xml ThorlabsDeviceConfigurationOverride.xml how can i solve it
bhallewell  (posted 2018-01-03 05:50:25.0)
Response from Ben at Thorlabs: Thank you for your enquiry. I would firstly recommend checking that you have the very latest version of Kinesis installed & that you have permission to access the Settings folder C:\ProgramData\Thorlabs\MotionControl & sub-folders. I will contact you to troubleshoot this with you.
jeffery.t.murphy2  (posted 2017-11-15 14:14:47.53)
I have a BSC201 controller S/N: 40857583; I have connected to it a NanoRotator (NR360S); but the APT software does not recognize that I have a Nanorotator connected, therefore it is trying to drive it as a linear actuator (in mm, won't go negative) unlike our other BSC203 controller that works well with the rotators. How can you fix this? Thanks...
bwood  (posted 2017-11-17 04:21:35.0)
Response from Ben at Thorlabs: Thank you for your question. You can manually associate the stages using the APTConfig tool. You can find instructions on how to do this in section on 3.6 of the BSC203 manual.
bcinquin  (posted 2017-09-27 11:17:50.44)
I have a problem with my apt motion controller BSC201. The power led is fading after a few seconds...
AManickavasagam  (posted 2017-09-28 11:27:31.0)
Response from Arunthathi at Thorlabs: Thank you for your comment. I am sorry that you have difficulties here. I will contact you directly to troubleshoot this issue.
don.walker  (posted 2017-08-18 20:47:28.97)
I have the same exact problem as rubsanmi I can't for the life of me figure out how to get access to home method from the BSC203 and NR360S. Please send me an example vi and help
bhallewell  (posted 2017-08-21 10:30:47.0)
Response from Ben at Thorlabs: I'll contact you with some assistance.
viteo  (posted 2017-08-02 11:50:43.93)
Facing a lack of information about triggering configuration over C# Kinesis API. I want to receive an out pulse every 0.1mm on NRT100/M with BSC202 via C#. The only method I found is SetTriggerSwitches(), but how to configure the delta distance?
bwood  (posted 2017-08-04 06:19:23.0)
Response from Ben at Thorlabs: Thank you for your feedback. Unfortunately, there is no current way to configure the BSC to trigger when it moves past a position. The output can only be configured to trigger when a move is initiated. I will raise this requirement with our engineers.
shingoyasuhara136  (posted 2017-05-26 15:40:11.983)
Dear Sir/Madam, I'm having trouble (technical issues) in installing the software for Apt Stepper Motor Controller (Cat#BSC201)that we have recently purchased for controlling FW103. Basically, we are trying to install this euipment on our Windows XP (32-bit). I've tried everything, but still cannot install the driver. Would you pleaes adivse us how we can solve this issue? Thank you very much.
bwood  (posted 2017-05-31 04:23:08.0)
Response from Ben at Thorlabs: Thank you for your feedback. Unfortunately, the current versions of of our motion control software no longer support Windows XP. However, we can provide a download link for a legacy version of APT which will work with XP, and we will be in direct contact with you with this. As this is a legacy version, we cannot guarantee compatibility with newer controllers and stages.
rubsanmi  (posted 2017-05-25 09:58:35.597)
I am trying to control a NR360S with a BSC103 through LabVIEW using APT control. Nevertheless, I do not know how to specify from LabVIEW the rotation in degrees. APT uses the units in mm and although I change it through the settings windows to degrees, the result is the same. Therefore, I do not know how many mm corresponds exactly to 1 degree.
bwood  (posted 2017-05-26 06:40:07.0)
Response from Ben at Thorlabs: Thank you for your question. If you have a rotational stage connected, APT should automatically switch to use degrees, if you are using a command such as SetAbsMovePos. Thus I would double check you are entering the correct serial number, and associating the correct stage. If you still are having problems after trying this, feel free to contact me at
christopher.jones  (posted 2017-05-16 18:58:45.65)
I am trying to control a BSC201/DRV014E setup using LabVIEW and the Kinesis/.NET approach, but the Kinesis-Labview.pdf guide seems to cover a much simpler drive. In any case, I can't for the life of me find any 'Move' or 'Home' commands (any motion methods at all) in the methods and properties available. Are we supposed to make do with your APT/ActiveX solution, which you mark as 'legacy'? Can you provide a simple connect-home-move-readposition-close example for my system and labview (or any other language)? Thanks in advance!
bhallewell  (posted 2017-05-30 10:30:15.0)
Response from Ben at Thorlabs: Combining the LabVIEW guide with our .NET API should enable you to access the full functionality of the stepper controller from the appropriate .dll. Working in LabVIEW with the legacy APT ActiveX software users can benefit from being able to access the full list of methods for a single device from a single ActiveX control. In Kinesis (built in .NET framework) you have access to more methods however you will need to select the method from within the specific object class as outlined in the .NET API help file. I will contact you directly & send you a simple example outlining this.
viteo  (posted 2017-03-29 07:44:53.21)
I'm trying to control two NRT100/M with BSC202 via C#. Everything work in Kinesis application, but when I execute c# example for BSC103 from "Thorlabs.MotionControl.DotNet_API.chm" motor makes one single step and console app report that it moved to position, or not homed by timeout. What am I missing? C# example for KCH301 with two KDC101s works like a charm.
bwood  (posted 2017-04-10 10:53:20.0)
Response from Ben at Thorlabs: Thank you for your feedback, and I am sorry to hear about your difficulties here. I will be in contact with you directly to diagnose this issue.
esbiele  (posted 2017-02-28 22:03:25.057)
Folks, I have an issue where I cannot drive my apt motors to a negative value using my LabView routines. Note I have drive to negative numbers using the APT users software. I noted that in the feedback below the Thorlabs guys suggest that you could mod the configuration file to allow for negative stage positions - can you pass on the information. Thank you, Ed
bhallewell  (posted 2017-03-06 09:57:17.0)
Response from Ben at Thorlabs: There is a work-around which can be achieved through our legacy APT control software. For stepper motors, you can access the MG17APTServer.ini file from within your C:/windows directory/. We advise saving a copy of this in case edits you make create any problems when running the software package. You can then find the Stage Type & edit the stage max & min position. eg. HS 17DRV014 50mm Default Settings: Min Pos=0.00, Max Pos=50.00 - can be changed to - Min Pos=-50.00, Max Pos=0. By saving & closing this file, correctly associating the stage in APTConfig & then running the device up in APTUser, you can then use the stepper actuated device in this negative position regime.
peace  (posted 2017-02-24 15:05:58.21)
Can you send me the SDK of BSC201?
jlow  (posted 2017-03-01 11:20:46.0)
Response from Ben at Thorlabs: You can download our new Kinesis software & our legacy APT software from the following link. Software development guides for each package can be found here: Kinesis: APT:
LChen95  (posted 2017-02-24 12:02:51.183)
Hi, I have bought a BSC201 to control a very old stepper motor. I have all the specification of this stepper motor, and would like drive it directly from Matlab. Would you please let me know how to get more information with this regards? If I need a special set of functions or install an SDK for matlab? Thank you!
bhallewell  (posted 2017-02-27 07:00:26.0)
Response from Ben at Thorlabs: You can find our guide for using Matlab to control our stages through generating an ActiveX instance. This is done through use of functions available within our APT software package, which can be downloaded from the below link. A list of these functions can be found within the APTServer help file. Matlab Guide (see foot of page): APT Software Download:
thomas.pujol  (posted 2016-12-14 11:47:49.263)
Hello, I would like to use the pin 2 (jog forward) of the BSC201 but I am not sure where I should connect the ground in the 15-pin plug (the trigger will be send by an arduino so wires have to be separated). The answer is probably in the sentence "Jog inputs must be short circuit to User 0V (pin 9) in order to function" but I don´t understand it and I need to be sure I will not to burn something. thank you
bwood  (posted 2016-12-16 11:13:22.0)
Response from Ben at Thorlabs: Thank you for your feedback. I think you are on the right lines here. A sample circuit diagram for jog inputs can be found in section A.1.5 on page 49 of the BSC series controller manual. I suggest reviewing that section, and Appendix A of the manual in general. If you still have questions after reading that section, I would suggest contacting your local technical support office directly.
dlescano  (posted 2016-11-09 06:39:52.363)
Hello, we have a BSC103 Controller. Could use APT Version 3.18.0 and Kinesis Version 1.8.0 for this controller ? Thanks !!!
bhallewell  (posted 2016-11-14 06:33:36.0)
Response from Ben at Thorlabs: Both of these software packages support this legacy controller.
omar.olarte  (posted 2015-12-16 11:17:52.58)
Driver: BSC103 Stages: Nanomax TS, 3 axis stepper motors Hi, after a series of weird errors (-hardware not recognized, windows OS blue screen) my 3 axis motor stage stop functioning. Before I managed to make it work restarting the computer and switching on/off the driver. I am getting this message from the APT labview library: Internal code 16240903 Hardware response code 32789 ((+48V Under Limit)) received from hardware unit SN 708344XX (in response to message ident 0). Thanks.
besembeson  (posted 2015-12-16 11:46:25.0)
Response from Bweh at Thorlabs USA: We will contact you directly to fix this.
balaji  (posted 2015-09-24 09:04:26.723)
Hi I have been using a range of APT software driven instruments such as TDC controller, BBD002 servo controller etc., I want to point out that there is some issue with 64 bit software for 64 bit platform. The 32 bit for 64 bit works fine. Secondly and more importantly we have been trying to shift to using USB/serial communication while I have been able to list the com port after enabling Load VCP in the advanced tab of the driver. However having hard time sending commans through serial terminal software such as commdebug, real term etc., They all recogonise the com port but the device is totally unresponsive left to wonder if there is some way to test the communication and if we need to use a FTDI library to issue a write command rather than through terminal software
besembeson  (posted 2015-10-08 01:16:46.0)
Response from Bweh at Thorlabs USA: The VCP setting should be set up as follows: Baud rate = 115200; Flow control = RTS/CTS; Bits per word = 8; Number of stop bits = 1; Parity = NONE. We have contacted you directly with the latest version of the communications protocols for our motion control products and also some brief instructions on how to use this as a terminal emulator (Termite). Using the identify command MGMSG_MOD_IDENTIFY (0x0223) is a good way to check you have established communication with the controller. This command will flash the front panel LEDs of the addressed controller.
sentayehu.wondimu  (posted 2015-07-14 08:30:29.697)
I have a BSC203 on my setup. I want to control it directly from a matlab code. Would you please let me know how to get more information with this regards? If I need a special set of functions or install an SDK for matlab? Thank you
msoulby  (posted 2015-07-14 08:48:38.0)
Response from Mike at Thorlabs: It is possible to use our APT software within Matlab, I have contacted you directly with more information.
marc.yallop  (posted 2015-07-14 05:51:43.66)
Hello, I've read on the feedback below that you have a beta DLL available to access the controllers via C++. Would it be possible to get a copy of that software please? Thanks Marc
msoulby  (posted 2015-07-14 06:10:57.0)
Response from Mike at Thorlabs: I have contacted you directly to send you this .DLL pack
sepehr.ahmadi  (posted 2015-06-23 01:53:25.9)
Hi, I have bought a BSC203 apt stepper motor controller. I would like to program in python using a dll file. Could you please let me know where I can find more information about that? Thank you.
msoulby  (posted 2015-06-29 08:44:55.0)
Response from Mike at Thorlabs: We have an APT DLL pack that can be used for customer applications and I have contacted you directly to send you these DLL files.
fritsflorentinus  (posted 2015-04-03 14:27:21.88)
Hi, we have recently purchased a Thorlabs BSC203 and would like to interface it in a C++ environment. We want to use it for automated measurements and have no use for a GUI interaction with it directly. I have tried implementing this using the FTDI D2XX library in combination with the APT communications protocol but it does not work and I don't know what I am doing wrong. As I started looking for solutions I found that there are multiple (possibly conflicting) versions of the APT communications protocol, so my first question is: Which one is the correct one? I have also tried using the RS232 port and use the windows.h library instead of the FTDI D2XX library but this also does not work. The problems do not arise from exception errors. I simply see no flashing LEDs on the BSC203 when I think I send an IDENTIFY command, or I receive no data back when I think I send a HW_REQ_INFO. My second question is: Can you help us out with this problem? Is there maybe a C++ API available for the APT protocol?
msoulby  (posted 2015-04-08 08:30:10.0)
Response from Mike at Thorlabs: The latest low level communications protocol can be downloaded from our website, the current version is version 14 last updated on the 11th March 2015 and can be accessed from the following link we have also contacted you directly with some further detail on how to begin using these low level command for controlling our controllers. If using the low level protocols all serial communication has to be carried out through a virtual COM port through the USB connection, the RS232 connection on the rear panel is not used for this purpose. We also have available a beta version of an APT .dll that can also be used if you do not wish to use the standard ActiveX interface, we have also emailed you with details on how to access these files.
wjiang  (posted 2015-04-01 21:38:24.3)
I was trying to install the APT System Software on my computer. But I got a error message"1:", and the software won't install. Try it on a different machine. Got same error. I was trying to install 32 bit software on 32bit Windows 7. Any idea what might cause the problem? Thanks!
msoulby  (posted 2015-04-02 05:17:55.0)
Response from Mike at Thorlabs: The :-1 error is an installation error. the way to correct this is to first completely remove any previously installed APT versions on your machine, including any residual installation folders that may remain after the uninstall procedure. Please then go to the following link to download the most up to date software version and save it locally to your hard drive before installation, please select the correct version based on your operating system and intended application.
shaun  (posted 2015-03-15 21:49:36.187)
Hi again, I just thought I'd post a quick comment on my question that I posted a couple of days ago. I have had success communicating with the TDC001 using the "Host-Controller Communications Protocol" via a serial interface. The secret was to have the USB cable from the TDC001 to my PC connected BEFORE I switched the TDC001 on. If I switch the TDC001 on first and then connect the USB cable then I cannot establish communications with the device. I have also had success communicating with the BSC201. I had previously been trying to connect to this device via the "INTERCONNECT" serial port on the back of the BSC201 (using a USB-to-serial converter). This method wasn't working, but I have successfully connected to this device using the USB connection on the back, and specifying "Load VCP" in Device Manager so that a virtual COM port is loaded for the device. Kind regards, Shaun.
msoulby  (posted 2015-03-31 08:02:28.0)
Response from Mike at Thorlabs: Thank you for using our web feedback, please accept our apologies for the delay in our response. It seems as though you have begun to successfully use our low level USB to serial communications protocol for our motor controllers. I have contacted you directly with some additional information about communicating with our controllers in the way.
shaun  (posted 2015-03-12 23:27:03.183)
Hi there, We are using both a BSC201 (with NRT150/M stage) and a TDC001 (with MTS50/M-Z8 stage). We have previously used the APT ActiveX component to talk to these devices, but have decided to start using the basic serial "Host-Controller Communications Protocol" instead, due to reliability issues. I am having some trouble establishing serial communications with either of these controllers using this protocol, so was after some assistance. Do you have some example code for using this protocol (preferably LabVIEW)? Does the message header require a terminating character at the end of the transmission (e.g. carriage return or similar)? I have been trying to send a basic MGMSG_HW_GET_INFO (i.e. sending 05 00 00 00 50 01) but am not getting back any response from either device. If you could point me in the right direction it would be most appreciated! Kind regards, Shaun.
wangyich  (posted 2014-12-27 04:55:02.957)
Hi....In addition to my last question, can you tell me if the controller can output a sinusoidal motion? Thanks!
msoulby  (posted 2015-01-14 04:16:20.0)
Response from Mike at Thorlabs: Due to hardware restrictions on the controllers themselves, it is not possible to change the velocity whilst in motion. It would only be possible to use a series of discrete moves each with a different velocity setting. The bWait timeout setting on the move command should also be set to FALSE if you wish to input a number of move commands, setting this to TRUE will mean the move will have to complete first before a new move can be entered.
wangyich  (posted 2014-12-27 02:03:30.183)
I am using the BSC203 controller with Labview. The motor moves to different positions in series. How can I get a continuous motion profile (the velocity does not drop to zero each time I set a new MoveAbsPos?) And How can I set the move velocity to negative direction without setting a negative relative move distance?
msoulby  (posted 2015-01-14 04:23:42.0)
Response from mike at Thorlabs: There is a command called MoveVelocity, which will start the stage moving in one direction or the other, there is no final position entered with this method the stage will move at the velocity and direction specified until told to stop using the StopImmediate or StopProfiled methods. I have contacted you directly with more details of these methods.  (posted 2014-12-05 22:21:27.47)
I cannot install drivers for the apt stepper motor controllers (Win 7, 64) Devise properties read: Windows cannot verify the digital signature for the drivers required for this device. A recent hardware or software change might have installed a file that is signed incorrectly or damaged, or that might be malicious software from an unknown source. (Code 52)
msoulby  (posted 2014-12-10 02:50:51.0)
Response from Mike at Thorlabs: The APT drivers are digitally signed and have been for many years, we would recommend that you uninstall and reinstall the software ensuring that you have the most up to date version which can be downloaded from the following location
zachary.flom  (posted 2014-08-20 11:09:30.897)
Is there way to set the motor dwell-time using the activeX control? I can't find a method in the documentation to set this.
msoulby  (posted 2014-08-22 05:29:44.0)
Response from Mike at Thorlabs: There is no specific dwell time or wait command on the move ActiveX controls. If you need the motor to wait at a position then you would simply add a time delay in Labview to your move sequence. I have contacted you directly with some more details.
lokirune  (posted 2014-04-30 23:14:31.5)
Hi. I am using BSC201, and want to use with matlab(32bit). When I trying to install setup file, then the error message that we don't have x86 processor coming out. We have program file(x86) folder and other 32 bit program(Matlab, 32bit on program file(x86)) is working well. What is the problem on this?
msoulby  (posted 2014-05-01 06:43:19.0)
Response from Mike at Thorlabs: I have contacted you directly to guide you towards the correct software version for your application.
lokirune  (posted 2014-04-30 14:53:37.283)
Hi. I want to use BSC201 with matlab, so I installed the software for active x. But I couldn't find the BSC201. Is there anything else I need to consider?
msoulby  (posted 2014-04-30 08:20:06.0)
Response from Mike at Thorlabs: Our BSC201 can be used with Matlab, first you will need to install the appropriate APT software version for your computer and Matlab version, i.e. if you are using 64bit Matlab then you will need to install the 64bit version of APT. This can be downloaded and installed from our website here I have also contacted you directly with a short example and guide on how to get started using APT in Matlab.
guyonnealleman  (posted 2014-02-26 05:55:28.12)
I have a BSC201 and would like to connect it to a NR360S/M. I installed the software on my windows 8.1 computer, but the NR360S/M doesn't move when I change the number in APT user. In APT config I selected 1Ch Stepper drive (BSC101) as control unit because the BSC201 was not displayed. As stage I selected the HS NanoRotator according to the manual. Thank you!
msoulby  (posted 2014-02-26 07:20:00.0)
Response from Mike at Thorlabs: From the way you describe how you configure the stage I believe you may have the simulator mode ‘enabled’ you will need to disable this mode before you can operate your stage. In the APT config utility program please open the simulator tab and then uncheck the simulator mode checkbox. Once this is done please then open the Stage tab, you should now be able to select the correct serial number of your controller from the motor drop down list and assign the HS NanoRotator stage as you did previously. When you now open APT user the stage should operate correctly.
eli  (posted 2014-01-15 13:34:07.38)
Is there any support libraries for Matlab?
bhallewell  (posted 2014-01-15 12:21:06.0)
Response from Ben at Thorlabs: Thank you for your feedback. I will contact you directly with the current support resources we have available.
bhallewell  (posted 2014-01-16 04:37:12.0)
Response from Ben at Thorlabs: Hi Eli. Do you have an alternative email address I can forward this information to? Unfortunately I am unable to forward this information to the address provided with your feedback. Alternatively, you can message me directly @
chris  (posted 2013-11-12 17:54:51.503)
I have BSC203 running on a new Dell computer (32bit) on Windows 7. I have had an issue with the BSC203 causing a Blue screen of death. I updated the firmware using the APT manager. During firmware update, my computer screen flashed and went into low resolution. After firmware update I continue to get the blue screen of death. Please let me know if there exists a known solution. I am happy to help trouble shoot this problem. Chris
msoulby  (posted 2013-11-14 06:16:44.0)
Response from Mike at Thorlabs: Our software and drivers are Microsoft signed and tested with most windows operating systems. We have never heard of our drivers or controllers creating a 'blue screen of death' during the firmware update. I would recommend a complete reinstall of the drivers and software or to try the controller on a second machine.
dongilkeum  (posted 2013-11-05 16:00:08.243)
I need accurate time control under 100 ms. But, by the limitation of Windows as non-real time OS, I couldn't achieve that. Can I use rs-232 ports directly instead of USB? If it is possible, I will use micro controller or DSP.
msoulby  (posted 2013-11-06 11:12:54.0)
Response from Mike at Thorlabs: Currently it is not possible to control the BSC20x controllers with RS232 connection. Communication is currently only possible through the USB port. USB commincation does suffer from latency plus the additional signal processing carried out by our controller means it may not be possible to achieve the speed of control you require.
mgiacomelli  (posted 2013-06-04 14:23:01.253)
Hi, Is there any update on getting 64 bit programming support for this product? I understand there was some talk of a subset of functionality being available from a 64 bit process, but haven't heard about it lately. Any sort of support would be a huge improvement; the ActiveX bits are not really so useful as simple motion control. We stopped running 32 bit Windows some years ago, and so I am debating sitting down and reverse engineering the controller USB protocol to enable using it with more modern software. Thanks
tcohen  (posted 2013-06-06 13:37:00.0)
Response from Tim at Thorlabs: This will be fully addressed in the new software. Currently it is still in development and is progressing to an executable for a larger testing phase shortly. We do have the communications protocol available for download at
anthony.ayari  (posted 2013-05-30 04:35:42.24)
Dear Thorlabs Tech support, I bought a BSC203 controller for a DRV014 motor actuator. In my Labview program, I can move forward and backward but only for positive value of the motor position. I can’t move the motor for a negative value (using absolute of relative motion as shown in the provided example programs) of the position whereas it is possible to do it with the APTuser interface. In my application, I can’t do a homing to get the actual position of the motor. Is there either : 1)a way to modify the saved encoded position of the motor so that the program will believe that the value is positive and when this value returns to zero because for instance the power is switched off, I can put back a rough proper value without having to home the stage. or 2) an instruction in Labview that allows negative value of the motor like in the APTuser program. Thank you
jlow  (posted 2013-06-04 11:23:00.0)
Response from Jeremy at Thorlabs: You could edit the configuration file to allow negative values in the APT. I will get in contact with you directly to send you more instructions for doing this.
ruslan.burow  (posted 2013-05-23 07:33:24.03)
It is possible to change the move direction for example for the "MoveRelativeEx" -Method ? And How?
jlow  (posted 2013-05-23 11:57:00.0)
Response from Jeremy at Thorlabs: To make a move relative in the reverse or opposite direction, the distance value entered should be negative. The details for the method can be found in the APT Server Help file located under the Thorlabs APT folder in Start Menu. I will get in contact with you directly to send you more info.
tcohen  (posted 2013-02-26 14:42:00.0)
Response from Tim at Thorlabs: That is correct. The current APT software uses ActiveX components that are intrinsically 32bit. Our APTUser runs on WoW64 when using a 64bit Windows OS, but any client environments (such as LabVIEW) must be 32bit. We are addressing this in the next generation of software, which will be 64bit compatible natively.
jlow  (posted 2012-12-20 08:45:03.723)
Response from Jeremy at Thorlabs: The list and description of all the available ActiveX methods can be found at the following location Start Menu>>All Programs>>Thorlabs>>Help>>APT Server Help. If you are looking for information on a particular method please let us know and we can send you the relevant information. We do not get many requests for HP VEE so do not currently have any support documentation to supply you with. However if you can tell us what you are aiming to do with your controller/stage or what problems you may be then please let us know and we would be happy to work through this with you. You can contact us directly through if you have any questions.
ebramire  (posted 2012-11-30 12:50:55.357)
Im trying to develop some HP VEE code to operate a T-cube DC servo motor driver controller. However, I am unable to locate reference documentation for the methods available through the ActiveX routines. I noticed that in the "User Guide to LabVIEW & APT" document there is a mention of an "APT Programming Guide" in the "User Guide to LabVIEW & APT", but I cannot find this on my system or on the Thorlabs web site. Could you please point me to any available documentation for the methods included in the ActiveX library? Also if there is a guide similar to the "User Guide to Labview & APT" but for HP VEE, could you please let me know where I can find it? Thank You.
jlow  (posted 2012-10-11 16:55:00.0)
Response from Jeremy at Thorlabs: You can download the latest software for the APT at Once that is installed, you could open up the APT Firmware (under "Start" -> "All Programs" -> "Thorlabs" -> "APT") and click on Flash Firmware if you do not have the latest version.
dcfortin  (posted 2012-10-09 16:02:43.71)
Do you have a firmware upgrade to this controller. I think we are running v 1.03... Thanks, Dave
jlow  (posted 2012-07-31 14:20:00.0)
A response from Jeremy at Thorlabs: Can you make sure the USB cable is connected between the computer and the unit before it is powered on please? Also, can you check to make sure that "Enable Simulator Mode" is unchecked in "APTConfig" please?
pier-luc.fortin.2  (posted 2012-07-26 11:43:25.0)
Hi,I have a problem with the BSC 101 controller and I saw on this page that anyone already has had the same problem before. When I connect the USB cable between my computer and the BSC101 module, the computer doesn't recognize the peripheral. I tried to use another cable, to enable and disable the controller, to unistall and and reinstall the software (and unplugging the controller during the installation), but nothing works. Moreover, when I open "APT Config", the serial number of the device doesn't appear when I want to make stage association. I also want to specify that I use another FW103H with the BSC101 Controller on my other computer and I have no problem with it. But when I connect the new controller on this computer, the peripheral isn't recognize again. Do you have any solution to propose?
tcohen  (posted 2012-03-28 15:02:00.0)
Response from Tim at Thorlabs: Thank you for your feedback. This may be due to a corrupted installation of an APT or Labview driver. The first thing to do would be to remove APT and all associated drivers and reinstall APT which will reinstall the drivers. I will contact you directly for troubleshooting.
cfredricksen  (posted 2012-03-28 11:19:45.0)
We are using this controller with APT through Labview on a Windows XP machine. After running our Labview program several times, we eventually get the blue screen of death with an IRQL_NOT_LESS_OR_EQUAL error. Are you aware of this problem and do you know of a fix? From what I have seen on the internet it appears to be some kind of interrupt conflict. Thanks
bdada  (posted 2012-02-24 15:02:00.0)
Response from Buki at Thorlabs to m.musterd: Thank you for your feedback. Please refer to pages 40 to 47 of the manual linked below for more information on the Trigger Out function. We have contacted you to provide additional support.
m.musterd  (posted 2012-02-02 11:48:23.0)
Hi, I am using the BSC101 controller with the NR360S NanoRotator. I am recording the motion of a substrate on the NR360 with a camera and I would like to use the Trigger Out (pin 4) to flash a light at the moment the rotation starts so I have a t=0 for my camera recording. Is this possible? If so, how does this work?
bdada  (posted 2011-10-03 10:47:00.0)
Response from Buki at Thorlabs: Thank you for your feedback. It sounds like your stage needs to be repaired. We have contacted you to set up a return and repair for the stage.
pzagrajek(at)  (posted 2011-09-30 11:09:47.0)
Hi, I am using BSC103 controller and NRT150P1/M stages. In one of them I cannot move stage to home position properly. Even a stage is at the end (near a motor), when I press home/zero button on APTUser GUI, a position on display becomes more and more negative, motor is trying to work (I hear sound) and stage is not moveing.
jjurado  (posted 2011-08-18 18:31:00.0)
Response from Javier at Thorlabs to lili4research: Each channel of the BSC103 stepper motor controller contains an I/O connector which features digital and analog pins for interface with external hardware. Pin 4 of the I/O connector is used for triggering a move from an external TTL level signal. The triggering mode and move type can be set up in the Advanced tab of the Motor Settings window in the APT User utility, along the step distance and velocity profile. This information can be found in pages 42, 46 and 49 of the BSC103 manual: I will contact you directly for further support.
lili4research  (posted 2011-08-17 18:09:02.0)
I use NRT150 with BSC103. I want the stage to move a single step after receiving a trigger. Do you have documents on how to configure triggered motion control? Cant find information anywhere in manuals.
jjurado  (posted 2011-08-08 12:29:00.0)
Response from Javier at Thorlabs to jm.rodriguez.oyarzun: Thank you very much for contacting us. I will contact you directly to help you troubleshoot your application.
jm.rodriguez.oyarzun  (posted 2011-08-06 11:34:06.0)
Hi, we have a problem with our BSC101 controller. The USB connection it’s not detected by the computer. We follow the step by step installation guide on the manual, but when we connect the controller to the PC the hardware installation (drivers) does not work. Note that the computer does not detect any device connected to the USB port. We have tried with several different USB cables and computers but with the same results. The USB ports of the computers works fine with other devices.
jjurado  (posted 2011-08-05 09:58:00.0)
Response from Javier at Thorlabs to last poster: At the moment, we are not planning the release of an updated APT communications protocol document. However, we can gladly help you with additional information that might be missing from the documentation. Please contact us at so that we can assist you directly.
user  (posted 2011-08-03 20:41:22.0)
Hi, Is there going to be a more recent update on the communication protocol for APT controllers? It would be nice to include the following commands that are missing in the manual: messageID 0x0060 0x042E 0x0213
jjurado  (posted 2011-03-28 17:02:00.0)
Response from Javier at Thorlabs to bluepb: Thank you for contacting us with your request. A change in the default settings for the pitch of the lead screw could very well explain the fractional translation. You can double check the pitch setting in the APT User utility. I would also suggest reconfiguring the BSC102 controller with the DRV001 actuator in order to ensure that the correct association is used. Also, we would recommend running the actuator with our APT software prior to using the LabVIEW application; this could help determine where the discrepancy is coming from. I will contact you directly for further assistance.
bluepb  (posted 2011-03-23 21:02:28.0)
We have one problem on using bsc102, nanomax301, DRV001 with labview program. when I use apt user software, there is no problem. However, when I use the labview, the actual movement is not correct. we set 2mm to move with labview program, but it moves only 1mm. when we set 100um, it actually moves only 50um. Did I miss something to write a code with labview? or can you give me an advice? Also I wonder how to change or increase the velocity using the labview program. is it "setvelparams"?
bdada  (posted 2011-03-07 13:42:00.0)
Response from Buki: In order for the APT controller to run the NRT150 stage it must be associated and configured. The BSC102 can run many devices so you have to tell it to run the NRT150. This means the APT Config utility must be run first. 1. Make sure the current software is installed APT 2.11.0 2. Make sure the USB cable is connected before power is turned on. 3. Run the APT Config utility software 4. Make sure the simulation mode is off (unchecked) 5. Associate channel 1 or channel 2 (by serial number, user option) 6. Associate and add the NRT150. Then run the APT User utility. The NRT150 can now be controlled by the APT GUI panel. If a black screen is observed follow option 2 again. We have contacted you with this information and would be happy to discuss this further with you if you have any questions.  (posted 2011-03-04 16:30:43.0)
We have one problem on using BSC102 to control the NRT150. When we run the APT user, the software can not find the delay stage. We even try the APT config, it still does not work. The problem happened several times in our lab. Can you provide some technical solutions for that? Thanks,
jjurado  (posted 2011-02-01 18:12:00.0)
Response from Javier at Thorlabs to tstier: Thank you very much for submitting your inquiry. The Motor Drive as well as the Motor I/O connectors on the back of the BSC103 are female. We will updated the information on the manual shortly.
tstier  (posted 2011-01-28 16:39:28.0)
Are the motor drive connectors on the back of the BSC103 male or female? We would like to begin building our cables while waiting for delivery.
tor  (posted 2011-01-05 18:46:14.0)
Response from Tor at Thorlabs to Petr: Thank you for your positive feedback and your interest in our BSC101. I will send a document containing communications protocol, which should get you started.
kubanek  (posted 2010-12-14 12:31:47.0)
We would like to control BSC101 from Linux, using custom C/C++ environment (RTS2 - we use this to control telescopes and labs, this particular application is for CCD testing lab). Will you be willing to provide us specification of the USB protocol? We will hardly use ActiveX, and even LabView is pain for us on Linux. We do regularly develop own drivers for devices, including USB devices, so we shall not have problems writing driver for BSC101. We enjoyed your Laser products, which have simple RS232 USB bridge and comes with protocol description, but we miss protocol description for BSC101. Thank you in advance. Petr Kubanek
tor  (posted 2010-11-23 22:04:29.0)
Response from Tor at Thorlabs to Rober: We do not have RS232 commands, as the BSC103 interfaces with ActiveX. The system can be controlled through LabView, Visual C++, and Visual Basic. Please see our video tutorials under the "APT Tutorials" tab on this page for further details. Please do not hesitate to contact us at if you need further assistance.
rll  (posted 2010-11-23 10:18:00.0)
Dear Sirs, We bought last year a BSC103 controler with RS232 option, but the manual does not content the rs232 direct commands. Please, could you send me the list of these commands inj order to can control manualy the system. thank you in advance, Rober
Thorlabs  (posted 2010-07-14 08:50:29.0)
Response from Javier at Thorlabs to tim.rausch: thank you for your feedback. There is actually no part 2 of the LabWindows/CVI help file. However, if you have particular questions about programming in this environment, we may be able to help. Also, we have an open forum were you may be able to find help regarding software-related questions. You can sign up at I will follow up with you directly.
tim.rausch  (posted 2010-07-13 18:19:29.0)
Javier, where is part 2 of the CVI demo. I would like to be able to control the stages with my own code. The help file is NOT clear at all.
Javier  (posted 2010-06-10 10:06:03.0)
Response from Javier at Thorlabs to john.radle: you can download a tutorial for integration of our APT software with NI CVI from our ftp site. The address is Username: thortech Password: password. The name of the file is APT CVI I will contact you directly in case you need further assistance.
Oli  (posted 2010-03-19 11:39:50.0)
A respone from Oli at Thorlabs to cvisone: Th jog inputs are indeed digital inputs as described in A.1.2. It should be possible to drive them in the same way (and with the same cautions) as the other digital inputs. We will change the manual to state that these pins be interpreted as a logic low (0V < Vin < 0.8V) will cause the motor to jog. The idle state is logic high (2.4V < Vin < 5.0V).
cvisone  (posted 2010-03-19 09:04:00.0)
Are the jogging lines in the control i/o connector digital inputs as described in A.1.2 of the manual of the BSC102? Instead of using a handset I would like to drive those lines with the output of an FPGA.
user  (posted 2010-03-05 09:14:39.0)
A response from Oli at Thorlabs to Arash.farhang: There are no sub vis as the active X objects talk directly to the APT server. However, what you are trying to do is entirley possible with the existing commands. I will contact you directly with support for this.
arash.farhang  (posted 2010-03-05 05:29:30.0)
I have a question about one of the activeX objects available in labview, particularly the MGMotor Control object. With this control, I can change the angle at which the rotational stage is currently at, however, I cannot figure out how to add additional custom commands of my own. For example one of things I would like to do is be able to have the motor take one step, stop for 10 seconds, take one step, stop for 10 seconds, take one step, stop for 10 seconds and so on, until N number of steps have been made. I set up a VI just like the examples on the web show (with a while loop as well) and then added a wait timer set to 10 seconds in the while loop, but this did not work of course because the motor control icon is outside the while loop. I then proceeded to put everything in the while loop, but this did not work either. It seems like I dont understand the structure of dataflow from this control. Is there anyway for me to observe the subvis that define this contol? I know that if I can view them, I will have a very good chance of creating my own custom vi that will perform the tasks I want it to perform. Thanks Arash Farhang
apalmentieri  (posted 2010-02-03 10:44:02.0)
A response from Adam at Thorlabs to cooljkpark: The motion you recieve in the backward direction is related to the backlash compenstation. It is possible to turn this off, but it is not recommended as this will reduce the accuracy of the stage. Unfortunately, we did not get your email address. If you would like more help regarding this inquiry, please email us at
cooljkpark  (posted 2010-02-03 08:55:10.0)
I have question about control max324/m(step motor part) with bsc103. when I order move absolute position For forward direction motor stopping at ordered position as soon as it reach ordered position but For backward direction motor dose not stop ordered position as soon as it reach position. Little bit over moving and move agaion forward finally stopping at ordered position. I want to know why backward moving work like that and how can i do for backward moving same as forward moving.
klee  (posted 2009-11-20 16:05:21.0)
A response from Ken at thorlabs to enes_eken1986: The serial number you have entered is not the serial number of the 3 channels drivers but the controller box. Run the APT Config utility program. Here you will need to associate three stepper motors to the three driver boards in the controller box. The number you see in the association (motor) is the serial number to use. There will be three unique numbers..
enes_eken1986  (posted 2009-11-20 03:26:23.0)
hi I bought a bsc103 stepper motor driver and I want to use this product with visual basic. So I added activexs file to visual components. And then I want to use apt motor controller like mg17motor. after that I must enter HW serial number. My problem is this point. my divers serial number is 70811358 but apt motor controller properties dont accept this number but give default number 12345678 what must I do? thanks
klee  (posted 2009-10-08 16:12:41.0)
A response form Ken at Thorlabs to jarosik: After you have installed the software, go to Start Menu > All Programs > Thorlabs > APT > Help > APT Server Help. Then click on Prgramming Guide > Motor Control > Motor Control Methods.
jarosik  (posted 2009-10-08 15:48:19.0)
Im trying to develop some LabVIEW code to operate a BSC101 stepper motor controller. I have down loaded the support CD and found the "User Guide to LabVIEW & APT" document very useful. However, I am unable to locate reference documentation for the methods available through the ActiveX routines. There a mention of an "APT Programming Guide" in the "User Guide to LabVIEW & APT", but I cannot find this on my system or on the Thorlabs web site. Could you please point me to any available documentation for the methods included in the ActiveX library? Thank You. Norm Jarosik Princeton University
jens  (posted 2009-06-30 13:41:54.0)
A reply from Jens at Thorlabs: the NRT100 should come with the connector cable PAA613 that allows you to connect the NRT100 to the BSC101 controller. I will send you an email to arrange shipment of such a cable.
parkh6  (posted 2009-06-30 13:27:54.0)
Dear Thorlabs, What if I would like to use a NRT100 with BSC101. The connector does not match. If you let me know the pin connection between NRT100 and BSC101, it will be great help. Thanks,
Tyler  (posted 2008-11-03 16:11:48.0)
A response from Tyler at Thorlabs to xiaomei.chen: A member of our technical support department will email you step by step instructions for dealing with this error. Basically, this is caused by execution setting in Labview. Under "VI Properties" choose the category "Execution" and then choose "User Interface". The instructions being sent to you have screen shots to help guide you. Thank you for choosing the BSC stepper motor controller and if you need any further assistance please dont hesitate to ask.
xiaomei.chen  (posted 2008-11-03 09:41:03.0)
We tried to use the basic example vi attached with software to control the motor, there is always the error 3006, we cant find the reason, the VIs are provided by your company. Could you please possiblly tell me what kind of error this is?

Based on your currency / country selection, your order will ship from Newton, New Jersey  
+1 Qty Docs Part Number - Universal Price Available
BSC201 Support Documentation
BSC201Customer Inspired! One-Channel Benchtop Stepper Motor Controller
BSC202 Support Documentation
BSC202Customer Inspired! Two-Channel Benchtop Stepper Motor Controller
BSC203 Support Documentation
BSC203Customer Inspired! Three-Channel Benchtop Stepper Motor Controller