A lot of our example sketches have a
line in setup(), to keep the board waiting until the USB is opened. This makes it a lot easier to debug a program because you get to see all the USB data output. If you want to run your Feather without USB connectivity, delete or comment out that line
A vast number of Itsy/Feather 'failures' are due to charge-only USB cables
We get upwards of 5 complaints a day that turn out to be due to charge-only cables!
Use only a cable that you know is for data syncing
If you have any charge-only cables, cut them in half throw them out. We are serious! They tend to be low quality in general, and will only confuse you and others later, just get a good data+charge USB cable.
A quality USB port is critical. Avoid plugging into USB keyboards and when possible use a USB-2 HUB to avoid USB3 issues.
No problem! You can 'repair' a bad code upload easily. Note that this can happen if you set a watchdog timer or sleep mode that stops USB, or any sketch that 'crashes' your board
- Turn on verbose upload in the Arduino IDE preferences
- Plug in Itsy or Feather 32u4/M0, it won't show up as a COM/serial port that's ok
- Open up the Blink example (Examples->Basics->Blink)
- Select the correct board in the Tools menu, e.g. Feather 32u4, Feather M0, Itsy 32u4 or M0 (physically check your board to make sure you have the right one selected!)
- Compile it (make sure that works)
- Click Upload to attempt to upload the code
- The IDE will print out a bunch of COM Ports as it tries to upload. During this time, double-click the reset button, you'll see the red pulsing LED that tells you its now in bootloading mode
- The board will show up as the Bootloader COM/Serial port
- The IDE should see the bootloader COM/Serial port and upload properly
This seems to happen when people select the wrong board from the Arduino Boards menu.
If you have a Feather 32u4 (look on the board to read what it is you have) Make sure you select Feather 32u4 for ATMega32u4 based boards! Do not use anything else, do not use the 32u4 breakout board line.
If you have a Feather M0 (look on the board to read what it is you have) Make sure you select Feather M0 - do not use 32u4 or Arduino Zero
If you have a ItsyBitsy M0 (look on the board to read what it is you have) Make sure you select ItsyBitsy M0 - do not use 32u4 or Arduino Zero
Theres two COM ports you can have with the 32u4/M0, one is the user port and one is the bootloader port. They are not the same COM port number!
When you upload a new user program it will come up with a user com port, particularly if you use Serial in your user program.
If you crash your user program, or have a program that halts or otherwise fails, the user COM port can disappear.
When the user COM port disappears, Arduino will not be able to automatically start the bootloader and upload new software.
So you will need to help it by performing the click-during upload procedure to re-start the bootloader, and upload something that is known working like "Blink"
UNO-type Arduinos have a seperate serial port chip (aka "FTDI chip" or "Prolific PL2303" etc etc) which handles all serial port capability seperately than the main chip. This way if the main chip fails, you can always use the COM port.
M0 and 32u4-based Arduinos do not have a seperate chip, instead the main processor performs this task for you. It allows for a lower cost, higher power setup...but requires a little more effort since you will need to 'kick' into the bootloader manually once in a while
This is likely because the bootloader is not kicking in and you are accidentally trying to upload to the wrong COM port
The best solution is what is detailed above: manually upload Blink or a similar working sketch by hand by manually launching the bootloader
You probably don't have Feather M0 selected in the boards drop-down. Make sure you selected Feather M0.
You probably don't have Feather M0 / Feather 32u4 selected in the boards drop-down. Make sure you selected Feather M0 (or Feather 32u4).
Make sure your Wing doesn't use pin #9 which is the analog sense for the lipo battery!
The charge LED is automatically driven by the Lipoly charger circuit. It will try to detect a battery and is expecting one to be attached. If there isn't one it may flicker once in a while when you use power because it's trying to charge a (non-existant) battery.
It's not harmful, and its totally normal!
The Arduino IDE gives me "Device Descriptor Request Failed"
This can require "manual bootloading".
If you ever get in a 'weird' spot with the bootloader, or you have uploaded code that crashes and doesn't auto-reboot into the bootloader, double-click the RST button to get back into the bootloader. The red LED will pulse, so you know that its in bootloader mode. Do the reset button double-press right as the Arduino IDE says its attempting to upload the sketch, when you see the Yellow Arrow lit and the Uploading... text in the status bar.
Don't click the reset button before uploading, unlike other bootloaders you want this one to run at the time Arduino is trying to upload