TL;DR:
1st of all lets agree that having universal standard protocol across devices like Alpaca is good thing.
But to make it successful you need something like indigo or indi like project for Alpaca - there is no work-around of having working driver hub and server with numerous drivers implemented for both Linux and Windows. And no - indigo bridge to alpaca isn't a solution.
Long:
Now the devil in the detail and it is the reason why it isn't nearly as successful as it could/should be.
Under Windows there are a standard APIs. Every vendor who wants its device to work implements it. For Astronomy it is ASCOM
Under Linux every vendor who wants its device to work submits his drivers to the relevant project, if it is Linux Kernel or for Astronomy there is Indi and Indigo that provide their API
If I develop a camera or a mount I need to implement ASCOM API under Windows and publish the drivers for download and submit the driver to indi as open (preferably) or closed source - this is how these two worlds behave. (Also windows is getting little bit closer to Linux - now drivers are accessible from central Windows repo so user does not need to hunt them down.)
ALPACA is protocol based on ASCOM API. There is No ASCOM for Linux or there is no Alpaca server for Linux, if I want to support Linux-device-host via Alpaca as device vendor I need to implement the protocol myself: either in the device itself or as service that talks to the device via USB/TTY/wifi etc. or hope that a middle-ware like alpaca-indigo actually works well.
There is no Alpca hub with ascom like API to submit your drivers - that is why it is rarely relevant for Linux.
So practically:
Linux connected devices:
USB/serial <-> vendor-sdk/vendor code <-> indi API <-> indi protocol | <-> indi client <-> Actual software (Linux, Android, iOS or Windows)
USB/serial <-> vendor-sdk/vendor code <-> indigo API <-> indigo protocol/bus <-> indigo client <-> Actual software (Linux, Android, iOS or Windows)
USB/serial <-> vendor SDK <-> Actual software (Linux)
Windows connected devices:
USB/Serial <-> ASCOM driver <-> ASCOM API <-> Actual software (Windows)
USB/Serial <-> ASCOM driver <-> ASCOM API <-> Alpaca Server <-> Alpaca protocl <-> Alpacal client <-> Actual software (Linux, Android, iOS or Windows)
USB/serial <-> vendor SDK <-> Actual software (Windows)
As hardware vendor there is no C++/C API I can implement to work with Alpaca - there is no central repository to submit your driver to, there is no standard API/ABI to implement to work with Alpaca that would allow users download shared object/dll
Implementation wise
Alpaca REST API mapping almost 1-to-1 ASCOM - for good and bad - simple request response
Indi and Indigo are virtually identical concepts that can even theoretically be interoperable (not always practically thou) based on properties - for good and bad.
So conceptually ASCOM and Indi/Indigo API are very-very different
Finally it would be fantastic if what I could do is just to use a simple REST client for Alpaca and forget anything else - and it should be like that.
But for this you need something like alpaca_server and alpaca_com_like_api for Linux that would allow vendors submit their drivers easily to a central hub writing identical (or virtually identical) code to work with ASCOM and with aplaca_server
And even if it is there it need to be "jump-started" with initial implementation of existing common drivers (that way indigo did when split from indi)
That is why vision no mater how great it is is far from reality
Small Edit:
Example while alpaca-indigo bridge isn't really relevant for me: ITelescopeV3 implemented with exception of MoveAxis method group (not compatible with INDIGO substantiall
Basically I can't do framing of the object or manually slew the scope - this is kind of a deal breaker
This is also very alarming: INDIGO RGB is mapped to Colour, other modes to Mono sensor type (no bayer offsets etc)
So basically I can't get raw bayer image if I understand correctly...
Edited by artik, 05 May 2025 - 04:55 AM.