User Tools

Site Tools


Rock Band Wii/PS3 Guitar/Keyboard Controllers on Rock Band 4 for PS4 (Emulated RB1 Guitar) with Arduino Uno

If you're looking for DIY for PlayStation, then you've come to the right place!

If you're looking for DIY for Xbox, this link isn't mine:

If not into DIY or using Xbox One/Series then check out Roll Limitless Adapter and; their work is a lot more stable and versatile. No affiliation with me.


This Arduino based adapter allows using the following controllers (or any others you can create the code for) as if they were a RB1 guitar on Rock Band 4 for PS4, the PS3 games, not tested with PS5:

  • Wii RB1 Guitar
  • Wii/PS3 RB3 Keyboard (as guitar)
  • PS3 RB3 Mustang (as standard guitar, if you hate your fingers)

This project is fairly out of date as the equipment was obtained in 2011, the firmware here was made for Uno Rev 1 (Atmega8U2) although it seems to work okay on Uno Rev 3 (ATmega16U2).

Disclaimer: I'm not a very good player, so I cannot comment on what it's like for difficult tracks.

Older videos: Example Oct 2020, Example 2015

Required Stuff

  • Ardunio Uno - I've tested with official Rev 1 and clone Rev 3
  • USB Host Shield
    • The Sparkfun shields I possess (which are the retired revision) have some odd power related quirks.
  • Powered USB Hub - When used with PS4
  • Arduino Power Adapter - When used with the Sparkfun USB Host Shield, other ones may not need it.
  • Arduino Software (IDE) 1.8.13 with USB Host Shield 2.0 Library
  • DFU Programmer, such as FLIP for Windows, or the pre-compiled dfu-programmer for Windows.

Warning: Power Issues and Stability

I've found having a USB Hub between the PS4 and the Arduino helps with stability, for some reason without the hub the button presses will stop transmitting but the PS4 will still say the guitar is connect. The USB hub might require power if you have other devices connected.

The Sparkfun USB Host Shield I used requires the Arduino has a 7-12V (500-1500mA) power supply. Can sometimes get away without it for the Wii keyboard adapter but Wii guitar and PS3 keyboard seem to need it. If your adapter isn't lighting up or connecting to the controller this is probably the problem.

The Freetronics USBDroid (combined Uno and USB Host Shield) seems to work fine with MPA and Wii Guitar, but not PS3 Keyboard or PS3 Mustang (dongle light does not stay on).

Simplified Instructions

  • Upload the “USB-RBKeyboard” sketch to Arduino.
  • Put the Arduino in DFU mode, flash the Arduino-guitar-8U2.hex firmware.
  • Console < USB Hub < Arduino (+power) < USB Host Shield < Wii/PS3 Adapter
  • A guitar controller should appear.
  • Press the Reset button on the Arduino/USB Host Shield if the adapter's light isn't lit solid. If it doesn't work at all, probably having power issues.
  • Note for any Keyboard: the white keys will trigger strums so don't use for menu navigation (except for the far right lone Orange key).
  • Note for PS3 Keyboard: if the keys aren't working but the console buttons are, try resetting the USB Host Shield again.


Firmware from November 4th 2015. Sketch from February 5th 2017 updated for more recent Arduino IDE and USB Host Shield 2.0 library, modified from “USBHIDJoystick” example in the USB Host Shield library.




All the hard work was done unknowingly by Dean Camera for LUFA, Darran Hunt (archive) for the base Joystick firmware project, the various developers for the USB Host Shield 2.0 library, and all the corners of the Internet that had notes about how Rock Band controllers work.

Working: Rock Band 1 Wii Guitar (R1 sketch)

The Arduino will act as a passthrough, the USB HID data for Wii and PS3 is pretty much the same.

Working: Rock Band 3 Wii and PS3 Keyboards (R1 sketch)

If the Arduino thinks the USB controller attached is a keyboard (it only looks at the raw HID data, not the device PID), it will rearrange the raw data to emulate playing a Rock Band 1 Guitar. Use the console buttons (and the lone orange key) for menu navigation, and use the coloured keys for when you're playing the game - keys down will trigger a strum, lifting a key from a chord will not. Unlike Rock Band 3 with a native keyboard, the effects switch is mapped to the black keys.

I've known for quite a while now how to activate the keys for PS3 keyboards but it's taken a while to figure out how to do that on an Arduino, it's quite simple really (although requires resetting until it works properly). Could be done better, but I'm still an Arduino beginner. This extra message is currently sent no matter what device is connected, does not appear to be causing any conflict with the previously supported controllers.

Working but not recommended: Rock Band 3 PS3 Mustang Guitar (R1 sketch)

While the Mustang was barely usable for RB3 legacy guitar, I figured why not end 2020 with more disappointment and prove myself right that it would also be terrible for RB4 and earlier games. I don't have a RB2+ guitar, therefore I wasn't able to work out how to use it just for auto calibration.

  • The strings are really sensitive, so the D-Pad can be used for strum.
  • The tilt for overdrive is also really sensitive, select is usable to activate.
  • Both can be enabled in code or by checking the PS button/D-Pad combos.

MIDI Pro Adapter (Keys) - PS3, maybe Wii (R2 sketch)

Seems to have less power issues than the when using the keyboard controller's wireless USB adapter.

The Mustang through the MPA (Guitar) is not yet working.

Example: Xbox 360 Wired Gamepad

Would not recommend trying to play the game using a Xbox 360 gamepad, at least not with the button mapping I thought of. The sketch in the above Downloads section may be simpler that the keyboard sketch for adapting a different kind of controller to work as a guitar.

Auto-strum is included and enabled by default, therefore to navigate menus you need to hold down the Xbox button before pressing any colour button.

Had major issues with the 360 gamepad being detected (player 1 LED should stay lit), suspect related to the PS4/Sparkfun shield power issues and the gamepad having rumble motors.

Unsupported Controllers

Xbox 360 guitar controllers on PS3/PS4 are probably possible, look through the USB Host Shield library examples, the library may need to be modified to detect the controllers. For any device really if you can get the data into the Arduino (e.g. Software Serial, MIDI Shield, Bluetooth) you can make a sketch send the emulated guitar data to the firmware and it should work just fine.

Don't send data too fast or you'll cause the buffer to overflow and start sending garbage button presses, you only need to send data when there's change.

Additional Resources

If you want to modify the USB HID Firmware for the Arduino you will need a few extra things to compile it.

My Life Story

I used to play on Wii, had all the main games and quite a bit of DLC. RBN ports were eventually discontinued for Wii. I bought a PS3, all the main games and my DLC again. I didn't want to get rid of my Wii stuff (thinking it's not worth anything) and I didn't really want to get more stuff that was going to take up space in my house, so I looked into a conversion.

A MIDI PRO-Adapter was good enough for the keyboard. The overdrive button on the keyboard didn't activate overdrive when used this way. I had 2 Wii guitars I couldn't use but I liked them so much more than the cheap GH3 PS3 controller I picked up.

The first conversion attempts years ago involved serial/MIDI data from a computer to an Arduino, lag was barely an issue, the cables and a laptop near the console were. Eventually moved to using a USB Host Shield, but I suffered a hard drive failure and lost a bunch of stuff.

I bought a PS4 just for Rock Band 4, the RB3 PS3 Keyboard isn't even supported, and thus my fascination with this problem was reignited!

However, as Australians are included in the Sony Europe region, there was a long wait for RB2/Lego/Green Day exports, therefore I've barely been playing RB4 and working on this project.

If you want to ask me anything you can on Reddit.

rb4arduino.txt · Last modified: 2023/03/13 02:04 by jas2o

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki