esp32tool 1.1.9 → 1.3.0
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/.nojekyll +0 -0
- package/README.md +100 -6
- package/apple-touch-icon.png +0 -0
- package/build-electron-cli.cjs +177 -0
- package/build-single-binary.cjs +295 -0
- package/css/light.css +11 -0
- package/css/style.css +261 -41
- package/dist/cli.d.ts +17 -0
- package/dist/cli.js +458 -0
- package/dist/console.d.ts +15 -0
- package/dist/console.js +237 -0
- package/dist/const.d.ts +99 -0
- package/dist/const.js +129 -8
- package/dist/esp_loader.d.ts +244 -22
- package/dist/esp_loader.js +1960 -251
- package/dist/index.d.ts +2 -1
- package/dist/index.js +37 -4
- package/dist/node-usb-adapter.d.ts +47 -0
- package/dist/node-usb-adapter.js +725 -0
- package/dist/stubs/index.d.ts +1 -2
- package/dist/stubs/index.js +4 -0
- package/dist/util/console-color.d.ts +19 -0
- package/dist/util/console-color.js +272 -0
- package/dist/util/line-break-transformer.d.ts +5 -0
- package/dist/util/line-break-transformer.js +17 -0
- package/dist/web/index.js +1 -1
- package/electron/cli-main.cjs +74 -0
- package/electron/main.cjs +338 -0
- package/electron/main.js +7 -2
- package/favicon.ico +0 -0
- package/fix-cli-imports.cjs +127 -0
- package/generate-icons.sh +89 -0
- 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/index.html +143 -73
- package/install-android.html +411 -0
- package/js/console.js +269 -0
- package/js/modules/esptool.js +1 -1
- package/js/script.js +750 -175
- package/js/util/console-color.js +282 -0
- package/js/util/line-break-transformer.js +19 -0
- package/js/webusb-serial.js +1017 -0
- package/license.md +1 -1
- package/manifest.json +89 -0
- package/package.cli.json +29 -0
- package/package.json +35 -24
- package/screenshots/desktop.png +0 -0
- package/screenshots/mobile.png +0 -0
- package/src/cli.ts +618 -0
- package/src/console.ts +278 -0
- package/src/const.ts +165 -8
- package/src/esp_loader.ts +2354 -302
- package/src/index.ts +69 -3
- package/src/node-usb-adapter.ts +924 -0
- package/src/stubs/index.ts +4 -1
- package/src/util/console-color.ts +290 -0
- package/src/util/line-break-transformer.ts +20 -0
- package/sw.js +155 -0
package/dist/esp_loader.d.ts
CHANGED
|
@@ -3,10 +3,10 @@ export declare class ESPLoader extends EventTarget {
|
|
|
3
3
|
port: SerialPort;
|
|
4
4
|
logger: Logger;
|
|
5
5
|
private _parent?;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
__chipFamily?: ChipFamily;
|
|
7
|
+
__chipName: string | null;
|
|
8
|
+
__chipRevision: number | null;
|
|
9
|
+
__chipVariant: string | null;
|
|
10
10
|
_efuses: any[];
|
|
11
11
|
_flashsize: number;
|
|
12
12
|
debug: boolean;
|
|
@@ -14,22 +14,66 @@ export declare class ESPLoader extends EventTarget {
|
|
|
14
14
|
connected: boolean;
|
|
15
15
|
flashSize: string | null;
|
|
16
16
|
__inputBuffer?: number[];
|
|
17
|
+
__inputBufferReadIndex?: number;
|
|
17
18
|
__totalBytesRead?: number;
|
|
18
|
-
|
|
19
|
+
currentBaudRate: number;
|
|
19
20
|
private _maxUSBSerialBaudrate?;
|
|
20
21
|
private _reader?;
|
|
21
22
|
private _isESP32S2NativeUSB;
|
|
22
23
|
private _initializationSucceeded;
|
|
23
24
|
private __commandLock;
|
|
24
25
|
private __isReconfiguring;
|
|
26
|
+
private __abandonCurrentOperation;
|
|
27
|
+
private _suppressDisconnect;
|
|
28
|
+
private __consoleMode;
|
|
29
|
+
_isUsbJtagOrOtg: boolean | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Check if device is using USB-JTAG or USB-OTG (not external serial chip)
|
|
32
|
+
* Returns undefined if not yet determined
|
|
33
|
+
*/
|
|
34
|
+
get isUsbJtagOrOtg(): boolean | undefined;
|
|
35
|
+
private __adaptiveBlockMultiplier;
|
|
36
|
+
private __adaptiveMaxInFlightMultiplier;
|
|
37
|
+
private __consecutiveSuccessfulChunks;
|
|
38
|
+
private __lastAdaptiveAdjustment;
|
|
39
|
+
private __isCDCDevice;
|
|
25
40
|
constructor(port: SerialPort, logger: Logger, _parent?: ESPLoader | undefined);
|
|
41
|
+
get chipFamily(): ChipFamily;
|
|
42
|
+
set chipFamily(value: ChipFamily);
|
|
43
|
+
get chipName(): string | null;
|
|
44
|
+
set chipName(value: string | null);
|
|
45
|
+
get chipRevision(): number | null;
|
|
46
|
+
set chipRevision(value: number | null);
|
|
47
|
+
get chipVariant(): string | null;
|
|
48
|
+
set chipVariant(value: string | null);
|
|
49
|
+
private get _consoleMode();
|
|
50
|
+
private set _consoleMode(value);
|
|
51
|
+
setConsoleMode(value: boolean): void;
|
|
26
52
|
private get _inputBuffer();
|
|
53
|
+
private get _inputBufferReadIndex();
|
|
54
|
+
private set _inputBufferReadIndex(value);
|
|
55
|
+
private get _inputBufferAvailable();
|
|
56
|
+
private _readByte;
|
|
57
|
+
private _clearInputBuffer;
|
|
58
|
+
private _compactInputBuffer;
|
|
27
59
|
private get _totalBytesRead();
|
|
28
60
|
private set _totalBytesRead(value);
|
|
29
61
|
private get _commandLock();
|
|
30
62
|
private set _commandLock(value);
|
|
31
63
|
private get _isReconfiguring();
|
|
32
64
|
private set _isReconfiguring(value);
|
|
65
|
+
private get _abandonCurrentOperation();
|
|
66
|
+
private set _abandonCurrentOperation(value);
|
|
67
|
+
private get _adaptiveBlockMultiplier();
|
|
68
|
+
private set _adaptiveBlockMultiplier(value);
|
|
69
|
+
private get _adaptiveMaxInFlightMultiplier();
|
|
70
|
+
private set _adaptiveMaxInFlightMultiplier(value);
|
|
71
|
+
private get _consecutiveSuccessfulChunks();
|
|
72
|
+
private set _consecutiveSuccessfulChunks(value);
|
|
73
|
+
private get _lastAdaptiveAdjustment();
|
|
74
|
+
private set _lastAdaptiveAdjustment(value);
|
|
75
|
+
private get _isCDCDevice();
|
|
76
|
+
private set _isCDCDevice(value);
|
|
33
77
|
private detectUSBSerialChip;
|
|
34
78
|
initialize(): Promise<void>;
|
|
35
79
|
/**
|
|
@@ -50,6 +94,10 @@ export declare class ESPLoader extends EventTarget {
|
|
|
50
94
|
chipId: number;
|
|
51
95
|
apiVersion: number;
|
|
52
96
|
}>;
|
|
97
|
+
/**
|
|
98
|
+
* Get MAC address from efuses
|
|
99
|
+
*/
|
|
100
|
+
getMacAddress(): Promise<string>;
|
|
53
101
|
/**
|
|
54
102
|
* @name readLoop
|
|
55
103
|
* Reads data from the input stream and places it in the inputBuffer
|
|
@@ -57,8 +105,142 @@ export declare class ESPLoader extends EventTarget {
|
|
|
57
105
|
readLoop(): Promise<void>;
|
|
58
106
|
sleep(ms?: number): Promise<unknown>;
|
|
59
107
|
state_DTR: boolean;
|
|
108
|
+
state_RTS: boolean;
|
|
60
109
|
setRTS(state: boolean): Promise<void>;
|
|
61
110
|
setDTR(state: boolean): Promise<void>;
|
|
111
|
+
setDTRandRTS(dtr: boolean, rts: boolean): Promise<void>;
|
|
112
|
+
/**
|
|
113
|
+
* @name hardResetUSBJTAGSerial
|
|
114
|
+
* USB-JTAG/Serial reset for Web Serial (Desktop)
|
|
115
|
+
*/
|
|
116
|
+
hardResetUSBJTAGSerial(): Promise<void>;
|
|
117
|
+
/**
|
|
118
|
+
* @name hardResetClassic
|
|
119
|
+
* Classic reset for Web Serial (Desktop) DTR = IO0, RTS = EN
|
|
120
|
+
*/
|
|
121
|
+
hardResetClassic(): Promise<void>;
|
|
122
|
+
/**
|
|
123
|
+
* Reset to firmware mode (not bootloader) for Web Serial
|
|
124
|
+
* Keeps IO0=HIGH during reset so chip boots into firmware
|
|
125
|
+
*/
|
|
126
|
+
hardResetToFirmware(): Promise<void>;
|
|
127
|
+
/**
|
|
128
|
+
* Reset to firmware mode (not bootloader) for WebUSB
|
|
129
|
+
* Keeps IO0=HIGH during reset so chip boots into firmware
|
|
130
|
+
*/
|
|
131
|
+
hardResetToFirmwareWebUSB(): Promise<void>;
|
|
132
|
+
/**
|
|
133
|
+
* @name hardResetUnixTight
|
|
134
|
+
* Unix Tight reset for Web Serial (Desktop) - sets DTR and RTS simultaneously
|
|
135
|
+
*/
|
|
136
|
+
hardResetUnixTight(): Promise<void>;
|
|
137
|
+
setRTSWebUSB(state: boolean): Promise<void>;
|
|
138
|
+
setDTRWebUSB(state: boolean): Promise<void>;
|
|
139
|
+
setDTRandRTSWebUSB(dtr: boolean, rts: boolean): Promise<void>;
|
|
140
|
+
/**
|
|
141
|
+
* @name hardResetUSBJTAGSerialWebUSB
|
|
142
|
+
* USB-JTAG/Serial reset for WebUSB (Android)
|
|
143
|
+
*/
|
|
144
|
+
hardResetUSBJTAGSerialWebUSB(): Promise<void>;
|
|
145
|
+
/**
|
|
146
|
+
* @name hardResetUSBJTAGSerialInvertedDTRWebUSB
|
|
147
|
+
* USB-JTAG/Serial reset with inverted DTR for WebUSB (Android)
|
|
148
|
+
*/
|
|
149
|
+
hardResetUSBJTAGSerialInvertedDTRWebUSB(): Promise<void>;
|
|
150
|
+
/**
|
|
151
|
+
* @name hardResetClassicWebUSB
|
|
152
|
+
* Classic reset for WebUSB (Android)
|
|
153
|
+
*/
|
|
154
|
+
hardResetClassicWebUSB(): Promise<void>;
|
|
155
|
+
/**
|
|
156
|
+
* @name hardResetUnixTightWebUSB
|
|
157
|
+
* Unix Tight reset for WebUSB (Android) - sets DTR and RTS simultaneously
|
|
158
|
+
*/
|
|
159
|
+
hardResetUnixTightWebUSB(): Promise<void>;
|
|
160
|
+
/**
|
|
161
|
+
* @name hardResetClassicLongDelayWebUSB
|
|
162
|
+
* Classic reset with longer delays for WebUSB (Android)
|
|
163
|
+
* Specifically for CP2102/CH340 which may need more time
|
|
164
|
+
*/
|
|
165
|
+
hardResetClassicLongDelayWebUSB(): Promise<void>;
|
|
166
|
+
/**
|
|
167
|
+
* @name hardResetClassicShortDelayWebUSB
|
|
168
|
+
* Classic reset with shorter delays for WebUSB (Android)
|
|
169
|
+
*/
|
|
170
|
+
hardResetClassicShortDelayWebUSB(): Promise<void>;
|
|
171
|
+
/**
|
|
172
|
+
* @name hardResetInvertedWebUSB
|
|
173
|
+
* Inverted reset sequence for WebUSB (Android) - both signals inverted
|
|
174
|
+
*/
|
|
175
|
+
hardResetInvertedWebUSB(): Promise<void>;
|
|
176
|
+
/**
|
|
177
|
+
* @name hardResetInvertedDTRWebUSB
|
|
178
|
+
* Only DTR inverted for WebUSB (Android)
|
|
179
|
+
*/
|
|
180
|
+
hardResetInvertedDTRWebUSB(): Promise<void>;
|
|
181
|
+
/**
|
|
182
|
+
* @name hardResetInvertedRTSWebUSB
|
|
183
|
+
* Only RTS inverted for WebUSB (Android)
|
|
184
|
+
*/
|
|
185
|
+
hardResetInvertedRTSWebUSB(): Promise<void>;
|
|
186
|
+
/**
|
|
187
|
+
* Check if we're using WebUSB (Android) or Web Serial (Desktop)
|
|
188
|
+
*/
|
|
189
|
+
private isWebUSB;
|
|
190
|
+
/**
|
|
191
|
+
* @name connectWithResetStrategies
|
|
192
|
+
* Try different reset strategies to enter bootloader mode
|
|
193
|
+
* Similar to esptool.py's connect() method with multiple reset strategies
|
|
194
|
+
*/
|
|
195
|
+
connectWithResetStrategies(): Promise<void>;
|
|
196
|
+
/**
|
|
197
|
+
* @name watchdogReset
|
|
198
|
+
* Watchdog reset for ESP32-S2/S3/C3 with USB-OTG or USB-JTAG/Serial
|
|
199
|
+
* Uses RTC watchdog timer to reset the chip - works when DTR/RTS signals are not available
|
|
200
|
+
* This is an alias for rtcWdtResetChipSpecific() for backwards compatibility
|
|
201
|
+
*/
|
|
202
|
+
watchdogReset(): Promise<void>;
|
|
203
|
+
/**
|
|
204
|
+
* Check if current chip is using USB-OTG
|
|
205
|
+
* Supports ESP32-S2 and ESP32-S3
|
|
206
|
+
*/
|
|
207
|
+
usingUsbOtg(): Promise<boolean>;
|
|
208
|
+
/**
|
|
209
|
+
* Check if current chip is using USB-JTAG/Serial
|
|
210
|
+
* Supports ESP32-S3 and ESP32-C3
|
|
211
|
+
*/
|
|
212
|
+
usingUsbJtagSerial(): Promise<boolean>;
|
|
213
|
+
/**
|
|
214
|
+
* Get chip revision for ESP32-C3
|
|
215
|
+
* Reads from EFUSE registers and calculates revision
|
|
216
|
+
*/
|
|
217
|
+
getChipRevisionC3(): Promise<number>;
|
|
218
|
+
/**
|
|
219
|
+
* RTC watchdog timer reset for ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C5, ESP32-C6, and ESP32-P4
|
|
220
|
+
* Uses specific registers for each chip family
|
|
221
|
+
* Note: ESP32-H2 does NOT support WDT reset
|
|
222
|
+
*/
|
|
223
|
+
rtcWdtResetChipSpecific(): Promise<void>;
|
|
224
|
+
/**
|
|
225
|
+
* Helper: Check if USB-based WDT reset should be used for S2/S3
|
|
226
|
+
* Returns true if WDT reset was performed, false otherwise
|
|
227
|
+
*/
|
|
228
|
+
private tryUsbWdtReset;
|
|
229
|
+
/**
|
|
230
|
+
* Chip-specific hard reset for ESP32-S2
|
|
231
|
+
* Checks if using USB-JTAG/Serial and uses watchdog reset if necessary
|
|
232
|
+
*/
|
|
233
|
+
hardResetS2(): Promise<void>;
|
|
234
|
+
/**
|
|
235
|
+
* Chip-specific hard reset for ESP32-S3
|
|
236
|
+
* Checks if using USB-JTAG/Serial and uses watchdog reset if necessary
|
|
237
|
+
*/
|
|
238
|
+
hardResetS3(): Promise<void>;
|
|
239
|
+
/**
|
|
240
|
+
* Chip-specific hard reset for ESP32-C3
|
|
241
|
+
* Checks if using USB-JTAG/Serial and uses watchdog reset if necessary
|
|
242
|
+
*/
|
|
243
|
+
hardResetC3(): Promise<void>;
|
|
62
244
|
hardReset(bootloader?: boolean): Promise<void>;
|
|
63
245
|
/**
|
|
64
246
|
* @name macAddr
|
|
@@ -86,6 +268,10 @@ export declare class ESPLoader extends EventTarget {
|
|
|
86
268
|
* @name readPacket
|
|
87
269
|
* Generator to read SLIP packets from a serial port.
|
|
88
270
|
* Yields one full SLIP packet at a time, raises exception on timeout or invalid data.
|
|
271
|
+
*
|
|
272
|
+
* Two implementations:
|
|
273
|
+
* - Burst: CDC devices (Native USB) and CH343 - very fast processing
|
|
274
|
+
* - Byte-by-byte: CH340, CP2102, and other USB-Serial adapters - stable fast processing
|
|
89
275
|
*/
|
|
90
276
|
readPacket(timeout: number): Promise<number[]>;
|
|
91
277
|
/**
|
|
@@ -103,21 +289,11 @@ export declare class ESPLoader extends EventTarget {
|
|
|
103
289
|
setBaudrate(baud: number): Promise<void>;
|
|
104
290
|
reconfigurePort(baud: number): Promise<void>;
|
|
105
291
|
/**
|
|
106
|
-
* @name
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*/
|
|
110
|
-
connectWithResetStrategies(): Promise<void>;
|
|
111
|
-
/**
|
|
112
|
-
* @name hardResetUSBJTAGSerial
|
|
113
|
-
* USB-JTAG/Serial reset sequence for ESP32-C3, ESP32-S3, ESP32-C6, etc.
|
|
292
|
+
* @name syncWithTimeout
|
|
293
|
+
* Sync with timeout that can be abandoned (for reset strategy loop)
|
|
294
|
+
* This is internally time-bounded and checks the abandon flag
|
|
114
295
|
*/
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* @name hardResetClassic
|
|
118
|
-
* Classic reset sequence for USB-to-Serial bridge chips (CH340, CP2102, etc.)
|
|
119
|
-
*/
|
|
120
|
-
hardResetClassic(): Promise<void>;
|
|
296
|
+
syncWithTimeout(timeoutMs: number): Promise<boolean>;
|
|
121
297
|
/**
|
|
122
298
|
* @name sync
|
|
123
299
|
* Put into ROM bootload mode & attempt to synchronize with the
|
|
@@ -205,11 +381,44 @@ export declare class ESPLoader extends EventTarget {
|
|
|
205
381
|
private set _writeChain(value);
|
|
206
382
|
writeToStream(data: number[]): Promise<void>;
|
|
207
383
|
disconnect(): Promise<void>;
|
|
384
|
+
/**
|
|
385
|
+
* @name releaseReaderWriter
|
|
386
|
+
* Release reader and writer locks without closing the port
|
|
387
|
+
* Used when switching to console mode
|
|
388
|
+
*/
|
|
389
|
+
releaseReaderWriter(): Promise<void>;
|
|
390
|
+
/**
|
|
391
|
+
* @name resetToFirmware
|
|
392
|
+
* Public method to reset device from bootloader to firmware for console mode
|
|
393
|
+
* Automatically detects USB-JTAG/Serial and USB-OTG devices and performs appropriate reset
|
|
394
|
+
* @returns true if reset was performed, false if not needed
|
|
395
|
+
*/
|
|
396
|
+
resetToFirmware(): Promise<boolean>;
|
|
397
|
+
/**
|
|
398
|
+
* @name enterConsoleMode
|
|
399
|
+
* Prepare device for console mode by resetting to firmware
|
|
400
|
+
* Handles both USB-JTAG/OTG devices (closes port) and external serial chips (keeps port open)
|
|
401
|
+
* @returns true if port was closed (USB-JTAG), false if port stays open (serial chip)
|
|
402
|
+
*/
|
|
403
|
+
enterConsoleMode(): Promise<boolean>;
|
|
404
|
+
/**
|
|
405
|
+
* @name _resetToFirmwareIfNeeded
|
|
406
|
+
* Reset device from bootloader to firmware when switching to console mode
|
|
407
|
+
* Detects USB-JTAG/Serial and USB-OTG devices and performs appropriate reset
|
|
408
|
+
* @returns true if reconnect was performed, false otherwise
|
|
409
|
+
*/
|
|
410
|
+
private _resetToFirmwareIfNeeded;
|
|
208
411
|
/**
|
|
209
412
|
* @name reconnectAndResume
|
|
210
413
|
* Reconnect the serial port to flush browser buffers and reload stub
|
|
211
414
|
*/
|
|
212
415
|
reconnect(): Promise<void>;
|
|
416
|
+
/**
|
|
417
|
+
* @name reconnectToBootloader
|
|
418
|
+
* Close and reopen the port, then reset ESP to bootloader mode
|
|
419
|
+
* This is needed after Improv or other operations that leave ESP in firmware mode
|
|
420
|
+
*/
|
|
421
|
+
reconnectToBootloader(): Promise<void>;
|
|
213
422
|
/**
|
|
214
423
|
* @name drainInputBuffer
|
|
215
424
|
* Actively drain the input buffer by reading data for a specified time.
|
|
@@ -233,9 +442,17 @@ export declare class ESPLoader extends EventTarget {
|
|
|
233
442
|
* @param addr - Address to read from
|
|
234
443
|
* @param size - Number of bytes to read
|
|
235
444
|
* @param onPacketReceived - Optional callback function called when packet is received
|
|
445
|
+
* @param options - Optional parameters for advanced control
|
|
446
|
+
* - chunkSize: Amount of data to request from ESP in one command (bytes)
|
|
447
|
+
* - blockSize: Size of each data block sent by ESP (bytes)
|
|
448
|
+
* - maxInFlight: Maximum unacknowledged bytes (bytes)
|
|
236
449
|
* @returns Uint8Array containing the flash data
|
|
237
450
|
*/
|
|
238
|
-
readFlash(addr: number, size: number, onPacketReceived?: (packet: Uint8Array, progress: number, totalSize: number) => void
|
|
451
|
+
readFlash(addr: number, size: number, onPacketReceived?: (packet: Uint8Array, progress: number, totalSize: number) => void, options?: {
|
|
452
|
+
chunkSize?: number;
|
|
453
|
+
blockSize?: number;
|
|
454
|
+
maxInFlight?: number;
|
|
455
|
+
}): Promise<Uint8Array>;
|
|
239
456
|
}
|
|
240
457
|
declare class EspStubLoader extends ESPLoader {
|
|
241
458
|
IS_STUB: boolean;
|
|
@@ -245,9 +462,14 @@ declare class EspStubLoader extends ESPLoader {
|
|
|
245
462
|
*/
|
|
246
463
|
memBegin(size: number, _blocks: number, _blocksize: number, offset: number): Promise<[number, number[]]>;
|
|
247
464
|
/**
|
|
248
|
-
* @name
|
|
249
|
-
*
|
|
465
|
+
* @name eraseFlash
|
|
466
|
+
* Erase entire flash chip
|
|
250
467
|
*/
|
|
251
468
|
eraseFlash(): Promise<void>;
|
|
469
|
+
/**
|
|
470
|
+
* @name eraseRegion
|
|
471
|
+
* Erase a specific region of flash
|
|
472
|
+
*/
|
|
473
|
+
eraseRegion(offset: number, size: number): Promise<void>;
|
|
252
474
|
}
|
|
253
475
|
export {};
|