S.N.A.P - Scaleable Node Address Protocol

  Simple - Generic - Flexible - Free

210122 - Due to new home for the S.N.A.P page the webforms are currently disabled but will be back soon!

What is it?

S.N.A.P was originally developed for the (now obsolete) PLM-24 Power Line based home automation system. Back then (1998) after researching lots of other binary as well as text based protocols - there are tons of both - we did not find any that suited our needs so we decided to make our own using KISS (Keep it Simple, Stupid) as our mantra.

The result was S.N.A.P - a free, open sensor and control network protocol that was as simple, generic and flexible we could make it and at the same time require minimal hardware and software resources as possible. We have used it on various 8-128 pins MCU's, Linux SBC's like the popular Raspberry Pi, BeagleBone and C.H.I.P all the way up to PC's running Windows and Linux.

What can it be used for?

S.N.A.P can be used for any type of applications where a lightweight network protocol is needed. It is well suited for education about network protocol basics or any control and automation projects like sensor systems, Home Automation and the now booming Internet of Things (IoT) sector. All these often uses resource limited MCU's and may also use different media like RF, PLC, IR, cable etc. and usually they also have limited bandwidth available for sending and receiving data.

Over the years hundreds of schools, hardware hackers, DIY'ers and companies from around the globe have registered their own Vendor ID - it's 100% free - you can see a list of current Vendor ID's here. If you wan't your own VID for using the S.N.A.P protocol commercially or just to show your support you can find more information here.


- Easy to learn, use and implement.
- Free and open network protocol.
- Free development tools available.
- Scaleable binary protocol with small overhead.
- Requires minimal HW and SW resources to implement.
- Up to 16.7 million node addresses.
- Up to 24 protocol specific flags.
- Optional ACK/NAK request.
- Optional command mode.
- 8 different error detecting methods (Checksum, CRC, FEC etc.).
- Can be used in master/slave and/or peer-to-peer.
- Supports broadcast messages.
- Media independent (cable, RF, RS-485/422, PLC, IR, Coax, Inter IC etc.).
- Can be used with simplex, half- or full-duplex links.
- Can be used with synchronous or asynchronous communication.
- Protocol header is scaleable from 3-12 bytes.
- User specified number of preamble bytes (0-n).

Protocol documentation.

Download the S.N.A.P protocol documentation below.

- S.N.A.P Network Protocol - Ver. 1.00

- SNAPSCII Network Protocol - Ver. 0.94 [Draft]

Utilities and development tools.

S.N.A.P Lab
S.N.A.P Test
S.N.A.P Protocol DLL with Source Code
S.N.A.P Linux Shared Library with Source Code
S.N.A.P TCP/IP for PalmPilot
S.N.A.P Serial for PalmPilot

S.N.A.P related links.

FAQ - Frequently Asked Questions
View S.N.A.P vendor list
Get your own S.N.A.P Vendor ID#
S.N.A.P DLL bug report 
S.N.A.P Linux library bug report
EasyTap.com - Connecting Things
ZachTek.com - RF WSPR products
Carl Walkers S.N.A.P - Linux home page
RepRap Desktop 3D Printer

Arduino Library. 

PHaroZ made an generic Arduino library available. You can find his GitHub page here or download the library below.

Alexandre Giard made a Arduino library available. You can find his GitHub page here or download the library below.

Phyton module. 

Stefan Blanke made a Python module available...You can download the module below.

User supplied source code examples.

Below are code/libraries submitted by S.N.A.P users. We had some requests for Parallax Inc. Propeller examples so if you have any code you would like to share with others feel free to E-mail us and we will add it to the list and link to your web site. Among the examples are a few for the free version of BASCOM-AVR compiler (4 KB limit) by MCS Electronics and there are free development tools available for the assembler, C and Arduino examples.

All credits and copyright goes to the original author of respectively example/library.

Filename Author Description
Mike Eitel AVR example using a 90S8515 and STK200 development kit
Claus Kuehnel BASCOM-AVR example turning simple LED ON/OFF
Claus Kuehnel BASCOM-AVR example displays S.N.A.P packets on LCD
Emiliano Castricini Implement S.N.A.P in PIC assembler includes Windows 9x utility
Göran Nordahl S.N.A.P AVR assembler example for Atmel AT90Sxxxx
Göran Nordahl Interrupt driven node that implements S.N.A.P in AVR-assembler
Göran Nordahl S.N.A.P AVR assembler example for Atmel AT90Sxxxx
Göran Nordahl S.N.A.P AVR assembler example for Atmel AT90Sxxxx
Frits Senders C-header file for SNAP.DLL 1.10
Colin O'Flynn Source code and PCB to S.N.A.P article in Circuit Cellar #139
Colin O'Flynn CHKSUM, CRC8 and CRC16 routines in AVR-GCC
Carl Walker Linux C++ S.N.A.P Classes and example code
Stefan Blanke Python module for S.N.A.P protocol
Alexandre Giard Arduino library for S.N.A.P protocol made by Alexandre Giard
arduino-snap.zip PHaroZ Arduino library for S.N.A.P protocol made by PHaroZ
- - Feel free to share anything you may have...

Examples in BASIC.

Yes, most of the examples are dated and made for the now obsolete PLM-24 Power Line Modem but technically it was just a half-duplex link and can be replaced by a regular serial or RF link to get the examples up and running. We still think they are usable to give a basic - no pun intended - understanding  and show how to implement a subset of the S.N.A.P protocol in tiny microcontrollers.

In the mid 90's the BASIC Stamp by Parallax Inc. was very popular - kind of the "Arduino of the 90's". BASIC Stamps are still available and used by many electronic hobbyists among others. There are also a PIC BASIC Compiler made by microEngineering Labs. You can download the free Student Edition if you wan't to try out the examples below. Another option is PICAXE by Revolution Education Ltd, even if it's not 100% compatible with the examples below they are easy to adapt.

Examples includes a simple schematic and the code is well documented so it should give an easy start even if you don't have any direct experience with BASIC and intend to use another programming language like C, C++, Pascal, Python etc. We kept it as simple as possible so there are room for much improvements.

Filename MCU Ver. Description
SNAP-001.ZIP BS1-IC 1.02 Turn a LED on and off
SNAP-002.ZIP BS1-IC 1.02 Lamp dimmer node for PLM-24
SNAP-003.ZIP BS1-IC 1.02 Domestic AC current meter with PLM-24
SNAP-004.ZIP BS1-IC 1.02 Simple temperature node for PLM-24
SNAP-005.ZIP BS1-IC 1.02 Simple light measuring node for PLM-24
SNAP-006.ZIP BS1-IC 1.02 Air quality node for PLM-24
SNAP-007.ZIP BS1-IC 1.02 Simple humidity node for PLM-24
SNAP-008.ZIP BS1-IC 1.02 Simple 4-bit input node for PLM-24
SNAP-009.ZIP BS1-IC 1.02 WakeUp alarm node for PLM-24
SNAP-010.ZIP BS1-IC 1.02 Four channel plant moisture sensor I
SNAP-011.ZIP BS2-IC 1.02 Turn a LED on and off
SNAP-012.ZIP BS2-IC 1.02 Shows how to implement background tasks
SNAP-013.ZIP BS2-IC 1.02 PLM-24 to X-10 Gateway
SNAP-014.ZIP BS2-IC 1.02 8-bit parallel input node for PLM-24
SNAP-015.ZIP BS2-IC WIP Programmable light monitor node for PLM-24
SNAP-016.ZIP 89C2051 1.02 Turn a LED on and off
SNAP-017.ZIP BS2-IC 1.02 IR detector alarm node for PLM-24
SNAP-018.ZIP BS2-IC 1.02 Four channel relay node with local control
SNAP-019.ZIP BS2-IC 1.02 1-8 zones security system node for PLM-24
SNAP-020.ZIP BS2-IC WIP DCF-77 atomic clock node for PLM-24
SNAP-021.ZIP BS2-IC 1.02 Fire alarm node for PLM-24
SNAP-022.ZIP BS1-IC 1.02 1-channel 8-bit A/D converter node
SNAP-023.ZIP 89C2051 1.02 Simple 16 x 1 LCD terminal node for PLM-24
SNAP-024.ZIP 89C2051 1.02 Simple 16 x 1 LCD info node for PLM-24
SNAP-025.ZIP 89C2051 1.02 S.N.A.P packet spy node for PLM-24
SNAP-026.ZIP BS2-IC 1.00 Test program for S.N.A.P Serial for PalmPilot
- - - Feel free to share anything you may have...

Public forum?

Are there a need for it? If there is enough interest we will see what can be done... Let us know if a forum would be prefered over a mailing list. Maybe someone knows an existing hacker forum willing to open up a S.N.A.P section? 

EasyTap.com - Connecting Things!

ZachTek.com - RF WSPR products.

We welcome your feedback and suggestions (even if it may take a while before we are able to respond) and what we love most is to hear about what projects - big or small - you used S.N.A.P for.

Copyright © 1998-2021 by HTH All rights reserved. PLM-24 and S.N.A.P are trademarks of HTH. Other brands and product names are trademarks or registered trademarks of their respective holders.

Updated 210122 and accessed times