• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 по стандарту... :(
 
Последнее редактирование:
Сверху Снизу