Project home: https://bues.ch/h/razercfg Original repository at: https://git.bues.ch/git/razer.git https://bues.ch/h/razercfg

Michael Buesch 2ba796e6fa systemctl: Use --force when enabling unit to avoid errors 8 éve
debian ef3aef5ecc debian: Add applet 8 éve
firmware 89ea08bafa Update email address 13 éve
icons e50dac1308 icons: Clarify which files are affected by the license 8 éve
librazer 3865de0f9b librazer: Ensure ASCII chars for serial descriptor 8 éve
razerd 3dcac0d1d4 razerd: Make sure ASCII strings really are ASCII before sending 8 éve
scripts ad409197df cflags: Go back to c99 8 éve
ui c218705134 qrazercfg: Use return from main instead of sys.exit 8 éve
.gitignore c2ed0452db Ignore the generated desktop file 9 éve
CMakeLists.txt 2ba796e6fa systemctl: Use --force when enabling unit to avoid errors 8 éve
COPYING 5ae2be7c22 Add a copy of the GNU GPL 17 éve
HACKING.md 1763f7b6c5 Extend HACKING 10 éve
README.md 2d0e3ef491 Update README.md 8 éve
pm-hook.sh.template ea7e5f7a55 use configure_file rather than custom_command 10 éve
razer.conf d592a5644d razer.conf: Fix typo 9 éve
razercfg.desktop.template 32531893c8 Desktop file 9 éve
razerd.initscript 4c004416c1 Move razerd binary from sbin to bin 10 éve
razerd.service.template ea7e5f7a55 use configure_file rather than custom_command 10 éve
udev.rules.template ea7e5f7a55 use configure_file rather than custom_command 10 éve
uninstall.sh 6b5b0b22b8 Add applet to install 8 éve

README.md

Razer device configuration tool

This is a configuration utility for Razer devices on Linux systems.

Supported devices

Device support table at bues.ch/cms/hacking/razercfg.html#device_support

Dependencies

  • Python 3.x: python.org
    Debian Linux: apt-get install python3

  • libusb 1.0: libusb.org
    Debian Linux: apt-get install libusb-1.0-0-dev

  • PySide (for the graphical qrazercfg tool only): qt-project.org/wiki/PySide
    Debian Linux: apt-get install python3-pyside

  • cmake 2.4 or later (for building only): cmake.org
    Debian Linux: apt-get install cmake

Note that almost all distributions ship prebuilt packages of the above dependencies.

If you installed a dependency after you already ran cmake . and/or make, it might happen that the dependency is still not found. Just delete the cmake status files or unpack a clean razercfg tarball to workaround this issue.

Building

First invoke cmake to build the makefiles. Then invoke make to build the binaries:

cmake .
make

(Note the required space and dot after the cmake command)

Installing

First you need to install the tool libraries and binaries. Do this by executing the following command as root:

make install

Be aware that make install installs the shared library librazer.so to $PREFIX/lib. The default $PREFIX is /usr/local/, but the install prefix can also be changed via -DCMAKE_INSTALL_PREFIX='<somewhere>'. You have to make sure that librazer.so in $PREFIX/lib/ can be found by the dynamic linker ld.so. Your operating system most likely already has support for libraries in /usr/local/lib. So on most systems you don't have to do anything. If this is not the case, or you installed razercfg somewhere else, a new library search path can be added via /etc/ld.so.conf or /etc/ld.so.conf.d/. See your operating system manual for further information.

If you use systemd:

The make install step installed the razerd.service file. Reboot or run the following command as root to start the razerd daemon:

systemctl start razerd

If you do not use systemd:

To automatically start the required system daemon razerd at bootup time, you need to install the init-script. This software package includes a generic example script, that should work out-of-the-box on many Linux distributions. To install it, invoke the following commands as root:

cp ./razerd.initscript /etc/init.d/razerd
ln -s /etc/init.d/razerd /etc/rc2.d/S99razerd
ln -s /etc/init.d/razerd /etc/rc5.d/S99razerd
ln -s /etc/init.d/razerd /etc/rc0.d/K01razerd
ln -s /etc/init.d/razerd /etc/rc6.d/K01razerd

If you use udev:

The make install step installed the udev script to $(pkg-config --variable=udevdir udev)/rules.d/80-razer.rules. This should work on most distributions.

If udev notification does not work, try to reboot the system.

RazerD Configuration

The user may create a razerd configuration file in /etc/razer.conf which can be used to specify various razerd options and initial hardware configuration settings. An example config file is included as razer.conf in this package. If no configuration file is available, razerd will work with default settings.

X Window System (X.ORG) Configuration

If you don't have an xorg.conf, you don't have to do anything and it should work out-of-the-box.

X must not be configured to a specific mouse device like /dev/input/mouse0. On configuration events, razerd may have to temporarily unregister the mouse from the system. This will confuse X, if it's configured to a specific device. Configure it to the generic /dev/input/mice device instead. This will enable X to pick up the mouse again after a configuration event from razerd.

Example xorg.conf snippet:

Section "InputDevice"
    Identifier	"Mouse"
    Driver	"mouse"
    Option	"Device" "/dev/input/mice"
EndSection

Alternatively, do not specify a "Device" at all. X will autodetect the device then:

Section "InputDevice"
    Identifier	"Mouse"
    Driver	"mouse"
EndSection

In any case, do NOT use: Option "Device" "/dev/input/mouseX"

Using the tools

To use the tools, the razerd daemon needs to be started as root, first. Without the background daemon, nothing will work. The daemon is responsible for doing the lowlevel hardware accesses and for tracking the current state of the device. While the daemon is running, the user interfaces razercfg (commandline) and qrazercfg (graphical user interface) can be used.

Uninstalling

If you installed razercfg with your distribution packaging system, use that to uninstall razercfg.

If you compiled razercfg from source and installed it with make install, you can use the uninstall.sh script from the razercfg archive to uninstall razercfg from the system. It must be called with the install prefix as its first argument. That usually is /usr/local, unless specified otherwise in cmake. A call to uninstall.sh might look like this:

./uninstall.sh /usr/local

Architecture

The architecture layout of the razer tools looks like this:

 -------------------
| hardware driver 0 |--v
 -------------------   |
                       |    ----------
 -------------------   |   | lowlevel |     --------      ---------
| hardware driver 1 |--x---| librazer |----| razerd |----| pyrazer |
 -------------------   |    ----------      --------      ---------
                       |                        |           ^ ^ ^
 -------------------   |     ---------------------------    | | |
| hardware driver n |--^    | (to be written) librazerd |   | | |
 -------------------         ---------------------------    | | |
                                              ^ ^ ^         | | |
                                              | | |         | | |
                           ---------------    | | |         | | |
                          | Application 0 |---^ | |         | | |
                           ---------------      | |         | | |
                                                | |         | | |
                           ---------------      | |         | | |
                          | Application 1 |-----^ |         | | |
                           ---------------        |         | | |
                                                  |         | | |
                           ---------------        |         | | |
                          | Application n |-------^         | | |
                           ---------------                  | | |
                                                            | | |
                           ----------                       | | |
                          | razercfg |----------------------^ | |
                           ----------                         | |
                                                              | |
                           -----------                        | |
                          | qrazercfg |-----------------------^ |
                           -----------                          |
                                                                |
                            --------------------------          |
                          | Other Python applications |---------^
                           ---------------------------

So in general, your application wants to access the razer devices through pyrazer or (if it's not a python app) through librazerd. (Note that librazerd is not written, yet. So currently the only way to access the devices is through pyrazer). Applications should never poke with lowlevel librazer directly, because there will be no instance that keeps track of the device state and permissions and concurrency.

License

Copyright (c) 2007-2015 Michael Buesch
License at COPYING file.