INDI Dome support includes all observatory enclosures of different designs such as roll-off roofs, regular domes, and clamshell-style domes.

DIY Roll-Off Roof

To implement your own roll-off roof driver, here are the basic requirements:


  1. AC/DC Motor: The motor must be eletronically controllable either via a relay or a controller board (Arduino..etc). The only controls needed are start/stop and direction control (CW and CCW). In INDI, a fully opened roof is considered Unparked, while a fully closed roof is considered Parked. Anything between these two (partially open) is considered an Unknown state.
  2. Limit switches: Fully closed and fully opened limit switches are required in order to sense when the roof is fully opened and closed. These limit switches serves two purposes:
    1. Cut off power to motor once limit is reached.
    2. Sense when roof is parked or unparked.

Therefore, Motor + 2 limit switches is all you need to have a working roll-off roof hardware system to be used with INDI.


The roll-off roof requires an INDI driver so that it can be controlled from any INDI-compatible client. You can either use the Dome Scripting Gateway driver or customize the sample INDI roll-off driver to fit your needs.

The Dome Scripting Gateway driver relies on executing Python scripts to command actions for Open and Close. It is recommended to use this driver if you have limited programming expereince but can manage to write simple Python script to control your motor.

Customizing the INDI Roll-off driver is optimal if you know some rudementary C++. Here are some real-world examples of roll-off drivers to get you started:

  • Aldi Roof Driver: The roof is powered by a 550W electric hoist purchased from Aldi. The arduino controls 4 relays connected to the hoist's hand controller which override the manual switch. The indi driver comminicates with the arduino using the frimata protocol.
  • Ikarus Observatory Driver: Using Digital Loggers Din Relay, Limit switches, Raspberry PI
  • Arduino Roll Off Driver: It is a INDI rolloff roof driver and includes two examples of Arduino programs communicating over USB. The driver is packaged as a third party driver but haa not been included with the standard distribution. The Arduino code needs to be modified to match the motor control selected, the INDI driver should work once installed.
  • Odroid INDI Roof: This indi driver is used to control an observatory box. It is just a very compact box with an automated lid, opened by two linear actuators, 2 micro-switches act as position sensors (open/close). The all lot is powered by an Odroid-C1 and a standard 8 relays board.

Dome Slaving

Dome slaving refers to the dome slit synchronization with the telescope position as the mount traverse across the sky. The dome slit follows the telescope whether is is slewing from one object to another, or while tracking. When tracking, the dome would move when the difference between its current and target postion exceeds the Autosync Threshold parameter, which default to 0.5 degree. Therefore, the dome calculates its target position every second, but only commands motion when the difference exceeds the autosync threshold.

You can slave the dome to the mount by setting the required slaving parameters:

  1. Radius is for the radius of the dome in meters.
  2. Shutter width is the clearance of the shutter of the dome in meters
  3. N displacement is for North displacement. If telescope is not in its ideal central position this parameter allows to configure how much it is displaced from the center. Displacement to north are positive, and to south are negative.
  4. E displacement is for East displacement. Similar as the above, displacement to east are positive, and to west are negative.
  5. Up displacement is for displacement in the vertical axis. Up is positive, down is negative.
  6. OTA offset is for the distance of the optical axis to the crossing point of RA and DEC. In fork mount this is generally 0, but for German like mounts is the distance from mount axis cross to the center line of the telescope. West is positive, east is negative.

After settings the parameters above, go to Options tab and click Save in Configurations so that the parameters are used in future sessions. You can also set the Autosync threshold which is the minimum distance autosync will move the dome. Any motion below this threshold will not be triggered. This is to prevent continuous dome moving during telescope tracking.

Dome is not correctly slaving

1. Make sure that the dome azimuth movement and position are correct and repeatable. If the azimuth is incorrect or not repeatable you will never get a good sync. Good means to withing a couple of degrees.
2. Align the mount. For a celestron GEM that's polar aligned a quick align should be good enough but once again you can't get a good sync without a good alignment. Within a degree should do.
3. Set the dome radius to a sensible value, Do not change it again.
4. Set the mount to hour angle 6h, declination 90. This is the Align position, looking at the pole with the counterweight shaft down. In this position the OTA offset will have no effect on the dome azimuth, not will the NS position of the mount.
5. Adjust the mount EW offset until the scope is looking through the centre of the dome slit.
6. Move the mount so the counterweight shaft is horizontal and the OTA is looking at the Southern horizon. In this position the main things that affect where the dome needs to be are the EW mount offset and the OTA offset.

We have already set the EW offse so set the OTA offset. Try this with the mount on both side of the meridian and iterate as required to get the scope able to see out in both cases.
set the scope so it is looking at the East or west horizon, this should be with the dec counterweight shaft pointing down. Adjust the Ns offset so the OTA can see out. Do this both looking East and West.

Debugging Calculations

Ferran Casarramona, the developer of the Dome Slaving routine, wrote a spreadsheet to debug the calculations. You can make a copy and play with it to see how parameters affects the outcome.

You can enter the values in blue cells, and output are in the orange cells. You enter your telescope parameters, and your latitude. Also enter target declination and target hour angle (angular distance to the meridian, in hours).

Baader Dome

0 reviews
Baader Dome

Installation indi_baader_dome is included with INDI Library >= v1.0.0 Under Ubuntu, you can install the driver via: sudo add-apt-repository ppa:mutlaqja/ppa sudo apt-get update sudo apt-get install libindi1 Features The driver c ...

DragonFly Observatory Controller

Installation Lunatico's Dragonfly is an observatory controller that can be used for remotely controlling your roll off roof and more with easy powerful features including event scripting. The driver provides a simple control for roll-ff roof observatori ...

MaxDome II

0 reviews
MaxDome II

Installation indi_maxdomeii is released as a 3rd party driver in source and binary packages. It is compatible with libindi >= v0.7. Under Ubuntu, you can install the driver via: sudo add-apt-repository ppa:mutlaqja/ppa sudo apt-get update ...


0 reviews

Installation NexDome is a classic observatory dome with more than 100 degrees of shutter opening, allowing you to point your telescope to the zenith while remaining shielded from stray light and wind. The 2.2 meter inside diameter provides plenty of spa ...

Pulsar Dome

0 reviews
Pulsar Dome

Installation Pular Dome is included with libindi > v1.8.2. To install it under Ubuntu: sudo apt-add-repository ppa:mutlaqja/ppa sudo apt-get update && sudo apt-get install indi-bin Pulsar Observatories domes utilize rigel controller ...


Installation ScopeDome is included with libindi > v1.7.6. To install it under Ubuntu: sudo apt-add-repository ppa:mutlaqja/ppa sudo apt-get update && sudo apt-get install indi-full ScopeDome controller can be used with a classic observat ...

Talon6 Roll Off

0 reviews
Talon6 Roll Off

Installation INDI Talon6 driver is released as a 3rd party driver in source and binary packages. Under Ubuntu, you can install the driver via: sudo add-apt-repository ppa:mutlaqja/ppa sudo apt-get update sudo apt-get install indi-talon6 Features ...