ch04s08.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Liar! Liar! Pants on Fire!</title><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><meta name="keywords" content="Intellon, Atheros, Qualcomm, HomePlug, powerline, communications, INT6000, INT6300, INT6400, AR7400, AR7420"><link rel="home" href="index.html" title="Qualcomm Atheros Open Powerline Toolkit"><link rel="up" href="ch04.html" title="Chapter 4.  Firmware"><link rel="prev" href="ch04s07.html" title="Every Little Bit Hurts"><link rel="next" href="ch04s09.html" title="But wait! There's more ..."></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">
  2. Liar! Liar! Pants on Fire!
  3. </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04s07.html">Prev</a> </td><th width="60%" align="center">Chapter 4. 
  4. Firmware
  5. </th><td width="20%" align="right"> <a accesskey="n" href="ch04s09.html">Next</a></td></tr></table><hr></div><div class="section" title="Liar! Liar! Pants on Fire!"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="firmware-caveats-2"></a>
  6. Liar! Liar! Pants on Fire!
  7. </h2></div></div></div><p>
  8. It is important to use the right Boot from Host sequence for each type of Atheros device. This means that you should query the device using a <code class="varname">VS_SW_VER</code> message beforehand to determine or confirm the device type. Although this should be a simple operation, there have been several changes that complicate matters.
  9. </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
  10. The <span class="productname">INT6300</span>™ <span class="application">Bootloader</span> incorrectly identifies the chipset as an <span class="productname">INT6000</span>™ chipset in the <code class="varname">MDEVICEID</code> field of the <code class="varname">VS_SW_VER</code> message.
  11. </p></li><li class="listitem"><p>
  12. The <span class="productname">AR7400</span>™ <span class="application">Bootloader</span> incorrectly identifies the chipset as an <span class="productname">INT6400</span>™ chipset in the <code class="varname">MDEVICEID</code> field of the <code class="varname">VS_SW_VER</code> message.
  13. </p></li><li class="listitem"><p>
  14. The <span class="application">Bootloader</span>, for <span class="productname">INT6400</span>™ chipsets and later, returns two additional field, <code class="varname">IDENT</code> and <code class="varname">STEP_NUMBER</code> in the <code class="varname">VS_SW_VER</code> confirmation message. These fields, the hardware identifier and step number, are correct but are not returned in earlier chipsets.
  15. </p></li></ol></div><p>
  16. The table below illustrates what is reported by various firmware, in the <code class="varname">DEVICEID</code> field of the <code class="varname">VS_SW_VER</code> message, on each type of hardware platform.
  17. </p><div class="table"><a name="idp21274104"></a><p class="title"><b>Table 4.2. 
  18. Legacy Device Identification
  19. </b></p><div class="table-contents"><table summary="
  20. Legacy Device Identification
  21. " border="1"><colgroup><col class="bootload-device"><col class="bootload-platform"><col class="bootload-softloader"><col class="bootload-bootloader"><col class="bootload-firmware"></colgroup><thead><tr><th>
  22. Chipset
  23. </th><th>
  24. DEVICEID/IDENT (Bootloader)
  25. </th><th>
  26. MVERSION (Bootloader)
  27. </th><th>
  28. DEVICEID/IDENT (Firmware)
  29. </th><th>
  30. MVERSION (Firmware)
  31. </th></tr></thead><tbody><tr><td>
  32. INT6000
  33. </td><td>
  34. 0x01 / 0x00000042
  35. </td><td>
  36. BootLoader
  37. </td><td>
  38. 0x01 / na
  39. </td><td>
  40. INT6000-MAC-0-0-3213-1206-20071224-FINAL
  41. </td></tr><tr><td>
  42. INT6300
  43. </td><td>
  44. 0x02 / 0x00006300
  45. </td><td>
  46. BootLoader
  47. </td><td>
  48. 0x02 / na
  49. </td><td>
  50. INT6300-MAC-0-0-4203-00-4089-20091105-FINAL
  51. </td></tr><tr><td>
  52. INT6400
  53. </td><td>
  54. 0x03 / 0x00006400
  55. </td><td>
  56. BootLoader
  57. </td><td>
  58. 0x03 / na
  59. </td><td>
  60. INT6400-MAC-4-3-4304-01-4397-20100924-FINAL
  61. </td></tr><tr><td>
  62. INT7400
  63. </td><td>
  64. 0x03 / 0x00007400
  65. </td><td>
  66. BootLoader
  67. </td><td>
  68. 0x04 / na
  69. </td><td>
  70. INT7400-MAC-5-2-5213-01-1027-20110428-FINAL
  71. </td></tr><tr><td>
  72. INT7450
  73. </td><td>
  74. 0x03 / 0x0F001D1A
  75. </td><td>
  76. BootLoader
  77. </td><td>
  78. 0x20 / 0x00001D1A
  79. </td><td>
  80. QCA7450-MAC-5-2-5213-01-1027-20110428-FINAL
  81. </td></tr><tr><td>
  82. INT7451
  83. </td><td>
  84. 0x03 / 0x00007400
  85. </td><td>
  86. BootLoader
  87. </td><td>
  88. 0x20 / 0x0E001D1A
  89. </td><td>
  90. QCA7451-MAC-5-2-5213-01-1027-20110428-FINAL
  91. </td></tr><tr><td>
  92. AR6405
  93. </td><td>
  94. 0x03 / 0x00006400
  95. </td><td>
  96. BootLoader
  97. </td><td>
  98. 0x05 / na
  99. </td><td>
  100. INT6405-MAC-4-3-4304-01-4397-20100924-FINAL
  101. </td></tr><tr><td>
  102. AR7420
  103. </td><td>
  104. 0x05 / 0x001CFCFC
  105. </td><td>
  106. BootLoader
  107. </td><td>
  108. 0x20 / 0x001CFCFC
  109. </td><td>
  110. MAC-QCA7420-2.5.14.2259-23-20110621-FINAL
  111. </td></tr><tr><td>
  112. QCA6410
  113. </td><td>
  114. 0x05 / 0x001B58EC
  115. </td><td>
  116. BootLoader
  117. </td><td>
  118. 0x21 / 0x001B58EC
  119. </td><td>
  120. MAC-QCA6410-2.5.14.2259-23-20110621-FINAL
  121. </td></tr><tr><td>
  122. QCA6411
  123. </td><td>
  124. 0x05 / 0x001B58BC
  125. </td><td>
  126. BootLoader
  127. </td><td>
  128. 0x21 / 0x001B58BC
  129. </td><td>
  130. MAC-QCA6411-2.5.14.2259-23-20110621-FINAL
  131. </td></tr><tr><td>
  132. QCA7000
  133. </td><td>
  134. 0x05 / 0x001B589C
  135. </td><td>
  136. BootLoader
  137. </td><td>
  138. 0x22 / 0x001B589C
  139. </td><td>
  140. MAC-QCA7000-1.4.13.3259-43-20110621-FINAL
  141. </td></tr></tbody></table></div></div><br class="table-break"><p>
  142. To properly detect the correct chipset perform the following steps.
  143. </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
  144. Send a <code class="varname">VS_SW_VER</code> request message from the local host to the local device using the Atheros Local Management Address.
  145. </p></li><li class="listitem"><p>
  146. Read the <code class="varname">VS_SW_VER</code> confirm message returned to the host by the device.
  147. </p></li><li class="listitem"><p>
  148. Extract and save the <code class="varname">MDEVICEID</code> field (a small integer) and the <code class="varname">MVERSION</code> field (a string).
  149. </p></li><li class="listitem"><p>
  150. If the <code class="varname">MVERSION</code> string is <span class="quote">“<span class="quote">SoftLoader</span>”</span> then the <code class="varname">MDEVICEID</code> field is valid.
  151. </p></li><li class="listitem"><p>
  152. If the <code class="varname">MVERSION</code> string is not <span class="quote">“<span class="quote">BootLoader</span>”</span> then the <code class="varname">MDEVICEID</code> field is valid unless it is <code class="constant">0x07</code>. In that case, set the stored <code class="varname">DEVICEID</code> to <code class="constant">0x04</code> to indicate an <span class="productname">AR7400</span>™. Do not inspect the <code class="varname">IDENT</code> field because it does not exist in the firmware version of the <code class="varname">VS_SW_VER</code> message on any platform.
  153. </p></li><li class="listitem"><p>
  154. If the <code class="varname">MDEVICEID</code> field is <code class="constant">1</code>, indicating an <span class="productname">INT6000</span>™, then the chipset is actually an <span class="productname">INT6300</span>™. Set the stored <code class="varname">MDEVICEID</code> to <code class="constant">2</code>, indicating an <span class="productname">INT6300</span>™. Do not inspect the <code class="varname">IDENT</code> field because it does not exist in the <span class="application">BootLoader</span> version of the <code class="varname">VS_SW_VER</code> message for either of these two chipsets.
  155. </p></li><li class="listitem"><p>
  156. If the <code class="varname">MDEVICEID</code> field is <code class="constant">3</code>, indicating an <span class="productname">INT6400</span>™, then the chipset could be either an <span class="productname">INT6300</span>™ or an <span class="productname">AR7400</span>™. Inspect the <code class="varname">IDENT</code> field.
  157. </p></li><li class="listitem"><p>
  158. If the <code class="varname">IDENT</code> field is <code class="constant">0x6400</code>, indicating an <span class="productname">INT6400</span>™, then the stored <code class="varname">MDEVICEID</code> is valid.
  159. </p></li><li class="listitem"><p>
  160. If the <code class="varname">IDENT</code> field is <code class="constant">0x7400</code>, indicating an <span class="productname">AR7400</span>™, then set the stored <code class="varname">MDEVICEID</code> to <code class="constant">4</code>, indicating an <span class="productname">AR7400</span>™.
  161. </p></li></ol></div><p>
  162. Having performed the previous conversions, the expression (<code class="constant">1</code> &lt;&lt; (<code class="varname">DEVICEID</code> - <code class="constant">1</code>)) now indicates the proper <code class="varname">IGNORE</code> bit found in each <acronym class="acronym">NVM</acronym> file header. Unfortunately, this only works for <code class="varname">DeviceID</code> values from <code class="constant">0x01</code> through <code class="constant">0x06</code>. After that, the device identification scheme changes.
  163. </p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04s07.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch04.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch04s09.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">
  164. Every Little Bit Hurts
  165.  </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 
  166. But wait! There's more ...
  167. </td></tr></table></div></body></html>