Jump to content

T.A.R.G.E.T Script editor + HOTAS Warthog Stick


marbe

Recommended Posts

Greetings chaps and chapeses,
    I'm creating this thread rather to share info about my struggle with HOTAS Warthog joy setup with T.A.R.G.E.T script editor and primarily to share the solution/workaround I found to work for me. I'd appreciate if someone more insightful explained/confirmed the reason for such behavior.

My HW:

  • HOTAS Warthog Throttle
  • HOTAS Warthog Magnetic Base
  • HOTAS Warthog F/A-18 Grip (? is this problem F/A-18 Grip specific ?)

 

My T.A.R.G.E.T + HOTAS Warthog setup procedure:

  • clean win10 install
  • install HOTAS Warthog drivers (devices plugged first time after
  • shut down system    |
  • unplug devices          | - reboot probably unnecessary
  • boot system              |
  • install target
  • plug devices
  • run script


The problem:
    Running basic or advanced GUI profile works without problem, but running script from GUI or Script Editor either did not see the Warthog Joystick at all or generated the following error:

Running script: C:\T.A.R.G.E.T\marbe's_profiler.tmc
*** Allocated ProcInstances found from the previous run: use FreeProcInstance() *** 
Mapped plugin module "C:\Program Files (x86)\Thrustmaster\TARGET\Plugins\sys.dll"
Compile Succeeded.
Physical USB HID devices managed by script!
Currently plugged USB HID devices[2]:
1: "Joystick - HOTAS Warthog" - "USB\VID_044F&PID_0402&REV_0100"
2: "Throttle - HOTAS Warthog" - "USB\VID_044F&PID_0404&REV_0100"
USB HID device "Throttle - HOTAS Warthog"(USB\VID_044F&PID_0404\6&E264243&0&1) selected
USB HID device with hardware id "VID_044F&PID_0402" cannot be found
USB HID device "Joystick - HOTAS Warthog"(USB\VID_044F&PID_0402\5&357A1272&0&9) selected
USB HID device with hardware id "VID_044F&PID_b351" cannot be found
USB HID device with hardware id "VID_044F&PID_b352" cannot be found
USB HID device with hardware id "VID_044F&PID_0400" cannot be found
USB HID device with hardware id "VID_044F&PID_B10A" cannot be found
USB HID device with hardware id "VID_044F&PID_B10B" cannot be found
USB HID device with hardware id "VID_044F&PID_B687" cannot be found
USB HID device with hardware id "VID_044F&PID_B679" cannot be found
USB HID device with hardware id "VID_044F&PID_B68F" cannot be found
USB HID device with hardware id "VID_044F&PID_0405" cannot be found
USB HID device with hardware id "VID_044F&PID_0406" cannot be found
USB HID device with hardware id "VID_044F&PID_0407" cannot be found
USB HID device with hardware id "VID_044F&PID_0408" cannot be found
Virtual HID devices managed by script!
Connecting virtual joystick...Done
Device name set to Thrustmaster Combined
Connecting virtual keyboard...Done
Connecting virtual mouse (absolute axes)...Done

The 'Thrustmaster combined' virtual device is crated. Device analyzer shows it is consists of the throttle and the stick. The device analyzer shows all physical device interaction (both throttle and stick), but only throttle gets captured and transferred to the Combined virtual device.


Edited by marbe
Link to comment
Share on other sites

My solution/workaround to this problem is every time this error pops up to go to the Target GUI -> under the image of stick 'controll center deadzone' -> enable hw deadzone -> done -> controll center deadzone -> disable hw deadzone -> done.

On Thrustmaster support page there is warning for original Warthog stick and for F/A-18 grip (not fo the F-16C grip) to update your firmware to version 12. Target offers 'Joystick18' device for the grip for use in the script, but that cannot be found on my setup. The script device 'Joystick' finds the hw and with the above woraround functions as intended. The hardware id "VID_044F&PID_0402" from the error message is HOTAS Warthog Joystick (not the F/A-18 grip). Maybe, this bug is related to the firmware patch.

Complete description of device behavior on my machine in my second post.

p.s. I also find the USBBDeview a better solution to registry cleaning than system reinstall.. 😄 (credit to hreich)


Edited by marbe
Link to comment
Share on other sites

1) Your TARGET log output is normal, the errors you see are normal and should be only seen as notices. VID_044F&PID_0402 is the UUID for F16 grip, if you have F18 grip it is normal it cannot be found. You can see that it found and select VID_044F&PID_0403 which is the F18 grip. So, everything is fine here.

2) If you downloaded the latest TARGET version, you indeed should also upgrade firmware of both Joystick and Throttle, have done this ?

3) If you use the F18 grip, within TARGET Script Editor you must map/configure the &JoystickF18 device instead of the &Joystick device. TARGET GUI Should automaticaly detect the F18 Grip at startup and show you the the stick device as an F18 grip.


Edited by sedenion
Link to comment
Share on other sites

TL;DR;

By default the device acts as an F18 grip and needs to use JoystickF18 alias in the script to work properly. When the 'control center deadzone' button in TARGET GUI is clicked, the device starts to act as an F16 grip and needs to use Joystick alias in the script to work properly until re-plugged (device power off).

Retest of the device behavior

@sedenion After rereading your third statement carefully, I've thoroughly retested the behavior and it is a peculiar one but it makes more sense now.

ad 1) I'm aware that those are not errors as in error messages, but I consider being unable to select the plugged in device to be an error. At the beginning of the output there is a list of plugged devices and the joystick device has UUID="USB\VID_044F&PID_0402&REV_0100" which is the F16 grip, which then cannot be found and then on the following line is said to be selected (upon this thread creation, I have shamefully and wrongly edited this line by memory, but now I have the correct outputs and I edited the OP, my apologies).

Physical USB HID devices managed by script!
Currently plugged USB HID devices[2]:
1: "Joystick - HOTAS Warthog" - "USB\VID_044F&PID_0402&REV_0100"
2: "Throttle - HOTAS Warthog" - "USB\VID_044F&PID_0404&REV_0100"
USB HID device "Throttle - HOTAS Warthog"(USB\VID_044F&PID_0404\6&E264243&0&1) selected
USB HID device with hardware id "VID_044F&PID_0402" cannot be found
USB HID device "Joystick - HOTAS Warthog"(USB\VID_044F&PID_0402\5&357A1272&0&9) selected

Both TARGET Script Editor and TARGET GUI always output the stick as F16 grip when running a script. The GUI Editor after each re-plug of the device (no reboot nor registry cleaning needed) correctly shows the grip as F18 upon new config creation. If the device is found (sometimes it is not found and rerun is needed), both Script Editor and GUI correctly select the F18 grip when running a script and the script functions as intended with the JoystickF18 alias, although wrong output is given as stated above.

If the device has never been plugged to the USB port or the registry is cleaned, both SE and GUI install an F18 grip filter driver.

driver03.PNG

That is, however, until I click on the 'control center deadzone' button. After that, the stick automagically turns into F16 grip. Even the Target GUI sees it as F16 grip upon new config creation. When a script is run afterwards, the Joystick alias is needed for proper execution. In this state, the device is always 'properly' selected by Init(&EventHandle) and no rerun is needed.

CCDZ.PNG

Even the driver filter is installed for the F16 grip.

driver02.PNG

There seem to be no difference in behavior between the two installed filters. When correct alias for current 'grip state' is used, the device works normally. When wrong alias is used, only button events are caught and sent to Thrustmaster Combined virtual device as DX_BUTTON events.

The device remains in this state until it is re-plugged. I suspect there is power on USB ports even in S5 state on my machine, since the stick remains acting as F16 grip after shutdown and reboot.  I think re-plugging cuts the device power off and flushes whatever causes this behavior.

USBDeview shows the device as an F16 grip in all registry entries, except for one with unknown device type (I'm unaware how I managed to do that and I didn't manage to replicate it).

deview.PNG


Edited by marbe
Link to comment
Share on other sites

I suspect you installed outdated software, driver, or firmware version.

  • Did you upgraded firmware of both devices ?
  • What are displayed firmware version for Joystick and Throttle ?
  • What are TARGET Scritp and GUI software versions ?
  • What driver version did you installed ?
Link to comment
Share on other sites

@sedenion I downloaded all software from Thrustmaster support page. I went through the firmware update procedure with both devices (turned out they were already up-to-date).

Displayed versions of stuff:

  • stick fw: 12        (shown in both TARGET GUI and updater)
  • throttle fw: 23   (shown in both TARGET GUI and updater)
  • fw updater: 3.0.33
  • TARGET: 3.0.20.826

When I was trying to resolve the issue for the first time, I found on various forums that TS3 joystick plugin or MS Store may cause problems. I've uninstalled the TS3 joystick plugin. The issue remains.

I have performed some cleaning with Chris Titus's script (incl. uninstalling all M$ $tore crap programs). Removing them or reinstalling them using the script again didn't help (there is some XBox related stuff I thought might be relevant).

I'd like to have the issue resolved, but I'm glad it seems not to be a problem for me now, when I know how the device acts. I haven't tested the stability with long runs yet (finishing the script these days). Apart from Thrustmaster FAST service crashing while compiling the script from time to time (might this be from the wrong filter driver installed at first run after first plug? I'll test it), there are no other issues.

I joined this forum to help other F18 grip owners get through the struggle I went faster. Still, I'd like to know if I'm the only one with this weird behavior or if someone else can replicate.

 


Edited by marbe
wrong name of TM FAST service
Link to comment
Share on other sites

I did more tests and I finaly got the same strange behavior. I have both F18 and F16 grip, so I can switch and test with or without plug and the first thing I noticed is that despite the fact that the F18 grip is declared with "VID_044F&PID_0403" Serial ID in target.tmh, it seem that the physical device (the base) still have the "VID_044F&PID_0402" Serial ID wathever the plugged grip. And TARGET Always detect and select the "VID_044F&PID_0402" device as Joystick, with F16 or F18 grip plugged, and that is the only way that work.

During my test, what I noticed is the following:
If I let the base plugged to the computer, and witching from F16 to F18 grip, everthing work fine. But if I unplug with a grip, and replug with another, it seem TARGET Script Editor did not properly detect the "VID_044F&PID_0402" anymore... To get thing working again, I simply started TARGET GUI, which seem to force some device detection.

Link to comment
Share on other sites

@sedenionThanks for the confirmation. While doing the tests I finally understood the output the Init(&EventHandle) function when running from both TARGET GUI and Script Editor. The function selects all devices in specified order. From target.tmh:

int Init(alias h, int cfg=CREATE_JOYSTICK+CREATE_KEYBOARD+CREATE_MOUSE)
{ 
	&Throttle = GetIndexJoy(Select(&Throttle));	// expect a Warthog Throttle to be plugged on USB
	&Joystick = GetIndexJoy(Select(&Joystick));	// expect a Warthog Stick to be plugged on USB
	&JoystickF18 = GetIndexJoy(Select(&JoystickF18));	// expect a Warthog Stick F18 to be plugged on USB
.
.
}

It seems that the GetIndexJoy() is a call to Thrustmaster FAST service that probes the device and if it's responding correctly, the service installs the filter driver, disconnects the device and adds it to the virtual device. Then it prints its name - composed of description, VID, PID and USB port it's plugged into - to output. If it's not responding/found, the service prints the alias as not found to output.

Since the base presents itself as "VID_044F&PID_0402" no matter what grip. The output of F18 grip prior to 'control center deadzone' button push is as following:

USB HID device "Throttle - HOTAS Warthog"(USB\VID_044F&PID_0404\6&E264243&0&1) selected			// selecting &Throttle
USB HID device with hardware id "VID_044F&PID_0402" cannot be found					// selecting &Joystick
USB HID device "Joystick - HOTAS Warthog"(USB\VID_044F&PID_0402\5&357A1272&0&9) selected		// selecting &JoystickF18

It seems like the FAST service tried to select one device twice, but the third line is just the F18 grip with same product ID as F16 grip being selected.

The F18 grip after clicking (just click and closing the popup is sufficient) on 'control center deadzone' button in TARGET GUI  acts as an F16 grip. So in both cases, when the F16 grip is plugged or the F18 grip after clicking the button, the output should be as following:

USB HID device "Throttle - HOTAS Warthog"(USB\VID_044F&PID_0404\6&E264243&0&1) selected			// Selecting &Throttle
USB HID device "Joystick - HOTAS Warthog"(USB\VID_044F&PID_0402\5&357A1272&0&13) selected		// Selecting &Joystick
USB HID device with hardware id "VID_044F&PID_0403" cannot be found					// Selecting &JoystickF18

Based on the output (device shown selected on second or third line) one may expect the corresponding alias to work while running a script.

I'd be interested to know on which line the device is shown as selected when replacing the grip with/without unplugging and what effect has running the TARGET GUI on this. Also, do you experience the change when clicking 'control center deadzone' button in TARGET GUI with F18 grip mounted with replug?

 

Cheers

Marbe


Edited by marbe
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...