Share this project


Share this project

The MicroView is the first chip-sized Arduino compatible that lets you see what your Arduino is thinking using a built-in OLED display.
6,972 backers pledged $573,760 to help bring this project to life.

Setback: A $58,000 lesson in mid-volume manufacturing

Posted by Geek Ammo (Creator)

Hey Folks,

This week we learned our manufacturer SparkFun had shipped as many as 1,934 Microview units without a bootloader. This renders the unit effectively broken. :-( . We suspected something was up when we saw an elevated number of support inquiries with backers having issues uploading a sketch to their Microviews. Our CTO JP and I then immediately travelled around Sydney and the Blue Mountains (in Australia) capturing faulty units.

Testing MicroViews in the middle of the night after getting back from our faulty Microview capturing road trip.
Testing MicroViews in the middle of the night after getting back from our faulty Microview capturing road trip.

To the folks that are receiving broken Microviews over the next few days and weeks: We are really sorry to have messed up your first impressions of the Microview. SparkFun are going to make it right and will be shipping a replacement Microview for every defective unit that was shipped.

It's frustrating on many levels and especially because we've been so proud with SparkFun in shipping rewards early. You know what they say... pride comes before a fall.

You will be contacted by September 12th to let you know if you were or were not shipped a defective unit. SparkFun are still trying to establish how many units are affected. The worst case scenario is that 1,934 units need to be replaced outright. If you are part of the defective batch you will receive two units: one that has a broken bootloader (now and in the coming days) and one that works (by the beginning of November). If you’re willing to try, this is the perfect opportunity to learn some new skills: soldering and bootloader programming. Success means you’ll score a second working Microview, free of charge.

To the folks that received Microviews prior to July 18th and all backers of the Learning Kit tier, enjoy them. Your MicroViews should be fully functional. 

How can I tell if I have a defective unit? 

If you’ve got a Microview, follow all the steps to load a test sketch:

  • Install the FTDI drivers if necessary
  • Attach a Microview to the programmer 
  • Select Arduino Uno from the Arduino IDE drop-down menu 
  • Open the Examples->Blink sketch (or any sketch) 
  • Upload

If you follow all these steps and get the error:

avrdude: stk500_recv(): programmer is not responding


avrdude: ser_recv(): programmer is not responding


avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00

Then you know you’ve got a Microview that is missing its bootloader.

Who do I contact to get a replacement?

You don’t need to contact us, we will contact you if we find you’re in the defective batch. If you’ve got questions, concerns, comments, please send them to or We want to hear from you, whatever it is, but please give us at least a few days to respond.

When can I expect my replacement unit?

SparkFun have ramped up to fix all the Microview units they have in the building, build new Microviews, and get you a replacement as quick as they can. We’re aiming for the end of October, early November. Again, we’re really sorry to have messed up. Please sit tight while we build more Microviews.

Can I fix the bad unit once I get it?

Yes you can, but it’s not easy. In the next few weeks SparkFun will post a full tutorial to show you how to reprogram and recover a defective Microview unit. In the mean time here’s a breakdown of what is required.

This is the first faulty unit we captured. JP cracked it open and burning the bootloader fixed it.
This is the first faulty unit we captured. JP cracked it open and burning the bootloader fixed it.

First you need a programmer capable of programming an ATmega. If you have an Arduino, you can use it as a programmer. If you want a cheap programmer in general the Pocket Programmer or the Tiny AVR Programmer are a great option.

Next, six connections are required for in-circuit serial programming (ISP). Three of the connections are located on external pins (easy to connect), and three of the connections are small vias on the internal PCB. This means the you need to open the Microview unit and attach (by soldering or holding) three wires to vias on the board, as well as attaching three wires to the exposed pins.

Next you need to run avrdude with this specific HEX file to burn the new firmware (that includes a bootloader!) onto the ATmega328. Once the firmware is loaded make sure you can upload sketches.

If everything is good, disconnect the ISP connections and carefully repack the Microview into its housing and snap the lens back into place. 

Inserting the MicroView into it's enclosure.
Inserting the MicroView into it's enclosure.
Snapping the enclosure together.
Snapping the enclosure together.

Do a little dance, take a photo and tweet it to @sparkfun and @geekammo because you are so awesome. We will high-five you back.

How did this happen?

Microview in testing jig. This is where we burn the bootloader.
Microview in testing jig. This is where we burn the bootloader.

Over the past few months SparkFun have been building approximately 8,000 units for this Kickstarter. On July 18th, 2014, a new production firmware was created to better test the units. Unfortunately this new test firmware was defective and didn’t include the STK500 (aka Optiboot) bootloader.

Q. What is the bootloader?

A. The bootloader is a small piece of software that lets you run Arduino sketches on the ATmega chip without requiring additional hardware (such as an in system programmer or parallel programmer).

Part of SparkFun's Microview testing procedure document.
Part of SparkFun's Microview testing procedure document.

The test procedure correctly tested the Microview’s functionality (display graphics, toggled GPIOs, etc) but did not test the upload functionality (minor detail...). There is a reason for this: enumerating a COM port and uploading a sketch is much slower than pushing production firmware over SPI. Since 2011 SparkFun have been streamlining production by combining HEX files. This means they combine the HEX of the bootloader and the HEX of the production test code into one HEX file that gets programmed onto the final unit. SparkFun build nearly 90,000 products a month. This approach using combined HEX files has worked swimmingly for years. But you can see the Achilles' heel - if the HEX gets incorrectly formed it can be difficult to detect. On July 18th SparkFun started programming units with defective firmware and didn’t know it until August 17th, when customers started contacting us about the problem.

Why did SparkFun change the test procedure?

SparkFun modified the original test-code because they were experiencing larger than expected amperage draw while in test mode. The issue was that the Microviews were still in an active serial state, thus TX was sitting high, which was affecting the testing net that TX (DIO_1) is connected to. The only modification that was made to the test code was adding a serial.end() after the board receives the serial CMD from the test-bed to execute the self-test. 

What’s broken?

There are (worst case) 1,934 units that got programmed with test firmware but lack the STK500 (aka Optiboot) bootloader. The units are fully functional and should display the test sketch just fine. The problem is that there is no bootloader so you can’t upload a new sketch.

Am I in the bad batch?

Small batch of Microviews
Small batch of Microviews

SparkFun build batches of Microview 128 pieces at a time so there’s actually a large number of batch identifiers. They're still trying to pin down the exact batch numbers (there’s a lot of them) and how many units are still in the building. SparkFun have been doing a great job of building and shipping units ahead of schedule but we have a mixture of batches still in the building. Once SparkFun get everything figured out we will notify the backers that are affected. You can easily test your unit following the description above.

What did we learn?

1) No matter how much it costs, make it right with your backers. 1,934 units * $30 for the replacement unit and shipping worldwide = $58,020. This sucks, and we screwed up, and we’re going to do everything we can to make it right. Sorry for messing up that moment of joy when you get your Microview. We're working with SparkFun to get a replacement to you as quick as we can.

2) Don’t change production firmware mid-run. SparkFun have built hundreds of thousands of products, but in small batches. This is the first time that the stakes were so high. In the future, if we have to change the firmware we’ll send the new firmware through beta testers to make sure.

Testing the Microview and now bootloader
Testing the Microview and now bootloader

3) Test the bootloader. In the past SparkFun have not tested the bootloader because it required that we enumerate a COM port (which can take as long as 30 seconds) and send a test sketch (another 5-10 seconds). After the Microview error was discovered SparkFun quickly agreed that they should be testing to see if a bootloader is present. This test can be done by resetting the ATmega, sending characters 0x30 0x20, and waiting for a 0x14 0x10 response. This test can be done with a second ATmega on the test jig itself (no computer required) and adds very little time after the programming step.

4) Moving from low volume to mid-volume production requires a very different approach. SparkFun has made this type of mistake before (faulty firmware on a device) but it was on a smaller scale and we were agile enough to fix the problem before it became too large. As SparkFun started producing very large production runs they did not realize quality control and testing would need very different thinking. This was a painful lesson to learn but these checks and balances are needed. If it didn’t happen on Microview it would have happened on a larger production run someday in the future.

As the CEO of Geek Ammo, the buck stops with me. I’m personally sorry for the inconvenience this has caused you.

As always, please don't hesitate to contact me if you have any questions or queries whatsoever!




Only backers can post comments. Log In
    1. Missing avatar

      Dominique LEFEBVRE on

      Replacement unit received yesterday. Many thx to the micro view team !

    2. JP Liew on

      Hi @MemphisArtGuy AKA Charles Morgan, there are some delays while processing the replacement, I am not sure which tier have you back, to know your shipping status, could you email us your Kickstarter email and backer id to please?

    3. JP Liew on

      Hi @Scottchang could you email us your Kickstarter email and backer id to please?

    4. Missing avatar

      Scottchang on

      Hi, I am your foreign backer. I haven't received reward, nor the tracking number from you. Could you please help me check the status of my reward? Thank you.

    5. Missing avatar

      Raymond Blum

      Hi G{uy,al}s
      I received a defective MV and sadly managed to brick it while trying to burn the bootloader using my Arduino Mega as an ISP. I'm really glad to see you owning up and doing what you can to make it right but I've also got to say that spending an hour of my time and now waiting for several *more* weeks for a working MV is the opposite of a great experience. Sparkfun's date of Sept 12th to even inform me seems pretty far in the future, it seems that they would have some mapping of units to recipients that could come up with the list of affected parties on O(hours).

    6. fmotta on

      Yep - I love the professionalism that is engendered in the SFBay area as is shown by GeekAmmo!
      @GeekAmmo: Start another project and I'll probably back it! You are in a short list of Creators in that category.

    7. Pavel Suk on

      Hats down for your honest response. My device luckily works fine.

    8. alexandre caron on

      just followed the tutorial to flash the boot-loader by welding wire to the via of the board and hooked them to a arduino uno. Now it work !! Thank you !

    9. JP Liew on

      @Jerry, stk500 error is surely bootloader problem.

      @Kean if you have reflash the bootloader, try load MicroViewDemo from the MicroView library example. This will get rid of the SparkFun logo stuck at power on.

    10. Jerry Bocci on

      @JP, I had already tried uploading a simpler sketch (LED blinker), and got the "avrdude: stk500_getsync(): not in sync: resp=0x00" error.

      @Kean, I've tried it on several laptops, as well as a USP-power "wall wart" with measured output, with no change - the logo appears, but that's all that happens.

      I'm hoping that, once I can get some time in my lab, reflashing the bootloader (and demo) will fix this. I am REALLY looking forward to using this, and wish I'd ordered more!

    11. Kean

      @Jerry Bocci - I reflashed my two microviews and still see the same issue
      It actually seems to actually be a USB power issue, as the microview always starts fine if plugged into the programmer after the FTDI COM port is configured, but not if it is already in the programmer when that is plugged into USB

    12. Joseph on

      Damn, I wish mine was broken :(

    13. Austin St. Aubin on

      W00t!!! Got my'n working and have already put it to good use: ( )
      I like receiving merchandise that gives you the gratification of getting it working. Its like opening a present twice and knowing anther one is on its way. Happy, Happy, Happy.

    14. Kean

      @Jerry Bocci (& JP) I'm not sure if it is related to the broken bootloader, but I see the same problem with my two microviews. Sometimes they do start the demo, but mostly just stay on the SparkFun logo - so I'm assuming a reset issue of some sort related to the missing bootloader code.

    15. Missing avatar

      Felipe WT on

      Could you guys also post an update once SparkFun has contacted all the owners of defectives microviews? I have a defective one and so far no word from SparkFun :( Btw, thanks for the honesty and not trying to hide the facts!

    16. Missing avatar

      Richard Lafrance on

      The response to the bootloader 'oops' is terrific, and makes me even more glad that I sponsored this kickstarter project. Doing the 'right thing' seems a rarity these days. Your integrity speaks volumes. As soon as they are available, I plan to purchase several more MicroViews to tinker with. :)

    17. Weineng Too on

      Great product, effort and great people. May you guys never step on a lego.

    18. JP Liew on

      @Jerry Bocci, if you have just the SparkFun logo but nothing else happens, can you try upload the MicroViewDemo sketch please? If you have avrdude error as described in the official notice, then you have a bad bootloader. Hope this helps.

    19. Jerry Bocci on

      Quick question regarding the broken MicroViews (I have two of them, whee):

      My understanding was that, on a stock (non-broken) uView, the demo starts running as soon as the board has power - that is, as soon as I plug the USB cable into the computer. With my (two) broken uViews, the SparkFun logo displays, but nothing else happens. Is that part of the broken-ness?

      Looking forward to brushing off my bootloader loading skillz AND getting another two MicroViews! :)

    20. Jeff Williams on

      You guys get a net Big Thumbs Up for the update.

    21. Lisa Q. Fetterman on

      What a brave update to write. Very proud of this project's creators. You guys rock!

    22. John McLoughlin on

      Fantastic honestly, and amazing remedy! You guys rock! (Do more projects Kickstarter projects!)

    23. Alasdair Allan on

      I've written up a walkthrough of how to fix your MicroView if it's part of the bad batch,

    24. Russell Nelson on

      Marcus, you and Sparkfun have been awesomely honest with us. Thanks so much.

    25. Anubis on

      Hmm mine works fine with codebender so I assume it works fine with an Arduino IDE as well. However I'm going to try it too.
      Take care guys.
      Ps. any one got a weather notifier created for MicroView?

    26. Missing avatar

      Peter Dalmaris on

      Sorry to hear that, but well done for the way you handled it. If its any consolation, I received mine yesterday and it works very well, tested both with the Arduino IDE and

      Thanks for your efforts to you Marcus and your team.

    27. Frank Carver on

      This is so good it almost makes me wish I got one of the broken ones. Mine works fine, for the record.

      One thing I would add to the lessons learned is to expose the ISP pins if at all possible. I have lots of AVR and Arduino projects and I much prefer to program them using my USBTiny than mess around with bootloaders and serial poorts

    28. JP Liew on

      Hi @ojaskar, SparkFun will get in touch with you, please give them some time to sort it out. Cheers.

    29. Michał Nowak on

      Thanks for great update, it's truly heartwarming to see a company going so upfront and honest to their customers!
      About testing - why wouldn't you perform a full time-consuming (end-to-end) test on randomly picked one or two units from every batch? Doing so would not incur any significant delay and "the great bootloader mistake" would be detected almost immediately.

    30. ojaskar on


      I have got the problem, what can i do ? I am Beginner with arduino.....
      thanks a lot

    31. Osman EL-BABA

      Really overwhelmed with this Update honesty and ownership of an expensive mistake ... @Geek Ammo you get one more backer for life ... KS Community "you're awesome" and thanks to Michael for leading and sharing his repair experience. This post and all its comments made my day

    32. Missing avatar

      Rodney N on

      It's hard to have anything extra to say above and beyond all the positive words below. Congrats on owning up to an expensive mistake and providing the best outcome and opportunity for people to fix their existing microview's. As per people below, this commitment breeds fans for life.

    33. Missing avatar

      Anthony Low on

      >Michael Buffington

      I took apart a bit of stranded wire and put the strands through the TP vias. It was a lot easier than trying to position stiff wire:

      Also, I used this command line (taken from the SparkFun post comments):
      avrdude -P usb -b 19200 -c avrispmkii -p m328p -v -e -U flash:w:MicroView_combined_8-19-14.hex -U lock:w:0x0F:m

      A fingernail and thin tweezers helped to pop the cover off of the MicroView.

    34. Michael Buffington on

      I was able to upload the working bootloader on my first try.

      If you have another Arduino or an AVR programmer, I'd recommend giving it a try.

      I didn't even need to solder anything. After popping the clear window out I carefully tilted the OLED forward, found the three vias, figured out which was which, then got my programmer ready.

      From the programmer, I first made the following connections:

      5V to Vin (pin 16)
      GND to GND (pin 8)
      RST to RST (pin 1)

      Then I got ready to simply hold jumper wires to the vias.

      From the programmer to the Microview:

      MOSI to via 11
      MISO to via 12
      SCK to via 13

      Once I felt like the ends of the jumpers that were touching the vias weren't going to slip, I plugged in the programmer to my computer and ran avrdude like so:

      avrdude -c usbtiny -p atmega328p -U flash:r:MicroView_combined_8-19-14.hex

      Once it was done, I disconnected everything from the programmer, plugged the Microview back into its programmer, plugged that into USB. Then I uploaded a sketch using the Arduino IDE and it worked!

      Once it worked, I tilted the OLED back into place, popped the window back in, and proceeded to marvel at the cube demo I'd uploaded.

      Given that it was so easy (at least for me, with some experience), it makes GeekAmmo's response all the more impressive. I've bought micro controllers with the same problem before, and the lack of care they showed was pitiful. More so compared to GeekAmmo. I'm a fan for life.

    35. Liam Kennedy on

      First. Congrats on how you have handled this issue. The detail of your update is extraordinary and answers every question I had on my mind about how this could have happened. It makes perfect sense. And I can see how you (and Sparkfun) will not let this happen again.

      One question. I am in the "Learning Kit + Spare Microview (2xMicroviews)" - Aug delivery. You only seem to mention "single Microview" rewards in your update. Did this issue impact this reward level too?

    36. JP Liew on

      Thank you so much for your nice word, for being so forgiving and being a great stakeholder in this journey.

    37. David Ockey on

      Thank you so very much. It takes a lot of guts to do what you have done, and I really appreciate how involved in this process you have kept your backers. As someone affected by this error I heavily appreciate the steps being taken to correct it.

    38. Missing avatar

      Dan Sanderson on

      With mea culpas like these, I almost want more mistakes to be made. :) Looking forward to the repair tutorial! (I'm not in the non-working group so I shouldn't speak to loudly, just saying I like learning about this stuff.)

    39. Missing avatar

      Rim21 on

      So wait there are 1,934 non-working microviews distributed all around the world? All affected people will get a fully functioning microview in the days to come? No one outside of the Geek Ammo and Spark Fun are impacted for long?

      That is awesome!

      But I keep coming back to the 1,934 non-working microviews that are non-working BUT are fixable. Could we as the community help?

      Caution an idea is brewing ahead.....

      What if we the community with possibly the help of the inventor and Supplier formed an 'exchange'?

      What if we the community had pockets of people all around the world who were willing to breathe life into the non-working microviews perhaps only for the cost of shipping?

      What if we the now microview community did this as an ongoing endeavour and created a wave of microview awesomeness exchanging non-working microviews for working ones?

      What if we operated on a simple principal of 1 item in must trigger 1 item out and all transactions were visible somehow?

      What if those of us that only need the original order amount were prepared to offer up a non-working microview to the 'exchange' for distribution to an education endeavour etc thereby not breaking the principal of 1 item in triggers 1 item out?

      There are 1,934 non-working microview opportunities!

      Oh how does this help Geek Ammo and Spark Fun - just maybe the microview awesomeness wave generates more interest and more orders and over time the $ loss becomes more bearable.

      Anyway just a thought.

    40. Missing avatar

      deleted on

      This user's account has been deleted.

    41. AlmostHuman

      There are other Kickstarter projects who could learn from you. Thank you for the honesty. I'm patient - especially when I know exactly why there is a delay. Take your time and get it right.

      Good luck!

    42. Paul Murphy on

      I should have my Microviews tomorrow so I'm guessing I'll be in the bad batch. I have one of these neat little adapters for programming 328P IC's, you hold it to the chip and the adapters pogo-pins connect directly to the chips legs...…

      Do you think this adapter might make bootloader reprogramming easier for me, or is the 328P blocked in some way?

    43. Missing avatar

      Darian Brown on

      @John O'Donahue - i completely agree. Proactively correct an issue to impressive. If only other companies could follow in these guys footsteps. Big thumbs up to these guys :)

    44. JP Liew on

      Thanks @Andy for offering your help. Cheers.

    45. JP Liew on

      @Michael your pinouts are correct. No need to remove the PCB from the bottom enclosure. You can either directly solder on 11,12,13 or use pogopins. Cheers.

    46. Missing avatar

      John O'Donahue on

      Kudos to Marcus & Geekammo for being up front about the problem. Anyone can make a mistake. Being proactive about fixing it breeds customer loyalty.

    47. David Thomas on

      My MicroView worked ok out of the box; but when loading sketches from Arduino 1.0.5 the device would upload OK, but the program would run briefly and stop, touching the RST pin would start it briefly, then nada. After taking it (the Microview) apart, and checking all the joints, I then tried loading the latest MicroView libraries from GitHub to the Arduino libraries folder, recompiling/reloading the sketches and everything was fine.

    48. Michael Buffington on

      I was able to upload the MicroView_combined_8-19-14.hex bootloader to the Microview using my AVR Pocket Programmer without error.

      That said, I'm still not able to upload sketches. Getting the same stk500_recv() error I was getting before. Waiting for a response from the GeekAmmo folks. In the meantime, I might try flashing it again just to be certain I was getting a false positive from avrdude.