• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

RTL00 (RTL8710) arduino Смена MAC адреса

alex_engine

New member
Ситуация в следующем:
Приобрел небольшую партию модулей RTL00 (RTL8710AF) с целью объединить их в общую сеть.
Оказалось, что у всех одинаковый MAC:00:e0:4c:87:01:22!
Поскольку написана универсальная прошивка (Arduino) с конфигурацией многих параметров модуля при старте через WEB server, необходимо добавить туда команду смены MAC-адреса на произвольный, чтобы не городить для каждого модуля отдельную прошивку с индивидуальным сектором MAC.
Поискал в последней SDK все функции касательно установки MAC и нашел три функции:
1. int wifi_set_mac_address(char * mac);
2. int wext_set_bssid(const char *ifname, const __u8 *bssid)
3. int wext_set_mac_address(const char *ifname, char * mac);
Из них функция 3 не находится компоновщиком.
Пробовал вызывать эти функции в самом начале функции Setup() и в функции Loop() до старта WiFi. Никаких результатов, мак не меняется.
Единственный эффект был при вызове функции 2 после старта WiFi - сеть падает.
Прошу помочь решить задачу смены MAC на произвольный!
 

pvvx

Активный участник сообщества
wext_set_mac_address() закоментирована в wifi_util.c текущей сборке моей USDK...

Со сменой MAC есть зависимости от используемых библиотек lib_wlan.a или lib_wlan_mp.a (Mass Production functions)

Если требуется назначение MAC для модуля по умолчанию, то дописываете сектор 10 новой записью в формате указаном тут https://esp8266.ru/forum/threads/rtl871x-flash-memory-map.2117/#post-30628
 
Последнее редактирование:

pvvx

Активный участник сообщества
Самый простой метод смены MAC на модулях серии "A"

Загрузите в RAM прошивку "AT" от SDK4.0 и выполните:
[inline]ATWZ=read_mac[/inline]
Private Message: 00:e0:4c:87:00:00

[inline]ATWZ=write_mac[00e04c870000][/inline]
write mac address success, please reset wifi driver!

Приложены бинарники и JLink-RunRAM.bat
 

Вложения

sharikov

Active member

pvvx

Активный участник сообщества
А если надо записать MAC в eFuse?

Т.е. у пользователя есть 3 опции:
1) Сменить MAC на ходу без записи в Flash-calibration и eFuse
2) Сменить MAC в Flash-calibration
3) Сменить MAC в eFuse
И их комбинации.

По этой причине и требовании полной переинициализации LwIP + WiFi при смене не включил смену MAC в Web-свалке. Лень было высчитывать каким методом лучше это сделать... Но счас уже понятно - писать его в FEEP, как и остальные настройки WiFi и применять при старте до инитов WiFi.
Т.е. каждая прошивка сможет иметь свой MAC, если задать свой id сохранения в FEEP :)

Для Aduino решений пока нет.
Там возможно встроить только автомат, определяющий, что MAC не задан и при таком условии добивать первые 4 байта realtek MAC и 2 байта индивидуальным id чипа прошитыми Realtek в eFuse при выпуске чипа. Там вроде 4 байта индивидуального id в eFuse... В общем 2 или 4 - не имеет разницы... Аналогично сделано в ESP8266.

Но по нормальному, не для кухни, надо регистрировать MAC по стандарту... :(
 
Последнее редактирование:
Сверху Снизу