Digispark tiny fails to upload

I am trying to upload to a digispark tiny. The configuration is

[env:digispark-tiny]
platform = atmelavr
board = digispark-tiny
framework = arduino

I start the upload and then insert the digispark when asked to:

$ pio run -t upload
Processing digispark-tiny (platform: atmelavr; board: digispark-tiny; framework: arduino)
--------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/digispark-tiny.html
PLATFORM: Atmel AVR (3.4.0) > Digispark USB
HARDWARE: ATTINY85 16MHz, 512B RAM, 5.87KB Flash
DEBUG: Current (simavr) On-board (simavr)
PACKAGES: 
 - framework-arduino-avr-digistump 1.7.2 
 - tool-micronucleus 1.250.210222 (2.50) 
 - toolchain-atmelavr 1.70300.191015 (7.3.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 24 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Checking size .pio/build/digispark-tiny/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [          ]   1.8% (used 9 bytes from 512 bytes)
Flash: [=         ]   9.7% (used 582 bytes from 6012 bytes)
Configuring upload protocol...
AVAILABLE: micronucleus
CURRENT: upload_protocol = micronucleus
Uploading .pio/build/digispark-tiny/firmware.hex
> Please plug in the device (will time out in 60 seconds) ... 
> Device search timed out!
*** [upload] Error 1

But somehow it does not find the device.
Any suggestions?

Maybe I need to update the bootloader? But reading the docs I don’t quite see how to do this.

Did you plug the digispark-tiny board only in after the Please plug in the device message appears? The device only stays in bootloader mode for a limited time after startup.

Also, on Windows you need to have drivers installed: DigistumpArduino/tools/Digistump_Drivers at master · ArminJo/DigistumpArduino · GitHub. Without the libusb / WinUSB driver being installed for the USB device that the bootloader opens, micronucleus cannot interact with it. That is also written in GitHub - micronucleus/micronucleus: ATTiny usb bootloader with a strong emphasis on bootloader compactness..

I plugged the board in only after the message appeared. I remembered the short time flashing is possible.

I am not on Windows but on macOS.

But I just checked on my old x86 macOS machine where flashing from the Arduino IDE worked without a hitch. I cannot remember I installed drivers for it there.

/Applications/Arduino.app/Contents/Java/arduino-builder -dump-prefs -logger=machine -hardware /Applications/Arduino.app/Contents/Java/hardware -hardware /Users/tcurdt/Library/Arduino15/packages -tools /Applications/Arduino.app/Contents/Java/tools-builder -tools /Applications/Arduino.app/Contents/Java/hardware/tools/avr -tools /Users/tcurdt/Library/Arduino15/packages -built-in-libraries /Applications/Arduino.app/Contents/Java/libraries -libraries /Users/tcurdt/Documents/Arduino/libraries -fqbn=digistump:avr:digispark-tiny -ide-version=10813 -build-path /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_build_599769 -warnings=none -build-cache /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_cache_944446 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.micronucleus.path=/Users/tcurdt/Library/Arduino15/packages/digistump/tools/micronucleus/2.0a4 -prefs=runtime.tools.micronucleus-2.0a4.path=/Users/tcurdt/Library/Arduino15/packages/digistump/tools/micronucleus/2.0a4 -prefs=runtime.tools.avr-gcc.path=/Users/tcurdt/Library/Arduino15/packages/arduino/tools/avr-gcc/4.8.1-arduino5 -prefs=runtime.tools.avr-gcc-4.8.1-arduino5.path=/Users/tcurdt/Library/Arduino15/packages/arduino/tools/avr-gcc/4.8.1-arduino5 -verbose /Users/tcurdt/Documents/Arduino/Blink/Blink.ino
/Applications/Arduino.app/Contents/Java/arduino-builder -compile -logger=machine -hardware /Applications/Arduino.app/Contents/Java/hardware -hardware /Users/tcurdt/Library/Arduino15/packages -tools /Applications/Arduino.app/Contents/Java/tools-builder -tools /Applications/Arduino.app/Contents/Java/hardware/tools/avr -tools /Users/tcurdt/Library/Arduino15/packages -built-in-libraries /Applications/Arduino.app/Contents/Java/libraries -libraries /Users/tcurdt/Documents/Arduino/libraries -fqbn=digistump:avr:digispark-tiny -ide-version=10813 -build-path /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_build_599769 -warnings=none -build-cache /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_cache_944446 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.micronucleus.path=/Users/tcurdt/Library/Arduino15/packages/digistump/tools/micronucleus/2.0a4 -prefs=runtime.tools.micronucleus-2.0a4.path=/Users/tcurdt/Library/Arduino15/packages/digistump/tools/micronucleus/2.0a4 -prefs=runtime.tools.avr-gcc.path=/Users/tcurdt/Library/Arduino15/packages/arduino/tools/avr-gcc/4.8.1-arduino5 -prefs=runtime.tools.avr-gcc-4.8.1-arduino5.path=/Users/tcurdt/Library/Arduino15/packages/arduino/tools/avr-gcc/4.8.1-arduino5 -verbose /Users/tcurdt/Documents/Arduino/Blink/Blink.ino
Using board 'digispark-tiny' from platform in folder: /Users/tcurdt/Library/Arduino15/packages/digistump/hardware/avr/1.6.7
Using core 'tiny' from platform in folder: /Users/tcurdt/Library/Arduino15/packages/digistump/hardware/avr/1.6.7
Detecting libraries used...
/Users/tcurdt/Library/Arduino15/packages/arduino/tools/avr-gcc/4.8.1-arduino5/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -w -x c++ -E -CC -mmcu=attiny85 -DF_CPU=16500000L -DARDUINO=10813 -DARDUINO_AVR_DIGISPARK -DARDUINO_ARCH_AVR -I/Users/tcurdt/Library/Arduino15/packages/digistump/hardware/avr/1.6.7/cores/tiny -I/Users/tcurdt/Library/Arduino15/packages/digistump/hardware/avr/1.6.7/variants/digispark /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_build_599769/sketch/Blink.ino.cpp -o /dev/null -DARDUINO_LIB_DISCOVERY_PHASE
Generating function prototypes...
/Users/tcurdt/Library/Arduino15/packages/arduino/tools/avr-gcc/4.8.1-arduino5/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -w -x c++ -E -CC -mmcu=attiny85 -DF_CPU=16500000L -DARDUINO=10813 -DARDUINO_AVR_DIGISPARK -DARDUINO_ARCH_AVR -I/Users/tcurdt/Library/Arduino15/packages/digistump/hardware/avr/1.6.7/cores/tiny -I/Users/tcurdt/Library/Arduino15/packages/digistump/hardware/avr/1.6.7/variants/digispark /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_build_599769/sketch/Blink.ino.cpp -o /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_build_599769/preproc/ctags_target_for_gcc_minus_e.cpp -DARDUINO_LIB_DISCOVERY_PHASE
/Applications/Arduino.app/Contents/Java/tools-builder/ctags/5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_build_599769/preproc/ctags_target_for_gcc_minus_e.cpp
Compiling sketch...
/Users/tcurdt/Library/Arduino15/packages/arduino/tools/avr-gcc/4.8.1-arduino5/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -MMD -mmcu=attiny85 -DF_CPU=16500000L -DARDUINO=10813 -DARDUINO_AVR_DIGISPARK -DARDUINO_ARCH_AVR -I/Users/tcurdt/Library/Arduino15/packages/digistump/hardware/avr/1.6.7/cores/tiny -I/Users/tcurdt/Library/Arduino15/packages/digistump/hardware/avr/1.6.7/variants/digispark /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_build_599769/sketch/Blink.ino.cpp -o /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_build_599769/sketch/Blink.ino.cpp.o
Compiling libraries...
Compiling core...
Using previously compiled file: /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_build_599769/core/pins_arduino.c.o
Using precompiled core: /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_cache_944446/core/core_digistump_avr_digispark-tiny_cbc80be2e328099fe3a964ff815463d6.a
Linking everything together...
/Users/tcurdt/Library/Arduino15/packages/arduino/tools/avr-gcc/4.8.1-arduino5/bin/avr-gcc -Os -Wl,--gc-sections -mmcu=attiny85 -o /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_build_599769/Blink.ino.elf /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_build_599769/sketch/Blink.ino.cpp.o /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_build_599769/core/pins_arduino.c.o /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_cache_944446/core/core_digistump_avr_digispark-tiny_cbc80be2e328099fe3a964ff815463d6.a -L/var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_build_599769 -lm
/Users/tcurdt/Library/Arduino15/packages/arduino/tools/avr-gcc/4.8.1-arduino5/bin/avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_build_599769/Blink.ino.elf /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_build_599769/Blink.ino.eep
/Users/tcurdt/Library/Arduino15/packages/arduino/tools/avr-gcc/4.8.1-arduino5/bin/avr-objcopy -O ihex -R .eeprom /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_build_599769/Blink.ino.elf /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_build_599769/Blink.ino.hex
/Users/tcurdt/Library/Arduino15/packages/arduino/tools/avr-gcc/4.8.1-arduino5/bin/avr-size -A /var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_build_599769/Blink.ino.elf
Sketch uses 712 bytes (11%) of program storage space. Maximum is 6012 bytes.
Global variables use 9 bytes of dynamic memory.
/Users/tcurdt/Library/Arduino15/packages/digistump/tools/micronucleus/2.0a4/launcher -cdigispark --timeout 60 -Uflash:w:/var/folders/2f/5svvd41d4tv8tmyhh1c_rjgc0000gn/T/arduino_build_599769/Blink.ino.hex:i 
Running Digispark Uploader...
Plug in device now... (will timeout in 60 seconds)
> Please plug in the device ... 
> Press CTRL+C to terminate the program.
> Device is found!
connecting: 16% complete
connecting: 22% complete
connecting: 28% complete
connecting: 33% complete
> Device has firmware version 1.6
> Available space for user applications: 6012 bytes
> Suggested sleep time between sending pages: 8ms
> Whole page count: 94  page size: 64
> Erase function sleep duration: 752ms
parsing: 50% complete
> Erasing the memory ...
erasing: 55% complete
erasing: 60% complete
erasing: 65% complete
> Starting to upload ...
writing: 70% complete
writing: 75% complete
writing: 80% complete
> Starting the user app ...
running: 100% complete
>> Micronucleus done. Thank you!

Did you install the Arduino IDE on your current Mac too and tried to upload to the board? Maybe it has a sideeffect of installing something.

Maybe. But I somehow doubt that. More likely I installed something on the old machine and forgot :slight_smile:
I guess it would be control test - but I really want to keep using pio for it.

I’ve re-read https://digistump.com/wiki/digispark/tutorials/connecting

It seems like a driver isn’t required for the mac - but the USB3 port could be the problem. I’ll see if a USB hub makes a difference.

Now look at that!

Building .pio/build/digispark-tiny/firmware.hex
Configuring upload protocol...
AVAILABLE: micronucleus
CURRENT: upload_protocol = micronucleus
Uploading .pio/build/digispark-tiny/firmware.hex
> Please plug in the device (will time out in 60 seconds) ... 
> Device is found!
connecting: 16% complete
connecting: 22% complete
connecting: 28% complete
connecting: 33% complete
> Device has firmware version 1.6
> Available space for user applications: 6012 bytes
> Suggested sleep time between sending pages: 8ms
> Whole page count: 94  page size: 64
> Erase function sleep duration: 752ms
parsing: 50% complete
> Erasing the memory ...
erasing: 55% complete
erasing: 60% complete
erasing: 65% complete
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
Error opening bus 002 device 002: Device not configured
>> Eep! Connection to device lost during erase! Not to worry
>> This happens on some computers - reconnecting...
>> (!) Automatic reconnection not working. Unplug and reconnect
   device usb connector, or reset it some other way to continue.
>> Reconnected! Continuing upload sequence...
> Starting to upload ...
writing: 70% complete
writing: 75% complete
writing: 80% complete
> Starting the user app ...
running: 100% complete
>> Micronucleus done. Thank you!

Not great - but it worked. With a USB hub.