{"id":20147400,"url":"https://github.com/gdsports/axic","last_synced_at":"2025-09-21T08:31:25.635Z","repository":{"id":130715967,"uuid":"291834110","full_name":"gdsports/AXIC","owner":"gdsports","description":"Arduino XInput Converter For Teensy 3.6","archived":false,"fork":false,"pushed_at":"2020-09-05T01:03:28.000Z","size":39,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-04T00:24:35.929Z","etag":null,"topics":["arduino","teensy","teensy3","teensy36","xbox-360","xbox360","xinput"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gdsports.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-31T22:03:03.000Z","updated_at":"2025-03-30T23:21:31.000Z","dependencies_parsed_at":"2023-07-10T13:43:05.661Z","dependency_job_id":null,"html_url":"https://github.com/gdsports/AXIC","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gdsports/AXIC","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdsports%2FAXIC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdsports%2FAXIC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdsports%2FAXIC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdsports%2FAXIC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gdsports","download_url":"https://codeload.github.com/gdsports/AXIC/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdsports%2FAXIC/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276211888,"owners_count":25604018,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-21T02:00:07.055Z","response_time":72,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","teensy","teensy3","teensy36","xbox-360","xbox360","xinput"],"created_at":"2024-11-13T22:28:52.408Z","updated_at":"2025-09-21T08:31:25.356Z","avatar_url":"https://github.com/gdsports.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Arduino XInput Converter for Teensy 3.6\n\nThe Arduino XInput Converter (AXIC) for Teensy 3.6 uses the [Arduino XInput\nLibrary](https://github.com/dmadison/ArduinoXInput) on the USB device port and\nthe Teensy USBHost_t36 library on the USB host port. AXIC translates axis and\nbutton inputs from joysticks and gamepads into XInput (XBox 360) outputs. For\nexample, plug a PS4 DS4 controller into the Teensy 3.6 USB host port then plug\nthe Teensy 3.6 into a PC. The PC sees an XBox 360 controller, not the DS4.\n\nThere is a similar project for Nintendo Switch at https://github.com/gdsports/NSGadget_Teensy.\n\nThe Teensy 3.6 acts as a Teensy-in-the-middle between one or more game\ncontrollers and the XInput system. This can be used for co-pilot mode as well\nas simulator control panel/button boxes (car, truck, tractor, etc).\n\nAXIC supports buttons and analog joysticks on the Teensy 3.6 pins so building a custom\ncontroller is easy. A gamepad can be connected to the USB host port at the same\ntime. For example, connect to two foot pedals via GPIO pins while using a\ngamepad on the USB host port.\n\nAXIC does not do console controller authentication so it cannot be used with\nconsoles. However, since it emulates an XBox 360 controller it may be usable\nwith controller converters such as Titan Two or MayFlash. I verified a\nTeensy 3.6 running this project works on a Sony PS4 when connected using\na MayFlash Magic S Pro.\n\n```\nPS4 -- MayFlash Magic S Pro -- Teensy 3.6 -- Thrustmaster T.16000M Flight Stick\n```\n\nAXIC supports the following gamepads.\n\n* Dual Shock 3\n* Dual Shock 4\n* Xbox 360\n* XBox One\n\nAXIC supports the following USB HID joysticks.\n\n* Logitech Extreme 3D Pro\n* Thrustmaster T.16000M FCS\n* Dragon Rise\n\nThe T.16000M can be configured for left or right hand users.\n\nThe big stick X and Y axes on the Logitech and Thrustmaster joysticks are\nmapped to the left thumbstick. The big stick twist/Z axis is mapped to the\nright thumbstick X axis for look left/right. The hat switches are mapped to the\nright gamepad thumbstick for look up/down/left/right.\n\nThe Dragon Rise joystick controller is frequently included in low cost\narcade button and stick kits. It suports up to 12 buttons and 1 8-way\nstick.\n\nThis project is based on the Arduino XInput libraries. The Arduino IDE,\nTeensyduino, and the following libraries must be installed and working to use\nthis project. This project modifies Teensyduino USBHost_t36 files by\noverwriting them.\n\n## Install\n\nInstall the [Arduino IDE 1.8.13](https://www.arduino.cc/en/Main/Software) and\n[Teensyduino 1.53](https://www.pjrc.com/teensy/td_download.html). I highly\nrecommend extracting the IDE zip or tar in a separate directory from the\ndefault Arduino directory.\n\nOn a Linux system, the following instructions will install the IDE into\n`~/axic/arduino-1.8.13`. Creating the portable directory ensures the sketches and\nlibraries are stored separately from the default Arduino sketches and\nlibraries.\n\n```\ncd\nmkdir axic\ncd axic\ntar xf ~/Downloads/arduino-1.8.13-linux64.tar.xz\ncd arduino-1.8.13\nmkdir portable\n```\nRun the Teensyduino installer. Make sure to install in the arduino-1.8.13\ndirectory created above.\n\nUse the IDE Library Manager to install the XInput library by David Madison. For\nmore details see https://github.com/dmadison/ArduinoXInput.\n\nFollow the instructions at https://github.com/dmadison/ArduinoXInput_Teensy\nto merge in support for XInput on the Teensy USB device interface.\n\nCopy the files in this repo's hardware directory to the arduino-1.8.13/hardware\ndirectory. This will overwrite Teensyduino files to add XInput to the\nUSBHost_t36 library. The library supports XBox 360 wireless but this adds\nsupport for XBox 360 USB.\n\nStart the IDE with all changes.\n\n```\ncd ~/axic/arduino-1.8.13\n./arduino\u0026\n```\n\n## examples/XInputAC\n\nTeensy 3.6 USB XInput gamepad pass through and conversion.\n\nSelect \"XInput\" from the \"Tools \u003e USB Type\" menu.\n\nThis example contains proof of concept code for various modes of operation. All\nUSB controllers are active so the result is a kind of co-pilot mode. The XInput\nsystem (for example, Windows) sees a single gamepad but one or more controllers\nconnected to the USB host port may be in use. For example, one person is\ndriving with one controller while the other is aiming and shooting using a\ndifferent controller.\n\n### Teensy 3 pin out with button and axis assignments\n\nFor a graphic Teensy 3.6 pin out diagram see the [following](https://www.pjrc.com/teensy/teensy36.html).\n\n|Function       |Pin    |Pin    |Function   |\n|---------------|-------|-------|-----------|\n|               |GND    |Vin    |           |\n|RX1            |0      |GND    |           |\n|TX1            |1      |3.3V   |           |\n|DPad Up        |2      |23/A9  |A          |\n|DPad Right     |3      |22/A8  |B          |\n|DPad Down      |4      |21/A7  |X          |\n|DPad Left      |5      |20/A6  |Y          |\n|LB             |6      |19/A5  |Left trigger|\n|BACK           |7      |18/A4  |Right trigger|\n|L3,LSB         |8      |17/A3  |Left X axis|\n|RB             |9      |16/A2  |Left Y axis|\n|START          |10     |15/A1  |Right X axis|\n|R3,RSB         |11     |14/A0  |Right Y axis|\n|LOGO           |12     |13     |           |\n\nSerial1 (RX1/TX1) pins are available for debug output.\n\nNote 1: The XInput thumbsticks are clickable so they also count as buttons. See\nL3/R3. Also known as LSB = Left Stick Button and RSB = Right Stick Button\n\n### Use flight control stick as a gamepad\n\nUse one hand to control left and right sticks.\nThe hat switch at the top of the stick is mapped to the right thumbstick.\nThe big stick twist axis is also mapped to the right thumbstick X axis so it\ncan be used to look left and right.\nA nice feature of the Thrustmaster T.16000M is it can be configured for left hands using a\nscrewdriver. See the [manual](http://ts.thrustmaster.com/download/accessories/manuals/T16000M/T16000M-User_manual.pdf) for details.\n\n### Gamepad macro recorder\nMaybe someday use to record and play macros. Plug in an XBox 360 game\ncontroller and record the axis and button events to a file on the micro SD\ncard.\n\n### Button mapping from micro SD card\nMaybe someday load button mappings from files on the microSD card.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgdsports%2Faxic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgdsports%2Faxic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgdsports%2Faxic/lists"}