Digital Archives Workstation Update: KryoFlux, FRED, and BitCurator Walk into a Bar…


The Manuscripts Division processing team’s new digital archives workstation.

Over the past year and a half, the Manuscripts Division processing team has made two significant additions to our digital archives workstation. The first, mentioned briefly in our July 2016 post, was a KryoFlux forensic floppy controller, which allows archivists to create disk images from a variety of obsolete floppy disk formats. The second, more recent addition was a forensic computer workstation called the Forensic Recovery of Evidence Device (FRED), which arrived this May (1). We now use the FRED in a native BitCurator environment as our primary workstation, along with the KryoFlux and a growing collection of external drives. While this streamlined setup has vastly improved our born-digital processing workflow, we would be lying if we didn’t admit that getting to this point has involved back-and-forth discussions with IT colleagues, FRED troubleshooting, and a fair share of headaches along the way. This post will describe how we got these new tools, FRED and KryoFlux, to work together in BitCurator.

Before we had the FRED, we operated the KryoFlux from the Windows partition of our digital processing laptop (which is partitioned to dual boot Bitcurator/Ubuntu Linux and Windows 7). To get to this point, however, we had to jump over some hurdles, including confusion over the orientation of drives on our data cable, which differed from the diagram in the official KryoFlux manual; finicky USB ports on our laptop; and the fact that the laptop didn’t seem to remember that it had the KryoFlux drivers installed between uses (2). While operating the KryoFlux meant we had to do some sort of extra finagling with each use, it nonetheless allowed us to image floppies we couldn’t with our previous tools.

In addition to hardware components such as the controller board, floppy drive, and associated cables, the KryoFlux “package” also consists of a piece of software called DiskTool Console (DTC), which can be run directly in the terminal as a command line tool or through a more human-friendly graphical user interface (GUI). The KryoFlux software is compatible with Windows, Mac, and Linux. However, we initially went with a Windows install after hearing a few horror stories about failed attempts to use KryoFlux with Linux. Though operational, this set-up quickly became unsustainable due to the laptop’s tendency to crash when we switched over from disk imaging in Windows to complete later processing steps in BitCurator. Whenever this happened, we had to completely reinstall the BitCurator partition and start from scratch, sometimes losing our working files in the process. In addition to this problem was the issue of our quickly dwindling hard drive space. In order to sidestep this mess, we needed to install the KryoFlux on the FRED. Since we planned to have the FRED running the BitCurator environment as its only operating system to avoid any future partitioning issues, this meant we would have to attempt the dreaded Linux install.

Our feelings about Linux before the Archivist’s Guide to KryoFlux. Source:

Luckily, the arrival of our FRED in May 2017 coincided with the advent of the Archivist’s Guide to KryoFlux. Although the KryoFlux is gaining popularity with archivists, it was originally marketed towards tech-savvy computer enthusiasts and gamers with a predilection for vintage video games. The documentation that came with it was, to put it nicely, lacking. That’s where an awesome group of archivists, spearheaded by Dorothy Waugh (Emory), Shira Peltzman (UCLA), Alice Prael (Yale), Jennifer Allen (UT Austin), and Matthew Farrell (Duke) stepped in. They compiled the first draft (3) of the Archivist’s Guide to KryoFlux, a collaborative, user-friendly manual intended to address the need for clearer documentation written by archivists for archivists. Thanks to the confidence inspired by this guide, our dark days of Linux-fearing were over. We did encounter some additional hiccups on our way to a successful Linux install on the FRED — but nothing we couldn’t handle without the tips and tricks found in the guide. The following are some words of wisdom we would offer to other archivists who want to use KryoFlux in conjunction with the FRED and/or in a natively installed BitCurator environment.

First, when installing KryoFlux on a Linux machine, there are a few extra steps you need to take to ensure that the software will run smoothly. These include installing dependencies (libusb and the JDK Java Runtime Platform) and creating a udev rule that will prevent future permissions issues. If the previous sentence is meaningless to you, that’s ok because the Archivist’s Guide to KryoFlux explains exactly how to do both of these steps here.

A second problem we ran into was that, even though we had Java installed, our computer wasn’t invoking Java correctly when we launched the KryoFlux GUI; the GUI would appear to open, but important functionality would be missing (such as a completely blank settings window). A tip for bypassing this problem can be found several paragraphs into the README.linux file that comes with the KryoFlux software download; these instructions indicate that the command java -jar kryoflux_ui.jar makes Java available when running the GUI. To avoid having to run this command in the terminal every single time we use the GUI, we dropped the command into a very short bash script. We keep this script on the FRED’s desktop and click on it in order to start up the GUI in place of a desktop icon. There are likely other solutions to this problem out there, but this the first one that worked consistently for us.

Annotated section of README.linux file from the KryoFlux software for Linux (which you can download from this page.)

One particularity of the FRED to keep in mind when working with the KryoFlux, or any external floppy controller or drive, is the FRED’s internal Tableau write blocker (UltraBay). Since the KryoFlux employs hardware write-blocking (after you remove a certain jumper block (4) ), the FRED’s internal hardware write blocker is unnecessary and will create problems when interfacing with external floppy drives. To bypass the FRED’s Tableau write blocker, make sure to plug the KryoFlux USB data cable into one of the USB ports along the very top of the FRED or those on the back, not the port in the UltraBay.

Plug the KryoFlux data cable into the USB ports that are not connected to the internal write blocker in the FRED’s UltraBay. Like so.

Technical woes aside, the best part about our new FRED/KryoFlux/BitCurator set-up is that it allows us to access data from floppy disks that were previously inaccessible due to damage and obscure formatting. Just this summer, our inaugural Manuscripts Division Archival Fellow, Kat Antonelli, used this workstation to successfully image additional disks from the Toni Morrison Papers. Kat was also able to use Dr. Gough Lui’s excellent six-part blog series on the KryoFlux to interpret some of the visualizations that the KryoFlux GUI provides. From these visualizations, she was able to glean that several of the disks that even the KryoFlux couldn’t image were most likely blank. While the Archivist’s Guide to KryoFlux provides a great way to get started with installation, disk imaging, and basic interpretation of the KryoFlux GUI’s various graphs, learning how to navigate these visualizations is still somewhat murky once you get beyond the basics. As archivists continue to gain experience working with the KryoFlux, it will be interesting to see how much of this visual information proves useful for archival workflows (and of course, we’ll document what we learn as we go!)

What does it all mean? (The left panel shows us how successful our disk image was. The right panel contains more detailed information about the pattern of data on the disk.)

(1) The processing team drafted a successful proposal to purchase the FRED based on the results of a survey we conducted asking 20 peer institutions about their digital archives workstations. We plan to publish the results of this survey in the near future. More to come on this project in a future post!

(2) You can read more about our troubleshooting process for these issues in the “Tale of Woe” we contributed to the Archivist’s Guide to KryoFlux. More on this resource later in this post.

(3) The guide is still in draft form and open for comments until November 1, 2017. The creators encourage feedback from other practitioners!

(4) See page 3 of the official KryoFlux manual for instructions on enabling the write blocker on the KryoFlux. (3.5” floppies can also be write-blocked mechanically.)

Digital Processing Workflows & Improvisation: A Foray into Bash Scripting

Adventures in the command line.

Over the past year, processing archivists in the Manuscripts Division have begun to integrate digital processing into our regular work. So far, each group of digital materials we’ve put through our workflow has presented at least one unique challenge that required us to supplement the standard steps in order to meet our twin goals of preservation and access.

Improvisation, however, is no stranger to “traditional” archival processing in a paper-based setting. Professional standards and local guidelines lend structure to actions taken during processing. Still, there is always a degree of improvisation involved due to the fact that no two collections are alike (Hence, the archivist’s favorite answer to any question: “It depends.”) In the inevitable cases where existing documentation stops short of addressing a particular situation we encounter in the day-to-day, we use our professional judgement to get where we need to go a different way. We improvise.

Good guidelines have room for improvisation built-in. By documenting the context and reasoning behind each step, they empower users to deviate from the particulars while achieving the same general result. We’re lucky to have inherited this kind of thoughtful documentation from our colleagues at Mudd Library (notably, Digital Archivist Jarrett Drake). Archivists across the department who are processing digital materials have recently begun writing informal narrative reflections on particular problems we’ve encountered while working with digital materials and the improvisations and workarounds we’ve discovered to solve them. By linking these reflections to our digital processing guidelines, we hope to aid future troubleshooting, repurpose what we’ve learned, and share knowledge horizontally with our peers.

One example (1) is a recent issue I encountered while working with a group of text files extracted from several 3.5” floppy disks and a zip disk from the papers of an American poet. After acquiring files from the disks, our workflow involves using DROID (Digital Record Object Identification), an open source file format identification tool developed by the U.K. National Archives, to identify file formats and report any file extension mismatches. In this case, the report listed a whopping 4,791 mismatches, nearly all of which lacked file extensions entirely.

While Mac and Linux operating systems rely on internal file metadata (MIME types) rather than file extensions to determine which program is needed to open a file, Windows operating systems (and humans) rely on file extensions. Reconciling file extension mismatches is important both because future digital preservation efforts may require moving files across operating systems and because file extensions provide important metadata that can help future users identify the programs they need to access files.

Small quantities of files can be renamed pretty painlessly in the file browser, as can larger numbers of files requiring uniform changes within a relatively flat directory structure by using the rename or mv command in the terminal. In my case, the collection creator managed her files in a complex directory structure, and single directories often contained files of various types, making these manual solutions prohibitively time- and labor-intensive.

If there’s one thing I’ve learned from working with metadata, it’s that you should never do a highly repetitive task if, in the time it would take you to do the task manually, you could learn how to automate it. (2) In addition to completing the task at hand, you’ll develop a new skill you can reuse for future projects. While sitting down and taking a comprehensive online class in various programming languages and other technologies is certainly useful for archivists venturing into the digital, it’s often hard to find the time to do so and difficult to retain so much technical information ingested all at once. Problems encountered in day-to-day work provide an excellent occasion for quickly learning new skills in digestible chunks in a way that adds immediate value to work tasks and leads to better information retention in the long run. This philosophy is how I decided to solve my mass file renaming problem with bash scripting. I was somewhat familiar with the command line in Linux, and I figured that if I knew the command to rename one file, with a little finagling, I should be able to write a script to rename all 4,791 based on data from DROID.

To create my input file, I turned the file extension mismatch report from DROID into a simple CSV file containing one field with the full path to each file missing an extension and a second field with the matching file extension to be appended. To do so, I looked up the correct file extensions in the PRONOM technical registry using the identification number supplied by the DROID report. I then inserted the extensions into my input file using the Find/Replace dialog in Google Sheets, deleted columns with extraneous information, and saved as a CSV file.

The script I wrote ended up looking like this: (3)

My bash script.

In a nutshell, a bash script is a series of commands that tells the computer what to do. The first line, which appears at the beginning of every bash script, tells the computer which shell is needed to interpret the script. Lines 3-9 first clear the terminal window of any clutter (clear) and then prompt the user to type the file path to the input file and the location where a log file should be stored into the terminal (echo); after the user types in each file path, the script reads it (read) and turns the user’s response into variables ($input and $log). These variables are used in the last line of the script in a process called redirection. The < directs the data from the input file into the body of the script, and the > directs the output into a log file.

Terminal window containing prompts initiated by the echo command, along with user input.

The real mover and shaker in this script is a handy little construct called a while loop (while, do, & done are all part of its syntax). Basically, it says to repeat the same command over and over again until it runs out of data to process. In this case, it runs until it gets to the last line of my input file. IFS stands for internal field separator; by using this, I’m telling the computer that the internal field separator in my input is a comma, allowing the script to parse my CSV file correctly. The read command within the while loop reads the CSV file, placing the data from field 1 (the full path to each file to be renamed) into the variable $f1 and the data from field 2 into the variable $f2 (the file extension to be appended). The mv command is responsible for the actual renaming; the syntax is: mv old_name.txt new_name.txt. In this case, I’m inserting my variables from the CSV file. Quotes are used to prevent any problems with filenames or paths that have spaces in them. -v is an option that means “verbose” and prompts the terminal to spit out everything that it’s doing as it runs. In this case, I’m redirecting this output into the log file so that I can save it along with other administrative metadata documenting my interventions as an archivist.

In the end, what would have taken me or a student worker countless hours of tedious clicking now takes approximately four seconds in the command line. I’m glad I spent my time learning bash.


(1) For an even better example, see Latin American Collections Processing Archivist Elvia Arroyo-Ramirez’s “Invisible Defaults and Perceived Limitations: Processing the Juan Gelman Files” (here).

(2) Maureen Callahan’s “Computational Thinking and Archives” blog post certainly helped inspire this way of thinking.

(3) Here’s where I learned how to make my script executable and how to execute it from the command line.