{"id":22366138,"url":"https://github.com/microsoft/wifi-ztp","last_synced_at":"2026-02-24T09:02:02.354Z","repository":{"id":48055821,"uuid":"368250968","full_name":"microsoft/wifi-ztp","owner":"microsoft","description":"Wi-Fi Zero Touch Provisioning (ZTP)","archived":false,"fork":false,"pushed_at":"2021-08-27T20:41:05.000Z","size":284,"stargazers_count":13,"open_issues_count":3,"forks_count":3,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-02-14T09:31:06.829Z","etag":null,"topics":["wi-fi","wifi","wifi-provisioning","zero-touch-provisioning","ztp"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/microsoft.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null}},"created_at":"2021-05-17T16:22:03.000Z","updated_at":"2025-10-20T02:05:57.000Z","dependencies_parsed_at":"2022-08-12T17:40:20.461Z","dependency_job_id":null,"html_url":"https://github.com/microsoft/wifi-ztp","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/microsoft/wifi-ztp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2Fwifi-ztp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2Fwifi-ztp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2Fwifi-ztp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2Fwifi-ztp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/microsoft","download_url":"https://codeload.github.com/microsoft/wifi-ztp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2Fwifi-ztp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29645551,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T05:21:04.652Z","status":"ssl_error","status_checked_at":"2026-02-20T05:21:04.238Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["wi-fi","wifi","wifi-provisioning","zero-touch-provisioning","ztp"],"created_at":"2024-12-04T18:07:49.312Z","updated_at":"2026-02-24T09:02:02.306Z","avatar_url":"https://github.com/microsoft.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wi-Fi Zero Touch Provisioning (ZTP)\n\n![ZTP Penguin](docs/ztppenguin.png)\n\nThis project provides a Wi-Fi zero touch provisioning library and daemon for Linux. It supports provisioning of Wi-Fi credentials using [Wi-Fi Easy Connect](https://www.wi-fi.org/discover-wi-fi/wi-fi-easy-connect), also known as the Device Provisioning Protocol (DPP).\n\n## Building\n\n### Ubuntu (focal)\n\nInstall package dependencies:\n\n```bash\nsudo apt install build-essential cmake git libboost-filesystem-dev libboost-random-dev libboost-regex-dev libboost-system-dev libboost-thread-dev libbrotli-dev libgpiod-dev libjson-c-dev libssl-dev libsystemd-dev pkg-config zlib1g-dev\n```\n\nCheckout and build:\n\n```bash\ngit clone git@github.com:microsoft/wifi-ztp.git\ncd wifi-ztp\nmkdir build \u0026\u0026 cd $_\ncmake ..\nmake -j $(nproc)\n```\n\n## Usage\n\nThe daemon usage is driven primarily by configuration files whose path is passed\nto the daemon as a command line flag. The daemon accepts the following command\nline flags:\n\n| Flag | Presence     | Description                                     | Supported Values                                | Examples                   |\n|------|--------------|-------------------------------------------------|-------------------------------------------------|----------------------------|\n| `-c` | **Required** | Configuration file path                         | Absolute path to the primary configuration file | `-c /etc/ztpd/config.json` |\n| `-d` | Optional     | Daemonize flag (run in background)              | None (unary flag)                               | `-d`                       |\n| `-v` | Optional     | Version output flag. Program exits immediately. | None (unary flag)                               | `-v`                       |\n\n### Configuration files\n\n#### Primary configuration file\n\nThis file controls global daemon options, including the Wi-Fi EasyConnect device\nroles (enrollee, configurator) that are supported and activated. For each of\nthese roles, a separate configuration file is specified by providing its absolute path. Each configuration file option is specified in [config.json.schema](/samples/ztpd/config/config.schema.json), and an example configuration file can be found [here](/samples/ztpd/config/config.json).\n\n#### Enrollee configuration file\n\nWhen the primary configuration file specifies that the Wi-Fi EasyConnect `enrollee` device role is supported, it also specifies its configuration file. This file describes enrollee options, including information about the bootstrapping key. Each configuration file option is specified in [config-enrollee.schema.json](samples/ztpd/config/config-enrollee.schema.json), and an example configuration file can be found [here](/samples/ztpd/config/config-enrollee.json).\n\n#### Configurator configuration file\n\nWhen the primary configuration file specifies that the Wi-Fi EasyConnect `configurator` device role is supported, it also specifies its configuration file. This file describes configurator options, including information regarding enrollee bootstrapping information. Each configuration file option is specified in [config-enrollee.schema.json](samples/ztpd/config/config-configurator.schema.json), and an example configuration file can be found [here](/samples/ztpd/config/config-configurator.json). Enrollee bootstrapping information is provided by _bootstrapping information providers (BIPs)_, which are specified in the configuration file. Currently, there are two built-in providers:\n\n##### Azure Device Provisioning Service (DPS)\n\nThis bootstrapping information provider sources enrollee bootstrapping records from an [Azure Device Provisioning Service (DPS)](https://docs.microsoft.com/en-us/azure/iot-dps/about-iot-dps) instance. The bootstrapping information is contained in device records under a top-level object property called `optionalDeviceInformation`. The object structure expected is as follows:\n\n```json\n\"optionalDeviceInformation\": {\n    \"ZeroTouchProvisioning\": {\n        \"WiFi\": {\n            \"Interfaces\": [\n                {\n                    \"DppUri\": \"DPP:V:2;M:d8c0a65935ed;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgACE0vdn8KsfXKHusJPcEscx+naQyQJLSob1VjuqPsP6r8=;;\"\n                },\n                {\n                    \"DppUri\": \"DPP:V:2;M:70665509b591;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgACiLN+2Rk4tRlwl4CKYkSEdheJIEbZO5UBr9SPoPFI394=;;\"\n                }\n            ]\n        }\n    }\n}\n```\n\nEach supported wireless interface can be specified and must contain a child property with key `DppUri`. The value is a string describing a valid Device Provisioning Protocol (DPP, EasyConnect) URI for an enrollee device.\n\nThe provider will periodically retrieve the device records from the instance and cache them in a local view. Each provider can optionally define the DPS instance record expiration time. The daemon will consider the local device record view as consistent with the remote instance view until the expiry time elapses, at which point the local view will be re-synchronized.\n\n##### File\n\nThis bootstrapping information provider sources enrollee bootstrapping records from a json-formatted file. It may be configured to point to the enrollee bootstrapping records using [json pointers](https://datatracker.ietf.org/doc/html/rfc6901). The example configuration file shows an example of this provider where the file [config-bootstrapinfo.json](samples/ztpd/config/config-bootstrapinfo.json) contains the enrollee records, amongst other unrelated information.\n\nThis bootstrap provider is not meant to scale to a large number of records. It is meant more for small scale deployments or for testing and debugging purposes.\n\n## Contributing\n\nThis project welcomes contributions and suggestions.  Most contributions require you to agree to a\nContributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us\nthe rights to use your contribution. For details, visit [https://cla.opensource.microsoft.com](https://cla.opensource.microsoft.com).\n\nWhen you submit a pull request, a CLA bot will automatically determine whether you need to provide\na CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions\nprovided by the bot. You will only need to do this once across all repos using our CLA.\n\nThis project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).\nFor more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or\ncontact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.\n\n## Trademarks\n\nThis project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft \ntrademarks or logos is subject to and must follow \n[Microsoft's Trademark \u0026 Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).\nUse of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.\nAny use of third-party trademarks or logos are subject to those third-party's policies.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicrosoft%2Fwifi-ztp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmicrosoft%2Fwifi-ztp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicrosoft%2Fwifi-ztp/lists"}