Каталог

MAC-адреса устройств

Omega2, будучи IoT-компьютером, является устройством подключения. Здесь будут обсуждены MAC-адреса Omega2: как они распределены, как их читать и как программно сгенерировать уникальный идентификатор на их основе.

MAC-адрес (Media Access Control) - это уникальный 6-байтовый идентификатор, назначаемый контроллерам сетевого интерфейса. Устройства с несколькими сетевыми интерфейсами должны иметь уникальный MAC-адрес для каждого интерфейса.

Распределение MAC-адресов

Каждому устройству Omega2 в процессе производства выделяется три последовательных MAC-адреса, по одному для каждого из доступных сетевых интерфейсов:

  • ra0 - интерфейс WiFi Access Point - совпадает с MAC-адресом на наклейке на устройстве.
  • eth0 - Ethernet-порт
  • apcli0 - интерфейс WiFi-клиента

MAC-адрес ra0 совпадает с MAC-адресом, который напечатан на наклейке. Два других MAC-адреса являются последовательными:

  • MAC-адрес eth0 - это MAC-адрес ra0 + 0x01
  • MAC-адрес apcli0 - это MAC-адрес ra0 + 0x02

Считывание MAC-адреса

Команда iwpriv может использоваться для доступа к параметрам беспроводного драйвера, среди которых есть MAC-адреса.

Подключитесь к командной строке Omega и выполните следующую команду:

iwpriv ra0 e2p

Он выведет следующие данные:

Mac адреса Omega

Мы заинтересованы в:

  • 6 байтах, начиная с 0x0004 - MAC-адрес ra0
  • 6 байтах, начиная с 0x0028 - MAC-адрес eth0
  • 6 байтах, начиная с 0x002e - MAC-адрес apcli0

Посмотрите, как эти адреса сопоставляются с сетевыми интерфейсами, выполнив команду ifconfig:

Интерфейсы mac адресов

Программное создание уникального идентификатора на основе MAC-адреса устройства

При работе с IoT-устройствами всегда полезно иметь идентификаторы, уникальные для каждого устройства. Они могут быть созданы с использованием одного и того же кода. Что может быть лучше для этого, чем собственный MAC-адрес устройства.

Чтобы проиллюстрировать этот процесс, рассмотрим shell-скрипт с именем macId.sh, который создает и выводит уникальный идентификатор на основе MAC-адреса ra0:

#!/bin/sh

 

## Generate UID based on device‘s MAC addr for ra0 intf

 

generateMacUid () {

        # grab line 2 of iwpriv output

        line1=$(iwpriv ra0 e2p | sed -n ‘2p‘)

        # isolate bytes at addresses 0x0004 and 0x0006, and perform byte swap

        bytes5432=$(echo $line1 |  awk ‘{print $3":"$4}‘ |

          awk -F ":"

          ‘{print substr($2,3) substr($2,1,2) substr($4,3) substr($4,1,2)}‘)

 

        # grab line 3 of iwpriv output

        line2=$(iwpriv ra0 e2p | sed -n ‘3p‘)

        # isolate bytes at address 0x0008 and perform byte swap

        bytes10=$(echo $line2 | awk ‘{print $1}‘ |

          awk -F ":" ‘{print substr($2,3) substr($2,1,2)}‘)

 

        macId=$(echo ${bytes5432}${bytes10})

        echo $macId

}

 

uid=$(generateMacUid)

echo "Unique ID based on MACD for this device is: $uid"

При запуске на устройстве:

root@Omega-2013:~# sh macId.sh                                                              

Unique ID for this device is: 40A36BC32013

Не стесняйтесь переводить этот код на другие языки и использовать его в своих приложениях.

footer shadow
Контакты

г. Москва, Пятницкое ш. д. 18, пав. 566

zakaz@compacttool.ru

8-495-752-55-22

compacttool logoadaptive site

accepted payment systems

Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !

© Все права защищены 2015 - 2024г https://compacttool.ru