Пробуждение ПК по сети на Arduino

Подавляющее большинство современных сетевых плат имеют функцию Wake On Lan, которая позволяет реализовать пробуждение персонального компьютера через сеть.

Технические требования:

Если используется сетевая плата не встроенная в материнку, то необходимо будет подключить ее через специальный разъем WOL, к материнской плате.

Сетевая карта

Функция WOL включается в BOIS’е компьютера:

Функция WOL

Небольшой проблемой может стать то, что на некоторых компьютерах при потери питания, WOL отключается. Однако на современных материнских платах, данная проблема может быть решена установкой параметра «пробуждаться после пропадания питания» в значение On в BOIS’е:.

Пробуждаться после пропадания питания

Магический Пакет (Magic Packet)

Для того, чтобы пробудить компьютер через LAN, необходимо по сети послать определенную последовательность байтов, т.н. Magic packet. Пакет представляет собой 6 байт со значением FF: (FF:FF:FF:FF:FF:FF), а затем идет MAC-адрес сетевой карты ПК, повторяющийся 16 раз подряд.

Обратите внимание, что если используется маршрутизатор, то на нем необходимо настроить переброс широковещательных пакетов (обычно 9 или 7 порт) на ваш компьютер.

Arduino

Для посылки магического пакета используется метод sendWol(). В качестве параметра указывается MAC-адрес компьютера, который необходимо «пробудить»:
static byte targetmac[] = {0x00,0x1A,0x4B,0x38,0x0F,0x5C};

ether.sendWol (targetmac);

Полный пример работы с WOL можно найти в репозитарии GiHub.

Используя ПО анализатор сети (к примеру Wireshark) вы можете мониторить корректность отсылки пакетов от Arduino:

Wireshark

Здесь красным выделен широковещательный MAC-адрес, зеленым — IP и UDP протокол, голубым — MAC-адрес ПК, повторяющийся 16 раз.