MAC адрес

LDL

New member
Подскажите- у ESPэшки MAC адрес уникальный или нет?
Нужно ли присваивать им МАС адреса при настройке.
Иногда устройства меняются местами. Не пойму в чём проблема.
Под одним и тем же IP разные устройства после перезагрузки.
 

VicSpectator

New member
Судя по SDK, мак-адрес настраивается при запуске самой esp. Но пусть ответят специалисты :)
 

LDL

New member
Espressif обещает, что уникальный. Мне пока одинаковые не встречались.
Я прошивал 10 штук и показалось что мелькнули одинаковые МАСи. Ну показалось подумал. И ладно.
Но вот поимел последствия этого в виде устройств меняющиеся местами.
Роутер выделяет 10 IP адресов. Время замены адресов в роутере=0 (то есть никогда).
Включили девайсы, зарегистрировали в системе под IP адресами. Через пару дней пропало питание. Включили. Все адреса на месте, но поменялись местами. Я так понимаю что роутер запоминает IP ассоциируя его с МАС. А если один включился быстрее других то он занимает МАС из пула. А роутер ставит ему в соответствии адрес. Вот и получаем попрыгунчика. Я по другому не могу объяснить эту ситуацию.
 

rst

New member
Я по другому не могу объяснить эту ситуацию.
По-другому это объясняется просто: Вы не знаете как работает DHCP. Если нужно зафиксировать IP для данного MAC - прописывается статическая аренда вне пула динамически выделяемых IP-адресов.
 

pvvx

Активный участник сообщества
Я прошивал 10 штук и показалось что мелькнули одинаковые МАСи. Ну показалось подумал. И ладно.
Но вот поимел последствия этого в виде устройств меняющиеся местами.
Роутер выделяет 10 IP адресов. Время замены адресов в роутере=0 (то есть никогда).
Включили девайсы, зарегистрировали в системе под IP адресами. Через пару дней пропало питание. Включили. Все адреса на месте, но поменялись местами. Я так понимаю что роутер запоминает IP ассоциируя его с МАС. А если один включился быстрее других то он занимает МАС из пула. А роутер ставит ему в соответствии адрес. Вот и получаем попрыгунчика. Я по другому не могу объяснить эту ситуацию.
При тестах у меня постоянно возникают ситуации с множественными модулями с одинаковыми MAC. Никаких проблем это не доставляет роутеру. Смешные ситуации есть, но они более связаны с таблицей route в Windows, а не MAC.
Поочередное включение модулей с одинаковым МАС особенно часто использую для тестов - выдаваемый роутером адрес IP выходит одинаковым, но только на время, установленное "на аренду" в DHCP, если не прописано отдельно (жестко задано в настройках).
 

LDL

New member
По-другому это объясняется просто: Вы не знаете как работает DHCP. Если нужно зафиксировать IP для данного MAC - прописывается статическая аренда вне пула динамически выделяемых IP-адресов.
Я знаю как работает DHCP! Проблема в том что меняется МАС при перезагрузке ESP и роутер на новый МАС подключает IP от другого устройства, у которого этот МАС был до этого. Статический IP я присвоить не могу (да и как если МАС прыгает). Поэтому то в роутере срок аренды установлен в ноль (аренда бессрочная). По этому то и был вопрос какой МАС у ESP - уникальный статический или динамический.
 

rst

New member
Проблема в том что меняется МАС при перезагрузке ESP
Вы в этом уверены??? Если это так, то это какой-то баг в прошивке вероятно.
И я на своих ESP такого не наблюдал. Я бы это заметил, так как в роутер у меня даёт WiFi только устройствам с известным ему MAC.

По этому то и был вопрос какой МАС у ESP - уникальный статический или динамический.
Не бывает никаких динамических MAC. MAC должен быть уникален для сети и константой для устройства.
 

rst

New member
Я знаю как работает DHCP!
А как работает DHCP Вы не знаете. Иначе бы понимали, что никто не обязывает DHCP-сервер выдавать при каждом запросе новый адрес DHCP-клиенту. Так что Вас спасёт только статическая привязка IP-MAC.
 

UltraGad

New member
Должен быть уникальным. По идее.
Без идей, пришло сегодня 10 лолин, 3 перешивал - MAC-адреса одинаковые
Когда шил 2ю, думал показалось, но ради проверки зашил 3ю - сомнения подтвердились.
Что делать ? Как изменить MAC ?
 

Алексей.

Active member
wifi_set_macaddr
Function: set mac address
Note: only can be used in user_init
Function definition:
bool wifi_set_macaddr(uint8 if_index, uint8 *macaddr)
Parameter:
uint8 if_index – set station mac or softAP mac
#define STATION_IF 0x00
#define SOFTAP_IF 0x01
uint8 *macaddr – mac address
Example:
char sofap_mac[6] = {0x16, 0x34, 0x56, 0x78, 0x90, 0xab};
char sta_mac[6] = {0x12, 0x34, 0x56, 0x78, 0x90, 0xab};
wifi_set_macaddr(SOFTAP_IF, sofap_mac);
wifi_set_macaddr(STATION_IF, sta_mac);
Return:
True - succeed;
False - fail.
источник
 
Сверху Снизу