<div dir="ltr"><div class="gmail_quote"><div dir="ltr"><p>Hi Ron,</p><p>I looked at the port capture when I got my UV8D-A, and finally just figured out the checksums with the help of your email. Thanks! :)</p><p>The model I have is UV8D-A. It may be different than the non &#39;a&#39; version. This is my ID capture:<br></p><p dir="ltr">
</p><pre><p><span>000046: Write Request (DOWN), 12.09.2014 21:03:31.235 +0.0 (1. Device: Prolific USB-to-Serial Comm Port (COM3))
</span>Buffer size: 0x5 bytes
</p><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td valign="top"><pre> 7D 80 FF 00 7F</pre></td>
<td valign="top"><pre>}€ÿ. </pre></td></tr></tbody></table><span>000049: Read Request (UP), 12.09.2014 21:03:31.240 +0.005 (1. Device: Prolific USB-to-Serial Comm Port (COM3))
</span>Buffer size: 0x30 bytes
Status: 0x00000000
<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td valign="top"><pre> 7D 80 00 2B 4B 47 2D 55 56 38 44 2D 41 00 01 02
 62 5A 00 03 19 74 06 02 62 5A 00 03 19 74 06 00
 CC 77 C0 01 0B 06 66 00 CC 77 C0 01 0B 06 66 9E</pre></td>
<td valign="top"><pre>}€.+KG-UV8D-A...
bZ...t..bZ...t..
ÌwÀ...f.ÌwÀ...fž</pre></td></tr></tbody></table></pre><div class="gmail_quote">We may encounter some terminology &#39;friction&#39;, seeing as how you were likely taught proper English across the big pond from where I learned my wronglish. I apologize in advance...<span class=""><br><br>On Sep 11, 2014 8:37 AM, &quot;Ron Wellsted&quot; &lt;<a href="mailto:ron@wellsted.org.uk" target="_blank">ron@wellsted.org.uk</a>&gt; wrote: <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
A Gotcha: the first identify packet returns a bad checksum, subsequent<br>
attempts return the correct checksum... (well it does on my radio!)<br>
<br></blockquote></span><div>The factory software initially does two consecutive identify reads, with the only difference being the checksums. I initially suspected the dual VFO nature of the radio, and you have since discovered that the first ID read checksums incorrectly. So, I wouldn&#39;t worry about that, just double ID in CHIRP, or don&#39;t bother to checksum the ID frame.<br><br></div><div>Channel memory structure sussed out so far:<br></div><div>0x0900:0x477f  channel data 000:199, 0x10 length blocks, FF nulled.<br></div><div>0x4780:0x66bf  channel names 000:199, 0x8 length blocks, 00 padded.<br></div><div><br></div><div>My send read request looks like this (and the breakdown):<br>
<table cols="3" border="0" cellspacing="0">
        <colgroup width="25"></colgroup>
        <colgroup width="157"></colgroup>
        <colgroup width="95"></colgroup>
        <tbody><tr>
                <td align="LEFT" height="18"></td>
                <td align="LEFT">7d 82 ff 03 09 00 40 cd</td>
                <td align="LEFT">chan001:004data<br></td></tr><tr><td align="LEFT" height="18"><br></td>
                <td align="LEFT">7d 82 ff</td>
                <td align="LEFT">read req</td>
        </tr>
        <tr>
                <td align="LEFT" height="17"><br></td>
                <td align="LEFT">           03</td>
                <td align="LEFT">count<br></td>
        </tr>
        <tr>
                <td align="LEFT" height="18"><br></td>
                <td align="LEFT">                09 00</td>
                <td align="LEFT">mem location</td>
        </tr>
        <tr>
                <td align="LEFT" height="17"><br></td>
                <td align="LEFT">                                                40</td>
                <td align="LEFT">bytes requested</td>
        </tr>
        <tr>
                <td align="LEFT" height="18"><br></td>
                <td align="LEFT">                            cd</td>
                <td align="LEFT">checksum</td>
        </tr>
</tbody></table>
And the reply:<br>
<table cols="3" border="0" cellspacing="0">
        <colgroup width="25"></colgroup>
        <colgroup width="157"></colgroup>
        <colgroup width="207"></colgroup>
        <tbody><tr>
                <td align="LEFT" height="17"><br></td>
                <td align="LEFT">7d 82 00 42 09 00 ... 1d</td>
                <td align="LEFT">chan001:004 data<br></td>
        </tr>
        <tr>
                <td align="LEFT" height="18"><br></td>
                <td align="LEFT">7d 82 00</td>
                <td align="LEFT">read ack</td>
        </tr>
        <tr>
                <td align="LEFT" height="18"><br></td>
                <td align="LEFT">                         42</td>
                <td align="LEFT">count<br></td>
        </tr>
        <tr>
                <td align="LEFT" height="18"><br></td>
                <td align="LEFT">                  09 00</td>
                <td align="LEFT">mem location</td>
        </tr>
        <tr>
                <td align="LEFT" height="17"><br></td>
                <td align="LEFT">                          ...</td>
                <td align="LEFT">data payload<br></td>
        </tr>
        <tr>
                <td align="LEFT" height="18"><br></td>
                <td align="LEFT">                               1d</td>
                <td align="LEFT">checksum</td>
        </tr>
</tbody></table>
<br></div><div>When I get around to learning Python, I might be able to make something useful happen in CHIRP.<span class="HOEnZb"><font color="#888888"><br><br></font></span></div><span class="HOEnZb"><font color="#888888"><div>-Dana<br></div><div><a href="mailto:ks0rr@reasonablerepairs.com" target="_blank">ks0rr@reasonablerepairs.com</a><br></div></font></span></div>
</div>
</div><br></div>