Why I'm Dropping Particle for Espressif

Why I'm Dropping Particle for Espressif

I've spent the last 2 years creating an Internet of Things product from scratch based on the Particle P1 module. Recently I made the decision to replace the P1 with an ESP32-WROOM module made by Espressif. Let's talk about why.

Why Particle In the First Place?

Before I get into the reasons why I'm redesigning off of Particle it will help to understand why I chose the P1 module in the first place. First and foremost, it was familiar. I was an original backer of the Spark Core on Kickstarter and have been using the platform from the very beginning. I would consider myself fairly expert in most things on the Particle platform. I even did a workshop at an open source conference showing people how to get started. I know a lot about the platform and ecosystem and when they released a "production" module it seemed like an easy choice. I wanted my focus to be on my product's value-add, not on figuring out all the nuances of an embedded platform. I had already done that for Particle. Turns out it's not so simple.

Another major reason I went with the P1 is because it's already FCC certified. This is a huge deal as a smaller IoT shop. It means you don't have to invest thousands of dollars on RF design and rounds of FCC testing. You can put the module into your product and, again, just focus on your value-add.

Finally, I went with Particle because they were building an ecosystem that I was hoping to leverage. I wasn't just buying the P1 module. I was buying into their entire platform and backend which allows for over-the-air firmware updates and device management among other things. This was yet again a feature set I didn't want to implement myself.

So What Went Wrong?

The bottom line is that the Particle ecosystem is not as production ready as I hoped. Warning signs started popping up almost immediately as I got into my product development but I assumed they were all normal hurdles in creating a product. I had to learn the hard way so hopefully my lessons can help someone else.

Tooling

In the beginning Particle garnered quick adoption by offering a lot of options for developers. There was the cloud IDE, local dev and command line options. Lots of options are great until you find out they all produce slightly different outputs and compile firmware differently. Projects that compiled in local dev didn't compile in the CLI. Later on Particle introduced the VS Code plugin known as Particle Workbench. Docker never really became a first class citizen although they tinkered with it some (this is my preferred method). In short the tooling has been all over the map although slightly more focused with the introduction of Workbench. This caused me headaches early on. Additionally, the most crucial piece of tooling, production programming, is severely lacking. So much so it gets its own section.

Production Programming - Not Even Close

It takes me almost 2 minutes to program a single product and that's with an automated script. First, the Particle DeviceOS is flashed in two parts and must match what your product firmware is compiled against. After that the correct Particle bootloader version needs to be flashed however this cannot be done in DFU mode as the other firmware parts. The device must be restarted and put into setup or listening mode. This requires button interaction. That's right, there is no way to get into that mode from DFU mode without physically touching the hardware. This also increases the BOM costs. My completely enclosed product has two buttons on the inside that are only used during programming. Once that's done you'd think I'd be ready to ship. Wrong. Due to some factory programming issues over 90% of my P1 modules shipped with a corrupt WiFi credentials file in flash. I discovered this after a few customers were unable to connect to WiFi. So I have to fix that by flashing an intermediate piece of firmware. The entire purpose of that firmware is to run a command to properly clear and reset that credentials file. Again, there is no automated or hands free way to do this. Another issue that most of my P1 devices had is that the factory Particle encryption key was invalid or corrupt. This is a separate key used to connect securely to the Particle cloud. I have to regenerate a valid key and program it into the device. Once we've made it this far we're finally ready to flash my actual product firmware. I calculated that if I got an order of 10,000 units it would take a person working solid 8 hour days with no breaks almost 42 days to program them all. Given that nobody works a perfect 8 hour day we're talking months just to program the devices.

Cost

I originally didn't think $12 a unit was a problem. Considering FCC certification and my perceived value of Particle Console (OTA, fleet management, etc) I thought it was a fair price. Until it wasn't. The first 100 devices you on-board to Particle Console are free. After that you have to pay for them. When I contacted sales I was told to expect about $1 a month per device to continue using the features of Particle Console. That's easy math. Sell a thousand devices and now you have a perpetual $1000/month bill to Particle. Good business for them, out of business for me. For my product the only feature I use is being able to update firmware over the air. Firmware updates are important for an IoT device but they follow an exponential decay. During early adoption you will likely be fixing minor bugs and adding features but as time goes on the frequency of those updates decreases. If I get to a point where I update a device twice a year I'm paying $6 per update per device. That's insane and completely unsustainable. Console does offer other things like device health and customer association but I don't need or use any of them and certainly can't pass on the $1 a month per device cost to my customers. In the end, the cost to use the platform is vastly disproportionate to what you get in return.

And The List Goes On

In addition to the problems outlined I spent $1500 to re-do a pilot run because of unclear documentation, couldn't get a firm answer to a simple datasheet question, found out that in common scenarios the P1 will never wake up from deep sleep, and was told once on a support ticket to "update to the latest firmware to see if that fixes it". Turns out that particular issue was a major DeviceOS bug that caused a production release to be pulled after I had already updated some of my customers to it. After almost 2 years I've come to the conclusion that the Particle ecosystem is, at best, a pro maker ecosystem. They have been unable to deliver a true production-ready experience and haven't delivered enough value for the cost.

That ESP32 Tho!

Ok, so what makes the ESP32 and Espressif different? Well, I'm hoping to write more about this in the future but this is what I have so far.

  • Hardware Specs: The ESP32 hardware is light years ahead of the P1 in terms of memory and capabilities. In addition to WiFi it also supports Bluetooth and has lower deep sleep current which is super important for my application.
  • FreeRTOS: Particle's DeviceOS, while open source, is being maintained by a very small group of people and has lost the race to FreeRTOS in terms of stability and features. ESP32 runs FreeRTOS out of the box
  • Documentation and Tooling: In the 20-30 hours I've spent in the Espressif ecosystem all of the documentation and tooling feel more polished. I'm not going to give it the production-ready stamp of approval yet but so far I have no complaints.
  • Production Programming: I haven't fully fleshed this out yet but so far everything is completely hands free. No buttons required and I haven't hit any of the myriad of other issues I did in Particle's ecosystem.
  • Longevity Commitment: You can find lots of complaints in the Particle forums about availability of P1 modules and given recent turbulence within the company you have to wonder how long the P1 will be supported. Espressif has a 12 year longevity commitment. They will be producing the ESP32-WROOM module until 2028. That gives you a lot of confidence as a product maker.
  • AWS: Because it runs FreeRTOS you can integrate with Amazon's AWS IoT offerings out of the box. This includes things like paying pennies for OTA updates and other features for which Particle overcharges.
  • FCC Certified: Like the P1 module, the ESP32-WROOM is also FCC certified.
  • Cost: Not only are the Particle Console features night and day more affordable through AWS or Azure but the module itself is a fraction of the cost. $3.80 compared to $12. In my case I need USB serial interaction. The P1 provides this out of the box while the ESP32 doesn't. Even adding the cost of an FTDI chip and supporting components I'm still at half the cost of the P1.

The Final Word

At the end of the day I'm grateful for Particle. They were the means by which I released my first hardware product. Going forward, however, they are still just a bit too "startup" for my comfort. Over the last 18 months they have faltered significantly. They launched Mesh and proceeded to shut it down. They created a Gen3 series of products which has massively undermined the quality of their "production" Gen2 products. Add recent news about layoffs and internal turbulence and you get a recipe for uncertainty about the future. My sense is that right now they are lost in the startup woods trying to figure out what they want to be when they grow up. Ultimately I lost confidence that they are the best option for me moving forward and the economics made it an easy decision to jump ship.

I look forward to the journey of learning more about the Espressif ecosystem and hope to share helpful findings from that journey. If you have any questions about either platform I'd love to chat and see if I can be of help.

Kevin Sidwar

Head of Engineering

5 年

For those that prefer to listen instead of read. Here is the episode of my podcast that this article was based on. https://anchor.fm/boring-startup/episodes/Why-Im-Dropping-Particle-for-Espressif-eb5nop

回复

要查看或添加评论,请登录

Kevin Sidwar的更多文章

  • What Qualifies You To Be a Product Owner?

    What Qualifies You To Be a Product Owner?

    Lately I've been thinking a lot about how a software development organization should be structured and what pieces are…

    5 条评论
  • Viral Attention

    Viral Attention

    How Snapchat and Social Media are Changing What "Viral" Means I have the conversation at least once a week. Everytime…

    1 条评论

社区洞察

其他会员也浏览了