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

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

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

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

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

Небольшой проблемой может стать то, что на некоторых компьютерах при потери питания, 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:

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

Оригинал статьи

Добавить комментарий

Ваш адрес email не будет опубликован.