Monorailcat

Récupération de BIOS

icon 2015-09-22 - No comments

Il peut arriver à tout le monde de vouloir mettre à jour un bios, et de le rater, même si c'est de plus en plus difficile.

Ce bricolage fonctionne avec toutes les cartes mères qui utilisent des mémoires EEPROM montées sur un socket.

Il faut récupérer une puce compatible avec celle équipant la carte-mère d'origine, utilisant les mêmes pins, les mêmes tensions de service et d'écriture/effacement, et une taille supérieure ou égale.

Dans mon cas, j'utilise une carte-mère MSI MS6147 (Chipset Intel BX, slot 1), qui a une EEPROM Winbond W29C020-12 montée dans un socket DIL. La puce de remplacement est une Macronix MX29F002T trouvée sur une carte mère HS.

Pour être sûr de la compatibilité entre ces deux puces, il faut vérifier le contenu de leurs datasheets :
  • DIL/DIP-32 package
  • 5V operation : read, write, erase
  • 256k × 8bits
Les temps d'accès n'ont pas l'air de poser problème.

Sauvegarde du BIOS
Avant tout, on arrête le pc, et on utilise un tournevis plat pour enlever l'EEPROM d'origine. Il faut bien faire attention à ne pas abimer la carte mère avec le tournevis, ni plier les pattes de l'EEPROM.
Ensuite, on pose la carte mère horizontalement et on pose la puce d'EEPROM sur son socket. Une fois le pc démarré et le système d'exploitation chargé, on va sauvegarder le contenu de l'EEPROM dans un fichier.
Ensuite, on enlève la puce de son socket (sans tournevis), et on pose sa remplaçante sur le socket.
Il est ainsi possible de flasher la seconde puce d'EEPROM avec le contenu de la première, ou même avec un contenu sans rapport (un BIOS de carte SCSI ou d'une autre carte-mère, par exemple).
EEPROM chip swapping

Récupération
Il suffit de faire exactement pareil que pour la sauvegarde, en échangeant les deux puces.

Software
En utilisant Unix, flashrom permet de lire, effacer, écrire et vérifier de nombreuses mémoires avec de nombreux programmateurs, peu importe le contenu de la mémoire.
Les programmes livrés d'origine avec les cartes mères (awdflash, aflash ou amiflash) utilisent DOS et sont souvent limités à un type de BIOS/mémoire.

Modification de BIOS
Les BIOS des cartes mères sont fragmentés en plusieurs parties :
  1. Bootblock : chargeur de boot, un bios "failsafe" qui va charger le vrai bios, ou le reflasher depuis un CD en cas d'échec.
  2.  Une "table de fichiers" sommaire qui va charger les différentes parties du BIOS (compressées) en mémoire au bon moment.
  3. Le Setup : ce qui va permettre de modifier différents paramètres sauvegardés dans une SRAM.
  4. Les "Option ROM" : des drivers de cartes réseau/graphique/SCSI.
  5. Les Logos : des images bitmap en plein écran ou en plus petit.

Des outils comme awbedit, modbin, cbrom ou amibcp, pour DOS ou Windows permettent d'extraire/ajouter ou de modifier le contenu de BIOS.

Les valeurs par défaut du setup sont souvent intéressants à modifier. Il est aussi possible d'afficher certaines options cachées d'origine (parfois sans effet ou dangereuses).
S'il reste de la place libre, il est possible de rajouter des "Option ROM", ou d'enlever celles qui sont inutiles. Supprimer les logos permet de gagner facilement de la place. Il est même possible de faire fonctionner un OS minimaliste (comme DOS) directement.

Notes
Il est aussi possible d'utiliser des EPROM à UV ou OTP, ou des EEPROMs, mais avec une tension d'effacement ou d'écriture différente, tant qu'elles sont compatibles pin-à-pin. L'effacement ou l'écriture d'une EPROM ou d'une EEPROM avec une tension supérieure à celle que fournit la carte-mère sera impossible, mais sa lecture ne posera pas de problème.
Dans le cas d'une carte-mère fournissant une tension d'écriture/effacement supérieure à celle supportée par l'EEPROM, il est possible d'isoler la patte Vpp, et son effacement/écriture seront impossible, mais sans dommages.

Les cartes mères récentes utilisent des sockets PLCC, qui rendent le démontage difficile, mais il est possible de glisser une ficelle sous le socket. Les cartes mères récentes utilisent parfois des puces avec un bus parallèle 3.3V, ou série SPI ou 4bits, incompatibles entre eux.

Références/Liens

icon Tags de l'article : ,

Digital Personal Workstation : Installation de RedHat 6.2

icon 2015-09-18 - No comments

Premier boot
Au premier boot, Alphabios chargeait le noyau d'une redhat, mais le système de fichiers est abimé et plusieurs périphériques ne sont pas détectés. J'ai décidé d'utiliser SRM et d'installer une redhat sur un autre disque dur.

Activation de SRM
La procédure pour passer d'AlphaBIOS à SRM n'est pas forcément évidente :
  1. Appuyer sur F2 au démarrage de la machine (chargement d'AlphaBIOS)
  2. Choisir CMOS Setup
  3. Choisir Advanced CMOS Setup avec F6
  4. Changer Console Selection d'AlphaBIOS à OpenVMS Console (SRM)
  5.  Sauvegarder avec F10
  6. Redémarrer en coupant l'alimentation

Il est aussi possible de repasser de SRM à AlphaBIOS en tapant au prompt de SRM :
set os_type NT

Boot sur CD
La première étape est de trouver le nom du lecteur cdrom avec la commande show device
>>> show device
dka0.0.0.15.0 DKA0 RZ1CF-BF 1614
dqb0.0.1.13.0 DQB0 COMPAQ CDR-8435 0013
dva0.0.0.0.0 DVA0
ewa0.0.0.9.0 EWA0 08-00-2B-86-26-5B
pka0.7.0.15.0 PKA0 SCSI Bus ID 7 5.57

Ici, la première lettre correspond au type de périphérique : disque, ethernet, ..., la seconde correspond au périphérique (SCSI, IDE, floppy), la troisième au canal/contrôleur, et la dernière à l'ID du périphérique.
Ainsi dqb0 est un disque sur le 2nd canal IDE. D'après son nom, on remarque que c'est un lecteur de CD.

SRM interprète les systèmes de fichiers (à travers aboot), par conséquence, il faut aussi connaître le chemin des fichiers à charger : le noyau et l'initrd (si-nécessaire).
On peut booter RedHat 6.2 avec la commande suivante :
boot dqb0 -file /kernels/generic.gz -flags "initrd=/images/ramdisk.img root=/dev/hdc"
Ou bien pour Debian Woody :
boot dqb0 -file /boot/linux -flags "root=/dev/hdc"

Partitionnement du disque
Le disque est partitionné en utilisant le disklabel d'UNIX plutôt que le MBR de DOS.
Par défaut, la slice c représente le disque entier. On va ajouter trois autres partitions :
  • a : 2Gio, système de fichiers /
  • b : 512Mio, swap
  • c : 18.4Gio, disque complet
  • d : 15+Gio, /home
Il reste à indiquer le type de chaque slice, à activer le flag de boot sur la slice a, et les formater (sauf c, évidemment).
Il faut aussi faire attention à ne pas faire commencer la première slice sur le premier secteur du disque, à priori pour laisser de la place au bootloader.

À partir de cette étape, RedHat s'installe comme sur un PC, en installant tous les paquets.

Bootloader
Avant de terminer l'installation de RedHat, il faut installer aboot sur le disque dur, avec la commande "swriteboot".

Pour booter sur le disque dur, il suffit de changer les paramètres boot_dev, boot_file et boot_osflags. Ainsi il est possible de booter directement en tapant seulement boot au prompt de SRM.

Changement de noyau
Pour une raison inexpliquée, une fois aboot installé sur le disque, il est devenu impossible pour le noyau d'origine de Redhat de détecter les disques SCSI. L'utilisation du noyau 2.2.22-generic de Debian Woody a corrigé le problème.

Il faut booter sur le cd de Debian Woody, basculer sur la console (alt + F2), puis monter la partition /, et ensuite copier le noyau présent sur le CD, pool/main/k/kernel-image-2.2.22-alpha/kernel-image-2.2.22-generic_2.2.22-2_alpha.deb, le décompresser avec ar puis tar, et enfin copier les modules dans /lib/modules/ et l'image dans /boot/ (il est nécessaire de la décompresser avec deflate ou gzip, selon la version de aboot installée).

Recompilation d'un noyau
L'USB et le réseau restent non fonctionnels.
Le contrôleur réseau est reconnu par les modules de4x5 et tulip, mais je n'ai pas réussi à les faire fonctionner.
Par contre il est possible d'ajouter une carte réseau PCI sans aucun problème, une Realtek 8139 (rtl8139 ou 8139too) a fait l'affaire.
La configuration du noyau est utilisable sur le lien précédent.

Bricolage
L'horloge système ne semble pas fonctionner correctement en 2015, en se remettant toujours en 1995. (même en la réglant dans SRM ou avec hwclock).
Une correction rapide va changer l'année à la fin du chargement d'init, en rajoutant une ligne au fichier /etc/rc.local :
date $(date +%m%d%H%M2015).
L'année 2015 est à adapter manuellement (on peut aussi améliorer le script pour changer automatiquement l'année).

Utilisation
screenshot RedHat 6.2 Alpha
(Image non-redimensionné)

Références/Liens

icon Tags de l'article : , , ,

Upgrade de mémoire graphique

icon 2015-09-15 - No comments

Sur d'anciennes cartes graphiques, la définition et la profondeur de couleur sont limitées par la quantité de mémoire :
H*V*bpp/8 : avec 1Mio de VRAM, en 256 couleurs, on ne peut afficher que du 1024*768
Avec 2Mio, on peut théoriquement arriver à 1600*1200 en 256 couleurs, ou 1024*768 en 64k couleurs.

S3 Vision 864
Mais les cartes de cette génération contenait souvent des sockets pour ajouter de la mémoire, et lorsqu'il n'y a pas de socket, il y a souvent des empreintes pour souder les puces de RAM.

Mémoire d'origine : Micron MT 4C16270DJ-7
  • Boitier : SOJ 40 pins (JEDEC)
  • Organisation : 256k x 16bits
  • Tension d'alimentation : 5V
  • Temps d'accès : 70ns

Mémoire rajoutée : Samsung/SEC KM416C256D-6
  • Boitier : SOJ 40 pins (JEDEC)
  • Organisation : 256k x 16bits
  • Tension d'alimentation : 5V
  • Temps d'accès : 60ns

Il faut vérifier que la mémoire ait le même boitier, la même organisation et la même tension d'alimentation, au risque d'un non-fonctionnement, ou d'une destruction de la ram ou de la carte graphique.

VRAM upgrade

Si la mémoire ajoutée est plus lente que la mémoire d'origine, on prend le risque d'erreurs d'écriture et de lecture (la mémoire EDO est souvent deux fois plus rapide que la mémoire Fast Page). Mais normalement les problèmes doivent arriver uniquement quand on utilise la mémoire rajoutée (il ne devrait y avoir aucun problèmes en console, dans le BIOS ou avec DOS).

1MB vs 2MB

La mémoire de ce type est difficilement trouvable en puce nues. Par contre il est possible de la dessouder depuis des cartes graphiques ou des barrettes de mémoire (SIMM 32bits à 2 ou 4 puces/barrette).

icon Tags de l'article : ,

Digital Personal Workstation : Hardware

icon 2015-09-12 - 1 comment

Hardware
Cette station de travail était déjà un monstre à sa sortie en 1998 : processeur 64bits entre 433 et 600MHz, 128Mio à 1.5Gio de ram, le tout en 1998 (les gens normaux se contentaient d'un processeur 32 bits à 300MHz et 64Mio de ram).

Digital Personal workstation 500au

Configuration :
  • Processeur : DEC Alpha 21164 (EV56) - 500MHz
  • Bcache : 8Mio
  • RAM : 512Mio SDRAM ECC-REG (2*256Mio, 4 slots libres)
  • Disque : Seagate Cheetah 18Gio, 10krpm U160 (remplacé)
  • Lecteur CD-ROM IDE
  • Lecteur disquette
  • Alimentation : Lite-ON PS-5032-1F3 : 300W ATX + connecteur propriétaire
  • Carte mère : MiataGL + Riser
  • Carte video : S3 Trio 1Mio (remplacée)

Extensions :
  • Carte riser : 3 PCI 32bits, 2 PCI 64bits, 3 ISA 16bits, 2 IDE, disquette, connecteur MAU (extension réseau), connecteurs game/midi/audio (extension audio).
  • Carte mère : 2 USB, Ports PS/2 clavier/souris, 2 Ports série RS-232 (câblage standard), Port parallèle IEEE-1284.
  • Carte audio : ESS 1887 intégrée à la carte riser, extension avec line-in, line-out et port midi, pas de synthétiseur midi.
  • Carte réseau : DC21143 intégrée à la carte riser, extension avec un PHY ethernet.

L'intérieur du boitier est très bien rangé, avec des câbles sur-mesure. Tout est fait pour que rien ne bouge ni ne vibre.
Digital Personal workstation 500au

Aux premiers boots, la carte réseau et la carte scsi étaient détectées aléatoirement et le système plantait avec SRM ou pendant le chargement du noyau. Il a été nécessaire d'enlever la poussière et de nettoyer les connecteurs des slots de RAM et de la carte riser.
Le support en plastique noir en forme d'équerre est indispensable lorsque le boitier est à l'horizontale, pour éviter à la carte mère de plier sous son propre poids.

Les barrettes de SDRAM sont clairement impressionnantes (256Mio, en 1998) :
SDRAM ECC-REG

Les cartes système sont assez encombrantes et denses :
Miata system board
Miata riser board

Extension sound and network boards

Il faut aussi remarquer que toutes les entrées-sorties sont protégées par des transceivers isolés.

Références/Liens

icon Tags de l'article : , ,

Canon Pixma MX700 : Error U051, Error 6A80

icon 2015-09-11 - No comments

J'avais une imprimante Canon Pixma MX700 récupérée parce qu'elle affichait "Ink absorber is full" et refusait d'imprimer.

Reset
Après quelques minutes de recherches la procédure de reset arrive :
  1. Maintenir appuyé le bouton "triangle"
  2. Presser le bouton "Power" 2 à 5 secondes
  3. Relacher le bouton "triangle"

L'imprimante doit s'initialiser, effectuer des tests, puis afficher le message "service-mode". En l'arrêtant puis au démarrage suivant, l'erreur n'est plus prise en compte.

Il est possible que le "réservoir d'encre usée" soit plein, mais ce ne sont pas les quelques mL d'encre contenus dans une cartouche qui vont fuire et souiller les environs de l'imprimante.

Déblocage de la tête

Après un an, l'imprimante affichait "Error 6A80" et refusait d'imprimer. En recherchant, ce code d'erreur correspond à "Head locked", soit "chariot d'impression bloquée".
En ouvrant le capot de l'imprimante, le chariot doit normalement se centrer pour permettre de changer les cartouches, ce qui échoue. on peut essayer de tirer/pousser le chariot à la main sans succès.

Sans idée, j'ai tout démonté, puis cassé un clip/ressort servant à verrouiller la tête lorsque l'imprimante est éteinte. Le pivot du clip étant usé, il s'est mis de travers et a bloqué le chariot en position verrouillée.

Au démarrage suivant, l'imprimante effectue un test en faisant bouger le chariot, avec succès.

Après d'autres recherches, ils serait possible de débloquer temporairement ce clip en passant un bout de papier épais sous le chariot, jusqu'à ce qu'il soit débloqué.

À noter qu'il est possible de tester l'imprimante avec le capot ouvert en bloquant le capteur (A).
Cover sensor

Tête non-installée
Au remontage, l'imprimante affichait "Error U051", correspondant à "No print head installed. Cartridge Error", soit "Tête d'impression non-installée, erreur de cartouches".

J'ai essayé de nettoyer les connecteurs des têtes et des cartouches, de démonter entièrement le chariot pour le vérifier et de remettre le firmware à zéro, sans succès.

Au final, l'imprimante à été sauvagement démontée pour cannibaliser les pièces intéressantes

Liens/Sources

icon Tags de l'article : ,

Canon Pixma MX700 : Alimentation

icon 2015-09-05 - 1 comment

Cette imprimante a une alimentation 100-240v → 24V 0.5A et 32V 0.85A, modèle K30290.
Canon Pixma PSU

Seulement elle ne fonctionne pas sans que la carte système de l'imprimante ne lui renvoie pas de signal d'activation.

En regardant, on identifie le brochage :
  1. 32V
  2. GND
  3. 24V
  4. GND
  5.  ENABLE

Si le signal enable est en l'air ou à 0V, l'alimentation est en mode "sleep", et les rails 32V et 25V sont respectivement à 10V et 7.5V.

Par contre le signal Enable doit recevoir une tension d'environ 3V pour l'activation, sur la base du transistor NPN Q5 qui rajoute R26 en parallèle de R24 sur le réseau de feedback de l'alimentation.
Il serait possible de relier le signal Enable à une sortie de l'alim en changeant la résistance R27, mais le plus simple est de dessouder R27 et de court-circuiter le collecteur et l'émetteur de Q5.
Canon Pixma PSU hack

La plus grosse difficulté est d'ouvrir le boitier en plastique clipsé.
Il n'y a pas de solution idéale : ça s'ouvre en forçant avec un tournevis plat, et en cassant quelques clips.
Canon Pixma PSU clips

icon Tags de l'article : , ,

Sun Blade 100

icon 2015-08-21 - No comments

Hardware
Cette station de travail fait partie du "bas de gamme" de Sun en 2002.
La solution pour avoir une station de travail "cheap" était d'utiliser beaucoup de pièces de PC.
Sun Blade 100 face/back

Par rapport aux autres machines Sun, on remarque que tous les connecteurs sont "standard", avec un clavier et une souris à brancher en USB, et un écran en VGA.

Il n'y a que le CPU et la carte mère faits sur-mesure par Sun :
Sun Blade 100 motherboard

On peut voir que pas mal de capas sont à changer... Mais ça ne semble pas rendre la machine instable.
Sun Blade 100 bad caps

La RAM est de la SDRAM ECC unbuffered (commune sur certains serveurs et stations de travail de 1999 à 2003), le disque dur et le lecteur CD-ROM sont en IDE et l'alimentation est au format ATX, compatibles avec touts les PC de l'époque.

Configuration :
  • Processeur : Sun SPARC IIe 64-bit RISC - 500MHz
  • RAM : 640Mio (128 + 512Mio) SDRAM ECC Unbuffered PC-133 (2 slots libres)
  • Disque dur : Seagate ST320011A - 20Go, 7200rpm, ATA100, 2Mio cache
  • Lecteur CD-ROM
  • Lecteur de disquettes
  • Lecteur Smart-Card
  • Alimentation : Mitac X-200/P (200W)
  • Carte Mère : -03 Rev 50

Extensions :
  • Carte Riser : 3 slots PCI, 2 Canaux IDE
  • Carte Mère : 4 USB, 2 Firewire IEEE-1394, Port série RS-232 (câblage standard), VGA, Port parallèle IEEE-1284, 4 jacks audio.

Software
La bête fonctionne avec Sun Solaris 8 (SunOS 5.8), un UNIX des années 90 conçu pour les stations de travail.

Au démarrage, la machine effectue un self-test (POST), puis charge le noyau, démarre tous les services (Consoles, SSH, affichage X11). En moins d'une minute on arrive à un menu qui permet de s'identifier.
Solaris 8 login menu

En ayant créé un utilisateur, la machine utilise CDE (Common Desktop Environment), qui ressemble étrangement à XFCE et aux premières versions de KDE, qui l'ont ouvertement copié.
On peut utiliser le navigateur web Netscape, taper quelques commandes dans un terminal, mais pas grand chose de plus, puisque la machine semble avoir été "nettoyée" de tout programme autre que l'OS.
Solaris 8 CDE

On peut avoir un peu d'informations sur la machine et le système d'exploitation :
# uname -a
SunOS unknown 5.8 Generic_108528-29 sun4u sparc SUNW,Sun-Blade-100

Avec SunOS 5.8 sur un processeur sparc et une machine Sun Blade 100

# psrinfo -v
Status of virtual processor 0 as of: 08/21/15 14:13:43
on-line since 08/21/15 12:07:44.
The sparcv9 processor operates at 502 MHz,
and has a sparcv9 floating point processor.

Ce qui est un peu plus clair sur le processeur (SPARC IIe, 64-bit RISC, 256Kio de cache).

On cherche des informations sur les disques :
# swap -s
total: 25592k bytes allocated + 8648k reserved = 34240k used, 2546648k available
bash-2.03# swap -l
swapfile dev swaplo blocks free
/dev/dsk/c0t0d0s1 136,1 16 4195280 4195280


# df -k |grep dsk
/dev/dsk/c0t0d0s0 1931310 1280337 593034 69% /
/dev/dsk/c0t0d0s7 15212970 636 15060205 1% /export/home


On voit que le disque est partitionné "à la UNIX", avec une hiérarchie contrôleur ; target (SCSI ID) ; disque ; partition (slice).
On a donc 1.9Go pour la racine du système (/) et 15Gio pour les données des utilisateurs.

Pour le reste des informations, la commande qui est la plus bavarde est dmesg, qui donne les informations du système en chargeant le noyau, et les informations de chaque périphérique en chargeant leurs pilotes.

Configuration
Avec beaucoup de chance, un post-it contenant le mot-de-passe root était collé sous le capot.

Seulement, au premier boot, la souris en USB ne fonctionne pas avec X11, ni avec la console, mais ça m'a permis de découvrir que Solaris est très différent des BSD et de Linux.

Il a suffit de se connecter en SSH pour configurer la machine :
  1. Utilisation du BASH au lieu du KSH (on y gagne la complétion automatique et la mémoire des commandes précédentes)
  2. Configuration du réseau : DHCP était déjà activé, mais les serveurs DNS étaient à renseigner dans /etc/resolv.conf
  3. Ajout d'un utilisateur : commande useradd
  4. Tentative de configuration de la souris

Il a été possible d'identifier le nom du serveur graphique avec la commande
/usr/ucb/ps -auxww
Qui nous donne (entre 45 processus) les programmes dt et Openwin, situés dans /usr/dt/ et /usr/openwin, mais dont la configuration est à copier de /usr/openwin/etc/ (configuration par défaut) vers /etc/openwin/server/etc (configuration modifiée).

On remarque que la souris devrait être mappée comme /dev/mouse. En réalité, elle est avec le clavier dans /dev/usb/hid{0,5}.
On peut tenter de modifier le lien /dev/mouse pour pointer vers la souris ou de modifier le fichier /etc/openwin/server/etc/OWconfig, sans succès (soit X crash, soit la souris n'est pas fonctionnelle). C'est bêtement en essayant une autre souris qu'on arrive à un un système fonctionnel (la mollette ne fonctionne pas, mais ce n'est pas critique).

Compatibilité
Souris fonctionnelles : Logitech Premium Wheel Mouse M-BT58 (2005), Microsoft Optical Mouse Blue USB (2005)
Souris non-fonctionnelle : Microsoft Comfort Mouse 3000 (2011)

Références

icon Tags de l'article : , , , ,

Imprimante Matricielle Epson LX-800

icon 2015-02-19 - No comments

J'ai pu tester une imprimante matricielle Epson LX-800 de récupération.
Au premier test, rien ne fonctionne en la branchant à un PC via un port parallèle.
Il a été nécessaire de retirer la carte d'interface série pour pouvoir utiliser le port parallèle.

Après un nettoyage et l'installation des drivers pour Windows (driver par défaut de Windows XP), tout fonctionne, voir video :

icon Tags de l'article :

Afficheurs à LEDs

icon 2014-12-22 - 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 : ,

Boot PXE

icon 2014-11-02 - No comments

Il est possible de booter une machine sans disque dur, ni lecteur cd (ni même de clé usb).
Beaucoup de cartes réseaux (j'utilise des 3com 3C905CX) ont une EEPROM qui contient un chargeur de boot réseau.
Il y a donc plusieurs parties:
  • Serveur DHCP
  • Serveur TFTP
  • Image(s) PXE
  • Boot du noyau

Il faut d'abord configurer le serveur DHCP, pour qu'il donne les paramètres de boot à la machine qui va le lui demander. Pour l'instant, je n'ai pas réussi à configurer dnsmasq pour avoir un serveur tftp sur une autre machine que le serveur dhcp, alors j'ai adapté...
Comme le bootloader embarqué dans la carte va charger un autre bootloader (undionly.kpxe), qui lui, va charger le noyau, on va interroger le serveur DHCP deux fois. Ces deux accès sont distingués par le flag "userclass"

dhcp-boot=undionly.kpxe
dhcp-userclass=gPXE-booted,"gPXE"
dhcp-boot=net:gPXE-booted,http://192.168.3.3/pxe/boot.gpxe


dnsmasq est tellement bien fait qu'il a aussi un serveur tftp embarqué. Il suffit de rajouter les lignes suivantes dans le fichier /etc/dnsmasq.conf

enable-tftp
tftp-root=/tmp


Comme le routeur a peu de flash, j'ai mis la raçine du serveur tftp dans /tmp (tmpfs) pour éviter les problèmes. Mais il faut rajouter un script qui télécharge l'image au boot de la machine.
undionly.kpxe est une image de gPXE qui permet de booter sur n'importe quel protocole (même http).

Video du boot d'un PC depuis le réseau:

icon Tags de l'article : , , , ,