Надішліть запит Wake on Lan (WoL) вручну через кабель Ethernet за допомогою Arduino або Raspberry Pi


1

Я намагаюся скласти схему, яка "перехоплює" кабель Ethernet до того, як він потрапить на комп'ютер, що дозволяє мені вручну надіслати " Чарівний пакет " через кабель - натисканням кнопки, наприклад.

Наскільки я міг зібратися, щоб зробити Wake on Lan, ви повинні надіслати 6 байт 255(FF FF FF FF FF FF FF у шістнадцятковій формі) з подальшим шістнадцятьма повтореннями MAC адреси цільового комп’ютера - всього 102 байти. (джерело: Вікіпедія ) . Мені просто важко зрозуміти, як відправити цей чарівний пакет вручну, а не через маршрутизатор (якщо це навіть можливо).

Ескіз, наведений нижче, ілюструє те, що я намагаюся зробити.

Груба ескіз

Кабель Ethernet має 8 проводів, цікавих для цього, мабуть, немає. 1, 2, 3 і 6 - TX +, RX-, RX + і RX- ( ілюстрація ) .

Я намагаюся визначити, як працює цей конкретний серійний протокол, і як його використовувати на практиці на дошці розробок, як Arduino. Цей веб-сайт говорить, що це може бути "RS423" або "RS422".

Отже, моє запитання; чи можна робити те, що я намагаюся зробити? І якщо так, то як мені правильно посилати Magic Packet?

Відповіді:


1

Як ви писали, магічний пакет (фрейм) WoL містить послідовність у будь-якому місці свого потоку даних.

Зазвичай пакет WoL надсилається за допомогою протоколу більш високого рівня, оскільки це зробити простіше. Просто надішліть пакет UDP (можливий будь-який порт, звичайний 0, 7 або 9), що містить послідовність для трансляції адреси 255.255.255.255.

Удачі в кодуванні потоку Ethernet - це не так просто, як RS422 / 423.

Перед кодуванням рядків вам потрібно побудувати кадр Ethernet, який передує послідовності преамбули / SOF, потім заголовок кадру (використовуйте Ethertype 0x0842) з подальшим магічним малюнком. Залежно від механізму WoL, вам, ймовірно, доведеться наклеїти кадр на мінімальний розмір (64 вт / о преамбула / SOF) та обчислити правильну послідовність перевірки кадру (FCS).

Потім кадр повинен бути закодований рядком. 10BASE-T використовує простий код Манчестера (01 = "1" і 10 = "0"). 100BASE-TX використовує 4b / 5b код рядка. 1000BASE-T використовує набагато складніший код рядка, який, ймовірно, виходить за межі вашого проекту. Швидше за все, посилання на WoL - 10BASE-T, тому це можливо. Якщо ви не можете перейняти наявне посилання WoL, вам також знадобиться генерувати регулярні імпульси посилання, щоб далека сторона «зв’язалася».

Загалом, буде набагато простіше розбудити обладнання за допомогою іншого методу, якщо вам не потрібно робити це через мережевий кабель.

Якщо ви використовуєте вузол Ethernet для створення пакету WoL, його можна просто підключити будь-де в мережі, на будь-якому порту комутатора. Просто трансляція пакета відправить його на всі пов'язані вузли, включаючи обраний MAC.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.