blankblank blank

Splitting A Single NMEA Serial GPS Connection Into Multiple Virtual NMEA Ports

If you have a GPS connected to your computer with a serial NMEA connection, either old-school (a hardwired serial port) or new-school (a wireless Bluetooth connection), the connection to the program you’re using to monitor the data is typically made through a single serial Windows COM port. Normally, if one program is accessing the NMEA data stream through this COM port, no other program can access that port at the same time; you’ll get an error message saying something like “Unable to open port” or “ “Port is already in use”. Which is a pain if you want to run multiple applications at the same time, and have each one receive the same GPS data. You could have multiple GPS receivers, each with its own COM port, but that can get expensive.

The donationware program XPort takes the input data from a single serial COM port, the one your NMEA GPS data is coming through, and lets you split the serial data stream between up to 8 user-designated COM ports. You can then have each application access a different COM port, so that at least  8 applications can receive, store, display, analyze, etc. the NMEA GPS data stream. And as it turns out, maybe even more than eight apps …

No installation required; just run the executable, and the program both puts an icon in the traybar, and opens up the program window:


Here, I’ve already configured the program to connect to my Bluetooth GPS on COM port 8, and with my auto-connect feature enabled, it started up the Bluetooth connection to the GPS receiver automatically. If you don’t have this capability, you may have to manually establish the Bluetooth link between your GPS receiver and its assigned COM port, which can be a real pain (more below). The default serial speed for NMEA is 4800 baud, but I’ve found that sometimes setting it higher (19200 in this case) can improve reliability; other times, it has to be set at 4800 or it won’t work. In this case, clicking on the “Enable Ports” button starts splitting the COM8 input between COM ports 1, 2, and 3. You can select any COM port numbers unassigned by your system from COM1 to COM255, but some applications only let you choose from a limited set of preset COM port numbers.

It’s probably safest to connect each program you have running to a separate COM port. By accident, though, I discovered that at least under some circumstances, you can have more than one program accessing a single COM port. Unlike system COM ports, XPort won’t block access to a COM port already opened by another program. For example, I’ve had as many as 5 programs accessing data through the COM2 port with no apparent problems. Not sure what the limitations are on this, and it’s probably best to have each program have its own unique COM port. But if you ever have to run more than 8 programs that require GPS data, it may be possible just by having two programs share the same COM port for data.

For the checkboxes:

  • NMEA Filter: Filters noise and unneeded data. Haven’t seen this making a difference with my receiver.
  • Battery Saver: Keeps the hardware serial port closed until you enable the virtual ports. If you have a Bluetooth GPS receiver, this may save on battery use by keeping the Bluetooth connection off until absolutely necessary.
  • Video Reset: Turns the display off and on to keep the monitor from going into blanking/power-saving mode

The tray icon also changes color depending on the status of the GPS connection:

  • Black=Not Connected
  • Cyan=Connected-No data
  • Red=Connected/No Fix
  • Yellow=2D Fix
  • Green=3D Fix

The download page has additional technical data.

If you have a Garmin GPS unit that connects to a computer only via USB, it uses a proprietary Garmin protocol that is not NMEA-compatible. For those units, you might want to consider the paid utility program GPSGate from Franson. Note: Haven’t tried it myself, but have heard from others who swear by it. For $12.95, the express version converts the USB Garmin protocol into one or two virtual NMEA ports; the more expensive standard version lets you add even more virtual ports. Other functions include a Google Earth GPS connection interface, a conversion of NMEA serial data to the Garmin proprietary serial protocol, and a direct connection function to Bluetooth GPS devices to simplify the task of establishing a link between your computer and the Bluetooth GPS receiver. In my case, I struggled unsuccessfully for a while to get the standard Windows XP Bluetooth interface to work correctly with my Bluetooth GPS receiver before giving up and using the BlueSoleil Bluetooth manager that came with my Bluetooth dongle; if you run into similar problems with your system, GPSGate might be able to help.

Looking for something else? Enter some keywords below, then click "Search".