Simple: ask me to do it for you!
But if you insist on trying it yourself, here is a rough guide on the steps required to recover data safely and effectively from QIC-150 and QIC-80 cartridges.
QIC-80
First there is the matter of hardware. You’ll need to obtain a QIC-80 tape drive, such as the Colorado 250MB drive which was very common at the time. These are drives that usually connect to the floppy controller on the PC’s motherboard. There are a few types of drives that connect to the parallel port, but these are not recommended since they are much less compatible with various software.
Now you have a few choices. You may choose to take a binary image of the tape, which will be literally a dump of all the data on it. This can be done with Linux using the ftape
driver. Or you can attempt to use the original software that was used to write the tape. This would require you to stage the specific operating system and backup software, boot into it, and use it to restore the data from the tape.
Getting a binary image
This option is more straightforward, and also faster and more reliable, but the disadvantage is that you’ll need to manually decode the data and extract the files from it. Fortunately the data written to QIC-80 tapes mostly adheres to a single specification, and there are ready-made tools to decode this format.
To get a binary dump, you’ll need to boot into Linux. However, because the ftape
driver has long been abandoned, it’s only available in very old distributions of Linux. The last version of Ubuntu that included ftape
in the kernel was 6.06. Fortunately this version is readily available for download and can be used as a bootable live CD. Once it’s booted, you can load the ftape
module by executing:
$ sudo modprobe zftape
This should create the appropriate logical devices that will let you access the tape drive. The device you’ll usually need is /dev/nqft0
.
And to start reading data immediately, just execute dd
as usual:
$ sudo dd if=/dev/nqft0 of=data.bin conv=sync,noerror &
Don’t forget the ampersand at the end, so that dd
will run in the background and give you back control of the console. The conv=sync,noerror
parameter will make dd
continue if it encounters errors and pad the output with zeros in case of a bad block. Although the skipping of errors hasn’t seemed to work very reliably with QIC-80 drives. If the drive goes into a loop of shoe-shining the tape for more than a minute, you should probably give up on that volume of the tape. Speaking of volumes:
The tape may consist of multiple volumes, which basically means that multiple backups were written to it in succession. When your first dd
call is complete, it will stop at the end of the first volume on the tape. But there may be additional volumes. You may call dd
again right afterwards, which will proceed to read the next volume, and so on. You can also use the vtblc
tool to see an actual list of the volumes on the tape.
You may also want to skip directly to another volume on the tape. This is useful if you encounter errors while reading one volume, and want to jump directly to another volume. I’ve found that the best bet is to perform a fresh boot, then skip to the desired volume, and start reading. To skip to a volume, use the mt fsf
command:
$ sudo mt -f /dev/nqft0 fsf x
…where x is the number of volumes to skip. So for example if you want to read the third volume on the tape, execute fsf 2
and start reading.
Note that the drive might not actually fast-forward as soon as you make the mt fsf
call. It will usually fast-forward when you actually make the dd
call to start reading data.
Using original backup software
If you want to go the route of using the original backup software that was used to write the tape, you’re now in the Wild West of compatibility, trial and error, and general frustration. Most of the frustration comes from the old software’s incompatibility with modern CPUs (too fast) and modern RAM (too much).
Since the majority of these tapes were written during the DOS era, you’ll need to get a solid DOS environment going, which is surprisingly simple with today’s hardware. If your motherboard supports booting from a USB drive, it will probably be able to boot into DOS. This is because DOS uses the BIOS for disk access, and the motherboard provides access to the USB disk through the BIOS, so that DOS will consider the USB disk to be the C: drive.
There are a lot of different tape backup tools for DOS, but one that I’ve found to be very reliable is HP Backup 7.0. This software has recognized and recovered the vast majority of DOS backups that I’ve seen. If this tool fails to recognize the tape format, try one of these other tools:
Central Point Backup
This is bundled with PC Tools 9.0. This is another DOS-based backup tool, but it could write the backup in a slightly different format. However, there are very specific steps for getting this software to work. It does not work on modern (fast) CPUs because it relies on timing logic that causes an integer overflow. This can manifest as an “overflow” error or a “divide by zero” error.
To run Central Point Backup on a modern processor, you will first need to run the SlowDown utility from Bret Johnson. I’ve found that these parameters work:
C:\> SLOWDOWN /m:25 /Int70
Note that this will cause the keyboard to become sluggish, and you might have some trouble typing, but it’s the only way.
NTBackup
Windows NT came with its own backup utility that could be used to write to floppy tapes. The trouble, however, is getting Windows NT to boot on a live modern system. The goal is to get a boot disk that runs Windows NT Service Pack 6, which does in fact work well with modern hardware. If you want to do this from scratch, you can try the following:
- Connect a spare SATA hard drive (a real one) to your computer.
- Boot into Linux and make sure to have
qemu
installed. - Run
qemu
, booting from the Windows NT install ISO image, and having the real hard drive as the emulated disk. For the initial installation, give qemu
more modest parameters, including less memory (-m 256
) and a lesser CPU (-cpu pentium
). - After Windows NT is installed, power down the emulated machine, and copy the Service Pack 6 update executable onto the disk.
- Power the emulated machine back up and install SP6.
- You can then power it down, and you now have a hard drive loaded with Windows NT SP6, ready to be booted on real modern hardware.
Microsoft Backup (Windows 95)
Windows 95 is extremely tricky to get working on modern hardware, to the point where I would not even recommend attempting it. It may be possible to apply the AMD-K6 update patch, which supposedly allows it to run correctly on fast processors, and then apply the PATCHMEM update that allows it to support large amounts of RAM, but I have not had success with either of these. For me, Windows 95 is forever relegated to running in an emulator only. And fortunately I haven’t seen very many floppy tapes that were written using the backup utility from Windows 95.
QIC-150 and other SCSI tape drives
Reading data from QIC-150 tapes, or most other types of tapes from that time period, is slightly different from reading QIC-80 tapes, mostly because the majority of these types of tape drives connect to the SCSI interface of your PC. This means you’ll need a SCSI adapter that plugs into your motherboard. I’ve had a lot of success with Adaptec UltraWide cards, which are PCI cards, meaning that you’ll need a motherboard that still has older-style PCI slots.
And of course you’ll need a QIC-150 tape drive, such as the Archive Viper 2150, or the Tandberg TDC3660. Newer models of tape drives might be backwards-compatible with older types of tapes, but make sure to check the compatibility list for your drive before attempting to use it to read a tape.
Extracting the data from a tape is extremely simple using Linux. The most recent Linux distributions should work fine (as of 2020). If your tape drive is connected correctly to your SCSI adapter (and terminated properly using a terminating resistor), it will be detected automatically by Linux and should appear as a tape device, such as /dev/nst0
.
To start reading data from the tape, execute the following:
$ sudo dd if=/dev/nst0 of=foo.bin conv=noerror,sync
See the previous section on QIC-80 tapes on further usage of dd
, and how to read multiple volumes of data from the tape.
In my travels I have also seen tapes that have a nonstandard block size (i.e. greater than 512 bytes). This may manifest as an error given by dd
such as “Cannot allocate memory.” In these cases, you can try setting the block size to a generous amount when invoking dd
:
$ dd if=/dev/nst0 of=foo.bin conv=noerror,sync bs=64k
A large enough buffer size should fix the allocation error, but if you plan to use it with the “sync” option, then you must know the exact size of the buffer (i.e. the exact block size used by the tape). Otherwise the blocks will be written to the output file with padding that fills up any unused space in each block buffer. A common block size I’ve seen is 16k, especially in 8mm tapes.
Using original backup software
Of course it is also possible to use the original backup software that was used to write the tape. However, it’s much safer to obtain a binary dump of the tape in Linux first, before attempting to read the tape again using other tools. This way you’ll have a pristine image of the tape in case the tape becomes damaged or worn out during subsequent reads.
In many cases there are software tools that will extract the archived file collection directly from a binary image. But if these tools do not recognize the format of your tape image, you will indeed have to use the original software that was used to write it, assuming you can remember what it was. This can be quite difficult: setting up SCSI support in DOS can be a pain; the tape might not have been written using DOS at all, but something like Amiga, and so on. Regardless, the major hurdle is getting the data from the tape to the PC. Decoding the contents of the data is usually a minor detail.
…Or, if you don’t feel like it
I offer first-rate tape recovery services, at a fraction of the cost of other companies. Get in touch anytime and let me know how I can help!