заморочка с МАС на esp8266

inspiritus
Offline
Зарегистрирован: 17.12.2012

Здравствуйте... продолжение далее

inspiritus
Offline
Зарегистрирован: 17.12.2012

собственно проблема:

ввиду разного рода обстоятельств мне необходимо иметь не только подвязанный к расположению модуля IP, но и MAC. долгое время с заменой MACа проблем не было, и вот опять :) Пол-дня моск ломал, подключал и отключал разные библиотеки... в итоге написал голый тест и обнаружил :

#include <ESP8266WiFi.h>

extern "C" {
  #include <user_interface.h>
}
  
//uint8_t mac[6] {0xA9, 0xD9, 0xB3, 0x00, 0x01, 0x00};  //НЕ работает
uint8_t mac[6] {0xA8, 0xD9, 0xB3, 0x00, 0x01, 0x00};       //работает


void setup() {

  Serial.begin(115200);
  delay(10);

     
    Serial.println("Start WiFi");
    Serial.print("OLD ESP8266 MAC: "); 
    Serial.println(WiFi.macAddress());

    wifi_set_macaddr(0, const_cast<uint8*>(mac));

    Serial.print("NEW ESP8266 MAC: "); 
    Serial.println(WiFi.macAddress());
}

void loop() {

}

результат:

16:55:07.015 -> OLD ESP8266 MAC: FC:F5:C4:96:61:BD
16:55:07.015 -> NEW ESP8266 MAC: FC:F5:C4:96:61:BD

16:55:47.029 -> OLD ESP8266 MAC: FC:F5:C4:96:61:BD
16:55:47.029 -> NEW ESP8266 MAC: A8:D9:B3:00:01:00

вопрос:

почему A9 не принимается ЕСПишкой, а с A8 проблем нет ?

Может быть есть правило нерукопожатных комбинаций ?

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

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

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

А кому принадлежит тот МАС, который Вы пытаетесь установить?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

andriano пишет:

А кому принадлежит тот МАС, который Вы пытаетесь установить?

никому, не зарегистрирован производитель

Kakmyc
Offline
Зарегистрирован: 15.01.2018

В библиотеке "ESP8266WiFi.h" случаем ни каких ограничений по этому поводу нет ?
Может исходники посмотреть ?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Kakmyc пишет:
В библиотеке "ESP8266WiFi.h" случаем ни каких ограничений по этому поводу нет ? Может исходники посмотреть ?

обычно прикидываются каким-нибудь реальным девайсом, а в этом случае выбор мака совсем непонятен

sadman41
Offline
Зарегистрирован: 19.10.2016

Addresses can either be universally administered addresses (UAA) or locally administered addresses (LAA). A universally administered address is uniquely assigned to a device by its manufacturer. The first three octets (in transmission order) identify the organization that issued the identifier and are known as the organizationally unique identifier (OUI).[2] The remainder of the address (three octets for EUI-48 or five for EUI-64) are assigned by that organization in nearly any manner they please, subject to the constraint of uniqueness. A locally administered address is assigned to a device by software or a network administrator, overriding the burned-in address for physical devices.

Если делать как полагается, то мак должен быть определённого типа для своих применений.

inspiritus
Offline
Зарегистрирован: 17.12.2012

То есть получается, что

- гдетто в недрах ЕСП есть таблица диапазонов UAA маков и она не принимает номера, туда попадающие, при этом никак не проявляя свое недовольство, кроме как неизменением прошитого изготовителем мака.

- как написал уважаемый ua6em комбинация, непрокатившая у мну, незарегистрирована, но, тем не менее, ЕСП ея не приемлет.

- следовательно необходимо проверять комбинацию на предмет ея легитимности и, считая адреса LAA, наслаждаться жизъню.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

inspiritus пишет:

То есть получается, что

- гдетто в недрах ЕСП есть таблица диапазонов UAA маков и она не принимает номера, туда попадающие, при этом никак не проявляя свое недовольство, кроме как неизменением прошитого изготовителем мака.

- как написал уважаемый ua6em комбинация, непрокатившая у мну, незарегистрирована, но, тем не менее, ЕСП ея не приемлет.

- следовательно необходимо проверять комбинацию на предмет ея легитимности и, считая адреса LAA, наслаждаться жизъню.

вот как раз дубликаты зарегистрированных маков у мну получались, когда-то, правда прошивал на самой сетевой карте

sadman41
Offline
Зарегистрирован: 19.10.2016

wifi_set_macaddr

Function:

Sets MAC address

Note:

• This API can only be called in user_init.

• ESP8266 soft-AP and station have different MAC addresses, please do not set them to be the same.

• The bit 0 of the first byte of ESP8266 MAC address can not be 1. For example, MAC address can be "1a:XX:XX:XX:XX:XX", but can not be "15:XX:XX:XX:XX:XX"

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

а ларчик просто открывался 0x18 = ob11000, 0x19 = 0b11001

inspiritus
Offline
Зарегистрирован: 17.12.2012

От ведь загогулина какая вышла :)

а где Вы это читаити уважаемый sadman41 ?

ссылочку не пришлете ли?

sadman41
Offline
Зарегистрирован: 19.10.2016

Как бы это не выглядело странным, но в документации: https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/api-refer...

inspiritus
Offline
Зарегистрирован: 17.12.2012

Я знал:))) спасибо за ссылку