rsm-gh / akbl

Control the lights of Alienware computers under GNU/Linux systems.
GNU General Public License v3.0
128 stars 24 forks source link

Add support to Alienware Area51 R1 #100

Open kylrth opened 3 years ago

kylrth commented 3 years ago

System information

Bug description

$ sudo lsusb -D /dev/bus/usb/003/003
Device: ID 187c:0526 Alienware Corporation 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               0.02
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x187c Alienware Corporation
  idProduct          0x0526 
  bcdDevice            0.00
  iManufacturer           1 Alienware
  iProduct                2 A-51
  iSerial                 3 9.0.0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0029
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.01
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      56
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x000a  1x 10 bytes
        bInterval              10
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0000
  (Bus Powered)
rsm-gh commented 3 years ago

Hello @kylrth ,

I just added your configuration file 2131e932e5177085870482c47999837c348ed10a, and looking similar models I think that it will not work but I have some doubts. Can you test it and make me return?

Best regards, rsm

kylrth commented 3 years ago

Ok I checked out that commit, ran the setup script, and got the following output:

kyle@computer:~/akbl$ sudo ./setup 

 *********************************** 
 *** Installing AKBL v2019.05.26 *** 
 *********************************** 

[1/5] Removing previous versions..

Disabling the systemd daemon...
Removed /etc/systemd/system/basic.target.wants/akbl.service.

Removing the software links..
python3.8 AKBL removed
python3.9 AKBL removed

Removing the software files and directories..
removed.f: /usr/bin/akbl
removed.f: /usr/share/applications/AKBL.desktop
removed.d: /usr/share/AKBL
removed.d: /usr/share/doc/AKBL
removed.d: /usr/lib/python3/AKBL

[2/5] Installing the software files...
 Copying the software files...
installing: /usr/bin
installing: /usr/share/applications
installing: /usr/share/AKBL
install: omitting directory '/home/kyle/akbl/usr/share/AKBL/computers'
install: omitting directory '/home/kyle/akbl/usr/share/AKBL/launch'
install: omitting directory '/home/kyle/akbl/usr/share/AKBL/test'
installing: /usr/share/AKBL/computers
installing: /usr/share/AKBL/launch
installing: /usr/share/AKBL/test
installing: /usr/share/doc/AKBL
install: omitting directory '/home/kyle/akbl/usr/share/doc/AKBL/BusData'
install: omitting directory '/home/kyle/akbl/usr/share/doc/AKBL/ImagesPreview'
install: omitting directory '/home/kyle/akbl/usr/share/doc/AKBL/Licenses'
install: omitting directory '/home/kyle/akbl/usr/share/doc/AKBL/Programming'
installing: /usr/share/doc/AKBL/BusData
install: omitting directory '/home/kyle/akbl/usr/share/doc/AKBL/BusData/Data'
installing: /usr/share/doc/AKBL/BusData/Data
installing: /usr/share/doc/AKBL/ImagesPreview
installing: /usr/share/doc/AKBL/Licenses
installing: /usr/share/doc/AKBL/Programming
install: omitting directory '/home/kyle/akbl/usr/share/doc/AKBL/Programming/class_diagrams'
installing: /usr/share/doc/AKBL/Programming/class_diagrams
installing: /usr/lib/systemd/system
installing: /usr/lib/python3/AKBL
install: omitting directory '/home/kyle/akbl/usr/lib/python3/AKBL/Addons'
install: omitting directory '/home/kyle/akbl/usr/lib/python3/AKBL/Data'
install: omitting directory '/home/kyle/akbl/usr/lib/python3/AKBL/Engine'
installing: /usr/lib/python3/AKBL/Data
install: omitting directory '/home/kyle/akbl/usr/lib/python3/AKBL/Data/Computer'
install: omitting directory '/home/kyle/akbl/usr/lib/python3/AKBL/Data/Theme'
installing: /usr/lib/python3/AKBL/Data/Computer
installing: /usr/lib/python3/AKBL/Data/Theme
installing: /usr/lib/python3/AKBL/Engine
installing: /usr/lib/python3/AKBL/Addons
install: omitting directory '/home/kyle/akbl/usr/lib/python3/AKBL/Addons/BlockTesting'
install: omitting directory '/home/kyle/akbl/usr/lib/python3/AKBL/Addons/GUI'
install: omitting directory '/home/kyle/akbl/usr/lib/python3/AKBL/Addons/Indicator'
install: omitting directory '/home/kyle/akbl/usr/lib/python3/AKBL/Addons/ModelChooser'
installing: /usr/lib/python3/AKBL/Addons/GUI
install: omitting directory '/home/kyle/akbl/usr/lib/python3/AKBL/Addons/GUI/ColorChooserToolbar'
install: omitting directory '/home/kyle/akbl/usr/lib/python3/AKBL/Addons/GUI/images'
installing: /usr/lib/python3/AKBL/Addons/GUI/ColorChooserToolbar
installing: /usr/lib/python3/AKBL/Addons/GUI/images
installing: /usr/lib/python3/AKBL/Addons/BlockTesting
installing: /usr/lib/python3/AKBL/Addons/Indicator
install: omitting directory '/home/kyle/akbl/usr/lib/python3/AKBL/Addons/Indicator/images'
installing: /usr/lib/python3/AKBL/Addons/Indicator/images
installing: /usr/lib/python3/AKBL/Addons/ModelChooser
 Replacing variables...

[3/5] Creating the python links...
python3   linked (default location)
python3.8 linked
python3.9 linked

[4/5] Choosing the computer model...
Choose the configuration file from the GTK window that will appear..
Unable to init server: Could not connect: Connection refused
Unable to init server: Could not connect: Connection refused

(model_chooser.py:1571158): Gtk-CRITICAL **: 18:31:07.921: _gtk_style_provider_private_get_settings: assertion 'GTK_IS_STYLE_PROVIDER_PRIVATE (provider)' failed

(model_chooser.py:1571158): Gtk-CRITICAL **: 18:31:07.921: _gtk_style_provider_private_get_settings: assertion 'GTK_IS_STYLE_PROVIDER_PRIVATE (provider)' failed

(model_chooser.py:1571158): Gtk-CRITICAL **: 18:31:07.921: _gtk_style_provider_private_get_settings: assertion 'GTK_IS_STYLE_PROVIDER_PRIVATE (provider)' failed
/usr/bin/akbl: line 58: 1571158 Segmentation fault      (core dumped) python3 /usr/share/AKBL/launch/model_chooser.py

[5/5] Enabling the daemon...
Created symlink /etc/systemd/system/basic.target.wants/akbl.service → /lib/systemd/system/akbl.service.

 ************************************* 
 *** AKBL v2019.05.26 is installed *** 
 ************************************* 

This is a headless machine. How can I set it up without a display?

rsm-gh commented 3 years ago

@kylrth, well, I guess that I need to code a feature for the installation without a display... can you open a new bug for that? I'll tag it as enhacement and I'll try to find some time to provide a fix or a work-around

Best regards

kylrth commented 9 months ago

Thanks for making the install script work without a GUI. Here is the new output; it looks like my hardware is not supported:

kyle@computer:akbl$ sudo ./setup 
[1/5] Removing previous versions..

 Disabling the systemd daemon...
Removed /etc/systemd/system/basic.target.wants/akbl.service.

 Removing the python links..
/usr/lib/python3.8/AKBL link removed
/usr/lib/python3.9/AKBL link removed

 Removing the software files and directories..
removed.f: /usr/share/applications/AKBL.desktop
removed.f: /usr/bin/akbl
removed.d: /usr/share/AKBL
removed.d: /usr/share/doc/AKBL
removed.d: /usr/lib/python3/AKBL

[2/5] Installing the software files...
installing: /usr/bin
installing: /usr/share/applications
installing: /usr/share/AKBL
install: omitting directory '/home/kyle/akbl/usr/share/AKBL/BlockTesting'
install: omitting directory '/home/kyle/akbl/usr/share/AKBL/GUI'
install: omitting directory '/home/kyle/akbl/usr/share/AKBL/Indicator'
install: omitting directory '/home/kyle/akbl/usr/share/AKBL/ModelChooser'
install: omitting directory '/home/kyle/akbl/usr/share/AKBL/computers'
install: omitting directory '/home/kyle/akbl/usr/share/AKBL/test'
installing: /usr/share/AKBL/test
installing: /usr/share/AKBL/launch
install: cannot stat '/home/kyle/akbl/usr/share/AKBL/launch/*': No such file or directory
installing: /usr/share/AKBL/computers
installing: /usr/share/AKBL/GUI
install: omitting directory '/home/kyle/akbl/usr/share/AKBL/GUI/ColorChooserToolbar'
install: omitting directory '/home/kyle/akbl/usr/share/AKBL/GUI/img'
installing: /usr/share/AKBL/GUI/ColorChooserToolbar
installing: /usr/share/AKBL/GUI/img
installing: /usr/share/AKBL/BlockTesting
installing: /usr/share/AKBL/Indicator
install: omitting directory '/home/kyle/akbl/usr/share/AKBL/Indicator/img'
installing: /usr/share/AKBL/Indicator/img
installing: /usr/share/AKBL/ModelChooser
installing: /usr/share/doc/AKBL
install: omitting directory '/home/kyle/akbl/usr/share/doc/AKBL/BusData'
install: omitting directory '/home/kyle/akbl/usr/share/doc/AKBL/ImagesPreview'
install: omitting directory '/home/kyle/akbl/usr/share/doc/AKBL/Licenses'
install: omitting directory '/home/kyle/akbl/usr/share/doc/AKBL/Programming'
installing: /usr/share/doc/AKBL/BusData
install: omitting directory '/home/kyle/akbl/usr/share/doc/AKBL/BusData/Data'
installing: /usr/share/doc/AKBL/BusData/Data
installing: /usr/share/doc/AKBL/ImagesPreview
installing: /usr/share/doc/AKBL/Licenses
installing: /usr/share/doc/AKBL/Programming
install: omitting directory '/home/kyle/akbl/usr/share/doc/AKBL/Programming/class_diagrams'
installing: /usr/share/doc/AKBL/Programming/class_diagrams
installing: /usr/lib/python3/AKBL
install: omitting directory '/home/kyle/akbl/usr/lib/python3/AKBL/Computer'
install: omitting directory '/home/kyle/akbl/usr/lib/python3/AKBL/Engine'
install: omitting directory '/home/kyle/akbl/usr/lib/python3/AKBL/Theme'
installing: /usr/lib/python3/AKBL/Engine
installing: /usr/lib/python3/AKBL/Computer
installing: /usr/lib/python3/AKBL/Theme
installing: /usr/lib/systemd/system

[3/5] Creating the python links...
linked python3.8
linked python3.9

[4/5] Choosing the computer model...
Error: No configuration is available for this hardware.

[5/5] Enabling the daemon...
Created symlink /etc/systemd/system/basic.target.wants/akbl.service → /lib/systemd/system/akbl.service.
rsm-gh commented 9 months ago

@kylrth ,

There was a mistake on the computers configuration, it should work now,

rsm~

kylrth commented 9 months ago

Thank you! The ./setup script works now. Now when I try to run sudo akbl --off I get the following output:


[ERROR]: "/usr/lib/python3.8/AKBL/Bindings.py" __command:
Command=set_lights, arguments=[root,False]
Traceback (most recent call last):
  File "/usr/lib/python3.8/AKBL/Bindings.py", line 52, in __command
    return getattr(self.__pyro, command)(*args)
  File "/usr/lib/python3/dist-packages/Pyro4/core.py", line 185, in __call__
    return self.__send(self.__name, args, kwargs)
  File "/usr/lib/python3/dist-packages/Pyro4/core.py", line 467, in _pyroInvoke
    data = serializer.deserializeData(msg.data, compressed=msg.flags & message.FLAGS_COMPRESSED)
  File "/usr/lib/python3/dist-packages/Pyro4/util.py", line 171, in deserializeData
    return self.loads(data)
  File "/usr/lib/python3/dist-packages/Pyro4/util.py", line 614, in loads
    return self.recreate_classes(serpent.loads(data))
  File "/usr/lib/python3/dist-packages/Pyro4/util.py", line 416, in recreate_classes
    return self.dict_to_class(literal)
  File "/usr/lib/python3/dist-packages/Pyro4/util.py", line 633, in dict_to_class
    return super(SerpentSerializer, cls).dict_to_class(data)
  File "/usr/lib/python3/dist-packages/Pyro4/util.py", line 395, in dict_to_class
    raise errors.SerializeError("unsupported serialized class: " + classname)
Pyro4.errors.SerializeError: unsupported serialized class: usb.core.USBError

The same occurs when I try to use the Python bindings.

A while ago I placed some tape between the contacts for some of the lights, in order to cut the power to them completely. Could this be the cause of the USBError?

rsm-gh commented 9 months ago

Hello @kylrth ,

To debug the software use the block testing window. It will tell you if there is any USBError,

rsm~