indi_pylibcamera setup - aaronwmorris/indi-allsky GitHub Wiki
indi_pylibcamera Driver Setup
indi_pylibcamera is a Python-based INDI driver that interfaces with Raspberry Pi libcamera CSI sensors (IMX477 HQ Camera, IMX708 Camera Module 3, IMX296 Global Shutter Camera) via the official Python bindings (python3-picamera2 and python3-libcamera).
[!IMPORTANT] Debian Package (
.deb) Installations: The pre-built.debpackage installs all necessary system libraries and manages systemd units automatically. Modifyingpyvenv.cfgor executingpip installinside/var/lib/indi-allsky/venv/is unnecessary and unsupported.The setup steps below apply specifically to Source / Git Checkout (
setup.sh) installations configuring user-level INDI servers (systemctl --user).
1. System Requirements
- Operating System: Raspberry Pi OS 12 (Bookworm) 64-bit or Raspberry Pi OS 13 (Trixie) 64-bit.
- Memory: Minimum 2 GB RAM recommended due to Python runtime memory consumption during frame acquisition and debayering.
2. Install Host Dependencies
Install the system Python libcamera bindings:
sudo apt-get update
sudo apt-get install -y \
python3-picamera2 \
python3-libcamera \
libgles2-mesa
3. Virtual Environment Configuration (Source Installs Only)
Python libcamera bindings must be inherited from system site-packages.
Step 1: Enable System Site Packages
Edit the virtual environment configuration file (virtualenv/indi-allsky/pyvenv.cfg):
home = /usr/bin
include-system-site-packages = true
version = 3.11.2
executable = /usr/bin/python3.11
Step 2: Install Driver inside Virtualenv
Activate the virtual environment and install indi-pylibcamera:
source /var/lib/indi-allsky/virtualenv/bin/activate
# Or from git checkout: source virtualenv/indi-allsky/bin/activate
pip3 install indi-pylibcamera
pip3 install --upgrade simplejpeg
4. User Systemd Unit Configuration
When executing indiserver under a user systemd service ($HOME/.config/systemd/user/indiserver.service), ensure PATH and PYTHONPATH expose the virtualenv and system libraries:
[Unit]
Description=INDI Server
After=network.target
[Service]
Environment="PATH=/home/pi/indi-allsky/virtualenv/indi-allsky/bin:/usr/local/bin:/usr/bin:/bin"
Environment="PYTHONPATH=/home/pi/indi-allsky/virtualenv/indi-allsky/lib/python3.11/site-packages:/usr/local/lib/aarch64-linux-gnu/python3.11/site-packages"
ExecStart=/usr/bin/indiserver -p 7624 indi_simulator_telescope indi_pylibcamera
ExecStop=/bin/kill -TERM $MAINPID
Restart=on-failure
RestartSec=5
PrivateTmp=true
UMask=0022
[Install]
WantedBy=default.target
Reload and restart the user service:
systemctl --user daemon-reload
systemctl --user restart indiserver
systemctl --user status indiserver
5. Driver Configuration Preset
In the web interface under Camera Settings -> INDI Custom Properties / Switches:
{
"SWITCHES": {
"CAMCTRL_AWBENABLE": {
"on": [
"INDI_ENABLED"
],
"off": []
}
},
"PROPERTIES": {},
"TEXT": {}
}
Reference repository: scriptorron/indi_pylibcamera