Subject: kern/27197: Add support for Pharos/Microsoft GPS
To: None <gnats-bugs@gnats.NetBSD.org>
From: None <paul@Plectere.com>
List: netbsd-bugs
Date: 10/08/2004 15:48:12
>Number:         27197
>Category:       kern
>Synopsis:       the Pharos/Microsoft GPS changes the "standard" devID number.
>Confidential:   no
>Severity:       non-critical
>Priority:       high
>Responsible:    kern-bug-people
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Sat Oct 09 19:05:00 UTC 2004
>Closed-Date:
>Last-Modified:
>Originator:     Paul Shupak
>Release:        NetBSD 2.99.9
>Organization:
	
>Environment:
	
	
System: NetBSD cobalt 2.99.9 NetBSD 2.99.9 (COBALT-$Revision: 1.4 $) #727: Thu Oct  7 17:37:08 PDT 2004  paul@svcs:/sys/arch/i386/compile/COBALT i386
Architecture: i386
Machine: i386
>Description:
	
	The Pharos GPS units use the Prolific 2303x USB-Serial bridge chip.
The Microsoft version (comes with Streets & Trips 2005) changes the device
identifier to 0xaaa0 (AFAIK, bought directly, the Pharos uses the typical
identifier of 0x2303 - an already covered base).  At $100 street price, $129
retail list price and $60 employee discount price (No, I'm not a MS employee),
it is the cheapest available 12-channel GPS that speaks NEMA out of the box
(It actually defaults to 1 sec. reporting enabled) and (of course) JUST
WORKS with "ntpd".
	Only problem - Not supported yet (well, and what to do with the MS
software).
	NOTE:  There are reports that some units of at least one flavor of
the MS USB IntelliMouse uses the same chip and ID (from a Pharos FAQ at
their site), but that only invalidates the comments, the IntelliMouse
should work also.
>How-To-Repeat:
	
	Plug in a Pharos GPS from Streets and Trips 2005.  Look at the
kernel attach ugenX while reporting a Prolific serial device.
>Fix:
	
	The following patches to src/sys/dev/usb/usbdevs and to
src/sys/dev/usb/uplcom.c add support (and of course, you'll need
to change your ntp.conf or whatever the intended application(s)'s
files are).

Index: usbdevs
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/usbdevs,v
retrieving revision 1.378
diff -c -r1.378 usbdevs
*** usbdevs	7 Jul 2004 21:54:21 -0000	1.378
--- usbdevs	8 Oct 2004 22:27:16 -0000
***************
*** 1361,1366 ****
--- 1361,1367 ----
  product PROLIFIC PL2303 	0x2303  PL2303 Serial adapter (ATEN/IOGEAR UC232A)
  product PROLIFIC PL2305		0x2305	Parallel printer adapter
  product PROLIFIC ATAPI4		0x2307	ATAPI-4 Bridge Controller
+ product PROLIFIC PL2303X 	0xaaa0  PL2303 Serial adapter (Pharos GPS - Microsoft Version)
  
  /* Putercom products */
  product PUTERCOM UPA100		0x047e	USB-1284 BRIDGE
Index: uplcom.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/uplcom.c,v
retrieving revision 1.39
diff -c -r1.39 uplcom.c
*** uplcom.c	13 Sep 2004 12:55:49 -0000	1.39
--- uplcom.c	8 Oct 2004 22:27:17 -0000
***************
*** 183,188 ****
--- 183,190 ----
  	{ USB_VENDOR_HAL, USB_PRODUCT_HAL_IMR001 },
  	/* Sitecom USB to serial cable */
  	{ USB_VENDOR_SITECOM, USB_PRODUCT_SITECOM_SERIAL },
+ 	/* Pharos USB GPS - Microsoft version */
+ 	{ USB_VENDOR_PROLIFIC, USB_PRODUCT_PROLIFIC_PL2303X },
  };
  #define uplcom_lookup(v, p) usb_lookup(uplcom_devs, v, p)
  
>Release-Note:
>Audit-Trail:
>Unformatted: