summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2009-01-21 21:39:01 +0000
committerEric S. Raymond <esr@thyrsus.com>2009-01-21 21:39:01 +0000
commitf64be0b287d2a173bb5557d76b3fea4c632b5f81 (patch)
tree562803ca6d6ede874d95c6a3b8d74a503e720270
parentfa813f85e090251419ef762d682d232f4646f614 (diff)
downloadgpsd-f64be0b287d2a173bb5557d76b3fea4c632b5f81.tar.gz
Include the -b glitch in the hardware table.
-rw-r--r--gpscap.ini36
-rw-r--r--gpscap.py2
-rw-r--r--www/gps_report.cgi10
-rw-r--r--www/hardware-head.html25
-rw-r--r--www/noconfigure.pngbin0 -> 533 bytes
-rw-r--r--www/upstream-bugs.html21
6 files changed, 60 insertions, 34 deletions
diff --git a/gpscap.ini b/gpscap.ini
index 0323a36b..3feded6b 100644
--- a/gpscap.ini
+++ b/gpscap.ini
@@ -5,7 +5,7 @@
#
# Each section map have the following capabilities
#
-# type = "engine", "vendor", or "device"
+# type = "engine", "vendor", or "device"
# description = Human-readable description of this item
# packaging = A device's form factor
# reference = URL to technical documentation, or at least a spec sheet
@@ -16,11 +16,11 @@
# subtype = engine subtype or firmware revision level
# interfaces = interface types: USB, RS232, Bluetooth, CF, TTL. May be a list.
# usbchip = USB I/O chipset
-# pps = supports pulse-per-second precision time reporting
-# btglitch = has bluetooth glitch (requires -b option)
+# pps = supports pulse-per-second precision time reporting
+# noconfigure = can be bricked by baud-rate changes (requires -b option)
# tested = last gpsd tested, or "regression" if we have a test load
-# nmea = NMEA version this emits, if known
-# notes = Miscellaneous notes on this item. To be interpreted as HTML.
+# nmea = NMEA version this emits, if known
+# notes = Miscellaneous notes on this item. To be interpreted as HTML.
# status = excellent, good, fair, poor, broken, other
# discontinued = If present, product has been discontinued
#
@@ -313,7 +313,7 @@ vendor = Altina
packaging = handset
reference = http://www.altina.com/produkty.php?destCatId=&mainCatId=13&subCatId=&prId=19
interfaces = Bluetooth
-btglitch = yes
+noconfigure = True
tested = 2.35
uses = SiRF-3
notes = Requires the "-b" flag to prevent mode switching. If the receiver locks
@@ -372,7 +372,7 @@ reference = http://www.cpit.com/en/GP-27.html
uses = Nemerix
interfaces = Bluetooth
tested = 2.28
-btglitch = yes
+noconfigure = True
notes = Reported by Tobias Minich &lt;belgabor&#x40;gmx.de&gt; <ul>
<li>There are proprietary PNMRX{30[0124],603} sentences that are only sent
on change or by request</li>
@@ -442,7 +442,7 @@ packaging = GPS mouse
reference = http://www.eurotronic.net/products/produktdetails/gps_receiver.html
uses = SiRF-3
interfaces = Bluetooth
-btglitch = yes
+noconfigure = True
tested = regression
notes = Requires "-b" ... I had to totally drain the battery of the device
and let it rest for a few days before i was able to use it again
@@ -815,7 +815,7 @@ packaging = GPS mouse
reference = http://www.holux.com.tw/Temp%20web/GR-230.html
uses = SiRF-2
interfaces = Bluetooth
-btglitch = yes
+noconfigure = True
tested = 2.19
nmea = 2.2
discontinued = True
@@ -853,7 +853,7 @@ packaging = GPS mouse
reference = http://www.holux.com/JCore/en/support/DLF.jsp?DLU=http://www1.holux.com.tw:8080/JCore/UploadFile/79754.pdf
uses = SiRF-3
interfaces = Bluetooth, USB
-btglitch = yes
+noconfigure = True
tested = 2.36
status = poor
nmea = 2.2
@@ -868,7 +868,7 @@ reference = http://www.holux.com/JCore/en/products/products_content.jsp?pno=341
uses = MKT
interfaces = Bluetooth, USB
usbchip = CP2101
-btglitch = yes
+noconfigure = True
tested = 2.37
notes = gpsd crashes the device when autoprobing @ baud rate 9600 (unless
'-b'/broken-device-safety is enabled - need to unplug/reset the device).
@@ -1052,7 +1052,7 @@ packaging = GPS mouse
reference = http://www.navilock.de/produkte/gruppen/3/Kabel_Empfaenger/61371_NL-209PU.html?show=spec
uses = Sony CXD2951
interfaces = USB, RS232, Bluetooth
-btglitch = yes
+noconfigure = True
usbchip = pl2303
tested = 2.35
nmea = 2.2
@@ -1154,7 +1154,7 @@ packaging = GPS mouse
reference = http://www.phonix.it/html/catalogo_dettaglio.cfm?idProducts=E09B5AB7-BCDF-DF66-24853E2B4680AB2C
uses = SiRF-2
interfaces = Bluetooth
-btglitch = yes
+noconfigure = True
tested = 2.34
nmea = 2.2
notes = Reported by Sebastiano Zabert<br/>
@@ -1413,15 +1413,17 @@ vendor = UniTraq
packaging = GPS mouse
reference = http://www.wintec.com.tw/en/support_detail.php?cate_id=11&support_id=14
uses = Sony CXD2951
-btglitch = yes
+noconfigure = True
interfaces = USB
usbchip = Silicon Laboratories CP2101
tested = 2.35
nmea = 3.0
notes = This receiver operates as a generic NMEA device, the Sony
binary protocol is unsupported. The receiver seems to lock up if
- too much data is thrown at it (ie. gpsd probes) thus it seems to
- require a read-only (-b) instance of gpsd. Reported by Ian
- Darwin &lt;ian&#x40;darwinsys.com&gt;
+ too much data is thrown at it (ie. gpsd probes) thus it may
+ require a read-only (-b) instance of gpsd. (We say 'may' because
+ more recent instances of gpsd break the probe writes into pieces
+ interleaved with read, and may no longer trigger this problem)
+ Reported by Ian Darwin &lt;ian&#x40;darwinsys.com&gt;
diff --git a/gpscap.py b/gpscap.py
index a86cca74..100120e4 100644
--- a/gpscap.py
+++ b/gpscap.py
@@ -109,6 +109,8 @@ class GPSDictionary(ConfigParser.RawConfigParser):
testfield += "<img title='Have regression test' src='regression.png'>"
else:
testfield += tested
+ if self.has_option(dev, "noconfigure"):
+ testfield += "<img title='Requires -b option' src='noconfigure.png'>"
if self.get(dev, "status") == "excellent":
testfield += "<img src='star.png'><img src='star.png'><img src='star.png'><img src='star.png'>"
elif self.get(dev, "status") == "good":
diff --git a/www/gps_report.cgi b/www/gps_report.cgi
index 0664d199..9b1af694 100644
--- a/www/gps_report.cgi
+++ b/www/gps_report.cgi
@@ -33,7 +33,7 @@ if (hasNeededElements($query) && $query->param("action") eq "Send Report"){
print M "Remote: ${ENV{'REMOTE_ADDR'}}:${ENV{'REMOTE_PORT'}}\n\n";
printf M ("[%s]\n", $query->param('model'));
foreach $var ( sort qw(submitter vendor packaging techdoc chipset
- firmware nmea interface tested rating btglitch notes
+ firmware nmea interface tested rating noconfigure notes
location date interval leader sample_notes)){
$val = $query->param($var);
printf M ("\t%s = %s\n", $var, $val) if (defined($val) && $val);
@@ -233,7 +233,7 @@ print $query->radio_group(-name=>'rating',
-linebreak=>'true');
print "Does the device break if probed or speed switched? " .
- $query->checkbox_group(-name=>'btglitch',
+ $query->checkbox_group(-name=>'noconfigure',
-values=>['yes'],
-defaults=>[]);
@@ -429,10 +429,10 @@ if ($query->param("rating")) {
} else {
print "No GPSD compatiblity specified.<br/>\n";
}
-if ($query->param("btglitch")) {
- print "Device needs the 'bluetooth hack'<br>\n";
+if ($query->param("noconfigure")) {
+ print "Device can be sent catatonic by baud-rate changes<br>\n";
} else {
- print "Device doesn't need the 'bluetooth hack'<br>\n";
+ print "Device handles baud-rate changes correctly<br>\n";
}
print "</td><td align='center'>";
diff --git a/www/hardware-head.html b/www/hardware-head.html
index 228e4658..4f1c775d 100644
--- a/www/hardware-head.html
+++ b/www/hardware-head.html
@@ -143,19 +143,32 @@ reports frequently have values that are wrong or nonsense.</li>
<li><img src="bomb.png"> marks devices which are <b>Broken</b>;
gpsd frequently fails to recognize the device at all.</li>
-<li><img src="discontinued.png"/> marks devices that have been
-discontinued by their manufacturers.</li>
+<li><img src="noconfigure.png"/> marks devices that needed the
+<tt>gpsd -b</tt> option when tested. Usually these are Bluetooth
+devices with defective firmware that does not handle baud-rate changes
+properly. Some poorly-designed USB devices choke if they are fed too
+many probe strings; these may wortk better with recent versions of
+<tt>gpsd</tt>, which interleaves probe writes with the first few
+packet reads.</li>
<li><img src="regression.png"/> marks devices for which we have a
regression-test load. These are checked on every release.</li>
+
+<li><img src="discontinued.png"/> marks devices that have been
+discontinued by their manufacturers.</li>
</ul></p>
-<p>Note that in most cases, poor ratings reflect problems not in
-<tt>gpsd</tt> but rather in the device design and firmware.</p>
+<p>Note that in most cases (including the <img src="noconfigure.png"/>
+bug), poor ratings reflect problems not in <tt>gpsd</tt> but rather in
+device design and firmware so badly botched that <tt>gpsd</tt> cannot
+compensate.</p>
<!-- Note: The CGI lives offsite because Berlios blocks outbound mail -->
-<p>Please help us extend this table with new devices by filling out
-<a href="https://www.mainframe.cx/cgi-bin/gps_report.cgi">this form</a>.</p>
+<p>This table is generated from a capability database in the
+<code>gpsd</code> source tree. Please help us enrich the database with
+new devices by filling out <a
+href="https://www.mainframe.cx/cgi-bin/gps_report.cgi">this
+form</a>.</p>
<div>&nbsp;</div>
diff --git a/www/noconfigure.png b/www/noconfigure.png
new file mode 100644
index 00000000..217e33ba
--- /dev/null
+++ b/www/noconfigure.png
Binary files differ
diff --git a/www/upstream-bugs.html b/www/upstream-bugs.html
index ea68a7dd..b9e71894 100644
--- a/www/upstream-bugs.html
+++ b/www/upstream-bugs.html
@@ -56,7 +56,7 @@ maintainer, we've tried to kick these upstream.</p>
<h1>Links to Open User-Visible Problems</h1>
<ul>
-<li><a href="#bluetooth">Firmware problems in some Bluetooth devices can hang them</a></li>
+<li><a href="#bluetooth">Firmware problems in some Bluetooth and USB devices can hang them</a></li>
<li><a href="#pl2303">Linux pl2303 driver on openwrt 2.4 kernel can hang when device is read at unexpected speed</a></li>
<li><a href="#pthread_create">pthread_create() fails to return when called in background</a></li>
</ul>
@@ -86,7 +86,7 @@ with Fedora Core 5 was buggy.</a></li>
<h1>Open User-Visible Problems</h1>
-<h2 id="bluetooth">Firmware problems in some Bluetooth devices can hang them</h2>
+<h2 id="bluetooth">Firmware problems in some Bluetooth and USB devices can hang them</h2>
<p>The baudrate-hunting code in <code>gpsd</code> tickles a serious
firmware bug on some some Bluetooth devices, notably those shipped by
@@ -98,12 +98,21 @@ unique to <code>gpsd</code> - windows users are warned against using
SiRFdemo's "Synchronize Protocol/Baud Rate" option on bluetooth devices.</p>
<p>If this happens, you can sometimes recover by repeatedly sending
-reset messages using <code>gpsctl</p>. The only guaranteed fix is
-to open the case and unsolder the backup battery so the chip forgets
-its configuration settings.</p>
+reset messages using <code>gpsctl</p>. The only guaranteed fix is to
+drain the battery backing up the GPS's settings; in extreme cases, you
+may have to open the case and unsolder the backup battery so the chip
+forgets its configuration settings.</p>
+
+<p>A separate bug with less severe symptoms afflicts some USB devices.
+The probe strings <tt>gpsd</tt> sends in orderv to determuine device
+type and subtype may be more than a device can handle, causing it to
+hang; power-cycling should fix this. Newer versions of <tt>gpsd</tt>
+break up the probe writes into smaller pieces, interleaving them with
+the first few packet reads, so they are far less likely to ttrigger
+this bug.</p>
<p>Use the -b option of gpsd to prevent it from trying to reconfigure
-your GPS; this will avoid the bug.</p>
+your GPS; this will avoid both problems.</p>
<h2 id="pl2303">Linux pl2303 driver on openwrt 2.4 kernel can hang when device is read at unexpected speed</h2>