Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
2607a19
feat(tinyusb): Added initial files to make an idf component
roma-jam Oct 18, 2024
c5fdd59
change(tinyusb): Added repo templates for issue and pull request
roma-jam Oct 31, 2024
c63984c
fix(dcd_dwc2): Changed OTG Bvalid override configuration for ESP32
roma-jam Jan 29, 2024
1167f3c
change(tusb): Added cmake esp32p4 dep to esp_mm component
roma-jam Nov 14, 2024
8502c71
change(tusb): Added dwc2_common.c to cmake sources
roma-jam Nov 19, 2024
ea4e59d
refactor(usbd_control): Updated the buffer name for deeper debug
roma-jam Nov 28, 2024
eb9539b
fix(dcd_dwc2): Reset allocated_epin_count on bus reset and close all ep
roma-jam Nov 28, 2024
681b920
fix(dcd_dwc2): Correct usage of dwc2_controller
roma-jam Nov 28, 2024
58b8f1f
Merge pull request #41 from espressif/fix/usbd_cleanup_dcd_fix_epin_c…
roma-jam Nov 28, 2024
5ca0293
ci(tinyusb): Added esp-usb test_apps build and run
roma-jam Dec 6, 2024
06fef79
feature(CI): Added esp_iot_solutions example build verification for l…
roma-jam Nov 5, 2024
135618b
Merge pull request #35 from espressif/feature/ci_add_esp_iot_examples…
roma-jam Dec 9, 2024
b339c84
Merge pull request #42 from espressif/ci/add_build_and_run_esp_usb_te…
roma-jam Dec 9, 2024
1b0e6d0
Merge branch 'master' into sync/upstream
roma-jam Dec 10, 2024
b755233
Merge pull request #43 from espressif/sync/upstream
roma-jam Dec 11, 2024
83a7145
Merge branch 'master' into sync/upstream
roma-jam Dec 11, 2024
a36b9ac
fix(video): fix uninitialized value
lijunru-hub Apr 28, 2024
f416167
Merge pull request #36 from espressif/feature/proprietary_changes_uvc…
roma-jam Dec 12, 2024
b267b26
Merge pull request #45 from espressif/sync/upstream
roma-jam Dec 12, 2024
8366c63
feature(tusb): Added teardown API
roma-jam Dec 11, 2024
98aea07
Merge pull request #44 from espressif/feature/tusb_teardown
roma-jam Dec 16, 2024
d00b6b7
ci(tinyusb): Added run pytest
roma-jam Nov 27, 2024
37995c7
Merge pull request #40 from espressif/ci/run_pytest_on_idf_examples
roma-jam Dec 17, 2024
a20dd10
install libc++ for clang build fuzzer
hathach Dec 16, 2024
56b228c
Fix ceedling (#2949)
hathach Jan 15, 2025
c11352a
change(ci): Added usbtool for docker
roma-jam Jan 3, 2025
7c0df27
fix(ci): Removed fast-fail: false option in strategy
roma-jam Jan 17, 2025
7e99268
Merge pull request #51 from espressif/ci/fix_and_unlock_ci
roma-jam Jan 17, 2025
11935d2
Merge branch 'master' into sync/upstream
roma-jam Jan 22, 2025
82a7a64
Merge pull request #49 from espressif/sync/upstream
roma-jam Jan 23, 2025
a1caab7
ci(workflow): Update ubuntu runners to ubuntu-latest
roma-jam Feb 11, 2025
c83fb98
Merge pull request #53 from espressif/ci/update_ubuntu_runners
roma-jam Feb 12, 2025
d4a39f5
fix(dcd): Fixed race condition on device disconnect
tore-espressif Apr 9, 2025
4095aba
Merge pull request #55 from espressif/fix/disconnect_race_condition
tore-espressif Apr 11, 2025
a163c17
Merge branch 'master' into sync/upstream
roma-jam Apr 11, 2025
2fb4139
Merge pull request #52 from espressif/sync/upstream
roma-jam Apr 11, 2025
e699acc
class: add usbtmc device
moritz-fivi Apr 28, 2025
63c21ab
Merge pull request #56 from moritz-fivi/feature/add_class_usbtmc_device
roma-jam May 9, 2025
a1cab32
fix(ci): Fixed build IDF and IOT solutions examples, added network ex…
roma-jam Aug 28, 2025
0c3f946
Merge pull request #58 from espressif/fix/build_idf_examples_ci
roma-jam Sep 18, 2025
ce70f24
feat(usb): Add ESP32-H4 support in tinyusb
igi540 Sep 5, 2025
a8a3254
Merge pull request #59 from espressif/feat/tinyusb_esp32h4_support
roma-jam Sep 30, 2025
8486e5c
fix(ci): Cleaned up the workflows
roma-jam Oct 15, 2025
14ad0c4
Merge pull request #61 from espressif/fix/override_tinyusb_in_network…
roma-jam Oct 23, 2025
25cbd41
feature(ci): Added esp32p4 target to run esp-usb test apps and esp-id…
roma-jam Oct 17, 2025
e8ea530
Merge pull request #63 from espressif/fix/override_tinyusb_in_network…
roma-jam Oct 24, 2025
fb1be5e
feature(ci): Updated CI workflows
roma-jam Nov 3, 2025
0739483
Merge pull request #64 from espressif/feature/ci_update
roma-jam Nov 4, 2025
8482ad1
fix(dcd/dwc2): Fix reset procedure for versions >=4.20a
tore-espressif Aug 28, 2025
d018ab6
Merge pull request #65 from espressif/sync/partial_upstream
roma-jam Nov 5, 2025
b7505d0
fix(ci): Added path to recently added ignore_warning_file.txt in esp-usb
roma-jam Nov 12, 2025
e46c26e
Merge pull request #67 from espressif/fix/esp_usb_path_to_ignore_warn…
roma-jam Nov 12, 2025
d0c97f9
Merge branch 'release/v0.19' into sync/release_v0.18
roma-jam Nov 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 32 additions & 75 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -1,93 +1,50 @@
name: Bug Report
description: Report a problem with TinyUSB
labels: 'Bug 🐞'
name: Bug report
description: Report build and runtime bugs
labels: ["Type: Bug"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
It's okay to leave some blank if it doesn't apply to your problem.

- type: dropdown
- type: checkboxes
id: checklist
attributes:
label: Operating System
label: Answers checklist.
description: Before submitting a new issue, please follow the checklist and try to find the answer.
options:
- Linux
- MacOS
- RaspberryPi OS
- Windows 7
- Windows 10
- Windows 11
- Others
validations:
required: true

- label: I have read the component documentation [ESP-IDF Components](https://components.espressif.com) and the issue is not addressed there.
required: true
- label: I am using target and esp-idf version as defined in component's idf_component.yml
required: true
- label: I have searched the upstream [issue tracker](https://github.com/hathach/tinyusb/issues?q=is%3Aissue) for a similar issue and not found any related issue.
required: true
- label: I have searched the Espressif esp-usb component [issue tracker](https://github.com/espressif/esp-usb/issues?q=is%3Aissue) for a similar issue and not found any related issue.
required: true
- type: input
id: idf_version
attributes:
label: Commit SHA
placeholder: e.g 3a042b37da28d0ba1e5593eb1068ca5645d77b56 or version bundled by esp-idf or pico-sdk
label: ESP-IDF version.
description: Which ESP-IDF version does this issue occur on? Run `git describe --tags` in your esp-idf folder to find it.
placeholder: ex. v5.0-rc1
validations:
required: true

- type: input
id: devkit
attributes:
label: Board
placeholder: e.g Adafruit Feather nRF52840 Express
validations:
required: true

- type: textarea
attributes:
label: Firmware
placeholder: |
e.g examples/device/cdc_msc. If it is custom firmware, it is preferably compiled like one in example folder and reviewable for people to comment on. The easiest way is
- Fork this repo, checkout a new branch
- Add your-own-example based on stock one
- Push and post it here.
validations:
required: true

- type: textarea
attributes:
label: What happened ?
placeholder: A clear and concise description of what the bug is.
validations:
required: true

- type: textarea
attributes:
label: How to reproduce ?
placeholder: |
Exact steps in chronological order, details should be specific e.g if you use a command/script to test with, please post it as well.
1. Go to '...'
2. Click on '....'
3. See error
label: Development Kit.
description: Which Development Kit does this issue occur on?
placeholder: ex. ESP32-Wrover-Kit v2 | Custom Board
validations:
required: true

- type: textarea
- type: input
id: component_version
attributes:
label: Debug Log as txt file (LOG/CFG_TUSB_DEBUG=2)
placeholder: |
Attach your debug log txt file here, where the issue occurred, best with comments to explain the actual events.

Note1: Please DO NOT paste your lengthy log contents here since it hurts the readability.
Note2: To enable logging, add `LOG=2` to to the make command if building with stock examples or set `CFG_TUSB_DEBUG=2` in your tusb_config.h.
More information can be found at [example's readme](https://github.com/hathach/tinyusb/blob/master/docs/getting_started.md)
label: Used Component version.
description: Which Component version does this issue occur on? Check `dependencies.lock` file in your project root to find it.
placeholder: ex. v1.2.0-rc0
validations:
required: true

- type: textarea
id: more-info
attributes:
label: Screenshots
description: If applicable, add screenshots to help explain your problem.
label: More Information.
description: Any other information from investigating this?
placeholder: ex. I tried on Windows 10 PC and the issue couldn't be reproduced there.
validations:
required: false

- type: checkboxes
attributes:
label: I have checked existing issues, discussion and documentation
description: You agree to check all the resources above before opening a new issue.
options:
- label: I confirm I have checked existing issues, discussion and documentation.
required: true
8 changes: 0 additions & 8 deletions .github/ISSUE_TEMPLATE/config.yml

This file was deleted.

49 changes: 0 additions & 49 deletions .github/ISSUE_TEMPLATE/feature_request.yml

This file was deleted.

17 changes: 17 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
## Requirements
_Provide a requirements for requesting changes_

## Limitations
_Describe limitations if there are any_

## Breaking change
_No breaking changes_

## Checklist

- [ ] Pull Request name has appropriate format (for example: "fix(dcd_dwc2): Resolved address selection when several phy are present")
- [ ] _Optional:_ README.md updated
- [ ] CI passed

## Related issues
_No related issues_
23 changes: 23 additions & 0 deletions .github/ci/.build_and_run_idf_examples_config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Config file for build_and_run_idf_examples.yml workflow

# This file contains configuration settings for the idf-build-apps tool,
# which is used to build and run example applications in the workflow.
# If you change the 'build_dir' value, make sure to update the corresponding
# Run step in the workflow, as it will need to reference the new build directory.

paths = [
"${IDF_PATH}/examples/peripherals/usb/device", # ESP-IDF USB Device examples path
]

exclude = [
"${IDF_PATH}/examples/peripherals/usb/device/cherryusb_serial_device", # Exclude cherryusb-based device examples
]

recursive = true
manifest_file = "${IDF_PATH}/examples/peripherals/.build-test-rules.yml"
check_warnings = true
target = "all"
enable_preview_targets = true

# Build related options (build_dir uses '@t' for target and '@w' for wildcard pattern (sdkconfig usually)
build_dir = "build_@t_@w"
5 changes: 0 additions & 5 deletions .github/pull_request_template.md

This file was deleted.

120 changes: 72 additions & 48 deletions .github/workflows/build_and_run_esp_usb_test_apps.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
name: ESP-USB Test Apps
# This workflow builds and runs ESP-USB test applications for pull requests.
# It checks out the latest code from ESP-USB master, builds test apps using Espressif's IDF,
# uploads artifacts, and runs tests on self-hosted runners for supported targets.

name: ESP-USB Test Apps [master]

on:
pull_request:
Expand All @@ -8,12 +12,20 @@ jobs:
build:
name: Build
strategy:
fail-fast: false
matrix:
idf_ver: ["release-v5.1", "release-v5.2", "release-v5.3", "release-v5.4", "release-v5.5", "latest"]
idf_ver: ["release-v5.1", "release-v5.2", "release-v5.3", "release-v5.4", "release-v5.5", "release-v6.0", "latest"]
runs-on: ubuntu-latest
container: espressif/idf:${{ matrix.idf_ver }}
env:
ESP_TINYUSB_TEST_APPS: ./esp-usb/device/esp_tinyusb/test_apps
IDF_COMP_MAN_VER: "2.4.3"
IDF_BUILD_APPS_VER: "2.13.3"
# We are cloning esp-usb repo to get the test apps to build, the paths should be configured explicitly
ESP_USB_PATH: esp-usb
ESP_USB_CONFIG_FILE: esp-usb/.idf_build_apps.toml
ESP_USB_MANIFEST: esp-usb/.build-test-rules.yml
ESP_USB_IGNORE_WARNING_FILE: esp-usb/.ignore_build_warnings.txt
ESP_TINYUSB_TEST_APPS: esp-usb/device/esp_tinyusb/test_apps
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -25,57 +37,69 @@ jobs:
shell: bash
run: |
. ${IDF_PATH}/export.sh
pip install --no-cache-dir idf-component-manager>=2.1.2 idf-build-apps==2.13.1 pyyaml --upgrade
pip install --no-cache-dir idf-component-manager>=${{ env.IDF_COMP_MAN_VER }} idf-build-apps==${{ env.IDF_BUILD_APPS_VER }} pyyaml --upgrade
export PEDANTIC_FLAGS="-DIDF_CI_BUILD -Werror -Werror=deprecated-declarations -Werror=unused-variable -Werror=unused-but-set-variable -Werror=unused-function"
export EXTRA_CFLAGS="${PEDANTIC_FLAGS} -Wstrict-prototypes"
export EXTRA_CXXFLAGS="${PEDANTIC_FLAGS}"
python .github/ci/override_managed_component.py tinyusb . ${{ env.ESP_TINYUSB_TEST_APPS }}/*/
cd esp-usb
idf-build-apps find --path ./device/esp_tinyusb/test_apps/
idf-build-apps build --path ./device/esp_tinyusb/test_apps/
idf-build-apps find --config-file ${{ env.ESP_USB_CONFIG_FILE }} -p ${{ env.ESP_TINYUSB_TEST_APPS }} -t all --manifest-files ${{ env.ESP_USB_MANIFEST }} --manifest-rootpath ${{ env.ESP_USB_PATH }}
idf-build-apps build --config-file ${{ env.ESP_USB_CONFIG_FILE }} -p ${{ env.ESP_TINYUSB_TEST_APPS }} -t all --manifest-files ${{ env.ESP_USB_MANIFEST }} --manifest-rootpath ${{ env.ESP_USB_PATH }} --ignore-warning-files ${{ env.ESP_USB_IGNORE_WARNING_FILE }}
- uses: actions/upload-artifact@v4
with:
name: usb_test_app_bin_${{ matrix.idf_ver }}
# Test apps builds live under the repository workspace, we use workspace-relative glob
name: usb_device_test_app_bin_${{ matrix.idf_ver }}
path: |
${{env.ESP_TINYUSB_TEST_APPS}}/**/build_*/bootloader/bootloader.bin
${{env.ESP_TINYUSB_TEST_APPS}}/**/build_*/partition_table/partition-table.bin
${{env.ESP_TINYUSB_TEST_APPS}}/**/build_*/test_app_*.bin
${{env.ESP_TINYUSB_TEST_APPS}}/**/build_*/test_app_*.elf
${{env.ESP_TINYUSB_TEST_APPS}}/**/build_*/flasher_args.json
${{env.ESP_TINYUSB_TEST_APPS}}/**/build_*/config/sdkconfig.json
**/build_esp*/bootloader/bootloader.bin
**/build_esp*/partition_table/partition-table.bin
**/build_esp*/test_app_*.bin
**/build_esp*/test_app_*.elf
**/build_esp*/flasher_args.json
**/build_esp*/config/sdkconfig.json
if-no-files-found: error

# run-target:
# name: Run
# if: ${{ github.repository_owner == 'espressif' }}
# needs: build
# strategy:
# matrix:
# idf_ver: ["release-v5.1", "release-v5.2", "release-v5.3", "release-v5.4", "release-v5.5", "latest"]
# idf_target: ["esp32s2"]
# runner_tag: ["usb_device"]
# runs-on: [self-hosted, linux, docker, "${{ matrix.idf_target }}", "${{ matrix.runner_tag }}"]
# container:
# image: python:3.11-bookworm
# options: --privileged --device-cgroup-rule="c 188:* rmw" --device-cgroup-rule="c 166:* rmw"
# env:
# ESP_TINYUSB_TEST_APPS: ./esp-usb/device/esp_tinyusb/test_apps
# steps:
# - uses: actions/checkout@v4
# - name: Clone esp-usb repository
# run: |
# git clone https://github.com/espressif/esp-usb.git
# - name: ⚙️ Install System tools
# run: |
# apt update
# apt install -y usbutils
# - name: Install Python packages
# env:
# PIP_EXTRA_INDEX_URL: "https://dl.espressif.com/pypi/"
# run: pip install --only-binary cryptography pytest-embedded pytest-embedded-serial-esp pytest-embedded-idf pyserial pyusb
# - uses: actions/download-artifact@v4
# with:
# name: usb_test_app_bin_${{ matrix.idf_ver }}
# path: ${{env.ESP_TINYUSB_TEST_APPS}}
# - name: Run USB Test App on target
# run: pytest ${{env.ESP_TINYUSB_TEST_APPS}} --embedded-services esp,idf --target=${{ matrix.idf_target }} -m ${{ matrix.runner_tag }} --build-dir=build_${{ matrix.idf_target }}
run-target:
name: Run
# Disable the job in forks
if: ${{ github.repository_owner == 'espressif' }}
needs: build
strategy:
fail-fast: false
matrix:
idf_ver: ["release-v5.1", "release-v5.2", "release-v5.3", "release-v5.4", "release-v5.5", "release-v6.0", "latest"]
idf_target: ["esp32s2", "esp32p4"]
sdkconfig: ["default"]
runner_tag: ["usb_device"]
exclude:
# Exclude esp32p4 for releases before IDF 5.3 for all runner tags (esp32p4 support starts in IDF 5.3)
- idf_ver: "release-v5.1"
idf_target: "esp32p4"
- idf_ver: "release-v5.2"
idf_target: "esp32p4"
runs-on: [self-hosted, linux, docker, "${{ matrix.idf_target }}", "${{ matrix.runner_tag }}"]
container:
image: python:3.11-bookworm
options: --privileged --device-cgroup-rule="c 188:* rmw" --device-cgroup-rule="c 166:* rmw"
env:
ESP_USB_ROOT: esp-usb
ESP_USB_TEST_APPS_PATH: esp-usb/device/esp_tinyusb/test_apps
steps:
- uses: actions/checkout@v4
- name: Clone esp-usb repository
run: |
git clone https://github.com/espressif/esp-usb.git
- name: ⚙️ Install System tools
run: |
apt update
apt install -y usbutils
- name: Install Python packages
env:
PIP_EXTRA_INDEX_URL: "https://dl.espressif.com/pypi/"
run: pip install --only-binary cryptography pytest-embedded pytest-embedded-serial-esp pytest-embedded-idf pyserial pyusb
- uses: actions/download-artifact@v4
with:
# No need to set the path manually.
# The test apps were built after cloning the esp-usb repo,
# and the build artifacts already have the correct folder structure.
name: usb_device_test_app_bin_${{ matrix.idf_ver }}
- name: Run on target
run: pytest ${{ env.ESP_USB_TEST_APPS_PATH }} --target=${{ matrix.idf_target }} -m ${{ matrix.runner_tag }} --build-dir=build_${{ matrix.idf_target }}_${{ matrix.sdkconfig }}
Loading