“You can’t run a 9600 modem on a Plus.” “You’re wasting your money buying a 56k modem for that old Centris 610.” “Those old Macs don’t do handshaking.”
If you have a low-end Mac and a modem, odds are pretty good that you’ve heard these Mac myths. Fact is, every Mac ever made supports 230.4 kbps over the serial port. It has to – that’s the speed of the LocalTalk connector.
But LocalTalk isn’t the same as working with an RS-232 serial device such as a modem. Performance depends on several factors, including the CPU and its speed. Serial throughput is a moving target – and published data is often contradictory. Develop magazine (No. 9, Winter 1992, pp. 86-88) notes, “no official testing has been done to identify the exact limit of each platform.” (Inserting a floppy disk can reduce serial throughput.)
This article attempts to distill various published articles and real world testing to provide the best overview of Macintosh serial performance.
Apple has three different types of serial ports:
- Simple serial ports (all pre-PPC Macs except IIfx and Centris/Quadra AV)
- Input/output processor ports (IOP) on Mac IIfx, Quadra 900, and Quadra 950
- Direct Memory Access (DMA) serial ports (a.k.a. GeoPorts)
One chip manages both the printer and modem serial ports. Having LocalTalk active, which is CPU intensive and ties up the link between the CPU and I/O (input/output) chip, will reduce serial port throughput in relation to the amount of LocalTalk data sent and received. (DMA serial ports help here, since DMA allows the I/O chip to access memory directly.)
Please take the serial throughput with LocalTalk active as a minimum figure. Real throughput will be between that and the maximum the serial port supports. Also keep in mind that just because your modem connects to another at a certain speed doesn’t mean that your serial port is moving data at that speed.
Instead of embracing the industry standard RS-232 serial port, Apple embraced the RS-422 standard. This standard is different from RS-232, but it can be configured to work with RS-232 devices. This makes it easy to attach regular serial peripherals to your Mac. RS-422 also allows networking – the standard we know as LocalTalk. In Apple’s implementation, the printer port supports serial speeds up to 230.4 kbps, but the modem port may be limited to a lower speed.
Mac serial ports have two speed options, one controlled from the motherboard and a second speed set by an external clock. With external clocking, serial speeds of 500 kbps to 1 Mbps are possible.
Before ethernet became inexpensive and popular, there were external LocalTalk adapters with high speed clocks that could drive the serial ports on 68020– and 68030-based Macs to 920 kbps. Unfortunately, the companies that made them didn’t standardize, so different brands could only communicate with each other at the 230.4 kbps LocalTalk speed. Still, it was a clever hack – and something Apple designed into the system, as indicated in the Byte preview of the Macintosh in February 1984. (8 MHz 68000-based Macs are limited to 500 kbps with external clocking – the CPU can’t move the data faster than that.)
Farallon used external clocking in its EtherMac and EtherWave PowerBook adapters to push data through the serial port roughly three times faster than usual. This is an excellent way to add an older PowerBook to an ethernet network. (These adapters do not support Open Transport.)
An interesting problem with the Macintosh serial port is that when the modem is going too fast, the Mac will pull the line down to tell the modem to “shut up” while it pushes the data into the OS. When it does this, the modem sees the DTR line go down, interprets this as “hang up”, and you hear a “click”.
Your serial port should be capable of handling data at least double the “modem speed” in order to work efficiently. For a 56k modem, you should run the serial port at 115.2 kbps or faster, which the standard Apple serial drivers don’t allow. (FreePPP does support 115.2 kbps and 230.4 kbps serial port speeds.)
If you are having clicking or hang-up problems, make sure you turn off DTR Hangup in the modem. This is pretty universally controlled by &D0 to turn it off, and &D2 to turn it on. (Thanks to Maury Markowitz for the information in the three previous paragraphs.)
LocalTalk Is Processor Intensive
Macworld reports (April 1996, p. 47) that the 68000 CPU can reliably run the serial port at 19.2 kbps with LocalTalk off, but this can be reduced to as little as 2400 bps when LocalTalk is active. (Apple’s own Tech Q&A reports that performance beyond 9600 bps is “dicey”.) Macworld reports the 68020 through 68040 support 57.6 kbps with LocalTalk off, but can drop as low as 9600 bps with heavy LocalTalk activity. 68040-based Macs tend to do a bit better (Macworld, Develop).
Slower CPUs may restrict serial performance to 38.4 kbps or less despite serial driver support for 57.6 kbps. (The processor load required by onboard video on the IIsi and IIci can further reduce performance – a good argument for adding a video card to these Macs.)
Note that LocalTalk is a hardware standard that uses the Mac’s printer port. If you are networking via ethernet, you are not using LocalTalk (except for ethernet adapters on the printer port, such as the Farallon EtherWave and EtherMac adapters). Thus you don’t have to worry about the LocalTalk performance hit.
The Mac IIfx was nonstandard in many ways. It used a different type of SIMM, supported direct memory access (DMA), required an oddball SCSI terminator, and ran like the wind. (Yes, there was a time when 40 MHz was wicked fast.)
As with simple serial ports, the IIfx managed 230.4 kbps for LocalTalk and could be driven to 900 kbps from an external clock. Because the IIfx has a dedicated I/O processor, which reduces the workload on the CPU, serial performance with LocalTalk off can reach 115.2 kbps, although Apple’s serial driver only supports speeds to 57.6 kbps. Throughput can drop as low as 28.8 kbps with LocalTalk enabled and busy – a big improvement over the simple serial port.
Introduced with the Centris 660av and Quadra 840av, the GeoPort became a standard feature when the Power Mac was introduced. The GeoPort design permits 230.4 kbps performance on either serial port, but using LocalTalk may reduce performance on the second port to 115.2 kbps. Still, that’s within the comfort range for 56k modems, even factoring in data compression. Thus, you don’t need to disable LocalTalk to get good serial throughput with a GeoPort Mac.
With an external clock, the GeoPort is capable of 2 Mbps performance.
Other Modem Connections
Of course, this assumes you are connecting a modem to a serial port. These limitations do not apply to PowerBook modems or Comm Slot modems.
Any Mac can be set to run the serial port at 57.6 kbps; newer Macs can go even faster. However, you may not get reliable results if your computer can’t move data to and from memory quickly enough. Unless you have a GeoPort-equipped Mac, the CPU manages all memory access, so a faster, more efficient CPU will provide better throughput than a slower, less efficient one. (The IIfx, Quadra 900, and Quadra 950 have “helper” chips to reduce load on the CPU during I/O. The GeoPort allows moving data directly between RAM and the serial port.)
Precise performance between the minimum with LocalTalk and the maximum depends on how busy LocalTalk is. The more data you’re sending or receiving over LocalTalk, the worse your performance will be. Your results may vary – faster CPUs may produce better results; slower ones, worse.
The GeoPort on the 660av, 840av, and Power Macs should see us comfortably until DSL (digital subscriber line) and cable modems become common with throughput of 1 Mbps and beyond. These will probably connect via ethernet, universal serial bus (USB, a new protocol capable of 12 Mbps throughput), PCI slot, or Comm Slot II.
As for hardware handshaking, which is necessary for every modem 9600 bps or faster, every Mac since the Plus supports it.
(Many thanks to Rowland for new data and constructive feedback that have made this a better page.)
- Low End Mac’s GeoPort Guide
- Modem performance using FreePPP and OT PPP on at 5320, Adrian Winnard
- Introduction to FireWire
- USB: Okay for the low end