Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

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

Тема в разделе "Realtek - описание, документация и обсуждение", создана пользователем alex_engine, 30 окт 2017.

  1. alex_engine

    alex_engine Новичок

    Сообщения:
    10
    Симпатии:
    0
    Ситуация в следующем:
    Приобрел небольшую партию модулей 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 на произвольный!
     
  2. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.396
    Симпатии:
    1.271
    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
     
    Последнее редактирование: 31 окт 2017
  3. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.396
    Симпатии:
    1.271
    Самый простой метод смены MAC на модулях серии "A"

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

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

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

    Вложения:

    Simon нравится это.
  4. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    550
    Симпатии:
    51
  5. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.396
    Симпатии:
    1.271
    А если надо записать 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 по стандарту... :(
     
    Последнее редактирование: 31 окт 2017

Поделиться этой страницей