You want feedback. I’ve got feedback. Buckle up.
I bought two Redboard Nanos. My intention was to use them with Mbed, but since that is very new, and the Nano is barely mentioned on the mbed instructions page, I figured I’d start with Arduino.
I had a very hard time uploading code my code. It seems there was a very short window for me to hit the upload button to get the code to upload. Maybe 1/10 times it would succeed. I try different USB cables, different ports, different serial port rates. No luck. The boards are just flaky. Eventually, both boards stop accepting any code. Checking the forums, I see that some others are having similar problems. Re-burning the bootloader is the recommended fix. I can’t get it to work. I try at least 20 times on one board, a bit less on the second. I try a few more times with the artemis_firmware_uploader_gui.py. No luck. Now I’m regretting this experiment. Time to send the boards back.
Except that I’m stubborn… and too curious for my own good. So I solder a jtag header to board #1, hoping to see if I can figure out what’s going on. My Black Magic Probe can’t connect. Neither can my Segger J-Link. Now I’m angry at SparkFun, but mostly at myself, for not giving up a couple of hours ago.
On a whim, I try to burn the bootloader on board #2 using the gui. SURPRISE! It works. And now the board accepts uploads every time, without me having to hit the upload button at the exact right instant. I compile an mbed example. It works. Now I have mixed feelings, because I’ve verified that there’s a fix, but I’ve wasted half a day on this. The Apollo3 is a particularly good fit for my project, but I’m forced to wonder if SparkFun puts out buggy products.
I return my attention to board #1. I can’t get anything to work. The voltage regulator must have been outside the field of view of my soldering camera, because it has a big mark on it from the side of my iron. The board is dead. To be clear, this is my fault. I’m a coder, not a solderer. I should have had someone with better skills solder the jtag header. But, it’s Friday, and I’m working from home, so… A board has died.
It is possible that there’s something unusual about my system that makes this bootloader bug particularly nasty in my case, but from what I can tell, the bootloader is known to be buggy, at least for some users. There are a handful of posts in the forums from people having problems uploading, but I didn’t see anyone have trouble updating the bootloader (at least not when they selected the right rate for the serial port).
At any rate, the bootloader update fixed the problem (at least on the board I didn’t burn up), so I suspect this isn’t the case of a couple of bad boards. It’s also hard to see how it could be user error… those generally aren’t fixed by a bootloader update.
So what could you have done differently? A prominent notice on the docs page for the nano should say: “We’re very sorry, but some Nanos shipped with a buggy bootloader. This makes uploading code fail. If you have trouble uploading code, please update the bootloader. The bug sometimes makes it hard to update the bootloader, so it may take several tries to succeed. Be persistent, and it will be worth the effort.”
A couple of other things might help: An option for a Redboard Nano with the jtag header already soldered on. Better mbed instructions. It was not clear that the command line upload instructions would work for the Nano. Also, Instructions for getting rid of the bootloader altogether and uploading code via the jtag connector would be nice.
One last thing. This is the second time I’ve typed this. The first time, the page suddenly refreshed and lost all my content. It’s possible that I accidentally hit F5, but just in case this has happened to others…
So there’s your feedback. I’m still not sure if I’ll be back.