akbl icon indicating copy to clipboard operation
akbl copied to clipboard

Add support to the Alienware 15 R3 computer

Open FarrokhNaj opened this issue 9 years ago • 31 comments

alienware-kbl responds with "Your Computer is not yet supported" The window is blank (with the exception of the message) and menus are not active (except "Help"). I am running Ubuntu 16.10 (64 bit). "Computer Data" output is below.

Device: ID 187c:0530 Alienware Corporation 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               0.02
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x187c Alienware Corporation
  idProduct          0x0530 
  bcdDevice            0.00
  iManufacturer           1 Alienware
  iProduct                2 AW1517
  iSerial                 3 02.90
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           41
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      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
Device Status:     0x0000
  (Bus Powered)

FarrokhNaj avatar Nov 24 '16 06:11 FarrokhNaj

Hello FarrokhNaj thanks for reporting it, I've created the testing branch and pushed some commits for start giving support to your computer. I'll be waiting for your feedback and I hope that we can make it work pretty soon :)

rsm-gh avatar Nov 24 '16 10:11 rsm-gh

I downloaded and installed (via setup) the code from unstable branch. alienware-kbl still reports this computer not supported. The "Computer Data" is exactly as before. I rebooted the computer and the following showed up in syslog

Nov 26 18:30:50 Melissa systemd[1]: Started alienware-kbl daemon.
Nov 26 18:30:50 Melissa bash[3434]: The computer is not supported
Nov 26 18:30:50 Melissa systemd[1]: alienware-kbl.service: Main process exited, code=exited, status=1/FAILURE
Nov 26 18:30:50 Melissa systemd[1]: alienware-kbl.service: Unit entered failed state.
Nov 26 18:30:50 Melissa systemd[1]: alienware-kbl.service: Failed with result 'exit-code'.

Lastly, syslog was repeatedly complaining about "executable permission" on /usr/lib/systemd/system/alienware-kbl.service I changed the permission to 644 and that warning stopped, however "Computer not supported" is still there.

Thanks for your help!

FarrokhNaj avatar Nov 27 '16 03:11 FarrokhNaj

Thanks for pointing the permission problem of the systemd service file. I've fixed that.

Concerning your computer, it seems pretty weird that your computer is not being recognized since I added your idVendorand idProduct...

I noticed that you closed the bug, do you want to stop adding your computer to the configuration? I'd actually like to debug and find what's going on!

rsm-gh avatar Nov 27 '16 15:11 rsm-gh

Rafael:

Thanks for the reply.

I probably closed the bug by mistake. How can I re-open it? I would be happy to continue this.

I downloaded the unstable branch again and installed it (which "setup" reports installed successfully).

I ran aliwnware-kbl on command line and it generated a crash report which I have attached if it is of any help. By the way, the crash report still complains about permissions.

Thanks, Farrokh

Farrokh Najmabadi Emeritus Prof. of Electrical & Computer Engineering UC San Diego

On Sun, Nov 27, 2016 at 7:34 AM, Rafael Senties Martinelli < [email protected]> wrote:

Thanks for pointing the permission problem of the systemd service file. I've fixed that.

Concerning your computer, it seems pretty weird that your computer is not being recognized since I added your idVendorand idProduct...

I noticed that you closed the bug, do you want to stop adding your computer to the configuration? I'd actually like to debug and find what's going on!

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/rsm-gh/alienware-kbl/issues/8#issuecomment-263128571, or mute the thread https://github.com/notifications/unsubscribe-auth/AWnazBpGuBF_MsDxadtTPomFLjMrStLwks5rCaMLgaJpZM4K7UQM .

-- Farrokh Najmabadi

FarrokhNaj avatar Nov 29 '16 05:11 FarrokhNaj

Please ignore my previous message. By mistake, I had added an old crash report.

In any case, a new development. I finally managed to disable secure boot on this laptop. Alienware-kbl now starts (i.e., I get the GUI) but togging colors and/or changing intensity does not have any impact. Starting on the command line, I get the error list below when I close the program:

Traceback (most recent call last):
  File "/usr/share/alienware-kbl/DefaultArguments.py", line 24, in <module>
    from Paths import Paths; PATHS=Paths()
  File "/usr/share/alienware-kbl/Paths.py", line 70, in __init__
    shutil.rmtree(self.CONFIGURATION_PATH)
NameError: name 'shutil' is not defined
Runing without daemon.
root
profile added Default
Exception in thread Thread-9:
Traceback (most recent call last):
  File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.5/threading.py", line 862, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/share/alienware-kbl/GUI.py", line 718, in ILUMINATE_keyboard
    self.controller.Write_Conf()
  File "/usr/share/alienware-kbl/Engine.py", line 179, in Write_Conf
    self.WaitForOk()
  File "/usr/share/alienware-kbl/Engine.py", line 255, in WaitForOk
    self.Get_State()
  File "/usr/share/alienware-kbl/Engine.py", line 271, in Get_State
    msg = self.driver.ReadDevice(request)
  File "/usr/share/alienware-kbl/Engine.py", line 120, in ReadDevice
    msg = self.dev.ctrl_transfer(self.READ_REQUEST_TYPE, self.READ_REQUEST,
self.READ_VALUE, self.READ_INDEX, len(msg[0].packet))
  File "/usr/lib/python3/dist-packages/usb/core.py", line 1043, in
ctrl_transfer
    self.__get_timeout(timeout))
  File "/usr/lib/python3/dist-packages/usb/backend/libusb1.py", line 883,
in ctrl_transfer
    timeout))
  File "/usr/lib/python3/dist-packages/usb/backend/libusb1.py", line 595,
in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 75] Overflow

Thanks, Farrokh

Farrokh Najmabadi Emeritus Professor of Electrical & Computer Engineering UC San Diego

On Sun, Nov 27, 2016 at 7:34 AM, Rafael Senties Martinelli < [email protected]> wrote:

Thanks for pointing the permission problem of the systemd service file. I've fixed that.

Concerning your computer, it seems pretty weird that your computer is not being recognized since I added your idVendorand idProduct...

I noticed that you closed the bug, do you want to stop adding your computer to the configuration? I'd actually like to debug and find what's going on!

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/rsm-gh/alienware-kbl/issues/8#issuecomment-263128571, or mute the thread https://github.com/notifications/unsubscribe-auth/AWnazBpGuBF_MsDxadtTPomFLjMrStLwks5rCaMLgaJpZM4K7UQM .

-- Farrokh Najmabadi

FarrokhNaj avatar Nov 29 '16 06:11 FarrokhNaj

That seems like good news!

I've corrected the shutil (import error) and I've also modified the installation scripts for fixing the permissions. I actually ignore why the previous patch didn't work as expected, but I made some modifications to the setup procedure and the permissions seems to be fine now. Could you confirm this?

Concerning your problems with the GUI, you possibly had them because of the shutil import error, but it is nice that your computer is now being recognized. Normally if no error is shown, you should be able of at least turning on/off the keyboard since those hex blocks seem to be common for all the alienware computers.

Please keep me updated and thanks for your support!

rsm-gh avatar Nov 29 '16 12:11 rsm-gh

As pointed by @Heerkaas this computer is not completely supported yet. I've just added the configuration so it can be detected, but I need that some one test it and tell me what are the lights problems.

F.A.Q: My computer is not supported! What can I do? & The block testing window.

rsm-gh avatar Feb 10 '17 19:02 rsm-gh

Hi, I have an Alienware 15 r3 with Ubuntu 16.04. I remember that I tried this kbl in Nov. 2016 (right after purchase this laptop), but the whole system crashed as I can't even start the computer, so I have to reinstall Ubuntu. But anyway thanks for supporting. I read the above comments and think I can test it again now if I have a free weekend. I will let you @rsm-gh know the results then.

ld-ing avatar Feb 13 '17 18:02 ld-ing

I got the following messeges with Block 1 Test. I tried a few configures but nothing happens to my kbl.

Traceback (most recent call last):
  File "/usr/share/alienware-kbl/GUI.py", line 1098, in on_button_block_testing_lights_off_clicked
    self.testing_controller.Reset(self.testing_driver.computer.RESET_ALL_LIGHTS_OFF)
  File "/usr/share/alienware-kbl/Engine.py", line 280, in Reset
    msg = self.driver.ReadDevice(request)
  File "/usr/share/alienware-kbl/Engine.py", line 120, in ReadDevice
    msg = self.dev.ctrl_transfer(self.READ_REQUEST_TYPE, self.READ_REQUEST, self.READ_VALUE, self.READ_INDEX, len(msg[0].packet))
  File "/usr/lib/python3/dist-packages/usb/core.py", line 971, in ctrl_transfer
    self.__get_timeout(timeout))
  File "/usr/lib/python3/dist-packages/usb/backend/libusb1.py", line 819, in ctrl_transfer
    timeout))
  File "/usr/lib/python3/dist-packages/usb/backend/libusb1.py", line 552, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 75] Overflow

Traceback (most recent call last):
  File "/usr/share/alienware-kbl/GUI.py", line 1091, in on_button_block_make_test_clicked
    self.ILUMINATE_keyboard_block()
  File "/usr/share/alienware-kbl/GUI.py", line 662, in ILUMINATE_keyboard_block
    gtk_append_text_to_buffer(self.textbuffer_block_testing,BLOCK_TEST.format( zone_block,
NameError: name 'BLOCK_TEST' is not defined

ld-ing avatar Feb 19 '17 01:02 ld-ing

Hi @Zephyr-D, I just fixed the bug you found on the block testing window, it should now work!

rsm-gh avatar Feb 21 '17 15:02 rsm-gh

That's great! Thank you very much for debugging (though it seems still works to do) Now I got the following test result. BTW, do I have to reinstall it (run 'setup' again) after git pull with updates?

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

Traceback (most recent call last):
  File "/usr/share/alienware-kbl/GUI.py", line 1098, in on_button_block_testing_lights_off_clicked
    self.testing_controller.Reset(self.testing_driver.computer.RESET_ALL_LIGHTS_OFF)
  File "/usr/share/alienware-kbl/Engine.py", line 280, in Reset
    msg = self.driver.ReadDevice(request)
  File "/usr/share/alienware-kbl/Engine.py", line 120, in ReadDevice
    msg = self.dev.ctrl_transfer(self.READ_REQUEST_TYPE, self.READ_REQUEST, self.READ_VALUE, self.READ_INDEX, len(msg[0].packet))
  File "/usr/lib/python3/dist-packages/usb/core.py", line 971, in ctrl_transfer
    self.__get_timeout(timeout))
  File "/usr/lib/python3/dist-packages/usb/backend/libusb1.py", line 819, in ctrl_transfer
    timeout))
  File "/usr/lib/python3/dist-packages/usb/backend/libusb1.py", line 552, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 75] Overflow
[TEST]: block: 1	 hex: 0x1	 mode:blink	 speed:1	 color1:#00ff00	 color2: #00ff00

Traceback (most recent call last):
  File "/usr/share/alienware-kbl/Engine.py", line 127, in Take_over
    self.dev.set_configuration()
  File "/usr/lib/python3/dist-packages/usb/core.py", line 799, in set_configuration
    self._ctx.managed_set_configuration(self, configuration)
  File "/usr/lib/python3/dist-packages/usb/core.py", line 128, in managed_set_configuration
    self.backend.set_configuration(self.handle, cfg.bConfigurationValue)
  File "/usr/lib/python3/dist-packages/usb/backend/libusb1.py", line 730, in set_configuration
    _check(self.lib.libusb_set_configuration(dev_handle.handle, config_value))
  File "/usr/lib/python3/dist-packages/usb/backend/libusb1.py", line 552, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 16] Resource busy

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/share/alienware-kbl/GUI.py", line 1091, in on_button_block_make_test_clicked
    self.ILUMINATE_keyboard_block()
  File "/usr/share/alienware-kbl/GUI.py", line 679, in ILUMINATE_keyboard_block
    self.testing_controller.Write_Conf()
  File "/usr/share/alienware-kbl/Engine.py", line 179, in Write_Conf
    self.WaitForOk()
  File "/usr/share/alienware-kbl/Engine.py", line 254, in WaitForOk
    self.driver.Take_over()
  File "/usr/share/alienware-kbl/Engine.py", line 129, in Take_over
    self.dev.detach_kernel_driver(0)
  File "/usr/lib/python3/dist-packages/usb/core.py", line 1005, in detach_kernel_driver
    interface)
  File "/usr/lib/python3/dist-packages/usb/backend/libusb1.py", line 838, in detach_kernel_driver
    _check(self.lib.libusb_detach_kernel_driver(dev_handle.handle, intf))
  File "/usr/lib/python3/dist-packages/usb/backend/libusb1.py", line 552, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 2] Entity not found

ld-ing avatar Feb 21 '17 17:02 ld-ing

Ah, it seems to be an usb.core.USBError error.. those are hard to fix ! I'll see what I can do..

Anyways, thanks for your feedback @Zephyr-D , and yes, you should run the setup every time that there's an update!

rsm-gh avatar Feb 21 '17 18:02 rsm-gh

O! I just installed ubuntu myself and I'm getting the same error. NAME="Ubuntu" VERSION="17.04 (Zesty Zapus)" ID=ubuntu ID_LIKE=debian

My alienware is M14x tho'...

razcore-rad avatar Apr 09 '17 17:04 razcore-rad

hi @razvanc-r have you tried the solution of @KickinWingAnimalDoctor that is given here? It is probably due to the libusb version.

I recently tested the software under Ubuntu 16.04.2 and everything worked alright, I'll check the 17.04...

rsm-gh avatar Apr 15 '17 00:04 rsm-gh

@rsm-gh honestly, I have no idea what this is all about. I didn't try compiling libusb from source, I'd be ok with doing that if I were to do stuff in the $HOME folder, but at the OS level let's just say that I had bad experiences and I'd like to keep away from experimentation. Those instructions from @KickinWingAnimalDoctor are not very specific, except for the DATA_LENGTH thing.

Thing is, the Alienware-KBL GUI works (probably with some errors in the background) and I'm happy enough with this. Sure, would be nice to have it functioning as it should, if there wouldn't be any messing with the OS I'd be happy to look into it, but oh well...

In any case, I checked the libusb version from Ubuntu 17.04 repositories and it's the latest, unless they did something in their master branch, compiling the latest stable libusb shouldn't have any effect.

Thanks for the hard work, even if it has bugs, it's still better than nothing! :)

razcore-rad avatar Apr 15 '17 09:04 razcore-rad

@rsm-gh I'm having the overflow USB error on Kubuntu 17.10. Is there something I can do to help out? With some guidance I could work on the code as well.

butla avatar Feb 18 '18 21:02 butla

@butla try by using the block testing window, and changing the DATA_LENGTH variable from 9 to 12. It may fix the problem

rsm-gh avatar Feb 18 '18 22:02 rsm-gh

@rsm-gh Ok, I set the DATA_LENGTH to 12 in /usr/share/AlienwareKBL/Configuration/Computers.py, restarted alienware-kbl service (so that the daemon picks up the change) and I was able to turn the lights off and on. But the colors and zones are all messed up. And the power button blinks from time to time :)

I'd be able to do more good if I understood how to read USB packets captured with USBCap on Windows. Do you know of any good guides for that? Then I'd know what exactly alienwa-kbl is doing wrong and I could maybe fix it.

butla avatar Feb 19 '18 11:02 butla

As I suggested there's no need in modifying the Computers.py file. You can simply use the block testing window alienware-kbl --block-testing and test the parameters in there. It will also allow you to try to check the colors, the zones etc.

About the USB packets, well, you can read the debug messages of alienware-kbl, sadly I haven't wroten info about it and even some parts are mysterious to me.

For me the best thing you can do is to play with the block testing window, and if it doesn't succeeds, well, try to really understand the USB part.

Good luck !

rsm-gh avatar Feb 20 '18 19:02 rsm-gh

Iam having this errors, computer is detected (15 R3)

ERROR from /usr/share/AlienwareKBL/Bindings.py on method _command: Command=set_lights, arguments=[root,False] Traceback (most recent call last): File "/usr/share/AlienwareKBL/Bindings.py", line 54, in _command response = getattr(self._pyro, command)(*args) File "/usr/lib64/python3.5/site-packages/Pyro4/core.py", line 185, in call return self.__send(self.__name, args, kwargs) File "/usr/lib64/python3.5/site-packages/Pyro4/core.py", line 454, in _pyroInvoke data = serializer.deserializeData(msg.data, compressed=msg.flags & message.FLAGS_COMPRESSED) File "/usr/lib64/python3.5/site-packages/Pyro4/util.py", line 170, in deserializeData return self.loads(data) File "/usr/lib64/python3.5/site-packages/Pyro4/util.py", line 558, in loads return self.recreate_classes(serpent.loads(data)) File "/usr/lib64/python3.5/site-packages/Pyro4/util.py", line 411, in recreate_classes return self.dict_to_class(literal) File "/usr/lib64/python3.5/site-packages/Pyro4/util.py", line 575, in dict_to_class return super(SerpentSerializer, cls).dict_to_class(data) File "/usr/lib64/python3.5/site-packages/Pyro4/util.py", line 390, in dict_to_class raise errors.SerializeError("unsupported serialized class: " + classname) Pyro4.errors.SerializeError: unsupported serialized class: usb.core.USBError

Need some help here.. thanks

josedellabosca avatar Mar 29 '18 03:03 josedellabosca

@josedellabosca You're having the same errors as I am (checkout my description in #39). The fix would require sending a differently assembled set of usb commands to the controller on R3, so that's some more logic to write.

I could do that, but I don't understand the protocol yet. But I'm planning on having an USB capture session with AlienwareFX on Windows at one point.

butla avatar Mar 29 '18 07:03 butla

I confirm having same issue.

barci2 avatar Apr 01 '18 17:04 barci2

With the current version on git, this works:

index 1df273b..3d482d6 100755
--- a/usr/share/AlienwareKBL/Configuration/Computers.py
+++ b/usr/share/AlienwareKBL/Configuration/Computers.py
@@ -39,7 +39,7 @@ class Computer:
         self.VENDOR_ID = 6268
         self.PRODUCT_ID = None
         self.SUPPORTED_COMMANDS = 15
-        self.DATA_LENGTH = 9
+        self.DATA_LENGTH = 12
         self.START_BYTE = 2
         self.FILL_BYTE = 0

hawkowl avatar May 11 '18 13:05 hawkowl

hi @hawkowl thanks for the feedback ! can you give more details please? does all the options work? are all the zones okay?

Regards

rsm-gh avatar May 13 '18 08:05 rsm-gh

Hi I also have an alienware 13 R3. When I changed from

self.DATA_LENGTH = 9

to

self.DATA_LENGTH = 12

I can use this tool to change the colors. BUT the colors I select are not the ones I get physically

DerThorsten avatar May 15 '18 09:05 DerThorsten

@hawkowl fix allows me to switch off the lights on a 15 R3 via the gui, but everything else appears to be broken, for colors cannot be set. Even turning the lights back on messes up the configuration

EDIT: actually... Just run a few more tests. Colors do not work correctly as reported by @DerThorsten, with the exception of black and red. Also, my alienware head keeps blinking every so often.

Also, the following aprts are not mapped correctly: speaker left => led on the right of the keyboard (not the keyboard lights themselves) speaker right => led on the left side of the screen touchpad => led on the left of the keyboard (not the keyboard lights themselves) tact-x => led on the right side of the screen

Soulsuke avatar May 18 '18 12:05 Soulsuke

By @Soulsuke, pull 45:

This allows to identify the correct zones on Alienware 15R3, and to actually change their colors.

There are still some issues though:

Organize "Side" areas to be shown near eachother in the GUI Colors chosen are not the one displayed (eg. #0000FF becomes green when applied) Alienware HEAD is sort of buggy

rsm-gh avatar Sep 01 '18 18:09 rsm-gh

@rsm-gh I'm sorry to be that guy... But e31de336bfa52939215672d57d3b933b8eaab012 put back in erroneous area names for 15 R3. This model has some side stripes which replace some areas of other models (eg. speakers)...

Soulsuke avatar Oct 17 '18 08:10 Soulsuke

@Soulsuke I'm currently working in some big improvements for the multi-computer support. If when launching the GUI, the computer is recognized as an "Alienware15 R3" then your remarks may be accurate.

Recently I noticed that the "Alienware15 R3" has the same idProduct than the "M17X R4" and that can be really problematic.

I haven't fixed that problem because I'm currently working in a new color toolbar. After taking a deep look to those 2 subjects, I'll come back to this thread to check if the error that you are reporting is really because of the configuration file.

Anyways, feel you free of pushing your corrections to the configuration file, if you think that it is wrong.

Regards! rsm

rsm-gh avatar Oct 17 '18 17:10 rsm-gh

I'm gonna close this thread for the following reasons:

  • Its kinda dead
  • It has too much information
  • The computer is now kinda supported

Users following this thread may be interested by Alienware 15 R3 Colors.

Regards,

rsm-gh avatar Nov 12 '18 18:11 rsm-gh

Hello,

An update on this, I just remember that this may be caused because of the LD_PRELOAD patch: LD_PRELOAD=/usr/share/alienware-kbl/libusb_patch/libusb-1.0.so.0

maybe updating the library or removing the patch will work for you. Some info here: https://github.com/rsm-gh/akbl/issues/3

rsm-gh avatar Oct 06 '21 15:10 rsm-gh