EUI64 Numbering Convention

IEEE 802.15.4 assumes that each node has a unique 64-bit identifier called its Extended Unique Identifier, or EUI-64. The Atmel radio does not contain such an identifier; it is up to the firmware to assign it. The first three bytes of the EUI-64 is called the Organizationally Unique Identifier (OUI), an address space managed by the IEEE. You can browse that registry at http://standards.ieee.org/regauth/oui/ or print the full list. For example, any product manufactured by Dust Networks has an EUI64 which starts with 0x00170D.

The Pister lab is not a company, so we decided to assign ourselves the unused OUI 0x141592, the first six decimals of π. Furthermore, we encode the board type and version in the EUI-64, as well as its identifier. The format of the EUI-64 we use is:

14-15-92-xx yy-yy-zz-zz

Where:

  • 14-15-92 (six first decimals of π) is the "made up" 3B Organizationally Unique Identifier (OUI) of the Pister lab;
  • xx is the type of board:
    • 0x09 for GINA (a '9' looks like a 'g')
    • 0x0b for GINA basestation
    • 0xeb for TelosB
    • 0xe3 for EUI64 Numbering Convention (a '3' looks like an 'm' rotated sideways)
  • yy-yy is the version:
  • zz-zz is the unique identifier of the board, i.e. the one labeled on the board, in hexadecimal format

As a result, if you see in the air a packet coming from

14-15-92-0g-02-2c-00-0f

You know that it's a GINA 2.2c mote, address 0x000f.

The MSP430f2618 features 64B of flash memory which are not erased during programming. It already contains calibration data for the DCO and ADC in TLV format (see the MSP430x2xx Family User's guide, chapter 22). There are 8 unused bytes at absolute address range 0x10ee-0x10f5, which we use to store the EUI-64 address of our mote. Storing the EUI-64 in non-erasable flash allows all our board to run the exact same firmware.