hall-of-shame.html 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <!DOCTYPE HTML>
  2. <html lang="en">
  3. <head lang="en">
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. <meta name="Description" content="Naming and shaming GPS vendors for especially botched designs">
  6. <meta name="Keywords" content="GPS, gpsd, shame">
  7. <meta name="Author" content="Eric S. Raymond">
  8. <meta name="Revised" content="9 April 2015">
  9. <meta name="robots" content="index,follow">
  10. <link rel="stylesheet" href="main.css" type="text/css">
  11. <title>GPS Hall of Shame</title>
  12. </head>
  13. <body>
  14. <div id="Header">
  15. GPS Hall of Shame
  16. </div>
  17. <div id="Menu">
  18. <img src="gpsd-logo-small.png" alt="Small gpsd Logo" height="126"
  19. width="105"><br>
  20. <a href="index.html">Home</a><br>
  21. <a href="index.html#news">News</a><br>
  22. <a href="index.html#downloads">Downloads</a><br>
  23. <a href="index.html#mailing-lists">Mailing lists</a><br>
  24. <a href="index.html#documentation">Documentation</a><br>
  25. <a href="faq.html">FAQ</a><br>
  26. <a href="xgps-sample.html">Screenshots</a><br>
  27. <a href="index.html#recipes">Recipes</a><br>
  28. <a href="index.html#others">Other GPSDs</a><br>
  29. <a href="hardware.html">Hardware</a><br>
  30. <a href="for-vendors.html">For GPS Vendors</a><br>
  31. <a href="wishlist.html">Wish List</a><br>
  32. Hall of Shame<br>
  33. <a href="troubleshooting.html">Troubleshooting Guide</a><br>
  34. <a href="hacking.html">Hacker's Guide</a><br>
  35. <a href="protocol-transition.html">Application Compatibility</a>
  36. <a href="references.html">References</a><br>
  37. <a href="history.html">History</a><br>
  38. <a href="future.html">Future</a><br>
  39. <div>&nbsp;</div>
  40. <a href='http://www.catb.org/hacker-emblem/'><img
  41. src='glider.png' alt='hacker emblem' height="55" width="55"></a><br>
  42. <script src="https://www.openhub.net/p/3944/widgets/project_thin_badge.js"></script>
  43. <hr>
  44. <script><!--
  45. google_ad_client = "pub-1458586455084261";
  46. google_ad_width = 160;
  47. google_ad_height = 600;
  48. google_ad_format = "160x600_as";
  49. google_ad_type = "text";
  50. google_ad_channel = "";
  51. //--></script>
  52. <script src="https://pagead2.googlesyndication.com/pagead/show_ads.js">
  53. </script>
  54. <hr>
  55. <a href="https://validator.w3.org/check/referer"><img
  56. src="https://www.w3.org/Icons/valid-html401"
  57. alt="Valid HTML 4.01!" height="31" width="88"></a>
  58. </div>
  59. <div id="Content">
  60. <p>The GPS world is full of shoddy, poorly-documented designs. All
  61. too many devices have behaviors that drive the harried maintainers of
  62. <code>gpsd</code> to shake their heads and mutter <q>What were they
  63. <em>thinking</em>?</q></p>
  64. <p>This page goes beyond the merely ordinary and commemorates the
  65. really <em>special</em> blunders &mdash; bugs and design errors so
  66. consummately brain-dead that the only possible responses are either
  67. rage or helpless laughter.</p>
  68. <p>By naming and shaming the vendors who perpetrated these egregious
  69. blunders, we hope to exert some pressure for higher quality standards
  70. in the future.</p>
  71. <p>Your contributions are welcome. If you're describing a firmware
  72. bug, it's best if you can identify the firmware version or range of
  73. versions it applies to.</p>
  74. <h2>Implementation blunders</h2>
  75. <p>These are the screwups that lead us to wonder if the GPS chipset
  76. vendors ever actually test their hardware.</p>
  77. <ul>
  78. <li><p>The iTalk protocol from Fastrax Inc. sometimes emits well-formed,
  79. checksummed binary packets in which the length is incorrect. If you
  80. trust it and read the number of bytes it tells you to, you'll land in
  81. the middle of the next packet.</p></li>
  82. <li><p>Wintec has modified the firmware on the WBT200 (and probably the
  83. WBT100 as well) to disable iTalk support, thus making more room in the
  84. flash memory for logging. This wouldn't be a problem if they had also
  85. disabled the protocol switch command. Users attempting to switch their
  86. Wintec receivers to iTalk will find their receiver is left in limbo;
  87. not emitting iTalk, and unable to switch back to NMEA either. A hard
  88. reset by removing all power sources (including onboard battery backup)
  89. is the only way to get the receiver to communicate again.</p></li>
  90. <li><p>Some Garmin chips issue a bogus length field, too. This from the
  91. outfit that likes to tout itself as the industry leader!</p></li>
  92. <li><p>The SiRF-IV chipset has a tendency to freeze when switched from
  93. binary to NMEA mode (powering it off unjams it). This is some kind of
  94. race condition in the firmware that cannot be fixed by waiting on
  95. command ACKs; we have tried that.</p></li>
  96. </ul>
  97. <h2>Documentation blunders</h2>
  98. <p>The best evidence that the GPS industry is run by morons is the
  99. quality (or, rather, utter <em>lack</em> of quality) of their chipset
  100. documentation. You would think they'd have figured out by now that
  101. good and readily available documentation, making it easy for others to
  102. interface to their hardware, will sell more hardware. But no; most
  103. vendors make documentation difficult to get, and it tends to be both
  104. incomplete and vague when you get it. A few vendors go above and
  105. beyond the normal stupidity...</p>
  106. <ul>
  107. <li><p>Some versions of the SiRF protocol manual, including 1.4, describe the
  108. data widths in the time portion of the Geodetic Navigation Information
  109. packet incorrectly. If you trust them, you will extract garbage from
  110. good packets.</p></li>
  111. <li><p>Qualcomm makes <em>no</em> documentation available on the Sirfstar V
  112. GNSS.</p></li>
  113. <li><p>The Garmin GPS chipset issues a number of important messages
  114. that Garmin has <em>explicitly refused</em> to document.</p></li>
  115. </ul>
  116. <h2>Design blunders</h2>
  117. <p>GPS chipset vendors love their proprietary binary protocols. There
  118. is some excuse for this, given that the industry <q>standard</q> NMEA
  119. 0183 grew by a series of kluges and accretions and would probably have
  120. turned out better if it had been designed by chimpanzees on crack
  121. &mdash; but you'd think the vendors would at least make sure that
  122. their binary protocols are a functional superset of NMEA. But no; in
  123. the laugh-one-minute, puke-the-next world of GPS chipsets, it ain't
  124. so...</p>
  125. <ul>
  126. <li><p>SiRF binary mode delivers HDOP but not PDOP or VDOP. SiRFs in
  127. NMEA mode deliver all three.</p></li>
  128. <li><p>EverMore NMEA delivers UTC time. EverMore binary protocol delivers
  129. only GPS time, which has a time-varying offset from UTC &mdash; and no
  130. way to query the offset.</p></li>
  131. </ul>
  132. <hr>
  133. <script src="datestamp.js"></script>
  134. </div>
  135. </body>
  136. </html>