{"id":13508263,"url":"https://github.com/nerves-project/nerves","last_synced_at":"2026-04-01T19:06:59.464Z","repository":{"id":37470733,"uuid":"50259821","full_name":"nerves-project/nerves","owner":"nerves-project","description":"Craft and deploy bulletproof embedded software in Elixir","archived":false,"fork":false,"pushed_at":"2026-03-20T10:12:41.000Z","size":7902,"stargazers_count":2454,"open_issues_count":27,"forks_count":202,"subscribers_count":56,"default_branch":"main","last_synced_at":"2026-03-20T18:18:00.007Z","etag":null,"topics":["elixir","embedded","nerves"],"latest_commit_sha":null,"homepage":"http://nerves-project.org","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nerves-project.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSES/Apache-2.0.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"open_collective":"nerves-project"}},"created_at":"2016-01-23T21:42:42.000Z","updated_at":"2026-03-20T02:24:17.000Z","dependencies_parsed_at":"2025-12-07T06:01:51.809Z","dependency_job_id":null,"html_url":"https://github.com/nerves-project/nerves","commit_stats":{"total_commits":1241,"total_committers":112,"mean_commits":"11.080357142857142","dds":0.5834004834810637,"last_synced_commit":"d3d6970028e16b4e46aabb5a0669a69f317c31cd"},"previous_names":[],"tags_count":106,"template":false,"template_full_name":null,"purl":"pkg:github/nerves-project/nerves","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nerves-project%2Fnerves","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nerves-project%2Fnerves/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nerves-project%2Fnerves/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nerves-project%2Fnerves/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nerves-project","download_url":"https://codeload.github.com/nerves-project/nerves/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nerves-project%2Fnerves/sbom","scorecard":{"id":680291,"data":{"date":"2025-08-11","repo":{"name":"github.com/nerves-project/nerves","commit":"23a8358fda9bfdb5e723a4be88016e227e6ff0ba"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.4,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":1,"reason":"2 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":5,"reason":"Found 12/22 approved changesets -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSES/Apache-2.0.txt:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSES/Apache-2.0.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T22:53:32.347Z","repository_id":37470733,"created_at":"2025-08-21T22:53:32.347Z","updated_at":"2025-08-21T22:53:32.347Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31291059,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"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":["elixir","embedded","nerves"],"created_at":"2024-08-01T02:00:50.577Z","updated_at":"2026-04-01T19:06:59.455Z","avatar_url":"https://github.com/nerves-project.png","language":"Elixir","readme":"\u003c!--\n  SPDX-FileCopyrightText: 2016 Justin Schneck\n  SPDX-FileCopyrightText: 2017 Frank Hunleth\n  SPDX-FileCopyrightText: 2017 Greg Mefford\n  SPDX-FileCopyrightText: 2017 Jeff Smith\n  SPDX-FileCopyrightText: 2017 Xavier Damman\n  SPDX-FileCopyrightText: 2020 Jon Carstens\n  SPDX-FileCopyrightText: 2022 Masatoshi Nishiguchi\n  SPDX-FileCopyrightText: 2022 Rui Lopes\n  SPDX-FileCopyrightText: 2023 Dave Purrington\n  SPDX-FileCopyrightText: 2024 Cocoa Xu\n  SPDX-License-Identifier: CC-BY-4.0\n--\u003e\n# Nerves\n\n[![Backers on Open Collective](https://opencollective.com/nerves-project/backers/badge.svg)](#backers)\n[![Sponsors on Open Collective](https://opencollective.com/nerves-project/sponsors/badge.svg)](#sponsors)\n[![Hex version](https://img.shields.io/hexpm/v/nerves.svg \"Hex version\")](https://hex.pm/packages/nerves)\n[![CircleCI](https://circleci.com/gh/nerves-project/nerves.svg?style=svg)](https://circleci.com/gh/nerves-project/nerves)\n[![REUSE status](https://api.reuse.software/badge/github.com/nerves-project/nerves)](https://api.reuse.software/info/github.com/nerves-project/nerves)\n\n## Craft and deploy bulletproof embedded software in Elixir\n\nNerves provides tooling and libraries for building small, self-contained\nsoftware images using the rock-solid [Erlang virtual\nmachine](https://www.erlang.org/) hardware support of Linux, and happy\ndevelopment experience of Elixir for microprocessor-based embedded systems.\n\nWhile the Nerves project provides base runtime libraries for hardware access and\nnetwork configuration, nearly all of the Elixir ecosystem is available,\nincluding:\n\n* [Phoenix](https://www.phoenixframework.org/) and LiveView for interactive\n  local web user interfaces\n* [Elixir Nx](https://github.com/elixir-nx/nx) for numerical computing and\n  machine learning\n* [Livebook](https://livebook.dev/) for interactive code notebooks on your device\n* [Scenic](https://github.com/boydm/scenic) for local on-screen user interfaces\n\nOr just keep it simple and use whatever libraries you need from the\n[Hex package manager](https://hex.pm/). Nerves only includes what you use so\nyour embedded software can remain small.\n\nNerves uses the Linux kernel to support a large variety of hardware. It is not a\nLinux distribution, though, and contains little of what you would find on a\ntypical embedded Linux system. Instead, it starts the Erlang runtime as one of\nthe first OS processes and lets Erlang and Elixir take over from there. Not to\nfear, if you need something from Linux, Nerves provides a way to use most of the\npackages available through [Buildroot](https://buildroot.org).\n\n## Nerves Projects\n\nOur project is spread over many repositories in order to focus on a limited\nscope per repository.\n\nThis repository\n(**[nerves-project/nerves](https://github.com/nerves-project/nerves)**) is an\nentrance to Nerves and provides the core tooling and documentation.\n\nThe Nerves core team maintains the projects in the `nerves-project` organization\nwith the help of many in the Elixir community. Projects under other GitHub\norganizations are maintained by their respective organization, but listed here\nsince they're so commonly used in conjunction with the core libraries and tools.\n\n### Framework / Core\n\n| Name | Description | Release |\n| -------------------------: | :------------------------------------------------------------------------------------------ | :-------------------------------------------------------- |\n| **[Erlinit](https://github.com/nerves-project/erlinit)** | Replacement for /sbin/init that launches an Erlang/OTP Release | ![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/nerves-project/erlinit?sort=semver) |\n| **[Nerves.Bootstrap](https://github.com/nerves-project/nerves_bootstrap)** | The Nerves new project generator and low level hooks into Mix | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_bootstrap.svg)](https://hex.pm/packages/nerves_bootstrap) |\n| **[Nerves.Runtime](https://github.com/nerves-project/nerves_runtime)** | Small, general runtime utilities for Nerves devices | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_runtime.svg)](https://hex.pm/packages/nerves_runtime) |\n| **[NervesPack](https://github.com/nerves-project/nerves_pack)** | Initialization setup for Nerves devices | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_pack.svg)](https://hex.pm/packages/nerves_pack) |\n| **[NervesSystemBR](https://github.com/nerves-project/nerves_system_br)** | Buildroot based build platform for Nerves Systems | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_system_br.svg)](https://hex.pm/packages/nerves_system_br) |\n| **[RingLogger](https://github.com/nerves-project/ring_logger)** | A ring buffer backend for Elixir Logger with IO streaming | [![Hex.pm](https://img.shields.io/hexpm/v/ring_logger.svg)](https://hex.pm/packages/ring_logger) |\n\n### Example projects\n\n| Name | Description | Release |\n| -------------------------: | :------------------------------------------------------------------------------------------ | :-------------------------------------------------------- |\n| **[Circuits Quickstart](https://github.com/elixir-circuits/circuits_quickstart)** | Try out Elixir Circuits with prebuilt Nerves firmware | ![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/elixir-circuits/circuits_quickstart?sort=semver) |\n| **[NervesExamples](https://github.com/nerves-project/nerves_examples)** | Small example programs using Nerves | |\n| **[Nerves Livebook](https://github.com/nerves-livebook/nerves_livebook)** | Develop on embedded devices with Livebook and Nerves | ![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/nerves-livebook/nerves_livebook?sort=semver) |\n\n### Hardware\n\nThese are the officially supported hardware ports. Many others exist in the\ncommunity.\n\n| Name | Description | Release |\n| -------------------------: | :------------------------------------------------------------------------------------------ | :-------------------------------------------------------- |\n| **[NervesSystemBBB](https://github.com/nerves-project/nerves_system_bbb)** | Base Nerves system configuration for the BeagleBone-based boards | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_system_bbb.svg)](https://hex.pm/packages/nerves_system_bbb) |\n| **[NervesSystemOSD32MP1](https://github.com/nerves-project/nerves_system_osd32mp1)** | Base system for Octavo OSD32MP1 | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_system_osd32mp1.svg)](https://hex.pm/packages/nerves_system_osd32mp1) |\n| **[NervesSystemRPi](https://github.com/nerves-project/nerves_system_rpi)** | Base Nerves system configuration for the Raspberry Pi A+ and B+ | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_system_rpi.svg)](https://hex.pm/packages/nerves_system_rpi) |\n| **[NervesSystemRPi0](https://github.com/nerves-project/nerves_system_rpi0)** | Base Nerves system configuration for the Raspberry Pi Zero and Zero W | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_system_rpi0.svg)](https://hex.pm/packages/nerves_system_rpi0) |\n| **[NervesSystemRPi0_2](https://github.com/nerves-project/nerves_system_rpi0_2)** | Nerves system for the Raspberry Pi Zero 2 W | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_system_rpi0_2.svg)](https://hex.pm/packages/nerves_system_rpi0_2) |\n| **[NervesSystemRPi2](https://github.com/nerves-project/nerves_system_rpi2)** | Base Nerves system configuration for the Raspberry Pi 2 | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_system_rpi2.svg)](https://hex.pm/packages/nerves_system_rpi2) |\n| **[NervesSystemRPi3](https://github.com/nerves-project/nerves_system_rpi3)** | Base Nerves system configuration for the Raspberry Pi 3 | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_system_rpi3.svg)](https://hex.pm/packages/nerves_system_rpi3) |\n| **[NervesSystemRPi3A](https://github.com/nerves-project/nerves_system_rpi3a)** | Nerves system for the Raspberry Pi 3 Model A+ w/ gadget mode and Raspberry Pi Zero 2 W | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_system_rpi3a.svg)](https://hex.pm/packages/nerves_system_rpi3a) |\n| **[NervesSystemRPi4](https://github.com/nerves-project/nerves_system_rpi4)** | Base Nerves system configuration for the Raspberry Pi 4 | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_system_rpi4.svg)](https://hex.pm/packages/nerves_system_rpi4) |\n| **[NervesSystemRPi5](https://github.com/nerves-project/nerves_system_rpi5)** | Base Nerves system configuration for the Raspberry Pi 5 | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_system_rpi5.svg)](https://hex.pm/packages/nerves_system_rpi5) |\n| **[NervesSystemVultr](https://github.com/nerves-project/nerves_system_vultr)** | Experimental configuration for a Vultr cloud server | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_system_vultr.svg)](https://hex.pm/packages/nerves_system_vultr) |\n| **[NervesSystemX86_64](https://github.com/nerves-project/nerves_system_x86_64)** | Generic Nerves system configuration x86_64 based hardware | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_system_x86_64.svg)](https://hex.pm/packages/nerves_system_x86_64) |\n| **[NervesSystemGrisp2](https://github.com/nerves-project/nerves_system_grisp2)** |Base Nerves system configuration for the GRiSP 2 | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_system_grisp2.svg)](https://hex.pm/packages/nerves_system_grisp2) |\n| **[NervesSystemMangoPiMQPro](https://github.com/nerves-project/nerves_system_mangopi_mq_pro)** |Base Nerves system configuration for the MangoPi MQ-Pro | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_system_mangopi_mq_pro.svg)](https://hex.pm/packages/nerves_system_mangopi_mq_pro) |\n\n### Networking\n\n| Name | Description | Release |\n| -------------------------: | :------------------------------------------------------------------------------------------ | :-------------------------------------------------------- |\n| **[VintageNet](https://github.com/nerves-networking/vintage_net)** | Network configuration and management for Nerves | [![Hex.pm](https://img.shields.io/hexpm/v/vintage_net.svg)](https://hex.pm/packages/vintage_net) |\n| **[VintageNetWiFi](https://github.com/nerves-networking/vintage_net_wifi)** | WiFi networking for VintageNet | [![Hex.pm](https://img.shields.io/hexpm/v/vintage_net_wifi.svg)](https://hex.pm/packages/vintage_net_wifi) |\n| **[VintageNetDirect](https://github.com/nerves-networking/vintage_net_direct)** | Direct network connection support for VintageNet | [![Hex.pm](https://img.shields.io/hexpm/v/vintage_net_direct.svg)](https://hex.pm/packages/vintage_net_direct) |\n| **[VintageNetEthernet](https://github.com/nerves-networking/vintage_net_ethernet)** | Ethernet support for VintageNet | [![Hex.pm](https://img.shields.io/hexpm/v/vintage_net_ethernet.svg)](https://hex.pm/packages/vintage_net_ethernet) |\n| **[VintageNetMobile](https://github.com/nerves-networking/vintage_net_mobile)** | Mobile connection support for VintageNet | [![Hex.pm](https://img.shields.io/hexpm/v/vintage_net_mobile.svg)](https://hex.pm/packages/vintage_net_mobile) |\n| **[VintageNetQMI](https://github.com/nerves-networking/vintage_net_qmi)** | VintageNet technology support for QMI mobile connections | [![Hex.pm](https://img.shields.io/hexpm/v/vintage_net_qmi.svg)](https://hex.pm/packages/vintage_net_qmi) |\n| **[VintageNetWireGuard](https://github.com/nerves-networking/vintage_net_wireguard)** | Wireguard VPN support | [![Hex.pm](https://img.shields.io/hexpm/v/vintage_net_wireguard.svg)](https://hex.pm/packages/vintage_net_wireguard) |\n\n### Hardware access\n\n| Name | Description | Release |\n| -------------------------: | :------------------------------------------------------------------------------------------ | :-------------------------------------------------------- |\n| **[Circuits.GPIO](https://github.com/elixir-circuits/circuits_gpio)** | Use GPIOs in Elixir | [![Hex.pm](https://img.shields.io/hexpm/v/circuits_gpio.svg)](https://hex.pm/packages/circuits_gpio) |\n| **[Circuits.I2C](https://github.com/elixir-circuits/circuits_i2c)** | Use I2C in Elixir | [![Hex.pm](https://img.shields.io/hexpm/v/circuits_i2c.svg)](https://hex.pm/packages/circuits_i2c) |\n| **[Circuits.SPI](https://github.com/elixir-circuits/circuits_spi)** | Communicate over SPI from Elixir | [![Hex.pm](https://img.shields.io/hexpm/v/circuits_spi.svg)](https://hex.pm/packages/circuits_spi) |\n| **[Circuits.UART](https://github.com/elixir-circuits/circuits_uart)** | Discover and use UARTs and serial ports in Elixir | [![Hex.pm](https://img.shields.io/hexpm/v/circuits_uart.svg)](https://hex.pm/packages/circuits_uart) |\n\n### SSH and Shell\n\n| Name | Description | Release |\n| -------------------------: | :------------------------------------------------------------------------------------------ | :-------------------------------------------------------- |\n| **[NervesMOTD](https://github.com/nerves-project/nerves_motd)** | Message of the day for Nerves devices | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_motd.svg)](https://hex.pm/packages/nerves_motd) |\n| **[NervesSSH](https://github.com/nerves-project/nerves_ssh)** | Manage an SSH daemon and subsystems on Nerves devices | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_ssh.svg)](https://hex.pm/packages/nerves_ssh) |\n| **[SSHSubsystemFwup](https://github.com/nerves-project/ssh_subsystem_fwup)** | Erlang SSH Subsystem for Nerves firmware updates | [![Hex.pm](https://img.shields.io/hexpm/v/ssh_subsystem_fwup.svg)](https://hex.pm/packages/ssh_subsystem_fwup) |\n| **[Toolshed](https://github.com/elixir-toolshed/toolshed)** | A toolshed of shell-like IEx helpers | [![Hex.pm](https://img.shields.io/hexpm/v/toolshed.svg)](https://hex.pm/packages/toolshed) |\n\n### Toolchain\n\nNerves provides a C/C++ cross-toolchain to ensure consistency builds on all\nsupported host platforms. These are built using\n[crosstool-ng](https://github.com/crosstool-ng/crosstool-ng) and are similar to\nother GCC toolchains.\n\n| Name | Description | Release |\n| -------------------------: | :------------------------------------------------------------------------------------------ | :-------------------------------------------------------- |\n|  **[nerves_toolchain_ctng](https://github.com/nerves-project/toolchains/tree/main/nerves_toolchain_ctng)** | Crosstool-NG integration for building Nerves toolchains | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_toolchain_ctng.svg)](https://hex.pm/packages/nerves_toolchain_ctng) |\n|  **[nerves_toolchain_aarch64_nerves_linux_gnu](https://github.com/nerves-project/toolchains/tree/main/nerves_toolchain_aarch64_nerves_linux_gnu)** | 64-bit ARM toolchain | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_toolchain_aarch64_nerves_linux_gnu.svg)](https://hex.pm/packages/nerves_toolchain_aarch64_nerves_linux_gnu) |\n|  **[nerves_toolchain_armv5_nerves_linux_musleabi](https://github.com/nerves-project/toolchains/tree/main/nerves_toolchain_armv5_nerves_linux_musleabi)** | 32-bit ARM toolchain for older ARM processors | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_toolchain_armv5_nerves_linux_musleabi.svg)](https://hex.pm/packages/nerves_toolchain_armv5_nerves_linux_musleabi) |\n|  **[nerves_toolchain_armv6_nerves_linux_gnueabihf](https://github.com/nerves-project/toolchains/tree/main/nerves_toolchain_armv6_nerves_linux_gnueabihf)** | 32-bit ARM toolchain for Raspberry Pi A, B, and Zero | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_toolchain_armv6_nerves_linux_gnueabihf.svg)](https://hex.pm/packages/nerves_toolchain_armv6_nerves_linux_gnueabihf) |\n|  **[nerves_toolchain_armv7_nerves_linux_gnueabihf](https://github.com/nerves-project/toolchains/tree/main/nerves_toolchain_armv7_nerves_linux_gnueabihf)** | 32-bit ARM toolchain for most 32-bit ARMs | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_toolchain_armv7_nerves_linux_gnueabihf.svg)](https://hex.pm/packages/nerves_toolchain_armv7_nerves_linux_gnueabihf) |\n|  **[nerves_toolchain_i586_nerves_linux_gnu](https://github.com/nerves-project/toolchains/tree/main/nerves_toolchain_i586_nerves_linux_gnu)** | 32-bit Intel x86 toolchain | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_toolchain_i586_nerves_linux_gnu.svg)](https://hex.pm/packages/nerves_toolchain_i586_nerves_linux_gnu) |\n|  **[nerves_toolchain_mipsel_nerves_linux_musl](https://github.com/nerves-project/toolchains/tree/main/nerves_toolchain_mipsel_nerves_linux_musl)** | 32-bit MIPS toolchain | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_toolchain_mipsel_nerves_linux_musl.svg)](https://hex.pm/packages/nerves_toolchain_mipsel_nerves_linux_musl) |\n|  **[nerves_toolchain_riscv64_nerves_linux_gnu](https://github.com/nerves-project/toolchains/tree/main/nerves_toolchain_riscv64_nerves_linux_gnu)** | 64-bit RISC-V toolchain | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_toolchain_riscv64_nerves_linux_gnu.svg)](https://hex.pm/packages/nerves_toolchain_riscv64_nerves_linux_gnu) |\n|  **[nerves_toolchain_x86_64_nerves_linux_musl](https://github.com/nerves-project/toolchains/tree/main/nerves_toolchain_x86_64_nerves_linux_musl)** | 64-bit x86 toolchain using the musl libc | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_toolchain_x86_64_nerves_linux_musl.svg)](https://hex.pm/packages/nerves_toolchain_x86_64_nerves_linux_musl) |\n|  **[nerves_toolchain_x86_64_nerves_linux_gnu](https://github.com/nerves-project/toolchains/tree/main/nerves_toolchain_x86_64_nerves_linux_gnu)** | 64-bit x86 toolchain using GNU libc | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_toolchain_x86_64_nerves_linux_gnu.svg)](https://hex.pm/packages/nerves_toolchain_x86_64_nerves_linux_gnu) |\n\n### Miscellaneous\n\n| Name | Description | Release |\n| -------------------------: | :------------------------------------------------------------------------------------------ | :-------------------------------------------------------- |\n| **[boardid](https://github.com/nerves-project/boardid)** | Print out a platform-specific board serial number | ![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/nerves-project/boardid?sort=semver) |\n| **[NervesFWLoaders](https://github.com/nerves-project/nerves_fw_loaders)** | A collection of firmware loaders for boards with internal storage | ![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/nerves-project/nerves_fw_loaders?sort=semver) |\n| **[NervesHeart](https://github.com/nerves-project/nerves_heart)** | Erlang heartbeat support for Nerves | ![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/nerves-project/nerves_heart?sort=semver) |\n| **[Shoehorn](https://github.com/nerves-project/shoehorn)** | Help handle OTP application failures and start order | [![Hex.pm](https://img.shields.io/hexpm/v/shoehorn.svg)](https://hex.pm/packages/shoehorn) |\n| **[UBootEnv](https://github.com/nerves-project/uboot_env)** | Read and write to U-Boot environment blocks | [![Hex.pm](https://img.shields.io/hexpm/v/uboot_env.svg)](https://hex.pm/packages/uboot_env) |\n\n### Upcoming\n\nThese projects are new or experimental and are in various stages of being ready\nto promote to the above categories.\n\n| Name | Description | Release |\n| -------------------------: | :------------------------------------------------------------------------------------------ | :-------------------------------------------------------- |\n| **[NervesLogging](https://github.com/nerves-project/nerves_logging)** | Route system log messages through the Elixir logger | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_logging.svg)](https://hex.pm/packages/nerves_logging) |\n| **[NervesUEvent](https://github.com/nerves-project/nerves_uevent)** | Simple UEvent monitor for detecting hardware and automatically loading drivers | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_uevent.svg)](https://hex.pm/packages/nerves_uevent) |\n| **[PropertyTable](https://github.com/jjcarstens/property_table)** | In-memory key-value store with subscriptions | [![Hex.pm](https://img.shields.io/hexpm/v/property_table.svg)](https://hex.pm/packages/property_table) |\n| **[nerves_initramfs](https://github.com/nerves-project/nerves_initramfs)** | An initramfs for early boot handling of Nerves devices | ![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/nerves-project/nerves_initramfs?sort=semver) |\n| **[nerves_system_linter](https://github.com/nerves-project/nerves_system_linter)** | Mix task to check Nerves system configuration files | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_system_linter.svg)](https://hex.pm/packages/nerves_system_linter) |\n| **[nerves_systems](https://github.com/nerves-project/nerves_systems)** | Build scripts for maintaining multiple repositories | _unreleased_ |\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eSee outdated/inactive projects...\u003c/b\u003e\u003c/summary\u003e\u003cbr /\u003e\n\n| Name | Description | Release |\n| -------------------------: | :------------------------------------------------------------------------------------------ | :-------------------------------------------------------- |\n| **[nerves_leds](https://github.com/nerves-project/nerves_leds)** | Functions to drive LEDs on embedded systems | [![Hex.pm](https://img.shields.io/hexpm/v/nerves_leds.svg)](https://hex.pm/packages/nerves_leds) |\n| **[system_registry](https://github.com/nerves-project/system_registry)** | Serial nested term storage and dispatch registry | [![Hex.pm](https://img.shields.io/hexpm/v/system_registry.svg)](https://hex.pm/packages/system_registry) |\n| **[system_registry_term_storage](https://github.com/nerves-attic/system_registry_term_storage)** | Simple term storage for SystemRegistry | [![Hex.pm](https://img.shields.io/hexpm/v/system_registry_term_storage.svg)](https://hex.pm/packages/system_registry_term_storage) |\n| **[nerves_system_test](https://github.com/nerves-project/nerves_system_test)** | | |\n| **[nerves_test_server](https://github.com/nerves-project/nerves_test_server)** | | |\n\nThere is also a gravesite for old Nerves libraries at\nhttps://github.com/nerves-project-attic.\n\n\u003c/details\u003e\n\n## Host Requirements\n\n* Mac OS 10.13+ (High Sierra and later)\n* 64-bit Linux (tested on Debian / Ubuntu / Redhat / CentOS / Arch)\n* Windows 10 with [Windows Subsystem for Linux 2](https://msdn.microsoft.com/en-us/commandline/wsl/install_guide)\n* Elixir ~\u003e 1.11\n\nSee [Installation Docs](https://hexdocs.pm/nerves/installation.html) for\nsoftware dependencies.\n\n## Quick-Reference\n\n### Generating a New Nerves Application\n\n```bash\nmix nerves.new my_app\n```\n\n### Building Firmware\n\n```bash\nexport MIX_TARGET=rpi3\nmix deps.get      # Fetch the dependencies\nmix firmware      # Cross-compile dependencies and create a .fw file\nmix firmware.burn # Burn firmware to an inserted SD card\n```\n\n**Note:** The `mix firmware.burn` target uses `sudo` to be able to write to a\nMicroSD card on Linux. You will be asked for a password. You can also set the\n`SUDO_ASKPASS` environment variable if you'd prefer an alternative way of\nrequesting the password. E.g., `export SUDO_ASKPASS=ssh-askpass`.\n\n## Docs\n\n[Installation Docs](https://hexdocs.pm/nerves/installation.html)\n\n[Getting Started](https://hexdocs.pm/nerves/getting-started.html)\n\n[Frequently-Asked Questions](https://hexdocs.pm/nerves/faq.html)\n\n[Systems](https://hexdocs.pm/nerves/systems.html)\n\n[Targets](https://hexdocs.pm/nerves/supported-targets.html)\n\n[User Interfaces](https://hexdocs.pm/nerves/user-interfaces.html)\n\n[Advanced Configuration](https://hexdocs.pm/nerves/advanced-configuration.html)\n\n[Compiling non-BEAM code](https://hexdocs.pm/nerves/compiling-non-beam-code.html)\n\n[Customizing Systems](https://hexdocs.pm/nerves/customizing-systems.html)\n\n## Contributors\n\nThis project exists thanks to all the people who contribute.\n\u003ca href=\"https://github.com/nerves-project/nerves/graphs/contributors\"\u003e\u003cimg src=\"https://opencollective.com/nerves-project/contributors.svg?width=890\" /\u003e\u003c/a\u003e\n\nPlease see our [Contributing Guide](https://github.com/nerves-project/.github/blob/main/CONTRIBUTING.md) for details on how you can\ncontribute in various ways.\n\n## Metal Level Sponsors\n\nMetal level sponsors are companies that allow core team members to maintain and\nextend Nerves for a portion of each work week. Nerves is not a product of any\none company. We also have a soft spot for supporting makers and hobbyists using\nthe BEAM, and it would be difficult to do this without them.\n\n\u003ca href=\"https://www.smartrent.com\" target=\"_blank\"\u003e\u003cimg width=\"200\" height=\"100\" src=\"https://nerves-project.org/img/SmartRent_logo.png\"\u003e\u003c/a\u003e\n\n\u003ca href=\"https://www.redwirelabs.com/\" target=\"_blank\"\u003e\u003cimg width=\"250\" src=\"https://nerves-project.org/img/Redwire_logo.png\"\u003e\u003c/a\u003e\n\n\u003ca href=\"https://www.binarynoggin.com\" target=\"_blank\"\u003e\u003cimg width=\"250\" src=\"https://nerves-project.org/img/BinaryNoggin_logo.png\"\u003e\u003c/a\u003e\n\n[[Become a metal level sponsor]](http://nerves-project.org/sponsors)\n\n## OpenCollective Backers\n\nThank you to all our monetary backers! Hardware costs money and without support,\nwe wouldn't be able to support nearly as many devices. 🙏 [[Become a\nbacker](https://opencollective.com/nerves-project#backer)]\n\n\u003ca href=\"https://opencollective.com/nerves-project#backers\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/nerves-project/backers.svg?width=890\"\u003e\u003c/a\u003e\n\n## OpenCollective Sponsors\n\nSupport this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/nerves-project#sponsor)]\n\n\u003ca href=\"https://opencollective.com/nerves-project/sponsor/0/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/nerves-project/sponsor/0/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/nerves-project/sponsor/1/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/nerves-project/sponsor/1/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/nerves-project/sponsor/2/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/nerves-project/sponsor/2/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/nerves-project/sponsor/3/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/nerves-project/sponsor/3/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/nerves-project/sponsor/4/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/nerves-project/sponsor/4/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/nerves-project/sponsor/5/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/nerves-project/sponsor/5/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/nerves-project/sponsor/6/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/nerves-project/sponsor/6/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/nerves-project/sponsor/7/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/nerves-project/sponsor/7/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/nerves-project/sponsor/8/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/nerves-project/sponsor/8/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/nerves-project/sponsor/9/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/nerves-project/sponsor/9/avatar.svg\"\u003e\u003c/a\u003e\n\nCopyright (C) 2015-2021 by the Nerves Project developers \u003cnerves@nerves-project.org\u003e\n","funding_links":["https://opencollective.com/nerves-project"],"categories":["Hardware","Elixir","Example Projects","Nerves"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnerves-project%2Fnerves","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnerves-project%2Fnerves","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnerves-project%2Fnerves/lists"}