ZuluSCSI Operations Guide

From Rabbit Hole Computing
Revision as of 08:07, 6 January 2025 by Mbalmer (talk | contribs) (→‎Setting Up Your ZuluSCSI)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This page has been copied from the ZuluIDE operations guide; it is currently being edited to match the ZuluSCSI.

Setting Up Your ZuluSCSI

--- copied from IDE page; WIP! ---

Unboxing

When you first receive your ZuluSCSI, depending on the options you ordered, you should receive the following:

  • ZuluSCSI RP2040 Compact board
  • 3D-printed plastic carrier
  • 2x ¼" 4-40 screws
  • microSD card
  • Hardware interface board (optional)
  • Qwiic cable (included with hardware interface board)
  • DAC board with mounted Raspberry Pi Pico W (optional)

Board Overview

Take a moment to identify the various parts of the board as shown below.

File:ZuluSCSI RP2040 Compact (labeled).png
  • 4-pin Molex floppy power connector: Run a standard Molex 4-pin power cable to this port. If your system power supply has only the larger style, get an adapter cable to switch it to the smaller size (the same size as that found on a 3½" floppy disk drive).
  • 40-pin male IDC connector: Plug your IDE bus cable into this. The connector is keyed, but some IDE cables lack the key, so make sure that the red stripe on the cable lines up with the little arrow embossed into the connector itself.
  • Configuration DIP switches: These will set how the ZuluSCSI responds when the BIOS requests information from the device.
  • Bootloader button: Used during the firmware update process.
  • I2C Footprint: Addon boards can attach through this open footprint either by being soldered directly to it or by attaching standard 0.1" header to this footprint.
  • Qwiic Port: Addon boards can also attach here through the use of a standard Qwiic I2C cable.
  • MicroUSB Port: Used during the firmware update process. Can also be used as a serial monitor to capture debug logs in real time with a second PC.
  • microSD Card Slot: Your SD card with images goes here.
  • Activity LED: Flashes in sync with drive access, also used to indicate status conditions as described later
  • Eject button: Performs a hardware eject for optical drives. Some operating systems will need this after dismounting an image from the system to register that the drive door is closed.
  • External eject and LED headers: If you intend to mount the device internally, but want external access to these, you can use standard 0.1" headers to run an eject button and an LED to a case panel. The red box on the image above indicates the positive pin.

Molex power connector

Make sure that your power connection uses a 3½" floppy power connector, not the larger drive connector used on full-size optical drives, hard drives, and the like.

✅ 3½" connector ❌ 5¼" connector

If your host system only has the 5¼" connectors, you'll need to either purchase or make an adapter cable. Making an adapter cable requires the following parts:

  • 4× 5¼ male pins: TE Connectivity P/N 60620-1
  • 1× 5¼ male housing: TE Connectivity P/N 1-480426-0
  • 4× 3½ female sockets: TE Connectivity P/N 170262-1
  • 1× 3½ female housing: TE Connectivity P/N 171822-4

When making the cables, use 20-gauge wire. If you're crimping a splitter cable, it's also possible to use 18-gauge wire on the 5¼ side going to the female plug, and then crimp the larger wire going into the male splitter side together with 22 or 24-gauge wire going to the 3½ side. Crimping the cables can be done with standard tools found on Amazon, such as the IWISS SN-025.

DIP Switch Configuration

File:DIP switches (ZuluSCSI).png

Set the three DIP switches according to how the device needs to be configured in the host system.

  • Switch 1: Turn IDE Cable Select on or off. Most systems will work fine with this off, but there are several systems (especially single-board industrial computers) which will use cable-select to determine primary and secondary drives and thus will need it on. If your system hangs during IDE device detection with the ZuluSCSI attached to the bus, try turning this switch ON first.
  • Switch 2: Respond as Primary/Master (OFF) or Secondary/Slave (ON).
  • Switch 3: Debug log disable/enable. If this switch is ON, the device will automatically write out a detailed debug log to zululog.txt on the SD card as long as the device is powered on. Additionally, if you have a USB cable plugged into the MicroUSB port on the device with this switch on, it will also print the debug log over the cable via the RP2040's internal serial connection.

Qwiic Port and External Hardware Interface

The external hardware interface (optional) can be connected to this port. The interface provides a Gotek-like system to navigate disc images stored on the SD card and to cycle through them.

The rotary encoder knob on the hardware interface functions exactly like a Gotek device — spin the knob to change images or menu selections, press the knob to select. The Eject button works exactly like the eject button on the main board, although with the hardware interface attached, it will ask you to confirm the eject by pressing the rotary knob. The User button is currently reserved for future use.

Activity LED

The Activity LED will flash normally during disk access, however, in certain specific failure modes or status changes, you will see it flashing with a pattern.

  • 1 fast blink, at boot time: Image file loaded successfully
  • 3 fast blinks: No valid images found on SD card
  • 5 fast blinks: SD card is present, but is not being detected
  • Morse code pattern: Firmware crash. The particular pattern will indicate where the crash occurred.

If a firmware crash occurs, it will also try to save information to the file zuluerr.txt on the SD card.

SD Card Preparation and Use

Format your SD card with either the FAT32 or exFAT filesystems. If you intend to use images larger than 4 GB in size, you must format the card using exFAT as the FAT32 filesystem cannot support individual files larger than 4 GB.

Load your images onto the card into the root folder. Images stored in folders, unless they are BIN/CUE images, will be ignored.

For BIN/CUE files, they can be placed into a folder with the same name as the image file; i.e., if you have a BIN/CUE pair named bigdiscofstuff.bin and bigdiscofstuff.cue you should place them in a directory named bigdiscofstuff. This is required if your BIN/CUE image has a single CUE file and multiple BIN files.

Drive Types

When configuring the ZuluSCSI, you can set it to be multiple different drive types based on the images you intend to use. Out of the box, the ZuluSCSI configures itself as an optical drive, but through the INI file or by using filename prefixes, you can tell the ZuluSCSI which device you want it to behave as when you power it on.

Using the INI File

Under the [IDE] heading, use the Device= value to set the drive type:0

  • CDROM (default) will cause the ZuluSCSI to respond as an optical drive.
  • Zip100 will cause the ZuluSCSI to respond as an ATAPI-attached 100MB Zip Drive
  • Zip250 will cause the ZuluSCSI to respond as an ATAPI-attached 250MB Zip Drive
  • Removable will cause the ZuluSCSI to respond as a generic removable media device
  • HDD will cause the ZuluSCSI to respond as a standard hard disk drive

If this section is absent, or the zuluide.ini file is not present on the SD card, the device will default to behaving as an optical drive.

Using a filename prefix

Add the following to the beginning of your filename to switch the ZuluSCSI's device mode:

  • cdrm will cause the ZuluSCSI to load the image as an optical drive image.
  • zipd will cause the ZuluSCSI to load the image as a 100MB or 250MB Zip disk.
  • remv will cause the ZuluSCSI to load the image as a generic removable media device.
  • hddr will cause the ZuluSCSI to load the image as a non-removable hard disk image.

The Device= option in the INI file will override this behavior. Additionally, if a filename prefix is specified, all other files that you want to use must have the same prefix.

Filename extensions

In optical drive mode, the device will only recognize images that end in .iso or .bin/.cue, while also recognizing folders for purposes of reading multipart .bin/.cue images.

For Zip drives or other removable media,ᚸso long as the filename doesn't contain one of the prefixes above, doesn't have an optical drive image extension (.iso/.bin/.cue), or one of the extensions on the ignored list below, it will load the file as a disk image and attempt to mount it.

If the ZuluSCSI starts up as an optical drive, it will use the first image it finds on the SD card as an optical disc.

Changing disk images

Without the hardware interface or web interface, changing disk images is done by pressing the eject button on the device itself or by performing a hardware eject directly through the operating system. The firmware will cycle to the next available image on the SD card in alphabetical order.

Ignore list

Files with any of the following extensions will be ignored by the ZuluSCSI and will not appear in the list of available images on the hardware or web interfaces, and will not be selected when a hardware eject is performed:

  • .cue .txt.rtf.md.nfo.pdf.doc

Compressed archive file formats:

  • .zip .7z .dmg .rar .tar .tgz .gz .bz2 .tbz2 .xz .zst .lzh .lha .lzo .lz4 .arj .hqx .cpt .s7z

Additionally, any file that begins with zulu will be ignored.

USB Mass Storage

You can use the ZuluSCSI as a passthrough to access the SD card directly by putting the option enable_usb_mass_storage=1 in the [IDE] section of the INI file. In order to use this mode, the ZuluSCSI must not currently be operating as an attached device through the IDE port on a host computer.

Hotplugging

The ZuluSCSI supports removal and re-insertion of the SD card while the device is on and functioning. Until the device detects that a card has been inserted, you'll see the activity LED blink 5 times rapidly, pause, and then repeat until a card is reinserted. Once the card has been detected, the LED will blink once, turn off, and return to normal indication of disk access.

Updating the Firmware

New firmware releases can be obtained by visiting the Github page for the project. The most recent firmware will be listed at the top with a green "Latest" badge. You can update the firmware two different ways.

Using the SD card

The ZuluSCSI can update itself when it's initially powered on. You'll need to have access to the device so you can remove its SD card.

  1. Power down the system that the ZuluSCSI is attached to and remove its SD card.
  2. Attach the SD card to the computer where you'll download the update.
  3. From the Github page, download the latest firmware file with a .BIN extension.
  4. Copy the downloaded .BIN file to the root folder of the SD card and rename it as ZuluSCSI.bin.
  5. Dismount the SD card from the computer, and reinsert the SD card into the ZuluSCSI.
  6. Power the system back on. The ZuluSCSI will automatically begin the firmware update process, which takes about one second. If the system has to boot to the ZuluSCSI and its startup is particularly quick, you may need to reset the computer once to allow the firmware update process to complete on the ZuluSCSI so it can become ready.
  7. When the firmware update process finishes, the ZuluSCSI will delete the update file and continue on to normal operation.

Using the BOOTLDR button

BOOTLDR button

If you have physical access to the device and a way to plug the MicroUSB port into a host computer, this is the traditional way to update RP2040-based devices like the ZuluSCSI.

  1. Power down the system the ZuluSCSI is attached to, and if necessary, unplug it from its cabling.
  2. From the Github page, download the latest firmware file with a .UF2 extension.
  3. Attach a MicroUSB cable to the device you'll be uploading the firmware from.
  4. While holding down the BOOTLDR button on the ZuluSCSI, attach the other end of the cable to the MicroUSB port on the ZuluSCSI.
    Copy the UF2 file to the device.
  5. A Windows Explorer window may appear with a drive called RPi-RP2. If it doesn't, open a Windows Explorer window and look for a drive with this name.
  6. Copy the .UF2 file you downloaded to the root folder of the drive that appeared when you plugged in the ZuluSCSI.
  7. The RPi-RP2 window should close on its own once the copy completes. When the device disconnects on its own, the firmware update process is complete.
  8. Disconnect the USB cables and reattach the ZuluSCSI to its host, if you removed it in step 1.

Troubleshooting

Some simple things to check before you dive deeper:

  • Make sure there are no primary/secondary conflicts on the IDE channel that the ZuluSCSI is attached to.
  • Make sure that the power connection to the device is secure and attached.
  • Try toggling the Cable Select switch. Some BIOSes prefer the device to be one way or the other and there's often little rhyme or reason between even the exact same BIOS on the exact same build across two machines.

For more specific problems, keep reading.

The icon at the left of the problems listed tends to pertain to that particular operating system.

(as optical drive): The ZuluSCSI doesn't seem to be recognized under MS-DOS.

If you have the ZuluSCSI attached as an optical drive in a system that doesn't natively support the ATAPI protocol, you may have to install a third-party driver to allow DOS to see the drive. This was common for all systems based on 386 processors and earlier, most 486 systems, and some Pentium-based systems.

The simplest solution is to obtain a copy of the Microsoft Windows 98 startup disk, and copy the OAKCDROM.SYS and MSCDEX.EXE files from it to the root folder of your boot drive. Then, modify your CONFIG.SYS and AUTOEXEC.BAT files like this:

CONFIG.SYS

Add this line to the top of the file:

DEVICE=C:\OAKCDROM.SYS /D:MSCD000

AUTOEXEC.BAT

Add this line to the end of the file:

C:\MSCDEX.EXE /D:MSCD000

Reboot the system, and the drive should populate.

Keep in mind that the only DOS-based CD-ROM driver that has been tested to work with the ZuluSCSI at present is the Oak Technology driver (OAKCDROM.SYS) and VIDE-CDD.SYS, the driver that is included on the Microsoft CD-ROM Extensions installation floppy disk.

Other generic drivers, such as the LG (GoldStar) or Adaptec drivers may work, but have not been fully tested.

(as optical drive): The system recognizes the first disc image loaded, but then acts like the drive isn't ready when I change images.

This issue is related to firmware revisions prior to 2024.11.08. Update your device firmware on the Github repo.

If you are unable to update the firmware, there is a workaround that you can use until you are able to do so.

After changing images, try to access the drive. The system will pause for a long moment, and then you should see a message similar to this:

CDR101: Not ready reading drive E:
(A)bort, (R)etry, (F)ail?

Press F to fail the check, and then if it drops back to a command prompt, try to access the drive again and it should present the image as normal.

(as optical drive): Performing an "eject" command in Windows Explorer doesn't actually cycle to the next image.

This issue is related to firmware revisions prior to 2024.12.10. Update your device firmware on the Github repo.

The workaround for this is to have either the web interface or hardware interface connected and swap images that way. Another workaround is to manually eject the SD card from the ZuluSCSI, add a zero to the beginning of the desired disk image's name, and then reinsert the SD card. The ZuluSCSI will then look for the first image it can load alphabetically, which should be the newly-renamed image.

(attached to sound card): The ZuluSCSI seems to be working correctly, but it's never detected.

This is a potential hardware configuration issue. Some sound cards, even if they have an actual IDE interface, force themselves to be configured as either the primary or secondary interface in the system and are not configurable. Most sound cards are also capable of recognizing only optical devices, so if you have the ZuluSCSI configured as something other than an optical drive, the card may not recognize the device attached to it. If you want to use the ZuluSCSI as something other than an optical drive, attach it to an IDE port attached to the motherboard or I/O card, as opposed to a sound card.

(with audio DAC board): I have the device attached to my SoundBlaster's CD audio in connector, but I only hear the right channel.

Early SoundBlaster cards (including the Pro and Pro 2) used a different pinout on the CD audio header. Instead of R-G-G-L (right channel, ground, ground, left channel) these cards' pinout was NC-L-G-R (no connect, left, ground, right). You may need to get a different cable.