Introduction: Bluetooth SNES Controller for Android

So this is my first instructable...

A little over a year ago I was working on my ECE senior design project, which was a bluetooth SNES controller for Android.  Shortly after completing the project, I posted a working video on Youtube.  Since then I have received quite a few requests for more info or even a tutorial on how to make one.  I figured I had put it off long enough, and now I finally got a video together.

I apologize in advance for the sub-par production value (I'm no Ben Heck), it was literally my first exposure to iMovie, and I'm sure it shows.  It also is a bit on the long side at about 35 minutes, but I wanted it to be detailed enough that just about anybody would be able to build a controller.  Also, if the whiteboard discussion wasn't clear for you, don't can just use my arduino source code, I just thought it would be useful for those who are interested.

Here is the source code for the Arduino, along with my Easymote app from the tutorial (you won't find it on the market)
Arduino source:
Easymote apk:

Here is a video showing my battery operated controller along with playing some Donkey Kong and Zelda on my Touchpad, unfortunately my rechargeable controller was built for a contract and I no longer have it:

If you are looking to internalize the components I have done so with both AAA batteries and also with a rechargeable lith-ion battery from a nintendo DS.  For the lith-ion battery you will also need a charging circuit (look at, and for the 4xAAA battery method I also had to use a voltage regulator.  The lith-ion was 850mAh and lasted about 12 hours, the 4xAAA batteries make it over 30 hours.

Other parts:

Bluetooth module: MDFLY module -
OR BlueSMiRF module -

Microcontroller: if you have the UNO Dev board -
OR the mini pro -

SNES Controller: Either buy an original on Ebay or a knockoff for ~5 bucks online

Also some benefits to making this controller:
1) No need to root your phone/tablet to use the controller
2) Fairly portable in comparison to the wiimote with controller attachment 
3) Look like a BA while playing super mario



Artixvon01 (author)2015-08-09

i'm new in electronics but this project interest me. I already have an arduino and the bluetoith module and other parts. but my problem is I don't understand where pin to connect the bluetooth module.

JohnyAllen (author)2014-05-08

Sme11sLikeSatan (author)2014-01-11

For some reason easymote app is keeps giving me a stopped responding message. I assume this is because I am running 4.2 jelleybean as opposed to ice cream sandwich. Is there a fix or another program I can use to get my controller up and running as an input method. Thanks!

I am on an S4 BTW

mmrakozy (author)2012-04-22

Does it only work with android?

foxwater (author)mmrakozy2012-04-22

Well the instructable works for android only, but I did also make a Windows app that showed it could work on a PC too.

firehawk23 (author)foxwater2013-05-07

I'd be interested in the windows app as well. I have the bluetooth controller built and would love to be able to use this on PC as well as my Android device.

foxwater (author)firehawk232013-05-07

Unfortunately I wasn't ever able to track down my visual studio project for the windows app, I remember it wasn't too difficult though. I just used the built in .NET bluetooth libraries to communicate with the controller, and had the controller button presses trigger keyboard events (much like we do for the android app), then in the emulator just make sure the keyboard keys correspond to the correct actions. I might have had to fiddle around with the meetandroid library for the arduino end too I can't really remember. Also, make sure the BAUD rate matches the 57.6k. If that is a path you decide to go down I could do my best to answer any questions you might have along the way.

purpulhaze (author)foxwater2012-12-30

Do you have info posted for the windows app?

foxwater (author)purpulhaze2012-12-31

Unfortunately I don't, but I might still have the Visual Studio project somewhere, if I find it I'll try and post it.

mmrakozy (author)foxwater2012-05-13


stevenbrimer87 (author)2013-04-22

i got mine to fit inside, i had to dremmel some of the plastic out

stevenbrimer87 (author)2013-04-22

btw, you can't get rid of the constant stream of blank messages, this lets the android device know that the bt connection is still good. I tried and easymote kept crashing,

Spondee (author)2013-04-12

Yea I'm having a few issues with the easymote app and could probably use a look at the source myself. It's outputting to the amarino monitor just as in your video and it seems to connect with the easymote app but when I try to change the mapping it doesn't react to button presses. I've used an AT&T Note 2 (4.1.2) and a Transformer TF700 (4.2.1). I've also struggled with it crashing sometimes.

Subtle (author)2013-03-11

Would you mind releasing your EasyMode app source? I'm doing a similar project but with a Gamecube controller and I'd love to see your take on the app. :)

foxwater (author)Subtle2013-03-20

Hey, its been awhile since I've pulled up that project, let me see if I can track down that code...if I can I'll post a link to the project here.

sbeckstrand (author)2013-03-08

I'm using a Nano arduino for this. Are the pins the same for the clock, latch and data?

foxwater (author)sbeckstrand2013-03-09

Yeah they should be as long as your using my arduino file

KarasuZero (author)2013-01-05

Hi, I've followed this and got the controller up and running on my phone but I have a problem with Easymote on my tablet (Asus transfomer tf300). Easymote crashes after selecting it in the "Change Input Method", any idea on how to fix it? Thanks

foxwater (author)KarasuZero2013-01-07

It's tough to say really, I haven't tested it with anything other than a few phones and my hacked touchpad tablet. So far I haven't had any problems with any stock version of Android, but it could be having an issue the the Asus specific flavor of Android. I'll try to look into it a bit when I get a chance.

foxwater (author)2012-12-31

Sorry for the delayed response, but you'll need a microcontroller (like and Arduino) between the BT board and the SD card reader.

firehawk23 (author)foxwater2013-01-06

I decided to go with the Arduino Mini instead, more discreet. I'm guessing the Arduino can handle charging as well? Is the programing going to remain the same? The chip type doesn't change just gets smaller. Let me know if I'm off base of any of this.

foxwater (author)firehawk232013-01-07

It's true that the chip type is the same (should just be the super small factor ATMEGA328), what do you mean by handle charging though?

purpulhaze (author)2012-12-30

Nice Work! Going to use this info to help make one for my htpc as I'm using xbox 360 controllers with my Nintendo emulators but it just doesn't feel right.

foxwater (author)purpulhaze2012-12-31

Thanks! good luck with your project

firehawk23 (author)2012-12-04

I had a crazy mad scientist thought: Would it be possible to add a microsd card slot in the gamepad? This way where ever you go you have all your data with you.. I'm not finding anything on it, so I don't think anyone's done it before. Also, I plan on using a li-ion batt pack. What do I need to charge it and would it be possible to make it a data port as well? I know I'm dreaming of the moon here, but I always dream big.

foxwater (author)firehawk232012-12-04

Well let me start by saying that I think that is an awesome idea, especially if you just loaded the card with emulator games. To answer your question though....yes, it would probably an extent. I don't think (not positive) it would be possible to play the game files directly from the sd card over the bluetooth connection. But, what you could do is read the files on the sd card from your phone, and select one that you would like to play/use, copy it over to your phone's internal memory, play/use it, and delete it from the phones memory when your done.

This might be quite the undertaking though, and I would have to look into it further to really know exactly what it would take.

As for the charging part:
That should do the trick, just make sure the battery you use matches the specs of the charger. Unfortunately, you can't use it as a data port though.

Gomex19 (author)2012-03-21

When i saw that this was recently posted i got excited becuase that usually means that your a little more willing to help. ive been looking for a bluetooth controller for my LG Thrill 4G and finally decided to make one. ive always been into tinkering and almost bought a cheep bluetooth controller and took it apart to put inside a old controller but then saw this video and just finished watching the whole thing. although ive never used an arduino i have used processing which it uses the same programing style so i can understand the code. i saw that on the Youtube video you posted the code which helps a lot and also the easymote app which is an awesome design btw, dont worry about the look.

so to get to my point. i want to copy every move you made except i want it inside the controller. i understand it will be a little more work but ill give it a shot. also if you could help us all one more time with a nice "Shopping list" of the hardware and software needed for the project that would be awesome. Thanks a lot man!

foxwater (author)Gomex192012-03-21

Hey man, I'll try to get some parts posted on here, and if I can figure out how to embed some photos on this thing I'll get some pics up from the inside of the controller. Thanks for watching

Gomex19 (author)foxwater2012-03-22

no, thankyou =D

About This Instructable




More by foxwater:How To: Personal Minecraft Server in Custom Block CaseBluetooth SNES Controller for Android
Add instructable to: