Espressif released two chip revisions so far: Rev 0  and Rev 1

Rev 0 had a number of bugs.

Espessif released a workaround for the ECO.

To find the revision of an ESP32 chip two options are available:

  1. Use the esptool
  2. Flash your board with the appropriate code to display revision

 

Intro

Before starting make sure you have installed ESP32 on your machine. If you are on windows follow this tutorial:

Steps to install Arduino ESP32 support on Windows

Do not forget to check if this issue affects your configuration.

Use the esptool

Download the esptool depending on your operating system:

To get the board details run the following command:

esptool --port PORTNUMBER flash_id

So for example on windows:

PS T:\Documents\code\arduino> .\esptool.exe --port COM25 flash_id
esptool.py v2.1
Connecting....
Detecting chip type... ESP32
Chip is ESP32D0WDQ6 (revision 1)
Uploading stub...
Running stub...
Stub running...
Manufacturer: ef
Device: 4017
Detected flash size: 8MB
Hard resetting...
PS T:\Documents\code\arduino>

Chip is ESP32D0WDQ6 (revision 1) indicates chip ID and revision number.

The same applies for unix/linux:

# python esptool.py --port COMXX flash_id

Flash your board

Alternatively you can flash your board using the following code found on A.Spiess site: (Download: ( ESP32_Version.ino (543 downloads ) )

/*
  This sketch reads the version number of hte ESP32 chip

  2017-07-17 Andreas Spiess

*/

#include "soc/efuse_reg.h"

int getChipRevision()
{
  return (REG_READ(EFUSE_BLK0_RDATA3_REG) >> (EFUSE_RD_CHIP_VER_RESERVE_S)&&EFUSE_RD_CHIP_VER_RESERVE_V) ;
}

void setup() {
  Serial.begin(115200);
  delay(200);
  Serial.print("REG_READ(EFUSE_BLK0_RDATA3_REG) ");
  Serial.println(REG_READ(EFUSE_BLK0_RDATA3_REG), BIN);

  Serial.print("EFUSE_RD_CHIP_VER_RESERVE_S ");
  Serial.println(EFUSE_RD_CHIP_VER_RESERVE_S, BIN);

  Serial.print("EFUSE_RD_CHIP_VER_RESERVE_V ");
  Serial.println(EFUSE_RD_CHIP_VER_RESERVE_V, BIN);

   Serial.println();

  Serial.print("Chip Revision (official version): ");
  Serial.println(getChipRevision());
  
  Serial.print("Chip Revision from shift Operation ");
  Serial.println(REG_READ(EFUSE_BLK0_RDATA3_REG) >> 15, BIN);
}

// the loop function runs over and over again forever
void loop() {
}

The video explaining the process is here: