Error fixes
Paste the error you see into search (Ctrl K), or pick it below. Each fix lists the quickest checks first.
[BH1750] ERROR: received NACK on transmit of addressThe BH1750 didn’t answer at the expected address. 0x23 with ADDR low, 0x5C with ADDR high. Pass the address to begin() and check SDA/SCL.[E][ssl_client.cpp:37] _handle_error(): [start_ssl_client():273]: (-9984) X509 - Certificate verification failed, e.g. CRL, CA or signature check failedThe ESP32 does not trust the server’s certificate. Give WiFiClientSecure the site’s root CA (not the site certificate), or use the built-in CA bundle.[E][Wire.cpp:499] requestFrom(): i2cRead returned Error 263Error 263 is an I2C timeout (ESP_ERR_TIMEOUT): the device didn’t answer or held the clock too long. Check wiring and pull-ups, slow the bus, raise the timeout.[Errno 13] could not open port /dev/ttyUSB0: [Errno 13] Permission denied: '/dev/ttyUSB0'Your Linux user isn't allowed to open the serial port. Join the dialout (or uucp) group, log out and back in — and give Snap/Flatpak IDEs serial access.[Errno 16] could not open port /dev/cu.wchusbserial1420: [Errno 16] Resource busy: '/dev/cu.wchusbserial1420'On macOS a CH340 board can appear twice — Apple's driver and WCH's driver fight over it. Use one driver, pick the cu.usbserial port and close other serial apps.[HTTP] GET... failed, error: connection refusedHTTP code -1 means the TCP connection never opened: localhost in the URL, wrong IP or port, a PC firewall, or an https:// URL. Fix the address before the code.[HTTP] GET... failed, error: read TimeoutThe server accepted the connection but answered too slowly. Raise http.setTimeout(), follow redirects for Google Apps Script, and keep the request small.#error "Please specify your BLYNK_TEMPLATE_ID and BLYNK_TEMPLATE_NAME"The Blynk defines must come before #include <BlynkSimpleEsp32.h>. Copy the three lines from the Blynk console’s Device Info to the very top of the sketch.#error "This library only supports boards with an AVR, SAM, SAMD, NRF52 or STM32F4 processor."Arduino’s Servo library doesn’t support the ESP32 (old versions refuse, new ones fail on core 3.x). Install ESP32Servo and include <ESP32Servo.h>.A fatal error occurred: Could not connect to an Espressif device on any of the 1 available serial ports.esptool was run without --port and couldn't find an ESP on any port. Give it the port explicitly, put the board in download mode, and check the driver.A fatal error occurred: Could not open COM5, the port is busy or doesn't exist.Another program has the serial port open, or (on Linux) your user lacks permission. Close the other app or add yourself to the dialout group.A fatal error occurred: Failed to connect to ESP32: Download mode successfully detected, but getting no sync reply: The serial TX path seems to be down.The ESP32 entered download mode but never heard esptool. The PC→chip line (adapter TX → RX0) is broken, blocked by a module on GPIO3, or the adapter is dead.A fatal error occurred: Failed to connect to ESP32: No serial data received.esptool sees the port but the ESP32 never answers. Usually the board is not in download mode, the cable is charge-only, or another app holds the port.A fatal error occurred: Failed to connect to ESP32: Wrong boot mode detected (0x13)! The chip needs to be in download mode.esptool reset the ESP32 but it booted your sketch instead of the bootloader. GPIO0 was not held low — fix auto-reset or press BOOT while connecting.A fatal error occurred: Failed to set baud rate 921600. The driver may not support this rate.The USB-serial driver rejected the high upload speed. Set Upload Speed to 115200 or 460800, or update the CH340/PL2303 driver.A fatal error occurred: Failed to start stub flasher. There was no response.esptool loaded its helper into ESP32 RAM but it never said hello. Usually a reset during the hand-over, an unstable supply, or a counterfeit/odd module.A fatal error occurred: Failed to write to target RAM (result was 01070000: Operation timed out)The ROM bootloader timed out while esptool loaded its stub into RAM. Enter download mode by hand, lower the upload speed and fix power and cable.A fatal error occurred: File firmware.bin (length 2133504) at offset 65536 will not fit in 2097152 bytes of flash. Use --flash_size argument, or change flashing address.The image is bigger than the flash size esptool was told about. Pick the right Flash Size and partition scheme, or flash a merged binary at 0x0.A fatal error occurred: Invalid head of packet (0x1B): Possible serial noise or corruption.esptool receives garbled bytes instead of a valid reply — serial noise, a too-high upload speed, or something else talking on the port.A fatal error occurred: MD5 of file does not match data in flash!The upload finished but the check after writing failed, so the flash content is wrong. Usually power, flash mode or a counterfeit/worn flash chip.A fatal error occurred: Packet content transfer stopped (received 8 bytes)The bootloader stopped mid-packet, often right after the baud rate switch. Lower the upload speed, fix power and remove loads on TX/RX.A fatal error occurred: Serial data stream stopped: Possible serial noise or corruption.The ESP32 stopped answering in the middle of a packet. Lower the upload speed, use a better cable and remove anything that can reset the board mid-upload.A fatal error occurred: The chip stopped responding.esptool lost contact with the ESP32 in the middle of flashing. Power dips, a loose cable or a native-USB board resetting are the usual causes.A fatal error occurred: This chip is ESP32-S3 not ESP32. Wrong --chip argument?esptool reached a different ESP chip than the board you selected. Pick the board that matches the chip printed on the module and upload again.A fatal error occurred: Timed out waiting for packet contentThe ESP sent the start of a reply but the rest never arrived. Typical with high upload speeds, weak cables and boards that brown out during flashing.A fatal error occurred: Unable to verify flash chip connection (No serial data received.).esptool reached the bootloader but the link dropped while it checked the flash chip. Usually power sag, a GPIO6–11 conflict, or a too-high upload speed.A fatal error occurred: Unexpected CHIP magic value 0xffffffff. Failed to autodetect chip type.esptool connected but read nonsense when identifying the chip — serial noise, a non-Espressif device on the port, or a chip that reset mid-read.A serial exception error occurred: Cannot configure port, something went wrong. Original message: PermissionError(13, 'A device attached to the system is not functioning.', None, 31)Windows refused to configure the COM port because the USB device stopped responding. Replug, change cable or port, and update the CH340/CP210x driver.A serial exception error occurred: ClearCommError failed (PermissionError(13, 'The device does not recognize the command.', None, 22))The COM port vanished under esptool — usually a native-USB ESP32-S3 or C3 that reset or crashed mid-upload. Enter download mode by hand and retry.A serial exception error occurred: Write timeoutesptool could not push bytes to the USB port in time. Usually a native-USB ESP32-C3/S3 that crashed or slept, a flaky cable, or a CH340 wedged after a crash.abort() was called at PC 0x400d4f3b on core 1Something in the core or a library hit a fatal check and called abort(). Decode the backtrace; common causes are memory, watchdog and bad Wi-Fi/BLE use.analogRead() always returns 4095 on ESP324095 is the top of the ESP32 ADC: the pin is at or above ~3.1 V, wired to a 5 V sensor output, or floating. Divide 5 V signals and use an ADC1 pin.analogRead() on an ADC2 pin returns 0 or 4095 when Wi-Fi is onanalogRead() on GPIO 0, 2, 4, 12–15 or 25–27 returns 0 or garbage once Wi-Fi starts. Those are ADC2 pins; move the sensor to ADC1 (GPIO 32–39).appears to be a RP2040 device in BOOTSEL mode, but picotool was unable to connect. You may need to install a driver via Zadig.Windows has no WinUSB driver on the Pico's bootloader interface. Install it with Zadig (RP2 Boot, Interface 1) — or on Linux add the udev rules.Attempting MQTT connection...failed, rc=-2 try again in 5 secondsrc=-2 means the TCP connection to the broker failed before MQTT even started: wrong IP or port, broker not running, localhost, or a PC firewall.Attempting MQTT connection...failed, rc=5 try again in 5 secondsThe broker accepted the connection but refused the login. Pass a user name and password to connect(), check them, and make sure the client ID is unique.avrdude: butterfly_recv(): programmer is not respondingThe ATmega32U4 bootloader closed before avrdude reached it. Double-tap RESET to open the 8-second window, and select the right 3.3 V/5 V board.avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.fischl.de' product='USBasp'avrdude can't see the USBasp programmer. On Windows bind it to libusbK/WinUSB with Zadig; on Linux add a udev rule. Check the stick shows up in Device Manager.avrdude: Expected signature for ATmega328P is 1E 95 0Favrdude read a valid chip — just not an ATmega328P. It's a 328PB, an ATmega168, or an LGT8F328P clone. Select the matching board core instead of using -F.avrdude: jtagmkII_initialize(): Cannot locate "flash" and "boot" memories in descriptionA harmless warning when uploading to the Arduino Nano Every or Uno WiFi Rev2. If the upload still fails, it's the port or the 1200-baud reset — not this line.avrdude: ser_open(): can't open device "\\.\COM3": The system cannot find the file specified.The COM port selected in the IDE doesn't exist any more. Replug the board, re-select the port, and check the driver and cable.avrdude: ser_open(): can't set com-state for "\\.\COM4"Windows can't configure the USB-serial port — usually an outdated or fake-chip-incompatible CH340 driver. Reinstall the WCH driver, replug, and try another port.avrdude: ser_send(): write error: sorry no info availThe USB-serial link dropped while avrdude was writing. Look for a board that resets or loses power mid-upload, a bad cable, or a short on 5 V.avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00The upload to an Uno or Nano times out with stk500_getsync. Usually the wrong port or processor, something on pins 0/1, or a clone needing the old bootloader.avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x1cA non-zero resp means avrdude got bytes, just the wrong ones — usually a baud mismatch (old vs new Nano bootloader) or your running sketch talking on D0/D1.avrdude: stk500_recv(): programmer is not respondingavrdude gets no answer from the board at all. Check the port, the cable, pins D0/D1 and the bootloader before blaming the Arduino.avrdude: stk500v2_ReceiveMessage(): timeoutThe Mega's bootloader didn't answer. Select Mega 2560 (not Mega 1280), check the port, free pins 0/1, and update the CH340 driver on clones.avrdude: verification error, first mismatch at byte 0x0000avrdude wrote your sketch but read back different bytes. Usually the wrong board/processor, a locked or bad bootloader, a dying ATmega or a flaky USB-serial link.avrdude: warning: cannot set sck period. please check for usbasp firmware update.A harmless warning from USBasp clones with old firmware. Programming still works; if it fails, set the slow-clock jumper. Updating firmware removes the warning.avrdude: Yikes! Invalid device signature.The ISP programmer can't read the target chip. Check the six ISP wires, the 10 µF capacitor on the programmer's RESET, target power, and slow the SPI clock.Board at COM5 is not availableThe IDE is set to a COM port that no longer exists. Re-select the port after replugging; if none appears, it's the cable, driver or a board that keeps resetting.boot:0x3 (DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2)) waiting for downloadSerial Monitor shows boot:0x3 DOWNLOAD_BOOT and “waiting for download”. GPIO0 is held LOW at reset — usually the BOOT button or wiring on IO0.Brownout detector was triggeredThe ESP32 resets in a loop with a brownout message. Its 3.3 V supply is dipping, usually when Wi-Fi switches on. Here's how to find the weak link and fix it.Camera init failed with error 0x105The camera driver cannot find the OV2640. Usually the ribbon cable, the board model selected in code, or a weak 5 V supply.ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0On Ubuntu 22.04+ the braille service brltty grabs CH340 boards, so /dev/ttyUSB0 vanishes a second after plugging in. Remove brltty or disable its udev rule.client.publish() returns false — message not receivedMessages over 256 bytes (topic + payload + header) don’t fit PubSubClient’s buffer. Call setBufferSize(), keep loop() running and check connected() first.Compilation error: exit status 1“exit status 1” only says the compiler failed. The real error is higher up in the output — here’s how to find and read it.Could not find a valid BME280 sensor, check wiring, address, sensor ID!The library got no reply at 0x76/0x77, or the chip is a BMP280 (ID 0x58). Check the I2C address, wiring and which chip you actually have.Could not find a valid BMP280 sensor, check wiring or try a different address!Most purple BMP280 modules sit at 0x76, but the Adafruit library defaults to 0x77. Call bmp.begin(0x76). SensorID 0x60 means it’s really a BME280.Couldn't find RTCNothing answered at 0x68. Check SDA/SCL and power; a DS1307 needs 5 V and fails on 3.3 V boards. Time reading 2165/165/165 is the same fault.Couldn't find the device automatically. Check the connection (making sure the device is not in bootloader mode) or choose "Configure interpreter" in the interpreter menuThonny sees no MicroPython board. Install MicroPython first, use a data cable, pick the right interpreter and port, and close other serial apps.CP2102 USB to UART Bridge Controller — The drivers for this device are not installed. (Code 28)Windows shows “CP2102 USB to UART Bridge Controller” with a yellow warning and no COM port. Install the Silicon Labs CP210x VCP driver and replug.data section exceeds available space in boardGlobal variables use more than the Uno’s 2048 bytes of RAM. Move text into flash with F(), shrink arrays and buffers, or move to a Mega or ESP32.dfu-util: No DFU capable USB device availableThe Arduino Nano ESP32 or Uno R4 Minima isn't in DFU mode or Windows lacks the driver. Double-tap reset, check the port and reinstall the board package.DS18B20 temperature reads -127.00-127 means the sensor was not found on the 1-Wire bus; 85 means it was read before a conversion finished. Usually the 4.7 kΩ pull-up or wiring.E (10213) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:A task ran too long without yielding, so the watchdog fired. Usually a blocking while-loop, a long delay-free loop, or waiting on a sensor that never answers.E (124) psram: PSRAM ID read error: 0xffffffffThe ESP32 cannot see its external PSRAM, so high-resolution camera frames fail. Enable PSRAM in the board settings and check power.E (126) esp_core_dump_flash: Core dump flash config is corrupted! CRC=0x7bd5c66f instead of 0x0This ESP32 boot message is log noise from an empty core-dump partition, not your crash. Here's how to silence it and find the real problem.E (142) boot: No bootable app partitions in the partition tableThe bootloader found no valid app — nothing was written at 0x10000, the image is corrupt, or the partition table doesn't match. Re-flash all parts at the right offsets.E (199) quad_psram: PSRAM ID read error: 0x00ffffff, PSRAM chip not found or not supported, or wrong PSRAM line modeOn ESP32-S3 the PSRAM type must match the module: OPI for N8R8/N16R8, QSPI for N8R2/N4R2. Pick the right one in Tools → PSRAM and psramFound() works.E (63) spi_flash: Detected size(4096k) smaller than the size in the binary image header(16384k). Probe failed.Tools → Flash Size is bigger than the real chip, so the ESP32 refuses to boot. Check the module marking or esptool flash_id, then pick the true size.Error during build: Platform 'esp32:esp32' not found: platform not installedThe board package for the selected board isn't installed. Add the board manager URL, install the core, then re-select the board.error: 'BluetoothSerial' does not name a typeClassic Bluetooth (SPP) exists only on the original ESP32. The C3, S3 and C6 have BLE only — use a BLE UART (NUS) library or an original ESP32.error: 'class DHT' has no member named 'read11'; did you mean 'read'?Your code is written for the DHTlib library (DHT.read11, DHT.temperature) but the Adafruit DHT library is installed. Rewrite with Adafruit’s calls or install DHTlib.error: 'D4' was not declared in this scope; did you mean 'T4'?D-pin names belong to NodeMCU/Wemos ESP8266 boards. On an ESP32 DevKit use the GPIO number — and define the LED pin yourself, since LED_BUILTIN is missing.error: 'dht' was not declared in this scopeThe compiler met a name it does not know: a typo, a missing #include or library, a variable defined inside another block, or a pin name your board lacks.error: 'else' without a previous 'if'The if has no braces and two statements, or a stray semicolon ends it early, so the else has nothing to attach to. Put both branches in { } braces.error: 'ledcSetup' was not declared in this scopeArduino-ESP32 3.x removed ledcSetup() and ledcAttachPin(). Use ledcAttach(pin, freq, bits) and ledcWrite(pin, duty) — the pin replaces the channel.error: 'LiquidCrystal_I2C' does not name a typeThe compiler does not recognise a class or type name — a missing #include, the wrong library version, or code placed outside a function.error: call to 'HTTPClient::begin' declared with attribute error: obsolete API, use ::begin(WiFiClient, url)ESP8266 core 3.x removed http.begin(url). Create a WiFiClient (or WiFiClientSecure for https) and call http.begin(client, url).error: cannot convert 'String' to 'const char*'A C function (atoi, strcmp, strcpy, many library calls) wants a C string, but you passed an Arduino String. Add .c_str(), or use the String method instead.error: espcomm_upload_mem failedOld ESP8266 core error when the uploader cannot talk to the chip. Update the core, then check port, cable, GPIO0/GPIO15 wiring and reset.error: expected ';' before '}' tokenA statement on the line above is missing its semicolon. The compiler only notices at the next token, so look one line up from the line number it reports.error: expected '}' at end of inputA { was never closed, so the file ended inside a function. Often shown with “a function-definition is not allowed here”. Find the block that’s missing its }.error: expected declaration before '}' tokenThere is one closing brace too many: a } with no matching {. Auto Format (Ctrl+T) shows where the indentation breaks; delete the extra brace there.error: expected unqualified-id before '{' tokenCode is sitting outside any function — usually a semicolon after void setup() or a stray brace. Remove the ; after the function header and check braces.error: invalid conversion from 'const char*' to 'char*' [-fpermissive]Read-only text was passed where writable text is expected. An error on ESP32/ESP8266, only a warning on Uno. Make the pointer const, or copy into a char array.error: invalid conversion from 'int' to 'const esp_task_wdt_config_t*' [-fpermissive]ESP32 core 3.x (ESP-IDF 5) takes a config struct instead of (seconds, panic). Build an esp_task_wdt_config_t and call esp_task_wdt_reconfigure().error: invalid conversion from 'void (*)(const uint8_t*, const uint8_t*, int)' {aka 'void (*)(const unsigned char*, const unsigned char*, int)'} to 'esp_now_recv_cb_t' {aka 'void (*)(const esp_now_recv_info*, const unsigned char*, int)'} [-fpermissive]ESP32 core 3.x changed the ESP-NOW callbacks. Receive gets an esp_now_recv_info_t*; on core 3.3+ send gets a wifi_tx_info_t*. Update the function signatures.error: invalid operands of types 'const char [7]' and 'const char [3]' to binary 'operator+'Two quoted texts can’t be joined with + in C++. Make the first one a String, print the parts separately, or build the line with snprintf().error: lvalue required as left operand of assignmentYou used = (assign) where you meant == (compare), usually inside an if. Or you tried to assign to a constant or #define. Use == for comparisons.error: no matching function for call to 'DHT::DHT()'The DHT object was created without its pin and sensor type. The Adafruit library needs both: DHT dht(4, DHT22); — the same rule applies to most sensor classes.error: no matching function for call to 'LiquidCrystal_I2C::begin()'The code was written for a different LCD library. With Frank de Brabander’s LiquidCrystal I2C, call lcd.init() (or lcd.begin(16, 2)) instead of lcd.begin().error: no matching function for call to 'min(int, long unsigned int&)'On ESP32, ESP8266 and Pico, min()/max() are C++ templates that need both arguments of the same type. Cast one so they match — code that compiled on the Uno fails here.Error: Please specify `upload_port` for environment or use global `--upload-port` option.PlatformIO couldn't auto-detect your board's serial port. Install the USB driver, use a data cable, or set upload_port in platformio.ini.error: redefinition of 'void setup()'Your sketch has two setup() (or loop()) functions — two pasted examples or a second .ino tab. Merge them into one setup() and one loop().error: StaticJsonBuffer is a class from ArduinoJson 5. Please see https://arduinojson.org/v7/upgrade-from-v5/ to learn how to upgrade to ArduinoJson 7The sketch uses the ArduinoJson 5 API but version 7 is installed. Port it: JsonDocument replaces the buffer, deserializeJson/serializeJson replace parse/printTo.error: stray '\342' in programCode copied from a web page, PDF or WhatsApp brought curly quotes or invisible characters. Retype the quotes as plain " or use Find/Replace.error: too many arguments to function 'hw_timer_t* timerBegin(uint32_t)'ESP32 core 3.x changed the timer API: timerBegin(frequency), timerAttachInterrupt(timer, fn), timerAlarm(). timerAlarmWrite and timerAlarmEnable are gone.ESP.deepSleep() — ESP8266 goes to sleep and never wakes upESP.deepSleep() needs GPIO16 (D0) wired to RST to wake. Add the wire (or close the D1 mini SLEEP jumper), and remove it while uploading if uploads fail.ESP32-C3 SuperMini COM port keeps appearing and disappearing (USB connect/disconnect loop)Windows plays the USB connect/disconnect sound in a loop. The C3 is boot-looping or browning out. Enter download mode, fix power and erase flash.ESP32-S3 not detected: no COM port appears (or it disappears after uploading)Your ESP32-S3 shows no port, or the port vanishes after upload. Use the right connector, force download mode with BOOT+RESET, and pick a safe USB Mode.ESP8266 prints garbage characters in Serial Monitor on every resetThe junk characters at reset are the ESP8266 boot log sent at 74880 baud. Set the monitor to 74880 to read it, or ignore it — your 115200 output follows.esptool.py can not exit the download mode over USB. To run the app, reset the chip manually.The upload worked, but the native-USB board stays in the bootloader. Press RESET once — and set things up so you don't have to every time.ets Jan 8 2013,rst cause:2, boot mode:(1,6)The ESP8266 sampled its strapping pins wrong at reset. Mode 1 = GPIO0 (D3) low; 4–7 = GPIO15 (D8) high. Free those pins and the sketch boots.ets Jan 8 2013,rst cause:4, boot mode:(3,6)The ESP8266's hardware watchdog fired because loop() or an interrupt never yielded. Add yield()/delay(0) to long loops, keep ISRs in IRAM, and check power.Exception (28):Exception 28 is LoadProhibited: the code read from an invalid address, usually a NULL pointer. Decode the stack to find the line, then fix the pointer.Failed chip erase: uploading error: exit status 1Burning a bootloader with an Uno or Nano as ISP fails. Upload ArduinoISP first, add 10 µF on the programmer's RESET, select “Arduino as ISP” and check the 6 wires.Failed to communicate with the flash chip, read/write operations will fail. Try checking the chip connections or removing any other hardware connected to IOs.esptool read flash ID 0xffffff or 0 — the ESP32 cannot see its own flash chip. Free GPIO6–11, check GPIO12 and the supply, or the flash is damaged.Failed to detect and initialize sensor!The VL53L0X didn’t answer at 0x29. Check SDA/SCL, VIN and the XSHUT pin, and give each sensor its own address when using two or more.Failed to find MPU6050 chipThe MPU6050 is not answering at 0x68/0x69, or answers with an unexpected ID. Check wiring, the AD0 pin and clone chips like the MPU6500.Failed to install platform: 'esp32:esp32:3.3.12'. Error: 4 DEADLINE_EXCEEDED: net/http: request canceled (Client.Timeout or context cancellation while reading body)The ESP32 core is a ~500 MB download and the IDE gives up on slow connections. Raise the network timeout, retry to resume, or install over a different network.Failed to obtain timeThe clock was read before the first NTP reply arrived. Wait for sync after Wi-Fi connects, use IST (19800 s) and a reachable NTP server.Failed to read from DHT sensor!The DHT library got no valid reply. Check the data pin, the pull-up resistor, the sensor type in code, power, and the 2-second minimum between reads.Failed uploading: no upload port providedThe board lights up but Tools → Port is empty or greyed out. Fix it in order: data cable, USB-serial driver, then the board itself.fatal error: Adafruit_I2CDevice.h: No such file or directoryAdafruit GFX and most Adafruit sensor libraries need Adafruit BusIO. Install it from the Library Manager — the error comes from inside the library, not your code.fatal error: Adafruit_Sensor.h: No such file or directoryThe DHT sensor library needs a second library: Adafruit Unified Sensor. Install it from the Library Manager (or accept “Install all” when prompted).fatal error: DHT.h: No such file or directoryThe sketch includes a library header that is not installed, or under a different name. Install the right library from Library Manager.fatal error: esp_camera.h: No such file or directoryThe selected board has no camera driver. Choose an ESP32 board like “AI Thinker ESP32-CAM” with the esp32 core installed — not Uno, ESP8266 or ESP32-C3.fatal error: ESP8266WiFi.h: No such file or directoryESP8266 code compiled for an ESP32 (or Uno). Select the ESP8266 board, or port the code: WiFi.h, HTTPClient.h and WebServer.h replace the ESP8266 headers.fatal error: SoftwareSerial.h: No such file or directoryThe ESP32 core has no SoftwareSerial — it doesn’t need one. Use a spare hardware UART: HardwareSerial gps(2); gps.begin(9600, SERIAL_8N1, RX, TX);Firmware Version: 0x0 = (unknown)The MFRC522 library cannot talk to the reader. Power it at 3.3 V, check SDA(SS)/RST/SPI pins, and solder the header pins.flash read err, 1000The ROM bootloader cannot read flash, so it never starts your firmware. Usually a strapping pin pulled the wrong way, flash mode, or a damaged flash chip.fork/exec C:\Users\…\xtensa-esp32-elf-g++.exe: The filename or extension is too long.The compile command for ESP32 exceeds Windows’ length limit, usually from a deep sketch path or many libraries. Shorten paths and remove unused libraries.Guru Meditation Error: Core 0 panic'ed (Load access fault). Exception was unhandled.The RISC-V ESP32-C3/C6 read from an invalid address — usually a null pointer. Decode MEPC and RA with addr2line, since there's no Xtensa-style backtrace.Guru Meditation Error: Core 1 panic'ed (Cache disabled but cached memory region accessed).An interrupt ran code or read constants from flash while flash was busy (saving Preferences, SPIFFS, OTA). Put the ISR in IRAM and its data in DRAM.Guru Meditation Error: Core 1 panic'ed (IllegalInstruction). Exception was unhandled.The ESP32 tried to run bytes that aren't valid code. Classic cause: a non-void function missing its return. Also stack corruption and bad flash settings.Guru Meditation Error: Core 1 panic'ed (InstrFetchProhibited). Exception was unhandled.The ESP32 jumped to an address with no code — usually a null function pointer or callback, a deleted object, or a stack overflow that trashed a return address.Guru Meditation Error: Core 1 panic'ed (Interrupt wdt timeout on CPU1).An interrupt handler or critical section ran so long it starved the CPU. Keep ISRs to a flag, never Serial.print or delay() inside them, and mark them IRAM_ATTR.Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.The ESP32 read from an invalid address — almost always a null or dangling pointer, an out-of-range array index or an object used before begin().Guru Meditation Error: Core 1 panic'ed (StoreProhibited). Exception was unhandled.The ESP32 tried to write to an invalid address: writing through a null pointer, past an array, or into a buffer that was never allocated.Guru Meditation Error: Core 1 panic'ed (Unhandled debug exception). Debug exception reason: Stack canary watchpoint triggered (loopTask)A task used more stack than it was given. Large local arrays, deep recursion or big String objects in loop() are the usual causes.Hard resetting via RTS pin...Upload finished, but the sketch doesn't run until you press EN — or never runs. Check GPIO0/GPIO2/GPIO12, the Serial Monitor baud rate and USB CDC settings.HC-SR04 distance always 0 cmpulseIn() timed out, so the distance is 0. Check TRIG/ECHO pins, 5 V power, the echo voltage divider on 3.3 V boards and the timeout.HX711 not found.is_ready() never went true: DT/SCK swapped or on the wrong pins, no power to the HX711, or a loose load-cell wire. Check the 4+2 wires before the code.I2C device not foundYour LCD, OLED or sensor doesn't answer on I2C. Run the scanner, then check wiring, power, pull-ups and the address — in that order.I2C LCD shows a row of blocks (or a lit, blank screen)A row of white boxes or a lit blank screen. Turn the contrast trimmer, check the I2C address (0x27 or 0x3F) and power the LCD from 5 V.ImportError: no module named 'network'The firmware on your board has no Wi-Fi support. Usually it is the plain Pico UF2 flashed onto a Pico W — flash the Pico W (or Pico 2 W) build instead.ImportError: no module named 'ssd1306'The module is not built into your firmware and not saved on the board. Copy the .py driver to the board, or install it with mip.ImportError: no module named 'umqtt'umqtt.simple is not part of every MicroPython build. Install it on the board with mip (or Thonny’s package manager) and keep the umqtt/ folder on the board.invalid header: 0xffffffffThe flash is empty or erased where the bootloader should be. Re-upload, or flash the bootloader, partitions and app together.ISR not in IRAM!Since core 2.5 the ESP8266 refuses interrupt handlers stored in flash. Add IRAM_ATTR to the handler (and anything it calls), and keep it short.LiquidCrystal_I2C lcd.print("Hello") shows only "H"lcd.print("Hello") shows just “H”: an old LiquidCrystal_I2C copy whose write() returns 0. Install the current library (1.1.2) or change return 0 to return 1.Low memory available, stability problems may occur.Global variables use most of the Uno’s 2 KB of RAM. Move constant strings to flash with F(), shrink buffers and avoid String.MAX30105 was not found. Please check wiring/power.The SparkFun library got no reply at 0x57. Check SDA/SCL and 3.3 V, then the module’s I2C pull-ups — many purple MAX30102 boards pull them to 1.8 V.MemoryError: memory allocation failed, allocating 4096 bytesThe board ran out of free heap, often from fragmentation. Pre-allocate buffers, avoid big strings in loops, call gc.collect() and use precompiled .mpy files.ModuleNotFoundError: No module named 'machine'Your code ran on the PC’s Python, not on the board. Select the MicroPython interpreter in Thonny (bottom-right) — don’t pip install “machine”.ModuleNotFoundError: No module named 'serial'The upload script runs on your system Python, which lacks pySerial. Update the board core (it bundles its own esptool) or install pyserial for that Python.mpremote.transport.TransportError: could not enter raw replThe tool could not interrupt the board. A busy main.py, another program holding the port, or a board that resets on connect. Free the port, stop main.py, retry.multiple definition of `threshold'The same variable or function ended up in two compiled files — usually a global defined in a .h file included twice. Declare it extern in the header, define it once.Multiple libraries were found for "LiquidCrystal_I2C.h"Two installed libraries provide the same header. Usually harmless, but if the wrong one is used, remove the duplicate.NameError: name 'Pin' isn't definedMicroPython met a name it does not know: a missing import, a typo or a variable used before it is set. Import Pin from machine and check spelling.NetworkError: Failed to execute 'open' on 'SerialPort': Failed to open serial port.A browser flasher or serial monitor can't open the port. Another program has it, the driver is missing, or (Linux) your user lacks permission.No accessible RP2040 devices in BOOTSEL mode were found.picotool needs the Pico in BOOTSEL mode. Hold BOOTSEL while plugging in, or let picotool reboot it with -f — and check the cable and udev rules on Linux.No device found on COM5bossac couldn't reach the SAMD/RA4M1 bootloader. Double-tap RESET to enter it, re-select the new port, and close anything holding the serial port.No drive to deploy.The IDE couldn't find the Pico's RPI-RP2 drive. The first upload, or after MicroPython, needs BOOTSEL held; on Linux the drive must be auto-mounted.No GPS detected: check wiring.No data means wiring or baud rate; data but no fix means the antenna cannot see the sky. A cold start outdoors can take 1–5 minutes.NON GENUINE DEVICE FOUND!An FTDI driver detected a cloned FT232RL and sends this text instead of your data (or set its PID to 0000). Restore the PID, pin an older driver, or swap the adapter.OLED shows random dots / a noisy stripe instead of the textA 1.3″ OLED is usually an SH1106, not an SSD1306. With the SSD1306 library it shows edge noise or a shifted image. Use Adafruit_SH110X or U8g2’s SH1106 driver.OSError: -202The host name could not be resolved: Wi-Fi is not connected yet, or DNS failed. Wait for isconnected(), check the URL, then retry.OSError: [Errno 110] ETIMEDOUTA device or server did not answer in time. With a DHT11/DHT22 it is wiring or reading too fast; with sockets and I2C it is the network or a stuck bus.OSError: [Errno 12] ENOMEMThe network stack ran out of memory — usually responses or sockets never closed, or HTTPS on a fragmented heap. Close every response and collect garbage.OSError: [Errno 19] ENODEVNo device answered at the I2C address you used. Scan the bus, check SDA/SCL pins match the I2C(…) call, and confirm the address.OSError: [Errno 5] EIOThe I2C device answered the scan but a read or write failed part-way. Loose wires, weak pull-ups, a 5 V module or too high a bus speed — check in that order.OSError: Wifi Internal Errorconnect() was called while the radio was already connecting or still up after a soft reset. Activate once, check isconnected(), disconnect before reconnecting.PL2303HXA PHASED OUT SINCE 2012. PLEASE CONTACT YOUR SUPPLIER.Prolific's newer Windows drivers refuse old or cloned PL2303 USB-TTL adapters. Install the older 3.3.2.105 driver and block the update — or buy a CP2102/CH340 adapter.Plug in device now... (will timeout in 60 seconds)The Digispark ATtiny85 needs its own USB driver, and must be plugged in only after you click Upload. Install the Digistump drivers and try a USB 2.0 port or hub.Port monitor error: command 'open' failed: Serial port busy. Could not connect to COM5 serial port.Serial Monitor can't open the port because something else has it — another IDE window, the Plotter, an upload in progress, or ModemManager on Linux.pyserial or esptool directories not found next to this upload.py tool.The ESP8266 core's uploader couldn't import esptool. Its tools folder is incomplete or Python is missing/blocked. Reinstall the core and check python3.radio hardware is not responding!!The RF24 library cannot talk to the module over SPI, or packets never arrive. Power at 3.3 V with a capacitor, and check CE/CSN and SPI pins.region `dram0_0_seg' overflowed by 97544 bytesGlobal and static variables don’t fit the ESP32’s static RAM. Shrink big global arrays, allocate large buffers at runtime with malloc/PSRAM, or move constants to flash.Relay module clicks but the connected load does not turn onThe relay coil works but the contacts do not carry the load: wrong NO/NC terminal, loose screw terminal, or a load beyond the contact rating.RPI-RP2 drive does not appear when BOOTSEL is heldHolding BOOTSEL should mount a drive named RPI-RP2. If it does not, it is the cable, the timing of BOOTSEL, or the USB port.rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)The RTC watchdog reset the ESP32 before the bootloader finished. Fix flash mode/speed, re-flash a matching bootloader, and check power and strapping pins.rst:0x8 (TG1WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)A hardware timer watchdog reset the ESP32 — interrupts were blocked too long. Shorten ISRs, avoid Serial/delay in interrupts, and check bit-banged LED libraries.Serial Monitor prints garbage characters like ⸮⸮⸮ instead of textRandom symbols instead of text mean the monitor's speed doesn't match the board. Match Serial.begin() to the monitor, and check the board's clock setting.Serial Monitor stays blank on ESP32-C3 / ESP32-S3 — USB CDC On Boot: DisabledUpload works but Serial.println() prints nothing. On native-USB boards, enable Tools → USB CDC On Boot, wait for the port in setup(), and reopen the monitor.Servo jitters or twitches instead of holding positionServos jitter from weak power, a shared supply with the board, or PWM timing conflicts. Give the servo its own 5 V supply with a common ground.SIM800L keeps restarting (prints RDY again and again)The SIM800L needs 3.7–4.2 V and up to 2 A peaks. Most reset loops are power: wrong voltage, thin wires, or no buffer capacitor.Sketch too big; see https://support.arduino.cc/hc/en-us/articles/360013825179 for tips on reducing it.The compiled program does not fit in flash. Remove unused libraries and debug strings, or pick a larger partition scheme on ESP32.Soft WDT resetYour code ran for about 3 seconds without giving the Wi-Fi stack a turn. Break long loops with yield() or delay(), and give every wait a timeout.SSD1306 allocation failedAdafruit_SSD1306 could not allocate its frame buffer. On an Uno that means RAM is nearly full; elsewhere it is often the wrong address or begin() call.ST7735 TFT shows only a white screen (backlight on, no image)White = backlight on, controller not initialised. Check CS/DC/RST pins match the code, use hardware SPI pins, and pick the right initR() tab for your panel.Timed out waiting for packet headerYour PC sees the ESP32 but the bootloader isn't answering. Nine times out of ten it's the BOOT button, the USB cable or the driver — fix it in under a minute.TypeError: can't convert 'int' object to str implicitlyYou joined text and a number with +. Convert the number first with str(), or build the line with format() or an f-string.TypeError: can't convert float to intduty_u16(), sleep_ms(), Pin() and range() need whole numbers. Wrap the maths in int() or use // so a 0.5 never reaches them.U8g2 OLED stays blank — sketch uploads and runs, nothing is displayedUsually the wrong constructor (SSD1306 vs SH1106, 128x32 vs 128x64), no setFont(), a missing sendBuffer(), or an address given as 0x3C instead of 0x78.UF2 copied to RPI-RP2 but the Pico does nothing (or the drive reappears)The drive vanished (or came back) but no blink. Wrong UF2 for the chip (RP2040 vs RP2350), Pico W LED pin, MicroPython that just waits, or a full flash.undefined reference to `setup'The linker found no setup() or loop(): a capital letter (Setup), an empty or unsaved sketch, or code in the wrong file. Name them exactly setup() and loop().Unknown USB Device (Device Descriptor Request Failed) — Windows has stopped this device because it has reported problems. (Code 43)Windows can't even read what your board is. It's the cable, the port, power, or a damaged USB chip — or a native-USB board stuck mid-crash. Here's how to tell.USB-SERIAL CH340 (COM3) — This device cannot start. (Code 10)The CH340 driver is installed but won't start the chip. Usually a driver/clone-chip mismatch after Windows Update. Clean-reinstall the WCH driver or roll back.USB2.0-Serial — The drivers for this device are not installed. (Code 28)Windows lists “USB2.0-Serial” with a yellow warning and no COM port. Install the official WCH CH340/CH341 driver and the port appears.ValueError: bad SCL pinThe Pico’s I2C0 and I2C1 each work only on fixed GP pins. Pick an SDA/SCL pair that belongs to the bus number you passed, or use SoftI2C.ValueError: invalid pinThat GPIO number does not exist on this chip, or it is reserved for flash. Use the GPIO number (not the D-label or header pin number) of a pin that is broken out.warning: #warning It seems, that you are using an old version 2.0 code / example. [-Wcpp]IRremote 3+/4.x replaced irrecv.decode(&results) and results.value. Use IrReceiver.begin(), decode() and decodedIRData.command — or the codes you saved won’t match.Warning: Image file at 0x1000 doesn't look like an image file, so not changing any flash settings.esptool found no ESP image header at that address — usually the wrong offset for the chip (0x0 vs 0x1000) or a merged/MicroPython .bin flashed to the wrong place.warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:A warning, not an error: Wire.requestFrom() got a uint8_t and an int, matching two overloads. Cast both arguments to the same type to silence it.WARNING: library LiquidCrystal I2C claims to run on avr architecture(s) and may be incompatible with your current board which runs on esp32 architecture(s).A warning, not an error: the library’s metadata only lists AVR. Many such libraries still work on ESP32. If it compiles, test it; if not, use an ESP32 version.WiFi.status() returns 1 (WL_NO_SSID_AVAIL)The board cannot see your network at all: 5 GHz-only band, a typo in the SSID, a hidden network, channel 12–13, or weak signal. Scan first, then fix the one that fails.WiFi.status() returns 4 (WL_CONNECT_FAILED)The board found your network but the login failed: wrong password, WPA3-only security, MAC filtering or a router that is full. Check in that order.WiFi.status() stays WL_DISCONNECTED — ESP32 not connecting to Wi-FiWiFi.begin() never connects. Check 2.4 GHz band, SSID/password, router security mode, signal and power, in that order.