I'm working on a port to Go. Follow progress and try the initial version here.
After purchasing a Logitech Litra Glow I was unable to find any support for linux. This project reverse-engineers the basic functionality of the litra glow so that we can control it via USB without using the physical buttons on the device. It also now supports the Logitech Litra Beam.
# If necessary, create a udev role to grant permission to access the light
sudo tee /etc/udev/rules.d/82-litra-glow.rules <<< 'SUBSYSTEM=="usb", ATTR{idVendor}=="046d", ATTR{idProduct}=="c900",MODE="0666"'
sudo tee /etc/udev/rules.d/82-litra-beam.rules <<< 'SUBSYSTEM=="usb", ATTR{idVendor}=="046d", ATTR{idProduct}=="c901",MODE="0666"'
# For most operating systems, reloading udev rules is enough
sudo udevadm control --reload-rules
sudo udevadm trigger
# For others, a reboot may be required
# sudo reboot
# Uninstall if previously installed
pip uninstall litra-driver
pip install litra-driver
# Command Line Interface
lc --help
# User Interface
lcui
The following dependencies may need to be installed for the UI. This was specifically noted on Fedora 37:
sudo dnf install -y python3-tkinter libappindicator-gtk3
The following dependencies may need to be installed for the UI. This was specifically noted on ubuntu 20.04:
sudo apt-get install -y python3-tk gir1.2-appindicator3-0.1
A basic UI can be launched to allow control of the light:
lcui
NAME
lc
SYNOPSIS
lc COMMAND
COMMANDS
COMMAND is one of the following:
on
Turns on the Litra Glow
off
Turns off the Litra Glow
temp
Sets the temperature level of the Litra Glow
bright
Sets the brightness level of the Litra Glow
Sample Usage
lc on
lc bright 10
lc temp 6500
lc off
# Chain multiple commands
lc on bright 100 temp 2700
The log level can be adjusted by setting the environment variable LITRA_LOGLEVEL
to one of the following:
- CRITICAL
- ERROR
- WARNING
- INFO
- DEBUG
pip install build
# Create distribution
python -m build
# Local Testing
pip install --editable .
# Linter
tox -e lint
# Unit Test - "Coming Soon"™
tox -e test
# Push to pypi
pip install twine
twine check dist/*
twine upload dist/*