Monorailcat

D-Link DIR-615

icon 10/12/2015 - No comments

J'ai un point d'accès Wifi/routeur D-Link DIR-615 (rev. H2) qui sert à couvrir la maison. Le routeur s'est arrêté de fonctionner du jour au lendemain (après 3 ans d'utilisation).

/!\ Échec des réparations

Réparation
Quand on le branche, la LED "POWERLED" (D30) reste allumée en orange et rien d'autre ne fonctionne.

Il faut enlever deux patins en caoutchouc pour acceder aux vis (1), puis déclipser le dessus du boitier (2).
DIR-615 screws

L'entrée de l'alimentation est tout de suite convertie en 3.3V par un régulateur buck IT2602M. Comme rien d'autre n'est alimenté directement par le bloc d'alimentation, il (5V/1A) peut fournir entre 12V/200mA et 4.5V/800mA sans que ça ne pose de réel problème.
En sortie du régulateur, on mesure ~3.34V, mais il y a un petit glitch au démarrage. Un voltmètre en AC mesure 200mV de ripple en moyenne (et probablement bien plus quand le SoC tente de démarrer).
DIR-615 board

En posant un tournevis (en acier, non-aimanté) sur l'inductance L33, sa valeur augmente légèrement et suffisament pour que le routeur démarre et fonctionne.
En pratique, la capacité C244 (Lelon RGA 105°C, 16V) est mesurée à 426µF au lieu de 470µF (peu gênant), mais son ESR est mesurée à 1.2Ω, ce qui est critique pour une capacité en sortie d'une alimentation buck.

On peut la remplacer par une capacité 1000µF/6.3V "low-ESR" (n'importe quelle capacité entre 470µF et 1500µF de tension >6.3V devrait suffire, tant que l'ESR est faible). Pour éviter une usure rapide, on y ajoute une capacité en céramique de 4.7nF (ESR de <100mΩ).
DIR-615 board bottom

Seconde réparation
Après quelques jours, le bloc d'alimentation et le SoC se sont mis à couiner. Il a suffit de changer le bloc d'alimentation par un bloc 7.5V/1A pour corriger le problème et supprimer le couinement.
Il est aussi popssible que la capacité de découplage de l'alimentation soit usée.

Échec
Après encore quelques jours, le SoC couine toujours (buzz à 100~1kHz) et est incapable de démarrer. Le système n'est pas debuggable facilement sans oscilloscope ni doc détaillée du SoC.

Port série
Le connecteur J4 donne accès au port série du SoC Ralink.

  1. 3.3V
  2. GND
  3. TX
  4. RX

Branché à un convertisseur USB-Série 3.3V, on accède à une console qui affiche le bootlog du routeur. Il est possible d'accèder à un shell en tapant ctrl + C, puis sn2450.

Références

icon Tags de l'article : , ,

Canon Pixma MX700 : Lecteur de cartes SD/CF

icon 19/10/2015 - No comments

Cette imprimante a un lecteur de cartes SD et Compact Flash sur une carte séparée (réf. QK1-3752-03, QM3-2812).

vue de la carte
vue de la carte


Identification

La carte utilise 3 puces : deux puces qui ressemblent à des régulateurs LDO, mais sans documentation vallable (marquages illisibles ou références introuvables), et le chip Genesys Logic GL819SA111 en boitier TQFP.

D'après le pinout de la puce, et un Ohmmètre, on en déduit une partie du brochage du connecteur :
  1. Vdd (3.3V)
  2. USB D-
  3. USB D+
  4. GND
  5. ?
  6. ?
  7. ?
  8. GND

En identifiant le connecteur de la carte mère de l'imprimante à l'Ohmmètre et au Voltmètre, on arrive à identifier quelques autres pins :
  1. Vdd (3.3V)
  2. USB D-
  3. USB D+
  4. GND
  5. +3.3V
  6. Pin tiré à Vdd via un pullup de 15kΩ, à forcer à GND pour activer la puce.
  7. +5V
  8. GND

Câblage

Une fois les pins identifiés au connecteur USB et sur la carte, il ne reste plus qu'a tout souder.
USB pinouts board side
USB pinouts bottom side

Comme le +3.3V n'est pas disponible sur un port USB, et que la puce accepte une tension de 2.7V à 3.6V (idem pour les cartes SD), il est possible de relier le +5V à Vdd avec 3 diodes Si en série (les 1N400x conviennent et donnent une chute de tension proche de 0.65V en charge et à vide).

câblage connecteur USB


Par contre, la carte fonctionne en USB2.0 Hi-Speed, il faut donc un câble USB relativement propre (paire torsadée 90Ω).
En pratique, un câble sale (fils volants) fonctionne seulement si les fils sont de mêmes longueur (±5%) et courts (<50mm), La qualité des soudures peut aussi poser des problèmes.


Tests
En le branchant sur un PC (Linux), on peut avoir les messages d'erreur suivants (affichables avec la commande dmesg) :

usb 1-1.1.2: new high-speed USB device number n using ehci-pci, avec n bouclant entre 0 et 127.
Cette erreur arrive lorsque le câble est trop "sale" pour communiquer en mode high-speed.

usb 1-1.1.2: device descriptor read/64, error -n
usb 1-1.1-port2: Cannot enable. Maybe the USB cable is bad?
usb 1-1.1-port2: unable to enumerate USB device

Ces erreurs arrivent typiquement lorsque les pins D+ et D- sont échangés.

usb 1-1.1.2: reset high-speed USB device number 19 using ehci-pci
Si ces resets arrivent fréquemment, il est possible que l'alimentation de la puce ne fournisse pas assez de courant ou soit mal découplée.
Ils peuvent aussi arriver si le câble USB est trop long et non-torsadé/blindé.

Si aucun message n'apparaît lorsque la carte ou même un autre périphérique USB est branché sur ce port, c'est parce que les ports sont individuellement désactivés lorsqu'ils ont généré trop d'erreurs. Il est nécessaire de recharger les modules le gérant (ehci-hcd et ehci-pci sur ma machine)

Lorsque tout est fonctionnel, le noyau doit renvoyer :
usb 1-1.1.2: new high-speed USB device number 8 using ehci-pci
usb 1-1.1.2: New USB device found, idVendor=05e3, idProduct=070e
usb 1-1.1.2: New USB device strings: Mfr=0, Product=1, SerialNumber=2
usb 1-1.1.2: Product: USB Storage
usb 1-1.1.2: SerialNumber: 000000009514
usb-storage 1-1.1.2:1.0: USB Mass Storage device detected
scsi145 : usb-storage 1-1.1.2:1.0
scsi 145:0:0:0: Direct-Access Generic STORAGE DEVICE 9514 PQ: 0 ANSI: 0
sd 145:0:0:0: Attached scsi generic sg2 type 0
sd 145:0:0:0: [sdb] 7698432 512-byte logical blocks: (3.94 GB/3.67 GiB)
sd 145:0:0:0: [sdb] Write Protect is off
sd 145:0:0:0: [sdb] Mode Sense: 37 00 00 08
sd 145:0:0:0: [sdb] No Caching mode page found
sd 145:0:0:0: [sdb] Assuming drive cache: write through
sdb: sdb1
sd 145:0:0:0: [sdb] Attached SCSI removable disk


Références/Liens

icon Tags de l'article : , , ,

Afficheurs à LEDs

icon 22/12/2014 - No comments

Récupération
J'ai récupéré un équipement de laboratoire fabriqué par Sofraser avec un module d'interface pour des capteurs de viscosité et deux modules de contrôle et d'affichage. Cet équipement est trop ancien et la documentation n'est plus disponible sur le site web du constructeur, mais il est possible d'en récupérer des pièces.

Tests et mesures
Les modules de contrôle et d'affichage sont formés de 3 cartes emboitées :
  • Carte d'alimentation (transfo, régulateurs de tension), d'interfaces analogiques (comparateurs et amplis) et d'actionneurs (sorties à relais)
  • Carte à MCU (Intel 8031, EPROM, SRAM, NV-SRAM)
  • Carte d'affichage (afficheurs 7 segments, LEDs, boutons, drivers NPN et registre à décalage UCN5812AF d'Allegro)
Sofraser 6001 power-analog, digital-MCU and display boards

Reverse Engineering Hardware
En fonctionnement normal, sans capteurs branchés, l'afficheur affiche quelque chose sur chaque afficheur.
Sofraser 6001 Display
Comme l'afficheur fonctionne, on peut mesurer les tensions d'alimentations et vérifier rapidement l'allure des signaux au voltmètre.

Pour identifier la suite, il faut débrancher l'afficheur, sortir la datasheet du registre à décalage et tester à l'Ohm-mètre.

Ce qui nous donne le pinout du connecteur :
  1. VDD (Power, 3~60V), il est peu probable que les transistors apprécient plus de 15V
  2.  ?
  3. ?
  4.  Blank/Strobe
  5.  VDD (Logic, 3~15V), à adapter aux niveaux des signaux
  6. SW2
  7. CLK
  8. SW1
  9. SDIN
  10. SW3
  11.  GND
  12. SW4
Les pins en vert sont connectés directement au registre à décalage et acceptent des signaux TTL et LV-TTL.
Comme on a un registre à décalage, on peut être tenté d'utiliser un périphérique SPI, sauf que ceux des AVR et des MSP430 sont incapables de sortir des mots de 20bits... Il faudra faire du bit-bang en software.

En regardant la datasheet, on observe que les signaux SDIN et CLK permettent de charger le registre à décalage. Ensuite le signal Strobe permet d'activer le latch et le signal Blank permet d'activer le buffer.
Sur ces cartes, les signaux Strobe et Blank sont reliés. Ainsi on économise un fil.
UCN5812AF register schematics

Reverse Engineering Software
En balayant le registre, on peut se rendre compte de l'adresse de chaque afficheur, segment et LED.
display schematic

Afficheurs :
  1. 0x002000
  2. 0x001000
  3. 0x000800
  4. 0x000400
  5. 0x080000
  6. 0x040000
  7. 0x020000
  8. 0x010000
  9. 0x004000
LEDs :
  1. 0x008004
  2. 0x008020
  3. 0x008040
  4. 0x008080
  5. 0x008100
  6. 0x008200

On remarque aussi que tout est câblé ensemble. On peut choisir d'allumer les segments et les digits un par un, mais pas indépendamment (il est possible d'afficher " 1 1", mais pas "1234").
Pour afficher autre chose, il faut utiliser la persistance rétinienne et balayer chaque valeur par digit.

On peut associer les segments aux nombres et lettres que l'on va afficher :
  • 0 - 0x3F0
  • 1 - 0x180
  • 2 - 0x368
  • 3 - 0x3C8
  •  4 - 0x198
  •  5 - 0x2D8
  • 6 - 0x2F8
  • 7 - 0x380
  • 8 - 0x3F8
  • 9 - 0x398
  • A - 0x3B8
  • b - 0x0F8
  • C - 0x270
  • d - 0x1E8
  • E - 0x278
  • F - 0x238
  • . - 0x004

Le programme est bêtement formé de LUTs (afficheur, LED et digits) et de boucles (SPI bit-banging et selection de l'afficheur/LED).
LED display first try


Chaînage
Le pin 2 est une sortie du registre à décalage et n'est pas câblée, mais il est possible de chaîner plusieurs afficheurs, seule la "longueur" du mot est doublée (40bits).
chaining LED displays


Références

icon Tags de l'article : ,