GPS Generic NMEA COM Port (Bluetooth, USB etc) Sensor Driver

    General discussion

  • I 've created the UMDF driver to expose a sensor interface for any NMEA-compatible GPS connected at a serial port (via bluetooth, usb etc). It works fine on my system, currently supporting GGA/RMC/GSA/GSV to return X,Y,Z,Precision Information,Satellite Information, Speed and Bearing.

    There is also a reverse driver available, which can map a location sensor (including GPSDirect) to a virtual COM port, for legacy software.

    To validate com port settings , you might need before installing the driver to connect to the GPS device directly (by using e.g. Turbo GPS or Hyperterminal) and verify that your settings work.

    The ISensor ID is {800EE0CB-71EC-40f0-991C-7E76BFABD1AF}, pass this to ISensorManager::GetSensorByID() to get the sensor.

    Best Regards.


    • Driver works with Location API.
    • Driver reports Satellite data.
    • Driver allows selection of the COM port baud speed.
    • Turbo GPS Updated to support Sensor API and indirectly, the driver.
    • Driver returns NMEA and Fix Type
    • Driver supports x86
    • Driver supports GGA and RMC


    • Changed type WindowsNT Friday, October 2, 2009 5:25 PM
    • Edited by WindowsNT Saturday, March 29, 2014 1:08 PM
    Monday, September 28, 2009 11:41 AM

All replies

  • Hi Michael,

    I would like to test-drive the driver on my Fujitsu U2010 which has NMEA GPS integrated (Kyocera chipset). Can you provide a x86 binary or source code perhaps, so I can help out?

    Monday, September 28, 2009 2:14 PM
  • The x86 driver installed fine. Now going to check whether it works.
    Monday, September 28, 2009 5:29 PM
  • I was not able to get a satellite fix. Your app always displays "Invalid signal". Does that mean it can't get a satellite fix? Or does it mean it can't read the NMEA control strings? I am pretty sure I entered the right COM port, double checked with the device manager. Thanks.
    Monday, September 28, 2009 8:13 PM
  • Nevermind. It is working now. I tinkered a bit with Hyper Terminal to find the correct baud rate (4800 baud for my GPS), then used your Turbo GPS application to check whether the settings were working there too. I figured that perhaps the sensor driver uses the same backend. The sensor driver now correctly shows the properties.
    One more thing though: How does the driver detect the correct baudrate and other settings for the serial port? Does it read settings from Turbo GPS? Or does it detect everything automatically?
    Thanks again and great job!

    Now I just need to find an application that uses the sensor and location API and is actually useable on my Fujitsu U2010 UMPC. The VE3DNavApp.exe binary uses WPF, which is unuseable performance-wise on my UMPC...

    Wednesday, September 30, 2009 10:30 AM
  • Update 0.0.6 - Added satellite information values.

    Sunday, October 4, 2009 6:16 PM
  • Update 0.0.8

    Now the driver also works with Location API.


    Thursday, October 15, 2009 1:58 PM
  • Last update 
     - Driver signed (hey, with my own certificate just for testing yet :)
     - ILocation bug fixed.

    Monday, November 2, 2009 8:25 PM
  • Update 0.11

    - Simulation mode added.

    Thursday, November 26, 2009 2:52 PM
  • How do you use this with the pdc laptop?
    Thursday, November 26, 2009 4:13 PM
  • Is the GPS accessible normally via a COM port ?

    Thursday, November 26, 2009 4:31 PM
  • According to the driver manager, the gps is on com 6. But I don't know anything about the port settings. And I'm not positive the format is NMEA but the odds are it is. It's a Huawei chip that has 3G, GPS, etc.
    Thursday, November 26, 2009 6:54 PM
  • Then try it with a COM port application to see if it works first, then try my driver and setup it to COM 6 and baud 4800. If it is available as a COM port, chances are that it will be in NMEA format (if not, there is nothing you can do).

    Thursday, November 26, 2009 7:03 PM
  • For me, using a Holux Bluetooth GPS on the PDC notebook, it shows up as COM16 at 4800 baud.  You should be able to see this by looking at the properties of the Bluetooth device after pairing with it.

    At first the driver didn't see anything, until I used a terminal program to connect to COM16.  At that point I got a notification that a BT device was connecting, and after that the driver started seeing data.  It's like the driver doesn't open the COM port but just spies on the data stream?

    BTW, later I turned off Bluetooth and noticed that the UMDF was taking a whole CPU until I killed it.
    Saturday, November 28, 2009 4:03 PM
  • The driver does open the COM port, but it seems to me that setting COM port options doesn't work properly, so it is the same for me, I had to open the port once with a COM-direct app, and then use the driver. I will make it to open the driver as a normal application first (through its GUI), verify that there is actually NMEA data going through and then actually install the driver.

    As for the cpu bug, I will take a look to what happens when i force my bluetooth off as well.

    Saturday, November 28, 2009 4:14 PM
  • Update

    Now the GUI checks and applies configuration to the selected com port and if the COM port actually opens and gets configured, then the driver is installed.

    Best Regards.

    Sunday, November 29, 2009 3:52 PM
  • Driver update to fix a x86 bug.

    Sunday, December 27, 2009 7:29 PM
  • Thanks for fixing ;-)

    Sunday, January 3, 2010 8:08 PM
  • Hi Michael,

    I have a new Motion J3400 tablet Windows 7 with an integral GPS (Gobi ?)  and while I have that GPS stopped I am trying to add a GlobalSat Bluetooth BT-359 gps.  I can pair the gps and it gets a valid stream as per hyperterminal on com 7 4800baud. What does not happen is that the bluetooth manager has it in the other category and not in a gps category. Damned if i dont have applications that cannot open the serial port. i did load your driver and it did show a stream on the initial load screen. I dont see where i can start that interface after the initial install to view the stream again. Also the application (Flightprep) still could not open the com 7 port.

    Any ideas?

    Wednesday, January 6, 2010 5:21 AM
  • Hello there.
    Since you do have a COM7 port that opens with hyperterminal, that port should be able to get opened by any other application, no matter what the bluetooth manager says.  If the driver and Turbo GPS can open it, then it is an application level problem (Flightprep needs configuration on the port somehow).

    Wednesday, January 6, 2010 11:08 AM
  • Hi Michael, the driver work great, do you plan on adding reconnect capability? If I power cycle my BT GPS your driver doesn't keep reading the data. I was hoping users could just install your driver once and then whenever they run my app it would just work.
    Monday, January 11, 2010 2:37 AM
  • I 'll try that in the next update; it is not that easy because the driver has to be notified when to reconnect and I'm not the driver expert to be able to communicate from the app to the driver directly.

    Monday, January 11, 2010 2:14 PM
  • Update -> Converted all VT_R4 to VT_R8. Reconnect capability still not there, but I am trying.

    Saturday, January 16, 2010 4:35 PM
  • Update -> Driver is now signed.

    Monday, March 8, 2010 3:29 PM
  • Update

    Now driver opens the COM port only when a client sensor application is attached and closes COM port if all clients are disconnected. Also if an error occurs in the communication, the driver will retry the COM port as soon as a new client is attached.

    Wednesday, March 17, 2010 11:16 AM

    Thanks for making this available.

    This is my first experience using the Sensor & Location features of Win7. Do you know if there is a C# sample showing how to use your driver?


    Saturday, May 1, 2010 7:30 PM
  • I'm not sure, but generally an ISensor is an ActiveX control so you would instantiate it and use it the same way you would with any other.

    Perhaps you should ask or search in a C# related forum about usage.




    Sunday, May 2, 2010 12:01 AM
  • I haven't had a look at the Code Pack, yet, but the Sensor Platform APIs  have been wrapped :


    Sunday, May 23, 2010 10:53 PM
  • Update for Turbo GPS to work correctly with the GPSDirect Sensor Driver & Geosense.



    Sunday, May 30, 2010 10:31 AM
  • Update

    Now driver starts in user-mode and goes to admin mode only when installing/uninstalling the sensor.

    Best Regards.


    Tuesday, June 1, 2010 2:46 PM
  • I got a good install and GPSdirect was finding the satellites and I enabled GPSdirect in sensor/location.  When I rebooted my weather gadget cannot find any location and when I open gpsdirect it does not find any satellites.  What am I missing?



    Tuesday, August 10, 2010 4:29 AM
  • No help on this from anyone?
    Sunday, August 15, 2010 7:57 PM
  • Weather gadget and GPS don't work together. Thinkpad users with a GOBI2000 card experienced this situation. In order to receive GPS data the workaorud is to close the weather gadget.


    Monday, August 16, 2010 7:33 PM
  • Weather gadget and GPS don't work together. Thinkpad users with a GOBI2000 card experienced this situation. In order to receive GPS data the workaorud is to close the weather gadget.


    The Weather gadget does work with GPS.

    My understanding for loading this location/sensor driver was so that I could use the GPS device as a location/sensor. The Weather gadget is the only app that I know of that uses the location/sensor.  If it doesn't work then what can use this sensor?


    Wednesday, August 18, 2010 2:37 AM
  • I've been having an issue with this driver i hope someone can help with.

    It installs and works great, after i set up my gps, the installer utility sees correct location data and my own app can see the data too.

    After i reboot there is nothing. I open the installer and it says invalid data.
    My own app reports NaN for all location values (lat / lon / speed / etc). The strange thing is if i uninstall the driver and then immediatley reinstall it then it all starts working again until the next reboot.

    It does survive hibernation though, in that case it comes back no issues until the next full shutdown.

    I'm running a custom app to read the data on a Windows 7 home premium 32bit machine.
    This is the only sensor installed in the Sensors control panel.

    • Edited by leonk1234 Thursday, November 11, 2010 10:26 PM spelling and formatting issues
    Thursday, November 11, 2010 10:24 PM
  • I 'll take a look - thanks for noting.



    Wednesday, January 5, 2011 10:29 PM
  • Update 0.18 

    * Fixed some internal minor bugs

    * Changed the interface

    * Fixed the reboot bug.


    Best Regards.


    Saturday, July 16, 2011 8:23 PM
  • Update 0.20.


    Now the driver can also read NMEA data from a TCP/IP connection. 


    Sunday, July 17, 2011 3:27 PM
  • Hello there,

    I would like to know if it is possible to install the driver without selecting a com port (I know it will not work until it is configured).

    The problem is: We have an application that uses a USB GPS (usb-to-serial) that receives NMEA data. Sometimes we need to replace the GPS Hardware or change the computer or even the USB Port. By doing so, the COM Port is changed (it is a virtual COM Port) and I need to re-configure the driver (using administrative privileges).

    This is something I would like: My application would "auto-detect" GPS port (by iterating all ports available and checking for NMEA data manually) and then configure the driver to use the discovered port.

    That would give more flexibility to the system.

    Is that something planned for future releases ? Something completely new or even possible to achieve?

    By the way, I saw the sentence "If you want to redistribute this driver whithin your application contact me at the forum". Here I am: I do!

    Looking forward to have any feedback on this!

    Kind Regards

    Bruno Bertechini

    ----- Bruno Bertechini CIO Acensco Tecnologia

    Saturday, March 3, 2012 10:53 AM
  • I 've already answered to you in my forum, but I also say it here so others may see it.

    The driver can install/uninstall using command line parameters so everything can be configured programmatically. If anyone is interested for that, just drop me a note.


    Monday, March 19, 2012 8:12 PM
  • Thanks for your answer Michael. As per my understanding, you are saying that I can use command line parameters in order to "install" the driver in a different port.

    But I think this does not solve my problem.

    As I said:

    "The problem is: We have an application that uses a USB GPS (usb-to-serial) that receives NMEA data. Sometimes we need to replace the GPS Hardware or change the computer or even the USB Port. By doing so, the COM Port is changed (it is a virtual COM Port) and I need to re-configure the driver (using administrative privileges)."

    Even if I use command line arguments I will need admin privileges to re-configure it. I would like to have some "method" to "call" the API to a different port or something (dont know if it is even possible).

    Otherwise I will need to have a windows service running with admin privileges to auto-detect the new com port and reinstall the driver. This is what I am trying to avoid!

    Michael, thank you very much for your help. Do you have any suggestions on what approach could be used here?


    Bruno Bertechini

    ----- Bruno Bertechini CIO Acensco Tecnologia

    Tuesday, March 20, 2012 3:22 PM
  • First off, great work on getting this going! But I can't get it to work.

    I have a Verizon Jetpack 4G LTE, MiFi 4620L. It supports broadcasting GPS NMEA over WiFi. In fact, I can telnet to port 10110 and i get a stream of GPS data coming back, which looks like this (while on the interstate near Atlanta):


    So clearly I'm getting back data. But when I put in and port 10110 in the control panel for this driver and install it, it says Signal Invalid - 0 of 0 sats. Any ideas to try?

    Saturday, October 27, 2012 3:16 PM
  • The new update almost works with Windows 8.

    Some minor issues yet to be fixed.

    Best Regards.


    Thursday, December 13, 2012 7:51 PM
  • Do you have any comment on Paul's post above about devices that broadcast NMEA data over a TCP port? I have a device that does the same thing(Sixnet Cell Modem) and i also cannot get it to work over ip. Serial is no problem however, but it would be nice to get it working without the serial cable lol.

    Great project btw.

    Sunday, December 16, 2012 3:05 AM
  • Hi Michael,
    Great work!!
    I want to develop a location based app and using the built in wifi scanning sensor of win8 is not accurate enough.
    I managed to get NMEA signal from my Globalsat BU-353 GPS (which i purchased just because people have been successful making it work with your driver), however, the driver does not get the stream properly under win8. (see attached images)

    Huge appreciation for your work!
    Any progress on windows 8 development? if you need any help with the code let me know if I can help.
    Do you know if there is a workaround I can use to make it work?

    Best regards,

    GPS Info

    GPS Sensor 7

    • Edited by Okets Tuesday, January 22, 2013 4:19 AM
    Tuesday, January 22, 2013 4:01 AM
  • Turbo GPS also works.
    same machine, same settings, I am pretty convinced this is probably an issue with the driver...

    Tuesday, January 22, 2013 4:24 AM
  • I 'm working on Windows 8 issues. It seems that it dies when a connection is terminated, and then needs reinstallation.

    Working on it.


    Sunday, February 3, 2013 12:02 PM
  • Update

    Threading and Windows 8 issues almost fixed. Please test and verify.



    Sunday, February 24, 2013 10:57 AM
  • Hi Michael,

    working fine for me, any special windows 8 issues you want me to QA?



    Friday, March 15, 2013 11:59 PM
  • Great work on this. Now the million-dollar-question: can it be made to work with Windows RT? I understand RT is missing the Serial Port Profile, which could be a show-stopper. However "jailbreaking" the device to allow running of any user code is easily achieved so maybe there are workarounds... It seems that Microsoft doesn't care about all the legacy USB devices out there, and whether they work or not.


    Sunday, March 24, 2013 9:37 PM
  • You mean for a RT application to access the sensor? or for the driver to be a RT application?


    Friday, August 30, 2013 6:47 AM
  • The newer version can also get data from TCP/IP.

    Check my site ( for instructions on how to get GPS data from an Android Phone and map it as a Windows Sensor.


    Tuesday, January 7, 2014 12:36 PM
  • And now, a REVERSE driver is available!

    Maps any location sensor (including GPSDirect!) to a virtual COM port!

    Check my site :)


    Saturday, March 29, 2014 1:07 PM
  • Hi Michael,

    I try to use a GPS Sensor which is only providing COM interface through your driver as location provider on Windows8.1 but neither my navigation software, nor bing maps are working with it. But TurboGPS is reading it properly. What can be the reason?

    Thursday, April 3, 2014 1:46 PM
  • Does your navigation software read sensors?

    If yes, try setting the location by "Set My Location" button in the driver and try again.

    If no, perhaps you need the GPSReverse driver to simulate a COM port?


    Saturday, April 5, 2014 3:05 PM
  • The new version of the driver completes all drivers in one package + testing tools, and it's more compatible with ilocation services.

    Best Regards.


    Friday, September 25, 2015 9:22 PM
  • Has this been confirmed to work on any version of Windows Server?  I tried installing it on 2012 R2, but the installer failed with "Sensor Manager cannot be created."  I could try with a 2008 box I have, but I'd strognly prefer to connect the GPS to my 2012 R2 machine.

    I am trying to capture NMEA 0183 v2.0 data via RS-232 COM port (old-school hardware).
    Monday, February 22, 2016 2:55 AM
  • Can you share this version of GPS Sensor


    José Ferreira

    Friday, October 27, 2017 5:52 PM
  • I have some issues with driver of version
    Friday, October 27, 2017 5:55 PM