Internet 0

From Fab Lab Bcn WIKI
Revision as of 02:21, 20 January 2017 by Ujang (Talk | contribs)

Jump to: navigation, search

i0 seven principles

The Scientific American article Krikorian co-authored (cited in “References”) describes seven principles that define Internet-0.

  • Each Internet-0 device uses the Internet Protocol.
  • “Implementing the communications protocols jointly rather than separately” simplifies software.
  • Two Internet-0 devices “do not require the existence of a third one in order to operate”.
  • Each Internet-0 device “is responsible for keeping track of its own identity”.
  • “The use of big bits allows the data that make up a packet to be represented in the same way no mater what physical medium conveys them.”
  • Internet-0 uses open standards.


The design intent is to provide a simple, very inexpensive system that can transmit data slowly over many types of media, and yet still connect devices to the internet. Connecting to the internet is a crucial part of the design, because much of the value of a networked device is provided by easy, wide access to it. The higher layers of an Internet 0 network are usually SLIP, IP, and above that, usually UDP or more rarely TCP.

The protocol layers are chosen to need a minimum of code, to keep the expense of the computer low. Internet 0 has been implemented in small AVR microcontrollers. In most existing implementations, the layers are not distinct, because small code is more important than elegant design.

A small translation device normally attaches a local network of Internet 0 devices to the serial port of a PC that acts as a gateway and firewall to the Internet.

Devices can talk directly to each other without requiring a server. The distributed architecture ensures that there is no central point of failure.

Address assignment and cryptographic key intialization is sometimes performed by closing a contact on the device while having a master controller broadcast an assignment message. Security is via a simplified encryption system.


Internet 0 is similar to a serial port running at 9600 BAUD except it sends data by pulse-position modulation, and accepts up to 30% timing deviations.

A zero bit is a pulse in the center of the first half of a bit time, and a one is a pulse in the second half of a bit time. Data is sent as 8 bit bytes. A byte is preceded by a bit time that has two pulses (at both 1 and 0 times), and ends with a bit time that has another two pulses.

In some variations, the stop bit-time is optional, and the dual-pulse bit times are treated as byte separators.

The dual-pulse start and stop bit times permit a receiver to synchronize with the beginnings of bytes, and also measure the baud rate of a sender. Synchronizing on 8-bit bytes permits a 9600-baud internet-0 connection to easily translate to a standard, low-speed 19,200 BAUD TCP/IP serial port. The baud rate measurement permits senders and receivers to use inexpensive low-precision oscillators such as ceramic resonators or resistor-capacitor oscillators.

The most common interface uses the power supply wiring to the device. The circuit is a small surface mounted capacitor between an AC mains wire or a DC power wire and a single digital pin of a small microcontroller. The pulses are normally generated by having software toggle a digital I/O pin on the microcontroller. They are received through another capacitor, by a microcontroller with a pin configured as an interrupt, or as a hardware timer's gate.

The pulse position modulation works in many media. Internet 0 has been tested over RF, IR, ultrasonics, optical, DC and AC power wiring, and even physical representations such as printed bar codes and engraving on a key.

Fab Academy Related Projects

Helpful links

External links