Project

General

Profile

Actions

Bug #5693

closed

Yaesu vx-6 clone download issue

Added by James Bydalek about 6 years ago. Updated about 4 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
-
Target version:
Start date:
04/04/2018
Due date:
% Done:

100%

Estimated time:
Chirp Version:
daily
Model affected:
Yaesu vx-6
Platform:
All
Debug Log:
I read the instructions above:

Description

When attempting to download from my Yaesu VX-6 to CHIRP... I follow all instruction, and the progress bar gets all the way to the end, and then get the An error has occurred box with the message "Failed to communicate with the radio: Timed out reading from radio"

It does seem to get all the way to the end of the progress bar, but errors out with no data transferred. I tried it with older drivers with no luck. I also downloaded the latest version of CHIRP and it did not make a difference.

Actions #1

Updated by James Bydalek about 6 years ago

Please note that I did now go back to a January daily version and it worked (saw that suggestion in a issue reported just like mine)

Actions #2

Updated by Jonathan Morrison about 6 years ago

I have this same issue on linux.

Actions #3

Updated by Casey Dunn about 6 years ago

I am having this issue as well.

the log shows CHIRP proceeding through all the memory slots
[2018-04-19 09:19:47,786] chirp.drivers.yaesu_clone - DEBUG: Read 32577/32578
[2018-04-19 09:19:48,041] chirp.drivers.yaesu_clone - DEBUG: Read 32577/32578
[2018-04-19 09:19:48,297] chirp.ui.reporting - DEBUG: Reporting exception
[2018-04-19 09:19:48,297] chirp.ui.common - ERROR: -- Exception: --
[2018-04-19 09:19:48,298] chirp.ui.common - ERROR: Traceback (most recent call last):
  File "/Applications/chirp-daily-20180412.app/Contents/Resources/chirp/chirp/ui/clone.py", line 249, in run
    self.__radio.sync_in()
  File "/Applications/chirp-daily-20180412.app/Contents/Resources/chirp/chirp/drivers/yaesu_clone.py", line 245, in sync_in
    self._mmap = _clone_in(self)
  File "/Applications/chirp-daily-20180412.app/Contents/Resources/chirp/chirp/drivers/yaesu_clone.py", line 110, in _clone_in
    raise errors.RadioError("Failed to communicate with the radio: %s" % e)
RadioError: Failed to communicate with the radio: Timed out reading from radio

and then throwing an exception.
it looks like it isn't handling the last bit well.

Actions #4

Updated by Chris Rushton almost 6 years ago

Just tried a whole bunch of different versions since I got bit by this too, looks like it is working on daily-20180324 and stops working on daily-20180325, as daily-20180331, and daily-20180412 do not work.

Actions #5

Updated by Jens Jensen almost 6 years ago

also running into this issue on linux

some suspects:

changeset: 2967:1cfdf281afcd
user: Dan Smith dsmith@danplanet.com
date: Sat Mar 24 10:23:30 2018 -0700
summary: Fix long lines in yaesu_clone.py

changeset: 2966:9e3b0ff76308
user: Nicolas Pike nicolas.jon.pike@gmail.com
date: Fri Mar 23 17:52:01 2018 +0000
summary: [FT-70] #5329 and issue #5647 Revise handling of empty chunks in yaesu_clone.py

Actions #6

Updated by Jens Jensen almost 6 years ago

ok yeah,
works with:

changeset: 2965:96bc56916c95
user: Jim Unroe rock.unroe@gmail.com
date: Tue Mar 20 21:38:07 2018 -0400
summary: [LT725UV] Add support for Baojie BJ-218 and clones.

breaks with:
changeset: 2966:9e3b0ff76308
user: Nicolas Pike nicolas.jon.pike@gmail.com
date: Fri Mar 23 17:52:01 2018 +0000
summary: [FT-70] #5329 and issue #5647 Revise handling of empty chunks in yaesu_clone.py

jens@spire:~/build/chirp.hg$ hg diff -r 96bc56916c95 -r 9e3b0ff76308
diff -r 96bc56916c95 -r 9e3b0ff76308 chirp/drivers/ft70.py
--- a/chirp/drivers/ft70.py Tue Mar 20 21:38:07 2018 -0400
+++ b/chirp/drivers/ft70.py Fri Mar 23 17:52:01 2018 +0000
@@ -466,14 +466,14 @@
 @directory.register
 class FT70Radio(yaesu_clone.YaesuCloneModeRadio):
     """Yaesu FT-70DE"""
-    BAUD_RATE = 115200
+    BAUD_RATE = 38400
     VENDOR = "Yaesu"
     MODEL = "FT-70D"
 
     _model = "AH51G"
 
-    _memsize = 65227  # 65227 read from dump ?
-    _block_lengths = [10, 65555]  # ????? Not sure why this works to match _memsize
+    _memsize = 65227  # 65227 read from dump
+    _block_lengths = [10, 65217]
     _block_size = 32
     _mem_params = (900,  # size of memories array
                    900,  # size of flags array
diff -r 96bc56916c95 -r 9e3b0ff76308 chirp/drivers/yaesu_clone.py
--- a/chirp/drivers/yaesu_clone.py  Tue Mar 20 21:38:07 2018 -0400
+++ b/chirp/drivers/yaesu_clone.py  Fri Mar 23 17:52:01 2018 +0000
@@ -43,14 +43,22 @@
 
 
 def _chunk_read(pipe, count, status_fn):
+    timer = time.time()
     block = 32
     data = ""
-    for _i in range(0, count, block):
-        data += pipe.read(block)
-        if data:
+    while len(data) < count:
+        # Don't read past the end of our block if we're not on a 32-byte boundary
+        chunk_size = min(block, count - len(data))
+        chunk = pipe.read(chunk_size)
+        if chunk:
+            timer = time.time()
+            data += chunk
             if data[0] == chr(CMD_ACK):
                 data = data[1:]  # Chew an echo'd ack if using a 2-pin cable
-                # LOG.debug("Chewed an ack")
+        # LOG.debug("Chewed an ack")
+        if time.time() - timer > 2:
+            # It's been two seconds since we last saw data from the radio, so it's time to give up.
+            raise errors.RadioError("Timed out reading from radio")
         status = chirp_common.Status()
         status.msg = "Cloning from radio"
         status.max = count

Actions #7

Updated by Dan Smith almost 6 years ago

Okay, the old code was definitely broken as it relied on timing (and getting lucky). It's possible that some of the drivers that depended on that code were stating different memory or block sizes than they should to work properly and need tweaking. I tested an older yaesu (FT-7800) before we committed it and it was okay.

Can you do some digging to try to see if we can roll forward? I would rather do that than roll back, if possible.

Actions #8

Updated by Jens Jensen almost 6 years ago

  • Status changed from New to In Progress

ok preliminary finding is that we maybe have an off-by-one issue.

[2018-05-04 19:49:40,069] chirp.drivers.yaesu_clone - DEBUG: Read 32479/32578
[2018-05-04 19:49:40,088] chirp.drivers.yaesu_clone - DEBUG: Read 32511/32578
[2018-05-04 19:49:40,159] chirp.drivers.yaesu_clone - DEBUG: Read 32543/32578
[2018-05-04 19:49:40,178] chirp.drivers.yaesu_clone - DEBUG: Read 32575/32578
[2018-05-04 19:49:40,428] chirp.drivers.yaesu_clone - DEBUG: Read 32577/32578
[2018-05-04 19:49:40,679] chirp.drivers.yaesu_clone - DEBUG: Read 32577/32578
[2018-05-04 19:49:40,930] chirp.drivers.yaesu_clone - DEBUG: Read 32577/32578
[2018-05-04 19:49:41,182] chirp.drivers.yaesu_clone - DEBUG: Read 32577/32578
[2018-05-04 19:49:41,435] chirp.drivers.yaesu_clone - DEBUG: Read 32577/32578
[2018-05-04 19:49:41,688] chirp.drivers.yaesu_clone - DEBUG: Read 32577/32578
[2018-05-04 19:49:41,939] chirp.drivers.yaesu_clone - DEBUG: Read 32577/32578
[2018-05-04 19:49:42,190] chirp.drivers.yaesu_clone - DEBUG: Read 32577/32578
[2018-05-04 19:49:42,445] chirp.ui.reporting - DEBUG: Reporting exception
[2018-05-04 19:49:42,445] chirp.ui.common - ERROR: -- Exception: --
[2018-05-04 19:49:42,449] chirp.ui.common - ERROR: Traceback (most recent call last):
  File "/home/jens/build/chirp.hg/chirp/ui/clone.py", line 249, in run
    self.__radio.sync_in()
  File "/home/jens/build/chirp.hg/chirp/drivers/yaesu_clone.py", line 243, in sync_in
    self._mmap = _clone_in(self)
  File "/home/jens/build/chirp.hg/chirp/drivers/yaesu_clone.py", line 108, in _clone_in
    raise errors.RadioError("Failed to communicate with the radio: %s" % e)
RadioError: Failed to communicate with the radio: Timed out reading from radio

[2018-05-04 19:49:42,451] chirp.ui.common - ERROR: ----------------
[2018-05-04 19:49:42,451] chirp.ui.clone - ERROR: Clone failed: Failed to communicate with the radio: Timed out reading from radio

I'm not sure if we have the radio image size parameters wrong, or something else.
I'm heading out of town for a few days. I'll try to look at it next weekend, if someone else doesn't beat me to it.

Actions #9

Updated by Jens Jensen almost 6 years ago

  • Status changed from In Progress to Feedback
  • % Done changed from 0 to 90

Should be fixed in daily-20180512 can someone else confirm, and we'll close this out.

Actions #10

Updated by James Bydalek almost 6 years ago

I downloaded Daily-20180512 and verified it does now work on my Yaesu VX-6, Thanks!

Actions #11

Updated by Jonathan Morrison almost 6 years ago

Jonathan Morrison wrote:

I have this same issue on linux.

Works now with today's daily build.

Actions #12

Updated by Jens Jensen almost 6 years ago

  • Status changed from Feedback to Resolved
  • % Done changed from 90 to 100
Actions #13

Updated by Bernhard Hailer about 4 years ago

  • Status changed from Resolved to Closed
  • Assignee set to Jens Jensen
  • Priority changed from Immediate to Normal
  • Target version set to chirp-legacy
  • Platform changed from Windows to All
Actions

Also available in: Atom PDF