Rahul Tank
f376bb5d05
Add support in Nimble for ESP32H2
2022-03-14 11:57:53 +05:30
Michael (XIAO Xufeng)
aab535fe4a
Merge branch 'bugfix/regi2c_ctrl_spinlock_s2' into 'master'
...
hw_support: fixed regi2c not protected by lock on ESP32S2
See merge request espressif/esp-idf!16653
2022-03-13 02:47:53 +08:00
Michael (XIAO Xufeng)
d5bdf95580
hw_support: fixed regi2c not protected by lock on ESP32S2
2022-03-13 00:24:08 +08:00
Armando (Dou Yiwen)
6ed3ffbbf1
Merge branch 'refactor/remove_redundant_rom_cache_dependency' into 'master'
...
cache: remove redundant rom cache dependency in bootloader
Closes IDF-4523
See merge request espressif/esp-idf!17077
2022-03-12 10:11:39 +08:00
Armando
c1cbd7bbf6
cache/mmu: implememnt cache and mmu hal APIs in bootloader
2022-03-11 22:43:11 +08:00
Cao Sen Miao
8dce0cbf6b
spi_flash: Fix bug that in bootloader dummy is 0 when mosi is 0
2022-03-09 18:49:34 +08:00
Cao Sen Miao
85dd785d8d
spi_flash: Building a framework to enable HPM when flash works under high speed mode
2022-03-09 18:49:34 +08:00
Sudeep Mohanty
a9fda54d39
esp_hw_support/esp_system: Re-evaluate header inclusions and include directories
...
This commit updates the visibility of various header files and cleans up
some unnecessary inclusions. Also, this commit removes certain header
include paths which were maintained for backward compatibility.
2022-03-07 11:18:08 +05:30
Armando
e66f59ae0b
rng: fix rng adc digital inpu not disabled issue
2022-03-04 03:49:33 +00:00
Aditya Patwardhan
3b71bd7326
mbedtls-3.0: Fixed ESP32 build issues
...
- Added MBEDLTS_PRIVATE(...) wherever necessary
- For functions like mbedtls_pk_parse_key(...), it is necessary to pass the RNG function
pointers as parameter. Solved for dependent components: wpa_supplicant & openSSL
- For libcoap, the SSLv2 ClientHello handshake method has been deprecated, need to handle this.
Currently, corresponding snippet has been commented.
- Examples tested: hello-world | https_request | wifi_prov_mgr
mbedtls-3.0: Fixed ESP32-C3 & ESP32-S3 build issues
- Removed MBEDTLS_DEPRECATED_REMOVED macro from sha1 port
- DS peripheral: esp_ds_rsa_sign -> removed unsused 'mode' argument
- Added MBEDTLS_PRIVATE(...) wherever required
mbedtls-3.0: Fixed ESP32-S2 build issues
- Fixed outdated function prototypes and usage in mbedlts/port/aes/esp_aes_gcm.c due to changes in GCM module
mbedtls-3.0: Fixed ESP32-H2 build issues
ci: Fixing build stage
- Added MBEDTLS_PRIVATE(...) wherever required
- Added RNG function parameter
- Updated GCM Module changes
- Updated Copyright notices
- Tests:
- build_esp_idf_tests_cmake_esp32
- build_esp_idf_tests_cmake_esp32s2
- build_esp_idf_tests_cmake_esp32c3
- build_esp_idf_tests_cmake_esp32s3
ci: Fixing build stage (mbedtls-related changes)
- Added MBEDTLS_PRIVATE(...) wherever required
- Updated SHAXXX functions
- Updated esp_config according to mbedtls changes
- Tests:
- build_examples_cmake_esp32
- build_examples_cmake_esp32s2
- build_examples_cmake_esp32c3
- build_examples_cmake_esp32s3
ci: Fixing build stage (example-related changes)
- Added MBEDTLS_PRIVATE(...) wherever required
- Updated SHAXXX functions
- Updated esp_config according to mbedtls changes
- Tests:
- build_examples_cmake_esp32
- build_examples_cmake_esp32s2
- build_examples_cmake_esp32c3
- build_examples_cmake_esp32s3
ci: Fixing target_test stage
- Updated test SSL version to TLS_v1_2
- Tests:
- example_test_protocols 1/2
ci: Fixing build stage
- Added checks for MBEDTLS_DHM_C (disabled by default)
- Updated esp_cryptoauthlib submodule
- Updated factory partition size for legacy BLE provisioning example
- Tests:
- build_examples_cmake_esp32
- build_examples_cmake_esp32s2
- build_examples_cmake_esp32c3
- build_examples_cmake_esp32s3
Co-authored-by: Laukik Hase <laukik.hase@espressif.com>
2022-03-03 01:37:10 +05:30
Aditya Patwardhan
45122533e0
mbedtls-3 update:
...
1) Fix build issue in mbedtls
2) skip the public headers check in IDF
3)Update Kconfig Macros
4)Remove deprecated config options
5) Update the sha API according to new nomenclature
6) Update mbedtls_rsa_init usage
7) Include mbedtls/build_info.h instead of mbedtls/config.h
8) Dont include check_config.h
9) Add additional error message in esp_blufi_api.h
2022-03-03 01:37:10 +05:30
Michael (XIAO Xufeng)
78165c541e
Merge branch 'bugfix/bootloader_uart_custom_gpio' into 'master'
...
bootloader: fixed the issue custom_uart_gpio doesn't take effect
Closes IDF-4606
See merge request espressif/esp-idf!16910
2022-03-02 02:35:14 +08:00
Michael (XIAO Xufeng)
395cd494f8
bootloader: fixed the issue custom_uart_gpio doesn't take effect
2022-03-01 17:54:34 +08:00
KonstantinKondrashov
9605f3eb1a
soc: Adds efuse hal
...
Replaced eFuse ROM funcs with hal layer
2022-02-24 22:20:09 +08:00
rudi ;-)
f242a1705a
add support for Flash 32MB..128MB (S2, S3)
...
ESP32-S2 and ESP32-S3
supports up to 1 GB of external flash and RAM
add support for
- 32MB
- 64MB
- 128MB ( example NOR spiFLASH 1G-BIT W25Q01JVZEIQ Winbond 0xEF 0x40 0x21 )
Merges https://github.com/espressif/esp-idf/pull/7688
Signed-off-by: Ivan Grokhotkov <ivan@espressif.com>
2022-02-21 10:26:41 +03:00
morris
ef00bd59dc
esp_rom: extract int matrix route and cpu ticks getter
2022-02-09 13:52:20 +08:00
Mahavir Jain
68f67db984
Merge branch 'feature/efuse_esp8684' into 'master'
...
efuse(esp32c2): Support eFuse key APIs
Closes IDF-3818
See merge request espressif/esp-idf!16290
2022-02-01 11:30:00 +00:00
KonstantinKondrashov
ebdc52d4e2
efuse(esp32c2): Support eFuse key APIs
2022-02-01 17:30:31 +08:00
KonstantinKondrashov
f761cee32e
bootloader_support: Removes old code of SB and FE for esp32h2
2022-01-26 15:21:20 +08:00
KonstantinKondrashov
3a23340e40
bootloader_support: Support eFuse key APIs in SB and FE
2022-01-25 20:25:39 +08:00
KonstantinKondrashov
4eef5fd36f
bootloader: Fixes bootloader_common_get_sha256_of_partition. Adds hash check.
...
Closes https://github.com/espressif/esp-idf/issues/8274
2022-01-25 02:16:18 +08:00
laokaiyao
cf049e15ed
esp8684: rename target to esp32c2
2022-01-19 11:08:57 +08:00
chenjianxing
7a9947f3c6
esp_phy: Update ESP32S2 phy lib to support eco1 chip
2022-01-07 19:59:41 +08:00
Cao Sen Miao
d397464fc4
spi_flash: refactor spi_flash.h to esp_rom_spiflash.h but keep the content in spi_flash.h
2021-12-30 14:12:31 +08:00
Cao Sen Miao
b0decda1e3
bootloader: move bootloader flash support to isolate folders
2021-12-30 14:05:12 +08:00
Cao Sen Miao
3a4db97cec
spi_flash: move patch files to common rom patch folder
2021-12-30 14:05:12 +08:00
Cao Sen Miao
3dd1cfea18
spi_flash: refactor spi_flash.h to decline duplicated code
2021-12-30 14:05:12 +08:00
Sudeep Mohanty
6a2a6e4220
Merge branch 'feature/remove-depricated-cpu-util-functions' into 'master'
...
esp_hw_support: Removed deprecated CPU util functions
Closes IDF-2868
See merge request espressif/esp-idf!16391
2021-12-29 16:44:17 +00:00
morris
1f06c1bd1b
Merge branch 'feature/fast_gpio_esp32c2' into 'master'
...
fast gpio support on esp32c2/esp8684
See merge request espressif/esp-idf!16531
2021-12-29 07:01:41 +00:00
Sudeep Mohanty
e22b4007d3
esp_hw_support: Removed deprecated CPU util functions
...
The following files were deleted:
- components/esp_hw_support/include/soc/cpu.h
- components/soc/esp32s3/include/soc/cpu.h
The following functions are deprecated:
- get_sp()
The following functions declared in soc/cpu.h are now moved to esp_cpu.h:
- esp_cpu_configure_region_protection()
The following functions declared in soc/cpu.h are now moved to components/xtensa/include/esp_cpu_utils.h:
- esp_cpu_process_stack_pc()
All files with soc/cpu.h inclusion are updated to include esp_cpu.h instead.
Signed-off-by: Sudeep Mohanty <sudeep.mohanty@espressif.com>
2021-12-28 16:58:37 +05:30
morris
1a9dbf9e2f
bootloader: print MMU info after 2nd bootloader banner
2021-12-28 10:12:57 +08:00
Jakob Hasse
64a355eba8
feat (bootloader): added rng sampling
...
Set maximum RNG query frequency to save value known from tests
2021-12-27 13:59:20 +08:00
Michael (XIAO Xufeng)
9894019909
bootloader: support unlock MXIC flash chips
2021-12-20 18:01:12 +08:00
Cao Sen Miao
56edc81b5d
spi_flash: add support for th 1M flash
2021-12-13 11:47:48 +08:00
Mahavir Jain
5cdd3999c7
bootloader_support: fix Coverity scan warning
...
Null pointer dereferences (REVERSE_INULL) :
Null-checking "part" suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
2021-12-07 09:49:12 +05:30
Gustavo Henrique Nihei
d0846e48e5
Merge branch 'bugfix/bootloader_utility_warnings' into 'master'
...
bootloader_support: Fix compiler warnings
See merge request espressif/esp-idf!16083
2021-11-26 04:13:37 +00:00
Michael (XIAO Xufeng)
c4310fb0db
Merge branch 'feature/add_h2_beta2_target_support' into 'master'
...
esp32h2: Add support for esp32h2 beta2 version
Closes IDF-4230
See merge request espressif/esp-idf!15630
2021-11-26 03:56:01 +00:00
Gustavo Henrique Nihei
c6391f12db
bootloader_support: Fix unused-but-set-variable compiler warning
...
When building with BOOTLOADER_LOG_LEVEL lesser then VERBOSE, an error
code variable was being set but not consumed, resulting in a compiler
warning.
Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com>
2021-11-25 21:12:52 +08:00
Gustavo Henrique Nihei
acbf871d2f
bootloader_support: Fix unused-variable compiler warning
...
Builds for every chip other than ESP32 resulted in a compiler warning
due to "drom_load_addr_aligned" and "irom_load_addr_aligned" not being
used, besides being possible to actually reuse them.
Furthermore, extended the logic for the other similar variables.
Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com>
2021-11-25 21:12:52 +08:00
laokaiyao
f21020ce04
esp32h2: update reg and struct for beta2
2021-11-24 12:34:17 +08:00
wuzhenghui
388615add0
update esp32h2beta2 chip_id to 14
2021-11-24 12:30:43 +08:00
Mahavir Jain
9cecde6fb4
bootloader: add anti-FI checks around secure version in anti-rollback scheme
2021-11-24 11:37:27 +08:00
Anton Maklakov
05d2c540a4
Merge branch 'fix/virt_efuse_example_test' into 'master'
...
efuse_example_test: Fix the example test
See merge request espressif/esp-idf!16065
2021-11-24 01:12:00 +00:00
Gustavo Henrique Nihei
0a15a3fa96
Merge branch 'bugfix/bootloader_debug_buffers' into 'master'
...
bootloader_support: Fix and re-enable bootloader_debug_buffer function
See merge request espressif/esp-idf!15998
2021-11-23 11:54:42 +00:00
Aditya Patwardhan
5d61eea847
efuse_example_test: Fix the example test ( broken due to latest change
...
in info message)
*Unify the log messages when UART ROM Download mode is kept enabled
2021-11-23 15:21:32 +05:30
Gustavo Henrique Nihei
f75f74ac40
bootloader_support: Fix and re-enable bootloader_debug_buffer function
...
The body of the bootloader_debug_buffer function was conditioned to
macros that were never defined, resulting in deactivated code.
Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com>
2021-11-22 12:13:58 -03:00
Aditya Patwardhan
be65338212
secure_boot: Fix warning when UART ROM DL mode is disabled
...
*Additionally use updated calls to enable rom secure download mode
2021-11-22 12:01:15 +05:30
morris
2e008825a9
Merge branch 'feat/rm_makefiles' into 'master'
...
Build & config: Remove leftover files from the unsupported make build system
Closes IDF-4273 and IDF-2827
See merge request espressif/esp-idf!15829
2021-11-16 03:44:41 +00:00
Roland Dobai
766aa57084
Build & config: Remove leftover files from the unsupported "make" build system
2021-11-11 15:32:36 +01:00
Cao Sen Miao
981abed2b2
spi_flash: refact that flash qio can be overidable
2021-11-11 12:28:21 +08:00
morris
16677b0d3c
global: make periph enable/disable APIs private
...
peripheral enable/disable usually should be managed by driver itself,
so make it as espressif private APIs, not recommended for user to use it
in application code.
However, if user want to re-write the driver or ports to other platform,
this is still possible by including the header in this way:
"esp_private/peripheral_ctrl.h"
2021-11-08 10:37:47 +08:00
Cao Sen Miao
bf6fa70812
ESP8684: update bootloader, bootloader_support, esp_rom
2021-11-06 17:33:44 +08:00
Ivan Grokhotkov
0b376251df
Merge branch 'feature/kconfig_for_reproducible_build' into 'master'
...
Feature: kconfig for reproducible build
See merge request espressif/esp-idf!15100
2021-11-04 22:07:29 +00:00
Mahavir Jain
2a885ae694
secure_boot_v2: fix issue in pre-flashed digest (manual) workflow
...
This commit fixes issue where empty (unprogrammed) digest slot out of
multiple supported (e.g. 3 for ESP32-C3) could cause issue in
workflow enablement process.
Notes:
1. This issue was applicable for chips supporting "secure-boot-v2"
scheme with multiple digests slots
2. This issue was affecting only manual workflow, where digest of
public was pre-flashed in efuse
3. Change in "flash_encrypt.c" is only for additional safety purpose
2021-11-02 15:26:24 +08:00
Fu Hanxi
9919b75ec1
build: add CONFIG_APP_REPRODUCIBLE_BUILD menuconfig option to produce reproducible binaries
2021-10-26 10:43:15 +08:00
Sachin Parekh
724fdbc9f1
secure_boot: Do not allow key revocation in bootloader
2021-10-22 12:20:14 +05:30
Wu Zheng Hui
001c29b077
bootloader: Simplify multi-chip control logic of the cache
2021-10-21 18:09:37 +08:00
Wu Zheng Hui
1080e4f6a2
rename APB_CTRL ro SYS_CON
...
save
2021-09-16 20:57:57 +08:00
chenjianqiang
9b53e18c44
add flash and PSRAM CS IO acquire function
2021-09-15 20:34:17 +08:00
Sachin Parekh
bf1dde7233
bootloader: Enable clock glitch detection
...
Reset the device when clock glitch detected. Clock glitch detection is
only active in bootloader
2021-09-02 12:25:12 +05:30
Yuriy Shestakov
87b958c814
Fixed GLITCH_RTC_RST for esp32-c3 revision 3
...
* Issue: https://github.com/espressif/esp-idf/issues/7082
Signed-off-by: Yuriy Shestakov <yshestakov@gmail.com>
Closes https://github.com/espressif/esp-idf/issues/7082
Closes https://github.com/espressif/esp-idf/pull/7441
2021-09-02 12:25:12 +05:30
Armando
a3dc625da6
mspi: support 120MHz Quad Flash and PSRAM on ESP32S3
2021-08-31 16:06:44 +08:00
wuzhenghui
6ab495b4dc
esp32h2: chip env support
...
brownout init fixed
2021-08-25 11:02:47 +08:00
Armando (Dou Yiwen)
3e172289b0
Merge branch 'feature/support_octal_flash_120m_str_mode_on_esp32s3' into 'master'
...
mspi: support octal flash 120MHz STR mode on esp32s3
Closes IDF-3146
See merge request espressif/esp-idf!14668
2021-08-20 08:40:02 +00:00
Mahavir Jain
85e1258178
Merge branch 'esp32s3/secure_boot' into 'master'
...
bootloader: Enable Secure boot V2 for ESP32-S3
Closes IDF-1787
See merge request espressif/esp-idf!14873
2021-08-20 06:44:19 +00:00
Michael (XIAO Xufeng)
7649db9712
draft: another patch..
2021-08-19 17:02:58 +08:00
Sachin Parekh
2d82560ed5
bootloader: Enable Secure boot V2 for ESP32-S3
2021-08-19 14:08:12 +05:30
Armando
d325f4d557
mspi: support octal flash 120M STR mode on esp32s3
2021-08-19 10:44:30 +08:00
Michael (XIAO Xufeng)
8dcfa1b384
spi_flash: fix the corruption of ROM after calling bootloader_execute_flash_command
...
The user register, especially dummy related ones, needs to be restored, otherwise the ROM function will not work.
Introduced in dd40123129
.
2021-08-18 23:55:39 +08:00
Mahavir Jain
012c9e26a4
Merge branch 'fixes/secure_boot' into 'master'
...
secure_boot/esp32(s2,c3): Disable read protecting of efuses
See merge request espressif/esp-idf!14769
2021-08-17 05:05:00 +00:00
Michael (XIAO Xufeng)
a0d2efe1be
Merge branch 'bugfix/xmc_overerase' into 'master'
...
bootloader: add xmc spi_flash startup flow to improve reliability
See merge request espressif/esp-idf!13895
2021-08-13 15:27:48 +00:00
Sachin Parekh
f430e86c0f
secure_boot/esp32(s2,c3): Disable read protecting of efuses
...
When secure boot is enabled, disable the ability to read protect
efuses that contain the digest.
2021-08-13 13:41:59 +05:30
Michael (XIAO Xufeng)
dd40123129
bootloader: add xmc spi_flash startup flow to improve reliability
2021-08-12 17:22:42 +08:00
KonstantinKondrashov
3cf4fbc150
efuse(esp32s2): Added flash_ver, psram_ver, pkg_ver efuses
2021-08-06 13:14:54 +08:00
Omar Chebib
779e7400b0
uart: uart_set_pin function will now use IOMUX whenever possible
...
By using IOMUX instead of GPIO Matrix for UART, it is now possible
on ESP32 boards to use the UART as a wake up source even if it is
not used as a console.
For other boards where this issue was not present, using IOMUX has
the advantage to be faster than using GPIO matrix, so a highest
baudrate can be used
2021-08-04 12:48:30 +08:00
Cao Sen Miao
c29b3e2e36
spi_flash: move the unlock patch to bootloader and add support for GD
2021-07-29 10:46:33 +08:00
KonstantinKondrashov
92448e7bd7
secure_boot: Whole 3 bits are set for SOFT_DIS_JTAG eFuse
2021-07-21 17:19:01 +05:00
Marius Vikhammer
03545feaea
Merge branch 'feature/s3_flash_enc' into 'master'
...
S3 Flash encryption bringup
Closes IDF-1786 and IDF-2576
See merge request espressif/esp-idf!14259
2021-07-19 08:56:50 +00:00
Omar Chebib
a7b6ec85b8
Merge branch 'feature/move_memory_layout_to_heap' into 'master'
...
G0: Memory layouts are now part of heap components
Closes IDF-1264
See merge request espressif/esp-idf!14028
2021-07-19 06:23:19 +00:00
morris
2058e89448
Merge branch 'feature/fpga_bootloader' into 'master'
...
Boot ESP32 & ESP32-S2 apps on FPGA
See merge request espressif/esp-idf!8270
2021-07-18 08:06:38 +00:00
Angus Gratton
1a626ef6ca
esp32: App can boot on FPGA image
...
Includes fix for detecting ESP32 ECO3 on FPGA
2021-07-16 10:50:06 +10:00
Angus Gratton
192b5925da
bootloader: Can boot to IDF scheduler start on internal-use FPGA
...
On ESP32 & ESP32-S2. Patch doesn't include changes to make the app run fully.
2021-07-16 10:50:06 +10:00
Omar Chebib
c4f57af6c9
G0: Memory layouts are now part of heap components
2021-07-15 11:38:23 +10:00
Marius Vikhammer
b8a322195e
flash encryption: add flash encryption support for ESP32-S3
2021-07-14 18:46:17 +08:00
Omar Chebib
b967dc0dbf
espsystem: add support for RISC-V panic backtrace
...
Add .eh_frame and .eh_frame_hdr sections to the binary (can be
enabled/disabled within menuconfig). These sections are parsed
when a panic occurs. Their DWARF instructions are decoded and
executed at runtime, to retrieve the whole backtrace. This
parser has been tested on both RISC-V and x86 architectures.
This feature needs esptool's merge adjacent ELF sections feature.
2021-07-13 15:42:40 +08:00
morris
3e2d98500f
Merge branch 'refactor/common_rom_rtc_apis' into 'master'
...
soc: define reset reasons in soc component
Closes IDF-1993
See merge request espressif/esp-idf!9829
2021-07-13 07:05:25 +00:00
Angus Gratton
d7d28786b2
Merge branch 'bugfix/secure_boot_sig_verify' into 'master'
...
secure boot: Fix incorrect handling of mbedtls_ctr_drbg_seed() failure in signature verification
See merge request espressif/esp-idf!14300
2021-07-13 06:48:25 +00:00
Angus Gratton
4fe4df8770
Merge branch 'feature/bootloader_pin_level_pr7089' into 'master'
...
bootloader: Add configurable pin level for factory reset (PR)
Closes IDFGH-5337
See merge request espressif/esp-idf!13956
2021-07-13 05:39:25 +00:00
morris
1560d6f1ba
soc: add reset reasons in soc component
2021-07-13 10:45:38 +08:00
Angus Gratton
e3ca61a200
secure boot: Fix incorrect handling of mbedtls_ctr_drbg_seed() failure in signature verification
...
Increase the test app optimization level to one that would find this issue.
2021-07-08 19:17:04 +10:00
Marius Vikhammer
71c1da8952
timer group: add timer group and WDT support for ESP32S3
...
Regenerate timer group header files and update LL, check examples
and update docs.
2021-07-06 16:21:43 +08:00
Angus Gratton
6bbb58c8c2
bootloader: Small cleanup and docs for factory reset level config
...
- Add to docs & config descriptions
- Change to a "choice" to become self-documenting
- Keep the bootloader_common_check_long_hold_gpio() function for compatibility
2021-07-05 12:08:36 +08:00
chegewara
fb7234a13d
bootloader: Add selectable level for factory reset pin
...
Closes https://github.com/espressif/esp-idf/pull/7089
2021-07-05 12:08:36 +08:00
Shu Chen
75bd02bd46
esp32h2: add some more fixes and TODOs
2021-07-01 20:36:39 +08:00
Shu Chen
2df4ddf998
esp32h2: fixes after rebase
2021-07-01 19:53:50 +08:00
Shu Chen
ee23a489b9
esp32h2: code clean up
2021-07-01 19:53:50 +08:00
Shu Chen
c0056813f2
esp32h2: add bootloader support
2021-07-01 19:53:11 +08:00
Michael (XIAO Xufeng)
afc2bc94b3
Merge branch 'feature/add_opi_flash_psram_support' into 'master'
...
spi flash: opi flash psram support and spi timing tuning support on 727
Closes IDF-3097
See merge request espressif/esp-idf!12946
2021-06-28 01:59:19 +00:00
Armando
bc248278f8
spiflash: add octal spi psram support on 727
2021-06-25 19:41:57 +08:00
Cao Sen Miao
f2fe0847d5
usb_serial_jtag: add initial support for S3 (including flashing, monitoring, writing, and reading) but console is not avaliable now
2021-06-18 12:42:41 +08:00