|
|
| (10 intermediate revisions by the same user not shown) |
| Line 3: |
Line 3: |
| ZuluSCSI also features an OpenSource firmware, so it can be extended comparatively easily. | | ZuluSCSI also features an OpenSource firmware, so it can be extended comparatively easily. |
|
| |
|
| __TOC__
| | For details, refer to the web links below. |
| | |
| For most AS/400 machines, you actually want a ZuluSCSI wide, because it offers the best performance. | |
| | |
| The ZuluSCSI firmware can emulate multiple devices at once. There is no real need to add multiple Zulus to a given SCSI bus. One Zulu can easily saturate even the UltraWide SCSI bus of a 9401-150, and due to the SD card, delays are minimal. You can gain more performance with bigger machines, if they have multiple SCSI buses, though.
| |
| | |
| == Hardware overview ==
| |
| Depending on the exact model, boards themselves have three DIP switches and tiny push buttons:
| |
| * 1: switch to initator mode,
| |
| * 2: enable debug log,
| |
| * 3: enable SCSI termination.
| |
| | |
| The push buttons call the functions:
| |
| * Bootloader, for firmware-recovery,
| |
| * Eject.
| |
| | |
| Also, three LEDs are provided, for indication of
| |
| * 2.8 V power OK,
| |
| * 3.3 V power OK,
| |
| * SD-card activity.
| |
| | |
| The device itself needs 5 V power, and can be powered by:
| |
| * the USB port,
| |
| * the termpower line of the SCSI bus,
| |
| * molex style power connectors.
| |
| | |
| Usually, the integrated USB port is configured as USB modem, for usage with a terminal emulator. You can use the Linux or macOS ''screen'' command for that. Depending on your operating system, you need to find out what device file is created when plugging the Zulu's USB port. On Linux, it's <tt>/dev/ttyACM''n''</tt> — ''n'' being a digit, usually 0. On macOS, it's <tt>/dev/tty.usbmodem*</tt>, with a row of digits appended on behalf of the <tt>*</tt>.
| |
| | |
| The firmware presents a simple menu driven UI for some tasks.
| |
| | |
| There is no need to shut down the device itself, it's safe to "pull the plug" when there is no activity. The Operating System running on the attached computer should, though.
| |
| | |
| == Configuration ==
| |
| Configuration itself is usually automatic, according to the files and directories found on the SD card. The SD card has either a FAT32<ref>Limiting files to max. 4 GiB in size</ref> or exFAT file system, the firmware understands both. It's easier to use the SD card with a card reader on a newer computer to create configurations, and files. The SD card is hotplug capable, and upon reinsertation, the ZuluSCSI reinitializes itself according to the SD card's content.
| |
| | |
| Three devices classes are of general interest in the AS/400 world:
| |
| * Disk (DASD),
| |
| * CD/DVD (Optical),
| |
| * Tape.
| |
| | |
| === Files ===
| |
| File names are composed as follows:
| |
| <nowiki><TT><ID>[any text].<ext></nowiki>
| |
| ^^ ^
| |
| | +-------------- SCSI ID character (byte offset 2)
| |
| +------------------- two-character type prefix (case-insensitive)
| |
| | |
| * '''TT''':
| |
| :{|class="wikitable"
| |
| !TT
| |
| !Device type
| |
| !Default block size
| |
| |-
| |
| |HD
| |
| |Hard disk (fixed)
| |
| |align="right"|512 Bytes
| |
| |-
| |
| |CD
| |
| |CD-ROM (optical)
| |
| |align="right"|2048 Bytes
| |
| |-
| |
| |TP
| |
| |Sequential (tape)
| |
| |align="right"|512 Bytes
| |
| |}
| |
| * The '''ID''' is exactly one char, and must be given in hexadecimal. This matters only for IDs ≥ 10.
| |
| * '''any text''' is entirely optional.
| |
| * The '''file extension''' doesn't matter.
| |
| | |
| === Directories ===
| |
| For a device usually allowing dynamic addition and removal of media — CD-ROM-, and tape drives. The naming scheme follows the same structure as files, but ''[any text]'' must be omitted.
| |
| | |
| Files within the directories can be freely named, and are used in alphabetical order.<ref>Either through the ''Eject'' button, or the media menu.</ref>
| |
| | |
| === Configuration file ===
| |
| In addition, a configuration file can be supplied to provide additional information to either all or one emulated device. Having a ''zuluscsi.ini'' is normally optional, but for enabling AS/400 quirks, it's mandatory.
| |
| | |
| The configuration file must be named ''zuluscsi.ini'', and is in a simple ini-style format. It has a global <tt>[SCSI]</tt> section to apply settings to all devices, and <tt>[SCSI''n'']</tt>, where ''n'' is the ID of the given SCSI devices.
| |
| | |
| == Examples ==
| |
| These are in the scope of AS/400.
| |
| | |
| === Tape drive support ===
| |
| * create directory <code>TP0</code>,
| |
| * populate with one or more 0 byte files named <code>*.tap</code> files, e. g. by using the Unix <code>touch</code>,
| |
| * use the serial console to attach image(s) to the drive.
| |
| * ''zuluscsi.ini'':
| |
| [SCSI]
| |
| System="AS400_PPC"
| |
|
| |
| [SCSI0]
| |
| TapeDensity = 0x25
| |
| | |
| Caveats:
| |
| * When you choose an image file through the USB port's media menu, make sure that you not only choose an image file, but afterwards ''insert'' it!
| |
| * If you replace a hardware tape drive, make sure to delete your old tape device file first, then IPL, check/set the new device name in DST, and have auto-configuration create the new device file during the following IPL.
| |
| | |
| This configuration has been tested over the course of multiple weeks:
| |
| * Occasional <tt>go save</tt> 21,
| |
| * daily differential backups,
| |
| * occasional single file restores.
| |
| | |
| Tested with Firmware 2026-06-12, 9401-150, V4R5.
| |
| | |
| === CD drive support ===
| |
| * create directory <code>CD0</code>,
| |
| * populate with one or more readymade ISO images,
| |
| * use the serial console to attach image(s) to the drive.
| |
| | |
| No special handling for the ID in ''zuluscsi.ini''.
| |
| | |
| Caveats:
| |
| * When you choose an image file through the USB port's media menu, make sure that you not only choose an image file, but afterwards ''insert'' it!
| |
| * If you replace a hardware CD drive, make sure to delete your old CD device file first, then IPL, check/set the new device name in DST, and have auto-configuration create the new device file during the following IPL.
| |
| | |
| Tested with Firmware 2026-08-07, 9401-150, V4R4: IPL only so far.
| |
| | |
| === Disk drive support ===
| |
| The officially released code base is able to present a singular #6717, 8.5 GiB disk drive to the system, initialize, and install SLIC + base OS/400 + LPPs + PTFs.
| |
| | |
| * Generate disk image:
| |
| dd if=/dev/zero of=HD6.img bs=522 count=17177940 status=progress
| |
| * ''zuluscsi.ini'':
| |
| [SCSI]
| |
| System = AS400_PPC
| |
| | |
| [SCSI6]
| |
| PrefetchBytes = 0
| |
| | |
| Caveats:
| |
| * Writes to the emulated disk are very slow compared to reads.
| |
| * One user with a RP2040 reported failure for the disk to be recognized. Prerelease firmware solved the issue.
| |
| | |
| Fully tested with Firmware 2026-08-21, 9401-150, V4R4.
| |
| | |
| == Current state ==
| |
| We have to differ three hardware generations when considering Zulu vs. AS/400:
| |
| {|class="wikitable"
| |
| !
| |
| !CISC/IMPI, 520 bytes/block disks
| |
| !RISC/SPD, 520/522 bytes/block disks
| |
| !RISC/PCI, 522 bytes/block disks
| |
| |-
| |
| !CD-ROM
| |
| |Not supported
| |
| |Untested
| |
| |Works
| |
| |-
| |
| !Tape
| |
| |Fails, hangs with SRC early.
| |
| |Untested
| |
| |Works
| |
| |-
| |
| !Disk
| |
| |Fails, hangs with SRC early.
| |
| |Untested
| |
| |Works
| |
| |}
| |
| | |
| All successful tests so far have been based on a ZuluSCSI wide board, while the CISC tests have been done with a ZuluSCSI Blaster.
| |
| | |
| == Next ==
| |
| These features are completed, partially tested, but did not make it to the official releases yet:
| |
| * More disk profiles, loadable in ''zuluscsi.ini'' via external file ''as400_disk_definitions.txt'', so different types than the built-in 522 bytes, 8.5 GiB #6717 can be assigned.
| |
| ** Shellscript to generate more ''as400_disk_definitions.txt'' entries from real disks connected to a SCSI controller when ran under Linux
| |
| ** Because of serial numbers currently being hard coded, only one disk per type should be used
| |
| * Allowed more memory to accommodate the necessary VPD SCSI pages for multiple disks
| |
| * Present captured real tape VPD/SCSI data from IBM SLR5/QIC1000 when using <code>Device = "AS400_PPC"</code> or <code>Device = "AS400_CISC"</code> in an ID stanza
| |
| * Created a new build profile for the ZuluSCSI Blaster, removing all the add-on code being unneeded when used with AS/400
| |
|
| |
|
| == See also == | | == See also == |
| Line 179: |
Line 11: |
|
| |
|
| == Weblinks == | | == Weblinks == |
| | * [https://github.com/ZuluSCSI/ZuluSCSI-firmware/blob/main/README-as400.md README-as400.md], ZuluSCSI-firmware, GitHub |
| * [https://zuluscsi.com ZuluSCSI Website] — see the <tt>☰</tt> button top right for more details | | * [https://zuluscsi.com ZuluSCSI Website] — see the <tt>☰</tt> button top right for more details |
| * [https://github.com/ZuluSCSI/ZuluSCSI-firmware ZuluSCSI-firmware], GitHub | | * [https://github.com/ZuluSCSI/ZuluSCSI-firmware ZuluSCSI-firmware], GitHub |