Linuxdoc Linux Questions
Click here to ask our community of linux experts!
Custom Search
Next Previous Contents

4. The ZIP drive

There are at least five or six versions of the Iomega ZIP 100 drive. The Iomega page for these drives is at They all accept special cartridges resembling a 3.5" floppy disk that hold 100 megabytes of data. The disks actually hold 96 cylinders of 2048 sectors each holding 512 bytes. This would normally be called 96 Megabytes.

The external drive comes in these types:

The internal drive comes in these types:

The internal versions can be mounted in 3.5 or 5.25 drive slots. The external versions are in a small blue plastic case enclosure, powered by an external wall brick.

All the drives have a large pushbutton on the front of the drive. This is used to eject the disk. Linux locks the door while using the drive, but if the button is pressed while the door is locked, the ZIP drive will remember and eject the disk as soon as the software unlocks it.

4.1 Parallel port version Zip100

This drive is described at

The Linux driver comes in a couple of different versions. The 0.26 version of the ppa.c program ships standard with the 2.0.x kernels. If your kernel is older than 2.0.35 then you have the OLD program. Check out

David Campbell's page for the more current version of this program. At the time of this writing the current version is 1.42.

The auto configuration features of the 1.4x program are very nice. You do NOT have to tell the progam what the base address of the parallel port is. The program will prob the standard address's for the parallel ports and attach the drive when it finds it.

The most common problem is to load the lp printer module before the ppa program. The ppa program must be loaded before the lp module. The lp module will tie up the port that the zip drive needs, this is why the ppa progam must be loaded first.

Also be sure that all cables are firmly attached.

If you did everything right :) you will see messages like this at boot time.

  VFS: Mounted root (ext2 filesystem) readonly.
  Adding Swap: 102528k swap-space (priority -1)
  ppa: Version 1.42
  ppa: Probing port 03bc
  ppa: Probing port 0378
  ppa:     SPP port present
  ppa:     EPP 1.9 with hardware direction protocol
  ppa: Found device at ID 6, Attempting to use EPP 32 bit
  ppa: Communication established with ID 6 using EPP 32 bit
  ppa: Probing port 0278
  ppa:     SPP port present
  scsi0 : Iomega parport ZIP drive
  scsi : 1 host.
    Vendor: IOMEGA    Model: ZIP 100           Rev: D.09
    Type:   Direct-Access                      ANSI SCSI revision: 02
  Detected scsi removable disk sda at scsi0, channel 0, id 6, lun 0
  SCSI device sda: hdwr sector= 512 bytes. Sectors= 196608 [96 MB] [0.1 GB]
  sda: Write Protect is off
    sda: sda4
  lp2 at 0x0278, (polling)

You can view these messages with dmesg | more. You can save the messages to a file with dmesg > dmesg.txt. This is often usefull if you are trying to debug the installation.

Also see section Getting more information

4.2 SCSI external version

This drive is described at

The external SCSI version of the ZIP drive has two DB25F connectors, and two configuration switches. One switch selects the drive's target address. The choice is limited to target 5 or 6. The other enables an internal terminator, in case the drive is the last one on a chain. The 25 pin SCSI connectors use the familiar Macintosh style wiring. The drive is shipped with a Macintosh type cable, but standard cables and converters are easily obtained if you are using a host adapter with a Centronics or high-density connector.

I have not seen an internal SCSI drive, but I would expect it to have a standard 50 pin DIP header SCSI connector and the same two switches.

Make sure that the target address you choose does not conflict with any other SCSI devices you may have on the same bus. Also be sure that the physically last drive in a chain has termination enabled, or an external terminator installed.

If you have an internal SCSI disk or CD-rom, and you connect your ZIP drive to the existing adapter, you should check to see if there are any terminators on the card that must be removed. Only the two extreme ends of the SCSI bus should be terminated. If your bus is partly internal and partly external, there should be one terminator on the last external device and one on the last internal device, but no terminators on the adapter card itself.

Be sure that all cables are firmly attached.

The kernel configuration is much the same as the internel version. See the next section SCSI Internal version for an example configuration.

The ZIP ZOOM host adapter

Iomega markets a SCSI host adapter under the name ZIP Zoom. This is actually based on the design of the Adaptec AHA1520 family of adapters. It has an external Macintosh type DB25F connector, compatible with the cable that comes with the ZIP drive.

Linux supports this adapter with the aha152x driver.

4.3 The SCSI Internal version

Install hardware as described in the "Installation and Reference Guide" noting which SCSI ID, IRQ and I/O Port Address are being used. (You'll need this info later.) Things will go smother if the drive and adapter card use different SCSI ID's.

Beware The zip zoom card is hardwired for scsi ID number 7. The scsi id in the command line below is for the card, not the drive. The card and the drive must use different scsi id numbers. For example if the card uses 7 then use 5 or some other number for the drive.

Recompile the kernel after configuring it to include 'SCSI', 'SCSI disk' and 'AHA152X/2825' support. INSTALL NEW KERNEL :-(

Determine what your kernel command line is:

aha152x=[I/O Port][,IRQ][,SCSI ID][,RECONNECT][,PARITY]

For example :


If your using LILO add your kernel command line to your lilo.conf file using the append command.

(ie. append = "aha152x=0x140,10,7,1")

If your using LOADLIN add your kernel command line to the command you use to initiate loadlin.

  (ie. loadlin c:\vmlinuz root=/dev/hda3 aha152x=0x140,10,5,1 ro)

4.4 The ZIP Plus - IMM driver

This drive is described at

This is a newer version of the external Zip drive. The Zip Plus does not use the ppa driver, instead it uses the imm driver. Philippe Andersson sent in this excellent section on the imm driver for the Zip Plus. Thanks Philippe.

First, rebuild your kernel to include the following items:

You'll notice we didn't select any SCSI low-level driver. That's ok -- we'll build it separately later.

Then, you need to get the driver source code from Dave Campbell's home page ( Version 0.18 is the current one at the time of writing (Aug. 98). Unzip it and untar it somewhere (under /usr/src, for instance). Then just run make. You'll get the module you need (imm.o). Copy it to

/lib/modules/$(uname -r)/scsi

If your lp module was loaded (check with lsmod(1)), unload it (rmmod lp), then load imm.o (insmod imm) and you're all set basically.

If the ZIP drive was not connected and powered on at the time, you'll get the message "init_module: Device or resource busy", and the module won't load. (By the way, it looks like you don't need to switch your PC off to connect the ZIP -- just make sure the module is not loaded and the drive is turned off, then plug it in, turn the drive on, and load the module.)

If the ZIP was connected and powered on, but there was no disk in, the module will load all right, but you'll get the message that it can't read the disk partition table. This is ok, as the partition table will be automatically read when you insert a ZIP disk.

If there was a ZIP disk in, you'll get the full information displayed, including a list of partitions defined on the disk and its Write Protect status. Here is a sample load-time message:

vger:~# insmod imm
imm: Version 0.18
imm: Probing port 03bc
imm: Probing port 0378
imm:     SPP port present
imm:     ECP with a 16 byte FIFO present
imm:     PS/2 bidirectional port present
imm:     Passed Intel bug check.
imm: Probing port 0278
scsi0 : Iomega ZIP Plus drive
scsi : 1 host.
  Vendor: IOMEGA    Model: ZIP 100 PLUS      Rev: J.66
  Type:   Direct-Access                      ANSI SCSI revision: 02
Detected scsi removable disk sda at scsi0, channel 0, id 6, lun 0
SCSI device sda: hdwr sector= 512 bytes. Sectors= 196608 [96 MB] [0.1 GB]
sda: Write Protect is off
 sda: sda1

One last remark to mention that this version of the driver also locks the drive door while the disk is mounted. If the eject button is pressed in this situation, nothing happens, but the drive "remembers" and ejects the disk as soon as it is dismounted.

4.5 ATAPI version

This drive is described at

There was an IDE version of the drive produced for a while. I think that for the most part this has been replaced by the ATAPI version.

Donald Stidwell sent in these comments on the ATAPI version. Thanks Don.

I use an ATAPI Zip drive and it works with both 2.0.32 and 2.0.33 kernels. I've used it under both RH 5.0 and OpenLinux 1.2 (my current used distribution). To get it to work under OpenLinux, I just enabled ATAPI floppy support in the kernel. OpenLinux does not have this support compiled in by default.

No other drivers are needed. It will mount as an extended partition on partition 4. I.E, mine mounts on HDB4. I mount it under /mnt/zip as noauto, although I don't suppose there would be any real problem with automounting. I just wonder about ejecting disks. I always dismount the drive before ejecting a cartridge.

There are more detailed instructions for the ATAPI install in the Linux Gazette May 1998 issue. See the 2 cent tip section.

     <url url="">

4.6 IDE version

I have not used the IDE version. Eric Backus sent in these comments. Thanks Eric.

I have one of these. It came with my Gateway 2000 computer a year ago. I think most of these were shipped by large OEM companies like this, before the ATAPI version of the ZIP drive was available.

The good news about this drive: no kernel modules or modifications are needed to support it. It looks to the kernel like an IDE hard drive. It worked for me with no effort with kernel 2.0.31 and 2.0.32.

The bad news about this drive: because it doesn't use ATAPI, you can't use the SCSI-to-ATAPI translation, which means you can't use mtools to write-protect disks (or to eject them, for that matter).

4.7 USB version

This drive is described at

These drives look very cool and the USB interface also looks good. The only problem is that the USB interface for Linux is still under development at this time. So for now, this drive is not usable under Linux. Check this address for updates.

4.8 ZIP250 version

This drive is desribed at

This drive is new as of January 1999. I just bought one of these and it works very well in Linux. Just use the IMM driver from Set up the driver the same way as the zip plus. Mainly just download the driver, unpack it, and run make. Then copy the imm.o executable to the modules directory. For example /lib/modules/2.0.35/scsi (The 2.0.35 is your kernel version). If you are not sure of the version do uname -r.

Next Previous Contents