Arch Pro, an mbed enabled development board for rapid prototyping.

Arch Pro MAC address

17 Jan 2014

Another note regarding the lack of a true mbed interface chip on the Arch Pro - there is no unique MAC address on these boards.

To solve the MAC and storage issue, I'm adding an I2C MAC address EEPROM (Microchip 24AA02E48) as suggested elsewhere on the mbed site (I happen to have some available). It doesn't provide a lot of storage (just 128 bytes), but good enough for unique config settings.

Otherwise I think it is an excellent board for a networked embedded system.

17 Jan 2014

I think we can use device serial number of LPC1768 to generate a unique MAC address.

mbed_mac_address() in mbed SDK is a weak function. We can simply override it.

There is an IAP class library for LPC1768 and LPC11U24 - https://mbed.org/users/okano/code/IAP/. To read device serial number is very easy.

17 Jan 2014

Yes, actually that would be good enough for most people. I am installing these on a corporate/research network, so I think it is best to use a real MAC address.

For reference, I just wired up the 24AA03E48T to the I2C bus, powered from 3.3V with 4k7 pullups. I then included the EEPROM library (see below) and added this to my code. You could easily also store fixed IP address, etc, in the first 128 bytes of the EEPROM.

EEPROM ee(p28, p27, 0, EEPROM::T24C02);

extern "C" void mbed_mac_address(char *mac) {
    // define a default MAC Address
    mac[0] = 0x00;
    mac[1] = 0x02;
    mac[2] = 0xf7;
    mac[3] = 0x03;
    mac[4] = 0x04;
    mac[5] = 0x05;
    // try read MAC from 24AA02E48
    ee.read(0xFA, mac, 6);
};

Import libraryeeprom

I2C EEPROM library from 24C01 to 24C1025

05 Jan 2015

Hi Folks,

Thanks for the answers here, that just saved me.

For anyone else who is trying to get the seeed arch pro working with ethernet you will need to add a function like this (with the MAC address of your choice):

extern "C" void mbed_mac_address(char *mac){

mac[0] = 0x00; mac[1] = 0x02; mac[2] = 0xF7; mac[3] = 0xF1; mac[4] = 0x91; mac[5] = 0x9F; };

Otherwise the ethernet examples on the mbed page will hang when the library code tries to query the MAC address during the eth.init() call.

Dan

26 Jan 2015

Dan, Thanks for that hint... that really helps!

I think I figured that out before and forgot, so finding this was great! -Devon