You are not logged in.
Pages: 1
I have been looking long and hard for a solution to get NKRO (N-key rollover) on Arch Linux with the Ducky One 2 keyboard. I have found many forums of woeful arch users having the same problem, and it looks to have no solution. Any and all ideas would be wonderful. I have absolutely no idea why it doesn't work.
I dual booted Windows to test this, and without changing USB ports, DIP switches, or anything else, it works on Windows and not on Arch.
PS: Many of the instances of people asking for help have been met with "why would you ever need NKRO?" - Stenography, rhythm games, and other uses people don't think about all need more than 6 keys at once.
Thank you! ![]()
Offline
I have found many forums of woeful arch users having the same problem, and it looks to have no solution.
Your search-fu is poor: https://forum.level1techs.com/t/solved- … x/118120/2
Jin, Jîyan, Azadî
Offline
You reading is poor. This person has an unrelated issue may be solved by disabling NKRO. (I think the idea was when NKRO was enabled with the DIP switches, the keyboard would also use its own repeat keys, thus breaking input to video games expecting held keys.)
Curiously, this post links to another post about NKRO not working, however that is also a dead end.
Offline
This really isn't something that would be limited or controlled by the OS. Do you have the Ducky config software installed on Windows and does that flash alternate settings that get lost when initialized by a different system/is there an option in said software to enforce a certain rollover mode?
Offline
This really isn't something that would be limited or controlled by the OS. Do you have the Ducky config software installed on Windows and does that flash alternate settings that get lost when initialized by a different system/is there an option in said software to enforce a certain rollover mode?
I have not installed any Ducky software on my windows machine. I hadn't thought about that, but tonight I can try to see if installing such software on Arch has an effect.
There are 4 DIP switches on the back of the keyboard, the 4th of which is supposed to enable/disable NKRO, yet toggling it has no effect on Arch (works as expected on windows)
Offline
E.g. https://howtotypeanything.com/ducky-one … shortcuts/ for example suggests you might be able to toggle this with Fn+F9 but apparently there are quite some differences here between ducky keyboard versions/firmware
Offline
You reading is poor.
So the post at the end of the thread about changing the keyboard repeat rate doesn't help then? Apologies but I linked to the wrong post. If it doesn't help I fully accept your criticism.
Jin, Jîyan, Azadî
Offline
changing the keyboard repeat rate doesn't help then?
No. The issue the person was having in that post was that when they held down a key, it wouldn't move them consistently as they expected - the idea was NKRO was causing this issue, but that didn't work. Then, they suggested changing the repeat rate would work, and apparently it did, but that only fixed the original issue of the movement in game.
NKRO came up only as a separate solution, but I see how that was confusing.
And, Yes, I did try that to see if they were correlated for some reason but nothing changed.
Offline
E.g. https://howtotypeanything.com/ducky-one … shortcuts/ for example suggests you might be able to toggle this with Fn+F9 but apparently there are quite some differences here between ducky keyboard versions/firmware
Trying this yields no results... Its probably because it's a different keyboard
Offline
If the keyboard ignores the HID report mode and pretends this to be the HID boot mode (though from a quick google, that separation is completely broken in at least some Ducky keyboards¹) because "weird OS that's not windows" and there's no specific hid driver to somehow nudge it, you're fucked.
First and best step is to look for a FW update for the keyboard.
Also:
lsmod | grep -i hidto see whether the keyboard loads some specific hid module and record
lsusb -vfor the status quo of the connection
Next:
I dual booted Windows to test this, and without changing USB ports, DIP switches, or anything else, it works on Windows and not on Arch.
My textblock for that is "3rd link below. Mandatory.
Disable it (it's NOT the BIOS setting!) and reboot windows and linux twice for voodo reasons."
BUT: in this very case it might actually be interesting to enable fast-start, reboot warm into linux (no power cut, no unplugging the keyboard) and see whether it remains in report mode.
nb. that this might break other devices (notably radio) and UNDER NO CIRCUMSTANCES TRY TO ACCESS THE NTFS DRIVES!!
[1] https://github.com/tmk/tmk_keyboard/issues/697 (not directly applicable since this is for atmel systems, but something smells off)
Interface 0 looks like a boot keyboard interface(6KRO) compatible but it doesn't have boot protocol configuration in descriptor.
Seems that Interface 1 is used for mouse, Interface 2 for report keyboard(NKRO) and Interace 3 for vendor specific purpose Media keys.
…
replies SET_PROTOCOL with STALL and stops working
Online
> lsmod | grep -i hid
usbhid 77824 0
mac_hid 12288 0> lsusb -v
Bus 001 Device 003: ID 04d9:0356 Holtek Semiconductor, Inc. Ducky Keyboard
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 [unknown]
bDeviceSubClass 0 [unknown]
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x04d9 Holtek Semiconductor, Inc.
idProduct 0x0356 Ducky Keyboard
bcdDevice 1.10
iManufacturer 3 DuckyChannel International Co., Ltd.
iProduct 1 Ducky Keyboard
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x005b
bNumInterfaces 3
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 100mA
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 64
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 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 [unknown]
bInterfaceProtocol 0
iInterface 2
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 34
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 0x0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x04 EP 4 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 [unknown]
bInterfaceProtocol 0
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 203
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 0x0040 1x 64 bytes
bInterval 1Offline
Is this a macbook? Any idea why that HID module gets loaded? Does it show up if you're running the system w/ the Ducky keyboard?
bInterfaceSubClass 0 [unknown]
Fits the linked thread.
Any chance for a FW update?
Online
Pages: 1