<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://sigrok.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jst</id>
	<title>sigrok - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://sigrok.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jst"/>
	<link rel="alternate" type="text/html" href="https://sigrok.org/wiki/Special:Contributions/Jst"/>
	<updated>2026-05-17T17:47:48Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10681</id>
		<title>Protocol decoder:Esp8266</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10681"/>
		<updated>2015-03-20T22:42:35Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = esp8266&lt;br /&gt;
| name            = ESP8266&lt;br /&gt;
| description     = WiFi Serial Transceiver.&lt;br /&gt;
| status          = stalled&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = &lt;br /&gt;
| image           = [[File:ESP8266_closeup.jpg|250px]]&lt;br /&gt;
| input           = uart&lt;br /&gt;
| output          = esp8266&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;esp8266&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the UART command protocol spoken by modules equipped with an [https://espressif.com/en/products/esp8266/ ESP8266] WiFi transceiver chip.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
Because of various problems with the UART commands&lt;br /&gt;
(random lockups, no escaping of special characters, responses of multiple commands mixing up, ...),&lt;br /&gt;
the work on this decoder has stopped.&lt;br /&gt;
If you own such a chip, you are probably better off by directly reprogramming it&amp;#039;s CPU,&lt;br /&gt;
[http://hackaday.com/2015/03/18/how-to-directly-program-an-inexpensive-esp8266-wifi-module/ this article]&lt;br /&gt;
provides a good starting point.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The ESP8266 chip contains an [http://ip.cadence.com/ipportfolio/tensilica-ip/xtensa-customizable Xtensa] LX106 CPU and a radio for IEEE 802.11b/g/n.&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
&lt;br /&gt;
Various online marketplaces sell modules containing the ESP8266 (and a few assisting components) that comes preprogrammed with a TCP/IP stack that can be controlled with commands send via RS232. There seem to be eleven different types of modules around, called &amp;quot;ESP-01&amp;quot; to &amp;quot;ESP-11&amp;quot; (see [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28&amp;amp;start=20#p1761 this post]).&lt;br /&gt;
&lt;br /&gt;
* ESP-01&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connector: 2x4pin male 2.54mm header&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
| style=&amp;quot;width: 300px&amp;quot; |&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Connector pinout&lt;br /&gt;
  |-&lt;br /&gt;
    ! Function&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 1 &lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 3&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 5&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | VCC&lt;br /&gt;
    | 7&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
  &amp;lt;small&amp;gt;(Note: The PCB has two square pads at the pin header, so it&amp;#039;s not clear which one should be pin number 1. The table above assumes that the module is oriented as shown in the picture from the top, with the antenna on the right side, pin 1 is then in the top left corner and pin 8 next to the SPI flash chip.)&amp;lt;/small&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding-left: 30px&amp;quot; |&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-01.jpg|&amp;lt;small&amp;gt;ESP-01, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  File:ESP-01_flash.jpg|&amp;lt;small&amp;gt;[http://www.gigadevice.com/product/detail/5/119.html GigaDevice GD25Q40B] 4Mbit SPI flash&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-02&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 4 pin castellated holes on both sides (2.54 distance)&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of left connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | VCC&lt;br /&gt;
  |}&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of right connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding-left: 30px&amp;quot; |&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-02.jpg|&amp;lt;small&amp;gt;ESP-02, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-03&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 7 pin castellated holes on both sides (2mm distance)&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of left connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | VCC&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|9}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|10}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|12}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|13}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of right connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|2}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|8}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | n.c.&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | GND&lt;br /&gt;
  |}&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding-left: 30px&amp;quot; |&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-03.jpg|&amp;lt;small&amp;gt;ESP-03, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-04&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 7 pin castellated holes on both sides (2mm distance), same pinout as ESP-03&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-04.jpg|&amp;lt;small&amp;gt;ESP-04, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-05&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 1x5pin pads (2.54mm distance), U.FL antenna connector&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Connector pinout&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | VCC&lt;br /&gt;
  |}&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding-left: 30px&amp;quot; |&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-05.jpg|&amp;lt;small&amp;gt;ESP-05, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.esp8266.com ESP8266 Community Forum]&lt;br /&gt;
** [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28 Module overview]&lt;br /&gt;
* [https://nurdspace.nl/ESP8266 Translation of the chinese datasheet]&lt;br /&gt;
* [https://github.com/esp8266/esp8266-wiki/wiki/Pin-definition ESP8266 pinout]&lt;br /&gt;
* [http://zeptobars.ru/en/read/Espressif-ESP8266-wifi-serial-rs232-ESP8089-IoT Die shots of the chip]&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocol decoder]]&lt;br /&gt;
[[Category:UART]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder_HOWTO&amp;diff=10675</id>
		<title>Protocol decoder HOWTO</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder_HOWTO&amp;diff=10675"/>
		<updated>2015-03-17T02:37:52Z</updated>

		<summary type="html">&lt;p&gt;Jst: add anchor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page serves as a quick-start guide for people who want to write their own [[libsigrokdecode]] protocol decoders ([[Protocol decoders|PDs]]).&lt;br /&gt;
&lt;br /&gt;
It is &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; intended to replace the [[Protocol decoder API]] page, but rather to give a short overview/tutorial and some tips.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Protocol decoders are written entirely in Python (&amp;gt;= 3.0).&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
&lt;br /&gt;
Every protocol decoder is a Python module and has its own subdirectory in libsigrokdecode&amp;#039;s &amp;#039;&amp;#039;&amp;#039;[http://sigrok.org/gitweb/?p=libsigrokdecode.git;a=tree;f=decoders decoders]&amp;#039;&amp;#039;&amp;#039; directory.&lt;br /&gt;
&lt;br /&gt;
This is a minimalistic example of how a protocol decoder looks like, in this case the &amp;#039;&amp;#039;&amp;#039;[[Protocol_decoder:I2c|i2c]]&amp;#039;&amp;#039;&amp;#039; decoder (license header, comments, and some other parts omitted).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note&amp;#039;&amp;#039;&amp;#039;: Do not start new protocol decoders by copying code from here. Instead, it&amp;#039;s recommended to select an already existing decoder in the source code which is similar to the one you plan to write, and copy that as a starting point.&lt;br /&gt;
&lt;br /&gt;
=== __init__.py ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 I²C (Inter-Integrated Circuit) is a bidirectional, multi-master&lt;br /&gt;
 bus using two signals (SCL = serial clock line, SDA = serial data line).&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;Insert notes and hints for the user here&amp;gt;&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
 from .pd import Decoder&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a standard Python file, required in every Python module. It contains a module-level docstring, which is accessible by frontends via the [http://sigrok.org/api/libsigrokdecode/unstable/index.html libsigrokdecode API]. It should contain a (very) short description of what the protocol (in this case [[Protocol_decoder:I2c|I²C]]) is about, and some notes and hints for the user of this protocol decoder (which can be shown in GUIs when the user selects/browses different PDs).&lt;br /&gt;
&lt;br /&gt;
This docstring should &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; contain the full, extensive protocol description. Instead, the per-PD wiki page should be used for protocol description, photos of devices or photos of example acquisition setups, and so on. Each decoder has one unique wiki page at the URL &amp;#039;&amp;#039;&amp;#039;&amp;lt;nowiki&amp;gt;http://sigrok.org/wiki/Protocol_decoder:&amp;lt;pd&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;#039;&amp;#039;&amp;#039;, where &amp;#039;&amp;#039;&amp;#039;&amp;lt;pd&amp;gt;&amp;#039;&amp;#039;&amp;#039; is the Python module name of the decoder (&amp;#039;&amp;#039;&amp;#039;i2c&amp;#039;&amp;#039;&amp;#039; in this case). Some examples for such per-PD wiki pages: [[Protocol_decoder:Uart|UART]], [[Protocol_decoder:Pan1321|PAN1321]], [[Protocol_decoder:Mx25lxx05d|MX25Lxx05D]], [[Protocol_decoder:Dcf77|DCF77]].&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;&amp;#039;&amp;#039;&amp;#039;from .pd import Decoder&amp;#039;&amp;#039;&amp;#039;&amp;quot; line will make sure the code from &amp;#039;&amp;#039;&amp;#039;pd.py&amp;#039;&amp;#039;&amp;#039; gets properly imported when this module is used.&lt;br /&gt;
&lt;br /&gt;
=== pd.py ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 import sigrokdecode as srd&lt;br /&gt;
 &lt;br /&gt;
 class Decoder(srd.Decoder):&lt;br /&gt;
     api_version = 2&lt;br /&gt;
     id = &amp;#039;i2c&amp;#039;&lt;br /&gt;
     name = &amp;#039;I²C&amp;#039;&lt;br /&gt;
     longname = &amp;#039;Inter-Integrated Circuit&amp;#039;&lt;br /&gt;
     desc = &amp;#039;Two-wire, multi-master, serial bus.&amp;#039;&lt;br /&gt;
     license = &amp;#039;gplv2+&amp;#039;&lt;br /&gt;
     inputs = [&amp;#039;logic&amp;#039;]&lt;br /&gt;
     outputs = [&amp;#039;i2c&amp;#039;]&lt;br /&gt;
     channels = (&lt;br /&gt;
         {&amp;#039;id&amp;#039;: &amp;#039;scl&amp;#039;, &amp;#039;name&amp;#039;: &amp;#039;SCL&amp;#039;, &amp;#039;desc&amp;#039;: &amp;#039;Serial clock line&amp;#039;},&lt;br /&gt;
         {&amp;#039;id&amp;#039;: &amp;#039;sda&amp;#039;, &amp;#039;name&amp;#039;: &amp;#039;SDA&amp;#039;, &amp;#039;desc&amp;#039;: &amp;#039;Serial data line&amp;#039;},&lt;br /&gt;
     )&lt;br /&gt;
     optional_channels = ()&lt;br /&gt;
     options = (&lt;br /&gt;
         {&amp;#039;id&amp;#039;: &amp;#039;address_format&amp;#039;, &amp;#039;desc&amp;#039;: &amp;#039;Displayed slave address format&amp;#039;,&lt;br /&gt;
            &amp;#039;default&amp;#039;: &amp;#039;shifted&amp;#039;, &amp;#039;values&amp;#039;: (&amp;#039;shifted&amp;#039;, &amp;#039;unshifted&amp;#039;)},&lt;br /&gt;
     )&lt;br /&gt;
     annotations = (&lt;br /&gt;
         (&amp;#039;start&amp;#039;, &amp;#039;Start condition&amp;#039;),&lt;br /&gt;
         (&amp;#039;repeat-start&amp;#039;, &amp;#039;Repeat start condition&amp;#039;),&lt;br /&gt;
         (&amp;#039;stop&amp;#039;, &amp;#039;Stop condition&amp;#039;),&lt;br /&gt;
         (&amp;#039;ack&amp;#039;, &amp;#039;ACK&amp;#039;),&lt;br /&gt;
         (&amp;#039;nack&amp;#039;, &amp;#039;NACK&amp;#039;),&lt;br /&gt;
         (&amp;#039;bit&amp;#039;, &amp;#039;Data/address bit&amp;#039;),&lt;br /&gt;
         (&amp;#039;address-read&amp;#039;, &amp;#039;Address read&amp;#039;),&lt;br /&gt;
         (&amp;#039;address-write&amp;#039;, &amp;#039;Address write&amp;#039;),&lt;br /&gt;
         (&amp;#039;data-read&amp;#039;, &amp;#039;Data read&amp;#039;),&lt;br /&gt;
         (&amp;#039;data-write&amp;#039;, &amp;#039;Data write&amp;#039;),&lt;br /&gt;
         (&amp;#039;warnings&amp;#039;, &amp;#039;Human-readable warnings&amp;#039;),&lt;br /&gt;
     )&lt;br /&gt;
     annotation_rows = (&lt;br /&gt;
         (&amp;#039;bits&amp;#039;, &amp;#039;Bits&amp;#039;, (5,)),&lt;br /&gt;
         (&amp;#039;addr-data&amp;#039;, &amp;#039;Address/Data&amp;#039;, (0, 1, 2, 3, 4, 6, 7, 8, 9)),&lt;br /&gt;
         (&amp;#039;warnings&amp;#039;, &amp;#039;Warnings&amp;#039;, (10,)),&lt;br /&gt;
     )&lt;br /&gt;
 &lt;br /&gt;
     def __init__(self, **kwargs):&lt;br /&gt;
         self.state = &amp;#039;FIND START&amp;#039;&lt;br /&gt;
         # And various other variable initializations...&lt;br /&gt;
 &lt;br /&gt;
     def metadata(self, key, value):&lt;br /&gt;
         if key == srd.SRD_CONF_SAMPLERATE:&lt;br /&gt;
             self.samplerate = value&lt;br /&gt;
 &lt;br /&gt;
     def start(self):&lt;br /&gt;
         self.out_ann = self.register(srd.OUTPUT_ANN)&lt;br /&gt;
 &lt;br /&gt;
     def decode(self, ss, es, data):&lt;br /&gt;
         for self.samplenum, (scl, sda) in data:&lt;br /&gt;
             # Decode the samples.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The recommended name for the actual decoder file is &amp;#039;&amp;#039;&amp;#039;pd.py&amp;#039;&amp;#039;&amp;#039;. This file contains some meta information about the decoder, and the actual code itself, mostly in the &amp;#039;&amp;#039;&amp;#039;decode()&amp;#039;&amp;#039;&amp;#039; method.&lt;br /&gt;
&lt;br /&gt;
If needed, large unwieldy lists or similar things can also be factored out into another *.py file (examples: [http://sigrok.org/gitweb/?p=libsigrokdecode.git;a=tree;f=decoders/midi midi], [http://sigrok.org/gitweb/?p=libsigrokdecode.git;a=tree;f=decoders/z80 z80]).&lt;br /&gt;
&lt;br /&gt;
== Copyright and license ==&lt;br /&gt;
&lt;br /&gt;
Every protocol decoder &amp;#039;&amp;#039;&amp;#039;must&amp;#039;&amp;#039;&amp;#039; come with source code in the form of &amp;#039;&amp;#039;&amp;#039;*.py&amp;#039;&amp;#039;&amp;#039; files. No pre-compiled code should be present, Python or otherwise. The PD must not use any helpers that are not provided as source code under the same license as the PD itself.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;Decoder&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; class must have a license declaration (see above), stating the license under which all the contents in the decoder&amp;#039;s directory are provided. This is usually &amp;lt;tt&amp;gt;&amp;#039;gplv2+&amp;#039;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;&amp;#039;gplv3+&amp;#039;&amp;lt;/tt&amp;gt;, whichever you prefer. In either case, the decoder license must be compatible with the [[libsigrokdecode]] license (which is &amp;quot;GPL, version 3 or later&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;tt&amp;gt;channels&amp;lt;/tt&amp;gt; &amp;amp; &amp;lt;tt&amp;gt;optional_channels&amp;lt;/tt&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The following excerpt from the [[Protocol_decoder:spi|SPI]] PD shows how to use &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;channels&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;optional_channels&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;. To decode SPI, the clock signal is always needed, the chip-select signal is optional and only used when provided. To give the user the flexibility to provide only one of the MOSI/MISO signals, they are both also defined as optional:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 class Decoder(srd.Decoder):&lt;br /&gt;
     ...&lt;br /&gt;
     id = &amp;#039;spi&amp;#039;&lt;br /&gt;
     ...&lt;br /&gt;
     channels = (&lt;br /&gt;
         {&amp;#039;id&amp;#039;: &amp;#039;clk&amp;#039;, &amp;#039;name&amp;#039;: &amp;#039;CLK&amp;#039;, &amp;#039;desc&amp;#039;: &amp;#039;Clock&amp;#039;},&lt;br /&gt;
     )&lt;br /&gt;
     optional_channels = (&lt;br /&gt;
         {&amp;#039;id&amp;#039;: &amp;#039;miso&amp;#039;, &amp;#039;name&amp;#039;: &amp;#039;MISO&amp;#039;, &amp;#039;desc&amp;#039;: &amp;#039;Master in, slave out&amp;#039;},&lt;br /&gt;
         {&amp;#039;id&amp;#039;: &amp;#039;mosi&amp;#039;, &amp;#039;name&amp;#039;: &amp;#039;MOSI&amp;#039;, &amp;#039;desc&amp;#039;: &amp;#039;Master out, slave in&amp;#039;},&lt;br /&gt;
         {&amp;#039;id&amp;#039;: &amp;#039;cs&amp;#039;, &amp;#039;name&amp;#039;: &amp;#039;CS#&amp;#039;, &amp;#039;desc&amp;#039;: &amp;#039;Chip-select&amp;#039;},&lt;br /&gt;
     )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;data&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;, the argument of the decoder&amp;#039;s [[Protocol decoder API#decode-function|&amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;decode()&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;]] function that contains the data to decode, is a list of tuples. These tuples contain the (absolute) number of the sample and the data at that sample. To process all samples, the SPI decoder loops over &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;data&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 def decode(self, ss, es, data):&lt;br /&gt;
     ...&lt;br /&gt;
     for (self.samplenum, pins) in data:&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;channels&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;optional_channels&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; contain in total four channels, therefore the second member of the tuple is an object of Python&amp;#039;s [https://docs.python.org/3/library/stdtypes.html#typebytes &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;bytes&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;] class containing 4 bytes, one for each channel. The decoder unpacks the bytes into the variables &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;clk&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;miso&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;mosi&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;cs&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; as shown below.&lt;br /&gt;
&lt;br /&gt;
Then, it checks for the optional channels, if their value is either 0 or 1. If it is not, that optional channel is not provided to the decoder. In the case that neither of them is supplied, an exception is raised:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 (clk, miso, mosi, cs) = pins&lt;br /&gt;
 self.have_miso = (miso in (0, 1))&lt;br /&gt;
 self.have_mosi = (mosi in (0, 1))&lt;br /&gt;
 self.have_cs = (cs in (0, 1))&lt;br /&gt;
 &lt;br /&gt;
 # Either MISO or MOSI (but not both) can be omitted.&lt;br /&gt;
 if not (self.have_miso or self.have_mosi):&lt;br /&gt;
     raise ChannelError(&amp;#039;Either MISO or MOSI (or both) pins required.&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;tt&amp;gt;annotations&amp;lt;/tt&amp;gt; &amp;amp; &amp;lt;tt&amp;gt;annotation_rows&amp;lt;/tt&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
To make the relation between the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;annotations&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; and the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;annotation_rows&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; members of a decoder object more clear, take a look at how the [[Protocol_decoder:Ir_nec|ir_nec]] PD uses them:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 class Decoder(srd.Decoder):&lt;br /&gt;
     ...&lt;br /&gt;
     id = &amp;#039;ir_nec&amp;#039;&lt;br /&gt;
     ...&lt;br /&gt;
     annotations = (&lt;br /&gt;
         (&amp;#039;bit&amp;#039;, &amp;#039;Bit&amp;#039;),&lt;br /&gt;
         (&amp;#039;agc-pulse&amp;#039;, &amp;#039;AGC pulse&amp;#039;),&lt;br /&gt;
         (&amp;#039;longpause&amp;#039;, &amp;#039;Long pause&amp;#039;),&lt;br /&gt;
         (&amp;#039;shortpause&amp;#039;, &amp;#039;Short pause&amp;#039;),&lt;br /&gt;
         (&amp;#039;stop-bit&amp;#039;, &amp;#039;Stop bit&amp;#039;),&lt;br /&gt;
         (&amp;#039;leader-code&amp;#039;, &amp;#039;Leader code&amp;#039;),&lt;br /&gt;
         (&amp;#039;addr&amp;#039;, &amp;#039;Address&amp;#039;),&lt;br /&gt;
         (&amp;#039;addr-inv&amp;#039;, &amp;#039;Address#&amp;#039;),&lt;br /&gt;
         (&amp;#039;cmd&amp;#039;, &amp;#039;Command&amp;#039;),&lt;br /&gt;
         (&amp;#039;cmd-inv&amp;#039;, &amp;#039;Command#&amp;#039;),&lt;br /&gt;
         (&amp;#039;repeat-code&amp;#039;, &amp;#039;Repeat code&amp;#039;),&lt;br /&gt;
         (&amp;#039;remote&amp;#039;, &amp;#039;Remote&amp;#039;),&lt;br /&gt;
         (&amp;#039;warnings&amp;#039;, &amp;#039;Warnings&amp;#039;),&lt;br /&gt;
     )&lt;br /&gt;
     annotation_rows = (&lt;br /&gt;
         (&amp;#039;bits&amp;#039;, &amp;#039;Bits&amp;#039;, (0, 1, 2, 3, 4)),&lt;br /&gt;
         (&amp;#039;fields&amp;#039;, &amp;#039;Fields&amp;#039;, (5, 6, 7, 8, 9, 10)),&lt;br /&gt;
         (&amp;#039;remote&amp;#039;, &amp;#039;Remote&amp;#039;, (11,)),&lt;br /&gt;
         (&amp;#039;warnings&amp;#039;, &amp;#039;Warnings&amp;#039;, (12,)),&lt;br /&gt;
     )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It groups the first five annotation types together into the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;bits&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; row and the next six into the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;fields&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; row. The rows &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;remote&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;warnings&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; both only contain one annotation type.&lt;br /&gt;
&lt;br /&gt;
Without &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;annotation_rows&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;, [[PulseView]] would have to put each annotation type in its own row (which is unhandy if the decoder has many annotations) or it would have to put them all on the same row (which would result in unreadable output due to overlaps). But because of the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;annotation_rows&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;, the output of the [[Protocol_decoder:Ir_nec|ir_nec]] decoder is grouped together as shown in the following picture (note how different annotation types, distinguishable by their different colors, share the same row):&lt;br /&gt;
&lt;br /&gt;
[[File:Pv example ir nec cropped.png]]&lt;br /&gt;
&lt;br /&gt;
== Random notes, tips and tricks ==&lt;br /&gt;
&lt;br /&gt;
* You should usually only use &amp;#039;&amp;#039;&amp;#039;raise&amp;#039;&amp;#039;&amp;#039; in a protocol decoder to raise exceptions in cases which are a clear bug in how the protocol decoder is invoked (e.g. if no samplerate was provided for a PD which needs the samplerate, or if some of the required channels were not provided by the user, and so on).&lt;br /&gt;
* A simple way to check whether an optional PD channel was supplied (by the frontend/user) in this run is:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 if pin in (0, 1):&lt;br /&gt;
     do_stuff()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* A simple and fast way to calculate a parity (i.e., count the number of 1 bits) over a number (0x55 in this example) is:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 ones = bin(0x55).count(&amp;#039;1&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* A simple function to convert a BCD number (max. 8 bits) to an integer is:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 def bcd2int(b):&lt;br /&gt;
     return (b &amp;amp; 0x0f) + ((b &amp;gt;&amp;gt; 4) * 10)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* A nice way to construct method names according to e.g. protocol commands is (assuming &amp;#039;&amp;#039;&amp;#039;cmd&amp;#039;&amp;#039;&amp;#039; is 8, this would call the function &amp;#039;&amp;#039;&amp;#039;self.handle_cmd_0x08&amp;#039;&amp;#039;&amp;#039;):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 fn = getattr(self, &amp;#039;handle_cmd_0x%02x&amp;#039; % cmd);&lt;br /&gt;
 fn(arg1, arg2, ...)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* &amp;lt;div id=&amp;quot;SIGROKDECODE_DIR&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;You don&amp;#039;t need to reinstall the whole libsigrokdecode project every time you make a change on your decoder, instead you can use the environment variable &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;SIGROKDECODE_DIR&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; to point the software to your development directory:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 $ SIGROKDECODE_DIR=/path/to/libsigrokdecode/decoders/ sigrok-cli … -P &amp;lt;your decoder&amp;#039;s name&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Because this environment variable is evaluated by the libsigrokdecode code itself, it can be used for any program that uses the library, for example when calling [[PulseView]] or the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;pdtest&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; unit test utility from the [[sigrok-test]] repository.&lt;br /&gt;
&lt;br /&gt;
== Submitting your decoder ==&lt;br /&gt;
&lt;br /&gt;
When you&amp;#039;ve finished your decoder and everything is working nicely, please contribute the decoder to the sigrok project so that other people can benefit from it (and test it, improve upon it, and so on).&lt;br /&gt;
&lt;br /&gt;
* Send the decoder (preferrably as a patch against the current git HEAD of [[libsigrokdecode]]) to the [https://lists.sourceforge.net/lists/listinfo/sigrok-devel sigrok-devel] mailing list, and/or tell us the location of your git repository containing the decoder (on the &amp;#039;&amp;#039;&amp;#039;#sigrok&amp;#039;&amp;#039;&amp;#039; IRC channel on FreeNode).&lt;br /&gt;
* Please also send us a few example data files (*.sr) and a small README to go with your decoder. We&amp;#039;ll need these in order to properly review and test your decoder. Preferrably these files should also come as patches against the latest git HEAD of the [http://sigrok.org/gitweb/?p=sigrok-dumps.git;a=tree sigrok-dumps] repository. See [[Example dumps]] for details.&lt;br /&gt;
* Finally, please also consider adding a few &amp;quot;unit tests&amp;quot; for your decoder in the [http://sigrok.org/gitweb/?p=sigrok-test.git;a=tree sigrok-test] repository. These test will automatically run the decoder against various input files specified in &amp;#039;&amp;#039;&amp;#039;test.conf&amp;#039;&amp;#039;&amp;#039; and check whether the expected output is produced (examples: [http://sigrok.org/gitweb/?p=sigrok-test.git;a=blob;f=decoder/test/rfm12/test.conf rfm12], [http://sigrok.org/gitweb/?p=sigrok-test.git;a=blob;f=decoder/test/nrf24l01/test.conf nrf24l01]). This allows us to notice and fix any regressions in the decoder and/or the [[libsigrokdecode]] backend that may arise over time.&lt;br /&gt;
&lt;br /&gt;
Thanks a lot!&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Nrf24l01&amp;diff=10674</id>
		<title>Protocol decoder:Nrf24l01</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Nrf24l01&amp;diff=10674"/>
		<updated>2015-03-17T00:03:36Z</updated>

		<summary type="html">&lt;p&gt;Jst: /* Variants and clones of the chip */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = nrf24l01&lt;br /&gt;
| name            = nRF24L01(+)&lt;br /&gt;
| description     = 2.4GHz transceiver chip&lt;br /&gt;
| status          = supported&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = nrf24l01&lt;br /&gt;
| image           = [[File:NRF24L01_plus_module.jpg|250px]]&lt;br /&gt;
| input           = spi&lt;br /&gt;
| output          = nrf24l01&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;nrf24l01&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the protocol spoken by the Nordic Semiconductor [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01 nRF24L01] and [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P nRF24L01+] 2.4GHz transceiver chips.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Modules with these chips can be purchased fairly inexpensive from various online marketplaces. Most (all?) have an 8-pin header with the following pinout:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
  ! Function&lt;br /&gt;
  ! Pin&lt;br /&gt;
  ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
  ! Function&lt;br /&gt;
|-&lt;br /&gt;
  | GND&lt;br /&gt;
  | 1 &lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
  | VCC&lt;br /&gt;
|-&lt;br /&gt;
  | CE&lt;br /&gt;
  | 3&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
  | CSN&lt;br /&gt;
|-&lt;br /&gt;
  | SCK&lt;br /&gt;
  | 5&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
  | MOSI&lt;br /&gt;
|-&lt;br /&gt;
  | MISO&lt;br /&gt;
  | 7&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
  | IRQ&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The chip has two chip select pins, &amp;quot;CE&amp;quot; used to control the standby mode, and &amp;quot;CSN&amp;quot; used for SPI communication.&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
The chip uses the standard SPI protocol and pins (CSN, SCK, MOSI, MISO), with the additional CE (used to control the RX/TX and standby modes) and IRQ (used to inform the SPI master about the completion of a packet reception/transmission) signals. If the number of available pins of the master are scarce, the CE pin can be tied to VCC and the IRQ pin can be left open. Polling over SPI can be used instead.&lt;br /&gt;
&lt;br /&gt;
SPI commands can have variable length, the CSN signal has to stay low during the whole command, and then go high after the last byte. The first byte of a command defines the type of the command, the chip always outputs its internal status register at the beginning. The following bytes are dependent on the command type, can be register values to write into the chip or payload data to send, or empty bytes that are ignored if the command only reads the output of the chip.&lt;br /&gt;
&lt;br /&gt;
== Variants and clones of the chip ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Nordic&amp;lt;br&amp;gt;Semiconductor&lt;br /&gt;
|nRF24L01&lt;br /&gt;
|First chip of the family.&lt;br /&gt;
Supports data rates of 1 Mbps and 2 Mbps.&lt;br /&gt;
Some features of the chip&lt;br /&gt;
(dynamic payload length, suppression of ACK packets)&lt;br /&gt;
and their corresponding SPI commands have to be enabled using the&lt;br /&gt;
&amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt;+0x73 command before they can be used.&lt;br /&gt;
|-&lt;br /&gt;
|nRF24L01+&lt;br /&gt;
|Drop-in replacement for the nRF24L01 with the following additions:&lt;br /&gt;
* In addition to the 1 and 2 Mbps data rates, the chip also supports 250 kbps with a higher sensitivity as for the other data rates.&lt;br /&gt;
* No need to &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt; certain features.&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Beken&amp;lt;br&amp;gt;Corporation&lt;br /&gt;
| BK2401&lt;br /&gt;
| nRF24L01 clone that only supports a data rate of 1 Mbps.&lt;br /&gt;
Contains a second register bank that can be switched to with the &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt;+0x53 command.&lt;br /&gt;
The registers in this bank have to be written with certain magic values&lt;br /&gt;
(specified in the datasheet)&lt;br /&gt;
before the chip can be used.&lt;br /&gt;
|-&lt;br /&gt;
| BK2421&lt;br /&gt;
| Same as the BK2401, but also supports a data rate of 2 Mbps.&lt;br /&gt;
|-&lt;br /&gt;
| BK2423&lt;br /&gt;
| A clone that supports the three data rates of the nRF24L01+. Also has the second register bank.&lt;br /&gt;
|-&lt;br /&gt;
| BK2491&lt;br /&gt;
| Another clone that only supports 1 and 2 Mbps. Also has the second register bank.&amp;lt;br&amp;gt;&lt;br /&gt;
(There is no data sheet available for this chip, but one can find the datasheet of a &amp;#039;&amp;#039;Wenshing Electronics TRW-24G2&amp;#039;&amp;#039; module that contains the chip. When searching online for &amp;#039;&amp;#039;BK2491 datasheet&amp;#039;&amp;#039; one does however find various datasheets for other (even completely unrelated) Beken chips because the PDF title of these document is &amp;#039;&amp;#039;BK2491 Specification&amp;#039;&amp;#039;; apparently the unreleased datasheet for this chip was used as a template for other datasheets without changing the title.)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Hope Microelectronics&lt;br /&gt;
| RFM70&lt;br /&gt;
| A RF module containing a COB. The PDF title of the datasheet says &amp;#039;&amp;#039;BK2491 Specification&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| RFM73&lt;br /&gt;
| A RF module containing a COB. The PDF title of the datasheet says &amp;#039;&amp;#039;BK2423 Specification&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | Panchip&amp;lt;br&amp;gt;Microelectronics&lt;br /&gt;
| [http://www.panchip.com/en/products_show.aspx?cid=63&amp;amp;id=333 XN297]&lt;br /&gt;
| nRF24L01 clone: Supports 1 and 2 Mbps data rates and also needs the &amp;lt;tt&amp;gt;ACTIVATE+0x73&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
Contains three additional registers (&amp;lt;tt&amp;gt;DEMOD_CAL&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;RF_CAL&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;BB_CAL&amp;lt;/tt&amp;gt;).&lt;br /&gt;
Found on some [http://www.deviationtx.com/forum/protocol-development/3213-moontop-m9911-with-panchip-xn297 toy quadcopters];&lt;br /&gt;
datasheet is only available in Chinese.&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center&amp;quot; | ?&lt;br /&gt;
| [http://www.dn-ic.com/ic_2/Nordic/SI24R1.html SI24R1]&lt;br /&gt;
| nRF24L01+ clone: Support three data rates and no &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
Often advertised as &amp;#039;&amp;#039;power enhanced&amp;#039;&amp;#039; or similar because the chip can [https://github.com/solarkennedy/equail/tree/master/Libraries/RF24 transmit with 7dBm].&lt;br /&gt;
The modules containing this chip are often described as &amp;quot;&amp;#039;&amp;#039;compatible nRF24L01(+)&amp;#039;&amp;#039;&amp;quot; and many sellers directly link to the nRF24L01(+) datasheets (the SI24R1 datasheet is only available in Chinese).&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Some forum posts name Silicon Labs as the manufacturer, however the datasheet contains no evidence for this, and DN-IC (linked above) seems to be a distributor and not a manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | Semitek&lt;br /&gt;
| SE8R01&lt;br /&gt;
| Incompatible clone that uses a [http://nerdralph.blogspot.co.at/2014/11/se8r01-24ghz-wireless-modules.html slightly different on-air format].&lt;br /&gt;
Supports 500 kbps (not 250 kbps), 1 and 2 Mbps data rates and also has a second register bank (even though it&amp;#039;s not documented in the datasheet, see the blog post linked above).&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;text-align: center; border-top:2px solid gray&amp;quot; | NST Techsemic&lt;br /&gt;
| style=&amp;quot;border-top:2px solid gray&amp;quot; | LT8900&lt;br /&gt;
| style=&amp;quot;border-top:2px solid gray&amp;quot; | Modules with this chip are sold as &amp;quot;&amp;#039;&amp;#039;nRF24L01 compatible&amp;#039;&amp;#039;&amp;quot; (and even as &amp;quot;&amp;#039;&amp;#039;BK2423 compatible&amp;#039;&amp;#039;&amp;quot;, showing how popular that clone is), however this compatibility can only refer to the on-air format, because the SPI commands and the registers are totally different, and the chip also supports I²C communication. Therefore, the sigrok &amp;#039;&amp;#039;&amp;#039;nrf24l01&amp;#039;&amp;#039;&amp;#039; protocol decoder can&amp;#039;t decode this chip&amp;#039;s protocol.&lt;br /&gt;
|-&lt;br /&gt;
| LT8901, LT8910&lt;br /&gt;
| Datasheets only available in Chinese, these chips look very similar to the LT8900.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | The homepage of the manufacturer lists a [http://www.nst-ic.com/en/products.aspx?cateId=12 whole range] of similar 2.4 GHz chips that may be (on-air) compatible with the nRF24L01(+).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It&amp;#039;s not known if the on-air format of the clones is compatible with the original chips (except for the SE8R01, where it&amp;#039;s clear that it doesn&amp;#039;t work), the datasheets of the clones don&amp;#039;t go into so much detail. The Nordic datasheets describe their &amp;quot;&amp;#039;&amp;#039;Enhanced ShockBurst™&amp;#039;&amp;#039;&amp;quot; mode and frame format, the Beken datasheets only briefly mention a &amp;quot;&amp;#039;&amp;#039;burst mode&amp;#039;&amp;#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A &lt;br /&gt;
[http://hackaday.com/2015/02/23/nordic-nrf24l01-real-vs-fake/#comment-2474764 comment]&lt;br /&gt;
by a Nordic employee under a hackaday.com article titled&lt;br /&gt;
[http://hackaday.com/2015/02/23/nordic-nrf24l01-real-vs-fake &amp;quot;Nordic NRF24L01+ - real vs. fake&amp;quot;]&lt;br /&gt;
says that some clones interpret a flag different than the original chip,&lt;br /&gt;
resulting in problems&lt;br /&gt;
(quote: &amp;quot;&amp;#039;&amp;#039;When EN_DPL is activated, the NO_ACK bit get reversed in the real nRF-devices. They did such a good job of cloning they cloned the datasheet error into the device!!!&amp;#039;&amp;#039;&amp;quot;).&lt;br /&gt;
The comment doesn&amp;#039;t say which clone is meant, but from the article and the other comments it&amp;#039;s most probably the SI24R1.&lt;br /&gt;
&lt;br /&gt;
== Decoder ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;nrf24l01&amp;lt;/tt&amp;gt; decoder stacks on top of the [[Protocol decoder:spi|SPI decoder]] and decodes the commands to the chip and the responses of the chip, and also issues warnings for wrong/incomplete commands.&lt;br /&gt;
&lt;br /&gt;
Some decoded commands in [[PulseView]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:NRF24L01 PD write register.png|&amp;lt;small&amp;gt;Decoded &amp;quot;Write Register&amp;quot; command.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:NRF24L01 PD tx payload.png|&amp;lt;small&amp;gt;Decoded payload that is going to be transmitted.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:NRF24L01 PD rx payload.png|&amp;lt;small&amp;gt;The payload on the receiver side.&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[sigrok-cli]] can be used to decode the capture in the following way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=rpi_CSN:clk=rpi_CLK:mosi=rpi_MOSI:miso=rpi_MISO,nrf24l01&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Cmd R_REGISTER &amp;quot;CONFIG&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Reg CONFIG = &amp;quot;08&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: CONFIG = &amp;quot;08&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: RF_CH = &amp;quot;3E&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: RX_ADDR_P0 = &amp;quot;376774367E&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 ...&lt;br /&gt;
 Cmd R_RX_PAYLOAD&lt;br /&gt;
 Reg STATUS = &amp;quot;40&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can be seen that the register values are hex encoded, while the payload data is, if possible, represented as ASCII characters.&lt;br /&gt;
&lt;br /&gt;
If only the payload is of interest, the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;tx-data&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;rx-data&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; annotation classes can be selected using the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;-A|--protocol-decoder-annotations&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; option:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=uc_CSN:clk=uc_CLK:mosi=uc_MOSI:miso=uc_MISO,nrf24l01 \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-A nrf24l01=tx-data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 TX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #1&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #2&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #3&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #4&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #5&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #6&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #7&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #8&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=rpi_CSN:clk=rpi_CLK:mosi=rpi_MOSI:miso=rpi_MISO,nrf24l01 \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-A nrf24l01=rx-data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 RX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #1&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #2&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #3&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #4&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #5&amp;quot;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Warnings issued for erroneous commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-test-missing-bytes.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=CS:clk=CLK:mosi=MOSI:miso=MISO,nrf24l01&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Cmd R_REGISTER &amp;quot;CONFIG&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;00&amp;quot;&lt;br /&gt;
 missing data bytes&lt;br /&gt;
 Cmd W_TX_PAYLOAD_NOACK&lt;br /&gt;
 Reg STATUS = &amp;quot;00&amp;quot;&lt;br /&gt;
 missing data bytes&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01 Nordic Semiconductor nRF24L01] ([http://www.nordicsemi.com/eng/nordic/download_resource/8041/1/64576247 datasheet])&lt;br /&gt;
* [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P/ Nordic Semiconductor nRF24L01+] ([http://www.nordicsemi.com/eng/nordic/download_resource/8765/2/88509159 datasheet])&lt;br /&gt;
* [https://github.com/search?q=nrf24l01&amp;amp;type=Repositories github.com: nrf24l01] (various nRF24L01(+) projects and examples)&lt;br /&gt;
* [http://travisgoodspeed.blogspot.co.at/2011/02/promiscuity-is-nrf24l01s-duty.html Travis Goodspeed: Promiscuity is the nRF24L01+&amp;#039;s Duty] (using the nRF24L01 in a pseudo-promiscous mode)&lt;br /&gt;
* [http://blog.cyberexplorer.me/2014/01/sniffing-and-decoding-nrf24l01-and.html Cyber Explorer: Sniffing and decoding NRF24L01+ and Bluetooth LE packets for under $30] (contains information about the modulation used by the nRF24L01)&lt;br /&gt;
* [http://dmitry.gr/index.php?r=05.Projects&amp;amp;proj=11.%20Bluetooth%20LE%20fakery Faking Bluetooth LE] (using the nRF24L01+ to send Bluetooth LE broadcasts)&lt;br /&gt;
* [https://www.dropbox.com/sh/kdenpdg60v5hzbd/AAB4uiuU94HJGxOw1jckb4Nqa Mirror of the datasheets]&lt;br /&gt;
* [http://zeptobars.ru/en/read/Nordic-NRF24L01P-SI24R1-real-fake-copy Die shots of a real and a fake chip]&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocol decoder]]&lt;br /&gt;
[[Category:SPI]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Nrf24l01&amp;diff=10559</id>
		<title>Protocol decoder:Nrf24l01</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Nrf24l01&amp;diff=10559"/>
		<updated>2015-02-23T23:47:41Z</updated>

		<summary type="html">&lt;p&gt;Jst: link to die shots&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = nrf24l01&lt;br /&gt;
| name            = nRF24L01(+)&lt;br /&gt;
| description     = 2.4GHz transceiver chip&lt;br /&gt;
| status          = supported&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = nrf24l01&lt;br /&gt;
| image           = [[File:NRF24L01_plus_module.jpg|250px]]&lt;br /&gt;
| input           = spi&lt;br /&gt;
| output          = nrf24l01&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;nrf24l01&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the protocol spoken by the Nordic Semiconductor [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01 nRF24L01] and [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P nRF24L01+] 2.4GHz transceiver chips.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Modules with these chips can be purchased fairly inexpensive from various online marketplaces. Most (all?) have an 8-pin header with the following pinout:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
  ! Function&lt;br /&gt;
  ! Pin&lt;br /&gt;
  ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
  ! Function&lt;br /&gt;
|-&lt;br /&gt;
  | GND&lt;br /&gt;
  | 1 &lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
  | VCC&lt;br /&gt;
|-&lt;br /&gt;
  | CE&lt;br /&gt;
  | 3&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
  | CSN&lt;br /&gt;
|-&lt;br /&gt;
  | SCK&lt;br /&gt;
  | 5&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
  | MOSI&lt;br /&gt;
|-&lt;br /&gt;
  | MISO&lt;br /&gt;
  | 7&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
  | IRQ&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The chip has two chip select pins, &amp;quot;CE&amp;quot; used to control the standby mode, and &amp;quot;CSN&amp;quot; used for SPI communication.&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
The chip uses the standard SPI protocol and pins (CSN, SCK, MOSI, MISO), with the additional CE (used to control the RX/TX and standby modes) and IRQ (used to inform the SPI master about the completion of a packet reception/transmission) signals. If the number of available pins of the master are scarce, the CE pin can be tied to VCC and the IRQ pin can be left open. Polling over SPI can be used instead.&lt;br /&gt;
&lt;br /&gt;
SPI commands can have variable length, the CSN signal has to stay low during the whole command, and then go high after the last byte. The first byte of a command defines the type of the command, the chip always outputs its internal status register at the beginning. The following bytes are dependent on the command type, can be register values to write into the chip or payload data to send, or empty bytes that are ignored if the command only reads the output of the chip.&lt;br /&gt;
&lt;br /&gt;
== Variants and clones of the chip ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Nordic&amp;lt;br&amp;gt;Semiconductor&lt;br /&gt;
|nRF24L01&lt;br /&gt;
|First chip of the family.&lt;br /&gt;
Supports data rates of 1 Mbps and 2 Mbps.&lt;br /&gt;
Some features of the chip&lt;br /&gt;
(dynamic payload length, suppression of ACK packets)&lt;br /&gt;
and their corresponding SPI commands have to be enabled using the&lt;br /&gt;
&amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt;+0x73 command before they can be used.&lt;br /&gt;
|-&lt;br /&gt;
|nRF24L01+&lt;br /&gt;
|Drop-in replacement for the nRF24L01 with the following additions:&lt;br /&gt;
* In addition to the 1 and 2 Mbps data rates, the chip also supports 250 kbps with a higher sensitivity as for the other data rates.&lt;br /&gt;
* No need to &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt; certain features.&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Beken&amp;lt;br&amp;gt;Corporation&lt;br /&gt;
| BK2401&lt;br /&gt;
| nRF24L01 clone that only supports a data rate of 1 Mbps.&lt;br /&gt;
Contains a second register bank that can be switched to with the &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt;+0x53 command.&lt;br /&gt;
The registers in this bank have to be written with certain magic values&lt;br /&gt;
(specified in the datasheet)&lt;br /&gt;
before the chip can be used.&lt;br /&gt;
|-&lt;br /&gt;
| BK2421&lt;br /&gt;
| Same as the BK2401, but also supports a data rate of 2 Mbps.&lt;br /&gt;
|-&lt;br /&gt;
| BK2423&lt;br /&gt;
| A clone that supports the three data rates of the nRF24L01+. Also has the second register bank.&lt;br /&gt;
|-&lt;br /&gt;
| BK2491&lt;br /&gt;
| Another clone that only supports 1 and 2 Mbps. Also has the second register bank.&amp;lt;br&amp;gt;&lt;br /&gt;
(There is no data sheet available for this chip, but one can find the datasheet of a &amp;#039;&amp;#039;Wenshing Electronics TRW-24G2&amp;#039;&amp;#039; module that contains the chip. When searching online for &amp;#039;&amp;#039;BK2491 datasheet&amp;#039;&amp;#039; one does however find various datasheets for other (even completely unrelated) Beken chips because the PDF title of these document is &amp;#039;&amp;#039;BK2491 Specification&amp;#039;&amp;#039;; apparently the unreleased datasheet for this chip was used as a template for other datasheets without changing the title.)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Hope Microelectronics&lt;br /&gt;
| RFM70&lt;br /&gt;
| A RF module containing a COB. The PDF title of the datasheet says &amp;#039;&amp;#039;BK2491 Specification&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| RFM73&lt;br /&gt;
| A RF module containing a COB. The PDF title of the datasheet says &amp;#039;&amp;#039;BK2423 Specification&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | Panchip&amp;lt;br&amp;gt;Microelectronics&lt;br /&gt;
| [http://www.panchip.com/en/products_show.aspx?cid=63&amp;amp;id=333 XN297]&lt;br /&gt;
| nRF24L01 clone: Supports 1 and 2 Mbps data rates and also needs the &amp;lt;tt&amp;gt;ACTIVATE+0x73&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
Contains three additional registers (&amp;lt;tt&amp;gt;DEMOD_CAL&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;RF_CAL&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;BB_CAL&amp;lt;/tt&amp;gt;).&lt;br /&gt;
Found on some [http://www.deviationtx.com/forum/protocol-development/3213-moontop-m9911-with-panchip-xn297 toy quadcopters];&lt;br /&gt;
datasheet is only available in Chinese.&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center&amp;quot; | ?&lt;br /&gt;
| [http://www.dn-ic.com/ic_2/Nordic/SI24R1.html SI24R1]&lt;br /&gt;
| nRF24L01+ clone: Support three data rates and no &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
Often advertised as &amp;#039;&amp;#039;power enhanced&amp;#039;&amp;#039; or similar because the chip can [https://github.com/solarkennedy/equail/tree/master/Libraries/RF24 transmit with 7dBm].&lt;br /&gt;
The modules containing this chip are often described as &amp;quot;&amp;#039;&amp;#039;compatible nRF24L01(+)&amp;#039;&amp;#039;&amp;quot; and many sellers directly link to the nRF24L01(+) datasheets (the SI24R1 datasheet is only available in Chinese).&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Some forum posts name Silicon Labs as the manufacturer, however the datasheet contains no evidence for this, and DN-IC (linked above) seems to be a distributor and not a manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | Semitek&lt;br /&gt;
| SE8R01&lt;br /&gt;
| Incompatible clone that uses a [http://nerdralph.blogspot.co.at/2014/11/se8r01-24ghz-wireless-modules.html slightly different on-air format].&lt;br /&gt;
Supports 500 kbps (not 250 kbps), 1 and 2 Mbps data rates and also has a second register bank (even though it&amp;#039;s not documented in the datasheet, see the blog post linked above).&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;text-align: center; border-top:2px solid gray&amp;quot; | NST Techsemic&lt;br /&gt;
| style=&amp;quot;border-top:2px solid gray&amp;quot; | LT8900&lt;br /&gt;
| style=&amp;quot;border-top:2px solid gray&amp;quot; | Modules with this chip are sold as &amp;quot;&amp;#039;&amp;#039;nRF24L01 compatible&amp;#039;&amp;#039;&amp;quot; (and even as &amp;quot;&amp;#039;&amp;#039;BK2423 compatible&amp;#039;&amp;#039;&amp;quot;, showing how popular that clone is), however this compatibility can only refer to the on-air format, because the SPI commands and the registers are totally different, and the chip also supports I²C communication. Therefore, the sigrok &amp;#039;&amp;#039;&amp;#039;nrf24l01&amp;#039;&amp;#039;&amp;#039; protocol decoder can&amp;#039;t decode this chip&amp;#039;s protocol.&lt;br /&gt;
|-&lt;br /&gt;
| LT8901, LT8910&lt;br /&gt;
| Datasheets only available in Chinese, these chips look very similar to the LT8900.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | The homepage of the manufacturer lists a [http://www.nst-ic.com/en/products.aspx?cateId=12 whole range] of similar 2.4 GHz chips that may be (on-air) compatible with the nRF24L01(+).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It&amp;#039;s not known if the on-air format of the clones is compatible with the original chips (except for the SE8R01, where it&amp;#039;s clear that it doesn&amp;#039;t work), the datasheets of the clones don&amp;#039;t go into so much detail. The Nordic datasheets describe their &amp;quot;&amp;#039;&amp;#039;Enhanced ShockBurst™&amp;#039;&amp;#039;&amp;quot; mode and frame format, the Beken datasheets only briefly mention a &amp;quot;&amp;#039;&amp;#039;burst mode&amp;#039;&amp;#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Decoder ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;nrf24l01&amp;lt;/tt&amp;gt; decoder stacks on top of the [[Protocol decoder:spi|SPI decoder]] and decodes the commands to the chip and the responses of the chip, and also issues warnings for wrong/incomplete commands.&lt;br /&gt;
&lt;br /&gt;
Some decoded commands in [[PulseView]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:NRF24L01 PD write register.png|&amp;lt;small&amp;gt;Decoded &amp;quot;Write Register&amp;quot; command.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:NRF24L01 PD tx payload.png|&amp;lt;small&amp;gt;Decoded payload that is going to be transmitted.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:NRF24L01 PD rx payload.png|&amp;lt;small&amp;gt;The payload on the receiver side.&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[sigrok-cli]] can be used to decode the capture in the following way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=rpi_CSN:clk=rpi_CLK:mosi=rpi_MOSI:miso=rpi_MISO,nrf24l01&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Cmd R_REGISTER &amp;quot;CONFIG&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Reg CONFIG = &amp;quot;08&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: CONFIG = &amp;quot;08&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: RF_CH = &amp;quot;3E&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: RX_ADDR_P0 = &amp;quot;376774367E&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 ...&lt;br /&gt;
 Cmd R_RX_PAYLOAD&lt;br /&gt;
 Reg STATUS = &amp;quot;40&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can be seen that the register values are hex encoded, while the payload data is, if possible, represented as ASCII characters.&lt;br /&gt;
&lt;br /&gt;
If only the payload is of interest, the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;tx-data&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;rx-data&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; annotation classes can be selected using the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;-A|--protocol-decoder-annotations&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; option:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=uc_CSN:clk=uc_CLK:mosi=uc_MOSI:miso=uc_MISO,nrf24l01 \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-A nrf24l01=tx-data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 TX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #1&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #2&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #3&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #4&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #5&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #6&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #7&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #8&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=rpi_CSN:clk=rpi_CLK:mosi=rpi_MOSI:miso=rpi_MISO,nrf24l01 \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-A nrf24l01=rx-data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 RX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #1&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #2&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #3&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #4&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #5&amp;quot;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Warnings issued for erroneous commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-test-missing-bytes.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=CS:clk=CLK:mosi=MOSI:miso=MISO,nrf24l01&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Cmd R_REGISTER &amp;quot;CONFIG&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;00&amp;quot;&lt;br /&gt;
 missing data bytes&lt;br /&gt;
 Cmd W_TX_PAYLOAD_NOACK&lt;br /&gt;
 Reg STATUS = &amp;quot;00&amp;quot;&lt;br /&gt;
 missing data bytes&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01 Nordic Semiconductor nRF24L01] ([http://www.nordicsemi.com/eng/nordic/download_resource/8041/1/64576247 datasheet])&lt;br /&gt;
* [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P/ Nordic Semiconductor nRF24L01+] ([http://www.nordicsemi.com/eng/nordic/download_resource/8765/2/88509159 datasheet])&lt;br /&gt;
* [https://github.com/search?q=nrf24l01&amp;amp;type=Repositories github.com: nrf24l01] (various nRF24L01(+) projects and examples)&lt;br /&gt;
* [http://travisgoodspeed.blogspot.co.at/2011/02/promiscuity-is-nrf24l01s-duty.html Travis Goodspeed: Promiscuity is the nRF24L01+&amp;#039;s Duty] (using the nRF24L01 in a pseudo-promiscous mode)&lt;br /&gt;
* [http://blog.cyberexplorer.me/2014/01/sniffing-and-decoding-nrf24l01-and.html Cyber Explorer: Sniffing and decoding NRF24L01+ and Bluetooth LE packets for under $30] (contains information about the modulation used by the nRF24L01)&lt;br /&gt;
* [http://dmitry.gr/index.php?r=05.Projects&amp;amp;proj=11.%20Bluetooth%20LE%20fakery Faking Bluetooth LE] (using the nRF24L01+ to send Bluetooth LE broadcasts)&lt;br /&gt;
* [https://www.dropbox.com/sh/kdenpdg60v5hzbd/AAB4uiuU94HJGxOw1jckb4Nqa Mirror of the datasheets]&lt;br /&gt;
* [http://zeptobars.ru/en/read/Nordic-NRF24L01P-SI24R1-real-fake-copy Die shots of a real and a fake chip]&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocol decoder]]&lt;br /&gt;
[[Category:SPI]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Nrf24l01&amp;diff=10531</id>
		<title>Protocol decoder:Nrf24l01</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Nrf24l01&amp;diff=10531"/>
		<updated>2015-02-13T15:21:16Z</updated>

		<summary type="html">&lt;p&gt;Jst: /* Variants and Clones of the Chip */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = nrf24l01&lt;br /&gt;
| name            = nRF24L01(+)&lt;br /&gt;
| description     = 2.4GHz transceiver chip&lt;br /&gt;
| status          = supported&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = nrf24l01&lt;br /&gt;
| image           = [[File:NRF24L01_plus_module.jpg|250px]]&lt;br /&gt;
| input           = spi&lt;br /&gt;
| output          = nrf24l01&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;nrf24l01&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the protocol spoken by the Nordic Semiconductor [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01 nRF24L01] and [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P nRF24L01+] 2.4GHz transceiver chips.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Modules with these chips can be purchased fairly inexpensive from various online marketplaces. Most (all?) have an 8-pin header with the following pinout:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
  ! Function&lt;br /&gt;
  ! Pin&lt;br /&gt;
  ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
  ! Function&lt;br /&gt;
|-&lt;br /&gt;
  | GND&lt;br /&gt;
  | 1 &lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
  | VCC&lt;br /&gt;
|-&lt;br /&gt;
  | CE&lt;br /&gt;
  | 3&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
  | CSN&lt;br /&gt;
|-&lt;br /&gt;
  | SCK&lt;br /&gt;
  | 5&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
  | MOSI&lt;br /&gt;
|-&lt;br /&gt;
  | MISO&lt;br /&gt;
  | 7&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
  | IRQ&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The chip has two chip select pins, &amp;quot;CE&amp;quot; used to control the standby mode, and &amp;quot;CSN&amp;quot; used for SPI communication.&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
The chip uses the standard SPI protocol and pins (CSN, SCK, MOSI, MISO), with the additional CE (used to control the RX/TX and standby modes) and IRQ (used to inform the SPI master about the completion of a packet reception/transmission) signals. If the number of available pins of the master are scarce, the CE pin can be tied to VCC and the IRQ pin can be left open. Polling over SPI can be used instead.&lt;br /&gt;
&lt;br /&gt;
SPI commands can have variable length, the CSN signal has to stay low during the whole command, and then go high after the last byte. The first byte of a command defines the type of the command, the chip always outputs its internal status register at the beginning. The following bytes are dependent on the command type, can be register values to write into the chip or payload data to send, or empty bytes that are ignored if the command only reads the output of the chip.&lt;br /&gt;
&lt;br /&gt;
== Variants and Clones of the Chip ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Nordic&amp;lt;br&amp;gt;Semiconductor&lt;br /&gt;
|nRF24L01&lt;br /&gt;
|First chip of the family.&lt;br /&gt;
Supports data rates of 1 Mbps and 2 Mbps.&lt;br /&gt;
Some features of the chip&lt;br /&gt;
(dynamic payload length, suppression of ACK packets)&lt;br /&gt;
and their corresponding SPI commands have to be enabled using the&lt;br /&gt;
&amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt;+0x73 command before they can be used.&lt;br /&gt;
|-&lt;br /&gt;
|nRF24L01+&lt;br /&gt;
|Drop-in replacement for the nRF24L01 with the following additions:&lt;br /&gt;
* In addition to the 1 and 2 Mbps data rates, the chip also supports 250 kbps with a higher sensitivity as for the other data rates.&lt;br /&gt;
* No need to &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt; certain features.&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Beken&amp;lt;br&amp;gt;Corporation&lt;br /&gt;
| BK2401&lt;br /&gt;
| nRF24L01 clone that only supports a data rate of 1 Mbps.&lt;br /&gt;
Contains a second register bank that can be switched to with the &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt;+0x53 command.&lt;br /&gt;
The registers in this bank have to be written with certain magic values&lt;br /&gt;
(specified in the datasheet)&lt;br /&gt;
before the chip can be used.&lt;br /&gt;
|-&lt;br /&gt;
| BK2421&lt;br /&gt;
| Same as the BK2401, but also supports a data rate of 2 Mbps.&lt;br /&gt;
|-&lt;br /&gt;
| BK2423&lt;br /&gt;
| A clone that supports the three data rates of the nRF24L01+. Also has the second register bank.&lt;br /&gt;
|-&lt;br /&gt;
| BK2491&lt;br /&gt;
| Another clone that only supports 1 and 2 Mbps. Also has the second register bank.&amp;lt;br&amp;gt;&lt;br /&gt;
(There is no data sheet available for this chip, but one can find the datasheet of a &amp;#039;&amp;#039;Wenshing Electronics TRW-24G2&amp;#039;&amp;#039; module that contains the chip. When searching online for &amp;#039;&amp;#039;BK2491 datasheet&amp;#039;&amp;#039; one does however find various datasheets for other (even completely unrelated) Beken chips because the PDF title of these document is &amp;#039;&amp;#039;BK2491 Specification&amp;#039;&amp;#039;; apparently the unreleased datasheet for this chip was used as a template for other datasheets without changing the title.)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Hope Microelectronics&lt;br /&gt;
| RFM70&lt;br /&gt;
| A RF module containing a COB. The PDF title of the datasheet says &amp;#039;&amp;#039;BK2491 Specification&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| RFM73&lt;br /&gt;
| A RF module containing a COB. The PDF title of the datasheet says &amp;#039;&amp;#039;BK2423 Specification&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | Panchip&amp;lt;br&amp;gt;Microelectronics&lt;br /&gt;
| [http://www.panchip.com/en/products_show.aspx?cid=63&amp;amp;id=333 XN297]&lt;br /&gt;
| nRF24L01 clone: Supports 1 and 2 Mbps data rates and also needs the &amp;lt;tt&amp;gt;ACTIVATE+0x73&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
Contains three additional registers (&amp;lt;tt&amp;gt;DEMOD_CAL&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;RF_CAL&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;BB_CAL&amp;lt;/tt&amp;gt;).&lt;br /&gt;
Found on some [http://www.deviationtx.com/forum/protocol-development/3213-moontop-m9911-with-panchip-xn297 toy quadcopters];&lt;br /&gt;
datasheet is only available in Chinese.&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center&amp;quot; | ?&lt;br /&gt;
| [http://www.dn-ic.com/ic_2/Nordic/SI24R1.html SI24R1]&lt;br /&gt;
| nRF24L01+ clone: Support three data rates and no &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
Often advertised as &amp;#039;&amp;#039;power enhanced&amp;#039;&amp;#039; or similar because the chip can [https://github.com/solarkennedy/equail/tree/master/Libraries/RF24 transmit with 7dBm].&lt;br /&gt;
The modules containing this chip are often described as &amp;quot;&amp;#039;&amp;#039;compatible nRF24L01(+)&amp;#039;&amp;#039;&amp;quot; and many sellers directly link to the nRF24L01(+) datasheets (the SI24R1 datasheet is only available in Chinese).&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Some forum posts name Silicon Labs as the manufacturer, however the datasheet contains no evidence for this, and DN-IC (linked above) seems to be a distributor and not a manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | Semitek&lt;br /&gt;
| SE8R01&lt;br /&gt;
| Incompatible clone that uses a [http://nerdralph.blogspot.co.at/2014/11/se8r01-24ghz-wireless-modules.html slightly different on-air format].&lt;br /&gt;
Supports 500 kbps (not 250 kbps), 1 and 2 Mbps data rates and also has a second register bank (even though it&amp;#039;s not documented in the datasheet, see the blog post linked above).&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;text-align: center; border-top:2px solid gray&amp;quot; | NST Techsemic&lt;br /&gt;
| style=&amp;quot;border-top:2px solid gray&amp;quot; | LT8900&lt;br /&gt;
| style=&amp;quot;border-top:2px solid gray&amp;quot; | Modules with this chip are sold as &amp;quot;&amp;#039;&amp;#039;nRF24L01 compatible&amp;#039;&amp;#039;&amp;quot; (and even as &amp;quot;&amp;#039;&amp;#039;BK2423 compatible&amp;#039;&amp;#039;&amp;quot;, showing how popular that clone is), however this compatibility can only refer to the on-air format, because the SPI commands and the registers are totally different, and the chip also supports I2C communication. Therefore, the sigrok decoder can&amp;#039;t decode this chips protocol.&lt;br /&gt;
|-&lt;br /&gt;
| LT8901, LT8910&lt;br /&gt;
| Datasheets only available in Chinese, these chips look very similar to the LT8900.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | The homepage of the manufacturer lists a [http://www.nst-ic.com/en/products.aspx?cateId=12 whole range] of similar 2.4 GHz chips that may be (on-air) compatible with the nRF24L01(+).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It&amp;#039;s not known if the on-air format of the clones is compatible with the original chips (except for the SE8R01, where it&amp;#039;s clear that it doesn&amp;#039;t work), the datasheets of the clones don&amp;#039;t go into so much detail. The Nordic datasheets describe their &amp;quot;&amp;#039;&amp;#039;Enhanced ShockBurst™&amp;#039;&amp;#039;&amp;quot; mode and frame format, the Beken datasheets only briefly mention a &amp;quot;&amp;#039;&amp;#039;burst mode&amp;#039;&amp;#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Decoder ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;nrf24l01&amp;lt;/tt&amp;gt; decoder stacks on top of the [[Protocol decoder:spi|SPI decoder]] and decodes the commands to the chip and the responses of the chip, and also issues warnings for wrong/incomplete commands.&lt;br /&gt;
&lt;br /&gt;
Some decoded commands in [[PulseView]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:NRF24L01 PD write register.png|&amp;lt;small&amp;gt;Decoded &amp;quot;Write Register&amp;quot; command.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:NRF24L01 PD tx payload.png|&amp;lt;small&amp;gt;Decoded payload that is going to be transmitted.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:NRF24L01 PD rx payload.png|&amp;lt;small&amp;gt;The payload on the receiver side.&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[sigrok-cli]] can be used to decode the capture in the following way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=rpi_CSN:clk=rpi_CLK:mosi=rpi_MOSI:miso=rpi_MISO,nrf24l01&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Cmd R_REGISTER &amp;quot;CONFIG&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Reg CONFIG = &amp;quot;08&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: CONFIG = &amp;quot;08&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: RF_CH = &amp;quot;3E&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: RX_ADDR_P0 = &amp;quot;376774367E&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 ...&lt;br /&gt;
 Cmd R_RX_PAYLOAD&lt;br /&gt;
 Reg STATUS = &amp;quot;40&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can be seen that the register values are hex encoded, while the payload data is, if possible, represented as ASCII characters.&lt;br /&gt;
&lt;br /&gt;
If only the payload is of interest, the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;tx-data&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;rx-data&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; annotation classes can be selected using the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;-A|--protocol-decoder-annotations&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; option:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=uc_CSN:clk=uc_CLK:mosi=uc_MOSI:miso=uc_MISO,nrf24l01 \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-A nrf24l01=tx-data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 TX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #1&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #2&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #3&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #4&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #5&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #6&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #7&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #8&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=rpi_CSN:clk=rpi_CLK:mosi=rpi_MOSI:miso=rpi_MISO,nrf24l01 \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-A nrf24l01=rx-data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 RX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #1&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #2&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #3&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #4&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #5&amp;quot;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Warnings issued for erroneous commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-test-missing-bytes.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=CS:clk=CLK:mosi=MOSI:miso=MISO,nrf24l01&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Cmd R_REGISTER &amp;quot;CONFIG&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;00&amp;quot;&lt;br /&gt;
 missing data bytes&lt;br /&gt;
 Cmd W_TX_PAYLOAD_NOACK&lt;br /&gt;
 Reg STATUS = &amp;quot;00&amp;quot;&lt;br /&gt;
 missing data bytes&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01 Nordic Semiconductor nRF24L01] ([http://www.nordicsemi.com/eng/nordic/download_resource/8041/1/64576247 datasheet])&lt;br /&gt;
* [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P/ Nordic Semiconductor nRF24L01+] ([http://www.nordicsemi.com/eng/nordic/download_resource/8765/2/88509159 datasheet])&lt;br /&gt;
* [https://github.com/search?q=nrf24l01&amp;amp;type=Repositories github.com: nrf24l01] (various nRF24L01(+) projects and examples)&lt;br /&gt;
* [http://travisgoodspeed.blogspot.co.at/2011/02/promiscuity-is-nrf24l01s-duty.html Travis Goodspeed: Promiscuity is the nRF24L01+&amp;#039;s Duty] (using the nRF24L01 in a pseudo-promiscous mode)&lt;br /&gt;
* [http://blog.cyberexplorer.me/2014/01/sniffing-and-decoding-nrf24l01-and.html Cyber Explorer: Sniffing and decoding NRF24L01+ and Bluetooth LE packets for under $30] (contains information about the modulation used by the nRF24L01)&lt;br /&gt;
* [http://dmitry.gr/index.php?r=05.Projects&amp;amp;proj=11.%20Bluetooth%20LE%20fakery Faking Bluetooth LE] (using the nRF24L01+ to send Bluetooth LE broadcasts)&lt;br /&gt;
* [https://www.dropbox.com/sh/kdenpdg60v5hzbd/AAB4uiuU94HJGxOw1jckb4Nqa Mirror of the datasheets]&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocol decoder]]&lt;br /&gt;
[[Category:SPI]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Nrf24l01&amp;diff=10530</id>
		<title>Protocol decoder:Nrf24l01</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Nrf24l01&amp;diff=10530"/>
		<updated>2015-02-13T14:45:11Z</updated>

		<summary type="html">&lt;p&gt;Jst: /* Variants and Clones of the Chip */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = nrf24l01&lt;br /&gt;
| name            = nRF24L01(+)&lt;br /&gt;
| description     = 2.4GHz transceiver chip&lt;br /&gt;
| status          = supported&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = nrf24l01&lt;br /&gt;
| image           = [[File:NRF24L01_plus_module.jpg|250px]]&lt;br /&gt;
| input           = spi&lt;br /&gt;
| output          = nrf24l01&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;nrf24l01&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the protocol spoken by the Nordic Semiconductor [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01 nRF24L01] and [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P nRF24L01+] 2.4GHz transceiver chips.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Modules with these chips can be purchased fairly inexpensive from various online marketplaces. Most (all?) have an 8-pin header with the following pinout:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
  ! Function&lt;br /&gt;
  ! Pin&lt;br /&gt;
  ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
  ! Function&lt;br /&gt;
|-&lt;br /&gt;
  | GND&lt;br /&gt;
  | 1 &lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
  | VCC&lt;br /&gt;
|-&lt;br /&gt;
  | CE&lt;br /&gt;
  | 3&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
  | CSN&lt;br /&gt;
|-&lt;br /&gt;
  | SCK&lt;br /&gt;
  | 5&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
  | MOSI&lt;br /&gt;
|-&lt;br /&gt;
  | MISO&lt;br /&gt;
  | 7&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
  | IRQ&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The chip has two chip select pins, &amp;quot;CE&amp;quot; used to control the standby mode, and &amp;quot;CSN&amp;quot; used for SPI communication.&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
The chip uses the standard SPI protocol and pins (CSN, SCK, MOSI, MISO), with the additional CE (used to control the RX/TX and standby modes) and IRQ (used to inform the SPI master about the completion of a packet reception/transmission) signals. If the number of available pins of the master are scarce, the CE pin can be tied to VCC and the IRQ pin can be left open. Polling over SPI can be used instead.&lt;br /&gt;
&lt;br /&gt;
SPI commands can have variable length, the CSN signal has to stay low during the whole command, and then go high after the last byte. The first byte of a command defines the type of the command, the chip always outputs its internal status register at the beginning. The following bytes are dependent on the command type, can be register values to write into the chip or payload data to send, or empty bytes that are ignored if the command only reads the output of the chip.&lt;br /&gt;
&lt;br /&gt;
== Variants and Clones of the Chip ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Nordic&amp;lt;br&amp;gt;Semiconductor&lt;br /&gt;
|nRF24L01&lt;br /&gt;
|First chip of the family.&lt;br /&gt;
Supports data rates of 1 Mbps and 2 Mbps.&lt;br /&gt;
Some features of the chip&lt;br /&gt;
(dynamic payload length, suppression of ACK packets)&lt;br /&gt;
and their corresponding SPI commands have to be enabled using the&lt;br /&gt;
&amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt;+0x73 command before they can be used.&lt;br /&gt;
|-&lt;br /&gt;
|nRF24L01+&lt;br /&gt;
|Drop-in replacement for the nRF24L01 with the following additions:&lt;br /&gt;
* In addition to the 1 and 2 Mbps data rates, the chip also supports 250 kbps with a higher sensitivity as for the other data rates.&lt;br /&gt;
* No need to &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt; certain features.&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Beken&amp;lt;br&amp;gt;Corporation&lt;br /&gt;
| BK2401&lt;br /&gt;
| nRF24L01 clone that only supports a data rate of 1 Mbps.&lt;br /&gt;
Contains a second register bank that can be switched to with the &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt;+0x53 command.&lt;br /&gt;
The registers in this bank have to be written with certain magic values&lt;br /&gt;
(specified in the datasheet)&lt;br /&gt;
before the chip can be used.&lt;br /&gt;
|-&lt;br /&gt;
| BK2421&lt;br /&gt;
| Same as the BK2401, but also supports a data rate of 2 Mbps.&lt;br /&gt;
|-&lt;br /&gt;
| BK2423&lt;br /&gt;
| A clone that supports the three data rates of the nRF24L01+. Also has the second register bank.&lt;br /&gt;
|-&lt;br /&gt;
| BK2491&lt;br /&gt;
| Another clone that only supports 1 and 2 Mbps. Also has the second register bank.&amp;lt;br&amp;gt;&lt;br /&gt;
(There is no data sheet available for this chip, but one can find the datasheet of a &amp;#039;&amp;#039;Wenshing Electronics TRW-24G2&amp;#039;&amp;#039; module that contains the chip. When searching online for &amp;#039;&amp;#039;BK2491 datasheet&amp;#039;&amp;#039; one does however find various datasheets for other (even completely unrelated) Beken chips because the PDF title of these document is &amp;#039;&amp;#039;BK2491 Specification&amp;#039;&amp;#039;; apparently the unreleased datasheet for this chip was used as a template for other datasheets without changing the title.)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Hope Microelectronics&lt;br /&gt;
| RFM70&lt;br /&gt;
| A RF module containing a COB. The PDF title of the datasheet says &amp;#039;&amp;#039;BK2491 Specification&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| RFM73&lt;br /&gt;
| A RF module containing a COB. The PDF title of the datasheet says &amp;#039;&amp;#039;BK2423 Specification&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | Panchip&amp;lt;br&amp;gt;Microelectronics&lt;br /&gt;
| [http://www.panchip.com/en/products_show.aspx?cid=63&amp;amp;id=333 XN297]&lt;br /&gt;
| nRF24L01 clone: Supports 1 and 2 Mbps data rates and also needs the &amp;lt;tt&amp;gt;ACTIVATE+0x73&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
Contains three additional registers (&amp;lt;tt&amp;gt;DEMOD_CAL&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;RF_CAL&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;BB_CAL&amp;lt;/tt&amp;gt;).&lt;br /&gt;
Found on some [http://www.deviationtx.com/forum/protocol-development/3213-moontop-m9911-with-panchip-xn297 toy quadcopters];&lt;br /&gt;
datasheet is only available in Chinese.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | SI&amp;lt;br&amp;gt;Semiconductors&lt;br /&gt;
| [http://www.dn-ic.com/ic_2/Nordic/SI24R1.html SI24R1]&lt;br /&gt;
| nRF24L01+ clone: Support three data rates and no &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
Often advertised as &amp;#039;&amp;#039;power enhanced&amp;#039;&amp;#039; or similar because the chip can [https://github.com/solarkennedy/equail/tree/master/Libraries/RF24 transmit with 7dBm].&lt;br /&gt;
The modules containing this chip are often described as &amp;quot;&amp;#039;&amp;#039;compatible nRF24L01(+)&amp;#039;&amp;#039;&amp;quot; and many sellers directly link to the nRF24L01(+) datasheets (the SI24R1 datasheet is only available in Chinese).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | Semitek&lt;br /&gt;
| SE8R01&lt;br /&gt;
| Incompatible clone that uses a [http://nerdralph.blogspot.co.at/2014/11/se8r01-24ghz-wireless-modules.html slightly different on-air format].&lt;br /&gt;
Supports 500 kbps (not 250 kbps), 1 and 2 Mbps data rates and also has a second register bank (even though it&amp;#039;s not documented in the datasheet, see the blog post linked above).&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;text-align: center; border-top:2px solid gray&amp;quot; | NST Techsemic&lt;br /&gt;
| style=&amp;quot;border-top:2px solid gray&amp;quot; | LT8900&lt;br /&gt;
| style=&amp;quot;border-top:2px solid gray&amp;quot; | Modules with this chip are sold as &amp;quot;&amp;#039;&amp;#039;nRF24L01 compatible&amp;#039;&amp;#039;&amp;quot; (and even as &amp;quot;&amp;#039;&amp;#039;BK2423 compatible&amp;#039;&amp;#039;&amp;quot;, showing how popular that clone is), however this compatibility can only refer to the on-air format, because the SPI commands and the registers are totally different, and the chip also supports I2C communication. Therefore, the sigrok decoder can&amp;#039;t decode this chips protocol.&lt;br /&gt;
|-&lt;br /&gt;
| LT8901, LT8910&lt;br /&gt;
| Datasheets only available in Chinese, these chips look very similar to the LT8900.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | The homepage of the manufacturer lists a [http://www.nst-ic.com/en/products.aspx?cateId=12 whole range] of similar 2.4 GHz chips that may be (on-air) compatible with the nRF24L01(+).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It&amp;#039;s not known if the on-air format of the clones is compatible with the original chips (except for the SE8R01, where it&amp;#039;s clear that it doesn&amp;#039;t work), the datasheets of the clones don&amp;#039;t go into so much detail. The Nordic datasheets describe their &amp;quot;&amp;#039;&amp;#039;Enhanced ShockBurst™&amp;#039;&amp;#039;&amp;quot; mode and frame format, the Beken datasheets only briefly mention a &amp;quot;&amp;#039;&amp;#039;burst mode&amp;#039;&amp;#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Decoder ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;nrf24l01&amp;lt;/tt&amp;gt; decoder stacks on top of the [[Protocol decoder:spi|SPI decoder]] and decodes the commands to the chip and the responses of the chip, and also issues warnings for wrong/incomplete commands.&lt;br /&gt;
&lt;br /&gt;
Some decoded commands in [[PulseView]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:NRF24L01 PD write register.png|&amp;lt;small&amp;gt;Decoded &amp;quot;Write Register&amp;quot; command.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:NRF24L01 PD tx payload.png|&amp;lt;small&amp;gt;Decoded payload that is going to be transmitted.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:NRF24L01 PD rx payload.png|&amp;lt;small&amp;gt;The payload on the receiver side.&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[sigrok-cli]] can be used to decode the capture in the following way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=rpi_CSN:clk=rpi_CLK:mosi=rpi_MOSI:miso=rpi_MISO,nrf24l01&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Cmd R_REGISTER &amp;quot;CONFIG&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Reg CONFIG = &amp;quot;08&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: CONFIG = &amp;quot;08&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: RF_CH = &amp;quot;3E&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: RX_ADDR_P0 = &amp;quot;376774367E&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 ...&lt;br /&gt;
 Cmd R_RX_PAYLOAD&lt;br /&gt;
 Reg STATUS = &amp;quot;40&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can be seen that the register values are hex encoded, while the payload data is, if possible, represented as ASCII characters.&lt;br /&gt;
&lt;br /&gt;
If only the payload is of interest, the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;tx-data&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;rx-data&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; annotation classes can be selected using the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;-A|--protocol-decoder-annotations&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; option:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=uc_CSN:clk=uc_CLK:mosi=uc_MOSI:miso=uc_MISO,nrf24l01 \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-A nrf24l01=tx-data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 TX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #1&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #2&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #3&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #4&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #5&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #6&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #7&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #8&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=rpi_CSN:clk=rpi_CLK:mosi=rpi_MOSI:miso=rpi_MISO,nrf24l01 \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-A nrf24l01=rx-data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 RX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #1&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #2&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #3&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #4&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #5&amp;quot;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Warnings issued for erroneous commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-test-missing-bytes.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=CS:clk=CLK:mosi=MOSI:miso=MISO,nrf24l01&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Cmd R_REGISTER &amp;quot;CONFIG&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;00&amp;quot;&lt;br /&gt;
 missing data bytes&lt;br /&gt;
 Cmd W_TX_PAYLOAD_NOACK&lt;br /&gt;
 Reg STATUS = &amp;quot;00&amp;quot;&lt;br /&gt;
 missing data bytes&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01 Nordic Semiconductor nRF24L01] ([http://www.nordicsemi.com/eng/nordic/download_resource/8041/1/64576247 datasheet])&lt;br /&gt;
* [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P/ Nordic Semiconductor nRF24L01+] ([http://www.nordicsemi.com/eng/nordic/download_resource/8765/2/88509159 datasheet])&lt;br /&gt;
* [https://github.com/search?q=nrf24l01&amp;amp;type=Repositories github.com: nrf24l01] (various nRF24L01(+) projects and examples)&lt;br /&gt;
* [http://travisgoodspeed.blogspot.co.at/2011/02/promiscuity-is-nrf24l01s-duty.html Travis Goodspeed: Promiscuity is the nRF24L01+&amp;#039;s Duty] (using the nRF24L01 in a pseudo-promiscous mode)&lt;br /&gt;
* [http://blog.cyberexplorer.me/2014/01/sniffing-and-decoding-nrf24l01-and.html Cyber Explorer: Sniffing and decoding NRF24L01+ and Bluetooth LE packets for under $30] (contains information about the modulation used by the nRF24L01)&lt;br /&gt;
* [http://dmitry.gr/index.php?r=05.Projects&amp;amp;proj=11.%20Bluetooth%20LE%20fakery Faking Bluetooth LE] (using the nRF24L01+ to send Bluetooth LE broadcasts)&lt;br /&gt;
* [https://www.dropbox.com/sh/kdenpdg60v5hzbd/AAB4uiuU94HJGxOw1jckb4Nqa Mirror of the datasheets]&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocol decoder]]&lt;br /&gt;
[[Category:SPI]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Nrf24l01&amp;diff=10529</id>
		<title>Protocol decoder:Nrf24l01</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Nrf24l01&amp;diff=10529"/>
		<updated>2015-02-13T13:54:25Z</updated>

		<summary type="html">&lt;p&gt;Jst: /* Variants and Clones of the Chip */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = nrf24l01&lt;br /&gt;
| name            = nRF24L01(+)&lt;br /&gt;
| description     = 2.4GHz transceiver chip&lt;br /&gt;
| status          = supported&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = nrf24l01&lt;br /&gt;
| image           = [[File:NRF24L01_plus_module.jpg|250px]]&lt;br /&gt;
| input           = spi&lt;br /&gt;
| output          = nrf24l01&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;nrf24l01&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the protocol spoken by the Nordic Semiconductor [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01 nRF24L01] and [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P nRF24L01+] 2.4GHz transceiver chips.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Modules with these chips can be purchased fairly inexpensive from various online marketplaces. Most (all?) have an 8-pin header with the following pinout:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
  ! Function&lt;br /&gt;
  ! Pin&lt;br /&gt;
  ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
  ! Function&lt;br /&gt;
|-&lt;br /&gt;
  | GND&lt;br /&gt;
  | 1 &lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
  | VCC&lt;br /&gt;
|-&lt;br /&gt;
  | CE&lt;br /&gt;
  | 3&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
  | CSN&lt;br /&gt;
|-&lt;br /&gt;
  | SCK&lt;br /&gt;
  | 5&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
  | MOSI&lt;br /&gt;
|-&lt;br /&gt;
  | MISO&lt;br /&gt;
  | 7&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
  | IRQ&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The chip has two chip select pins, &amp;quot;CE&amp;quot; used to control the standby mode, and &amp;quot;CSN&amp;quot; used for SPI communication.&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
The chip uses the standard SPI protocol and pins (CSN, SCK, MOSI, MISO), with the additional CE (used to control the RX/TX and standby modes) and IRQ (used to inform the SPI master about the completion of a packet reception/transmission) signals. If the number of available pins of the master are scarce, the CE pin can be tied to VCC and the IRQ pin can be left open. Polling over SPI can be used instead.&lt;br /&gt;
&lt;br /&gt;
SPI commands can have variable length, the CSN signal has to stay low during the whole command, and then go high after the last byte. The first byte of a command defines the type of the command, the chip always outputs its internal status register at the beginning. The following bytes are dependent on the command type, can be register values to write into the chip or payload data to send, or empty bytes that are ignored if the command only reads the output of the chip.&lt;br /&gt;
&lt;br /&gt;
== Variants and Clones of the Chip ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Nordic&amp;lt;br&amp;gt;Semiconductor&lt;br /&gt;
|nRF24L01&lt;br /&gt;
|First chip of the family.&lt;br /&gt;
Supports data rates of 1 Mbps and 2 Mbps.&lt;br /&gt;
Some features of the chip&lt;br /&gt;
(dynamic payload length, suppression of ACK packets)&lt;br /&gt;
and their corresponding SPI commands have to be enabled using the&lt;br /&gt;
&amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt;+0x73 command before they can be used.&lt;br /&gt;
|-&lt;br /&gt;
|nRF24L01+&lt;br /&gt;
|Drop-in replacement for the nRF24L01 with the following additions:&lt;br /&gt;
* In addition to the 1 and 2 Mbps data rates, the chip also supports 250 kbps with a higher sensitivity as for the other data rates.&lt;br /&gt;
* No need to &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt; certain features.&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Beken&amp;lt;br&amp;gt;Corporation&lt;br /&gt;
| BK2401&lt;br /&gt;
| nRF24L01 clone that only supports a data rate of 1 Mbps.&lt;br /&gt;
Contains a second register bank that can be switched to with the &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt;+0x53 command.&lt;br /&gt;
The registers in this bank have to be written with certain magic values&lt;br /&gt;
(specified in the datasheet)&lt;br /&gt;
before the chip can be used.&lt;br /&gt;
|-&lt;br /&gt;
| BK2421&lt;br /&gt;
| Same as the BK2401, but also supports a data rate of 2 Mbps.&lt;br /&gt;
|-&lt;br /&gt;
| BK2423&lt;br /&gt;
| A clone that supports the three data rates of the nRF24L01+. Also has the second register bank.&lt;br /&gt;
|-&lt;br /&gt;
| BK2491&lt;br /&gt;
| Another clone that only supports 1 and 2 Mbps. Also has the second register bank.&amp;lt;br&amp;gt;&lt;br /&gt;
(There is no data sheet available for this chip, but one can find the datasheet of a &amp;#039;&amp;#039;Wenshing Electronics TRW-24G2&amp;#039;&amp;#039; module that contains the chip. When searching online for &amp;#039;&amp;#039;BK2491 datasheet&amp;#039;&amp;#039; one does however find various datasheets for other (even completely unrelated) Beken chips because the PDF title of these document is &amp;#039;&amp;#039;BK2491 Specification&amp;#039;&amp;#039;; apparently the unreleased datasheet for this chip was used as a template for other datasheets without changing the title.)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Hope Microelectronics&lt;br /&gt;
| RFM70&lt;br /&gt;
| A RF module containing a COB. The PDF title says &amp;#039;&amp;#039;BK2491 Specification&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| RFM73&lt;br /&gt;
| A RF module containing a COB. The PDF title says &amp;#039;&amp;#039;BK2423 Specification&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | Panchip&amp;lt;br&amp;gt;Microelectronics&lt;br /&gt;
| [http://www.panchip.com/en/products_show.aspx?cid=63&amp;amp;id=333 XN297]&lt;br /&gt;
| nRF24L01 clone: Supports 1 and 2 Mbps data rates and also needs the &amp;lt;tt&amp;gt;ACTIVATE+0x73&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
Contains three additional registers (&amp;lt;tt&amp;gt;DEMOD_CAL&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;RF_CAL&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;BB_CAL&amp;lt;/tt&amp;gt;).&lt;br /&gt;
Found on some [http://www.deviationtx.com/forum/protocol-development/3213-moontop-m9911-with-panchip-xn297 toy quadcopters];&lt;br /&gt;
datasheet is only available in chinese.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | SI&amp;lt;br&amp;gt;Semiconductors&lt;br /&gt;
| [http://www.dn-ic.com/ic_2/Nordic/SI24R1.html SI24R1]&lt;br /&gt;
| nRF24L01+ clone: Support three data rates and no &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
Often advertised as &amp;#039;&amp;#039;power enhanced&amp;#039;&amp;#039; or similar because the chip can [https://github.com/solarkennedy/equail/tree/master/Libraries/RF24 transmit with 7dBm].&lt;br /&gt;
The modules containing this chip are often described as &amp;quot;&amp;#039;&amp;#039;compatible nRF24L01(+)&amp;#039;&amp;#039;&amp;quot; and many sellers directly link to the nRF24L01(+) datasheets (the SI24R1 datasheet is only available in chinese).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | Semitek&lt;br /&gt;
| SE8R01&lt;br /&gt;
| Incompatible clone that uses a [http://nerdralph.blogspot.co.at/2014/11/se8r01-24ghz-wireless-modules.html slightly different on-air format].&lt;br /&gt;
Supports 500 kbps (not 250 kbps), 1 and 2 Mbps data rates and also has a second register bank (even though it&amp;#039;s not documented in the datasheet, see the blog post linked above).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It&amp;#039;s not known if the on-air format of the clones is compatible with the original chips (except for the SE8R01, where it&amp;#039;s clear that it doesn&amp;#039;t work), the datasheets of the clones don&amp;#039;t go into so much detail. The Nordic datasheets describe their &amp;quot;&amp;#039;&amp;#039;Enhanced ShockBurst™&amp;#039;&amp;#039;&amp;quot; mode and frame format, the Beken datasheets only briefly mention a &amp;quot;&amp;#039;&amp;#039;burst mode&amp;#039;&amp;#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Decoder ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;nrf24l01&amp;lt;/tt&amp;gt; decoder stacks on top of the [[Protocol decoder:spi|SPI decoder]] and decodes the commands to the chip and the responses of the chip, and also issues warnings for wrong/incomplete commands.&lt;br /&gt;
&lt;br /&gt;
Some decoded commands in [[PulseView]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:NRF24L01 PD write register.png|&amp;lt;small&amp;gt;Decoded &amp;quot;Write Register&amp;quot; command.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:NRF24L01 PD tx payload.png|&amp;lt;small&amp;gt;Decoded payload that is going to be transmitted.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:NRF24L01 PD rx payload.png|&amp;lt;small&amp;gt;The payload on the receiver side.&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[sigrok-cli]] can be used to decode the capture in the following way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=rpi_CSN:clk=rpi_CLK:mosi=rpi_MOSI:miso=rpi_MISO,nrf24l01&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Cmd R_REGISTER &amp;quot;CONFIG&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Reg CONFIG = &amp;quot;08&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: CONFIG = &amp;quot;08&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: RF_CH = &amp;quot;3E&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: RX_ADDR_P0 = &amp;quot;376774367E&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 ...&lt;br /&gt;
 Cmd R_RX_PAYLOAD&lt;br /&gt;
 Reg STATUS = &amp;quot;40&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can be seen that the register values are hex encoded, while the payload data is, if possible, represented as ASCII characters.&lt;br /&gt;
&lt;br /&gt;
If only the payload is of interest, the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;tx-data&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;rx-data&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; annotation classes can be selected using the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;-A|--protocol-decoder-annotations&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; option:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=uc_CSN:clk=uc_CLK:mosi=uc_MOSI:miso=uc_MISO,nrf24l01 \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-A nrf24l01=tx-data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 TX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #1&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #2&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #3&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #4&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #5&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #6&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #7&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #8&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=rpi_CSN:clk=rpi_CLK:mosi=rpi_MOSI:miso=rpi_MISO,nrf24l01 \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-A nrf24l01=rx-data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 RX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #1&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #2&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #3&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #4&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #5&amp;quot;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Warnings issued for erroneous commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-test-missing-bytes.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=CS:clk=CLK:mosi=MOSI:miso=MISO,nrf24l01&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Cmd R_REGISTER &amp;quot;CONFIG&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;00&amp;quot;&lt;br /&gt;
 missing data bytes&lt;br /&gt;
 Cmd W_TX_PAYLOAD_NOACK&lt;br /&gt;
 Reg STATUS = &amp;quot;00&amp;quot;&lt;br /&gt;
 missing data bytes&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01 Nordic Semiconductor nRF24L01] ([http://www.nordicsemi.com/eng/nordic/download_resource/8041/1/64576247 datasheet])&lt;br /&gt;
* [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P/ Nordic Semiconductor nRF24L01+] ([http://www.nordicsemi.com/eng/nordic/download_resource/8765/2/88509159 datasheet])&lt;br /&gt;
* [https://github.com/search?q=nrf24l01&amp;amp;type=Repositories github.com: nrf24l01] (various nRF24L01(+) projects and examples)&lt;br /&gt;
* [http://travisgoodspeed.blogspot.co.at/2011/02/promiscuity-is-nrf24l01s-duty.html Travis Goodspeed: Promiscuity is the nRF24L01+&amp;#039;s Duty] (using the nRF24L01 in a pseudo-promiscous mode)&lt;br /&gt;
* [http://blog.cyberexplorer.me/2014/01/sniffing-and-decoding-nrf24l01-and.html Cyber Explorer: Sniffing and decoding NRF24L01+ and Bluetooth LE packets for under $30] (contains information about the modulation used by the nRF24L01)&lt;br /&gt;
* [http://dmitry.gr/index.php?r=05.Projects&amp;amp;proj=11.%20Bluetooth%20LE%20fakery Faking Bluetooth LE] (using the nRF24L01+ to send Bluetooth LE broadcasts)&lt;br /&gt;
* [https://www.dropbox.com/sh/kdenpdg60v5hzbd/AAB4uiuU94HJGxOw1jckb4Nqa Mirror of the datasheets]&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocol decoder]]&lt;br /&gt;
[[Category:SPI]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Nrf24l01&amp;diff=10528</id>
		<title>Protocol decoder:Nrf24l01</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Nrf24l01&amp;diff=10528"/>
		<updated>2015-02-13T05:54:23Z</updated>

		<summary type="html">&lt;p&gt;Jst: /* Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = nrf24l01&lt;br /&gt;
| name            = nRF24L01(+)&lt;br /&gt;
| description     = 2.4GHz transceiver chip&lt;br /&gt;
| status          = supported&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = nrf24l01&lt;br /&gt;
| image           = [[File:NRF24L01_plus_module.jpg|250px]]&lt;br /&gt;
| input           = spi&lt;br /&gt;
| output          = nrf24l01&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;nrf24l01&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the protocol spoken by the Nordic Semiconductor [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01 nRF24L01] and [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P nRF24L01+] 2.4GHz transceiver chips.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Modules with these chips can be purchased fairly inexpensive from various online marketplaces. Most (all?) have an 8-pin header with the following pinout:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
  ! Function&lt;br /&gt;
  ! Pin&lt;br /&gt;
  ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
  ! Function&lt;br /&gt;
|-&lt;br /&gt;
  | GND&lt;br /&gt;
  | 1 &lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
  | VCC&lt;br /&gt;
|-&lt;br /&gt;
  | CE&lt;br /&gt;
  | 3&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
  | CSN&lt;br /&gt;
|-&lt;br /&gt;
  | SCK&lt;br /&gt;
  | 5&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
  | MOSI&lt;br /&gt;
|-&lt;br /&gt;
  | MISO&lt;br /&gt;
  | 7&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
  | IRQ&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The chip has two chip select pins, &amp;quot;CE&amp;quot; used to control the standby mode, and &amp;quot;CSN&amp;quot; used for SPI communication.&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
The chip uses the standard SPI protocol and pins (CSN, SCK, MOSI, MISO), with the additional CE (used to control the RX/TX and standby modes) and IRQ (used to inform the SPI master about the completion of a packet reception/transmission) signals. If the number of available pins of the master are scarce, the CE pin can be tied to VCC and the IRQ pin can be left open. Polling over SPI can be used instead.&lt;br /&gt;
&lt;br /&gt;
SPI commands can have variable length, the CSN signal has to stay low during the whole command, and then go high after the last byte. The first byte of a command defines the type of the command, the chip always outputs its internal status register at the beginning. The following bytes are dependent on the command type, can be register values to write into the chip or payload data to send, or empty bytes that are ignored if the command only reads the output of the chip.&lt;br /&gt;
&lt;br /&gt;
== Variants and Clones of the Chip ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Nordic&amp;lt;br&amp;gt;Semiconductor&lt;br /&gt;
|nRF24L01&lt;br /&gt;
|First chip of the family.&lt;br /&gt;
Supports data rates of 1 Mbps and 2 Mbps.&lt;br /&gt;
Some features of the chip&lt;br /&gt;
(dynamic payload length, suppression of ACK packets)&lt;br /&gt;
and their corresponding SPI commands have to be enabled using the&lt;br /&gt;
&amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt;+0x73 command before they can be used.&lt;br /&gt;
|-&lt;br /&gt;
|nRF24L01+&lt;br /&gt;
|Drop-in replacement for the nRF24L01 with the following additions:&lt;br /&gt;
* In addition to the 1 and 2 Mbps data rates, the chip also supports 250 kbps with a higher sensitivity as for the other data rates.&lt;br /&gt;
* No need to &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt; certain features.&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Beken&amp;lt;br&amp;gt;Corporation&lt;br /&gt;
| BK2401&lt;br /&gt;
| nRF24L01 clone that only supports a data rate of 1 Mbps.&lt;br /&gt;
Contains a second register bank that can be switched to with the &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt;+0x53 command.&lt;br /&gt;
The registers in this bank have to be written with certain magic values&lt;br /&gt;
(specified in the datasheet)&lt;br /&gt;
before the chip can be used.&lt;br /&gt;
|-&lt;br /&gt;
| BK2421&lt;br /&gt;
| Same as the BK2401, but also supports a data rate of 2 Mbps.&lt;br /&gt;
|-&lt;br /&gt;
| BK2423&lt;br /&gt;
| A clone that supports the three data rates of the nRF24L01+. Also has the second register bank.&lt;br /&gt;
|-&lt;br /&gt;
| BK2491&lt;br /&gt;
| Another clone that only supports 1 and 2 Mbps. Also has the second register bank.&amp;lt;br&amp;gt;&lt;br /&gt;
(There is no data sheet available for this chip, but one can find the datasheet of a &amp;#039;&amp;#039;Wenshing Electronics TRW-24G2&amp;#039;&amp;#039; module that contains the chip. When searching online for &amp;#039;&amp;#039;BK2491 datasheet&amp;#039;&amp;#039; one does however find various datasheets for other (even completely unrelated) Beken chips because the PDF title of these document is &amp;#039;&amp;#039;BK2491 Specification&amp;#039;&amp;#039;; apparently the unreleased datasheet for this chip was used as a template for other datasheets without changing the title.)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Hope Microelectronics&lt;br /&gt;
| RFM70&lt;br /&gt;
| A RF module containing a COB. The PDF title says &amp;#039;&amp;#039;BK2491 Specification&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| RFM73&lt;br /&gt;
| A RF module containing a COB. The PDF title says &amp;#039;&amp;#039;BK2423 Specification&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | Panchip&amp;lt;br&amp;gt;Microelectronics&lt;br /&gt;
| [http://www.panchip.com/en/products_show.aspx?cid=63&amp;amp;id=333 XN297]&lt;br /&gt;
| nRF24L01 clone: Supports 1 and 2 Mbps data rates and also needs the &amp;lt;tt&amp;gt;ACTIVATE+0x73&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
Contains three additional registers (&amp;lt;tt&amp;gt;DEMOD_CAL&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;RF_CAL&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;BB_CAL&amp;lt;/tt&amp;gt;).&lt;br /&gt;
Found on some [http://www.deviationtx.com/forum/protocol-development/3213-moontop-m9911-with-panchip-xn297 toy quadcopters];&lt;br /&gt;
datasheet is only available in chinese.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | SI&amp;lt;br&amp;gt;Semiconductors&lt;br /&gt;
| [http://www.dn-ic.com/ic_2/Nordic/SI24R1.html SI24R1]&lt;br /&gt;
| nRF24L01+ clone: Support three data rates and no &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
Often advertised as &amp;#039;&amp;#039;power enhanced&amp;#039;&amp;#039; or similar because the chip can [https://github.com/solarkennedy/equail/tree/master/Libraries/RF24 transmit with 7dBm].&lt;br /&gt;
The modules containing this chip are often described as &amp;quot;&amp;#039;&amp;#039;compatible nRF24L01(+)&amp;#039;&amp;#039;&amp;quot; and many sellers directly link to the nRF24L01(+) datasheets (the SI24R1 datasheet is only available in chinese).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It&amp;#039;s not known if the on-air format of the clones is compatible with the original chips, the datasheets of the clones don&amp;#039;t go into so much detail. The Nordic datasheets describe their &amp;quot;&amp;#039;&amp;#039;Enhanced ShockBurst™&amp;#039;&amp;#039;&amp;quot; mode and frame format, the Beken datasheets only briefly mention a &amp;quot;&amp;#039;&amp;#039;burst mode&amp;#039;&amp;#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Decoder ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;nrf24l01&amp;lt;/tt&amp;gt; decoder stacks on top of the [[Protocol decoder:spi|SPI decoder]] and decodes the commands to the chip and the responses of the chip, and also issues warnings for wrong/incomplete commands.&lt;br /&gt;
&lt;br /&gt;
Some decoded commands in [[PulseView]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:NRF24L01 PD write register.png|&amp;lt;small&amp;gt;Decoded &amp;quot;Write Register&amp;quot; command.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:NRF24L01 PD tx payload.png|&amp;lt;small&amp;gt;Decoded payload that is going to be transmitted.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:NRF24L01 PD rx payload.png|&amp;lt;small&amp;gt;The payload on the receiver side.&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[sigrok-cli]] can be used to decode the capture in the following way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=rpi_CSN:clk=rpi_CLK:mosi=rpi_MOSI:miso=rpi_MISO,nrf24l01&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Cmd R_REGISTER &amp;quot;CONFIG&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Reg CONFIG = &amp;quot;08&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: CONFIG = &amp;quot;08&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: RF_CH = &amp;quot;3E&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: RX_ADDR_P0 = &amp;quot;376774367E&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 ...&lt;br /&gt;
 Cmd R_RX_PAYLOAD&lt;br /&gt;
 Reg STATUS = &amp;quot;40&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can be seen that the register values are hex encoded, while the payload data is, if possible, represented as ASCII characters.&lt;br /&gt;
&lt;br /&gt;
If only the payload is of interest, the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;tx-data&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;rx-data&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; annotation classes can be selected using the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;-A|--protocol-decoder-annotations&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; option:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=uc_CSN:clk=uc_CLK:mosi=uc_MOSI:miso=uc_MISO,nrf24l01 \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-A nrf24l01=tx-data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 TX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #1&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #2&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #3&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #4&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #5&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #6&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #7&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #8&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=rpi_CSN:clk=rpi_CLK:mosi=rpi_MOSI:miso=rpi_MISO,nrf24l01 \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-A nrf24l01=rx-data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 RX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #1&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #2&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #3&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #4&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #5&amp;quot;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Warnings issued for erroneous commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-test-missing-bytes.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=CS:clk=CLK:mosi=MOSI:miso=MISO,nrf24l01&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Cmd R_REGISTER &amp;quot;CONFIG&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;00&amp;quot;&lt;br /&gt;
 missing data bytes&lt;br /&gt;
 Cmd W_TX_PAYLOAD_NOACK&lt;br /&gt;
 Reg STATUS = &amp;quot;00&amp;quot;&lt;br /&gt;
 missing data bytes&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01 Nordic Semiconductor nRF24L01] ([http://www.nordicsemi.com/eng/nordic/download_resource/8041/1/64576247 datasheet])&lt;br /&gt;
* [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P/ Nordic Semiconductor nRF24L01+] ([http://www.nordicsemi.com/eng/nordic/download_resource/8765/2/88509159 datasheet])&lt;br /&gt;
* [https://github.com/search?q=nrf24l01&amp;amp;type=Repositories github.com: nrf24l01] (various nRF24L01(+) projects and examples)&lt;br /&gt;
* [http://travisgoodspeed.blogspot.co.at/2011/02/promiscuity-is-nrf24l01s-duty.html Travis Goodspeed: Promiscuity is the nRF24L01+&amp;#039;s Duty] (using the nRF24L01 in a pseudo-promiscous mode)&lt;br /&gt;
* [http://blog.cyberexplorer.me/2014/01/sniffing-and-decoding-nrf24l01-and.html Cyber Explorer: Sniffing and decoding NRF24L01+ and Bluetooth LE packets for under $30] (contains information about the modulation used by the nRF24L01)&lt;br /&gt;
* [http://dmitry.gr/index.php?r=05.Projects&amp;amp;proj=11.%20Bluetooth%20LE%20fakery Faking Bluetooth LE] (using the nRF24L01+ to send Bluetooth LE broadcasts)&lt;br /&gt;
* [https://www.dropbox.com/sh/kdenpdg60v5hzbd/AAB4uiuU94HJGxOw1jckb4Nqa Mirror of the datasheets]&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocol decoder]]&lt;br /&gt;
[[Category:SPI]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Nrf24l01&amp;diff=10527</id>
		<title>Protocol decoder:Nrf24l01</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Nrf24l01&amp;diff=10527"/>
		<updated>2015-02-13T05:51:52Z</updated>

		<summary type="html">&lt;p&gt;Jst: /* Clones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = nrf24l01&lt;br /&gt;
| name            = nRF24L01(+)&lt;br /&gt;
| description     = 2.4GHz transceiver chip&lt;br /&gt;
| status          = supported&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = nrf24l01&lt;br /&gt;
| image           = [[File:NRF24L01_plus_module.jpg|250px]]&lt;br /&gt;
| input           = spi&lt;br /&gt;
| output          = nrf24l01&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;nrf24l01&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the protocol spoken by the Nordic Semiconductor [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01 nRF24L01] and [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P nRF24L01+] 2.4GHz transceiver chips.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Modules with these chips can be purchased fairly inexpensive from various online marketplaces. Most (all?) have an 8-pin header with the following pinout:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
  ! Function&lt;br /&gt;
  ! Pin&lt;br /&gt;
  ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
  ! Function&lt;br /&gt;
|-&lt;br /&gt;
  | GND&lt;br /&gt;
  | 1 &lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
  | VCC&lt;br /&gt;
|-&lt;br /&gt;
  | CE&lt;br /&gt;
  | 3&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
  | CSN&lt;br /&gt;
|-&lt;br /&gt;
  | SCK&lt;br /&gt;
  | 5&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
  | MOSI&lt;br /&gt;
|-&lt;br /&gt;
  | MISO&lt;br /&gt;
  | 7&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
  | IRQ&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The chip has two chip select pins, &amp;quot;CE&amp;quot; used to control the standby mode, and &amp;quot;CSN&amp;quot; used for SPI communication.&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
The chip uses the standard SPI protocol and pins (CSN, SCK, MOSI, MISO), with the additional CE (used to control the RX/TX and standby modes) and IRQ (used to inform the SPI master about the completion of a packet reception/transmission) signals. If the number of available pins of the master are scarce, the CE pin can be tied to VCC and the IRQ pin can be left open. Polling over SPI can be used instead.&lt;br /&gt;
&lt;br /&gt;
SPI commands can have variable length, the CSN signal has to stay low during the whole command, and then go high after the last byte. The first byte of a command defines the type of the command, the chip always outputs its internal status register at the beginning. The following bytes are dependent on the command type, can be register values to write into the chip or payload data to send, or empty bytes that are ignored if the command only reads the output of the chip.&lt;br /&gt;
&lt;br /&gt;
== Variants and Clones of the Chip ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Nordic&amp;lt;br&amp;gt;Semiconductor&lt;br /&gt;
|nRF24L01&lt;br /&gt;
|First chip of the family.&lt;br /&gt;
Supports data rates of 1 Mbps and 2 Mbps.&lt;br /&gt;
Some features of the chip&lt;br /&gt;
(dynamic payload length, suppression of ACK packets)&lt;br /&gt;
and their corresponding SPI commands have to be enabled using the&lt;br /&gt;
&amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt;+0x73 command before they can be used.&lt;br /&gt;
|-&lt;br /&gt;
|nRF24L01+&lt;br /&gt;
|Drop-in replacement for the nRF24L01 with the following additions:&lt;br /&gt;
* In addition to the 1 and 2 Mbps data rates, the chip also supports 250 kbps with a higher sensitivity as for the other data rates.&lt;br /&gt;
* No need to &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt; certain features.&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Beken&amp;lt;br&amp;gt;Corporation&lt;br /&gt;
| BK2401&lt;br /&gt;
| nRF24L01 clone that only supports a data rate of 1 Mbps.&lt;br /&gt;
Contains a second register bank that can be switched to with the &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt;+0x53 command.&lt;br /&gt;
The registers in this bank have to be written with certain magic values&lt;br /&gt;
(specified in the datasheet)&lt;br /&gt;
before the chip can be used.&lt;br /&gt;
|-&lt;br /&gt;
| BK2421&lt;br /&gt;
| Same as the BK2401, but also supports a data rate of 2 Mbps.&lt;br /&gt;
|-&lt;br /&gt;
| BK2423&lt;br /&gt;
| A clone that supports the three data rates of the nRF24L01+. Also has the second register bank.&lt;br /&gt;
|-&lt;br /&gt;
| BK2491&lt;br /&gt;
| Another clone that only supports 1 and 2 Mbps. Also has the second register bank.&amp;lt;br&amp;gt;&lt;br /&gt;
(There is no data sheet available for this chip, but one can find the datasheet of a &amp;#039;&amp;#039;Wenshing Electronics TRW-24G2&amp;#039;&amp;#039; module that contains the chip. When searching online for &amp;#039;&amp;#039;BK2491 datasheet&amp;#039;&amp;#039; one does however find various datasheets for other (even completely unrelated) Beken chips because the PDF title of these document is &amp;#039;&amp;#039;BK2491 Specification&amp;#039;&amp;#039;; apparently the unreleased datasheet for this chip was used as a template for other datasheets without changing the title.)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center&amp;quot; | Hope Microelectronics&lt;br /&gt;
| RFM70&lt;br /&gt;
| A RF module containing a COB. The PDF title says &amp;#039;&amp;#039;BK2491 Specification&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| RFM73&lt;br /&gt;
| A RF module containing a COB. The PDF title says &amp;#039;&amp;#039;BK2423 Specification&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | Panchip&amp;lt;br&amp;gt;Microelectronics&lt;br /&gt;
| [http://www.panchip.com/en/products_show.aspx?cid=63&amp;amp;id=333 XN297]&lt;br /&gt;
| nRF24L01 clone: Supports 1 and 2 Mbps data rates and also needs the &amp;lt;tt&amp;gt;ACTIVATE+0x73&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
Contains three additional registers (&amp;lt;tt&amp;gt;DEMOD_CAL&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;RF_CAL&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;BB_CAL&amp;lt;/tt&amp;gt;).&lt;br /&gt;
Found on some [http://www.deviationtx.com/forum/protocol-development/3213-moontop-m9911-with-panchip-xn297 toy quadcopters];&lt;br /&gt;
datasheet is only available in chinese.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | SI&amp;lt;br&amp;gt;Semiconductors&lt;br /&gt;
| [http://www.dn-ic.com/ic_2/Nordic/SI24R1.html SI24R1]&lt;br /&gt;
| nRF24L01+ clone: Support three data rates and no &amp;lt;tt&amp;gt;ACTIVATE&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
Often advertised as &amp;#039;&amp;#039;power enhanced&amp;#039;&amp;#039; or similar because the chip can [https://github.com/solarkennedy/equail/tree/master/Libraries/RF24 transmit with 7dBm].&lt;br /&gt;
The modules containing this chip are often described as &amp;quot;&amp;#039;&amp;#039;compatible nRF24L01(+)&amp;#039;&amp;#039;&amp;quot; and many sellers directly link to the nRF24L01(+) datasheets (the SI24R1 datasheet is only available in chinese).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It&amp;#039;s not known if the on-air format of the clones is compatible with the original chips, the datasheets of the clones don&amp;#039;t go into so much detail. The Nordic datasheets describe their &amp;quot;&amp;#039;&amp;#039;Enhanced ShockBurst™&amp;#039;&amp;#039;&amp;quot; mode and frame format, the Beken datasheets only briefly mention a &amp;quot;&amp;#039;&amp;#039;burst mode&amp;#039;&amp;#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Decoder ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;nrf24l01&amp;lt;/tt&amp;gt; decoder stacks on top of the [[Protocol decoder:spi|SPI decoder]] and decodes the commands to the chip and the responses of the chip, and also issues warnings for wrong/incomplete commands.&lt;br /&gt;
&lt;br /&gt;
Some decoded commands in [[PulseView]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:NRF24L01 PD write register.png|&amp;lt;small&amp;gt;Decoded &amp;quot;Write Register&amp;quot; command.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:NRF24L01 PD tx payload.png|&amp;lt;small&amp;gt;Decoded payload that is going to be transmitted.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:NRF24L01 PD rx payload.png|&amp;lt;small&amp;gt;The payload on the receiver side.&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[sigrok-cli]] can be used to decode the capture in the following way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=rpi_CSN:clk=rpi_CLK:mosi=rpi_MOSI:miso=rpi_MISO,nrf24l01&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Cmd R_REGISTER &amp;quot;CONFIG&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Reg CONFIG = &amp;quot;08&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: CONFIG = &amp;quot;08&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: RF_CH = &amp;quot;3E&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: RX_ADDR_P0 = &amp;quot;376774367E&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 ...&lt;br /&gt;
 Cmd R_RX_PAYLOAD&lt;br /&gt;
 Reg STATUS = &amp;quot;40&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can be seen that the register values are hex encoded, while the payload data is, if possible, represented as ASCII characters.&lt;br /&gt;
&lt;br /&gt;
If only the payload is of interest, the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;tx-data&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;rx-data&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; annotation classes can be selected using the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;-A|--protocol-decoder-annotations&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; option:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=uc_CSN:clk=uc_CLK:mosi=uc_MOSI:miso=uc_MISO,nrf24l01 \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-A nrf24l01=tx-data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 TX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #1&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #2&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #3&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #4&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #5&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #6&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #7&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #8&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=rpi_CSN:clk=rpi_CLK:mosi=rpi_MOSI:miso=rpi_MISO,nrf24l01 \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-A nrf24l01=rx-data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 RX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #1&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #2&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #3&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #4&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #5&amp;quot;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Warnings issued for erroneous commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-test-missing-bytes.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=CS:clk=CLK:mosi=MOSI:miso=MISO,nrf24l01&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Cmd R_REGISTER &amp;quot;CONFIG&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;00&amp;quot;&lt;br /&gt;
 missing data bytes&lt;br /&gt;
 Cmd W_TX_PAYLOAD_NOACK&lt;br /&gt;
 Reg STATUS = &amp;quot;00&amp;quot;&lt;br /&gt;
 missing data bytes&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01 Nordic Semiconductor nRF24L01] ([http://www.nordicsemi.com/eng/nordic/download_resource/8041/1/64576247 datasheet])&lt;br /&gt;
* [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P/ Nordic Semiconductor nRF24L01+] ([http://www.nordicsemi.com/eng/nordic/download_resource/8765/2/88509159 datasheet])&lt;br /&gt;
* [https://github.com/search?q=nrf24l01&amp;amp;type=Repositories github.com: nrf24l01] (various nRF24L01(+) projects and examples)&lt;br /&gt;
* [http://travisgoodspeed.blogspot.co.at/2011/02/promiscuity-is-nrf24l01s-duty.html Travis Goodspeed: Promiscuity is the nRF24L01+&amp;#039;s Duty] (using the nRF24L01 in a pseudo-promiscous mode)&lt;br /&gt;
* [http://blog.cyberexplorer.me/2014/01/sniffing-and-decoding-nrf24l01-and.html Cyber Explorer: Sniffing and decoding NRF24L01+ and Bluetooth LE packets for under $30] (contains information about the modulation used by the nRF24L01)&lt;br /&gt;
* [http://dmitry.gr/index.php?r=05.Projects&amp;amp;proj=11.%20Bluetooth%20LE%20fakery Faking Bluetooth LE] (using the nRF24L01+ to send Bluetooth LE broadcasts)&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocol decoder]]&lt;br /&gt;
[[Category:SPI]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Nrf24l01&amp;diff=10526</id>
		<title>Protocol decoder:Nrf24l01</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Nrf24l01&amp;diff=10526"/>
		<updated>2015-02-08T20:55:31Z</updated>

		<summary type="html">&lt;p&gt;Jst: /* Clones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = nrf24l01&lt;br /&gt;
| name            = nRF24L01(+)&lt;br /&gt;
| description     = 2.4GHz transceiver chip&lt;br /&gt;
| status          = supported&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = nrf24l01&lt;br /&gt;
| image           = [[File:NRF24L01_plus_module.jpg|250px]]&lt;br /&gt;
| input           = spi&lt;br /&gt;
| output          = nrf24l01&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;nrf24l01&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the protocol spoken by the Nordic Semiconductor [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01 nRF24L01] and [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P nRF24L01+] 2.4GHz transceiver chips.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Modules with these chips can be purchased fairly inexpensive from various online marketplaces. Most (all?) have an 8-pin header with the following pinout:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
  ! Function&lt;br /&gt;
  ! Pin&lt;br /&gt;
  ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
  ! Function&lt;br /&gt;
|-&lt;br /&gt;
  | GND&lt;br /&gt;
  | 1 &lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
  | VCC&lt;br /&gt;
|-&lt;br /&gt;
  | CE&lt;br /&gt;
  | 3&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
  | CSN&lt;br /&gt;
|-&lt;br /&gt;
  | SCK&lt;br /&gt;
  | 5&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
  | MOSI&lt;br /&gt;
|-&lt;br /&gt;
  | MISO&lt;br /&gt;
  | 7&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
  | IRQ&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The chip has two chip select pins, &amp;quot;CE&amp;quot; used to control the standby mode, and &amp;quot;CSN&amp;quot; used for SPI communication.&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
The chip uses the standard SPI protocol and pins (CSN, SCK, MOSI, MISO), with the additional CE (used to control the RX/TX and standby modes) and IRQ (used to inform the SPI master about the completion of a packet reception/transmission) signals. If the number of available pins of the master are scarce, the CE pin can be tied to VCC and the IRQ pin can be left open. Polling over SPI can be used instead.&lt;br /&gt;
&lt;br /&gt;
SPI commands can have variable length, the CSN signal has to stay low during the whole command, and then go high after the last byte. The first byte of a command defines the type of the command, the chip always outputs its internal status register at the beginning. The following bytes are dependent on the command type, can be register values to write into the chip or payload data to send, or empty bytes that are ignored if the command only reads the output of the chip.&lt;br /&gt;
&lt;br /&gt;
== Clones ==&lt;br /&gt;
&lt;br /&gt;
There exists some chips that use the same (some with some extensions) SPI protocol:&lt;br /&gt;
&lt;br /&gt;
* [http://www.panchip.com/en/products_show.aspx?cid=63&amp;amp;id=333 Panchip Microelectronics XN297]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Contains three additional registers (&amp;lt;tt&amp;gt;DEMOD_CAL&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;RF_CAL&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;BB_CAL&amp;lt;/tt&amp;gt;), otherwise identical.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://www.hoperf.com/rf/2.4g_module/RFM73.htm Hope Microelectronics RFM73]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
From a quick look at the datasheet the protocol used by this chip seems to be the same as the one of the nRF24L01.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Beken Corporation BK2423&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
From a quick look at the datasheet the protocol used by this chip seems to be the same as the one of the nRF24L01.&lt;br /&gt;
(The datasheet can be found through search engines, but no mention of this chip on the official Beken homepage.)&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Decoder ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;nrf24l01&amp;lt;/tt&amp;gt; decoder stacks on top of the [[Protocol decoder:spi|SPI decoder]] and decodes the commands to the chip and the responses of the chip, and also issues warnings for wrong/incomplete commands.&lt;br /&gt;
&lt;br /&gt;
Some decoded commands in [[PulseView]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:NRF24L01 PD write register.png|&amp;lt;small&amp;gt;Decoded &amp;quot;Write Register&amp;quot; command.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:NRF24L01 PD tx payload.png|&amp;lt;small&amp;gt;Decoded payload that is going to be transmitted.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:NRF24L01 PD rx payload.png|&amp;lt;small&amp;gt;The payload on the receiver side.&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[sigrok-cli]] can be used to decode the capture in the following way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=rpi_CSN:clk=rpi_CLK:mosi=rpi_MOSI:miso=rpi_MISO,nrf24l01&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Cmd R_REGISTER &amp;quot;CONFIG&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Reg CONFIG = &amp;quot;08&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: CONFIG = &amp;quot;08&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: RF_CH = &amp;quot;3E&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: RX_ADDR_P0 = &amp;quot;376774367E&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 ...&lt;br /&gt;
 Cmd R_RX_PAYLOAD&lt;br /&gt;
 Reg STATUS = &amp;quot;40&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can be seen that the register values are hex encoded, while the payload data is, if possible, represented as ASCII characters.&lt;br /&gt;
&lt;br /&gt;
If only the payload is of interest, the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;tx-data&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;rx-data&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; annotation classes can be selected using the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;-A|--protocol-decoder-annotations&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; option:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=uc_CSN:clk=uc_CLK:mosi=uc_MOSI:miso=uc_MISO,nrf24l01 \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-A nrf24l01=tx-data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 TX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #1&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #2&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #3&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #4&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #5&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #6&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #7&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #8&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=rpi_CSN:clk=rpi_CLK:mosi=rpi_MOSI:miso=rpi_MISO,nrf24l01 \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-A nrf24l01=rx-data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 RX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #1&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #2&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #3&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #4&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #5&amp;quot;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Warnings issued for erroneous commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-test-missing-bytes.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=CS:clk=CLK:mosi=MOSI:miso=MISO,nrf24l01&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Cmd R_REGISTER &amp;quot;CONFIG&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;00&amp;quot;&lt;br /&gt;
 missing data bytes&lt;br /&gt;
 Cmd W_TX_PAYLOAD_NOACK&lt;br /&gt;
 Reg STATUS = &amp;quot;00&amp;quot;&lt;br /&gt;
 missing data bytes&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01 Nordic Semiconductor nRF24L01] ([http://www.nordicsemi.com/eng/nordic/download_resource/8041/1/64576247 datasheet])&lt;br /&gt;
* [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P/ Nordic Semiconductor nRF24L01+] ([http://www.nordicsemi.com/eng/nordic/download_resource/8765/2/88509159 datasheet])&lt;br /&gt;
* [https://github.com/search?q=nrf24l01&amp;amp;type=Repositories github.com: nrf24l01] (various nRF24L01(+) projects and examples)&lt;br /&gt;
* [http://travisgoodspeed.blogspot.co.at/2011/02/promiscuity-is-nrf24l01s-duty.html Travis Goodspeed: Promiscuity is the nRF24L01+&amp;#039;s Duty] (using the nRF24L01 in a pseudo-promiscous mode)&lt;br /&gt;
* [http://blog.cyberexplorer.me/2014/01/sniffing-and-decoding-nrf24l01-and.html Cyber Explorer: Sniffing and decoding NRF24L01+ and Bluetooth LE packets for under $30] (contains information about the modulation used by the nRF24L01)&lt;br /&gt;
* [http://dmitry.gr/index.php?r=05.Projects&amp;amp;proj=11.%20Bluetooth%20LE%20fakery Faking Bluetooth LE] (using the nRF24L01+ to send Bluetooth LE broadcasts)&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocol decoder]]&lt;br /&gt;
[[Category:SPI]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Nrf24l01&amp;diff=10520</id>
		<title>Protocol decoder:Nrf24l01</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Nrf24l01&amp;diff=10520"/>
		<updated>2015-02-06T16:36:21Z</updated>

		<summary type="html">&lt;p&gt;Jst: add clones section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = nrf24l01&lt;br /&gt;
| name            = nRF24L01(+)&lt;br /&gt;
| description     = 2.4GHz transceiver chip&lt;br /&gt;
| status          = supported&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = nrf24l01&lt;br /&gt;
| image           = [[File:NRF24L01_plus_module.jpg|250px]]&lt;br /&gt;
| input           = spi&lt;br /&gt;
| output          = nrf24l01&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;nrf24l01&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the protocol spoken by the Nordic Semiconductor [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01 nRF24L01] and [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P nRF24L01+] 2.4GHz transceiver chips.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Modules with these chips can be purchased fairly inexpensive from various online marketplaces. Most (all?) have an 8-pin header with the following pinout:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
  ! Function&lt;br /&gt;
  ! Pin&lt;br /&gt;
  ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
  ! Function&lt;br /&gt;
|-&lt;br /&gt;
  | GND&lt;br /&gt;
  | 1 &lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
  | VCC&lt;br /&gt;
|-&lt;br /&gt;
  | CE&lt;br /&gt;
  | 3&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
  | CSN&lt;br /&gt;
|-&lt;br /&gt;
  | SCK&lt;br /&gt;
  | 5&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
  | MOSI&lt;br /&gt;
|-&lt;br /&gt;
  | MISO&lt;br /&gt;
  | 7&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
  | IRQ&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The chip has two chip select pins, &amp;quot;CE&amp;quot; used to control the standby mode, and &amp;quot;CSN&amp;quot; used for SPI communication.&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
The chip uses the standard SPI protocol and pins (CSN, SCK, MOSI, MISO), with the additional CE (used to control the RX/TX and standby modes) and IRQ (used to inform the SPI master about the completion of a packet reception/transmission) signals. If the number of available pins of the master are scarce, the CE pin can be tied to VCC and the IRQ pin can be left open. Polling over SPI can be used instead.&lt;br /&gt;
&lt;br /&gt;
SPI commands can have variable length, the CSN signal has to stay low during the whole command, and then go high after the last byte. The first byte of a command defines the type of the command, the chip always outputs its internal status register at the beginning. The following bytes are dependent on the command type, can be register values to write into the chip or payload data to send, or empty bytes that are ignored if the command only reads the output of the chip.&lt;br /&gt;
&lt;br /&gt;
== Clones ==&lt;br /&gt;
&lt;br /&gt;
There exists some chips that use the same (some with some extensions) SPI protocol:&lt;br /&gt;
&lt;br /&gt;
* [http://www.panchip.com/en/products_show.aspx?cid=63&amp;amp;id=333 Panchip Microelectronics XN297]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Contains three additional registers (&amp;lt;tt&amp;gt;DEMOD_CAL&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;RF_CAL&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;BB_CAL&amp;lt;/tt&amp;gt;), otherwise identical.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://www.hoperf.com/rf/2.4g_module/RFM73.htm Hope Microelectronics RFM73]&lt;br /&gt;
&lt;br /&gt;
== Decoder ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;nrf24l01&amp;lt;/tt&amp;gt; decoder stacks on top of the [[Protocol decoder:spi|SPI decoder]] and decodes the commands to the chip and the responses of the chip, and also issues warnings for wrong/incomplete commands.&lt;br /&gt;
&lt;br /&gt;
Some decoded commands in [[PulseView]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:NRF24L01 PD write register.png|&amp;lt;small&amp;gt;Decoded &amp;quot;Write Register&amp;quot; command.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:NRF24L01 PD tx payload.png|&amp;lt;small&amp;gt;Decoded payload that is going to be transmitted.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:NRF24L01 PD rx payload.png|&amp;lt;small&amp;gt;The payload on the receiver side.&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[sigrok-cli]] can be used to decode the capture in the following way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=rpi_CSN:clk=rpi_CLK:mosi=rpi_MOSI:miso=rpi_MISO,nrf24l01&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Cmd R_REGISTER &amp;quot;CONFIG&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Reg CONFIG = &amp;quot;08&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: CONFIG = &amp;quot;08&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: RF_CH = &amp;quot;3E&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 Cmd W_REGISTER: RX_ADDR_P0 = &amp;quot;376774367E&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;0E&amp;quot;&lt;br /&gt;
 ...&lt;br /&gt;
 Cmd R_RX_PAYLOAD&lt;br /&gt;
 Reg STATUS = &amp;quot;40&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can be seen that the register values are hex encoded, while the payload data is, if possible, represented as ASCII characters.&lt;br /&gt;
&lt;br /&gt;
If only the payload is of interest, the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;tx-data&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;rx-data&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; annotation classes can be selected using the &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;-A|--protocol-decoder-annotations&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; option:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=uc_CSN:clk=uc_CLK:mosi=uc_MOSI:miso=uc_MISO,nrf24l01 \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-A nrf24l01=tx-data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 TX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #1&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #2&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #3&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #4&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #5&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #6&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #7&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #8&amp;quot;&lt;br /&gt;
 TX payload = &amp;quot;message #9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-communication.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=rpi_CSN:clk=rpi_CLK:mosi=rpi_MOSI:miso=rpi_MISO,nrf24l01 \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-A nrf24l01=rx-data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 RX payload = &amp;quot;message #0&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #1&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #2&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #3&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #4&amp;quot;&lt;br /&gt;
 RX payload = &amp;quot;message #5&amp;quot;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Warnings issued for erroneous commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-cli -i sigrok-dumps/spi/nrf24l01/nrf24l01-test-missing-bytes.sr \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
              &amp;#039;&amp;#039;&amp;#039;-P spi:cs=CS:clk=CLK:mosi=MOSI:miso=MISO,nrf24l01&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Cmd R_REGISTER &amp;quot;CONFIG&amp;quot;&lt;br /&gt;
 Reg STATUS = &amp;quot;00&amp;quot;&lt;br /&gt;
 missing data bytes&lt;br /&gt;
 Cmd W_TX_PAYLOAD_NOACK&lt;br /&gt;
 Reg STATUS = &amp;quot;00&amp;quot;&lt;br /&gt;
 missing data bytes&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01 Nordic Semiconductor nRF24L01] ([http://www.nordicsemi.com/eng/nordic/download_resource/8041/1/64576247 datasheet])&lt;br /&gt;
* [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P/ Nordic Semiconductor nRF24L01+] ([http://www.nordicsemi.com/eng/nordic/download_resource/8765/2/88509159 datasheet])&lt;br /&gt;
* [https://github.com/search?q=nrf24l01&amp;amp;type=Repositories github.com: nrf24l01] (various nRF24L01(+) projects and examples)&lt;br /&gt;
* [http://travisgoodspeed.blogspot.co.at/2011/02/promiscuity-is-nrf24l01s-duty.html Travis Goodspeed: Promiscuity is the nRF24L01+&amp;#039;s Duty] (using the nRF24L01 in a pseudo-promiscous mode)&lt;br /&gt;
* [http://blog.cyberexplorer.me/2014/01/sniffing-and-decoding-nrf24l01-and.html Cyber Explorer: Sniffing and decoding NRF24L01+ and Bluetooth LE packets for under $30] (contains information about the modulation used by the nRF24L01)&lt;br /&gt;
* [http://dmitry.gr/index.php?r=05.Projects&amp;amp;proj=11.%20Bluetooth%20LE%20fakery Faking Bluetooth LE] (using the nRF24L01+ to send Bluetooth LE broadcasts)&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocol decoder]]&lt;br /&gt;
[[Category:SPI]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Linux&amp;diff=10417</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Linux&amp;diff=10417"/>
		<updated>2015-01-02T13:15:03Z</updated>

		<summary type="html">&lt;p&gt;Jst: AX_CXX_COMPILE_STDCXX_11 warnings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes how to build/install the sigrok subprojects on Linux.&lt;br /&gt;
&lt;br /&gt;
== Distribution packages ==&lt;br /&gt;
&lt;br /&gt;
See [[Downloads#Binaries_and_distribution_packages|Downloads]].&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
=== libserialport ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Installing the [[Building#Build_requirements|requirements]]:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Example on Debian/Ubuntu (please check your respective distro&amp;#039;s package manager tool if you use other distros):&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sudo apt-get install git-core gcc make autoconf automake libtool&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Building:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;git clone git://sigrok.org/libserialport&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;cd libserialport&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./autogen.sh&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./configure&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;make&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sudo make install&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== libsigrok ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Installing the [[Building#Build_requirements|requirements]]:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Example on Debian/Ubuntu (please check your respective distro&amp;#039;s package manager tool if you use other distros):&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sudo apt-get install git-core gcc g++ make autoconf autoconf-archive \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   &amp;#039;&amp;#039;&amp;#039;automake libtool pkg-config libglib2.0-dev libglibmm-2.4-dev libzip-dev \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   &amp;#039;&amp;#039;&amp;#039;libusb-1.0-0-dev libftdi-dev check doxygen \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   &amp;#039;&amp;#039;&amp;#039;python-dev python-gi-dev python-setuptools swig default-jdk&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Fedora (18, 19):&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sudo yum install git gcc make autoconf automake libtool pkgconfig glib2-devel \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   &amp;#039;&amp;#039;&amp;#039;libzip-devel libusb1-devel libftdi-devel check-devel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
OpenSuSE (12.2):&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;zypper install git gcc make autoconf automake libtool pkg-config glib2-devel \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   &amp;#039;&amp;#039;&amp;#039;libzip-devel libusb-1_0-devel libftdi1-devel check python3-devel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Building:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;git clone git://sigrok.org/libsigrok&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;cd libsigrok&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./autogen.sh&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./configure&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;make&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sudo make install&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== libsigrokdecode ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Installing the [[Building#Build_requirements|requirements]]:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Example on Debian/Ubuntu (please check your respective distro&amp;#039;s package manager tool if you use other distros):&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sudo apt-get install git-core gcc make autoconf automake libtool pkg-config libglib2.0-dev python3-dev&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Fedora (18, 19, 20):&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sudo yum install git gcc make autoconf automake libtool pkgconfig glib2-devel python3-devel check-devel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Building:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;git clone git://sigrok.org/libsigrokdecode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;cd libsigrokdecode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./autogen.sh&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./configure&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;make&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sudo make install&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== sigrok-cli ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Installing the [[Building#Build_requirements|requirements]]:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Example on Debian/Ubuntu (please check your respective distro&amp;#039;s package manager tool if you use other distros):&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sudo apt-get install git-core gcc make autoconf automake libtool pkg-config libglib2.0-dev&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Fedora (18, 19):&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sudo yum install git gcc make autoconf automake libtool pkgconfig glib2-devel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
OpenSuse (13.1):&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;zypper install git gcc make autoconf automake libtool pkgconfig glib2-devel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Building:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;git clone git://sigrok.org/sigrok-cli&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;cd sigrok-cli&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./autogen.sh&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./configure&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;make&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sudo make install&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== PulseView ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Installing the [[Building#Build_requirements|requirements]]:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Example on Debian/Ubuntu (please check your respective distro&amp;#039;s package manager tool if you use other distros):&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sudo apt-get install git-core g++ make cmake libtool pkg-config \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   &amp;#039;&amp;#039;&amp;#039;libglib2.0-dev libqt4-dev libboost-test-dev \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   &amp;#039;&amp;#039;&amp;#039;libboost-filesystem-dev libboost-system-dev&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Fedora (18, 19):&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sudo yum install git gcc cmake libtool pkgconfig glib2-devel \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   &amp;#039;&amp;#039;&amp;#039;boost-devel qt-devel boost-devel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Building:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;git clone git://sigrok.org/pulseview&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;cd pulseview&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;cmake .&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;make&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sudo make install&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Common problems ==&lt;br /&gt;
&lt;br /&gt;
libsigrok&amp;#039;s &amp;lt;tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;autogen.sh&amp;#039;&amp;#039;&amp;#039;&amp;lt;/tt&amp;gt; outputs the following warning:&lt;br /&gt;
&lt;br /&gt;
 --- Warning: AX_CXX_COMPILE_STDCXX_11 macro not found.&lt;br /&gt;
 --- You won&amp;#039;t be able to build the language bindings!&lt;br /&gt;
&lt;br /&gt;
That means that the m4 macro used to detect C++11 support was not found. Use the package manager of your distribution to install the package that included the macro. Most distributions package this file in a package called &amp;lt;tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;autoconf-archive&amp;#039;&amp;#039;&amp;#039;&amp;lt;/tt&amp;gt; or similar.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
libsigrok&amp;#039;s &amp;lt;tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;autogen.sh&amp;#039;&amp;#039;&amp;#039;&amp;lt;/tt&amp;gt; outputs the following warning:&lt;br /&gt;
&lt;br /&gt;
 --- Warning: AX_CXX_COMPILE_STDCXX_11 macro is too old.&lt;br /&gt;
 --- (found version &amp;lt;version&amp;gt;, at least 4 is required)&lt;br /&gt;
 --- You won&amp;#039;t be able to build the language bindings!&lt;br /&gt;
&lt;br /&gt;
That means that the version of the macro included with your distribution is too old. You can:&lt;br /&gt;
* Download the latest version of the macro from [https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html here], and use the &amp;lt;tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;ACLOCAL_PATH&amp;#039;&amp;#039;&amp;#039;&amp;lt;/tt&amp;gt; environment variable to point aclocal to the file:&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;ACLOCAL_PATH=/path/to/directory/containing/macro ./autogen.sh&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Download the latest version of the macro and overwrite the file included with your distribution, most often located in &amp;lt;tt&amp;gt; /usr/share/aclocal/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
If you get this error:&lt;br /&gt;
&lt;br /&gt;
 sigrok-cli: error while loading shared libraries: libsigrok.so.0: cannot open shared object file: No such file or directory&lt;br /&gt;
&lt;br /&gt;
Then you have to rebuild the links to your shared libraries:&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sudo ldconfig /usr/local/lib&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Feeding_hardware-decoded_packets_into_libsigrok&amp;diff=10356</id>
		<title>Feeding hardware-decoded packets into libsigrok</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Feeding_hardware-decoded_packets_into_libsigrok&amp;diff=10356"/>
		<updated>2014-12-23T14:46:01Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Soeren Apel came up with an interesting use-case:&lt;br /&gt;
&lt;br /&gt;
The yokogawa DLM2000 series can do I2C decoding on the device, and feed the I2C packets and associated metadata to an SCPI client:&lt;br /&gt;
&lt;br /&gt;
 :SERialbus&amp;lt;x&amp;gt;:I2C:DETail:LIST:ITEM?&lt;br /&gt;
 Queries all items that will be displayed in the I2C&lt;br /&gt;
 bus signal analysis result list.&lt;br /&gt;
  &lt;br /&gt;
 Example :SERIALBUS1:I2C:DETAIL:LIST:ITEM?&lt;br /&gt;
 -&amp;gt; &amp;quot;No.,Time(ms),1st,2nd,R/W,Data,Information&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 :SERialbus&amp;lt;x&amp;gt;:I2C:DETail:LIST:VALue?&lt;br /&gt;
 Queries all of the data for the specified analysis&lt;br /&gt;
 number in the I2C bus signal analysis result list.&lt;br /&gt;
  &lt;br /&gt;
 Example :SERIALBUS1:I2C:DETAIL:LIST:VALUE? 0&lt;br /&gt;
 -&amp;gt; &amp;quot;0,-0.07000,AA*,,W,AE*88*,7-bit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This hardware-level decoder has access to more raw data than device ever feeds to sigrok: it cannot stream continually via SCPI transports, for example. So it&amp;#039;s entirely possible, even likely, that the hardware can decode more I2C data from the raw signal than libsigrok/libsigrokdecode ever could.&lt;br /&gt;
&lt;br /&gt;
Thus, this is a use-case for getting I2C packets from the hardware, associating it with libsigrok timing reference (sample numbers) and feeding to libsigrokdecode &amp;#039;&amp;#039;&amp;#039;as an I2C packet&amp;#039;&amp;#039;&amp;#039; -- to PDs that normally take their input from the libsigrokdecode I2C PD.&lt;br /&gt;
&lt;br /&gt;
This involves:&lt;br /&gt;
* libsigrok would need a facility to send decoded packets over the session bus. This is certainly a new packet type, for example SR_DF_I2C.&lt;br /&gt;
* libsigrokdecode would need a way to receive more than just raw logic. The inter-PD Python object format for (in this case) I2C would need to be nailed down and formalized, and a way for the library to receive I2C in packet format and convert to the Python object.&lt;br /&gt;
&lt;br /&gt;
== Other scopes that can send decoded data over SCPI == &lt;br /&gt;
&lt;br /&gt;
Keysight InfiniiVision 3000 X-Series Oscilloscopes and&lt;br /&gt;
Agilent InfiniiVision 7000A Series Oscilloscopes:&lt;br /&gt;
&lt;br /&gt;
 :LISTer:DATA&lt;br /&gt;
 Query Syntax :LISTer:DATA?&lt;br /&gt;
 The :LISTer:DATA? query returns the lister data.&lt;br /&gt;
 Return Format &amp;lt;binary block&amp;gt;&amp;lt;NL&amp;gt;&lt;br /&gt;
 &amp;lt;binary_block&amp;gt; ::= comma-separated data with newlines at the end of each row&lt;br /&gt;
&lt;br /&gt;
== RS232 ==&lt;br /&gt;
&lt;br /&gt;
* One or two serial ports could be used as a &amp;quot;poor man&amp;#039;s capture device&amp;quot; to decode RS232. The communication parameters for RS232 would have to be known to capture, the higher level protocol could then be analyzed with lsrd.&lt;br /&gt;
* The output of a program like [http://www.suspectclass.com/sgifford/interceptty/ interceptty] could be converted into the sigrok format and then be analyzed. No need to hook up any probes.&lt;br /&gt;
&lt;br /&gt;
Both use cases could be useful if no &amp;quot;real&amp;quot; logic analyzer is available or for debugging.&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File_format:Pwl&amp;diff=10329</id>
		<title>File format:Pwl</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File_format:Pwl&amp;diff=10329"/>
		<updated>2014-12-11T14:54:57Z</updated>

		<summary type="html">&lt;p&gt;Jst: /* PWL in different SPICE implementations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox file format&lt;br /&gt;
| image            = &lt;br /&gt;
| id               = pwl&lt;br /&gt;
| name             = Piecewise linear function&lt;br /&gt;
| status           = unsupported&lt;br /&gt;
| extensions       = &amp;#039;&amp;#039;&amp;#039;.txt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| source_code_in   =&lt;br /&gt;
| source_code_out  =&lt;br /&gt;
| mime_type        =&lt;br /&gt;
| is_ascii         = yes&lt;br /&gt;
| compression      = none&lt;br /&gt;
| website          =&lt;br /&gt;
| image            = [[File:Pwl source.png|200px]]&lt;br /&gt;
| image caption    = A voltage source using values from a PWL file.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;pwl&amp;#039;&amp;#039;&amp;#039; is a file format that can be used to define the signal of voltage/current sources in a SPICE simulation.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The file consists of multiple time/value pairs. The individual values are separated by whitespace, therefore all values can be in one long line, or on multiple lines (much more convenient). The time values have to be in increasing order. SI prefixes are supported for both the time and the value.&lt;br /&gt;
&lt;br /&gt;
The content in the file is then accessed with the &amp;lt;tt&amp;gt;PWL file=&amp;amp;#8230;&amp;lt;/tt&amp;gt; statement from the simulation.&lt;br /&gt;
&lt;br /&gt;
== PWL in different SPICE implementations ==&lt;br /&gt;
&lt;br /&gt;
=== [http://www.linear.com/designtools/software/#LTspice LTspice] ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.linear.com/solutions/1814 Description of PWL on the Linear Technology website.]&lt;br /&gt;
* [http://ltwiki.org/?title=Undocumented_LTspice#Piecewise_Linear_Sources_.28PWL.29 Additional information on LTwiki.]&lt;br /&gt;
&lt;br /&gt;
==== Observations ====&lt;br /&gt;
* A space (0x20) or different newline indicators (CR (0x0D), LF (0x0A) and CR+LF) can be used to separate the times/values.&lt;br /&gt;
* When editing the properties of a voltage/current source in the LTspice editor and choosing the PWL file, the &amp;quot;Open File&amp;quot; dialog uses &amp;quot;ASCII File (*.txt)&amp;quot; as the default filter (but the simulation can use every other file extension too).&lt;br /&gt;
&lt;br /&gt;
==== Screenshots ====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Pwl ltspice example.png|&amp;lt;small&amp;gt;green: AM signal imported using the &amp;lt;tt&amp;gt;PWL file=&amp;amp;#8230;&amp;lt;/tt&amp;gt; statement.&amp;lt;br&amp;gt;blue: Demodulated signal.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Pwl ltspice example repeated.png|&amp;lt;small&amp;gt;green: AM signal imported using the &amp;lt;tt&amp;gt;PWL REPEAT FOREVER file=&amp;amp;#8230; ENDREPEAT&amp;lt;/tt&amp;gt; statement.&amp;lt;br&amp;gt;blue: Demodulated signal.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Pwl ltspice time error.png|Error during the simulation if the timestamps are not increasing.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://ngspice.sourceforge.net/ Ngspice] ===&lt;br /&gt;
&lt;br /&gt;
* [http://ngspice.sourceforge.net/docs/ngspice-manual.pdf Ngspice user&amp;#039;s manual]&lt;br /&gt;
* [http://hforsten.com/simulating-audio-effects-with-spice.html Blogpost by Henrik Forstén that involves reading audio data from a file using Ngspice] (by using a Python script to get the data into the correct format, link to source on github at the bottom of the page).&lt;br /&gt;
&lt;br /&gt;
==== Observations ====&lt;br /&gt;
* Ngspice&amp;#039;s PWL source can&amp;#039;t read from a file, however there is a model called &amp;lt;tt&amp;gt;filesource&amp;lt;/tt&amp;gt; instead (section 12.2.8 in the user&amp;#039;s manual):&lt;br /&gt;
** The input file is read line by line. (The [http://sourceforge.net/p/ngspice/ngspice/ci/master/tree/src/xspice/icm/analog/file_source/cfunc.mod#l203 actual implementation] of the module uses &amp;lt;tt&amp;gt;fgets()&amp;lt;/tt&amp;gt; to read the individual lines.)&lt;br /&gt;
** The characters &amp;#039;#&amp;#039; and &amp;#039;;&amp;#039; start a comment, the rest of the line after them is ignored.&lt;br /&gt;
** A line can contain two or more values, the first is the timestamp, the other values are the outputs of the model.&lt;br /&gt;
* Ngspice also has a digital source called &amp;lt;tt&amp;gt;d_source&amp;lt;/tt&amp;gt; (section 12.4.21 in the user&amp;#039;s manual):&lt;br /&gt;
** Again, the file is read [http://sourceforge.net/p/ngspice/ngspice/ci/master/tree/src/xspice/icm/digital/d_source/cfunc.mod#l723 line by line using &amp;lt;tt&amp;gt;fgets()&amp;lt;/tt&amp;gt;].&lt;br /&gt;
** The character &amp;#039;*&amp;#039; starts a comment.&lt;br /&gt;
** A line contains a timestamp an one or more digital values.&lt;br /&gt;
** A digital value consists of two characters, the first defines the actual value (0/1/undefined) and the second the &amp;quot;strength&amp;quot; of the state (strong/resistive/hi-impedance/undetermined), as documented in section 12.5.1 &amp;quot;Digital Node Type&amp;quot; of the user&amp;#039;s guide.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [https://bitbucket.org/jenste/pwl-test Files used to test the LTspice implementation.]&lt;br /&gt;
&lt;br /&gt;
[[Category:File format]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File_format:Pwl&amp;diff=10307</id>
		<title>File format:Pwl</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File_format:Pwl&amp;diff=10307"/>
		<updated>2014-12-07T17:49:20Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox file format&lt;br /&gt;
| image            = &lt;br /&gt;
| id               = pwl&lt;br /&gt;
| name             = Piecewise linear function&lt;br /&gt;
| status           = unsupported&lt;br /&gt;
| extensions       = &amp;#039;&amp;#039;&amp;#039;.txt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| source_code_in   =&lt;br /&gt;
| source_code_out  =&lt;br /&gt;
| mime_type        =&lt;br /&gt;
| is_ascii         = yes&lt;br /&gt;
| compression      = none&lt;br /&gt;
| website          =&lt;br /&gt;
| image            = [[File:Pwl source.png|200px]]&lt;br /&gt;
| image caption    = A voltage source using values from a PWL file.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;pwl&amp;#039;&amp;#039;&amp;#039; is a file format that can be used to define the signal of voltage/current sources in a SPICE simulation.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The file consists of multiple time/value pairs. The individual values are separated by whitespace, therefore all values can be in one long line, or on multiple lines (much more convenient). The time values have to be in increasing order. SI prefixes are supported for both the time and the value.&lt;br /&gt;
&lt;br /&gt;
The content in the file is then accessed with the &amp;lt;tt&amp;gt;PWL file=&amp;amp;#8230;&amp;lt;/tt&amp;gt; statement from the simulation.&lt;br /&gt;
&lt;br /&gt;
== PWL in different SPICE implementations ==&lt;br /&gt;
&lt;br /&gt;
=== LTspice ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.linear.com/solutions/1814 Description of PWL on the Linear Technology website.]&lt;br /&gt;
* [http://ltwiki.org/?title=Undocumented_LTspice#Piecewise_Linear_Sources_.28PWL.29 Additional information on LTwiki.]&lt;br /&gt;
&lt;br /&gt;
==== Observations ====&lt;br /&gt;
* A space (0x20) or different newline indicators (CR (0x0D), LF (0x0A) and CR+LF) can be used to separate the times/values.&lt;br /&gt;
* When editing the properties of a voltage/current source in the LTspice editor and choosing the PWL file, the &amp;quot;Open File&amp;quot; dialog uses &amp;quot;ASCII File (*.txt)&amp;quot; as the default filter (but the simulation can use every other file extension too).&lt;br /&gt;
&lt;br /&gt;
==== Screenshots ====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Pwl ltspice example.png|&amp;lt;small&amp;gt;green: AM signal imported using the &amp;lt;tt&amp;gt;PWL file=&amp;amp;#8230;&amp;lt;/tt&amp;gt; statement.&amp;lt;br&amp;gt;blue: Demodulated signal.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Pwl ltspice example repeated.png|&amp;lt;small&amp;gt;green: AM signal imported using the &amp;lt;tt&amp;gt;PWL REPEAT FOREVER file=&amp;amp;#8230; ENDREPEAT&amp;lt;/tt&amp;gt; statement.&amp;lt;br&amp;gt;blue: Demodulated signal.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Pwl ltspice time error.png|Error during the simulation if the timestamps are not increasing.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [https://bitbucket.org/jenste/pwl-test Files used to test the LTspice implementation.]&lt;br /&gt;
&lt;br /&gt;
[[Category:File format]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File:Pwl_source.png&amp;diff=10306</id>
		<title>File:Pwl source.png</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File:Pwl_source.png&amp;diff=10306"/>
		<updated>2014-12-07T17:45:52Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Licensing ==&lt;br /&gt;
{{CC-BY-SA-3.0}}&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File_format:Pwl&amp;diff=10305</id>
		<title>File format:Pwl</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File_format:Pwl&amp;diff=10305"/>
		<updated>2014-12-07T17:24:02Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox file format&lt;br /&gt;
| image            = &lt;br /&gt;
| id               = pwl&lt;br /&gt;
| name             = Piecewise linear function&lt;br /&gt;
| status           = unsupported&lt;br /&gt;
| extensions       = &amp;#039;&amp;#039;&amp;#039;.txt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| source_code_in   =&lt;br /&gt;
| source_code_out  =&lt;br /&gt;
| mime_type        =&lt;br /&gt;
| is_ascii         = yes&lt;br /&gt;
| compression      = none&lt;br /&gt;
| website          =&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;pwl&amp;#039;&amp;#039;&amp;#039; is a file format that can be used to define the signal of voltage/current sources in a SPICE simulation.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The file consists of multiple time/value pairs. The individual values are separated by whitespace, therefore all values can be in one long line, or on multiple lines (much more convenient). The time values have to be in increasing order. SI prefixes are supported for both the time and the value.&lt;br /&gt;
&lt;br /&gt;
The content in the file is then accessed with the &amp;lt;tt&amp;gt;PWL file=&amp;amp;#8230;&amp;lt;/tt&amp;gt; statement from the simulation.&lt;br /&gt;
&lt;br /&gt;
== PWL in different SPICE implementations ==&lt;br /&gt;
&lt;br /&gt;
=== LTspice ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.linear.com/solutions/1814 Description of PWL on the Linear Technology website.]&lt;br /&gt;
* [http://ltwiki.org/?title=Undocumented_LTspice#Piecewise_Linear_Sources_.28PWL.29 Additional information on LTwiki.]&lt;br /&gt;
&lt;br /&gt;
==== Observations ====&lt;br /&gt;
* A space (0x20) or different newline indicators (CR (0x0D), LF (0x0A) and CR+LF) can be used to separate the times/values.&lt;br /&gt;
* When editing the properties of a voltage/current source in the LTspice editor and choosing the PWL file, the &amp;quot;Open File&amp;quot; dialog uses &amp;quot;ASCII File (*.txt)&amp;quot; as the default filter (but the simulation can use every other file extension too).&lt;br /&gt;
&lt;br /&gt;
==== Screenshots ====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Pwl ltspice example.png|&amp;lt;small&amp;gt;green: AM signal imported using the &amp;lt;tt&amp;gt;PWL file=&amp;amp;#8230;&amp;lt;/tt&amp;gt; statement.&amp;lt;br&amp;gt;blue: Demodulated signal.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Pwl ltspice example repeated.png|&amp;lt;small&amp;gt;green: AM signal imported using the &amp;lt;tt&amp;gt;PWL REPEAT FOREVER file=&amp;amp;#8230; ENDREPEAT&amp;lt;/tt&amp;gt; statement.&amp;lt;br&amp;gt;blue: Demodulated signal.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Pwl ltspice time error.png|Error during the simulation if the timestamps are not increasing.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [https://bitbucket.org/jenste/pwl-test Files used to test the LTspice implementation.]&lt;br /&gt;
&lt;br /&gt;
[[Category:File format]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File_format:Pwl&amp;diff=10304</id>
		<title>File format:Pwl</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File_format:Pwl&amp;diff=10304"/>
		<updated>2014-12-07T17:11:06Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox file format&lt;br /&gt;
| image            = &lt;br /&gt;
| id               = pwl&lt;br /&gt;
| name             = Piecewise linear function&lt;br /&gt;
| status           = unsupported&lt;br /&gt;
| extensions       = &amp;#039;&amp;#039;&amp;#039;.txt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| source_code_in   =&lt;br /&gt;
| source_code_out  =&lt;br /&gt;
| mime_type        =&lt;br /&gt;
| is_ascii         = yes&lt;br /&gt;
| compression      = none&lt;br /&gt;
| website          =&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;pwl&amp;#039;&amp;#039;&amp;#039; is a file format that can be used to define the signal of voltage/current sources in a SPICE simulation.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The file consists of multiple lines, where each line contains one time/value pair. The time values have to be in increasing order. SI prefixes are supported for both the time and the value.&lt;br /&gt;
&lt;br /&gt;
The content in the file is then accessed with the &amp;lt;tt&amp;gt;PWL file=&amp;amp;#8230;&amp;lt;/tt&amp;gt; statement from the simulation.&lt;br /&gt;
&lt;br /&gt;
== PWL in different SPICE implementations ==&lt;br /&gt;
&lt;br /&gt;
=== LTspice ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.linear.com/solutions/1814 Description of PWL on the Linear Technology website.]&lt;br /&gt;
* [http://ltwiki.org/?title=Undocumented_LTspice#Piecewise_Linear_Sources_.28PWL.29 Additional information on LTwiki.]&lt;br /&gt;
&lt;br /&gt;
==== Observations ====&lt;br /&gt;
* LTspice recognizes CR (0x0D), LF (0x0A) and CR+LF as newline indicator.&amp;lt;br&amp;gt;&lt;br /&gt;
* When editing the properties of a voltage/current source in the LTspice editor and choosing the PWL file, the &amp;quot;Open File&amp;quot; dialog uses &amp;quot;ASCII File (*.txt)&amp;quot; as the default filter (but the simulation can use every other file extension too).&lt;br /&gt;
&lt;br /&gt;
==== Screenshots ====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Pwl ltspice example.png|&amp;lt;small&amp;gt;green: AM signal imported using the &amp;lt;tt&amp;gt;PWL file=&amp;amp;#8230;&amp;lt;/tt&amp;gt; statement.&amp;lt;br&amp;gt;blue: Demodulated signal.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Pwl ltspice example repeated.png|&amp;lt;small&amp;gt;green: AM signal imported using the &amp;lt;tt&amp;gt;PWL REPEAT FOREVER file=&amp;amp;#8230; ENDREPEAT&amp;lt;/tt&amp;gt; statement.&amp;lt;br&amp;gt;blue: Demodulated signal.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Pwl ltspice time error.png|Error during the simulation if the timestamps are not increasing.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [https://bitbucket.org/jenste/pwl-test Files used to test the LTspice implementation.]&lt;br /&gt;
&lt;br /&gt;
[[Category:File format]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Input_output_formats&amp;diff=10303</id>
		<title>Input output formats</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Input_output_formats&amp;diff=10303"/>
		<updated>2014-12-07T16:42:28Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[libsigrok]] supports a number of different input modules (a.k.a. file formats) and output modules, and has a generic API which allows easily adding more input/output modules.&lt;br /&gt;
&lt;br /&gt;
== Supported input/output formats ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller&amp;quot; class=&amp;quot;alternategrey sortable sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 8em;&amp;quot; | Name&lt;br /&gt;
!Input&lt;br /&gt;
!Output&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:analog|Analog]]&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| Text output of analog data and types.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:ascii|ASCII]]&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| ASCII art.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:binary|Binary]]&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| Raw binary data output without any metadata attached.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:bits|Bits]]&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| 0/1 digits.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;white-space: nowrap;&amp;quot; | [[File format:chronovu_la8|ChronoVu LA8]]&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| [[ChronoVu LA8]] software file format (usually with .kdt file extension).&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:csv|CSV]]&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| Comma-separated values.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:gnuplot|gnuplot]]&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| Gnuplot data file format (tab-separated columns of &amp;#039;1&amp;#039; and &amp;#039;0&amp;#039; characters). You need another gnuplot input file such as [http://sigrok.org/gitweb/?p=libsigrok.git;a=blob;f=contrib/gnuplot_usbeesx.gpi this one] in addition.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:hex|hex]]&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| Hexadecimal digits.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:ols|ols]]&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| The file format used by the [http://www.lxtreme.nl/ols/ &amp;quot;Alternative&amp;quot; Java client] for the [[Openbench Logic Sniffer]].&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:srzip|srzip]]&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| The current (v2) sigrok session file format (*.sr).&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:vcd|VCD]]&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| The [http://en.wikipedia.org/wiki/Value_change_dump Value Change Dump] format (can also be visualized in [http://gtkwave.sourceforge.net/ gtkwave], for instance).&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:wav|WAV]]&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| The [http://en.wikipedia.org/wiki/WAV waveform audio] (WAV) file format.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Possible candidates for future input/output formats ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller&amp;quot; class=&amp;quot;alternategrey sortable sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| Scanalogic&lt;br /&gt;
| Used by the [[IKALOGIC Scanalogic-2]] and [[IKALOGIC ScanaPLUS]] logic analyzers.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:rigol_rof|Rigol ROF]]&lt;br /&gt;
| Used by the [[Rigol DP800 series]] power supplies.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:rigol_raf|Rigol RAF]]&lt;br /&gt;
| Used by the Rigol DG1000Z, DG4000, and DG5000 series signal generators. See [http://www.batronix.com/pdf/Rigol/UserGuide/DG1000Z_UserGuide_EN.pdf DG1000Z User Guide] page 2-75, also [http://www.eevblog.com/forum/testgear/rigol-dg4000-series-raf-file-format/msg559443/ this post] at eevblog.&lt;br /&gt;
|-&lt;br /&gt;
| Vector MDF (v3.3) / ASAM MDF (v4.x)&lt;br /&gt;
| Automotive industry standard format. Docs can be found [http://vector.com/vi_mdf_de.html here] and [http://vector.com/downloads/mdf_specification.pdf here]. Validator is [http://vector.com/downloads/MDFValidator2.1.8.zip here]. Some code is [https://code.google.com/p/mdfreader/ here] and [http://sourceforge.net/p/mdfdatafile/code/HEAD/tree/ here].&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Comtrade COMTRADE]&lt;br /&gt;
| File format used by devices in power engineering (e.g. protective relays, fault recorders). Can contain digital and analog data with constant or variable sample rate.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:pwl|PWL]]&lt;br /&gt;
| Trivial file format that can be used to define the signal of voltage/current sources in a SPICE simulation.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File_format:Pwl&amp;diff=10302</id>
		<title>File format:Pwl</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File_format:Pwl&amp;diff=10302"/>
		<updated>2014-12-07T16:41:54Z</updated>

		<summary type="html">&lt;p&gt;Jst: Created page with &amp;quot;{{Infobox file format | image            =  | id               = pwl | name             = Piecewise linear function | status           = unsupported | extensions       = &amp;#039;&amp;#039;&amp;#039;.t...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox file format&lt;br /&gt;
| image            = &lt;br /&gt;
| id               = pwl&lt;br /&gt;
| name             = Piecewise linear function&lt;br /&gt;
| status           = unsupported&lt;br /&gt;
| extensions       = &amp;#039;&amp;#039;&amp;#039;.txt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| source_code_in   =&lt;br /&gt;
| source_code_out  =&lt;br /&gt;
| mime_type        =&lt;br /&gt;
| is_ascii         = yes&lt;br /&gt;
| compression      = none&lt;br /&gt;
| website          =&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;pwl&amp;#039;&amp;#039;&amp;#039; is a file format that can be used to define the signal of voltage/current sources in a SPICE simulation.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The file consists of multiple lines, where each line contains one time/value pair. The time values have to be in increasing order.&lt;br /&gt;
&lt;br /&gt;
The content in the file is then accessed with the &amp;lt;tt&amp;gt;PWL file=&amp;amp;#8230;&amp;lt;/tt&amp;gt; statement from the simulation.&lt;br /&gt;
&lt;br /&gt;
== PWL in different SPICE implementations ==&lt;br /&gt;
&lt;br /&gt;
=== LTspice ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.linear.com/solutions/1814 Description of PWL on the Linear Technology website.]&lt;br /&gt;
* [http://ltwiki.org/?title=Undocumented_LTspice#Piecewise_Linear_Sources_.28PWL.29 Additional information on LTwiki.]&lt;br /&gt;
&lt;br /&gt;
LTspice recognizes CR (0x0D), LF (0x0A) and CR+LF as newline indicator.&amp;lt;br&amp;gt;&lt;br /&gt;
When editing the properties of a voltage/current source in the LTspice editor and choosing the PWL file, the &amp;quot;Open File&amp;quot; dialog uses &amp;quot;ASCII File (*.txt)&amp;quot; as the default filter (but the simulation can use every other file extension too).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Pwl ltspice example.png|&amp;lt;small&amp;gt;green: AM signal imported using the &amp;lt;tt&amp;gt;PWL file=&amp;amp;#8230;&amp;lt;/tt&amp;gt; statement.&amp;lt;br&amp;gt;blue: Demodulated signal.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Pwl ltspice example repeated.png|&amp;lt;small&amp;gt;green: AM signal imported using the &amp;lt;tt&amp;gt;PWL REPEAT FOREVER file=&amp;amp;#8230; ENDREPEAT&amp;lt;/tt&amp;gt; statement.&amp;lt;br&amp;gt;blue: Demodulated signal.&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Pwl ltspice time error.png|Error during the simulation if the timestamps are not increasing.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File:Pwl_ltspice_time_error.png&amp;diff=10301</id>
		<title>File:Pwl ltspice time error.png</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File:Pwl_ltspice_time_error.png&amp;diff=10301"/>
		<updated>2014-12-07T16:32:01Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Licensing ==&lt;br /&gt;
{{CC-BY-SA-3.0}}&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File:Pwl_ltspice_example_repeated.png&amp;diff=10300</id>
		<title>File:Pwl ltspice example repeated.png</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File:Pwl_ltspice_example_repeated.png&amp;diff=10300"/>
		<updated>2014-12-07T16:31:37Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Licensing ==&lt;br /&gt;
{{CC-BY-SA-3.0}}&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File:Pwl_ltspice_example.png&amp;diff=10299</id>
		<title>File:Pwl ltspice example.png</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File:Pwl_ltspice_example.png&amp;diff=10299"/>
		<updated>2014-12-07T16:31:05Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Licensing ==&lt;br /&gt;
{{CC-BY-SA-3.0}}&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Input_output_formats&amp;diff=10297</id>
		<title>Input output formats</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Input_output_formats&amp;diff=10297"/>
		<updated>2014-12-05T23:42:13Z</updated>

		<summary type="html">&lt;p&gt;Jst: /* Possible candidates for future input/output formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[libsigrok]] supports a number of different input modules (a.k.a. file formats) and output modules, and has a generic API which allows easily adding more input/output modules.&lt;br /&gt;
&lt;br /&gt;
== Supported input/output formats ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller&amp;quot; class=&amp;quot;alternategrey sortable sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 8em;&amp;quot; | Name&lt;br /&gt;
!Input&lt;br /&gt;
!Output&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:analog|Analog]]&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| Text output of analog data and types.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:ascii|ASCII]]&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| ASCII art.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:binary|Binary]]&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| Raw binary data output without any metadata attached.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:bits|Bits]]&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| 0/1 digits.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;white-space: nowrap;&amp;quot; | [[File format:chronovu_la8|ChronoVu LA8]]&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| [[ChronoVu LA8]] software file format (usually with .kdt file extension).&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:csv|CSV]]&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| Comma-separated values.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:gnuplot|gnuplot]]&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| Gnuplot data file format (tab-separated columns of &amp;#039;1&amp;#039; and &amp;#039;0&amp;#039; characters). You need another gnuplot input file such as [http://sigrok.org/gitweb/?p=libsigrok.git;a=blob;f=contrib/gnuplot_usbeesx.gpi this one] in addition.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:hex|hex]]&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| Hexadecimal digits.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:ols|ols]]&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| The file format used by the [http://www.lxtreme.nl/ols/ &amp;quot;Alternative&amp;quot; Java client] for the [[Openbench Logic Sniffer]].&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:srzip|srzip]]&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| The current (v2) sigrok session file format (*.sr).&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:vcd|VCD]]&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| The [http://en.wikipedia.org/wiki/Value_change_dump Value Change Dump] format (can also be visualized in [http://gtkwave.sourceforge.net/ gtkwave], for instance).&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:wav|WAV]]&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| The [http://en.wikipedia.org/wiki/WAV waveform audio] (WAV) file format.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Possible candidates for future input/output formats ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller&amp;quot; class=&amp;quot;alternategrey sortable sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| Scanalogic&lt;br /&gt;
| Used by the [[IKALOGIC Scanalogic-2]] and [[IKALOGIC ScanaPLUS]] logic analyzers.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:rigol_rof|Rigol ROF]]&lt;br /&gt;
| Used by the [[Rigol DP800 series]] power supplies.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:rigol_raf|Rigol RAF]]&lt;br /&gt;
| Used by the Rigol DG1000Z, DG4000, and DG5000 series signal generators. See [http://www.batronix.com/pdf/Rigol/UserGuide/DG1000Z_UserGuide_EN.pdf DG1000Z User Guide] page 2-75, also [http://www.eevblog.com/forum/testgear/rigol-dg4000-series-raf-file-format/msg559443/ this post] at eevblog.&lt;br /&gt;
|-&lt;br /&gt;
| Vector MDF (v3.3) / ASAM MDF (v4.x)&lt;br /&gt;
| Automotive industry standard format. Docs can be found [http://vector.com/vi_mdf_de.html here] and [http://vector.com/downloads/mdf_specification.pdf here]. Validator is [http://vector.com/downloads/MDFValidator2.1.8.zip here]. Some code is [https://code.google.com/p/mdfreader/ here] and [http://sourceforge.net/p/mdfdatafile/code/HEAD/tree/ here].&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Comtrade COMTRADE]&lt;br /&gt;
| File format used by devices in power engineering (e.g. protective relays, fault recorders). Can contain digital and analog data with constant or variable sample rate.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.linear.com/solutions/1814 PWL]&lt;br /&gt;
| Trivial file format that can be used to define the signal of voltage/current sources in a LTspice simulation.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Input_output_formats&amp;diff=10286</id>
		<title>Input output formats</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Input_output_formats&amp;diff=10286"/>
		<updated>2014-12-03T19:11:12Z</updated>

		<summary type="html">&lt;p&gt;Jst: /* Possible candidates for future input/output formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[libsigrok]] supports a number of different input modules (a.k.a. file formats) and output modules, and has a generic API which allows easily adding more input/output modules.&lt;br /&gt;
&lt;br /&gt;
== Supported input/output formats ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller&amp;quot; class=&amp;quot;alternategrey sortable sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 8em;&amp;quot; | Name&lt;br /&gt;
!Input&lt;br /&gt;
!Output&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:analog|Analog]]&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| Analog data and types.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:ascii|ASCII]]&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| ASCII art.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:binary|Binary]]&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| Raw binary data output without any metadata attached.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:bits|Bits]]&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| 0/1 digits.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;white-space: nowrap;&amp;quot; | [[File format:chronovu_la8|ChronoVu LA8]]&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| [[ChronoVu LA8]] software file format (usually with .kdt file extension).&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:csv|CSV]]&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| Comma-separated values.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:gnuplot|gnuplot]]&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| Gnuplot data file format (tab-separated columns of &amp;#039;1&amp;#039; and &amp;#039;0&amp;#039; characters). You need another gnuplot input file such as [http://sigrok.org/gitweb/?p=libsigrok.git;a=blob;f=contrib/gnuplot_usbeesx.gpi this one] in addition.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:hex|hex]]&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| Hexadecimal digits.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:ols|ols]]&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| The file format used by the [http://www.lxtreme.nl/ols/ &amp;quot;Alternative&amp;quot; Java client] for the [[Openbench Logic Sniffer]].&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:srzip|srzip]]&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| The current (v2) sigrok session file format (*.sr).&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:vcd|VCD]]&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| The [http://en.wikipedia.org/wiki/Value_change_dump Value Change Dump] format (can also be visualized in [http://gtkwave.sourceforge.net/ gtkwave], for instance).&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:wav|WAV]]&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| bgcolor=&amp;quot;lime&amp;quot; | supported&lt;br /&gt;
| The [http://en.wikipedia.org/wiki/WAV waveform audio] (WAV) file format.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Possible candidates for future input/output formats ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller&amp;quot; class=&amp;quot;alternategrey sortable sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| Scanalogic&lt;br /&gt;
| Used by the [[IKALOGIC Scanalogic-2]] and [[IKALOGIC ScanaPLUS]] logic analyzers.&lt;br /&gt;
|-&lt;br /&gt;
| [[File format:rigol_rof|Rigol ROF]]&lt;br /&gt;
| Used by the [[Rigol DP800 series]] power supplies.&lt;br /&gt;
|-&lt;br /&gt;
| Rigol RAF&lt;br /&gt;
| Used by the Rigol DG1000Z, DG4000, and DG5000 series signal generators. See [http://www.batronix.com/pdf/Rigol/UserGuide/DG1000Z_UserGuide_EN.pdf DG1000Z User Guide] page 2-75, also [http://www.eevblog.com/forum/testgear/rigol-dg4000-series-raf-file-format/msg559443/ this post] at eevblog.&lt;br /&gt;
|-&lt;br /&gt;
| Vector MDF (v3.3) / ASAM MDF (v4.x)&lt;br /&gt;
| Automotive industry standard format. Docs can be found [http://vector.com/vi_mdf_de.html here] and [http://vector.com/downloads/mdf_specification.pdf here]. Validator is [http://vector.com/downloads/MDFValidator2.1.8.zip here]. Some code is [https://code.google.com/p/mdfreader/ here] and [http://sourceforge.net/p/mdfdatafile/code/HEAD/tree/ here].&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Comtrade COMTRADE]&lt;br /&gt;
| File format used by devices in power engineering (e.g. protective relays, fault recorders). Can contain digital and analog data with constant or variable sample rate.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=TODO&amp;diff=10285</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=TODO&amp;diff=10285"/>
		<updated>2014-12-03T19:03:12Z</updated>

		<summary type="html">&lt;p&gt;Jst: sigrok-meter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== libsigrok ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware support ===&lt;br /&gt;
&lt;br /&gt;
* Clean up device-specific globals in hardware drivers, to properly permit multiple devices per driver: fx2lafw, zeroplus-logic-cube, others(?)&lt;br /&gt;
* Asix SIGMA driver: support multiple devices properly (currently only one is supported).&lt;br /&gt;
* Chronovu LA8/LA16 driver: support multiple devices properly (currently only one is supported).&lt;br /&gt;
&lt;br /&gt;
=== Input/output modules ===&lt;br /&gt;
* Scanalogic ([[User:Uwe Hermann|Uwe Hermann]]).&lt;br /&gt;
* Rigol&lt;br /&gt;
** [[File format:Rigol ROF|ROF]]: Used by [[Rigol DP800 series|DP800 series]] power supplies&lt;br /&gt;
** RAF: Used by DG1000Z, DG4000, and DG5000 series signal generators. See [http://www.batronix.com/pdf/Rigol/UserGuide/DG1000Z_UserGuide_EN.pdf DG1000Z User Guide] page 2-75, also [http://www.eevblog.com/forum/testgear/rigol-dg4000-series-raf-file-format/msg559443/ this post] at eevblog.&lt;br /&gt;
&lt;br /&gt;
=== Input modules ===&lt;br /&gt;
&lt;br /&gt;
* Add OLS input module support.&lt;br /&gt;
* Add gnuplot input module support ([[User:Uwe Hermann|Uwe Hermann]]).&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
* Check all public API calls to see whether they need an sr_context parameter.&lt;br /&gt;
* sr_errno:&lt;br /&gt;
** Most functions should return SR_OK or SR_ERR_* (same for SRD_OK etc).&lt;br /&gt;
** Most backend functions return status as an integer, which is SR_OK if all went well, or SR_ERR_* if an error occurred.&lt;br /&gt;
** However, there is no way to pass any information back as to what went wrong &amp;amp;mdash; and this is important for user-friendliness.&lt;br /&gt;
** Perhaps an error code is not enough; maybe something like sigrok_errno(errorcode, &amp;quot;unsupported device&amp;quot;) is better.&lt;br /&gt;
* Support specifying the firmware directory at runtime.&lt;br /&gt;
&lt;br /&gt;
== libsigrokdecode ==&lt;br /&gt;
==== Major features ====&lt;br /&gt;
* Add high-precision timer to runtc&lt;br /&gt;
&lt;br /&gt;
==== Other ====&lt;br /&gt;
* Test/implement support for multiple outputs of one PD, and stacking different additional PDs on those outputs.&lt;br /&gt;
* Test/implement multiple inputs support.&lt;br /&gt;
* Python exception handling in libsrd: add full traceback support with srd_dbg().&lt;br /&gt;
&lt;br /&gt;
== sigrok-cli ==&lt;br /&gt;
&lt;br /&gt;
== fx2lafw ==&lt;br /&gt;
&lt;br /&gt;
* Analog sampling: 1-channel, 2-channel, voltage meter&lt;br /&gt;
* Trigger pin&lt;br /&gt;
* Clock input&lt;br /&gt;
* Clock output&lt;br /&gt;
* Frequency/pulse counter&lt;br /&gt;
* Signal generator&lt;br /&gt;
* Fix power consumption during enumeration. &lt;br /&gt;
** Non-LP FX2&amp;#039;s consume more than 100mA during enumeration. This is outside of the USB specification&lt;br /&gt;
** Official workaround is to enumerate first as full-speed, then as high-speed. This is overkill for sigrok.&lt;br /&gt;
** Investigate putting the CPU to sleep (except for processing interrupts) until enumerated.&lt;br /&gt;
&lt;br /&gt;
== PulseView ==&lt;br /&gt;
&lt;br /&gt;
* Deduplicate property setting functionality between SamplingBar and DeviceOptions - make SamplingBar a properties container&lt;br /&gt;
* Analog support&lt;br /&gt;
** Add signal v-scale control (Volts/div).&lt;br /&gt;
** Add interpolation (cosine? sinc? some kind of interpolation filter?)&lt;br /&gt;
* Add support for other open/import file formats&lt;br /&gt;
* Add signal overview&lt;br /&gt;
* Paint speed profiling information.&lt;br /&gt;
* Code documentation&lt;br /&gt;
* Transition coding&lt;br /&gt;
* Store more config options with QSettings&lt;br /&gt;
&lt;br /&gt;
== sigrok-meter ==&lt;br /&gt;
&lt;br /&gt;
* Make the list of measurements look nicer without using too much additional space.&lt;br /&gt;
* Add graphs.&lt;br /&gt;
** [http://www.pyqtgraph.org/ PyQtGraph] looks like a nice graphing library.&lt;br /&gt;
*** Works with PyQt and PySide.&lt;br /&gt;
*** Pure python, easy to install.&lt;br /&gt;
*** Few dependencies: &amp;#039;&amp;#039;&amp;#039;scipy&amp;#039;&amp;#039;&amp;#039; is not required any more in the upcoming version 0.9.9, &amp;#039;&amp;#039;&amp;#039;numpy&amp;#039;&amp;#039;&amp;#039; is already a dependency of the python bindings.&lt;br /&gt;
*** From looking at the examples, it seems more than fast enough for our requirements.&lt;br /&gt;
** Pass all samples (not only the most recent one) to the GUI thread and store them there.&lt;br /&gt;
*** The packet payload object is currently not thread save.&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10143</id>
		<title>Protocol decoder:Esp8266</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10143"/>
		<updated>2014-11-20T01:40:16Z</updated>

		<summary type="html">&lt;p&gt;Jst: /* Modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = esp8266&lt;br /&gt;
| name            = ESP8266&lt;br /&gt;
| description     = WiFi Serial Transceiver.&lt;br /&gt;
| status          = planned&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = &lt;br /&gt;
| image           = [[File:ESP8266_closeup.jpg|250px]]&lt;br /&gt;
| input           = uart&lt;br /&gt;
| output          = esp8266&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;esp8266&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the UART command protocol spoken by modules equipped with an [https://espressif.com/en/products/esp8266/ ESP8266] WiFi transceiver chip.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The ESP8266 chip contains an [http://ip.cadence.com/ipportfolio/tensilica-ip/xtensa-customizable Xtensa] LX106 CPU and a radio for IEEE 802.11b/g/n.&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
&lt;br /&gt;
Various online marketplaces sell modules containing the ESP8266 (and a few assisting components) that comes preprogrammed with a TCP/IP stack that can be controlled with commands send via RS232. There seem to be eleven different types of modules around, called &amp;quot;ESP-01&amp;quot; to &amp;quot;ESP-11&amp;quot; (see [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28&amp;amp;start=20#p1761 this post]).&lt;br /&gt;
&lt;br /&gt;
* ESP-01&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connector: 2x4pin male 2.54mm header&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
| style=&amp;quot;width: 300px&amp;quot; |&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Connector pinout&lt;br /&gt;
  |-&lt;br /&gt;
    ! Function&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 1 &lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 3&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 5&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | VCC&lt;br /&gt;
    | 7&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
  &amp;lt;small&amp;gt;(Note: The PCB has two square pads at the pin header, so it&amp;#039;s not clear which one should be pin number 1. The table above assumes that the module is oriented as shown in the picture from the top, with the antenna on the right side, pin 1 is then in the top left corner and pin 8 next to the SPI flash chip.)&amp;lt;/small&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding-left: 30px&amp;quot; |&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-01.jpg|&amp;lt;small&amp;gt;ESP-01, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  File:ESP-01_flash.jpg|&amp;lt;small&amp;gt;[http://www.gigadevice.com/product/detail/5/119.html GigaDevice GD25Q40B] 4Mbit SPI flash&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-02&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 4 pin castellated holes on both sides (2.54 distance)&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of left connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | VCC&lt;br /&gt;
  |}&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of right connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding-left: 30px&amp;quot; |&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-02.jpg|&amp;lt;small&amp;gt;ESP-02, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-03&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 7 pin castellated holes on both sides (2mm distance)&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of left connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | VCC&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|9}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|10}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|12}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|13}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of right connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|2}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|8}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | n.c.&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | GND&lt;br /&gt;
  |}&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding-left: 30px&amp;quot; |&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-03.jpg|&amp;lt;small&amp;gt;ESP-03, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-04&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 7 pin castellated holes on both sides (2mm distance), same pinout as ESP-03&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-04.jpg|&amp;lt;small&amp;gt;ESP-04, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-05&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 1x5pin pads (2.54mm distance), U.FL antenna connector&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Connector pinout&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | VCC&lt;br /&gt;
  |}&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding-left: 30px&amp;quot; |&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-05.jpg|&amp;lt;small&amp;gt;ESP-05, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.esp8266.com ESP8266 Community Forum]&lt;br /&gt;
** [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28 Module overview]&lt;br /&gt;
* [https://nurdspace.nl/ESP8266 Translation of the chinese datasheet]&lt;br /&gt;
* [https://github.com/esp8266/esp8266-wiki/wiki/Pin-definition ESP8266 pinout]&lt;br /&gt;
* [http://zeptobars.ru/en/read/Espressif-ESP8266-wifi-serial-rs232-ESP8089-IoT Die shots of the chip]&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocol decoder]]&lt;br /&gt;
[[Category:UART]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File:ESP-02.jpg&amp;diff=10142</id>
		<title>File:ESP-02.jpg</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File:ESP-02.jpg&amp;diff=10142"/>
		<updated>2014-11-20T01:22:25Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Licensing ==&lt;br /&gt;
{{CC-BY-SA-3.0}}&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:I2c&amp;diff=10134</id>
		<title>Protocol decoder:I2c</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:I2c&amp;diff=10134"/>
		<updated>2014-11-12T20:55:59Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = i2c&lt;br /&gt;
| name            = Inter-Integrated Circuit&lt;br /&gt;
| description     = Two-wire, multi-master, serial bus&lt;br /&gt;
| status          = supported&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = i2c&lt;br /&gt;
| image           = [[File:Pd i2c example.png|250px]]&lt;br /&gt;
| input           = logic&lt;br /&gt;
| output          = i2c&lt;br /&gt;
| probes          = SCL, SDA&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;i2c&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the [https://en.wikipedia.org/wiki/I%C2%B2C Inter-Integrated Circuit] (I²C) bidirectional, multi-master serial protocol.&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
The Inter-Integrated Circuit (I²C) bus is a bidirectional, multi-master bus using two signals (SCL = serial clock line, SDA = serial data line).&lt;br /&gt;
&lt;br /&gt;
There can be many devices on the same bus. Each device can potentially be master or slave (and that can change during runtime). Both slave and master can potentially play the transmitter or receiver role (this can also change at runtime).&lt;br /&gt;
&lt;br /&gt;
Possible maximum data rates:&lt;br /&gt;
&lt;br /&gt;
* Standard mode: 100 kbit/s&lt;br /&gt;
* Fast mode: 400 kbit/s&lt;br /&gt;
* Fast-mode Plus: 1 Mbit/s&lt;br /&gt;
* High-speed mode: 3.4 Mbit/s&lt;br /&gt;
&lt;br /&gt;
Basic protocol:&lt;br /&gt;
* START condition: SDA = falling, SCL = high&lt;br /&gt;
* Repeated START condition: same as START condition&lt;br /&gt;
* Data bit sampling: SCL = rising&lt;br /&gt;
* STOP condition: SDA = rising, SCL = high&lt;br /&gt;
&lt;br /&gt;
All data bytes on SDA are exactly 8 bits long (transmitted MSB-first). Each byte has to be followed by a 9th ACK/NACK bit. If that bit is low, that indicates an ACK, if it&amp;#039;s high that indicates a NACK.&lt;br /&gt;
&lt;br /&gt;
After the first START condition, a master sends the device address of the slave it wants to talk to. Slave addresses are 7 bits long (MSB-first). After those 7 bits, a data direction bit is sent. If the bit is low that indicates a WRITE operation, if it&amp;#039;s high that indicates a READ operation.&lt;br /&gt;
&lt;br /&gt;
Later an optional 10bit slave addressing scheme was added.&lt;br /&gt;
&lt;br /&gt;
== Decoder ==&lt;br /&gt;
&lt;br /&gt;
[http://www.eevblog.com/forum/testgear/ds1000z-series-serial-decode/msg536854/#msg536854 EEVblog forum post] showing how to use the &amp;#039;&amp;#039;&amp;#039;i2c&amp;#039;&amp;#039;&amp;#039; decoder, among other things (like reading the input from a CSV file, stacking decoders, binary output).&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/I%C2%B2C Wikipedia: I²C]&lt;br /&gt;
* [http://www.nxp.com/documents/other/UM10204_v5.pdf NXP: I2C-bus specification and user manual] (v5)&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocol decoder]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10121</id>
		<title>Protocol decoder:Esp8266</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10121"/>
		<updated>2014-11-06T17:33:37Z</updated>

		<summary type="html">&lt;p&gt;Jst: /* Modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = esp8266&lt;br /&gt;
| name            = ESP8266&lt;br /&gt;
| description     = WiFi Serial Transceiver.&lt;br /&gt;
| status          = planned&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = &lt;br /&gt;
| image           = [[File:ESP8266_closeup.jpg|250px]]&lt;br /&gt;
| input           = uart&lt;br /&gt;
| output          = esp8266&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;esp8266&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the UART command protocol spoken by modules equipped with an [https://espressif.com/en/products/esp8266/ ESP8266] WiFi transceiver chip.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The ESP8266 chip contains an [http://ip.cadence.com/ipportfolio/tensilica-ip/xtensa-customizable Xtensa] LX106 CPU and a radio for IEEE 802.11b/g/n.&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
&lt;br /&gt;
Various online marketplaces sell modules containing the ESP8266 (and a few assisting components) that comes preprogrammed with a TCP/IP stack that can be controlled with commands send via RS232. There seem to be eleven different types of modules around, called &amp;quot;ESP-01&amp;quot; to &amp;quot;ESP-11&amp;quot; (see [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28&amp;amp;start=20#p1761 this post]).&lt;br /&gt;
&lt;br /&gt;
* ESP-01&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connector: 2x4pin male 2.54mm header&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
| style=&amp;quot;width: 300px&amp;quot; |&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Connector pinout&lt;br /&gt;
  |-&lt;br /&gt;
    ! Function&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 1 &lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 3&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 5&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | VCC&lt;br /&gt;
    | 7&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
  &amp;lt;small&amp;gt;(Note: The PCB has two square pads at the pin header, so it&amp;#039;s not clear which one should be pin number 1. The table above assumes that the module is oriented as shown in the picture from the top, with the antenna on the right side, pin 1 is then in the top left corner and pin 8 next to the SPI flash chip.)&amp;lt;/small&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding-left: 30px&amp;quot; |&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-01.jpg|&amp;lt;small&amp;gt;ESP-01, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  File:ESP-01_flash.jpg|&amp;lt;small&amp;gt;[http://www.gigadevice.com/product/detail/5/119.html GigaDevice GD25Q40B] 4Mbit SPI flash&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-03&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 7 pin castellated holes on both sides (2mm distance)&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of left connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | VCC&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|9}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|10}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|12}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|13}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of right connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|2}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|8}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | n.c.&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | GND&lt;br /&gt;
  |}&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding-left: 30px&amp;quot; |&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-03.jpg|&amp;lt;small&amp;gt;ESP-03, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-04&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 7 pin castellated holes on both sides (2mm distance), same pinout as ESP-03&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-04.jpg|&amp;lt;small&amp;gt;ESP-04, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-05&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 1x5pin pads (2.54mm distance), U.FL antenna connector&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Connector pinout&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | VCC&lt;br /&gt;
  |}&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding-left: 30px&amp;quot; |&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-05.jpg|&amp;lt;small&amp;gt;ESP-05, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.esp8266.com ESP8266 Community Forum]&lt;br /&gt;
** [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28 Module overview]&lt;br /&gt;
* [https://nurdspace.nl/ESP8266 Translation of the chinese datasheet]&lt;br /&gt;
* [https://github.com/esp8266/esp8266-wiki/wiki/Pin-definition ESP8266 pinout]&lt;br /&gt;
* [http://zeptobars.ru/en/read/Espressif-ESP8266-wifi-serial-rs232-ESP8089-IoT Die shots of the chip]&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocol decoder]]&lt;br /&gt;
[[Category:UART]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File:ESP-03.jpg&amp;diff=10120</id>
		<title>File:ESP-03.jpg</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File:ESP-03.jpg&amp;diff=10120"/>
		<updated>2014-11-06T17:32:12Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Licensing ==&lt;br /&gt;
{{CC-BY-SA-3.0}}&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10119</id>
		<title>Protocol decoder:Esp8266</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10119"/>
		<updated>2014-11-06T17:01:06Z</updated>

		<summary type="html">&lt;p&gt;Jst: /* Modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = esp8266&lt;br /&gt;
| name            = ESP8266&lt;br /&gt;
| description     = WiFi Serial Transceiver.&lt;br /&gt;
| status          = planned&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = &lt;br /&gt;
| image           = [[File:ESP8266_closeup.jpg|250px]]&lt;br /&gt;
| input           = uart&lt;br /&gt;
| output          = esp8266&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;esp8266&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the UART command protocol spoken by modules equipped with an [https://espressif.com/en/products/esp8266/ ESP8266] WiFi transceiver chip.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The ESP8266 chip contains an [http://ip.cadence.com/ipportfolio/tensilica-ip/xtensa-customizable Xtensa] LX106 CPU and a radio for IEEE 802.11b/g/n.&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
&lt;br /&gt;
Various online marketplaces sell modules containing the ESP8266 (and a few assisting components) that comes preprogrammed with a TCP/IP stack that can be controlled with commands send via RS232. There seem to be eleven different types of modules around, called &amp;quot;ESP-01&amp;quot; to &amp;quot;ESP-11&amp;quot; (see [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28&amp;amp;start=20#p1761 this post]).&lt;br /&gt;
&lt;br /&gt;
* ESP-01&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connector: 2x4pin male 2.54mm header&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
| style=&amp;quot;width: 300px&amp;quot; |&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Connector pinout&lt;br /&gt;
  |-&lt;br /&gt;
    ! Function&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 1 &lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 3&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 5&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | VCC&lt;br /&gt;
    | 7&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
  &amp;lt;small&amp;gt;(Note: The PCB has two square pads at the pin header, so it&amp;#039;s not clear which one should be pin number 1. The table above assumes that the module is oriented as shown in the picture from the top, with the antenna on the right side, pin 1 is then in the top left corner and pin 8 next to the SPI flash chip.)&amp;lt;/small&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding-left: 30px&amp;quot; |&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-01.jpg|&amp;lt;small&amp;gt;ESP-01, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  File:ESP-01_flash.jpg|&amp;lt;small&amp;gt;[http://www.gigadevice.com/product/detail/5/119.html GigaDevice GD25Q40B] 4Mbit SPI flash&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-03&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 7 pin castellated holes on both sides (2mm distance)&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of left connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | VCC&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|9}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|10}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|12}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|13}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of right connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|2}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|8}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | n.c.&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | GND&lt;br /&gt;
  |}&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding-left: 30px&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-04&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 7 pin castellated holes on both sides (2mm distance), same pinout as ESP-03&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-04.jpg|&amp;lt;small&amp;gt;ESP-04, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-05&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 1x5pin pads (2.54mm distance), U.FL antenna connector&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Connector pinout&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | VCC&lt;br /&gt;
  |}&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding-left: 30px&amp;quot; |&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-05.jpg|&amp;lt;small&amp;gt;ESP-05, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.esp8266.com ESP8266 Community Forum]&lt;br /&gt;
** [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28 Module overview]&lt;br /&gt;
* [https://nurdspace.nl/ESP8266 Translation of the chinese datasheet]&lt;br /&gt;
* [https://github.com/esp8266/esp8266-wiki/wiki/Pin-definition ESP8266 pinout]&lt;br /&gt;
* [http://zeptobars.ru/en/read/Espressif-ESP8266-wifi-serial-rs232-ESP8089-IoT Die shots of the chip]&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocol decoder]]&lt;br /&gt;
[[Category:UART]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10118</id>
		<title>Protocol decoder:Esp8266</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10118"/>
		<updated>2014-11-06T11:55:48Z</updated>

		<summary type="html">&lt;p&gt;Jst: /* Modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = esp8266&lt;br /&gt;
| name            = ESP8266&lt;br /&gt;
| description     = WiFi Serial Transceiver.&lt;br /&gt;
| status          = planned&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = &lt;br /&gt;
| image           = [[File:ESP8266_closeup.jpg|250px]]&lt;br /&gt;
| input           = uart&lt;br /&gt;
| output          = esp8266&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;esp8266&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the UART command protocol spoken by modules equipped with an [https://espressif.com/en/products/esp8266/ ESP8266] WiFi transceiver chip.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The ESP8266 chip contains an [http://ip.cadence.com/ipportfolio/tensilica-ip/xtensa-customizable Xtensa] LX106 CPU and a radio for IEEE 802.11b/g/n.&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
&lt;br /&gt;
Various online marketplaces sell modules containing the ESP8266 (and a few assisting components) that comes preprogrammed with a TCP/IP stack that can be controlled with commands send via RS232. There seem to be eleven different types of modules around, called &amp;quot;ESP-01&amp;quot; to &amp;quot;ESP-11&amp;quot; (see [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28&amp;amp;start=20#p1761 this post]).&lt;br /&gt;
&lt;br /&gt;
* ESP-01&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connector: 2x4pin male 2.54mm header&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
| style=&amp;quot;width: 300px&amp;quot; |&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Connector pinout&lt;br /&gt;
  |-&lt;br /&gt;
    ! Function&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 1 &lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 3&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 5&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | VCC&lt;br /&gt;
    | 7&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
  &amp;lt;small&amp;gt;(Note: The PCB has two square pads at the pin header, so it&amp;#039;s not clear which one should be pin number 1. The table above assumes that the module is oriented as shown in the picture from the top, with the antenna on the right side, pin 1 is then in the top left corner and pin 8 next to the SPI flash chip.)&amp;lt;/small&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding-left: 30px&amp;quot; |&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-01.jpg|&amp;lt;small&amp;gt;ESP-01, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  File:ESP-01_flash.jpg|&amp;lt;small&amp;gt;[http://www.gigadevice.com/product/detail/5/119.html GigaDevice GD25Q40B] 4Mbit SPI flash&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-04&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 7 pin castellated holes on both sides (2mm distance)&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of left connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | VCC&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|9}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|10}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|12}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|13}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of right connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|2}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|8}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | n.c.&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | GND&lt;br /&gt;
  |}&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding-left: 30px&amp;quot; |&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-04.jpg|&amp;lt;small&amp;gt;ESP-04, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-05&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 1x5pin pads (2.54mm distance), U.FL antenna connector&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Connector pinout&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | VCC&lt;br /&gt;
  |}&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding-left: 30px&amp;quot; |&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-05.jpg|&amp;lt;small&amp;gt;ESP-05, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.esp8266.com ESP8266 Community Forum]&lt;br /&gt;
** [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28 Module overview]&lt;br /&gt;
* [https://nurdspace.nl/ESP8266 Translation of the chinese datasheet]&lt;br /&gt;
* [https://github.com/esp8266/esp8266-wiki/wiki/Pin-definition ESP8266 pinout]&lt;br /&gt;
* [http://zeptobars.ru/en/read/Espressif-ESP8266-wifi-serial-rs232-ESP8089-IoT Die shots of the chip]&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocol decoder]]&lt;br /&gt;
[[Category:UART]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File:ESP-05.jpg&amp;diff=10117</id>
		<title>File:ESP-05.jpg</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File:ESP-05.jpg&amp;diff=10117"/>
		<updated>2014-11-06T11:50:26Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Licensing ==&lt;br /&gt;
{{CC-BY-SA-3.0}}&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File:ESP-04.jpg&amp;diff=10116</id>
		<title>File:ESP-04.jpg</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File:ESP-04.jpg&amp;diff=10116"/>
		<updated>2014-11-06T11:49:59Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Licensing ==&lt;br /&gt;
{{CC-BY-SA-3.0}}&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10115</id>
		<title>Protocol decoder:Esp8266</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10115"/>
		<updated>2014-11-06T01:01:29Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = esp8266&lt;br /&gt;
| name            = ESP8266&lt;br /&gt;
| description     = WiFi Serial Transceiver.&lt;br /&gt;
| status          = planned&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = &lt;br /&gt;
| image           = [[File:ESP8266_closeup.jpg|250px]]&lt;br /&gt;
| input           = uart&lt;br /&gt;
| output          = esp8266&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;esp8266&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the UART command protocol spoken by modules equipped with an [https://espressif.com/en/products/esp8266/ ESP8266] WiFi transceiver chip.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The ESP8266 chip contains an [http://ip.cadence.com/ipportfolio/tensilica-ip/xtensa-customizable Xtensa] LX106 CPU and a radio for IEEE 802.11b/g/n.&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
&lt;br /&gt;
Various online marketplaces sell modules containing the ESP8266 (and a few assisting components) that comes preprogrammed with a TCP/IP stack that can be controlled with commands send via RS232. There seem to be eleven different types of modules around, called &amp;quot;ESP-01&amp;quot; to &amp;quot;ESP-11&amp;quot; (see [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28&amp;amp;start=20#p1761 this post]).&lt;br /&gt;
&lt;br /&gt;
* ESP-01&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connector: 2x4pin male 2.54mm header&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
| style=&amp;quot;width: 300px&amp;quot; |&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Connector pinout&lt;br /&gt;
  |-&lt;br /&gt;
    ! Function&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 1 &lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 3&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 5&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | VCC&lt;br /&gt;
    | 7&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
  &amp;lt;small&amp;gt;(Note: The PCB has two square pads at the pin header, so it&amp;#039;s not clear which one should be pin number 1. The table above assumes that the module is oriented as shown in the picture from the top, with the antenna on the right side, pin 1 is then in the top left corner and pin 8 next to the SPI flash chip.)&amp;lt;/small&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; |&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-01.jpg|&amp;lt;small&amp;gt;ESP-01, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  File:ESP-01_flash.jpg|&amp;lt;small&amp;gt;[http://www.gigadevice.com/product/detail/5/119.html GigaDevice GD25Q40B] 4Mbit SPI flash&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-04&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 7 pin castellated holes on both sides (2mm distance)&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of left connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | VCC&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|9}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|10}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|12}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|13}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of right connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|2}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|8}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | n.c.&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | GND&lt;br /&gt;
  |}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-05&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 1x5pin pads (2.54mm distance), U.FL antenna connector&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Connector pinout&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | VCC&lt;br /&gt;
  |}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.esp8266.com ESP8266 Community Forum]&lt;br /&gt;
** [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28 Module overview]&lt;br /&gt;
* [https://nurdspace.nl/ESP8266 Translation of the chinese datasheet]&lt;br /&gt;
* [https://github.com/esp8266/esp8266-wiki/wiki/Pin-definition ESP8266 pinout]&lt;br /&gt;
* [http://zeptobars.ru/en/read/Espressif-ESP8266-wifi-serial-rs232-ESP8089-IoT Die shots of the chip]&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocol decoder]]&lt;br /&gt;
[[Category:UART]]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10114</id>
		<title>Protocol decoder:Esp8266</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10114"/>
		<updated>2014-11-06T01:00:55Z</updated>

		<summary type="html">&lt;p&gt;Jst: /* Modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = esp8266&lt;br /&gt;
| name            = ESP8266&lt;br /&gt;
| description     = WiFi Serial Transceiver.&lt;br /&gt;
| status          = planned&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = &lt;br /&gt;
| image           = [[File:ESP8266_closeup.jpg|250px]]&lt;br /&gt;
| input           = uart&lt;br /&gt;
| output          = esp8266&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;esp8266&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the UART command protocol spoken by modules equipped with an [https://espressif.com/en/products/esp8266/ ESP8266] WiFi transceiver chip.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The ESP8266 chip contains an [http://ip.cadence.com/ipportfolio/tensilica-ip/xtensa-customizable Xtensa] LX106 CPU and a radio for IEEE 802.11b/g/n.&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
&lt;br /&gt;
Various online marketplaces sell modules containing the ESP8266 (and a few assisting components) that comes preprogrammed with a TCP/IP stack that can be controlled with commands send via RS232. There seem to be eleven different types of modules around, called &amp;quot;ESP-01&amp;quot; to &amp;quot;ESP-11&amp;quot; (see [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28&amp;amp;start=20#p1761 this post]).&lt;br /&gt;
&lt;br /&gt;
* ESP-01&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connector: 2x4pin male 2.54mm header&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
| style=&amp;quot;width: 300px&amp;quot; |&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Connector pinout&lt;br /&gt;
  |-&lt;br /&gt;
    ! Function&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 1 &lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 3&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 5&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | VCC&lt;br /&gt;
    | 7&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
  &amp;lt;small&amp;gt;(Note: The PCB has two square pads at the pin header, so it&amp;#039;s not clear which one should be pin number 1. The table above assumes that the module is oriented as shown in the picture from the top, with the antenna on the right side, pin 1 is then in the top left corner and pin 8 next to the SPI flash chip.)&amp;lt;/small&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; |&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-01.jpg|&amp;lt;small&amp;gt;ESP-01, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  File:ESP-01_flash.jpg|&amp;lt;small&amp;gt;[http://www.gigadevice.com/product/detail/5/119.html GigaDevice GD25Q40B] 4Mbit SPI flash&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-04&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 7 pin castellated holes on both sides (2mm distance)&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of left connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | VCC&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|9}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|10}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|12}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|13}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of right connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|2}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|8}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | n.c.&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | GND&lt;br /&gt;
  |}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-05&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 1x5pin pads (2.54mm distance), U.FL antenna connector&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Connector pinout&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | VCC&lt;br /&gt;
  |}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.esp8266.com ESP8266 Community Forum]&lt;br /&gt;
** [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28 Module overview]&lt;br /&gt;
* [https://nurdspace.nl/ESP8266 Translation of the chinese datasheet]&lt;br /&gt;
* [https://github.com/esp8266/esp8266-wiki/wiki/Pin-definition ESP8266 pinout]&lt;br /&gt;
* [http://zeptobars.ru/en/read/Espressif-ESP8266-wifi-serial-rs232-ESP8089-IoT Die shots of the chip]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10113</id>
		<title>Protocol decoder:Esp8266</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10113"/>
		<updated>2014-11-06T00:56:57Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = esp8266&lt;br /&gt;
| name            = ESP8266&lt;br /&gt;
| description     = WiFi Serial Transceiver.&lt;br /&gt;
| status          = planned&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = &lt;br /&gt;
| image           = [[File:ESP8266_closeup.jpg|250px]]&lt;br /&gt;
| input           = uart&lt;br /&gt;
| output          = esp8266&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;esp8266&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the UART command protocol spoken by modules equipped with an [https://espressif.com/en/products/esp8266/ ESP8266] WiFi transceiver chip.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The ESP8266 chip contains an [http://ip.cadence.com/ipportfolio/tensilica-ip/xtensa-customizable Xtensa] LX106 CPU and a radio for IEEE 802.11b/g/n.&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
&lt;br /&gt;
Various online marketplaces sell modules containing the ESP8266 (and a few assisting components) that comes preprogrammed with a TCP/IP stack that can be controlled via RS232 commands.&lt;br /&gt;
&lt;br /&gt;
* ESP-01&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connector: 2x4pin male 2.54mm header&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
| style=&amp;quot;width: 300px&amp;quot; |&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Connector pinout&lt;br /&gt;
  |-&lt;br /&gt;
    ! Function&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 1 &lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 3&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 5&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | VCC&lt;br /&gt;
    | 7&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
  &amp;lt;small&amp;gt;(Note: The PCB has two square pads at the pin header, so it&amp;#039;s not clear which one should be pin number 1. The table above assumes that the module is oriented as shown in the picture from the top, with the antenna on the right side, pin 1 is then in the top left corner and pin 8 next to the SPI flash chip.)&amp;lt;/small&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; |&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-01.jpg|&amp;lt;small&amp;gt;ESP-01, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  File:ESP-01_flash.jpg|&amp;lt;small&amp;gt;[http://www.gigadevice.com/product/detail/5/119.html GigaDevice GD25Q40B] 4Mbit SPI flash&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-04&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 7 pin castellated holes on both sides (2mm distance)&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of left connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | VCC&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|9}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|10}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|12}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|13}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of right connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|2}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|8}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | n.c.&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | GND&lt;br /&gt;
  |}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-05&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 1x5pin pads (2.54mm distance), U.FL antenna connector&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Connector pinout&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | VCC&lt;br /&gt;
  |}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.esp8266.com ESP8266 Community Forum]&lt;br /&gt;
** [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28 Module overview]&lt;br /&gt;
* [https://nurdspace.nl/ESP8266 Translation of the chinese datasheet]&lt;br /&gt;
* [https://github.com/esp8266/esp8266-wiki/wiki/Pin-definition ESP8266 pinout]&lt;br /&gt;
* [http://zeptobars.ru/en/read/Espressif-ESP8266-wifi-serial-rs232-ESP8089-IoT Die shots of the chip]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10112</id>
		<title>Protocol decoder:Esp8266</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10112"/>
		<updated>2014-11-06T00:54:55Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Modules ===&lt;br /&gt;
&lt;br /&gt;
Various online marketplaces sell modules containing the ESP8266 (and a few assisting components) that comes preprogrammed with a TCP/IP stack that can be controlled via RS232 commands.&lt;br /&gt;
&lt;br /&gt;
* ESP-01&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connector: 2x4pin male 2.54mm header&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
| style=&amp;quot;width: 300px&amp;quot; |&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Connector pinout&lt;br /&gt;
  |-&lt;br /&gt;
    ! Function&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 1 &lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 3&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    | 5&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | VCC&lt;br /&gt;
    | 7&lt;br /&gt;
    | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
  &amp;lt;small&amp;gt;(Note: The PCB has two square pads at the pin header, so it&amp;#039;s not clear which one should be pin number 1. The table above assumes that the module is oriented as shown in the picture from the top, with the antenna on the right side, pin 1 is then in the top left corner and pin 8 next to the SPI flash chip.)&amp;lt;/small&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; |&lt;br /&gt;
  &amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:ESP-01.jpg|&amp;lt;small&amp;gt;ESP-01, top&amp;lt;/small&amp;gt;&lt;br /&gt;
  File:ESP-01_flash.jpg|&amp;lt;small&amp;gt;[http://www.gigadevice.com/product/detail/5/119.html GigaDevice GD25Q40B] 4Mbit SPI flash&amp;lt;/small&amp;gt;&lt;br /&gt;
  &amp;lt;/gallery&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-04&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 7 pin castellated holes on both sides (2mm distance)&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of left connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | VCC&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|9}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|10}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|12}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|13}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of right connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|2}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|8}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | n.c.&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | GND&lt;br /&gt;
  |}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-05&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 1x5pin pads (2.54mm distance), U.FL antenna connector&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Connector pinout&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | VCC&lt;br /&gt;
  |}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10111</id>
		<title>Protocol decoder:Esp8266</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10111"/>
		<updated>2014-11-06T00:40:30Z</updated>

		<summary type="html">&lt;p&gt;Jst: /* Modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = esp8266&lt;br /&gt;
| name            = ESP8266&lt;br /&gt;
| description     = WiFi Serial Transceiver.&lt;br /&gt;
| status          = planned&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = &lt;br /&gt;
| image           = [[File:ESP8266_closeup.jpg|250px]]&lt;br /&gt;
| input           = uart&lt;br /&gt;
| output          = esp8266&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;esp8266&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the UART command protocol spoken by modules equipped with an [https://espressif.com/en/products/esp8266/ ESP8266] WiFi transceiver chip.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The ESP8266 chip contains an [http://ip.cadence.com/ipportfolio/tensilica-ip/xtensa-customizable Xtensa] LX106 CPU and a radio for IEEE 802.11b/g/n.&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
&lt;br /&gt;
Various online marketplaces sell modules containing the ESP8266 (and a few assisting components) that comes preprogrammed with a TCP/IP stack that can be controlled via RS232 commands.&lt;br /&gt;
&lt;br /&gt;
* ESP-01&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
 &amp;lt;gallery&amp;gt;&lt;br /&gt;
 File:ESP-01.jpg|&amp;lt;small&amp;gt;ESP-01, top&amp;lt;/small&amp;gt;&lt;br /&gt;
 File:ESP-01_flash.jpg|&amp;lt;small&amp;gt;[http://www.gigadevice.com/product/detail/5/119.html GigaDevice GD25Q40B] 4Mbit SPI flash&amp;lt;/small&amp;gt;&lt;br /&gt;
 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
 Connector: 2x4pin male 2.54mm header&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
  ! Function&lt;br /&gt;
  ! Pin&lt;br /&gt;
  ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
  ! Function&lt;br /&gt;
|-&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  | 1 &lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
  | GND&lt;br /&gt;
|-&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  | 3&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  | 5&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | VCC&lt;br /&gt;
  | 7&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
(Note: The PCB has two square pads at the pin header, so it&amp;#039;s not clear which one should be pin number 1. The table above assumes that the module is oriented as shown in the picture from the top, with the antenna on the right side, pin 1 is then in the top left corner and pin 8 next to the SPI flash chip.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-04&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 7 pin castellated holes on both sides (2mm distance)&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of left connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | VCC&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|9}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|10}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|12}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|13}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of right connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|2}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|8}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | n.c.&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | GND&lt;br /&gt;
  |}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-05&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 1x5pin pads (2.54mm distance), U.FL antenna connector&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Connector pinout&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | GND&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | VCC&lt;br /&gt;
  |}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.esp8266.com ESP8266 Community Forum]&lt;br /&gt;
** [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28 Module overview]&lt;br /&gt;
* [https://nurdspace.nl/ESP8266 Translation of the chinese datasheet]&lt;br /&gt;
* [https://github.com/esp8266/esp8266-wiki/wiki/Pin-definition ESP8266 pinout]&lt;br /&gt;
* [http://zeptobars.ru/en/read/Espressif-ESP8266-wifi-serial-rs232-ESP8089-IoT Die shots of the chip]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10110</id>
		<title>Protocol decoder:Esp8266</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10110"/>
		<updated>2014-11-06T00:32:33Z</updated>

		<summary type="html">&lt;p&gt;Jst: /* Modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = esp8266&lt;br /&gt;
| name            = ESP8266&lt;br /&gt;
| description     = WiFi Serial Transceiver.&lt;br /&gt;
| status          = planned&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = &lt;br /&gt;
| image           = [[File:ESP8266_closeup.jpg|250px]]&lt;br /&gt;
| input           = uart&lt;br /&gt;
| output          = esp8266&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;esp8266&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the UART command protocol spoken by modules equipped with an [https://espressif.com/en/products/esp8266/ ESP8266] WiFi transceiver chip.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The ESP8266 chip contains an [http://ip.cadence.com/ipportfolio/tensilica-ip/xtensa-customizable Xtensa] LX106 CPU and a radio for IEEE 802.11b/g/n.&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
&lt;br /&gt;
Various online marketplaces sell modules containing the ESP8266 (and a few assisting components) that comes preprogrammed with a TCP/IP stack that can be controlled via RS232 commands.&lt;br /&gt;
&lt;br /&gt;
* ESP-01&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
 &amp;lt;gallery&amp;gt;&lt;br /&gt;
 File:ESP-01.jpg|&amp;lt;small&amp;gt;ESP-01, top&amp;lt;/small&amp;gt;&lt;br /&gt;
 File:ESP-01_flash.jpg|&amp;lt;small&amp;gt;[http://www.gigadevice.com/product/detail/5/119.html GigaDevice GD25Q40B] 4Mbit SPI flash&amp;lt;/small&amp;gt;&lt;br /&gt;
 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
 Connector: 2x4pin male 2.54mm header&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
  ! Function&lt;br /&gt;
  ! Pin&lt;br /&gt;
  ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
  ! Function&lt;br /&gt;
|-&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  | 1 &lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
  | GND&lt;br /&gt;
|-&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  | 3&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  | 5&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | VCC&lt;br /&gt;
  | 7&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
(Note: The PCB has two square pads at the pin header, so it&amp;#039;s not clear which one should be pin number 1. The table above assumes that the module is oriented as shown in the picture from the top, with the antenna on the right side, pin 1 is then in the top left corner and pin 8 next to the SPI flash chip.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-04&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Connectors: 7 pin castellated holes on both sides (2mm distance)&lt;br /&gt;
{|style=&amp;quot;border-width: 0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of left connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | VCC&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|9}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|10}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|12}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|13}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |}&lt;br /&gt;
|&lt;br /&gt;
  {| border=&amp;quot;0&amp;quot; style=&amp;quot;margin-top: 0px; font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
  |+ Pinout of right connector&lt;br /&gt;
  |-&lt;br /&gt;
    ! Pin&lt;br /&gt;
    ! Function&lt;br /&gt;
  |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|2}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|8}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 5&lt;br /&gt;
    | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |-&lt;br /&gt;
    | 6&lt;br /&gt;
    | n.c.&lt;br /&gt;
  |-&lt;br /&gt;
    | 7&lt;br /&gt;
    | GND&lt;br /&gt;
  |}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-05&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
TODO&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.esp8266.com ESP8266 Community Forum]&lt;br /&gt;
** [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28 Module overview]&lt;br /&gt;
* [https://nurdspace.nl/ESP8266 Translation of the chinese datasheet]&lt;br /&gt;
* [https://github.com/esp8266/esp8266-wiki/wiki/Pin-definition ESP8266 pinout]&lt;br /&gt;
* [http://zeptobars.ru/en/read/Espressif-ESP8266-wifi-serial-rs232-ESP8089-IoT Die shots of the chip]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10109</id>
		<title>Protocol decoder:Esp8266</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10109"/>
		<updated>2014-11-06T00:19:20Z</updated>

		<summary type="html">&lt;p&gt;Jst: /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = esp8266&lt;br /&gt;
| name            = ESP8266&lt;br /&gt;
| description     = WiFi Serial Transceiver.&lt;br /&gt;
| status          = planned&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = &lt;br /&gt;
| image           = [[File:ESP8266_closeup.jpg|250px]]&lt;br /&gt;
| input           = uart&lt;br /&gt;
| output          = esp8266&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;esp8266&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the UART command protocol spoken by modules equipped with an [https://espressif.com/en/products/esp8266/ ESP8266] WiFi transceiver chip.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The ESP8266 chip contains an [http://ip.cadence.com/ipportfolio/tensilica-ip/xtensa-customizable Xtensa] LX106 CPU and a radio for IEEE 802.11b/g/n.&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
&lt;br /&gt;
Various online marketplaces sell modules containing the ESP8266 (and a few assisting components) that comes preprogrammed with a TCP/IP stack that can be controlled via RS232 commands.&lt;br /&gt;
&lt;br /&gt;
* ESP-01&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
 &amp;lt;gallery&amp;gt;&lt;br /&gt;
 File:ESP-01.jpg|&amp;lt;small&amp;gt;ESP-01, top&amp;lt;/small&amp;gt;&lt;br /&gt;
 File:ESP-01_flash.jpg|&amp;lt;small&amp;gt;[http://www.gigadevice.com/product/detail/5/119.html GigaDevice GD25Q40B] 4Mbit SPI flash&amp;lt;/small&amp;gt;&lt;br /&gt;
 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
 Connector: 2x4pin male 2.54mm header&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
  ! Function&lt;br /&gt;
  ! Pin&lt;br /&gt;
  ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
  ! Function&lt;br /&gt;
|-&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  | 1 &lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
  | GND&lt;br /&gt;
|-&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  | 3&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  | 5&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | VCC&lt;br /&gt;
  | 7&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
(Note: The PCB has two square pads at the pin header, so it&amp;#039;s not clear which one should be pin number 1. The table above assumes that the module is oriented as shown in the picture from the top, with the antenna on the right side, pin 1 is then in the top left corner and pin 8 next to the SPI flash chip.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-04&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|+ Pinout of left connector&lt;br /&gt;
|-&lt;br /&gt;
  ! Pin&lt;br /&gt;
  ! Function&lt;br /&gt;
|-&lt;br /&gt;
  | 1&lt;br /&gt;
  | VCC&lt;br /&gt;
|-&lt;br /&gt;
  | 2&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|9}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | 3&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|10}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | 4&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|12}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | 5&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|13}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | 6&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | 7&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|+ Pinout of right connector&lt;br /&gt;
|-&lt;br /&gt;
  ! Pin&lt;br /&gt;
  ! Function&lt;br /&gt;
|-&lt;br /&gt;
  | 1&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|2}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | 2&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | 3&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|8}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | 4&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | 5&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | 6&lt;br /&gt;
  | n.c.&lt;br /&gt;
|-&lt;br /&gt;
  | 7&lt;br /&gt;
  | GND&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-05&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
TODO&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.esp8266.com ESP8266 Community Forum]&lt;br /&gt;
** [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28 Module overview]&lt;br /&gt;
* [https://nurdspace.nl/ESP8266 Translation of the chinese datasheet]&lt;br /&gt;
* [https://github.com/esp8266/esp8266-wiki/wiki/Pin-definition ESP8266 pinout]&lt;br /&gt;
* [http://zeptobars.ru/en/read/Espressif-ESP8266-wifi-serial-rs232-ESP8089-IoT Die shots of the chip]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10108</id>
		<title>Protocol decoder:Esp8266</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10108"/>
		<updated>2014-11-06T00:05:17Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = esp8266&lt;br /&gt;
| name            = ESP8266&lt;br /&gt;
| description     = WiFi Serial Transceiver.&lt;br /&gt;
| status          = planned&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = &lt;br /&gt;
| image           = [[File:ESP8266_closeup.jpg|250px]]&lt;br /&gt;
| input           = uart&lt;br /&gt;
| output          = esp8266&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;esp8266&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the UART command protocol spoken by modules equipped with an [https://espressif.com/en/products/esp8266/ ESP8266] WiFi transceiver chip.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The ESP8266 chip contains an [http://ip.cadence.com/ipportfolio/tensilica-ip/xtensa-customizable Xtensa] LX106 CPU and a radio for IEEE 802.11b/g/n.&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
&lt;br /&gt;
Various online marketplaces sell modules containing the ESP8266 (and a few assisting components) that comes preprogrammed with a TCP/IP stack that can be controlled via RS232 commands.&lt;br /&gt;
&lt;br /&gt;
* ESP-01&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
 &amp;lt;gallery&amp;gt;&lt;br /&gt;
 File:ESP-01.jpg|&amp;lt;small&amp;gt;ESP-01, top&amp;lt;/small&amp;gt;&lt;br /&gt;
 File:ESP-01_flash.jpg|&amp;lt;small&amp;gt;[http://www.gigadevice.com/product/detail/5/119.html GigaDevice GD25Q40B] 4Mbit SPI flash&amp;lt;/small&amp;gt;&lt;br /&gt;
 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
 Connector: 2x4pin male 2.54mm header&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
  ! Function&lt;br /&gt;
  ! Pin&lt;br /&gt;
  ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
  ! Function&lt;br /&gt;
|-&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|26}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  | 1 &lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
  | GND&lt;br /&gt;
|-&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  | 3&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|14}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|32}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  | 5&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|15}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
  | VCC&lt;br /&gt;
  | 7&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
  | &amp;lt;div&amp;gt;{{ESP8266EXpin|25}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
(Note: The PCB has two square pads at the pin header, so it&amp;#039;s not clear which one should be pin number 1. The table above assumes that the module is oriented as shown in the picture from the top, with the antenna on the right side, pin 1 is then in the top left corner and pin 8 next to the SPI flash chip.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-02&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
  TODO&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-03&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
TODO&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-04&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
TODO&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-05&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
TODO&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.esp8266.com ESP8266 Community Forum]&lt;br /&gt;
** [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28 Module overview]&lt;br /&gt;
* [https://nurdspace.nl/ESP8266 Translation of the chinese datasheet]&lt;br /&gt;
* [https://github.com/esp8266/esp8266-wiki/wiki/Pin-definition ESP8266 pinout]&lt;br /&gt;
* [http://zeptobars.ru/en/read/Espressif-ESP8266-wifi-serial-rs232-ESP8089-IoT Die shots of the chip]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Template:ESP8266EXpin&amp;diff=10107</id>
		<title>Template:ESP8266EXpin</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Template:ESP8266EXpin&amp;diff=10107"/>
		<updated>2014-11-06T00:05:09Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Template for the ESP8266EX pin names.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{#switch: {{{1}}}&lt;br /&gt;
 |  1 = VDDA&lt;br /&gt;
 |  2 = LNA&lt;br /&gt;
 |  3 = VDD3P3&lt;br /&gt;
 |  4 = VDD3P3&lt;br /&gt;
 |  5 = VDD_RTC&lt;br /&gt;
 |  6 = TOUT&lt;br /&gt;
 |  7 = CHIP_EN&lt;br /&gt;
 |  8 = XPD_DCDC&lt;br /&gt;
 |  9 = MTMS&lt;br /&gt;
 | 10 = MTDI&lt;br /&gt;
 | 11 = VDDPST&lt;br /&gt;
 | 12 = MTCK&lt;br /&gt;
 | 13 = MTDO&lt;br /&gt;
 | 14 = GPIO2&lt;br /&gt;
 | 15 = GPIO0&lt;br /&gt;
 | 16 = GPIO4&lt;br /&gt;
 | 17 = VDDPST&lt;br /&gt;
 | 18 = SDIO_DATA_2&lt;br /&gt;
 | 19 = SDIO_DATA_3&lt;br /&gt;
 | 20 = SDIO_CMD&lt;br /&gt;
 | 21 = SDIO_CLK&lt;br /&gt;
 | 22 = SDIO_DATA_0&lt;br /&gt;
 | 23 = SDIO_DATA_1&lt;br /&gt;
 | 24 = GPIO5&lt;br /&gt;
 | 25 = U0RXD&lt;br /&gt;
 | 26 = U0TXD&lt;br /&gt;
 | 27 = XTAL_OUT&lt;br /&gt;
 | 28 = XTAL_IN&lt;br /&gt;
 | 29 = VDDD&lt;br /&gt;
 | 30 = VDDA&lt;br /&gt;
 | 31 = RES12K&lt;br /&gt;
 | 32 = EXT_RSTB&lt;br /&gt;
 | error: unknown pin {{{1}}}&lt;br /&gt;
}}&amp;lt;includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Template:ESP8266EXpin&amp;diff=10106</id>
		<title>Template:ESP8266EXpin</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Template:ESP8266EXpin&amp;diff=10106"/>
		<updated>2014-11-06T00:03:02Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Template for the ESP8266EX pin names.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#switch: {{{1}}}&lt;br /&gt;
 |  1 = VDDA&lt;br /&gt;
 |  2 = LNA&lt;br /&gt;
 |  3 = VDD3P3&lt;br /&gt;
 |  4 = VDD3P3&lt;br /&gt;
 |  5 = VDD_RTC&lt;br /&gt;
 |  6 = TOUT&lt;br /&gt;
 |  7 = CHIP_EN&lt;br /&gt;
 |  8 = XPD_DCDC&lt;br /&gt;
 |  9 = MTMS&lt;br /&gt;
 | 10 = MTDI&lt;br /&gt;
 | 11 = VDDPST&lt;br /&gt;
 | 12 = MTCK&lt;br /&gt;
 | 13 = MTDO&lt;br /&gt;
 | 14 = GPIO2&lt;br /&gt;
 | 15 = GPIO0&lt;br /&gt;
 | 16 = GPIO4&lt;br /&gt;
 | 17 = VDDPST&lt;br /&gt;
 | 18 = SDIO_DATA_2&lt;br /&gt;
 | 19 = SDIO_DATA_3&lt;br /&gt;
 | 20 = SDIO_CMD&lt;br /&gt;
 | 21 = SDIO_CLK&lt;br /&gt;
 | 22 = SDIO_DATA_0&lt;br /&gt;
 | 23 = SDIO_DATA_1&lt;br /&gt;
 | 24 = GPIO5&lt;br /&gt;
 | 25 = U0RXD&lt;br /&gt;
 | 26 = U0TXD&lt;br /&gt;
 | 27 = XTAL_OUT&lt;br /&gt;
 | 28 = XTAL_IN&lt;br /&gt;
 | 29 = VDDD&lt;br /&gt;
 | 30 = VDDA&lt;br /&gt;
 | 31 = RES12K&lt;br /&gt;
 | 32 = EXT_RSTB&lt;br /&gt;
 | error: unknown pin {{{1}}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Template:ESP8266EXpin&amp;diff=10105</id>
		<title>Template:ESP8266EXpin</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Template:ESP8266EXpin&amp;diff=10105"/>
		<updated>2014-11-06T00:01:46Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Template for the ESP8266EX pin names.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{#switch: {{{1}}}&lt;br /&gt;
 |  1 = VDDA&lt;br /&gt;
 |  2 = LNA&lt;br /&gt;
 |  3 = VDD3P3&lt;br /&gt;
 |  4 = VDD3P3&lt;br /&gt;
 |  5 = VDD_RTC&lt;br /&gt;
 |  6 = TOUT&lt;br /&gt;
 |  7 = CHIP_EN&lt;br /&gt;
 |  8 = XPD_DCDC&lt;br /&gt;
 |  9 = MTMS&lt;br /&gt;
 | 10 = MTDI&lt;br /&gt;
 | 11 = VDDPST&lt;br /&gt;
 | 12 = MTCK&lt;br /&gt;
 | 13 = MTDO&lt;br /&gt;
 | 14 = GPIO2&lt;br /&gt;
 | 15 = GPIO0&lt;br /&gt;
 | 16 = GPIO4&lt;br /&gt;
 | 17 = VDDPST&lt;br /&gt;
 | 18 = SDIO_DATA_2&lt;br /&gt;
 | 19 = SDIO_DATA_3&lt;br /&gt;
 | 20 = SDIO_CMD&lt;br /&gt;
 | 21 = SDIO_CLK&lt;br /&gt;
 | 22 = SDIO_DATA_0&lt;br /&gt;
 | 23 = SDIO_DATA_1&lt;br /&gt;
 | 24 = GPIO5&lt;br /&gt;
 | 25 = U0RXD&lt;br /&gt;
 | 26 = U0TXD&lt;br /&gt;
 | 27 = XTAL_OUT&lt;br /&gt;
 | 28 = XTAL_IN&lt;br /&gt;
 | 29 = VDDD&lt;br /&gt;
 | 30 = VDDA&lt;br /&gt;
 | 31 = RES12K&lt;br /&gt;
 | 32 = EXT_RSTB&lt;br /&gt;
 | error: unknown pin {{{1}}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10104</id>
		<title>Protocol decoder:Esp8266</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10104"/>
		<updated>2014-11-05T23:52:02Z</updated>

		<summary type="html">&lt;p&gt;Jst: /* Modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = esp8266&lt;br /&gt;
| name            = ESP8266&lt;br /&gt;
| description     = WiFi Serial Transceiver.&lt;br /&gt;
| status          = planned&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = &lt;br /&gt;
| image           = [[File:ESP8266_closeup.jpg|250px]]&lt;br /&gt;
| input           = uart&lt;br /&gt;
| output          = esp8266&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;esp8266&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the UART command protocol spoken by modules equipped with an [https://espressif.com/en/products/esp8266/ ESP8266] WiFi transceiver chip.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The ESP8266 chip contains an [http://ip.cadence.com/ipportfolio/tensilica-ip/xtensa-customizable Xtensa] LX106 CPU and a radio for IEEE 802.11b/g/n.&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
&lt;br /&gt;
Various online marketplaces sell modules containing the ESP8266 (and a few assisting components) that comes preprogrammed with a TCP/IP stack that can be controlled via RS232 commands.&lt;br /&gt;
&lt;br /&gt;
* ESP-01&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
 &amp;lt;gallery&amp;gt;&lt;br /&gt;
 File:ESP-01.jpg|&amp;lt;small&amp;gt;ESP-01, top&amp;lt;/small&amp;gt;&lt;br /&gt;
 File:ESP-01_flash.jpg|&amp;lt;small&amp;gt;[http://www.gigadevice.com/product/detail/5/119.html GigaDevice GD25Q40B] 4Mbit SPI flash&amp;lt;/small&amp;gt;&lt;br /&gt;
 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
 Connector: 2x4pin male 2.54mm header&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
  ! Function&lt;br /&gt;
  ! Pin&lt;br /&gt;
  ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
  ! Function&lt;br /&gt;
|-&lt;br /&gt;
  | {{ESP8266EXpin|26}}&lt;br /&gt;
  | 1 &lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
  | GND&lt;br /&gt;
|-&lt;br /&gt;
  | {{ESP8266EXpin|7}}&lt;br /&gt;
  | 3&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
  | {{ESP8266EXpin|14}}&lt;br /&gt;
|-&lt;br /&gt;
  | {{ESP8266EXpin|32}}&lt;br /&gt;
  | 5&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
  | {{ESP8266EXpin|15}}&lt;br /&gt;
|-&lt;br /&gt;
  | VCC&lt;br /&gt;
  | 7&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
  | {{ESP8266EXpin|25}}&lt;br /&gt;
|}&lt;br /&gt;
(Note: The PCB has two square pads at the pin header, so it&amp;#039;s not clear which one should be pin number 1. The table above assumes that the module is oriented as shown in the picture from the top, with the antenna on the right side, pin 1 is then in the top left corner and pin 8 next to the SPI flash chip.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-02&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
  TODO&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-03&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
TODO&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-04&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
TODO&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-05&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
TODO&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.esp8266.com ESP8266 Community Forum]&lt;br /&gt;
** [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28 Module overview]&lt;br /&gt;
* [https://nurdspace.nl/ESP8266 Translation of the chinese datasheet]&lt;br /&gt;
* [https://github.com/esp8266/esp8266-wiki/wiki/Pin-definition ESP8266 pinout]&lt;br /&gt;
* [http://zeptobars.ru/en/read/Espressif-ESP8266-wifi-serial-rs232-ESP8089-IoT Die shots of the chip]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Template:ESP8266EXpin&amp;diff=10103</id>
		<title>Template:ESP8266EXpin</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Template:ESP8266EXpin&amp;diff=10103"/>
		<updated>2014-11-05T23:48:06Z</updated>

		<summary type="html">&lt;p&gt;Jst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Template for the ESP8266EX pin names.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{#switch: {{{1}}}&lt;br /&gt;
 |  1 = VDDA&lt;br /&gt;
 |  2 = LNA&lt;br /&gt;
 |  3 = VDD3P3&lt;br /&gt;
 |  4 = VDD3P3&lt;br /&gt;
 |  5 = VDD_RTC&lt;br /&gt;
 |  6 = TOUT&lt;br /&gt;
 |  7 = CHIP_EN&lt;br /&gt;
 |  8 = XPD_DCDC&lt;br /&gt;
 |  9 = MTMS&lt;br /&gt;
 | 10 = MTDI&lt;br /&gt;
 | 11 = VDDPST&lt;br /&gt;
 | 12 = MTCK&lt;br /&gt;
 | 13 = MTDO&lt;br /&gt;
 | 14 = GPIO2&lt;br /&gt;
 | 15 = GPIO0&lt;br /&gt;
 | 16 = GPIO4&lt;br /&gt;
 | 17 = VDDPST&lt;br /&gt;
 | 18 = SDIO_DATA_2&lt;br /&gt;
 | 19 = SDIO_DATA_3&lt;br /&gt;
 | 20 = SDIO_CMD&lt;br /&gt;
 | 21 = SDIO_CLK&lt;br /&gt;
 | 22 = SDIO_DATA_0&lt;br /&gt;
 | 23 = SDIO_DATA_1&lt;br /&gt;
 | 24 = GPIO5&lt;br /&gt;
 | 25 = U0RXD&lt;br /&gt;
 | 26 = U0TXD&lt;br /&gt;
 | 27 = XTAL_OUT&lt;br /&gt;
 | 28 = XTAL_IN&lt;br /&gt;
 | 29 = VDDD&lt;br /&gt;
 | 30 = VDDA&lt;br /&gt;
 | 31 = RES12K&lt;br /&gt;
 | 32 = EXT_RSTB&lt;br /&gt;
 | error: unknown pin {{{1}}}&lt;br /&gt;
}}&amp;lt;includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Template:ESP8266EXpin&amp;diff=10102</id>
		<title>Template:ESP8266EXpin</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Template:ESP8266EXpin&amp;diff=10102"/>
		<updated>2014-11-05T23:42:59Z</updated>

		<summary type="html">&lt;p&gt;Jst: Created page with &amp;quot;&amp;lt;noinclude&amp;gt; Template for the ESP8266EX pin names. &amp;lt;/noinclude&amp;gt; &amp;lt;includeonly&amp;gt; {{#switch: {{{1}}}  |  1 = VDDA  |  2 = LNA  |  3 = VDD3P3  |  4 = VDD3P3  |  5 = VDD_RTC  |  6 =...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Template for the ESP8266EX pin names.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#switch: {{{1}}}&lt;br /&gt;
 |  1 = VDDA&lt;br /&gt;
 |  2 = LNA&lt;br /&gt;
 |  3 = VDD3P3&lt;br /&gt;
 |  4 = VDD3P3&lt;br /&gt;
 |  5 = VDD_RTC&lt;br /&gt;
 |  6 = TOUT&lt;br /&gt;
 |  7 = CHIP_EN&lt;br /&gt;
 |  8 = XPD_DCDC&lt;br /&gt;
 |  9 = MTMS&lt;br /&gt;
 | 10 = MTDI&lt;br /&gt;
 | 11 = VDDPST&lt;br /&gt;
 | 12 = MTCK&lt;br /&gt;
 | 13 = MTDO&lt;br /&gt;
 | 14 = GPIO2&lt;br /&gt;
 | 15 = GPIO0&lt;br /&gt;
 | 16 = GPIO4&lt;br /&gt;
 | 17 = VDDPST&lt;br /&gt;
 | 18 = SDIO_DATA_2&lt;br /&gt;
 | 19 = SDIO_DATA_3&lt;br /&gt;
 | 20 = SDIO_CMD&lt;br /&gt;
 | 21 = SDIO_CLK&lt;br /&gt;
 | 22 = SDIO_DATA_0&lt;br /&gt;
 | 23 = SDIO_DATA_1&lt;br /&gt;
 | 24 = GPIO5&lt;br /&gt;
 | 25 = U0RXD&lt;br /&gt;
 | 26 = U0TXD&lt;br /&gt;
 | 27 = XTAL_OUT&lt;br /&gt;
 | 28 = XTAL_IN&lt;br /&gt;
 | 29 = VDDD&lt;br /&gt;
 | 30 = VDDA&lt;br /&gt;
 | 31 = RES12K&lt;br /&gt;
 | 32 = EXT_RSTB&lt;br /&gt;
 | error: unknown pin {{{1}}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10082</id>
		<title>Protocol decoder:Esp8266</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Esp8266&amp;diff=10082"/>
		<updated>2014-11-03T14:05:14Z</updated>

		<summary type="html">&lt;p&gt;Jst: /* Modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = esp8266&lt;br /&gt;
| name            = ESP8266&lt;br /&gt;
| description     = WiFi Serial Transceiver.&lt;br /&gt;
| status          = planned&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = &lt;br /&gt;
| image           = [[File:ESP8266_closeup.jpg|250px]]&lt;br /&gt;
| input           = uart&lt;br /&gt;
| output          = esp8266&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;esp8266&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the UART command protocol spoken by modules equipped with an [https://espressif.com/en/products/esp8266/ ESP8266] WiFi transceiver chip.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The ESP8266 chip contains an [http://ip.cadence.com/ipportfolio/tensilica-ip/xtensa-customizable Xtensa] LX106 CPU and a radio for IEEE 802.11b/g/n.&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
&lt;br /&gt;
Various online marketplaces sell modules containing the ESP8266 (and a few assisting components) that comes preprogrammed with a TCP/IP stack that can be controlled via RS232 commands.&lt;br /&gt;
&lt;br /&gt;
* ESP-01&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
 &amp;lt;gallery&amp;gt;&lt;br /&gt;
 File:ESP-01.jpg|&amp;lt;small&amp;gt;ESP-01, top&amp;lt;/small&amp;gt;&lt;br /&gt;
 File:ESP-01_flash.jpg|&amp;lt;small&amp;gt;[http://www.gigadevice.com/product/detail/5/119.html GigaDevice GD25Q40B] 4Mbit SPI flash&amp;lt;/small&amp;gt;&lt;br /&gt;
 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
 Connector: 2x4pin male 2.54mm header&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller; text-align: center&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
  ! Function&lt;br /&gt;
  ! Pin&lt;br /&gt;
  ! style=&amp;quot;border-left:2px solid gray&amp;quot; | Pin&lt;br /&gt;
  ! Function&lt;br /&gt;
|-&lt;br /&gt;
  | U0TXD&lt;br /&gt;
  | 1 &lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 2&lt;br /&gt;
  | GND&lt;br /&gt;
|-&lt;br /&gt;
  | CHIP_EN&lt;br /&gt;
  | 3&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 4&lt;br /&gt;
  | GPIO2&lt;br /&gt;
|-&lt;br /&gt;
  | EXT_RSTB&lt;br /&gt;
  | 5&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 6&lt;br /&gt;
  | GPIO0&lt;br /&gt;
|-&lt;br /&gt;
  | VCC&lt;br /&gt;
  | 7&lt;br /&gt;
  | style=&amp;quot;border-left:2px solid gray&amp;quot; | 8&lt;br /&gt;
  | U0RXD&lt;br /&gt;
|}&lt;br /&gt;
(Note: The PCB has two square pads at the pin header, so it&amp;#039;s not clear which one should be pin number 1. The table above assumes that the module is oriented as shown in the picture from the top, with the antenna on the right side, pin 1 is then in the top left corner and pin 8 next to the SPI flash chip.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-02&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
  TODO&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-03&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
TODO&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-04&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
TODO&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ESP-05&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
TODO&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.esp8266.com ESP8266 Community Forum]&lt;br /&gt;
** [http://www.esp8266.com/viewtopic.php?f=5&amp;amp;t=28 Module overview]&lt;br /&gt;
* [https://nurdspace.nl/ESP8266 Translation of the chinese datasheet]&lt;br /&gt;
* [https://github.com/esp8266/esp8266-wiki/wiki/Pin-definition ESP8266 pinout]&lt;br /&gt;
* [http://zeptobars.ru/en/read/Espressif-ESP8266-wifi-serial-rs232-ESP8089-IoT Die shots of the chip]&lt;/div&gt;</summary>
		<author><name>Jst</name></author>
	</entry>
</feed>