Giter Club home page Giter Club logo

xbofs.win's Introduction

XBOFS.win

XBOFS.win allows you to use your XBO Fight Stick controller on Windows without having to install ancient, beta drivers and rewire buttons

IMPORTANT

If you ended here looking to download and use XBOFS.win with your XBO arcade stick then you've landed in the wrong place.

Head over to the main website to view the installation instructions and download the application.

Dependencies

In order to compile this project you will need:

Compilation

Compilation is quite simple:

  1. Open the XBOXFS.win.sln file using Visual Studio
  2. In Solution Explorer, right-click on the XBOFS.win.qt project and click Build

xbofs.win's People

Contributors

oopman avatar plbpietrz avatar shankera avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

xbofs.win's Issues

libwdi Result Code: -11

Hello, I'm trying to install the driver for my Razer Atrox and I get libwdi Result Code: -11.

Inputs not registering

Thank you so much for creating this!
When i first followed the instructions, everything seemed to work but when i reconnected my madcatz XBO TE2 later on, it simply stopped registering the inputs.

It showed up in my device manager as 360 peripheral but no inputs register.

This is what shows up in XBOFS.win:
image

xbofs.win.qt5.txt log:

[2020-06-08 21:51:16.349] [WinUsbDeviceManager] [info] Adding WinUsbDevice at \?\USB#VID_0738&PID_4A01#000034CEAD63B27D#{5acf052a-3be5-46ae-905e-356ba17671bd}
[2020-06-08 21:51:16.349] [WinUsbDeviceManager] [info] Sleeping for 1000 milliseconds
[2020-06-08 21:51:16.349] [WinUsbDevice \?\USB#VID_0738&PID_4A01#000034CEAD63B27D#{5acf052a-3be5-46ae-905e-356ba17671bd}] [info] Entered run()
[2020-06-08 21:51:16.349] [WinUsbDevice \?\USB#VID_0738&PID_4A01#000034CEAD63B27D#{5acf052a-3be5-46ae-905e-356ba17671bd}] [info] Connecting VigEmClient
[2020-06-08 21:51:16.350] [WinUsbDevice \?\USB#VID_0738&PID_4A01#000034CEAD63B27D#{5acf052a-3be5-46ae-905e-356ba17671bd}] [info] Adding VigEmTarget
[2020-06-08 21:51:16.352] [WinUsbDevice \?\USB#VID_0738&PID_4A01#000034CEAD63B27D#{5acf052a-3be5-46ae-905e-356ba17671bd}] [info] Starting Read-Process-Dispatch loop
[2020-06-08 21:51:16.353] [WinUsbDevice \?\USB#VID_0738&PID_4A01#000034CEAD63B27D#{5acf052a-3be5-46ae-905e-356ba17671bd}] [info] Opening WinUSB device
[2020-06-08 21:51:16.361] [WinUsbDevice \?\USB#VID_0738&PID_4A01#000034CEAD63B27D#{5acf052a-3be5-46ae-905e-356ba17671bd}] [info] Opened WinUSB device
[2020-06-08 21:51:16.361] [WinUsbDevice \?\USB#VID_0738&PID_4A01#000034CEAD63B27D#{5acf052a-3be5-46ae-905e-356ba17671bd}] [info] Init XBO Arcade Stick
[2020-06-08 21:51:16.365] [WinUsbDevice \?\USB#VID_0738&PID_4A01#000034CEAD63B27D#{5acf052a-3be5-46ae-905e-356ba17671bd}] [info] Reading input from XBO Arcade Stick

[2020-06-08 21:51:47.727] [WinUsbDevice \?\USB#VID_0738&PID_4A01#000034CEAD63B27D#{5acf052a-3be5-46ae-905e-356ba17671bd}] [warning] Failed to read input from XBO Arcade Stick
[2020-06-08 21:51:47.727] [WinUsbDevice \?\USB#VID_0738&PID_4A01#000034CEAD63B27D#{5acf052a-3be5-46ae-905e-356ba17671bd}] [warning] Failed to read input from XBO Arcade Stick 5 or more times for {}
[2020-06-08 21:51:47.727] [WinUsbDevice \?\USB#VID_0738&PID_4A01#000034CEAD63B27D#{5acf052a-3be5-46ae-905e-356ba17671bd}] [info] Opening WinUSB device
[2020-06-08 21:51:47.727] [WinUsbDevice \?\USB#VID_0738&PID_4A01#000034CEAD63B27D#{5acf052a-3be5-46ae-905e-356ba17671bd}] [error] Failed to open device handle due to -2147024894
[2020-06-08 21:51:47.727] [WinUsbDevice \?\USB#VID_0738&PID_4A01#000034CEAD63B27D#{5acf052a-3be5-46ae-905e-356ba17671bd}] [info] Opening WinUSB device

and multiple "Failed to open device handle due to -2147024894" and "opening WinUSB device"

libwdi result code: -11

Hi, I am attempting to get my Razor Atrox arcade stick working on windows 11 but it keeps spitting me back code libwdi result code -11

Please can you advise a workaround. it also states I am missing OpenSSL installation but I have installed both lite and full versions from the link.

I am a bit of a noob at this so apologies in advance, and thanks for the help - hopefully I can play SF6 soon! :)

VigEmBus update caused issues

there was an update to VigEmBus which causes the entire thing to shutdown and not detect it anymore. please help. I have uninstalled and reinstalled it many times and it still has not detected it to be installed.

driver not installing

when i go to click install razer atrox xbo driver all i get is (libwdi result code 0)
i dont know why my fight stick stopped working and giving me a error of unknown usb device, so i uninstalled xbofs and went through all the steps, but im stuck on this part

Problem building solution using VS2019 and Qt

Hi,

first of all thank you for your work regarding making Razer Atrox usable on Windows 10, this saved me sending the stick back ๐Ÿ˜„ . Being somewhat of a developer myself I wanted to dive a little bit deeper into the ins and outs of the solution you provided. Not being versed in how Visual Studio is working I'm having difficulties building the project and to be exact how to incorporate Qt so that the IDE sees it. The DriverManager project doesn't load because of missing XBOFS.win\DriverManager\QtMsBuild\Qt.props, and other projects don't see the qt header files, so my question, how do you have your IDE setup with regards to Qt so that it's able to build ๐Ÿ˜„.
Best Regards.

Update notifications

A user would like a notification channel for updates. The application should check for updates upon start-up and notify the user if one is available

Upgrade to newer version of libwdi

Since v1.0.0 was release two newer version of libwdi have been released. It is worth attempting to upgrade to determine if the application functions better with either newer version of libwdi

Input modifier system to allow simulation of additional/multiple button presses

Implementation Details

Global Input State (GIS)

For a given device the GIS may be one of two follows:

  1. Guide Up
  2. Guide Down

Behavior when in the Guide Up state

In the Guide Up state, the device functions as normal and all inputs are dispatched as expected with the exception of the Guide button.

When the Guide button is pressed, the device enters the Guide Down state and will remain in this state until the Guide button is released.

Behavior when in the Guide Down state

In the Guide Down state, all inputs are checked against the configured Alternate Inputs configured as per #3 and dispatched according to the configuration with the exception of the Guide button.

When the Guide button is released, the device enters the Guide Up state and will remain in this state until the Guide button is pressed.

Support up to 8 controllers

In order for the application to support more than 1 controller some major changes will need to be made:

  • Write custom versions of functions defined in device.cpp which interact with the full list of interfaces returned by CM_Get_Device_Interface_List
  • Rewrite core application logic and event loop to use threading.
  • Primary thread will be responsible for polling the WinUSB device interface list and determining if controllers have been added or removed
  • When a controller is added, a new thread needs to be spawned which will execute the logic loop involved in connecting to the controller, spawning a VigEm controller and then listening for input and forwarding it on
  • When a controller is removed, the primary thread needs to signal to the appropriate spawned thread to execute its termination logic

Stuck Scanning for supported controllers

The status never changes from Scanning for supported controllers.... I've tried uninstalling and reinstalling, and various combinations of plugging in the fight stick and starting the application to try and get it to resolve, but I haven't been able to influence it. Let me know what

Application:
image

Device manager:
image

Output from XBOFSWin::getWinUsbStringDescriptor sometimes includes junk characters

Sometimes calls to XBOFSWin::getWinUsbStringDescriptor produced a valid string with garbage characters at the end.

This interferes with the visual display if information but also sometimes causes issues due to the Serial Number field of a device "changing" due to the garbage characters at the end, which in turn causes profile settings, etc to be "forgotten"

Stick Tab title numbering behaves stupidly when adding/removing sticks with multiple connected

The following was oberseved:

  1. Start the application
  2. Attach 1st stick, it appears in the tabs as Stick 0
  3. Attach 2nd stick, it appears in the tabs as Stick 1
  4. Remove 1st stick, then re-attached it, it appears in the tabs as Stick 2
  5. Remove 2nd 2nd, the re-attached it, it appears as Stick 1

This is rather inconsistent behaviour. The stick numbering should probably tie to the VigEm controller player index value

Analog Input Emulation

Implement support for generating analog output based on interpolating the directional input. Triggering this conversion process would probably best be handled by allowing the XBO Guide button to be pressed to toggle between analog and directional modes. Long-holding and releasing would trigger the usual XBO Guide functionality. Additionally, while in Analog mode, it might be possible to hold some other combination of buttons (E.g. Start + Select) to switch from left analog to right analog.

There are a couple of approaches that could be taken to this interpolation.

The simplest approach would be to simply convert the relevant direction to the maximum possible corresponding analog value. This is a very simple approach and can be implemented with minimal effort.

Another approach to would entail a little more configuration in the application by allowing the conversion from directional to analog to involve a time-delay aspect. With this approach, holding the directional input would cause the corresponding analog values to interpolate from neutral to a setpoint or maximum over a set period of time. Releasing the input could reverse this process over the same amount of time or immediately allow the analog value to revert to neutral. Implementing this more complex approach would most likely involve making use of the asynchronous approach to WinUSB communications.

It will probably be best to start with the simple implementation and then once that works well, start working on the more complex approach.

Implement better handling for libwdi error -11

libwdi error -11 is a common issue that gets raised by new users and generally indicates automatic installation of the driver has failed.

The application should provide manual installation instructions to reduce the number of duplicate support tickers

Allow for left thumbstick and right thumbstick button presses to be emulated

Introduction

Currently the left and right thumbstick button presses are not supported by XBOFS.win. The aim of this ticket is to implement support for these.

Support will be implemented as follows:

  • Holding Guide will cause LB to function as Left Thumbstick
  • Holding Guide will cause LT to function as Right Thumbstick

Implementation details:

During operation the global input state (GIS) is one of the following:

  • Normal (Normal input mode, button presses are not modified)
  • Guide Down (This indicates the guide button is being pressed but has not been released)
  • Alternate (Alternate mode indicates that button presses will be modified based on the configured rules)

Normal GIS details:

When GIS is Normal, pressing the Guide button will switch GIS to Guide Down. Other inputs will not change the GIS

Guide Down GIS details:

From this point one of the following may happen:

  1. Guide button is released
  2. Another button is pressed
  3. Another button is released
  4. Directional input occurs

If the Guide Button is released:

  1. The button state is dispatched as though Guide had been pressed and released
  2. GIS returns to normal

If Another button is pressed

  1. The GIS moves to the Alternate state

If Another button is released

  1. Dispatch as normal

If Directional input occurs

  1. Dispatch as normal

Alternate GIS details:

From this point, the following may happen:

  1. Guide button is released
  2. Another button is pressed
  3. Another button is released
  4. Directional input occurs

If the Guide Button is released:

  1. GIS returns to normal
  2. Dispatch input to reset button state

If Another button is pressed

  1. Alternate input configuration is checked to determine if the press should be transformed (E.g. LB to Left Thumbstick)
  2. Dispatch transformed input

If Another button is released

  1. Alternate input configuration is checked to determine if the press should be transformed (E.g. LB to Left Thumbstick)
  2. Dispatch transformed input

If Directional input occurs

  1. Alternate input configuration is checked to determine if the press should be transformed (E.g. LB to Left Thumbstick)
  2. Dispatch transformed input

libwdi Result code -11

sorry to bug you, but ive attempted to follow the troubleshooting for this specific issue and nothing in there seemed to fix my issue, im trying to use the razer atrox xbox one version, any help would be greatly appreciated

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.