diff --git a/README.md b/README.md
index 6136a18..9c6495c 100644
--- a/README.md
+++ b/README.md
@@ -1,119 +1,10 @@
-# Razer Atrox WinUSB VigEm Feeder
-This tool is a simple console application which processes WinUSB input from the **Razer Atrox XBO** controller through
-to a VigEm Virtual XB360 gamepad. This allows you to use your **Razer Atrox XBO** in any game that supports a XB360
-controller. All 8 face buttons work without any need to install ancient, beta drivers and rewire buttons.
+# 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
+In order to compile this project you will need at least [Microsoft Visual Studio Community 2017](https://visualstudio.microsoft.com)
-## Requirements
+Compilation is quite simple:
-1. Windows 7 or newer
-2. **Razer Atrox XBO**
-
-
-## Installation
-
-1. Head over to https://github.com/ViGEm/ViGEmBus/releases/ and download the latest VigEmBus installer
-2. Install **VigEmBus** and reboot
-3. Head over to https://zadig.akeo.ie and download **Zadig 2.4**
-4. Head over to https://github.com/OOPMan/RazorAtroxWinUSBVigEmFeeder/releases and download the latest versions of
-
- 1. ``RazorAtroxWinUSBVigEmFeeder_x64.exe``
- 2. ``razer_atrox_zadig_preset.cfg``
-
-5. Plug in your **Razer Atrox XBO**
-6. Head over to the *RazerAtroxWinUSBVigEmFeeder ZaDig guide* at https://imgur.com/a/F8XqFXx and follow the instructions
- there to install a WinUSB driver for your **Razer Atrox XBO**
-7. If, for some reason, the ZaDig guide does not work for you, then you will need to do the following:
-
- 1. Head over to https://github.com/OOPMan/RazorAtroxWinUSBVigEmFeeder/releases and download
- the latest ``Razer.Atrox.WinUSB.Driver.zip``
- 2. Follow the instructions at http://jbcomp.com/disable-device-driver-signing-in-windows-10/ to disable the
- requirement for signed device drivers
- 3. Extract the contents of the ``Razer.Atrox.WinUSB.Driver.zip`` file somewhere and then open the
- ``Razer Atrox WinUSB Drivers`` folder that was extracted
- 4. Right-click on the file ``Razer\_Atrox\_Arcade\_Stick.inf`` and select *Install* from the menu
- 5. You should get a message stating the driver was installed correctly
-8. Run ``RazorAtroxWinUSBVigEmFeeder_x64.exe`` and wait for both status lines to state ``CONNECTED``. You may
- see a pop-up notification about a new XB360 controller being detected. This is created by the tool using VigEmBus
- and is a virtual controller that all input from the Atrox will be directed to
-9. You should now be able to play any of your fighting games in Steam. They will detect the Atrox as a standard XB360
- controller. Note that the input from the stick is mapped to the D-Pad on the virtual XB360 controller not the analog
- stick. Additionally, Windows Store games like Killer Instinct will work fine too.
-10. When you are done playing, activate the *RazorAtroxWinUSBVigEmFeeder_x64.exe* window, hit *Q* and press a button on the Atrox. The application will exit and the virtual XB360 controller will disappear
-
-
-## Uninstallation
-
-If you want to revert to either of the MS XBO controller drivers for this device it's quite simple to do so:
-
-1. Hit *Win* \+ *R*
-2. Enter *devmgmt.msc* in the Run box and press enter
-3. Click *View* and then click *Show hidden devices*
-4. Locate the item in the tree labelled *Universal Serial Bus devices*
-5. Right-click the *Razer Atrox Arcade Stick* item and click *Uninstall device*
-6. In the dialog box, mark the checkbox labelled *Delete the driver software for this device*
-7. Click *Uninstall*
-8. Replug your Razer Atrox. It will now use whichever MS driver you previously configured for it
-
-
-## Interface
-The application provides a simple text-mode UI. When running the UI appears as follows:
-
-```
-WinUSB Status: CONNECTED
-VigEm Status: CONNECTED
-
-Press:
-* Q and then a button on the controller to exit
-```
-
-### WinUSB Status
-* **DISCONNECTED**: The Razer Atrox is not connected or has disconnected
-* **INIT**: The Razer Atrox is connected and the INIT packet has been sent
-* **CONNECTED**: The Razer Atrox is connected and data from it has been received
-
-### VigEm Status:
-* **DISCONNECTED**: VigEm Virtual XB360 controller is disconnected
-* **CONNECTED**: VigEm Virtual XB360 controller is connected
-
-
-## Operation
-Upon starting the application will attempt to establish a connection with the Razer Atrox via WinUSB. Once a connection
-has been established it will create a VigEm XB360 controller and begin processing input through.
-
-
-## Roadmap
-
-1. Improved GUI (Text-mode first, later a proper Win32 GUI)
-2. Advanced Input rebinding and presets system
-3. Input modifier system to allow a button on the controller to be used to trigger alternate input mode.
- Similar to the *Shift* key on a keyboard
-4. Support up to 8 controllers
-5. Integrate ``libwdi`` to integrate WinUSB driver generation and installation into the application
-6. Support other XBO Arcade Stick controllers that do not work correctly on Windows
-
-
-## Credits
-
-I'd like to thank the following people for their assistance on this project:
-
-* *Nefarius*, *!ϻega*, *evilC*, *Snoothy* and *Sylveon* of the [Nefarius Software Solutions](https://discord.vigem.org/) Discord server for their assistance with with VigEm, WinUSB and C++
-* [ZaDig](https://zadig.akeo.ie) for the tool used to generate the WinUSB driver for the Razer Atrox
-* The developers of the *xpad* driver for Linux which provided some useful information on interacting with XBO controllers
-* The developers of *Device Monitoring Studio*, which I used to capture the USB packet data sent and received by the Razer Atrox
-
-
-## Contact Details
-
-I would love for anyone testing this tool to provide feedback on the following:
-
-* Did you notice any input lag or similar issues?
-* Did the tool fail to work in any games you tried?
-* Do you have any ideas or suggestion to improve the tool?
-
-You can contact me via the following avenues:
-
-* The [Nefarius Software Solutions](https://discord.vigem.org/) Discord server
-* The GitHub issue tracker for the tool is here: https://github.com/OOPMan/RazorAtroxWinUSBVigEmFeeder/issues
-* You can also leave a message on the forum thread https://forums.vigem.org/topic/282/xbo-arcade-sticks-vigem-and-a-whole-ton-of-fun/
-* The Reddit post for this software is here: https://www.reddit.com/r/Fighters/comments/bjmca9/attention_razer_atrox_xbo_owners_other_xbo_arcade/
+1. Open the **XBOXFS.win.sln** file using Visual Studio
+2. In *Solution Explorer*, right-click on the **XBOFS.win** project and click *Build*
\ No newline at end of file
diff --git a/RazorAtroxWinUSBVigEmFeeder.sln b/XBOFS.win.sln
similarity index 84%
rename from RazorAtroxWinUSBVigEmFeeder.sln
rename to XBOFS.win.sln
index 9f78cd1..d72109d 100644
--- a/RazorAtroxWinUSBVigEmFeeder.sln
+++ b/XBOFS.win.sln
@@ -3,19 +3,33 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28307.572
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RazorAtroxWinUSBVigEmFeeder", "RazorAtroxWinUSBVigEmFeeder\RazorAtroxWinUSBVigEmFeeder.vcxproj", "{F6104731-5815-4BBA-A558-E859DD039413}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XBOFS.win", "XBOFS.win\XBOFS.win.vcxproj", "{F6104731-5815-4BBA-A558-E859DD039413}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ViGEmClient", "ViGEmClient\src\ViGEmClient.vcxproj", "{7DB06674-1F4F-464B-8E1C-172E9587F9DC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{1E0515A5-B0AA-4821-90DE-C764A2C35AF2}"
ProjectSection(SolutionItems) = preProject
.gitignore = .gitignore
+ _config.yml = _config.yml
+ CNAME = CNAME
LICENSE.txt = LICENSE.txt
pre-build.cmd = pre-build.cmd
README.md = README.md
VigEmClient.patch = VigEmClient.patch
EndProjectSection
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{B758C57A-D285-4991-96CF-8B166A4FE290}"
+ ProjectSection(SolutionItems) = preProject
+ docs\device_contributor_guide.md = docs\device_contributor_guide.md
+ docs\index.md = docs\index.md
+ docs\zadig.md = docs\zadig.md
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "presets", "presets", "{98CB9F55-4522-4F47-8C9F-79070A0C1464}"
+ ProjectSection(SolutionItems) = preProject
+ presets\razer_atrox_zadig_preset.cfg = presets\razer_atrox_zadig_preset.cfg
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug_DLL|x64 = Debug_DLL|x64
@@ -84,6 +98,10 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {B758C57A-D285-4991-96CF-8B166A4FE290} = {1E0515A5-B0AA-4821-90DE-C764A2C35AF2}
+ {98CB9F55-4522-4F47-8C9F-79070A0C1464} = {1E0515A5-B0AA-4821-90DE-C764A2C35AF2}
+ EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {B5964061-63A6-4D2B-9142-462BCF9B6748}
EndGlobalSection
diff --git a/RazorAtroxWinUSBVigEmFeeder/PDCursesUIManager.cpp b/XBOFS.win/PDCursesUIManager.cpp
similarity index 97%
rename from RazorAtroxWinUSBVigEmFeeder/PDCursesUIManager.cpp
rename to XBOFS.win/PDCursesUIManager.cpp
index 8113635..ebae3a6 100644
--- a/RazorAtroxWinUSBVigEmFeeder/PDCursesUIManager.cpp
+++ b/XBOFS.win/PDCursesUIManager.cpp
@@ -60,7 +60,7 @@ int PDCursesUIManager::checkMailbox()
void PDCursesUIManager::render(bool exiting)
{
erase();
- mvwprintw(this->window, 0, 0, "Razer Atrox WinUSB VigEm Feeder %s", exiting ? "" : "(Press Q to exit)");
+ mvwprintw(this->window, 0, 0, "XBOFS.win v0.3 %s", exiting ? "" : "(Press Q to exit)");
mvwprintw(this->window, 2, 0, "WinUSB Device Manager (Thread ID %d) status: %s", this->winUsbDeviceManager->getThreadId(), threadMessageToString(this->winUsbDeviceManagerStatus).c_str());
auto counter = 0;
for (auto threadId : this->winUsbDeviceThreadIdList) {
diff --git a/RazorAtroxWinUSBVigEmFeeder/PDCursesUIManager.h b/XBOFS.win/PDCursesUIManager.h
similarity index 100%
rename from RazorAtroxWinUSBVigEmFeeder/PDCursesUIManager.h
rename to XBOFS.win/PDCursesUIManager.h
diff --git a/RazorAtroxWinUSBVigEmFeeder/Thread.cpp b/XBOFS.win/Thread.cpp
similarity index 100%
rename from RazorAtroxWinUSBVigEmFeeder/Thread.cpp
rename to XBOFS.win/Thread.cpp
diff --git a/RazorAtroxWinUSBVigEmFeeder/Thread.h b/XBOFS.win/Thread.h
similarity index 100%
rename from RazorAtroxWinUSBVigEmFeeder/Thread.h
rename to XBOFS.win/Thread.h
diff --git a/RazorAtroxWinUSBVigEmFeeder/WinUsbDevice.cpp b/XBOFS.win/WinUsbDevice.cpp
similarity index 100%
rename from RazorAtroxWinUSBVigEmFeeder/WinUsbDevice.cpp
rename to XBOFS.win/WinUsbDevice.cpp
diff --git a/RazorAtroxWinUSBVigEmFeeder/WinUsbDevice.h b/XBOFS.win/WinUsbDevice.h
similarity index 100%
rename from RazorAtroxWinUSBVigEmFeeder/WinUsbDevice.h
rename to XBOFS.win/WinUsbDevice.h
diff --git a/RazorAtroxWinUSBVigEmFeeder/WinUsbDeviceManager.cpp b/XBOFS.win/WinUsbDeviceManager.cpp
similarity index 100%
rename from RazorAtroxWinUSBVigEmFeeder/WinUsbDeviceManager.cpp
rename to XBOFS.win/WinUsbDeviceManager.cpp
diff --git a/RazorAtroxWinUSBVigEmFeeder/WinUsbDeviceManager.h b/XBOFS.win/WinUsbDeviceManager.h
similarity index 100%
rename from RazorAtroxWinUSBVigEmFeeder/WinUsbDeviceManager.h
rename to XBOFS.win/WinUsbDeviceManager.h
diff --git a/RazorAtroxWinUSBVigEmFeeder/RazorAtroxWinUSBVigEmFeeder.vcxproj b/XBOFS.win/XBOFS.win.vcxproj
similarity index 99%
rename from RazorAtroxWinUSBVigEmFeeder/RazorAtroxWinUSBVigEmFeeder.vcxproj
rename to XBOFS.win/XBOFS.win.vcxproj
index def5ff8..538c019 100644
--- a/RazorAtroxWinUSBVigEmFeeder/RazorAtroxWinUSBVigEmFeeder.vcxproj
+++ b/XBOFS.win/XBOFS.win.vcxproj
@@ -70,7 +70,7 @@
12.0
Debug
Win32
- RazorAtroxWinUSBVigEmFeeder
+ XBOFS.win
diff --git a/RazorAtroxWinUSBVigEmFeeder/RazorAtroxWinUSBVigEmFeeder.vcxproj.filters b/XBOFS.win/XBOFS.win.vcxproj.filters
similarity index 100%
rename from RazorAtroxWinUSBVigEmFeeder/RazorAtroxWinUSBVigEmFeeder.vcxproj.filters
rename to XBOFS.win/XBOFS.win.vcxproj.filters
diff --git a/RazorAtroxWinUSBVigEmFeeder/device.cpp b/XBOFS.win/device.cpp
similarity index 100%
rename from RazorAtroxWinUSBVigEmFeeder/device.cpp
rename to XBOFS.win/device.cpp
diff --git a/RazorAtroxWinUSBVigEmFeeder/device.h b/XBOFS.win/device.h
similarity index 100%
rename from RazorAtroxWinUSBVigEmFeeder/device.h
rename to XBOFS.win/device.h
diff --git a/RazorAtroxWinUSBVigEmFeeder/easylogging++.cc b/XBOFS.win/easylogging++.cc
similarity index 100%
rename from RazorAtroxWinUSBVigEmFeeder/easylogging++.cc
rename to XBOFS.win/easylogging++.cc
diff --git a/RazorAtroxWinUSBVigEmFeeder/easylogging++.h b/XBOFS.win/easylogging++.h
similarity index 100%
rename from RazorAtroxWinUSBVigEmFeeder/easylogging++.h
rename to XBOFS.win/easylogging++.h
diff --git a/RazorAtroxWinUSBVigEmFeeder/easyloggingpp.conf b/XBOFS.win/easyloggingpp.conf
similarity index 71%
rename from RazorAtroxWinUSBVigEmFeeder/easyloggingpp.conf
rename to XBOFS.win/easyloggingpp.conf
index 6f9ac97..b2d01cb 100644
--- a/RazorAtroxWinUSBVigEmFeeder/easyloggingpp.conf
+++ b/XBOFS.win/easyloggingpp.conf
@@ -1,5 +1,5 @@
* GLOBAL:
- FILENAME = "razeratroxwinusbvigemfeeder.log"
+ FILENAME = "xbofs.win.log"
ENABLED = true
TO_FILE = true
TO_STANDARD_OUTPUT = false
@@ -8,4 +8,4 @@
MAX_LOG_FILE_SIZE = 5242880 ## 5MB - Comment starts with two hashes (##)
LOG_FLUSH_THRESHOLD = 100 ## Flush after every 100 logs
* DEBUG:
- FILENAME = "razeratroxwinusbvigemfeeder.debug.log"
\ No newline at end of file
+ FILENAME = "xbofs.win.debug.log"
\ No newline at end of file
diff --git a/RazorAtroxWinUSBVigEmFeeder/main.cpp b/XBOFS.win/main.cpp
similarity index 100%
rename from RazorAtroxWinUSBVigEmFeeder/main.cpp
rename to XBOFS.win/main.cpp
diff --git a/RazorAtroxWinUSBVigEmFeeder/pch.h b/XBOFS.win/pch.h
similarity index 100%
rename from RazorAtroxWinUSBVigEmFeeder/pch.h
rename to XBOFS.win/pch.h
diff --git a/RazorAtroxWinUSBVigEmFeeder/utils.cpp b/XBOFS.win/utils.cpp
similarity index 100%
rename from RazorAtroxWinUSBVigEmFeeder/utils.cpp
rename to XBOFS.win/utils.cpp
diff --git a/RazorAtroxWinUSBVigEmFeeder/utils.h b/XBOFS.win/utils.h
similarity index 100%
rename from RazorAtroxWinUSBVigEmFeeder/utils.h
rename to XBOFS.win/utils.h
diff --git a/docs/device_contributor_guide.md b/docs/device_contributor_guide.md
new file mode 100644
index 0000000..9c5de56
--- /dev/null
+++ b/docs/device_contributor_guide.md
@@ -0,0 +1,202 @@
+# Device Contributor Guide
+
+This document aims to provide users of unsuppored XBO fight stick controllers with the tools and knowledge they need to assist in the
+process of adding support for new devices
+
+
+## Contents
+1. [Requirements](#requirements)
+2. [Tools](#tools)
+3. [Preparation](#preparation)
+4. [Data Capture](#data-capture)
+5. [Delivery](#delivery)
+
+
+## Requirements
+* Access to a XBO fight stick controller that is not supported by the **XBOFS.win**
+* Some patience
+
+
+## Tools
+* A text editor (I recommend [Notepad++](https://notepad-plus-plus.org))
+* [Device Monitoring Studio](https://www.hhdsoftware.com/device-monitoring-studio). Don't worry about the crazy prices, the shareware
+ version of this application works fine for our needs. Just download the installer and run it. To complete the installation you will need
+ to reboot.
+
+
+## Preparation
+Before you can start capturing data for your device it is necessary to ensure it is not configured to use the XBO Controller beta drivers
+from 2014. If these drivers are active for your device then Device Montioring Studio will be unable to see the controller.
+
+##### In order to determine whether you are using the beta drivers
+01. Press *Win* + *R* to open the *Run* dialog
+
+ ![](images/device_contributor_guide/check_xbo_controller_driver_version/01.jpg)
+02. Enter *devmgmt.msc* and press *Enter*
+
+ ![](images/device_contributor_guide/check_xbo_controller_driver_version/02.jpg)
+03. In the *Device Manager* window, locate the *Xbox Peripherals* item and expand it
+
+ ![](images/device_contributor_guide/check_xbo_controller_driver_version/03.jpg)
+04. Locate the *Xbox Gaming Device* item
+
+ ![](images/device_contributor_guide/check_xbo_controller_driver_version/04.jpg)
+05. Right-click on the item and click *Properties*
+
+ ![](images/device_contributor_guide/check_xbo_controller_driver_version/05.jpg)
+06. Click on the *Driver* tab
+
+ ![](images/device_contributor_guide/check_xbo_controller_driver_version/06.jpg)
+07. Check the *Driver Date* and *Driver version* items. If the driver date is **5/26/2014** and the driver version is **6.2.11059.0**
+ then you are using the beta drivers and will need to temporarily switch to a newer version while you collect the data
+
+ ![](images/device_contributor_guide/check_xbo_controller_driver_version/07.jpg)
+
+##### In order to update to the latest drivers
+01. Navigate to the *Driver* tab as described above
+
+ ![](images/device_contributor_guide/update_xbo_controller_driver_version/01.jpg)
+02. Click the *Update* button
+
+ ![](images/device_contributor_guide/update_xbo_controller_driver_version/02.jpg)
+03. Click the *Search automatically for updated driver software* option
+
+ ![](images/device_contributor_guide/update_xbo_controller_driver_version/03.jpg)
+04. Wait for the driver to be updated
+
+ ![](images/device_contributor_guide/update_xbo_controller_driver_version/04.jpg)
+05. Check the *Driver Date* and *Driver version* items. They should reflect a newer version of the driver that the one described above.
+ You may be instructed to reboot. If so, reboot as instructed before proceeding to capture data. If for some reason the driver is not
+ updated to a newer version using this process then it is recommended to run *Windows Update* and retry this process from step 1
+
+ ![](images/device_contributor_guide/update_xbo_controller_driver_version/05.jpg)
+
+##### To rollback to the beta drivers
+01. Navigate to the *Driver* tab as described above
+
+ ![](images/device_contributor_guide/update_xbo_controller_driver_version/01.jpg)
+
+02. Click the *Update* button
+
+ ![](images/device_contributor_guide/update_xbo_controller_driver_version/02.jpg)
+03. Click the *Browse my computer for driver software* option
+
+ ![](images/device_contributor_guide/rollback_xbo_controller_driver_version/01.jpg)
+04. Click the *Let me pick from a list of available drivers on this computer* option
+
+ ![](images/device_contributor_guide/rollback_xbo_controller_driver_version/02.jpg)
+05. Select the *Xbox Gaming Device Version 6.2.11059.0 [5/26/2014]* item and click *Next*
+
+ ![](images/device_contributor_guide/rollback_xbo_controller_driver_version/03.jpg)
+06. Wait for the driver to be rolled back
+
+ ![](images/device_contributor_guide/rollback_xbo_controller_driver_version/04.jpg)
+07. You should get a success message. You may also see a *Microsoft Visual C++ Runtime Library* error dialog. This can be ignored, it's a
+ side-effect of using ancient, beta drivers. You may be instructed to reboot. If instructed, do so
+
+ ![](images/device_contributor_guide/rollback_xbo_controller_driver_version/05.jpg)
+
+## Data Capture
+
+01. Plug in your controller. It is also recommended to unplug any other controllers
+02. Confirm the controller is detected correctly using *Device Manager*
+
+ ![](images/device_contributor_guide/data_capture/01.jpg)
+03. Use the *Start Menu* to locate and run your text editor
+
+ ![](images/device_contributor_guide/data_capture/02.jpg)
+04. Use the *Start Menu* to locate and run *Device Monitoring Studio*
+
+ ![](images/device_contributor_guide/data_capture/03.jpg)
+05. Locate your controller in the *Devices* pane and select it
+
+ ![](images/device_contributor_guide/data_capture/04.jpg)
+06. Click the *Device Descriptor* tab in the bottom pane
+
+ ![](images/device_contributor_guide/data_capture/05.jpg)
+07. Drag-select all of the text, right-click and click *Copy*
+
+ ![](images/device_contributor_guide/data_capture/06.jpg)
+08. Switch to your text editor and paste the copied text
+
+ ![](images/device_contributor_guide/data_capture/07.jpg)
+09. Switch back to *Device Monitoring Studio* and click the *Configuration Descriptor* tab in the bottom pane
+
+ ![](images/device_contributor_guide/data_capture/08.jpg)
+10. Drag-select all of the text, right-click and clik *Copy*
+
+ ![](images/device_contributor_guide/data_capture/09.jpg)
+11. Switch to your text editor and paste the copied text
+
+ ![](images/device_contributor_guide/data_capture/10.jpg)
+12. Save the text file
+
+ ![](images/device_contributor_guide/data_capture/11.jpg)
+
+ ![](images/device_contributor_guide/data_capture/12.jpg)
+13. Switch back to *Device Monitoring Studio*, locate your controlled in the *Devices* pane, right-click on it and click *Start Monitoring*
+
+ ![](images/device_contributor_guide/data_capture/13.jpg)
+14. Double-click the *Packet View* item in the left-hand pane
+
+ ![](images/device_contributor_guide/data_capture/14.jpg)
+15. Confirm the *Packet View* item appears in the right-hand pane
+
+ ![](images/device_contributor_guide/data_capture/15.jpg)
+16. Click the *Start* button
+
+ ![](images/device_contributor_guide/data_capture/16.jpg)
+17. Click in the *Packet View* tab to focus the window and press a button on your controller until you start to see items appear in the list view. Items
+ labelled *DOWN* are sent by the PC to the controller while items labelled *UP* represent data sent from the controller
+
+ ![](images/device_contributor_guide/data_capture/17.jpg)
+18. Select the first *DOWN* item in the list view
+
+ ![](images/device_contributor_guide/data_capture/18.jpg)
+19. This data represents the INIT packet sent by the PC to the controller
+
+ ![](images/device_contributor_guide/data_capture/19.jpg)
+20. Right-click in the *Complete* tab and click *Copy*
+
+ ![](images/device_contributor_guide/data_capture/20.jpg)
+21. Switch to your text editor and paste the copied text and save
+
+ ![](images/device_contributor_guide/data_capture/21.jpg)
+22. Switch back to *Device Monitoring Studio*, click in the *Packet View* tab and press and release the *X* button on your controller. Two new *UP* items should
+ appear the list view. The first item represents the button press, the second the release. Select the first item
+
+ ![](images/device_contributor_guide/data_capture/22.jpg)
+23. This data represents the button/stick action sent by the controller to the PC
+
+ ![](images/device_contributor_guide/data_capture/23.jpg)
+24. Right-click in the *Complete* tab and click *Copy*
+
+ ![](images/device_contributor_guide/data_capture/24.jpg)
+25. Switch to your text editor and line a noting the button/stick direction that was pressed (E.g. *Button X*)
+
+ ![](images/device_contributor_guide/data_capture/25.jpg)
+26. Paste the copied text and save
+
+ ![](images/device_contributor_guide/data_capture/26.jpg)
+27. Repeat steps 22 through 26 for each button, including the *Start*, *View* and *XBox Guide* buttons
+
+28. Repeat steps 22 through 26 for each single stick direction (I.e. *Up*, *Left*, *Down*, *Right*). Be careful not to press the stick diagonally. If you
+ are not sure whether you pressed diagonally, try again and check the data in the *Complete* tab
+
+29. Once you have collected data on all the buttons and stick directions you can close *Device Monitoring Studio* and make sure your data capture text file is
+ saved. Not that you **DO NOT** need to capture diagonal directions on the stick or any buttom press combinations (E.g. *X* and *Y* together). All that is
+ required are the single button/direction values
+
+
+## Delivery
+
+The data capture text file needs to be submitted so that support can be implemented. The recommended means of doing this is to
+[create a new issue on GitHub](https://github.com/OOPMan/XBOFS.win/issues/new). You will need to sign-up for a GitHub account (Don't worry, it's free) before
+you can submit an issue.
+
+For the *Title* field, fill in a value adjusted for your controller like so: *Device support request: Razer Atrox XBO*.
+
+Drag-and-drop your data capture text file into the *Write* text area and then click the *Submit new issue* button.
+
+If you have any questions, check the [index](index.md) document for support details
+
diff --git a/docs/images/device_contributor_guide/check_xbo_controller_driver_version/01.jpg b/docs/images/device_contributor_guide/check_xbo_controller_driver_version/01.jpg
new file mode 100644
index 0000000..088fde4
Binary files /dev/null and b/docs/images/device_contributor_guide/check_xbo_controller_driver_version/01.jpg differ
diff --git a/docs/images/device_contributor_guide/check_xbo_controller_driver_version/02.jpg b/docs/images/device_contributor_guide/check_xbo_controller_driver_version/02.jpg
new file mode 100644
index 0000000..21d981f
Binary files /dev/null and b/docs/images/device_contributor_guide/check_xbo_controller_driver_version/02.jpg differ
diff --git a/docs/images/device_contributor_guide/check_xbo_controller_driver_version/03.jpg b/docs/images/device_contributor_guide/check_xbo_controller_driver_version/03.jpg
new file mode 100644
index 0000000..00980b2
Binary files /dev/null and b/docs/images/device_contributor_guide/check_xbo_controller_driver_version/03.jpg differ
diff --git a/docs/images/device_contributor_guide/check_xbo_controller_driver_version/04.jpg b/docs/images/device_contributor_guide/check_xbo_controller_driver_version/04.jpg
new file mode 100644
index 0000000..1367922
Binary files /dev/null and b/docs/images/device_contributor_guide/check_xbo_controller_driver_version/04.jpg differ
diff --git a/docs/images/device_contributor_guide/check_xbo_controller_driver_version/05.jpg b/docs/images/device_contributor_guide/check_xbo_controller_driver_version/05.jpg
new file mode 100644
index 0000000..7542312
Binary files /dev/null and b/docs/images/device_contributor_guide/check_xbo_controller_driver_version/05.jpg differ
diff --git a/docs/images/device_contributor_guide/check_xbo_controller_driver_version/06.jpg b/docs/images/device_contributor_guide/check_xbo_controller_driver_version/06.jpg
new file mode 100644
index 0000000..fe20960
Binary files /dev/null and b/docs/images/device_contributor_guide/check_xbo_controller_driver_version/06.jpg differ
diff --git a/docs/images/device_contributor_guide/check_xbo_controller_driver_version/07.jpg b/docs/images/device_contributor_guide/check_xbo_controller_driver_version/07.jpg
new file mode 100644
index 0000000..9f195a4
Binary files /dev/null and b/docs/images/device_contributor_guide/check_xbo_controller_driver_version/07.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/01.jpg b/docs/images/device_contributor_guide/data_capture/01.jpg
new file mode 100644
index 0000000..2bb3df4
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/01.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/02.jpg b/docs/images/device_contributor_guide/data_capture/02.jpg
new file mode 100644
index 0000000..6baf06b
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/02.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/03.jpg b/docs/images/device_contributor_guide/data_capture/03.jpg
new file mode 100644
index 0000000..21ae1a6
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/03.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/04.jpg b/docs/images/device_contributor_guide/data_capture/04.jpg
new file mode 100644
index 0000000..e6406fa
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/04.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/05.jpg b/docs/images/device_contributor_guide/data_capture/05.jpg
new file mode 100644
index 0000000..947dcaa
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/05.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/06.jpg b/docs/images/device_contributor_guide/data_capture/06.jpg
new file mode 100644
index 0000000..0d7de59
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/06.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/07.jpg b/docs/images/device_contributor_guide/data_capture/07.jpg
new file mode 100644
index 0000000..0e14177
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/07.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/08.jpg b/docs/images/device_contributor_guide/data_capture/08.jpg
new file mode 100644
index 0000000..42aad5a
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/08.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/09.jpg b/docs/images/device_contributor_guide/data_capture/09.jpg
new file mode 100644
index 0000000..f2219d2
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/09.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/10.jpg b/docs/images/device_contributor_guide/data_capture/10.jpg
new file mode 100644
index 0000000..200bc75
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/10.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/11.jpg b/docs/images/device_contributor_guide/data_capture/11.jpg
new file mode 100644
index 0000000..34f3094
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/11.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/12.jpg b/docs/images/device_contributor_guide/data_capture/12.jpg
new file mode 100644
index 0000000..c5d910f
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/12.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/13.jpg b/docs/images/device_contributor_guide/data_capture/13.jpg
new file mode 100644
index 0000000..e585ff0
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/13.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/14.jpg b/docs/images/device_contributor_guide/data_capture/14.jpg
new file mode 100644
index 0000000..7a5bfe5
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/14.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/15.jpg b/docs/images/device_contributor_guide/data_capture/15.jpg
new file mode 100644
index 0000000..21da9ea
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/15.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/16.jpg b/docs/images/device_contributor_guide/data_capture/16.jpg
new file mode 100644
index 0000000..fffb3aa
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/16.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/17.jpg b/docs/images/device_contributor_guide/data_capture/17.jpg
new file mode 100644
index 0000000..3f91392
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/17.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/18.jpg b/docs/images/device_contributor_guide/data_capture/18.jpg
new file mode 100644
index 0000000..09a425a
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/18.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/19.jpg b/docs/images/device_contributor_guide/data_capture/19.jpg
new file mode 100644
index 0000000..5bae492
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/19.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/20.jpg b/docs/images/device_contributor_guide/data_capture/20.jpg
new file mode 100644
index 0000000..209bcb8
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/20.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/21.jpg b/docs/images/device_contributor_guide/data_capture/21.jpg
new file mode 100644
index 0000000..42cb64c
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/21.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/22.jpg b/docs/images/device_contributor_guide/data_capture/22.jpg
new file mode 100644
index 0000000..a6f5b62
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/22.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/23.jpg b/docs/images/device_contributor_guide/data_capture/23.jpg
new file mode 100644
index 0000000..174e463
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/23.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/24.jpg b/docs/images/device_contributor_guide/data_capture/24.jpg
new file mode 100644
index 0000000..4e8a88e
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/24.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/25.jpg b/docs/images/device_contributor_guide/data_capture/25.jpg
new file mode 100644
index 0000000..16ec8c9
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/25.jpg differ
diff --git a/docs/images/device_contributor_guide/data_capture/26.jpg b/docs/images/device_contributor_guide/data_capture/26.jpg
new file mode 100644
index 0000000..9d30752
Binary files /dev/null and b/docs/images/device_contributor_guide/data_capture/26.jpg differ
diff --git a/docs/images/device_contributor_guide/rollback_xbo_controller_driver_version/01.jpg b/docs/images/device_contributor_guide/rollback_xbo_controller_driver_version/01.jpg
new file mode 100644
index 0000000..87cebf4
Binary files /dev/null and b/docs/images/device_contributor_guide/rollback_xbo_controller_driver_version/01.jpg differ
diff --git a/docs/images/device_contributor_guide/rollback_xbo_controller_driver_version/02.jpg b/docs/images/device_contributor_guide/rollback_xbo_controller_driver_version/02.jpg
new file mode 100644
index 0000000..fb136ae
Binary files /dev/null and b/docs/images/device_contributor_guide/rollback_xbo_controller_driver_version/02.jpg differ
diff --git a/docs/images/device_contributor_guide/rollback_xbo_controller_driver_version/03.jpg b/docs/images/device_contributor_guide/rollback_xbo_controller_driver_version/03.jpg
new file mode 100644
index 0000000..681bf85
Binary files /dev/null and b/docs/images/device_contributor_guide/rollback_xbo_controller_driver_version/03.jpg differ
diff --git a/docs/images/device_contributor_guide/rollback_xbo_controller_driver_version/04.jpg b/docs/images/device_contributor_guide/rollback_xbo_controller_driver_version/04.jpg
new file mode 100644
index 0000000..d384d4b
Binary files /dev/null and b/docs/images/device_contributor_guide/rollback_xbo_controller_driver_version/04.jpg differ
diff --git a/docs/images/device_contributor_guide/rollback_xbo_controller_driver_version/05.jpg b/docs/images/device_contributor_guide/rollback_xbo_controller_driver_version/05.jpg
new file mode 100644
index 0000000..e9adb42
Binary files /dev/null and b/docs/images/device_contributor_guide/rollback_xbo_controller_driver_version/05.jpg differ
diff --git a/docs/images/device_contributor_guide/update_xbo_controller_driver_version/01.jpg b/docs/images/device_contributor_guide/update_xbo_controller_driver_version/01.jpg
new file mode 100644
index 0000000..94e09c2
Binary files /dev/null and b/docs/images/device_contributor_guide/update_xbo_controller_driver_version/01.jpg differ
diff --git a/docs/images/device_contributor_guide/update_xbo_controller_driver_version/02.jpg b/docs/images/device_contributor_guide/update_xbo_controller_driver_version/02.jpg
new file mode 100644
index 0000000..98f45ec
Binary files /dev/null and b/docs/images/device_contributor_guide/update_xbo_controller_driver_version/02.jpg differ
diff --git a/docs/images/device_contributor_guide/update_xbo_controller_driver_version/03.jpg b/docs/images/device_contributor_guide/update_xbo_controller_driver_version/03.jpg
new file mode 100644
index 0000000..d78ef8d
Binary files /dev/null and b/docs/images/device_contributor_guide/update_xbo_controller_driver_version/03.jpg differ
diff --git a/docs/images/device_contributor_guide/update_xbo_controller_driver_version/04.jpg b/docs/images/device_contributor_guide/update_xbo_controller_driver_version/04.jpg
new file mode 100644
index 0000000..917cbef
Binary files /dev/null and b/docs/images/device_contributor_guide/update_xbo_controller_driver_version/04.jpg differ
diff --git a/docs/images/device_contributor_guide/update_xbo_controller_driver_version/05.jpg b/docs/images/device_contributor_guide/update_xbo_controller_driver_version/05.jpg
new file mode 100644
index 0000000..26d593d
Binary files /dev/null and b/docs/images/device_contributor_guide/update_xbo_controller_driver_version/05.jpg differ
diff --git a/docs/images/vigembus_device_manager.jpg b/docs/images/vigembus_device_manager.jpg
new file mode 100644
index 0000000..b1abdf6
Binary files /dev/null and b/docs/images/vigembus_device_manager.jpg differ
diff --git a/docs/images/winusb_device_manager.jpg b/docs/images/winusb_device_manager.jpg
new file mode 100644
index 0000000..9cf2879
Binary files /dev/null and b/docs/images/winusb_device_manager.jpg differ
diff --git a/docs/images/zadig/01.jpg b/docs/images/zadig/01.jpg
new file mode 100644
index 0000000..42c9232
Binary files /dev/null and b/docs/images/zadig/01.jpg differ
diff --git a/docs/images/zadig/02.jpg b/docs/images/zadig/02.jpg
new file mode 100644
index 0000000..9f00d37
Binary files /dev/null and b/docs/images/zadig/02.jpg differ
diff --git a/docs/images/zadig/03.jpg b/docs/images/zadig/03.jpg
new file mode 100644
index 0000000..ea3fbe0
Binary files /dev/null and b/docs/images/zadig/03.jpg differ
diff --git a/docs/images/zadig/04.jpg b/docs/images/zadig/04.jpg
new file mode 100644
index 0000000..2def285
Binary files /dev/null and b/docs/images/zadig/04.jpg differ
diff --git a/docs/images/zadig/05.jpg b/docs/images/zadig/05.jpg
new file mode 100644
index 0000000..9bb4ec8
Binary files /dev/null and b/docs/images/zadig/05.jpg differ
diff --git a/docs/images/zadig/06.jpg b/docs/images/zadig/06.jpg
new file mode 100644
index 0000000..8335944
Binary files /dev/null and b/docs/images/zadig/06.jpg differ
diff --git a/docs/images/zadig/07.jpg b/docs/images/zadig/07.jpg
new file mode 100644
index 0000000..47e8100
Binary files /dev/null and b/docs/images/zadig/07.jpg differ
diff --git a/docs/images/zadig/08.jpg b/docs/images/zadig/08.jpg
new file mode 100644
index 0000000..8a9b95f
Binary files /dev/null and b/docs/images/zadig/08.jpg differ
diff --git a/docs/images/zadig/09.jpg b/docs/images/zadig/09.jpg
new file mode 100644
index 0000000..87b36ca
Binary files /dev/null and b/docs/images/zadig/09.jpg differ
diff --git a/docs/images/zadig/10.jpg b/docs/images/zadig/10.jpg
new file mode 100644
index 0000000..0106a69
Binary files /dev/null and b/docs/images/zadig/10.jpg differ
diff --git a/docs/images/zadig/11.jpg b/docs/images/zadig/11.jpg
new file mode 100644
index 0000000..f6fbd60
Binary files /dev/null and b/docs/images/zadig/11.jpg differ
diff --git a/docs/images/zadig/12.jpg b/docs/images/zadig/12.jpg
new file mode 100644
index 0000000..0e06985
Binary files /dev/null and b/docs/images/zadig/12.jpg differ
diff --git a/docs/images/zadig/13.jpg b/docs/images/zadig/13.jpg
new file mode 100644
index 0000000..93d4140
Binary files /dev/null and b/docs/images/zadig/13.jpg differ
diff --git a/docs/images/zadig/14.jpg b/docs/images/zadig/14.jpg
new file mode 100644
index 0000000..a706218
Binary files /dev/null and b/docs/images/zadig/14.jpg differ
diff --git a/docs/images/zadig/15.jpg b/docs/images/zadig/15.jpg
new file mode 100644
index 0000000..081fc25
Binary files /dev/null and b/docs/images/zadig/15.jpg differ
diff --git a/docs/images/zadig/16.jpg b/docs/images/zadig/16.jpg
new file mode 100644
index 0000000..a3cfb85
Binary files /dev/null and b/docs/images/zadig/16.jpg differ
diff --git a/docs/images/zadig/17.jpg b/docs/images/zadig/17.jpg
new file mode 100644
index 0000000..05fcea5
Binary files /dev/null and b/docs/images/zadig/17.jpg differ
diff --git a/docs/images/zadig/18.jpg b/docs/images/zadig/18.jpg
new file mode 100644
index 0000000..6c5d4e7
Binary files /dev/null and b/docs/images/zadig/18.jpg differ
diff --git a/docs/images/zadig/19.jpg b/docs/images/zadig/19.jpg
new file mode 100644
index 0000000..2e3fb90
Binary files /dev/null and b/docs/images/zadig/19.jpg differ
diff --git a/docs/images/zadig/20.jpg b/docs/images/zadig/20.jpg
new file mode 100644
index 0000000..7a87563
Binary files /dev/null and b/docs/images/zadig/20.jpg differ
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 0000000..bc6a4c8
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,145 @@
+# 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
+
+## Contents
+1. [Requirements](#requirements)
+ 1. [Supported controllers](#supported-controllers)
+2. [Screenshots and Videos](#screenshots-and-videos)
+3. [Installation](#installation)
+4. [Updating](#updating)
+5. [Usage](#usage)
+6. [Uninstallation](#uninstallation)
+7. [Support](#support)
+8. [FAQ](#faq)
+9. [Credits](#credits)
+
+
+## Requirements
+
+1. Windows 7 or newer
+2. 1 or more supported controllers
+
+##### Supported controllers
+1. Razer Atrox XBO
+
+
+## Screenshots and Videos
+
+Coming Soon
+
+## Installation
+
+1. Browse to https://github.com/ViGEm/ViGEmBus/releases/ and download the latest **VigEmBus** installer. If you are
+ on Windows 7 you also need to download the files in the Windows 7 Prerequisites section
+2. Install **VigEmBus** and reboot
+3. Browse to https://github.com/OOPMan/XBOFS.win/releases and download the latest version **XBOFS.win.zip**
+ bundle. Extract this bundle somewhere. I recommend the root of your C: drive
+4. Browse to https://zadig.akeo.ie and download **Zadig 2.4**
+5. Open the [ZaDig WinUSB driver installation guide](zadig.md) and follow the instructions there to install
+ a **WinUSB** driver for your supported controller
+
+
+## Updating
+
+1. Head over to https://github.com/OOPMan/XBOFS.win/releases and download the latest version **XBOFS.win.zip**
+ bundle. Extract this bundle over your existing folder containg **XBOFS.win**, overwriting any files if asked
+2. Restart your computer
+
+
+## Usage
+
+1. Open the folder that you extracted the **XBOFS.win.zip** bundle into
+2. Run **XBOFS.win.exe**
+3. Connect your supported controller(s)
+4. Wait for the interface to indicate your device(s) is **Reading input...**. You may
+ see a pop-up notification about a new XB360 controller(s) being detected, this is normal
+5. You can now minimize the **XBOFS.win.exe** window if you so choose
+6. You should now be able to play games using your supported controller(s). Any game that supports a standard XB360
+ controller should work, regardless of whether it is a Steam game, Windows store game or any other platform that
+ supports the XB360 controller. Note that the input from the stick is mapped to the D-Pad on the virtual XB360
+ controller not the analog stick
+7. When you are done playing, activate the **XBOXFS.win.exe** window and hit *Q*. The application will exit (it can
+ take up to 20 seconds to do so) and the virtual XB360 controller(s) will disappear
+
+
+## Uninstallation
+
+1. Hit *Win* \+ *R*
+2. Enter *devmgmt.msc* in the Run box and press enter
+3. Click *View* and then click *Show hidden devices*
+4. Locate the item in the tree labelled *Universal Serial Bus devices*
+5. Right-click the item associated with your supported controller and click *Uninstall device*
+6. In the dialog box, mark the checkbox labelled *Delete the driver software for this device*
+7. Click *Uninstall*
+8. Replug your supported controller. It will now use whichever driver was previously configured for it
+
+
+## Support
+
+##### XBOFS.win doesn't seem to be able to detect my controller
+This usually indicates an issue with the **WinUSB** driver installation. Please check the [ZaDig WinUSB driver installation guide](zadig.md) and confirm
+that when you plug in your controller, **Device Manager** updates to a state as displayed (controller name may differ):
+
+![Device Manager](images/winusb_device_manager.jpg)
+If this does not happen then you should follow the guide from step 1 to see if it fixes the problem. If your problem is still not fixed then please [submit an issue](https://github.com/OOPMan/XBOFS.win/issues)
+
+##### XBOFS.win doesn't seem to be able to create a virtual XB360 Controller
+This usually indicates an issue with the **VigEmBus** driver installation. Please confirm that the **Virtual Gamepad Emulation Bus** item appears in **Device Manager**
+under the **System Devices** node:
+
+![Device Manager](images/vigembus_device_manager.jpg)
+If this item is missing you have not installed **VigEmBus**. Check the [installation guide](#installation) for details on how to do so. If your problem is still not fixed then please [submit an issue](https://github.com/OOPMan/XBOFS.win/issues)
+
+##### When I press buttons on my controller Windows acts like I am hitting keyboard keys or clicking the mouses
+This problem occurs when **XBox Configuration Support** is enabled in **Steam**:
+1. Open **Steam**
+2. Click *Steam* -> *Settings*
+3. Click *Controller* -> *General Controller Settings*
+4. Uncheck *Xbox Configuration Support*
+5. Click *Back*
+The controller should now work as expected. If not, please [submit an issue](https://github.com/OOPMan/XBOFS.win/issues)
+
+##### I upgraded to a new version of XBOFS.win and now RetroArch isn't recognising my controllers
+This issue occurs if you were running the previous version, exited, upgraded to a new version, started the new version and then started **RetroArch**.
+In order to solve this issue you should reboot after upgrading **XBOFS.win**. If this does not fix the issue, please [submit an issue](https://github.com/OOPMan/XBOFS.win/issues)
+
+##### My problem isn't listed here
+Please do one of the following:
+1. [Submit an issue](https://github.com/OOPMan/XBOFS.win/issues) on GitHub
+2. [Message](https://www.reddit.com/message/compose/?to=OOPManZA) me on Reddit
+3. Join the [Nefarius Software Solutions](https://discord.vigem.org/) Discord server and ping **@OOPMan**
+
+
+## FAQ
+
+##### Why did you develop this piece of software?
+Long story short, I bought a Razer Atrox on special and rather than return it I decided to see if I could work out why it didn't work without jumping
+through a lot of hoops. The problemn ended up being solvable and here we are. More details can be found [here](https://forums.vigem.org/topic/282/xbo-arcade-sticks-vigem-and-a-whole-ton-of-fun/)
+
+##### Can you support my device?
+It's might be possible. Take a look at the [device contributor guide](device_contributor_guide.md) to see how you can collect the data I need to do so...
+
+## Credits
+
+* **Coding**
+ * [OOPMan](https://github.com/OOPMan)
+* **VigEmBus** and **VigEmClient**
+ * [Nefarius](https://github.com/nefarius) (If you have some cash to spare [go give this man some support](https://forums.vigem.org/topic/291/shameless-beggar-post). Without his work on [VigEmBus](https://github.com/ViGEm) **XBOFS.win** would not exist)
+ * [!ϻega](https://github.com/megadrago88)
+* **Advice**
+ * [Nefarius](https://github.com/nefarius)
+ * [!ϻega](https://github.com/megadrago88)
+ * [evilC](https://github.com/evilC)
+ * [Snoothy](https://github.com/Snoothy)
+ * [Sylveon](https://github.com/sylveon)
+* **XBO Controller Information**
+ * [xpad.c](https://github.com/torvalds/linux/blob/master/drivers/input/joystick/xpad.c)
+* **Tools**
+ * [Device Monitoring Studio](https://www.hhdsoftware.com/device-monitoring-studio)
+ * [Microsoft Visual Studio Community 2017](https://visualstudio.microsoft.com)
+ * [ZaDig](https://zadig.akeo.ie)
+* **Testing**
+ * Multiple Atrox support
+ * [Manick74](https://www.reddit.com/user/Manick74)
+ * [TheDecn](https://www.reddit.com/user/TheDecn)
\ No newline at end of file
diff --git a/docs/zadig.md b/docs/zadig.md
new file mode 100644
index 0000000..4f303e5
--- /dev/null
+++ b/docs/zadig.md
@@ -0,0 +1,67 @@
+# ZaDig WinUSB Driver Installation Guide
+
+01. Check Device Manager and confirm your supported controller is being detected by Windows. It should appear as a
+ *Xbox Gaming Device* under the *Xbox Peripherals* node. If it does not appear here you may still continue with
+ the process but there is a chance it may not work...
+
+ ![Device Manager](images/zadig/01.jpg)
+02. The latest version of **ZaDig** should be downloaded to your system and placed in the location you extracted the **XBOFS.win.zip** bundle to
+
+ ![Device Manager](images/zadig/02.jpg)
+03. Run **ZaDig**. You will probably get a pop-up as it wants to run as **Administrator**. Allow it. Once start it should look like this
+
+ ![Device Manager](images/zadig/03.jpg)
+04. Click *Device*. Click *Load Preset Device*
+
+ ![Device Manager](images/zadig/04.jpg)
+05. Navigate to the *zadig_presets* folder and select the appropriate preset for your device
+
+ ![Device Manager](images/zadig/05.jpg)
+06. **ZaDig** should now appear as follows (Device name should match that of your controller)
+
+ ![Device Manager](images/zadig/06.jpg)
+07. Ensure the highlighted box is showing **WinUSB**. If it shows something else then click on the little arrows next to it until it displays WinUSB
+
+ ![Device Manager](images/zadig/07.jpg)
+08. Click the small arrow next to the *Install Driver* button. **DO NOT** click the *Install Driver* button!
+
+ ![Device Manager](images/zadig/08.jpg)
+09. Click the *Extract Files (Don't Install)* option
+
+ ![Device Manager](images/zadig/09.jpg)
+10. ZaDig should now appear as follows. DO NOT click the *Extract Files* button yet!
+
+ ![Device Manager](images/zadig/10.jpg)
+11. Click *Options*. Click *Advanced Mode*
+
+ ![Device Manager](images/zadig/11.jpg)
+12. Click the highlighted icon next to the *Extract Files* button
+
+ ![Device Manager](images/zadig/12.jpg)
+13. Navigate to the *zadig_driver* folder and click *Select Folder*
+
+ ![Device Manager](images/zadig/13.jpg)
+14. Confirm in the log area that **ZaDig** is going to use the *zadig_driver* folder as the extraction directory
+
+ ![Device Manager](images/zadig/14.jpg)
+15. Now, finally, click the *Extract Files* button
+
+ ![Device Manager](images/zadig/15.jpg)
+16. Wait and when it's done the log output should appear as follows along with a message at the bottom of the window stating that the files
+ were successfully extracted. You can now close **ZaDig**
+
+ ![Device Manager](images/zadig/16.jpg)
+17. Open the *zadig_driver* folder
+
+ ![Device Manager](images/zadig/17.jpg)
+18. Right-click on the *Setup information* file (The icon is a white page with a grey gear)
+
+ ![Device Manager](images/zadig/18.jpg)
+19. Click *Install*
+
+ ![Device Manager](images/zadig/19.jpg)
+20. The driver should install correctly
+
+ ![Device Manager](images/zadig/20.jpg)
+21. If it does not, you will need to follow the instructions at
+ http://jbcomp.com/disable-device-driver-signing-in-windows-10/ to disable the requirement for signed device drivers and retry this from step 18
diff --git a/razer_atrox_zadig_preset.cfg b/presets/razer_atrox_zadig_preset.cfg
similarity index 74%
rename from razer_atrox_zadig_preset.cfg
rename to presets/razer_atrox_zadig_preset.cfg
index d26daa0..593fb04 100644
--- a/razer_atrox_zadig_preset.cfg
+++ b/presets/razer_atrox_zadig_preset.cfg
@@ -1,7 +1,6 @@
# This is a preset device configuration for Zadig for the Razer Atrox XBO Arcade Stick
[device]
- Description = "Razer Atrox XBO Arcade Stick"
+ Description = "XBOFS.win Controller (Razer Atrox XBO)"
VID = 0x1532
PID = 0x0A00
-# MI = 0x01
GUID = "{5ACF052A-3BE5-46AE-905E-356BA17671BD}"
\ No newline at end of file