I've begun testing a Universal Serial Bus Modem for racing GPL online, and initial results are pretty close to spectacular.
Here's why, and a discussion of my experiences so far.
As I discuss in my GPL Online FAQ, the serial port is a serious problem when racing GPL online. The 16550 UART used in the typical serial port has tiny 14 and 16 byte buffers (known as FIFO buffers), and the CPU must be interrupted whenever the input buffer is full. If the CPU is busy and does not get around to emptying the buffer before another character comes in from the modem, the new character is lost - which means a packet will be lost and must be discarded.
For output, the application can put only 16 bytes into the buffer before sending, which means frequent interruptions of other processes to maximize the output bandwidth.
The situation is compounded by Windows' task-switching code, which is very inefficient. Each time GPL gets interrupted to deal with the serial port, significant additional overhead is created.
GPL is unique in having the most sophisticated physics engine yet produced for a commercially available racing simulation. For most racing sims, CPU utilization by the physics engine on a 400 mhz machine is about 1 to 2%. I believe that GPL's physics engine uses almost 40% of the CPU capacity of a 400 mhz machine.
This means that for most machines, GPL's frame rate is limited by CPU capacity. Only machines with older 3D cards (Voodoo 1, Rendition 1000) or very fast CPU's (400 mhz and up) are fill rate limited.
Machines which are CPU-bound are running at 100% CPU occupancy if they are showing anything less than 36 fps in GPL (press Alt-F to see the frame rate indicator).
Any time GPL is running on a machine at 100% CPU occupancy, there is a fairly high likelihood that the serial port's limitations will cause packets to be lost. When it is busy doing physics or graphics, the CPU will frequently not switch tasks quickly enough to capture the incoming bytes from the FIFO input buffer, and a packet will be lost.
When a packet gets lost, all sorts of evil things happen. In the worst case, when a lot of packets get lost, the GPL client will disconnect from the server. Also, clock smashes may occur, which are evidenced by a screen flash, an interruption in engine sound, and giant warps of surrounding cars. A clock smash can also be accompanied by gross scoring errors, such as a bogus black flag for going backwards or cutting the course, or impossibly fast lap times, or even lost or false extra laps.
Also, when packets are lost, normal lateral and small longitudinal warping is aggravated, winking out of opponents cars becomes more likely, and minor scoring errors can occur, such as the loss of lap times in practice, or bizarre reports of position and gaps on the pit board during the race.
All of this seems to be worse in GPL than in other racing sims, presumably because GPL's CPU utilization is so much higher, so data is more likely to be lost by the serial port limitations.
Also, the frequent interruptions of the CPU and task switching required to handle the serial port can have a very significant impact on frame rate. My P2-350, for example, can run 19 AI cars at 800x600 with all graphics turned on when running offline. Online through the serial port, I typically switch the mirrors to cars only and turn off all lighting effects and special effects such as skid marks and smoke. With Windows 95, I also turned off everything in the cockpit and beveled tires, and ran at 640x480. All this was necessary to get a solid 36 fps. Anything less than 36 fps, and clock smashes and disconnects became so frequent as to be intolerable.
Serial port limitations and GPL's CPU requirements create a vicious cycle: the serial port management sucks up CPU resources, which kills GPL's frame rate and keeps the CPU busier than it should be, which causes lost packets, which cause all sorts of nastiness when racing online. The only solution is to cut graphics or upgrade so you get 36 fps all the time.
Or eliminate the serial port.
The best solution is to go to a high speed digital connection, such as a cable modem, ADSL, or an ISDN connection with an ISDN router. All of these eliminate the serial port in favor of an Ethernet card, which is far superior for this application because of larger buffers and a more intelligent controller.
Next best solution is an internal ISDN Terminal Adapter, with a more intelligent serial port or no serial port at all.
However, many people (like me) do not yet have access to ISDN, ADSL, or cable modem. For these people, I believe there is an excellent alternative.
The Universal Serial Bus (USB) is a new technology, with much higher bandwidth than the 16550 serial port in today's computers. It has a more sophisticated controller than the 16550 UARTs used in the serial port, and a much larger buffer. The USB controller is capable of 12 Mbits per second, which far outpaces the 16550 and is in the same range as a typical 10 Mbps Ethernet card.
This suggests that a modem connected through the USB port would be far superior to a modem connected through serial port for online racing in GPL, because the CPU would need be interrupted much less often, and data would be much less likely to be lost.
With this in mind, I set about acquiring a USB modem to evaluate. I could find only four manufacturers who have announced USB modems:
I have been able to confirm that MultiTech and 3Com are actually delivering USB modems. Aztech Labs intends to release their USB modem in February 1999.
Achim Trensz has begun using a Fritz!Card USB ISDN device with excellent results.
The following companies also appear to be selling USB devices for ISDN.
The device being sold by AVM Computersysteme is quite expensive, on the order of $850. The DrayTek and French USB Booster 128 appear to be the same product.
I also found a reference through the USB Web site to an ISDN USB modem made by Siemens, but could find no information on the Siemens site about this.
I don't have access to ISDN. At this time, I have no personal with these devices.
If you are interested in how the Universal Serial Bus works, you might wish to read some Intel technical documents describing the USB architecture and performance considerations at:
Another possible solution to the 16550 serial port problem is the use of a high speed, intelligent serial port controller. During my discussions with MultiTech personnel, I learned that MultiTech manufactures such cards, including the ISI551 and ISI552 one and two port cards which might be quite suitable for the typical GPL user. Street prices seem to be in the $100 range. I may investigate one of these cards in the future.
Yet another alternative, if you already have an external serial port modem or external ISDN device, is a USB to Serial Converter. A reader reports excellent results with a converter made by Entrega.
I recently acquired a MultiTech MT5634ZBA-USB and eagerly put it to work on my racing computer (an ASUS P2B motherboard with P2-350, 8 mb AGP Hercules Thriller, 128 mb of PC-100 SDRAM, and PDPI L4 game controller).
I did encounter a couple of glitches, however, one of which will probably be of interest if you are running Windows 95.
As soon as I tried the MultiTech ZBA-USB with GPL, I noticed a dramatic improvement in all normally troublesome aspects of online behavior in GPL.
As I mentioned above, when racing through a serial port modem on my P2-350, it is normally necessary to significantly cut back on graphics options to get 36 fps (required for acceptable Internet racing on my computer). Under the best conditions, my settings for online racing included: 800x600, all lighting and special effects off, detail bias at about 80%, mirrors set to Cars Only and car textures in the mirrors off.
With the MultiTech USB modem, I am able to turn on all of GPL's graphics options at 800x600 and still get over 30 fps almost all the time.
After some experimenting with online racing using the MultiTech USB modem, I settled on having all of GPL's graphics options on except mirrors, which I set to Cars, and Anti-Aliasing, which I normally turn off because I don't like the blurring it causes. Detail Bias is all the way to the right.
This gives 36 fps almost all the time, with only very occasional brief dips into the low 30's. I am delighted to be able to see tire smoke, skid marks, dust, and flames - all graphics options which I've done without when racing online through the serial port.
Even more importantly, all the nasty effects resulting from lost packets seem to be entirely gone, even when I'm not getting 36 fps! However, I still feel it's important to get at least 30 fps, to avoid data loss and the associated side effects.
I've joined races on cable modem hosts, ADSL hosts, and ISDN hosts. On some of these hosts, it was eerily like racing on a LAN. There was almost no warping at all! Normally I can identify the host's car because that car is warping less than the others, but not any more. Nobody was warping.
Not only that, but most of the time nobody winked out on the grid, either. At the start of a race at Silverstone, I could see all the cars around me (mostly ahead; I was too excited to be driving very well) all the time, almost all of them solid as a rock. For the first few laps, I could see a string of cars ahead of me stretching out into the distance - a rare sight in my GPL online racing experience with the serial port!
On some of the other hosts, there was more warping, and some winking out on the grid, but both were far less than what I am used to seeing. Most cars were rock-solid almost all the time; I could tell a few players had high latency connections because theirs were the only cars warping regularly.
In general, though, warping is reduced so much that the contrast with the bad old days is striking. I hosted a race which was joined by a player from Finland (I'm in New England) and we ran over half the race nose to tail, each others' cars solid as a rock, until I made a mistake and he was able to slip by. It was awesome.
Equally importantly, scoring problems seem to have vanished. Clock smashes are now relatively rare, and I believe these are mostly due to a latency spike somewhere along the route.
Virtually all of my practice laps are timed. Also, during races, the pit board seems to give much more sensible data, rarely telling me anything that didn't make sense.
I have not yet had any major scoring problems, such as bogus black flags or impossibly short lap times.
I've had some disconnects, but these are often accompanied by disconnects of other people. I believe these are caused by a transient problem with the host's ISP or somewhere on the Internet backbone between me and the host.
My overall impression is that disconnects are considerably reduced.
Theoretically, a 33.6 upload (the maximum rate attainable with an analog modem, even 56k) can support a mazimum of two players with GPL's default bandwidth, or up to four with my recommended 84-3 core.ini file. (See my Online FAQ for details about this.)
So far I 've only hosted a couple of races, but my experience seems to bear this out. With up to four players, including myself, the other players seemed to have good connection quality and smooth play. From my end, it seemed that no one was having trouble staying connected, a welcome change from my experience when hosting with a serial port 56k modem.
With five players, gameplay degraded seriously, although, interestingly, there still seemed to be no involuntary disconnects. But frame rate was dramatically reduced on my machine, even after I cut way back on graphics options, and the clients suffered a lot of clock smashes, as I would expect when my CPU was saturated.
It would appear that a USB modem does not increase the maximum number of players which can be hosted, but it does dramatically improve the quality of play for up to four players. My feeling is that for hosting, it is best to set graphics options so that 36 fps is maintained.
The big selling point that most USB vendors and the USB Web site are pushing is convenience of installation. USB devices are hot-swappable, and Windows recognizes the modem as soon as you plug it in. To me, this is a relatively minor point, but it is a nice feature.
Also the MultiTech modem is quite small, and is powered through the USB port, eliminating the ugly and cumbersome 110v wall wart that afflicts most conventional modems. With large, informative LED's on its front face, and its small size and convenient installation, the MultiTech modem is a pleasure to install and use. It came with a USB cable included, which I quite appreciated
So far I have experienced only two drawbacks to using a USB modem. However, some people have reported frame rate issues with GPL certain hardware configurations when a USB modem is active.
Hardware USB Support
To use a USB modem, you must have a USB port on your computer. Most new PC's shipped within recent months have one or two USB ports built onto the motherboard. If your machine does not have a USB port, you might investigate an add-in USB card. I have no experience with such cards, so can give no advice.
Windows 98 or 95C
To use the MultiTech USB modem, I had to install Windows 98. I suspect that Windows 98 or Windows 95C (aka OSR 2.5) will be required for any USB modem.
I chose to do a full install of Windows 98 on a reformatted partition because almost everyone I consulted said that this would result in a more stable configuration of Windows than installing the Windows 98 Upgrade over an existing Windows 95 installation.
For people with Windows 95B or earlier, a move to Windows 98 represents some expense and can represent considerable inconvenience. I must say that the Windows 98 installation went very smoothly on my machine. I dreaded doing it, but now I'm very glad I did.
I use two ISP's, both of which support V.90 and K56flex. One of these ISP's also maintains a separate POP which supports only V.34 (33.6) connections. My serial port modem, a Motorola 56k ModemSURFR, normally connects to the 56k POPs at 34000 to 44000, with most connections in the 40000 to 42000 range.
The MultiTech USB modem generally connects at a good speed to the 33.6-only POP, typically between 26.4 and 31.2. However, at first the MultiTech modem tended to connect to both 56k POPs at slower speeds than the Motorola.
Working with MultiTech, I did some testing which pointed to a problem with line quality at my location. They were able to connect to both of my ISP's from their site, using the same model of modem, at very satisfactory speeds, typically 46 to 49.3k to one ISP and 49.3 to 56.6k to the other.
MultiTech suggested I try a phone line filter, which I did. I found a "Radio Interference Filter" at Radio Shack, part number 43-150, for $19.99.
With this filter, the MultiTech has consistently connected to both POPs at speeds between 42k and 49.3k when my phone line quality is good (see sidebar).
At my brother Nate's, the same modem never connected at anything less than 50k.
A reader asked:
Do you still employ the FIFO buffers, and/or error control. I would have thought that the buffers will have no effect to the USB hook up, no? Should I disable them? Any other tips?
MultiTech said that the FIFO buffers don't do anything on the USB modem. I left them at the default settings. I left Error Control on but turned off Compress Data on the same page.
They also suggested setting the Maximum Speed for the DUN connection to the highest value it will allow.
Note: MultiTech has released a firmware upgrade for the ZBA-USB.
I tested the 3Com US Robotics 56k Voice Faxmodem Pro with GPL. This modem is at the opposite range of the spectrum from the MultiTech ZBA-USB. The ZBA is small, light, and simple to install, and gives the impression that it was designed from the start as a USB modem. It's a basic modem, with no fancy features.
The Voice Faxmodem Pro, on the other hand, is a top-of-the-line, full-featured modem, with speakerphone and voice capablities. As a result, it's much larger than the MultiTech, with a footprint almost twice the size of the ZBA, and it comes with the dreaded wall wart, presumably required to power the speakerphone and the modem's other enhanced features.
But it doesn't come with either a serial port or USB cable (although it does include a phone cable).
When it arrived, the 3Com modem was not USB-capable. Before I could use it as a USB device, I had to jump through some hoops. 3Com assures me that the modems now shipping are USB-capable out of the box.
The 3Com modem also comes with Winfax Pro and other full-featured software which allows its use as a voice answering device. I didn't need these features, so I didn't try them. I focused on the modem's performance in the context of racing with GPL.
I found that the 3Com modem seemed to connect at somewhat higher speeds than the MultiTech. My phone lines are intermittently noisy. Connection speeds for the MultiTech and for my older Motorola ModemSURFER can range from 24.6 to 48k, depending on the weather (see sidebar).
Anyway, the 3Com modem seems to connect in the 49 to 50k range when the others are connecting at around 44k. As I explained elsewhere, download connection speed is not critical for GPL, since download speed of 24.6 is adequate to join even races with large fields. Upload speed is critical for hosting, however. A fast download speed is nice for Web surfing, of course.
The 3Com modem also seems to establish its connection a little more quickly than the MultiTech - when the line quality is good. When it's bad, the 3Com seems to thrash more before it makes a connection, and it's not as tolerant as the MultiTech of bad line quality. Sometimes when it's raining, I can't connect through the 3Com at all.
In online play, I experienced the same benefits that I experienced with the MultiTech ZBA-USB. Warping is much reduced, and scoring problems are reduced although not eliminated. Frame stuttering seemed almost nonexistent.
However, I have the feeling that for some reason the 3Com is more sensitive to latency spikes, because when the connection went bad, I would quickly get disconnected by GPL, or suffer numerous clock smashes. This sort of thing is very hard to measure objectively, however, because it is a function of wildly variable latency on the Internet.
The 3Com modem may have somewhat more efficient drivers. In my testing, it had less impact on GPL's frame rate when running GPL on a Voodoo card. Also when I was racing online using a Hercules Thriller, at some tracks (Silverstone and Mexico) I was able to run at 800x600 with all graphics on and still get 36 fps (although there were only 3 or 4 opponents in this case). At more graphics-intensive tracks (Rouen, for example) I had to cut back to 640x480 and reduce some graphics to sustain 36 fps.
While I was able to host games with up to four players through the MultiTech, so far I haven't been able to host games with more than three players using the 3Com. When the fourth player attempted to join, one or both of the other clients would disconnect. I'm not sure why this is. Perhaps people with better phone line quality would have better results.
USB modems are brand new technology, and I suppose it's inevitable that we would encounter some problems along the way.
Shortly after I published the original version of this report, a reader notified me that when running GPL on a Voodoo 2 card, if a MultiTech USB modem is running in the background, even if it's not transmitting or receiving data, there is a detrimental effect on GPL's frame rate. I tried the same thing with GPL and a Voodoo 1 card and got the same result.
However, another reader has reported no impact on frame rate from the MultiTech USB modem when running GPL on a pair of SLI'd Voodoo 2 cards on a 450+ mhz machine.
Other readers report excellent results when using a Rendition card, although one reader who is using an AMD K6-2-350 and a Hercules Thriller experienced a frame rate degradation.
PCI bus contention, particularly on machines with a PCI sound card, has been suggested as a possible cause of this problem. Papyrus and the modem manufacturers are aware of this issue.
Read a collection of reader reports here.
From what I've seen so far, USB technology represents a significant advance over the serial port for online racing in GPL. It eliminates one of the major sources of the most serious problems encountered when racing online. Of course, it can't eliminate the sometimes wildly variable latency implicit in transmission across the Internet, and it can't deliver better than 33.6 kbps on the upside of the link, but for people who don't have access to all-digital connections, a USB modem looks like a solution with a great deal of potential.
On some hardware configurations, frame rate in online racing is improved over that seen with a serial port modem. On certain hardware configurations, however, a USB modem seems to impose a frame rate hit in GPL, possibly due to PCI bus contention. Papyrus and the modem manufacturers are aware of this problem and we can hope for a solution.
Both the MultiTech USB modem and the 3Com USB modem performed well with GPL in my testing. I found the MultiTech very convenient to install and use. The 3Com was not easy to install, but worked well once I'd jumped through the hoops, and 3Com modems shipping now should install more easily.
I found it very exciting to be able to race in close quarters with other cars, driven by people thousands of miles away, and not have to worry about a warp collison. It's incredibly dramatic to be able to view the smoke and fire that billows up in a crash - graphics details I've had to do without when racing through the serial port. I was sometimes even treated to the sight of smoothly curved skid marks being laid by another car!
I was able to find a number of online mail order suppliers who were offering the MultiTech MT5634ZBA-USB in the $120 to $150 price range, although not all had them in stock.
The 3Com US Robotics Voice Faxmodem Pro seems to be priced starting at about $165. For this modem, you'll also need to purchase a USB cable for about $10.
If you're interested, try these links:
I hope to test other USB modems as they become available, and will report test results here.
Here are some other reviews of USB modems: