The MacTerminal MINI-HOWTO
Robert Kieslingv1.4, 9 November 1997
This mini-HOWTO should give you some Insanely Great ideas for how to make your Macintosh work with Linux. Unfortunately, I have been very busy, and so I haven't been able to include even half of what I wanted to include, like using MacTCP and Open Transport to connect to your Linux box via a PPP line. That will need to wait for future versions.
This mini-HOWTO doesn't cover networking with LocalTalk and AppleTalk, either. I might explore these avenues if there's enough interest in, say, printing to a LaserWriter printer from Linux. Otherwise, it seems to me that such applications, being more trouble than they're worth (not to mention pricey), are beyond the scope of this document.
I don't plan to cover MkLinux in this document, either. It's more than adequately documented elsewhere.
So if you have ideas for this document, drop me a line at the e-mail above. Both systems embody a lot of the beginner's mindset as well as technical prowess, and in my opinion they don't talk to each other nearly enough.
To set up a serial link between a Mac and a Linux machine, you will need, on the Linux side, either a DB9 Female-to-DB25 Male serial cable or a DB25 Female-to-DB25 Male serial cable, depending on your serial port. On the Macintosh side, you will need a DIN9-to-DB25 Male high-speed modem cable.
Make sure that the cable is labeled a "high speed" cable, because some older Macintosh cables are configured with their handshaking lines tied high, which makes them useless for high-speed serial connections.
You will also need a null modem adapter, available at Comp USA, Radio Shack, and similar outlets, and a DB25 Female-to-DB25 Female serial gender changer to connect the two serial cables.
I have heard that Mac printer cables are really null modem cables in disguise, but I can't confirm this. Some of them are DIN9-to-DIN9 anyway, and wiring one into a serial link would be more trouble than it's worth.
If this sounds like Greek to you, read the Serial-HOWTO for details of RS-232 cable configurations and data transmission protocols.
Before connecting the Mac and the Linux machines, you should
determine that you have a working serial port on both machines,
either by connecting a modem and dialing out to another computer
minicom (Linux), ZTerm (Mac),
(either), or the communications program of your choice.
The latest version of minicom is available from sunsite.unc.edu/pub/Linux/apps/serialcomm/dialout and mirror sites.
ZTerm is a complete, easy to use comm program. Unfortunately, it's shareware. A current version is available from mac.archive.umich.edu and outlets like it.
kermit program has been ported to every computer
and operating system in existence. The archives are located at
You should strongly consider using
kermit on both
machines at this stage at least, because 1) it's free (although
it's not covered by the Free Software Foundation's General Public
License); and 2) it's a lot less confusing to have
kermit on both machines than two completely different
If you have another way to determine that the serial ports of the two machines are operational, feel free to use that. The point is to ensure that both machines have working serial ports.
Making the actual serial connection should be easy, given the directions above. In case it isn't, the connection looks like this:
Linux PC DB9- or DB25- Null Gender DIN9-to- MacBox --------- to-DB25 male Modem Changer DB25 Mac -------- | | serial cable. | | | | Serial Cable | | | |-----------------| |--| |-----------------| | | | | | | | | | --------- Adapter --------
This is the most transient of all the configurations described here. It requires the least amount of system configuration, although in operation, it is the more difficult to use of the systems described here.
In brief, you start
kermit on both the Linux machine
and the Mac, and place one of them in server mode. It doesn't
matter which machine is the client ant which is the server, because
this is a peer-to-peer connection. However, the Linux
kermit can take advantage of Linux's superior
scripting abilities, so it seems logical (to me at least) to
designate the Linux-side
kermit as the server, because
this is the more readily automated task.
You should ensure that
kermit is installed correctly
on both the Mac and the Linux PC. Follow the instructions in the
respective kermit distributions. On the Linux machine type
kermit at the shell prompt to start it. You may need
root permissions in order to set the port and baud rate.
kermit, the recent POSIX versions for Unices, supports
baud rates up to 115 Kbps. The more recent Macintosh versions
support serial port speeds up to 57.6 Kbps. This should be more
than sufficient for any dumb tty-type application, but if you need
a higher-speed connection, you're s.o.l, as far as
kermit and serial lines are concerned. However,
kermit provides facilities for communication over a
TCP/IP link, but I haven't been able to test it. See the
alternative in the following sections. Just remember, especially on
the Mac side, to use a different port for
serial connections than your TCP/IP connections, because Mac
kermit will rudely hose a serial port that is already
With that in mind, your
.kermrc file would contain
something like this:
echo Executing site initialization file /usr/local/bin/ckermit.local.ini.... set prompt Chanel3 > set line /dev/ttyS0 set baud 38400 set send packet-length 2000 set receive packet-length 2000 set block 3 set file type binaryThen, in your
~/.kermrcfile, you would have a line like
take /usr/local/bin/ckermit.local.iniOn the Macintosh side, set the same communication parameters for bps, stop bits, parity, and word length. Some older versions of Mac Kermit do not support 2k packets, so you might need to set a smaller packet size. Howerver,
kermitsets the communication packet length based on the receive packet-length setting, so you need to set a shorter packet size on the Linux end, too.
To actually communicate over the link, you need to enter server
mode on either the Mac or Linux side. It doesn't matter which. See
kermit docs for details of server mode.
This is one of the very few
kermit applications where
text file type for transfers is useful. This
is because Macintosh files have two parts: the data fork and
the resource fork. The data fork corresponds to what we in
the Linux world think of as a file: it's the actual data. The
resource fork contains bitmaps for the icons, keymaps, font
specifications, and the like. If you transfer a file from Linux to
the Mac, the file won't be recognized as a text file by the Mac, if
you use binary mode.
When transferring binary files between the two systems, you should
use the Macintosh
.hqx BinHex format, which is a 7-bit
encoding of an 8-bit data file. Mac utilities like BinHexer or
StuffIt will covert the file to its binary form.
If you have a text file which inadvertently ends up as a data-only
file on the Mac, it's likely that it won't even appear in an Open
dialog list box. What you need to do is open the file with ResEdit,
which is available from
will tell you that the file you're opening has no resource fork and
then asks if you would like to add one. You should answer "Yes" to
this question. You can then edit the file's Type and Creator by
selecting the Open Special option of the File menu. All Macintosh
text files are type
TEXT, so replace the question
marks in the Text box with that. The Creator code depends on your
text editor or word processor. Each one is unique, incidentally,
and is how the Mac identifies different apps. The Creator code for
GNU Emacs on the Mac is
EMAC, for example. If in doubt
what the creator code of your text editor or word processor is, use
ttxt, which is the creator code for TeachText (which
is the Mac equivalent of
EDLIN.EXE.) Then your real
word processor or text editor can translate the file from TeachText
to its native type.
There are many other neato things which TeachText can do, so it's worthwhile to keep it permanently on your Mac. The book Voodoo Mac, by Kay Yarborough Nelson, is a good source of tried-and-true Macintosh tricks that use ResEdit, TeachText, the Finder, and other overlooked programs.
Configuring Linux to use the Mac as a
is even easier.
kermit is ideal for this purpose,
because it is one of the few free communication programs which
provides credible VT100/120/220 emulation.
Essentially, what you want to do is start
the Macintosh side as in the previous section, but rather than
issue server commands, you enter
connect mode. This is
the normal terminal emulation mode that most people use, anyway.
On the Linux side, the serial line must be configured with a
getty on it to start a
login: shell. To
do this, you need to tell
init that the serial line
has a terminal on it. In your
/etc/inittab file you
will need a line something like this:
T1:23:respawn:/sbin/getty -L ttyS0 9600 vt100Be sure to substitute the appropriate serial device for
/dev/ttyS0and the correct baud rate for
9600in the command line above.
This command tells
getty to start
-L switch) on the terminal display, and, when the
login times out, to re-start (
respawn) the login
program until someone logs in. If no device is connected to the
serial line, or if the connection is defective, you may see a
message on the system console like:
/dev/ttyS0 respawning too
fast: disabling for 5 minutes. If this happens, you can
return things to normal by (as root)
getty process, or using the
command. Both of them have the effect of re-spawning the
getty processe(s). If everything is in order, you
should see the Linux banner and login prompt on the Mac's
kermit window. That's all there is to it.
Also, if you use something besides vanilla
getty_ps, the command above will look somewhat
different. The important thing to remember is that everything to
the right of
/sbin/getty is an argument for
getty itself; not
init. You should look
at the manual pages for
inittab if you have questions concerning the setup of
The Serial HOWTO provides helpful details on how to configure
getty_ps, if that's what
your system uses.
To transfer files back and forth between the Macintosh and the
Linux machine, you can (via the Mac's Kermit) issue the
kermit -x command to start the Linux
kermit in server mode. You can then use the normal
file transfer commands to send files across the serial line. It's
useful to set a prompt in your
~/.kermrc with a line
set prompt Linux-kermit >Otherwise, remembering which machine you're on can quickly become confusing.
This method should work equally well for any other Mac terminal
program. If you have ZTerm, you can use
sz on the Linux machine to transfer files via the
ZModem protocol. If Microphone Lite came bundled with your fax
modem, that works equally well, albeit without
kermit's superior scripting and configuration
If you have questions about any of this material, or suggestions
for future directions of Mac-Linux serial-line connectivity, don't
hesitate to drop me a line at