What is INDIGO driver?

Questions & Answers
Post Reply
User avatar
Peter Polakovic
Posts: 2689
Joined: Thu Apr 21, 2016 9:38 am

What is INDIGO driver?

Post by Peter Polakovic »

INDIGO driver is a piece of software that operates and controls a particular hardware on one side and provides unified API on another. You can't use any device with INDIGO based application unless you have a proper driver for it.

With a few exceptions, drivers fall into one of two main categories:

[*]USB device drivers, which typically can handle multiple physical devices and have a hot plug/unplug support. The logical device (or devices) appears or disappears when the physical device is connected or disconnected. Most of camera drivers are USB device drivers (the exception is, e.g. SBig camera connected to the network) and also some wheel or focuser drivers are USB device drivers (if the devices are HID devices).

[*]serial device drivers, which typically can handle single physical device ad have no hot plug/unplug support. A single logical device is present whenever the physical device is connected or not. Most of mount, focuser and aux drivers are serial device drivers. Even if the device is connected with USB cable, it usually means, that there is some USB-to-serial adapter inside. For such devices you may need to install also operating system driver (FTDI, Prolific, etc. depending of chip vendor).

Most of INDIGO drivers are a cross-platform code and can be compiled for both Linux and macOS, but some are not. Either because they use system specific API (e.g. ICA DSLR driver or some bluetooth focusers) or because software development kit supplied by the vendor is not available for particular operating system or processor (e.g. no ARM SBig support or linux only gphoto driver).

Every driver creates at least one logical device (a device visible for the connected INDIGO based applications). The device has a name, which should be unique on the bus. it may be something like "Mount LX200" or "SX AO" for serial devices or something like "Atik Horizon #1234" or "ZWO ASI 120MM-S #1234" for USB devices. The suffix at the end identifies the position of the device on USB bus and is used to identify particular device uniquely if you have multiple devices of the same type.

Some drivers create multiple logical devices. E.g. some cameras have a built in filter wheel or ST4 port. In such case you will see among "Camera XY" also "Camera XY (wheel)" or "Camera XY (guider)". Also some mount drivers will create also devices for guiders or focusers.

In distributed system the device may have different name depending on from what do you see it. Every protocol adapter routing the messages between different buses will add or strip a suffix like "@ service-name" to the device name. So the device name for the device connected to remote RPi as seen in webGUI may be e.g. "Mount LX200", while from a remote client you will see "Mount LX200 @ INDIGO Sky". In the most general case the service name can be host name, IP address together with a port number.
Post Reply