Skywalker13

Diary of an ex-GeeXboX developer…

Smaky & BlueSCSI ~ 🇫🇷

Posted at — Mar 19, 2023

Il y a quelques temps j’ai été mis en contact avec un ancien Guru du Smaky, Jean-Marc Koller. Je ne le connais que très peu mais j’ai tout de suite été intéressé par son projet du moment. Il cherche à remplacer les disques SCSI des Smaky par des cartes SD. J’ai immédiatement fait mes petites recherches sur le sujet, Jean-Marc fait référence à la carte BlueSCSI.

Il explique qu’il y a des problèmes de communications avec cet adaptateur, peut-être des problèmes de timing ou d’intégrité. Quoi qu’il en soit, il y a de sérieux problèmes de stabilité, et Jean-Marc étant un électronicien avancé effectue toutes les mesures nécessaires pour identifier les causes. Cela semble plutôt mal parti, mais le projet BlueSCSI retient mon attention pour deux raisons.

  1. Le projet est open-source / open-hardware et libre. Ceci est un critère essentiel. Une communauté assez importante semble graviter autour, avec un canal Discord pour atteindre très rapidement les développeurs et designers de la carte BlueSCSI.
  2. Ils ont créés deux versions de la BlueSCSI. A ce moment là je n’ai absolument aucune idée de la version utilisée par Jean-Marc. Mais vu le prix de la carte BlueSCSI v2, je l’achète dans la foulée.

Les problèmes rencontrés par Jean-Marc concernent la version 1 de la BlueSCSI. Il y avait principalement des problèmes de soudure.

L’achat (un peu) à l’aveugle

Je regarde un peu les sites proposés pour l’achat, et je m’arrête sur One Geek Army Shop qui est (au moment de l’achat) le seul revendeur qui propose la carte BlueSCSI v2 en variante “Desktop” pour le marché européen.

Il existe plusieurs variantes, comme Desktop (50-pin SCSI), DB25 ou PowerBook.

Bien entendu, le Smaky avec son disque SCSI Fujitsu, correspond à du 50-pin. La carte soudée et à jour ne me coûte qu’un peu plus de 60€. Je trouve le risque pas très grand alors je commande sans trop réfléchir.

BlueSCSI

Réception de la carte

Environ 3 ou 4 jours plus tard, je reçois la carte bien emballée et prête à l’emploi. Il ne me reste plus qu’à ouvrir mon Smaky, débrancher le disque SCSI actuel, trouver un adaptateur Molex → mini Molex ainsi qu’une simple carte SD compatible.

Depuis de nombreuses années je conserve toutes sortes de câbles et matériel dans ma cave. Il se trouve que j’ai exactement tout ce qui est nécessaire. Un vieil adaptateur Molex que j’avais certainement récupéré sur de vieux serveurs de la Ciba SC dans les années 2000 ainsi qu’un adaptateur SD → micro SD avec une carte micro SD de 4 GB.

BlueSCSI

Monter un disque SCSI

Cette carte BlueSCSI est juste fantastique. Pour monter un disque SCSI il suffit de formater la carte SD en FAT32 ou exFat et d’y déposer des images disque. Par exemple, pour monter un disque SCSI ID 1, rien de plus simple que de nommer l’image HD10_512.hda.

Voici à quoi ressemble ma carte SD actuelle :

-rw-r--r-- 1 schroeterm schroeterm   26 19 mar 14:24  bluescsi.ini
-rw-r--r-- 1 schroeterm schroeterm 520M 15 mar  2007 'HD10_512 MS System.hda'
-rw-r--r-- 1 schroeterm schroeterm 508M 26 sep  2019 'HD20_512 DR Model.hda'
-rw-r--r-- 1 schroeterm schroeterm 520M 19 mar 15:20 'HD30_512 DR Dev.hda'
-rw-r--r-- 1 schroeterm schroeterm 4.1K  1 jan 01:00  log.txt

L’image HD10_512 MS System.hda est un dump de mon disque SCSI original que j’ai réalisé en 2007. Pour effectuer ce dump j’ai installé le disque du Smaky dans un PC avec un contrôleur Adaptec (qui dort dans un carton); et avec l’aide de la commande dd, je me suis fait une image binaire comme backup. J’ai beaucoup utilisé cette image pour effectuer des tests avec Fosfat pendant que je développais cette bibliothèque d’accès au FOS (je vous laisse consulter le lien si cela vous intéresse; sous Debian / Ubuntu, simplement faire apt install fosfat).

Fosfat est l’outil parfait pour lire vos disques et disquettes Smaky avec Linux (et aussi en partie avec Windows). Par contre, je n’ai pas développé le support de l’écriture. Mon travail de reverse engineering s’est stoppé dès que j’ai pu extraire ce que je souhaitais.

bluescsi.ini

Il est possible de donner une configuration à la carte BlueSCSI avec l’aide d’un fichier INI. Avec un Smaky, ce fichier n’est pas nécessaire mais dans mon cas je l’ai quand même installé avec cette directive :

[SCSI]
EnableSCSI2=1 ; On

Honnêtement je ne sais pas si cela apporte réellement une amélioration; mais j’aime l’idée que les transferts soient plus rapide en spécifiant explicitement le mode SCSI-2 bien que je n’ai aucune certitude de ce qui se passe réellement avec ce contrôleur.

Démarrage du Smaky

Tout à fonctionné du premier coup. Mon Smaky a démarré comme un charme sur le disque HD10. J’ai pu monter le disque HD20 en #MM2: puis j’ai tenté aussi HD30 en #MM3:. J’ai quelques problèmes avec le disques HD30 mais rien qui ne concerne la BlueSCSI. L’expérience est une réussite complète qui va au delà de mes espérances. Le fait de pouvoir monter plusieurs disques avec un seul adaptateur est tout simplement génial.

BlueSCSI

Interopérabilité

A l’origine, les échanges entre les Smaky et les PC sont assez difficiles. Pour y remédier en partie, j’ai créé Fosfat il y a pas mal d’années. Dès le moment que l’on souhaite lire des données d’un Smaky sur un PC, Fosfat rempli parfaitement son rôle. Il existe une autre technique, l’utilisation de l’émulateur Windows Smaky Infini. Cet émulateur me pose quelques problèmes de stabilité et certains outils sont difficilement exploitables (comme les outils de conversions de fichiers .AUDIO en .WAV qui fonctionnent bien que sur un vrai Smaky ou alors l’impossibilité de lire certains dossiers du PC sans que cela provoque un blocage complet de l’émulateur, …).

L’émulateur ne se comporte pas non plus comme s’il avait à faire à de vrais disques SCSI. En effet, j’ai remarqué que le disque SYSTEME et le disque MODELE ne sont pas des images disque SCSI, mais des images de type “floppy”. J’ai appris à les différencier en travaillant sur Fosfat où il y a clairement une différence d’offset entre les deux types de médias.

Cette différence a un impacte directe avec l’utilisation de la BlueSCSI.

  1. Il n’est pas possible d’utiliser une image disque (de type .DI) en tant qu’image SCSI. Le Smaky refuse de la monter.
  2. Le Smaky Infini refuse de monter une image disque SCSI comme si cette image était un .DI.

J’ai tenté d’y remédier avec CLE. Par exemple en montant une image à la place du disque MODELE dans le Smaky Infini. Je peux formater cette image depuis CLE avec :

format #MM2:

Je peux alors écrire dans cette image. Par contre, bien que le Smaky Infini me l’affiche comme une mémoire de masse, ce n’en est pas vraiment une. En réalité c’est un type $FILE_2 qui est un DI et donc impossible à monter en tant que disque SCSI sur la BlueSCSI.

Quelques solutions à explorer

La meilleure solution serait que j’implémente l’écriture avec Fosfat. C’est un gros travail de recherche et j’ai d’autres projets sur le feu. Peut-être un jour je m’y collerais.

Une autre solution plus accessible, serait que j’acquière un lecteur Iomega Zip en SCSI. Le Smaky Infini (en théorie) permet de travailler avec des lecteurs Iomega Zip. Ce serait un moyen de transmettre une grande quantité de données depuis mon PC Linux au Smaky. Néanmoins je n’aime pas beaucoup cette solution car il faut le Smaky Infini (et donc Wine), il faut un lecteur obsolète et au moins une disquette obsolète.

Il me reste une autre option qui devrait être moins coûteuse en temps de développement et surtout beaucoup plus pérenne. Je devrais arriver à faire des adaptations dans le projet Fosfat afin de pouvoir convertir une image .DI en image disque SCSI. Les deux formats sont identiques concernant le FOS, ce n’est donc (principalement) qu’une question d’offset. Fosfat sait lire tous les blocs. Il est peut-être possible de revoir juste le début de l’image .DI pour rajouter ce qui manque.

(2023.03.25) Je vais écrire un nouvel article dans quelques temps à propos des travaux que je suis actuellement en train de réaliser pour les conversions. J’ai choisi la solution 3 présentée ci-dessus. Pour les plus impatients, vous pouvez compiler la version de développement de Fosfat et utiliser la commande fosdd qui répond à ce besoin.

L’article est disponible ici : BlueSCSI & Fosfat.