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

  Simple - Generic - Flexible - Free

What is it?

S.N.A.P is a free and open network protocol. The protocol 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 and open sensor and control network protocol that is as simple, generic and flexible we could make it and at the same time require very little hardware and software resources. We have used it on 8-128 pins MCU's, Linux SBC's like the popular Raspberry Pi and Beagle Bone and all the way up to PC's running Windows and Linux.

What can it be used for?

S.N.A.P can be used in any type of application where a light weighted network protocol is needed. It is well suited for education about network protocol basics or any project or product for control and automation like sensor systems, Home Automation and the now booming IoT sector. All these often uses resource limited MCU's, maybe different media like cable, RF, PLM etc. and usually also have limited bandwidth 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 the Vendor ID list here. If you wan't your own VID for using the S.N.A.P protocol commercially or just to show your support go 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 (TP 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
S.N.A.P Linux Shared Library
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 - Distributed Computing on a Shoestring Budget
Carl Walkers S.N.A.P - Linux home page
RepRap Desktop 3D Printer

User and community supplied examples.

Below are code submitted by S.N.A.P users. We had some requests for Arduino and Propeller examples so if you have any code that you would like to share with others feel free to E-mail them to us and we will add it to the list. Among the examples are a few for the demo version of BASCOM-AVR compiler (4 KB limit) by MCS Electronics and there are free development tools for the other assembler and C examples as well.

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

Filename Author Description
SNAPAVR.ZIP Mike Eitel AVR example using a 90S8515 and STK200 development kit
SNAP-IO.ZIP Claus Kuehnel BASCOM-AVR example turning simple LED ON/OFF
SNAP-MON.ZIP Claus Kuehnel BASCOM-AVR example displays S.N.A.P packets on LCD
PICTOOLS.ZIP Emiliano Castricini Implement S.N.A.P in PIC assembler includes Windows 9x utility
AVRSNAP01.ZIP Göran Nordahl S.N.A.P AVR assembler example for Atmel AT90Sxxxx
AVRSNAP02.ZIP Göran Nordahl Interrupt driven node that implements S.N.A.P in AVR-assembler
AVRSNAP03.ZIP Göran Nordahl S.N.A.P AVR assembler example for Atmel AT90Sxxxx
AVRSNAP04.ZIP Göran Nordahl S.N.A.P AVR assembler example for Atmel AT90Sxxxx
C-HEADER.ZIP Frits Senders C-header file for SNAP.DLL 1.10
CC139.ZIP Colin O'Flynn Source code and PCB to S.N.A.P article in Circuit Cellar #139
GCC01.ZIP Colin O'Flynn CHKSUM, CRC8 and CRC16 routines in AVR-GCC
c++_snap.tar.gz Carl Walker Linux C++ S.N.A.P Classes and example code
snap_python.zip Stefan Blanke Python module for S.N.A.P protocol
- - 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 understanding  and show how to implement a subset of the S.N.A.P  protocol in a tiny MCU.

In the 90's the BASIC Stamp by Parallax was very popular - kind of the "Arduino of the 90's". BASIC Stamps are still available and used by many electronic hobbyists etc. There are also a PIC BASIC Compiler made by microEngineering Labs, see their website for the free Student Edition. Another option is PICAXE by Revolution Education Ltd, even if it's not 100% compatible with the examples 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 web 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? 

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 and products S.N.A.P are used for - send us an E-mail.

EasyTap.com - Site under Construction!

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 and products S.N.A.P are used for - send us an E-mail.

Copyright © 1998-2016 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 160528 and accessed times - webmaster@hth.com