Contiki-NG is an operating system for resource-constrained devices in the Internet of Things. Contiki-NG contains an RFC-compliant, low-power IPv6 communication stack, enabling Internet connectivity. The system runs on a variety of platforms based on energy-efficient architectures such as the ARM Cortex-M3/M4 and the Texas Instruments MSP430. The code footprint is on the order of a 100 kB, and the memory usage can be configured to be as low as 10 kB. The source code is available as open source with a 3-clause BSD license.
Online presence:
- GitHub repository: https://github.com/contiki-ng/contiki-ng
- Documentation: https://contiki-ng.readthedocs.io/en/develop/
- Gitter: https://gitter.im/contiki-ng
- Contiki-NG tag on Stack Overflow: https://stackoverflow.com/questions/tagged/contiki-ng
- Twitter: https://twitter.com/contiki_ng
- Web site: http://contiki-ng.org
- Nightly testbed runs: https://contiki-ng.github.io/testbed
Also feel free to download our cheat sheet!
- Docker image
- Vagrant image
- Native toolchain installation (Linux)
- Native toolchain installation (macOS)
- NAT64 setup
- The Contiki-NG build system
- The Contiki-NG configuration system
- The Contiki-NG logging system
- Repository structure
- Multitasking and scheduling
- Processes and events
- Synchronization primitives
- Timers
- Memory management
- Packet buffers
- Energy monitoring with Energest
- UDP communication
- IPv6-less networking with NullNet
- A guide on porting Contiki-NG to new platforms
- API Documentation
- IPv6 networking stack
- IPv6 multicast
- The RPL routing protocol
- CoAP and CoAPs
- OMA LWM2M
- TSCH and 6TiSCH
- 6TiSCH 6top sublayer
- 6TiSCH scheduler Orchestra
- IPv6 over BLE with BLEach
- Communication security
- SNMP
- cc2538dk: TI cc2538 development kit
- cc26x0-cc13x0: TI cc26x0 and cc13x0 platforms
- cooja: Cooja native motes platform
- Gecko: Silicon Labs MCU Platform
- native: Contiki-NG as a native process
- nrf52840: Nordic Semiconductor nRF52840
- nrf: Nordic Semiconductor nRF5340 and nRF52840 (using nRF MDK)
- openmote: OpenMote-CC2538 and OpenMote-B
- simplelink: TI SimpleLink MCU Platform
- sky: Tmote Sky / TelosB
- zoul: Zolertia Zoul platforms: Firefly, RE-mote and Orion
Basics:
- Hello, World!
- Logging
- RAM and ROM usage
- NG shell
- Timers and events
- Simple energy usage estimation
- Custom Energest application
Networking:
- CoAP
- IPv6 ping
- RPL basics
- RPL with border router
- LWM2M, IPSO objects, and NAT64
- LWM2M Queue Mode
- MQTT
- Switching from CSMA to TSCH
- TSCH and 6TiSCH
Simulation:
- Cooja: getting started
- Cooja: simulating a RPL network
- Cooja: simulating a RPL network with a border router
- Running Contiki-NG in Renode
- Organization
- Contributing
- Code style
- Development cycle
- Releases
- Roadmap
- Issue and PR labels
- Where to report issues, ask questions, etc.?
- Logo
If you are publishing academic work and you wish to cite Contiki-NG, here is how to do so:
Text:
George Oikonomou, Simon Duquennoy, Atis Elsts, Joakim Eriksson, Yasuyuki Tanaka, Nicolas Tsiftes, "The Contiki-NG open source operating system for next generation IoT devices", SoftwareX, 18, 2022, https://doi.org/10.1016/j.softx.2022.101089.
BibTeX:
@article{Contiki-NG,
title = {The {Contiki-NG} open source operating system for next generation {IoT} devices},
author = {George Oikonomou and Simon Duquennoy and Atis Elsts and Joakim Eriksson and Yasuyuki Tanaka and Nicolas Tsiftes},
journal = {SoftwareX},
volume = {18},
pages = {101089},
year = {2022},
issn = {2352-7110},
doi = {https://doi.org/10.1016/j.softx.2022.101089},
keywords = {Contiki-NG, Internet of Things, Resource-Constrained Devices},
}