{"id":24092187,"url":"https://github.com/RT-Thread-packages/tinyusb","last_synced_at":"2025-09-17T01:33:29.921Z","repository":{"id":38307983,"uuid":"451302121","full_name":"RT-Thread-packages/tinyusb","owner":"RT-Thread-packages","description":"TinyUSB for RT-Thread | An open source  cross-platform USB stack for embedded system","archived":false,"fork":true,"pushed_at":"2023-12-09T10:50:35.000Z","size":31714,"stargazers_count":15,"open_issues_count":4,"forks_count":6,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-10T07:51:37.258Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.tinyusb.org","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"hathach/tinyusb","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RT-Thread-packages.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing/code_of_conduct.rst","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.rst","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-01-24T03:23:11.000Z","updated_at":"2024-10-03T06:25:30.000Z","dependencies_parsed_at":"2023-02-08T06:00:40.502Z","dependency_job_id":null,"html_url":"https://github.com/RT-Thread-packages/tinyusb","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/RT-Thread-packages/tinyusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RT-Thread-packages%2Ftinyusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RT-Thread-packages%2Ftinyusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RT-Thread-packages%2Ftinyusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RT-Thread-packages%2Ftinyusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RT-Thread-packages","download_url":"https://codeload.github.com/RT-Thread-packages/tinyusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RT-Thread-packages%2Ftinyusb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275520344,"owners_count":25479590,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-16T02:00:10.229Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-10T07:44:53.854Z","updated_at":"2025-09-17T01:33:29.911Z","avatar_url":"https://github.com/RT-Thread-packages.png","language":"C","readme":"# TinyUSB for RT-Thread\n\n### [中文文档](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/packages-manual/tinyusb-docs/introduction)\n\n![tinyusb](docs/assets/logo.svg)\n\n[![Build\nStatus](https://github.com/hathach/tinyusb/workflows/Build/badge.svg)](https://github.com/hathach/tinyusb/actions)\n[![Documentation\nStatus](https://readthedocs.org/projects/tinyusb/badge/?version=latest)](https://docs.tinyusb.org/en/latest/?badge=latest)\n[![License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT)\n\nTinyUSB is an open-source cross-platform USB Host/Device stack for\nembedded system, designed to be memory-safe with no dynamic allocation\nand thread-safe with all interrupt events are deferred then handled in\nthe non-ISR task function.\n\nPlease take a look at the online\n[documentation](https://docs.tinyusb.org/).\n\n\u003cfigure\u003e\n\u003cimg src=\"docs/assets/stack.svg\" width=\"500\" /\u003e\n\u003c/figure\u003e\n\n    .\n    ├── docs            # Documentation\n    ├── examples        # Sample with Makefile build support\n    ├── hw\n    │   ├── bsp         # Supported boards source files\n    │   └── mcu         # Low level mcu core \u0026 peripheral drivers\n    ├── lib             # Sources from 3rd party such as freeRTOS, fatfs ...\n    ├── src             # All sources files for TinyUSB stack itself.\n    ├── test            # Unit tests for the stack\n    └── tools           # Files used internally\n\nSupported MCUs\n==============\n\nThe stack supports the following MCUs:\n\n-   **Allwinner:** F1C100s/F1C200s\n-   **Broadcom:** BCM2837, BCM2711\n-   **Dialog:** DA1469x\n-   **Espressif:** ESP32-S2, ESP32-S3\n-   **GigaDevice:** GD32VF103\n-   **Infineon:** XMC4500\n-   **MicroChip:** SAMD11, SAMD21, SAMD51, SAME5x, SAMG55, SAML21,\n    SAML22, SAME7x\n-   **NordicSemi:** nRF52833, nRF52840, nRF5340\n-   **Nuvoton:** NUC120, NUC121/NUC125, NUC126, NUC505\n-   **NXP:**\n    -   iMX RT Series: RT1011, RT1015, RT1021, RT1052, RT1062, RT1064\n    -   Kinetis: KL25, K32L2\n    -   LPC Series: 11u, 13, 15, 17, 18, 40, 43, 51u, 54, 55\n-   **Raspberry Pi:** RP2040\n-   **Renesas:** RX63N, RX65N, RX72N\n-   **Silabs:** EFM32GG\n-   **Sony:** CXD56\n-   **ST:** STM32 series: F0, F1, F2, F3, F4, F7, H7, G4, L0, L1, L4,\n    L4+\n-   **TI:** MSP430, MSP432E4, TM4C123\n-   **ValentyUSB:** eptri\n\nHere is the list of [Supported Devices](docs/reference/supported.rst)\nthat can be used with provided examples.\n\nDevice Stack\n============\n\nSupports multiple device configurations by dynamically changing USB\ndescriptors, low power functions such like suspend, resume, and remote\nwakeup. The following device classes are supported:\n\n-   Audio Class 2.0 (UAC2)\n-   Bluetooth Host Controller Interface (BTH HCI)\n-   Communication Device Class (CDC)\n-   Device Firmware Update (DFU): DFU mode (WIP) and Runtime\n-   Human Interface Device (HID): Generic (In \u0026 Out), Keyboard, Mouse,\n    Gamepad etc ...\n-   Mass Storage Class (MSC): with multiple LUNs\n-   Musical Instrument Digital Interface (MIDI)\n-   Network with RNDIS, Ethernet Control Model (ECM), Network Control\n    Model (NCM)\n-   Test and Measurement Class (USBTMC)\n-   Video class 1.5 (UVC): work in progress\n-   Vendor-specific class support with generic In \u0026 Out endpoints. Can\n    be used with MS OS 2.0 compatible descriptor to load winUSB driver\n    without INF file.\n-   [WebUSB](https://github.com/WICG/webusb) with vendor-specific class\n\nIf you have a special requirement, `usbd_app_driver_get_cb()` can be used to write\nyour own class driver without modifying the stack. Here is how the RPi\nteam added their reset interface\n[raspberrypi/pico-sdk#197](https://github.com/raspberrypi/pico-sdk/pull/197)\n\nHost Stack\n==========\n\n-   Human Interface Device (HID): Keyboard, Mouse, Generic\n-   Mass Storage Class (MSC)\n-   Hub currently only supports 1 level of hub (due to my laziness)\n\nOS Abstraction layer\n====================\n\nTinyUSB is completely thread-safe by pushing all Interrupt Service\nRequest (ISR) events into a central queue, then processing them later in\nthe non-ISR context task function. It also uses semaphore/mutex to\naccess shared resources such as Communication Device Class (CDC) FIFO.\nTherefore the stack needs to use some of the OS's basic APIs. Following\nOSes are already supported out of the box.\n\n-   **No OS**\n-   **FreeRTOS**\n-   [RT-Thread](https://github.com/RT-Thread/rt-thread):\n    [repo](https://github.com/RT-Thread-packages/tinyusb)\n-   **Mynewt** Due to the newt package build system, Mynewt examples are\n    better to be on its [own\n    repo](https://github.com/hathach/mynewt-tinyusb-example)\n\nLocal Docs\n==========\n\n-   Info\n    -   [Uses](docs/info/uses.rst)\n    -   [Changelog](docs/info/changelog.rst)\n    -   [Contributors](CONTRIBUTORS.rst)\n-   [Reference](docs/reference/index.rst)\n    -   [Supported Devices](docs/reference/supported.rst)\n    -   [Getting Started](docs/reference/getting_started.rst)\n    -   [Concurrency](docs/reference/concurrency.rst)\n-   [Contributing](docs/contributing/index.rst)\n    -   [Code of Conduct](CODE_OF_CONDUCT.rst)\n    -   [Structure](docs/contributing/structure.rst)\n    -   [Porting](docs/contributing/porting.rst)\n\nLicense\n=======\n\nAll TinyUSB sources in the `src` folder are licensed under MIT license,\nthe [Full license is here](LICENSE). However, each file can be\nindividually licensed especially those in `lib` and `hw/mcu` folder.\nPlease make sure you understand all the license term for files you use\nin your project.\n","funding_links":[],"categories":["Packages"],"sub_categories":["System"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRT-Thread-packages%2Ftinyusb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FRT-Thread-packages%2Ftinyusb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRT-Thread-packages%2Ftinyusb/lists"}