Page 1 of 1

Erratic behaviour on ctrl-D

Posted: Thu Jan 11, 2018 6:58 am
by pythoncoder
I've been using Pyboards since the early days and am experiencing an odd behaviour which seems to have started in the last few months. I'm interested to hear if anyone else has seen this.

It has proved impossible to reproduce reliably and it occurs quite infrequently. I initially blamed uasyncio and put the problem on the back burner - despite failing to see how uasyncio could possibly have this effect. But I've found it can occur after running simple short scripts. Some of these were trivial conventional Python so I can rule out any weirdness with hardware, interrupts or callbacks. The sequence is:
  • Issue ctrl-D.
  • Issue ctrl-E and paste some code.
  • Issue ctrl-D - code runs correctly.
  • Go and have a cup of tea - it seems more prone to happening after a delay.
  • Issue ctrl-D prior to doing something else.
After the last ctrl-D I (rarely) get a blank line with no prompt. Occasionally it soft resets but fails to mount the SD card. This can always be rectified with further ctrl-D's but sometimes there is a delay of several seconds before I get a response.

Re: Erratic behaviour on ctrl-D

Posted: Thu Jan 11, 2018 10:11 pm
by dhylands
Just guessing here, but its probably due to some interrupt which isn't being turned off as part of doing the soft-reset.

Re: Erratic behaviour on ctrl-D

Posted: Fri Jan 12, 2018 9:37 am
by pythoncoder
That would be my thought if I were programming hardware devices. But in many cases the sequence is power up the board, run a simple Python script (perhaps to deal with a forum user's query) then leave it while I read some more messages. Next time I use the REPL it's (occasionally) in this state.

I was mainly wondering if anyone else had seen this. It would seem not. I'll try using a different board. The one I'm using for this purpose has had regular firmware updates and the problem has persisted so it's not an issue with a particular build.

Re: Erratic behaviour on ctrl-D

Posted: Sat Jan 20, 2018 8:16 am
by pythoncoder
I've come to the conclusion that this is a hardware problem with one Pyboard. I replaced the USB cable, tried different USB ports, then tried another PC and the problem persists. The Pyboard is in one of Damien's anodized cases and has never been connected to external hardware - I use it downstairs on my laptop for code development and for answering support queries. So I'm confident it hasn't suffered electrical abuse.

It's not a showstopper. The workround is to issue ctrl-D after running any code. If it annoys me enough I'll buy a replacement. But the symptom is odd. It is as if running any code sets up some kind of long delay interrupt which, when triggered, causes a response to ctrl-D to take many seconds and then (sometimes) to fail to mount the SD card.

Here I powered up the PC and the Pyboard. I ran a simple code sample to completion and left it at the REPL while I ate my evening meal. I then issued ctrl-D. There was a delay of about 10 seconds before this occurred:

Code: Select all

>>> 
PYB: sync filesystems
PYB: soft reboot
PYB: can't mount SD card
MSC disabled in boot.py: can't mount drives
MicroPython v1.9.3-240-ga275cb0 on 2018-01-16; PYBv1.1 with STM32F405RG
Type "help()" for more information.
>>> 
It booted off the Flash rather than the SD card as evidenced by the message "MSC disabled in boot.py: can't mount drives" which is a print statement in /flash/main.py. A second ctrl-D fixed this:

Code: Select all

PYB: sync filesystems
PYB: soft reboot
MicroPython v1.9.3-240-ga275cb0 on 2018-01-16; PYBv1.1 with STM32F405RG
Type "help()" for more information.
>>> 
No MSC message: it had booted off the SD card and was working normally. It never fails when running code, only at the REPL after code has run to completion. Weird.

Re: Erratic behaviour on ctrl-D

Posted: Mon Jan 29, 2018 12:01 pm
by pythoncoder
To wrap this up I've done more testing over a period and found:
  • The Pyboard exhibits the problem with a Sandisk and a Kingson SD card.
  • It works reliably with a Samsung card.
  • A different Pyboard exhibited the problem with the Sandisk card.
This is odd as the cards themselves are reliable as are the Pyboards.

The workround is simple so I don't plan to pursue this further, but I thought it worth putting on record in case others encounter it.

Re: Erratic behaviour on ctrl-D

Posted: Tue Jan 30, 2018 6:10 pm
by dhylands
This could be some type of timing issue, where certain cards require more or less time to initialize and the code isn't providing enough time.

Re: Erratic behaviour on ctrl-D

Posted: Wed Jan 31, 2018 6:02 am
by pythoncoder
Yes, it's undoubtedly an SD card issue. But it never happens on power up, and it never happens if I issue ctrl-D soon after running code. There has to be a delay of many minutes between running code and issuing ctrl-D.