Electronic – Is it possible to get a Raspberry Pi zero to wake a computer over a USB connection

raspberry piusb

I would like to wake up my desktop computer (Mac or PC) from sleeping using a Raspberry Pi Zero.

Is it possible to get the Zero to wake a computer over a USB connection? I can wake my Mac up using the mouse or keyboard so it seems possible that if I could configure it to send the same signals then I could.

I have read that one can turn the Pi into a 'USB gadget' – this may be the right approach or unnecessary.

Best Answer

Bit of background first:

Generally, USB itself is not a bus over which a device can be really woken up if it stopped working completely, because it's a host-polling based bus, i.e. the host PC must inquire the keyboard in regular intervals. If that host is completely shut down, nothing one can do.

However, being a host for a USB keyboard is relatively easy, and since host firmwares need to emulate PS/2 (or Apple desktop bus keyboards) for compatibility reasons, anyway, that was a feature easy to implement: simply let the firmware take over the USB bus, and ask all the attached Human Interface Devices (HIDs) whether they got input every couple milliseconds.

So, all you'd need to do is implement a HID gadget profile on your Pi.

Yes, that works, and it's about the easiest profile to implement.

Whether that is a sensible approach is a different question alltogether: The Raspberry Pi, when it comes to ARM SoC computers, is a relatively power-hungry device, so that it is actually worth the question whether running a Pi 24/7 to wake up a computer is worth it – if that computer is attached to a router via ethernet, for example, that could use magic Wake on LAN packets instead.