You are not logged in.
I have Chinese USB keyboard from a semi-unknown brand (HAVIT HV-KB390L) that gets powered down after suspend.
If I then press any key on the keyboard the PC gets resumed but the keyboard stays powered down and
I have to unplug/plug it in for it to work again.
Any idea how I might even start diagnosing the issue ?
Edit:
The keyboard still shows on 'lsusb' after resume even though it is powered off.
dmesg shows no errors when plugging/unplugging the keyboard during normal operation, or during the suspend/resume phase.
Last edited by b1inki (2020-03-16 19:06:41)
Offline
So as per my edit in my original comment, I came to the conclusion that the problem is probably within the keyboard itself.
Using https://wiki.archlinux.org/index.php/Po … leep_hooks I created a custom post-sleep service that
unbinds/binds the USB driver to the keyboard port which, although a hack, does the trick.
I plan on testing the keyboard itself on other hardware and OS'es, but for now I'll mark this issue as solved.
Offline
@b1inki, I have a Havit HV-KB395L keyboard which has exactly the same problem. I tried using a post-sleep service to run a script as you say (and a few other approaches) but can't resolve this issue. Would you mind please sharing your script which does the unbind/bind?
Offline
@bulletmark
Sure thing - I'm using a systemd service tied to the sleep.target:
/etc/systemd/system/keyboard-resume.service:
[Unit]
Description=Powercycle the keyboard on system resume
Before=sleep.target
StopWhenUnneeded=yes
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStop=-/bin/bash -c "/usr/bin/echo '1-1' > /sys/bus/usb/drivers/usb/unbind"
ExecStop=-/bin/bash -c "/usr/bin/echo '1-1' > /sys/bus/usb/drivers/usb/bind"
[Install]
WantedBy=sleep.target
The '1-1' is the address of the keyboard - you have to find your own (note: unplugging/replugging the keyboard will almost certainly change that address),
have a look at the 'lsusb' output and how linux handles usb bus addresses for more info about that.
Offline
Yes, I tried that and a few other ideas but it doesn't work for me because my keyboard is attached via a dock, unlike yours which I presume is attached directly to your PC. So for the last week I have I used a resume service which unbinds/binds my dock device in /sys/bus/pci/drivers/xhci_hcd. That resets the entire dock USB controller which sounds crude but it has certainly solved the annoying problem for me and works well.
Offline