INDI 3rd party drivers include all the drivers not included by default in the INDI Core Library.
Check the Device Driver documentation for detailed information on how to operate each device driver.
All the driver documentation is community-contributed. Any updates or correction to the documentation in INDI library is greatly appreciated.
The following classes of devices are supported in the INDI 3rd party repository:
- Cameras: CCDs, CMOS, and DSLR
- Mounts.
- Focusers.
- Filter Wheels.
- Domes.
- GPS.
- Adaptive Optics.
- Radio Astronomy Receivers.
- Spectrometers.
- Weather Stations.
- Auxiliary drivers.
If a driver meets any of the following criteria, then it needs to be included in the INDI 3rd party repository:
- Any camera driver.
- Any driver with external dependencies not satisfied by INDI core library.
- Any driver that would like to remain independent from INDI core library release schedule.
Learn more about INDI:
Before building INDI 3rd party drivers. INDI Core Library must be already installed on your system.
On Debian/Ubuntu:
sudo apt-get install libnova-dev libcfitsio-dev libusb-1.0-0-dev zlib1g-dev libgsl-dev build-essential cmake git libjpeg-dev libcurl4-gnutls-dev libtiff-dev libfftw3-dev libftdi-dev libgps-dev libraw-dev libdc1394-22-dev libgphoto2-dev libboost-dev libboost-regex-dev librtlsdr-dev liblimesuite-dev libftdi1-dev
If you plan on contributing to INDI development, then it is recommended to perform a full clone:
git clone https://github.com/indilib/indi-3rdparty.git
If on the other hand, you are only interested to build INDI 3rd party driver, then it is best to clone a shallow copy as this will be much faster and saves lots of space:
git clone --depth=1 https://github.com/indilib/indi-3rdparty
You can build the all the 3rd party drivers at once (not recommended) or build the required 3rd party driver as required (recommended). Each 3rd party driver may have its own pre-requisites and requirements. For example, to build INDI EQMod driver:
cd build
mkdir indi-eqmod
cd indi-eqmod
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug ../../3rdparty/indi-eqmod
make
sudo make install
The complete list of system dependancies for all drivers on Debian / Ubuntu
sudo apt-get install
To build all 3rd party drivers, you need to run cmake and make install twice. First time is to install any dependencies of the 3rd party drivers (for example indi-qsi depends on libqsi, so libqsi must be built and installed first), and second time to install the actual drivers themselves.
cd build
mkdir indi-3rdparty
cd indi-3rdparty
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug ../../indi-3rdparty
make
sudo make install
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug ../../indi-3rdparty
make
sudo make install
- INDI API
- INDI Developer Manual
- Tutorials
- Developers Forum
- Developers Chat
- Sample drivers are available under examples and drivers/skeleton directories. They can be used as a starting point for your driver development.
How to contribute to INDI full guide
Here is the short version on how to submit a PR:
- Login with a Github account and fork the official INDI repository.
- Clone the official INDI repository and add the forked INDI repository as a remote (git remote add ...).
- Create a local Git branch (git checkout -b my_branch).
- Work on the patch and commit the changes.
- If it is ready push this branch to your fork repo (git push -f my_fork my_branch:my_branch).
- Go to the official repo's github website in a browser, it will popup a message to create a PR. Create it.
- Pushing updates to the PR: just update your branch (git push -f my_fork my_branch:my_branch)..
If you would like to make cleaner PR (recommended!) please read this tutorial and follow it. The best way is to keep one logical change per commit and not pollute the history by multiple small fixes to the PR.
When submitting a new driver, the driver user documentation is required as part of the submission process.
- Installation: Driver name, executable name, version, required INDI version.
- Features: What features does it support exactly?
- Operation: How to operate the driver? Each sub section should come with a screen shot of the various tabs..etc.
Preferably annotated to make it easier for new users to follow.
- Connecting: How to establish connection? How to set port if any?
- Main Control: Primary control tab and its functions.
- Options: Explanation for the various options available.
- Etc: Any other tabs created by the driver.
- Issues: Any problems or issues or warnings the users should be aware about when using this driver.
You can base a new driver from an existing driver. Look in either the examples or drivers/skeleton directories on how to get started.
In order to run the unit test suite you must first install the Google Test Framework. You will need to build and install this from source code as Google does not recommend package managers for distributing distros.(This is because each build system is often unique and a one size fits all aproach does not work well).
Once you have the Google Test Framework installed follow this alternative build sequence:-
mkdir -p build/indi-3rdparty
cd build/indi-3rdparty
cmake -DINDI_BUILD_UNITTESTS=ON -DCMAKE_BUILD_TYPE=Debug ../../indi-3rdparty
make
cd test
ctest -V
For more details refer to the scripts in the travis-ci directory.