Announcing ZuluSCSI - A file-based SCSI device emulator

rabbitholecomputing

Vendor The First
@tcole This is very much not a dumb question :)

The default behavior of Classic Mac OS is to eject all optical drives at power-off. It seems it's not cycling to the second ISO, so it would be helpful if you could send us your zululog.txt, as well as a directory listing/screenshot of the ISO files you have on the SD card, so we can attempt to replicate the behavior.
 

tcole

Well-known member
@tcole This is very much not a dumb question :)

The default behavior of Classic Mac OS is to eject all optical drives at power-off. It seems it's not cycling to the second ISO, so it would be helpful if you could send us your zululog.txt, as well as a directory listing/screenshot of the ISO files you have on the SD card, so we can attempt to replicate the behavior.

Thanks! Heading out of town for the holidays, so I’ll send this when I’m back home late next week.
 

tcole

Well-known member
@tcole This is very much not a dumb question :)

The default behavior of Classic Mac OS is to eject all optical drives at power-off. It seems it's not cycling to the second ISO, so it would be helpful if you could send us your zululog.txt, as well as a directory listing/screenshot of the ISO files you have on the SD card, so we can attempt to replicate the behavior.

Attached is my zululog.txt and my zuluscsi.ini (I added .txt extension so the forums would let me upload it, I know you didn't ask for the .ini file, but through it might be helpful).

Here is a screenshot of the directory listing from the SD card.

Screenshot 2022-12-30 at 12.46.23.png

It does cycle properly when I do a cold boot, then drag the mounted ISO to the trash. I can cycle through all 3 images just fine.

But when I do a reboot (Special -> Restart) the system doesn't have any of the ISOs mounted once it boots again. I have to do Special - Shut Down to get any ISO to mount again.

I also went ahead and upgraded to firmware 1.2.0, no change.
 

Attachments

  • zululog.txt
    2.9 KB · Views: 6
  • zuluscsi.ini.txt
    2.1 KB · Views: 14

kopeck

New member
Hi all, trying to get my Mini 1.0 working with my MacPlus.

It simply doesn't see the disk to start from. I've attached the log; nothing looks out of place to me. The led blinks once and then goes solid.

I've tried 6.0.8 and 7.1 pre-made images (from the same source). My Classic II boots off the 7.1 images without a hitch; it's not capable of booting 6.0.8, but it reads the file system just fine.

I played with the config a bit, setting it to SCSI I (which, from what I understand, is what the Plus supports) didn't help.

Oh, and the Plus has the diode hack.

Thanks,

K
 

Attachments

  • zululog.txt
    795 bytes · Views: 4
Last edited:

rabbitholecomputing

Vendor The First
On your ZuluSCSI SD card, create a zuluscsi.ini file, and inside it, put the following two lines:

[SCSI]
Debug=1

Then, re-attempt booting, and send the contents of your zululog.txt to support@zuluscsi.com, where we can continue this conversation.

This thread is not intended for general technical support, but let's keep the conversation going via e-mail.
 

kopeck

New member
My apologies, I saw a few other tech questions, so I figured it was OK.

I'll send you my log in a bit.

Thanks,

K
 

jmacz

Well-known member
Need some help. Trying to figure out two issues I am having while trying to use the ZuluSCSI 1.1 and ZuluSCSI Mini with my Quadra 700.

Issue #1: Use ZuluSCSI 1.1 (internal) and ZuluSCSI Mini (external) at the same time

I have the ZuluSCSI 1.1 as my only internal SCSI device and the ZuluSCSI Mini as my only external SCSI device. The ZuluSCSI 1.1 has termination enabled and the ZuluSCSI Mini doesn’t give you an option (it’s permanently enabled). Note that both units have the latest firmware installed.

I have a bootable image (7.5.5) on both of my SD cards. On one, I have named the image HD1.img and on the second, I have named the image HD5.img. Both the ZuluSCSI 1.1 and ZuluSCSI Mini are connected to my Quadra 700. If I only plug an SD card into my ZuluSCSI 1.1, my Mac boots fine. If I only plug an SD card into my ZuluSCSI Mini, my Mac boots fine. If I have both of my SD cards plugged into the Zulus, my Mac will not boot and gives me a question mark disk icon. Doesn’t matter if I swap SD cards. If I only use one SD card, it boots. If I use both, it does not. I have looked at the log files and both units show that the image is detected properly and no issues. There are no error logs. Enabling Debug = 1 doesn’t seem to give me any additional messages.

Can you only use one Zulu device at a time? I was hoping to have the internal one as my main boot device. And also use an external one to transfer files between Macs.

Issue #2: Using only the ZuluSCSI 1.1, can’t seem to have more than 2 disks on the SD card.

In this scenario, I am only using the ZuluSCSI 1.1 internally. The SD card has three images on it: HD1.img (bootable 7.5.5), CD4.iso (bootable CD which is an Apple recovery disk), HD5.img (blank 2GB disk image). The Quadra 700 refuses to boot (question mark disk icon). If I delete either the CD4.iso or the HD5.img, then the Quadra 700 boots fine. So I can boot with HD1.img and HD5.img, or I can boot with HD1.img and CD4.iso, but I can’t boot if I have all three images on the SD card. Again, the log file shows all three images are detected fine. There is no error log. And enabling Debug = 1 doesn’t seem to provide any additional messages in the log file.

I thought I read you can have multiple images on the SD card and have it work with ZuluSCSI 1.1. I must be doing something wrong?

Any help greatly appreciated, thanks!
 

jmacz

Well-known member
BTW, I am also seeing the issue that tcole mentioned a few posts up where on a Restart, my isos fail to mount. I have to Shutdown first for the iso image to mount again.
 

jmacz

Well-known member
UPDATE: So I saw a couple posts about how older < 4GB size SD cards might not be fully compatible as they did not implement the spec correctly. One of my cards was a 2GB card. So I replaced it with a 4GB card. Now everything seems to work. I am able to mount multiple drive images and I can also use both ZuluSCSI 1.1 and ZuluSCSI Mini at the same time.
 

Compgeke

Well-known member
I've actually noticed this issue too on my 9150. I just assumed it was the CD driver on the machine or some BS. I quit having high hopes for old Mac OS a long time ago.

One thing worth noting for ISO files is there is an active bug over on Github related to read-only files. If your ISO is marked as a read-only file, the zuluscsi firmware will fail to load it. I've personally ran into this and was digging my hair out before finding that over on the github bugs.
 

tcole

Well-known member
UPDATE: So I saw a couple posts about how older < 4GB size SD cards might not be fully compatible as they did not implement the spec correctly. One of my cards was a 2GB card. So I replaced it with a 4GB card. Now everything seems to work. I am able to mount multiple drive images and I can also use both ZuluSCSI 1.1 and ZuluSCSI Mini at the same time.

Did a different SD card also fix the ISO mounting issue?
 

jmacz

Well-known member
Did a different SD card also fix the ISO mounting issue?

No, unfortunately it did not. It just fixed the issues I was having with multiple devices and multiple drives. But I can't get CDs to show up after a restart. I have to perform a shutdown to have them mount properly.
 

jmacz

Well-known member
@aperezbios it didn't work for me.

Setup
  • ZuluSCSI 1.1 on the internal connector with 3 hard disk images (HD0.img, HD1.img, HD2.img)
  • ZuluSCSI Mini 1.0 on the external connector with 1 hard disk image (HD5.img) and 1 CD ISO image (CD6.iso)
  • Quadra 700
  • Boot image is HD0.img on the internal ZuluSCSI 1.1
  • Both devices were flashed with the latest nightly build you linked
Test
  • Powered on and after boot, I saw all three hard disks from the 1.1 and both the hard disk and CD from the Mini.
  • Chose Restart from the Special menu in the Finder
  • After restart, I see all three hard disks from the 1.1 and the hard disk from the Mini, but not the CD image.
  • SCSI Probe after restart shows all 5 devices (three hard disks from the 1.1 at SCSI IDs 0, 1, and 2, and the hard disk from the Mini at 5, and CD image at 6) but the CD is not mounting.
I ran the test with debug enabled on both devices just to be sure.

ZuluSCSI 1.1 (internal) - the file was huge so I only provided what looked meaningful to me

Code:
[0ms] Platform: ZuluSCSI v1.1
[0ms] FW Version: 1.2.1-devel Feb  9 2023 12:23:57
[0ms] DIPSW3 is ON: Enabling SCSI termination
[2ms] Optional GreenPAK detected, loading firmware
[53ms] GreenPAK firmware successfully loaded
[168ms] SD card detected, FAT32 volume size: 30417 MB
[169ms] SD MID: 0x03, OID: 0x53 0x44
[169ms] SD Name: SE32G
[169ms] SD Date: 10/2013
[170ms] SD Serial: 0x2208D3B2
[181ms] Reading configuration from zuluscsi.ini
[181ms] Active configuration:
[183ms] -- SelectionDelay: 255
[184ms] -- EnableSCSI2 is on
[291ms] Finding HDD images in directory /:
[291ms] -- Opening /HD1.img for id:1 lun:0
[983ms] ---- Image file is contiguous, SD card sectors 38898 to 3889137
[984ms] ---- Read prefetch enabled: 8192 bytes
[985ms] -- Opening /HD0.img for id:0 lun:0
[1707ms] ---- Image file is contiguous, SD card sectors 3889234 to 7739473
[1708ms] ---- Read prefetch enabled: 8192 bytes
[1708ms] -- Opening /HD2.img for id:2 lun:0
[1709ms] ---- WARNING: file /HD2.img is not contiguous. This will increase read latency.
[1710ms] ---- Read prefetch enabled: 8192 bytes
[1716ms] SCSI ID:0 BlockSize:512 Type:0 Quirks:0 ImageSize:1925120kB
[1716ms] SCSI ID:1 BlockSize:512 Type:0 Quirks:0 ImageSize:1925120kB
[1717ms] SCSI ID:2 BlockSize:512 Type:0 Quirks:0 ImageSize:1925120kB
[2218ms] SCSI PHY operating mode: GREENPAK_DMA
[2219ms] Initialization complete!
[37788ms] DBG BUS RESET
[40418ms] DBG -- BUS_BUSY
[40418ms] DBG -- BUS_FREE

... a bunch of these BUS_BUSY/BUS_FREE ...

[42109ms] DBG ---- SELECTION: 2
[42111ms] DBG ---- COMMAND: Read6
[42111ms] DBG ------ OUT: 0x08 0x00 0x00 0x00 0x01 0x00 
[42111ms] DBG ------ Read 1x512 starting at 0
[42112ms] DBG ---- DATA_IN
[42113ms] DBG ---- Total IN: 512 OUT: 0 CHECKSUM: 43878
[42114ms] DBG ---- STATUS: 0 GOOD
[42120ms] DBG ---- MESSAGE_IN
[42120ms] DBG ------ IN: 0x00 
[42120ms] DBG -- BUS_FREE

... a bunch of these with different commands and checksums ...

ZuluSCSI Mini 1.0 (external) - this file wasn't as big but still only provided what looked meaningful to me as it's still long.. this is the device with the CD image.

Code:
[0ms] Platform: ZuluSCSI mini v1.0
[0ms] FW Version: 1.2.1-devel Feb  9 2023 12:23:48
[0ms] DIPSW3 is ON: Enabling SCSI termination
[16ms] SD card detected, FAT32 volume size: 3770 MB
[17ms] SD MID: 0x03, OID: 0x53 0x44
[17ms] SD Name: SU04G
[17ms] SD Date: 7/2010
[18ms] SD Serial: 0x0808F2F0
[23ms] Reading configuration from zuluscsi.ini
[24ms] Active configuration:
[32ms] -- SelectionDelay: 255
[40ms] -- EnableSCSI2 is on
[914ms] Finding HDD images in directory /:
[915ms] -- Opening /CD6.iso for id:6 lun:0
[918ms] ---- WARNING: file /CD6.iso is not contiguous. This will increase read latency.
[918ms] ---- Configuring as CD-ROM drive based on image name
[919ms] ---- Read prefetch enabled: 8192 bytes
[920ms] -- Opening /HD5.img for id:5 lun:0
[958ms] ---- WARNING: file /HD5.img is not contiguous. This will increase read latency.
[959ms] ---- Read prefetch enabled: 8192 bytes
[1004ms] SCSI ID:5 BlockSize:512 Type:0 Quirks:0 ImageSize:1925120kB
[1004ms] SCSI ID:6 BlockSize:2048 Type:2 Quirks:0 ImageSize:663482kB
[1508ms] SCSI PHY operating mode: PIO
[1509ms] Initialization complete!
[37911ms] DBG BUS RESET

... and then followed by a lot of these ...

[40549ms] DBG -- BUS_BUSY
[40549ms] DBG ---- SELECTION: 6
[40550ms] DBG ---- COMMAND: Read6
[40550ms] DBG ------ OUT: 0x08 0x00 0x00 0x00 0x01 0x00 
[40550ms] DBG ------ Read 1x2048 starting at 0
[40557ms] DBG ---- DATA_IN
[40566ms] DBG ---- Total IN: 2048 OUT: 0 CHECKSUM: 25826
[40567ms] DBG ---- STATUS: 0 GOOD
[40572ms] DBG ---- MESSAGE_IN
[40572ms] DBG ------ IN: 0x00 
[40572ms] DBG -- BUS_FREE

... followed by a bunch of these ...

41151ms] DBG -- BUS_BUSY
[41151ms] DBG ---- SELECTION: 6
[41153ms] DBG ---- COMMAND: Inquiry
[41153ms] DBG ------ OUT: 0x12 0x00 0x00 0x00 0x24 0x00 
[41153ms] DBG ---- DATA_IN
[41154ms] DBG ---- Total IN: 36 OUT: 0 CHECKSUM: 6243
[41155ms] DBG ---- STATUS: 0 GOOD
[41160ms] DBG ---- MESSAGE_IN
[41160ms] DBG ------ IN: 0x00 
[41160ms] DBG -- BUS_FREE
[41161ms] DBG ---- SELECTION: 6
[41162ms] DBG ---- COMMAND: ModeSense
[41162ms] DBG ------ OUT: 0x1A 0x00 0x30 0x00 0x24 0x00 
[41162ms] DBG ---- STATUS: 2 CHECK_CONDITION, sense 0x00002400
[41168ms] DBG ---- MESSAGE_IN
[41168ms] DBG ------ IN: 0x00 

... followed by this ...

[41245ms] DBG -- BUS_FREE
[41246ms] DBG ---- SELECTION: 6
[41247ms] DBG ---- COMMAND: Unknown
[41247ms] DBG ------ OUT: 0xAD 0x00 0x00 0x00 0x00 0x00 
[41248ms] DBG ------ OUT: 0x00 0x01 0x00 0x08 0x00 0x00 
[41248ms] DBG ---- STATUS: 2 CHECK_CONDITION, sense 0x00002000
[41254ms] DBG ---- MESSAGE_IN
[41254ms] DBG ------ IN: 0x00 
[41254ms] DBG -- BUS_FREE
[41255ms] DBG ---- SELECTION: 6
[41257ms] DBG ---- COMMAND: RequestSense
[41257ms] DBG ------ OUT: 0x03 0x00 0x00 0x00 0x12 0x00 
[41257ms] DBG ---- DATA_IN
[41258ms] DBG ---- Total IN: 18 OUT: 0 CHECKSUM: 803
[41259ms] DBG ---- STATUS: 0 GOOD
[41264ms] DBG ---- MESSAGE_IN
[41264ms] DBG ------ IN: 0x00 
[41265ms] DBG -- BUS_FREE

... followed by these ...

[41377ms] DBG ------ IN: 0x00 
[41377ms] DBG -- BUS_FREE
[41377ms] DBG ---- SELECTION: 6
[41379ms] DBG ---- COMMAND: CDROM Read TOC
[41379ms] DBG ------ OUT: 0x43 0x02 0x00 0x00 0x00 0x00 
[41380ms] DBG ------ OUT: 0x00 0x00 0x14 0x00 
[41380ms] DBG ---- DATA_IN
[41381ms] DBG ---- Total IN: 20 OUT: 0 CHECKSUM: 24731
[41381ms] DBG ---- STATUS: 0 GOOD
[41386ms] DBG ---- MESSAGE_IN
[41387ms] DBG ------ IN: 0x00 
[41387ms] DBG -- BUS_FREE
[41387ms] DBG ---- SELECTION: 6
[41389ms] DBG ---- COMMAND: ReadCapacity
[41389ms] DBG ------ OUT: 0x25 0x00 0x00 0x00 0x00 0x00 
[41390ms] DBG ------ OUT: 0x00 0x00 0x00 0x00 
[41390ms] DBG ---- DATA_IN
[41391ms] DBG ---- Total IN: 8 OUT: 0 CHECKSUM: 19474
[41391ms] DBG ---- STATUS: 0 GOOD
[41397ms] DBG ---- MESSAGE_IN
[41397ms] DBG ------ IN: 0x00 
[41397ms] DBG -- BUS_FREE

... then a ton of these ...

[46603ms] DBG -- BUS_FREE
[46604ms] DBG -- BUS_BUSY
[46612ms] DBG -- BUS_FREE
[46613ms] DBG -- BUS_BUSY

... some of these ...

[122306ms] DBG ---- SELECTION: 6
[122307ms] DBG ---- COMMAND: Read6
[122307ms] DBG ------ OUT: 0x08 0x00 0x00 0x00 0x01 0x00 
[122307ms] DBG ---- STATUS: 2 CHECK_CONDITION, sense 0x00000402
[122323ms] DBG ---- MESSAGE_IN
[122323ms] DBG ------ IN: 0x00 
[122323ms] DBG -- BUS_FREE
[122324ms] DBG -- BUS_BUSY
[122324ms] DBG ---- SELECTION: 6
[122326ms] DBG ---- COMMAND: Read6
[122326ms] DBG ------ OUT: 0x08 0x00 0x00 0x00 0x01 0x00 
[122326ms] DBG ---- STATUS: 2 CHECK_CONDITION, sense 0x00000402
[122343ms] DBG ---- MESSAGE_IN
[122344ms] DBG ------ IN: 0x00

I hope this helps you debug what's going on.
 

saybur

Well-known member
Is there any documentation about the expansion header available? I was hoping to see what the pinout was and if there were significant differences between the hardware variants.
 

aperezbios

Well-known member
Is there any documentation about the expansion header available? I was hoping to see what the pinout was and if there were significant differences between the hardware variants.
On the ZuluSCSI PCBs, the names of the J303 expansion headers are silk-screened on the bottom of the ZuluSCSI PCBs. With that information, you can refer directly to the relevant datasheets for the GD32F205.

The full-sized ZuluSCSI RP2040, having only 56 pins, as opposed to the GD32F205's 100 pins, obviously has a lot less I/O capability, so on those boards, only SCL/SDA (i2c) pins are directly wired to the CPU. The remaining I/O header locations are routed to U303, which the silkscreening also tells you is for an optional QFN MCP23009. We've never shipped any RP2040 units with these laid down, and while it's theoretically possible to stick one there yourself, it'd be difficult to do properly, or at least without proper tooling and magnification :)

By design, the pin headers themselves have similar pinouts, most critically, with 3V0 and GND in the same pin locations.

1677171534558.jpeg
 

Shagittarius

New member
I was hoping that using a USB cable I would be able to see the contents of the HD files and write to them. However plugging in the appropriate Data capable cable doesn't do anything other than power the device. I've read the official documentation and the section on "Transferring Data" doesn't exist.

Can anyone tell me if there is a way to access the data stored in the images across USB. I have everything from my old mechanical drives archived and would like to simply restore that data to the ZuluSCSI.

I realize I can use an image reading program, but is there no other more direct way? Thanks for your time.
 
Last edited:

Daniël

Well-known member
I was hoping that using a USB cable I would be able to see the contents of the HD files and write to them. However plugging in the appropriate Data capable cable doesn't do anything other than power the device. I've read the official documentation and the section on "Transferring Data" doesn't exist.

Can anyone tell me if there is a way to access the data stored in the images across USB. I have everything from my old mechanical drives archived and would like to simply restore that data to the ZuluSCSI.

I realize I can use an image reading program, but is there no other more direct way? Thanks for your time.

How are the files you wish to transfer stored? If they are in their own image, you could just mount it as a second virtual SCSI drive on the ZuluSCSI and move them over to your main virtual drive. Otherwise you could use something like HFVExplorer to throw them into an image to add to the SD card.
 
Top