technical question before purchase
Moderator: AdminGroup
-
- Posts: 2
- Joined: Sat Nov 06, 2021 7:10
technical question before purchase
i am looking to upgrade from 16000m to VKB Gladiator NXT's (HOSAS setup) but i currently run manjaro linux (arch based). Will each stick register as differently or will it register the same twice? bottom line will duel stick properly register on linux
Re: technical question before purchase
So, full disclosure, I haven't actually tested this exactly, but:
Even with the same VID:PID combo (so, enumerating as same stick), Linux doesn't care - it still differentiates between them. In order to get predictable enumeration (joy0 is always joy0) you may need to plug them in in a certain order because udev rules won't be able to tell the difference, but they will work. This should be exactly the same situation as your current HOSAS setup, as they would work the same way.
BUT
I believe I saw, somewhere in the software, the ability to set a custom PID. Now, the downside is that you'd need Windows (or a VM) to do this, but the upside is that you'd only need to do it once. Then you can set up your udev rules to get predictable device assignments. Thing is, I can't remember where, and I can't find it in the manual, and my joystick is actually a Christmas present from my mom and so I tested it to make sure it all worked and then wrapped it up for me to open on Christmas morning and be surprised. So, I can't say "it's this setting, right here".
Even with the same VID:PID combo (so, enumerating as same stick), Linux doesn't care - it still differentiates between them. In order to get predictable enumeration (joy0 is always joy0) you may need to plug them in in a certain order because udev rules won't be able to tell the difference, but they will work. This should be exactly the same situation as your current HOSAS setup, as they would work the same way.
BUT
I believe I saw, somewhere in the software, the ability to set a custom PID. Now, the downside is that you'd need Windows (or a VM) to do this, but the upside is that you'd only need to do it once. Then you can set up your udev rules to get predictable device assignments. Thing is, I can't remember where, and I can't find it in the manual, and my joystick is actually a Christmas present from my mom and so I tested it to make sure it all worked and then wrapped it up for me to open on Christmas morning and be surprised. So, I can't say "it's this setting, right here".
-
- Posts: 314
- Joined: Sun Oct 01, 2017 5:00
- Location: Representin' the 302
- Has thanked: 21 times
- Been thanked: 86 times
Re: technical question before purchase
I've used this. It will put into whatever order you like your controllers to be in a game. Give it a try.
https://github.com/briankendall/devreor ... devreorder
Think there's a guide in the zip.
https://github.com/briankendall/devreor ... devreorder
Think there's a guide in the zip.
Gunfighter MkI w/MkIII update + MCG-Pro Grip
Avia S Cams
2x #30A Springs
FW:v2.13F
Devconfig: v92.78
Zbootloader: v2.01
Asus Strix X570-E Gaming
Ryzen9 5800X3D
Asus Strix 3080 12GB
32GB Corsair Vengeance PC3600
EVGA G6 1000W
Reverb G2V2
Win10/64
Avia S Cams
2x #30A Springs
FW:v2.13F
Devconfig: v92.78
Zbootloader: v2.01
Asus Strix X570-E Gaming
Ryzen9 5800X3D
Asus Strix 3080 12GB
32GB Corsair Vengeance PC3600
EVGA G6 1000W
Reverb G2V2
Win10/64
-
- Posts: 2
- Joined: Sat Nov 06, 2021 7:10
Re: technical question before purchase
mattcaron wrote:Even with the same VID:PID combo (so, enumerating as same stick), Linux doesn't care - it still differentiates between them. In order to get predictable enumeration (joy0 is always joy0) you may need to plug them in in a certain order because udev rules won't be able to tell the difference, but they will work. This should be exactly the same situation as your current HOSAS setup, as they would work the same way.
BUT
I believe I saw, somewhere in the software, the ability to set a custom PID. Now, the downside is that you'd need Windows (or a VM) to do this, but the upside is that you'd only need to do it once. Then you can set up your udev rules to get predictable device assignments. Thing is, I can't remember where, and I can't find it in the manual, and my joystick is actually a Christmas present from my mom and so I tested it to make sure it all worked and then wrapped it up for me to open on Christmas morning and be surprised. So, I can't say "it's this setting, right here".
the 16000m have a left/right switch in the base which i "thought" differentiated them in the udev rules but like you stated i have to plug them in using a specific order to get the keybinding correct... i actually never dug deep into it as they worked out of the box. assigning it a separate PID through software sound like the way to go... i know ill need to use a VM at some point as i have not seen a way to update firmware in linux which is a shame. i do like how the NXT's can be calibrated via hardware without the need of any OS. im wondering if it as accurate as calibration via the software... hmmm
Drano wrote:I've used this. It will put into whatever order you like your controllers to be in a game. Give it a try.
https://github.com/briankendall/devreor ... devreorder
Think there's a guide in the zip.
the link gave me a 404 but i found it reguardless at https://github.com/briankendall/devreorder it look to be directed at windows but ill look into this further here in the near future... thanks
-
- Posts: 314
- Joined: Sun Oct 01, 2017 5:00
- Location: Representin' the 302
- Has thanked: 21 times
- Been thanked: 86 times
Re: technical question before purchase
I just copy/pasted the link. Must not have gotten part of it. I just skimmed the post and missed you're using Linux, but this will work with windows. Maybe it can work with Linux?
Basically, how this works is you're editing a file with a text editor and cut/paste the device IDs in the order you want them within a game folder you're putting this program into. It doesn't work system-wide, only game specific so you can have different device orders for different games. Been a while since I've used it but it's one of those set it and forget it things once you get it where you want it.
Oh and be advised, the VKB IDs all seem to have a space at the beginning for some reason. So if you see that, it's not just you.
Basically, how this works is you're editing a file with a text editor and cut/paste the device IDs in the order you want them within a game folder you're putting this program into. It doesn't work system-wide, only game specific so you can have different device orders for different games. Been a while since I've used it but it's one of those set it and forget it things once you get it where you want it.
Oh and be advised, the VKB IDs all seem to have a space at the beginning for some reason. So if you see that, it's not just you.
Gunfighter MkI w/MkIII update + MCG-Pro Grip
Avia S Cams
2x #30A Springs
FW:v2.13F
Devconfig: v92.78
Zbootloader: v2.01
Asus Strix X570-E Gaming
Ryzen9 5800X3D
Asus Strix 3080 12GB
32GB Corsair Vengeance PC3600
EVGA G6 1000W
Reverb G2V2
Win10/64
Avia S Cams
2x #30A Springs
FW:v2.13F
Devconfig: v92.78
Zbootloader: v2.01
Asus Strix X570-E Gaming
Ryzen9 5800X3D
Asus Strix 3080 12GB
32GB Corsair Vengeance PC3600
EVGA G6 1000W
Reverb G2V2
Win10/64
Re: technical question before purchase
ClawOverdraw wrote:the 16000m have a left/right switch in the base which i "thought" differentiated them in the udev rules but like you stated i have to plug them in using a specific order to get the keybinding correct... i actually never dug deep into it as they worked out of the box. assigning it a separate PID through software sound like the way to go... i know ill need to use a VM at some point as i have not seen a way to update firmware in linux which is a shame. i do like how the NXT's can be calibrated via hardware without the need of any OS. im wondering if it as accurate as calibration via the software... hmmm
Thinking on this more:
1. I fired up my VM and the config software, but it doesn't do anything without a stick plugged in.
2. According to the initial tracking information, my Gunfighter (Christmas gift from my wife) is to arrive Monday. Even if we reasonably expand this to "sometime this week", it is hopefully in your timeframe. I am going to unbox, assemble, and function test it before disassembling and wrapping it up for Christmas. When I test it, I will try to find the screen with the PID assignment on it.
3. Even with a different VID:PID combination (as is the case with my current CH fighterstick and throttle) I still need to plug them in the correct order because I never set udev rules for those either, and that works fine - plug in the joystick first, wait a beat for it to get js0, then plug in the throttle and it gets js1. Done. Even identical ones should enumerate differently way because the DEVPATH will be different - even different ports on the same hub will have different paths. For example, plugging the same stick into one port and then the other (next to each other) on the front panel USB ports on my gaming rig gets me:
Code: Select all
pci-0000:02:00.0-usb-0:7.4:1.0-joystick -> ../js0
and
Code: Select all
pci-0000:02:00.0-usb-0:7.3:1.0-joystick -> ../js0
Now, I can't test it really well because I don't have two of the same sticks, but it should be a reasonable proxy.
Making some assumptions as to how Manjaro is set up, you can test it by plugging in both your sticks and looking at the output from
Code: Select all
lsusb
Code: Select all
/dev/input/by-path
Code: Select all
lsusb
4. As far as consistent ordering of things, if you can figure out a differentiator,
Code: Select all
udev
5. Finally, I'd like Linux configurator support too - that's the one thing that FreeJoy has over VKB, IMO. Hell, I'd love to write a cross platform configuration utility, but I'm not sure the ROI is there, even if I were to do it for free (and if folks from VKB are interested, I'll happily send them my resume). But, I do most of my gaming under Linux (I have an SDD with W10, Fallout 4 and Cyberpunk 2077 on it, and I literally flip drives to boot it up and play those few games; everything else runs under DOSBox/Wine/Proton) so you can be certain that I'll be messing with it. I have some faith that, eventually, it will become worth it - Valve has certainly decided that it is with their Steam on Linux work, but, while I am exceedingly grateful for that work, Steam Linux is apparently barely over 1% (Source: https://www.phoronix.com/scan.php?page=news_item&px=Steam-Linux-9-Years-Since-Beta). Given that VKB is a much smaller concern, I can't imagine them pouring tons of time into a Linux configurator over such small numbers, especially when there is both a reasonable workaround (VirtualBox and a $100 Windows 10 license which most people have anyway) and stuff like the TECS to get out which actually drives real revenue.
As a general open invitation, anyone is welcome to contact me directly about Linux related stuff. I've been both running Linux and writing software and firmware for more than 20 years now. Always happy to help; worst I can say is that I don't know.
Re: technical question before purchase
Alright, followup.
First, the GF + SCG arrived today. This is my first cam-based stick and I am simply blown away. Sure, I want to switch out cams and springs, and certainly the Gladiator NXT is no slouch either (it's feels like my CH flightstick after generous application of Nyogel 767A, only better), but the GF base is just a step above.. so I'll likely be swapping out that base for a GF base, but still using it as the HID controller for a SEM button panel arrangement (I'll just run it with no grip and then I'll still have the axis, 3 buttons, and 2 encoder wheels because.. MOAR buttons.
Anyway, hooked up the GF + SCG and function tested it, and what I was vaguely remembering was not the ability to set the VID or PID, but rather the ability to set the serial number and profile ID. Here's the default dump from `lspci -v`:
and here is the same dump after setting the SN to 0042 and the Profile ID to 1
The diff is as follows:
I assume the USB enumeration change is a result of writing the config (bus disconnect and reconnect), but the fact that the serial number is indeed different suggests to me that you can set different serial numbers for your left and right sticks, and then a udev rule should work.
Testing this, I set the serial to 0001 (for my right handed stick base, I figure 0000 is uninitialized, 0001 is right, 0002 is left, 0003 is button panels), and this works for that setup. Note that I will have a GF right and GNX left, so I could do it on VID:PID, but I wanted to test the theory.
Now, all that said and done, it works, but isn't really useful. `jstest-gtk` only shows up js0, and it doesn't seem like unless you are explicitly telling the software what to use, it will work. Digging in to this slightly (after trying to have udev set the device entry by the NAME keyword replacing SYMLINK), it would appear that one cannot do this. See https://askubuntu.com/questions/920098/udev-rules-name-variable-not-working and the sources they cite there.
So, coming back around:
1. Even if everything is identical, they should both be seen and, absent any other controllers, the first one plugged in will be `/dev/input/js0` and the second will be `/dev/input/js1`.
2. You can set the serial number, but I'm not sure that, given the above, there is any point to doing so.
3. My dreams of `/dev/input/jsright` instead of `/dev/input/js0` do not appear to be possible.
4. Even if 3 was, you just know that it would break something silly, like, say, every SDL game or DOSBox or something like that.
I think that about covers it.
First, the GF + SCG arrived today. This is my first cam-based stick and I am simply blown away. Sure, I want to switch out cams and springs, and certainly the Gladiator NXT is no slouch either (it's feels like my CH flightstick after generous application of Nyogel 767A, only better), but the GF base is just a step above.. so I'll likely be swapping out that base for a GF base, but still using it as the HID controller for a SEM button panel arrangement (I'll just run it with no grip and then I'll still have the axis, 3 buttons, and 2 encoder wheels because.. MOAR buttons.
Anyway, hooked up the GF + SCG and function tested it, and what I was vaguely remembering was not the ability to set the VID or PID, but rather the ability to set the serial number and profile ID. Here's the default dump from `lspci -v`:
Code: Select all
Bus 001 Device 012: ID 231d:0127
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x231d
idProduct 0x0127
bcdDevice 20.59
iManufacturer 1 © Alex Oz 2012-2020
iProduct 2 VKBsim Space Gunfighter L
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0022
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 313
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 0x0040 1x 64 bytes
bInterval 1
Device Status: 0x0001
Self Powered
and here is the same dump after setting the SN to 0042 and the Profile ID to 1
Code: Select all
Bus 001 Device 013: ID 231d:0127
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x231d
idProduct 0x0127
bcdDevice 20.59
iManufacturer 1 © Alex Oz 2012-2020
iProduct 2 VKBsim Space Gunfighter L
iSerial 3 0042
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0022
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 313
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 0x0040 1x 64 bytes
bInterval 1
Device Status: 0x0001
Self Powered
The diff is as follows:
Code: Select all
1c1
< Bus 001 Device 012: ID 231d:0127
---
> Bus 001 Device 013: ID 231d:0127
15c15
< iSerial 0
---
> iSerial 3 0042
I assume the USB enumeration change is a result of writing the config (bus disconnect and reconnect), but the fact that the serial number is indeed different suggests to me that you can set different serial numbers for your left and right sticks, and then a udev rule should work.
Testing this, I set the serial to 0001 (for my right handed stick base, I figure 0000 is uninitialized, 0001 is right, 0002 is left, 0003 is button panels), and this works for that setup. Note that I will have a GF right and GNX left, so I could do it on VID:PID, but I wanted to test the theory.
Code: Select all
ATTRS{idVendor}=="231d", ATTRS{idProduct}=="0127", ATTRS{serial}=="0001", SYMLINK+="input/jsright"
Now, all that said and done, it works, but isn't really useful. `jstest-gtk` only shows up js0, and it doesn't seem like unless you are explicitly telling the software what to use, it will work. Digging in to this slightly (after trying to have udev set the device entry by the NAME keyword replacing SYMLINK), it would appear that one cannot do this. See https://askubuntu.com/questions/920098/udev-rules-name-variable-not-working and the sources they cite there.
So, coming back around:
1. Even if everything is identical, they should both be seen and, absent any other controllers, the first one plugged in will be `/dev/input/js0` and the second will be `/dev/input/js1`.
2. You can set the serial number, but I'm not sure that, given the above, there is any point to doing so.
3. My dreams of `/dev/input/jsright` instead of `/dev/input/js0` do not appear to be possible.
4. Even if 3 was, you just know that it would break something silly, like, say, every SDL game or DOSBox or something like that.
I think that about covers it.
Who is online
Users browsing this forum: No registered users and 20 guests