Usage & Problems

If you don't find an answer, you can submit a bug or question here.

My computer is not supported, what can I do?

Check if there's a bug concerning your computer model on GitHub, and if it don't exists create one:

  1. Set the title of the bug as: "Add support to <model> Computer"
  2. Fill the general information of the bug (GNU/Linux distribution, python version etc)..
  3. Add the USB data of your computer:
    1. Open a terminal and execute the lsusb command:
      
      [rsm@m14xr1 ~]$ lsusb
      Bus 001 Device 004: ID 187c:0521 Alienware Corporation 
      Bus 001 Device 003: ID 413c:8187 Dell Computer Corp. DW375 Bluetooth Module
      Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
      Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
      Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
      Bus 002 Device 002: ID 25a7:fa23  
      Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
      						
    2. Find the line with the Alienware device and get the bus and device numbers:
      
      Bus 001 Device 004: ID 187c:0521 Alienware Corporation
      						
    3. Execute the lsusb -D /dev/bus/usb/<bus>/<device> command:
      >
      [rsm@m14xr1 ~]$ lsusb -D /dev/bus/usb/001/004
      Device: ID 187c:0521 Alienware Corporation 
      Couldn't open device, some information will be missing
      Device Descriptor:
        bLength                18
        bDescriptorType         1
        bcdUSB               1.10
        bDeviceClass            0 
        bDeviceSubClass         0 
        bDeviceProtocol         0 
        bMaxPacketSize0        64
        idVendor           0x187c Alienware Corporation
      [etc...]
      						

What will happen next?

  1. I'll take your Computer ID and Vendor ID and I'll create a configuration file into /usr/share/AKBL/computers/.
  2. I'll commit the changes and I'll request you to download it, install it and test it.
  3. I'll wait to have your feed back (everything works, there are some problems, etc..). Please be specific! and give me as much details as possible!

If after all that your computer is recognized and you have minor problems (Ex: left and right keyboard), I'll commit the fixes.

If some zones are not recognized, I'll ask you to launch the block testing window to find the appropriate hex values. Once the blocks found, I'll add them to the configuration file, and I'll commit the changes to the code.

How to use the block testing window?

  1. Execute as root akbl --block-testing.
  2. A window will appear and normally the ID Vendor and ID Product will be already filled. If not, akbl may not support your computer.
  3. Click, the Connect button, and the block testing block should be ready to be used.

The block testing will help you to find the hex id's of your keyboard by iterating one by one the different possible hex values. Normally, the only thing you need to do, is to change the Block Number combobox, and click the Test button.

When iterating over the block numbers, everything will be logged. Once that you have found an hex color of a zone, you can directly write the zone name. Here is an example:

Text File

[Device found]: Vendor ID: 6268	 Product ID: 1313


# This test turned on my left speaker
[Command]: Lights off
[TEST]: block: 32	 hex: 0x20	 mode:blink	 speed:1	 color1:#00ff00	 color2: #00ff00


# This test turned on the akbl logo    
[Command]: Lights off
[TEST]: block: 256	 hex: 0x100	 mode:blink	 speed:1	 color1:#00ff00	 color2: #00ff00 
    
            

After making changes to a theme the changes are not applied

For the moment the themes need to be saved before applying them. Any unsaved change will not be recognized by the daemon.

What's the function of the tempo button / clock icon / right-top corner button?

That button manages the speed of the theme in the following cases:

  • When the section of a theme (keyboard-left, keyboard-right, etc..) has multiple zones.
  • When some zone has the morph (gradient) mode.
  • When some zone has the blink mode.

Why there are no distribution packages and the installation is so complex?

Here is one good part of the answer:

  • Why not use setuptools:
    • It does not feed some needs like installing Systemd files.
    • This module should always be avoided because all the software of a distribution shall be managed by the package manager.
    • This feature may be interesting for Python software that is multi-operative system, which is not the case for AKBL.
  • Why not to let distributions do their thing?
    • Normally the GNU/Linux software is always released with installation batchs, and then, the maintainers of each Distribution create a custom package and include it into their repositories. If you a maintainer you can feel free to do that.
    • In the old times (before 2016) I used to create Debian packages and I even had my own repository, but I do not have the time to maintain it anymore. It is too much time consuming to release packages for each distribution (Debian, Noobuntu, ArchLinux..).
    • Create a package means that I made a release, I don't release AKBL.
  • Why not create a binary?
    • Even if you can compile python code, I don't think that you will be able to include all the dependencies which some may be written in other languages.
    • There is no much sense in compiling python software that is free code.
  • Why not using custom paths? The software files are kinda "complex". There are:
    • Python module files
    • Common resource files
    • Binary files
    • User files
    • Systemd files
    • Temp files
    • Communication files
    and every single file has a special location defined by GNU/Linux conventions. This should not be customized by an user. If you really want to do this, you can modify the setup script, and the paths python file.
  • Why using a batch:
    • Because it is the common way to install GNU/Linux software that do not comes from any repository.
    • Because it allows to do anything that it is necessary to do (Move files, start services, etc etc..).
    • Because it works for any GNU/Linux distribution. I do not need to pass hours checking the dependencies of each distribution and making tests.
    • Because it does not requires to release the code, it can be directly taken from GIT, which allows much more flexibility.