Low cost USB-SCSI Adapter

  • Hi, wie schon im 'Wer bastelt gerade an was' Thread geschrieben, bin ich gerade dabei, einen USB-SCSI Adapter zu entwickeln.


    Mein Vorstellung/Wunschliste sieht im Moment so aus:


    - Keine Verwendung von schwer zu beschaffenden bzw. seltenen Bauteilen

    - Unterstuetzung von UAS (USB Attached SCSI), bei gleichzeitiger Unterstuetzung des alten Mass storage mode fuer aeltere Betriebssysteme

    - Wenn moeglich, Unterstuetzung mehrer SCSI IDs auf dem Bus

    - Spaeter evtl. Device Mode, mit SD Karte, oder ueber USB, um das ganze so wie HPDrive verwenden zu koennen


    Meine erste Hardwareversion sieht jetzt so aus:


    - Teensy 4.1 als Controller. Kostenpunkt um die 30 EUR. Bietet USB 2.0 HS, ARMv7 mit 600MHz CPU Takt und 1MB RAM. Die GPIO Pins sollen wohl mit bis zu 150MHz getoggelt werden koennen, was auf jeden Fall schnell genug fuer das bei uns verbreitetete 8 Bit SCSI ist.

    - 3x 74F06 als Treiber fuer den SCSI Bus

    - UCC5617 als aktiver Terminator, wobei man den auch unbestueckt lassen kann, wenn man entweder ein sehr kurzes Kabel zum Laufwerk mit interner Terminierung hat, oder andersweitig fuer Terminierung sorgt.


    Erste Tests mit einer voellig unoptimierten Firmware habe 1.3MB/s mit meinem MO Laufwerk ergeben. Je nach Medium kann es aber auch sein, das mein MO Laufwerk da einfach nicht schneller kann. Genauer habe ich das noch nicht untersucht, da das meine erste Firmware war, die ueberhaupt soweit funktioniert hat.


    Die Firmware basiert auf der Teensyduino Firmware, allerdings mit stark modifizierten USB Teil, um ihn besser auf SCSI anpassen zu koennen.


    Ich werde in den naechsten Tag mal versuchen die Firmware und Schaltplan/Platinenlayout bei github hochzuladen, und hier ueber den Forstschritt berichten.

  • Hier schonmal ein Foto der Hardware. Eine Ladung unbestueckter Platinen habe ich noch uebrig. Das einzige was mir bei der Version nicht gefaellt, ist das die SCSI Pins direkt am Teensy haengen. Da wuerde ich bei einer zweiten Version evtl. ein paar Widerstaende dazwischenklemmen. Die haengen ja nur zum lesen direkt am Teensy, getrieben werden die ueber die 74F06, da der Teensy die dazu notwendigen Stromstaerken nicht schafft.

  • Wie versprochen hier eine initiale Version auf github: https://github.com/svenschnelle/teensyscsi/


    Das ist die erste Version, die bei mir mit ein paar Festplatten (Maxtor MXT540S, Conner CP30200) und meinem Sony ROM-S594 ein paar Lese und Schreibzugriffe ueberlebt hat. Die interessanten Files sind scsi.c und usb.c, der Rest ist weitgehend unveraendert.


    Im Moment funktioniert das nur unter Linux, Windows mag damit noch gar nichts anfangen. Das kann zum einen daran liegen, das noch kein Mass Storage Mode unterstuetzt wird, oder USB SET_CONFIGURATION/SET_INTERFACE noch nicht korrekt implementiert ist.


    Ich hoffe da noch ein paar Fortschritte in den naechsten Wochen zu machen, damit das ganze etwas benutzbarer wird. Im Moment ist die SCSI ID z.B. noch hardkodiert ganz am Ende im Source Code ;)

  • Hmm, wenn ich das richtig sehe, kann man ueber UAS auch nur ein SCSI device mit mehren LUNs haben. Das ist etwas schade, ich haette gerne mehrere IDs ansprechen koennen. Und IDs auf UAS LUNs zu mappen duerfte spaetestens mit CD Wechslern schwierig werden...

  • Quote from Kuhrator

    Das einzige was mir bei der Version nicht gefaellt, ist das die SCSI Pins direkt am Teensy haengen.

    Welche Spannungspegel haben die SCSI-Anschlüsse?

    TEENSY 4.1 verträgt ja maximal 3.3Volt.

  • Ich habe heute Abend mal Disconnect und Queue Tags eingebaut. Damit laeuft gerade mein MO Laufwerk deutlich ruhiger. Mit Disconnect koennen mehrere Befehle an das Laufwerk geschickt werden, waehrend ohne Disconnect immer gewartet werden muss, bis das Laufwerk fertig mit dem aktuellen Request ist.


    Ich vermute, dass in dem Fall das MO Laufwerk die Requests intern erstmal sortiert, damit es die in einem 'Durchgang' abarbeiten muss, und der Laser nicht staendig hin- und herfahren muss.


    Ich muss den Code dafuer die naechsten Tage mal noch etwas aufraeumen und dann zu github pushen.


    Die SCSI ID wird jetzt auch automatisch gesucht, die muss man nicht mehr im Sourcecode anpassen.


    Ich habe damit mal einige Laufwerke durchgetestet:


    Iomega ZIP 100

    IOMEGA Lasersafe MO

    Quantum Prodrive

    Fujitsu M2266-512 (5,25 FH Disk)

    Teac MT-2ST (yeah, das erste Tape Laufwerk)


    Synchronuous Transfer Mode ist noch nicht drin, bin mir auch nicht sicher, ob das funktioniert. Eigentlich braeuchte man dafuer einen Hardware FIFO. Extra Hardware wollte ich aber nicht. Mit asynchronen Mode komme ich mit ein paar Optimierungen auf ~3MB/s, um mal eine alte MO/ZIP oder Festplatte zu schreiben/lesen reicht das. Eine 300GB SCSI Platte moechte man damit eher nicht fuellen ;)


    Das nur mal als kleines Update.

  • Lustig ist auch, das die Fujitsu beim hochfahren ihren Product String aendert:


    Jun 28 17:40:42 x1 kernel: [11638.920559] scsi 1:0:0:0: Direct-Access FUJITSU NOT READY 0020 PQ: 0 ANSI: 2

    Jun 28 17:40:44 x1 kernel: [11640.788316] scsi 1:0:0:0: Direct-Access FUJITSU NOT READY 0020 PQ: 0 ANSI: 2

    Jun 28 17:40:55 x1 kernel: [11652.032138] scsi 1:0:0:0: Direct-Access FUJITSU M2266S-512 0020 PQ: 0 ANSI: 2

  • ja, das macht mein SyQuest-Laufwerk auch, je nachdem welches Medium drin ist - mit nem 44MB meldet er sich ganz anders, als mit nem 200MB oder ohne;)

    ich bin signifikant genug:razz:

  • Wow, super! Das heißt, du kannst bereits auch unter Windows auf diese Laufwerke zugreifen? Wenn du so weit bist, dass du sagen kannst "So, das Ding läuft", will ich eins haben.


    Aber weißt du, was jetzt noch die Krönung wäre? Eine angepasste Version, die mit ATARI ACSI-Laufwerken umgehen könnte. Das gibt es noch garnicht. Damit könnte man aus Linux oder Windows direkt auf die Atari-Festplatten der Megafile und SH-Serie zugreifen. ACSI ist zu SCSI sehr ähnlich, eigentlich davon abgespeckt und im ATARI ST/TT Profibuch und im "Scheibenkleister" sehr gut dokumentiert. Ein paar Leitungen weg, ein paar SCSI-Bus-Phasen weg, und im Prinzip wärst du fertig. Wenn du Bock hättest, das zu bauen, auch davon würde ich einen Adapter nehmen.

    1ST1

  • Lesen/Schreiben funktioniert sowohl unter Linux als auch Windows. Die Performance ist fuer SCSI Verhaeltnisse bescheiden, ich komme mit der Maxtor auf ~3MB/s. Fuer die alten Platten reicht mir das aber. Als naechste muss ich jetzt erstmal den Code noch aufraeumen, es gibt da noch einige Baustellen, die im Moment nur schnell "reingebastelt" wurden, zum Beispiel, wie UAS Tags verwaltet werden.


    Von ACSI habe ich ueberhaupt keine Ahnung - hast du einen Link, was die Unterschiede sind? Ich habe online da jetzt auf die Schnelle nichts gefunden, habe aber auch nicht lange gesucht. Achja, und wenn man sowas machen will, muesste mir jemand so eine Platte zur Verfuegung stellen, ich habe ueberhaupt nix von Atari.:S

  • Danke. Ich mach jetzt erstmal mit SCSI weiter, und schaue mir ACSI danach an. Ich denke fuer so ein Projekt macht es aber sinn eine extra Platine zu machen. Und schon einmal SUBD19 Buchsen aufzutreiben ;)


    Das UAS mit Windows nicht geht, liegt am fehlenden BOS Descriptor. Ich ziehe mich jetzt erstmal mit der USB 3.1 Spezifikation zurueck :)

  • Ein tolles Projekt. :thumbup:


    Wird es dann noch eine überarbeitete Version geben, evtl. mit Bustreibern?


    Ich würde ja eine der vorhandenen Platinen nehmen, aber ist leider SMD (obwohl da soviel Platz für THT wäre ;)).

    Aber mal sehen, vielleicht mache ich mir selber eine THT-Platine.


    Super fände ich, wenn es auf GitHub auch den passenden Schaltplan im PDF-Format gäbe, damit man da auch mal reinschauen kann, wenn man Kicad nicht installiert hat.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Noch ne Frage: Kann man das Projekt einfach mit der Arduino-IDE auf den Teensy laden?

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Den Schaltplan kann ich noch in das Repository reinpacken, das ist kein Problem. Was meinst du mit 'evtl. mit Bustreibern'? Ich habe die 74F06 als Bustreiber drauf, oder meinst du einen richtigen SCSI Bustreiber chip?

  • Noch ne Frage: Kann man das Projekt einfach mit der Arduino-IDE auf den Teensy laden?

    Ich habe das ohne Arduino-IDE gemacht. Ich musste nur ARDUINOPATH auf das Verzeichnis setzen, in dem Arduino installiert ist, und dann reicht ein 'make' im teensy4 Pfad des geclonten Repository. Das startet dann auch automatisch das Flashen des Teensy.

  • Also Arduino-IDE installiert, aber über Komandozeile compiliert und geflasht? Vielleicht könntest du nochmal eine kurze Mini-Anleitung machen. :)

    Also was man installieren muss und wie man dann compiliert und flasht.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Den Schaltplan kann ich noch in das Repository reinpacken, das ist kein Problem. Was meinst du mit 'evtl. mit Bustreibern'? Ich habe die 74F06 als Bustreiber drauf, oder meinst du einen richtigen SCSI Bustreiber chip?

    Du hattest ja oben geschrieben, dass dir nicht gefällt, dass der SCSI-Bus direkt am Teensy hängt.

    Ach sorry - da ging es um zusätzliche Widerstände und nicht um Bustreiber - hatte ich verwechselt.


    Wolltest du die noch einbauen?

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Den Schaltplan kann ich noch in das Repository reinpacken, das ist kein Problem. Was meinst du mit 'evtl. mit Bustreibern'? Ich habe die 74F06 als Bustreiber drauf, oder meinst du einen richtigen SCSI Bustreiber chip?

    Du hattest ja oben geschrieben, dass dir nicht gefällt, dass der SCSI-Bus direkt am Teensy hängt.

    Ach sorry - da ging es um zusätzliche Widerstände und nicht um Bustreiber - hatte ich verwechselt.


    Wolltest du die noch einbauen?

    ich denke das ich irgendwann nochmal eine zweite Revision mache, in der die mit drin sind - ich will noch eine Version haben die man direkt auf die Platte stecken kann, so wie das auch bei den USB SATA Adaptern ist. Das dauert aber noch, die Version jetzt laeuft zumindestens so gut, das ich mich erstmal auf die Software konzentrieren will...