# DIY Turbo Button Controller - HID Remapper

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/133/102/medium800thumb/hacks_controller_visualizer.jpg?1728657189)

Button mashers of the world unite - this project will help to save your thumbs! Use a Feather RP2040 USB Host to listen for a specific button combination from your attached gamepad to trigger "turbo mode" aka rapidly sending A button presses. Otherwise, the Feather acts as a passthrough for your controller, sending all of your gamepad inputs as pressed.

This is a great demo showing how to do "HID Re-mapping" where a keyboard, mouse or joystick has its commands replaced on the fly! It's completely transparent to the host machine, no special drivers, auto-hotkey apps, or other software required.

This hack is inspired by the [NES Advantage controller](https://en.wikipedia.org/wiki/NES_Advantage). Released by Nintendo in 1987 for the NES, it featured two turbo dials that let you dial in the perfect rapid fire A and B button toggling.

![hacks_Nintendo-NES-Advantage-Controller.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/092/medium640/hacks_Nintendo-NES-Advantage-Controller.jpg?1728582762)

## Don't Be a Jerk - Be Excellent to Each Other

**It's never okay to cheat in a game. It's unethical and ruins what should be a fun time for everyone. If that isn't enough of a deterrent, cheating in online play can and will get you banned by video game companies like Valve. This guide is meant to demonstrate what is possible with USB host and should be used as an experiment or in aiding accessible gaming.**

## Parts
### USB Gamepad

The gamepad used for this project was the [Logitech F310](https://www.amazon.com/Logitech-940-000110-Gamepad-F310/dp/B003VAHYQY?th=1). You can adjust the code for a different gamepad by adjusting the HID device reports in the code.

### Adafruit Feather RP2040 with USB Type A Host

[Adafruit Feather RP2040 with USB Type A Host](https://www.adafruit.com/product/5723)
You're probably really used to microcontroller boards with USB, but what about a dev board with two? Two is more than one, so that makes it twice as good! And the&nbsp; **Adafruit Feather RP2040 with USB Host** is **&nbsp;** definitely double-the-fun of our other Feather...

In Stock
[Buy Now](https://www.adafruit.com/product/5723)
[Related Guides to the Product](https://learn.adafruit.com/products/5723/guides)
![Angled shot of black rectangular microcontroller with USB C and USB A connectors at both ends.](https://cdn-shop.adafruit.com/640x480/5723-00.jpg)

### Snap-on Enclosure for Adafruit Feather RP2040 USB Host

[Snap-on Enclosure for Adafruit Feather RP2040 USB Host](https://www.adafruit.com/product/6057)
Here is a cute and minimal enclosure for your [Adafruit Feather RP2040 with USB Type A Host](https://www.adafruit.com/product/5723)&nbsp;to keep it safe during use and transport. This case has been custom-designed and 3D printed to accommodate the USB Type C main USB connector on...

In Stock
[Buy Now](https://www.adafruit.com/product/6057)
[Related Guides to the Product](https://learn.adafruit.com/products/6057/guides)
![Angled shot of half-assembled enclosure with microcontroller.](https://cdn-shop.adafruit.com/640x480/6057-04.jpg)

### Pink and Purple Woven USB A to USB C Cable - 1 meter long

[Pink and Purple Woven USB A to USB C Cable - 1 meter long](https://www.adafruit.com/product/5153)
This cable is not only super-fashionable, with a woven pink and purple Blinka-like pattern, it's also made for USB C for our modernized breakout boards, Feathers, and more.&nbsp;&nbsp;[If you want something just like it but for Micro B, we...](https://www.adafruit.com/product/4111)

Out of Stock
[Buy Now](https://www.adafruit.com/product/5153)
[Related Guides to the Product](https://learn.adafruit.com/products/5153/guides)
![Angled shot of coiled pink and purple USB cable with USB A and USB C connectors.](https://cdn-shop.adafruit.com/640x480/5153-02.jpg)

# DIY Turbo Button Controller - HID Remapper

## Read Your Gamepad Device Report

An HID device report is the data packet sent from the device to a host. In the case of a gamepad, a different device report is sent every time a different button is pressed. For example, the A button has a different packet than the B button.

For this project, you'll need to get your gamepad's device reports to update the code. That way, the code will know when you are pressing an A button or the up button on the D-pad. You'll do this by running some Arduino code that prints out the full device report every time a button is pressed.

https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/USB_Host_Turbo_Button_Gamepad/gamepad_device_report/gamepad_device_report.ino

## Device Report UF2

The Arduino code is available as a pre-compiled UF2. You can drag and drop the UF2 file onto your Feather RP2040 USB Host board.

 **Click the link above to download the UF2 file.**

Save it wherever is convenient for you.

![hacks_Screenshot_2024-10-08_153730.png](https://cdn-learn.adafruit.com/assets/assets/000/132/954/medium640/hacks_Screenshot_2024-10-08_153730.png?1728416268)

![](https://cdn-learn.adafruit.com/assets/assets/000/132/955/medium800/hacks_resetBoot.jpg?1728416316)

Plug your board into your computer, using a known-good data-sync USB cable, directly, or via an adapter if needed.

Hold down the **BOOT/**** BOOTSEL button&nbsp;**(highlighted in red above), and while continuing to hold it (don't let go!), press and release the&nbsp;**Reset button&nbsp;**(highlighted in blue above).**Continue to hold the BOOT/BOOTSEL button until the RPI-RP2 drive appears!**

Drag the **UF2** file to **RPI-RP2**.

![hacks_Screenshot_2024-10-08_154034.png](https://cdn-learn.adafruit.com/assets/assets/000/132/956/medium640/hacks_Screenshot_2024-10-08_154034.png?1728416452)

## Reading Reports
Head over to the Arduino IDE and open up the Serial Monitor ( **Tools -\> Serial Monitor** ) at 115200 baud. As you press each button on your gamepad, you'll see a different HID report print to the Serial Monitor.

## D-pad and Buttons
![](https://cdn-learn.adafruit.com/assets/assets/000/132/958/medium800/hacks_Screenshot_2024-10-08_154410.png?1728416659)

In the printout above, the A, B, Y and X buttons were pressed followed by up, down, left and right on the D-pad. All of these buttons' bytes are located on the fourth byte of the report.

You'll notice a repeating report with&nbsp;`0x08` in the fourth byte. This is the empty report, which is sent when buttons are released and no buttons are currently pressed. When a button is pressed, you'll see that the bitmask is _added_ to the empty byte of `0x08`. For example, an A button prints out as `0x28`. This means that the A button byte is&nbsp;`0x20`, the B button prints out as `0x48`, so its byte is&nbsp;`0x40`, etc.&nbsp;

What about the D-pad? The empty neutral `0x08` actually means that no buttons on the D-pad are pressed. The D-pad buttons in this case start at `0x00` for up, `0x01` for up and right, `0x02` for right, etc.

## Miscellaneous Buttons
![](https://cdn-learn.adafruit.com/assets/assets/000/132/959/medium800/hacks_Screenshot_2024-10-08_154828.png?1728416915)

This was followed by pressing the Start, Back, Right paddle and Left paddle buttons. You'll notice that these bytes are located on the fifth byte of the report, replacing `0x00` as the empty byte.

## Analog Joysticks
![](https://cdn-learn.adafruit.com/assets/assets/000/132/960/medium800/hacks_Screenshot_2024-10-08_155222.png?1728417148)

The next inputs tested were the analog joysticks. Each joystick has an x and y axis. Each axis sends values to a different byte. In this case, the left x axis is on byte 0, the left y axis is on byte 1, the right x axis is on byte 2 and the right y axis is on byte 3. In the screenshot above, the left y axis is being moved. You'll notice that when an x axis is in its default position, it returns a value of `0x80`. A y axis in default position returns a value of `0x7F`.

## Log Your Reports

For the Arduino code, you'll need to include the HID reports for each of your gamepad buttons. Similar to the tests in the screenshots above, you'll want to go through and press each button on your gamepad to confirm its byte and byte address location. You'll need to edit the **gamepad\_report.h** file:

https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/USB_Host_Turbo_Button_Gamepad/Arduino_USB_Host_Turbo_Button_Gamepad/gamepad_reports.h

Each button bitmask is included as a `#define`. Use the same variables and update the bitmasks for your controller. At the bottom of the header file, you'll see the&nbsp;`combo_report[]`. You'll want to include a list of the buttons you want to use as your combo. By default, the combo will trigger when an A button, left shoulder and right shoulder buttons are pressed together.

```cpp
uint8_t combo_report[] = { BUTTON_A, BUTTON_LEFT_PADDLE, BUTTON_RIGHT_PADDLE };
```

## More About Device Reports

If you think you'll be reading device reports often, check out the [HID Reporter project](https://learn.adafruit.com/hid-reporter).

### HID Reporter - Overview

[HID Reporter](https://learn.adafruit.com/hid-reporter)
[Overview](https://learn.adafruit.com/hid-reporter/overview)
# DIY Turbo Button Controller - HID Remapper

## Arduino IDE Setup

The [**Arduino**  **Philhower core**](https://github.com/earlephilhower/arduino-pico) provides support for RP2040 microcontroller boards. This page covers getting your Arduino IDE set up to include your board.

## Arduino IDE Download

The first thing you will need to do is to download the latest release of the Arduino IDE. The Philhower core requires **version 1.8** &nbsp;or higher.

[Arduino IDE Download](https://www.arduino.cc/en/software)
Download and install it to your computer.

Once installed, open the Arduino IDE.

## Adding the Philhower Board Manager URL

In the Arduino IDE, navigate to the **Preferences** window. You can access it through **File \> Preferences** on Windows&nbsp;or&nbsp;Linux, or **Arduino \> Preferences** on OS X.

The **Preferences** window will open.

In the **Additional Boards Manager URLs** field, you'll want to add a new URL. The list of URLs is comma separated, and&nbsp;_you will only have to add each&nbsp;URL once._ The URLs point to index files that the Board Manager uses to build the list of available & installed boards.

Copy the following URL.

`https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json`

Add the URL to the the **Additional Boards Manager URLs** field (highlighted in red below).

![](https://cdn-learn.adafruit.com/assets/assets/000/107/121/medium800/rp2040_arduino_ide_setup_Arduino_Template_preferences_window.png?1638917398)

Click **OK** to save and close **Preferences**.

## Add Board Support Package

In the Arduino IDE, click on **Tools \> Board \> Boards Manager**. If you have previously selected a board, the **Board** menu item may have a board name after it.

![](https://cdn-learn.adafruit.com/assets/assets/000/140/260/medium800/arduino_compatibles_Untitled1b.png?1759870723)

In the **Boards Manager** , search for RP2040. Scroll down to the **Raspberry Pi Pico/RP2040/RP2350 by Earle F Philhower, III** entry. Click **Install** to install it. If it was previously installed, look to make sure you have the latest version.

![](https://cdn-learn.adafruit.com/assets/assets/000/140/261/medium800/arduino_compatibles_b.png?1759870757)

Warning: 

Once installation is complete, click **Close** to close the Boards Manager.

## Choose Your Board

In the **Tools \> Boards** menu, you should now see **Raspberry Pi RP2040 Boards** (possibly followed by a version number).

![](https://cdn-learn.adafruit.com/assets/assets/000/140/259/medium800/arduino_compatibles_Untitled1a.png?1759870630)

Navigate to the **Raspberry Pi Pico RP2040/RP2350** menu. You will see the available boards listed.

Navigate to the&nbsp; **Raspberry Pi RP2040 Boards&nbsp;** menu and choose&nbsp; **Adafruit Feather RP2040 USB Host**.

![](https://cdn-learn.adafruit.com/assets/assets/000/120/447/medium800/hacks_usbHostBoard.jpg?1682364973)

Danger: 

Now you're ready to begin using Arduino with your RP2040 board!

## Troubleshooting

If you have any strange errors after updating the **Raspberry Pi Pico/RP2040 by Earle F Philhower, III** board support package (BSP) from the boards manager you may need to start with a fresh install of the BSP. Close out of the Arduino IDE and navigate to your Arduino packages folder: **C:\Users\[username]\AppData\Local\Arduino15\packages&nbsp;**and delete the **/rp2040** folder. After that, open the Arduino IDE and follow the steps above for installing the BSP. The errors should not occur.&nbsp;

# DIY Turbo Button Controller - HID Remapper

## Turbo Button Code

This project takes advantage of the fantastic [TinyUSB Arduino library](https://github.com/adafruit/Adafruit_TinyUSB_Arduino), which has both USB host and HID support. You'll need to install the necessary libraries and update the [gamepad\_report.h](https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/USB_Host_Turbo_Button_Gamepad/Arduino_USB_Host_Turbo_Button_Gamepad/gamepad_reports.h) file as described on the [previous page in this guide](https://learn.adafruit.com/diy-turbo-button-controller/read-your-gamepad-device-report) before uploading the code to your Feather RP2040 USB Host with the Arduino IDE.

## Install the Libraries

You can install the libraries for this project using the Library Manager in the Arduino IDE.

![](https://cdn-learn.adafruit.com/assets/assets/000/133/046/medium800/hacks_Arduino_Open_Library_Manager.png?1728507023)

Click the **Manage Libraries...** menu item, search for **Adafruit TinyUSB Arduino** , and select the **Adafruit TinyUSB Library** :

![](https://cdn-learn.adafruit.com/assets/assets/000/133/047/medium800/hacks_Screenshot_2024-10-09_164614.png?1728507062)

If asked about dependencies, click "Install all".

![](https://cdn-learn.adafruit.com/assets/assets/000/133/048/medium800/hacks_Screenshot_2024-10-09_164625.png?1728507098)

Then install the Pico PIO USB library. Click the **Manage Libraries...** menu item again, search for **PIO USB** , and select the **Pico PIO USB** library by sekigon-gonnoc:

![](https://cdn-learn.adafruit.com/assets/assets/000/133/049/medium800/hacks_Screenshot_2024-10-09_164845.png?1728507116)

## Code Prep

The code consists of a main **.ino** program file and two header files. The header files store configuration for USB host on the RP2040 and HID device reports for your gamepad. You'll need all three of these files to properly compile and run the project. These files are available in the .ZIP folder below or on [GitHub](https://github.com/adafruit/Adafruit_Learning_System_Guides/tree/main/USB_Host_Turbo_Button_Gamepad/Arduino_USB_Host_Turbo_Button_Gamepad).

[Arduino-USB-Host-Turbo-Button-Gamepad.zip](https://cdn-learn.adafruit.com/assets/assets/000/133/085/original/Arduino_USB_Host_Turbo_Button_Gamepad.zip?1728574133)
https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/USB_Host_Turbo_Button_Gamepad/Arduino_USB_Host_Turbo_Button_Gamepad/Arduino_USB_Host_Turbo_Button_Gamepad.ino

After downloading the files and opening them in the Arduino IDE, navigate to the **gamepad\_reports.h** header file. Update the file to match your gamepad information as described in the [Read Your Gamepad Device Reports](https://learn.adafruit.com/diy-turbo-button-controller/read-your-gamepad-device-report) page.

## Upload and Test

Before uploading, you'll need to update some settings in the Boards menu. Select the **Adafruit Feather RP2040 USB Host** as your board. Under **CPU Speed** , select **120 MHz**. Under **USB Stack** select **Adafruit TinyUSB**. Then, upload the sketch to your board. You can use the Serial Monitor in the Arduino IDE for debugging any errors.

![](https://cdn-learn.adafruit.com/assets/assets/000/133/013/medium800/hacks_Screenshot_2024-10-09_160241.png?1728504223)

You can test your gamepad by using a browser-based gamepad tester. This [gamepad tester by greggman](https://greggman.github.io/html5-gamepad-test/) is hosted on GitHub pages and uses HTML. Test out all of the buttons and joysticks that you setup in your **gamepad\_reports.h** file to make sure they are being recognized and responding as expected.

![hacks_html_gamepad_tester.gif](https://cdn-learn.adafruit.com/assets/assets/000/133/095/medium640thumb/hacks_html_gamepad_tester.jpg?1728585231)

## How the Code Works

The code takes advantage of the two cores on the RP2040. The HID device code runs on core 0 and the USB host code runs on core 1. The HID device code enumerates as a USB gamepad. This means that the Feather will show up as an HID input device when its plugged in over USB.

```cpp
//------------- Core0 -------------//
void setup() {
  if (!TinyUSBDevice.isInitialized()) {
    TinyUSBDevice.begin(0);
  }
  Serial.begin(115200);
  // Setup HID
  usb_hid.setPollInterval(2);
  usb_hid.setReportDescriptor(desc_hid_report, sizeof(desc_hid_report));
  usb_hid.begin();

  // If already enumerated, additional class driverr begin() e.g msc, hid, midi won't take effect until re-enumeration
  if (TinyUSBDevice.mounted()) {
    TinyUSBDevice.detach();
    delay(10);
    TinyUSBDevice.attach();
  }
}

//------------- Core1 -------------//
void setup1() {
  // configure pio-usb: defined in usbh_helper.h
  rp2040_configure_pio_usb();

  // run host stack on controller (rhport) 1
  // Note: For rp2040 pico-pio-usb, calling USBHost.begin() on core1 will have most of the
  // host bit-banging processing works done in core1 to free up core0 for other works
  USBHost.begin(1);
}
```

Nothing is run in the core 0 loop. The core 1 loop runs the USB host callback functions.

```cpp
void loop1() {
  USBHost.task();
  Serial.flush();
  if (combo_active) {
    turbo_button();
  }
}
```

The callback functions include mounting the device and unmounting the device. The main function that detects the incoming button presses is the `tuh_hid_report_received_cb()`. If an input is received, the incoming device report is compared to the defined bitmasks in the **gamepad\_reports.h** file. If a button matches, then that button press is sent; essentially making the Feather act as a passthrough for the attached gamepad.

```cpp
uint8_t dpad_value = report[BYTE_DPAD_BUTTONS] & DPAD_MASK;

    // Handle D-pad direction
    if ((report[BYTE_DPAD_BUTTONS] & DPAD_NEUTRAL) == 0) {
      switch (dpad_value) {
        case DPAD_UP: gp.hat = 1; Serial.println("up"); break;
        case DPAD_UP_RIGHT: gp.hat = 2; Serial.println("up/right"); break;
        case DPAD_RIGHT: gp.hat = 3; Serial.println("right"); break;
        case DPAD_DOWN_RIGHT: gp.hat = 4; Serial.println("down/right"); break;
        case DPAD_DOWN: gp.hat = 5; Serial.println("down"); break;
        case DPAD_DOWN_LEFT: gp.hat = 6; Serial.println("down/left"); break;
        case DPAD_LEFT: gp.hat = 7; Serial.println("left"); break;
        case DPAD_UP_LEFT: gp.hat = 8; Serial.println("up/left"); break;
        }
    } else {
      gp.hat = 0;
    }
...
while (!usb_hid.ready()) {
    yield();
  }
  usb_hid.sendReport(0, &gp, sizeof(gp));
```

The combo detection for a turbo button is handled with the boolean `is_combo_detected()`. This checks for a match with the `combo_report[]` that you defined in the **gamepad\_report.h** file. If a combo is detected, then `combo_active` is toggled.

```cpp
if ((is_combo_detected(combo_report, combo_size, report)) && !combo_active) {
    combo_active = true;
    Serial.println("combo!");
  } else if ((is_combo_detected(combo_report, combo_size, report)) && combo_active) {
    combo_active = false;
    Serial.println("combo released!");
  }
```

The `turbo_button()` function is run while `combo_active` is `true`. It sends the A button rapidly via the HID device. You can edit this function to send a variety of inputs depending on your needs.

```cpp
void turbo_button() {
  if (combo_active) {
    while (!usb_hid.ready()) {
        yield();
      }
    Serial.println("A");
    gp.buttons = GAMEPAD_BUTTON_A;
    usb_hid.sendReport(0, &gp, sizeof(gp));
    Serial.println("off");
    delay(2);
    gp.buttons = 0;
    usb_hid.sendReport(0, &gp, sizeof(gp));
    delay(2);
  }
}
```

# DIY Turbo Button Controller - HID Remapper

## Assembly

![](https://cdn-learn.adafruit.com/assets/assets/000/133/099/medium800/hacks_edited_P1450340.jpg?1728656056)

You can house the Feather RP2040 USB Host inside the [Snap-on Enclosure for Adafruit Feather RP2040 USB Host](https://www.adafruit.com/product/6057).

### Snap-on Enclosure for Adafruit Feather RP2040 USB Host

[Snap-on Enclosure for Adafruit Feather RP2040 USB Host](https://www.adafruit.com/product/6057)
Here is a cute and minimal enclosure for your [Adafruit Feather RP2040 with USB Type A Host](https://www.adafruit.com/product/5723)&nbsp;to keep it safe during use and transport. This case has been custom-designed and 3D printed to accommodate the USB Type C main USB connector on...

In Stock
[Buy Now](https://www.adafruit.com/product/6057)
[Related Guides to the Product](https://learn.adafruit.com/products/6057/guides)
![Angled shot of half-assembled enclosure with microcontroller.](https://cdn-shop.adafruit.com/640x480/6057-04.jpg)

Insert the Feather into the bottom of the case, lining up the mounting pegs with the mounting holes on the board.

![hacks_edited_P1450334.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/097/medium640/hacks_edited_P1450334.jpg?1728656014)

Snap-on the lid, lining up the cutouts for the boot and reset buttons. You can also use the cutout for the STEMMA QT connector as a guide.

![hacks_edited_P1450336.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/098/medium640/hacks_edited_P1450336.jpg?1728656035)

Now your Feather is safe and sound inside its enclosure and ready to act as a USB host!

# DIY Turbo Button Controller - HID Remapper

## Use

![](https://cdn-learn.adafruit.com/assets/assets/000/133/100/medium800/hacks_edited_P1450347.jpg?1728656091)

Plug in your Feather to your USB gaming device, be it a PC or gaming system. Then, plug in your gamepad to the Feather.

You may need to calibrate your controller, depending on what you're using it with. For example, Steam requires you to setup any custom controllers within Settings. You can also test it ahead of time with a [browser-based gamepad tester](https://greggman.github.io/html5-gamepad-test/).

![hacks_steamTester.gif](https://cdn-learn.adafruit.com/assets/assets/000/133/094/medium640thumb/hacks_steamTester.jpg?1728584446)

Info: And again, this guide is meant to demonstrate what is possible with USB host and should be used as an experiment or in aiding accessible gaming. This isn't a walkthrough on how to cheat in video games, especially in online or competitive play.

Once you're playing your game, you can try out your combo to turn on turbo mode! The mode is toggled with the combo, so just press the combo again to stop it.

![](https://cdn-learn.adafruit.com/assets/assets/000/133/101/medium800thumb/hacks_sonic_turbo.jpg?1728656620)

This project can be modified to be more than just a turbo button. You could change the code to send a specific button combo (up, up, down, down, left, right..), listen for multiple combos or even add an external foot pedal or other accessible controller to send certain button presses. If gaming isn't your thing, you could also experiment with changing the code to act as a different type of HID device, like a MIDI controller, and have the gamepad button combinations trigger certain MIDI events.


## Featured Products

### Adafruit Feather RP2040 with USB Type A Host

[Adafruit Feather RP2040 with USB Type A Host](https://www.adafruit.com/product/5723)
You're probably really used to microcontroller boards with USB, but what about a dev board with two? Two is more than one, so that makes it twice as good! And the&nbsp; **Adafruit Feather RP2040 with USB Host** is **&nbsp;** definitely double-the-fun of our other Feather...

In Stock
[Buy Now](https://www.adafruit.com/product/5723)
[Related Guides to the Product](https://learn.adafruit.com/products/5723/guides)
### Snap-on Enclosure for Adafruit Feather RP2040 USB Host

[Snap-on Enclosure for Adafruit Feather RP2040 USB Host](https://www.adafruit.com/product/6057)
Here is a cute and minimal enclosure for your [Adafruit Feather RP2040 with USB Type A Host](https://www.adafruit.com/product/5723)&nbsp;to keep it safe during use and transport. This case has been custom-designed and 3D printed to accommodate the USB Type C main USB connector on...

In Stock
[Buy Now](https://www.adafruit.com/product/6057)
[Related Guides to the Product](https://learn.adafruit.com/products/6057/guides)
### Pink and Purple Woven USB A to USB C Cable - 1 meter long

[Pink and Purple Woven USB A to USB C Cable - 1 meter long](https://www.adafruit.com/product/5153)
This cable is not only super-fashionable, with a woven pink and purple Blinka-like pattern, it's also made for USB C for our modernized breakout boards, Feathers, and more.&nbsp;&nbsp;[If you want something just like it but for Micro B, we...](https://www.adafruit.com/product/4111)

Out of Stock
[Buy Now](https://www.adafruit.com/product/5153)
[Related Guides to the Product](https://learn.adafruit.com/products/5153/guides)

## Related Guides

- [Adafruit Feather RP2040 with USB Type A Host](https://learn.adafruit.com/adafruit-feather-rp2040-with-usb-type-a-host.md)
- [USB MIDI Host Messenger](https://learn.adafruit.com/usb-midi-host-messenger.md)
- [USB Game Controller with SNES-like Layout](https://learn.adafruit.com/usb-game-controller-with-snes-like-layout.md)
- [Feather Guitar Hero Adapter](https://learn.adafruit.com/feather-guitar-hero-adapter.md)
- [Not A Typewriter](https://learn.adafruit.com/not-a-typewriter.md)
- [Using a Mouse with USB Host](https://learn.adafruit.com/using-a-mouse-with-usb-host.md)
- [Case for Feather RP2040 USB Host](https://learn.adafruit.com/case-for-feather-rp2040-usb-host.md)
- [CircuitPython USB VID/PID Reporter](https://learn.adafruit.com/circuitpython-usb-vid-pid-reporter.md)
- [RP2040 RunCPM Emulator with USB Keyboard & HDMI screen](https://learn.adafruit.com/rp2040-runcpm-emulator-with-usb-keyboard-hdmi-screen.md)
- [Using a Keyboard with USB Host](https://learn.adafruit.com/using-a-keyboard-with-usb-host.md)
- [CircuitPython Text Editor On The Go](https://learn.adafruit.com/circuitpython-text-editor-on-the-go.md)
- [Touch Deck: DIY Customizable TFT Control Pad](https://learn.adafruit.com/touch-deck-diy-tft-customized-control-pad.md)
- [Contribute to Adafruit's Arduino Libraries with Git and GitHub](https://learn.adafruit.com/contribute-to-arduino-with-git-and-github.md)
- [Appler - The Apple II Emulator for MS-DOS](https://learn.adafruit.com/appler-apple-ii-emulator-for-dos.md)
- [WiFi Yun Soundboard](https://learn.adafruit.com/wifi-yun-soundboard.md)
