# HG changeset patch
# User mpoletiek <matthew.poletiek@gmail.com>
# Date 1607661424 21600
#      Thu Dec 10 22:37:04 2020 -0600
# Branch py3
# Node ID 0a5b85781e3d64096fb66ed0f59dd70e9875db22
# Parent  055093bd90da079d927661375df69b1ac71346c6
Fixed more driver syntax errors leftover from Python2

diff --git a/chirp/drivers/alinco.py b/chirp/drivers/alinco.py
--- a/chirp/drivers/alinco.py
+++ b/chirp/drivers/alinco.py
@@ -199,7 +199,7 @@
             self._mmap = self._download(self._memsize)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
         self.process_mmap()
 
@@ -208,7 +208,7 @@
             self._upload(self._memsize)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except (Exception, e):
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
 
     def get_raw_memory(self, number):
diff --git a/chirp/drivers/anytone.py b/chirp/drivers/anytone.py
--- a/chirp/drivers/anytone.py
+++ b/chirp/drivers/anytone.py
@@ -177,7 +177,7 @@
     try:
         radio.pipe.write(data)
         radio.pipe.read(len(data))
-    except Exception, e:
+    except Exception as e:
         LOG.error("Error writing to radio: %s" % e)
         raise errors.RadioError("Unable to write to radio")
 
@@ -185,7 +185,7 @@
 def _read(radio, length):
     try:
         data = radio.pipe.read(length)
-    except Exception, e:
+    except Exception as e:
         LOG.error("Error reading from radio: %s" % e)
         raise errors.RadioError("Unable to read from radio")
 
diff --git a/chirp/drivers/anytone_ht.py b/chirp/drivers/anytone_ht.py
--- a/chirp/drivers/anytone_ht.py
+++ b/chirp/drivers/anytone_ht.py
@@ -233,7 +233,7 @@
 def _echo_write(radio, data):
     try:
         radio.pipe.write(data)
-    except Exception, e:
+    except Exception as e:
         LOG.error("Error writing to radio: %s" % e)
         raise errors.RadioError("Unable to write to radio")
 
@@ -241,7 +241,7 @@
 def _read(radio, length):
     try:
         data = radio.pipe.read(length)
-    except Exception, e:
+    except Exception as e:
         LOG.error("Error reading from radio: %s" % e)
         raise errors.RadioError("Unable to read from radio")
 
@@ -930,7 +930,7 @@
                     else:
                         LOG.debug("Setting %s = %s" % (setting, element.value))
                         setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
 
diff --git a/chirp/drivers/ap510.py b/chirp/drivers/ap510.py
--- a/chirp/drivers/ap510.py
+++ b/chirp/drivers/ap510.py
@@ -380,7 +380,7 @@
             data = download(self)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
 
         # _mmap isn't a Chirp MemoryMap, but since AP510Memory implements
@@ -398,7 +398,7 @@
             upload(self)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
 
     def load_mmap(self, filename):
diff --git a/chirp/drivers/baofeng_common.py b/chirp/drivers/baofeng_common.py
--- a/chirp/drivers/baofeng_common.py
+++ b/chirp/drivers/baofeng_common.py
@@ -164,8 +164,8 @@
         try:
             data = _do_ident(radio, magic)
             return data
-        except errors.RadioError, e:
-            print e
+        except errors.RadioError as e:
+            print (e)
             error = e
             time.sleep(2)
     if error:
@@ -336,7 +336,7 @@
             _upload(self)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             # If anything unexpected happens, make sure we raise
             # a RadioError and log the problem
             LOG.exception('Unexpected error during upload')
@@ -622,7 +622,7 @@
                     elif element.value.get_mutable():
                         LOG.debug("Setting %s = %s" % (setting, element.value))
                         setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
 
@@ -636,6 +636,6 @@
                     value = int(val.get_value() * 10)
                 LOG.debug("Setting fm_presets = %s" % (value))
                 self._memobj.fm_presets = value
-            except Exception, e:
+            except Exception as e:
                 LOG.debug(element.get_name())
                 raise
diff --git a/chirp/drivers/baofeng_uv3r.py b/chirp/drivers/baofeng_uv3r.py
--- a/chirp/drivers/baofeng_uv3r.py
+++ b/chirp/drivers/baofeng_uv3r.py
@@ -51,7 +51,7 @@
     for _i in range(0, 10):
         try:
             return _uv3r_prep(radio)
-        except errors.RadioError, e:
+        except errors.RadioError as e:
             time.sleep(1)
 
     raise e
@@ -64,7 +64,7 @@
         return do_download(radio, 0x0000, 0x0E40, 0x0010)
     except errors.RadioError:
         raise
-    except Exception, e:
+    except Exception as e:
         raise errors.RadioError("Failed to communicate with radio: %s" % e)
 
 
@@ -75,7 +75,7 @@
         return do_upload(radio, 0x0000, 0x0E40, 0x0010)
     except errors.RadioError:
         raise
-    except Exception, e:
+    except Exception as e:
         raise errors.RadioError("Failed to communicate with radio: %s" % e)
 
 
@@ -623,7 +623,7 @@
                     else:
                         LOG.debug("Setting %s = %s" % (setting, element.value))
                         setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
 
@@ -639,7 +639,7 @@
                 LOG.debug("Setting fm_presets[%1i] = %s" % (index, value))
                 setting = self._memobj.fm_presets
                 setting[index] = value
-            except Exception, e:
+            except Exception as e:
                 LOG.debug(element.get_name())
                 raise
 
diff --git a/chirp/drivers/bf-t1.py b/chirp/drivers/bf-t1.py
--- a/chirp/drivers/bf-t1.py
+++ b/chirp/drivers/bf-t1.py
@@ -225,7 +225,7 @@
 
     except errors.RadioError:
         raise
-    except Exception, e:
+    except Exception as e:
         raise errors.RadioError("Error sending Magic to radio:\n%s" % e)
 
 
@@ -561,7 +561,7 @@
             _upload(self)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Error: %s" % e)
 
     def _decode_tone(self, val, inv):
@@ -894,7 +894,7 @@
                     setattr(_settings, name, value)
 
                 LOG.debug("Setting %s: %s" % (name, value))
-            except Exception, e:
+            except Exception as e:
                 LOG.debug(element.get_name())
                 raise
 
diff --git a/chirp/drivers/bj9900.py b/chirp/drivers/bj9900.py
--- a/chirp/drivers/bj9900.py
+++ b/chirp/drivers/bj9900.py
@@ -178,7 +178,7 @@
             self._mmap = self._clone_in()
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
         self.process_mmap()
 
@@ -187,7 +187,7 @@
             self._clone_out()
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
 
     def process_mmap(self):
diff --git a/chirp/drivers/bjuv55.py b/chirp/drivers/bjuv55.py
--- a/chirp/drivers/bjuv55.py
+++ b/chirp/drivers/bjuv55.py
@@ -647,6 +647,6 @@
                 value = int(val.get_value() * 10 - 870)
                 LOG.debug("Setting fm_preset = %s" % (value))
                 self._memobj.fm_preset = value
-            except Exception, e:
+            except Exception as e:
                 LOG.debug(element.get_name())
                 raise
diff --git a/chirp/drivers/fd268.py b/chirp/drivers/fd268.py
--- a/chirp/drivers/fd268.py
+++ b/chirp/drivers/fd268.py
@@ -790,11 +790,11 @@
                         obj = getattr(_mem, sett)
                         setattr(obj, name, element.value)
 
-                    except AttributeError, e:
+                    except AttributeError as e:
                         m = "Setting %s is not in this setting block" % name
                         LOG.debug(m)
 
-            except Exception, e:
+            except Exception as e:
                 LOG.debug(element.get_name())
                 raise
 
diff --git a/chirp/drivers/ft1d.py b/chirp/drivers/ft1d.py
--- a/chirp/drivers/ft1d.py
+++ b/chirp/drivers/ft1d.py
@@ -1890,7 +1890,7 @@
                 except AttributeError as e:
                     LOG.error("Setting %s is not in the memory map: %s" %
                               (element.get_name(), e))
-            except Exception, e:
+            except Exception as e:
                 LOG.debug(element.get_name())
                 raise
 
diff --git a/chirp/drivers/ft2800.py b/chirp/drivers/ft2800.py
--- a/chirp/drivers/ft2800.py
+++ b/chirp/drivers/ft2800.py
@@ -201,7 +201,7 @@
             self._mmap = _download(self)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
         LOG.info("Downloaded in %.2f sec" % (time.time() - start))
         self.process_mmap()
@@ -214,7 +214,7 @@
             _upload(self)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
         LOG.info("Uploaded in %.2f sec" % (time.time() - start))
 
diff --git a/chirp/drivers/ft2900.py b/chirp/drivers/ft2900.py
--- a/chirp/drivers/ft2900.py
+++ b/chirp/drivers/ft2900.py
@@ -537,7 +537,7 @@
             self._mmap = _download(self)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
         LOG.info("Downloaded in %.2f sec" % (time.time() - start))
         self.process_mmap()
@@ -549,7 +549,7 @@
             _upload(self)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
         LOG.info("Uploaded in %.2f sec" % (time.time() - start))
 
@@ -1210,7 +1210,7 @@
                     setattr(_settings, name, value)
 
                 LOG.debug("Setting %s: %s" % (name, value))
-            except Exception, e:
+            except Exception as e:
                 LOG.debug(element.get_name())
                 raise
 
diff --git a/chirp/drivers/ft450d.py b/chirp/drivers/ft450d.py
--- a/chirp/drivers/ft450d.py
+++ b/chirp/drivers/ft450d.py
@@ -499,7 +499,7 @@
             self._mmap = self._clone_in()
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s"
                                     % e)
         self.process_mmap()
@@ -509,7 +509,7 @@
             self._clone_out()
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s"
                                     % e)
 
@@ -1489,6 +1489,6 @@
                     elif element.value.get_mutable():
                         LOG.debug("Setting %s = %s" % (setting, element.value))
                         setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
diff --git a/chirp/drivers/ft50.py b/chirp/drivers/ft50.py
--- a/chirp/drivers/ft50.py
+++ b/chirp/drivers/ft50.py
@@ -586,7 +586,7 @@
 def _clone_out(radio):
     try:
         return __clone_out(radio)
-    except Exception, e:
+    except Exception as e:
         raise errors.RadioError("Failed to communicate with the radio: %s" % e)
 
 
diff --git a/chirp/drivers/ft60.py b/chirp/drivers/ft60.py
--- a/chirp/drivers/ft60.py
+++ b/chirp/drivers/ft60.py
@@ -403,7 +403,7 @@
             self._mmap = _download(self)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
         self.process_mmap()
         self.check_checksums()
@@ -414,7 +414,7 @@
             _upload(self)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
 
     def process_mmap(self):
@@ -716,7 +716,7 @@
                     setattr(_settings, name, value)
 
                 LOG.debug("Setting %s: %s" % (name, value))
-            except Exception, e:
+            except Exception as e:
                 LOG.debug(element.get_name())
                 raise
 
diff --git a/chirp/drivers/ft70.py b/chirp/drivers/ft70.py
--- a/chirp/drivers/ft70.py
+++ b/chirp/drivers/ft70.py
@@ -1162,7 +1162,7 @@
                 except AttributeError as e:
                     LOG.error("Setting %s is not in the memory map: %s" %
                               (element.get_name(), e))
-            except Exception, e:
+            except Exception as e:
                 LOG.debug(element.get_name())
                 raise
 
diff --git a/chirp/drivers/ft7100.py b/chirp/drivers/ft7100.py
--- a/chirp/drivers/ft7100.py
+++ b/chirp/drivers/ft7100.py
@@ -568,7 +568,7 @@
             self._mmap = _download(self)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
         LOG.info("Downloaded in %.2f sec", (time.time() - start))
         self.process_mmap()
@@ -580,7 +580,7 @@
             _upload(self)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
         LOG.info("Uploaded in %.2f sec", (time.time() - start))
 
@@ -1091,7 +1091,7 @@
                     setattr(_overlay, name, value)
 
                 LOG.debug("Setting %s: %s", name, value)
-            except Exception, e:
+            except Exception as e:
                 LOG.debug(element.get_name())
                 raise
 
diff --git a/chirp/drivers/ft8100.py b/chirp/drivers/ft8100.py
--- a/chirp/drivers/ft8100.py
+++ b/chirp/drivers/ft8100.py
@@ -175,7 +175,7 @@
 
         if _mem.duplex == DUPLEX.index("split"):
             tx_freq = int(_mem.offset) * 1000
-            print self.VARIANT, number, tx_freq, mem.freq
+            print (self.VARIANT, number, tx_freq, mem.freq)
             mem.offset = tx_freq - mem.freq
         else:
             mem.offset = int(_mem.offset) * 1000
@@ -189,7 +189,7 @@
         if not self._memobj.enables[byte] & bit and number != 1:
             mem.empty = True
 
-        print 'R', self.VARIANT, number, _mem.baud9600
+        print ('R', self.VARIANT, number, _mem.baud9600)
 
         return mem
 
@@ -270,7 +270,7 @@
 def _clone_out(radio):
     try:
         return __clone_out(radio)
-    except Exception, e:
+    except Exception as e:
         raise errors.RadioError("Failed to communicate with the radio: %s" % e)
 
 
@@ -291,7 +291,7 @@
     pos = 0
     for block in radio._block_lengths:
         if os.getenv("CHIRP_DEBUG"):
-            print "\nSending %i-%i" % (pos, pos + block)
+            print ("\nSending %i-%i" % (pos, pos + block))
         out = radio.get_mmap()[pos:pos + block]
 
         # need to chew byte-by-byte here or else we lose the ACK...not sure why
@@ -309,6 +309,6 @@
 
         pos += block
 
-    print "Clone completed in %i seconds" % (time.time() - start)
+    print ("Clone completed in %i seconds" % (time.time() - start))
 
     return True
diff --git a/chirp/drivers/ft90.py b/chirp/drivers/ft90.py
--- a/chirp/drivers/ft90.py
+++ b/chirp/drivers/ft90.py
@@ -332,7 +332,7 @@
             self._mmap = self._clone_in()
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             trace = traceback.format_exc()
             raise errors.RadioError(
                     "Failed to communicate with radio: %s" % trace)
@@ -343,7 +343,7 @@
             self._clone_out()
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             trace = traceback.format_exc()
             raise errors.RadioError(
                     "Failed to communicate with radio: %s" % trace)
@@ -670,6 +670,6 @@
                     newval = self._dtmf2bbcd(newval)
                 LOG.debug("Setting %s(%s) <= %s" % (setting, oldval, newval))
                 setattr(_settings, setting, newval)
-            except Exception, e:
+            except Exception as e:
                 LOG.debug(element.get_name())
                 raise
diff --git a/chirp/drivers/ftm350.py b/chirp/drivers/ftm350.py
--- a/chirp/drivers/ftm350.py
+++ b/chirp/drivers/ftm350.py
@@ -278,7 +278,7 @@
             self._mmap = _clone_in(self)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to download from radio (%s)" % e)
         self.process_mmap()
 
@@ -287,7 +287,7 @@
             _clone_out(self)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to upload to radio (%s)" % e)
 
     def process_mmap(self):
diff --git a/chirp/drivers/kguv8d.py b/chirp/drivers/kguv8d.py
--- a/chirp/drivers/kguv8d.py
+++ b/chirp/drivers/kguv8d.py
@@ -376,7 +376,7 @@
             self._mmap = self._download()
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
         self.process_mmap()
 
@@ -393,7 +393,7 @@
             return self._do_download(0, 32768, 64)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             LOG.exception('Unknown error during download process')
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
 
@@ -426,7 +426,7 @@
             self._do_upload(0, 32768, 64)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
         return
 
diff --git a/chirp/drivers/kguv8dplus.py b/chirp/drivers/kguv8dplus.py
--- a/chirp/drivers/kguv8dplus.py
+++ b/chirp/drivers/kguv8dplus.py
@@ -418,7 +418,7 @@
             self._mmap = self._download()
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
         self.process_mmap()
 
@@ -435,7 +435,7 @@
             return self._do_download(0, 32768, 64)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             LOG.exception('Unknown error during download process')
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
 
@@ -467,7 +467,7 @@
             self._do_upload(0, 32768, 64)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
         return
 
@@ -1103,9 +1103,9 @@
                             setattr(obj, setting, int(element.value)/10)
                         else:
                             setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
 
     def _is_freq(self, element):
-        return "rxfreq" in element.get_name() or "txoffset" in element.get_name() or "rx_start" in element.get_name() or "rx_stop" in element.get_name() or "tx_start" in element.get_name() or "tx_stop" in element.get_name()
\ No newline at end of file
+        return "rxfreq" in element.get_name() or "txoffset" in element.get_name() or "rx_start" in element.get_name() or "rx_stop" in element.get_name() or "tx_start" in element.get_name() or "tx_stop" in element.get_name()
diff --git a/chirp/drivers/kguv8e.py b/chirp/drivers/kguv8e.py
--- a/chirp/drivers/kguv8e.py
+++ b/chirp/drivers/kguv8e.py
@@ -337,7 +337,7 @@
 
         try:
             self.pipe.write(_header)
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
 
     def _read_record(self):
@@ -423,7 +423,7 @@
             self._mmap = self._download()
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
         self.process_mmap()
 
@@ -440,7 +440,7 @@
             return self._do_download(0, 32768, 64)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             LOG.exception('Unknown error during download process')
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
 
@@ -472,7 +472,7 @@
             self._do_upload(0, 32768, 64)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
         return
 
@@ -1138,7 +1138,7 @@
                             setattr(obj, setting, int(element.value)/10)
                         else:
                             setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
 
diff --git a/chirp/drivers/kguv9dplus.py b/chirp/drivers/kguv9dplus.py
--- a/chirp/drivers/kguv9dplus.py
+++ b/chirp/drivers/kguv9dplus.py
@@ -877,7 +877,7 @@
             self._write_record(CMD_HANGUP)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             LOG.exception('Unknown error during download process')
             raise errors.RadioError(
                 "Failed to communicate with radio: %s" % e)
@@ -894,7 +894,7 @@
             self._write_record(CMD_HANGUP)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError(
                 "Failed to communicate with radio: %s" % e)
         return
@@ -1887,7 +1887,7 @@
                             setattr(obj, setting, int(element.value)/10)
                         else:
                             setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug("set_settings: Exception with %s" %
                               element.get_name())
                     raise
diff --git a/chirp/drivers/kyd.py b/chirp/drivers/kyd.py
--- a/chirp/drivers/kyd.py
+++ b/chirp/drivers/kyd.py
@@ -500,7 +500,7 @@
 
                     LOG.debug("Setting %s = %s" % (setting, element.value))
                     setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
 
diff --git a/chirp/drivers/kyd_IP620.py b/chirp/drivers/kyd_IP620.py
--- a/chirp/drivers/kyd_IP620.py
+++ b/chirp/drivers/kyd_IP620.py
@@ -181,7 +181,7 @@
             self.pipe.write("\x06")
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Radio refused to exit programming mode: %s" % e)
 
     def _ip620_enter_programming_mode(self):
@@ -192,7 +192,7 @@
             _ack = self.pipe.read(1)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Error communicating with radio: %s" % e)
         if not _ack:
             raise errors.RadioError("No response from radio")
@@ -203,17 +203,17 @@
             _ident = self.pipe.read(8)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except xception as e:
             raise errors.RadioError("Error communicating with radio: %s" % e)
         if not _ident.startswith("\x06\x4B\x47\x36\x37\x01\x56\xF8"):
-            print util.hexprint(_ident)
+            print (util.hexprint(_ident))
             raise errors.RadioError("Radio returned unknown identification string")
         try:
             self.pipe.write(CMD_ACK)
             _ack = self.pipe.read(1)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Error communicating with radio: %s" % e)
         if _ack != CMD_ACK:
             raise errors.RadioError("Radio refused to enter programming mode")
@@ -316,7 +316,7 @@
             self._mmap = self._do_download()
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
         self.process_mmap()
 
@@ -597,7 +597,7 @@
                 setattr(self._memobj.settings_misc,
                         element.get_name(),
                         element.value)
-            except Exception, e:
+            except Exception as e:
                 LOG.debug(element.get_name())
                 raise
 
@@ -624,6 +624,6 @@
                     setattr(_settings_misc, setting, newval)
                 else:
                     setattr(_settings, setting, newval)
-            except Exception, e:
+            except Exception as e:
                 LOG.debug(element.get_name())
                 raise
diff --git a/chirp/drivers/leixen.py b/chirp/drivers/leixen.py
--- a/chirp/drivers/leixen.py
+++ b/chirp/drivers/leixen.py
@@ -261,7 +261,7 @@
     #            util.hexprint(frame).replace("\n", "\n          ")))
     try:
         radio.pipe.write(frame)
-    except Exception, e:
+    except Exception as e:
         raise errors.RadioError("Failed to communicate with radio: %s" % e)
 
 
@@ -427,7 +427,7 @@
     def sync_in(self):
         try:
             self._mmap = do_download(self)
-        except Exception, e:
+        except Exception as e:
             finish(self)
             raise errors.RadioError("Failed to download from radio: %s" % e)
         self.process_mmap()
@@ -442,7 +442,7 @@
         except errors.RadioError:
             finish(self)
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to upload to radio: %s" % e)
 
     def get_raw_memory(self, number):
@@ -941,7 +941,7 @@
                     else:
                         LOG.debug("Setting %s = %s" % (setting, element.value))
                         setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
 
diff --git a/chirp/drivers/lt725uv.py b/chirp/drivers/lt725uv.py
--- a/chirp/drivers/lt725uv.py
+++ b/chirp/drivers/lt725uv.py
@@ -1393,7 +1393,7 @@
                     elif element.value.get_mutable():
                         LOG.debug("Setting %s = %s" % (setting, element.value))
                         setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
 
diff --git a/chirp/drivers/puxing.py b/chirp/drivers/puxing.py
--- a/chirp/drivers/puxing.py
+++ b/chirp/drivers/puxing.py
@@ -47,7 +47,7 @@
     for _i in range(0, 10):
         try:
             return _puxing_prep(radio)
-        except Exception, e:
+        except Exception as e:
             time.sleep(1)
 
     raise e
@@ -60,7 +60,7 @@
         return do_download(radio, 0x0000, 0x0C60, 0x0008)
     except errors.RadioError:
         raise
-    except Exception, e:
+    except Exception as e:
         raise errors.RadioError("Failed to communicate with radio: %s" % e)
 
 
@@ -71,7 +71,7 @@
         return do_upload(radio, 0x0000, 0x0C40, 0x0008)
     except errors.RadioError:
         raise
-    except Exception, e:
+    except Exception as e:
         raise errors.RadioError("Failed to communicate with radio: %s" % e)
 
 POWER_LEVELS = [chirp_common.PowerLevel("High", watts=5.00),
@@ -372,7 +372,7 @@
         return do_download(radio, 0x0000, 0x0FE0, 0x0010)
     except errors.RadioError:
         raise
-    except Exception, e:
+    except Exception as e:
         raise errors.RadioError("Failed to communicate with radio: %s" % e)
 
 
@@ -383,7 +383,7 @@
         return do_upload(radio, 0x0000, 0x0FE0, 0x0010)
     except errors.RadioError:
         raise
-    except Exception, e:
+    except Exception as e:
         raise errors.RadioError("Failed to communicate with radio: %s" % e)
 
 PUXING_2R_MEM_FORMAT = """
diff --git a/chirp/drivers/radioddity_r2.py b/chirp/drivers/radioddity_r2.py
--- a/chirp/drivers/radioddity_r2.py
+++ b/chirp/drivers/radioddity_r2.py
@@ -611,7 +611,7 @@
 
                     LOG.debug("Setting %s = %s" % (setting, element.value))
                     setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
 
diff --git a/chirp/drivers/radtel_t18.py b/chirp/drivers/radtel_t18.py
--- a/chirp/drivers/radtel_t18.py
+++ b/chirp/drivers/radtel_t18.py
@@ -478,7 +478,7 @@
                     else:
                         LOG.debug("Setting %s = %s" % (setting, element.value))
                         setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
 
diff --git a/chirp/drivers/retevis_rt1.py b/chirp/drivers/retevis_rt1.py
--- a/chirp/drivers/retevis_rt1.py
+++ b/chirp/drivers/retevis_rt1.py
@@ -726,7 +726,7 @@
                     elif element.value.get_mutable():
                         LOG.debug("Setting %s = %s" % (setting, element.value))
                         setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
 
diff --git a/chirp/drivers/retevis_rt21.py b/chirp/drivers/retevis_rt21.py
--- a/chirp/drivers/retevis_rt21.py
+++ b/chirp/drivers/retevis_rt21.py
@@ -561,7 +561,7 @@
                     elif element.value.get_mutable():
                         LOG.debug("Setting %s = %s" % (setting, element.value))
                         setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
                     
diff --git a/chirp/drivers/retevis_rt22.py b/chirp/drivers/retevis_rt22.py
--- a/chirp/drivers/retevis_rt22.py
+++ b/chirp/drivers/retevis_rt22.py
@@ -605,7 +605,7 @@
 
                     LOG.debug("Setting %s = %s" % (setting, element.value))
                     setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
 
diff --git a/chirp/drivers/retevis_rt23.py b/chirp/drivers/retevis_rt23.py
--- a/chirp/drivers/retevis_rt23.py
+++ b/chirp/drivers/retevis_rt23.py
@@ -846,7 +846,7 @@
                     elif element.value.get_mutable():
                         LOG.debug("Setting %s = %s" % (setting, element.value))
                         setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
 
diff --git a/chirp/drivers/retevis_rt26.py b/chirp/drivers/retevis_rt26.py
--- a/chirp/drivers/retevis_rt26.py
+++ b/chirp/drivers/retevis_rt26.py
@@ -897,7 +897,7 @@
                     elif element.value.get_mutable():
                         LOG.debug("Setting %s = %s" % (setting, element.value))
                         setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
 
diff --git a/chirp/drivers/rfinder.py b/chirp/drivers/rfinder.py
--- a/chirp/drivers/rfinder.py
+++ b/chirp/drivers/rfinder.py
@@ -240,7 +240,7 @@
                 dist = distance(self.__lat, self.__lon, lat, lon)
                 bear = fuzzy_to(self.__lat, self.__lon, lat, lon)
                 mem.comment = "(%imi %s) %s" % (dist, bear, mem.comment)
-            except Exception, e:
+            except Exception as e:
                 LOG.error("Failed to calculate distance: %s" % e)
 
         return mem
@@ -258,7 +258,7 @@
                 mem.number = number
                 number += 1
                 self.__memories.append(mem)
-            except Exception, e:
+            except Exception as e:
                 import traceback
                 LOG.error(traceback.format_exc())
                 LOG.error("Error in received data, cannot continue")
@@ -287,7 +287,7 @@
 
         self._rfp = None
 
-    def set_params(self, (lat, lon), miles, email, password):
+    def set_params(self, lat, lon, miles, email, password):
         """Sets the parameters to use for the query"""
         self._lat = lat
         self._lon = lon
diff --git a/chirp/drivers/rh5r_v2.py b/chirp/drivers/rh5r_v2.py
--- a/chirp/drivers/rh5r_v2.py
+++ b/chirp/drivers/rh5r_v2.py
@@ -167,7 +167,7 @@
                 filedata[0x840:0x848] == cls._FILEID)
 
     def process_mmap(self):
-        print MEM_FORMAT
+        print (MEM_FORMAT)
         self._memobj = bitwise.parse(MEM_FORMAT, self._mmap)
 
     def get_raw_memory(self, number):
diff --git a/chirp/drivers/tdxone_tdq8a.py b/chirp/drivers/tdxone_tdq8a.py
--- a/chirp/drivers/tdxone_tdq8a.py
+++ b/chirp/drivers/tdxone_tdq8a.py
@@ -301,8 +301,8 @@
         try:
             data = _do_ident(radio, magic)
             return data
-        except errors.RadioError, e:
-            print e
+        except errors.RadioError as e:
+            print (e)
             error = e
             time.sleep(2)
     if error:
@@ -426,7 +426,7 @@
 
     if len(data) == 0x2008:
         rid = data[0x2000:0x2008]
-        print rid
+        print (rid)
         return rid.startswith(cls.MODEL)
     else:
         return False
@@ -1117,7 +1117,7 @@
                     elif element.value.get_mutable():
                         LOG.debug("Setting %s = %s" % (setting, element.value))
                         setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
 
@@ -1131,7 +1131,7 @@
                     value = int(val.get_value() * 10)
                 LOG.debug("Setting fm_presets = %s" % (value))
                 self._memobj.fm_presets = value
-            except Exception, e:
+            except Exception as e:
                 LOG.debug(element.get_name())
                 raise
 
diff --git a/chirp/drivers/th7800.py b/chirp/drivers/th7800.py
--- a/chirp/drivers/th7800.py
+++ b/chirp/drivers/th7800.py
@@ -536,7 +536,7 @@
 
                 LOG.debug("Setting %s(%s) <= %s" % (setting, oldval, newval))
                 setattr(_settings, setting, newval)
-            except Exception, e:
+            except Exception as e:
                 LOG.debug(element.get_name())
                 raise
 
@@ -726,7 +726,7 @@
     def sync_in(self):
         try:
             self._mmap = _download(self)
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError(
                     "Failed to communicate with the radio: %s" % e)
         self.process_mmap()
@@ -734,6 +734,6 @@
     def sync_out(self):
         try:
             _upload(self)
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError(
                     "Failed to communicate with the radio: %s" % e)
diff --git a/chirp/drivers/th9000.py b/chirp/drivers/th9000.py
--- a/chirp/drivers/th9000.py
+++ b/chirp/drivers/th9000.py
@@ -352,7 +352,7 @@
     try:
         radio.pipe.write(data)
         radio.pipe.read(len(data))
-    except Exception, e:
+    except Exception as e:
         LOG.error("Error writing to radio: %s" % e)
         raise errors.RadioError("Unable to write to radio")
 
@@ -366,7 +366,7 @@
 def _read(radio, length):
     try:
         data = radio.pipe.read(length)
-    except Exception, e:
+    except Exception as e:
         LOG.error( "Error reading from radio: %s" % e)
         raise errors.RadioError("Unable to read from radio")
 
@@ -793,7 +793,7 @@
                     else:
                         LOG.debug( "Setting %s = %s" % (setting, element.value))
                         setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug( element.get_name())
                     raise
 
diff --git a/chirp/drivers/th9800.py b/chirp/drivers/th9800.py
--- a/chirp/drivers/th9800.py
+++ b/chirp/drivers/th9800.py
@@ -598,7 +598,7 @@
 
                 LOG.debug("Setting %s(%s) <= %s" % (setting, oldval, newval))
                 setattr(_settings, setting, newval)
-            except Exception, e:
+            except Exception as e:
                 LOG.debug(element.get_name())
                 raise
 
@@ -785,7 +785,7 @@
     def sync_in(self):
         try:
             self._mmap = _download(self)
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError(
                     "Failed to communicate with the radio: %s" % e)
         self.process_mmap()
@@ -793,6 +793,6 @@
     def sync_out(self):
         try:
             _upload(self)
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError(
                     "Failed to communicate with the radio: %s" % e)
diff --git a/chirp/drivers/th_uv8000.py b/chirp/drivers/th_uv8000.py
--- a/chirp/drivers/th_uv8000.py
+++ b/chirp/drivers/th_uv8000.py
@@ -1486,6 +1486,6 @@
                     elif element.value.get_mutable():
                         LOG.debug("Setting %s = %s" % (setting, element.value))
                         setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
diff --git a/chirp/drivers/thd72.py b/chirp/drivers/thd72.py
--- a/chirp/drivers/thd72.py
+++ b/chirp/drivers/thd72.py
@@ -581,7 +581,7 @@
                 except AttributeError as e:
                     LOG.error("Setting %s is not in the memory map: %s" %
                               (element.get_name(), e))
-            except Exception, e:
+            except Exception as e:
                 LOG.debug(element.get_name())
                 raise
 
@@ -738,9 +738,9 @@
         return r
 
     def usage():
-        print "Usage: %s <-i input.img>|<-o output.img> -p port " \
+        print ("Usage: %s <-i input.img>|<-o output.img> -p port " \
             "[[-f first-addr] [-l last-addr] | [-b list,of,blocks]]" % \
-            sys.argv[0]
+            sys.argv[0])
         sys.exit(1)
 
     opts, args = getopt.getopt(sys.argv[1:], "i:o:p:f:l:b:")
@@ -793,4 +793,4 @@
     else:
         r._mmap = file(fname, "rb").read(r._memsize)
         r.upload(blocks)
-    print "\nDone"
+    print ("\nDone")
diff --git a/chirp/drivers/thuv1f.py b/chirp/drivers/thuv1f.py
--- a/chirp/drivers/thuv1f.py
+++ b/chirp/drivers/thuv1f.py
@@ -214,7 +214,7 @@
             self._mmap = uvf1_download(self)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
         self.process_mmap()
 
@@ -223,7 +223,7 @@
             uvf1_upload(self)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
 
     @classmethod
diff --git a/chirp/drivers/tk760g.py b/chirp/drivers/tk760g.py
--- a/chirp/drivers/tk760g.py
+++ b/chirp/drivers/tk760g.py
@@ -907,7 +907,7 @@
             do_upload(self)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
 
     def process_mmap(self):
diff --git a/chirp/drivers/ts2000.py b/chirp/drivers/ts2000.py
--- a/chirp/drivers/ts2000.py
+++ b/chirp/drivers/ts2000.py
@@ -217,7 +217,7 @@
             duplex = 0
             offset = 0
         else:
-            print "Bug: unsupported duplex `%s'" % mem.duplex
+            print ("Bug: unsupported duplex `%s'" % mem.duplex)
         if mem.mode in ["AM", "FM"]:
             step = TS2000_FM_STEPS.index(mem.tuning_step)
         else:
@@ -259,7 +259,7 @@
         elif mem.duplex == "split":
             duplex = 0
         else:
-            print "Bug: unsupported duplex `%s'" % mem.duplex
+            print ("Bug: unsupported duplex `%s'" % mem.duplex)
         if mem.mode in ["AM", "FM"]:
             step = TS2000_FM_STEPS.index(mem.tuning_step)
         else:
diff --git a/chirp/drivers/ts480.py b/chirp/drivers/ts480.py
--- a/chirp/drivers/ts480.py
+++ b/chirp/drivers/ts480.py
@@ -1138,7 +1138,7 @@
                     elif element.value.get_mutable():
                         LOG.debug("Setting %s = %s" % (setting, element.value))
                         setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
         return
diff --git a/chirp/drivers/ts590.py b/chirp/drivers/ts590.py
--- a/chirp/drivers/ts590.py
+++ b/chirp/drivers/ts590.py
@@ -1644,7 +1644,7 @@
                     elif element.value.get_mutable():
                         LOG.debug("Setting %s = %s" % (setting, element.value))
                         setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
 
diff --git a/chirp/drivers/vgc.py b/chirp/drivers/vgc.py
--- a/chirp/drivers/vgc.py
+++ b/chirp/drivers/vgc.py
@@ -1410,7 +1410,7 @@
                     elif element.value.get_mutable():
                         LOG.debug("Setting %s = %s" % (setting, element.value))
                         setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
 
diff --git a/chirp/drivers/vxa700.py b/chirp/drivers/vxa700.py
--- a/chirp/drivers/vxa700.py
+++ b/chirp/drivers/vxa700.py
@@ -177,7 +177,7 @@
             self._mmap = _download(self)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate " +
                                     "with the radio: %s" % e)
         self.process_mmap()
@@ -192,7 +192,7 @@
             _upload(self)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate " +
                                     "with the radio: %s" % e)
 
diff --git a/chirp/drivers/wouxun.py b/chirp/drivers/wouxun.py
--- a/chirp/drivers/wouxun.py
+++ b/chirp/drivers/wouxun.py
@@ -274,7 +274,7 @@
             return do_download(self, 0x0000, 0x2000, 0x0040)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
 
     def _upload(self):
@@ -285,7 +285,7 @@
             return do_upload(self, 0x0000, 0x2000, 0x0010)
         except errors.RadioError:
             raise
-        except Exception, e:
+        except Exception as e:
             raise errors.RadioError("Failed to communicate with radio: %s" % e)
 
     def sync_in(self):
@@ -658,7 +658,7 @@
                     else:
                         LOG.debug("Setting %s = %s" % (setting, element.value))
                         setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
 
@@ -680,7 +680,7 @@
                 else:
                     setting = self._memobj.fm_presets_1
                 setting[index] = value
-            except Exception, e:
+            except Exception as e:
                 LOG.debug(element.get_name())
                 raise
 
@@ -690,7 +690,7 @@
                 setattr(self._memobj.freq_ranges,
                         element.get_name(),
                         encode_freq(int(element.value)))
-            except Exception, e:
+            except Exception as e:
                 LOG.debug(element.get_name())
                 raise
 
@@ -1397,7 +1397,7 @@
                     else:
                         LOG.debug("Setting %s = %s" % (setting, element.value))
                         setattr(obj, setting, element.value)
-                except Exception, e:
+                except Exception as e:
                     LOG.debug(element.get_name())
                     raise
 
@@ -1419,7 +1419,7 @@
                 else:
                     setting = self._memobj.fm_presets_1
                 setting[index] = value
-            except Exception, e:
+            except Exception as e:
                 LOG.debug(element.get_name())
                 raise
 
