Ardufocuser INDI


INDI is a protocol designed to support control, automation, data acquisition, and exchange among hardware devices and software frontends. INDI stands for the Instrument-Neutral-Distributed-Interface, and was developed by Elwood C. Downey of ClearSky Institute.

Control systems are often written for a specific device or range of devices. When one or more of the device parameters change, the software needs to be modified to accommodate the change. That is, the software frontend and hardware backend are tightly coupled.

INDI Control Protocol INDI resolves this problem by providing a framework that decouples low level hardware drivers from high level front end clients. That is, clients that use the device drivers are completely unaware of the device capabilities. In run time, clients communicate with the device drivers and build a completely dynamical GUI based on the services provided by the device.

The core of INDI is the idea that all information is captured in Properties.

Source : Official Page


  1. Open source INDI is released under the GNU Lesser General Public License (LGPL v2+)
  2. Cross Platform Currently, Linux, BSD, and OSX are supported. Windows support is under progress.
  3. XML Based INDI is small and easy is parse. The INDI protocol can be nested within other XML elements such as RTML to add constraints for automatic scheduling and execution.
  4. Client agnostic Clients learn the properties of a particular Device at runtime using introspection.
  5. Distributed control With INDI server/client architecture, you can communicate with devices either locally or remotely transparently.
  6. Wide range of support INDI supports many astronomical devices including telescopes, CCDs, focuser, spectrometers, and a lot more.


The main key concept in INDI is that devices have the ability to describe themselves. In INDI, all devices may contain one or more properties. Any property may contain one or more elements. A property in the INDI paradigm describes a specific function of the device. There are five types of INDI properties:

  • Text property
  • Number property
  • Switch property – represented in GUI by buttons or check boxes.
  • Light property – represented in GUI by colored LEDs.
  • Blob property – binary data.
  • INDI provides powerful scripting facilities that enable full device automation.