MuffinTerm Help • File Transfers

MuffinTerm • Help • File Transfers

Table of Contents

File transfers

You can use MuffinTerm for uploading and downloading files to and from a BBS. Several popular file transfer protocols are supported.


The XMODEM protocol was created in 1977 at the dawn of the BBS era and is still in use today (sometimes even outside of BBSes). It’s a very basic protocol, and has a number of limitations—for example, it will always round the size of a file up to the next 128-byte “block,” such that most files will accumulate “junk bytes” at the end after transfer. However, it’s supported virtually everywhere.

MuffinTerm supports the original XMODEM protocol as well as the XMODEM-CRC and XMODEM-1K variations. XMODEM-CRC implements more robust error detection (very useful over error-prone telephone lines back in the day). XMODEM-1K uses larger (1KB) packets for more efficient transfer over faster modems.

When transferring a file via XMODEM, you can select either XMODEM or XMODEM-1K. MuffinTerm will use the CRC extension automatically (with either version) if the remote end supports it.

When downloading a file via XMODEM, you’ll need to provide a filename to save the file as, since XMODEM doesn’t include the filename as part of the protocol.


The YMODEM protocol extends XMODEM with a number of useful features. It was introduced in 1985 and became popular on BBSes, though a number of sometimes incompatible variations appeared over time.

Unlike XMODEM, YMODEM sends a file’s name and size as part of the protocol, so files won’t accumulate “junk” bytes, and you don’t have to provide a name when downloading a file. YMODEM also uses CRC-based error detection and 1K packets by default.

MuffinTerm supports standard YMODEM (also known as YMODEM Batch) and the YMODEM-g variation originally designed for error-correcting modems or digital lines.

Both versions of YMODEM allow multiple files to be sent in a single transfer session. They provide all the same features, except that YMODEM-g omits any error recovery—a transfer is immediately aborted if an error is detected. (This was intended to reduce overhead when using modems with built-in error correction or over other connections that were expected to be error-free.)


The ZMODEM protocol was created in 1986 with the intention of improving on a number of shortcomings in earlier protocols. It became very popular on BBSes and was probably the most common file transfer protocol in use by the 1990s.

Like YMODEM, ZMODEM can send multiple files in a single session (though the underlying protocol is different). It also has unique features, such as the ability to detect the start of a file transfer, allowing a client to automatically begin a download or upload (if desired).

Starting a transfer

In addition to ZMODEM auto-start (described below), you can manually initiate an upload or download at any time while connected to a BBS.

Using a keyboard, you can start a download by pressing the “Page Down” key. On iOS/iPadOS, you can also press ⌘D. Alternatively, you can select a protocol from the Console → Download menu on macOS or tap the download button on the button bar in iOS/iPadOS to start a download.

To start an upload, press the “Page Up” key, or ⌘U on iOS/iPadOS; or use the Console → Upload menu (macOS) or the upload button (iOS/iPadOS).

On macOS, using a keyboard shortcut to start a transfer will use whatever you’ve set as the default protocol in preferences. When using the menu, or any time on iOS/iPadOS, you’re shown a list of protocols to choose from.

macOS requires that you specify a download folder; MuffinTerm doesn’t have access to your Downloads folder (or any other folder) by default. If you haven’t selected a download location previously, then MuffinTerm will prompt you to choose one before the download begins. (You can also select a download folder at any time via preferences.) Once you’ve chosen a download folder, MuffinTerm will remember it and will use it by default the next time, so you only have to set this once (unless you change your mind later).

ZMODEM auto-start

You can enable detection of ZMODEM file transfers via the preferences interface. When this feature is active, if MuffinTerm detects that a ZMODEM download is starting, then it will automatically begin downloading the files; and if a start-of-upload is detected, then it will open the file selection interface to pick files to upload.

If this feature is disabled, then MuffinTerm won’t watch for ZMODEM start sequences; but you can still manually start a transfer at any time, regardless of the setting.


MuffinTerm will save downloaded files to the folder that you selected on macOS; on iOS/iPadOS, downloaded documents will be saved under MuffinTerm’s Documents folder in Files.

When downloading with XMODEM, you’ll be prompted for the name to use for the saved file, since the filename isn’t included in the data sent from the remote system under that protocol. When using YMODEM or ZMODEM, MuffinTerm will use the filename sent from the BBS. (If a file already exists with the same name, MuffinTerm will append a number to the newly downloaded file; it won’t erase or overwrite any existing files.)


When you start an upload, MuffinTerm will open a file selection interface where you can pick the file or files that you want to upload. When using XMODEM, you can select only one file at a time; YMODEM and ZMODEM can send multiple files in a single transfer. After you select the file(s) that you want to upload, MuffinTerm will begin the file transfer process.

During the transfer

[An example of the file transfer progress window, showing a file partway through transmission.]
File transfer progress window. In this example, the progress of the current file is 60%, and one out of three files in the batch have finished transferring.

A popup window will be displayed during the transfer, showing current statistics: The name of the current file; the file’s size; the number of errors encountered, if any; the total size of all files in the batch; and the current average data transfer rate. There’s also a Cancel button, if you want to abort the transfer.

A larger visual indicator also shows the current transfer progress at a glance. As seen in the screen shot to the right, the current file’s progress is shown as a percentage, along with a corresponding ring (shown in green). When transferring multiple files in a batch, the number of completed files will also be shown, along with a corresponding inner (blue) ring showing the batch progress.

Completing the transfer

Once the transfer completes, the status popup will be dismissed and you’ll be returned to the terminal. The total number of bytes uploaded or downloaded will be recorded in the BBS’s entry in your dialing directory and in the call history after the call completes.

For macOS →[Download on the App Store][Download on the App Store][Download on the App Store][Download on the App Store]← For iOS + iPad