debrouxl / tilp_and_gfm

TILP (formerly GtkTiLink) can transfer data between Texas Instruments graphing calculators and a computer. It works with all link cables (parallel, serial, Black/Gray/Silver/Direct Link) and it supports the TI-Z80 series (73..86), the TI-eZ80 series (83PCE, 84+CE), the TI-68k series (89, 92, 92+, V200, 89T) and the Nspire series (Nspire Clickpad / Touchpad / CX, both CAS and non-CAS)
http://lpg.ticalc.org/prj_tilp
119 stars 16 forks source link

Updating an app with TiLP hangs & times out while calculator is on "Defragmenting" screen #55

Open jojomoore2007 opened 2 years ago

jojomoore2007 commented 2 years ago

Applies to: TI-84 Plus CE

Description:

When trying to update an app (by uploading a newer version), the calculator displays a "Defragmenting" screen for a while, and TiLP remains completely unresponsive. Once this finishes, an error message appears, due to a timeout. Choosing "Retry" successfully uploads the app, but similarly hangs for a short period of time while the calculator verifies the app.

Steps to Reproduce:

  1. Get a newer version of an already installed app
  2. Try to upload it
  3. Timeout error
  4. Retry
  5. Success

System Details:

OS: Ubuntu 18.04.6 LTS Architecture: x86_64 Kernel Release: 4.17.0-041700-generic Kernel Version: #201806041953 SMP Mon Jun 4 19:55:25 UTC 2018 Desktop Environment: GNOME 3.28.2

Version:

TiLP: 1.19 libticables: 1.3.6 libtifiles: 1.1.8 libticalcs: 1.1.10 libticonv: 1.1.6

jojomoore2007 commented 2 years ago

In my tests, I've found that it takes around 30-60 seconds to actually complete the defragmentation step, and by then, it's already way past the timeout period.

debrouxl commented 2 years ago

Thanks for the report. Well, the issue has been known for a long time, but the workaround on the user side - retrying the operation after the defragmentation has taken place - is usually reasonably easy, if slightly cumbersome :)

On the libti* side, the fix might involve polling the calculator for defragmentation status information, when the given target model supports such polling.