diff options
Diffstat (limited to 'commandline/library/micronucleus_lib.c')
-rw-r--r-- | commandline/library/micronucleus_lib.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/commandline/library/micronucleus_lib.c b/commandline/library/micronucleus_lib.c index 6f1ac8d..462190b 100644 --- a/commandline/library/micronucleus_lib.c +++ b/commandline/library/micronucleus_lib.c @@ -89,7 +89,15 @@ int micronucleus_eraseFlash(micronucleus* deviceHandle, micronucleus_callback pr i += 0.01; } - if (res == -5) + /* Under Linux, the erase process is often aborted with errors such as: + usbfs: USBDEVFS_CONTROL failed cmd micronucleus rqt 192 rq 2 len 0 ret -84 + This seems to be because the erase is taking long enough that the device + is disconnecting and reconnecting. Under Windows, micronucleus can see this + and automatically reconnects prior to uploading the program. To get the + the same functionality, we must flag this state (the "-84" error result) by + converting the return to -2 for the upper layer. + */ + if (res == -5 || res == -84) return -2; if (res != 0) return -1; |