[chirp_devel] [PATCH] [UV-5R] UV-82HP (An error has occurred, Unexpected response from radio)

Jim Unroe
Tue Sep 20 16:51:01 PDT 2016


# HG changeset patch
# User Jim Unroe <rock.unroe at gmail.com>
# Date 1474414440 14400
# Node ID 094e758be36b3c8c34aff852a2f9770f5773d65a
# Parent  a1b8b53606f6025fc1ad727331837cfc7759f178
[UV-5R] UV-82HP (An error has occurred, Unexpected response from radio)

The "ident" returned by the radios supported by the uv5r.py driver used to be
static. The "ident" of the UV-82HP radio (and possibly other recent Baofeng
radios) now changes based on the band limit settings. When setting a band limit
to "1" or and value ending in "01" (101, 201, 301, etc.), the value ends up in
the "ident" and is stripped by the code that was added to support the UV-6 with
the longer 12 byte "ident".

This patch uses a different strategy to support the UV-6 with longer "ident"
restoring the use of any selectable band limit value.

Bug #3987

diff -r a1b8b53606f6 -r 094e758be36b chirp/drivers/uv5r.py
--- a/chirp/drivers/uv5r.py	Sat Sep 10 11:34:01 2016 -0400
+++ b/chirp/drivers/uv5r.py	Tue Sep 20 19:34:00 2016 -0400
@@ -426,26 +426,28 @@
     # Ok, get the response
     ident = ""
     for i in range(1, 13):
-        response = serial.read(1)
-        # discard any bytes containing "\x01" and keep the rest
-        if response != "\x01":
-            ident += response
+        byte = serial.read(1)
+        response += byte
         # stop reading once the last byte ("\xdd") is encountered
-        if response == "\xdd":
+        if byte == "\xdd":
             break
 
     # check if response is OK
-    if len(ident) != 8 or not ident.startswith("\xaa"):
+    if len(response) in [8, 12]:
+        # DEBUG
+        LOG.info("Valid response, got this:")
+        LOG.debug(util.hexprint(response))
+        if len(response) == 12:
+            ident = response[0] + response[3] + response[5] + response[7:]
+        else:
+            ident = response
+    else:
         # bad response
         msg = "Unexpected response, got this:"
-        msg += util.hexprint(ident)
+        msg += util.hexprint(response)
         LOG.debug(msg)
         raise errors.RadioError("Unexpected response from radio.")
 
-    # DEBUG
-    LOG.info("Valid response, got this:")
-    LOG.debug(util.hexprint(ident))
-
     serial.write("\x06")
     ack = serial.read(1)
     if ack != "\x06":



More information about the chirp_devel mailing list