esp32tool 1.3.7 → 1.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apple-touch-icon.png +0 -0
- package/dist/console.js +18 -7
- package/dist/const.d.ts +6 -0
- package/dist/const.js +8 -0
- package/dist/esp_loader.d.ts +37 -30
- package/dist/esp_loader.js +502 -367
- package/dist/web/index.js +1 -1
- package/icons/icon-128.png +0 -0
- package/icons/icon-144.png +0 -0
- package/icons/icon-152.png +0 -0
- package/icons/icon-192.png +0 -0
- package/icons/icon-384.png +0 -0
- package/icons/icon-512.png +0 -0
- package/icons/icon-72.png +0 -0
- package/icons/icon-96.png +0 -0
- package/js/console.js +60 -0
- package/js/modules/esptool.js +1 -1
- package/js/script.js +156 -113
- package/package.json +1 -1
- package/screenshots/desktop.png +0 -0
- package/screenshots/mobile.png +0 -0
- package/src/console.ts +28 -11
- package/src/const.ts +8 -0
- package/src/esp_loader.ts +610 -399
- package/sw.js +1 -1
package/apple-touch-icon.png
CHANGED
|
Binary file
|
package/dist/console.js
CHANGED
|
@@ -149,14 +149,25 @@ export class ESP32ToolConsole {
|
|
|
149
149
|
}
|
|
150
150
|
async _connect(abortSignal) {
|
|
151
151
|
console.log("Starting console read loop");
|
|
152
|
-
//
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
152
|
+
// Wait for readable stream to be available with timeout
|
|
153
|
+
const maxWaitTime = 3000; // 3 seconds
|
|
154
|
+
const startTime = Date.now();
|
|
155
|
+
while (!this.port.readable) {
|
|
156
|
+
const elapsed = Date.now() - startTime;
|
|
157
|
+
if (elapsed > maxWaitTime) {
|
|
158
|
+
this.console.addLine("");
|
|
159
|
+
this.console.addLine("");
|
|
160
|
+
this.console.addLine(`Terminal disconnected: Port readable stream not available after ${maxWaitTime}ms`);
|
|
161
|
+
this.console.addLine(`This can happen if:`);
|
|
162
|
+
this.console.addLine(`1. Port was just opened and streams are not ready yet`);
|
|
163
|
+
this.console.addLine(`2. Device was reset and port needs to be reopened`);
|
|
164
|
+
this.console.addLine(`3. USB device re-enumerated after reset`);
|
|
165
|
+
console.error("Port readable stream not available - port may need to be reopened at correct baudrate");
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
159
169
|
}
|
|
170
|
+
console.log("Port readable stream is ready - starting console");
|
|
160
171
|
try {
|
|
161
172
|
await this.port
|
|
162
173
|
.readable.pipeThrough(new TextDecoderStream(), {
|
package/dist/const.d.ts
CHANGED
|
@@ -206,6 +206,10 @@ export declare const ESP32C61_SPI_MISO_DLEN_OFFS = 40;
|
|
|
206
206
|
export declare const ESP32C61_SPI_W0_OFFS = 88;
|
|
207
207
|
export declare const ESP32C61_UART_DATE_REG_ADDR = 1610612860;
|
|
208
208
|
export declare const ESP32C61_BOOTLOADER_FLASH_OFFSET = 0;
|
|
209
|
+
export declare const ESP32C61_UARTDEV_BUF_NO_REV_LE2 = 1082455532;
|
|
210
|
+
export declare const ESP32C61_UARTDEV_BUF_NO_REV_GT2 = 1082455524;
|
|
211
|
+
export declare const ESP32C61_UARTDEV_BUF_NO_USB_JTAG_SERIAL_REV_LE2 = 3;
|
|
212
|
+
export declare const ESP32C61_UARTDEV_BUF_NO_USB_JTAG_SERIAL_REV_GT2 = 4;
|
|
209
213
|
export declare const ESP32H2_SPI_REG_BASE = 1610625024;
|
|
210
214
|
export declare const ESP32H2_BASEFUSEADDR = 1611335680;
|
|
211
215
|
export declare const ESP32H2_EFUSE_BLOCK1_ADDR: number;
|
|
@@ -244,6 +248,8 @@ export declare const ESP32H4_RTC_CNTL_WDTCONFIG0_REG: number;
|
|
|
244
248
|
export declare const ESP32H4_RTC_CNTL_WDTCONFIG1_REG: number;
|
|
245
249
|
export declare const ESP32H4_RTC_CNTL_WDT_WKEY = 1356348065;
|
|
246
250
|
export declare const ESP32H4_RTC_CNTL_SWD_WKEY = 1356348065;
|
|
251
|
+
export declare const ESP32H4_UARTDEV_BUF_NO = 1082652032;
|
|
252
|
+
export declare const ESP32H4_UARTDEV_BUF_NO_USB_JTAG_SERIAL = 3;
|
|
247
253
|
export declare const ESP32H21_SPI_REG_BASE = 1610625024;
|
|
248
254
|
export declare const ESP32H21_BASEFUSEADDR = 1611350016;
|
|
249
255
|
export declare const ESP32H21_EFUSE_BLOCK1_ADDR: number;
|
package/dist/const.js
CHANGED
|
@@ -239,6 +239,11 @@ export const ESP32C61_SPI_MISO_DLEN_OFFS = 0x28;
|
|
|
239
239
|
export const ESP32C61_SPI_W0_OFFS = 0x58;
|
|
240
240
|
export const ESP32C61_UART_DATE_REG_ADDR = 0x6000007c;
|
|
241
241
|
export const ESP32C61_BOOTLOADER_FLASH_OFFSET = 0x0000;
|
|
242
|
+
// ESP32-C61 USB-JTAG/Serial detection (dynamic based on chip revision)
|
|
243
|
+
export const ESP32C61_UARTDEV_BUF_NO_REV_LE2 = 0x4084f5ec; // revision <= 2
|
|
244
|
+
export const ESP32C61_UARTDEV_BUF_NO_REV_GT2 = 0x4084f5e4; // revision > 2
|
|
245
|
+
export const ESP32C61_UARTDEV_BUF_NO_USB_JTAG_SERIAL_REV_LE2 = 3; // revision <= 2
|
|
246
|
+
export const ESP32C61_UARTDEV_BUF_NO_USB_JTAG_SERIAL_REV_GT2 = 4; // revision > 2
|
|
242
247
|
export const ESP32H2_SPI_REG_BASE = 0x60003000;
|
|
243
248
|
export const ESP32H2_BASEFUSEADDR = 0x600b0800;
|
|
244
249
|
export const ESP32H2_EFUSE_BLOCK1_ADDR = ESP32H2_BASEFUSEADDR + 0x044;
|
|
@@ -280,6 +285,9 @@ export const ESP32H4_RTC_CNTL_WDTCONFIG0_REG = ESP32H4_DR_REG_LP_WDT_BASE + 0x00
|
|
|
280
285
|
export const ESP32H4_RTC_CNTL_WDTCONFIG1_REG = ESP32H4_DR_REG_LP_WDT_BASE + 0x0004; // LP_WDT_RWDT_CONFIG1_REG
|
|
281
286
|
export const ESP32H4_RTC_CNTL_WDT_WKEY = 0x50d83aa1; // LP_WDT_SWD_WKEY, same as WDT key in this case
|
|
282
287
|
export const ESP32H4_RTC_CNTL_SWD_WKEY = 0x50d83aa1; // LP_WDT_SWD_WKEY, same as WDT key in this case
|
|
288
|
+
// ESP32-H4 USB-JTAG/Serial detection
|
|
289
|
+
export const ESP32H4_UARTDEV_BUF_NO = 0x4087f580; // Variable in ROM .bss which indicates the port in use
|
|
290
|
+
export const ESP32H4_UARTDEV_BUF_NO_USB_JTAG_SERIAL = 3; // The above var when USB-JTAG/Serial is used
|
|
283
291
|
export const ESP32H21_SPI_REG_BASE = 0x60003000;
|
|
284
292
|
export const ESP32H21_BASEFUSEADDR = 0x600b4000;
|
|
285
293
|
export const ESP32H21_EFUSE_BLOCK1_ADDR = ESP32H21_BASEFUSEADDR + 0x044;
|
package/dist/esp_loader.d.ts
CHANGED
|
@@ -110,12 +110,12 @@ export declare class ESPLoader extends EventTarget {
|
|
|
110
110
|
* Reads data from the input stream and places it in the inputBuffer
|
|
111
111
|
*/
|
|
112
112
|
readLoop(): Promise<void>;
|
|
113
|
-
sleep(ms?: number): Promise<unknown>;
|
|
114
113
|
state_DTR: boolean;
|
|
115
114
|
state_RTS: boolean;
|
|
116
115
|
setRTS(state: boolean): Promise<void>;
|
|
117
116
|
setDTR(state: boolean): Promise<void>;
|
|
118
117
|
setDTRandRTS(dtr: boolean, rts: boolean): Promise<void>;
|
|
118
|
+
private runSignalSequence;
|
|
119
119
|
/**
|
|
120
120
|
* @name hardResetUSBJTAGSerial
|
|
121
121
|
* USB-JTAG/Serial reset for Web Serial (Desktop)
|
|
@@ -131,11 +131,6 @@ export declare class ESPLoader extends EventTarget {
|
|
|
131
131
|
* Keeps IO0=HIGH during reset so chip boots into firmware
|
|
132
132
|
*/
|
|
133
133
|
hardResetToFirmware(): Promise<void>;
|
|
134
|
-
/**
|
|
135
|
-
* Reset to firmware mode (not bootloader) for WebUSB
|
|
136
|
-
* Keeps IO0=HIGH during reset so chip boots into firmware
|
|
137
|
-
*/
|
|
138
|
-
hardResetToFirmwareWebUSB(): Promise<void>;
|
|
139
134
|
/**
|
|
140
135
|
* @name hardResetUnixTight
|
|
141
136
|
* Unix Tight reset for Web Serial (Desktop) - sets DTR and RTS simultaneously
|
|
@@ -144,26 +139,11 @@ export declare class ESPLoader extends EventTarget {
|
|
|
144
139
|
setRTSWebUSB(state: boolean): Promise<void>;
|
|
145
140
|
setDTRWebUSB(state: boolean): Promise<void>;
|
|
146
141
|
setDTRandRTSWebUSB(dtr: boolean, rts: boolean): Promise<void>;
|
|
147
|
-
/**
|
|
148
|
-
* @name hardResetUSBJTAGSerialWebUSB
|
|
149
|
-
* USB-JTAG/Serial reset for WebUSB (Android)
|
|
150
|
-
*/
|
|
151
|
-
hardResetUSBJTAGSerialWebUSB(): Promise<void>;
|
|
152
142
|
/**
|
|
153
143
|
* @name hardResetUSBJTAGSerialInvertedDTRWebUSB
|
|
154
144
|
* USB-JTAG/Serial reset with inverted DTR for WebUSB (Android)
|
|
155
145
|
*/
|
|
156
146
|
hardResetUSBJTAGSerialInvertedDTRWebUSB(): Promise<void>;
|
|
157
|
-
/**
|
|
158
|
-
* @name hardResetClassicWebUSB
|
|
159
|
-
* Classic reset for WebUSB (Android)
|
|
160
|
-
*/
|
|
161
|
-
hardResetClassicWebUSB(): Promise<void>;
|
|
162
|
-
/**
|
|
163
|
-
* @name hardResetUnixTightWebUSB
|
|
164
|
-
* Unix Tight reset for WebUSB (Android) - sets DTR and RTS simultaneously
|
|
165
|
-
*/
|
|
166
|
-
hardResetUnixTightWebUSB(): Promise<void>;
|
|
167
147
|
/**
|
|
168
148
|
* @name hardResetClassicLongDelayWebUSB
|
|
169
149
|
* Classic reset with longer delays for WebUSB (Android)
|
|
@@ -214,10 +194,12 @@ export declare class ESPLoader extends EventTarget {
|
|
|
214
194
|
*/
|
|
215
195
|
rtcWdtResetChipSpecific(): Promise<void>;
|
|
216
196
|
/**
|
|
217
|
-
*
|
|
218
|
-
*
|
|
197
|
+
* Reset device from bootloader mode to firmware mode
|
|
198
|
+
* Automatically selects the correct reset strategy based on USB connection type
|
|
199
|
+
* @param clearForceDownloadFlag - If true, clears the force download boot flag (USB-OTG only)
|
|
200
|
+
* @returns true if port will change (USB-OTG), false otherwise
|
|
219
201
|
*/
|
|
220
|
-
|
|
202
|
+
resetToFirmwareMode(clearForceDownloadFlag?: boolean): Promise<boolean>;
|
|
221
203
|
hardReset(bootloader?: boolean): Promise<void>;
|
|
222
204
|
/**
|
|
223
205
|
* @name macAddr
|
|
@@ -381,6 +363,22 @@ export declare class ESPLoader extends EventTarget {
|
|
|
381
363
|
* @returns true if USB-JTAG or USB-OTG, false if external serial chip
|
|
382
364
|
*/
|
|
383
365
|
detectUsbConnectionType(): Promise<boolean>;
|
|
366
|
+
getUsbMode(): Promise<{
|
|
367
|
+
mode: "uart" | "usb-jtag-serial" | "usb-otg";
|
|
368
|
+
uartNo: number;
|
|
369
|
+
}>;
|
|
370
|
+
/**
|
|
371
|
+
* Check if the current chip supports USB-JTAG or USB-OTG
|
|
372
|
+
* @returns true if chip has native USB support (JTAG or OTG)
|
|
373
|
+
*/
|
|
374
|
+
supportsNativeUsb(): boolean;
|
|
375
|
+
/**
|
|
376
|
+
* @name _ensureStreamsReady
|
|
377
|
+
* After a hardware reset, ensure port streams are available.
|
|
378
|
+
* On WebUSB, recreates streams since they break after reset.
|
|
379
|
+
* On Web Serial, waits for streams to become available.
|
|
380
|
+
*/
|
|
381
|
+
private _ensureStreamsReady;
|
|
384
382
|
/**
|
|
385
383
|
* @name enterConsoleMode
|
|
386
384
|
* Prepare device for console mode by resetting to firmware
|
|
@@ -388,12 +386,6 @@ export declare class ESPLoader extends EventTarget {
|
|
|
388
386
|
* @returns true if port was closed (USB-JTAG), false if port stays open (serial chip)
|
|
389
387
|
*/
|
|
390
388
|
enterConsoleMode(): Promise<boolean>;
|
|
391
|
-
/**
|
|
392
|
-
* @name _resetToFirmwareIfNeeded
|
|
393
|
-
* Reset device from bootloader to firmware when switching to console mode
|
|
394
|
-
* Detects USB-JTAG/Serial and USB-OTG devices and performs appropriate reset
|
|
395
|
-
* @returns true if reconnect was performed, false otherwise
|
|
396
|
-
*/
|
|
397
389
|
/**
|
|
398
390
|
* @name _clearForceDownloadBootIfNeeded
|
|
399
391
|
* Read and clear the force download boot flag if it is set
|
|
@@ -402,6 +394,12 @@ export declare class ESPLoader extends EventTarget {
|
|
|
402
394
|
* Returns true if the flag was cleared, false if it was already clear
|
|
403
395
|
*/
|
|
404
396
|
private _clearForceDownloadBootIfNeeded;
|
|
397
|
+
/**
|
|
398
|
+
* @name _resetToFirmwareIfNeeded
|
|
399
|
+
* Reset device from bootloader to firmware when switching to console mode
|
|
400
|
+
* Detects USB-JTAG/Serial and USB-OTG devices and performs appropriate reset
|
|
401
|
+
* @returns true if reconnect was performed, false otherwise
|
|
402
|
+
*/
|
|
405
403
|
private _resetToFirmwareIfNeeded;
|
|
406
404
|
/**
|
|
407
405
|
* @name reconnectAndResume
|
|
@@ -437,6 +435,15 @@ export declare class ESPLoader extends EventTarget {
|
|
|
437
435
|
* This is a hardware limitation - use isConsoleResetSupported() to check first.
|
|
438
436
|
*/
|
|
439
437
|
resetInConsoleMode(): Promise<void>;
|
|
438
|
+
/**
|
|
439
|
+
* @name syncAndWdtReset
|
|
440
|
+
* Open a new bootloader port, sync with ROM (no stub, no reset strategies), and fire WDT reset.
|
|
441
|
+
* This is used for ESP32-S2 USB-OTG devices which require WDT reset to switch modes.
|
|
442
|
+
* After WDT reset the port will re-enumerate again.
|
|
443
|
+
* The user must select the new port after this method is called.
|
|
444
|
+
* @param newPort - The bootloader port selected by the user
|
|
445
|
+
*/
|
|
446
|
+
syncAndWdtReset(newPort: SerialPort): Promise<void>;
|
|
440
447
|
/**
|
|
441
448
|
* @name drainInputBuffer
|
|
442
449
|
* Actively drain the input buffer by reading data for a specified time.
|