Yeah, hardware is indeed not too hard if you have a trivial hardware project and ignore all the hard stuff.

Complexity-wise this is probably the easiest board one could imagine. It's an off-the-shelf MCU module, a 1:1 copy of the MIDI circuit from the specification, and some ports wired straight to the MCU. Throw in a trivial I2C-connected RTC and HSM for good measure. You could probably design this in an afternoon. But indeed: that is a good thing. Not everything has to be complicated, and plenty of people are willing to pay for simple products.

On the other hand: what is the cost for that?

The USB-A Host port has ESD protection, but as far as I can tell MIDI Out and SD do not. Sooner or later this will result in some static-prone user frying their expensive board. Have you got a proper Customer Support / aftersales pipeline yet? How many units did you reserve for warranty replacement? Luckily you've got a huge margin, so a few replacement boards shouldn't bankrupt you.

Similarly, the MIDI ports seem to be using low-double-digit series resistors for the MIDI Out current loop - in 0402 form factor. As the spec says: short the port and they'll draw over 0.5W, which a 0402 can't dissipate. To be fair, the exact circuitry is a bit hard to tell from the image, but will this mean they'll catch fire?

The AMS1117 is also an interesting choice. It's a classic option so it is often seen in beginner tutorials, but it is absolutely terrible[0], and with the capacitors used you shouldn't be surprised to eventually run into stability issues. It might work Just Fine for 99% of units, but the 1% will have weird undiagnosable heisenbug issues.

From a UX perspective I'd also question the use of a coin cell battery for the RTC: it'll eventually run dry or even start leaking. A supercap would've been a more durable and convenient option - especially considering the "always leave it plugged in and forget it" use case. Or, if you need a battery anyways: go for li-ion so it can be used on-the-go. Similarly: USB-B for Power In in 2026? That's just lazy. USB-C is trivial to add with a 5-minute-guide and would've been cheaper. The USB-A Host port is just about excusable, though: doing that in USB-C is a bit harder. And the Power In port not being usable for a connection to a host PC and telling people to buy some sketchy adapter on Amazon? Understandable considering the MCUs peripherals, but a disappointment.

And then there's the elephant in the room: certification. It seems like you just... didn't? Which is understandable for a small hobby project! But making it EMI/EMC compliant is by far the hardest part of designing market-ready products. You can't just completely ignore all the stuff involved in making it compliant with FCC/CE/UKCA/whatever rules and call it "not so hard". It's the difference between baking a pie for your birthday party, and opening a bakery.

Your hardware project wasn't hard because you've only done the easy stuff. And kudos for shipping - many people don't make it even remotely this far. Especially using an injection-molded housing is quite the achievement! The startup costs for that make it a real showstopper for many small-scale projects, and making mistakes can easily bankrupt you.

But this is where the actual adventure starts: scaling it to 25k / 250k units. You basically have to start from scratch and do 10x as much work. Meanwhile, China is pumping out $10 clones for your $250 recorder. Sure, you put DRM in it, but is your software moat really wide enough to protect you?

Many congratulations on your achievement, but please understand that writing this blog post is almost naively premature. The hard part hasn't even started yet.

[0]: https://www.reddit.com/r/esp32/comments/1m7ne4i/psa_avoid_us...

I appreciate the critiques!

First, so far, there have been 0 failures in the field. My email address is on the website, the app, and the first page of the instruction sheet, so I'd probably know if there were.

But since it's fun, I'll address some of these :) I'm not flying by the seat of my pants here as much as you expect.

- The ESP32-S3 includes ±2 kV ESD, which is respectable. Adding more is a bit precautionary IMO, but I did add it in some places where the user is more likely to touch metal (like the USB ports). The sdcard's metal housing is not exposed.

- The AMS1117 is just more available than the alternatives. Again, no failures yet so seems like the right tradeoff was made here.

- Supercaps don't last long enough for my liking. A CR2032 can go for 10+ years. A supercap, only weeks. I want correct dates even if the device is left unpowered for months.

- The 0603 47ohm resistor is a good callout. Worth beefing that up. But at 3.3v and 232 mW it's not a fire hazard. It will fail open.

- USB-B for power was very intentional. It's a great firm connector and more importantly prevents users from plugging it into their piano wrong. Many of my customers are in their 70s or older.

- USB-A for data was made for manufacturing simplicity, but again, USB-C is too complicated for many of my users. I'd only switch to USB-C if both ports could be used interchangeably, but they can't be / it's not worth the complexity.

- As for the software moat, time will tell. You can't stave off competition forever!

- The device is FCC and CE compliant.

Again, I actually do appreciate your critiques!

> The ESP32-S3 includes ±2 kV ESD, which is respectable.

This might not quite mean what you think it means, by the way. In practice it is almost always just a property of the IP macro they use for the physical GPIO design, and its functionality is not tested - at all.

The reason for this "eh, good enough" approach is that it is intended for potential shocks during manufacturing: they don't want it to definitely die during a freak shock in an ESD-controlled environment. The rating is only for single shocks (so no repeats, as you'd see in the wild) and only for 2kV (not the 15kV you'd see in the wild, let alone the odd 30kV one for static-prone people) because that's all it is going to encounter during assembly.

I made the exact same mistake with one of my first commercial designs. And then after a while the reports of weird cases of single-pin GPIO failures started rolling in...

> The AMS1117 is just more available than the alternatives.

Keep in mind that this is both a blessing and a curse. It is more available because there's a giant number of clones, all of which are going to behave slightly differently. Your design with MLCC capacitors is outside of the regular operating parameters. It might work fine now, but don't be surprised if it starts failing on the next production run because the fab substituted it for a different AMS1117 clone to save a few cents.

At 2500 units your run is big enough to order whole reels of parts. There are dozens of drop-in replacements for the AMS1117 which are perfectly fine with low-ESR capacitors. Considering your sales price you should be able to afford splurging 5 more cents on a proper modern alternative from a reputable brand, so why take the risk?

When making decisions like those it is important to ask yourself one crucial question: can your brand survive both the financial and the PR blowback of, say, a 10% failure rate on your next batch? When you are selling a premium product at a premium price - and you are - your customers expect premium quality as well. Ironically, you literally can't afford to cheap out on parts.

> But at 3.3v and 232 mW it's not a fire hazard. It will fail open

"Fail open" in practice means "catches fire". Will it spread to other parts? Probably not, if everything goes well! PCBs are fairly hardy (the "FR" in FR4 stands for "flame retardant", after all), your parts are fairly spaced-out, and there's even a chance you might've used an overkill self-extinguishing plastic for the housing. But can you afford to ignore the potential risk? How will your customers react when it does an Nvidia 12VHPWR and the freak 0.001% failure is suddenly front-page news for your community?

Hardware design isn't merely about making it work. Things like design for manufacture/assembly (kudos on the one-screw method, by the way!) are just as important - as is designing it for reliability. Your work isn't done when it functions, but when it can't reasonably fail in any way that matters.