Skip to main content

How a Single `while(1)` Bricked My ESP32-S3 — and What I Learned Fixing It

    This is a custom ESP32S3 prototyping board i built to troubleshoot the issues.  It Started With a Simple Problem I was testing the EvilCrow Cable Wind — a USB HID device built around the ESP32-S3 that executes keystroke injection payloads over WiFi. Everything seemed fine: the keyboard HID was typing correctly, the web interface loaded, basic commands like RunWin worked. But ServerConnect and ShellWin did absolutely nothing. No error. No feedback. Just silence. Digging Into the Code The first thing I found was this pattern — repeated across four commands: ORIGINAL — DANGEROUS if (!clientServer.connect(serverIP, serverPort)) { while(1); // hangs forever if TCP fails } ⚠ Critical Bug If TCP connection failed for any reason, the device entered an infinite loop with no timeout, no error output, and no recovery path. Ever. But there was more. The bugs were stacking: critical   TCP failures were environmental: listener ...

Hot n Cold....

I did some tests with LM35DZ, which is a temperature sensor with analog out put. I connected it to micro controller's ADC (Analog to Digital Converter). The out put of the sensor is 10mV/°C After some calculations, ADC value was converted to centigrade.
Finally it works, i am able to monitor the room temperature from my LCD Display. At beginning i used an my multimeter to differentiate the sensor value and actual room temperature, the meter reading and LCD reading was perfect. After a while i got an idea to detect temperature and give alarm or warning. I modified the code and little bit and tadaaaaa i can verify the temperature variation. Actually i did was if the temperature is greater than 40°c, give an warning, lit an LED or drive a buzzer.
I think this is a cool one for these days. Cause its hot..

Comments