ZuluIDE Operations Guide: Difference between revisions
No edit summary |
Change "not ready" troubleshooting step |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 8: | Line 8: | ||
* 2x ¼" 4-40 screws | * 2x ¼" 4-40 screws | ||
* microSD card | * microSD card | ||
* Hardware interface board | * Hardware interface board (optional) | ||
* Qwiic cable | * 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. | Take a moment to identify the various parts of the board as shown below. | ||
[[File:ZuluIDE RP2040 Compact (labeled).png|center|frameless|800x800px]] | [[File:ZuluIDE RP2040 Compact (labeled).png|center|frameless|800x800px]] | ||
Line 23: | Line 24: | ||
* '''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. | * '''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. | * '''microSD Card Slot:''' Your SD card with images goes here. | ||
* '''Activity LED:''' Flashes in sync with drive access, also used to indicate | * '''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. | * '''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. | * '''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. | 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. | ||
{| class="wikitable" style="margin: auto;" | {| class="wikitable" style="margin: auto;" | ||
Line 38: | Line 39: | ||
| colspan="2" |❌ 5¼" connector | | colspan="2" |❌ 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 (ZuluIDE).png|center|frameless]] | [[File:DIP switches (ZuluIDE).png|center|frameless]] | ||
Set the three DIP switches according to how the device needs to be configured in the host system. | Set the three DIP switches according to how the device needs to be configured in the host system. | ||
Line 46: | Line 55: | ||
* '''Switch 2:''' Respond as Primary/Master (OFF) or Secondary/Slave (ON). | * '''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 <code>zululog.txt</code> 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. | * '''Switch 3:''' Debug log disable/enable. If this switch is ON, the device will automatically write out a detailed debug log to <code>zululog.txt</code> 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. | |||
{| class="wikitable" style="margin: auto;" | |||
|+ | |||
![[File:Hardware interface (rev 2024a).png|frameless|379x379px]] | |||
![[File:Qwiic cable.png|frameless|338x338px]] | |||
|} | |||
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 <code>zuluerr.txt</code> 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 <code>BIN/CUE</code> images, will be ignored. | |||
For <code>BIN/CUE</code> files, they can be placed into a folder with the same name as the image file; i.e., if you have a <code>BIN/CUE</code> pair named <code>bigdiscofstuff.bin</code> and <code>bigdiscofstuff.cue</code> you should place them in a directory named <code>bigdiscofstuff</code>. This is '''required''' if your <code>BIN/CUE</code> image has a single <code>CUE</code> file and multiple <code>BIN</code> files. | |||
=== Drive Types === | |||
When configuring the ZuluIDE, you can set it to be multiple different drive types based on the images you intend to use. Out of the box, the ZuluIDE configures itself as an optical drive, but through the [[ZuluIDE INI Configuration|INI file]] or by using '''filename prefixes,''' you can tell the ZuluIDE which device you want it to behave as when you power it on. | |||
==== Using the INI File ==== | |||
Under the <code>[IDE]</code> heading, use the <code>Device=</code> value to set the drive type:0 | |||
* <code>CDROM</code> (default) will cause the ZuluIDE to respond as an optical drive. | |||
* <code>Zip100</code> will cause the ZuluIDE to respond as an ATAPI-attached 100MB Zip Drive | |||
* <code>Zip250</code> will cause the ZuluIDE to respond as an ATAPI-attached 250MB Zip Drive | |||
* <code>Removable</code> will cause the ZuluIDE to respond as a generic removable media device | |||
* <code>HDD</code> will cause the ZuluIDE to respond as a standard hard disk drive | |||
If this section is absent, or the <code>zuluide.ini</code> 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 ZuluIDE's device mode: | |||
* <code>cdrm</code> will cause the ZuluIDE to load the image as an optical drive image. | |||
* <code>zipd</code> will cause the ZuluIDE to load the image as a 100MB or 250MB Zip disk. | |||
* <code>remv</code> will cause the ZuluIDE to load the image as a generic removable media device. | |||
* <code>hddr</code> will cause the ZuluIDE to load the image as a non-removable hard disk image. | |||
The <code>Device=</code> 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 <code>.iso</code> or <code>.bin/.cue</code>, while also recognizing folders for purposes of reading multipart <code>.bin/.cue</code> 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 (<code>.iso/.bin/.cue</code>), 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 ZuluIDE 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 ZuluIDE 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: | |||
*<code>.cue</code> <code>.txt</code><code>.rtf</code><code>.md</code><code>.nfo</code><code>.pdf</code><code>.doc</code> | |||
Compressed archive file formats: | |||
* <code>.zip .7z .dmg .rar .tar .tgz .gz .bz2 .tbz2 .xz .zst .lzh .lha .lzo .lz4 .arj .hqx .cpt .s7z</code> | |||
Additionally, any file that begins with <code>zulu</code> will be ignored. | |||
==== USB Mass Storage ==== | |||
You can use the ZuluIDE as a passthrough to access the SD card directly by putting the option <code>enable_usb_mass_storage=1</code> in the <code>[IDE]</code> section of the [[ZuluIDE INI Configuration|INI file]]. In order to use this mode, the ZuluIDE must not currently be operating as an attached device through the IDE port on a host computer. | |||
==== Hotplugging ==== | |||
The ZuluIDE 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 [https://github.com/ZuluIDE/ZuluIDE-firmware/releases 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 ZuluIDE 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. | |||
# Power down the system that the ZuluIDE is attached to and remove its SD card. | |||
# Attach the SD card to the computer where you'll download the update. | |||
# From the [https://github.com/ZuluIDE/ZuluIDE-firmware/releases Github page], download the latest firmware file with a '''.BIN''' extension. | |||
# Copy the downloaded '''.BIN''' file to the root folder of the SD card and rename it as <code>ZuluIDE.bin</code>. | |||
# Dismount the SD card from the computer, and reinsert the SD card into the ZuluIDE. | |||
# Power the system back on. The ZuluIDE will automatically begin the firmware update process, which takes about one second. If the system has to boot to the ZuluIDE and its startup is particularly quick, you may need to reset the computer once to allow the firmware update process to complete on the ZuluIDE so it can become ready. | |||
# When the firmware update process finishes, the ZuluIDE will delete the update file and continue on to normal operation. | |||
==== Using the BOOTLDR button ==== | |||
[[File:Bootloader button.png|thumb|140x140px|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 ZuluIDE. | |||
# Power down the system the ZuluIDE is attached to, and if necessary, unplug it from its cabling. | |||
# From the [https://github.com/ZuluIDE/ZuluIDE-firmware/releases Github page], download the latest firmware file with a '''.UF2''' extension. | |||
# Attach a MicroUSB cable to the device you'll be uploading the firmware from. | |||
# While holding down the BOOTLDR button on the ZuluIDE, attach the other end of the cable to the MicroUSB port on the ZuluIDE. [[File:Firmware-update.png|thumb|Copy the UF2 file to the device.]] | |||
# A Windows Explorer window may appear with a drive called <code>RPi-RP2</code>. If it doesn't, open a Windows Explorer window and look for a drive with this name. | |||
# Copy the '''.UF2''' file you downloaded to the root folder of the drive that appeared when you plugged in the ZuluIDE. | |||
# The <code>RPi-RP2</code> window should close on its own once the copy completes. When the device disconnects on its own, the firmware update process is complete. | |||
# Disconnect the USB cables and reattach the ZuluIDE 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 ZuluIDE 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. | |||
=== [[File:Msdos-icon.png|32x32px]][[File:Win31.png|32x32px]](as optical drive): The ZuluIDE doesn't seem to be recognized under MS-DOS. === | |||
If you have the ZuluIDE 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 <code>OAKCDROM.SYS</code> and <code>MSCDEX.EXE</code> files from it to the root folder of your boot drive. Then, modify your <code>CONFIG.SYS</code> and <code>AUTOEXEC.BAT</code> files like this: | |||
==== CONFIG.SYS ==== | |||
Add this line to the top of the file: | |||
<code>DEVICE=C:\OAKCDROM.SYS /D:MSCD000</code> | |||
==== AUTOEXEC.BAT ==== | |||
Add this line to the end of the file: | |||
<code>C:\MSCDEX.EXE /D:MSCD000</code> | |||
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 ZuluIDE at present is the Oak Technology driver (<code>OAKCDROM.SYS</code>). Other generic drivers, such as the LG (GoldStar) or Adaptec drivers may work, but also may not. | |||
=== [[File:Msdos-icon.png|32x32px]][[File:Win31.png|32x32px]](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 [https://github.com/rabbitholecomputing/ZuluIDE-firmware 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: | |||
<code>CDR101: Not ready reading drive E:<br> | |||
(A)bort, (R)etry, (F)ail?</code> | |||
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. | |||
=== [[File:Win9598.png|37x37px]][[File:Winxp.png|36x36px]] (as optical drive): Performing an "eject" command in Windows Explorer doesn't actually cycle to the next image. === | |||
This is currently a known issue. 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 ZuluIDE, add a zero to the beginning of the desired disk image's name, and then reinsert the SD card. The ZuluIDE will then look for the first image it can load alphabetically, which should be the newly-renamed image. |
Latest revision as of 17:55, 11 November 2024
Setting Up Your ZuluIDE
Unboxing
When you first receive your ZuluIDE, depending on the options you ordered, you should receive the following:
- ZuluIDE 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.
- 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 ZuluIDE 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
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 ZuluIDE 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 ZuluIDE, you can set it to be multiple different drive types based on the images you intend to use. Out of the box, the ZuluIDE configures itself as an optical drive, but through the INI file or by using filename prefixes, you can tell the ZuluIDE 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 ZuluIDE to respond as an optical drive.Zip100
will cause the ZuluIDE to respond as an ATAPI-attached 100MB Zip DriveZip250
will cause the ZuluIDE to respond as an ATAPI-attached 250MB Zip DriveRemovable
will cause the ZuluIDE to respond as a generic removable media deviceHDD
will cause the ZuluIDE 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 ZuluIDE's device mode:
cdrm
will cause the ZuluIDE to load the image as an optical drive image.zipd
will cause the ZuluIDE to load the image as a 100MB or 250MB Zip disk.remv
will cause the ZuluIDE to load the image as a generic removable media device.hddr
will cause the ZuluIDE 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 ZuluIDE 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 ZuluIDE 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 ZuluIDE 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 ZuluIDE must not currently be operating as an attached device through the IDE port on a host computer.
Hotplugging
The ZuluIDE 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 ZuluIDE 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.
- Power down the system that the ZuluIDE is attached to and remove its SD card.
- Attach the SD card to the computer where you'll download the update.
- From the Github page, download the latest firmware file with a .BIN extension.
- Copy the downloaded .BIN file to the root folder of the SD card and rename it as
ZuluIDE.bin
. - Dismount the SD card from the computer, and reinsert the SD card into the ZuluIDE.
- Power the system back on. The ZuluIDE will automatically begin the firmware update process, which takes about one second. If the system has to boot to the ZuluIDE and its startup is particularly quick, you may need to reset the computer once to allow the firmware update process to complete on the ZuluIDE so it can become ready.
- When the firmware update process finishes, the ZuluIDE will delete the update file and continue on to normal operation.
Using the 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 ZuluIDE.
- Power down the system the ZuluIDE is attached to, and if necessary, unplug it from its cabling.
- From the Github page, download the latest firmware file with a .UF2 extension.
- Attach a MicroUSB cable to the device you'll be uploading the firmware from.
- While holding down the BOOTLDR button on the ZuluIDE, attach the other end of the cable to the MicroUSB port on the ZuluIDE.
- 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. - Copy the .UF2 file you downloaded to the root folder of the drive that appeared when you plugged in the ZuluIDE.
- 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. - Disconnect the USB cables and reattach the ZuluIDE 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 ZuluIDE 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 ZuluIDE doesn't seem to be recognized under MS-DOS.
If you have the ZuluIDE 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 ZuluIDE at present is the Oak Technology driver (OAKCDROM.SYS
). Other generic drivers, such as the LG (GoldStar) or Adaptec drivers may work, but also may not.
(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 is currently a known issue. 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 ZuluIDE, add a zero to the beginning of the desired disk image's name, and then reinsert the SD card. The ZuluIDE will then look for the first image it can load alphabetically, which should be the newly-renamed image.