Teensy Loader slow to start up

Status
Not open for further replies.
I just tried the new version of the Loader on my very old Linux Ubuntu 16.04 machine. Works like a charm. Programmed a Teensy 3.2
 
Oh so frustrating. Now I can't reproduce the problem in a VM, even after a fresh install without even installing the VM'd tools/drivers.

Yesterday I was definitely able to reproduce it. No idea what changed. :(
 
I've reinstalled 20.04 a few times and I just can't reproduce the slow startup again, even with the old versions. Not sure where to go from here?
 
After some rest, I restarted this testing with a more methodical approach. Looks like Ubuntu has published 4 different .iso images:

20.04
20.04.1
20.04.2
20.04.2.0

This time I set up 4 VMs and installed each. In each VM, I ran "apt install build-essential" and installed the VM's drivers, and did only minor configuration. At this point, all 4 reproduced the problem.

Then I ran "apt-get update" and "apt-get upgrade" on all 4 of them. After updating & rebooting, the oldest 2 version have the slow startup fixed! But the newer 2 still do it.

I also tried with Ubuntu's GUI-based update tool, on clones of the original 4 VMs. Same result. The copies originally installed with 20.04 and 20.04.1 have the problem fixed after updating. But the problem persists on 20.04.2 and 20.04.2.0, even after fully updating. Very strange....

I installed a 5th VM using 20.04.2.0 and set up all the dev tools. That VM also does the slow startup, even with a copy of Teensy Loader it compiled.

Looks like yesterday I unwittingly did some sort of update which caused the problem to go away, and I must have done it coinciding with when I tried builds from various other versions, causing me to wrongly conclude building on 18.04 solves the problem. It doesn't. Neither does building on this same 20.04 system. :(

I'm continuing to work on this, but at this point I'm not feeling confident about finding any sort of nice fix I can make in Teensy Loader.
 
Looks like there is an update to some linux versions that resolves the issue - not yet provided to be applied to the problem versions?

There was as noted a passing time where my prior Win 10 machine would reproducibly take 15 seconds for TeensyLoader to start on IDE first upload - that passed after some short time that no other reports indicated? Just did site: search in Bing and still cannot find those notes for time frame.

Wondering if there was some common problem - perhaps with Loader catching it ? - that a normal/Monthly Windows update resolved? And similar 'fix' comes in the updates for most linux versions tried?

Have prior versions before TD 1.54 been tested? does the loader from before 1.50 or 1.48 do the same thing? Does TeensyLoader on startup look for the TeensySerial or other things to start?
 
Sounds strange: Not sure which image I started from. My guess is one of the two earlier ones. I am not sure if I still have the DVD or thumb drive... My guess is it was awhile ago so probaby the 20.04 or 20.04.01 which makes sense as I have done update/upgrades several times since then.

Edit: But it now shows:
Code:
kurt@kurt-XPS-8300:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.2 LTS
Release:	20.04
Codename:	focal
kurt@kurt-XPS-8300:~$ 

kurt@kurt-XPS-8300:~$ uname -a
Linux kurt-XPS-8300 5.4.0-65-generic #73-Ubuntu SMP Mon Jan 18 17:25:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
kurt@kurt-XPS-8300:~$
 
Last edited:
Just to add to the discussion my system running 20.04.2 has the problem. I was curious to see what an upstream version of Ubuntu would do. Did an upgrade release to Ubuntu 20.1 Groovy Gorilla. Surprise! The Teensy Loader snaps up real fast. All is good. So the question is what to do? This version is only supported for 9 months to allow upgrade to 21.04 then 21.10 and eventually 22.04 LTS sometime in 2022. Still have Ubuntu 16.04 on a computer that is 12 years old that was going to be retired to the parts bin. Perhaps I should hold on to it.
 
I'm continuing to work on this today. I want to better understand why this happens and what's truly different between 20.04.1 and 20.04.2 before I decide on the best (or least painful) workaround.

Don't worry. There *will* be a solution or workaround for Ubuntu 20.04. I'd just rather spend another day to really get to the bottom of this and do the best thing we can, rather than go for a quick fix without fully understanding (which I'll admit is how yesterday's failed attempt could honestly be described).
 
Thanks Paul. It's an interesting problem that isn't there in 20.04 appears in 20.04.2 and clears up in 20.1.
 
I still haven't figured out exactly what's different between 20.04.1 (fast after updates) versus 20.04.2 (slow startup even after updates).

But the "big picture" view appears to be that support for GTK2 is dying. I installed Ubuntu 19.10 and found it doesn't even have a libgtk2.0 package! All the info I've been able to find still points to a change in how menus are implemented and a less than ideal way they implemented backwards compatibility for programs built with GTK2. Long-term, we'll probably see more and more compatibility issues on Linux distros where GTK2 libraries might still be installed, but not well tested.

This morning I'm exploring converting Teensy Loader over to GTK3 and what that will mean for supporting older Linux installs.
 
On my notebook with 18.04 installed 20.04 with latest ISO release...

And it duplicates the slow issue:

Not sure if it helps, ran it from command prompt and it first complained about missing GTK file, then lots of stuff after it finally launched the Teensy app.
Code:
kurt@kurt-HP-Pavilion-dm4-Notebook-PC:~/Desktop/arduino-1.8.13$ ./arduino
Picked up JAVA_TOOL_OPTIONS: 
Set log4j store directory /home/kurt/.arduino15
Gtk-Message: 11:29:53.675: Failed to load module "canberra-gtk-module"
Opening Teensy Loader...
Unable find Teensy Loader.  (p)  Is the Teensy Loader application running?
quitexit status 1
Error compiling for board Teensy 4.1.
2021-02-19T19:31:00.154Z INFO c.a.c.p.ContributionInstaller:305 [Timer-0] Start download and signature check of=[https://downloads.arduino.cc/packages/package_index.json]
2021-02-19T19:31:00.164Z INFO c.a.u.n.FileDownloaderCache:92 [Timer-0] Cache folder /home/kurt/.arduino15/cache
2021-02-19T19:31:00.183Z INFO c.a.u.n.FileDownloaderCache:112 [Timer-0] Number of file already in the cache 4
2021-02-19T19:31:00.230Z INFO c.a.u.n.FileDownloaderCache:149 [Timer-0] Get file cached is expire false, exist true, info FileCached{eTag='316a1514cfc429d64acadf12cf438962', lastETag='null', remoteURL='https://downloads.arduino.cc/packages/package_index.json', localPath='/home/kurt/.arduino15/cache/downloads.arduino.cc/packages/package_index.json', md5='MD5:316a1514cfc429d64acadf12cf438962', createdAt='2021-02-19T11:27:54.264', cacheControl=CacheControl{maxAge=3600, isMustRevalidate=false, isNoCache=false, isNoStore=false}} 
2021-02-19T19:31:00.242Z INFO c.a.u.n.FileDownloader:210 [Timer-0] No need to download using cached file: FileCached{eTag='316a1514cfc429d64acadf12cf438962', lastETag='null', remoteURL='https://downloads.arduino.cc/packages/package_index.json', localPath='/home/kurt/.arduino15/cache/downloads.arduino.cc/packages/package_index.json', md5='MD5:316a1514cfc429d64acadf12cf438962', createdAt='2021-02-19T11:27:54.264', cacheControl=CacheControl{maxAge=3600, isMustRevalidate=false, isNoCache=false, isNoStore=false}}
2021-02-19T19:31:00.244Z INFO c.a.u.n.FileDownloader:174 [Timer-0] The file will be taken from the cache Optional[/home/kurt/.arduino15/cache/downloads.arduino.cc/packages/package_index.json]
2021-02-19T19:31:00.246Z INFO c.a.u.n.FileDownloaderCache:149 [Timer-0] Get file cached is expire false, exist true, info FileCached{eTag='f43e86644f0bdde14519f66a0fd3391c', lastETag='null', remoteURL='https://downloads.arduino.cc/packages/package_index.json.sig', localPath='/home/kurt/.arduino15/cache/downloads.arduino.cc/packages/package_index.json.sig', md5='MD5:f43e86644f0bdde14519f66a0fd3391c', createdAt='2021-02-19T11:27:54.524', cacheControl=CacheControl{maxAge=3600, isMustRevalidate=false, isNoCache=false, isNoStore=false}} 
2021-02-19T19:31:00.248Z INFO c.a.u.n.FileDownloader:210 [Timer-0] No need to download using cached file: FileCached{eTag='f43e86644f0bdde14519f66a0fd3391c', lastETag='null', remoteURL='https://downloads.arduino.cc/packages/package_index.json.sig', localPath='/home/kurt/.arduino15/cache/downloads.arduino.cc/packages/package_index.json.sig', md5='MD5:f43e86644f0bdde14519f66a0fd3391c', createdAt='2021-02-19T11:27:54.524', cacheControl=CacheControl{maxAge=3600, isMustRevalidate=false, isNoCache=false, isNoStore=false}}
2021-02-19T19:31:00.249Z INFO c.a.u.n.FileDownloader:174 [Timer-0] The file will be taken from the cache Optional[/home/kurt/.arduino15/cache/downloads.arduino.cc/packages/package_index.json.sig]
2021-02-19T19:31:00.259Z INFO c.a.c.DownloadableContributionsDownloader:227 [Timer-0] Signature verified. url=https://downloads.arduino.cc/packages/package_index.json.sig, signature url=https://downloads.arduino.cc/packages/package_index.json.sig, file to verify=/tmp/package_index.json983777446127981836.tmp, signature file=/tmp/package_index.json.sig8672438684775055430.tmp
2021-02-19T19:31:00.261Z INFO c.a.c.p.ContributionInstaller:314 [Timer-0] Downloaded package index URL=[https://downloads.arduino.cc/packages/package_index.json]
2021-02-19T19:31:00.266Z INFO c.a.u.n.FileDownloaderCache:149 [Timer-0] Get file cached is expire false, exist true, info FileCached{eTag='fbbb746c6a5d2ef604276dfa1eba384c', lastETag='null', remoteURL='https://downloads.arduino.cc/libraries/library_index.json.gz', localPath='/home/kurt/.arduino15/cache/downloads.arduino.cc/libraries/library_index.json.gz', md5='MD5:fbbb746c6a5d2ef604276dfa1eba384c', createdAt='2021-02-19T11:27:56.766', cacheControl=CacheControl{maxAge=14400, isMustRevalidate=false, isNoCache=false, isNoStore=false}} 
2021-02-19T19:31:00.277Z INFO c.a.u.n.FileDownloader:210 [Timer-0] No need to download using cached file: FileCached{eTag='fbbb746c6a5d2ef604276dfa1eba384c', lastETag='null', remoteURL='https://downloads.arduino.cc/libraries/library_index.json.gz', localPath='/home/kurt/.arduino15/cache/downloads.arduino.cc/libraries/library_index.json.gz', md5='MD5:fbbb746c6a5d2ef604276dfa1eba384c', createdAt='2021-02-19T11:27:56.766', cacheControl=CacheControl{maxAge=14400, isMustRevalidate=false, isNoCache=false, isNoStore=false}}
2021-02-19T19:31:00.278Z INFO c.a.u.n.FileDownloader:174 [Timer-0] The file will be taken from the cache Optional[/home/kurt/.arduino15/cache/downloads.arduino.cc/libraries/library_index.json.gz]
2021-02-19T19:31:00.522Z INFO c.a.u.n.FileDownloaderCache:149 [Timer-0] Get file cached is expire false, exist true, info FileCached{eTag='ee7270c4b76db9fe320bcf181507387e', lastETag='null', remoteURL='https://downloads.arduino.cc/libraries/library_index.json.sig', localPath='/home/kurt/.arduino15/cache/downloads.arduino.cc/libraries/library_index.json.sig', md5='MD5:ee7270c4b76db9fe320bcf181507387e', createdAt='2021-02-19T11:27:57.233', cacheControl=CacheControl{maxAge=14400, isMustRevalidate=false, isNoCache=false, isNoStore=false}} 
2021-02-19T19:31:00.523Z INFO c.a.u.n.FileDownloader:210 [Timer-0] No need to download using cached file: FileCached{eTag='ee7270c4b76db9fe320bcf181507387e', lastETag='null', remoteURL='https://downloads.arduino.cc/libraries/library_index.json.sig', localPath='/home/kurt/.arduino15/cache/downloads.arduino.cc/libraries/library_index.json.sig', md5='MD5:ee7270c4b76db9fe320bcf181507387e', createdAt='2021-02-19T11:27:57.233', cacheControl=CacheControl{maxAge=14400, isMustRevalidate=false, isNoCache=false, isNoStore=false}}
2021-02-19T19:31:00.524Z INFO c.a.u.n.FileDownloader:174 [Timer-0] The file will be taken from the cache Optional[/home/kurt/.arduino15/cache/downloads.arduino.cc/libraries/library_index.json.sig]
2021-02-19T19:31:00.729Z INFO c.a.c.DownloadableContributionsDownloader:227 [Timer-0] Signature verified. url=https://downloads.arduino.cc/libraries/library_index.json.sig, signature url=https://downloads.arduino.cc/libraries/library_index.json.sig, file to verify=/tmp/library_index.json7728409729559832634.tmp, signature file=/tmp/library_index.json.sig7465098999182106234.tmp

Code:
kurt@kurt-HP-Pavilion-dm4-Notebook-PC:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.2 LTS
Release:	20.04
Codename:	focal
kurt@kurt-HP-Pavilion-dm4-Notebook-PC:~$ uname -a
Linux kurt-HP-Pavilion-dm4-Notebook-PC 5.8.0-43-generic #49~20.04.1-Ubuntu SMP Fri Feb 5 09:57:56 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
kurt@kurt-HP-Pavilion-dm4-Notebook-PC:~$
 
Just installed IDE 1.8.5 and TD 1.51 on a fresh updated install of Ubuntu 20.04.2 LTS and have the delayed opening of Teensyloader.
 
TD 1.51 on a fresh updated install of Ubuntu 20.04.2 LTS and have the delayed opening of Teensyloader.

Try the installer on msg #36.

Should be fine to install this "on top of" the 1.51 install you already have. Or extract a fresh copy of Arduino and install into it, if you want to have both copies side-by-side for comparison.
 
Kurt, can you remind me about the problems you saw with ARM64 Ubuntu running on Raspberry Pi?
Just installed latest beta tried a build

View attachment 23750
Error shows could not find directory and Teensy app is shown in all White...

I had to reboot, but it kept this in the Firefox queue...

If I then tried to manually run teensy from a different command prompt, it comes up, but it complained like maybe the file named: blink.ino.hex was unreadable...

Will try again
 
Don't waste too much time on the old version on Raspberry Pi. I'm updating the ARM64 build to GTK3.

Sounds good, I am doing an update...

Edit: The Ubuntu is now more up to date.

I downloaded sources for the teensy_loader_cli and was able to build it and program a T4 with the blink hex file in project.

Then went back to GUI, I loaded up the Teensy app from a command prompt, which came up. Then ran Arduino and had it build blink. It then sort of hung. The Teensy app had some
display like blink.ino.hex is unreadable... I had a kitty window up on my PC to RPI and did the top command and the teensy app was taking up like 98% CPU


Code:
ubuntu@ubuntu:~/git/teensy_loader_cli$ top
top - 22:31:54 up 24 min,  2 users,  load average: 11.85, 7.00, 4.08
Tasks: 229 total,   3 running, 225 sleeping,   0 stopped,   1 zombie
%Cpu(s): 13.9 us, 26.2 sy,  8.2 ni, 51.5 id,  0.2 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   7810.3 total,   5013.2 free,   1433.6 used,   1363.5 buff/cache
MiB Swap:   1024.0 total,   1024.0 free,      0.0 used.   6017.3 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  10890 ubuntu    20   0  358780  28640  22872 R  98.3   0.4   4:00.83 teensy
  12933 ubuntu    39  19 1428788  38924  22000 D  45.4   0.5   0:01.37 tracker-extract
  12953 root      20   0   33204  24900   8752 R  17.5   0.3   0:00.53 apport
   2556 ubuntu    20   0  160320   5828   5120 S  14.6   0.1   0:54.52 gvfsd-metadata
   2459 ubuntu    20   0    9076   4928   3388 S   5.6   0.1   0:26.62 dbus-daemon
     24 root      20   0       0      0      0 S   2.0   0.0   0:01.62 ksoftirqd/2
  10004 ubuntu    20   0 4110512 309524 136116 S   2.0   3.9   0:37.48 gnome-shell
  10425 ubuntu    20   0 5596536 478240  37660 S   2.0   6.0   1:41.17 java
   2457 ubuntu    39  19 1151536  58912  15032 S   1.7   0.7   2:23.07 tracker-miner-f
  12652 ubuntu    20   0    9384   3492   2720 R   0.7   0.0   0:00.36 top
     10 root      20   0       0      0      0 I   0.3   0.0   0:03.40 rcu_preempt
    909 root      19  -1   69908  19232  17560 S   0.3   0.2   0:04.49 systemd-journal
   1739 avahi     20   0    7076   3112   2784 S   0.3   0.0   0:01.56 avahi-daemon
   2482 ubuntu    20   0  237652   7004   6032 S   0.3   0.1   0:01.12 gvfsd
   8127 root      20   0       0      0      0 I   0.3   0.0   0:00.56 kworker/u8:0-brcmf_wq/mmc1:0001:1
   9337 root      20   0       0      0      0 I   0.3   0.0   0:00.20 kworker/2:1-events
      1 root      20   0  167976  11184   7324 S   0.0   0.1   0:06.18 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.01 kthreadd
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-kblockd
      8 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq
      9 root      20   0       0      0      0 S   0.0   0.0   0:00.96 ksoftirqd/0
     11 root      rt   0       0      0      0 S   0.0   0.0   0:00.02 migration/0
     12 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/0
     14 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/0
     15 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/1
     16 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/1
     17 root      rt   0       0      0      0 S   0.0   0.0   0:00.02 migration/1
     18 root      20   0       0      0      0 S   0.0   0.0   0:01.58 ksoftirqd/1
     20 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/1:0H-kblockd
     21 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/2
     22 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/2
     23 root      rt   0       0      0      0 S   0.0   0.0   0:00.02 migration/2
     26 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/2:0H-kblockd
     27 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/3
     28 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/3
     29 root      rt   0       0      0      0 S   0.0   0.0   0:00.02 migration/3
     30 root      20   0       0      0      0 S   0.0   0.0   0:01.66 ksoftirqd/3
     32 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/3:0H-kblockd
     33 root      20   0       0      0      0 S   0.0   0.0   0:00.04 kdevtmpfs
     34 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 netns
     35 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_kthre
     36 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kauditd
     37 root      20   0       0      0      0 S   0.0   0.0   0:00.00 khungtaskd
     38 root      20   0       0      0      0 S   0.0   0.0   0:00.00 oom_reaper
     39 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 writeback
     40 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kcompactd0
     41 root      25   5       0      0      0 S   0.0   0.0   0:00.00 ksmd
     89 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kintegrityd
     90 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kblockd
     91 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 blkcg_punt_bio
     92 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 tpm_dev_wq
     93 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 ata_sff
     94 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 md
     95 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 edac-poller
     96 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 devfreq_wq
ubuntu@ubuntu:~/git/teensy_loader_cli$ kill 10890
 
Last edited:
Thanks Paul! Can confirm the new 1.54-beta6c version is now quicker than a quick thing.

Edit: Beta version installed on machine in OP. Just checked the new HP in my shop and the original loader version 1.53 loads quickly even though both are running 20.04.2. The new one is a fresh install, (with apt update and upgrade performed), and has less added than the other one that I've been using and installing stuff on for the last few months.
 
Last edited:
I've built the ARM 32 & 64 bit versions. Here are links to all 4 Linux installers.


ARM 32 bit
https://www.pjrc.com/teensy/td_154-beta6c/TeensyduinoInstall.linuxarm

ARM 64 bit
https://www.pjrc.com/teensy/td_154-beta6c/TeensyduinoInstall.linuxaarch64

x86 32 bit
https://www.pjrc.com/teensy/td_154-beta6c/TeensyduinoInstall.linux32

x86 64 bit
https://www.pjrc.com/teensy/td_154-beta6c/TeensyduinoInstall.linux64


All should start up quickly. All 4 have the fix for excessive CPU usage while idle. All 4 have the misplaced uploading progress bar bug.


I tested the ARM 32 bit version on a Raspberry Pi 4 running Raspbian Jesse, including uploading to a Teensy 4.0 several times. I also tested ARM 64 on a Jetson Nano running Ubuntu 18.04, but only just that Teensy Loader appeared quickly and didn't consume lots of CPU.
 
Tried new build on RPI4 running Ubuntu 64 bit ARM,

And the teensy app works :D

Tried the Simple USB keyboard example, where I added simple wait up to 5 seconds for serial, and commented out the Keyboard prints, and it built properly and programmed, but again after that could not open Serial terminal, nor automatically program again... Same issue I have seen on Ubuntu x86 64 on 18.04 and 20.04
Screenshot from 2021-02-20 13-06-48.jpg
 
Installing fresh Ubuntu on my PI now to see what happens. Using 20.04 LTS instead. Looked like 20.10 support ends april 2021. Using the Raspberry Pi imager then will do the updates.

And before you ask why fresh - forgot my password and can't get back in ....
 
Status
Not open for further replies.
Back
Top