{"id":15632736,"url":"https://github.com/h2zero/esp-nimble-cpp","last_synced_at":"2025-05-16T10:08:37.425Z","repository":{"id":37770304,"uuid":"251156568","full_name":"h2zero/esp-nimble-cpp","owner":"h2zero","description":"C++ library for the esp32 NimBLE stack based on and mostly  compatible with @nkolban cpp_utils BLE library.","archived":false,"fork":false,"pushed_at":"2025-05-10T22:44:39.000Z","size":4190,"stargazers_count":215,"open_issues_count":33,"forks_count":69,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-05-10T23:25:04.063Z","etag":null,"topics":["ble","bluetooth-low-energy","esp32","nimble"],"latest_commit_sha":null,"homepage":"https://h2zero.github.io/esp-nimble-cpp/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/h2zero.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"h2zero","custom":["https://paypal.me/h2zero"]}},"created_at":"2020-03-29T23:33:34.000Z","updated_at":"2025-05-07T01:31:38.000Z","dependencies_parsed_at":"2023-02-19T01:00:57.387Z","dependency_job_id":"6fc665b2-94fe-452e-8297-da8422a0589d","html_url":"https://github.com/h2zero/esp-nimble-cpp","commit_stats":{"total_commits":345,"total_committers":46,"mean_commits":7.5,"dds":0.4318840579710145,"last_synced_commit":"70c6e89f195f89a1a705100dd198ac443d08c40c"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h2zero%2Fesp-nimble-cpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h2zero%2Fesp-nimble-cpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h2zero%2Fesp-nimble-cpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h2zero%2Fesp-nimble-cpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/h2zero","download_url":"https://codeload.github.com/h2zero/esp-nimble-cpp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254509477,"owners_count":22082892,"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","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":["ble","bluetooth-low-energy","esp32","nimble"],"created_at":"2024-10-03T10:45:09.929Z","updated_at":"2025-05-16T10:08:32.392Z","avatar_url":"https://github.com/h2zero.png","language":"C++","funding_links":["https://github.com/sponsors/h2zero","https://paypal.me/h2zero"],"categories":[],"sub_categories":[],"readme":"[![Release Version](https://img.shields.io/github/release/h2zero/esp-nimble-cpp.svg?style=plastic)\n![Release Date](https://img.shields.io/github/release-date/h2zero/esp-nimble-cpp.svg?style=plastic)](https://github.com/h2zero/esp-nimble-cpp/releases/latest/)  \n\n\u003e [!IMPORTANT]\n\u003e Version 2 is now released!\n\u003e Check out the [1.x to 2.x Migration Guide](docs/1.x_to2.x_migration_guide.md) and [Release Notes](https://github.com/h2zero/esp-nimble-cpp/releases/latest/)\n\n# esp-nimble-cpp\n\nNimBLE CPP library for use with ESP32 that attempts to maintain compatibility with the [nkolban cpp_utils BLE API](https://github.com/nkolban/esp32-snippets/tree/master/cpp_utils).\n\n**An Arduino version of this library, including NimBLE, can be [found here.](https://github.com/h2zero/NimBLE-Arduino)**\n\nThis library **significantly** reduces resource usage and improves performance for ESP32 BLE applications as compared    \nwith the bluedroid based library. The goal is to maintain, as much as reasonable, compatibility with the original   \nlibrary but using the NimBLE stack. In addition, this library will be more actively developed and maintained   \nto provide improved capabilities and stability over the original.\n\n**Testing shows a nearly 50% reduction in flash use and approx. 100kB less ram consumed vs the original!**  \n*Your results may vary*  \n\u003cbr/\u003e\n\n# What is NimBLE?\nNimBLE is a completely open source Bluetooth Low Energy stack produced by [Apache](https://github.com/apache/mynewt-nimble).  \nIt is more suited to resource constrained devices than bluedroid and has now been ported to the ESP32 by Espressif.  \n\u003cbr/\u003e\n\n# Installation\n\n### ESP-IDF v4.0+\nDownload as .zip and extract or clone into the components folder in your esp-idf project.\n\nRun menuconfig, go to `Component config-\u003eBluetooth` enable Bluetooth and in `Bluetooth host` NimBLE.  \nConfigure settings in `NimBLE Options`.  \n`#include \"NimBLEDevice.h\"` in main.cpp.  \nCall `NimBLEDevice::init(\"\");` in `app_main`.  \n\u003cbr/\u003e\n\n# Using \nThis library is intended to be compatible with the original ESP32 BLE functions and types with minor changes.  \n\nIf you have not used the original Bluedroid library please refer to the [New user guide](docs/New_user_guide.md).  \n\nIf you are familiar with the original library, see: [The migration guide](docs/Migration_guide.md) for details about breaking changes and migration.  \n\nAlso see [Improvements_and_updates](docs/Improvements_and_updates.md) for information about non-breaking changes.  \n\n[Full API documentation and class list can be found here.](https://h2zero.github.io/esp-nimble-cpp/)  \n\u003cbr/\u003e  \n\n## Using with Arduino as an IDF component and CMake\nWhen using this library along with Arduino and compiling with *CMake* you must add `add_compile_definitions(ARDUINO_ARCH_ESP32=1)`  \nin your project/CMakeLists.txt after the line `include($ENV{IDF_PATH}/tools/cmake/project.cmake)` to prevent Arduino from releasing BLE memory.\n\u003cbr\u003e\n\n# Sponsors\nThank you to all the sponsors who support this project!\n\n\u003c!-- sponsors --\u003e\u003c!-- sponsors --\u003e\n\nIf you use this library for a commercial product please consider [sponsoring the development](https://github.com/sponsors/h2zero) to ensure the continued updates and maintenance.  \n\u003cbr/\u003e\n\n# Acknowledgments\n* [nkolban](https://github.com/nkolban) and [chegewara](https://github.com/chegewara) for the [original esp32 BLE library](https://github.com/nkolban/esp32-snippets/tree/master/cpp_utils) this project was derived from.\n* [beegee-tokyo](https://github.com/beegee-tokyo) for contributing your time to test/debug and contributing the beacon examples.\n* [Jeroen88](https://github.com/Jeroen88) for the amazing help debugging and improving the client code.  \n\u003cbr/\u003e  \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fh2zero%2Fesp-nimble-cpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fh2zero%2Fesp-nimble-cpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fh2zero%2Fesp-nimble-cpp/lists"}