6

Today I bought an HyperX Alloy Elite RGB keyboard. I see that they have a led pattern customization software called NGenuity (https://www.hyperxgaming.com/us/ngenuity). But that's windows only. I tried to run it in wine but it didn't find the keyboard. Is there a way to configure it in Linux or make wine find the keyboard so I can use the windows led customization program ?

Thanks

TL;DR:

I posted a new solution I found some time ago as an answer. Check it.

A warning note

I couldn't get NGenuity to work on linux. It installed and run on Wine, but didn't recognize the keyboard. So I tried first in a virtualized ReactOS, with equal results. Then I continued to a virtualized Windows 7 running on Ubuntu, that I have in my office's computer. When I tried this option, NGenuity runned and asked me if I wanted to update keyboard's firmware. I made the choice to update and the whole keyboard went dead. The update's progress bar just didn't pass the initial state and I thought I had ruined the keyboard. Unpluged, replugged, restarted. Dead. Called the support only to listen they would replace it. Fortunately I had windows natively installed in other machine and this time the update completed sucessfully and the keyboard went alive again. But please:

JUST DON'T RUN NGENUITY FIRMWARE UPDATES IN NON-STANDARD WINDOWS INSTALLATIONS

Although if anyone had success in running this software or customizing the keyboard on linux I'd like to hear from you.

EDIT

More than a year later I finally got the courage to try this again. Now I have used it a bit :D

But anyway @d4rkm3z solution didn't work. My Mint installation ain't got any ttyUSB0 in /dev. Also I think it's more complicated than that. First Elite RGB has 2 USB cables. Then AFAIU it's using the hidraw port. I don't know much of these things. It's the same thing ? I read it's a raw USB port so it should be the same. I think it is because of dmesg output. I tried to link com1 to all ln hiraw0 to hidraw5 devices, but Ngenuity could not find the device with any of them. I also found some files in /dev/input/by-id that have the HyperX_Alloy_RGB name on it. Tried to link all of them to com1 with same result. What I could understand by dmesg output is that is linked to more than one USB.

Here's some data:

whatever:~$ sudo ls /dev -p
autofs           cuse         hidraw3     i2c-4      loop1         mei0            ppp     sdb   tty    tty17  tty26  tty35  tty44  tty53  tty62      ttyS12  ttyS21  ttyS30   uinput      vcs2   vcsa4  vcsu6
block/           disk/        hidraw4     i2c-5      loop2         mem               psaux   sdb1    tty0   tty18  tty27  tty36  tty45  tty54  tty63      ttyS13  ttyS22  ttyS31   urandom     vcs3   vcsa5  vcsu7
bsg/             dri/         hidraw5     i2c-6      loop3      memory_bandwidth       ptmx    sg0   tty1   tty19  tty28  tty37  tty46  tty55  tty7       ttyS14  ttyS23  ttyS4    usb/    vcs4   vcsa6  vfio/
btrfs-control    drm_dp_aux0  hpet        initctl    loop4         mqueue/             pts/    sg1   tty10  tty2   tty29  tty38  tty47  tty56  tty8       ttyS15  ttyS24  ttyS5    userio      vcs5   vcsa7  vga_arbiter
bus/             ecryptfs     hugepages/  input/     loop5         net/                random  shm/  tty11  tty20  tty3   tty39  tty48  tty57  tty9       ttyS16  ttyS25  ttyS6    vboxdrv     vcs6   vcsu   vhci
char/            fb0          hwrng       kmsg       loop6         network_latency     rfkill  snapshot  tty12  tty21  tty30  tty4   tty49  tty58  ttyprintk  ttyS17  ttyS26  ttyS7    vboxdrvu    vcs7   vcsu1  vhost-net
console          fd           i2c-0       kvm        loop7         network_throughput  rtc     snd/  tty13  tty22  tty31  tty40  tty5   tty59  ttyS0      ttyS18  ttyS27  ttyS8    vboxnetctl  vcsa   vcsu2  vhost-vsock
core             full         i2c-1       lightnvm/  loop-control  null                rtc0    stderr    tty14  tty23  tty32  tty41  tty50  tty6   ttyS1      ttyS19  ttyS28  ttyS9    vboxusb/    vcsa1  vcsu3  video0
cpu/             fuse         i2c-2       log        mapper/       nvram               sda     stdin     tty15  tty24  tty33  tty42  tty51  tty60  ttyS10     ttyS2   ttyS29  udmabuf  vcs     vcsa2  vcsu4  zero
cpu_dma_latency  hidraw2      i2c-3       loop0      mcelog        port                sda1    stdout    tty16  tty25  tty34  tty43  tty52  tty61  ttyS11     ttyS20  ttyS3   uhid     vcs1    vcsa3  vcsu5  zfs
whatever:~$ sudo ls /dev/usb -p
hiddev1  hiddev2
whatever:~$ sudo ls /dev/input/ -p
by-id/  by-path/  event0  event1  event10  event11  event12  event13  event14  event15  event16  event17  event18  event19  event2  event20  event3  event4  event5  event9  mice  mouse0  mouse1  mouse2
whatever:~$ sudo ls /dev/input/by-path/ -p
pci-0000:00:1d.0-usb-0:1.2.4:1.0-event-mouse  pci-0000:0b:00.0-usb-0:2:1.0-event-kbd  pci-0000:0b:00.0-usb-0:2:1.2-event      pci-0000:0b:00.0-usb-0:2:1.2-event-mouse  platform-i8042-serio-0-event-kbd    platform-i8042-serio-1-mouse
pci-0000:00:1d.0-usb-0:1.2.4:1.0-mouse        pci-0000:0b:00.0-usb-0:2:1.1-event-kbd  pci-0000:0b:00.0-usb-0:2:1.2-event-kbd  pci-0000:0b:00.0-usb-0:2:1.2-mouse    platform-i8042-serio-1-event-mouse  platform-PNP0C14:00-event
whatever:~$ sudo ls /dev/input/by-id -p
usb-ELECOM_TrackBall_Mouse_HUGE_TrackBall-event-mouse         usb-HyperX_Alloy_Elite_RGB_HyperX_Alloy_Elite_RGB-event-kbd   usb-HyperX_Alloy_Elite_RGB_HyperX_Alloy_Elite_RGB-if02-event-mouse
usb-ELECOM_TrackBall_Mouse_HUGE_TrackBall-mouse           usb-HyperX_Alloy_Elite_RGB_HyperX_Alloy_Elite_RGB-if01-event-kbd  usb-HyperX_Alloy_Elite_RGB_HyperX_Alloy_Elite_RGB-if02-mouse
usb-HyperX_Alloy_Elite_RGB_HyperX_Alloy_Elite_RGB-event-if02  usb-HyperX_Alloy_Elite_RGB_HyperX_Alloy_Elite_RGB-if02-event-kbd

lsusb output:

Bus 002 Device 004: ID 138a:0011 Validity Sensors, Inc. VFS5011 Fingerprint Reader
Bus 002 Device 031: ID 056e:010d Elecom Co., Ltd 
Bus 002 Device 029: ID 163c:0407  
Bus 002 Device 028: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 004: ID 0951:16be Kingston Technology   <<<<<< should be this one
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 0cf3:3005 Atheros Communications, Inc. AR3011 Bluetooth
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

dmesg | grep HyperX:

[  840.621032] usb 3-2: Product: HyperX Alloy Elite RGB
[  840.621034] usb 3-2: Manufacturer: HyperX Alloy Elite RGB
[  840.636345] input: HyperX Alloy Elite RGB HyperX Alloy Elite RGB as /devices/pci0000:00/0000:00:1c.4/0000:0b:00.0/usb3/3-2/3-2:1.0/0003:0951:16BE.000F/input/input40
[  840.696729] hid-generic 0003:0951:16BE.000F: input,hidraw3: USB HID v1.11 Keyboard [HyperX Alloy Elite RGB HyperX Alloy Elite RGB] on usb-0000:0b:00.0-2/input0
[  840.702294] input: HyperX Alloy Elite RGB HyperX Alloy Elite RGB as /devices/pci0000:00/0000:00:1c.4/0000:0b:00.0/usb3/3-2/3-2:1.1/0003:0951:16BE.0010/input/input41
[  840.760639] hid-generic 0003:0951:16BE.0010: input,hidraw4: USB HID v1.11 Keyboard [HyperX Alloy Elite RGB HyperX Alloy Elite RGB] on usb-0000:0b:00.0-2/input1
[  840.768647] input: HyperX Alloy Elite RGB HyperX Alloy Elite RGB Mouse as /devices/pci0000:00/0000:00:1c.4/0000:0b:00.0/usb3/3-2/3-2:1.2/0003:0951:16BE.0011/input/input42
[  840.828447] input: HyperX Alloy Elite RGB HyperX Alloy Elite RGB System Control as /devices/pci0000:00/0000:00:1c.4/0000:0b:00.0/usb3/3-2/3-2:1.2/0003:0951:16BE.0011/input/input43
[  840.828573] input: HyperX Alloy Elite RGB HyperX Alloy Elite RGB Consumer Control as /devices/pci0000:00/0000:00:1c.4/0000:0b:00.0/usb3/3-2/3-2:1.2/0003:0951:16BE.0011/input/input44
[  840.828675] input: HyperX Alloy Elite RGB HyperX Alloy Elite RGB Keyboard as /devices/pci0000:00/0000:00:1c.4/0000:0b:00.0/usb3/3-2/3-2:1.2/0003:0951:16BE.0011/input/input46
[  840.828834] hid-generic 0003:0951:16BE.0011: input,hiddev2,hidraw5: USB HID v1.11 Mouse [HyperX Alloy Elite RGB HyperX Alloy Elite RGB] on usb-0000:0b:00.0-2/input2
3
  • 1
    You might have better luck running it in a VM set up for direct USB access to the keyboard. But of course, for that you need a Windows license.
    – user
    Commented Oct 6, 2018 at 19:19
  • Sounds like you have sacrificed weekends to this. You are a true Linux legend :)
    – ata
    Commented Apr 10, 2021 at 14:58
  • 1
    Thanks @SomeDev, I had forgot this post. Some time ago I found the solution. Your message, made me share it here. Hope it's useful. Commented Apr 10, 2021 at 15:26

3 Answers 3

5

Sometime ago, I was glad to find the solution to (almost) all our problems: OpenRGB

https://gitlab.com/CalcProgrammer1/OpenRGB/-/wikis/home

This is free software that works in Linux and allows the customization of lots of RGB keyboards models, including mine. \o/

Now only the firmware upgrade is windows dependent. You can scrap NGenuity. :)

For the record: I tested, and it worked.

2
  • OpenRGB is very limited in it's ability to save patterns to the device. So OpenRGB has to be always open in background and once you close it - patterns will return to ones that were before OpenRGB started (essentially it's a preview mode). While the whole point is to have constant LED patterns regardless what OS/PC/whatever it's connected to, patterns are persisted to peripheral device. And that's what NGenuity solves. Commented Jan 19, 2023 at 14:24
  • Well, I already grew old, so I'm not interested in fancy keyboard animations and I haven't tried this to a very length extend. But I was able to save 3 profiles with 3 different colors for the whole keyboard (blue, yellow and white). And they did save. I have these profiles in my keyboard and I can change to one of those colors and respective backlight strength. So I guess one of two things are possible: or you are missing something or it works only for simple color profiles. Commented Feb 3, 2023 at 8:26
2

Wine does not support USB drivers, but if your device is being recognised as a serial device, then you need a symbolic link between com1 and /dev/usb and it must be in the folder ~/.wine/dosdevices.

This will allow Windows programs running under Wine to see USB serial devices. I use a USB GPS with wine.

This should do it.

ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com1

Source of this solution: https://ubuntuforums.org/showthread.php?t=1335098&p=8371229#post8371229

4
  • I'm travelling and will be around 1 month untiil I return home. I'll try this ASAP. Commented Jan 7, 2019 at 22:13
  • 1
    I'm using Ubuntu 18.04. There is no ttyUSB0 device in /dev. I compared the list of devices in /dev with and without connecting the keyboard. The only differences are devices hidraw1, hidraw2 and hidraw3. Commented Feb 4, 2019 at 20:30
  • @NelsonTeixeira That is because the keyboard does is not a serial device.
    – Mulperi
    Commented Jul 11, 2019 at 7:20
  • more than a year after I got the courage to try that :D I got scared because of what happened and wanted a time to enjoy the keyboard. But anyway it didn't work. I'll put the details in the question. Commented May 21, 2020 at 16:17
2

I recently got myself a HyperX Alloy RGB and I was very disappointing I couldn't control the colors in Linux Ubuntu.

I have dual boot, Win 10 + Ubuntu.

Then I installed the driver on Windows, made my color setup, and restarted in Linux. The colors remain as I made them in Win.

So, a solution for anyone who want to have a custom colored HyperX keyboard in Linux is: - Have a dual boot Windows/Linux - Install the driver on Windows and set it up - Restart in Linux with custom colors

Good luck!

2

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .