<?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=LiborT</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=LiborT"/>
	<link rel="alternate" type="text/html" href="https://sigrok.org/wiki/Special:Contributions/LiborT"/>
	<updated>2026-04-19T16:08:34Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoders&amp;diff=16511</id>
		<title>Protocol decoders</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoders&amp;diff=16511"/>
		<updated>2023-05-24T13:35:15Z</updated>

		<summary type="html">&lt;p&gt;LiborT: /* Possible candidates for future protocol decoders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of &amp;#039;&amp;#039;&amp;#039;supported protocol decoders (PDs)&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;decoders which we might want to write in the future&amp;#039;&amp;#039;&amp;#039; (or users might want to contribute).&lt;br /&gt;
&lt;br /&gt;
See [[Protocol decoder API]] for details on how the decoders work in sigrok, and [[Protocol decoder HOWTO]] for a quick introduction about how to write your own decoders.&lt;br /&gt;
&lt;br /&gt;
== Supported protocol decoders ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Generated via sigrok-cli --list-supported-wiki. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number of currently supported protocol decoders: &amp;#039;&amp;#039;&amp;#039;131&amp;#039;&amp;#039;&amp;#039;.&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;
!Protocol&lt;br /&gt;
!Tags&lt;br /&gt;
!Input IDs&lt;br /&gt;
!Output IDs&lt;br /&gt;
!Status&lt;br /&gt;
!Full name&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
{{pd|ac97|AC &amp;#039;97|Audio Codec &amp;#039;97|Audio and modem control for PC systems.|Audio, PC|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ad5626|AD5626|Analog Devices AD5626|Analog Devices AD5626 12-bit nanoDAC.|IC, Analog/digital|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ad79x0|AD79x0|Analog Devices AD79x0|Analog Devices AD7910/AD7920 12-bit ADC.|IC, Analog/digital|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ade77xx|ADE77xx|Analog Devices ADE77xx|Poly phase multifunction energy metering IC protocol.|Analog/digital, IC, Sensor|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|adf435x|ADF435x|Analog Devices ADF4350/1|Wideband synthesizer with integrated VCO.|Clock/timing, IC, Wireless/RF|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|adns5020|ADNS-5020|Avago ADNS-5020|Bidirectional optical mouse sensor protocol.|IC, PC, Sensor|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|adxl345|ADXL345|Analog Devices ADXL345|Analog Devices ADXL345 3-axis accelerometer.|IC, Sensor|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|am230x|AM230x|Aosong AM230x/DHTxx/RHTxx|Aosong AM230x/DHTxx/RHTxx humidity/temperature sensor.|IC, Sensor|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|amulet_ascii|Amulet ASCII|Amulet LCD ASCII|Amulet Technologies LCD controller ASCII protocol.|Display|uart|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|arm_etmv3|ARM ETMv3|ARM Embedded Trace Macroblock v3|ARM ETM v3 instruction trace protocol.|Debug/trace|uart|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|arm_itm|ARM ITM|ARM Instrumentation Trace Macroblock|ARM Cortex-M / ARMv7m ITM trace protocol.|Debug/trace|uart|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|arm_tpiu|ARM TPIU|ARM Trace Port Interface Unit|Filter TPIU formatted trace data into separate streams.|Debug/trace|uart|uart|supported}}&lt;br /&gt;
{{pd|atsha204a|ATSHA204A|Microchip ATSHA204A|Microchip ATSHA204A family crypto authentication protocol.|Security/crypto, IC, Memory|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|aud|AUD|Advanced User Debugger|Renesas/Hitachi Advanced User Debugger (AUD) protocol.|Debug/trace|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|avr_isp|AVR ISP|AVR In-System Programming|Atmel AVR In-System Programming (ISP) protocol.|Debug/trace|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|avr_pdi|AVR PDI|Atmel Program and Debug Interface|Atmel ATxmega Program and Debug Interface (PDI) protocol.|Debug/trace|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|caliper|Caliper|Digital calipers|Protocol of cheap generic digital calipers.|Analog/digital, Sensor|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|can|CAN|Controller Area Network|Field bus protocol for distributed realtime control.|Automotive|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|cc1101|CC1101|Texas Instruments CC1101|Low-power sub-1GHz RF transceiver chip.|IC, Wireless/RF|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|cec|CEC|HDMI-CEC|HDMI Consumer Electronics Control (CEC) protocol.|Display, PC|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|cfp|CFP|100 Gigabit C form-factor pluggable|100 Gigabit C form-factor pluggable (CFP) protocol.|Networking|mdio|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|cjtag|cJTAG|Compact Joint Test Action Group (IEEE 1149.7)|Protocol for testing, debugging, and flashing ICs.|Debug/trace|logic|jtag|supported}}&lt;br /&gt;
{{pd|counter|Counter|Edge counter|Count the number of edges in a signal.|Util|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|dali|DALI|Digital Addressable Lighting Interface|Digital Addressable Lighting Interface (DALI) protocol.|Embedded/industrial, Lighting|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|dcf77|DCF77|DCF77 time protocol|European longwave time signal (77.5kHz carrier signal).|Clock/timing|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|dmx512|DMX512|Digital MultipleX 512|Digital MultipleX 512 (DMX512) lighting protocol.|Embedded/industrial, Lighting|uart|dmx512|supported}}&lt;br /&gt;
{{pd|ds1307|DS1307|Dallas DS1307|Dallas DS1307 realtime clock module protocol.|Clock/timing, IC|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ds2408|DS2408|Maxim DS2408|1-Wire 8-channel addressable switch.|Embedded/industrial, IC|onewire_network|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ds243x|DS243x|Maxim DS2432/3|Maxim DS243x series 1-Wire EEPROM protocol.|IC, Memory|onewire_network|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ds28ea00|DS28EA00|Maxim DS28EA00 1-Wire digital thermometer|1-Wire digital thermometer with Sequence Detect and PIO.|IC, Sensor|onewire_network|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|dsi|DSI|Digital Serial Interface|Digital Serial Interface (DSI) lighting protocol.|Embedded/industrial, Lighting|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|edid|EDID|Extended Display Identification Data|Data structure describing display device capabilities.|Display, Memory, PC|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|eeprom24xx|24xx EEPROM|24xx I²C EEPROM|24xx series I²C EEPROM protocol.|IC, Memory|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|eeprom93xx|93xx EEPROM|93xx Microwire EEPROM|93xx series Microwire EEPROM protocol.|IC, Memory|microwire|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|em4100|EM4100|RFID EM4100|EM4100 100-150kHz RFID protocol.|IC, RFID|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|em4305|EM4305|RFID EM4205/EM4305|EM4205/EM4305 100-150kHz RFID protocol.|IC, RFID|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|enc28j60|ENC28J60|Microchip ENC28J60|Microchip ENC28J60 10Base-T Ethernet controller protocol.|Embedded/industrial, Networking|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|flexray|FlexRay|FlexRay|Automotive network communications protocol.|Automotive|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|graycode|Gray code|Gray code and rotary encoder|Accumulate rotary encoder increments, provide statistics.|Encoding|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|guess_bitrate|Guess bitrate|Guess bitrate/baudrate|Guess the bitrate/baudrate of a UART (or other) protocol.|Clock/timing, Util|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|hdcp|HDCP|HDCP over HDMI|HDCP protocol over HDMI.|PC, Security/crypto|i2c|hdcp|supported}}&lt;br /&gt;
{{pd|i2c|I²C|Inter-Integrated Circuit|Two-wire, multi-master, serial bus.|Embedded/industrial|logic|i2c|supported}}&lt;br /&gt;
{{pd|i2cdemux|I²C demux|I²C demultiplexer|Demux I²C packets into per-slave-address streams.|Util|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|i2cfilter|I²C filter|I²C filter|Filter out addresses/directions in an I²C stream.|Util|i2c|i2c|supported}}&lt;br /&gt;
{{pd|i2s|I²S|Integrated Interchip Sound|Serial bus for connecting digital audio devices.|Audio, PC|logic|i2s|supported}}&lt;br /&gt;
{{pd|ieee488|IEEE-488|IEEE-488 GPIB/HPIB/IEC|IEEE-488 General Purpose Interface Bus (GPIB/HPIB or IEC).|PC, Retro computing|logic|ieee488|supported}}&lt;br /&gt;
{{pd|ir_irmp|IR IRMP|IR IRMP|IRMP infrared remote control multi protocol.|IR|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ir_nec|IR NEC|IR NEC|NEC infrared remote control protocol.|IR|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ir_rc5|IR RC-5|IR RC-5|RC-5 infrared remote control protocol.|IR|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ir_rc6|IR RC-6|IR RC-6|RC-6 infrared remote control protocol.|IR|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ir_sirc|IR SIRC|Sony IR (SIRC)|Sony infrared remote control protocol (SIRC).|IR|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|jitter|Jitter|Timing jitter calculation|Retrieves the timing jitter between two digital signals.|Clock/timing, Util|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|jtag|JTAG|Joint Test Action Group (IEEE 1149.1)|Protocol for testing, debugging, and flashing ICs.|Debug/trace|logic|jtag|supported}}&lt;br /&gt;
{{pd|jtag_ejtag|JTAG / EJTAG|Joint Test Action Group / EJTAG (MIPS)|MIPS EJTAG protocol.|Debug/trace|jtag|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|jtag_stm32|JTAG / STM32|Joint Test Action Group / ST STM32|ST STM32-specific JTAG protocol.|Debug/trace|jtag|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|lfast|LFAST|NXP LFAST interface|Differential high-speed P2P interface|Embedded/industrial|logic|lfast|supported}}&lt;br /&gt;
{{pd|lin|LIN|Local Interconnect Network|Local Interconnect Network (LIN) protocol.|Automotive|uart|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|lm75|LM75|National LM75|National LM75 (and compatibles) temperature sensor.|Sensor|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|lpc|LPC|Low Pin Count|Protocol for low-bandwidth devices on PC mainboards.|PC|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ltc242x|LTC242x|Linear Technology LTC242x|Linear Technology LTC2421/LTC2422 1-/2-channel 20-bit ADC.|IC, Analog/digital|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ltc26x7|LTC26x7|Linear Technology LTC26x7|Linear Technology LTC26x7 16-/14-/12-bit rail-to-rail DACs.|IC, Analog/digital|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|maple_bus|Maple bus|SEGA Maple bus|Maple bus peripheral protocol for SEGA Dreamcast.|Retro computing|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|max7219|MAX7219|Maxim MAX7219/MAX7221|Maxim MAX72xx series 8-digit LED display driver.|Display|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|mcs48|MCS-48|Intel MCS-48|Intel MCS-48 external memory access protocol.|Retro computing|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|mdio|MDIO|Management Data Input/Output|MII management bus between MAC and PHY.|Networking|logic|mdio|supported}}&lt;br /&gt;
{{pd|microwire|Microwire|Microwire|3-wire, half-duplex, synchronous serial bus.|Embedded/industrial|logic|microwire|supported}}&lt;br /&gt;
{{pd|midi|MIDI|Musical Instrument Digital Interface|Musical Instrument Digital Interface (MIDI) protocol.|Audio, PC|uart|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|mil-std-1553|MIL-STD-1553|MIL-STD-1553 avionic data bus.|MIL-STD-1553 avionic data bus protocol.|Embedded/industrial, Networking|logic|&amp;amp;mdash;|soon}}&lt;br /&gt;
{{pd|miller|Miller|Miller encoding|Miller encoding protocol.|Encoding|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|mlx90614|MLX90614|Melexis MLX90614|Melexis MLX90614 infrared thermometer protocol.|IC, Sensor|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|modbus|Modbus|Modbus RTU over RS232/RS485|Modbus RTU protocol for industrial applications.|Embedded/industrial|uart|modbus|supported}}&lt;br /&gt;
{{pd|morse|Morse|Morse code|Demodulated morse code protocol.|Encoding|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|mrf24j40|MRF24J40|Microchip MRF24J40|IEEE 802.15.4 2.4 GHz RF tranceiver chip.|IC, Wireless/RF|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|mxc6225xu|MXC6225XU|MEMSIC MXC6225XU|Digital Thermal Orientation Sensor (DTOS) protocol.|IC, Sensor|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|nes_gamepad|NES gamepad|Nintendo Entertainment System gamepad|NES gamepad button states.|Retro computing|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|nrf24l01|nRF24L01(+)|Nordic Semiconductor nRF24L01(+)|2.4GHz RF transceiver chip.|IC, Wireless/RF|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|nrf905|nRF905|Nordic Semiconductor nRF905|433/868/933MHz transceiver chip.|IC, Wireless/RF|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|numbers_and_state|Numbers and State|Interpret bit patters as numbers or state enums|Interpret bit patterns as different kinds of numbers (integer, float, enum).|Encoding, Util|logic|numbers_and_state|supported}}&lt;br /&gt;
{{pd|nunchuk|Nunchuk|Nintendo Wii Nunchuk|Nintendo Wii Nunchuk controller protocol.|Sensor|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|onewire_link|1-Wire link layer|1-Wire serial communication bus (link layer)|Bidirectional, half-duplex, asynchronous serial bus.|Embedded/industrial|logic|onewire_link|supported}}&lt;br /&gt;
{{pd|onewire_network|1-Wire network layer|1-Wire serial communication bus (network layer)|Bidirectional, half-duplex, asynchronous serial bus.|Embedded/industrial|onewire_link|onewire_network|supported}}&lt;br /&gt;
{{pd|ook|OOK|On-off keying|On-off keying protocol.|Encoding|logic|ook|supported}}&lt;br /&gt;
{{pd|ook_oregon|Oregon|Oregon Scientific|Oregon Scientific weather sensor protocol.|Sensor|ook|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ook_vis|OOK visualisation|On-off keying visualisation|OOK visualisation in various formats.|Encoding|ook|ook|supported}}&lt;br /&gt;
{{pd|pan1321|PAN1321|Panasonic PAN1321|Bluetooth RF module with Serial Port Profile (SPP).|Wireless/RF|uart|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|parallel|Parallel|Parallel sync bus|Generic parallel synchronous bus.|Util|logic|parallel|supported}}&lt;br /&gt;
{{pd|pca9571|PCA9571|NXP PCA9571|NXP PCA9571 8-bit I²C output expander.|Embedded/industrial, IC|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|pjdl|PJDL|Padded Jittering Data Link|PJDL, a single wire serial link layer for PJON.|Embedded/industrial|logic|pjon_link|supported}}&lt;br /&gt;
{{pd|pjon|PJON|PJON|The PJON protocol.|Embedded/industrial|pjon_link|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ps2|PS/2|PS/2|PS/2 keyboard/mouse interface.|PC|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|pwm|PWM|Pulse-width modulation|Analog level encoded in duty cycle percentage.|Encoding|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|qi|Qi|Qi charger protocol|Protocol used by Qi receiver.|Embedded/industrial, Wireless/RF|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|rc_encode|RC encode|Remote control encoder|PT2262/HX2262/SC5262 remote control encoder protocol.|IC, IR|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|rfm12|RFM12|HopeRF RFM12|HopeRF RFM12 wireless transceiver control protocol.|Wireless/RF|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|rgb_led_spi|RGB LED (SPI)|RGB LED string decoder (SPI)|RGB LED string protocol (RGB values clocked over SPI).|Display|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|rgb_led_ws281x|RGB LED (WS281x)|RGB LED string decoder (WS281x)|RGB LED string protocol (WS281x).|Display, IC|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|rtc8564|RTC-8564|Epson RTC-8564 JE/NB|Realtime clock module protocol.|Clock/timing|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|sae_j1850_vpw|SAE J1850 VPW|SAE J1850 VPW.|SAE J1850 Variable Pulse Width 1x and 4x.|Automotive|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|sbus_futaba|SBUS (Futaba)|Futaba SBUS (Serial bus)|Serial bus for hobby remote control by Futaba|Remote Control|uart|sbus_futaba|supported}}&lt;br /&gt;
{{pd|sda2506|SDA2506|Siemens SDA 2506-5|Serial nonvolatile 1-Kbit EEPROM.|IC, Memory|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|sdcard_sd|SD card (SD mode)|Secure Digital card (SD mode)|Secure Digital card (SD mode) low-level protocol.|Memory|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|sdcard_spi|SD card (SPI mode)|Secure Digital card (SPI mode)|Secure Digital card (SPI mode) low-level protocol.|Memory|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|sdq|SDQ|Texas Instruments SDQ|Texas Instruments SDQ. The SDQ protocol is also used by Apple.|Embedded/industrial|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|seven_segment|7-segment|7-segment display|7-segment display protocol.|Display|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|signature|Signature|Signature analysis|Annotate signature of logic patterns.|Debug/trace, Util, Encoding|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|sipi|SIPI (Zipwire)|NXP SIPI interface|Serial Inter-Processor Interface (SIPI) aka Zipwire, aka HSSL|Embedded/industrial|lfast|none|supported}}&lt;br /&gt;
{{pd|sle44xx|SLE 44xx|SLE44xx memory card|SLE 4418/28/32/42 memory card serial protocol|Memory|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|spdif|S/PDIF|Sony/Philips Digital Interface Format|Serial bus for connecting digital audio devices.|Audio, PC|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|spi|SPI|Serial Peripheral Interface|Full-duplex, synchronous, serial bus.|Embedded/industrial|logic|spi|supported}}&lt;br /&gt;
{{pd|spiflash|SPI flash/EEPROM|SPI flash/EEPROM chips|xx25 series SPI (NOR) flash/EEPROM chip protocol.|IC, Memory|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ssi32|SSI32|Synchronous Serial Interface (32bit)|Synchronous Serial Interface (32bit) protocol.|Embedded/industrial|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|st25r39xx|ST25R39xx|STMicroelectronics ST25R39xx|High performance NFC universal device and EMVCo reader protocol.|IC, Wireless/RF|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|st7735|ST7735|Sitronix ST7735|Sitronix ST7735 TFT controller protocol.|Display, IC|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|stepper_motor|Stepper motor|Stepper motor position / speed|Absolute position and movement speed from step/dir.|Embedded/industrial|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|swd|SWD|Serial Wire Debug|Two-wire protocol for debug access to ARM CPUs.|Debug/trace|logic|swd|supported}}&lt;br /&gt;
{{pd|swim|SWIM|STM8 SWIM bus|STM8 Single Wire Interface Module (SWIM) protocol.|Debug/trace|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|t55xx|T55xx|RFID T55xx|T55xx 100-150kHz RFID protocol.|IC, RFID|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|tca6408a|TI TCA6408A|Texas Instruments TCA6408A|Texas Instruments TCA6408A 8-bit I²C I/O expander.|Embedded/industrial, IC|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|tdm_audio|TDM audio|Time division multiplex audio|TDM multi-channel audio protocol.|Audio|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|timing|Timing|Timing calculation with frequency and averaging|Calculate time between edges.|Clock/timing, Util|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|tlc5620|TI TLC5620|Texas Instruments TLC5620|Texas Instruments TLC5620 8-bit quad DAC.|IC, Analog/digital|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|uart|UART|Universal Asynchronous Receiver/Transmitter|Asynchronous, serial bus.|Embedded/industrial|logic|uart|supported}}&lt;br /&gt;
{{pd|usb_packet|USB packet|Universal Serial Bus (LS/FS) packet|USB (low-speed and full-speed) packet protocol.|PC|usb_signalling|usb_packet|supported}}&lt;br /&gt;
{{pd|usb_power_delivery|USB PD|USB Power Delivery|USB Power Delivery protocol.|PC|logic|usb_pd|supported}}&lt;br /&gt;
{{pd|usb_request|USB request|Universal Serial Bus (LS/FS) transaction/request|USB (low-speed/full-speed) transaction/request protocol.|PC|usb_packet|usb_request|supported}}&lt;br /&gt;
{{pd|usb_signalling|USB signalling|Universal Serial Bus (LS/FS) signalling|USB (low-speed/full-speed) signalling protocol.|PC|logic|usb_signalling|supported}}&lt;br /&gt;
{{pd|wiegand|Wiegand|Wiegand interface|Wiegand interface for electronic entry systems.|Embedded/industrial, RFID|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|x2444m|X2444M/P|Xicor X2444M/P|Xicor X2444M/P nonvolatile static RAM protocol.|IC, Memory|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|xfp|XFP|10 Gigabit Small Form Factor Pluggable Module (XFP)|XFP I²C management interface structures/protocol|Networking|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|xy2-100|XY2-100|XY2-100 and XY2-200 interface|XY2-100 protocol used for laser applications.|Embedded/industrial|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|z80|Z80|Zilog Z80 CPU|Zilog Z80 microprocessor disassembly.|Retro computing|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Possible candidates for future protocol decoders ==&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;
!Protocol&lt;br /&gt;
!Category&lt;br /&gt;
!Input ID(s)&lt;br /&gt;
!Output ID(s)&lt;br /&gt;
!Status&lt;br /&gt;
!Description&lt;br /&gt;
!Comments&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| SA8807A&lt;br /&gt;
| Displays&lt;br /&gt;
| spi&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| SPI-attached LCD. Datasheet: [http://pdf1.alldatasheet.com/datasheet-pdf/view/36922/SAMES/SA8807A.html Sames SA8807A].&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| EA eDIPTFT43-A&lt;br /&gt;
| Displays&lt;br /&gt;
| i2c&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| I2C-attached LCD. Datasheet: [http://www.lcd-module.de/pdf/grafik/ediptft43-a.pdf EA eDIPTFT43-A].&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Analog Devices AD7291&lt;br /&gt;
| ADC&lt;br /&gt;
| i2c&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| I2C-attached ADC. Datasheet: [http://pdf1.alldatasheet.com/datasheet-pdf/view/318172/AD/AD7291.html Analog Devices AD7291].&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Analog Devices ADS1258&lt;br /&gt;
| ADC&lt;br /&gt;
| spi&lt;br /&gt;
| ads1258&lt;br /&gt;
| bgcolor=&amp;quot;orange&amp;quot; | 0%&lt;br /&gt;
| SPI-attached ADC.&lt;br /&gt;
| Planned (Uwe Hermann).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/ccTalk ccTalk]&lt;br /&gt;
| Automation/Industrial&lt;br /&gt;
| uart&lt;br /&gt;
| cctalk&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 20%&lt;br /&gt;
| Serial protocol in widespread use throughout the money transaction and point-of-sale industry.&lt;br /&gt;
|In progress - https://github.com/plaes/libsigrokdecode/tree/cctalk&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Microchip MCP3901&lt;br /&gt;
| ADC&lt;br /&gt;
| spi&lt;br /&gt;
| mcp3901&lt;br /&gt;
| bgcolor=&amp;quot;orange&amp;quot; | 0%&lt;br /&gt;
| Can be controlled via a parallel protocol, or SPI, or I2C.&lt;br /&gt;
| Planned (Uwe Hermann).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| JTAG / TMPA9xx&lt;br /&gt;
| Flash/debug&lt;br /&gt;
| jtag&lt;br /&gt;
| jtag_tmpa9xx&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Toshiba TMPA9xx specific JTAG protocol details.&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| USB transfer&lt;br /&gt;
| USB&lt;br /&gt;
| usb_request&lt;br /&gt;
| usb_transfer&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| USB / HID&lt;br /&gt;
| USB&lt;br /&gt;
| usb_transfer&lt;br /&gt;
| usb_hid&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| USB / CDC&lt;br /&gt;
| USB&lt;br /&gt;
| usb_transfer&lt;br /&gt;
| usb_cdc&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| USB / USBTMC&lt;br /&gt;
| USB&lt;br /&gt;
| usb_transfer&lt;br /&gt;
| usb_usbtmc&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Dallas DS1985&lt;br /&gt;
| Other&lt;br /&gt;
| onewire_network&lt;br /&gt;
| &lt;br /&gt;
| bgcolor=&amp;quot;orange&amp;quot; | 0%&lt;br /&gt;
| Dallas DS1985 iButton (1-Wire) device.&lt;br /&gt;
| Planned (Uwe Hermann).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| UNI/O&lt;br /&gt;
| Embedded&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Synchronous_Serial_Interface SSI]&lt;br /&gt;
| Embedded&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Synchronous Serial Interface&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| CompactFlash&lt;br /&gt;
| Memory&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| MMC&lt;br /&gt;
| Memory&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Memory Stick&lt;br /&gt;
| Memory&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| SmartMedia&lt;br /&gt;
| Memory&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| xD-Picture Card&lt;br /&gt;
| Memory&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/ISO/IEC_7816 ISO 7816]&lt;br /&gt;
| Smartcards&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| AVR TPI&lt;br /&gt;
| Flash/debug&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Atmel Tiny Programming Interface (TPI) protocol.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| FWH&lt;br /&gt;
| PC&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ISA&lt;br /&gt;
| PC&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| PCI&lt;br /&gt;
| PC&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| SMBus&lt;br /&gt;
| PC&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| IDE&lt;br /&gt;
| PC&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| SCSI&lt;br /&gt;
| PC&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Platform_Environment_Control_Interface PECI]&lt;br /&gt;
| PC&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Platform Environment Control Interface&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/SVID SVID]&lt;br /&gt;
| PC&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Serial Voltage Identification&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Protocol_decoder:mfm|MFM]]&lt;br /&gt;
| PC&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | 90%&lt;br /&gt;
| Floppy disk FM and [https://en.wikipedia.org/wiki/Modified_Frequency_Modulation MFM].&lt;br /&gt;
| Work in progress (David Wiens).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| HD Audio&lt;br /&gt;
| Audio&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Nokia NRC17&lt;br /&gt;
| IR&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Philips RC-MM&lt;br /&gt;
| IR&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Philips RECS80&lt;br /&gt;
| IR&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Infrared_Data_Association IrDA]&lt;br /&gt;
| Misc&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| HD44780&lt;br /&gt;
| Displays&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| [http://en.wikipedia.org/wiki/HD44780_Character_LCD HD44780 character LCD] protocol&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Protocol_decoder:Pcf8814|PCF8814]]&lt;br /&gt;
| Displays&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| pcf8814&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | 50%&lt;br /&gt;
| Philips PCF8814 65 x 96 pixels matrix LCD driver&lt;br /&gt;
| Work in progress (Uwe Hermann).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Protocol_decoder:Pcf8814_lcd|PCF8814 LCD]]&lt;br /&gt;
| Displays&lt;br /&gt;
| pcf8814&lt;br /&gt;
| pcf8814_lcd&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | 50%&lt;br /&gt;
| Philips PCF8814 65 x 96 pixels matrix LCD driver&lt;br /&gt;
| Work in progress (Uwe Hermann).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/RDM_%28lighting%29 RDM]&lt;br /&gt;
| Industrial Lighting&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| rdm&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/NMEA_0183 NMEA 0183]&lt;br /&gt;
| GPS&lt;br /&gt;
| uart&lt;br /&gt;
| nmea0183&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Protocol_decoder:Nmea2000|NMEA2000]]&lt;br /&gt;
| Marine&lt;br /&gt;
| can&lt;br /&gt;
| nmea2000&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| [https://en.wikipedia.org/wiki/NMEA_2000 NMEA 2000 Wikipedia page]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Digital_Command_Control DCC]&lt;br /&gt;
| Trains&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| dcc&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Train_Communication_Network MVB]&lt;br /&gt;
| Trains&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| mvb&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | 90%&lt;br /&gt;
| Multifunction Vehicle Bus&lt;br /&gt;
| Working in separate [https://github.com/yeckel/sigrok_mvb_decoder/ repository] (Libor Tomsik).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Train_Communication_Network WTB]&lt;br /&gt;
| Trains&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| wtb&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Wire Train Bus&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/C-Bus_%28protocol%29 C-Bus]&lt;br /&gt;
| Home automation&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| cbus&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/X10_%28industry_standard%29 X10]&lt;br /&gt;
| Home automation&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| x10&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/LonWorks LonWorks]&lt;br /&gt;
| Home automation&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| lonworks&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Meter-Bus M-Bus]&lt;br /&gt;
| Automation&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| mbus&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Modbus Modbus ASCII]&lt;br /&gt;
| Automation&lt;br /&gt;
| uart&lt;br /&gt;
| modbus&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Modbus Modbus TCP]&lt;br /&gt;
| Automation&lt;br /&gt;
| ip&lt;br /&gt;
| modbus&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Highway_Addressable_Remote_Transducer_Protocol HART protocol]&lt;br /&gt;
| Automation&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| hart&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/INTERBUS INTERBUS]&lt;br /&gt;
| Automation&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| interbus&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/DirectNET_Protocol DirectNET]&lt;br /&gt;
| Automation&lt;br /&gt;
| uart&lt;br /&gt;
| directnet&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/KNX_%28standard%29 KNX]&lt;br /&gt;
| Automation&lt;br /&gt;
| various&lt;br /&gt;
| knx&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Bacnet BACnet]&lt;br /&gt;
| Automation&lt;br /&gt;
| &lt;br /&gt;
| bacnet&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/OpenTherm OpenTherm]&lt;br /&gt;
| Automation&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| opentherm&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/EBUS_%28serial_buses%29 EBUS]&lt;br /&gt;
| Automation&lt;br /&gt;
| uart&lt;br /&gt;
| ebus&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Attachment_Unit_Interface AUI]&lt;br /&gt;
| Networking&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| aui&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Attachment Unit Interface&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Medium_Dependent_Interface MDI]&lt;br /&gt;
| Networking&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| mdi&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Medium Dependent Interface&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Media_Independent_Interface MII]&lt;br /&gt;
| Networking&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| mii&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Media Independent Interface&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Gigabit_Media_Independent_Interface#Gigabit_Media_Independent_Interface GMII]&lt;br /&gt;
| Networking&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| gmii&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Gigabit Media Independent Interface&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/10_Gigabit_Media_Independent_Interface#10_Gigabit_Media_Independent_Interface XGMII]&lt;br /&gt;
| Networking&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| xgmii&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| 10 Gigabit Media Independent Interface&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Protocol_decoder:esp8266|ESP8266]]&lt;br /&gt;
| Wireless&lt;br /&gt;
| uart&lt;br /&gt;
| esp8266&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| WiFi Serial Transceiver&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Protocol Decoder:tmds|TMDS (HDMI / DVI Pixel Data)]]&lt;br /&gt;
| Display&lt;br /&gt;
| tmds&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;orange&amp;quot; | 1%&lt;br /&gt;
| https://github.com/mithro/tmds_encoding&lt;br /&gt;
| Work in progress ([[User:Mithro|mithro]])&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Protocol Decoder:Easymatic|Easymatic]]&lt;br /&gt;
| Home automation&lt;br /&gt;
| uart&lt;br /&gt;
| easymatic&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 10%&lt;br /&gt;
| &lt;br /&gt;
| Work in progress (Platypus)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Protocol Decoder:DDC/CI|DDC/CI]]&lt;br /&gt;
| PC&lt;br /&gt;
| i2c&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Kenwood VH&lt;br /&gt;
| Misc&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | 50%&lt;br /&gt;
| SYSTEM CONTROL protocol used by Kenwood&amp;#039;s VH HiFi-system&lt;br /&gt;
| In progress: https://github.com/kripton/libsigrokdecode/compare/kenwood_vh&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61131-9&lt;br /&gt;
| Industrial&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &amp;quot;Single-drop digital communication interface for small sensors and actuators (SDCI, marketed as IO-Link)&amp;quot; https://en.wikipedia.org/wiki/IEC_61131&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| NRZ encoding family&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Non-Return-to-Zero and its [https://en.wikipedia.org/wiki/Non-return-to-zero#Variants variants]&lt;br /&gt;
| whoever wants it&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Bi-Phase encoding family&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| [http://ckp.made-it.com/encodingschemes.html several variations] of codes, including [https://en.wikipedia.org/wiki/Manchester_code Manchester code]&lt;br /&gt;
| whoever wants it&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Sony LANC&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| [http://www.boehmel.de/lanc.htm Sony LANC]&lt;br /&gt;
| whoever wants it, contact [[User:Alexdaniel|AlexDaniel]] for more info. You can already decode the raw data by using UART with 9600 baud and no parity, but it&amp;#039;d be better if pulseview displayed the meaning (as in what these commands do)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| CCD (Chrysler&amp;#039;s Collision Detection)&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;green&amp;quot; | 99%&lt;br /&gt;
| CCD (Chrysler&amp;#039;s Collision Detection) is internal bus used on Chrysler cars produced about 1990-2000.&lt;br /&gt;
| It works, but decodes only subset of all possible CCD messages, mostly from Jeep ZJ &amp;#039;98. Need a little work to improve performance and better support of API 3. [https://github.com/majekw/sigrok-ccd-pd https://github.com/majekw/sigrok-ccd-pd]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Mate-trac&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| (bi-phase)&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| 20th century protocol for remote control of projectors, often stored on audio tapes; [https://www.aidtopia.com/mccarthy/aid/multi-image/matetrac.html described well by Adrian McCarthy]&lt;br /&gt;
| whoever wants it, possibly [[User:chrysn|chrysn]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| PN532 NFC reader communication protocol&lt;br /&gt;
| NFC&lt;br /&gt;
| uart / spi / i2c&lt;br /&gt;
| ISO14443&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | 80%&lt;br /&gt;
| PN532 is a 13.56 MHz NFC reader, supporting SPI, I2C or Serial UART&lt;br /&gt;
| WIP for Serial UART: [https://github.com/plaes/libsigrokdecode/tree/pn542-uart https://github.com/plaes/libsigrokdecode/tree/pn542-uart] based on [https://git.mittelab.org/wifasoi/sigrokdecode-pn532 code from this repository]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| SAE J2716 SENT&lt;br /&gt;
| Automotive&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| SENT - Single Edge Nibble Transmission for Automotive Applications&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;/div&gt;</summary>
		<author><name>LiborT</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder_HOWTO&amp;diff=16499</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=16499"/>
		<updated>2023-05-02T18:03:23Z</updated>

		<summary type="html">&lt;p&gt;LiborT: Adopted for new API&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 = 3&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 reset(self):&lt;br /&gt;
         #reset inner states &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):&lt;br /&gt;
         decode_the_sample(self.wait())&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;
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 = (                        # Implicitly assigned annotation type ID&lt;br /&gt;
         (&amp;#039;bit&amp;#039;, &amp;#039;Bit&amp;#039;),                    # 0&lt;br /&gt;
         (&amp;#039;agc-pulse&amp;#039;, &amp;#039;AGC pulse&amp;#039;),        # 1&lt;br /&gt;
         (&amp;#039;longpause&amp;#039;, &amp;#039;Long pause&amp;#039;),       # 2&lt;br /&gt;
         (&amp;#039;shortpause&amp;#039;, &amp;#039;Short pause&amp;#039;),     # 3&lt;br /&gt;
         (&amp;#039;stop-bit&amp;#039;, &amp;#039;Stop bit&amp;#039;),          # 4&lt;br /&gt;
         (&amp;#039;leader-code&amp;#039;, &amp;#039;Leader code&amp;#039;),    # 5&lt;br /&gt;
         (&amp;#039;addr&amp;#039;, &amp;#039;Address&amp;#039;),               # 6&lt;br /&gt;
         (&amp;#039;addr-inv&amp;#039;, &amp;#039;Address#&amp;#039;),          # 7&lt;br /&gt;
         (&amp;#039;cmd&amp;#039;, &amp;#039;Command&amp;#039;),                # 8&lt;br /&gt;
         (&amp;#039;cmd-inv&amp;#039;, &amp;#039;Command#&amp;#039;),           # 9&lt;br /&gt;
         (&amp;#039;repeat-code&amp;#039;, &amp;#039;Repeat code&amp;#039;),    # 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;
     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;
&lt;br /&gt;
&lt;br /&gt;
However, as you can imagine, handling numeric IDs is quite bothersome - especially if they change and all affected IDs have to be changed throughout the PD. To avoid this, you can use a pseudo-enum:&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;
 ann_bit, ann_agc_pulse, ann_long_pause, ann_short_pause, ann_stop_bit, ann_leader_code, ann_addr, ann_addr_inv, ann_cmd, ann_cmd_inv, ann_repeat_code, ann_remote, ann_warning = range(13)&lt;br /&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 = (                        # Implicitly assigned annotation type ID&lt;br /&gt;
         (&amp;#039;bit&amp;#039;, &amp;#039;Bit&amp;#039;),                    # 0  = ann_bit&lt;br /&gt;
         (&amp;#039;agc-pulse&amp;#039;, &amp;#039;AGC pulse&amp;#039;),        # 1  = ann_agc_pulse&lt;br /&gt;
         (&amp;#039;longpause&amp;#039;, &amp;#039;Long pause&amp;#039;),       # 2  = ann_long_pause&lt;br /&gt;
         (&amp;#039;shortpause&amp;#039;, &amp;#039;Short pause&amp;#039;),     # 3  = ann_short_pause&lt;br /&gt;
         (&amp;#039;stop-bit&amp;#039;, &amp;#039;Stop bit&amp;#039;),          # 4  = ann_stop_bit&lt;br /&gt;
         (&amp;#039;leader-code&amp;#039;, &amp;#039;Leader code&amp;#039;),    # 5  = ann_leader_code&lt;br /&gt;
         (&amp;#039;addr&amp;#039;, &amp;#039;Address&amp;#039;),               # 6  = ann_addr&lt;br /&gt;
         (&amp;#039;addr-inv&amp;#039;, &amp;#039;Address#&amp;#039;),          # 7  = ann_addr_inv&lt;br /&gt;
         (&amp;#039;cmd&amp;#039;, &amp;#039;Command&amp;#039;),                # 8  = ann_cmd&lt;br /&gt;
         (&amp;#039;cmd-inv&amp;#039;, &amp;#039;Command#&amp;#039;),           # 9  = ann_cmd_inv&lt;br /&gt;
         (&amp;#039;repeat-code&amp;#039;, &amp;#039;Repeat code&amp;#039;),    # 10 = ann_repeat_code&lt;br /&gt;
         (&amp;#039;remote&amp;#039;, &amp;#039;Remote&amp;#039;),              # 11 = ann_remote&lt;br /&gt;
         (&amp;#039;warnings&amp;#039;, &amp;#039;Warnings&amp;#039;),          # 12 = ann_warning&lt;br /&gt;
     )&lt;br /&gt;
     annotation_rows = (&lt;br /&gt;
         (&amp;#039;bits&amp;#039;, &amp;#039;Bits&amp;#039;, (ann_bit, ann_agc_pulse, ann_long_pause, ann_short_pause, ann_stop_bit)),&lt;br /&gt;
         (&amp;#039;fields&amp;#039;, &amp;#039;Fields&amp;#039;, (ann_leader_code, ann_addr, ann_addr_inv, ann_cmd, ann_cmd_inv, ann_repeat_code)),&lt;br /&gt;
         (&amp;#039;remote&amp;#039;, &amp;#039;Remote&amp;#039;, (ann_remote,)),&lt;br /&gt;
         (&amp;#039;warnings&amp;#039;, &amp;#039;Warnings&amp;#039;, (ann_warning,)),&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;
This way, all you need to ensure is that the order of the enum entries is the same as in the annotations array and you&amp;#039;re set. There is one downside, though, as always: pseudo-enums are pitifully slow in python, so if you use them and you use them in a lot of places, your protocol decoder may be significantly slower (up to 4x has been observed), so choose wisely. You can use the PD test facility to compare, using e.g. &amp;#039;time ./pdtest -r $YOUR_PD&amp;#039;&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;
* Use the &amp;lt;code&amp;gt;has_channel()&amp;lt;/code&amp;gt; method to check whether an optional channel has been provided or not.&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:&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:&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; This is available as &amp;lt;code&amp;gt;from common.srdhelper import bcd2int&amp;lt;/code&amp;gt;&lt;br /&gt;
* An elegant way to convert a sequence of bus pins to a numeric value:&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 from functools import reduce&lt;br /&gt;
&lt;br /&gt;
 def reduce_bus(bus):&lt;br /&gt;
     if 0xFF in bus:&lt;br /&gt;
         return None # unassigned bus channels&lt;br /&gt;
     else:&lt;br /&gt;
         return reduce(lambda a, b: (a &amp;lt;&amp;lt; 1) | b, reversed(bus))&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;):&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;
* A cheap way to deal with Python&amp;#039;s lack of enumerations (useful for states, pin indices, annotation indices, etc.):&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 class Cycle:&lt;br /&gt;
     NONE, MEMRD, MEMWR, IORD, IOWR, FETCH, INTACK = range(7)&lt;br /&gt;
&amp;lt;/source&amp;gt;Please be aware, though, that using this mechanism may slow down your decoder significantly. It may make sense to perform some basic profiling to see if this affects you, e.g. using &amp;lt;code&amp;gt;time ./pdtest -r $YOUR_PD&amp;lt;/code&amp;gt;.&lt;br /&gt;
** A class &amp;lt;code&amp;gt;SrdIntEnum&amp;lt;/code&amp;gt; is now available from &amp;lt;code&amp;gt;common.srdhelper&amp;lt;/code&amp;gt; based on Python&amp;#039;s native [https://docs.python.org/3/library/enum.html#enum.IntEnum &amp;lt;code&amp;gt;IntEnum&amp;lt;/code&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:&amp;lt;br /&amp;gt;&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ SIGROKDECODE_DIR=/path/to/libsigrokdecode/decoders/ sigrok-cli … -P &amp;lt;decodername&amp;gt;&amp;lt;/source&amp;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 [http://sigrok.org/gitweb/?p=sigrok-test.git;a=summary sigrok-test] repository.&amp;lt;br /&amp;gt;If you compiled a recent [[libsigrokdecode]] by yourself ([http://sigrok.org/gitweb/?p=libsigrokdecode.git;a=commit;h=40c6ac1d3fbded276dcbff23e8bc099896ab2fb5 newer than this commit]), you can also put decoders into your home directory, without the need for an additional environment variable. On Linux systems, this name follows the [http://standards.freedesktop.org/basedir-spec/latest/ar01s03.html XDG base directory specification], which by default resolves to &amp;lt;tt&amp;gt;~/.local/share/libsigrokdecode/decoders&amp;lt;/tt&amp;gt;. If that folder does not exist, you can simply create it and drop your decoders there, in their own subdirectory, like you would do in the libsigrokdecode source tree. On Windows systems additional decoders are read from &amp;lt;tt&amp;gt;%ProgramData%\libsigrokdecode\decoders&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* To debug the Python implementation of a decoder during development, maintenance or research either add &amp;lt;code&amp;gt;print()&amp;lt;/code&amp;gt; statements at appropriate locations. Or get WinPDB and use the remote debugging feature as outlined below (add this hook somewhere in pd.py, then &amp;quot;File -&amp;gt; Attach&amp;quot; to the running process). Decoders cannot be used in &amp;quot;regular&amp;quot; debuggers since they expect a rather specific environment to execute in, for all of receiving their input as well as having their output saved or presented as well as processing samples (data types, runtime routines). Remote debugging works in both the sigrok-cli and pulseview context. Adding another &amp;lt;code&amp;gt;print()&amp;lt;/code&amp;gt; statement before starting the embedded debugger can help identify the moment in time when to attach.&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 def __init__():&lt;br /&gt;
     import rpdb2&lt;br /&gt;
     rpdb2.start_embedded_debugger(&amp;quot;pd&amp;quot;)&lt;br /&gt;
     ...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Windows you might want to use the following code, adapting it to your Python and WinPDB-reborn version:&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 def __init__():&lt;br /&gt;
     import sys&lt;br /&gt;
     sys.path.insert(0, &amp;#039;c:/Program Files (x86)/Python38-32/Lib/site-packages/winpdb_reborn-2.0.0.1-py3.8.egg&amp;#039;)&lt;br /&gt;
     import rpdb2&lt;br /&gt;
     rpdb2.start_embedded_debugger(&amp;quot;pd&amp;quot;, fAllowRemote=True)&lt;br /&gt;
     ...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unit tests ==&lt;br /&gt;
&lt;br /&gt;
In order to keep protocol decoders in a running state even when we make changes to a decoder or libsigrokdecode itself, we use unit tests for as many decoders as we can. These are stored in the [http://sigrok.org/gitweb/?p=sigrok-test.git sigrok-test repository]. If you want to add, modify or run one of them, clone that repository and [https://sigrok.org/gitweb/?p=sigrok-test.git;a=blob;f=README check the README] for documentation.&lt;br /&gt;
We greatly appreciate it when you submit unit tests for your decoder so we can keep it in good health!&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;
* Check the decoder&amp;#039;s operation in the most recent version of the software. You expect the decoder to get accepted in the project&amp;#039;s mainline codebase. So it should work in that environment. Either build from up-to-date sources, or download nightly builds.&lt;br /&gt;
* Tell us about the location of your public git repo on the &amp;#039;&amp;#039;&amp;#039;#sigrok&amp;#039;&amp;#039;&amp;#039; IRC channel on libera.chat. As an alternative send the decoder to the [https://lists.sourceforge.net/lists/listinfo/sigrok-devel sigrok-devel] mailing list (preferrably against current master and as a full commit instead of a mere diff). Remember that pushing to a public git repo is preferred over email attachments.&lt;br /&gt;
* Please also make example data files (*.sr) including a small README available. Developers need these in order to properly review and test your decoder. Users need these to learn what the captures are about in the first place. Preferrably these files should also come as patches against the latest git master of the [http://sigrok.org/gitweb/?p=sigrok-dumps.git;a=tree sigrok-dumps] repository. See [[Example dumps]] for details. Submitting captures before any decoder materializes or work on a decoder even starts is very useful.&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>LiborT</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoders&amp;diff=16498</id>
		<title>Protocol decoders</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoders&amp;diff=16498"/>
		<updated>2023-05-02T17:49:38Z</updated>

		<summary type="html">&lt;p&gt;LiborT: Assigned myself to mvb.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of &amp;#039;&amp;#039;&amp;#039;supported protocol decoders (PDs)&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;decoders which we might want to write in the future&amp;#039;&amp;#039;&amp;#039; (or users might want to contribute).&lt;br /&gt;
&lt;br /&gt;
See [[Protocol decoder API]] for details on how the decoders work in sigrok, and [[Protocol decoder HOWTO]] for a quick introduction about how to write your own decoders.&lt;br /&gt;
&lt;br /&gt;
== Supported protocol decoders ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Generated via sigrok-cli --list-supported-wiki. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number of currently supported protocol decoders: &amp;#039;&amp;#039;&amp;#039;131&amp;#039;&amp;#039;&amp;#039;.&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;
!Protocol&lt;br /&gt;
!Tags&lt;br /&gt;
!Input IDs&lt;br /&gt;
!Output IDs&lt;br /&gt;
!Status&lt;br /&gt;
!Full name&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
{{pd|ac97|AC &amp;#039;97|Audio Codec &amp;#039;97|Audio and modem control for PC systems.|Audio, PC|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ad5626|AD5626|Analog Devices AD5626|Analog Devices AD5626 12-bit nanoDAC.|IC, Analog/digital|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ad79x0|AD79x0|Analog Devices AD79x0|Analog Devices AD7910/AD7920 12-bit ADC.|IC, Analog/digital|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ade77xx|ADE77xx|Analog Devices ADE77xx|Poly phase multifunction energy metering IC protocol.|Analog/digital, IC, Sensor|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|adf435x|ADF435x|Analog Devices ADF4350/1|Wideband synthesizer with integrated VCO.|Clock/timing, IC, Wireless/RF|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|adns5020|ADNS-5020|Avago ADNS-5020|Bidirectional optical mouse sensor protocol.|IC, PC, Sensor|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|adxl345|ADXL345|Analog Devices ADXL345|Analog Devices ADXL345 3-axis accelerometer.|IC, Sensor|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|am230x|AM230x|Aosong AM230x/DHTxx/RHTxx|Aosong AM230x/DHTxx/RHTxx humidity/temperature sensor.|IC, Sensor|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|amulet_ascii|Amulet ASCII|Amulet LCD ASCII|Amulet Technologies LCD controller ASCII protocol.|Display|uart|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|arm_etmv3|ARM ETMv3|ARM Embedded Trace Macroblock v3|ARM ETM v3 instruction trace protocol.|Debug/trace|uart|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|arm_itm|ARM ITM|ARM Instrumentation Trace Macroblock|ARM Cortex-M / ARMv7m ITM trace protocol.|Debug/trace|uart|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|arm_tpiu|ARM TPIU|ARM Trace Port Interface Unit|Filter TPIU formatted trace data into separate streams.|Debug/trace|uart|uart|supported}}&lt;br /&gt;
{{pd|atsha204a|ATSHA204A|Microchip ATSHA204A|Microchip ATSHA204A family crypto authentication protocol.|Security/crypto, IC, Memory|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|aud|AUD|Advanced User Debugger|Renesas/Hitachi Advanced User Debugger (AUD) protocol.|Debug/trace|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|avr_isp|AVR ISP|AVR In-System Programming|Atmel AVR In-System Programming (ISP) protocol.|Debug/trace|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|avr_pdi|AVR PDI|Atmel Program and Debug Interface|Atmel ATxmega Program and Debug Interface (PDI) protocol.|Debug/trace|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|caliper|Caliper|Digital calipers|Protocol of cheap generic digital calipers.|Analog/digital, Sensor|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|can|CAN|Controller Area Network|Field bus protocol for distributed realtime control.|Automotive|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|cc1101|CC1101|Texas Instruments CC1101|Low-power sub-1GHz RF transceiver chip.|IC, Wireless/RF|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|cec|CEC|HDMI-CEC|HDMI Consumer Electronics Control (CEC) protocol.|Display, PC|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|cfp|CFP|100 Gigabit C form-factor pluggable|100 Gigabit C form-factor pluggable (CFP) protocol.|Networking|mdio|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|cjtag|cJTAG|Compact Joint Test Action Group (IEEE 1149.7)|Protocol for testing, debugging, and flashing ICs.|Debug/trace|logic|jtag|supported}}&lt;br /&gt;
{{pd|counter|Counter|Edge counter|Count the number of edges in a signal.|Util|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|dali|DALI|Digital Addressable Lighting Interface|Digital Addressable Lighting Interface (DALI) protocol.|Embedded/industrial, Lighting|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|dcf77|DCF77|DCF77 time protocol|European longwave time signal (77.5kHz carrier signal).|Clock/timing|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|dmx512|DMX512|Digital MultipleX 512|Digital MultipleX 512 (DMX512) lighting protocol.|Embedded/industrial, Lighting|uart|dmx512|supported}}&lt;br /&gt;
{{pd|ds1307|DS1307|Dallas DS1307|Dallas DS1307 realtime clock module protocol.|Clock/timing, IC|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ds2408|DS2408|Maxim DS2408|1-Wire 8-channel addressable switch.|Embedded/industrial, IC|onewire_network|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ds243x|DS243x|Maxim DS2432/3|Maxim DS243x series 1-Wire EEPROM protocol.|IC, Memory|onewire_network|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ds28ea00|DS28EA00|Maxim DS28EA00 1-Wire digital thermometer|1-Wire digital thermometer with Sequence Detect and PIO.|IC, Sensor|onewire_network|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|dsi|DSI|Digital Serial Interface|Digital Serial Interface (DSI) lighting protocol.|Embedded/industrial, Lighting|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|edid|EDID|Extended Display Identification Data|Data structure describing display device capabilities.|Display, Memory, PC|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|eeprom24xx|24xx EEPROM|24xx I²C EEPROM|24xx series I²C EEPROM protocol.|IC, Memory|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|eeprom93xx|93xx EEPROM|93xx Microwire EEPROM|93xx series Microwire EEPROM protocol.|IC, Memory|microwire|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|em4100|EM4100|RFID EM4100|EM4100 100-150kHz RFID protocol.|IC, RFID|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|em4305|EM4305|RFID EM4205/EM4305|EM4205/EM4305 100-150kHz RFID protocol.|IC, RFID|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|enc28j60|ENC28J60|Microchip ENC28J60|Microchip ENC28J60 10Base-T Ethernet controller protocol.|Embedded/industrial, Networking|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|flexray|FlexRay|FlexRay|Automotive network communications protocol.|Automotive|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|graycode|Gray code|Gray code and rotary encoder|Accumulate rotary encoder increments, provide statistics.|Encoding|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|guess_bitrate|Guess bitrate|Guess bitrate/baudrate|Guess the bitrate/baudrate of a UART (or other) protocol.|Clock/timing, Util|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|hdcp|HDCP|HDCP over HDMI|HDCP protocol over HDMI.|PC, Security/crypto|i2c|hdcp|supported}}&lt;br /&gt;
{{pd|i2c|I²C|Inter-Integrated Circuit|Two-wire, multi-master, serial bus.|Embedded/industrial|logic|i2c|supported}}&lt;br /&gt;
{{pd|i2cdemux|I²C demux|I²C demultiplexer|Demux I²C packets into per-slave-address streams.|Util|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|i2cfilter|I²C filter|I²C filter|Filter out addresses/directions in an I²C stream.|Util|i2c|i2c|supported}}&lt;br /&gt;
{{pd|i2s|I²S|Integrated Interchip Sound|Serial bus for connecting digital audio devices.|Audio, PC|logic|i2s|supported}}&lt;br /&gt;
{{pd|ieee488|IEEE-488|IEEE-488 GPIB/HPIB/IEC|IEEE-488 General Purpose Interface Bus (GPIB/HPIB or IEC).|PC, Retro computing|logic|ieee488|supported}}&lt;br /&gt;
{{pd|ir_irmp|IR IRMP|IR IRMP|IRMP infrared remote control multi protocol.|IR|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ir_nec|IR NEC|IR NEC|NEC infrared remote control protocol.|IR|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ir_rc5|IR RC-5|IR RC-5|RC-5 infrared remote control protocol.|IR|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ir_rc6|IR RC-6|IR RC-6|RC-6 infrared remote control protocol.|IR|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ir_sirc|IR SIRC|Sony IR (SIRC)|Sony infrared remote control protocol (SIRC).|IR|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|jitter|Jitter|Timing jitter calculation|Retrieves the timing jitter between two digital signals.|Clock/timing, Util|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|jtag|JTAG|Joint Test Action Group (IEEE 1149.1)|Protocol for testing, debugging, and flashing ICs.|Debug/trace|logic|jtag|supported}}&lt;br /&gt;
{{pd|jtag_ejtag|JTAG / EJTAG|Joint Test Action Group / EJTAG (MIPS)|MIPS EJTAG protocol.|Debug/trace|jtag|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|jtag_stm32|JTAG / STM32|Joint Test Action Group / ST STM32|ST STM32-specific JTAG protocol.|Debug/trace|jtag|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|lfast|LFAST|NXP LFAST interface|Differential high-speed P2P interface|Embedded/industrial|logic|lfast|supported}}&lt;br /&gt;
{{pd|lin|LIN|Local Interconnect Network|Local Interconnect Network (LIN) protocol.|Automotive|uart|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|lm75|LM75|National LM75|National LM75 (and compatibles) temperature sensor.|Sensor|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|lpc|LPC|Low Pin Count|Protocol for low-bandwidth devices on PC mainboards.|PC|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ltc242x|LTC242x|Linear Technology LTC242x|Linear Technology LTC2421/LTC2422 1-/2-channel 20-bit ADC.|IC, Analog/digital|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ltc26x7|LTC26x7|Linear Technology LTC26x7|Linear Technology LTC26x7 16-/14-/12-bit rail-to-rail DACs.|IC, Analog/digital|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|maple_bus|Maple bus|SEGA Maple bus|Maple bus peripheral protocol for SEGA Dreamcast.|Retro computing|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|max7219|MAX7219|Maxim MAX7219/MAX7221|Maxim MAX72xx series 8-digit LED display driver.|Display|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|mcs48|MCS-48|Intel MCS-48|Intel MCS-48 external memory access protocol.|Retro computing|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|mdio|MDIO|Management Data Input/Output|MII management bus between MAC and PHY.|Networking|logic|mdio|supported}}&lt;br /&gt;
{{pd|microwire|Microwire|Microwire|3-wire, half-duplex, synchronous serial bus.|Embedded/industrial|logic|microwire|supported}}&lt;br /&gt;
{{pd|midi|MIDI|Musical Instrument Digital Interface|Musical Instrument Digital Interface (MIDI) protocol.|Audio, PC|uart|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|mil-std-1553|MIL-STD-1553|MIL-STD-1553 avionic data bus.|MIL-STD-1553 avionic data bus protocol.|Embedded/industrial, Networking|logic|&amp;amp;mdash;|soon}}&lt;br /&gt;
{{pd|miller|Miller|Miller encoding|Miller encoding protocol.|Encoding|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|mlx90614|MLX90614|Melexis MLX90614|Melexis MLX90614 infrared thermometer protocol.|IC, Sensor|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|modbus|Modbus|Modbus RTU over RS232/RS485|Modbus RTU protocol for industrial applications.|Embedded/industrial|uart|modbus|supported}}&lt;br /&gt;
{{pd|morse|Morse|Morse code|Demodulated morse code protocol.|Encoding|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|mrf24j40|MRF24J40|Microchip MRF24J40|IEEE 802.15.4 2.4 GHz RF tranceiver chip.|IC, Wireless/RF|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|mxc6225xu|MXC6225XU|MEMSIC MXC6225XU|Digital Thermal Orientation Sensor (DTOS) protocol.|IC, Sensor|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|nes_gamepad|NES gamepad|Nintendo Entertainment System gamepad|NES gamepad button states.|Retro computing|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|nrf24l01|nRF24L01(+)|Nordic Semiconductor nRF24L01(+)|2.4GHz RF transceiver chip.|IC, Wireless/RF|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|nrf905|nRF905|Nordic Semiconductor nRF905|433/868/933MHz transceiver chip.|IC, Wireless/RF|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|numbers_and_state|Numbers and State|Interpret bit patters as numbers or state enums|Interpret bit patterns as different kinds of numbers (integer, float, enum).|Encoding, Util|logic|numbers_and_state|supported}}&lt;br /&gt;
{{pd|nunchuk|Nunchuk|Nintendo Wii Nunchuk|Nintendo Wii Nunchuk controller protocol.|Sensor|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|onewire_link|1-Wire link layer|1-Wire serial communication bus (link layer)|Bidirectional, half-duplex, asynchronous serial bus.|Embedded/industrial|logic|onewire_link|supported}}&lt;br /&gt;
{{pd|onewire_network|1-Wire network layer|1-Wire serial communication bus (network layer)|Bidirectional, half-duplex, asynchronous serial bus.|Embedded/industrial|onewire_link|onewire_network|supported}}&lt;br /&gt;
{{pd|ook|OOK|On-off keying|On-off keying protocol.|Encoding|logic|ook|supported}}&lt;br /&gt;
{{pd|ook_oregon|Oregon|Oregon Scientific|Oregon Scientific weather sensor protocol.|Sensor|ook|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ook_vis|OOK visualisation|On-off keying visualisation|OOK visualisation in various formats.|Encoding|ook|ook|supported}}&lt;br /&gt;
{{pd|pan1321|PAN1321|Panasonic PAN1321|Bluetooth RF module with Serial Port Profile (SPP).|Wireless/RF|uart|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|parallel|Parallel|Parallel sync bus|Generic parallel synchronous bus.|Util|logic|parallel|supported}}&lt;br /&gt;
{{pd|pca9571|PCA9571|NXP PCA9571|NXP PCA9571 8-bit I²C output expander.|Embedded/industrial, IC|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|pjdl|PJDL|Padded Jittering Data Link|PJDL, a single wire serial link layer for PJON.|Embedded/industrial|logic|pjon_link|supported}}&lt;br /&gt;
{{pd|pjon|PJON|PJON|The PJON protocol.|Embedded/industrial|pjon_link|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ps2|PS/2|PS/2|PS/2 keyboard/mouse interface.|PC|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|pwm|PWM|Pulse-width modulation|Analog level encoded in duty cycle percentage.|Encoding|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|qi|Qi|Qi charger protocol|Protocol used by Qi receiver.|Embedded/industrial, Wireless/RF|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|rc_encode|RC encode|Remote control encoder|PT2262/HX2262/SC5262 remote control encoder protocol.|IC, IR|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|rfm12|RFM12|HopeRF RFM12|HopeRF RFM12 wireless transceiver control protocol.|Wireless/RF|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|rgb_led_spi|RGB LED (SPI)|RGB LED string decoder (SPI)|RGB LED string protocol (RGB values clocked over SPI).|Display|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|rgb_led_ws281x|RGB LED (WS281x)|RGB LED string decoder (WS281x)|RGB LED string protocol (WS281x).|Display, IC|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|rtc8564|RTC-8564|Epson RTC-8564 JE/NB|Realtime clock module protocol.|Clock/timing|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|sae_j1850_vpw|SAE J1850 VPW|SAE J1850 VPW.|SAE J1850 Variable Pulse Width 1x and 4x.|Automotive|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|sbus_futaba|SBUS (Futaba)|Futaba SBUS (Serial bus)|Serial bus for hobby remote control by Futaba|Remote Control|uart|sbus_futaba|supported}}&lt;br /&gt;
{{pd|sda2506|SDA2506|Siemens SDA 2506-5|Serial nonvolatile 1-Kbit EEPROM.|IC, Memory|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|sdcard_sd|SD card (SD mode)|Secure Digital card (SD mode)|Secure Digital card (SD mode) low-level protocol.|Memory|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|sdcard_spi|SD card (SPI mode)|Secure Digital card (SPI mode)|Secure Digital card (SPI mode) low-level protocol.|Memory|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|sdq|SDQ|Texas Instruments SDQ|Texas Instruments SDQ. The SDQ protocol is also used by Apple.|Embedded/industrial|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|seven_segment|7-segment|7-segment display|7-segment display protocol.|Display|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|signature|Signature|Signature analysis|Annotate signature of logic patterns.|Debug/trace, Util, Encoding|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|sipi|SIPI (Zipwire)|NXP SIPI interface|Serial Inter-Processor Interface (SIPI) aka Zipwire, aka HSSL|Embedded/industrial|lfast|none|supported}}&lt;br /&gt;
{{pd|sle44xx|SLE 44xx|SLE44xx memory card|SLE 4418/28/32/42 memory card serial protocol|Memory|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|spdif|S/PDIF|Sony/Philips Digital Interface Format|Serial bus for connecting digital audio devices.|Audio, PC|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|spi|SPI|Serial Peripheral Interface|Full-duplex, synchronous, serial bus.|Embedded/industrial|logic|spi|supported}}&lt;br /&gt;
{{pd|spiflash|SPI flash/EEPROM|SPI flash/EEPROM chips|xx25 series SPI (NOR) flash/EEPROM chip protocol.|IC, Memory|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|ssi32|SSI32|Synchronous Serial Interface (32bit)|Synchronous Serial Interface (32bit) protocol.|Embedded/industrial|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|st25r39xx|ST25R39xx|STMicroelectronics ST25R39xx|High performance NFC universal device and EMVCo reader protocol.|IC, Wireless/RF|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|st7735|ST7735|Sitronix ST7735|Sitronix ST7735 TFT controller protocol.|Display, IC|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|stepper_motor|Stepper motor|Stepper motor position / speed|Absolute position and movement speed from step/dir.|Embedded/industrial|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|swd|SWD|Serial Wire Debug|Two-wire protocol for debug access to ARM CPUs.|Debug/trace|logic|swd|supported}}&lt;br /&gt;
{{pd|swim|SWIM|STM8 SWIM bus|STM8 Single Wire Interface Module (SWIM) protocol.|Debug/trace|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|t55xx|T55xx|RFID T55xx|T55xx 100-150kHz RFID protocol.|IC, RFID|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|tca6408a|TI TCA6408A|Texas Instruments TCA6408A|Texas Instruments TCA6408A 8-bit I²C I/O expander.|Embedded/industrial, IC|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|tdm_audio|TDM audio|Time division multiplex audio|TDM multi-channel audio protocol.|Audio|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|timing|Timing|Timing calculation with frequency and averaging|Calculate time between edges.|Clock/timing, Util|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|tlc5620|TI TLC5620|Texas Instruments TLC5620|Texas Instruments TLC5620 8-bit quad DAC.|IC, Analog/digital|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|uart|UART|Universal Asynchronous Receiver/Transmitter|Asynchronous, serial bus.|Embedded/industrial|logic|uart|supported}}&lt;br /&gt;
{{pd|usb_packet|USB packet|Universal Serial Bus (LS/FS) packet|USB (low-speed and full-speed) packet protocol.|PC|usb_signalling|usb_packet|supported}}&lt;br /&gt;
{{pd|usb_power_delivery|USB PD|USB Power Delivery|USB Power Delivery protocol.|PC|logic|usb_pd|supported}}&lt;br /&gt;
{{pd|usb_request|USB request|Universal Serial Bus (LS/FS) transaction/request|USB (low-speed/full-speed) transaction/request protocol.|PC|usb_packet|usb_request|supported}}&lt;br /&gt;
{{pd|usb_signalling|USB signalling|Universal Serial Bus (LS/FS) signalling|USB (low-speed/full-speed) signalling protocol.|PC|logic|usb_signalling|supported}}&lt;br /&gt;
{{pd|wiegand|Wiegand|Wiegand interface|Wiegand interface for electronic entry systems.|Embedded/industrial, RFID|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|x2444m|X2444M/P|Xicor X2444M/P|Xicor X2444M/P nonvolatile static RAM protocol.|IC, Memory|spi|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|xfp|XFP|10 Gigabit Small Form Factor Pluggable Module (XFP)|XFP I²C management interface structures/protocol|Networking|i2c|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|xy2-100|XY2-100|XY2-100 and XY2-200 interface|XY2-100 protocol used for laser applications.|Embedded/industrial|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
{{pd|z80|Z80|Zilog Z80 CPU|Zilog Z80 microprocessor disassembly.|Retro computing|logic|&amp;amp;mdash;|supported}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Possible candidates for future protocol decoders ==&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;
!Protocol&lt;br /&gt;
!Category&lt;br /&gt;
!Input ID(s)&lt;br /&gt;
!Output ID(s)&lt;br /&gt;
!Status&lt;br /&gt;
!Description&lt;br /&gt;
!Comments&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| SA8807A&lt;br /&gt;
| Displays&lt;br /&gt;
| spi&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| SPI-attached LCD. Datasheet: [http://pdf1.alldatasheet.com/datasheet-pdf/view/36922/SAMES/SA8807A.html Sames SA8807A].&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| EA eDIPTFT43-A&lt;br /&gt;
| Displays&lt;br /&gt;
| i2c&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| I2C-attached LCD. Datasheet: [http://www.lcd-module.de/pdf/grafik/ediptft43-a.pdf EA eDIPTFT43-A].&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Analog Devices AD7291&lt;br /&gt;
| ADC&lt;br /&gt;
| i2c&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| I2C-attached ADC. Datasheet: [http://pdf1.alldatasheet.com/datasheet-pdf/view/318172/AD/AD7291.html Analog Devices AD7291].&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Analog Devices ADS1258&lt;br /&gt;
| ADC&lt;br /&gt;
| spi&lt;br /&gt;
| ads1258&lt;br /&gt;
| bgcolor=&amp;quot;orange&amp;quot; | 0%&lt;br /&gt;
| SPI-attached ADC.&lt;br /&gt;
| Planned (Uwe Hermann).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/ccTalk ccTalk]&lt;br /&gt;
| Automation/Industrial&lt;br /&gt;
| uart&lt;br /&gt;
| cctalk&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 20%&lt;br /&gt;
| Serial protocol in widespread use throughout the money transaction and point-of-sale industry.&lt;br /&gt;
|In progress - https://github.com/plaes/libsigrokdecode/tree/cctalk&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Microchip MCP3901&lt;br /&gt;
| ADC&lt;br /&gt;
| spi&lt;br /&gt;
| mcp3901&lt;br /&gt;
| bgcolor=&amp;quot;orange&amp;quot; | 0%&lt;br /&gt;
| Can be controlled via a parallel protocol, or SPI, or I2C.&lt;br /&gt;
| Planned (Uwe Hermann).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| JTAG / TMPA9xx&lt;br /&gt;
| Flash/debug&lt;br /&gt;
| jtag&lt;br /&gt;
| jtag_tmpa9xx&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Toshiba TMPA9xx specific JTAG protocol details.&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| USB transfer&lt;br /&gt;
| USB&lt;br /&gt;
| usb_request&lt;br /&gt;
| usb_transfer&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| USB / HID&lt;br /&gt;
| USB&lt;br /&gt;
| usb_transfer&lt;br /&gt;
| usb_hid&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| USB / CDC&lt;br /&gt;
| USB&lt;br /&gt;
| usb_transfer&lt;br /&gt;
| usb_cdc&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| USB / USBTMC&lt;br /&gt;
| USB&lt;br /&gt;
| usb_transfer&lt;br /&gt;
| usb_usbtmc&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Dallas DS1985&lt;br /&gt;
| Other&lt;br /&gt;
| onewire_network&lt;br /&gt;
| &lt;br /&gt;
| bgcolor=&amp;quot;orange&amp;quot; | 0%&lt;br /&gt;
| Dallas DS1985 iButton (1-Wire) device.&lt;br /&gt;
| Planned (Uwe Hermann).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| UNI/O&lt;br /&gt;
| Embedded&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Synchronous_Serial_Interface SSI]&lt;br /&gt;
| Embedded&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Synchronous Serial Interface&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| CompactFlash&lt;br /&gt;
| Memory&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| MMC&lt;br /&gt;
| Memory&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Memory Stick&lt;br /&gt;
| Memory&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| SmartMedia&lt;br /&gt;
| Memory&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| xD-Picture Card&lt;br /&gt;
| Memory&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/ISO/IEC_7816 ISO 7816]&lt;br /&gt;
| Smartcards&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| AVR TPI&lt;br /&gt;
| Flash/debug&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Atmel Tiny Programming Interface (TPI) protocol.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| FWH&lt;br /&gt;
| PC&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ISA&lt;br /&gt;
| PC&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| PCI&lt;br /&gt;
| PC&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| SMBus&lt;br /&gt;
| PC&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| IDE&lt;br /&gt;
| PC&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| SCSI&lt;br /&gt;
| PC&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Platform_Environment_Control_Interface PECI]&lt;br /&gt;
| PC&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Platform Environment Control Interface&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/SVID SVID]&lt;br /&gt;
| PC&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Serial Voltage Identification&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Protocol_decoder:mfm|MFM]]&lt;br /&gt;
| PC&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | 90%&lt;br /&gt;
| Floppy disk FM and [https://en.wikipedia.org/wiki/Modified_Frequency_Modulation MFM].&lt;br /&gt;
| Work in progress (David Wiens).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| HD Audio&lt;br /&gt;
| Audio&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Nokia NRC17&lt;br /&gt;
| IR&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Philips RC-MM&lt;br /&gt;
| IR&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Philips RECS80&lt;br /&gt;
| IR&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Infrared_Data_Association IrDA]&lt;br /&gt;
| Misc&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| HD44780&lt;br /&gt;
| Displays&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| [http://en.wikipedia.org/wiki/HD44780_Character_LCD HD44780 character LCD] protocol&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Protocol_decoder:Pcf8814|PCF8814]]&lt;br /&gt;
| Displays&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| pcf8814&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | 50%&lt;br /&gt;
| Philips PCF8814 65 x 96 pixels matrix LCD driver&lt;br /&gt;
| Work in progress (Uwe Hermann).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Protocol_decoder:Pcf8814_lcd|PCF8814 LCD]]&lt;br /&gt;
| Displays&lt;br /&gt;
| pcf8814&lt;br /&gt;
| pcf8814_lcd&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | 50%&lt;br /&gt;
| Philips PCF8814 65 x 96 pixels matrix LCD driver&lt;br /&gt;
| Work in progress (Uwe Hermann).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/RDM_%28lighting%29 RDM]&lt;br /&gt;
| Industrial Lighting&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| rdm&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/NMEA_0183 NMEA 0183]&lt;br /&gt;
| GPS&lt;br /&gt;
| uart&lt;br /&gt;
| nmea0183&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Protocol_decoder:Nmea2000|NMEA2000]]&lt;br /&gt;
| Marine&lt;br /&gt;
| can&lt;br /&gt;
| nmea2000&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| [https://en.wikipedia.org/wiki/NMEA_2000 NMEA 2000 Wikipedia page]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Digital_Command_Control DCC]&lt;br /&gt;
| Trains&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| dcc&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Train_Communication_Network MVB]&lt;br /&gt;
| Trains&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| mvb&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | 40%&lt;br /&gt;
| Multifunction Vehicle Bus&lt;br /&gt;
| Work in progress (Libor Tomsik).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Train_Communication_Network WTB]&lt;br /&gt;
| Trains&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| wtb&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Wire Train Bus&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/C-Bus_%28protocol%29 C-Bus]&lt;br /&gt;
| Home automation&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| cbus&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/X10_%28industry_standard%29 X10]&lt;br /&gt;
| Home automation&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| x10&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/LonWorks LonWorks]&lt;br /&gt;
| Home automation&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| lonworks&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Meter-Bus M-Bus]&lt;br /&gt;
| Automation&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| mbus&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Modbus Modbus ASCII]&lt;br /&gt;
| Automation&lt;br /&gt;
| uart&lt;br /&gt;
| modbus&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Modbus Modbus TCP]&lt;br /&gt;
| Automation&lt;br /&gt;
| ip&lt;br /&gt;
| modbus&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Highway_Addressable_Remote_Transducer_Protocol HART protocol]&lt;br /&gt;
| Automation&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| hart&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/INTERBUS INTERBUS]&lt;br /&gt;
| Automation&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| interbus&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/DirectNET_Protocol DirectNET]&lt;br /&gt;
| Automation&lt;br /&gt;
| uart&lt;br /&gt;
| directnet&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/KNX_%28standard%29 KNX]&lt;br /&gt;
| Automation&lt;br /&gt;
| various&lt;br /&gt;
| knx&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Bacnet BACnet]&lt;br /&gt;
| Automation&lt;br /&gt;
| &lt;br /&gt;
| bacnet&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/OpenTherm OpenTherm]&lt;br /&gt;
| Automation&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| opentherm&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/EBUS_%28serial_buses%29 EBUS]&lt;br /&gt;
| Automation&lt;br /&gt;
| uart&lt;br /&gt;
| ebus&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Attachment_Unit_Interface AUI]&lt;br /&gt;
| Networking&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| aui&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Attachment Unit Interface&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Medium_Dependent_Interface MDI]&lt;br /&gt;
| Networking&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| mdi&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Medium Dependent Interface&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Media_Independent_Interface MII]&lt;br /&gt;
| Networking&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| mii&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Media Independent Interface&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Gigabit_Media_Independent_Interface#Gigabit_Media_Independent_Interface GMII]&lt;br /&gt;
| Networking&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| gmii&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Gigabit Media Independent Interface&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/10_Gigabit_Media_Independent_Interface#10_Gigabit_Media_Independent_Interface XGMII]&lt;br /&gt;
| Networking&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| xgmii&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| 10 Gigabit Media Independent Interface&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Protocol_decoder:esp8266|ESP8266]]&lt;br /&gt;
| Wireless&lt;br /&gt;
| uart&lt;br /&gt;
| esp8266&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| WiFi Serial Transceiver&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Protocol Decoder:tmds|TMDS (HDMI / DVI Pixel Data)]]&lt;br /&gt;
| Display&lt;br /&gt;
| tmds&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;orange&amp;quot; | 1%&lt;br /&gt;
| https://github.com/mithro/tmds_encoding&lt;br /&gt;
| Work in progress ([[User:Mithro|mithro]])&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Protocol Decoder:Easymatic|Easymatic]]&lt;br /&gt;
| Home automation&lt;br /&gt;
| uart&lt;br /&gt;
| easymatic&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 10%&lt;br /&gt;
| &lt;br /&gt;
| Work in progress (Platypus)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Protocol Decoder:DDC/CI|DDC/CI]]&lt;br /&gt;
| PC&lt;br /&gt;
| i2c&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Kenwood VH&lt;br /&gt;
| Misc&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | 50%&lt;br /&gt;
| SYSTEM CONTROL protocol used by Kenwood&amp;#039;s VH HiFi-system&lt;br /&gt;
| In progress: https://github.com/kripton/libsigrokdecode/compare/kenwood_vh&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61131-9&lt;br /&gt;
| Industrial&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| &amp;quot;Single-drop digital communication interface for small sensors and actuators (SDCI, marketed as IO-Link)&amp;quot; https://en.wikipedia.org/wiki/IEC_61131&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| NRZ encoding family&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| Non-Return-to-Zero and its [https://en.wikipedia.org/wiki/Non-return-to-zero#Variants variants]&lt;br /&gt;
| whoever wants it&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Bi-Phase encoding family&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| [http://ckp.made-it.com/encodingschemes.html several variations] of codes, including [https://en.wikipedia.org/wiki/Manchester_code Manchester code]&lt;br /&gt;
| whoever wants it&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Sony LANC&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| [http://www.boehmel.de/lanc.htm Sony LANC]&lt;br /&gt;
| whoever wants it, contact [[User:Alexdaniel|AlexDaniel]] for more info. You can already decode the raw data by using UART with 9600 baud and no parity, but it&amp;#039;d be better if pulseview displayed the meaning (as in what these commands do)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| CCD (Chrysler&amp;#039;s Collision Detection)&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;green&amp;quot; | 99%&lt;br /&gt;
| CCD (Chrysler&amp;#039;s Collision Detection) is internal bus used on Chrysler cars produced about 1990-2000.&lt;br /&gt;
| It works, but decodes only subset of all possible CCD messages, mostly from Jeep ZJ &amp;#039;98. Need a little work to improve performance and better support of API 3. [https://github.com/majekw/sigrok-ccd-pd https://github.com/majekw/sigrok-ccd-pd]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Mate-trac&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| (bi-phase)&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| 20th century protocol for remote control of projectors, often stored on audio tapes; [https://www.aidtopia.com/mccarthy/aid/multi-image/matetrac.html described well by Adrian McCarthy]&lt;br /&gt;
| whoever wants it, possibly [[User:chrysn|chrysn]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| PN532 NFC reader communication protocol&lt;br /&gt;
| NFC&lt;br /&gt;
| uart / spi / i2c&lt;br /&gt;
| ISO14443&lt;br /&gt;
| bgcolor=&amp;quot;yellow&amp;quot; | 80%&lt;br /&gt;
| PN532 is a 13.56 MHz NFC reader, supporting SPI, I2C or Serial UART&lt;br /&gt;
| WIP for Serial UART: [https://github.com/plaes/libsigrokdecode/tree/pn542-uart https://github.com/plaes/libsigrokdecode/tree/pn542-uart] based on [https://git.mittelab.org/wifasoi/sigrokdecode-pn532 code from this repository]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| SAE J2716 SENT&lt;br /&gt;
| Automotive&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | 0%&lt;br /&gt;
| SENT - Single Edge Nibble Transmission for Automotive Applications&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;/div&gt;</summary>
		<author><name>LiborT</name></author>
	</entry>
</feed>