Remplacement puce CPLD Switch D-Link DGS-3100-24
Depuis quelques jours mon switch D-Link rebootait tout seul. Il avait déjà perdu la boule il y a quelques temps. Histoire que j'avais raconté dans un autre article en février dernier. Tout allait bien jusqu'à récemment.
En réalité j'avais malmené ce switch il y a de cela quelques années. Il est équipé de 2 ventilateurs qui fonctionnent à pleine vitesse constante (aucune régulation). J'avais tenté de réduire leur vitesse en bidouillant avec d'autres ventilateurs. Je n'avais pas fait attention mais le brochage des ventilateurs n'est pas le même que sur les PC. Les fils +12V et GND sont inversés sur les prises 3 pins Molex. Ici le brochage traditionnel type PC :
Le truc c'est que la vitesse des ventilateurs est vérifié par un CPLD Lattice ispMACH 4000 (LC4128V) qui remonte une alerte en cas de défaillance des ventilateurs. Il gère et supervise tout le switch en fait.
Ce qui devait arriver est arrivé : à l'époque la puce cpld Lattice avait partiellement cramé accompagné de magic smoke en raison des fils inversés. Même en remettant les fils correctement (+12V, GND et sensor) = fumée qui sort du chip Lattice. Le switch a continué de fonctionner tel quel sans ventilation pendant des années malgré cet incident qui aurait pu être fatal. Le problème est donc que le switch reboot tout seul de manière aléatoire mais avant il indique un message sur la sortie série terminal comme si quelqu'un avait appuyé sur le bouton reset. Le bouton de reset en façade ne pose pas de problème. Ce n'est pas lui qui ferait contact de manière intempestive. Idem pour celui présent sur le PCB (S2).
Le problème provient bien du cpld Lattice : il suffit d'appuyer sur la résistance qui va bien avec un coton tige imbibé l'alcool isopropylique pour rejouer le défaut : que le switch reboote. Le coupable désigné semble être le bon.
Un CPLD est un circuit programmable, il faut donc lui injecter des données. Ici D-link a bien laissé les broches qu'il fallait pour le programmer in-situ, c'est le principe de l'ICSP.
On trouve ces programmateurs USB HW-USBN-2A pour certaines puces Lattice (dont la mienne) made in China à 15 euros sur eBay.
J'ai pu trouver des puces identiques (par lot de 4). Ces puces sont vierges, un peu comme pour une EPROM/EEPROM/Flash il faut les programmer.
Retrait et pose du nouveau circuit-intégré :
Il faut allumer l'appareil pour programmer la puce. Évidemment comme la puce est vierge le switch ne boot pas et reste inerte.
J'ai pu trouver un dump sur un site russe. Il n'y a plus qu'a l'implanter avec le logiciel de Lattice.
Un petit reset électrique et tout refonctionne. Bingo !
L'ancienne puce extraite :
La petite fente faite par les ventilateurs en court-circuit par laquelle la fumée s'échappait...
J'ai pu retrouver l'usage des ventilateurs. Même si je vais les laisser débranchés comme avant, le switch étant dans mon atelier son bruit est insupportable.
Après retrait du ruban kapton et nettoyage du flux, c'est comme s'il ne s'était rien passé.
Le switch a retrouvé sa place au dessus du HP (100mb seulement, pour dépanner) qui prend le relais en cas de problème (ça ne devrait plus arriver).
En réalité j'avais malmené ce switch il y a de cela quelques années. Il est équipé de 2 ventilateurs qui fonctionnent à pleine vitesse constante (aucune régulation). J'avais tenté de réduire leur vitesse en bidouillant avec d'autres ventilateurs. Je n'avais pas fait attention mais le brochage des ventilateurs n'est pas le même que sur les PC. Les fils +12V et GND sont inversés sur les prises 3 pins Molex. Ici le brochage traditionnel type PC :
Le truc c'est que la vitesse des ventilateurs est vérifié par un CPLD Lattice ispMACH 4000 (LC4128V) qui remonte une alerte en cas de défaillance des ventilateurs. Il gère et supervise tout le switch en fait.
Ce qui devait arriver est arrivé : à l'époque la puce cpld Lattice avait partiellement cramé accompagné de magic smoke en raison des fils inversés. Même en remettant les fils correctement (+12V, GND et sensor) = fumée qui sort du chip Lattice. Le switch a continué de fonctionner tel quel sans ventilation pendant des années malgré cet incident qui aurait pu être fatal. Le problème est donc que le switch reboot tout seul de manière aléatoire mais avant il indique un message sur la sortie série terminal comme si quelqu'un avait appuyé sur le bouton reset. Le bouton de reset en façade ne pose pas de problème. Ce n'est pas lui qui ferait contact de manière intempestive. Idem pour celui présent sur le PCB (S2).
Le problème provient bien du cpld Lattice : il suffit d'appuyer sur la résistance qui va bien avec un coton tige imbibé l'alcool isopropylique pour rejouer le défaut : que le switch reboote. Le coupable désigné semble être le bon.
Un CPLD est un circuit programmable, il faut donc lui injecter des données. Ici D-link a bien laissé les broches qu'il fallait pour le programmer in-situ, c'est le principe de l'ICSP.
On trouve ces programmateurs USB HW-USBN-2A pour certaines puces Lattice (dont la mienne) made in China à 15 euros sur eBay.
J'ai pu trouver des puces identiques (par lot de 4). Ces puces sont vierges, un peu comme pour une EPROM/EEPROM/Flash il faut les programmer.
Retrait et pose du nouveau circuit-intégré :
Il faut allumer l'appareil pour programmer la puce. Évidemment comme la puce est vierge le switch ne boot pas et reste inerte.
J'ai pu trouver un dump sur un site russe. Il n'y a plus qu'a l'implanter avec le logiciel de Lattice.
Un petit reset électrique et tout refonctionne. Bingo !
L'ancienne puce extraite :
La petite fente faite par les ventilateurs en court-circuit par laquelle la fumée s'échappait...
J'ai pu retrouver l'usage des ventilateurs. Même si je vais les laisser débranchés comme avant, le switch étant dans mon atelier son bruit est insupportable.
Après retrait du ruban kapton et nettoyage du flux, c'est comme s'il ne s'était rien passé.
Le switch a retrouvé sa place au dessus du HP (100mb seulement, pour dépanner) qui prend le relais en cas de problème (ça ne devrait plus arriver).