You are not logged in.

#1 2023-12-13 06:42:17

Axilotl
Member
Registered: 2023-12-13
Posts: 6

NKRO on Arch

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! smile

Offline

#2 2023-12-13 07:00:28

Head_on_a_Stick
Member
From: The Wirral
Registered: 2014-02-20
Posts: 9,003
Website

Re: NKRO on Arch

Axilotl wrote:

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

#3 2023-12-13 15:15:53

Axilotl
Member
Registered: 2023-12-13
Posts: 6

Re: NKRO on Arch

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

#4 2023-12-13 15:49:46

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 25,165

Re: NKRO on Arch

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

#5 2023-12-13 16:23:14

Axilotl
Member
Registered: 2023-12-13
Posts: 6

Re: NKRO on Arch

V1del wrote:

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

#6 2023-12-13 16:29:46

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 25,165

Re: NKRO on Arch

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

#7 2023-12-13 17:47:33

Head_on_a_Stick
Member
From: The Wirral
Registered: 2014-02-20
Posts: 9,003
Website

Re: NKRO on Arch

Axilotl wrote:

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

#8 2023-12-13 23:02:18

Axilotl
Member
Registered: 2023-12-13
Posts: 6

Re: NKRO on Arch

Head_on_a_Stick wrote:

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

#9 2023-12-14 02:42:21

Axilotl
Member
Registered: 2023-12-13
Posts: 6

Re: NKRO on Arch

V1del wrote:

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

#10 2023-12-14 08:41:40

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 75,395

Re: NKRO on Arch

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 hid

to see whether the keyboard loads some specific hid module and record

lsusb -v

for 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

Offline

#11 2023-12-15 03:51:09

Axilotl
Member
Registered: 2023-12-13
Posts: 6

Re: NKRO on Arch

> 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               1

Offline

#12 2023-12-15 08:16:02

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 75,395

Re: NKRO on Arch

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?

Offline

Board footer

Powered by FluxBB