Monorailcat

Lecteur DVD Schneider SDV 436

icon 2016-03-06 - No comments

Hardware
C'est un lecteur de DVD de salon vendu entre 2005 et 2007. Il date du moment où les lecteurs DVD ont commencé à bien supporter les DivX et sont devenus vraiment cheap.

Ce lecteur a plusieurs clones ou modèles très proches : Magnavox/Philips/Schneider MDV435, MDV437, SDV436, et probablement d'autres.

Celui-ci a 3 circuits imprimés :
  • une alimentation à découpage +3.3V, +5V, +12V, -12V et -24V (15W)
  • un panneau d'interface utilisateur : Contrôleur PT6312 (équivalent µPD16312), afficheur VFD, boutons, LED, capteur IR
  • une carte mère avec un SoC SunPlus SPHE8281D (ou SPHE8201D), un driver de puissance pour le lecteur CD (Moteurs brushless + DC), des régulateurs de tension, de la SDRAM et deux puces EEPROM (firmware + réglages sauvegardés)

Il y a plusieurs connecteurs et composants non-installés sur la carte-mère (P/N : 40-MDV435-MAC2G). le manuel de réparation indique que ce sont des connecteurs de debug (probablement RS-232), un micro/ampli pour un mode karaoké et un connecteur USB pour lire des fichiers depuis un disque dur externe. Par contre, il n'y a aucun connecteur JTAG.

Le problème, c'est que sur ce SoC, les pins de l'UART sont partagés avec la synchro horizontale/verticale, et ne sortent pas grand chose qui ressemble à un signal série.

Pour avoir de la place, j'ai démonté le bloc du lecteur DVD, sans lequel la carte-mère est incapable de démarrer. Mais il est possible de la leurrer en reliant le pin TRAYI à la masse, sur le connecteur CN?.

Dézonage
Ce modèle a été vendu en Europe et ne lit que les DVDs de Region 2.

Region setting on MDV435/SDV436 DVD players

Le dézonage est assez rapide et se fait de la même façon sur d'autres modèles Philips/Magnavox/Schneider :
  • Démarrage du lecteur DVD,
  • Ouverture du tiroir,
  • 4 appuis successifs sur la touche 7 de la télécommande (7-7-7-7),
  • Selection du champ REGION sur le menu affiché,
  • Choix de l'option REGION 0,
  • Fermeture du tiroir.

Software
La recherche d'un firmware n'a rien donné. Ce qui est assez dommage, puisque même le firmware d'origine aurait permis de comprendre son fonctionnement.

Utilisation de l'écran VFD
La carte d'interface utilisateur a besoin d'alimentation +12V, -24V (afficheur VFD) et d'une interface SPI (connectée à l'ASIC PT6312) pour afficher des caractères.
hooking a microcontroller board to the VFD controller

D'après la documentation de la puce, il faut plusieurs commandes d'initialisation, puis balayer la mémoire avec les positions des segments (chaque digit est séparé en deux blocs de 7 segments).
uPD16312/PT6312 vfd driver

Références

icon Tags de l'article : ,

Convertisseur USB-PS/2

icon 2016-03-05 - No comments

Fonctionnement
J'ai voulu utiliser un convertisseur USB-PS/2, pour utiliser un clavier PS/2 avec un PC portable qui n'a que des ports USB.

En général ces systèmes utilisent un petit microcontrôleur avec un périphérique USB host et émulent le protocole HID. Les périphériques PS/2 sont en général "bit-bangés".
Il existe des notes d'application avec des microcontrôleurs Microchip (PIC16/PIC18/dsPIC33), Atmel (ATMegaU/ATXMega), TI (CC25xx) qui incluent un périphérique USB host et un core 8bit suffisament rapide pour gérer l'USB et bit-banger deux lignes PS/2.
Microchip appnote USB to PS/2

Par flemme de coder le soft, j'ai préféré commander un module tout fait. Le problème, c'est qu'à la réception de ma carte, le contrôleur était détecté aléatoirement par le port USB et les claviers/souris ne fonctionnaient pas (Pas de signal sur tous les pins des connecteurs PS/2).

Réparation
failing usb-ps2 converter
En ouvrant on remarque bien qu'il n'y a pas grand chose : un microcontrôleur/ASIC dans un "Chip on Board" résiné, une capa de découplage pour la forme, et 3 connecteurs.

En testant à l'ohmmètre, on remarque que des soudures et un connecteur PS/2 sont cassés.
Un examen du PCB montre qu'il devrait y avoir une capacité C1 pour découpler l'alimentation.

Après changement d'un câble (je n'utilise que le clavier) et soudure d'une capacité de découplage (47µF 25V, mais la valeur n'est pas critique entre 100nF et 100µF), le convertisseur fonctionne.
fixed usb-ps2 converter

Par curiosité, les chip-on-boards ressemblent à ça, avant qu'ils soient noyés dans la résine.
Chip on board Sparkfun

Références

icon Tags de l'article : ,

Sun Ultra 1 : Installation de Solaris 8

icon 2016-02-21 - No comments

Ma station de travail Sun Ultra 1 n'a pas de lecteur CD ni de lecteur de disquette, mais l'utilisation du réseau est prévue pour installer un système d'exploitation.

Pour que tout fonctionne, on utilise la console série (9600bit/s, 8N1, en débranchant le clavier), mais il est possible d'utiliser le clavier et l'écran à la place.
Solaris 8 nécessite entre 300Mo et 1.3Go en installation de base (probablement bien plus une fois d'autres paquets installés). 192Mio de mémoire ne pose pas de problème à l'installeur (aucune idée du minimum).

NVRAM
Comme la NVRAM est à remplacer, il faudra configurer l'adresse MAC et quelques paramètres à chaque arrêt de l'alimentation.
01 0 mkp
80 1 mkp
08 2 mkp
0  3 mkp
20 4 mkp
c0 5 mkp
ff 6 mkp
ee 7 mkp
0 8 mkp
0 9 mkp
0 a mkp
0 b mkp
c0 c mkp
ff d mkp
ee e mkp
0 f 0 do i idprom@ xor loop f mkp
Chaque ligne règle un octet de la NVRAM (HostID : 80c0ffee , adresse MAC : 8:0:20:c0:ff:ee), et la dernière calcule le checksum des précédentes et l'écrit dans la NVRAM.

Pour les autres variables de la NVRAM, il faut les remettre par défaut avec set-defaults. Il peut être utile de désactiver le boot automatique avec setenv auto-boot? no, puis choisir le périphérique et le fichier démarré par défaut (en cas de redémarrage) setenv boot-device net (ou bien cdrom, disk), setenv boot-file kernel/unix.

Une fois la NVRAM remplie, le système doit démarrer "proprement" avec reset. Il n'y a pas de coupure d'alimentation, de ce fait la NVRAM ne perd aucune donnée.

Serveurs
Les machines Sun ont besoin de plusieurs services réseau pour démarrer :
  • rarpd, qui va assigner une adresse IP en fonction de l'adresse MAC de la station
  • tftpd, qui va fournir une image bootable à la station
  • bootparamd, qui va fournir les partages NFS à monter pour accéder au système d'installation
  • NFS, pour partager les dossiers contenant le programme d'installation la raçine d'un système Solaris
Tous ces serveurs peuvent être sur des machines distinctes et fonctionnent avec différents OS Unix.

Configuration
Avant de commencer la configuration, on a un CD de Solaris 8 monté dans le dossier /mnt/ d'une machine x86 avec Debian Linux.
Rarp
On installe le paquet rarpd, on démarre le daemon, puis on fait correspondre l'adresse MAC, le hostname et l'adresse IP de la station :
# cat "08:00:20:c0:ff:ee sunultra" >> /etc/ethers (>> ajoute à la fin du fichier)
# cat "192.168.3.123 sunultra" >> /etc/hosts

Tftpd
On installe un serveur tftp (quelconque, avec ou sans inetd), puis on note son dossier racine (/var/tftp/ dans notre cas).
On va copier l'image dans la racine :
# find /mnt/Solaris_8/Tools/ |grep inetboot
/mnt/Solaris_8/Tools/Boot/usr/platform/sun4u/lib/fs/nfs/inetboot
/mnt/Solaris_8/Tools/Boot/usr/platform/sun4us/lib/fs/nfs/inetboot
/mnt/Solaris_8/Tools/Boot/usr/platform/sun4d/lib/fs/nfs/inetboot
/mnt/Solaris_8/Tools/Boot/usr/platform/sun4m/lib/fs/nfs/inetboot

L'image de la plateforme sun4u est celle qui correspond aux machines Ultra 1 :
# cp /mnt/Solaris_8/Tools/Boot/usr/platform/sun4u/lib/fs/nfs/inetboot /var/tftp/
Une particularité des machines Sun est d'utiliser une image par adresse IP, avec une adresse ip en hexadécimal :
# printf %02X 192 168 3 123
C0A8037B

Une fois que bash nous a converti l'adresse, on va lier l'adresse IP à l'image qu'on veut booter :
# cd /var/tftp/; ln -svf inetboot C0A8037B; ln -svf inetboot C0A8037B.SUN4U
On met deux fichiers dans le doute, certaines version d'OpenBoot ajoutent le nom d'architecture à la fin du fichier.

NFS
On installe un serveur NFS (nfs-kernel-server, nfs-common et rpcbind avec Debian) et on edite le fichier /etc/exports
On crée un dossier là où on a au moins 1Go de libre (/media/stuff/local/sunultra/ dans notre cas).
On va le partager avec # exportfs 192.168.3.0/24:/media/stuff/local/sunultra/ -o rw,sync,no_subtree_check (on peut remplacer l'adresse et le cidr par * ou par une seule machine).
On peut aussi ajouter la ligne /media/stuff/local/sunultra/ 192.168.3.0/24(rw,sync,no_subtree_check) dans le fichier /etc/exports.

Bootparamd
On installe bootparamd, puis on ajoute les lignes suivantes dans le fichier /etc/bootparams :
sunultra root=192.168.3.3:/media/stuff/local/sunultra/Solaris_8/Tools/Boot \
install=192.168.3.3:/media/stuff/local/sunultra \
rootopts=:rsize=32768 boottype=:in


Copie des fichiers
On va ensuite copier les fichiers de /mnt/ vers /media/stuff/local/sunultra en conservant les permissions et les fichiers cachés.
rsync -trav /mnt /media/stuff/local/sunultra

Installation
J'ai probablement fait quelque chose d'incorrect (je serais heureux d'avoir un retour si quelqu'un trouve) qui fait échouer l'installation après le montage du partage NFS avec There were problems loading the media from /cdrom..

Bricolage
Comme je n'ai pas réussi à installer Solaris 8 par le réseau ni à booter sur un CD, j'ai séparé l'installation :
  • Boot réseau : boot net -v - install,
  • Plantage de l'installation : There were problems loading the media from /cdrom.
  • Démontage du partage NFS : umount /cdrom
  • Montage du CDROM : mount -r -F hsfs /dev/dsk/c0t1d0s0 /cdrom
  • Suite de l'installation : ttinstall

Notes
Disques non-détectés :
Modification du script d'installation /sbin/startup :
mkdir /tmp/linkmod
cp -f /usr/lib/devfsadm/linkmod/* /tmp/linkmod/
devfsadm -l /tmp/linkmod/


Installation "bloquée" :
Curseur tournant après plusieurs minutes :
On bouge le fichier gênant : mv /sbin/get_netmask /sbin/get_netmask.test

cannot open /cdrom/.cdtoc :
Des fichiers ont été oubliés dans le miroir NFS, ou le CD/partage n'est pas monté.

panic[cpu0]/thread=xxxxx: Can't invoke /etc/init, error N :
Le fichier est inexistant ou inacessible en lecture/execution, il est possible que les liens ou permissions/droits des fichiers n'aient pas été conservées pendant la copie sur le partage NFS.

Utilisation
Si le réseau ne fonctionne pas, il suffit de plusieurs étapes :
# ifconfig le0 up
# ifconfig le0 192.168.3.123
# route add default 192.168.3.1

La commande netstat -r peut donner des informatiosn sur la table de routage.

Références

icon Tags de l'article : , , , ,

Sun Ultra 1 : Hardware

icon 2016-02-19 - No comments

Hardware
Cette station est le haut de gamme de 1995.
Sun Ultra 1 front
Tout est fait sur-mesure par Sun ou utilise des composants haut-de-gamme.
Beaucoup de connecteurs internes ou externes sont exotiques, mais ont été choisis avant que les PC soient répandus, et où chaque constructeur avait ses propre standards de câblage.

Configuration :
  • CPU : UltraSPARC, 64-bit, 143MHz
  • RAM : 192Mio DSIMM (4x16Mio + 2x64Mio, 2 slots libres), bus 288bits (256 + ECC), les modules s'installent par paire
  • Disque dur : Quantum 1Go 5400rpm SCSI (SCA)
  • Lecteur CDROM : Non-installé
  • Lecteur disquette : Non-installé
  • Carte Graphique : TurboGX 1Mio, 8-bit, sbus
  • Carte d'extension sbus : Réseau/SCSI (un slot sbus libre)
  • Alimentation : Monstre de 180W (au moins deux canaux complètement distincts, et une sortie 230V commandée)

Sun Ultra 1 overview
Sun Ultra 1 motherboard

Câblage
Tout est différent des PC. Par exemple, la souris est branchée au clavier, qui est branché à la carte-mère avec un connecteur mini-din à 8-pins (incompatible avec les claviers PS/2). L'écran utilise un connecteur 13W3, avec 3 coax et 10 pins dans un connecteur de la taille d'un DB-25, mais pas avec le même pinout que les écrans SGI ou NeXT.
Sun Ultra 1 back

Par chance, j'ai pu avoir un clavier avec la machine, mais je n'ai pu récupérer qu'un câble 13W3 mâle, il va donc falloir bricoler.

Ventilateur
En branchant la machine pour la première fois, on découvre que le ventilateur du processeur ne fonctionne pas, et qu'il utilise un connecteur Molex micro-fit introuvable.
Le ventilateur d'origine est un "Elina Fan" KDA1205MB8P : 50mm de diamètre, 10mm d'épaisseur, 5 pales, "middle speed", 12V, 140mA, ~5'000rpm, ~10CFM.
Pour éviter une surchauffe, il faut le remplacer par un ventilateur équivalent, un "ADDA" AD0512MB-G76 : 50mm de diamètre, 10mm d'épaisseur, 7 pales, "middle speed", 12V, 90mA, ~4'600rpm, ~10CFM.
Sun Ultra 1 fan replacement
Le connecteur et le câble se changent en quelques coups de fer à souder.

Console
Comme j'ai mis un peu de temps à faire fonctionner l'écran, j'ai vu qu'il était possible d'utiliser la machine à partir d'une console (Port A, 9600 8N1).
C'est un câble DB25, mais il n'y a que 3 fils à souder. On peut même recycler un câble DB25 mâle d'imprimante.
Ici on va le relier à un PC avec un connecteur DB9 :
|  DB25    | Signal |  DB9  |  Signal |
|----------+--------+-------+---------|
|   2      | Tx Out |   3   |  Rx In  |
|   3      | Rx In  |   2   |  Tx Out |
|   7      | GND    |   1   |  GND    |


Il faut aussi même s'assurer que les ports A et B sont configurés en mode RS-232, avec les jumpers J2104 et J2105 (Reference Manual, pages 4-1 à 4-3).
Il n'y a plus qu'à brancher à un PC avec un terminal, et on devrait voir rapidement des infos quand la machine démarre.

Affichage
Faire un adaptateur 13W3 vers VGA m'a pris du temps et plusieurs essais, simplement parce qu'il y a plusieurs standards (SGI, IBM, NeXT, Apple, Sun...), il est même possible d'avoir différents standards pour une même marque.

Pour une station Sun Ultra 1 avec une carte TurboGX :
|  13W3  |  Signal   |  VGA  |
|--------+-----------+-------|
|   1    | Serial R  |  NC   |
|   2    | V Sync    |  NC   |
|   3    | Sense 0   |  NC   |
|   4    | Sense GND |       | ---+
|   5    | C Sync    |  13   |    |
|   6    | H Sync    |  NC   |    |
|   7    | Serial W  |  NC   |    |
|   8    | Sense 1   |  NC   |    |
|   9    | Sense 2   |       | ---+
|   10   | Sync GND  |  10   |
|   A1   | Red       |  1|6  |
|   A2   | Green     |  2|7  |
|   A3   | Blue      |  3|8  |
Les pins Sense 2 et Sense GND sont reliés pour que la carte graphique se configure en mode 1152x900@76Hz (et détecte un écran).
Sun Ultra 1 13W3 to VGA DIY cable
Sur cette carte, les synchros verticales et horizontales ne sont pas supportées, il faut utiliser la synchro composite à la place (qui n'est pas supportée par beaucoup d'écrans LCD).

RTC/NVRAM
Sur les machines SUN, des paramètres propres à la machine, l'heure et l'adresse MAC de la carte réseau sont stockées dans une SRAM avec une batterie on-chip. Ça fonctionne très bien, mais la durée de vie de ces puces est de l'ordre de 15 à 20 ans. Au delà, il faudra changer la puce ou découper la puce pour changer la pile.

On commence par enlever la puce de son support (Reference Manual, page 10-10) en notant la position du détrompeur (côté CPU) :
Sun NVRAM removed

Ensuite, on va limer le boitier de la puce pour atteindre les contacts de la pile, du côté opposé au détrompeur :
grinding the Sun NVRAM
Pendant cette étape, il est pratique de placer la puce dans un étau, pour être sûr de limer horizontalement.

Une fois les contacts atteints, on peut venir y souder un support de pile CR20xx ou bien des piles AA/AAA :
modified Sun NVRAM
Il ne reste plus qu'a remettre la NVRAM dans son socket (détrompeur côté CPU).

Les horloges RTC/NVRAM DS1553 ont l'air compatibles pin-à-pin, avec les mêmes fonctionalités et les mêmes registres.

Upgrades
Le disque dur d'origine (1Go, 5400rpm) a été remplacé par un disque dur plus récent (18Go, 10krpm avec un bruit d'aspirateur), pour avoir un peu plus de place pour Solaris 8 (l'installation complète prend 1.3Go).
Un lecteur de DVD SCSI a été ajouté pour tenter de démarrer depuis un CD, mais il semble y avoir des histoires avec des secteurs de 2048 et 512 octets.


Notes
  • Il n'est pas possible d'écrire dans la console série si le clavier est branché
  • L'écran ne s'allume pas si le clavier n'est pas branché

Références

icon Tags de l'article : , , ,

Cage SCSI HP Proliant ML-350

icon 2016-02-14 - No comments

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

Serveur IMAP

icon 2016-02-03 - No comments

J'utilise Gmail sur lequel je redirigeais plusieurs de mes comptes email.
Par contre le fait que Google tente de plus en plus de devenir le "maître du monde" m'a encouragé à utiliser d'autres choses.

Architecture
Le but est d'avoir un client qui va récupérer les emails provenant de tous mes comptes (principalement en IMAP), les filtrer, puis les rendre accessible avec un serveur IMAP (ainsi le client final récupère des emails déjà triés).

Chroot
Comme je ne maîtrise pas complètement la sécurité et que je veux pouvoir changer rapidement le service de machine en cas de soucis, j'ai tout installé avec chroot, avec une Debian Jessie (installée avec debootstrap).
Le montage de /dev n'est pas indispensable, mais /proc est nécessaire pour que Dovecot fonctionne.

Installation du serveur IMAP
Pour l'instant, Dovecot semble le plus documenté et avec une configuration pas trop bordélique.
On commence par installer dovecot et une bibliothèque d'authentification.
apt-get install sasl2-bin dovecot-imapd
On active le daemon SASL en remplaçant START=no par START=yes dans le fichier /etc/default/saslauthd.

Par la suite, il faudra longuement lire et comprendre la doc de Dovecot pour faire ce qu'on veut :
  • Activer SSL ou TLS
  • Choisir la gestion des utilisateurs (système, bases de donnée, fichiers, annuaires)
  • Choisir comment et où héberger les messages (Maildir ou mbox)
Puis tester pas à pas avec telnet ou openssl.

Génération d'un certificat SSL
Une fois SSL activé, Dovecot refusera de s'executer si aucun certificat n'est présent (ou bien s'ils ont expiré).
On doit générer une clé privée :
openssl genrsa -out /etc/dovecot/private/dovecot-chemin-a-rallonge-unique.pem 1024
Puis un certificat publique :
openssl req -new -x509 -key /etc/dovecot/private/dovecot-chemin-a-rallonge-unique.pem -out /etc/dovecot/dovecot.pem -days 730
Le chemin unique permet de légèrement compliquer l'attaque de votre serveur, et les droits en lecture uniquement pour root permettent d'être sûr que personne n'ira lire votre clé privée.

Getmail
Getmail est un script en python qui permet de récupérer les messages de n'importe quel serveur imap vers des fichiers mbox ou un dossier Maildir.
J'utilise un ou deux fichiers de configuration par compte. La plupart des dossiers étant des archives (Drafts, Trash, Sent), il est possible de ne les mettre à jour plus rarement que les autres dossiers (Inbox).

Fetchmail
Comme les serveurs IMAP et POP de hotmail ont l'air de suivre leurs propres standards, Getmail est incapable de récupérer les email chez eux. À la place, j'ai utilisé fetchmail, qui va tout récupérer dans un dossier intermédaire.

Filtrage
On se retrouve avec des dossiers à peu près rangés, d'autres dossiers où la quantité impose un tri automatique, et certains dossiers avec les emails reçus et les emails envoyés mélangés.
Maildirproc permet de faire le tri avec une configuration assez simple.

Automatisation
La récupération est rajoutée dans un script shell executé toutes les heures (job cron).
Le script va d'abord récupérer les emails avec fetchmail et getmail, puis ensuite les filtrer avec maildirproc.

Notes
  • Dovecot ne crée pas de nouveaux dossier si on ne le spécifie pas dans sa conf.
  • Maildirproc ne crée pas de nouveaux dossiers, il faut les créer manuellement avant.
  • Certains caractères (+) doivent être échappés dans les scripts de Maildirproc.
F
Références

icon Tags de l'article :

Thick Ethernet

icon 2016-02-01 - No comments

J'avais récupéré plusieurs boitiers avec une prise DB-15 "slider" (AUI, Attachment Unit Interface) d'un côté, et un connecteur RJ-45 ou BNC de l'autre côté.
Ces boitiers, ou d'autres un peu plus gros sont connus pour leurs Connexion Vampire, qui pincent/coupent/traversent un câble Coaxial pour s'y connecter. Les miens sont moins monstrueux, et se contentent de connecteurs.
MAU CentreCOM AT-210T

Principe de fonctionnement
À la base, la partie "logique" (MAC) et la partie "driver" (MAU, Medium Attachment Unit) étaient isolées galvaniquement, mais aussi montées sur deux cartes séparées. Comme ça on pouvait brancher une carte ethernet sur n'importe quel type de réseau physique (Fibre optique, Câble coaxial, simple ou multiples paires torsadées...), et aussi commander un câble sur de longues distances.
On trouve aussi des switches réseaux avec une interface AUI, pour relier les switches de plusieurs bâtiments ensembles (souvent avec plusieurs centaines de mètres de câble).
L'avantage le plus évident est la haute disponibilité et la robustesse : il n'y a pratiquement pas besoin de redémarrer la machine pour changer son MAU.
MAU and AUI schematics

Hardware
Comme cette interface est obsolète depuis le Fast-Ethernet (Media Independant Interface à 10/100Mbit/s), et utile dans de rares cas, il ne faut s'y attendre à trouver cette interface que sur du matériel haut de gamme des années 90.

J'ai essayé une carte 3Com 3c509b-combo, qui a un connecteur DB-15 "slider" pour une interface 10base5.
Cette carte se configure entièrement par software, il n'y a aucun cavalier à bouger, même pour choisir l'interface réseau.
NIC and MAU interface

Linux
En chargeant le module 3c509 avec les paramètres d'irq
# modprobe 3c509 irq=5
eth1: 3c5x9 found at 0x300, 10baseT, address 00:a0:34:xx:xx:xx, IRQ 5.
, la carte est détectée avec les paramètres qui sont donnés dans sa ROM.

Par contre, ethertool ne semble pas arriver à écrire dans la ROM de la carte...
On va passer par l'utilitaire 3c5x9cfg (DOS) pour écrire dans la ROM et tester la carte.
3Com 3c5x9cfg DOS setup program

En redémarrant, # modprobe 3c509 irq=5
eth1: 3c5x9 found at 0x300, AUI port, address 00:a0:34:xx:xx:xx, IRQ 5.

Et il devient possible d'obtenir une adresse IP et d'utiliser le réseau normalement.

Windows
Le driver fourni avec Windows 98 ne permet pas de configurer la carte, ni de la diagnostiquer. On va utiliser un vieux driver pour Windows 95 (qui permet de faire comme 3c5x9cfg depuis Windows)
3Com with MAU running Windows

Notes
  • Le switch SQE doit être désactivé sur le MAU
  • Inutile d'espérer une réponse du Network Connectivity Test de 3Com

Références

icon Tags de l'article : ,

Lampe Ikea Antifoni

icon 2016-01-23 - No comments

J'avais une lampe de bureau articulée (pantographe) assez pratique pour éclairer une petite pièce, par contre elle a beaucoup de défauts de conception...

  • Transformateur fragile, encombrant, bruyant et probablement peu efficace,
  • La structure (laiton/acier) sert de conducteur, et est pleine de faux contacts après quelques années (oxydation aux articulations),
  • Les articulations sont souvent grippées (oxydation, absence de graissage à cause du contact électrique),
  • La lampe a une durée de vie faible (~1 an) avec une structure pleine de faux contacts,
  • Il est possible de court-circuiter la lampe en touchant une pièce métallique avec les deux côtés de l'armature...

Après quelques dégâts, j'ai eu plusieurs corrections :
  • Remplacement du transfo par une alimentation à découpage (tension réglable de 5V à 12V et limite de courant à 3A),
  • Nettoyage des articulations à plusieurs reprises, peu efficace,
  • Démontage de la barre de guidage du spot,
  • Remplacement de la structure conductrice par un câble,
  • Remplacement de la lampe 12V/35W par une LED 1W (moins lumineuse, mais probablement plus durable),

Câblage
Ikea antifoni wiring

Le câble d'origine est réutilisé et accroché le long de la structure.


Driver de LED
simple current source for LEDs
On utilise un transistor et un montage pour générer un courant constant à travers la LED.
On peut ajuster le courant dans la LED en fonction de la résistance Rs, avec Rs = V_F / I_led . Dans mon cas, j'ai utilisé un transistor Darlington (Vbe = ~1.3V), je devrais donc utiliser 3 diodes en série pour que la tension à l'émetteur du transistor soit de Vf (~0.7V).

Et dans ce cas, j'impose un courant de 300~350mA dans la LED, soit I_led = Vf / Rs = 318mA.

cheap 300mA current source
Sur cette photo, on voit une des diodes oubliées (de ce fait, la LED est traversée par 10mA, et n'est pas très lumineuse).

J'ai rajouté une diode en série avec tout le montage pour éviter les inversions de polarité (le socket est symétrique).

Références

icon Tags de l'article : ,

SHARC EZ-LAB : Hardware

icon 2016-01-10 - No comments

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

Billets de train

icon 2016-01-03 - No comments

En voyant une vidéo parlant des données présentes sur les divers codes barres des billets d'avion, j'ai regardé si les billets de train que j'avais en stock étaient pareil.
https://www.youtube.com/watch?v=jM4_iz3RqE8

J'ai trouvé 4 types de billets avec des codes-barres différents :
  • Billets cartonnés (code PDF417)
  • E-Billets TGV et IC (code PDF417 ou Aztec)
  • E-Billets TER (code Aztec)
  • Billets "Online-Ticket" ÖBB imprimés (code Aztec)

Billet cartonné
"Billet classique", commandé puis retiré a un guichet/borne, avec un code PDF-417 imprimé à gauche
Billet SNCF cartonné

A|B|CC|DDDDDD|EEEEEEEEE|F|G|HH|0000000000|II|JJ|KK|L|MMM|NNN|OOO|
PPPPP|QQQQQ|RRRRRR|SSSS|TTT|UUU|VVV|W|XXXX|YY|
     |     |      |    |   |   |   |*|    |  |

  • A : Type de format ('e' dans ce cas)
  • B : Code d'imprimante (E pour les guichets)
  • C : Code de ticket
  • D : Numéro de dossier
  • E : Numéro de billet
  • F : Drapeau de spécimen (0 pour un faux ou 1 pour un vrai)
  • G : Version de codage du billet (1)
  • H : Ticket A de B
  • 0 : Réservé (10 caractères)
  • I : Type de carte de réduction (deux espaces en cas d'absence)
  • J : Nombre de voyageurs adultes
  • K : Nombre de voyageurs enfants
  • L : Dernier digit de l'année du voyage
  • M : Date d'impression (nombre de jours depuis le 01.01)
  • N : date de début de validité, idem
  • O : Date de fin de validité, idem
Premier segment :
  • P : Gare de départ (code ISO3166-1 du pays puis code de la gare sur 3 digits)
  • Q : Gare d'arrivée, idem
  • R : Numéro de train (6 digits, ou 5 digits + '\0', ou '0' + 4 digits + '\0')
  • S : Code antifraude
  • T : Date de départ du train (nombre de jours depuis le 01.01)
  • U : Numéro de voiture
  • V : Numéro de place
  • W : Classe du voyage
  • X : Code du tarif
  • Y : Conditions du services/payements

Le premier segment (de M à V) peut être complété par un second segment suivant la même syntaxe si le voyage a des correspondances. En cas d'absence, il y a 29 espaces, la classe est notée '*', puis 6 espaces.

A|B|CC|DDDDDD|EEEEEEEEE|F|G|HH|0000000000|II|JJ|KK|L|MMM|NNN|OOO|
PPPPP|QQQQQ|RRRRRR|SSSS|TTT|UUU|VVV|W|XXXX|YY|
     |     |      |    |   |   |   |*|    |  |

e|E|DV|RUZNxx|58361xxxx|1|1|11|0000000000|  |01|00|3|165|166|226|
FRLPD|CHGVA|96506 |    |166|   |   |2|LJ25|B |
     |     |      |    |   |   |   |*|    |  |

Ici on a un un billet au format "e" pour le numéro de dossier RUZNxx, un numéro de billet 58361xxxx, le billet est valide, et il n'y a qu'un seul billet pour ce voyage. Le billet n'est pas lié à une carte de réduction, il est pour un adulte sans enfant, est vallable pour l'année 2013, a été acheté le 14.06 et est vallable du 15.06 au 14.08.
Le premier segment est au départ de Lyon Part-Dieu (France, LPD) et à destination de Genève-Cornavin (Suisse, GVA), pour le train 96506, le code est illisible, le train circule le 15.06, n'a pas de place/voiture réservée, est en 2nde classe, pour un tarif "illico Jeunes -25%" et n'est pas échangeable après le départ.

Dans tous les cas, ces billets ne posent aucun risques une fois le voyage effectué dans sa totalité (par contre il est possible de l'annuler ou de le reproduire si il n'a pas encore été utilisé).


E-Billet TGV/IC
Les E-billets sont fournis par des agences de voyages (Voyages-SNCF, Capitaine-train, E-billet-SNCF) et ont un code Aztec pour ceux imprimés soi-même ou un code PDF-417 pour ceux imprimés sur les bornes de la SNCF. Dans les deux cas ils utilisent la même organisation.

A|B|CC|DDDDDD|EEEEEEEEE|F|G|HH|II/JJ/KKKK|
LLLLL|MMMMM|NNNNN|OO/PP|
QQQQQQQQQQQQQQQQQQQ|RRRRRRRRRRRRRRRRRRR|SSSSSSSSSSSSSSSSSSS|T|UU|VVVVV|
LLLLL|MMMMM|NNNNN|

  • A : type de format (i)
  • B : 1 pour un billet imprimé à une borne (code PDF-417), 0 pour un billet imprimé soi-même (code Aztec)
  • C : Confirmation Voyage (CV)
  • D : Numéro de Dossier
  • E : Numéro d'E-Billet
  • F : Drapeau de spécimen (0 pour un faux ou 1 pour un vrai)
  • G : Version du codage du billet (2)
  • H : Ticket A de B
  • II/JJ/KKKK : date de naissance du voyageur

  • L : Gare de départ (code ISO3166-1 du pays puis code de la gare sur 3 digits)
  • M : Gare d'arrivée, idem
  • N : Numéro de train
  • OO/PP : date du trajet
  • Q : Numéro de client
  • R : Nom du voyageur (suivi ou précédé par des espaces, 19 caractères max)
  • S : Prénom du voyageur (suivi ou précédé par des espaces, 19 caractères max)
  • T : Classe
  • U : inconnu, possiblement un caractère de contrôle ou un code antifraude
  • V : Code du tarif
Le 2nd segment est facultatif et remplacé par des 0 et des espaces
  • L : Gare de départ (code ISO3166-1 du pays puis code de la gare sur 3 digits)
  • M : Gare d'arrivée, idem
  • N : Numéro de train

A|B|CC|DDDDDD|EEEEEEEEE|F|G|HH|II/JJ/KKKK|
LLLLL|MMMMM|NNNNN|OO/PP|
QQQQQQQQQQQQQQQQQQQ|RRRRRRRRRRRRRRRRRRR|SSSSSSSSSSSSSSSSSSS|T|UU|VVVVV|
LLLLL|MMMMM|NNNNN|

E-Billet SNCF cartonné

i|1|CV|RIKNxx|248713xxx|1|2|11|01/01/1990|
FRCMF|FRPAZ|05706|13/05|
0029009166230xxxxxx|BOxxxxxx          |XAVIER             |2| 2|PR112|
FRPMO|FRDLY|16757|

Ici on a un billet au format "i", imprimé sur une borne SNCF, le billet est une "Confirmation de voyage" pour le dossier RIKNxx, un numéro de billet 248713xxx, le billet est valide, et il n'y a qu'un seul billet pour ce voyage.
Le billet est au départ de Chambéry-Challes-les-eaux (France, CMF), à destination de Paris-Austerlitz (France, PAZ), avec le train 05706 le 13/05.
Le numéro d'identifiant du trajet est 0029009166230xxxxxx, porté par "Xavier Bo", voyageant en seconde classe avec un tarif "preum's"
La seconde partie du trajet est au départ de Paris Montparnasse (France, PMO) vers La-Ferté-Bernard (France, DLY), avec le train 16757.

A|B|CC|DDDDDD|EEEEEEEEE|F|G|HH|II/JJ/KKKK|
LLLLL|MMMMM|NNNNN|OO/PP|
QQQQQQQQQQQQQQQQQQQ|RRRRRRRRRRRRRRRRRRR|SSSSSSSSSSSSSSSSSSS|T|UU|VVVVV|
LLLLL|MMMMM|NNNNN|

i|0|CV|QZWKx|482593xxx|1|2|11|01/01/1990|
CHGVA|FRLPD|09744|19/12|
00290290169300xxxxxx|BOxxxxxx         |XAVIER             |2|  |    0|00000

Ici on a un billet au format "i", imprimé par ses propres moyens, le billet est une "Confirmation de voyage" pour le dossier QZWKxx, un numéro de billet 482593xxx, le billet est valide, et il n'y a qu'un seul billet pour ce voyage.
Le billet est au départ de Genève-Cornavin (Suisse, GVA), à destination de Lyon Part-Dieu (France, LPD), avec le train 09744 le 19/12.
Le numéro d'identifiant du trajet est 00290290169300xxxxxx, porté par "Xavier Bo", voyageant en seconde classe. Par contre les informations de tarif sont vides et le voyage n'a pas de correspondance (champs remplis par des espaces ou des '0').

Le ticket à plutôt l'air de servir à identifier le voyageur (I, J, K, Q, R) et à porter un numéro d'identifiant (Q) qui doit pointer dans une base de donnée mieux remplie (et non-modifiable).
Certains paramètres (O, P, T, V) ont l'air d'être présent en cas de base de donnée injoignable ou pas à jour pour au moins vérifier sommairement que personne ne tente de frauder.

E-Billet TER imprimé
Le billet a été commandé sur le site web des TER-Rhône-Alpes et a un code Aztec assez grand.
Le début contient des données encodées, puis la chaîne :

T00T100xx|0000738xx|FRLYL|FRHCZ|
S|28122015|2|NG02|INTERNET BILLET IL|BOUxxxxx XAVIER |01011990|ADULTE| |01| 00|28122015|28122015|000000000000|28122015|1313|0000000200

En interprêtant sommairement, on remarque plusieurs chaînes contenant la date du 28.12.2015 (date de commande, début et fin de validité du ticket).
La chaîne 1313 correspond à l'heure de la commande du billet, "NG02" semble être un tarif, et plusieurs champs peuvent correspondre à la classe.
Les champs FRLYL et FRHCZ sont au format des autres billets et indiquent les gares de départ et d'arrivée (France, Lyon Gorge-de-Loup et Fleurieux-sur-l'Arbresle).

Par contre je n'ai qu'un seul ticket de ce type pour l'instant, je pourrais compléter quand j'aurais comparé avec des tickets du même type pour des trajets.

Internet-Ticket ÖBB imprimé
Les tickets à imprimer soi-même sont les seuls à comporter un code-barres unique. Par contre le codage a l'air similaire et compatible avec celui utilisé par la DB (Allemagne) et les SBB (Suisse).

Pour l'instant le code comporte une en-tête dépendant du type de ticket/carte, du transporteur et de la longueur du message. Le reste est encodé en binaire mais semble décodable.

Références

icon Tags de l'article : , , ,