Hello world :-) As 12.7.0-RC1 is out for testing I play with some build and testing automation :-)
I have USB HUB with 16 ports where I can connect various boards that will be mounted on the wall already wood planked as base mount I am searching for cheap breadboards now :-) The problem is various ESP develkits use USB-TO-UART converters that are not unique so it is not really easy to distiguish them (i.e. the same VID:PID and Serial number 0001). For instance STM32 ST-Link have serial numbers assigned correctly (i.e. 0667FF5049558XXXX..). I found --port-filter switch in esptool that could help in flashing specific board. So I started searching for some utility to customize CP2102 chips and I found two :-) C: https://github.com/DiUS/cp210x-cfg Python: https://github.com/cederom/cp210x-program Minor modifications of the cp210x-cfg and it built on FreeBSD and I was able to modify the Serial Number string several times. Some chips have this option OTP so beware it may not be possible to change once assigned :-) % ./cp210x-cfg ID 10c4:ea60 @ bus 000, dev 007: CP2102 USB to UART Bridge Controller Model: CP2102 Vendor ID: 10c4 Product ID: ea60 Name: CP2102 USB to UART Bridge Controller Serial: 0001 % dd if=/dev/random count=1M | md5 1048576+0 records in 1048576+0 records out 76f24aad88225fedf7260bb4f54c525d 536870912 bytes transferred in 3.788303 secs (141718053 bytes/sec) % ./cp210x-cfg -h Syntax: cp210x-cfg [-h ] | [-m vid:pid] [-d bus:dev] [ -l | [-V vid] [-P pid] [-F flush] [-M mode] [-N name] [-S serial]] -h This help -m vid:pid Find and use first device with vid:pid -d bus:dev Find and use device at bus:dev -l List all CP210x devices connected -V vid Program the given Vendor ID -P pid Program the given Product ID -F flush Program the given buffer flush bitmap (CP2105 only) -M mode Program the given SCI/ECI mode (CP2105 only) -N name Program the given product name string -S serial Program the given serial string Unless the -d option is used, the first found CP210x device is used. If no programming options are used, the current values are printed. % ./cp210x-cfg -S 76f24aad88225fedf7260bb4f54c525d ID 10c4:ea60 @ bus 000, dev 007: CP2102 USB to UART Bridge Controller Model: CP2102 Vendor ID: 10c4 Product ID: ea60 Name: CP2102 USB to UART Bridge Controller Serial: 76f24aad88225fedf7260bb4f54c525d % ./cp210x-cfg ID 10c4:ea60 @ bus 000, dev 007: CP2102 USB to UART Bridge Controller Model: CP2102 Vendor ID: 10c4 Product ID: ea60 Name: CP2102 USB to UART Bridge Controller Serial: 76f24aad88225fedf7260bb4f54c525d % ./cp210x-cfg -S ESP32DEVKITC-CDR-76f24aad88225fedf7260bb4f54c525d ID 10c4:ea60 @ bus 000, dev 007: CP2102 USB to UART Bridge Controller Model: CP2102 Vendor ID: 10c4 Product ID: ea60 Name: CP2102 USB to UART Bridge Controller Serial: ESP32DEVKITC-CDR-76f24aad88225fedf7260bb4f54c525d Very cool we may modify some chips so they have unique ids and can work on our test build farms :-) Okay so esptool does not yet support SN --port-filter, but script may find a /dev/cuaU* based on the serial number and provide to the esptool. But NAME seems to be already supported so lets see if we can change CP2102 name :-) % ./cp210x-cfg ID 10c4:ea60 @ bus 000, dev 007: CP2102 USB to UART Bridge Controller Model: CP2102 Vendor ID: 10c4 Product ID: ea60 Name: CP2102 USB to UART Bridge Controller Serial: ESP32DEVKITC-CDR-76f24aad88225fedf7260bb4f54c525d % ./cp210x-cfg -N ESP32DEVKITC-CDR-76f24aad88225fedf7260bb4f54c525d ID 10c4:ea60 @ bus 000, dev 007: CP2102 USB to UART Bridge Controller Model: CP2102 Vendor ID: 10c4 Product ID: ea60 Name: ESP32DEVKITC-CDR-76f24aad88225fedf7260bb4f54c525d Serial: ESP32DEVKITC-CDR-76f24aad88225fedf7260bb4f54c525d % ./cp210x-cfg -N ESP32DEVKITC-CeDeROM-76f24aad88225fedf7260bb4f54c525d ID 10c4:ea60 @ bus 000, dev 007: ESP32DEVKITC-CDR-76f24aad88225fedf7260bb4f54c525d Model: CP2102 Vendor ID: 10c4 Product ID: ea60 Name: ESP32DEVKITC-CeDeROM-76f24aad88225fedf7260bb4f54c525d Serial: ESP32DEVKITC-CDR-76f24aad88225fedf7260bb4f54c525d % ./cp210x-cfg ID 10c4:ea60 @ bus 000, dev 007: ESP32DEVKITC-CeDeROM-76f24aad88225fedf7260bb4f54c525d Model: CP2102 Vendor ID: 10c4 Product ID: ea60 Name: ESP32DEVKITC-CeDeROM-76f24aad88225fedf7260bb4f54c525d Serial: ESP32DEVKITC-CDR-76f24aad88225fedf7260bb4f54c525d % ./cp210x-cfg -S ESP32DEVKITC-CeDeROM-76f24aad88225fedf7260bb4f54c525d ID 10c4:ea60 @ bus 000, dev 007: ESP32DEVKITC-CeDeROM-76f24aad88225fedf7260bb4f54c525d Model: CP2102 Vendor ID: 10c4 Product ID: ea60 Name: ESP32DEVKITC-CeDeROM-76f24aad88225fedf7260bb4f54c525d Serial: ESP32DEVKITC-CeDeROM-76f24aad88225fedf7260bb4f54c525d % ./cp210x-cfg ID 10c4:ea60 @ bus 000, dev 007: ESP32DEVKITC-CeDeROM-76f24aad88225fedf7260bb4f54c525d Model: CP2102 Vendor ID: 10c4 Product ID: ea60 Name: ESP32DEVKITC-CeDeROM-76f24aad88225fedf7260bb4f54c525d Serial: ESP32DEVKITC-CeDeROM-76f24aad88225fedf7260bb4f54c525d Very cool we can modify the Name and SN of the CP2102 chip many times :-) I will share the idea to add this functionality to esptool and pyserial directly :-) Have a good weekend folks :-) -- CeDeROM, SQ7MHZ, http://www.tomek.cedro.info