Go Down

Topic: Wake up a PC from an Uno (Read 110 times) previous topic - next topic


Aug 07, 2018, 09:51 pm Last Edit: Aug 07, 2018, 10:03 pm by element222
I want to wake up a PC via a USB-connected Arduino. When using a Pro Micro (Leonardo) I can do it, as its HID interface can wake up a PC. That is, in the Device Manager, under "Keyboards", the relevant HID device under "Power Management" has an "Allow this device to wake-up the PC" checkbox.

However, I need to use an Uno for this project. There's a hack (see link below) which flashes the ATMega16U2 on an Uno to act as a HID keyboard. It works fine, but this HID keyboard on a flashed Uno does NOT have the "Allow this device to wake up the PC" checkmark, i.e. I can't wake up my PC. I tried, the PC doesn't wake up. I know I can use an Ethernet shield on an Arduino to send a Wake up on LAN packet, but I don't want to add any shields, if I don't have to. Any advice how to do this?

Relevant links:
Arduino Uno as a USB HID Interface
Wake a touchcreen using a Pro Micro


Unfortunately the linked site provides only the binary HID firmware for the ATmega16U2 of the UNO. With source code we might find out the reason why your Windows PC doesn't recognize the UNO as a standard keyboard. It seems the site where the firmware origins from isn't online anymore. With source code it might be a small change of a few bytes but I cannot find it.


Aug 09, 2018, 12:19 am Last Edit: Aug 09, 2018, 12:22 am by element222
Thanks for looking into this. I was pointed to 2 libraries, NicoHood and LUFA (links below)  to code a HID keyboard for the ATMega16U2 on an Arduino Uno. The problem is that acquainting myself with the subject and (either) library, would take several days, which is why I'd prefer to find an already-compiled simple HID device that does what I want. If I can't find one, I have a "dumb" solution: since the Leonardo can wake up a PC, I can hook it up to the PC, power the Uno (with my code) off the Leonardo, link one digital pin between the Uno and the Leonardo, so that the Uno can trigger a USB keystroke on the Leonardo. This is kludgy, since it uses the Leonardo just to send one USB keystroke to wake up the PC, but it would work.

LUFA's USB_Device_SendRemoteWakeup (near the bottom)
NicoHood Keyboard API


Aug 10, 2018, 08:34 pm Last Edit: Aug 10, 2018, 08:35 pm by element222
Got it working: my Uno can now wake up a PC. I followed the HoodLoader wiki and I used the HID-Bridge sketches (below). It took about 2-3 hrs.

Go Up