Thank you for your interest in contributing a driver to the INDI Library!
To maintain a high-quality and user-friendly experience, we ask all driver authors —especially device manufacturers— to follow the structured process below.
Before submitting your driver, please ensure:
- ✅ The driver builds and runs successfully
- ✅ It works with real hardware (or includes a simulation mode)
- ✅ The driver is placed in the correct directory structure
- ✅ Documentation is included in a
/docdirectory - ✅ Licensing and coding guidelines are followed
When deciding where to submit a driver (INDI Core or INDI Third-Party), use the following rule:
-
INDI Core: If the driver can be built and run using only the dependencies already available in INDI Core, it should be included in the INDI Core repository.
-
INDI Third-Party: If the driver requires any external dependencies that are not part of INDI Core, it must be submitted as a third-party driver.
This ensures that INDI Core remains lightweight and easy to build, while still allowing flexibility for more complex drivers through the third-party ecosystem.
Choose the appropriate repository and structure for your driver:
Add under: indi/drivers/
Add under: indi-3rdparty/
Example structure:
indi-3rdparty/
└── drivers/
└── yourdevice/
├── CMakeLists.txt
├── yourdevice.cpp
├── yourdevice.h
├── yourdevice.xml
└── doc/
└── index.md
indi/
└── drivers/
└── category/
├── CMakeLists.txt
├── yourdevice.cpp
├── yourdevice.h
├── ...
└── doc/
└── yourdevice
└── photo.webp
└── index.md
Your driver must include a /doc/index.md file to help users install and use the driver effectively.
- Brief description of the device
- Manufacturer, model, and supported functions
- List of implemented features (e.g., autofocus, temperature reporting)
- Dependencies and build steps (if not standard)
- UDEV rules (if applicable)
- Connection types (USB, Serial, TCP/IP)
- INDI Control Panel setup
- Common pitfalls
- Testing procedures
- Logging tips
- Driver interface
- Logs or sample output
📚 Example: indi-duino/doc
Your CMakeLists.txt should:
- Include the driver source files
- Respect standard INDI CMake variables (
CMAKE_INSTALL_PREFIX, etc.) - Optionally install docs (if applicable)
Drivers must be released under a compatible open-source license, typically GPLv2 or later.
Please add a license header to all source files.
- Fork the appropriate INDI repository
- Create a new branch (e.g.
driver-yourdevice) - Add your driver code and documentation
- Submit a Pull Request with a clear title and description
Need help?
- 🗨 INDI Forum
- 🐛 Open a GitHub Issue
- 📫 Contact a maintainer
High-quality documentation in /doc/index.md makes your hardware easier to adopt and reduces your support burden.
Consider adding:
- Diagrams
- Connection examples
- Firmware version notes
- FAQs
Thank you for contributing to the INDI community!