Introduction to INDI

The INDI Library is a collection of programs designed to control astronomical equipment. Its telescope control platform, called Ekos, controls a TeenAstro mount through an INDI driver.

Driver design

TeenAstro, like many other mounts, is controlled with a protocol derived from an early Meade telescope, called LX200. The TeenAstro INDI driver derives directly from the simplest LX200 driver with basic functionality (lx200basic), and adds the TeenAstro specific functions. When available, the existing LX200 functionality is used, if not it is copied from OnStep and other drivers, or implemented from scratch.


Source files : lx200_TeenAstro.cpp, lx200_TeenAstro.h

Driver info: indi_lx200_TeenAstro

Driver versions

Date Version Description
Jan 2020 0.8 Basic functionality
Apr 2020 1.0 Added error handling for limits, save and restore driver configuration
1 May 2020 1.1 Fixed TCP/IP comms error, set default guide speed to 0.5x
10 May 2020 1.2 Compatibility with Firmware v1.2 (backward compatible with 1.1)
Jan 2022 1.2a Fixed slew speed selection

Connection options

KStars / Ekos runs either on a PC, Mac or on a Raspberry Pi. The connection between this device and TeenAstro is done either through USB (the Telescope port on the main unit), or through Wifi to the Smart HandController (SHC), port 9999 (IP address depends on the network). When running through Wifi, the SHC requires a firmware version that allows permanent IP connections with the “One to One” Wifi menu option (SHC version 1.2b or above).

Mount Type

TeenAstro supports German Equatorial, Alt Azimuth, Fork Azimuth and Fork equatorial mounts. However the current driver only supports German Equatorial.

Current features

GOTO: yes

Sync: yes

Slew Speeds: Guide, Slow, Medium, Fast, Max. All speeds can be configured through the hand controller. Max speed depends on mount and motors.

Track Rates: Sidereal, Solar, Lunar

Tracking can be disabled

Auto Meridian Flip: no

Configurable custom parking positions: yes

Pulse-guiding: yes

Guide Rates: 0.25x, 0.5x, 1x

ST4 Guiding: yes

Sync and Alignment (2 or 3-star) is done using the hand controller. The mount needs to be aligned before connecting the driver.

Guiding can be done with ST4 or software (pulse-guiding)

4 sites are stored, with their coordinates including altitude (elevation)

An optional GPS device can be connected, its functionality is not exposed to the INDI driver.

Functionality - standard Meade commands

These lists are not complete, but are included here for convenience. Check the source code (Command_xx.ino) for details

Function Command Used in INDI driver
Get Right Ascension / Declination :GR# :GD#
Get Azimuth / Altitude :GA# :GZ#
Set target RA, Declination :Sr...#, :Sd...#
Goto target RA/Dec :MS#
Set target Azimuth / Altitude :Sa...#, :Sz...#
Goto target az/alt :MA#
Set tracking mode :TQ# :TS# :TL#
Park / Unpark / Set parking position :HQ# :HR# :HP#
Sync to current coords/object :CS# :CM#
pier side / dist to meridian :Gm#
Set centering speed (buttons) :R#
Move N / S / W / E :Mx#
Display firmware data :GVD# :GVN# etc
Get current site location, UTC etc :GM# etc.
Select Site :Wn#
Send guiding command :Mgn# etc.
Enable / Disable tracking :Te# :Td#
Enable / disable refraction correction :Tr# :Tn#
Get / Set site altitude :Ge# :Se#

Functionality - TeenAstro-specific commands

All Get commands (:GX..) except :GXI# have a Set (:SX..) counterpart that sets the parameter in TeenAstro

Function Command Notes Used in INDI driver
Get mount status :GXI# (1)
Get Acceleration :GXRA#
Get Max Rate :GXRX#
Get Default Rate :GXRD#
Get Backlash rate :GXRB#
Get Limits :GXLn# n is E/W/U/O/H
Get Date/Time :GXTn# n is 0 to 2
Get Backlash values :GXMBn# n is D or R
Get Gear :GXMGn# n is D or R
Get Steps :GXMSn# n is D or R
Get Microsteps :GXMMn# n is D or R
Get Direction :GXMRn# n is D or R
Get High current :GXMCn# n is D or R
Get Low current :GXMcn# n is D or R
Get Pole Alignment (True / Apparent) :GXApn# See Command_G.ino
Get Debug info :GXDnn# See Command_G.ino
Get Axis Positions in degrees :GXPn# n is 1 or 2
Get Custom Tracking Rate :GXRn# n is 0 to 4

(1) Status is a 16-character string, coding the status as follows:

position char values meaning
0 0, 1, 2 '0' + 2 * movingTo + sideralTracking
1 0, 1 sidereal mode
2 pIPF not [p]arked, parking [I]n-progress, [P]arked, Park [F]ailed
3 space or H at home
4 0 to 3 current slew rate
5 space @ G spiral, guide
6 * + * for guide pulse/ST4, + for guide recenter
7-8 > < b _ see Command_G.ino
9 f fault
10 c corrected tracking
11 0 1 star alignment
12 E K k A mount type
13 E W pier side
14 0 1 GNSS valid
15 0 to E Last error code - See LX200RETURN in TeenAstroLX200io.h

Not implemented

Tab Function command Standard Meade In TeenAstro
Main control Object info - macro from lx200driver.h :LI# yes no
Main control Alignment status :Gw# yes no
Main control Elevation limits :Sh# :So# yes yes
Motion control Custom track rate (RA / declination) :RA# :RE# yes no
Motion control dual axis tracking :T2# no no
Motion control Tracking frequency / frequency adjust :T+# :T-# :GT# yes no
Align Polar align :MP# no no
PEC Periodic Error Correction :QZ# etc. yes no
Focuser Focus control :F+ etc. yes yes