hyperb1iss/uchroma

Make venv compatible

Opened this issue · 16 comments

So I tried to get this setup in a venv instead of / because its just cleaner imho.
After the dependency install (as well as fixing python3-gi as such ) I get the following error:

(.venv3) ➜  uchroma git:(master) uchroma -h
Traceback (most recent call last):
  File "/home/jramapuram/.venv3/bin/uchroma", line 11, in <module>
    load_entry_point('uchroma==1.0', 'console_scripts', 'uchroma')()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma/client/client.py", line 702, in run_client
    UChromaTool().run()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma/client/cmd.py", line 45, in __init__
    self._add_subparsers(sub)
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma/client/client.py", line 675, in _add_subparsers
    driver = self.get_driver()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma/client/cmd.py", line 92, in get_driver
    dev_paths = self._client.get_device_paths()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma/client/dbus_client.py", line 18, in get_device_paths
    dm = self._bus.get(SERVICE)
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/pydbus/proxy.py", line 47, in get
    0, timeout_to_glib(timeout), None)
GLib.Error: g-dbus-error-quark: GDBus.Error:org.freedesktop.DBus.Error.Spawn.ChildExited: Process org.chemlab.UChroma exited with status 1 (25)

Is the daemon (uchromad) running? I'm able to run both the daemon and the client in a virtualenv. I used ruamel.venvgtk to deal with the gi issue.

Yup, didnt have the daemon running. However the daemon throws an error:

(.venv3) ➜  uchroma git:(master) uchromad
Traceback (most recent call last):
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma/util.py", line 346, in __call__
    return cls.__instance
AttributeError: type object 'UChromaDeviceManager' has no attribute '_Singleton__instance'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/jramapuram/.venv3/bin/uchromad", line 11, in <module>
    load_entry_point('uchroma==1.0', 'console_scripts', 'uchromad')()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma/server/server.py", line 105, in run_server
    UChromaServer().run()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma/server/server.py", line 54, in run
    self._run()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma/server/server.py", line 60, in _run
    dm = UChromaDeviceManager()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma/util.py", line 348, in __call__
    cls.__instance = super(Singleton, cls).__call__(*args, **kwargs)
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma/server/device_manager.py", line 85, in __init__
    self.discover()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma/server/device_manager.py", line 118, in discover
    if self._key_for_path(parent.sys_path) is not None:
AttributeError: 'NoneType' object has no attribute 'sys_path'

Also, looks like the targets for the user service always point to /usr/bin/uchromad which wouldn't be the case if it's in a venv.

I've done zero testing on Python 3.6, the Singleton bit is worrysome though. I've got a simple metaclass which can be used to make a class a singleton.. Wondering if something on 3.6 changed that breaks it?

Well, I have no idea what's going on in your log other than thinking something is missing from your installation. There was an issue on Python 3.6 (and a fix was pushed) but it only occurred when reading feature reports from the hardware.

Will try on a fresh install and report back

Full build logs are located here.

Steps:

  • I started with a fresh virtualenv install into ~/.venv3
  • source ~/.venv3/bin/activate
  • python setup.py install

When I run uchromad:

(.venv3) ➜  uchroma git:(master) ✗ uchromad 
Traceback (most recent call last):
  File "/home/jramapuram/.venv3/bin/uchromad", line 11, in <module>
    load_entry_point('uchroma==1.0', 'console_scripts', 'uchromad')()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/pkg_resources/__init__.py", line 560, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2648, in load_entry_point
    return ep.load()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2302, in load
    return self.resolve()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2308, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma-1.0-py3.6-linux-x86_64.egg/uchroma/server/server.py", line 9, in <module>
    import gbulb
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/gbulb-0.5.3-py3.6.egg/gbulb/__init__.py", line 1, in <module>
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/gbulb-0.5.3-py3.6.egg/gbulb/glib_events.py", line 8, in <module>
ModuleNotFoundError: No module named 'gi'

I tried install ruamel.venvgtk, but that doesn't seem to work:

(.venv3) ➜  uchroma git:(master) ✗ pip install -U ruamel.venvgtk     
Collecting ruamel.venvgtk                                       
Collecting ruamel.base>=1.0 (from ruamel.venvgtk)
  Using cached ruamel.base-1.0.0-py3-none-any.whl
Installing collected packages: ruamel.base, ruamel.venvgtk
Successfully installed ruamel.base-1.0.0 ruamel.venvgtk-0.4.1
(.venv3) ➜  uchroma git:(master) ✗ uchromad                     
Traceback (most recent call last):
  File "/home/jramapuram/.venv3/bin/uchromad", line 11, in <module>
    load_entry_point('uchroma==1.0', 'console_scripts', 'uchromad')()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/pkg_resources/__init__.py", line 560, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2648, in load_entry_point
    return ep.load()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2302, in load
    return self.resolve()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2308, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma-1.0-py3.6-linux-x86_64.egg/uchroma/server/server.py", line 9, in <module>
    import gbulb
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/gbulb-0.5.3-py3.6.egg/gbulb/__init__.py", line 1, in <module>
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/gbulb-0.5.3-py3.6.egg/gbulb/glib_events.py", line 8, in <module>
ModuleNotFoundError: No module named 'gi

So I have to do the symlink fix & I get the exact same error I mentioned above:

(.venv3) ➜  uchroma git:(master) ✗ ln -s /usr/lib/python3.6/site-packages/gi ~/.venv3/lib/python3.6/site-packages/
(.venv3) ➜  uchroma git:(master) ✗ uchromad
Traceback (most recent call last):
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma-1.0-py3.6-linux-x86_64.egg/uchroma/util.py", line 346, in __call__
    return cls.__instance
AttributeError: type object 'UChromaDeviceManager' has no attribute '_Singleton__instance'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/jramapuram/.venv3/bin/uchromad", line 11, in <module>
    load_entry_point('uchroma==1.0', 'console_scripts', 'uchromad')()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma-1.0-py3.6-linux-x86_64.egg/uchroma/server/server.py", line 110, in run_server
    UChromaServer().run()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma-1.0-py3.6-linux-x86_64.egg/uchroma/server/server.py", line 59, in run
    self._run()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma-1.0-py3.6-linux-x86_64.egg/uchroma/server/server.py", line 65, in _run
    dm = UChromaDeviceManager()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma-1.0-py3.6-linux-x86_64.egg/uchroma/util.py", line 348, in __call__
    cls.__instance = super(Singleton, cls).__call__(*args, **kwargs)
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma-1.0-py3.6-linux-x86_64.egg/uchroma/server/device_manager.py", line 85, in __init__
    self.discover()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma-1.0-py3.6-linux-x86_64.egg/uchroma/server/device_manager.py", line 118, in discover
    if self._key_for_path(parent.sys_path) is not None:
AttributeError: 'NoneType' object has no attribute 'sys_path

I do not have any new python updates for any bugfixes as you mention:

(.venv3) ➜  uchroma git:(master) ✗ sudo pacman -Syu 
[sudo] password for jramapuram: 
:: Synchronizing package databases...
 core is up to date                                                                        0.0   B  0.00B/s 00:00 [--------------------------------------------------------------------]   0%
 extra is up to date                                                                       0.0   B  0.00B/s 00:00 [--------------------------------------------------------------------]   0%
 community is up to date                                                                   0.0   B  0.00B/s 00:00 [--------------------------------------------------------------------]   0%
 multilib is up to date                                                                    0.0   B  0.00B/s 00:00 [--------------------------------------------------------------------]   0%
:: Starting full system upgrade...
 there is nothing to do

This is base python 3.6.0:

(.venv3) ➜  uchroma git:(master) ✗ python --version
Python 3.6.0
(.venv3) ➜  uchroma git:(master) ✗ which python
/home/jramapuram/.venv3/bin/python
(.venv3) ➜  uchroma git:(master) ✗ pip install -U pip
Requirement already up-to-date: pip in /home/jramapuram/.venv3/lib/python3.6/site-packages

Same on 1.01:

(.venv3) ➜  uchroma git:(master) ✗ uchromad                                                                       
Traceback (most recent call last):
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma-1.0.1-py3.6-linux-x86_64.egg/uchroma/util.py", line 317, in __call__
    return cls.__instance
AttributeError: type object 'UChromaDeviceManager' has no attribute '_Singleton__instance'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/jramapuram/.venv3/bin/uchromad", line 11, in <module>
    load_entry_point('uchroma==1.0.1', 'console_scripts', 'uchromad')()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma-1.0.1-py3.6-linux-x86_64.egg/uchroma/server/server.py", line 117, in run_server
    UChromaServer().run()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma-1.0.1-py3.6-linux-x86_64.egg/uchroma/server/server.py", line 66, in run
    self._run()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma-1.0.1-py3.6-linux-x86_64.egg/uchroma/server/server.py", line 72, in _run
    dm = UChromaDeviceManager()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma-1.0.1-py3.6-linux-x86_64.egg/uchroma/util.py", line 319, in __call__
    cls.__instance = super(Singleton, cls).__call__(*args, **kwargs)
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma-1.0.1-py3.6-linux-x86_64.egg/uchroma/server/device_manager.py", line 86, in __init__
    self.discover()
  File "/home/jramapuram/.venv3/lib/python3.6/site-packages/uchroma-1.0.1-py3.6-linux-x86_64.egg/uchroma/server/device_manager.py", line 119, in discover
    if self._key_for_path(parent.sys_path) is not None:
AttributeError: 'NoneType' object has no attribute 'sys_path'
(.venv3) ➜  uchroma git:(master) ✗ git rev-parse HEAD
2966542f9e52a4385e722f78ea47cffbd5fce337

So this error only pops up if it bombs in the initializer.

I'm making an assumption that all devices have a sys_path (they should), but I could always be wrong. Try adding a "hasattr(parent, 'sys_path')" to device_manager.py on line 119.

Actually, it's the parent which is null. I'll push up a possible fix.

Looks like some of the changes made this work:

(.venv3) ➜  uchroma git:(master) ✗ uchromad -d
 uchroma.devicemanager/DEBUG    | Udev monitor started
 uchroma.power/INFO     | Connected to org.freedesktop.login1 (':1.1',)

However, the following returns nothing:

(.venv3) ➜  bin uchroma -l      
(.venv3) ➜  bin 
(.venv3) ➜  bin uchroma
usage: uchroma [-v] [-g] [-d DEVICE] [-l] {} ...
uchroma: error: Multiple devices found, select one with --device

Send the lsusb -vvv output for your Razer devices please

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0 
  bDeviceProtocol         3 
  bMaxPacketSize0         9
  idVendor           0x1d6b Linux Foundation
  idProduct          0x0003 3.0 root hub
  bcdDevice            4.09
  iManufacturer           3 
  iProduct                2 
  iSerial                 1 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           31
    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         9 Hub
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              12
        bMaxBurst               0

Bus 001 Device 006: ID 1532:020f Razer USA, Ltd 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x1532 Razer USA, Ltd
  idProduct          0x020f 
  bcdDevice            2.00
  iManufacturer           1 
  iProduct                2 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          107
    bNumInterfaces          4
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      1 Keyboard
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      61
         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     0x0008  1x 8 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 
      bInterfaceProtocol      1 Keyboard
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     159
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      94
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x04  EP 4 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0

Bus 001 Device 005: ID 0bda:579f Realtek Semiconductor Corp. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.01
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x0bda Realtek Semiconductor Corp.
  idProduct          0x579f 
  bcdDevice            0.02
  iManufacturer           3 
  iProduct                1 
  iSerial                 2 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          785
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          4 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         2
      bFunctionClass         14 Video
      bFunctionSubClass       3 Video Interface Collection
      bFunctionProtocol       0 
      iFunction               5 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      1 Video Control
      bInterfaceProtocol      0 
      iInterface              5 
      VideoControl Interface Descriptor:
        bLength                13
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdUVC               1.00
        wTotalLength           78
        dwClockFrequency       15.000000MHz
        bInCollection           1
        baInterfaceNr( 0)       1
      VideoControl Interface Descriptor:
        bLength                18
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             1
        wTerminalType      0x0201 Camera Sensor
        bAssocTerminal          0
        iTerminal               0 
        wObjectiveFocalLengthMin      0
        wObjectiveFocalLengthMax      0
        wOcularFocalLength            0
        bControlSize                  3
        bmControls           0x00000004
          Auto-Exposure Priority
      VideoControl Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      5 (PROCESSING_UNIT)
      Warning: Descriptor too short
        bUnitID                 2
        bSourceID               1
        wMaxMultiplier          0
        bControlSize            2
        bmControls     0x0000177f
          Brightness
          Contrast
          Hue
          Saturation
          Sharpness
          Gamma
          White Balance Temperature
          Backlight Compensation
          Gain
          Power Line Frequency
          White Balance Temperature, Auto
        iProcessing             0 
        bmVideoStandards     0x 9
          None
          SECAM - 625/50
      VideoControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             3
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID               4
        iTerminal               0 
      VideoControl Interface Descriptor:
        bLength                27
        bDescriptorType        36
        bDescriptorSubtype      6 (EXTENSION_UNIT)
        bUnitID                 4
        guidExtensionCode         {8ca72912-b447-9440-b0ce-db07386fb938}
        bNumControl             2
        bNrPins                 1
        baSourceID( 0)          2
        bControlSize            2
        bmControls( 0)       0x00
        bmControls( 1)       0x06
        iExtension              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               6
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
        INTERFACE CLASS:  0f 24 01 02 8d 02 81 00 03 02 01 00 01 00 00
        INTERFACE CLASS:  1b 24 04 01 08 59 55 59 32 00 00 10 00 80 00 00 aa 00 38 9b 71 10 01 00 00 00 00
        INTERFACE CLASS:  22 24 05 01 00 80 02 e0 01 00 00 65 04 00 00 ca 08 00 60 09 00 15 16 05 00 02 15 16 05 00 2a 2c 0a 00
        INTERFACE CLASS:  22 24 05 02 00 a0 00 78 00 00 50 46 00 00 a0 8c 00 00 96 00 00 15 16 05 00 02 15 16 05 00 2a 2c 0a 00
        INTERFACE CLASS:  22 24 05 03 00 b0 00 90 00 00 d0 5c 00 00 a0 b9 00 00 c6 00 00 15 16 05 00 02 15 16 05 00 2a 2c 0a 00
        INTERFACE CLASS:  22 24 05 04 00 40 01 f0 00 00 40 19 01 00 80 32 02 00 58 02 00 15 16 05 00 02 15 16 05 00 2a 2c 0a 00
        INTERFACE CLASS:  22 24 05 05 00 00 05 d0 02 00 00 65 04 00 00 ca 08 00 20 1c 00 40 42 0f 00 02 40 42 0f 00 80 84 1e 00
        INTERFACE CLASS:  22 24 05 06 00 00 05 20 03 00 00 e2 04 00 00 c4 09 00 40 1f 00 40 42 0f 00 02 40 42 0f 00 80 84 1e 00
        INTERFACE CLASS:  1e 24 05 07 00 00 05 00 04 00 00 40 06 00 00 40 06 00 00 28 00 80 84 1e 00 01 80 84 1e 00
        INTERFACE CLASS:  1e 24 05 08 00 80 07 38 04 00 40 e3 09 00 40 e3 09 00 48 3f 00 80 84 1e 00 01 80 84 1e 00
        INTERFACE CLASS:  1a 24 03 00 05 80 02 e0 01 00 05 d0 02 00 05 20 03 00 04 00 03 80 07 38 04 00
        INTERFACE CLASS:  06 24 0d 01 01 04
        INTERFACE CLASS:  0b 24 06 02 08 01 01 00 00 00 00
        INTERFACE CLASS:  22 24 07 01 00 80 02 e0 01 00 00 65 04 00 00 ca 08 00 60 09 00 15 16 05 00 02 15 16 05 00 2a 2c 0a 00
        INTERFACE CLASS:  22 24 07 02 00 a0 00 78 00 00 50 46 00 00 a0 8c 00 00 96 00 00 15 16 05 00 02 15 16 05 00 2a 2c 0a 00
        INTERFACE CLASS:  22 24 07 03 00 b0 00 90 00 00 d0 5c 00 00 a0 b9 00 00 c6 00 00 15 16 05 00 02 15 16 05 00 2a 2c 0a 00
        INTERFACE CLASS:  22 24 07 04 00 40 01 f0 00 00 40 19 01 00 80 32 02 00 58 02 00 15 16 05 00 02 15 16 05 00 2a 2c 0a 00
        INTERFACE CLASS:  22 24 07 05 00 00 05 d0 02 00 00 2f 0d 00 00 5e 1a 00 20 1c 00 15 16 05 00 02 15 16 05 00 2a 2c 0a 00
        INTERFACE CLASS:  22 24 07 06 00 00 05 20 03 00 00 a6 0e 00 00 4c 1d 00 40 1f 00 15 16 05 00 02 15 16 05 00 2a 2c 0a 00
        INTERFACE CLASS:  22 24 07 07 00 00 05 00 04 00 00 c0 12 00 00 80 25 00 00 28 00 15 16 05 00 02 15 16 05 00 2a 2c 0a 00
        INTERFACE CLASS:  22 24 07 08 00 80 07 38 04 00 c0 a9 1d 00 80 53 3b 00 48 3f 00 15 16 05 00 02 15 16 05 00 2a 2c 0a 00
        INTERFACE CLASS:  1a 24 03 00 05 80 02 e0 01 00 05 d0 02 00 05 20 03 00 04 00 03 80 07 38 04 00
        INTERFACE CLASS:  06 24 0d 01 01 04

Bus 001 Device 003: ID 0cf3:e300 Qualcomm Atheros Communications 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.01
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0cf3 Qualcomm Atheros Communications
  idProduct          0xe300 
  bcdDevice            0.01
  iManufacturer           0 
  iProduct                0 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          177
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0000  1x 0 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0000  1x 0 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0009  1x 9 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0009  1x 9 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       2
      bNumEndpoints           2
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0011  1x 17 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0011  1x 17 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       3
      bNumEndpoints           2
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0019  1x 25 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0019  1x 25 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       4
      bNumEndpoints           2
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0021  1x 33 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0021  1x 33 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       5
      bNumEndpoints           2
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0031  1x 49 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0031  1x 49 bytes
        bInterval               1

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0 
  bDeviceProtocol         1 Single TT
  bMaxPacketSize0        64
  idVendor           0x1d6b Linux Foundation
  idProduct          0x0002 2.0 root hub
  bcdDevice            4.09
  iManufacturer           3 
  iProduct                2 
  iSerial                 1 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           25
    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         9 Hub
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              12

Hmmm, Blade Stealth shouldn't need any special quirks. Can you try starting uchromad with tracing enabled (uchromad -ddd) and see if anything additional is dumped?

It's the Razer Blade 2016 GTX1060. Tried it, no new info:

(.venv3) ➜  ~ uchromad -ddd
 uchroma.devicemanager/DEBUG    | Udev monitor started
 uchroma.power/INFO     | Connected to org.freedesktop.login1 (':1.1',)

I observed the logs while running uchroma -l as well. No change.

I guess I should ask before going on a wild goose chase, does it work outside the venv?

I am using Manjaro: so #25