<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jawad Mansoor</title>
    <description>The latest articles on DEV Community by Jawad Mansoor (@jawadyyy).</description>
    <link>https://dev.to/jawadyyy</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4048825%2F67986a1c-516d-4b3b-8f6a-f87c95a07ab1.png</url>
      <title>DEV Community: Jawad Mansoor</title>
      <link>https://dev.to/jawadyyy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jawadyyy"/>
    <language>en</language>
    <item>
      <title>ESP32-CAM won't flash with an FT232? Check which pin you're powering it from</title>
      <dc:creator>Jawad Mansoor</dc:creator>
      <pubDate>Mon, 27 Jul 2026 07:05:51 +0000</pubDate>
      <link>https://dev.to/jawadyyy/esp32-cam-wont-flash-with-an-ft232-check-which-pin-youre-powering-it-from-3pfn</link>
      <guid>https://dev.to/jawadyyy/esp32-cam-wont-flash-with-an-ft232-check-which-pin-youre-powering-it-from-3pfn</guid>
      <description>&lt;p&gt;I'm a Flutter developer. My final year project needs an ESP32-CAM, so a few weeks ago I bought one along with an FT232 programmer and a pack of female-to-female jumper wires. First time touching hardware.&lt;/p&gt;

&lt;p&gt;Here's how it went.&lt;/p&gt;

&lt;h2&gt;
  
  
  First, check which FT232 you have
&lt;/h2&gt;

&lt;p&gt;This matters more than anything else in this post, and it took me far too long to work out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"FT232" describes the chip, not the board.&lt;/strong&gt; The breakout boards around that chip differ, and the difference decides whether any of this works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The blue board:&lt;/strong&gt; the one I bought has a six-pin header: VCCIO, GND, TXD, RXD, RTS#, CTS#. &lt;strong&gt;VCCIO is the only pin that outputs power.&lt;/strong&gt; That's the one this post is about.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh2bsa8vg9qeji56v55ni.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh2bsa8vg9qeji56v55ni.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The red FTDI Basic:&lt;/strong&gt; the board in most ESP32-CAM tutorials has a &lt;strong&gt;separate 5V pin&lt;/strong&gt; in addition to VCCIO. Power and logic reference come out of two different pins.&lt;/p&gt;

&lt;p&gt;That extra pin is the whole ballgame. If you have the red board, most tutorials will work for you and you can probably stop reading. If you have the blue one, keep going.&lt;/p&gt;

&lt;h2&gt;
  
  
  The wiring everyone tells you to use
&lt;/h2&gt;

&lt;p&gt;Every tutorial and every doc I found said the same thing: VCCIO on the FT232 goes to the 5V pin on the ESP32-CAM. Ground to ground, TXD to U0R, RXD to U0T, GPIO0 pulled to ground while flashing.&lt;/p&gt;

&lt;p&gt;I wired it exactly like that and hit Upload.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Failed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I re-seated every wire. Failed. New USB cable. Failed. Different USB port. Different laptop. Failed, failed, failed. I was fairly sure I'd been sold a dead board.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it fails
&lt;/h2&gt;

&lt;p&gt;The problem is current, and it's in FTDI's own datasheet.&lt;/p&gt;

&lt;p&gt;The FT232 has a small regulator inside it. The datasheet says outright that its job is powering the chip's own USB transceiver and reset circuitry, not external logic and that you can pull &lt;strong&gt;50mA&lt;/strong&gt; from it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Fifty milliamps.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;An ESP32-CAM draws &lt;strong&gt;100–150mA&lt;/strong&gt; just to get through a flash. Once WiFi and the camera come up it goes &lt;strong&gt;past 300mA.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;VCCIO is a serial adapter's logic-reference pin that can spare a trickle of current. It was never built to power a board, and the ESP32-CAM is one of the hungrier things you could ask it to power.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is also where the tutorials mislead you.&lt;/strong&gt; The ones showing a wire into the ESP32-CAM's 5V pin are usually drawn with the red board, where that wire comes from a dedicated 5V pin fed by the USB bus. Same picture, different pin, completely different amount of current behind it. Nobody labels this, because on their board it just worked.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do not try the 3V3 pin
&lt;/h2&gt;

&lt;p&gt;Somewhere in the search results I found an article suggesting that if the 5V pin isn't working, try connecting VCCIO to the 3V3 pin instead.&lt;/p&gt;

&lt;p&gt;I tried it. &lt;strong&gt;The ESP32-CAM heated up.&lt;/strong&gt; Fast. Fast enough that I pulled the cable out on reflex.&lt;/p&gt;

&lt;p&gt;I don't recommend finding out how far that goes. If you're already starving the board of current, moving the wire to a different pin doesn't create current that wasn't there, it just changes how the board fails, and this failure mode involves heat.&lt;/p&gt;

&lt;p&gt;That was the point where I stopped trying to make the FT232 work.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I use now
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The ESP32-CAM-MB.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's a baseboard. The ESP32-CAM plugs directly into it, pin for pin no jumper wires at all. It has its own micro USB port, its own regulator sized for the module, and a reset button on it.&lt;/p&gt;

&lt;p&gt;Plug the module in, plug in USB, hit Upload. &lt;strong&gt;It works.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F113tgnfq3jtj3rx56jee.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F113tgnfq3jtj3rx56jee.jpg" alt=" " width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It cost me less than the FT232 did.&lt;/p&gt;

&lt;p&gt;I spent two evenings on jumper wires and forum threads, and the fix was a three dollar part that exists specifically because this problem is so common somebody productised the solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you already own the blue board
&lt;/h2&gt;

&lt;p&gt;You don't have to throw it away. Use it for serial only TXD, RXD, GND and power the ESP32-CAM's 5V pin from something that can actually supply current. A phone charger, a power bank, a second USB cable.** Tie the grounds together** or the serial line has no shared reference.&lt;/p&gt;

&lt;p&gt;That works. It's just two cables and a mess on your desk, and at that point the baseboard is easier.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I took from this
&lt;/h2&gt;

&lt;p&gt;Coming from app development, I'm used to errors that tell me what's wrong. A stack trace, a line number, something. Hardware gives you none of that. It just fails while looking completely fine, and you're left guessing.&lt;/p&gt;

&lt;p&gt;Two things I'd tell myself three weeks ago:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the datasheet before the eleventh tutorial.&lt;/strong&gt; The answer to my problem was one sentence in FTDI's own PDF, and I found it after two evenings of forum posts written by people whose setups weren't mine.&lt;/p&gt;

&lt;p&gt;And when a part keeps fighting you, c*&lt;em&gt;heck whether it's the same part everyone else is describing.&lt;/em&gt;* Mine had the same chip and the same name printed on it as the boards in the tutorials. It just didn't have the one pin that made those tutorials work.&lt;/p&gt;

</description>
      <category>esp32</category>
      <category>iot</category>
      <category>arduino</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
