Monorailcat

Gateway 2000 ColorBook 4 : Teardown

icon 03/10/2016 - No comments

J'ai récupéré un lot de plusieurs PCs portables vintage. Ce Gateway 2000 de 1994 était visuellement en bon état, mais nécessitait un contrôle et quelques modifications et probablement quelques réparations.
Gateway 2000 Colorbook 4 Overview


Hardware
Comme les PCs de cette époque, celui-ci est assez compact :, soit environ les dimensions d'un PC portable 13" actuel, mais nettement plus épais.
Comme Gateway n'a jamais vraiment fabriqué de PC portables, celui-ci est conçu et fabriqué par Sotec et Made in Japan ("All the best stuff is made in Japan").

opened Colorbook

Configuration :
  • Processeur : Intel 486DX4-75MHz
  • RAM : 8Mio (4Mio onboard + 4Mio extension) FPM
  • Chipset : PicoPower (Cirrus Logic) PT86C368-B + unknown Intel
  • Video chip : Cirrus Logic CL-GD6235 256kio VRAM
  • Disque dur : 260Mo 2.5", remplacé par un disque de 420Mo
  • Lecteur de disquettes
  • Écran : LCD 10.5" 640×480, (DSTN RGB)
  • Trackball monté dans un tiroir
  • PCMCIA : 2 slots type II

Démontage
Aucune documentation n'est disponible facilement, mais le démontage et le remontage sont assez intuitifs.
Motherboard (top)
Motherboard (bottom)
Les pastilles marron des deux côtés du PCB sont en kapton, pour rendre robustes les straps et fils soudés pour corriger des erreurs de routage. Cette carte-mère en contient un assez grand nombre, probablement parce que la modification d'un PCB à plus de 6 couches (probablement 8 ou 12, vu la densité et l'épaisseur) devait être assez coûteux.


Modifications/Réparations

Batterie CMOS
La batterie d'origine est une pile au Lithium 3.6V, mais n'a seulement une durée de vie théorique de 5 à 10 ans (parfois jusqu'à 15 ans en pratique).
CR2032 in place of a failed Li CMOS battery
Elle a été remplacée par un socket de piles CR2032, 3V, très courantes. La tension ne pose pas de problèmes, puisque la pile est câblée directement sur un circuit LV-CMOS (2.7-5.5V).

Alimentation
Ce PC utilise un connecteur d'alimentation propriétaire à 3 pins et accepte du 19V.
Pour les premiers tests de la machine, j'ai dû le remplacer par des câbles et un affreux bricolage, puis après des tests concluants, j'ai pu câbler un connecteur jack, qui a nécessité de limer une partie du boitier et de fraiser le PCB placé au dessus de la batterie.
proprietary power connector replaced by a barrel jack.

Écran
Les deux potentiomètres permettant de régler la luminosité et le contraste de l'écran LCD ont de nombreux faux-contacts. Un nettoyage à l'air comprimé a suffit à les rendre plus fiable. Leur remplacement est délicat, puisqu'ils ont une forme assez peu courante et sont soudés en surface.
cleaned contrast/brightness potentiometers
Il faut faire attention à ne pas toucher la partie en haut du PCB quand le pc fonctionne, surtout entre le transformateur et le connecteur du backlight (600V~1.2kV), il y a des risques de blessures.


Software
En général, les 486 datent d'entre 1990 et 1995, et ont commencé par être utilisés avec DOS/Windows 3.x. Mais de nombreuses machines ont été mises à jour avec Windows 95 avec plus ou moins de succès.

Comme il n'y a pas de lecteur de CD, j'ai copié les fichiers de Windows 95 en mettant le disque dur dans un autre PC. Puis installé l'OS sans disquette ni CD.
J'ai branché une carte réseau PCMCIA (Xircom RE-100), qui m'a permis d'installer le reste des programmes depuis le réseau (protocole SMB).

Par contre, Windows 95 utilise beaucoup de RAM, et 8Mio de RAM sont parfois un peu limités, et comme le disque dur est vraiment lent, le chargement de chaque programme (et les transferts vers le fichier de swap) prennent plusieurs secondes.

La taille du disque dur est aussi limitante :
ProgrammeTaille (Mio)Occupation
Windows 95 (installé)13032%
Windows 95 (fichiers d'installation)10526%
Ms Office 97 (minimal)~60~15%
Internet Explorer 4.017.84.4%
Mosaic 3.02.62 (supprimé)0
Netscape 3.046.621.7%
ACDSee 3.03.76<1%
Adobe Acrobat Reader 3.02.68<1%
Matlab 4.07.261.8%
Mathematica 2.29.462.35%
Fichiers divers~15
Total360Mo90%
Curieusement, faire fonctionner d'anciens programmes permet de faire presque la même chose que sur une machine récente.
Matlab n'est pas spécialement lent pour afficher des graphes, même en 3D (probablement parce que Java n'était pas encore utilisé). Par contre les anciens navigateurs ne sont absolument pas adaptés aux sites web actuels (pas de support du CSS, javascript mal interprêté). Ce qui fait que NCSA Mosaic a été désinstallé au profit de Netscape Navigator parce qu'il plantait en tantant d'executer du javascript.

Utilisation
En utilisation pratique, le PC est très léger, l'épaisseur du boitier ne pose aucun problème et le PC ne chauffe quasiment pas (carte réseau PCMCIA exclue). Le boitier épais permet même d'avoir un clavier avec une course de 3.5mm (haut du clavier) à 5mm (bas du clavier), assez confortable, mais trop étroit. Par contre la qualité de l'écran DSTN est assez discutable (angles de vision de 5~10°, trainées horizontales et verticales (crosstalk), reflections, rétro-éclairage peu homogène. Les écrans LCD ont beaucoup progressé depuis...
BSOD on a DSTN display

icon Tags de l'article : , , ,

Compaq Deskpro 386s

icon 17/09/2016 - No comments

J'ai récupéré un Compaq Deskpro 386s qui date probablement de 1988~1989. La machine était apparemment en bon état, et il ne manquait que le disque dur.
Complete machine

Machine
La majorité des composants sont d'origine, mais il y a eu quelques upgrades :
  • Carte-mère :
  • CPU : Intel 80386SX-16 (16MHz)
  • FPU : Intel 80387SX-16 (16MHz)
  • RAM : 1Mio sur la carte mère + 4Mio dans un slot et 4Mio dans un socket mezzanine (9Mio au total), bus 16bits à 16MHz
  • Carte graphique : WD Paradise PVGA1A en socket mezzanine
  • Carte réseau : 3Com 3C509B-tpo (Etherlink III) 10Mbit/s, ISA
  • Lecteurs disquette : 1.44Mo 3.5" + 1.2Mo 5.25"
  • Disque dur : 130Mo hors-service
  • Alimentation propriétaire Compaq/Astec 100~150W

Teardown

Le boitier s'ouvre avec les 3 vis à main à l'arrière du boitier. L'intérieur est compact (Compaq) et plutôt dense, avec le boitier ouvert :
Deskpro 386s opened box

Le rack à disques durs/floppy s'enlève en dévissant deux vis à l'avant du boitier, puis en le pivotant autour de ses crochets arrière. Il est plus facile d'enlever d'abord la carte de DRAM pour avoir de la place.
Deskpro 386s system board

La carte graphique Beeblebrox II avec une puce Paradise PVGA1A et 256kio de DRAM est vissée contre la carte-mère. Il faut aussi enlever deux écrous autour du connecteur VGA pour la retirer.
Compaq beeblebrox 2 video board
La carte graphique est notée 001182-001

En démontant la carte graphique, on accède à toute la carte-mère :
Compaq deskpro motherboard
La carte mère est notée 000954-001

La carte DRAM est en général faite par Compaq avec des composants traversants (pour les versions 1Mio). Celle-ci fait 4Mio et est fabriquée en 1995 par Kingston avec des composants SMD (mémoires DRAM FPM 70ns datant d'après 1993).
Compaq 16bit/16MHz DRAM board
La carte est recouverte d'une seconde carte mezzanine de 4Mio (il est possible d'en ajouter une seconde).


Réparations

Connecteur VGA
Sur plusieurs machines et écrans d'avant 1995, il est fréquent que le pin 9 serve de détrompeur. Or, cela pose problème avec des écrans récents, sur lesquels le pin 9 est câblé, et empêche le branchement du câble.
drilling a keyed VGA connector
Comme ce pin est une sortie de la carte graphique et n'est utilisé que pour des accessoires (convertisseurs VGA -> WTF), il ne pose aucun problème de de retirer le détrompeur (avec une perceuse tenue orthogonale au connecteur, à <10mm de profondeur max, et un foret de 1mm).


Horloge RTC
Comme de nombreux PCs de cette époque, l'horloge RTC est une puce discrète, dans ce cas, alimentée par une batterie externe au Lithium.
Cette batterie était vide et a été remplacée par le précédent propriétaire. Sauf qu'il n'a pas vérifié le brochage de la pile, et a probablement endommagé une piste du PCB ou bien un composant (résistance, fusible).

Par contre, cette carte-mère a été conçue avec l'horloge RTC sur un socket DIL. Ainsi, j'ai remplacé la puce MC146818P par une DS1287 rénovée (voir la section NVRAM de l'article sur le Sun Ultra 1).

BIOS
Sur ces machines, le BIOS n'a pas de programme de setup, du coup il est nécessaire de booter sur une disquette (SP0308 ou SP0542) pour changer les paramètres du BIOS.

Le disque dur est à remplacer, mais il faut en trouver un compatible avec les types pré-configurés dans le BIOS d'origine.
Comme c'était le cas d'aucun de mes disques durs, j'ai utilisé une géométrie proche de mon IBM H3256 donné pour 872 Cylindres, 16 têtes et 36 secteurs, géométrie "incluant" celle du type 33, même s'il ne reste plus que 120Mo disponibles.
Pour éviter les erreurs, j'ai rempli une feuille de calcul avec les types de disques Compaq, qui devrait être plus exacte qu'une comparaison de tête.

Software
(update 25.09.2016)
Comme le disque dur d'origine était absent, j'ai installé un OS et des programmes du début des années 1990 :

Dans l'ordre :
  • MS-DOS 6.22 (3 disquettes),
  • 3Com 3C509B driver (2nde disquette),
  • Microsoft LAN-Manager (2 disquettes),
  • F-Prot antivirus 3.16f (copié par le réseau),
  • Windows 3.11 (8 disquettes copiées par le réseau),
  • PKZIP (copié par réseau),
  • ACDSee 1.4 (copié par réseau, non-fonctionnel en VGA),
  • NCSA Mosaic 2.0a (copié par réseau, non-fonctionnel sans service de socket),

J'ai pu trouver plusieurs drivers pour la puce graphique Paradise PVGA1A, seulement, je n'ai pu en faire fonctionner aucun avec cette machine, et du coup, tout est limité en 640x640@60Hz, 16 couleurs (dommage pour un écran 19" CRT).

La copie de fichiers par réseau n'est pas indispensable, mais elle permet d'éviter les problèmes liés à la fiabilité des disquettes.

Comme on pourrait s'y attendre, des programmes de 1994 sur une machine de 1988, c'est lent.
DOS démarre lentement, du fait du test de la mémoire par Himem, mais le reste fonctionne relativement rapidement.
Windows démarre en 45s, et est un peu lent à l'utilisation, probablement à cause de tous les périphériques et du bus mémoire interfacés sur un bus 16 bits. Par contre, le fait d'avoir 8Mio de RAM installés permet d'executer quelques programmes en plus de Windows.

Je n'ai pas réussi à installer de navigateur Web (NCSA Mosaic et Netscape nécessitent Winsock, qui ne peut apparemment pas fonctionner en même temps que le partage de fichiers).
Windows 3.11 running on a Compaq Deskpro 386s

Comme surprise, j'ai aussi pu découvrir le virus Parity-Boot.B, probablement caché sur des disquettes de récupération.

Références

icon Tags de l'article : , ,

Serveur

icon 05/09/2016 - No comments

Le serveur précédent commence à avoir des performances limitées (il date quand même de 2000), et j'ai pu récupérer un HP Compaq DC5800 de 2009 en bon état.

Hardware
La machine a un processeur Intel Pentium E5200 (2-Core, 2.5GHz, LGA775) et deux barrettes de 1Gio de DDR2 (avec deux slots libres), mais le disque dur et le lecteur optique/disquette manquent ou sont hors-service.
HP Compaq DC5800 front cover

On commence par tout vérifier, nettoyer, puis remettre en état tout ce qui en a besoin :
  • Memtest avec la mémoire,
  • Flash du dernier BIOS à jour,
  • Nettoyage des ventilateurs/radiateurs,
  • Remplacement de la pâte thermique du processeur,

Face avant
Le lecteur de disquette est manquant et le lecteur optique ne fonctionne pas, du coup je les ai enlevés. Sauf que le refroidissement de la machine est fait de telle sorte que l'air doit être aspiré par le côté avant droit, et soufflé par le côté arrière gauche. Quand le boitier est ouvert ou que la face avant manque, le disque dur est mal refroidi, mais il est possible de découper une plaque de plexiglass pour remplacer les caches d'origine.
plexiglass drives cover

Disque dur
Le disque dur était manquant quand j'ai récupéré la machine, mais les vis, clips et bushings manquaient aussi, ce qu'il a fallu adapter.
J'ai pris des vis 6-32 "long sleeve" d'un rack à disques de serveur IBM et des bushings de lecteur CD. L'ensemble rentre dans l'emplacement d'origine et se clipse fermement (pas de vibration).
HDD screw/bushing assembly

Software

Mot-de-passe BIOS
Les machines d'entreprises ont souvent des BIOS différents de ceux des PCs habituels. Ici, le mot-de-passe protégeant BIOS est stocké dans une mémoire EEPROM au lieu d'être dans une SRAM. Dans ce cas, enlever la pile quelques secondes n'affecte que l'horloge RTC.

  1. Débrancher le secteur,
  2.  Ouvrir le capot,
  3.  Attendre que les LEDs de la carte-mère soient éteintes,
  4. Enlever le cavalier vert PSWD (à côté des ports SATA),
  5.  Brancher le secteur et démarrer la machine,
  6. Débrancher le secteur et attendre que les LEDs soient éteintes,
  7.  Remettre le cavalier PSWD,
  8. Refermer le capot et rebrancher le secteur.

HP DC5800 password jumper


Boot-Menu
Certaines options du BIOS concernant la "sécurité" sont grisées et indisponibles. Ainsi, on ne peut booter que sur le disque SATA HDD0, alors qu'un lecteur optique, USB ou la ROM PXE (réseau) sont disponibles.

Pour cela, il est nécessaire de "protéger" l'accès au BIOS par un mot-de-passe. Le "boot menu" est aussi affecté, et permet de booter sans problème sur un serveur PXE quand un mot-de-passe est entré.


Debian Linux
Je me suis contenté d'échanger le disque dur de l'ancien serveur au nouveau, quasiment sans toucher l'installation de Debian Jessie (8.4) i386.
L'unique bricolage concerne udev et sa façon de détecter les cartes réseau par leur adresses MAC. Si l'on ne change rien, le réseau ne fonctionnera pas et sera à reconfigurer (peu pratique pour un serveur sans écran ni clavier).

Il faut commencer par trouver l'adresse MAC de la carte réseau avec l'ancien serveur en fonctionnement :
# ifconfig |grep HWaddr
eth0 Link encap:Ethernet HWaddr 00:d0:b7:xx:xx:xx
eth1 Link encap:Ethernet HWaddr 00:1e:2a:xx:xx:xx


Ici, c'est l'adresse de eth0 qui nous intéresse, mais la configuration de udev est séparée en plusieurs fichiers de configuration que l'on va chercher :
# grep -rni '00:d0:b7:xx:xx:xx' /etc/
/etc/udev/rules.d/70-persistent-net.rules:8:SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:d0:b7:xx:xx:xx", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"


La recherche peut renvoyer plusieurs fichiers (DHCP, ARP, scripts d'init bricolés), mais c'est ceux qui concernent udev qui nous intéressent et que l'on va éditer :

# PCI device 0x8086:0x1229 (e100)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:d0:b7:xx:xx:xx", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x10ec:0x8169 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1e:2a:xx:xx:xx", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

Dans tous les cas, il faudra supprimer l'association entre chaque carte et son adresse MAC, les cartes réseau suivantes seront ajoutées à la suite (la première carte réseau sera eth2 si l'on ne touche à rien).

Pour être sûr que le réseau fonctionne du premier coup, on va remplacer l'adresse MAC de l'interface eth0 par celle de la nouvelle carte réseau (affichée à l'écran pendant une tentative de boot par PXE).

Performances
Test HP Compaq dc5800 (new) IBM PC-300GL 6288 (old)
nbench Mem 18.583 2.649
nbench Int 17.233 2.793
nbench Float 32.444 4.942
Transfert NFS 11.20 Mio/s 11.18 Mio/s
Transfert SaMBa 11.21 Mio/s 11.00 Mio/s
Transfert SSH 11.2 Mio/s 4.05 Mio/s
Génération PHP/Blogotext 7.6 ms 61.9 ms
Compression gzip 15.43 Mio/s 1.31 Mio/s
Décompression gzip 112.48 Mio/s 10,65 Mio/s
Compression bzip2 3.28 Mio/s 0.32 Mio/s
Déompression bzip2 7.18 Mio/s 1.19 Mio/s
Débit disque dur 185.81 Mo/s 40.33 Mo/s
Débit ethernet 94.4 Mbit/s 94.6 Mbit/s

La plupart des débits sont limités à 100Mbit/s par le switch. Mais il faut aussi voir que les tests ont été faits avec des gros fichiers (247Mio).
La différence la plus visible vient du processeur et du contrôleur SATA, la lenteur de l'ancien serveur posait surtout des problèmes en multitâches ou en transférant de nombreux petits fichiers (sauvegardes).

Références

icon Tags de l'article : , , ,

Alimentation 24V : boitier

icon 18/08/2016 - No comments

J'avais une alimentation 80W en 24V de récupération, qui était utilisée dans une boite en carton.
En pratique, la boite en carton pose quelques problèmes : il faut la laisser ouverte pour éviter que l'alimentation ne chauffe, ce qui pose des problèmes de sécurité avec des parties sous tension accessibles par une main ou des vis.

J'ai donc décidé de faire un boitier sur-mesure :
Critères
  • Protection au moins IP31 (particules solides >2.5mm, gouttes d'eau verticales), si-possible IP42 (particules >1mm, projection de gouttes d'eau à 15°),
  • Boitier métallique relié à la terre,
  • Refroidissement passif <20W dissippés,
  • Encombrement <200×200×80mm³,
  • Assemblage par vis M3/M4,

Outillage
  • Scie à métaux,
  • Meuleuse 125mm (peu utile),
  • 3 à 4 serre-joints + cales en bois,
  • Pince multiprise,
  • Visseuse
  • Pointeau/marteau,
  • Forets entre 2 et 9mm, fraise,
  • Tarauds M3,
  • Lime à metal plate,

Par hasard, j'ai démonté un boitier de serveur HP Proliant ML-350 dont l'une de ses plaques de tole mesure 160mm de large et 600mm de long. J'ai aussi des chutes de tole d'aluminium pour les faces avant et arrière.
galvanized steel and sheet aluminium (scrap)

Plutôt que de les couper chaque face, j'ai préférer plier les côtés et le dessus, et découper la base :
box and cut schematics

Il aurait été possible d'avoir une seule pièce pliée en trois, mais l'assemblage aurait été difficile, et il aurait fallu que chaque tous les pliages soient parallèles entre eux, et exactement à 90°. Compte-tenu de mon matériel, il est possible d'avoir une précision de 1° et 3mm.

Le pliage se fait simplement en sciant deux entailles dans la face de renfort, en fatiguant le renfort à supprimer, et faisant une marque à la scie alignée avec la découpe.
On aligne la plaque de tole à plat entre des cales, puis on la serre avec deux serre-joints.
Ensuite, on prend une troisième cale (une plaque de mdf épaisse suffira), qui pivote contre un serre-joint. Vu le faible bras de levier et la rigidité de l'acier, il faut beaucoup forcer, mais plier lentement pour s'assurrer que le pliage est toujours droit (on peut recentrer les cales avec quelques coups de marteau).
how-to bend sheet metal

Après chaque pliage, il faut mesurer et parfois ajuster les traces suivantes. Il vaut mieux une erreur de quelques mm que des faces non-parallèles.

Une fois la base découpée, le haut plié et coupé, et la face avant découpée, il ne reste qu'a les assembler avec l'alimentation.
Pour cela, j'ai utilisé quatre vis M3 par face et une équerre sur-mesure pour le côté.
top and front parts of the box, wired
bottom and rear part of the box, ready for assembly

Le câblage est assez rapide, avec un interrupteur secteur bipolaire en facade, un connecteur IEC mâle à l'arrière, deux connecteurs bananes 4mm pour la sortie et une LED 5mm en facade.
finished PSU box (front)
finished PSU box (back)

icon Tags de l'article : ,

ALI Aladdin IV+ (M1531)

icon 09/08/2016 - No comments

J'ai utilisé une carte mère PC-Chips M560, et j'ai découvert qu'elle fonctionnait correctement avec une seule barrette de mémoire SIMM (la seconde était mal enfoncée).
Cette carte-mère utilise un chipset Ali M1531 (maquillé en "TX-Pro") pour supporter un processeur en socket 7 (Pentium/Pentium MMX, Cyrix 6x86/MII, AMD K5/K6, ...), de la mémoire SIMM (FPM/EDO) et DIMM (EDO/SDRAM en 3.3V et 5V) et un bus PCI.
Tout le reste est géré par une puce Ali M1543 (hub PCI, ISA, IDE, Power Management, gestion d'interruptions/I/O), ça permet d'éviter d'utiliser une autre puce pour gérer les I/O.

PC-Chips M560 motherboard

Bus Mémoire
Normalement, les processeurs compatibles 586 ont un bus mémoire large de 64 bits. De ce fait, les banques mémoire font la même taille, et utilisent soit une barrette DIMM (64bits), soit deux barrettes SIMM (2×32bits).

Comme les barrettes de mémoire SIMM ont deux faces qui peuvent être identiques, il aurait été possible d'utiliser une barrette double face (2×32bits) dans une seule banque mémoire.

Bande passante théorique
En négligeant les temps de génération des adresses et de préchargement, ce qui est possible en mode "burst" (accès de plusieurs zones mémoires contigues) avec de la SDRAM, on obtient :
$$B_W = CLK \times bus_{width}$$
ce qui donne :
$$B_{W,SDRAM} = 66.7MHz \times 8bytes = 133MiB/s$$

Seulement, la mémoire FPM n'est pas capable de gérer un mode "burst", et il n'est pas toujours possible d'utiliser ce mode, même avec de la SDRAM.

$$B_W = \frac{1}{t_{RAS}} \times bus_{width}$$
$$B_{W,SDRAM} = \frac{1}{67.5ns} \times 8bytes = 118,5MiB/s$$
$$B_{W,FPM} = \frac{1}{70ns} \times 8bytes = 114,3MiB/s$$
$$B_{W,EDO} = \frac{1}{60ns} \times 8bytes = 133,3MiB/s$$
$$B_{W,FPM,32} = \frac{1}{70ns} \times 4bytes = 57.1MiB/s$$
$$B_{W,EDO,32} = \frac{1}{60ns} \times 4bytes = 66.7MiB/s$$

En utilisant les temps d'accès, on peut avoir une mesure un peu plus réaliste, mais on ignore toujours la génération d'adresse, mais ça semble être "compensé" par la mémoire cache (sur de petites quantités de données).

Protocole de test
La carte mère est utilisée avec un processeur Intel Pentium MMX à 200MHz (2.5×66MHz), le BIOS est réglé avec les mémoires cache L1 et L2 activées et les timings par défaut (70ns pour la SIMM FPM, 60ns pour la SIMM EDO, CAS 3 pour la SDRAM).
Memtest est utilisé avec une passe rapide pour s'assurer qu'aucune barrette n'est pas défectueuse ou bien qu'il n'y a pas de faux contact.
PC-Chips M560, Pentium MMX 200MHz and various SIMM sticks

Par la suite, Speedsys est utilisé pour mesurer la durée des opérations de lecture, écriture et déplacement sur 4Mio, au début de la zone mémoire.
Speedsys benchmark running on the test rig

Résultats de tests
Comme j'ai remarqué que la carte-mère fonctionnait avec une seule barrette de mémoire, j'ai testé plusieurs configurations en mesurant le débit de la mémoire.
  • 1 barrette SIMM EDO simple face (82Mio/s)
  • 2 barrettes SIMM EDO simple face (123Mio/s)
  • 1 barrette SIMM EDO double face (82Mio/s)
  • 1 barrette SIMM FPM double face (68Mio/s)
  • 2 barrettes SIMM FPM double face (108Mio/s)
  • 2 barrettes SIMM différentes, SIMM FPM double face + SIMM EDO simple face (69Mio/s)
  • 1 barrette DIMM SDRAM (117Mio/s)
  • 1 barrette SIMM + une barrette DIMM
  • 2 barrettes SIMM + une barrette DIMM
  • 1 barrette DIMM EDO buffered (fail)

En mesurant le débit, on remarque que le mode 32bits "single-SIMM" est 1/3 plus lent que le mode 64bits natif.
On peut voir que les tests avec une seule barrette SIMM donnent les mêmes résultats indépendamment du nombre de faces des barrettes. On peut en déduire que chaque face est câblée sur une seule banque de mémoire.

Les tests avec de la mémoire DIMM et SIMM ne donnent que les performances de la mémoire DIMM, puisque le benchmark utilisé ne teste que 4Mio de la mémoire RAM.

On peut remarquer que la mémoire EDO (60ns) est plus rapide que la mémoire SDRAM dans ce cas-là (SDRAM 66MHz, CAS 3, soit 67.5ns).

En mode "single SIMM", les débits pratiques sont 20% plus rapides qu'en théorie, ce qui suppose un bricolage ou une optimisation.

L'architecture mémoire est décrite dans la datasheet du chipset Ali 1531B, dans les sections 3.2 à 3.5, 3.9-3.10 et 5.2-5.3 et confirme que le fonctionnement avec une seule barrette SIMM 32bits est prévu.
Ali 1531B Chipset-RAM connections


Références

icon Tags de l'article : ,

Sandisk Sansa Clip+

icon 31/07/2016 - No comments

J'utilise un balladeur Sandisk Sansa Clip+ sans avoir eu le moindre problème depuis 2010.

Il y a quelques jours, le bouton poussoir de mise en marche ne fonctionnait plus, la partie extérieure du bouton bougeait sans actionner les contacts.

Démontage
C'est la partie la plus délicate, la face arrière est clipsée sur la face avant (sans colle).
Seuls le haut et le bas ont des gros clips faciles à actionner, mais j'ai décidé de l'ouvrir par le haut pour éviter de toucher les fils de la batterie (un court-circuit ferait beaucoup de dégâts).

La solution qui semble la plus pratique est d'enfoncer une lame de cutter (attention aux doigts), entre la face avant et l'arrière, au niveau du bouton d'alimentation, puis de faire levier.
Une fois qu'un ou deux clips ont bougé, on peut glisser la lame un peu plus loin sur les côtés et le bas. Il faut un peu forcer, la batterie est légèrement collée à la coque arrière et au PCB.

Le PCB est vissé à la face avant, mais l'écran est collé sur la face avant, j'ai décidé de ne pas y toucher pour garder l'écran aligné et fonctionnel.

Identification
Sandisk Sansa Clip plus system board
Le dos du PCB est assez simple :
  1.  SoC Sandisk (ASIC custom?) en boitier BGA
  2.  Mémoire Flash Sandisk 2Gio, (probablement 32nm)
  3. Radio FM RDA5802E
  4. Batterie Li-po BAK 323036 (dimensions L l e en mm et dixièmes de mm), 290mAh

Réparation
J'ai trouvé les soudures du bouton poussoir arrachées, et le bouton poussoir entre la batterie et le SoC.
Un test avec un tournevis à permis de vérifier qu'aucune piste n'a été arrachée, et la re-soudure du bouton poussoir à réglé le problème.
Sandisk Sansa Clip plus broken switch solder joints

Dans le doute, j'ai aussi refait quelques autres soudures peu chargées en étain.
Sandisk Sansa Clip plus repaired switch solder joints


Références

icon Tags de l'article : , ,

Alimentation HP ESP135

icon 22/07/2016 - No comments

Description
J'ai récupéré une alimentation HP ESP-135 qui vient d'un HP Proliant DL-380 G4 et fabriquée par Lite-On (modèle PS-3601-1C).
Ces alimentations peuvent se monter par paire et sont "hot swap". Par contre, je n'ai pas récupéré la carte d'interconnection entre les alimentations et la carte mère et qui permet de contrôler l'alimentation. Du coup il faudra faire un peu de reverse-engineering pour la faire fonctionner.

D'après l'étiquette, l'alimentation a un rail +5V (standby) sortant 7A, et un rail +12V capable de sortir 47A (600W).

Mesure
Le soucis, c'est que la connectique n'est pas documentée et ne respecte aucun standard, on peut trouver les lames de gauche qui sont reliées à la masse, et celle de droite au +12V (reliées par des busbars à l'intérieur).

Alimentation branchée, mais arrêtée :
  1. +5V
  2. +5V
  3. +5V
  4. 3~5V
  5. 0V
  6. 4.6V
  7. 0.2V
  8. 0V
  9. 0,2V
  10. 4.6V
  11. 1.5V
  12. 0V

Les pins en rouge sont des rails d'alimentation et ceux en bleu sont des signaux logique ou de feedback (forte impédance)

En identifiant un peu et en regardant le marquage sur le PCB, on peut trouver quelques signaux :

Identification :
  1. +5V SB
  2. +5V SB
  3. +5V SB
  4. FAN_V (out)
  5. -12V
  6. PS_ON_1?
  7. 12V FB?
  8. GND
  9. GND_FB?
  10. PS_ON_2?
  11. ?
  12. 5V_FB?
Uniquement les signaux en vert sont écrits explicitement sur le circuit imprimé. Les autres ont été "devinés" en mesurant et en testant.

Si on relie les deux signaux PS_ON à la masse (pins 6, 8 et 10), l'alimentation démarre.

Alimentation démarrée :
  1. +5V
  2. +5V
  3. +5V
  4. 3~12V
  5. -12V
  6. 0V_
  7. 12V
  8. 0V
  9. 0.2V
  10. 0V_
  11. 1.5V
  12. 4.5V

Câblage
Comme avoir des câbles qui pendent autour du connecteur n'est pas très pratique, j'ai voulu avoir un interrupteur en façade de l'alimentation.
switch wiring

Le PCB de connectique est relié à la carte principale de l'alimentation par des busbars et quelques câbles. Le connecteur CN8 est relié à un autre PCB de contrôle de l'alimentation.
Les signaux qui nous intéressent, PS_ON_1 et PS_ON_2, sont respectivement sur les pins 3 et 6 du connecteur CN8. On peut trouver un point de masse sur le connecteur de la LED D910.
ground signal

Pour éviter que l'alimentation ne fonctionne dans un serveur, on va enlever les fils 3 et 6 du connecteur CN8 et les câbler directement sur l'interrupteur.
J'ai utilisé un interrupteur bipolaire pour limiter la casse (je ne sais pas comment la carte-mère commande l'alimentation), mais on peut voir d'autres montages où les deux signaux PS_ON_1 et PS_ON_2 sont reliés en permanence.
modified PSU


Notes
La vis située à côté des busbars est l'unique point qui relie la masse du secondaire au le châssis de l'alimentation. Il faut noter que les transistors Q300 et Q302 (PFC?) chauffent avec l'alimentation à vide, lorsque la masse est isolée. Dans le cas où on voudrait mettre plusieurs alimentations en série (ce qui n'est pas une bonne idée), c'est ce point-là qu'il faut isoler.
Secondary ground point

Références
Convert HP server PSU for RC use - TjinTech

icon Tags de l'article : , ,

Onduleur APC CS 500

icon 20/07/2016 - No comments

J'avais récupéré un onduleur dont l'autonomie est devenue de plus en plus courte jusqu'à ce que la LED Replace Battery soit allumée et que la batterie soit gonflée.
Une remarque curieuse était le non-fonctionnement avec certaines alimentations (Enermax à PFC actif) et les bruits audibles (couinement) avec certaines alimentations Antec (CWT) et HP, toutes à PFC actif (aucun problème avec des alimentations sans PFC).

Démontage
La batterie s'enlève par la trappe dessous, ensuite les deux vis à l'arrière permettent de déclipser la face arrière vers le haut et le côté droit.

APC CS 500 screws
Tous les câbles basse-tension ont des cosses Faston et les couleurs des câbles sont indiquées sur le PCB. Les câbles en 230V ont des connecteurs AMP/Molex "idiot-proof" qui rendent difficiles les erreurs de câblage.

Le PCB de protection RJ11 est clipsé sur la face arrière, et le PCB qui contient tout l'onduleur est déclipsable du côté gauche une fois le transformateur déposé (sans vis).

Tous les PCB ont la référence 640-0287_Rev08 (probablement lié à un fonctionnement 230V 50Hz).

Architecture
L'onduleur a une structure off-line, typique des onduleurs cheap.
Off-line inverter

En voyant les deux enroulement symétriques du transformateur et deux MOSFETs de puissance, on identifie une structure push-pull.
Plutôt que de commander les transistors en PWM à quelques kHz pour avoir une sortie quasi sinusoïdale (l'inductance du transformateur et une capacité de 100nF suffisent à filtrer les harmoniques), cet onduleur commande les transistors en tout ou rien à 50Hz.
Ce qui explique les incompatibilités avec certaines alimentations à PFC actif.
Voltage output waveform

En plus de l'onduleur, une petite alimentation Flyback est présente pour charger la batterie.
APC BK-500 board overview

Transformateur
Le transformateur à 3 enroulements :
  1. 230V (10.5 Ohm, 18.5H)
  2. 2×7.8V (<100mOhm, 20mH)
  3. 15V (~100mOhm, 40mH)
APC BK-500 transformer

L'enroulement (2) est alimenté en 12V à 50Hz (signal carré retardé) pour que l'enroulement (1) fournisse une tension de 350V en crête (230V efficace en prenant le retard en compte).
L'enroulement (3) est commandé par la basse tension pour annuler le flux du transformateur pendant les temps morts (technique "active clamp").
APC BK-500 transformer

Dimensionnement
L'onduleur est donné pour 500VA en sortie d'onduleur (600W consommés sur la batterie est un bon ordre de grandeur).

La batterie Plomb-Acide étanche est donnée pour 7Ah, sans aucune mention "high-current" comme une batterie de véhicule. Les batteries Yuasa NP7-12 sont souvent données comme équivalentes, et ont une autonomie de 2min à leur courant maximum de 6C (soit 42A, 440W en fin de décharge).

Le fusible protégeant la batterie est donné pour 60A (600W en fin de décharge), les MOSFETs du demi-pont de l'onduleur (HFR3205/IRF3205) sont donnés pour 80A (continu) et 8mOhm et sont montés sur un radiateur de ~12.5°K/W (à la louche). En considérant une moyenne de 30A par transistor (demi-pont), on obtient 7.2W dissipés et une différence de température package/air de 90°C (soit 115°C avec une température ambiante de 25°C).

Je n'ai pas mesuré la saturation du transformateur (mais celui de mon alim de labo de 100W est plus volumineux), du coup il n'est pas possible de conclure.

Par contre les 500VA sont probablement atteignables en pic, lors du branchement d'alimentations à découpage (chargement "brutal" de capacités), mais l'onduleur est plus réaliste pour fournir 50 à 150W pendant 10 à 30min...

Protections
Le transformateur CT1 et les AOPs IC8 renvoient une mesure du courant, et les réseaux de résistances R40-R71 et les AOPs IC10 renvoient une mesure de la tension du secteur et de celle en sortie d'onduleur.

Toutes les mesures arrivent sur les canaux analogiques du microcontrôleur IC1 (ST72F63BK-4, 8-bit à 24MHz, USB, ADC...), qui a des sorties pour commander les MOSFETs push-pull et de clamp de l'onduleur.

Références

icon Tags de l'article : ,

iSCSI

icon 19/07/2016 - No comments

Depuis un moment, j'ai réussi a me débarasser de mes disquettes de boot en démarrant par le réseau avec PXE (voir les articles concernant PXE).

Il est même possible de se passer entièrement de disque dur avec Linux et NFS, mais ce n'est possible qu'avec quelques systèmes basés sur UNIX.
Pour utiliser DOS avec un système plus gros qu'une disquette, ou même Windows sans disque-dur, c'est une autre histoire puisqu'ils ne sont installables que sur un disque-dur visible par le bios.

Serveur/Target
On va installer le service iscsitarget et le module noyau iscsitarget-dkms

On ajoute les images (ou disques physiques/RAID) à partager dans le fichier /etc/iet/ietd.conf en respecant les noms "iSCSI Qualified Name" :
Target iqn.2007-01.org.exacnet:foobar.1
IncomingUser
OutgoingUser
Lun 0 Path=/media/stuff/iscsi/foobar,Type=fileio
Alias foobar

Ici, le disque iqn.2007-01.org.exacnet:foobar.1 est relié au fichier /media/iscsi/foobar, qui est une image de disque (crée avec la commande dd).

Une fois le fichier mis à jour, il faut redémarrer le daemon iscsitarget :
# /etc/init.d/iscsitarget restart
[ ok ] Restarting iscsitarget (via systemctl): iscsitarget.service.


On peut aussi afficher la liste des disques partagés :
# cat /proc/net/iet/session
tid:1 name:iqn.2001-01.org.exacnet:foobar.1
sid:17796167515963456 initiator:iqn.2001-01.org.exacnet:foobar
cid:0 ip:192.168.3.100 state:active hd:none dd:none


La commande ietadm permet d'administrer le service iSCSI de façon non-persistante, et il est aussi possible de sécuriser iSCSI (simple authentification, les données passent toujours en clair).


Client/Initiator (Linux)
Le package open-iscsi fournit les commandes nécessaires pour utiliser un client iSCSI.

On commence par "découvrir" les machines du réseau qui utilisent le protocole iSCSI :
# iscsiadm --mode discovery
localhost:3260 via sendtargets
192.168.3.3:3260 via sendtargets


On va vérifier les disques accessibles sur la machine 192.168.3.3 :
# iscsiadm --mode discovery -t sendtargets -p 192.168.3.3
192.168.3.3:3260,1 iqn.2001-01.org.exacnet:foo
192.168.3.3:3260,1 iqn.2001-01.org.exacnet:bar
192.168.3.3:3260,1 iqn.2001-01.org.exacnet:foobar.1

La commande iscsiadm -m node permet aussi de lister tous les disques accessibles, peu importe sur quelle machine.

On peut ensuite choisir un disque et l'attacher à la machine :
# iscsiadm -m node --targetname "iqn.2001-01.org.exacnet:foobar.1" --login
Logging in to [iface: default, target: iqn.2001-01.org.exacnet:foobar.1, portal: 192.168.3.3,3260] (multiple)
Login to [iface: default, target: iqn.2001-01.org.exacnet:foobar.1, portal: 192.168.3.4,3260] successful.


L'attachement est effectué avec succès, mais il faut connaître le nom de périphérique qu'a attribué le système au disque :
# dmesg |tail -n 20
scsi20 : iSCSI Initiator over TCP/IP
scsi 20:0:0:0: Direct-Access IET VIRTUAL-DISK 0 PQ: 0 ANSI: 4
sd 20:0:0:0: Attached scsi generic sg2 type 0
sd 20:0:0:0: [sdb] 409600 512-byte logical blocks: (209 MB/200 MiB)
sd 20:0:0:0: [sdb] Write Protect is off
sd 20:0:0:0: [sdb] Mode Sense: 77 00 00 08
sd 20:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
sdb: sdb1
sd 20:0:0:0: [sdb] Attached SCSI disk


On peut ensuite monter le disque et l'utiliser comme s'il s'agissait d'un disque local :
# mount /dev/sdb1 /mnt/

Une fois l'utilisation terminée, on peut détacher le disque :
# iscsiadm -m node --targetname "iqn.2001-01.org.exacnet:foobar.1" --logout
Logging out of session [sid: 3, target: iqn.2001-01.org.exacnet:foobar.1, portal: 192.168.3.3,3260]
Logout of [sid: 3, target: iqn.2001-01.org.exacnet:foobar.1, portal: 192.168.3.3,3260] successful.


Il est possible de faire plusieurs choses un peu bizarres comme du RAID, ou de monter le même disque (même iqn) à travers plusieurs adresses IP. C'est utile pour des systèmes tolérants aux pannes, mais inutile et compliqué pour un simple "bricolage".

Client/Initiator (PXE)
Pour un seul disque, il n'y a que 3 opérations à faire :
  1. Régler le nom du disque set initiator-iqn iqn.2001-01.org.exacnet:foobar.1
  2. "Accrocher" le disque iSCSI sanhook iscsi:192.168.3.3::::iqn.2001-01.org.exacnet:foobar.1
  3. booter : sanboot

En fait, les paramètres par défaut d'iPXE suffisent pour un seul disque. Si on veut en mettre plusieurs, il faut spécifier l'identifiant de chaque disque.
  1. set initiator-iqn iqn.2001-01.org.exacnet:foo
  2. sanhook --drive 0x80 iscsi:192.168.3.3::::iqn.2001-01.org.exacnet:foo
  3. sanhook --drive 0x81 iscsi:192.168.3.3::::iqn.2001-01.org.exacnet:bar
  4.  sanboot

Dans ce cas, les disques foo et bar seront attachés, et le sytème bootera sur le disque foo, et ça ne fonctionne pas sans donner l'IQN du premier disque.

Utilisation et Performances
On peut installer un système d'exploitation sur un disque iSCSI ou son image comme s'ils étaient des disques physiques.
DOS s'installe sans problème avec QEMU ou une machine physique ayant booté par PXE.

Avec mon serveur un peu ancien et peu performant (Intel Celeron 600MHz), le débit est entre 6.5 et 8Mio/s et les temps d'accès entre 2 et 10ms selon la charge du serveur (en ethernet 100Mbit/s).

Pour l'instant, je n'ai pas réussi à faire fonctionner Windows (j'ai testé les versions 3.1 et 98 sans succès) en bootant depuis un disque iSCSI, mais DOS et Linux fonctionnent sans problème.

Références

icon Tags de l'article : , , ,

Réparation de disques durs

icon 07/07/2016 - No comments

Il y a quelques semaines, un de mes disques durs s'est arrêté de fonctionner. Ça a été l'occasion de tenter de le réparer, et de voir s'il était possible de réparer d'autres disques en stock.

Hitachi Deskstar 7K3000
J'ai acheté deux disques identiques, de modèle HDS723020BLA642 (2To, 7200rpm, SATA 6Gbit/s) en août 2011.
Jusqu'en juin 2013, les deux disques fonctionnaient 24h/24 dans mes deux serveurs, dont les données étaient synchronisées quotidiennement.
Après 2013, un des deux disque n'a servi que pour des sauvegardes plus ou moins régulières.
En juin 2016, j'ai démarré le disque pour une sauvegarde, mais il n'a jamais fonctionné, même après plusieurs tests.

Curieusement, c'est le disque qui a le moins servi (< 200 start-stop, < 20 000 heures, température < 40°C) qui ne fonctionne plus.

Identification
Comme il n'y a pas de rotation du moteur ni de mouvement des têtes (d'habitude audibles), et que le disque n'est pas détecté par le PC, je suppose que le problème vient de l'électronique et pas de la mécanique ou du stockage.
Il y a quelques marquages sur le PCB (référence : 110 0A90302 01), mais aucune documentation, datasheet ou schéma n'est accessible, il y a quelques forums qui montrent des points de tests, mais ce n'est pas forcément facile à tester (le PCB est face contre le disque) ni fiable (certaines infos se contredisent).

Hitachi Deskstar 7K3000 0A90302 PCB
Un cas typique à l'air de venir de fusibles sur les rails 5V et 12V à proximité de diodes transil (TVS), mais tout est en bon état de ce côté là, et le disque consomme un peu sur le rail 5V. En testant le non-court-circuit des capacités, transistors/MOS et diodes, et la continuité de toutes les inductances, résistances de puissance, diodes et fusibles, je suis arrivé à un composant ressemblant beaucoup à un fusible (ou une capacité en mica, peu probable ici) ouvert.
Hitachi 7K3000 fuse replacement

Réparation
Après l'avoir remplacé par un fusible 2A temporisé (il n'y avait aucun marquage clair d'origine, mais ça devrait se couper en cas de court-circuit franc), il n'y a toujours aucun fonctionnement, et le fusible est encore conducteur.
FAIL!
Si quelqu'un a un disque Hitachi Deskstar 7K3000 Hors-service avec le même PCB 110 0A90302 01, vous pouvez me contacter, je serais curieux de faire quelques tests.
If anyone has a non-working Hitachi Deskstar 7K3000 with a 110 0A90302 01 PCB, feel free to contact me, I would be interested to perform a few more tests.


Update (07.2016) :
Le fusible n'en est pas un. Il s'agit d'un accéléromètre piezo (d'où une capacité de quelques centaine de pF et pas de résistance parallèle quand je l'ai mesuré) et sert à détecter les chocs (probablement pour la garantie). Son remplacement par un fusible n'a rien dû changer...



IBM (HP) Ultrastar 36LZX
J'avais récupéré un array RAID de disques DDYS-T18350 (18.4Gio, 10krpm, SCSI Ultra 3) dans un serveur HP, et l'un d'eux ne fonctionnait pas. Je l'avais remplacé sans me poser de questions il y a plusieurs mois, mais je l'avais mis de côté pour une autopsie.

Identification
Le disque avait un comportement curieux, avec des temps d'accès très lents, quelques redémarrages, et la carte RAID qui affichait un problème pour ce disque.
J'ai supposé un problème mécanique, mais j'ai commencé par démonter le disque de son rack, et j'ai trouvé une capacité 0402 au fond du rack...

Réparation
Avec une soudure un peu grosse, mais faite avec du matériel accessible (panne de fer de 1.2mm, pas de flux, étain au plomb, pince à épiler), il y a quand même de quoi replacer proprement quelques composants en boitier 0402.
IBM Ultrastar capacitor replacement

Résultat
Le disque est détecté par la carte SCSI, mais renvoie l'erreur "Disk not ready", et le système d'exploitation renvoie un timeout pendant la detection des disques. L'absence de capacité a peut-être causé d'autres dégâts, ou alors c'est une coïncidence (probablement un choc durant le transport).
IBM Ultrastar still fails
FAIL!

Références

icon Tags de l'article : , ,