Introduction: Make Arduino Uno Work Like Leonardo

Picture of Make Arduino Uno Work Like Leonardo

First of all i want to make this clear it is not like any other turn your uno into a HID only device with one time sketch uploard, you can upload sketches side by side with hid

THAT'S RIGHT! you read what you read no downsides to anything upload sketches like you do on an leonardo without reflashing 16u2 firmware HOW's that for a shock?

SOOOOOOOOOOOOOOOOOO without further talk lets get HIDDING (pun intended).

It also works on arduino mega

Update : Vote for me if you like it. it is in the tech contest and the mcu contest vote for whichever you think it is applicable for or both :D

Step 1: The Tech Talk: Skip If You Dont Care

Picture of The Tech Talk: Skip If You Dont Care

hello welcome to the tech talk, here i explain everything techy.

SO lets go

The arduino uno the worlds best proto dev board with an ever expanding community but every piece of gold is rough somewhere. That is it dose not have usb HID(human interface device) capability thats where your project dies with a revival potion called the arduino leonardo the leonardo based on a usb capable chip can be used as a usb device a mouse, keyboard whatever but most of us are lazy enough not to buy an arduino leo and search for other ways one of them is to make a arduino leo but that ain't possible for some of us as the chip the leo is based on, is SMD only so no DIP(through hole)package but the uno also uses the chip's little brother the atmega16u2 for programming and that's what we will play with using the DFU mode

So continue to the next step for the knowledge that everyone needs ->

Step 2: The Main Knowledge

This is the general info of what we are going to do

We are going to change the firmware on the usb to serial converter of the uno to work also as a HID simulator

You can still flash chips like normal and also make a usb mouse, keyboard etc.

This your home grown arduino leonardo - no downsides

Continue further to download the stuff you need

Step 3: What You Need

Picture of What You Need

ill keep this short

you need to download the file included it contains the HID library and the hoodloader bootloader

Step 4: The Main Step

Picture of The Main Step

Now you start by installing FLIP while your arduino is plugged in

next go into FLIP and select device as atmega16u2

now look closely if you have an arduino uno r3 then do as shown in the picture with the jumper for a second or two with your arduino plugged in for other arduino versions look on google for arduino (version) dfu

Tip : go to device manager and look in com ports before shorting the two pins your arduino should be listed after shorting the pins for a second the arduino should be detected but not listed

now in flip click on the usb cable and and select the option 'usb' (CTRL+U)

it should detect your device and now click on file and load hex file -> locate to the hoodloader folder and select hoodloaderX_X.hex now click on 'run' (not 'start application' it looks promising but is not the option) it should burn the flash on the chip to check unplug the arduino and replug it in device manager you should see hoodloader beta or something similar update the driver for that- select browse my computer for device software and browse to the hoodloader folder it should prompt a security warning(or not)just accept and install

Now go to the final step

Step 5: FINAL Step

Picture of FINAL Step

now install the HID library you downloaded

to do that you copy the folder HID-master remove the hyphen by renaming it and place it in the arduino/libraries folder now open the arduino ide go to sketchbook > libraries > HID and upload any example its same as the original usb library for the leonardo so you can copy paste some things

here's an example download the .ino file

connect an analog joystick x axis (horizontal) to A1

connect analog joystick y axis(vertixcal) to A2

upload and replug your arduino you should have a hid mouse in device manager

AND for other tech related stuff check out my blog at :


banjing (author)2017-12-07

Hi, did you try to make a virtual mouse using this? Thanks.

atharva12 (author)banjing2017-12-08

yes, and it worked

banjing (author)atharva122017-12-08

hi can you share your step by step process? Im using micro. Does it have click option?

DrunkProgrammer (author)2016-03-04

What is this? How can I solve this error? Why does this error pops-up when I am trying to load the .hex file?

I got same error too, any solution did u find?


Best solution, buy leo/nano. :D

as-WIN-th (author)Eren Kemalİ2017-08-10

No nano wont work...

322997am (author)2017-04-07

it says "Keyboard.h" not included when it is

matt_a_maker (author)2016-12-25

I kept getting this error:

AdvancedGamepad:15: error: 'HID_GamepadReport_Data_t' does not name a type

HID_GamepadReport_Data_t Gamepadreport;


C:\Users\Matthew\Documents\Arduino\libraries\HIDmaster\examples\AdvancedGamepad\AdvancedGamepad.ino: In function 'void setup()':

AdvancedGamepad:23: error: 'SERIAL_HID_BAUD' was not declared in this scope



AdvancedGamepad:28: error: 'Gamepadreport' was not declared in this scope

memset(&Gamepadreport, 0, sizeof(Gamepadreport));


AdvancedGamepad:29: error: 'HID_REPORTID_Gamepad1Report' was not declared in this scope

HID_SendReport(HID_REPORTID_Gamepad1Report, &Gamepadreport, sizeof(Gamepadreport));


AdvancedGamepad:29: error: 'HID_SendReport' was not declared in this scope

HID_SendReport(HID_REPORTID_Gamepad1Report, &Gamepadreport, sizeof(Gamepadreport));


C:\Users\Matthew\Documents\Arduino\libraries\HIDmaster\examples\AdvancedGamepad\AdvancedGamepad.ino: In function 'void loop()':

AdvancedGamepad:41: error: 'Gamepadreport' was not declared in this scope

Gamepadreport.whole32[0] = count++;


AdvancedGamepad:48: error: 'HID_REPORTID_Gamepad1Report' was not declared in this scope

HID_SendReport(HID_REPORTID_Gamepad1Report, &Gamepadreport, sizeof(Gamepadreport));


AdvancedGamepad:48: error: 'HID_SendReport' was not declared in this scope

HID_SendReport(HID_REPORTID_Gamepad1Report, &Gamepadreport, sizeof(Gamepadreport));


exit status 1
'HID_GamepadReport_Data_t' does not name a type

any ideas?

kalariusq (author)2016-04-07

when I try to compile an example it says that look for the platform.h

Where is that?

jeeep (author)kalariusq2016-11-16

See the last post on this thread:

SajadS1 (author)2016-02-15

hi tanks for project .

when I follow your instruction I got this error in the image.

TomH216 (author)SajadS12016-11-14

Hey, you have to disable Windows' check for digital signatures. This can be done on windows 8/10 by holding shift while clicking restart and then going to option 7 under startup options

DoyinA1 (author)2016-08-27

I did everything and it doesn't work

Oldrunk (author)2015-12-16

Thanks for the guide, one question if any one knows if Hoodloader allows reading of a serial COM port and output as a HID keyboard, the Leonardo can do it but can a Uno with Hoodloader do it?

atharva12 (author)Oldrunk2015-12-16

I don't know about the COM port readout but yes this HID keyboard is possible by modifying the leo code itself to support the hoodloader software

tinypriest (author)2015-10-11

Nice, useful project. But spending 5 minutes to format the text a little with periods to end sentences and capitals to start them would have added to the enjoyment of us reading it. Cheers.

Agatosh (author)2015-07-27

Ok nice intructable; This may help other folks:
I've concluded the instructable. And everything seems fine. I want to control my PC Mouse with UNO. After Hoodloader2, what board do I choose? Hoodloader2 16u2? Arduino UNO HID-bridge?

Other aspect: how can i revert so that everthing goes back to normal?

atharva12 (author)Agatosh2015-09-20

1 ) you can control the pc mouse with the mouse example code in the leonardo library you will just need to add the setup of the hoodloader into the leo code.

2) The board can be any board with a rs232 chip that is reprogrammable.

3) the 16/32 u2 are the chips themselves the 16 is the uno r3 chip while the 8u2 is the uno r2 chip.

4) The bridge (chip) between the atmega 328 and usb - that is the 16/8 u2

5) google arduino uno 16 u2 firmware and flash that file on the 16u2 chip but you probabl won't need to

R J POTTER (author)2015-07-26

By doing this will it affect the intended purpose of uno board for what it is made...???

atharva12 (author)R J POTTER2015-09-20

no the uno will just be enabled as a hid device you can still use it as an uno board

atharva12 (author)2015-09-20

It won't work because the pro mini lacks a usb to rs232 chip which is the chip you have to reprogram in the guide

Niggle Plz (author)2015-09-19

Will this work with the pro mini?

atharva12 (author)2015-08-28

thanks for the comment, sorry I am just getting started so I don't know how to make good guides. But I try to keep them a bit less technical

LucasL10 (author)atharva122015-09-05

No worries man, just see this as an constructive critic. Try to be more organized on the steps and main ideas next time, this could save some time on people that don't have english as their first language, for example (:

LucasL10 (author)2015-08-28

The guide its a little bit bad written, but works like a charm.

ibenkos (author)2014-10-18

Smart idea! Thanks for shearig :)

Jfieldcap (author)2014-10-11

Wow. Ive always wanted to make something with the arduino Leonardo or micro, (uses the same chip as the leo), but but didn't want to spend the extra 20$. I'll have to give this a try!

Zach Sousa (author)2014-10-10

Cool! I have some projects that I would like to make that require shields that aren't compatible with the leonardo. I have to try this.

seamster (author)2014-10-09

Nicely done. Thanks for sharing this!

About This Instructable




Bio: Just another hacker
More by atharva12:Make arduino uno work like leonardoBluetooth home automation with arduino:VOICECheap orbit phone stand
Add instructable to: