Monorailcat

Xilence Icebox

icon 02/06/2016 - Comments are closed

Le feu forum Nokytech m'avait donné un boitier prévu pour absorber les vibrations des disques durs en ayant un refroidissement amélioré.

Montage original
Le montage est simple, on a deux plaques d'alu vissées sur les côtés d'un disque dur, et une autre plaque avec des ailettes posée sur le haut du disque dur. L'assemblage du disque et des plaques d'alu est monté dans une baie 5.25" par des shock mounts en caoutchouc.
Original Xilence Icebox

En pratique, le disque dur est isolé mécaniquement du boîtier. Du coup ça permet d'éviter que le boitier entre en résonnance lorsque le disque gratte. Par contre l'isolation est aussi thermique (le boîtier participe partiellement au refroidissement du disque), et donc les dissipateurs en aluminium sont indispensables.

Solution temporaire
Après plusieurs démontages et à peine 4 ans d'utilisation, les pièces en caoutchouc sont dégradées et tombent en poussière.
Xilence Icebox with broken mounts

Le montage rapide était pour poser le disque à la place d'une cage disque d'un serveur HP Proliant.
Il avait suffit de poser le disque et les dissipateurs sur un bloc de mousse, tenu par des ficelles pour éviter les mouvements.

Amélioration
Comme tous les PC n'ont pas forcément autant de place qu'un HP Proliant (27kg sans disque), il a fallu l'adapter à mon serveur (ancien Desktop IBM).
J'avais prévu de réutiliser des adaptateurs de disques 3.5" dans des baies 5.25" viennant de serveurs HP Proliant. Ils ne sont pas conçus pour limiter les vibrations, mais rentrent parfaitement dans le boitier de mon serveur.

Xilence Icebox mod (bottom)
On va commencer par couper la tôle qui maintient le disque au niveau d'un pliage à 90° (On peut casser l'acier par fatigue avec des pliures répétées).
On va ensuite arracher les heatpipes (assez inutiles avec la base du disque du en aluminium), puis utiliser leurs supports pour fixer les plaques latérales dans la base en tôle (On peut percer/tarauder 4 trous en M4).

Xilence Icebox mod (side)
Ensuite, c'est du LEGO, on visse les plaques latérales sur le disque, on visse les plaques latérales sur la tôle avec un sandwich de bouts de silicone (absorbeurs de chocs de lecteurs CD) et de ressorts (supports de têtes d'imprimante coupés à la bonne taille).

Xilence Icebox mod (top)
Il reste le dissipateur du dessus qui doit être limé sur 3mm pour permettre aux vis/ressorts de passer, et c'est utilisable.


Résultats
Objectivement, le disque passe de 44~45°C à 42°C (température de pièce à 23°C), sans aucun ventilateur. Il ne faut pas oublier que les vis et le dissipateir dépassent et empêchent d'installer un second disque dans la baie supérieure.

Subjectivement, mon disque Hitachi 7K3000 était déjà assez silencieux en activité, les bruits de grattement sont quasiment inaudibles. Par contre le bruit du moteur/roulement n'est pas absorbé (une plaque de mousse posée devant le serveur fait l'affaire).

Références
* Xilence HDD Icebox - Technic3d [DE]
* Xilence Icebox review - Techware Labs
(Sources images)

icon Tags de l'article : , ,

Nexx WT3020

icon 25/05/2016 - Comments are closed

Mon routeur (WRT54G) et point d'accès wifi avait quelques problèmes de fiabilité (freezes, coupures de réseau...), j'ai essayé de voir si on pouvait trouver un remplaçant vallable.

Le Nexx WT3020 est une Chinoiserie avec deux interfaces ethernet, une interface wifi, un port usb host et un SoC compatible avec OpenWRT.

Software
Le firmware d'origine à l'air utilisable avec un noyau Linux contrôlable par telnet et une interface web en Anglais (ou en Chinois).
  • Adresse IP : 192.168.8.1
  • Login (http) : admin
  • Mot de passe (http) : admin
  • Login (telnet) : nexxadmin
  • Mot de passe (telnet) : y1n2inc.com0755

On peut changer le firmware directement depuis l'interface web ou bien par telnet.

OpenWRT
Il faut d'abord connaître la quantité de mémoire flash embarquée. Comme la puce est difficile à lire, il semble que les modèles dont l'adresse MAC commence par 20:28:18 ont 8Mio de flash.
On peut ensuite télécharger l'image d'OpenWRT adaptée au routeur et utiliser l'interface web d'origine pour flasher le firmware.

Au reboot, l'adresse IP change et devient 192.168.1.1, et une fois un mot de passe choisi, on peut utiliser ssh.

Hardware
En ouvrant le boitier (quasiment impossible sans casser de clip), on voir un SoC Mediatek MT7620N, une mémoire flash SPI (8Mio), deux transformateurs d'impulsion (ethernet), de la SDRAM (64Mio), et quelques régulateurs de tension.
Nexx WT3020 board top (OpenWRT Wiki)
Nexx WT3020 board bottom (OpenWRT Wiki)

On voit directement que la capacité d'entrée est trop faible (400 à 900mV de ripple mesurés, en fonction de la charge). Par contre le ripple est faible après le régulateur LDO qui alimente le SoC.
J'ai préféré rajouter une capacité chimique de 220µF (16V, ESR <1Ω), ce qui limite le ripple à <20mV.
Nexx WT3020 added capacitor

Les pads qui sont accessibles entre les deux ports ethernet et le SoC servent pour une liaison série, utile pour avoir un accès direct à u-boot en cas de problème.
Par contre il n'y a pas de JTAG, du coup en cas de brickage, il faudra dessouder la mémoire flash (SPI) pour la re-flasher.

Performances
J'ai essayé de mesurer la vitesse de transfert en copiant des fichiers par NFS et en utilisant le benchmark réseau iperf :
  • Routeur -> PC : 24.9Mbit/s
  • PC -> Routeur : 22.6Mbit/s

En vérifiant, le routeur fonctionne en mode 802.11g, et est théoriquement limité à 54Mbit/s (~30 en pratique). Il y a peut-être une configuration spécifique pour OpenWRT (le hardware est censé supporter la norme 802.11n à 300Mbit/s et le MIMO).

802.11n (update 06.2016)
Avec un peu de recherches, on voit que le mode 802.11n, qui suppose une bande passante de 300Mbit/s ne peut être actif que si le mode WMM (Wi-Fi Multimedia) est activé et si les données sont encryptées en WPA (j'utilisais le mode WEP depuis mon premier routeur).
Avec quelques tests :
  • Routeur -> PC : 70.8Mbit/s
  • PC -> Routeur : 21.6Mbit/s
On a aucune différence en upload, mais le débit en download devient intéressant.

Références

icon Tags de l'article : , , , ,

Cage SCSI HP Proliant ML-350

icon 14/02/2016 - Comments are closed

J'ai eu besoin d'utiliser une cage à disques SCA (Single Connector Attachment, 80-pins, pour des disques SCSI hot-plug).

La cage à disques vient d'un serveur HP Proliant ML350, permet de brancher 6 disques SCA avec un système de caddies propriétaires HP/Compaq, et se branche à une carte SCSI par un connecteur SCSI 68-pins. Par contre, comme HP ne sait pas faire de choses standard, l'alimentation utilise un connecteur Molex Mini-fit Jr.®©™ à 6-pin plutôt qu'un Molex 8981 (utilisé pour les disques durs).
PCI-E power connector

Pinouts
  1.  +5V
  2. GND
  3. GND
  4. +12V
  5.  GND
  6. GND
HP proliant SCSI cage power connector

ATTENTION!
Le connecteur est compatible mécaniquement avec celui utilisé pour les cartes graphiques PCI-Express, mais les pins ne sont pas les mêmes. Il y a des risques d'endommager l'alimentation ou la cage à disques.

Adaptation
Comme les connecteurs d'alimentation PCI-Express sont mécaniquement compatibles, il suffit d'y changer les fils. Pour ça, Molex fournit un outil à >20EUR, mais il est possible de démonter les cosses avec un petit tournevis plat (il faut tirer assez fort sur le câble).
Molex Mini-fit Jr extracting tool

icon Tags de l'article : , ,

SHARC EZ-LAB : Hardware

icon 10/01/2016 - Comments are closed

Hardware
J'ai récupéré une carte de développement Analog Devices EZ-LAB pour les DSP SHARC.
Ces cartes sont prévues pour accepter un DSP de la famille ADSP-2106x soudé en TQFP ou bien monté sur un socket ZIF, une EPROM, des extensions SHARCPAC, ISA et MAFE, et un connecteur JTAG pour debugger le DSP.

Vue générale de la carte EZ-LAB

La carte dont je dispose a un ADSP-21062 (2Mbit de mémoire, 33MHz) soudé, une EPROM installée, un chip son de PC (ADC/DAC 2 canaux 16bit, 44.1kHz) AD1847 sur l'extension MAFE (carte fille à droite sur la photo), et pas d'extension SHARCPAC.

Ma carte est arrivée avec des pins tordus, mais qui se sont redressés sans peine avec une lame de cutter.
Détordage de pins

Le schéma est très différent de celui d'un CPU, normal, c'est celui d'un DSP. Ce qui explique les deux bus mémoire et le core relativement simple.
Schéma du DSP

Toolchain
Il existe une toolchain pour Windows, avec l'IDE Visual DSP++ (version 2.0 for SHARC) et le kit de développement Bittware (qui existe aussi pour DOS), cependant il n'est pas distribué (me contacter si vous en avez une copie).

Il existe aussi une toolchain libre disponible pour GNU/Linux (probablement pas fonctionnelle avec d'autres architectures que i386).

Références

icon Tags de l'article : ,

D-Link DWL-G700AP

icon 14/12/2015 - Comments are closed

J'ai récupéré deux points d'accès D-Link DWL-G700AP hors-service, chacun de révision B3, le premier fabriqué au milieu de l'année 2006 et le 2nd au milieu de l'année 2007.
D-Link DWL-G700 AP overview

Point d'accès #1
Au branchement, il ne démarre pas et aucune LED n'est allumée.
En l'ouvrant, la tension est à 0V en sortie des selfs de choke de l'entrée d'alimentation (fonctionnelle). L'Ohm-mètre affiche un court-circuit sur le rail 3.3V (sortie du régulateur qui alimente quasiment toute la carte).
Quelques capacités sont gonflées, mais aucune n'est en court-circuit.

Point d'accès #2
Au branchement, seulement la LED D1 (Power) est allumée, mais aucune réponse par le réseau ou par le port série.
En mesurant un peu de partout, la sortie du régulateur U9 (GS1117AX-18) donne 0.95V à la place des 1.8V attendus.

Le simple échange de régulateur entre les deux points d'accès à suffit à en rendre un fonctionnel.
D-Link DWL-G700 AP motherboard

Notes :
  • Le régulateur U9 chauffe beaucoup et a une surface de dissipation trop petite...
  • Il est possible d'alimenter le routeur avec n'importe quelle tension entre 5V et 16V (tension limite des capacités, le régulateur Buck supporte au moins 20V).

Port série

Le connecteur J2 est cablé directement sur le SoC RTL8186 (signaux 3.3V) :
  1. 3.3V
  2. GND
  3. CTS*
  4. RTS*
  5. TX
  6. RX
*Non-testé et non-indispensable

La connection est en 38400, 8N1 et donne un accès au bootlog de Linux et à un shell busybox.
D-Link DWL-G700 AP serial and JTAG connections

Flash
En cas de flash du mauvais firmware, le point d'accès à un bootblock qui permet de reflasher "facilement" le point d'accès.
  1. Débrancher l'alimentation
  2. Tenir le bouton RESET appuyé
  3. Brancher l'alimentation
  4. Lâcher le bouton RESET après 5s
  5. Brancher un PC en ethernet avec l'adresse 192.168.1.xx (différente de 192.168.1.6)
  6. uploader le firmware par tftp :
tftp 192.168.1.6
tftp> binary
tftp> put DWLG700AP_FW231b02.bin
Sent 1025832 bytes in 2.6 seconds
tftp>


Firmwares Wive et Wive-NG
Ces deux firmware alternatifs sont disponibles et permettent plus de choses que le firmware D-Link de base (qui n'a pas les commandes ls, vi, mount ou ping...).
Par contre les firmwares Wive sont un peu buggés (un des firmware détecte aléatoirement 8 ou 16Mio de RAM et plante dès qu'on utilise une zone de mémoire inexistante), très mal documentés et il y a quelques instabilités qui freezent la machine ou la redémarrent.

Firmware Realtek/D-Link Custom
Le firmware et une partie de la toolchain RTL8186 sont fournie sur le site de D-Link, et il est possible d'y modifier pas mal de choses.
Il faut juste éviter de bricker la machine en cassant le bootloader.
ÉCHEC

JTAG
Comme j'ai brické le point d'accès en cassant le bootloader, j'ai essayé de le reflasher en utilisant le bus JTAG (12 pins),

  1. nTRST (NC)
  2.  GND
  3. TDI (D0)
  4. GND
  5. TDO (!Select)
  6. GND
  7. TMS (D2)
  8. GND
  9. TCK (D1)
  10. GND
  11. nSRST (NC)
  12. GND

Je n'ai pas de programmateur JTAG générique, du coup j'ai copié un programmateur Xilinx DLC5 sur port parallèle (adresse 0x378 sur ma machine), en le réglant à 250kHz (mais ça ne fonctionne pas, peu importe la fréquence).

jtag> cable DLC5 parallel 0x378
Initializing parallel port at 0x378
jtag> frequency 250000
Setting TCK frequency to 250000 Hz
requested frequency 250000, now calibrating delay loop
new real frequency 241253, delay 0
done
jtag> detect
Warning: TDO seems to be stuck at 1

ÉCHEC


Références

icon Tags de l'article : , , ,

D-Link DIR-615

icon 10/12/2015 - Comments are closed

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 : , ,

Carte-mère Epox EP-MVP3G5

icon 16/11/2015 - Comments are closed

Présentation
Epox EP-MVP3G5

  • Socket : super 7 (Pentium - K6-2+/k6-3+, 321pins, 100~600MHz)
  • Chipset/Northbridge : VIA MVP3 - VT82C598MVP (AGP, PCI, 3*128Mio SDRAM@100MHz)
  • Chipset/Southbridge : VIA VT82C596B (PCI-PCI bridge, PCI-ISA bridge, RTC, 2 UDMA-33)
  • Cache : EliteMT LP61C64128F-4 (2Mio, 4ns)
  • I/O : Winbond W83877TF (Floppy, Parallel, 2 Serial)
  • HW Monitor : W83781D (I²C/SMbus)
  • PLL : Winbond W83194R-58A (66 - 150MHz CPU, SDRAM, 60~84MHz AGP, 30~45MHz PCI, 24/48MHz ISA/USB)
  • EEPROM : Winbond W29C020C-90B (256kio, 8bits, 5V)

Alimentation
Le core du processeur est alimenté par une alimentation buck synchrone contrôlée en PWM par un LM2636, qui génère sa tension de référence avec un DAC réglable par des entrées numériques VID[0:4].

PSU schematics
PSU
Les transistors MOSFET (STP-40NE03L20) sont prévus pour fournir au moins 30A. Il n'y a aucun marquage sur la self, mais elle devrait avoir un courant de saturation >15A.


Les processeurs compatibles avec cette carte sont alimentables entre 2V et 3.5V, seulement toutes les tension possibles ne sont pas affichées :
Undocumented Vcore


PLL
Les horloges de toute la carte sont générées par une PLL Winbond W83194R-58A. Les horloges "auxiliaires" doivent être le plus proches de leur fréquence nominale (peu d'intérêt a overclocker un clavier ou le bus USB). Le bus PCI peut poser des problèmes à plus de 40MHz (cartes réseau, contrôleur de disque dur). Le bus AGP pose peu de problèmes à >80MHz des AGP4x.

Le plus grand intérêt est d'augmenter la bande passante du bus mémoire et d'augmenter la fréquence du processeur.

Sur cette carte-mère, le PLL est configurable par des cavaliers (remappés par un GAL16V8). Seules 6 fréquences sont configurables par des cavaliers. Mais le PLL est aussi accessible par un bus I²C qui est câblé sur le southbridge.

On charge le driver du bus I²C, et on va scanner le bus :
# modprobe i2c-viapro
# i2cdetect -r 1
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1 using read byte commands.
I will probe address range 0x03-0x77.
Continue? [Y/n]
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- 69 -- -- -- -- -- --
70: -- -- -- -- -- -- -- --


Ici, l'adresse 0x50 correspond à l'EEPROM contenue sur les barrettes mémoire (SPD). Le PLL qui nous intéresse est situé à l'adresse 0x69.

# i2cdump 1 0x69 s
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1, address 0x69, mode smbus block
Continue? [Y/n]
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 00 0f 71 0f c0 13 00 .?q???.


Dans la datasheet du PLL, le registre 0x00 correspond au choix de la fréquence.
Tant que le bit 3 est à 0, la fréquence est choisie matériellement.
Table Freq
Les fréquences sont utilisables avec les bits SSEL[0:3] (Registre 0x00, SSEL[0:2] sur les bits 4:6, SSEL3 sur le bit 2.

Faire fonctionner le CPU à une fréquence faible (multiplieur et FSB) permet de pouvoir tester chaque fréquence de bus sans risque d'avoir un système instable.

En écrivant 0x18 dans le registre 0x00, on règle la fréquence à 66MHz (aucun changement), mais on le règle via le bus I²C.
# i2cset -y 1 0x69 0x00 0x18 s

En écrivant 0x38 dans le registre 0x00, on règle la fréquence à 75MHz.
# i2cset -y 1 0x69 0x00 0x38 s
Comme il n'y a aucun changement (le noyau ne surveille pas la fréquence du processeur), il faut tester la fréquence avec un benchmark dépendant de la fréquence du processeur (une boucle d'un grand nombre d'itération devrait être suffisante).

Par contre la machine se fige en tentant de passer de 66MHz à 83MHz ou 100MHz. Il est probable que certaines horloges doivent être stoppées avant de changer de prescaler pour rester dans leurs tolérances (du coup ce n'est pas vraiment gérable depuis un OS).

Références

icon Tags de l'article : , ,

EEPROM 28 et 32 pins

icon 28/09/2015 - Comments are closed

Les EEPROMS en boitier 32 pins sont très répandues (BIOS de PC), et la plupart sont faciles à flasher (toutes les operations se font en 5V).
Par contre la plupart des cartes réseaux n'acceptent que des puces à 28 pins pour leur image PXE, et les seules puces que j'ai sont soit des PROMs OTP (impossibles à reflasher), soit nécessitent 12.5V pour être effacées/programmées.

Du coup j'ai essayé de placer une SST29EE10 (128kio, 32 pins, 5V) dans un socket vide de 28 pins.

En regardant bien tous les pins nécessaires à la lecture sont connectables directement (bus d'adresse, bus de données, !CS).
connections.

Les pins VPP peuvent aussi être laissés en l'air, !WE et !OE peuvent être laissés en l'air (ou respectivement tirés à VCC et VSS). A16 n'est pas nécessaire si on n'a pas besoin de toute la taille de l'EEPROM (beaucoup de cartes réseau limitent à 32kio ou 64kio).

Au final, on a une pile de sockets avec des fils au milieu :
wires between the two sockets
socket stack
Et l'EEPROM est capable de booter (flashée avec flashrom sur une carte-mère de PC) :
successful boot

icon Tags de l'article : , ,