I am having trouble getting Outboard DFU working with my current setup. I have the following connections between the Notecarrier and ESP32:
Notecarrier AUXRX → ESP32 TX
Notecarrier AUXTX → ESP32 RX
Notecarrier AUX3 → ESP32 GPIO 0
Notecarrier AUX4 → ESP32 RST
I’ve been able to get to the point in the process of the Notecarrier trying to flash the ESP32. I see the ESP32 being put into DFU mode and “waiting for download”. I then wait for the Notecarrier to flash the device but nothing happens. I have connected an oscilloscope to the Notecarrier AUXTX pin to make sure data is being sent. When the AUXTX is connected to the ESP32 RX pin, I see the logic levels change from 3.3V to roughly 3V. However, if I leave AUXTX floating and don’t connect it to the ESP32 RX pin, I see the full logic level shift from 3.3V to 0V when data is being sent. I’m confused here at what is pulling up the AUXTX pin when it is connected to the ESP32 RX pin to prevent data from being sent correctly. When I flash the ESP32 over UART from my computer, I see the ESP32 RX pin logic level shift from 3.3V to 0V normally on my oscilloscope. Does anyone have any insight on what is happening here? I’ve searched all over the Blues forum and other ESP32 related forums to try and find an answer.
Well, it sounds like you are doing everything right, but in situations like this a picture may be more revealing. Are you able to snap a photo of your wiring and setup? Maybe something obvious will appear.
Also, which version of the Notecard are you using, and which version of it’s firmware?
Also, are you using one of our SDKs? If so, which one?
I am using the Notecard Cellular LTE Cat-1 | North America running firmware version 5.3.1.16292.
I am using an Arduino environment with the Blues Wireless Notecard Arduino library version 1.4.1.
Thanks for the help, let me know if you need more information from me.
Wow, nice diagrams! Honestly, that looks pretty good.
I would try swapping around the power. The Notecard is staying on and performing the DFU, so I would make it the primary, or at least provide it with it’s own battery.
Otherwise, I would be curious if the TX/RX lines you’ve chosen are the ones used to write to the flash. Do you happen to have a schematic or pin out for your ESP32-S3?
That’s off the top of my head. If those suggestions don’t bear fruit, then I will try to dig deeper with you.
Also, it won’t fix your problem, but it’s definitely worth updating note-arduino. It’s had quite I few stability enhancements.
It’s interesting the U0TXD and U0RXD are holding the lines high. That makes me think you should try the other interface U1TXD and U1RXD on pins 17 and 18.
I have tried the U1TXD and U1RXD interface on pins 17 and 18 and did not have success. The U1TXD pin was not held high though just for reference. It seems like I should be using UART0 based on the boot mode the ESP32 is being put into (DOWNLOAD(USB/UART0)).
I can confirm that the RST pin on my board resets the device when it is pulled LOW. I proved this out by connecting my RST pin to GND and saw the ESP32 then reset.
Have you tried running ODFU without anything connected to the USB port?
I’m afraid you may need to remove resistors R7 and R9 to prevent USB from interfering with ODFU. However, if you do this, then you will almost certainly lose the ability to flash firmware over USB. Personally, I would have two of these devices handy before I proceed.
I had tried running ODFU without anything connected to the USB port a few times and never had success.
I just removed R7 and R9 on one of my boards and was able to successfully perform ODFU. It seems I will need to select a different ESP development board that does not have the USB to UART bridge as pictured in the screenshot you sent.
Do you agree that I would need to find an ESP32 development board that does not have the USB to UART bridge in order to perform ODFU? Since that IC is interfering with the RX/TX on the ESP32. Unfortunately, it looks like all Espressif development boards have this bridge on them. I say unfortunately because they are very easy to source and usually have large numbers in stock. The project I am working on may eventually require hundreds to thousands of these boards.
First, I’ll start with telling you that any suggestion I make is made in a vacuum, because I have no idea about constraints of your business. With that being said, I will gladly hazard a guess.
It sounds like you are planning to take a product to production with 100’s or 1000’s of boards. Surely, you don’t want your production devices to have USB access in the field; that sounds like an enormous security vulnerability. If this is the case, then disabling the UART bridge will not be a problem. Otherwise, If you plan to design your own PCB, then you can just omit the UART bridge, and have a programming port connected to UART0. Then you can program the device at the factory and use the Notecard to deploy firmware updates subsequently.
That’s just my two cents without knowing anything about your business, and it should be taken with a grain of salt.
Hi Marcel, I am facing “Notecard.h” not found in espressIf/ESPIDF framework and my dev environment is VSCODE + Platformio + espidf and development board is ESP32-S3-WROOM-2-N32R8V. Could you please help if you were faced this kind of issue? As per this thread conversion, you seem to be using espressif.