[![Component Registry](https://components.espressif.com/components/espressif/esp_msc_ota/badge.svg)](https://components.espressif.com/components/espressif/esp_msc_ota) ## Introduction to ESP MSC OTA Component ``esp_msc_ota`` is a USB disk OTA program based on ESP32 USB OTG peripheral. * Supports hot-plugging of USB disk. * Supports USB disk OTA functionality. ### User Guide Please refer: https://docs.espressif.com/projects/esp-iot-solution/en/latest/usb/usb_host/esp_msc_ota.html ### Adding the Component to the Project Please use the component manager command `add-dependency` to add `esp_msc_ota` as a dependency to your project. During the `CMake` execution, this component will be automatically downloaded to the project directory. ``` idf.py add-dependency "espressif/esp_msc_ota=*" ``` ## Usage Example ```C esp_event_loop_create_default(); ESP_ERROR_CHECK(esp_event_handler_register(ESP_MSC_OTA_EVENT, ESP_EVENT_ANY_ID, &msc_ota_event_handler, NULL)); esp_msc_host_config_t msc_host_config = { .base_path = "/usb", .host_driver_config = DEFAULT_MSC_HOST_DRIVER_CONFIG(), .vfs_fat_mount_config = DEFAULT_ESP_VFS_FAT_MOUNT_CONFIG(), .host_config = DEFAULT_USB_HOST_CONFIG() }; esp_msc_host_handle_t host_handle = NULL; esp_msc_host_install(&msc_host_config, &host_handle); esp_msc_ota_config_t config = { .ota_bin_path = "/usb/ota_test.bin", .wait_msc_connect = pdMS_TO_TICKS(5000), }; esp_msc_ota(&config); esp_msc_host_uninstall(host_handle); ``` ## Notes * For the default file system, filenames should not exceed 11 characters. If support for long-named files is needed, please enable any of the macros below: * CONFIG_FATFS_LFN_HEAP * CONFIG_FATFS_LFN_STACK
# changelog ## v0.1.2 - 2024-3-8 ### Bug Fix * Fix usb_host_uninstall fail problem. ## v0.1.1 - 2024-2-1 * Add example: MSC USB OTA ## v0.1.0 - 2023-8-15 ### Enhancements: * Support MSC hot-plug * Support MSC OTA process management
# USB Host MSC OTA Example This example demonstrates how to use [esp_msc_ota](https://components.espressif.com/components/espressif/esp_msc_ota) to OTA with USB disk or other MSC devices. ## How to use the example ### Hardware Required The example can be run on ESP32-S2 or ESP32-S3 based development board with USB Disk (with Fat32 format). ### Setup the Hardware Connect the external USB MSC device to ESP32-S USB interface directly. | ESP32-Sx GPIO | USB Device | | ------------- | ----------- | | 20 | D+ (green) | | 19 | D- (white) | | GND | GND (black) | | +5V | +5V (red) | ### Configure the project 1. Use the command below to set build target to esp32s2 or esp32s3. ``` idf.py set-target esp32s3 ``` 2. Build the project and flash it to the board, then run monitor tool to view serial output: ``` idf.py -p PORT build flash monitor ``` (To exit the serial monitor, type ``Ctrl-]``.) See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. 3. Move the file located in the directory /build/usb_msc_ota.bin to the USB MSC drive (USB disk). Insert the USB flash drive into the USB interface. The upgrade process will start immediately. Once the upgrade is successful, press the reset button to initiate OTA partition 2. Note: Please keep in mind, to continuous support for USB MSC OTA, the USB MSC OTA function must also be enabled in the OTA firmware. ![usb_msc_ota](https://dl.espressif.com/ae/esp-iot-solution/usb_msc_ota.gif)
78ab2bc277f1b8909970a82a0156a35a493dabf2
idf.py add-dependency "espressif/esp_msc_ota^0.1.2"
To create a project from this example, run:
idf.py create-project-from-example "espressif/esp_msc_ota^0.1.2:usb_msc_ota"