0

Playground Express Bootloader Question
Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.

Playground Express Bootloader Question

by mwg72 on Sun Sep 03, 2017 11:27 pm

Had my Playground express for awhile now everything has been working fine. I loaded CircuitPython on it when I received it. It exposes itself as a drive and runs code as expected.

However, I can't get it into bootloader mode. I double press the reset button and all I get is a solid red LED and the first neopixel is bright white. I've tried different PCs, different cables but, can't seem to get back to bootloader.

Any tips?

Thanks

Matt

mwg72
 
Posts: 14
Joined: Thu Nov 26, 2015 2:31 pm

Re: Playground Express Bootloader Question

by danhalbert on Mon Sep 04, 2017 10:02 pm

You have to double-click it quite fast. I have to use my fingernail. But I'd guess you're doing that, but do try again. If you do double-click, does the CIRCUITPY drive go away, but CPLAYOOT does not appear?

danhalbert
 
Posts: 69
Joined: Tue Aug 08, 2017 12:37 pm

Re: Playground Express Bootloader Question

by mwg72 on Tue Sep 05, 2017 4:47 pm

I've tried double clicking slow / fast / medium etc etc. The CircuitPy drive goes away. The first neopixel goes bright white and the red led lights up solid. The CPLAYBOOT drive never shows up and looking in device manager there are no serial ports / usb devices (that would be the cpx)

Oddly I can reset it and it boots back into circuit python and everything works fine, I just can't seem to get it into bootloader mode.

mwg72
 
Posts: 14
Joined: Thu Nov 26, 2015 2:31 pm

Re: Playground Express Bootloader Question

by danhalbert on Tue Sep 05, 2017 5:07 pm

That should work; it's odd it doesn't. It's possible yours is old enough it doesn't have a UF2 bootloader or it has a defective one. In any case, here are two files that you can upload to install the latest version of the UF2 bootloader. I tested both of these on a CPX and they both worked. You just need to pick one way. You will need to reload CircuitPython after using either of these:

https://www.dropbox.com/s/uxm6e5uu8rygf ... 3.bin?dl=0
Using bossac, upload this file to your CPX. Sample command line for Linux. It will be similar for other operating systems:
$ bossac -evwR update-bootloader-cpx-1.23.bin

OR

https://www.dropbox.com/s/tg571ugqyv279 ... 3.ino?dl=0
Compile and upload this file in a recent version of Arduino, after setting the Board to Adafruit Circuit Playground Express, and setting the port appropriately.

danhalbert
 
Posts: 69
Joined: Tue Aug 08, 2017 12:37 pm

Re: Playground Express Bootloader Question

by mwg72 on Tue Sep 05, 2017 7:43 pm

Trying the Arduino IDE path I get:

Code: Select all | TOGGLE FULL SIZE
C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\Matt\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\Matt\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Matt\Documents\Arduino\libraries -fqbn=arduino:samd:adafruit_circuitplayground_m0 -ide-version=10803 -build-path C:\Users\Matt\AppData\Local\Temp\arduino_build_286482 -warnings=none -build-cache C:\Users\Matt\AppData\Local\Temp\arduino_cache_776189 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.2.0 -prefs=runtime.tools.openocd.path=C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\openocd\0.9.0-arduino6-static -prefs=runtime.tools.bossac.path=C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\bossac\1.7.0 -prefs=runtime.tools.arm-none-eabi-gcc.path=C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1 -prefs=runtime.tools.CMSIS-Atmel.path=C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.1.0 -prefs=runtime.tools.CMSIS.path=C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\CMSIS\4.5.0 -verbose C:\Users\Matt\Downloads\cpx-fix\update-bootloader-cpx-1.23\update-bootloader-cpx-1.23.ino
C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\Matt\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\Matt\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Matt\Documents\Arduino\libraries -fqbn=arduino:samd:adafruit_circuitplayground_m0 -ide-version=10803 -build-path C:\Users\Matt\AppData\Local\Temp\arduino_build_286482 -warnings=none -build-cache C:\Users\Matt\AppData\Local\Temp\arduino_cache_776189 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.2.0 -prefs=runtime.tools.openocd.path=C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\openocd\0.9.0-arduino6-static -prefs=runtime.tools.bossac.path=C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\bossac\1.7.0 -prefs=runtime.tools.arm-none-eabi-gcc.path=C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1 -prefs=runtime.tools.CMSIS-Atmel.path=C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.1.0 -prefs=runtime.tools.CMSIS.path=C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\CMSIS\4.5.0 -verbose C:\Users\Matt\Downloads\cpx-fix\update-bootloader-cpx-1.23\update-bootloader-cpx-1.23.ino
Using board 'adafruit_circuitplayground_m0' from platform in folder: C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.6.16
Using core 'arduino' from platform in folder: C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.6.16
Detecting libraries used...
"C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1/bin/arm-none-eabi-g++" -mcpu=cortex-m0plus -mthumb -c -g -Os -w -std=gnu++11 -ffunction-sections -fdata-sections -fno-threadsafe-statics -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions  -w -x c++ -E -CC -DF_CPU=48000000L -DARDUINO=10803 -DARDUINO_SAMD_CIRCUITPLAYGROUND_EXPRESS -DARDUINO_ARCH_SAMD  -DCRYSTALLESS -DARDUINO_SAMD_ZERO -D__SAMD21G18A__ -DUSB_VID=0x239A -DUSB_PID=0x8018 -DUSBCON '-DUSB_MANUFACTURER="Adafruit"' '-DUSB_PRODUCT="Circuit Playground Express"' "-IC:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\CMSIS\4.5.0/CMSIS/Include/" "-IC:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.1.0/CMSIS/Device/ATMEL/" "-IC:\Users\Matt\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.6.16\cores\arduino" "-IC:\Users\Matt\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.6.16\variants\circuitplay" "C:\Users\Matt\AppData\Local\Temp\arduino_build_286482\sketch\update-bootloader-cpx-1.23.ino.cpp" -o "nul"
Generating function prototypes...
"C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1/bin/arm-none-eabi-g++" -mcpu=cortex-m0plus -mthumb -c -g -Os -w -std=gnu++11 -ffunction-sections -fdata-sections -fno-threadsafe-statics -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions  -w -x c++ -E -CC -DF_CPU=48000000L -DARDUINO=10803 -DARDUINO_SAMD_CIRCUITPLAYGROUND_EXPRESS -DARDUINO_ARCH_SAMD  -DCRYSTALLESS -DARDUINO_SAMD_ZERO -D__SAMD21G18A__ -DUSB_VID=0x239A -DUSB_PID=0x8018 -DUSBCON '-DUSB_MANUFACTURER="Adafruit"' '-DUSB_PRODUCT="Circuit Playground Express"' "-IC:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\CMSIS\4.5.0/CMSIS/Include/" "-IC:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.1.0/CMSIS/Device/ATMEL/" "-IC:\Users\Matt\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.6.16\cores\arduino" "-IC:\Users\Matt\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.6.16\variants\circuitplay" "C:\Users\Matt\AppData\Local\Temp\arduino_build_286482\sketch\update-bootloader-cpx-1.23.ino.cpp" -o "C:\Users\Matt\AppData\Local\Temp\arduino_build_286482\preproc\ctags_target_for_gcc_minus_e.cpp"
"C:\Program Files (x86)\Arduino\tools-builder\ctags\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\Users\Matt\AppData\Local\Temp\arduino_build_286482\preproc\ctags_target_for_gcc_minus_e.cpp"
Compiling sketch...
"C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1/bin/arm-none-eabi-g++" -mcpu=cortex-m0plus -mthumb -c -g -Os -w -std=gnu++11 -ffunction-sections -fdata-sections -fno-threadsafe-statics -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -MMD -DF_CPU=48000000L -DARDUINO=10803 -DARDUINO_SAMD_CIRCUITPLAYGROUND_EXPRESS -DARDUINO_ARCH_SAMD  -DCRYSTALLESS -DARDUINO_SAMD_ZERO -D__SAMD21G18A__ -DUSB_VID=0x239A -DUSB_PID=0x8018 -DUSBCON '-DUSB_MANUFACTURER="Adafruit"' '-DUSB_PRODUCT="Circuit Playground Express"' "-IC:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\CMSIS\4.5.0/CMSIS/Include/" "-IC:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.1.0/CMSIS/Device/ATMEL/" "-IC:\Users\Matt\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.6.16\cores\arduino" "-IC:\Users\Matt\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.6.16\variants\circuitplay" "C:\Users\Matt\AppData\Local\Temp\arduino_build_286482\sketch\update-bootloader-cpx-1.23.ino.cpp" -o "C:\Users\Matt\AppData\Local\Temp\arduino_build_286482\sketch\update-bootloader-cpx-1.23.ino.cpp.o"
Compiling libraries...
Compiling core...
Using previously compiled file: C:\Users\Matt\AppData\Local\Temp\arduino_build_286482\core\variant.cpp.o
Using precompiled core
Linking everything together...
"C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1/bin/arm-none-eabi-gcc"  "-LC:\Users\Matt\AppData\Local\Temp\arduino_build_286482" -Os -Wl,--gc-sections -save-temps  "-TC:\Users\Matt\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.6.16\variants\circuitplay/linker_scripts/gcc/flash_with_bootloader.ld" "-Wl,-Map,C:\Users\Matt\AppData\Local\Temp\arduino_build_286482/update-bootloader-cpx-1.23.ino.map" --specs=nano.specs --specs=nosys.specs -mcpu=cortex-m0plus -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -o "C:\Users\Matt\AppData\Local\Temp\arduino_build_286482/update-bootloader-cpx-1.23.ino.elf" "C:\Users\Matt\AppData\Local\Temp\arduino_build_286482\sketch\update-bootloader-cpx-1.23.ino.cpp.o" "C:\Users\Matt\AppData\Local\Temp\arduino_build_286482\core\variant.cpp.o" -Wl,--start-group "-LC:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\CMSIS\4.5.0/CMSIS/Lib/GCC/" -larm_cortexM0l_math -lm "C:\Users\Matt\AppData\Local\Temp\arduino_build_286482/..\arduino_cache_776189\core\core_arduino_samd_adafruit_circuitplayground_m0_377efc3419cc597c411c78fe9666336d.a" -Wl,--end-group
"C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1/bin/arm-none-eabi-objcopy" -O binary  "C:\Users\Matt\AppData\Local\Temp\arduino_build_286482/update-bootloader-cpx-1.23.ino.elf" "C:\Users\Matt\AppData\Local\Temp\arduino_build_286482/update-bootloader-cpx-1.23.ino.bin"
"C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1/bin/arm-none-eabi-objcopy" -O ihex -R .eeprom  "C:\Users\Matt\AppData\Local\Temp\arduino_build_286482/update-bootloader-cpx-1.23.ino.elf" "C:\Users\Matt\AppData\Local\Temp\arduino_build_286482/update-bootloader-cpx-1.23.ino.hex"
Sketch uses 18312 bytes (6%) of program storage space. Maximum is 262144 bytes.
Forcing reset using 1200bps open/close on port COM4
PORTS {COM1, COM4, } / {COM1, COM4, } => {}
PORTS {COM1, COM4, } / {COM1, COM4, } => {}
PORTS {COM1, COM4, } / {COM1, } => {}
PORTS {COM1, } / {COM1, } => {}
PORTS {COM1, } / {COM1, } => {}
PORTS {COM1, } / {COM1, } => {}
PORTS {COM1, } / {COM1, } => {}
PORTS {COM1, } / {COM1, COM4, } => {COM4, }
Found upload port: COM4
C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\bossac\1.7.0/bossac.exe -i -d --port=COM4 -U true -i -e -w -v C:\Users\Matt\AppData\Local\Temp\arduino_build_286482/update-bootloader-cpx-1.23.ino.bin -R


It sits here for about 4 minutes and then:
An error occurred while uploading the sketch



Using the bossac path:
C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\bossac\1.7.0>bossac -evwR c:\users\Matt\Downloads\cpx-fix
Auto scan for device failed
Try specifying a serial port with the '-p' option

C:\Users\Matt\AppData\Local\Arduino15\packages\arduino\tools\bossac\1.7.0>bossac -p com4 -evwR c:\users\Matt\Downloads\cpx-fix\update-bootloader-cpx-1.23.bin
I hit enter there about 30 minutes ago and its just sitting there, hasn't timed out yet.


The device is on Com4, I can see it in device manager and I can access the repl thru it. Not sure where to go from here but, if you have any ideas let me know.

mwg72
 
Posts: 14
Joined: Thu Nov 26, 2015 2:31 pm

Re: Playground Express Bootloader Question

by danhalbert on Tue Sep 05, 2017 8:27 pm

Try double-clicking before using bossac. Also try doubAnd if you double-click does the COM port change?

How did you get CircuitPython on to begin with? Did you use bossac?

What version of Windows are you using? Could you try a different Windows machine? Don't load any drivers to begin with - just try bossac. Copy it from the other machine if you can.
If Windows 10, uninstall any existing Adafruit and Teensy Windows drivers.

Also, on a whim, try a different USB cable, and try a USB2 port if that's a USB3 port.

danhalbert
 
Posts: 69
Joined: Tue Aug 08, 2017 12:37 pm

Re: Playground Express Bootloader Question

by mwg72 on Tue Sep 05, 2017 11:16 pm

When I double click on it the red led lights up solid, the com port disappears and trying to run bossac I get:

bossac -p com4 -evwR c:\users\Matt\Downloads\cpx-fix\update-bootloader-cpx-1.23.bin
No device found on com4

there is no com4 port and no other com port shows up (ie the com port number didn't change on my)

Originally, (a couple of months ago) I double clicked the reset button and copied the Circuit Python files to the CPLAY drive.

For whatever reason I can't seem to get back into bootloader mode.

As for trying on different PC's, I've tried it on two different Win10 devices and one Win 7 box. Same results.

as a note, I've even tried just power up the cpx via a usb power adapter and it won't go into bootloader mode. The red LED lights solid and the first neopixel is bright white.

moving to a a usb 2.0 port = no change, I've tried several different usb cables but I'm pretty sure that it's not related to them as my other devices connect fine over them.

I have two Feather M0 express boards and can get both of them back into bootloader mode.

mwg72
 
Posts: 14
Joined: Thu Nov 26, 2015 2:31 pm

Re: Playground Express Bootloader Question

by danhalbert on Wed Sep 06, 2017 9:38 am

Let's just replace the Circuit Playground Express, since other similar devices work just fine in the same circumstances. Send an email support@adafruit.com with a link to this thread, saying a replacement has been authorized, and they'll take it from there.

The only other thing I'd suggest trying is double-clicking after you've started bossac and while it's trying to open COM4, but it sounds like COM4 never appears.

danhalbert
 
Posts: 69
Joined: Tue Aug 08, 2017 12:37 pm

Re: Playground Express Bootloader Question

by mwg72 on Wed Sep 06, 2017 5:12 pm

I will do that, thanks for the help.

mwg72
 
Posts: 14
Joined: Thu Nov 26, 2015 2:31 pm

Re: Playground Express Bootloader Question

by danhalbert on Tue Sep 12, 2017 11:40 pm

Hi - we may have a workaround to the Windows 7 driver problems. It has to do with plugging in the board and doing the installation in a particular order, carefully. See https://learn.adafruit.com/adafruit-fea ... boards-faq

If you do try it, let us know if it works for you. Thanks!

danhalbert
 
Posts: 69
Joined: Tue Aug 08, 2017 12:37 pm

Re: Playground Express Bootloader Question

by mwg72 on Mon Sep 18, 2017 11:43 pm

I've been out of town for work but, wanted to follow up on this.

Adafruit sent me a replacement and I have no problems getting into bootloader mode on the new board. I've re-tested with the original board and still can't get it to work correctly.

Thanks so much for support.

Matt

mwg72
 
Posts: 14
Joined: Thu Nov 26, 2015 2:31 pm

Re: Playground Express Bootloader Question

by danhalbert on Mon Sep 18, 2017 11:56 pm

Glad to hear! I thought it might be another problem, involving the drivers. In case it recurs: we've come up with a new driver package which we believe should fix certain Windows 7 problems involved in seeing the CPLAYBOOT drive. You should not see these problems on Windows 10 in general.

You just need to uininstall the existing drivers and install the new package. Follow the revised procedure here: https://learn.adafruit.com/adafruit-fea ... boards-faq. It's the same URL as above but it's much simpler.

danhalbert
 
Posts: 69
Joined: Tue Aug 08, 2017 12:37 pm

Please be positive and constructive with your questions and comments.