tasmota-webserial-esptool 6.5.4 → 7.0.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.
Files changed (101) hide show
  1. package/.vscode/settings.json +2 -0
  2. package/README.md +4 -3
  3. package/READ_FLASH_FEATURE.md +130 -0
  4. package/css/light.css +11 -0
  5. package/css/style.css +213 -45
  6. package/dist/const.d.ts +41 -2
  7. package/dist/const.js +100 -2
  8. package/dist/esp_loader.d.ts +27 -3
  9. package/dist/esp_loader.js +376 -17
  10. package/dist/index.d.ts +1 -1
  11. package/dist/index.js +1 -2
  12. package/dist/partition.d.ts +26 -0
  13. package/dist/partition.js +129 -0
  14. package/dist/stubs/esp32.json +4 -4
  15. package/dist/stubs/esp32c2.json +4 -4
  16. package/dist/stubs/esp32c3.json +4 -4
  17. package/dist/stubs/esp32c5.json +4 -4
  18. package/dist/stubs/esp32c6.json +4 -4
  19. package/dist/stubs/esp32c61.json +4 -4
  20. package/dist/stubs/esp32h2.json +4 -4
  21. package/dist/stubs/esp32p4.json +4 -4
  22. package/dist/stubs/esp32p4r3.json +4 -4
  23. package/dist/stubs/esp32s2.json +4 -4
  24. package/dist/stubs/esp32s3.json +4 -4
  25. package/dist/stubs/esp8266.json +3 -3
  26. package/dist/stubs/index.d.ts +1 -1
  27. package/dist/stubs/index.js +7 -1
  28. package/dist/web/esp32-CijhsJH1.js +1 -0
  29. package/dist/web/esp32c2-C17SM4gO.js +1 -0
  30. package/dist/web/esp32c3-DxRGijbg.js +1 -0
  31. package/dist/web/esp32c5-3mDOIGa4.js +1 -0
  32. package/dist/web/esp32c6-h6U0SQTm.js +1 -0
  33. package/dist/web/esp32c61-BKtexhPZ.js +1 -0
  34. package/dist/web/esp32h2-RtuWSEmP.js +1 -0
  35. package/dist/web/esp32p4-5nkIjxqJ.js +1 -0
  36. package/dist/web/esp32p4r3-CpHBYEwI.js +1 -0
  37. package/dist/web/esp32s2-IiDBtXxo.js +1 -0
  38. package/dist/web/esp32s3-6yv5yxum.js +1 -0
  39. package/dist/web/esp8266-CUwxJpGa.js +1 -0
  40. package/dist/web/index.js +1 -1
  41. package/index.html +158 -34
  42. package/js/modules/esp32-CijhsJH1.js +1 -0
  43. package/js/modules/esp32c2-C17SM4gO.js +1 -0
  44. package/js/modules/esp32c3-DxRGijbg.js +1 -0
  45. package/js/modules/esp32c5-3mDOIGa4.js +1 -0
  46. package/js/modules/esp32c6-h6U0SQTm.js +1 -0
  47. package/js/modules/esp32c61-BKtexhPZ.js +1 -0
  48. package/js/modules/esp32h2-RtuWSEmP.js +1 -0
  49. package/js/modules/esp32p4-5nkIjxqJ.js +1 -0
  50. package/js/modules/esp32p4r3-CpHBYEwI.js +1 -0
  51. package/js/modules/esp32s2-IiDBtXxo.js +1 -0
  52. package/js/modules/esp32s3-6yv5yxum.js +1 -0
  53. package/js/modules/esp8266-CUwxJpGa.js +1 -0
  54. package/js/modules/esptool.js +1 -1
  55. package/js/script.js +456 -11
  56. package/package.json +6 -6
  57. package/src/const.ts +107 -3
  58. package/src/esp_loader.ts +491 -18
  59. package/src/index.ts +3 -1
  60. package/src/partition.ts +155 -0
  61. package/src/stubs/README.md +1 -1
  62. package/src/stubs/esp32.json +4 -4
  63. package/src/stubs/esp32c2.json +4 -4
  64. package/src/stubs/esp32c3.json +4 -4
  65. package/src/stubs/esp32c5.json +4 -4
  66. package/src/stubs/esp32c6.json +4 -4
  67. package/src/stubs/esp32c61.json +4 -4
  68. package/src/stubs/esp32h2.json +4 -4
  69. package/src/stubs/esp32p4.json +4 -4
  70. package/src/stubs/esp32p4r3.json +4 -4
  71. package/src/stubs/esp32s2.json +4 -4
  72. package/src/stubs/esp32s3.json +4 -4
  73. package/src/stubs/esp8266.json +3 -3
  74. package/src/stubs/index.ts +14 -2
  75. package/BUGFIX_GET_SECURITY_INFO.md +0 -126
  76. package/IMPLEMENTATION_SUMMARY.md +0 -232
  77. package/SECURITY_INFO_EXPLANATION.md +0 -145
  78. package/dist/web/esp32-BNIFdu1P.js +0 -1
  79. package/dist/web/esp32c2-BqxquOKw.js +0 -1
  80. package/dist/web/esp32c3-BOOqe8me.js +0 -1
  81. package/dist/web/esp32c5-mcj52-K1.js +0 -1
  82. package/dist/web/esp32c6-Cg5qYgg7.js +0 -1
  83. package/dist/web/esp32c61-CzCdsydk.js +0 -1
  84. package/dist/web/esp32h2-DZa_lpff.js +0 -1
  85. package/dist/web/esp32p4-DyGqUAeZ.js +0 -1
  86. package/dist/web/esp32p4r3-Cle9QJmZ.js +0 -1
  87. package/dist/web/esp32s2-Bk4mqADi.js +0 -1
  88. package/dist/web/esp32s3-Df3OUCOC.js +0 -1
  89. package/dist/web/esp8266-CQFcqJ_a.js +0 -1
  90. package/js/modules/esp32-BNIFdu1P.js +0 -1
  91. package/js/modules/esp32c2-BqxquOKw.js +0 -1
  92. package/js/modules/esp32c3-BOOqe8me.js +0 -1
  93. package/js/modules/esp32c5-mcj52-K1.js +0 -1
  94. package/js/modules/esp32c6-Cg5qYgg7.js +0 -1
  95. package/js/modules/esp32c61-CzCdsydk.js +0 -1
  96. package/js/modules/esp32h2-DZa_lpff.js +0 -1
  97. package/js/modules/esp32p4-DyGqUAeZ.js +0 -1
  98. package/js/modules/esp32p4r3-Cle9QJmZ.js +0 -1
  99. package/js/modules/esp32s2-Bk4mqADi.js +0 -1
  100. package/js/modules/esp32s3-Df3OUCOC.js +0 -1
  101. package/js/modules/esp8266-CQFcqJ_a.js +0 -1
package/src/const.ts CHANGED
@@ -7,7 +7,7 @@ export interface Logger {
7
7
  }
8
8
 
9
9
  export const baudRates = [
10
- 115200, 128000, 153600, 230400, 460800, 921600, 1500000, 2000000,
10
+ 115200, 128000, 153600, 230400, 460800, 500000, 921600, 1500000, 2000000,
11
11
  ];
12
12
  export const FLASH_SIZES = {
13
13
  "512KB": 0x00,
@@ -46,6 +46,20 @@ export const DETECTED_FLASH_SIZES: FlashSize = {
46
46
  0x18: "16MB",
47
47
  0x19: "32MB",
48
48
  0x1a: "64MB",
49
+ 0x1b: "128MB",
50
+ 0x1c: "256MB",
51
+ 0x20: "64MB",
52
+ 0x21: "128MB",
53
+ 0x22: "256MB",
54
+ 0x32: "256KB",
55
+ 0x33: "512KB",
56
+ 0x34: "1MB",
57
+ 0x35: "2MB",
58
+ 0x36: "4MB",
59
+ 0x37: "8MB",
60
+ 0x38: "16MB",
61
+ 0x39: "32MB",
62
+ 0x3a: "64MB",
49
63
  };
50
64
 
51
65
  export const FLASH_WRITE_SIZE = 0x400;
@@ -174,6 +188,30 @@ export const ESP32H2_SPI_W0_OFFS = 0x58;
174
188
  export const ESP32H2_UART_DATE_REG_ADDR = 0x6000007c;
175
189
  export const ESP32H2_BOOTLOADER_FLASH_OFFSET = 0x0;
176
190
 
191
+ export const ESP32H4_SPI_REG_BASE = 0x60099000;
192
+ export const ESP32H4_BASEFUSEADDR = 0x600b1800;
193
+ export const ESP32H4_MACFUSEADDR = 0x600b1800 + 0x044;
194
+ export const ESP32H4_SPI_USR_OFFS = 0x18;
195
+ export const ESP32H4_SPI_USR1_OFFS = 0x1c;
196
+ export const ESP32H4_SPI_USR2_OFFS = 0x20;
197
+ export const ESP32H4_SPI_MOSI_DLEN_OFFS = 0x24;
198
+ export const ESP32H4_SPI_MISO_DLEN_OFFS = 0x28;
199
+ export const ESP32H4_SPI_W0_OFFS = 0x58;
200
+ export const ESP32H4_UART_DATE_REG_ADDR = 0x60012000 + 0x7c;
201
+ export const ESP32H4_BOOTLOADER_FLASH_OFFSET = 0x2000;
202
+
203
+ export const ESP32H21_SPI_REG_BASE = 0x60003000;
204
+ export const ESP32H21_BASEFUSEADDR = 0x600b4000;
205
+ export const ESP32H21_MACFUSEADDR = 0x600b4000 + 0x044;
206
+ export const ESP32H21_SPI_USR_OFFS = 0x18;
207
+ export const ESP32H21_SPI_USR1_OFFS = 0x1c;
208
+ export const ESP32H21_SPI_USR2_OFFS = 0x20;
209
+ export const ESP32H21_SPI_MOSI_DLEN_OFFS = 0x24;
210
+ export const ESP32H21_SPI_MISO_DLEN_OFFS = 0x28;
211
+ export const ESP32H21_SPI_W0_OFFS = 0x58;
212
+ export const ESP32H21_UART_DATE_REG_ADDR = 0x6000007c;
213
+ export const ESP32H21_BOOTLOADER_FLASH_OFFSET = 0x0;
214
+
177
215
  export const ESP32P4_SPI_REG_BASE = 0x5008d000;
178
216
  export const ESP32P4_BASEFUSEADDR = 0x5012d000;
179
217
  export const ESP32P4_EFUSE_BLOCK1_ADDR = ESP32P4_BASEFUSEADDR + 0x044;
@@ -187,6 +225,19 @@ export const ESP32P4_SPI_W0_OFFS = 0x58;
187
225
  export const ESP32P4_UART_DATE_REG_ADDR = 0x500ca000 + 0x8c;
188
226
  export const ESP32P4_BOOTLOADER_FLASH_OFFSET = 0x2000;
189
227
 
228
+ export const ESP32S31_SPI_REG_BASE = 0x20500000;
229
+ export const ESP32S31_BASEFUSEADDR = 0x20715000;
230
+ export const ESP32S31_EFUSE_BLOCK1_ADDR = ESP32S31_BASEFUSEADDR + 0x044;
231
+ export const ESP32S31_MACFUSEADDR = 0x20715000 + 0x044;
232
+ export const ESP32S31_SPI_USR_OFFS = 0x18;
233
+ export const ESP32S31_SPI_USR1_OFFS = 0x1c;
234
+ export const ESP32S31_SPI_USR2_OFFS = 0x20;
235
+ export const ESP32S31_SPI_MOSI_DLEN_OFFS = 0x24;
236
+ export const ESP32S31_SPI_MISO_DLEN_OFFS = 0x28;
237
+ export const ESP32S31_SPI_W0_OFFS = 0x58;
238
+ export const ESP32S31_UART_DATE_REG_ADDR = 0x2038a000 + 0x8c;
239
+ export const ESP32S31_BOOTLOADER_FLASH_OFFSET = 0x2000;
240
+
190
241
  export interface SpiFlashAddresses {
191
242
  regBase: number;
192
243
  baseFuse: number;
@@ -218,7 +269,10 @@ export const CHIP_FAMILY_ESP32C5 = 0x32c5;
218
269
  export const CHIP_FAMILY_ESP32C6 = 0x32c6;
219
270
  export const CHIP_FAMILY_ESP32C61 = 0x32c61;
220
271
  export const CHIP_FAMILY_ESP32H2 = 0x3272;
272
+ export const CHIP_FAMILY_ESP32H4 = 0x3274;
273
+ export const CHIP_FAMILY_ESP32H21 = 0x3275;
221
274
  export const CHIP_FAMILY_ESP32P4 = 0x3280;
275
+ export const CHIP_FAMILY_ESP32S31 = 0x3231;
222
276
  export type ChipFamily =
223
277
  | typeof CHIP_FAMILY_ESP8266
224
278
  | typeof CHIP_FAMILY_ESP32
@@ -230,7 +284,10 @@ export type ChipFamily =
230
284
  | typeof CHIP_FAMILY_ESP32C6
231
285
  | typeof CHIP_FAMILY_ESP32C61
232
286
  | typeof CHIP_FAMILY_ESP32H2
233
- | typeof CHIP_FAMILY_ESP32P4;
287
+ | typeof CHIP_FAMILY_ESP32H4
288
+ | typeof CHIP_FAMILY_ESP32H21
289
+ | typeof CHIP_FAMILY_ESP32P4
290
+ | typeof CHIP_FAMILY_ESP32S31;
234
291
 
235
292
  interface ChipIdInfo {
236
293
  name: string;
@@ -246,6 +303,9 @@ export const CHIP_ID_TO_INFO: { [chipId: number]: ChipIdInfo } = {
246
303
  18: { name: "ESP32-P4", family: CHIP_FAMILY_ESP32P4 },
247
304
  20: { name: "ESP32-C61", family: CHIP_FAMILY_ESP32C61 },
248
305
  23: { name: "ESP32-C5", family: CHIP_FAMILY_ESP32C5 },
306
+ 25: { name: "ESP32-H21", family: CHIP_FAMILY_ESP32H21 },
307
+ 28: { name: "ESP32-H4", family: CHIP_FAMILY_ESP32H4 },
308
+ 32: { name: "ESP32-S31", family: CHIP_FAMILY_ESP32S31 },
249
309
  };
250
310
 
251
311
  interface ChipInfo {
@@ -298,6 +358,7 @@ export const ESP_READ_REG = 0x0a;
298
358
 
299
359
  export const ESP_ERASE_FLASH = 0xd0;
300
360
  export const ESP_ERASE_REGION = 0xd1;
361
+ export const ESP_READ_FLASH = 0xd2;
301
362
 
302
363
  export const ESP_SPI_SET_PARAMS = 0x0b;
303
364
  export const ESP_SPI_ATTACH = 0x0d;
@@ -316,11 +377,12 @@ export const ESP_RAM_BLOCK = 0x1800;
316
377
 
317
378
  // Timeouts
318
379
  export const DEFAULT_TIMEOUT = 3000;
319
- export const CHIP_ERASE_TIMEOUT = 600000; // timeout for full chip erase in ms
380
+ export const CHIP_ERASE_TIMEOUT = 150000; // timeout for full chip erase in ms
320
381
  export const MAX_TIMEOUT = CHIP_ERASE_TIMEOUT * 2; // longest any command can run in ms
321
382
  export const SYNC_TIMEOUT = 100; // timeout for syncing with bootloader in ms
322
383
  export const ERASE_REGION_TIMEOUT_PER_MB = 30000; // timeout (per megabyte) for erasing a region in ms
323
384
  export const MEM_END_ROM_TIMEOUT = 500;
385
+ export const FLASH_READ_TIMEOUT = 100; // timeout for reading flash in ms
324
386
 
325
387
  /**
326
388
  * @name timeoutPerMb
@@ -478,6 +540,34 @@ export const getSpiFlashAddresses = (
478
540
  uartDateReg: ESP32H2_UART_DATE_REG_ADDR,
479
541
  flashOffs: ESP32H2_BOOTLOADER_FLASH_OFFSET,
480
542
  };
543
+ case CHIP_FAMILY_ESP32H4:
544
+ return {
545
+ regBase: ESP32H4_SPI_REG_BASE,
546
+ baseFuse: ESP32H4_BASEFUSEADDR,
547
+ macFuse: ESP32H4_MACFUSEADDR,
548
+ usrOffs: ESP32H4_SPI_USR_OFFS,
549
+ usr1Offs: ESP32H4_SPI_USR1_OFFS,
550
+ usr2Offs: ESP32H4_SPI_USR2_OFFS,
551
+ mosiDlenOffs: ESP32H4_SPI_MOSI_DLEN_OFFS,
552
+ misoDlenOffs: ESP32H4_SPI_MISO_DLEN_OFFS,
553
+ w0Offs: ESP32H4_SPI_W0_OFFS,
554
+ uartDateReg: ESP32H4_UART_DATE_REG_ADDR,
555
+ flashOffs: ESP32H4_BOOTLOADER_FLASH_OFFSET,
556
+ };
557
+ case CHIP_FAMILY_ESP32H21:
558
+ return {
559
+ regBase: ESP32H21_SPI_REG_BASE,
560
+ baseFuse: ESP32H21_BASEFUSEADDR,
561
+ macFuse: ESP32H21_MACFUSEADDR,
562
+ usrOffs: ESP32H21_SPI_USR_OFFS,
563
+ usr1Offs: ESP32H21_SPI_USR1_OFFS,
564
+ usr2Offs: ESP32H21_SPI_USR2_OFFS,
565
+ mosiDlenOffs: ESP32H21_SPI_MOSI_DLEN_OFFS,
566
+ misoDlenOffs: ESP32H21_SPI_MISO_DLEN_OFFS,
567
+ w0Offs: ESP32H21_SPI_W0_OFFS,
568
+ uartDateReg: ESP32H21_UART_DATE_REG_ADDR,
569
+ flashOffs: ESP32H21_BOOTLOADER_FLASH_OFFSET,
570
+ };
481
571
  case CHIP_FAMILY_ESP32P4:
482
572
  return {
483
573
  regBase: ESP32P4_SPI_REG_BASE,
@@ -492,6 +582,20 @@ export const getSpiFlashAddresses = (
492
582
  uartDateReg: ESP32P4_UART_DATE_REG_ADDR,
493
583
  flashOffs: ESP32P4_BOOTLOADER_FLASH_OFFSET,
494
584
  };
585
+ case CHIP_FAMILY_ESP32S31:
586
+ return {
587
+ regBase: ESP32S31_SPI_REG_BASE,
588
+ baseFuse: ESP32S31_BASEFUSEADDR,
589
+ macFuse: ESP32S31_MACFUSEADDR,
590
+ usrOffs: ESP32S31_SPI_USR_OFFS,
591
+ usr1Offs: ESP32S31_SPI_USR1_OFFS,
592
+ usr2Offs: ESP32S31_SPI_USR2_OFFS,
593
+ mosiDlenOffs: ESP32S31_SPI_MOSI_DLEN_OFFS,
594
+ misoDlenOffs: ESP32S31_SPI_MISO_DLEN_OFFS,
595
+ w0Offs: ESP32S31_SPI_W0_OFFS,
596
+ uartDateReg: ESP32S31_UART_DATE_REG_ADDR,
597
+ flashOffs: ESP32S31_BOOTLOADER_FLASH_OFFSET,
598
+ };
495
599
  default:
496
600
  return {
497
601
  regBase: -1,