Avatar

Overdraft

Overdraft@lemmy.ml
Joined
1 posts • 7 comments
Direct message

I’m not familiar with Nobara, but I can at least show how I would install pyUSB for use in Debian:

If you follow the instructions exactly as in the readme, it will error:

$ pip install pyusb
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.
    
    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.
    
    See /usr/share/doc/python3.11/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

Instead, I would create a virtual environment (I’m using virtualenv instead of venv)

$ virtualenv unihub_test

Then activate the environment and run the install with pip

$ source ~/unihub_test/bin/activate
(unihub_test) $ pip install pyusb
Collecting pyusb
  Using cached pyusb-1.2.1-py3-none-any.whl.metadata (2.2 kB)
Using cached pyusb-1.2.1-py3-none-any.whl (58 kB)
Installing collected packages: pyusb
Successfully installed pyusb-1.2.1

(unihub_test) $ python3
>>> import usb #this should not error
>>> exit()
(unihub_test) $ deactivate
$ 

Without the actual hub, that’s as far as I can go I think - but maybe this will help give you some options and documentation to explore!

permalink
report
parent
reply

Geeze, that’s extremely frustrating… they really switched up the headaches between v1 and v2. I’m sorry I couldn’t be more help! Hopefully you can find a software solution to get it going.

I don’t mean to repeat troubleshooting you’ve already done with the python script, apologies in advance if this is stuff you’ve already done. If it’s erroring immediately, you may want to double check that you have pyUSB in place and UDEV rules to get access to the device if you’re not running the script as root.

edit: You may also need to check that your Vendor ID and Product ID match what the script was written for, given that there seem to be some different iterations of Lian Li’s hardware just in general.

permalink
report
parent
reply

Sorry for the delayed response - I saw what you meant in the v2 manual about the proprietary connector and thought I would just leave it at that, but I had another thought.

It sounds like you do have some access to Windows/L-Connect, have you switched the fan profiles to sync with the MB? This should stick after a shutdown and not need to be re-set, you will lose the ability to create fan curves in L-Connect:

Also, are you connecting the UNI HUB directly to the MB pins, or is it running through a splitter or extender? It looks like the UNI HUB v2 does have a sense pin (the v1 does NOT, that’s the reason for the workaround I have to use); some additional extenders and splitters are missing the sense pin, so even though you can control the fan speed from BIOS, you can’t see the RPMs in BIOS so it might look like it’s not recognized.

permalink
report
parent
reply

For the fan speed controll via BIOS, I ran into the same problem where my SL120s didn’t show up - this was the solution I finally found https://www.reddit.com/r/lianli/comments/k37m9y/sl120_not_recognized_by_bios_try_this

Get yourself a splitter for the 4 pin fan cables. Disconnect one set of fans from the controller. Connect the unplugged set of fans directly to the splitter. Connect the controller to the splitter. Connect the splitter to the motherboard.

Your bios should now see your fans. You can create custom fans curves and dynamically control the speed of the fans.

It may not solve the problems you’re seeing, but it seemed worth sharing.

permalink
report
reply

Success! This is certainly a niche issue, but since it’s taken a pretty lengthy amount of research to resolve, I thought I’d add some resources here in case it’s helpful to anyone else.

After exploring others’ recommendations, I’ve saved hardware solutions for tinkering in the future and was also not able to find a way to temporarily disable mouse movement through gnome. I finally landed on python-evdev as my solution. With this, you can read input from one or more devices simultaneously, create a virtual input device to write events to on-demand, and (maybe most importantly) retain exclusive access to the original hardware devices to absorb their input. I’ll also shout out evsieve which lead me to python-evdev. The python-evdev documentation is quite thorough, and it’s quite a custom solution based on your own needs, so I’m not going to go into great detail on my python script - but it’s only 27 lines long, nothing major.

Be aware that you may need to write some udev rules to allow access to the physical devices and to allow the virtual device to be created. This was the easiest part for me to find help with, so I’ll leave some abridged copy/paste details below:

Find your device Vendor and Product IDs cat /proc/bus/input/devices | more

Write a udev rule (I used priority 71) to allow access to the device: SUBSYSTEMS=="usb", ATTRS{idVendor}=="", ATTRS{idProduct}=="", TAG+="uaccess"

Add a very poor udev rule to allow a virtual device to be created by python-evdev (there’s probably a much better way to do this): KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess", MODE="0660"

permalink
report
reply

This is an interesting idea, thanks for the suggestion! I’m much less experienced working with hardware solutions like this, but this might be a good chance to learn something different. Anecdotally, it seems like there may be some issues with anti cheat software that blocks Arduino input, but that may not end up being a problem for me.

I’ve read through a few different projects and it certainly seems like this would work. Are there any specific projects you would recommend that might help get me on the right path? I’m going to try to work with a custom command plus key bind as a primary solution, but it would be nice to try a couple different approaches.

permalink
report
parent
reply

Thanks very much for explaining a bit about Sway and compositors in general - that makes more sense now!

I did find the keyboard shortcuts exactly as you described, that’s something I didn’t know about before! Unfortunately, I don’t think the mouse speed setting is exactly as it sounds: Pointer speed for mice. Accepted values are in the [-1..1] range (from “unaccelerated” to “fast”). A value of 0 is the system default. It looks like it’s related to the acceleration, not the base movement speed. When I tested, even a value of -1 only slows the mouse instead of stopping it completely. There may be something else that will work, knowing that a custom shortcut exists that can execute a command does open up options I haven’t looked at yet.

permalink
report
parent
reply