Custom VM and "can't find target in matrix, assuming compatibility"


I’m having a problem with custom VM. I’m using a ESP32-WROOM-32 and an adapter board (image attached). I created a custom VM and I didn’t any modification in template, only in PID and in VID.

When I turn on my board, the Zerynth Studio recognizes my custom VM. After virtualize the device, I try to burn a firmware but a got the message “can’t find target in matrix, assuming compatibility…”. The uplink is done but the firmware doesn’t work.

Can someone clarify me about custom VMs?


Now, I’m getting the

flash read err, 1000
ets_main.c 371
ets Jun 8 2016 00:22:57

flash read err, 1000
ets_main.c 371

indefinitely when I plug the ESP32. Also, the Zerynth Studio doesn’t recognize my board anymore. I brick my module?

Hi @Nysix,

thanks for the feedback. While we look into the issue, can you tell us

  • how much flash is available in your wroom module
  • what are the PID and VID of the adapter board

The module is not “bricked” since it is actually outputting something on the console. You can erase it manually with esptool and get it back to empty status.

1 Like

Hello @Giacomo

Thank you, I’m happy to know that my module is still alive :smiley:

  • My wroom has 4MB flash;
  • PID is EA60 and VID is 10C4;


From a quick check it seems that PID:VID is the same of an Esp32 DevKit. you should be able to use the expansion board without a custom VM until we look into the issue. To do so, you should connect the expansion board and:

  • select it on Zerynth Studio
  • click the “i” (info) icon
  • click forget button
  • now the board should be unrecognized and Zerynth Studio should ask for disambiguation
  • choose Esp32 devkit from the options ad re-register and re-virtualize

Let us know!

1 Like

@Giacomo, the expansion board is not recognized anymore.

I removed the custom VM. When I connect the expansion board, the Device’s dropbox blinks in orange, but no device is shown to me.

I have a DOIT ESP32 DevKit v1 here. I connected this unit and it has the same PID:VID. Zerynth recognizes it and list as Physical Devices.

mmm…that’s weird. Try this:

  • close Zerynth Studio
  • go to Zerynth config folder (c:\your-user\zerynth2\cfg in windows, ~/.zerynth/cfg in Mac/Linux)
  • move the file “devices.db” outside that folder (i.e. on the desktop or in a temp folder you can get it back later)
  • restart Zerynth Studio and try again connecting the expansion board

If this does not work you can put devices.db back where it was.

1 Like

@Giacomo it works! :smiley:

And I was able to clone a basic serial example. Thank you!

Is it possible to modify the pins assigned to SERIAL1 while I’m using the board as an ESP32 DevKitC? Can I delete the ‘devices.db’ file that I took out of Zerynth folder?


no, pins can not be reassigned; As for devices.db, you can delete it. You will need to re-register the other boards you have already used with Zerynth, but licenses will no be consumed.

1 Like

@Giacomo Ah, ok.

Is the problem related to PID:VID or another thing related to custom VM? I’m asking because after I soldering the wroom-32 unit in my own pcb, I’ll use a USB-UART converter to update the code (the SERIAL0 pins are exposed) and the USB bridge IC maybe not be the same. In this situation, I need to do the procedure again?

The problem you are having is not clear yet, we need some investigation on our side. However, the need for a custom VM with a different VID:PID for the USB bridge can be bypassed by using our command line tool (ztc); passing the serial port of your connected PCB should suffice to program it as a esp32 devkitc even if VID:PID are not the same. VID:PID are used for automatic discovery, but can be ignored at low level.

1 Like

Perfect, @Giacomo!

Thank you for your quick support. Helped me a lot :smiley: