twifty / lights

Work In Progress - Linux drivers for (A)RGB peripherals
17 stars 1 forks source link

WARNING

This project is a work in progress. There may be, and probably are, a few bugs. I would advise NOT installing in it's current form, and instead wait for a stable release. However, if you are interested in collaborating/testing, please open an issue. While I have tried to make the code work for all, I can only test on my limited set of available devices.

Some files contain paths which are hard coded for my personal system. Trying to build may result in errors. File paths and names may change from one push to the next, as may function prototypes.

I will state this again, this is a work in progress. I've pushed the code for the benefit of testers, issue tracking and version control.

Installation

If you don't know how to install build dependencies or run a makefile, then this module in its current form, is not ready for you.

Kernel headers a required to be installed at /lib/modules/$(shell uname -r)/build. If your distro places them in a different directory, either create a symlink or adjust the makefile(s). Available make command are build, clean, install, uninstall. NOTE, the install command only uses insmod from within the build directory. Your Current kernel is not changed.

structure

The code is a collection of kernel modules.

sysfs

Each module creates one or more directories within the systems /dev/lights/ folder. Each of these directories maps to an RGB zone available on the hardware. Each zone may contain the files:

Each zone also has a directory available in /sys/class/lights/. Here, device specific settings can be found. For example the caps file lists all the available color modes of a device.

permissions

Two udev rules exists in the udev/ sub-directory (copy them to /etc/udev/rules.d). The first simply applies the 'lights' group to all device files. Users need only create a 'lights' group on their system and add permitted users to that group. The second is to unbind the AURA ARGB headers from the default kernel driver.

future

Once the modules are working without problems, I intend to create a system service and GUI application. The service will be able to handle creating extra effects which are not natively supported, and handle synchronizing colors between devices which may cycle at differing speeds.

Known Issues