{"id":20857085,"url":"https://github.com/nrf24/rf24ethernet","last_synced_at":"2026-04-02T00:56:48.844Z","repository":{"id":23523689,"uuid":"26890068","full_name":"nRF24/RF24Ethernet","owner":"nRF24","description":"OSI Layers 4\u00265 Wireless (not WiFi) TCP/IP networking on Arduino devices using nrf24l01+ \u0026 nrf52x radios","archived":false,"fork":false,"pushed_at":"2024-10-06T13:35:29.000Z","size":2267,"stargazers_count":122,"open_issues_count":3,"forks_count":52,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-03-29T05:05:00.130Z","etag":null,"topics":["arduino-library","c-plus-plus","ethernet","nrf24l01","rf24","uip"],"latest_commit_sha":null,"homepage":"http://nrf24.github.io/RF24Ethernet","language":"C","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/nRF24.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":null,"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}},"created_at":"2014-11-20T01:28:21.000Z","updated_at":"2025-01-30T16:31:18.000Z","dependencies_parsed_at":"2023-02-12T19:00:27.371Z","dependency_job_id":"9e531eb0-2ad8-45ea-905a-31a680897bc9","html_url":"https://github.com/nRF24/RF24Ethernet","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nRF24%2FRF24Ethernet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nRF24%2FRF24Ethernet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nRF24%2FRF24Ethernet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nRF24%2FRF24Ethernet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nRF24","download_url":"https://codeload.github.com/nRF24/RF24Ethernet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247294538,"owners_count":20915340,"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":["arduino-library","c-plus-plus","ethernet","nrf24l01","rf24","uip"],"created_at":"2024-11-18T04:36:03.307Z","updated_at":"2026-04-02T00:56:48.832Z","avatar_url":"https://github.com/nRF24.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ethernet and TCP/IP Networking for RF24Network\n\n[![Arduino CLI build](https://github.com/nRF24/RF24Ethernet/actions/workflows/build_arduino.yml/badge.svg)](https://github.com/nRF24/RF24Ethernet/actions/workflows/build_arduino.yml)\n[![PlatformIO build](https://github.com/nRF24/RF24Ethernet/actions/workflows/build_platformIO.yml/badge.svg)](https://github.com/nRF24/RF24Ethernet/actions/workflows/build_platformIO.yml)\n\n## Easily create home automation scenarios and sensor networks\n\n### Updated 2026:\n\nRF24Ethernet now supports the lwIP stack!\n\nFaster devices (\u003e50mHz) will automatically use the lwIP stack instead of the uIP stack, providing a better, faster and more reliable way to connect.\n\nTo define manually, define USE_LWIP 1 or edit the RF24Ethernet.h file and add define USE_LWIP 1\n\nRF24Ethernet requires the RF24, RF24Network and RF24Mesh libraries\n\nDocumentation \u0026 Setup Info: http://nRF24.github.io/RF24Ethernet\n\nDownloads: http://tmrh20.github.io/\n\nNote: Recent changes to support NRF5x boards prevent usage of RF24 devices with NRF5x boards. Users must use the internal radio with RF24Ethernet.\nSee the [nrf_to_nrf Arduino library](https://github.com/TMRh20/nrf_to_nrf).\n\n### RF24 communication stack general usage\n\n![docs/images/EthernetMermaidDiagram.svg](docs/images/EthernetMermaidDiagram.svg){width=70% height=70%}\n\n### RF24 communication stack vs. OSI Model Mapping\n\nThis table illustrates how the RF24 ecosystem aligns with the standard OSI (Open Systems Interconnection) model, highlighting the role of **RF24Ethernet** as the primary bridge to standard internet protocols.\n\n| OSI Layer | RF24 Component | C++ Header | Primary Function | Real-World Equivalent |\n| :--- | :--- | :--- | :--- | :--- |\n| **7. Application** | User Sketch / RF24Mesh | `RF24Mesh.h` | Data generation \u0026 node ID management | HTTP, MQTT, DHCP |\n| **6. Presentation**| **nrf_to_nrf (CCM)** | `nrf_to_nrf.h` | **Hardware AES-CCM Encryption/Auth** | TLS, AES-GCM, IPsec |\n| **5. Session** | **RF24Ethernet (lwIP / uIP)** | `RF24Ethernet.h` | **Socket state \u0026 connection management** | BSD Sockets, NetBIOS |\n| **4. Transport** | **RF24Ethernet (lwIP / uIP)** | `lwip/tcp.h` or `uip.h` | **TCP/UDP transport \u0026 flow control** | TCP, UDP |\n| **3. Network** | RF24Network | `RF24Network.h` | Octal routing \u0026 IP-over-RF24 encapsulation | IPv4, IPv6, ICMP |\n| **2. Data Link** | **nrf_to_nrf** / RF24 Core | `RF24.h` or `nrf_to_nrf.h` | **MAC (Pipes), Auto-ACK, \u0026 Framing** | Ethernet (MAC), 802.11 |\n| **1. Physical** | nRF24L01+ / nRF52 | **SPI Hardware** | 2.4GHz GFSK Radio Frequency | Fiber, Copper, WiFi PHY |\n\n### Key Implementation Details\n\n*   **Secure Lower Layers:** When using **nrf_to_nrf**, the stack can utilize the nRF52 hardware **CCM module** to provide **Authenticated Encryption (AES-CCM)**. This ensures data privacy (Layer 6) and packet integrity (Layer 2) with near-zero CPU overhead.\n*   **The IP Bridge:** **RF24Ethernet** acts as the \"Network Interface Card\" (NIC) driver, allowing standard IP stacks (**uIP** for memory-constrained AVR or **lwIP** for high-performance ARM/ESP32) to run over the radio mesh.\n*   **Modernization:** **nrf_to_nrf** serves as a modernized, high-efficiency replacement for the legacy RF24 core library, specifically optimized for integrated nRF52 radio hardware.\n\n## Licenses\n--------------\nIF USING the lwIP STACK:\n--------------\n\nRF24Ethernet.h, RF24Ethernet.cpp, RF24Server.h, RF24Server.cpp, RF24Client.h, RF24Client.cpp, RF24Udp.h, RF24Udp.cpp\n\nCopyright (c) 2025 tmrh20@gmail.com, github.com/TMRh20\nAll rights reserved.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n\nDns.h \u0026 Dns.cpp:\n(c) Copyright 2009-2010 MCQN Ltd.\nReleased under Apache License, version 2.0\n\n--------------\n\nIF USING THE uIP STACK:\n\nLicenses include, but are not limited to the following.\n-------------\n\nRF24Ethernet.h, RF24Ethernet.cpp, RF24Server.h, RF24Server.cpp, RF24Client.h, RF24Client.cpp, RF24Udp.h, RF24Udp.cpp, utility/mempool.h, utility/mempool.cpp\n\nCopyright (c) 2014 tmrh20@gmail.com, github.com/TMRh20\nCopyright (c) 2013 Norbert Truchsess \u003cnorbert.truchsess@t-online.de\u003e\nAll rights reserved.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n\n--------------\n\nutility/uip.c, utility/uip_arp.h, utility/uip_arp.c, utility/uip_arch.h, utility/uip.h, utility/uipopt.h\n\nCopyright (c) 2001-2003, Adam Dunkels \u003cadam@sics.se\u003e, \u003cadam@dunkels.com\u003e.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n1. Redistributions of source code must retain the above copyright\n   notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n   notice, this list of conditions and the following disclaimer in the\n   documentation and/or other materials provided with the distribution.\n3. Neither the name of the Institute nor the names of its contributors\n   may be used to endorse or promote products derived from this software\n   without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\nOR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\nHOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\nLIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\nOUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGE.\n\n--------------\n\nuip-conf.h, utility/uip-neighbor.h, utility/uip-neighbor.c, utility/uip_timer.h, utility/uip_timer.c, utility/uip_clock.h\n\nAuthor Adam Dunkels Adam Dunkels \u003cadam@sics.se\u003e, \u003cadam@dunkels.com\u003e\nCopyright (c) 2004,2006, Swedish Institute of Computer Science.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n1. Redistributions of source code must retain the above copyright\n   notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n   notice, this list of conditions and the following disclaimer in the\n   documentation and/or other materials provided with the distribution.\n3. Neither the name of the Institute nor the names of its contributors\n   may be used to endorse or promote products derived from this software\n   without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\nOR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\nHOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\nLIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\nOUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGE.\n\n--------------\n\nDhcp.h, Dhcp.cpp\n\nDHCP Library v0.3 - April 25, 2009\nAuthor: Jordan Terrell - blog.jordanterrell.com\n- as included in Arduinos stock Ethernet-library, no special licence mentioned here\n\n--------------\n\nDns.h, Dns.cpp\n\n(c) Copyright 2009-2010 MCQN Ltd.\nReleased under Apache License, version 2.0\n\n--------------\n\nclock-arch.h, clock-arch.c\n\nCopyright (c) 2010 Adam Nielsen \u003cmalvineous@shikadi.net\u003e\nAll rights reserved.\n\nThis library is free software; you can redistribute it and/or\nmodify it under the terms of the GNU Lesser General Public\nLicense as published by the Free Software Foundation; either\nversion 2.1 of the License, or (at your option) any later version.\n\nThis library is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\nLesser General Public License for more details.\n\nYou should have received a copy of the GNU Lesser General Public\nLicense along with this library; if not, write to the Free Software\nFoundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnrf24%2Frf24ethernet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnrf24%2Frf24ethernet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnrf24%2Frf24ethernet/lists"}