Files
esp32-hacking/docs/CHEATSHEET.md

121 lines
3.7 KiB
Markdown

# Cheatsheet
## Environment Setup
```bash
source ~/esp/esp-idf/export.sh # Activate ESP-IDF (every shell)
```
## Build & Flash
```bash
cd ~/git/esp32-hacking/get-started/csi_recv_router
idf.py set-target esp32 # Set chip target
idf.py menuconfig # Configure WiFi/UDP settings
idf.py build # Compile firmware
idf.py -p /dev/ttyUSB0 flash # Flash to device
idf.py -p /dev/ttyUSB0 monitor # Serial monitor (Ctrl+] to exit)
idf.py -p /dev/ttyUSB0 flash monitor # Flash + monitor combined
idf.py fullclean # Clean build directory
idf.py reconfigure # Re-fetch managed components
```
## Deployed Sensors
| Name | IP | Location |
|------|-----|----------|
| muddy-storm | 192.168.129.29 | Living Room |
| amber-maple | 192.168.129.30 | Office |
| hollow-acorn | 192.168.129.31 | Kitchen |
**Target:** `192.168.129.11:5500` (Pi) | **Cmd port:** `5501`
## Remote Management (esp-cmd)
```bash
esp-cmd <ip> STATUS # Uptime, heap, RSSI, tx_power, rate
esp-cmd <ip> IDENTIFY # LED solid 5s (find the device)
esp-cmd <ip> RATE 50 # Set ping rate to 50 Hz (NVS saved)
esp-cmd <ip> POWER 15 # Set TX power to 15 dBm (NVS saved)
esp-cmd <ip> REBOOT # Restart device
```
Examples with deployed sensors:
```bash
esp-cmd 192.168.129.29 STATUS # muddy-storm
esp-cmd 192.168.129.30 IDENTIFY # amber-maple
esp-cmd 192.168.129.31 RATE 25 # hollow-acorn
```
### LED States
| LED | Meaning |
|-----|---------|
| Off | Not connected to WiFi |
| Slow blink (1 Hz) | Connected, no CSI activity |
| Fast blink (5 Hz) | CSI data flowing |
| Solid (5s) | IDENTIFY command active |
## Test CSI Reception
```bash
nc -lu 5500 # Listen for CSI packets
socat UDP-RECV:5500 STDOUT # Alternative listener
nc -lu 5500 | head -1 # See one packet
nc -lu 5500 | wc -l # Count packets/sec (Ctrl+C)
```
## Firmware Variants
| Firmware | Dir | Output | Needs |
|----------|-----|--------|-------|
| csi_recv_router | `get-started/csi_recv_router/` | UDP | WiFi router |
| csi_recv | `get-started/csi_recv/` | Serial | csi_send device |
| csi_send | `get-started/csi_send/` | N/A | csi_recv device |
## Key Config (menuconfig)
| Path | Setting |
|------|---------|
| Example Connection Configuration → SSID | WiFi network name |
| Example Connection Configuration → Password | WiFi password |
| CSI UDP Configuration → IP | `192.168.129.11` |
| CSI UDP Configuration → Port | `5500` |
## CSI Data Format
```
CSI_DATA,seq,mac,rssi,rate,sig_mode,mcs,cwb,smoothing,not_sounding,
aggregation,stbc,fec_coding,sgi,noise_floor,ampdu_cnt,channel,
secondary_channel,timestamp,ant,sig_len,rx_state,len,first_word,"[I,Q,...]"
```
## Source Paths
| File | Purpose |
|------|---------|
| `get-started/csi_recv_router/main/app_main.c` | Main firmware source |
| `get-started/csi_recv_router/main/Kconfig.projbuild` | UDP/cmd port config |
| `tools/esp-cmd` | Pi-side management CLI |
| `get-started/csi_recv_router/sdkconfig.defaults` | SDK defaults |
| `get-started/csi_recv_router/main/idf_component.yml` | Dependencies |
| `get-started/csi_recv_router/CMakeLists.txt` | Build config |
## ESP-IDF Paths
| Path | Contents |
|------|----------|
| `~/esp/esp-idf/` | ESP-IDF v5.5.2 |
| `~/esp/esp-csi/` | Original esp-csi examples |
| `~/.espressif/tools/` | Xtensa toolchain |
## USB Serial
```bash
ls /dev/ttyUSB* /dev/ttyACM* # Find connected devices
dmesg | tail # Check USB detection
sudo usermod -aG dialout $USER # Fix permissions (re-login)
```