Giter Club home page Giter Club logo

arduinoxinput_avr's Introduction

XInput USB Core for Arduino AVR Build Status

The files in this repository allow you to emulate an Xbox gamepad (XInput) using a USB-capable Arduino microcontroller. Originally forked from the official Arduino AVR core.

This is meant to be used in conjunction with the ArduinoXInput library.

Installation

└───Arduino Installation
	├───drivers
	├───examples
	├───hardware
	│   ├───arduino
	│   ├───tools
	│   └───xinput
	│       └───avr
	│           ├───bootloaders
	│           ├───cores
	│           ├───libraries
	│           └───variants
	├───java
	├───lib
	├───libraries
	├───reference
	├───tools
	└───tools-builder

To install, download the latest version of this repository to your PC. Navigate to the directory containing your Arduino installation, and then open up the 'hardware' folder. Extract the contents of the .zip file into this directory. You should have a new 'xinput' folder with an 'avr' folder inside of it, containing the files from this repository (see the tree view above).

Restart the Arduino IDE. If the XInput AVR core is installed correctly, you should see a new collection of "XInput AVR Boards" in the Tools -> Boards menu.

To uninstall, delete the 'xinput' folder in the 'hardware' directory, and then restart the Arduino IDE.

Upload Warning and Instructions

!!!!!!! IMPORTANT !!!!!!!

Due to the nature of how the XInput USB mode works, Arduinos that have XInput sketches on them will not automatically reset when programmed by the IDE! You will need to reset the board by hand every time you upload new code.

You can ignore this section if you're using an external programmer.

How to Upload

Connect the board to your computer using a USB cable, and make sure you have the proper board selected in the IDE's 'boards' menu (with or without XInput). If the board already has an XInput sketch on it, you do not need to select a serial port. You should also turn on 'verbose output' for uploading in the Arduino IDE's preferences (File -> Preferences). This makes it easier to time the manual reset and see if the upload succeeded.

Lastly, you need to know where the 'reset' button is on your Arduino. If your board does not have a 'reset' button, you can wire your own by momentarily connecting the 'reset' pin to ground.

To upload to the board:

  • Press the 'Upload' button in the IDE
  • Wait until the status bar says "Uploading..."
  • Press the reset button twice, quickly

If you did these steps properly, the board should reset to the bootloader and the upload should begin. AVRDUDE will do its thing and you should see avrdude done. Thank you. near the bottom of the output window.

Note that the IDE may say that it "Couldn't find a Board on the selected port" even if the upload succeeded. This is why it's important to turn on the verbose uploading output - look for the avrdude message.

Do not upload XInput sketches to your Arduino unless you know how to reset it! Otherwise you will not be able to program it anymore and you'll have to reflash the bootloader with an external programmer.

Supported Boards

Unfortunately boards such as the Uno, Nano, or Mega that do not have native USB support will not work.

Limitations

No Console Support

This will not enable you to use your Arduino with an Xbox console! Genuine controllers use a dedicated hardware security chip that handshakes with the console. The Arduinos do not have this chip, and its security method has not been (openly) broken.

No Commercial Use

These board definitions make use of Microsoft's VID and PID in order to latch on to the PC driver. As such this is strictly for educational or development use by non-commercial entities.

License

The Arduino core files are licensed under the terms of the GNU Lesser General Public License (LGPL) version 2.1. Modifications are released under these same terms. See the LICENSE file for more information.

Newly contributed files for XInput support are licensed under the terms of the more permissive MIT license.

arduinoxinput_avr's People

Contributors

aentinger avatar agdl avatar amcewen avatar championswimmer avatar chris--a avatar cmaglie avatar damellis avatar dmadison avatar eighthave avatar facchinm avatar fede85 avatar ffissore avatar imartyn avatar ivan-perez avatar jantje avatar johnholman avatar lauszus avatar matthijskooijman avatar mlafauci avatar mlxxxp avatar nicohood avatar ntruchsess avatar pbrook avatar per1234 avatar projectgus avatar ricklon avatar sandeepmistry avatar tigoe avatar westfw avatar zeveland avatar

Watchers

 avatar

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.