Модуль GPON ONU основан на Marvell MC-88F6601, но datasheet на этот чип не доступен в открытом доступе. Мне нужно подписать NDA, чтобы получить datasheet. Сначала я подключил этот модуль к STM32, чтобы считать EEPROM, который связан со стороной SFP. Контрольная сумма была неверной, поэтому информация о модуле не отображалась на странице ROS SFP info. После исправления контрольной суммы, серийный номер и диагностическая информация корректно показывались на странице SFP. Затем я поменял серийный номер внутри EEPROM, но это никак не повлияло на серийный номер, который используется при GPON рукопожатии. После этого я выпаял флеш-чип и полностью считал содержимое флеша. Но там ничего интересного не обнаружилось. Дамп флеша: https://www.lolicon.me/dl/gpon.rom Вот фотографии в высоком разрешении:
Сегодня сделал дамп флеша моего sfp: структура SPI flash: 1Мбайт с 0 (uboot), 3584К с 0x100000 (uImg), 3М с 0x480000 (rootFs), 512К с 0x780000 (vars), 3584К с 0x800000 (uImgB), 3М с 0xB80000 (rootFsB), 512К с 0xE80000 (varsB).
Там есть файловая система Squashfs, little endian, версия 4.0, размер 2148429 байт, 470 инодов, размер блока: 131072 байта, создана: среда, 18 ноября 2015, 10:21:54, по адресу 0x480000. В ней содержится файл /etc/xml_params/gpon_xml_cfg_file.xml:
<?xml version="1.0"?> <cnfg> <PON> <!-- Серийный номер PON — до 8 символов --> <PON_serial_num>MKTK00010203</PON_serial_num> <!-- Источник серийного номера PON: 0 — из xml, 1 — числовая часть берётся из младших 4 байт MAC --> <PON_serial_src>1</PON_serial_src> <!-- Пароль PON — до 10 символов --> <PON_passwd>1234567890</PON_passwd> <!-- Отключение PON SN: 0 = НЕТ, 1 = ДА --> <PON_dis_sn>0</PON_dis_sn> <!-- Сброс gem при отключении оптики: 0 = НЕТ, 1 = ДА --> <PON_gem_reset>0</PON_gem_reset> <!-- Сброс tcont при отключении оптики: 0 = НЕТ, 1 = ДА --> <PON_tcont_reset>1</PON_tcont_reset> <!-- Полярность PON Dying Gasp: 0 = низкий уровень, 1 = высокий --> <PON_DG_polarity>1</PON_DG_polarity> <!-- Полярность включения Burst у PON XVR: 0 — высокий, 1 — низкий --> <PON_XVR_burst_enable_polarity>0</PON_XVR_burst_enable_polarity> <!-- Полярность PON XVR: 0 — высокий, 1 — низкий --> <PON_XVR_polarity>1</PON_XVR_polarity> <!-- Полярность включения Burst у P2P XVR: 0 — высокий, 1 — низкий --> <P2P_XVR_burst_enable_polarity>1</P2P_XVR_burst_enable_polarity> <!-- Полярность P2P XVR: 0 — высокий, 1 — низкий --> <P2P_XVR_polarity>0</P2P_XVR_polarity> <!-- Восстановление gem-портов после возврата из состояния 7: 0 = НЕТ, 1 = ДА --> <PON_gem_restore>1</PON_gem_restore> <!-- Гистерезис бита FEC Ind: число кадров 1-4 --> <PON_fec_hyst>1</PON_fec_hyst> <!-- Режим связи: 0 = DC, 1 = AC --> <PON_coupling_mode>1</PON_coupling_mode> </PON> </cnfg>
После анализа встроенного Linux выяснилось, что операционная система на модуле не пересылает никакие пакеты. На самом деле все данные пересылает аппаратный коммутатор на SoC.
Напиши мне в личку, у меня есть Huawei OLT и этот модуль тоже, хочу попробовать сменить SN и связать его с моим OLT или с OLT моего провайдера, используя SN моего HG. Звучит интересно.
Я посмотрел с помощью binwalk — он огромный. Можно ли его перепаковать с помощью canes и прошить обратно? Есть идеи? Я уже гуглил про горячий воздух. Подключил свой модуль к своему hawed 5608 OLT, но в iManager U2000 при автоматическом обнаружении он не появляется. Думаю, дело связано с настройками совместимости.