Welcome, Guest. Please Login.
Linuxslate.com Forums

<=== Back to the Linuxslate.com Homepage

Newest Forum Posts

Jun 2nd, 2023, 7:31am
News: Welcome to the linuxslate.com forums. May 2020: Forum registration has been disabled due to recent advancements in bypassing captcha's and the resulting increase in spam on the forums. Registration may be re-enabled at a later date. In the meantime, if you would like to register, please email "john" at this domain, and I will manually create an account for you. Registration is for legitimate and relevant discussion only. Misused accounts will be deleted without warning.


Pages: 1
Turtle Beach VelocityOne Flight Control and Linux (Read 5955 times)
Administrator
Forum Administrator
*****


Administrator

Posts: 113
Turtle Beach VelocityOne Flight Control and Linux
Jan 3rd, 2022, 3:54pm
 
I purchased a Turtle Beach VelocityOne Flight Controller with the hope of using it with Linux and Flight Gear.
 
I was prepared to do some axis and button assignment, and I have gotten various USB controllers working with FlightGear (fgfs) in the past.  In fact, I only purchased the VelocityOne since my CH Products Flight Yoke has several physical issues due to years of use from myself and the previous owner.
 
Note: for reasons well beyond mere mortals, Google Search is currently returning a "printable" version of this thread.  The correct URL for this page is:  http://linuxslate.com/cgi-bin/forum/YaBB.pl?num=1641243248
 
Sadly, unlike the CH Products yoke, the VelocityOne is not a standard USB HID device.
Major Update.  This post was pre-mature.  Out of the box, the VelocityOne Flight Controller was not regonized by my Linux PC (Ubuntu 20.04).  I got no display or lights, However;  when connected to a Windows 10 PC, the display (FMD) became active, and I was able to switch the unit from XBOX to PC mode using the FMD.  It was then recognized as 2 standard USB HID devices and sound devices by Linux.  Please see the 2nd and 3rd posts.  Note that as of this writing, it is likely that if the unit is set back to XBOX via the FMD, it will need to be connected to a Windows PC to allow it to be set back to PC mode.
 
It is reported as follows in lsusb -v
Code:
Bus 001 Device 015: ID 10f5:7001 Turtle Beach 
Device Descriptor:
  bLength		    18
  bDescriptorType	   1
  bcdUSB		   2.00
  bDeviceClass	    255 Vendor Specific Class
  bDeviceSubClass	  71 
  bDeviceProtocol	 208 
  bMaxPacketSize0	  64
  idVendor	     0x10f5 Turtle Beach
  idProduct	    0x7001 
  bcdDevice	     10.04
  iManufacturer	     1 
  iProduct		    2 
  iSerial		     3 
  bNumConfigurations	1
  Configuration Descriptor:
    bLength		     9
    bDescriptorType	   2
    wTotalLength	 0x0040
    bNumInterfaces	    2
    bConfigurationValue     1
    iConfiguration	    0 
    bmAttributes	   0xa0
	(Bus Powered)
	Remote Wakeup
    MaxPower		  500mA
    Interface Descriptor:
	bLength		     9
	bDescriptorType	   4
	bInterfaceNumber	  0
	bAlternateSetting	 0
	bNumEndpoints	     2
	bInterfaceClass	 255 Vendor Specific Class
	bInterfaceSubClass     71 
	bInterfaceProtocol    208 
	iInterface		  0 
	Endpoint Descriptor:
	  bLength		     7
	  bDescriptorType	   5
	  bEndpointAddress     0x01  EP 1 OUT
	  bmAttributes		3
	    Transfer Type		Interrupt
	    Synch Type		   None
	    Usage Type		   Data
	  wMaxPacketSize     0x0040  1x 64 bytes
	  bInterval		   4
	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		   4
    Interface Descriptor:
	bLength		     9
	bDescriptorType	   4
	bInterfaceNumber	  1
	bAlternateSetting	 0
	bNumEndpoints	     0
	bInterfaceClass	 255 Vendor Specific Class
	bInterfaceSubClass     71 
	bInterfaceProtocol    208 
	iInterface		  0 
    Interface Descriptor:
	bLength		     9
	bDescriptorType	   4
	bInterfaceNumber	  1
	bAlternateSetting	 1
	bNumEndpoints	     2
	bInterfaceClass	 255 Vendor Specific Class
	bInterfaceSubClass     71 
	bInterfaceProtocol    208 
	iInterface		  0 
	Endpoint Descriptor:
	  bLength		     7
	  bDescriptorType	   5
	  bEndpointAddress     0x08  EP 8 OUT
	  bmAttributes		1
	    Transfer Type		Isochronous
	    Synch Type		   None
	    Usage Type		   Data
	  wMaxPacketSize     0x00e4  1x 228 bytes
	  bInterval		   1
	Endpoint Descriptor:
	  bLength		     7
	  bDescriptorType	   5
	  bEndpointAddress     0x87  EP 7 IN
	  bmAttributes		1
	    Transfer Type		Isochronous
	    Synch Type		   None
	    Usage Type		   Data
	  wMaxPacketSize     0x0040  1x 64 bytes
	  bInterval		   1
 


 
 
 
Here is a grab of syslog when it is connected.
Code:
Jan  X  HH:MM:SS host kernel: [ 3190.076846] usb 1-1.6: new full-speed USB device number 19 using ehci-pci
Jan  X  HH:MM:SS host kernel: [ 3190.187402] usb 1-1.6: New USB device found, idVendor=10f5, idProduct=7001, bcdDevice=10.04
Jan  X  HH:MM:SS host kernel: [ 3190.187404] usb 1-1.6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Jan  X  HH:MM:SS host kernel: [ 3190.187405] usb 1-1.6: Product: VelocityOne Flight
Jan  X  HH:MM:SS host kernel: [ 3190.187405] usb 1-1.6: Manufacturer: Turtle Beach
Jan  X  HH:MM:SS host kernel: [ 3190.187406] usb 1-1.6: SerialNumber: 00000120DE082312
Jan  X  HH:MM:SS host mtp-probe: checking bus 1, device 19: "/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6"
Jan  X  HH:MM:SS host mtp-probe: bus: 1, device: 19 was not an MTP device
Jan  X  HH:MM:SS host mtp-probe: checking bus 1, device 19: "/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6"
Jan  X  HH:MM:SS host mtp-probe: bus: 1, device: 19 was not an MTP device
 


 
Back to top
 
« Last Edit: Jan 7th, 2022, 8:02am by Administrator »  

Mobile Linux ?
Got That!
WWW   IP Logged
Administrator
Forum Administrator
*****


Administrator

Posts: 113
Re: Turtle Beach VelocityOne Flight Control and Li
Reply #1 - Jan 3rd, 2022, 4:25pm
 
Once set to PC mode (See previous post), the VelocityOne Flight Control is recognized in Linux.
 
Using jstest-gtk, the VelocityOne Flight Control appears as 2 joysticks -- The Yoke and the Throttle Quadrant -- as indicated below:
 

 
Other notes/comments:

  • VelocityOne Flight Control is built very well, and generally feels sturdier and nicer than the CH Products yoke.
  • The Throttle levers are a little "Loose" -- Compared to both just how they should feel as a Human Interface, and Really Loose as compared to the throttles on a actual large aircraft.  There is no way to lock the throttles together.
  • There is a very light detent for what could either be interpreted as a "Flight Idle" limit, or moving the throttles to "Cutoff". It can't really be used as reverse since there is no movement passed the detent for reverse thrust control.
  • There are no thrust reversers, or provisions for throttles with thrust reverse levers.  (Note that the both the Thrustmaster TCA Boeing Throttle Quadrant, and the Honeycomb Bravo have thrust reverse levers.)
    The VelocityOne Flight Control comes with a nice, long, fabric covered USB A-to-C cable, (and a C-to-C cable to connect the throttle quadrant.)
  • The brackets to hold it to a desk, table or other surface are strong, and well designed.  There should be no problem securing the VelocityOne Flight Control to almost anything.  The one stupid thing is the fattened end of the included allen wrench, which prevents it from being used to quickly drive the screws in or out.   I will probably either cut the end off the included allen wrench or get a normal allen wrench of the correct size.
  • The C-to-C cable included is long enough for the throttle quadrant to be mounted someplace other than onto the yoke.  However, a shorty C-to-C cable would be nice for when it is attached to the yoke --  or better yet, and internal connection between them.

 
Update:  Sorry for this being a little dis-jointed, but I am actually posting as I work on this to get it out there, and possibly to get some fixes in the next Turtle Beach firmware.
 
The main problem I am having right now is that both the Yoke and the Throttle Quadrant have the same vendor and model identification.
udevadm info /dev/input/js0 or udevadm info /dev/input/js1 both return:
ID_VENDOR=Turtle_Beach
ID_MODEL=VelocityOne_Flight
 
Note that in the jstest-gtk screen shot above, they are both identified as Turtle Beach VelocityOne Flight.  They are both identified the same way in the Flightgear Joystick Configureation screen.
 
Just setting up one at a time doesn't work, because it seems that even with the USB-C-to-C cable between them removed, Linux still sees both devices -- of course the throttle quadrant doesn't work.
 
I am trying to fix this with a udev rule, but I have not been successful yet.  The easiest solution (for the user) would be for Turtle Beach to fix the fact that both HID devices have the same model indication.  For example if the firmware was changed so that the Yoke had ID_MODEL=VelocityOne_Yoke, and the Throttle Quadrant had ID_MODEL=VelocityOne_Thrt,  this issue would be eliminated.
 
That said -- with a combination of manual editing of XML files and the Flightgear Joystick Configureation menu, I have gotten it to work.  In addition to the Velocity One Flight Controller, I was also using my Thrustmaster rudder pedals.  I was able to fly the twin engined P-61 Blackwidow around the feild very nicely, with working individual throttle controls, and a working pitch trim wheel.  I have to say that while I stand by my above comment that the throttles should be a little stiffer, the overall feel of the VelocityOne yoke is excellent, and much nicer than the CH Products yoke.
 
Specific configurations, with suggested XML files will be posted in another reply soon.
 
One last note for now:  The right hat switch is not recognized due to limits of the Linux HID drivers.  It is unlikely that this will be remedied any time soon.  Other than that, all axis and switches on both the Yoke and Throttle Quadrant are recognized by jstest-gtk.
 
To join in this conversation, please request an account using the email address at the top of this page.
 
Configuration files for Flight Gear will be covered in the next post.
 
 
Back to top
 
« Last Edit: Jan 7th, 2022, 1:11pm by Administrator »  

Mobile Linux ?
Got That!
WWW   IP Logged
Administrator
Forum Administrator
*****


Administrator

Posts: 113
Re: Turtle Beach VelocityOne Flight Control and Li
Reply #2 - Jan 5th, 2022, 9:36pm
 
Success!
 
I now have the Turtle Beach VelocityOne Flight Control Yoke and Throttle Quadrant, along with my Thrustmaster T-Rudder working in FlightGear.
 
Steps to make it work:
 
1.  Connect the VelocityOne Flight Control to a Windows 10 PC (or XBOX), and use the FMD to Select PC as the Input Mode.  The VelocityOne Flight Control will then work on a Linux PC.
2.  Back up your installations version of  /usr/share/games/flightgear/joysticks.xml.  For examle:
Code:
sudo mv /usr/share/games/flightgear/joysticks.xml /usr/share/games/flightgear/joysticks_bak.xml 


3.  In FlightGear, add the following lines to /usr/share/games/flightgear/joysticks.xml.  These line must be added just before the </PropertyList> tag:
Code:
	<js n="0" include="/home/user/.fgfs/Input/Joysticks/Turtle-Beach-VelocityOne-Flight-0.xml"/>
	<js n="1" include="/home/user/.fgfs/Input/Joysticks/Turtle-Beach-VelocityOne-Flight-1.xml"/> 


 
So with my Thrustmaster T-Rudder included, my /usr/share/games/flightgear/joysticks.xml looks like this:
 
Code:
<?xml version="1.0"?>
<!--
	To override or add "named" joystick drivers list them in
	<js-named> entries with paths relative to the directory where
	the joysticks.xml file resides (first example). Such "named"
	drivers are only picked up if one of their <name>s matches
	the joystick hardware (see output of the js_demo application).
	These drivers have precedence over already existing drivers
	with the same <name>. (You can also add a <name>default</name>
	entry to the driver to make it the default choice.)

	The second example shows how to load a driver directly to
	position 0. This will then be used for the first joystick on
	your system and FlightGear will not overwrite it.
-->

<PropertyList>
<!--
	<js-named include="Input/Joysticks/Local/X45-modified.xml"/>

	<js n="0" include="Input/Joysticks/Local/joystick_0.xml"/>
-->
	<js n="0" include="/home/user/.fgfs/Input/Joysticks/Turtle-Beach-VelocityOne-Flight-0.xml"/>
	<js n="1" include="/home/user/.fgfs/Input/Joysticks/Turtle-Beach-VelocityOne-Flight-1.xml"/>
	<js n="3" include="/home/user/.fgfs/Input/Joysticks/Thrustmaster-T-Rudder.xml"/>
	
</PropertyList> 


 
(Substitue username, and fgfs path for your installation of FlightGear.)  You can point to /user/share/games/flightgear/Input/Joysticks/, but then you need to be root every time you want to edit the configuration files.
 
4.  Create the Files Turtle-Beach-VelocityOne-Flight-0.xml  and Turtle-Beach-VelocityOne-Flight-1.xml in your .fgfs folder, or in /user/share/games/flightgear/Input/Joysticks/.  Be sure the path specified in /user/share/games/flightgear/joystick.xml  is the correct path to the referenced files.
 
5.  Edit the Turtle-Beach-VelocityOne-Flight-0.xml and Turtle-Beach-VelocityOne-Flight-1.xml  files to set up the VelocityOne Flight Control as desired.
 
Notes:

  • This will disable the built-in FlightGear Joystick editor.  Turtle-Beach-VelocityOne-Flight-0.xml and Turtle-Beach-VelocityOne-Flight-1.xml must be edited manually.  Reference: https://wiki.flightgear.org/Input_device
  • When the Turtle Beach VelocityOne Flight Control is plugged in, the Yoke always seems to be /dev/input/js0, and the Throttle Quadrant always seems to be /dev/input/js1,  so this should work consistently even though both sections have the same name.  You may need to insure that the VelocityOne Flight Control is plugged in before plugging in other joysticks/rudder pedals if you are using other such devices.
  • You may want different sets of files for different aircraft you fly.  They can be organized within folders within .fgfs/Input/Joysticks, and then simply copy the .xml files for the particular aircraft to .fgfs/Input/Joysticks/
  • As mentioned, the right yoke upper hat switch is not supported.  This is not likely to change any time soon.
  • It seems that the 1st of the 4 throttle levers is not recognized by Linux/jstest-gtk or Flightgear.  This seems to be a firmware issue.  There are only settings for single engine and twin engine in the FMD menus.  In other words, from what I can see, this issue is not limited to Linux/Flightgear.  We can hope this will be fixed in a firmware update from Turtle Beach. Fans of the Boeing 727 or Ford Tri-motor will be relieved to know that 3 throttle levers are useable in Linux/Flightgear.  
  • Warning/Indicator Lights are not supported. This is not likely to change any time soon.  If you have any information on controlling the lights, please join and post (instructions at the top of these pages.  The color and brightness of the general lighting, and the warning/indicator lights can be controlled via the FMD menus.  

Credit to these threads for getting me pointed in the right direction:
https://forum.flightgear.org/viewtopic.php?f=24&t=30438
https://forum.flightgear.org/viewtopic.php?f=6&t=454&hilit=Proper+joysti ck+selection+and+less+weirdness
 
I will post my Turtle-Beach-VelocityOne-Flight-0.xml and Turtle-Beach-VelocityOne-Flight-1.xml  files once they are a bit more mature.
Back to top
 
« Last Edit: Jan 7th, 2022, 8:12am by Administrator »  

Mobile Linux ?
Got That!
WWW   IP Logged
Administrator
Forum Administrator
*****


Administrator

Posts: 113
Re: Turtle Beach VelocityOne Flight Control and Li
Reply #3 - Jan 9th, 2022, 3:15pm
 
XML Files for Turtle Beach VelocityOne Flight
 
Linked below are my current XML files that I am using with the Turtle Beach VelocityOne Flight Controller and Flightgear.
 
The files are set up for a Twin-engine aircraft.  Propeller Pitch/Engine Mixture controls are not implemented as of this posting.
Specifically, I have been using this with the P-61 Blackwidow.  (Scroll to "Northrop"), but it should be suitable for most twin engine aircraft.
 
Axis/Buttons Definitions (See XML files for specifics):
  • Yoke:
    • The Obvious -- Yoke for Roll and Pitch Primary Controls.
    • Rudders are not implemented since I have the Thrustmaster T-Rudder, as previously mentioned.
    • Left top-hat -- Look Around
    • Left PTT button -- Center View
    • B -- Parking Brake
    • X and Y -- Flaps Up and Down
    • Right PTT -- Radio 1 PTT (I do not know if it works)
    • No other Axis/Buttons currently assigned.

  • Throttle Quadrant:
    • Center 2 Throttle Levers -- Engine 1 and Engine 2 throttle
    • Pitch Trim Wheel -- Pitch Trim
    • Buttons:
      [Mag Inc][Mag Dec][              ]  [              ][Gear U]
      [Starter  ][              ][              ]  [              ][Gear D]
    • No other Axis/Buttons currently assigned.

No LED's assigned, or currently functional as previously mentioned.
 
Click Here to download a .zip containing both needed XML files.
 
Other Misc Notes:
  • I cut the end off of the included allen wrench for more convenient use. (see prior posts)

Back to top
 
 

Mobile Linux ?
Got That!
WWW   IP Logged
Pages: 1