Greaseweazle floppy drive controller

Introduction

Over the years, many different types of floppy disks were used for various types of computers, including 3", 3.5, 5.25", and 8" disks, and there were lots of different ways to store data on the various types of disks. Trying to read and write floppy disks without the original hardware, such as for archiving purposes, can be a big issue although some disks can be used on a modern PC with an internal floppy drive or external USB drive. For those disks were that isn't the case, there is a solution to using them on a modern PC by using an 'universal' disk controller, which supports standard PC disk drives but let you read and write a wide range of disk formats to different disk types.

There is Kryoflux, whose site is at:

https://kryoflux.com/

It's closed source and the boards typical cost around £86 ($99) or more depending on its features. The accompanying software can only be used privately but commercial use requires a license.

Greaseweazle is another disk controller project and is open source and thus more favourable. The repository can be found at:

https://github.com/keirf/Greaseweazle/wiki

The boards are cheap - about £20 ($23) and the software is free to use without restriction, even commercially. Supported image types can be viewed at:

https://github.com/keirf/Greaseweazle/wiki/Supported-Image-Types

Design files, including schematics, can be found at:

https://github.com/keirf/Greaseweazle/wiki/Design-Files

Greaseweazle supports 3", 3.5", and 5.25” drives, and 8” with an adapter board. Generic floppy drives are supported, so there is no need to use the original drive of the system you are trying to read/write disks for. Some 3.5” drives can be powered from the Greaseweazle, other drives (5.25”, for e.g.) require a separate power supply. The host software runs on Mac, Windows and Linux.

Please read on to learn more about Greaseweazle and how to use it.

Getting started

I bought Greaseweazle  V4 for about £20 from ebay, which is the version that will be covered on this page. it came as just the PCB and a QR code on a sticker for the github page detailing the setup:

https://github.com/keirf/Greaseweazle/wiki/V4-Setup

After reading through the page, I downloaded the host software from:

https://github.com/keirf/Greaseweazle/wiki/Software-Installation

I downloaded V1.3, the most recent version at the time. Since I’m using Windows 10 the drivers are included but for older versions of Windows there is a separate driver download. I extracted the downloaded file and then connected the Greaseweazle to my PC via an A-B USB cable. The red power LED on the Greaseweazle lit up and Windows detected the board and installed it, and then it appeared as COM3 under device manager. To check the connection between the Greaseweazle and PC you can open a CMD prompt, go to the directory where the host software was installed and run:

gw info

Various information is given about the Greaseweazle and for my board, and a prompt is given to update its firmware. As instructed I issued the command gw update and the board was updated in seconds, taking it from firmware 0.31 to 1.2. After issuing gw info again, as well as the new firmware number it also now reported information about the MCU, which it identified as AT32F403, 144Mhz, 96KB SRAM.


You don’t have to use the command line to interact with Greaseweazle, there are GUI ‘wrappers’ available to download from the software installation page - which make it easier to use Greaseweazle - which are FluxMyFluffyFloppy and GreaseweazleGUI. FluxMyFluffyFloppy supports Windows, is freeware and has a github page at:


https://github.com/FrankieTheFluff/FluxMyFluffyFloppy


As of October 2022 it appears to be actively updated. It supports templates - settings for various floppy formats - with the ability to create new templates.


GreaseweazleGUI is open source, works on Windows, but is no longer updated; its site is at:


https://desertsagesolutions.com/greaseweazlegui/


I tried out FluxMyFluffyFloppy, downloaded the zip from the github page (V3.09) and extracted the files, including the zip file within, which gives access to the executables, one for 32-bit systems and one for 64-bit.


When you first run the program it will prompt you for gw.exe, so navigate to its location and double-click the file. Here is the FluxMyFluffyFloppy program running:

While most of the text is in English, there are a few German words when prompts appear but nothing that can’t be worked out (or translated). I couldn't find any documentation as to how to use FluxMyFluffyFloppy but it’s not too hard to work out. A few pointers:

You will need to select the COM number for Greaseweazle in the Device/COM drop-down before you can use FluxMyFluffyFloppy with the board.. Click ingthe Info button will give you the same as result as running gw info from the command line and the Bandwidth button will do a test to get an idea of read and write speeds.

I tried three 3.5” ‘PC’ floppy drives until I found one that worked with Greaseweazle, likely the first two were faulty. The drive I got working was a Mitsumi D35M3, which I connected to the Greaseweazle using a ribbon cable with a twist as I had it to hand (the twist isn’t necessary but partly determines what drive letter selects the drive) and a power cable I wired up (the drive runs off 5V only) to run off the Greaseweazle board.

In FluxMyFluffyFloppy I set the Device/COM (COM3 in my case), Drive to A and the template to 3.5-inch 720kb DoubleDensity Doublesided (80 tracks), as that matched the floppy I wanted to read, set it to whatever is suitable for the disk you are trying to read. I set the filename (you can also change the directory), the format to IMG and clicked the Read button. While the floppy is being read a green LED will blink on the Greaseweazle.

You can see the FluxMyFluffyFloppy setup I used below:

The result is a 720kb image of the floppy.

I tested writing the image back to the floppy, which is done by selecting the Write tab, choosing the same template used for the read, selecting the floppy image source file and clicking the Write button. Note that as with any computer, the floppy disk mustn’t be write protected to be able to write to it.

The image was the written to the floppy and although there were some verify errors toward the end of the writing process, checking the contents in Windows using a USB floppy drive the file appeared to have been rewritten correctly. The floppy disk is old so it's very possible it will have some issues but otherwise still be usable.

After creating a disk image from a floppy, even if you are just archiving it, you should always verify the disk image was written correctly, using disk analysis software. Alternatively, if the disk image was from a retro computer, you may be able to load it into an emulator and confirm the contents of the disk that way or by using a deciated software that shows the disk contents for the system it was intended for. I'll give an example whent we look at reading 5.25" disks further on.

There are many more tools in FluxMyFluffyFloppy, such as to erase a disk and check the rpm (Tools tab), useful for troubleshooting, but generally you'll be using the Read and Write tabs the most.

Some floppy drives, such as 5.25”, cannot be powered directly from the Greaseweazle board and  isntead you will need to connect an external power source, which  is typically 5V and 12V  for a 5.25” drive. This power must go directly to the floppy drive and NOT to the Greaseweazle also, otherwise it likely will be damaged, as the Greaseweazle is powered through USB. If using an external power supply for the floppy drive, connect first the Greaseweazle to your PC so that it’s powered and then turn on the power to the floppy drive.

When it came to trying to read a 5.25" disk I could not get any success, I would always get read failures and could not write to the disk either either. I was using a high power variable power supply to power the floppy drive so power shouldn’t have been the issue. First I tried a Quest drive (which uses a Shugart 405 drive) deisgned for the BBC micro, as I was trying to read a disk designed for that computer. Although I could not find any informatio online about the Shugart 405, it's possibly similar to the Shugart 400, a.k.a. SA400, which is a low capacity drive, which could be causing issues. I also tried a Torch dual disk drive unit (also for the BBC Micro) but had no success with that either, resulting in the same errors. Termination resistors can be a problem and I found that the Torch drives have 150R resistor packs for termination and I tried with both with them enabled and disabled and there was no difference, and I even tried with 1K resistors in series with the resistor pack and still no success, as recommended online to try a higher resistance value.

I came to the conclusion that part of the issue was that there were too many variables; I didn’t know for sure that the drives were actually working and whether the test disks I was using were good. So I confirmed with my BBC micro that the Quest drive was working by reading a number of disks and by formatting a new disk and saving and loading a file from it. I was also able to confirm whether the other disks I had were working, that had already been written to. To go into more detail, using a BBC micro I formatted a 5.25” disk as 40 tracks and then saved a simple BASIC program to it (named LOOP), which I reloaded to confirm it had been saved correctly.

Having connected the floppy drive back to my Greaseweazle, I was still having trouble reading the disk using FluxMyFluffyFloppy and I had the feeling that the issue was there wasn't a suitable template option for BBC Micro disks. So I clicked the New button to the right of the template drop-down, set the Format spec. to acorn.dfs.ss, set the Filename, and Format to SSD (Acorn). After clicking the Read button, every track was read in successfully (about 25 seconds to read the disk), proving that part of the problem were using an unsuitable template, but by creating a new template it 'knew' how many tracks to read in.

Looking at the resulting .ads file in the XVI32 hex editor it was quite clear that the disk had been read successfully as I saw the name of the BASIC program I had saved, along with the data that made up the BASIC program itself, as can be seen in this image:

I further confirmed the disk had been read correctly by loading it into Beeb Image, which correctly showed information about the disk including the single stored program I had saved (LOOP), which you can see as follows:

Beeb Image can be downloaded from:

http://www.cowsarenotpurple.co.uk/beeb-image.html

Having read a 5.25" BBC micro test disk, I wanted to try writing it to a blank disk and reading it on my BBC micro. In FluxMyFluffyFloppy I switched to the Write tab, left the Template drop-down blank, set the Format spec. to acorn.dfs.ss, and source file to the image I had previously read in. With a blank disk in the drive I then clicked the Write button and it took 40 seconds to write to the disk. I confirmed using my BBC micro that the disks had been written successfully in that I was able to read the disk and load the BASIC program I'd previously written to it.

Troubleshooting

Greaseweazle doesn’t require a floppy drive cable with a twist, whether the cable has a twist determines the drive number/letter. Usually, Drive B is before the twist (or if the cable has no twist) and drive A is after the twist; this is assuming that the drive is configured as B on the floppy drive itself (usually using jumper shunt(s)). It's a good idea to use a short cable if available, more practical of course if the cable was designed for one drive only.

Something that can catch you out is that MFM hard drive cables appear the same as 5.25” floppy drive cables but have a twist in a different place; you can use such a cable with a floppy drive provided you use the part before the twist. For reference, the difference in the location of the twist for floppy and MFM hard drive cables can be seen on this site (third post):

https://forum.vcfed.org/index.php?threads/having-some-trouble-with-two-mfm-drives-in-one-machine.62599/

If you do have trouble reading/writing disks using Greaseweazle, in particular, if you get a 'No Index' error from Greaseweazle, try using a different disk. Also, try to confirm if the disk drive, cable and disk(s) work on another system directly. For example, if you are trying to read IBM disks, test them on an old PC if you have one, and similar, you can check the disk drive that you was trying to use with the Greaseweazle by putting it into a retro PC and trying to read a disk. 

It's always worth trying a different disk drive with Greaseweazle if you have any difficulty read/writing disks, the drive you are trying to use could be faulty or not support the format(s) your disks are in.

When it comes to using 5.25" floppy drives you may find this video useful:

All content of this and related pages is copyright (c) James S. 2022