IC-prog entrega 256 bytes del volcado de un SFP, pero la segunda mitad es copia de la primera, la página A2 no se lee (HP 2530-24G)
Mantengo la red de un operador pequeño, reflasheo con regularidad módulos baratos para que pasen por HP. La tarea es la habitual: volcar en unos WDM chinos de 1.25G la imagen de un módulo de marca para que el switch los acepte sin quejarse. El donante es un J4859C, el equipo objetivo es un HP 2530-24G J9776A.
Lo que hay en la mesa:
- switch HP 2530-24G J9776A
- módulos OptiCin y Fiberstore, 1.25G WDM
- programador mini-USB NAG
- IC-prog en Windows, leo y escribo con él
El volcado sale de 256 bytes, pero la segunda mitad coincide con la primera byte a byte:
IC-prog, 0x00-0x7F: прочитано
IC-prog, 0x80-0xFF: тот же самый блок, байт в байт
на части модулей при чтении: No Acknowledge received
Lo que ya probé:
- cambié el módulo de lugar, limpié los contactos del zócalo, cambié el pestillo
- pasé tres módulos de lotes distintos, mismo cuadro
- cambié el puerto USB, el cable y la máquina, nada cambió
Necesito la segunda página, donde están el DDM y los bytes de servicio, y sencillamente no la veo. ¿Es una limitación de IC-prog, una placa de programador defectuosa, o los propios módulos se comportan así?
Comments 7
Aquí hay dos fallos independientes, y ninguno de los dos está en los módulos.
El primero es el propio IC-prog. Tiene un modelo de direccionamiento lineal, no sabe cambiar de página y no puede llegar a A2 en absoluto. Lo que ves en la segunda mitad del volcado es la misma A0, leída por segunda vez. No mostrará ningún error, porque desde su punto de vista todo está en orden.
El segundo es la placa. En este programador mini-USB VccR (pin 15) está puesto a +5 V, aunque según SFF-8431 debería quedar libre, más la alimentación y la tierra están conectadas de forma que parte de los módulos no entra en modo normal. De ahí el
No Acknowledge received- no en todos por igual, sino en los que no les gusta esa conexión.Lo que funciona bien:
i2cdump -y 3 0x50yi2cdump -y 3 0x51, hay un script abierto en Python que lee y escribe ambas páginas.El criterio es simple: en cuanto 0x51 empieza a responder, de ahí en adelante es trabajo normal con la memoria del módulo, no una pelea con la herramienta.
Separa software y hardware, si no vas a andar adivinando hasta la noche. Toma cualquier Linux y mira si el módulo responde siquiera en la segunda dirección:
Pon tu propio número de bus. Si 0x50 se lee y 0x51 calla - la pregunta ya no es con qué miras el volcado, sino si le llega alimentación normal al módulo. Y dime qué entrega con ese mismo programador un J4859C donante que sea seguro que funciona: si a él tampoco se le abre la segunda página, los módulos baratos no tienen nada que ver, hay que cavar en la combinación software más placa.
Probé el donante primero que nada: un J4859C vivo en el mismo zócalo y en el mismo IC-prog da exactamente el mismo cuadro - 256 bytes, la segunda mitad repite la primera. Entonces no es cosa de los módulos baratos. Lo comprobé además en Linux con el adaptador:
La utilidad nativa en ese mismo módulo da
No Acknowledge received, e IC-prog en silencio muestra una copia de la primera página y hace como que todo está bien. Los módulos objetivo son OptiCin, la imagen la saco justamente de ese J4859C.Sobre la escritura misma añado algo. En el volcado de 256 bytes son significativos los primeros 128 bytes, más allá está la zona del fabricante, que normalmente ni hace falta tocar. Para HP volcamos imágenes de J4858C y J4859C, para WDM un par de veces bastó con una imagen LX normal: el switch aceptaba el módulo y no miraba la longitud de onda.
Pero no todo se puede escribir. En el 3Com 3CSFP91 y 3CSFP92, igual que en los de marca Allied Telesis, la escritura simplemente no funcionó: se lee normal, pero la escritura no se aplica - WP bloqueado. Así que si tras cambiar de programador A2 se lee, pero la escritura se va silenciosamente a ninguna parte, no busques la causa en el software.
Aclaro lo de «de ahí en adelante trabajo normal con la memoria». No en todos lados es normal. Parte de los módulos no son EEPROM en absoluto: en el Medick SFP-10G-BX hay un microcontrolador C8051F392 que emula A0/A2 y puede exigir contraseña o responder a un desafío. Por fuera parece memoria normal justo hasta el momento de escribir. El caso más pesado que me tocó fue una EEPROM interactiva de HP/Aruba con claves, ahí sin una utilidad ya hecha no hay nada que hacer.
Y si armas el adaptador tú mismo, no confundas los pines: TX_Disable es el pin 3, Mod_Abs es el pin 6, VeeR es el pin 9. La mitad de los módulos «ilegibles» que le pasaron a conocidos resultaron ser un zócalo mal armado, no una protección del fabricante.
De lo que se usa ahora: SNR SFP Writer, la serie SFPTotal Plus y montajes caseros con CH341 - normalmente es solo una placa con zócalos para SFP, XFP, GBIC y QSFP, a veces en una carcasa impresa. No hay software universal, cada fabricante tiene su propia utilidad, las imágenes se sacan de bases de firmwares y de foros especializados.
Dos cosas que cuestan más que el hardware. Primero: muchos módulos tienen una contraseña de 4 bytes, la mayoría se ha publicado hace tiempo, pero si fallas obtienes un ladrillo de un módulo nada barato. Segundo: antes de meterte en la memoria, asegúrate de que el módulo esté vivo siquiera. Temperatura, voltaje, corriente de polarización y TX/RX de A0h/A2h,
show interfaces diagnostics opticsen Junos odisplay interface transceiveren Huawei, luego limpieza de pestillos, contactos y lentes, luego sustitución por uno que sí funcione con seguridad. Parte de los módulos «muertos» revive con esto sin ningún flasheo, y la carga ya se comprueba después con iperf3.Reporto el resultado. Armé una placa con CH341, en Linux 0x51 respondió de inmediato, la segunda página se lee entera, sin ninguna copia de los primeros 128 bytes. Volqué la imagen del J4859C en el OptiCin, el HP 2530-24G J9776A aceptó el módulo sin quejarse, el DDM muestra valores razonables, aguantó un día bajo carga sin errores.
Desinstalé IC-prog para no tentarme más. El 3Com 3CSFP91 que andaba por ahí efectivamente no se deja escribir: se lee, pero la escritura no se aplica, así que lo del WP cuadra todo. Gracias, pregunta cerrada.