ZuluSCSI: Difference between revisions

From Try-AS/400
Jump to navigation Jump to search
Examples: Disk support
Tape drive support: Removed inert entry
 
(8 intermediate revisions by the same user not shown)
Line 8: Line 8:


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.
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.
<blockquote>'''Note:''' Current state of affairs is that at least for writes, the SD card itself is a considerable brake shoe for writes, presumably because of so called 'Write Amplification''. This is not meant to stay like this forever. Optimizations are possible and will be implemented eventually.</blockquote>


== Hardware overview ==
== Hardware overview ==
Line 33: Line 35:
The firmware presents a simple menu driven UI for some tasks.
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.
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 be orderly shut down, though.


== Configuration ==
== Configuration ==
Line 73: Line 75:


=== Directories ===
=== 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.
For a device usually allowing dynamic addition and removal of media — CD-ROM-, and tape drives, you can create a directory instead of a file. 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>
Files within the directories can be freely named. The ''Eject'' button loads and inserts the next image in order. Individual images can be inserted through the menu via USB.


=== Configuration file ===
=== Configuration file ===
Line 90: Line 92:
* use the serial console to attach image(s) to the drive.
* use the serial console to attach image(s) to the drive.
* ''zuluscsi.ini'':
* ''zuluscsi.ini'':
[SCSI]
System="AS400_PPC"
  [SCSI0]
  [SCSI0]
  TapeDensity = 0x25
  Device = "AS400_PPC"


Caveats:
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!
* 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.
* 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.
 
* The amended (with an explicit ''Device'' statement) tape code as of v2026.08.28 has not yet undergone extensive testing.
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 ===
=== CD drive support ===
Line 118: Line 111:
* 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.
* 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.
Tested with Firmware 2026-08-07, 9401-150, V4R4, V5R2: IPL only so far, but that works.


=== Disk drive support ===
=== Disk drive support ===
The officially released code base is able to present a singular #6717, 8.5&thinsp;GiB disk drive to the system, initialize, and install SLIC + base OS/400 + LPPs + PTFs.
The officially released code base is able to present multiple disk drives to the system, initialize, and install SLIC + base OS/400 + LPPs + PTFs.


* Generate disk image:
* Copy ''as400_disk_definitions.txt'' from the official GitHub repository to the SD card.
dd if=/dev/zero of=HD6.img bs=522 count=17177940 status=progress
** Because of serial numbers currently being hard coded, only one disk per type should be used for now!
* ''zuluscsi.ini'':
* ''zuluscsi.ini'':
  [SCSI]
  [SCSI]
  System = AS400_PPC
  System = AS400_PPC
 
  [SCSI6]
  [SCSI6]
AS400_DiskProfile = "09L4044"
  PrefetchBytes = 0
  PrefetchBytes = 0
When a ''AS400_DiskProfile'' is configured for a given SCSI ID, and the associated image cannot be found on the SD card, a new one is generated automatically, with the correct size. This takes some time, so wait until the activity LED stays unlit.
There is a shell-script <code>utils/extract_as400_disk_data.sh</code> in the original source tree on GitHub to generate more ''as400_disk_definitions.txt'' entries from real disks connected to a SCSI controller when ran under Linux.


Caveats:
Caveats:
* Writes to the emulated disk are very slow compared to reads.
* Writes to the emulated disk are very slow compared to reads.


Fully tested with Firmware 2026-08-21, 9401-150, V4R4.
Fully tested with Firmware v2026.08.27RC1, 9401-150, V4R4, V5R2.


== Current state ==
== Current state ==
Line 161: Line 159:
|}
|}


All successful tests so far have been based on a ZuluSCSI wide board, while the CISC tests have been done with a ZuluSCSI Blaster.
All successful tests so far have been based on a ZuluSCSI wide board on a 9401-150, while the CISC tests have been done with a ZuluSCSI Blaster on a 9401-P02.
 
There are success reports of more 150's working, and one of a 9406-270 becoming stuck with A6000244, ''Contact was lost with device indicated''.


== See also ==
== See also ==

Latest revision as of 22:59, 29 August 2026

ZuluSCSI by Rabbit Hole Computing is a comparatively new family of SCSI device emulators featuring an SD card based backing store. Distinct features to older, similar devices is support for Wide-SCSI, Ultra-Speed, and a fast CPU.

ZuluSCSI also features an OpenSource firmware, so it can be extended comparatively easily.

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.

Note: Current state of affairs is that at least for writes, the SD card itself is a considerable brake shoe for writes, presumably because of so called 'Write Amplification. This is not meant to stay like this forever. Optimizations are possible and will be implemented eventually.

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 /dev/ttyACMnn being a digit, usually 0. On macOS, it's /dev/tty.usbmodem*, with a row of digits appended on behalf of the *.

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 be orderly shut down, 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[1] 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:

<TT><ID>[any text].<ext>
 ^^   ^
 |    +-------------- SCSI ID character (byte offset 2)
 +------------------- two-character type prefix (case-insensitive)
  • TT:
TT Device type Default block size
HD Hard disk (fixed) 512 Bytes
CD CD-ROM (optical) 2048 Bytes
TP Sequential (tape) 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, you can create a directory instead of a file. The naming scheme follows the same structure as files, but [any text] must be omitted.

Files within the directories can be freely named. The Eject button loads and inserts the next image in order. Individual images can be inserted through the menu via USB.

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 [SCSI] section to apply settings to all devices, and [SCSIn], where n is the ID of the given SCSI devices.

Examples

These are in the scope of AS/400.

Tape drive support

  • create directory TP0,
  • populate with one or more 0 byte files named *.tap files, e. g. by using the Unix touch,
  • use the serial console to attach image(s) to the drive.
  • zuluscsi.ini:
[SCSI0]
Device = "AS400_PPC"

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.
  • The amended (with an explicit Device statement) tape code as of v2026.08.28 has not yet undergone extensive testing.

CD drive support

  • create directory CD0,
  • 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, V5R2: IPL only so far, but that works.

Disk drive support

The officially released code base is able to present multiple disk drives to the system, initialize, and install SLIC + base OS/400 + LPPs + PTFs.

  • Copy as400_disk_definitions.txt from the official GitHub repository to the SD card.
    • Because of serial numbers currently being hard coded, only one disk per type should be used for now!
  • zuluscsi.ini:
[SCSI]
System = AS400_PPC

[SCSI6]
AS400_DiskProfile = "09L4044"
PrefetchBytes = 0

When a AS400_DiskProfile is configured for a given SCSI ID, and the associated image cannot be found on the SD card, a new one is generated automatically, with the correct size. This takes some time, so wait until the activity LED stays unlit.

There is a shell-script utils/extract_as400_disk_data.sh in the original source tree on GitHub to generate more as400_disk_definitions.txt entries from real disks connected to a SCSI controller when ran under Linux.

Caveats:

  • Writes to the emulated disk are very slow compared to reads.

Fully tested with Firmware v2026.08.27RC1, 9401-150, V4R4, V5R2.

Current state

We have to differ three hardware generations when considering Zulu vs. AS/400:

  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 on a 9401-150, while the CISC tests have been done with a ZuluSCSI Blaster on a 9401-P02.

There are success reports of more 150's working, and one of a 9406-270 becoming stuck with A6000244, Contact was lost with device indicated.

See also

Weblinks

Footnotes

  1. Limiting files to max. 4 GiB in size