<?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=Fenugrec</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=Fenugrec"/>
	<link rel="alternate" type="text/html" href="https://sigrok.org/wiki/Special:Contributions/Fenugrec"/>
	<updated>2026-05-14T23:00:21Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16673</id>
		<title>Developers/Release 0.8.0</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16673"/>
		<updated>2024-02-04T22:18:46Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: typo in ubuntu bug URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt at a checklist for the &amp;quot;next release&amp;quot; - as of 2023/10, for sigrok-cli this would be either 0.7.3 or 0.8.0 (maybe the latter would be more appropriate given that 0.7.2 was over 2 years ago ?). Other subprojects have different numbers e.g. last libsigrok was 0.5.2 . &lt;br /&gt;
&lt;br /&gt;
Most of this is intended to expand on the main release guidelines here https://sigrok.org/wiki/Developers/Release_process&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* what platforms &amp;quot;must work&amp;quot; ?&lt;br /&gt;
** linux is the most tested based on IRC traffic, but maybe we can explicitly list distros to test ?&lt;br /&gt;
** win : would be nice to have a list of people we can ping to get them test a build&lt;br /&gt;
** osx : no idea, few users (see https://github.com/sigrokproject/sigrok-util/pull/16 ,)&lt;br /&gt;
** *BSD : no idea, no user reports in IRC&lt;br /&gt;
&lt;br /&gt;
* what currently open issues should be considered &amp;quot;blockers&amp;quot; for a release ?&lt;br /&gt;
** {{checkbox|checked|(Done)}} PyEval_InitThreads() deprecated in Python 3.13 see  https://bugzilla.redhat.com/show_bug.cgi?id=2245598&lt;br /&gt;
** {{checkbox|unchecked|Possibly some other Python2 / 3 compatibility and deprecation issues ?}}&lt;br /&gt;
** {{checkbox|unchecked|random weird issues that always seem to come from Win* users running weird combinations of hardware / firmware, mostly USB ?}}&lt;br /&gt;
** {{checkbox|unchecked|-flto}} can break builds if driver list gets optimized out - see https://sigrok.org/bugzilla/show_bug.cgi?id=1433 , https://bugs.launchpad.net/ubuntu/+source/libsigrok/+bug/2025248 &lt;br /&gt;
&lt;br /&gt;
* what external projects depend on sigrok components or bindings ? does it actually matter ?&lt;br /&gt;
** Pulseview&lt;br /&gt;
** smuview&lt;br /&gt;
&lt;br /&gt;
Transports (this would be better presented in a matrix format with feature vs OS) :&lt;br /&gt;
&lt;br /&gt;
*serial (native/USB-CDC)&lt;br /&gt;
*USB (non-serial)&lt;br /&gt;
*USB&lt;br /&gt;
*TCP/IP&lt;br /&gt;
*GPIB (probably just linux ?)&lt;br /&gt;
*VXI ?&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16658</id>
		<title>Developers/Release 0.8.0</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16658"/>
		<updated>2023-11-22T17:13:35Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: -fLTO : link to bug reports&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt at a checklist for the &amp;quot;next release&amp;quot; - as of 2023/10, for sigrok-cli this would be either 0.7.3 or 0.8.0 (maybe the latter would be more appropriate given that 0.7.2 was over 2 years ago ?). Other subprojects have different numbers e.g. last libsigrok was 0.5.2 . &lt;br /&gt;
&lt;br /&gt;
Most of this is intended to expand on the main release guidelines here https://sigrok.org/wiki/Developers/Release_process&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* what platforms &amp;quot;must work&amp;quot; ?&lt;br /&gt;
** linux is the most tested based on IRC traffic, but maybe we can explicitly list distros to test ?&lt;br /&gt;
** win : would be nice to have a list of people we can ping to get them test a build&lt;br /&gt;
** osx : no idea, few users (see https://github.com/sigrokproject/sigrok-util/pull/16 ,)&lt;br /&gt;
** *BSD : no idea, no user reports in IRC&lt;br /&gt;
&lt;br /&gt;
* what currently open issues should be considered &amp;quot;blockers&amp;quot; for a release ?&lt;br /&gt;
** {{checkbox|checked|(Done)}} PyEval_InitThreads() deprecated in Python 3.13 see  https://bugzilla.redhat.com/show_bug.cgi?id=2245598&lt;br /&gt;
** {{checkbox|unchecked|Possibly some other Python2 / 3 compatibility and deprecation issues ?}}&lt;br /&gt;
** {{checkbox|unchecked|random weird issues that always seem to come from Win* users running weird combinations of hardware / firmware, mostly USB ?}}&lt;br /&gt;
** {{checkbox|unchecked|-flto}} can break builds if driver list gets optimized out - see https://sigrok.org/bugzilla/show_bug.cgi?id=1433 , https://bugs.launchpad.net/ubuntu/+source/libsigrok/+bug/20252480 &lt;br /&gt;
&lt;br /&gt;
* what external projects depend on sigrok components or bindings ? does it actually matter ?&lt;br /&gt;
** Pulseview&lt;br /&gt;
** smuview&lt;br /&gt;
&lt;br /&gt;
Transports (this would be better presented in a matrix format with feature vs OS) :&lt;br /&gt;
&lt;br /&gt;
*serial (native/USB-CDC)&lt;br /&gt;
*USB (non-serial)&lt;br /&gt;
*USB&lt;br /&gt;
*TCP/IP&lt;br /&gt;
*GPIB (probably just linux ?)&lt;br /&gt;
*VXI ?&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16657</id>
		<title>Developers/Release 0.8.0</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16657"/>
		<updated>2023-11-19T17:28:58Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: clarify &amp;#039;done&amp;#039; item&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt at a checklist for the &amp;quot;next release&amp;quot; - as of 2023/10, for sigrok-cli this would be either 0.7.3 or 0.8.0 (maybe the latter would be more appropriate given that 0.7.2 was over 2 years ago ?). Other subprojects have different numbers e.g. last libsigrok was 0.5.2 . &lt;br /&gt;
&lt;br /&gt;
Most of this is intended to expand on the main release guidelines here https://sigrok.org/wiki/Developers/Release_process&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* what platforms &amp;quot;must work&amp;quot; ?&lt;br /&gt;
** linux is the most tested based on IRC traffic, but maybe we can explicitly list distros to test ?&lt;br /&gt;
** win : would be nice to have a list of people we can ping to get them test a build&lt;br /&gt;
** osx : no idea, few users (see https://github.com/sigrokproject/sigrok-util/pull/16 ,)&lt;br /&gt;
** *BSD : no idea, no user reports in IRC&lt;br /&gt;
&lt;br /&gt;
* what currently open issues should be considered &amp;quot;blockers&amp;quot; for a release ?&lt;br /&gt;
** {{checkbox|checked|(Done)}} PyEval_InitThreads() deprecated in Python 3.13 see  https://bugzilla.redhat.com/show_bug.cgi?id=2245598&lt;br /&gt;
** {{checkbox|unchecked|Possibly some other Python2 / 3 compatibility and deprecation issues ?}}&lt;br /&gt;
** {{checkbox|unchecked|random weird issues that always seem to come from Win* users running weird combinations of hardware / firmware, mostly USB ?}}&lt;br /&gt;
** {{checkbox|unchecked|-flto maybe breaks builds (driver list gets optimized out ? forget the details) on some distros ?}} &lt;br /&gt;
&lt;br /&gt;
* what external projects depend on sigrok components or bindings ? does it actually matter ?&lt;br /&gt;
** Pulseview&lt;br /&gt;
** smuview&lt;br /&gt;
&lt;br /&gt;
Transports (this would be better presented in a matrix format with feature vs OS) :&lt;br /&gt;
&lt;br /&gt;
*serial (native/USB-CDC)&lt;br /&gt;
*USB (non-serial)&lt;br /&gt;
*USB&lt;br /&gt;
*TCP/IP&lt;br /&gt;
*GPIB (probably just linux ?)&lt;br /&gt;
*VXI ?&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16656</id>
		<title>Developers/Release 0.8.0</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16656"/>
		<updated>2023-11-19T17:27:57Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: checkboxes, ref to macos PR&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt at a checklist for the &amp;quot;next release&amp;quot; - as of 2023/10, for sigrok-cli this would be either 0.7.3 or 0.8.0 (maybe the latter would be more appropriate given that 0.7.2 was over 2 years ago ?). Other subprojects have different numbers e.g. last libsigrok was 0.5.2 . &lt;br /&gt;
&lt;br /&gt;
Most of this is intended to expand on the main release guidelines here https://sigrok.org/wiki/Developers/Release_process&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* what platforms &amp;quot;must work&amp;quot; ?&lt;br /&gt;
** linux is the most tested based on IRC traffic, but maybe we can explicitly list distros to test ?&lt;br /&gt;
** win : would be nice to have a list of people we can ping to get them test a build&lt;br /&gt;
** osx : no idea, few users (see https://github.com/sigrokproject/sigrok-util/pull/16 ,)&lt;br /&gt;
** *BSD : no idea, no user reports in IRC&lt;br /&gt;
&lt;br /&gt;
* what currently open issues should be considered &amp;quot;blockers&amp;quot; for a release ?&lt;br /&gt;
** {{checkbox|checked|PyEval_InitThreads() deprecated in Python 3.13}} see  https://bugzilla.redhat.com/show_bug.cgi?id=2245598&lt;br /&gt;
** {{checkbox|unchecked|Possibly some other Python2 / 3 compatibility and deprecation issues ?}}&lt;br /&gt;
** {{checkbox|unchecked|random weird issues that always seem to come from Win* users running weird combinations of hardware / firmware, mostly USB ?}}&lt;br /&gt;
** {{checkbox|unchecked|-flto maybe breaks builds (driver list gets optimized out ? forget the details) on some distros ?}} &lt;br /&gt;
&lt;br /&gt;
* what external projects depend on sigrok components or bindings ? does it actually matter ?&lt;br /&gt;
** Pulseview&lt;br /&gt;
** smuview&lt;br /&gt;
&lt;br /&gt;
Transports (this would be better presented in a matrix format with feature vs OS) :&lt;br /&gt;
&lt;br /&gt;
*serial (native/USB-CDC)&lt;br /&gt;
*USB (non-serial)&lt;br /&gt;
*USB&lt;br /&gt;
*TCP/IP&lt;br /&gt;
*GPIB (probably just linux ?)&lt;br /&gt;
*VXI ?&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16640</id>
		<title>Developers/Release 0.8.0</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16640"/>
		<updated>2023-10-24T01:46:20Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: PyEval_InitThreads() deprec done&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt at a checklist for the &amp;quot;next release&amp;quot; - as of 2023/10, for sigrok-cli this would be either 0.7.3 or 0.8.0 (maybe the latter would be more appropriate given that 0.7.2 was over 2 years ago ?). Other subprojects have different numbers e.g. last libsigrok was 0.5.2 . &lt;br /&gt;
&lt;br /&gt;
Most of this is intended to expand on the main release guidelines here https://sigrok.org/wiki/Developers/Release_process&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* what platforms &amp;quot;must work&amp;quot; ?&lt;br /&gt;
** linux is the most tested based on IRC traffic, but maybe we can explicitly list distros to test ?&lt;br /&gt;
** win : would be nice to have a list of people we can ping to get them test a build&lt;br /&gt;
** osx : no idea, no user reports in IRC&lt;br /&gt;
** *BSD : no idea, no user reports in IRC&lt;br /&gt;
&lt;br /&gt;
* what currently open issues should be considered &amp;quot;blockers&amp;quot; for a release ?&lt;br /&gt;
** [DONE] PyEval_InitThreads() deprecated in Python 3.13;  https://bugzilla.redhat.com/show_bug.cgi?id=2245598&lt;br /&gt;
** Possibly some other Python2 / 3 compatibility and deprecation issues ?&lt;br /&gt;
** random weird issues that always seem to come from Win* users running weird combinations of hardware / firmware, mostly USB ?&lt;br /&gt;
** -flto maybe breaks builds (driver list gets optimized out ? forget the details) on some distros ? &lt;br /&gt;
&lt;br /&gt;
* what external projects depend on sigrok components or bindings ? does it actually matter ?&lt;br /&gt;
** Pulseview&lt;br /&gt;
** smuview&lt;br /&gt;
&lt;br /&gt;
Transports (this would be better presented in a matrix format with feature vs OS) :&lt;br /&gt;
&lt;br /&gt;
*serial (native/USB-CDC)&lt;br /&gt;
*USB (non-serial)&lt;br /&gt;
*USB&lt;br /&gt;
*TCP/IP&lt;br /&gt;
*GPIB (probably just linux ?)&lt;br /&gt;
*VXI ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
checklist test&lt;br /&gt;
{{checkbox|unchecked|title}}&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16639</id>
		<title>Developers/Release 0.8.0</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16639"/>
		<updated>2023-10-23T17:20:31Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: py 3.9 deprecates some functions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt at a checklist for the &amp;quot;next release&amp;quot; - as of 2023/10, for sigrok-cli this would be either 0.7.3 or 0.8.0 (maybe the latter would be more appropriate given that 0.7.2 was over 2 years ago ?). Other subprojects have different numbers e.g. last libsigrok was 0.5.2 . &lt;br /&gt;
&lt;br /&gt;
Most of this is intended to expand on the main release guidelines here https://sigrok.org/wiki/Developers/Release_process&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* what platforms &amp;quot;must work&amp;quot; ?&lt;br /&gt;
** linux is the most tested based on IRC traffic, but maybe we can explicitly list distros to test ?&lt;br /&gt;
** win : would be nice to have a list of people we can ping to get them test a build&lt;br /&gt;
** osx : no idea, no user reports in IRC&lt;br /&gt;
** *BSD : no idea, no user reports in IRC&lt;br /&gt;
&lt;br /&gt;
* what currently open issues should be considered &amp;quot;blockers&amp;quot; for a release ?&lt;br /&gt;
** &amp;quot;Remove PyEval_InitThreads() and PyEval_ThreadsInitialized() functions, deprecated in Python 3.9&amp;quot;  https://bugzilla.redhat.com/show_bug.cgi?id=2245598&lt;br /&gt;
** Possibly some other Python2 / 3 compatibility and deprecation issues,&lt;br /&gt;
** random weird issues that always seem to come from Win* users running weird combinations of hardware / firmware, mostly USB ?&lt;br /&gt;
** -flto maybe breaks builds (driver list gets optimized out ? forget the details) on some distros ? &lt;br /&gt;
&lt;br /&gt;
* what external projects depend on sigrok components or bindings ? does it actually matter ?&lt;br /&gt;
** Pulseview&lt;br /&gt;
** smuview&lt;br /&gt;
&lt;br /&gt;
Transports (this would be better presented in a matrix format with feature vs OS) :&lt;br /&gt;
&lt;br /&gt;
*serial (native/USB-CDC)&lt;br /&gt;
*USB (non-serial)&lt;br /&gt;
*USB&lt;br /&gt;
*TCP/IP&lt;br /&gt;
*GPIB (probably just linux ?)&lt;br /&gt;
*VXI ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
checklist test&lt;br /&gt;
{{checkbox|unchecked|title}}&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16638</id>
		<title>Developers/Release 0.8.0</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16638"/>
		<updated>2023-10-20T18:27:53Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: LTO&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt at a checklist for the &amp;quot;next release&amp;quot; - as of 2023/10, for sigrok-cli this would be either 0.7.3 or 0.8.0 (maybe the latter would be more appropriate given that 0.7.2 was over 2 years ago ?). Other subprojects have different numbers e.g. last libsigrok was 0.5.2 . &lt;br /&gt;
&lt;br /&gt;
Most of this is intended to expand on the main release guidelines here https://sigrok.org/wiki/Developers/Release_process&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* what platforms &amp;quot;must work&amp;quot; ?&lt;br /&gt;
** linux is the most tested based on IRC traffic, but maybe we can explicitly list distros to test ?&lt;br /&gt;
** win : would be nice to have a list of people we can ping to get them test a build&lt;br /&gt;
** osx : no idea, no user reports in IRC&lt;br /&gt;
** *BSD : no idea, no user reports in IRC&lt;br /&gt;
&lt;br /&gt;
* what currently open issues should be considered &amp;quot;blockers&amp;quot; for a release ?&lt;br /&gt;
** I recall some Python2 / 3 compatibility fixes, forgot the details&lt;br /&gt;
** random weird issues that always seem to come from Win* users running weird combinations of hardware / firmware, mostly USB ?&lt;br /&gt;
** -flto maybe breaks builds (driver list gets optimized out ? forget the details) on some distros ? &lt;br /&gt;
&lt;br /&gt;
* what external projects depend on sigrok components or bindings ? does it actually matter ?&lt;br /&gt;
** Pulseview&lt;br /&gt;
** smuview&lt;br /&gt;
&lt;br /&gt;
Transports (this would be better presented in a matrix format with feature vs OS) :&lt;br /&gt;
&lt;br /&gt;
*serial (native/USB-CDC)&lt;br /&gt;
*USB (non-serial)&lt;br /&gt;
*USB&lt;br /&gt;
*TCP/IP&lt;br /&gt;
*GPIB (probably just linux ?)&lt;br /&gt;
*VXI ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
checklist test&lt;br /&gt;
{{checkbox|unchecked|title}}&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16637</id>
		<title>Developers/Release 0.8.0</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16637"/>
		<updated>2023-10-20T17:52:12Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt at a checklist for the &amp;quot;next release&amp;quot; - as of 2023/10, for sigrok-cli this would be either 0.7.3 or 0.8.0 (maybe the latter would be more appropriate given that 0.7.2 was over 2 years ago ?). Other subprojects have different numbers e.g. last libsigrok was 0.5.2 . &lt;br /&gt;
&lt;br /&gt;
Most of this is intended to expand on the main release guidelines here https://sigrok.org/wiki/Developers/Release_process&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* what platforms &amp;quot;must work&amp;quot; ?&lt;br /&gt;
** linux is the most tested based on IRC traffic, but maybe we can explicitly list distros to test ?&lt;br /&gt;
** win : would be nice to have a list of people we can ping to get them test a build&lt;br /&gt;
** osx : no idea, no user reports in IRC&lt;br /&gt;
** *BSD : no idea, no user reports in IRC&lt;br /&gt;
&lt;br /&gt;
* what currently open issues should be considered &amp;quot;blockers&amp;quot; for a release ?&lt;br /&gt;
** I recall some Python2 / 3 compatibility fixes, forgot the details&lt;br /&gt;
** random weird issues that always seem to come from Win* users running weird combinations of hardware / firmware, mostly USB ?&lt;br /&gt;
** smuview &lt;br /&gt;
&lt;br /&gt;
* what external projects depend on sigrok components or bindings ? does it actually matter ?&lt;br /&gt;
** Pulseview&lt;br /&gt;
** smuview&lt;br /&gt;
&lt;br /&gt;
Transports (this would be better presented in a matrix format with feature vs OS) :&lt;br /&gt;
&lt;br /&gt;
*serial (native/USB-CDC)&lt;br /&gt;
*USB (non-serial)&lt;br /&gt;
*USB&lt;br /&gt;
*TCP/IP&lt;br /&gt;
*GPIB (probably just linux ?)&lt;br /&gt;
*VXI ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
checklist test&lt;br /&gt;
{{checkbox|unchecked|title}}&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16636</id>
		<title>Developers/Release 0.8.0</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16636"/>
		<updated>2023-10-20T14:43:33Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: moved checklist (broken)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt at a checklist for the &amp;quot;next release&amp;quot; - as of 2023/10, for sigrok-cli this would be either 0.7.3 or 0.8.0 (maybe the latter would be more appropriate given that 0.7.2 was over 2 years ago ?). Other subprojects have different numbers e.g. last libsigrok was 0.5.2 . &lt;br /&gt;
&lt;br /&gt;
Most of this is intended to expand on the main release guidelines here https://sigrok.org/wiki/Developers/Release_process&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* what platforms &amp;quot;must work&amp;quot; ?&lt;br /&gt;
** linux is the most tested based on IRC traffic, but maybe we can explicitly list distros to test ?&lt;br /&gt;
** win : would be nice to have a list of people we can ping to get them test a build&lt;br /&gt;
** osx : no idea, no user reports in IRC&lt;br /&gt;
** *BSD : no idea, no user reports in IRC&lt;br /&gt;
&lt;br /&gt;
* what currently open issues should be considered &amp;quot;blockers&amp;quot; for a release ?&lt;br /&gt;
** I recall some Python2 / 3 compatibility fixes, forgot the details&lt;br /&gt;
** random weird issues that always seem to come from Win* users running weird combinations of hardware / firmware&lt;br /&gt;
&lt;br /&gt;
* what external projects depend on sigrok components or bindings ? does it actually matter ?&lt;br /&gt;
&lt;br /&gt;
Transports (this would be better presented in a matrix format with feature vs OS) :&lt;br /&gt;
&lt;br /&gt;
*serial (native/USB-CDC)&lt;br /&gt;
*USB (non-serial)&lt;br /&gt;
*USB&lt;br /&gt;
*TCP/IP&lt;br /&gt;
*GPIB (probably just linux ?)&lt;br /&gt;
*VXI ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
checklist test&lt;br /&gt;
{{checkbox|unchecked|title}}&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16635</id>
		<title>Developers/Release 0.8.0</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16635"/>
		<updated>2023-10-20T14:43:06Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: transports, bindings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt at a checklist for the &amp;quot;next release&amp;quot; - as of 2023/10, for sigrok-cli this would be either 0.7.3 or 0.8.0 (maybe the latter would be more appropriate given that 0.7.2 was over 2 years ago ?). Other subprojects have different numbers e.g. last libsigrok was 0.5.2 . &lt;br /&gt;
&lt;br /&gt;
Most of this is intended to expand on the main release guidelines here https://sigrok.org/wiki/Developers/Release_process&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* what platforms &amp;quot;must work&amp;quot; ?&lt;br /&gt;
** linux is the most tested based on IRC traffic, but maybe we can explicitly list distros to test ?&lt;br /&gt;
** win : would be nice to have a list of people we can ping to get them test a build&lt;br /&gt;
** osx : no idea, no user reports in IRC&lt;br /&gt;
** *BSD : no idea, no user reports in IRC&lt;br /&gt;
&lt;br /&gt;
* what currently open issues should be considered &amp;quot;blockers&amp;quot; for a release ?&lt;br /&gt;
** I recall some Python2 / 3 compatibility fixes, forgot the details&lt;br /&gt;
** random weird issues that always seem to come from Win* users running weird combinations of hardware / firmware&lt;br /&gt;
&lt;br /&gt;
* what external projects depend on sigrok components or bindings ? does it actually matter ?&lt;br /&gt;
&lt;br /&gt;
Transports (this would be better presented in a matrix format with feature vs OS) :&lt;br /&gt;
&lt;br /&gt;
*serial (native/USB-CDC)&lt;br /&gt;
*USB (non-serial)&lt;br /&gt;
*USB&lt;br /&gt;
*TCP/IP&lt;br /&gt;
*GPIB (probably just linux ?)&lt;br /&gt;
*VXI ?&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16634</id>
		<title>Developers/Release 0.8.0</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16634"/>
		<updated>2023-10-20T14:29:37Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: failed checkbox attempt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt at a checklist for the &amp;quot;next release&amp;quot; - as of 2023/10, for sigrok-cli this would be either 0.7.3 or 0.8.0 (maybe the latter would be more appropriate given that 0.7.2 was over 2 years ago ?). Other subprojects have different numbers e.g. last libsigrok was 0.5.2 . &lt;br /&gt;
&lt;br /&gt;
Most of this is intended to expand on the main release guidelines here https://sigrok.org/wiki/Developers/Release_process&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* what platforms &amp;quot;must work&amp;quot; ?&lt;br /&gt;
** linux is the most tested based on IRC traffic, but maybe we can explicitly list distros to test ?&lt;br /&gt;
** win : would be nice to have a list of people we can ping to get them test a build&lt;br /&gt;
** osx : no idea, no user reports in IRC&lt;br /&gt;
** *BSD : no idea, no user reports in IRC&lt;br /&gt;
&lt;br /&gt;
* what currently open issues should be considered &amp;quot;blockers&amp;quot; for a release ?&lt;br /&gt;
** I recall some Python2 / 3 compatibility fixes, forgot the details&lt;br /&gt;
** random weird issues that always seem to come from Win* users running weird combinations of hardware / firmware&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Checklist:&lt;br /&gt;
&lt;br /&gt;
{{checkbox|unchecked|Win 7 : logic16 clone, sigrok-cli + Pulseview (fenugrec)}}&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16633</id>
		<title>Developers/Release 0.8.0</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Developers/Release_0.8.0&amp;diff=16633"/>
		<updated>2023-10-20T14:26:33Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: initial list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt at a checklist for the &amp;quot;next release&amp;quot; - as of 2023/10, for sigrok-cli this would be either 0.7.3 or 0.8.0 (maybe the latter would be more appropriate given that 0.7.2 was over 2 years ago ?). Other subprojects have different numbers e.g. last libsigrok was 0.5.2 . &lt;br /&gt;
&lt;br /&gt;
Most of this is intended to expand on the main release guidelines here https://sigrok.org/wiki/Developers/Release_process&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* what platforms &amp;quot;must work&amp;quot; ?&lt;br /&gt;
** linux is the most tested based on IRC traffic, but maybe we can explicitly list distros to test ?&lt;br /&gt;
** win : would be nice to have a list of people we can ping to get them test a build&lt;br /&gt;
** osx : no idea, no user reports in IRC&lt;br /&gt;
** *BSD : no idea, no user reports in IRC&lt;br /&gt;
&lt;br /&gt;
* what currently open issues should be considered &amp;quot;blockers&amp;quot; for a release ?&lt;br /&gt;
** I recall some Python2 / 3 compatibility fixes, forgot the details&lt;br /&gt;
** random weird issues that always seem to come from Win* users running weird combinations of hardware / firmware&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Checklist:&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Spiflash&amp;diff=16497</id>
		<title>Protocol decoder:Spiflash</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Spiflash&amp;diff=16497"/>
		<updated>2023-04-26T16:16:22Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: /* Resources */  added mx25l8006E ds&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = spiflash&lt;br /&gt;
| name            = SPI flash&lt;br /&gt;
| description     = xx25 series SPI (NOR) flash chip protocol&lt;br /&gt;
| status          = supported&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = spiflash&lt;br /&gt;
| image           = [[File:Macronix mx25l1605d device top.jpg|250px]]&lt;br /&gt;
| input           = [[Protocol Decoder:spi|spi]]&lt;br /&gt;
| output          = spiflash&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
| options         = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;spiflash&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the industry standard xx25 series SPI (NOR) flash chip protocol.&lt;br /&gt;
&lt;br /&gt;
It is used (for example) in the [http://www.macronix.com/en-us/Product/Pages/ProductDetail.aspx?PartNo=MX25L1605D Macronix MX25L1605D] chip, and many others.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Chip pinout ===&lt;br /&gt;
&lt;br /&gt;
The Macronix MX25L&amp;#039;&amp;#039;xx&amp;#039;&amp;#039;05D chips (and almost all SPI flash chips of the xx25 series) have the following pinout:&lt;br /&gt;
&lt;br /&gt;
{{chip_8pin|1=CS#|2=SO|3=WP#|4=GND|5=SI|6=SCLK|7=HOLD#|8=VCC}}&lt;br /&gt;
&lt;br /&gt;
=== Macronix MX25L1605D in openbiosprog-spi ===&lt;br /&gt;
&lt;br /&gt;
The [http://sigrok.org/gitweb/?p=sigrok-dumps.git;a=tree;f=spi/mx25l1605d spi/mx25l1605d] directory in sigrok-dumps contains a set of example captures of a Macronix MX25L1605D (MX25L1605DPI-12G) SPI flash chip (16Mbit == 2Mbyte; NOR flash) that is probed, being written to, read, or erased.&lt;br /&gt;
&lt;br /&gt;
The logic analyzer used was a [[ChronoVu LA8]] (at 25MHz). It is probing the SPI chip in the [http://randomprojects.org/wiki/Openbiosprog-spi openbiosprog-spi] Open Hardware USB-based SPI chip programmer. The host software used is [http://flashrom.org/FT2232SPI_Programmer flashrom].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Probe setup:&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;
!Probe&lt;br /&gt;
!MX25L1605D pin&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0 (green) || CS#&lt;br /&gt;
|-&lt;br /&gt;
| 1 (orange) || SO/SIO1 (a.k.a MISO)&lt;br /&gt;
|-&lt;br /&gt;
| 2 (white) || SCLK&lt;br /&gt;
|-&lt;br /&gt;
| 3 (red) || SI/SIO0 (a.k.a MOSI)&lt;br /&gt;
|-&lt;br /&gt;
| 4 (gray) || WP#/ACC&lt;br /&gt;
|-&lt;br /&gt;
| 5 (brown) || HOLD#&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Photos:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Macronix mx25l1605d openbiosprog-spi.jpg|&amp;lt;small&amp;gt;openbiosprog-spi with chip&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Macronix mx25l1605d device top.jpg|&amp;lt;small&amp;gt;Macronix MX25L1605D&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Macronix mx25l1605d chronovu la8.jpg|&amp;lt;small&amp;gt;[[ChronoVu LA8]]&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Macronix mx25l1605d probed.jpg|&amp;lt;small&amp;gt;Chip, probed&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
The xx25 series chips uses the standard SPI protocol and pins (MISO, MOSI, SCLK, CS#), with the additional (optional) HOLD# and WP#/ACC pins.&lt;br /&gt;
&lt;br /&gt;
The host can send a large number of commands to the SPI chip (such as WREN, RDID, READ, SE, CE, PP, and many more). The commands have various length, and usually consist of one command ID byte, optional address bytes, one or more data/payload bytes, and so on (depending on the command).&lt;br /&gt;
&lt;br /&gt;
See the chip datasheet for a detailed protocol/register/command description.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.macronix.com/en-us/Product/Pages/ProductDetail.aspx?PartNo=MX25L1605D Macronix MX25L1605D (dead link)] ([https://www.mxic.com.tw/Lists/Datasheet/Attachments/8554/MX25L1605D,%203V,%2016Mb,%20v1.5.pdf datasheet])&lt;br /&gt;
* [https://www.mxic.com.tw/Lists/Datasheet/Attachments/8384/MX25L8006E,%203V,%208Mb,%20v1.2.pdf MX25L8006E datasheet]&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocol decoder]]&lt;br /&gt;
[[Category:SPI]]&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Spiflash&amp;diff=16496</id>
		<title>Protocol decoder:Spiflash</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Spiflash&amp;diff=16496"/>
		<updated>2023-04-26T16:15:27Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: /* Resources */ dead links for datasheet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = spiflash&lt;br /&gt;
| name            = SPI flash&lt;br /&gt;
| description     = xx25 series SPI (NOR) flash chip protocol&lt;br /&gt;
| status          = supported&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = spiflash&lt;br /&gt;
| image           = [[File:Macronix mx25l1605d device top.jpg|250px]]&lt;br /&gt;
| input           = [[Protocol Decoder:spi|spi]]&lt;br /&gt;
| output          = spiflash&lt;br /&gt;
| probes          = &amp;amp;mdash;&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
| options         = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;spiflash&amp;#039;&amp;#039;&amp;#039; protocol decoder supports the industry standard xx25 series SPI (NOR) flash chip protocol.&lt;br /&gt;
&lt;br /&gt;
It is used (for example) in the [http://www.macronix.com/en-us/Product/Pages/ProductDetail.aspx?PartNo=MX25L1605D Macronix MX25L1605D] chip, and many others.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Chip pinout ===&lt;br /&gt;
&lt;br /&gt;
The Macronix MX25L&amp;#039;&amp;#039;xx&amp;#039;&amp;#039;05D chips (and almost all SPI flash chips of the xx25 series) have the following pinout:&lt;br /&gt;
&lt;br /&gt;
{{chip_8pin|1=CS#|2=SO|3=WP#|4=GND|5=SI|6=SCLK|7=HOLD#|8=VCC}}&lt;br /&gt;
&lt;br /&gt;
=== Macronix MX25L1605D in openbiosprog-spi ===&lt;br /&gt;
&lt;br /&gt;
The [http://sigrok.org/gitweb/?p=sigrok-dumps.git;a=tree;f=spi/mx25l1605d spi/mx25l1605d] directory in sigrok-dumps contains a set of example captures of a Macronix MX25L1605D (MX25L1605DPI-12G) SPI flash chip (16Mbit == 2Mbyte; NOR flash) that is probed, being written to, read, or erased.&lt;br /&gt;
&lt;br /&gt;
The logic analyzer used was a [[ChronoVu LA8]] (at 25MHz). It is probing the SPI chip in the [http://randomprojects.org/wiki/Openbiosprog-spi openbiosprog-spi] Open Hardware USB-based SPI chip programmer. The host software used is [http://flashrom.org/FT2232SPI_Programmer flashrom].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Probe setup:&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;
!Probe&lt;br /&gt;
!MX25L1605D pin&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0 (green) || CS#&lt;br /&gt;
|-&lt;br /&gt;
| 1 (orange) || SO/SIO1 (a.k.a MISO)&lt;br /&gt;
|-&lt;br /&gt;
| 2 (white) || SCLK&lt;br /&gt;
|-&lt;br /&gt;
| 3 (red) || SI/SIO0 (a.k.a MOSI)&lt;br /&gt;
|-&lt;br /&gt;
| 4 (gray) || WP#/ACC&lt;br /&gt;
|-&lt;br /&gt;
| 5 (brown) || HOLD#&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Photos:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Macronix mx25l1605d openbiosprog-spi.jpg|&amp;lt;small&amp;gt;openbiosprog-spi with chip&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Macronix mx25l1605d device top.jpg|&amp;lt;small&amp;gt;Macronix MX25L1605D&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Macronix mx25l1605d chronovu la8.jpg|&amp;lt;small&amp;gt;[[ChronoVu LA8]]&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Macronix mx25l1605d probed.jpg|&amp;lt;small&amp;gt;Chip, probed&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
The xx25 series chips uses the standard SPI protocol and pins (MISO, MOSI, SCLK, CS#), with the additional (optional) HOLD# and WP#/ACC pins.&lt;br /&gt;
&lt;br /&gt;
The host can send a large number of commands to the SPI chip (such as WREN, RDID, READ, SE, CE, PP, and many more). The commands have various length, and usually consist of one command ID byte, optional address bytes, one or more data/payload bytes, and so on (depending on the command).&lt;br /&gt;
&lt;br /&gt;
See the chip datasheet for a detailed protocol/register/command description.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.macronix.com/en-us/Product/Pages/ProductDetail.aspx?PartNo=MX25L1605D Macronix MX25L1605D (dead link)] ([https://www.mxic.com.tw/Lists/Datasheet/Attachments/8554/MX25L1605D,%203V,%2016Mb,%20v1.5.pdf datasheet])&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocol decoder]]&lt;br /&gt;
[[Category:SPI]]&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=User_talk:PeterMortensen&amp;diff=16374</id>
		<title>User talk:PeterMortensen</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=User_talk:PeterMortensen&amp;diff=16374"/>
		<updated>2022-12-02T19:56:54Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[EDIT] sorry, this is supposed to go on https://sigrok.org/wiki/User_talk:PeterMortensen/IRC_shenanigans , but it somehow ended up on your personal page...&lt;br /&gt;
&lt;br /&gt;
I was going to add a footnote in the IRC area for this type of information, but apparently that requires an extension that isn&amp;#039;t available (https://sigrok.org/wiki/Special:Version ).&lt;br /&gt;
&lt;br /&gt;
It would need intervention from one of the Admin users, so maybe there&amp;#039;s a better way to present this info.&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=User_talk:PeterMortensen&amp;diff=16373</id>
		<title>User talk:PeterMortensen</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=User_talk:PeterMortensen&amp;diff=16373"/>
		<updated>2022-12-02T19:55:57Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: Created page with &amp;quot;I was going to add a footnote in the IRC area for this type of information, but apparently that requires an extension that isn&amp;#039;t available (https://sigrok.org/wiki/Special:Version ).  It would need intervention from one of the Admin users, so maybe there&amp;#039;s a better way to present this info.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I was going to add a footnote in the IRC area for this type of information, but apparently that requires an extension that isn&amp;#039;t available (https://sigrok.org/wiki/Special:Version ).&lt;br /&gt;
&lt;br /&gt;
It would need intervention from one of the Admin users, so maybe there&amp;#039;s a better way to present this info.&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File_format:Sigrok/v3&amp;diff=12864</id>
		<title>File format:Sigrok/v3</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File_format:Sigrok/v3&amp;diff=12864"/>
		<updated>2017-10-07T23:38:31Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: /* sigrok packets */ more big-endian&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:File format:sigrok/v3}}&lt;br /&gt;
This page describes the proposed file/stream format (v3) for storing and transmitting sigrok related data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color:#ff6666&amp;quot;&amp;gt;&lt;br /&gt;
NOTE: This is work in progress and has not yet been implemented!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
&lt;br /&gt;
The previous [[File format:sigrok/v2|sigrok session]] file format (version 2) is a ZIP file containing multiple files (some metadata files and data files containing the actual samples). This works fine, but it also has some issues:&lt;br /&gt;
&lt;br /&gt;
* In order to get to the data you want, you need to decompress the whole file.&lt;br /&gt;
* Appending to a file is not possible easily (and it&amp;#039;s not efficient).&lt;br /&gt;
* It doesn&amp;#039;t support storing additional information for frontends (channel colors, and so on).&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
The following list highlights some of the goals of the new file format (v3):&lt;br /&gt;
&lt;br /&gt;
* It must be able to store&lt;br /&gt;
** arbitrary data (logic samples, and/or analog samples, and/or protocol decoder data, and more), as well as&lt;br /&gt;
** arbitrary meta-/config-data and other extra information that may be useful to frontends (UI state data, user-configured probe colors, names, positions, and so on).&lt;br /&gt;
* It must support and facilitate stream-oriented processing (save, load, transmission, compression/decompression, and so on).&lt;br /&gt;
* It must support compression of the payload data.&lt;br /&gt;
* It must be usable independent of hardware architecture (x86, ARM, PowerPC, MIPS, and so on), operating system, endianness, float representation, and so on. All data fields must be properly specified (endianness, signedness, size, format).&lt;br /&gt;
* It must allow for sufficiently good performance for the common operations a frontend needs to perform on the data/file/stream (save, load, compress/uncompress, append, and so on) so that it doesn&amp;#039;t become the bottleneck. This is especially important for stream-oriented devices which could otherwise lose samples if the processing on the host side is not sufficiently fast ([[Saleae Logic]], [[Saleae Logic16]], [[IKALOGIC ScanaPLUS]], others).&lt;br /&gt;
* It should be able to handle run-time changes in the data streams (via meta packets on the session bus), e.g. changing samplerates, changing probes, etc. etc.&lt;br /&gt;
* It should have better compression properties than ZIP (e.g. using LZO or other algorithms, this is to be evaluated). What we ideally want out of the compression algorithm is:&lt;br /&gt;
** Good and relatively fast compression results at only moderate CPU usage.&lt;br /&gt;
** Very fast decompression (LZO is probably the best one here, as it&amp;#039;s specifically designed for this).&lt;br /&gt;
** Ideally, support for appending further data to already compressed data chunks (though this could be also implemented outside of the compression algorithm per se).&lt;br /&gt;
** Open-source license and OS portability. There should be an open-source library or code chunk for compression/uncompression and it should be widely available in Linux distros, and portable to Windows, Mac OS X, FreeBSD, Android, and so on.&lt;br /&gt;
&lt;br /&gt;
== Specification ==&lt;br /&gt;
&lt;br /&gt;
== UUIDs ==&lt;br /&gt;
&lt;br /&gt;
The format uses random [http://en.wikipedia.org/wiki/Universally_unique_identifier UUIDs] (version 4) as per [http://tools.ietf.org/html/rfc4122 RFC4122] in various places. These UUIDs are always 16 bytes long.&lt;br /&gt;
&lt;br /&gt;
A simple way to generate a random (version 4) UUID (ASCII and hex representation):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;python3 -c &amp;#039;import uuid; u = uuid.uuid4(); print(u); print(u.hex)&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 14c49f22-f08a-4ef2-b3d7-82ee16c3d531&lt;br /&gt;
 14c49f22f08a4ef2b3d782ee16c3d531&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File/stream format ==&lt;br /&gt;
&lt;br /&gt;
The format consists entirely of a stream of packets of various types.&lt;br /&gt;
&lt;br /&gt;
These packets can be either written to or read from a file, buffer, pipe, socket, or any other source/destination.&lt;br /&gt;
&lt;br /&gt;
== Packet format ==&lt;br /&gt;
&lt;br /&gt;
Every packet consists of four fields:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Short-UUID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| An ID (2 bytes, big-endian) that maps to a previously defined 16-byte packet type UUID. The Short-UUID values can range from 0x0002 to 0xffff, which allows for 65535 different packet types in a single file/stream. The Short-UUIDs 0x0000 and 0x0001 are special and cannot be used for &amp;quot;normal&amp;quot; packets, see below. The reason for using a (Short-)UUID here instead of some simple index number is to allow for clients to define and use their own special-purpose packet types as they see fit, without having to fear any conflicts with existing packet types (or packet types that someone else might add later).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Reference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| An ID (4 bytes, big-endian) that is assigned to this packet, so that other packets can reference it. Valid values: 0x00000001 - 0xffffffff. A value of 0x00000000 means that this packet doesn&amp;#039;t have a Reference-ID. Note that a (Short-)UUID specifies a certain &amp;#039;&amp;#039;type&amp;#039;&amp;#039; of packet, whereas the Reference-ID identifies a specific &amp;#039;&amp;#039;individual&amp;#039;&amp;#039; packet. For example, there can be multiple different packets (different Reference-ID) that are of the same type (same Short-UUID).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Length&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| The length of the data in this packet (number of bytes as an uint32_t; big-endian). The length does not include the length of the &amp;#039;&amp;#039;&amp;#039;Short-UUID&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Reference-ID&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;Length&amp;#039;&amp;#039;&amp;#039; field, only the length of the &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 0..n&lt;br /&gt;
| The actual payload data, max. 2^32 bytes (4GiB). For some packet types the &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field is optional (in that case it is completely omitted and the &amp;#039;&amp;#039;&amp;#039;Length&amp;#039;&amp;#039;&amp;#039; field is set to 0). The contents of the &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field are entirely dependent on (and vary with) the type of packet.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Using the common [http://en.wikipedia.org/wiki/Type-length-value type-length-value] idom for each packet allows clients to easily skip over (ignore) any packets they do not know how to handle, and instead continue on to checking/handling the next packet.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet with a 7-byte data field (Short-UUID is 0x55aa, Reference-ID is 0x00008ab2):&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 55 aa&lt;br /&gt;
| 00 00 8a b2&lt;br /&gt;
| 00 00 00 07&lt;br /&gt;
| 11 22 33 44 55 66 77&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet without a data field (Short-UUID is 0x55aa, Reference-ID is 0x00005f31):&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 55 aa&lt;br /&gt;
| 00 00 5f 31&lt;br /&gt;
| 00 00 00 00&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PACKET_MAP_UUIDS packet ==&lt;br /&gt;
&lt;br /&gt;
This is a special packet that is used to map 16-byte UUIDs to 2-byte Short-UUIDs.&lt;br /&gt;
&lt;br /&gt;
Since every packet has a 2-byte Short-UUID, PACKET_MAP_UUIDS must be the first packet in a file/stream, otherwise the client will not be able to interpret any other packets.&lt;br /&gt;
&lt;br /&gt;
However, PACKET_MAP_UUIDS can occur multiple times in a stream. Every time PACKET_MAP_UUIDS is seen, mappings that were not yet defined are added to the list of mappings, and mappings that already existed will be overwritten with the respective new mapping.&lt;br /&gt;
&lt;br /&gt;
Since PACKET_MAP_UUIDS is a packet itself, it also consists of the four common fields Short-UUID/Reference-ID/Length/Data. The Short-UUID of PACKET_MAP_UUIDS is always &amp;#039;&amp;#039;&amp;#039;0x0000&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Special Short-UUID for magic marker&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| A reserved special Short-UUID (2 bytes, big-endian) for the magic marker. Value: &amp;#039;&amp;#039;&amp;#039;0x0001&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Special UUID for magic marker&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 16&lt;br /&gt;
| This is a special marker that can be used by the &amp;#039;&amp;#039;&amp;#039;file&amp;#039;&amp;#039;&amp;#039; utility (and other tools) to detect the file format easily. Contents: &amp;#039;&amp;#039;&amp;#039;$sIgRoK$$sIgRoK$&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Short-UUID 1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The 2-byte Short-UUID (2 bytes, big-endian) with index 1 (valid values: 0x0002 to 0xffff) that will, from now on, map to the UUID specified below.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;UUID 1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 16&lt;br /&gt;
| The UUID with index 1 (binary representation, 16 bytes, big-endian) which identifies the type of packet (globally unique).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Short-UUID 2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The 2-byte Short-UUID with index 2 (valid values: 0x0002 to 0xffff ; big-endian) that will, from now on, map to the UUID specified below.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;UUID 2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 16&lt;br /&gt;
| The UUID with index 2 (binary representation, 16 bytes, big-endian) which identifies the type of packet (globally unique).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ...&lt;br /&gt;
| ...&lt;br /&gt;
| ...&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Important notes:&lt;br /&gt;
&lt;br /&gt;
* The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field contains a list of Short-UUID to UUID mappings. Since every such pair is 18 bytes in size, the &amp;#039;&amp;#039;&amp;#039;Length&amp;#039;&amp;#039;&amp;#039; field of PACKET_MAP_UUIDS can be used to deduce how many such mappings are contained in the &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field.&lt;br /&gt;
* The special &amp;quot;magic marker&amp;quot; fields (2 + 16 bytes) are required to be in every PACKET_MAP_UUIDS and are required to always be the first entries of PACKET_MAP_UUIDS. The file format can thus easily be detected by looking at the unique bytes 10-27 in the file (additionally, the file also always starts with the two bytes 0x00 0x00).&lt;br /&gt;
* The special Short-UUID 0x0000 must not be used in any mapping, it is reserved for PACKET_MAP_UUIDS itself.&lt;br /&gt;
* The special Short-UUID 0x0001 must not be used in any mapping, it is reserved for the special &amp;quot;magic marker&amp;quot;, see above.&lt;br /&gt;
* There is no guarantee of any kind about which Short-UUIDs will be mapped (and to what). Specifically, a client can &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; assume that Short-UUIDs start at 0x0002, and it can &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; assume that Short-UUIDs are ordered in any way. The Short-UUIDs can have a completely random order and they can also have gaps.&lt;br /&gt;
* Mappings are generally not static in nature. Every additional PACKET_MAP_UUIDS that occurs can dynamically add or overwrite/change mappings, for example.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 00&amp;amp;nbsp;00&lt;br /&gt;
| &amp;#039;&amp;#039;xx&amp;amp;nbsp;xx&amp;amp;nbsp;xx&amp;amp;nbsp;xx&amp;#039;&amp;#039;&lt;br /&gt;
| 00&amp;amp;nbsp;00&amp;amp;nbsp;00&amp;amp;nbsp;48&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;00 01&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;24 73 49 67 52 6f 4b 24 24 73 49 67 52 6f 4b 24&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;77 a1&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;5a 17 72 eb 28 54 48 a8 a4 1c 73 97 d7 e9 22 3d&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;00 06&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;59 de f3 30 53 6a 46 b1 8e dd 62 f2 19 5d 1c 95&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;a3 9f&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;ec 6b d7 63 c8 79 4a a7 a9 7a 7e df 0e 68 af c7&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The above PACKET_MAP_UUIDS maps three different UUIDs to the Short-UUIDs 0x77a1, 0x0006 and 0xa39f.&lt;br /&gt;
&lt;br /&gt;
== sigrok packets ==&lt;br /&gt;
&lt;br /&gt;
The following packets are currently defined for use in projects hosted on [http://sigrok.org sigrok.org].&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;names&amp;quot; (e.g. &amp;quot;SIGROK_PACKET_LOGIC&amp;quot;) are for documentation purposes only, the (Short-)UUIDs are what actually matters. The names are prefixed with SIGROK_ to make it clear that other 3rd-party software may define their own additional packet types with arbitrary contents and for arbitrary purposes.&lt;br /&gt;
&lt;br /&gt;
One of the reasons for splitting up different properties into many small packets (SIGROK_PACKET_CHANNEL_TYPE, SIGROK_PACKET_CHANNEL_NAME, and so on) is that this allows for future additions (of e.g. various other channel properties), without the need to change an existing packet format. Additional packets for e.g. the channel color (for use in UIs) that also back-reference a SIGROK_PACKET_CHANNEL packet can be added without the need for protocol/format changes or version field bumps.&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a device.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;94aa863d-bb58-4d79-b944-ab9dd30eecdf&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field is empty.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 00&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE_VENDOR_NAME ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a device vendor name.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;c09c7a5c-8566-42ec-8fde-7737436b0e64&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Backreference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| A Reference-ID (4 bytes, big-endian) referencing a previously defined device (SIGROK_PACKET_DEVICE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Vendor name length&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The length in number of bytes of the vendor name (2 bytes, big-endian).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Vendor name&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| n&lt;br /&gt;
| The vendor name (UTF-8 string).&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The following packet defines a vendor name &amp;quot;Saleae&amp;quot; (with the Reference-ID &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;). The Backreference-ID &amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039; references a previously defined device.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 0c&lt;br /&gt;
| &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;00 06&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;Saleae&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE_MODEL_NAME ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a device model name.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;88058d2f-225e-4ee6-b915-9fd009944464&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Backreference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| A Reference-ID (4 bytes, big-endian) referencing a previously defined device (SIGROK_PACKET_DEVICE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Model name length&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The length in number of bytes of the model name (2 bytes, big-endian).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Model name&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| n&lt;br /&gt;
| The model name (UTF-8 string).&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The following packet defines a model name &amp;quot;Logic16&amp;quot; (with the Reference-ID &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;). The Backreference-ID &amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039; references a previously defined device.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 0d&lt;br /&gt;
| &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;00 07&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;Logic16&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE_VERSION ===&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE_SERIAL_NUMBER ===&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE_CONNECTION_ID ===&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_CHANNEL_GROUP ===&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_CHANNEL_GROUP_NAME ===&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_CHANNEL ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a channel.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;1325b595-0d5e-40a4-ac4d-36e89224dcb9&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Backreference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| A Reference-ID (4 bytes, big-endian) referencing a previously defined device (SIGROK_PACKET_DEVICE) that the channel belongs to.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 04&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_CHANNEL_TYPE ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a channel type.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;6b12bdcc-02c8-493a-a89d-662ee9d1a34d&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Backreference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| A Reference-ID (4 bytes, big-endian) referencing a previously defined channel (SIGROK_PACKET_CHANNEL).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Channel type&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 1&lt;br /&gt;
| The type of the back-referenced channel. &amp;#039;&amp;#039;&amp;#039;0x01&amp;#039;&amp;#039;&amp;#039;: Logic, &amp;#039;&amp;#039;&amp;#039;0x02&amp;#039;&amp;#039;&amp;#039;: Analog.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 05&lt;br /&gt;
| &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_CHANNEL_NAME ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a channel name.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;730ba9b7-638a-4b79-94dc-b9beb0735acf&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Backreference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| A Reference-ID (4 bytes, big-endian) referencing a previously defined channel (SIGROK_PACKET_CHANNEL).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Channel name length&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The length in number of bytes of the channel name (2 bytes, big-endian).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Channel name&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| n&lt;br /&gt;
| The channel name (UTF-8 string).&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The following packet defines a channel name &amp;quot;CH1&amp;quot; (with the Reference-ID &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;). The Backreference-ID &amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039; references a previously defined channel for which this name is to apply.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 09&lt;br /&gt;
| &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;00 03&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;CH1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_LOGIC ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to store/transmit (only) digital samples, usually from a logic analyzer.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;2236202e-9ee7-4bc6-81f6-56b4e6e029ba&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Version&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The version of the SIGROK_PACKET_LOGIC format in binary format (big-endian). Current version: &amp;#039;&amp;#039;&amp;#039;0x0001&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Payload format Short-UUID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| A Short-UUID (2 bytes, big-endian) which identifies a certain payload format.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Compression scheme Short-UUID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| A Short-UUID (2 bytes, big-endian) which identifies a certain compression scheme that is applied to the payload data.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Payload length&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| The length of the actual payload data in this SIGROK_PACKET_LOGIC packet (in number of bytes). The length only includes the &amp;#039;&amp;#039;&amp;#039;Payload&amp;#039;&amp;#039;&amp;#039; field. The length is given as an uint32_t number (big-endian).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Payload&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 0..n&lt;br /&gt;
| The actual payload data, i.e. logic analyzer samples in the specified payload format, using the specified compression scheme.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
(Packet type SIGROK_PACKET_LOGIC Short-UUID &amp;#039;&amp;#039;0xuuuu&amp;#039;&amp;#039;, Reference-ID &amp;#039;&amp;#039;0xtttttttt&amp;#039;&amp;#039;, 0x12 bytes packet data, SIGROK_PACKET_LOGIC version 0x0001, SIGROK_PAYLOAD_FORMAT_LOGIC_V1 payload format Short-UUID &amp;#039;&amp;#039;0xvvvv&amp;#039;&amp;#039;, SIGROK_COMPRESSION_NONE compression scheme Short-UUID &amp;#039;&amp;#039;0xwwww&amp;#039;&amp;#039;, 8 bytes of logic analyzer payload (uncompressed))&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 12&lt;br /&gt;
| &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;00 01&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;vv vv&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;&amp;#039;&amp;#039;ww ww&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;00 00 00 08&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;11 22 33 44 55 66 77 88&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SA: How does the mapping to the individual channels work? Do we need to backreference a channel group here that declares e.g. which 8 logic channels make up one such logic packet and in which order they are stored?&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_ANALOG ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to store/transmit (only) analog samples, e.g. from a multimeter, oscilloscope, sound level meter, or any other source for analog data.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;59def330-536a-46b1-8edd-62f2195d1c95&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Details yet to be defined.&lt;br /&gt;
&lt;br /&gt;
== List of known packet types ==&lt;br /&gt;
&lt;br /&gt;
This is a short overview of known packet types that are in use. This includes the packet types used in projects hosted at [http://sigrok.org sigrok.org], as well as pointers to packet types that other (3rd-party) software is known to use.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!UUID&lt;br /&gt;
!Packet type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 94aa863d-bb58-4d79-b944-ab9dd30eecdf&lt;br /&gt;
| SIGROK_PACKET_DEVICE&lt;br /&gt;
| [[File format:sigrok#SIGROK_PACKET_DEVICE|See above]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 1325b595-0d5e-40a4-ac4d-36e89224dcb9&lt;br /&gt;
| SIGROK_PACKET_CHANNEL&lt;br /&gt;
| [[File format:sigrok#SIGROK_PACKET_CHANNEL|See above]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 5a1772eb-2854-48a8-a41c-7397d7e9223d&lt;br /&gt;
| SIGROK_PACKET_LOGIC&lt;br /&gt;
| [[File format:sigrok#SIGROK_PACKET_LOGIC|See above]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 59def330-536a-46b1-8edd-62f2195d1c95&lt;br /&gt;
| SIGROK_PACKET_ANALOG&lt;br /&gt;
| [[File format:sigrok#SIGROK_PACKET_ANALOG|See above]].&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== List of known payload formats ==&lt;br /&gt;
&lt;br /&gt;
This is a short overview of known payload formats that are in use. This includes the payload formats used in projects hosted at [http://sigrok.org sigrok.org], as well as pointers to payload formats that other (3rd-party) software is known to use.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!UUID&lt;br /&gt;
!Payload format&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;white-space: nowrap;&amp;quot; | d2964f38-8b13-4570-9add-add5678a0394&lt;br /&gt;
| SIGROK_PAYLOAD_FORMAT_LOGIC_V1&lt;br /&gt;
| This payload format can only store digital samples from a logic analyzer (0/1 values for a certain channel/probe/pin). It is basically identical to the format that was used in the previous ZIP-based file format versions. Details are yet to be defined.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 79e7cfd1-0f56-4d5e-968a-b66fdbdff624&lt;br /&gt;
| SIGROK_PAYLOAD_FORMAT_ANALOG_V1&lt;br /&gt;
| A certain type of payload format that can store (only) analog samples of a certain number of analog channels. Details are yet to be defined.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== List of known compression schemes ==&lt;br /&gt;
&lt;br /&gt;
This is a short overview of known compression schemes that are in use. This includes the schemes used in projects hosted at [http://sigrok.org sigrok.org], as well as pointers to schemes that other (3rd-party) software is known to use.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!UUID&lt;br /&gt;
!Compression scheme&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ec6bd763-c879-4aa7-a97a-7edf0e68afc7&lt;br /&gt;
| SIGROK_COMPRESSION_NONE&lt;br /&gt;
| No compression whatsoever is used.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| acd2e249-5c4d-426d-96ae-ded5b6020e6f&lt;br /&gt;
| SIGROK_COMPRESSION_RLE_V1&lt;br /&gt;
| A certain type of RLE-based compression is used. Details are yet to be defined.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* JH: Do we need info about interleaving here? We could insist that all channels be de-intereleaved, or add support for interleaved streams.&lt;br /&gt;
* JH: Would could add support for device compression schemes. It may sometimes be desirable to be able to pass the device stream straight into the file.&lt;br /&gt;
&lt;br /&gt;
== Futher notes and ideas to consider ==&lt;br /&gt;
&lt;br /&gt;
* SA: Currently, the sample rate isn&amp;#039;t declared anywhere. Do we do this on a per-device or per-channel basis? My guts tell me that it&amp;#039;s probably wiser to do it on a per-channel basis, even if all channels have the same sample rate.&lt;br /&gt;
* Data should be encoded in a data aware way. This would give greater compression:&lt;br /&gt;
** Logic Data is most efficient stored in RLE+Huffman or Golomb coding. e.g. a clock signal may compress to one bit per edge.&lt;br /&gt;
*** JH: I wonder if we can do even better by XOR-ing the data with some kind of frequency tracking oscillator. This would convert a square wave into mostly continuous 0s or 1s, with occasional pulses where jitter occurs.&lt;br /&gt;
*** JH: This kind of thing is best prototyped with a script e.g python + the bitset library.&lt;br /&gt;
** FLAC (libflac) or a FLAC inspired codec (linear predicition) is probably as good as it gets for lossless analog data encoding.&lt;br /&gt;
* If data is stored in a format specific way, it would be best to store it as a series of stream-blocks, similar to how video containers work. Would it be possible to simply leverage a video container such as OGG? IIRC this contains headers to declare metadata about each stream, then a series of timestamped stream blocks interleaved together. The time stamp is a format specific number... for audio: the sample number, for video: the frame number, so sigrok formats can easily leverage this.&lt;br /&gt;
** Similarly RTP is a rather natural protocol for sigrok network streaming.&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File_format:Sigrok/v3&amp;diff=12863</id>
		<title>File format:Sigrok/v3</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File_format:Sigrok/v3&amp;diff=12863"/>
		<updated>2017-10-07T23:32:47Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: /* Packet format */ missed a LE-&amp;gt;BE change for Length field&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:File format:sigrok/v3}}&lt;br /&gt;
This page describes the proposed file/stream format (v3) for storing and transmitting sigrok related data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color:#ff6666&amp;quot;&amp;gt;&lt;br /&gt;
NOTE: This is work in progress and has not yet been implemented!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
&lt;br /&gt;
The previous [[File format:sigrok/v2|sigrok session]] file format (version 2) is a ZIP file containing multiple files (some metadata files and data files containing the actual samples). This works fine, but it also has some issues:&lt;br /&gt;
&lt;br /&gt;
* In order to get to the data you want, you need to decompress the whole file.&lt;br /&gt;
* Appending to a file is not possible easily (and it&amp;#039;s not efficient).&lt;br /&gt;
* It doesn&amp;#039;t support storing additional information for frontends (channel colors, and so on).&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
The following list highlights some of the goals of the new file format (v3):&lt;br /&gt;
&lt;br /&gt;
* It must be able to store&lt;br /&gt;
** arbitrary data (logic samples, and/or analog samples, and/or protocol decoder data, and more), as well as&lt;br /&gt;
** arbitrary meta-/config-data and other extra information that may be useful to frontends (UI state data, user-configured probe colors, names, positions, and so on).&lt;br /&gt;
* It must support and facilitate stream-oriented processing (save, load, transmission, compression/decompression, and so on).&lt;br /&gt;
* It must support compression of the payload data.&lt;br /&gt;
* It must be usable independent of hardware architecture (x86, ARM, PowerPC, MIPS, and so on), operating system, endianness, float representation, and so on. All data fields must be properly specified (endianness, signedness, size, format).&lt;br /&gt;
* It must allow for sufficiently good performance for the common operations a frontend needs to perform on the data/file/stream (save, load, compress/uncompress, append, and so on) so that it doesn&amp;#039;t become the bottleneck. This is especially important for stream-oriented devices which could otherwise lose samples if the processing on the host side is not sufficiently fast ([[Saleae Logic]], [[Saleae Logic16]], [[IKALOGIC ScanaPLUS]], others).&lt;br /&gt;
* It should be able to handle run-time changes in the data streams (via meta packets on the session bus), e.g. changing samplerates, changing probes, etc. etc.&lt;br /&gt;
* It should have better compression properties than ZIP (e.g. using LZO or other algorithms, this is to be evaluated). What we ideally want out of the compression algorithm is:&lt;br /&gt;
** Good and relatively fast compression results at only moderate CPU usage.&lt;br /&gt;
** Very fast decompression (LZO is probably the best one here, as it&amp;#039;s specifically designed for this).&lt;br /&gt;
** Ideally, support for appending further data to already compressed data chunks (though this could be also implemented outside of the compression algorithm per se).&lt;br /&gt;
** Open-source license and OS portability. There should be an open-source library or code chunk for compression/uncompression and it should be widely available in Linux distros, and portable to Windows, Mac OS X, FreeBSD, Android, and so on.&lt;br /&gt;
&lt;br /&gt;
== Specification ==&lt;br /&gt;
&lt;br /&gt;
== UUIDs ==&lt;br /&gt;
&lt;br /&gt;
The format uses random [http://en.wikipedia.org/wiki/Universally_unique_identifier UUIDs] (version 4) as per [http://tools.ietf.org/html/rfc4122 RFC4122] in various places. These UUIDs are always 16 bytes long.&lt;br /&gt;
&lt;br /&gt;
A simple way to generate a random (version 4) UUID (ASCII and hex representation):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;python3 -c &amp;#039;import uuid; u = uuid.uuid4(); print(u); print(u.hex)&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 14c49f22-f08a-4ef2-b3d7-82ee16c3d531&lt;br /&gt;
 14c49f22f08a4ef2b3d782ee16c3d531&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File/stream format ==&lt;br /&gt;
&lt;br /&gt;
The format consists entirely of a stream of packets of various types.&lt;br /&gt;
&lt;br /&gt;
These packets can be either written to or read from a file, buffer, pipe, socket, or any other source/destination.&lt;br /&gt;
&lt;br /&gt;
== Packet format ==&lt;br /&gt;
&lt;br /&gt;
Every packet consists of four fields:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Short-UUID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| An ID (2 bytes, big-endian) that maps to a previously defined 16-byte packet type UUID. The Short-UUID values can range from 0x0002 to 0xffff, which allows for 65535 different packet types in a single file/stream. The Short-UUIDs 0x0000 and 0x0001 are special and cannot be used for &amp;quot;normal&amp;quot; packets, see below. The reason for using a (Short-)UUID here instead of some simple index number is to allow for clients to define and use their own special-purpose packet types as they see fit, without having to fear any conflicts with existing packet types (or packet types that someone else might add later).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Reference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| An ID (4 bytes, big-endian) that is assigned to this packet, so that other packets can reference it. Valid values: 0x00000001 - 0xffffffff. A value of 0x00000000 means that this packet doesn&amp;#039;t have a Reference-ID. Note that a (Short-)UUID specifies a certain &amp;#039;&amp;#039;type&amp;#039;&amp;#039; of packet, whereas the Reference-ID identifies a specific &amp;#039;&amp;#039;individual&amp;#039;&amp;#039; packet. For example, there can be multiple different packets (different Reference-ID) that are of the same type (same Short-UUID).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Length&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| The length of the data in this packet (number of bytes as an uint32_t; big-endian). The length does not include the length of the &amp;#039;&amp;#039;&amp;#039;Short-UUID&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Reference-ID&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;Length&amp;#039;&amp;#039;&amp;#039; field, only the length of the &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 0..n&lt;br /&gt;
| The actual payload data, max. 2^32 bytes (4GiB). For some packet types the &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field is optional (in that case it is completely omitted and the &amp;#039;&amp;#039;&amp;#039;Length&amp;#039;&amp;#039;&amp;#039; field is set to 0). The contents of the &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field are entirely dependent on (and vary with) the type of packet.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Using the common [http://en.wikipedia.org/wiki/Type-length-value type-length-value] idom for each packet allows clients to easily skip over (ignore) any packets they do not know how to handle, and instead continue on to checking/handling the next packet.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet with a 7-byte data field (Short-UUID is 0x55aa, Reference-ID is 0x00008ab2):&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 55 aa&lt;br /&gt;
| 00 00 8a b2&lt;br /&gt;
| 00 00 00 07&lt;br /&gt;
| 11 22 33 44 55 66 77&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet without a data field (Short-UUID is 0x55aa, Reference-ID is 0x00005f31):&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 55 aa&lt;br /&gt;
| 00 00 5f 31&lt;br /&gt;
| 00 00 00 00&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PACKET_MAP_UUIDS packet ==&lt;br /&gt;
&lt;br /&gt;
This is a special packet that is used to map 16-byte UUIDs to 2-byte Short-UUIDs.&lt;br /&gt;
&lt;br /&gt;
Since every packet has a 2-byte Short-UUID, PACKET_MAP_UUIDS must be the first packet in a file/stream, otherwise the client will not be able to interpret any other packets.&lt;br /&gt;
&lt;br /&gt;
However, PACKET_MAP_UUIDS can occur multiple times in a stream. Every time PACKET_MAP_UUIDS is seen, mappings that were not yet defined are added to the list of mappings, and mappings that already existed will be overwritten with the respective new mapping.&lt;br /&gt;
&lt;br /&gt;
Since PACKET_MAP_UUIDS is a packet itself, it also consists of the four common fields Short-UUID/Reference-ID/Length/Data. The Short-UUID of PACKET_MAP_UUIDS is always &amp;#039;&amp;#039;&amp;#039;0x0000&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Special Short-UUID for magic marker&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| A reserved special Short-UUID (2 bytes, big-endian) for the magic marker. Value: &amp;#039;&amp;#039;&amp;#039;0x0001&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Special UUID for magic marker&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 16&lt;br /&gt;
| This is a special marker that can be used by the &amp;#039;&amp;#039;&amp;#039;file&amp;#039;&amp;#039;&amp;#039; utility (and other tools) to detect the file format easily. Contents: &amp;#039;&amp;#039;&amp;#039;$sIgRoK$$sIgRoK$&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Short-UUID 1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The 2-byte Short-UUID (2 bytes, big-endian) with index 1 (valid values: 0x0002 to 0xffff) that will, from now on, map to the UUID specified below.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;UUID 1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 16&lt;br /&gt;
| The UUID with index 1 (binary representation, 16 bytes, big-endian) which identifies the type of packet (globally unique).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Short-UUID 2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The 2-byte Short-UUID with index 2 (valid values: 0x0002 to 0xffff ; big-endian) that will, from now on, map to the UUID specified below.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;UUID 2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 16&lt;br /&gt;
| The UUID with index 2 (binary representation, 16 bytes, big-endian) which identifies the type of packet (globally unique).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ...&lt;br /&gt;
| ...&lt;br /&gt;
| ...&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Important notes:&lt;br /&gt;
&lt;br /&gt;
* The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field contains a list of Short-UUID to UUID mappings. Since every such pair is 18 bytes in size, the &amp;#039;&amp;#039;&amp;#039;Length&amp;#039;&amp;#039;&amp;#039; field of PACKET_MAP_UUIDS can be used to deduce how many such mappings are contained in the &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field.&lt;br /&gt;
* The special &amp;quot;magic marker&amp;quot; fields (2 + 16 bytes) are required to be in every PACKET_MAP_UUIDS and are required to always be the first entries of PACKET_MAP_UUIDS. The file format can thus easily be detected by looking at the unique bytes 10-27 in the file (additionally, the file also always starts with the two bytes 0x00 0x00).&lt;br /&gt;
* The special Short-UUID 0x0000 must not be used in any mapping, it is reserved for PACKET_MAP_UUIDS itself.&lt;br /&gt;
* The special Short-UUID 0x0001 must not be used in any mapping, it is reserved for the special &amp;quot;magic marker&amp;quot;, see above.&lt;br /&gt;
* There is no guarantee of any kind about which Short-UUIDs will be mapped (and to what). Specifically, a client can &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; assume that Short-UUIDs start at 0x0002, and it can &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; assume that Short-UUIDs are ordered in any way. The Short-UUIDs can have a completely random order and they can also have gaps.&lt;br /&gt;
* Mappings are generally not static in nature. Every additional PACKET_MAP_UUIDS that occurs can dynamically add or overwrite/change mappings, for example.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 00&amp;amp;nbsp;00&lt;br /&gt;
| &amp;#039;&amp;#039;xx&amp;amp;nbsp;xx&amp;amp;nbsp;xx&amp;amp;nbsp;xx&amp;#039;&amp;#039;&lt;br /&gt;
| 00&amp;amp;nbsp;00&amp;amp;nbsp;00&amp;amp;nbsp;48&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;00 01&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;24 73 49 67 52 6f 4b 24 24 73 49 67 52 6f 4b 24&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;77 a1&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;5a 17 72 eb 28 54 48 a8 a4 1c 73 97 d7 e9 22 3d&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;00 06&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;59 de f3 30 53 6a 46 b1 8e dd 62 f2 19 5d 1c 95&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;a3 9f&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;ec 6b d7 63 c8 79 4a a7 a9 7a 7e df 0e 68 af c7&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The above PACKET_MAP_UUIDS maps three different UUIDs to the Short-UUIDs 0x77a1, 0x0006 and 0xa39f.&lt;br /&gt;
&lt;br /&gt;
== sigrok packets ==&lt;br /&gt;
&lt;br /&gt;
The following packets are currently defined for use in projects hosted on [http://sigrok.org sigrok.org].&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;names&amp;quot; (e.g. &amp;quot;SIGROK_PACKET_LOGIC&amp;quot;) are for documentation purposes only, the (Short-)UUIDs are what actually matters. The names are prefixed with SIGROK_ to make it clear that other 3rd-party software may define their own additional packet types with arbitrary contents and for arbitrary purposes.&lt;br /&gt;
&lt;br /&gt;
One of the reasons for splitting up different properties into many small packets (SIGROK_PACKET_CHANNEL_TYPE, SIGROK_PACKET_CHANNEL_NAME, and so on) is that this allows for future additions (of e.g. various other channel properties), without the need to change an existing packet format. Additional packets for e.g. the channel color (for use in UIs) that also back-reference a SIGROK_PACKET_CHANNEL packet can be added without the need for protocol/format changes or version field bumps.&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a device.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;94aa863d-bb58-4d79-b944-ab9dd30eecdf&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field is empty.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 00&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE_VENDOR_NAME ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a device vendor name.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;c09c7a5c-8566-42ec-8fde-7737436b0e64&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Backreference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| A Reference-ID (4 bytes, little-endian) referencing a previously defined device (SIGROK_PACKET_DEVICE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Vendor name length&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The length in number of bytes of the vendor name (2 bytes, little-endian).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Vendor name&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| n&lt;br /&gt;
| The vendor name (UTF-8 string).&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The following packet defines a vendor name &amp;quot;Saleae&amp;quot; (with the Reference-ID &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;). The Backreference-ID &amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039; references a previously defined device.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 0c&lt;br /&gt;
| &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;00 06&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;Saleae&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE_MODEL_NAME ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a device model name.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;88058d2f-225e-4ee6-b915-9fd009944464&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Backreference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| A Reference-ID (4 bytes, little-endian) referencing a previously defined device (SIGROK_PACKET_DEVICE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Model name length&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The length in number of bytes of the model name (2 bytes, little-endian).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Model name&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| n&lt;br /&gt;
| The model name (UTF-8 string).&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The following packet defines a model name &amp;quot;Logic16&amp;quot; (with the Reference-ID &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;). The Backreference-ID &amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039; references a previously defined device.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 0d&lt;br /&gt;
| &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;00 07&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;Logic16&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE_VERSION ===&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE_SERIAL_NUMBER ===&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE_CONNECTION_ID ===&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_CHANNEL_GROUP ===&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_CHANNEL_GROUP_NAME ===&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_CHANNEL ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a channel.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;1325b595-0d5e-40a4-ac4d-36e89224dcb9&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Backreference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| A Reference-ID (4 bytes, little-endian) referencing a previously defined device (SIGROK_PACKET_DEVICE) that the channel belongs to.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 04&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_CHANNEL_TYPE ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a channel type.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;6b12bdcc-02c8-493a-a89d-662ee9d1a34d&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Backreference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| A Reference-ID (4 bytes, little-endian) referencing a previously defined channel (SIGROK_PACKET_CHANNEL).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Channel type&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 1&lt;br /&gt;
| The type of the back-referenced channel. &amp;#039;&amp;#039;&amp;#039;0x01&amp;#039;&amp;#039;&amp;#039;: Logic, &amp;#039;&amp;#039;&amp;#039;0x02&amp;#039;&amp;#039;&amp;#039;: Analog.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 05&lt;br /&gt;
| &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_CHANNEL_NAME ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a channel name.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;730ba9b7-638a-4b79-94dc-b9beb0735acf&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Backreference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| A Reference-ID (4 bytes, little-endian) referencing a previously defined channel (SIGROK_PACKET_CHANNEL).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Channel name length&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The length in number of bytes of the channel name (2 bytes, little-endian).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Channel name&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| n&lt;br /&gt;
| The channel name (UTF-8 string).&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The following packet defines a channel name &amp;quot;CH1&amp;quot; (with the Reference-ID &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;). The Backreference-ID &amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039; references a previously defined channel for which this name is to apply.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 09&lt;br /&gt;
| &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;00 03&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;CH1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_LOGIC ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to store/transmit (only) digital samples, usually from a logic analyzer.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;2236202e-9ee7-4bc6-81f6-56b4e6e029ba&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Version&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The version of the SIGROK_PACKET_LOGIC format in binary format (little-endian). Current version: &amp;#039;&amp;#039;&amp;#039;0x0001&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Payload format Short-UUID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| A Short-UUID (2 bytes, little-endian) which identifies a certain payload format.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Compression scheme Short-UUID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| A Short-UUID (2 bytes, little-endian) which identifies a certain compression scheme that is applied to the payload data.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Payload length&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| The length of the actual payload data in this SIGROK_PACKET_LOGIC packet (in number of bytes). The length only includes the &amp;#039;&amp;#039;&amp;#039;Payload&amp;#039;&amp;#039;&amp;#039; field. The length is given as an uint32_t number (little-endian).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Payload&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 0..n&lt;br /&gt;
| The actual payload data, i.e. logic analyzer samples in the specified payload format, using the specified compression scheme.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
(Packet type SIGROK_PACKET_LOGIC Short-UUID &amp;#039;&amp;#039;0xuuuu&amp;#039;&amp;#039;, Reference-ID &amp;#039;&amp;#039;0xtttttttt&amp;#039;&amp;#039;, 0x12 bytes packet data, SIGROK_PACKET_LOGIC version 0x0001, SIGROK_PAYLOAD_FORMAT_LOGIC_V1 payload format Short-UUID &amp;#039;&amp;#039;0xvvvv&amp;#039;&amp;#039;, SIGROK_COMPRESSION_NONE compression scheme Short-UUID &amp;#039;&amp;#039;0xwwww&amp;#039;&amp;#039;, 8 bytes of logic analyzer payload (uncompressed))&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 12&lt;br /&gt;
| &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;00 01&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;vv vv&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;&amp;#039;&amp;#039;ww ww&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;00 00 00 08&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;11 22 33 44 55 66 77 88&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SA: How does the mapping to the individual channels work? Do we need to backreference a channel group here that declares e.g. which 8 logic channels make up one such logic packet and in which order they are stored?&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_ANALOG ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to store/transmit (only) analog samples, e.g. from a multimeter, oscilloscope, sound level meter, or any other source for analog data.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;59def330-536a-46b1-8edd-62f2195d1c95&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Details yet to be defined.&lt;br /&gt;
&lt;br /&gt;
== List of known packet types ==&lt;br /&gt;
&lt;br /&gt;
This is a short overview of known packet types that are in use. This includes the packet types used in projects hosted at [http://sigrok.org sigrok.org], as well as pointers to packet types that other (3rd-party) software is known to use.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!UUID&lt;br /&gt;
!Packet type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 94aa863d-bb58-4d79-b944-ab9dd30eecdf&lt;br /&gt;
| SIGROK_PACKET_DEVICE&lt;br /&gt;
| [[File format:sigrok#SIGROK_PACKET_DEVICE|See above]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 1325b595-0d5e-40a4-ac4d-36e89224dcb9&lt;br /&gt;
| SIGROK_PACKET_CHANNEL&lt;br /&gt;
| [[File format:sigrok#SIGROK_PACKET_CHANNEL|See above]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 5a1772eb-2854-48a8-a41c-7397d7e9223d&lt;br /&gt;
| SIGROK_PACKET_LOGIC&lt;br /&gt;
| [[File format:sigrok#SIGROK_PACKET_LOGIC|See above]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 59def330-536a-46b1-8edd-62f2195d1c95&lt;br /&gt;
| SIGROK_PACKET_ANALOG&lt;br /&gt;
| [[File format:sigrok#SIGROK_PACKET_ANALOG|See above]].&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== List of known payload formats ==&lt;br /&gt;
&lt;br /&gt;
This is a short overview of known payload formats that are in use. This includes the payload formats used in projects hosted at [http://sigrok.org sigrok.org], as well as pointers to payload formats that other (3rd-party) software is known to use.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!UUID&lt;br /&gt;
!Payload format&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;white-space: nowrap;&amp;quot; | d2964f38-8b13-4570-9add-add5678a0394&lt;br /&gt;
| SIGROK_PAYLOAD_FORMAT_LOGIC_V1&lt;br /&gt;
| This payload format can only store digital samples from a logic analyzer (0/1 values for a certain channel/probe/pin). It is basically identical to the format that was used in the previous ZIP-based file format versions. Details are yet to be defined.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 79e7cfd1-0f56-4d5e-968a-b66fdbdff624&lt;br /&gt;
| SIGROK_PAYLOAD_FORMAT_ANALOG_V1&lt;br /&gt;
| A certain type of payload format that can store (only) analog samples of a certain number of analog channels. Details are yet to be defined.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== List of known compression schemes ==&lt;br /&gt;
&lt;br /&gt;
This is a short overview of known compression schemes that are in use. This includes the schemes used in projects hosted at [http://sigrok.org sigrok.org], as well as pointers to schemes that other (3rd-party) software is known to use.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!UUID&lt;br /&gt;
!Compression scheme&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ec6bd763-c879-4aa7-a97a-7edf0e68afc7&lt;br /&gt;
| SIGROK_COMPRESSION_NONE&lt;br /&gt;
| No compression whatsoever is used.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| acd2e249-5c4d-426d-96ae-ded5b6020e6f&lt;br /&gt;
| SIGROK_COMPRESSION_RLE_V1&lt;br /&gt;
| A certain type of RLE-based compression is used. Details are yet to be defined.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* JH: Do we need info about interleaving here? We could insist that all channels be de-intereleaved, or add support for interleaved streams.&lt;br /&gt;
* JH: Would could add support for device compression schemes. It may sometimes be desirable to be able to pass the device stream straight into the file.&lt;br /&gt;
&lt;br /&gt;
== Futher notes and ideas to consider ==&lt;br /&gt;
&lt;br /&gt;
* SA: Currently, the sample rate isn&amp;#039;t declared anywhere. Do we do this on a per-device or per-channel basis? My guts tell me that it&amp;#039;s probably wiser to do it on a per-channel basis, even if all channels have the same sample rate.&lt;br /&gt;
* Data should be encoded in a data aware way. This would give greater compression:&lt;br /&gt;
** Logic Data is most efficient stored in RLE+Huffman or Golomb coding. e.g. a clock signal may compress to one bit per edge.&lt;br /&gt;
*** JH: I wonder if we can do even better by XOR-ing the data with some kind of frequency tracking oscillator. This would convert a square wave into mostly continuous 0s or 1s, with occasional pulses where jitter occurs.&lt;br /&gt;
*** JH: This kind of thing is best prototyped with a script e.g python + the bitset library.&lt;br /&gt;
** FLAC (libflac) or a FLAC inspired codec (linear predicition) is probably as good as it gets for lossless analog data encoding.&lt;br /&gt;
* If data is stored in a format specific way, it would be best to store it as a series of stream-blocks, similar to how video containers work. Would it be possible to simply leverage a video container such as OGG? IIRC this contains headers to declare metadata about each stream, then a series of timestamped stream blocks interleaved together. The time stamp is a format specific number... for audio: the sample number, for video: the frame number, so sigrok formats can easily leverage this.&lt;br /&gt;
** Similarly RTP is a rather natural protocol for sigrok network streaming.&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File_format:Sigrok/v3&amp;diff=12862</id>
		<title>File format:Sigrok/v3</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File_format:Sigrok/v3&amp;diff=12862"/>
		<updated>2017-10-07T23:29:28Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: /* PACKET_MAP_UUIDS packet */ little -&amp;gt; big endian&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:File format:sigrok/v3}}&lt;br /&gt;
This page describes the proposed file/stream format (v3) for storing and transmitting sigrok related data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color:#ff6666&amp;quot;&amp;gt;&lt;br /&gt;
NOTE: This is work in progress and has not yet been implemented!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
&lt;br /&gt;
The previous [[File format:sigrok/v2|sigrok session]] file format (version 2) is a ZIP file containing multiple files (some metadata files and data files containing the actual samples). This works fine, but it also has some issues:&lt;br /&gt;
&lt;br /&gt;
* In order to get to the data you want, you need to decompress the whole file.&lt;br /&gt;
* Appending to a file is not possible easily (and it&amp;#039;s not efficient).&lt;br /&gt;
* It doesn&amp;#039;t support storing additional information for frontends (channel colors, and so on).&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
The following list highlights some of the goals of the new file format (v3):&lt;br /&gt;
&lt;br /&gt;
* It must be able to store&lt;br /&gt;
** arbitrary data (logic samples, and/or analog samples, and/or protocol decoder data, and more), as well as&lt;br /&gt;
** arbitrary meta-/config-data and other extra information that may be useful to frontends (UI state data, user-configured probe colors, names, positions, and so on).&lt;br /&gt;
* It must support and facilitate stream-oriented processing (save, load, transmission, compression/decompression, and so on).&lt;br /&gt;
* It must support compression of the payload data.&lt;br /&gt;
* It must be usable independent of hardware architecture (x86, ARM, PowerPC, MIPS, and so on), operating system, endianness, float representation, and so on. All data fields must be properly specified (endianness, signedness, size, format).&lt;br /&gt;
* It must allow for sufficiently good performance for the common operations a frontend needs to perform on the data/file/stream (save, load, compress/uncompress, append, and so on) so that it doesn&amp;#039;t become the bottleneck. This is especially important for stream-oriented devices which could otherwise lose samples if the processing on the host side is not sufficiently fast ([[Saleae Logic]], [[Saleae Logic16]], [[IKALOGIC ScanaPLUS]], others).&lt;br /&gt;
* It should be able to handle run-time changes in the data streams (via meta packets on the session bus), e.g. changing samplerates, changing probes, etc. etc.&lt;br /&gt;
* It should have better compression properties than ZIP (e.g. using LZO or other algorithms, this is to be evaluated). What we ideally want out of the compression algorithm is:&lt;br /&gt;
** Good and relatively fast compression results at only moderate CPU usage.&lt;br /&gt;
** Very fast decompression (LZO is probably the best one here, as it&amp;#039;s specifically designed for this).&lt;br /&gt;
** Ideally, support for appending further data to already compressed data chunks (though this could be also implemented outside of the compression algorithm per se).&lt;br /&gt;
** Open-source license and OS portability. There should be an open-source library or code chunk for compression/uncompression and it should be widely available in Linux distros, and portable to Windows, Mac OS X, FreeBSD, Android, and so on.&lt;br /&gt;
&lt;br /&gt;
== Specification ==&lt;br /&gt;
&lt;br /&gt;
== UUIDs ==&lt;br /&gt;
&lt;br /&gt;
The format uses random [http://en.wikipedia.org/wiki/Universally_unique_identifier UUIDs] (version 4) as per [http://tools.ietf.org/html/rfc4122 RFC4122] in various places. These UUIDs are always 16 bytes long.&lt;br /&gt;
&lt;br /&gt;
A simple way to generate a random (version 4) UUID (ASCII and hex representation):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;python3 -c &amp;#039;import uuid; u = uuid.uuid4(); print(u); print(u.hex)&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 14c49f22-f08a-4ef2-b3d7-82ee16c3d531&lt;br /&gt;
 14c49f22f08a4ef2b3d782ee16c3d531&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File/stream format ==&lt;br /&gt;
&lt;br /&gt;
The format consists entirely of a stream of packets of various types.&lt;br /&gt;
&lt;br /&gt;
These packets can be either written to or read from a file, buffer, pipe, socket, or any other source/destination.&lt;br /&gt;
&lt;br /&gt;
== Packet format ==&lt;br /&gt;
&lt;br /&gt;
Every packet consists of four fields:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Short-UUID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| An ID (2 bytes, big-endian) that maps to a previously defined 16-byte packet type UUID. The Short-UUID values can range from 0x0002 to 0xffff, which allows for 65535 different packet types in a single file/stream. The Short-UUIDs 0x0000 and 0x0001 are special and cannot be used for &amp;quot;normal&amp;quot; packets, see below. The reason for using a (Short-)UUID here instead of some simple index number is to allow for clients to define and use their own special-purpose packet types as they see fit, without having to fear any conflicts with existing packet types (or packet types that someone else might add later).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Reference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| An ID (4 bytes, big-endian) that is assigned to this packet, so that other packets can reference it. Valid values: 0x00000001 - 0xffffffff. A value of 0x00000000 means that this packet doesn&amp;#039;t have a Reference-ID. Note that a (Short-)UUID specifies a certain &amp;#039;&amp;#039;type&amp;#039;&amp;#039; of packet, whereas the Reference-ID identifies a specific &amp;#039;&amp;#039;individual&amp;#039;&amp;#039; packet. For example, there can be multiple different packets (different Reference-ID) that are of the same type (same Short-UUID).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Length&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| The length of the data in this packet (in number of bytes; big-endian). The length does not include the length of the &amp;#039;&amp;#039;&amp;#039;Short-UUID&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Reference-ID&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;Length&amp;#039;&amp;#039;&amp;#039; field, only the length of the &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field. The length is given as an uint32_t number (little-endian).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 0..n&lt;br /&gt;
| The actual payload data, max. 2^32 bytes (4GiB). For some packet types the &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field is optional (in that case it is completely omitted and the &amp;#039;&amp;#039;&amp;#039;Length&amp;#039;&amp;#039;&amp;#039; field is set to 0). The contents of the &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field are entirely dependent on (and vary with) the type of packet.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Using the common [http://en.wikipedia.org/wiki/Type-length-value type-length-value] idom for each packet allows clients to easily skip over (ignore) any packets they do not know how to handle, and instead continue on to checking/handling the next packet.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet with a 7-byte data field (Short-UUID is 0x55aa, Reference-ID is 0x00008ab2):&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 55 aa&lt;br /&gt;
| 00 00 8a b2&lt;br /&gt;
| 00 00 00 07&lt;br /&gt;
| 11 22 33 44 55 66 77&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet without a data field (Short-UUID is 0x55aa, Reference-ID is 0x00005f31):&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 55 aa&lt;br /&gt;
| 00 00 5f 31&lt;br /&gt;
| 00 00 00 00&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PACKET_MAP_UUIDS packet ==&lt;br /&gt;
&lt;br /&gt;
This is a special packet that is used to map 16-byte UUIDs to 2-byte Short-UUIDs.&lt;br /&gt;
&lt;br /&gt;
Since every packet has a 2-byte Short-UUID, PACKET_MAP_UUIDS must be the first packet in a file/stream, otherwise the client will not be able to interpret any other packets.&lt;br /&gt;
&lt;br /&gt;
However, PACKET_MAP_UUIDS can occur multiple times in a stream. Every time PACKET_MAP_UUIDS is seen, mappings that were not yet defined are added to the list of mappings, and mappings that already existed will be overwritten with the respective new mapping.&lt;br /&gt;
&lt;br /&gt;
Since PACKET_MAP_UUIDS is a packet itself, it also consists of the four common fields Short-UUID/Reference-ID/Length/Data. The Short-UUID of PACKET_MAP_UUIDS is always &amp;#039;&amp;#039;&amp;#039;0x0000&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Special Short-UUID for magic marker&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| A reserved special Short-UUID (2 bytes, big-endian) for the magic marker. Value: &amp;#039;&amp;#039;&amp;#039;0x0001&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Special UUID for magic marker&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 16&lt;br /&gt;
| This is a special marker that can be used by the &amp;#039;&amp;#039;&amp;#039;file&amp;#039;&amp;#039;&amp;#039; utility (and other tools) to detect the file format easily. Contents: &amp;#039;&amp;#039;&amp;#039;$sIgRoK$$sIgRoK$&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Short-UUID 1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The 2-byte Short-UUID (2 bytes, big-endian) with index 1 (valid values: 0x0002 to 0xffff) that will, from now on, map to the UUID specified below.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;UUID 1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 16&lt;br /&gt;
| The UUID with index 1 (binary representation, 16 bytes, big-endian) which identifies the type of packet (globally unique).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Short-UUID 2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The 2-byte Short-UUID with index 2 (valid values: 0x0002 to 0xffff ; big-endian) that will, from now on, map to the UUID specified below.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;UUID 2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 16&lt;br /&gt;
| The UUID with index 2 (binary representation, 16 bytes, big-endian) which identifies the type of packet (globally unique).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ...&lt;br /&gt;
| ...&lt;br /&gt;
| ...&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Important notes:&lt;br /&gt;
&lt;br /&gt;
* The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field contains a list of Short-UUID to UUID mappings. Since every such pair is 18 bytes in size, the &amp;#039;&amp;#039;&amp;#039;Length&amp;#039;&amp;#039;&amp;#039; field of PACKET_MAP_UUIDS can be used to deduce how many such mappings are contained in the &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field.&lt;br /&gt;
* The special &amp;quot;magic marker&amp;quot; fields (2 + 16 bytes) are required to be in every PACKET_MAP_UUIDS and are required to always be the first entries of PACKET_MAP_UUIDS. The file format can thus easily be detected by looking at the unique bytes 10-27 in the file (additionally, the file also always starts with the two bytes 0x00 0x00).&lt;br /&gt;
* The special Short-UUID 0x0000 must not be used in any mapping, it is reserved for PACKET_MAP_UUIDS itself.&lt;br /&gt;
* The special Short-UUID 0x0001 must not be used in any mapping, it is reserved for the special &amp;quot;magic marker&amp;quot;, see above.&lt;br /&gt;
* There is no guarantee of any kind about which Short-UUIDs will be mapped (and to what). Specifically, a client can &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; assume that Short-UUIDs start at 0x0002, and it can &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; assume that Short-UUIDs are ordered in any way. The Short-UUIDs can have a completely random order and they can also have gaps.&lt;br /&gt;
* Mappings are generally not static in nature. Every additional PACKET_MAP_UUIDS that occurs can dynamically add or overwrite/change mappings, for example.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 00&amp;amp;nbsp;00&lt;br /&gt;
| &amp;#039;&amp;#039;xx&amp;amp;nbsp;xx&amp;amp;nbsp;xx&amp;amp;nbsp;xx&amp;#039;&amp;#039;&lt;br /&gt;
| 00&amp;amp;nbsp;00&amp;amp;nbsp;00&amp;amp;nbsp;48&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;00 01&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;24 73 49 67 52 6f 4b 24 24 73 49 67 52 6f 4b 24&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;77 a1&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;5a 17 72 eb 28 54 48 a8 a4 1c 73 97 d7 e9 22 3d&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;00 06&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;59 de f3 30 53 6a 46 b1 8e dd 62 f2 19 5d 1c 95&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;a3 9f&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;ec 6b d7 63 c8 79 4a a7 a9 7a 7e df 0e 68 af c7&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The above PACKET_MAP_UUIDS maps three different UUIDs to the Short-UUIDs 0x77a1, 0x0006 and 0xa39f.&lt;br /&gt;
&lt;br /&gt;
== sigrok packets ==&lt;br /&gt;
&lt;br /&gt;
The following packets are currently defined for use in projects hosted on [http://sigrok.org sigrok.org].&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;names&amp;quot; (e.g. &amp;quot;SIGROK_PACKET_LOGIC&amp;quot;) are for documentation purposes only, the (Short-)UUIDs are what actually matters. The names are prefixed with SIGROK_ to make it clear that other 3rd-party software may define their own additional packet types with arbitrary contents and for arbitrary purposes.&lt;br /&gt;
&lt;br /&gt;
One of the reasons for splitting up different properties into many small packets (SIGROK_PACKET_CHANNEL_TYPE, SIGROK_PACKET_CHANNEL_NAME, and so on) is that this allows for future additions (of e.g. various other channel properties), without the need to change an existing packet format. Additional packets for e.g. the channel color (for use in UIs) that also back-reference a SIGROK_PACKET_CHANNEL packet can be added without the need for protocol/format changes or version field bumps.&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a device.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;94aa863d-bb58-4d79-b944-ab9dd30eecdf&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field is empty.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 00&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE_VENDOR_NAME ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a device vendor name.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;c09c7a5c-8566-42ec-8fde-7737436b0e64&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Backreference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| A Reference-ID (4 bytes, little-endian) referencing a previously defined device (SIGROK_PACKET_DEVICE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Vendor name length&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The length in number of bytes of the vendor name (2 bytes, little-endian).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Vendor name&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| n&lt;br /&gt;
| The vendor name (UTF-8 string).&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The following packet defines a vendor name &amp;quot;Saleae&amp;quot; (with the Reference-ID &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;). The Backreference-ID &amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039; references a previously defined device.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 0c&lt;br /&gt;
| &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;00 06&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;Saleae&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE_MODEL_NAME ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a device model name.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;88058d2f-225e-4ee6-b915-9fd009944464&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Backreference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| A Reference-ID (4 bytes, little-endian) referencing a previously defined device (SIGROK_PACKET_DEVICE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Model name length&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The length in number of bytes of the model name (2 bytes, little-endian).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Model name&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| n&lt;br /&gt;
| The model name (UTF-8 string).&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The following packet defines a model name &amp;quot;Logic16&amp;quot; (with the Reference-ID &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;). The Backreference-ID &amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039; references a previously defined device.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 0d&lt;br /&gt;
| &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;00 07&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;Logic16&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE_VERSION ===&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE_SERIAL_NUMBER ===&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE_CONNECTION_ID ===&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_CHANNEL_GROUP ===&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_CHANNEL_GROUP_NAME ===&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_CHANNEL ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a channel.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;1325b595-0d5e-40a4-ac4d-36e89224dcb9&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Backreference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| A Reference-ID (4 bytes, little-endian) referencing a previously defined device (SIGROK_PACKET_DEVICE) that the channel belongs to.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 04&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_CHANNEL_TYPE ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a channel type.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;6b12bdcc-02c8-493a-a89d-662ee9d1a34d&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Backreference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| A Reference-ID (4 bytes, little-endian) referencing a previously defined channel (SIGROK_PACKET_CHANNEL).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Channel type&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 1&lt;br /&gt;
| The type of the back-referenced channel. &amp;#039;&amp;#039;&amp;#039;0x01&amp;#039;&amp;#039;&amp;#039;: Logic, &amp;#039;&amp;#039;&amp;#039;0x02&amp;#039;&amp;#039;&amp;#039;: Analog.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 05&lt;br /&gt;
| &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_CHANNEL_NAME ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a channel name.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;730ba9b7-638a-4b79-94dc-b9beb0735acf&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Backreference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| A Reference-ID (4 bytes, little-endian) referencing a previously defined channel (SIGROK_PACKET_CHANNEL).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Channel name length&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The length in number of bytes of the channel name (2 bytes, little-endian).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Channel name&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| n&lt;br /&gt;
| The channel name (UTF-8 string).&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The following packet defines a channel name &amp;quot;CH1&amp;quot; (with the Reference-ID &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;). The Backreference-ID &amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039; references a previously defined channel for which this name is to apply.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 09&lt;br /&gt;
| &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;00 03&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;CH1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_LOGIC ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to store/transmit (only) digital samples, usually from a logic analyzer.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;2236202e-9ee7-4bc6-81f6-56b4e6e029ba&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Version&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The version of the SIGROK_PACKET_LOGIC format in binary format (little-endian). Current version: &amp;#039;&amp;#039;&amp;#039;0x0001&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Payload format Short-UUID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| A Short-UUID (2 bytes, little-endian) which identifies a certain payload format.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Compression scheme Short-UUID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| A Short-UUID (2 bytes, little-endian) which identifies a certain compression scheme that is applied to the payload data.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Payload length&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| The length of the actual payload data in this SIGROK_PACKET_LOGIC packet (in number of bytes). The length only includes the &amp;#039;&amp;#039;&amp;#039;Payload&amp;#039;&amp;#039;&amp;#039; field. The length is given as an uint32_t number (little-endian).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Payload&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 0..n&lt;br /&gt;
| The actual payload data, i.e. logic analyzer samples in the specified payload format, using the specified compression scheme.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
(Packet type SIGROK_PACKET_LOGIC Short-UUID &amp;#039;&amp;#039;0xuuuu&amp;#039;&amp;#039;, Reference-ID &amp;#039;&amp;#039;0xtttttttt&amp;#039;&amp;#039;, 0x12 bytes packet data, SIGROK_PACKET_LOGIC version 0x0001, SIGROK_PAYLOAD_FORMAT_LOGIC_V1 payload format Short-UUID &amp;#039;&amp;#039;0xvvvv&amp;#039;&amp;#039;, SIGROK_COMPRESSION_NONE compression scheme Short-UUID &amp;#039;&amp;#039;0xwwww&amp;#039;&amp;#039;, 8 bytes of logic analyzer payload (uncompressed))&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 12&lt;br /&gt;
| &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;00 01&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;vv vv&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;&amp;#039;&amp;#039;ww ww&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;00 00 00 08&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;11 22 33 44 55 66 77 88&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SA: How does the mapping to the individual channels work? Do we need to backreference a channel group here that declares e.g. which 8 logic channels make up one such logic packet and in which order they are stored?&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_ANALOG ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to store/transmit (only) analog samples, e.g. from a multimeter, oscilloscope, sound level meter, or any other source for analog data.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;59def330-536a-46b1-8edd-62f2195d1c95&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Details yet to be defined.&lt;br /&gt;
&lt;br /&gt;
== List of known packet types ==&lt;br /&gt;
&lt;br /&gt;
This is a short overview of known packet types that are in use. This includes the packet types used in projects hosted at [http://sigrok.org sigrok.org], as well as pointers to packet types that other (3rd-party) software is known to use.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!UUID&lt;br /&gt;
!Packet type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 94aa863d-bb58-4d79-b944-ab9dd30eecdf&lt;br /&gt;
| SIGROK_PACKET_DEVICE&lt;br /&gt;
| [[File format:sigrok#SIGROK_PACKET_DEVICE|See above]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 1325b595-0d5e-40a4-ac4d-36e89224dcb9&lt;br /&gt;
| SIGROK_PACKET_CHANNEL&lt;br /&gt;
| [[File format:sigrok#SIGROK_PACKET_CHANNEL|See above]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 5a1772eb-2854-48a8-a41c-7397d7e9223d&lt;br /&gt;
| SIGROK_PACKET_LOGIC&lt;br /&gt;
| [[File format:sigrok#SIGROK_PACKET_LOGIC|See above]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 59def330-536a-46b1-8edd-62f2195d1c95&lt;br /&gt;
| SIGROK_PACKET_ANALOG&lt;br /&gt;
| [[File format:sigrok#SIGROK_PACKET_ANALOG|See above]].&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== List of known payload formats ==&lt;br /&gt;
&lt;br /&gt;
This is a short overview of known payload formats that are in use. This includes the payload formats used in projects hosted at [http://sigrok.org sigrok.org], as well as pointers to payload formats that other (3rd-party) software is known to use.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!UUID&lt;br /&gt;
!Payload format&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;white-space: nowrap;&amp;quot; | d2964f38-8b13-4570-9add-add5678a0394&lt;br /&gt;
| SIGROK_PAYLOAD_FORMAT_LOGIC_V1&lt;br /&gt;
| This payload format can only store digital samples from a logic analyzer (0/1 values for a certain channel/probe/pin). It is basically identical to the format that was used in the previous ZIP-based file format versions. Details are yet to be defined.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 79e7cfd1-0f56-4d5e-968a-b66fdbdff624&lt;br /&gt;
| SIGROK_PAYLOAD_FORMAT_ANALOG_V1&lt;br /&gt;
| A certain type of payload format that can store (only) analog samples of a certain number of analog channels. Details are yet to be defined.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== List of known compression schemes ==&lt;br /&gt;
&lt;br /&gt;
This is a short overview of known compression schemes that are in use. This includes the schemes used in projects hosted at [http://sigrok.org sigrok.org], as well as pointers to schemes that other (3rd-party) software is known to use.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!UUID&lt;br /&gt;
!Compression scheme&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ec6bd763-c879-4aa7-a97a-7edf0e68afc7&lt;br /&gt;
| SIGROK_COMPRESSION_NONE&lt;br /&gt;
| No compression whatsoever is used.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| acd2e249-5c4d-426d-96ae-ded5b6020e6f&lt;br /&gt;
| SIGROK_COMPRESSION_RLE_V1&lt;br /&gt;
| A certain type of RLE-based compression is used. Details are yet to be defined.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* JH: Do we need info about interleaving here? We could insist that all channels be de-intereleaved, or add support for interleaved streams.&lt;br /&gt;
* JH: Would could add support for device compression schemes. It may sometimes be desirable to be able to pass the device stream straight into the file.&lt;br /&gt;
&lt;br /&gt;
== Futher notes and ideas to consider ==&lt;br /&gt;
&lt;br /&gt;
* SA: Currently, the sample rate isn&amp;#039;t declared anywhere. Do we do this on a per-device or per-channel basis? My guts tell me that it&amp;#039;s probably wiser to do it on a per-channel basis, even if all channels have the same sample rate.&lt;br /&gt;
* Data should be encoded in a data aware way. This would give greater compression:&lt;br /&gt;
** Logic Data is most efficient stored in RLE+Huffman or Golomb coding. e.g. a clock signal may compress to one bit per edge.&lt;br /&gt;
*** JH: I wonder if we can do even better by XOR-ing the data with some kind of frequency tracking oscillator. This would convert a square wave into mostly continuous 0s or 1s, with occasional pulses where jitter occurs.&lt;br /&gt;
*** JH: This kind of thing is best prototyped with a script e.g python + the bitset library.&lt;br /&gt;
** FLAC (libflac) or a FLAC inspired codec (linear predicition) is probably as good as it gets for lossless analog data encoding.&lt;br /&gt;
* If data is stored in a format specific way, it would be best to store it as a series of stream-blocks, similar to how video containers work. Would it be possible to simply leverage a video container such as OGG? IIRC this contains headers to declare metadata about each stream, then a series of timestamped stream blocks interleaved together. The time stamp is a format specific number... for audio: the sample number, for video: the frame number, so sigrok formats can easily leverage this.&lt;br /&gt;
** Similarly RTP is a rather natural protocol for sigrok network streaming.&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File_format:Sigrok/v3&amp;diff=12861</id>
		<title>File format:Sigrok/v3</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File_format:Sigrok/v3&amp;diff=12861"/>
		<updated>2017-10-07T23:22:03Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: /* Packet format */ change field endianness to big-endian, to match examples and intent&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:File format:sigrok/v3}}&lt;br /&gt;
This page describes the proposed file/stream format (v3) for storing and transmitting sigrok related data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color:#ff6666&amp;quot;&amp;gt;&lt;br /&gt;
NOTE: This is work in progress and has not yet been implemented!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
&lt;br /&gt;
The previous [[File format:sigrok/v2|sigrok session]] file format (version 2) is a ZIP file containing multiple files (some metadata files and data files containing the actual samples). This works fine, but it also has some issues:&lt;br /&gt;
&lt;br /&gt;
* In order to get to the data you want, you need to decompress the whole file.&lt;br /&gt;
* Appending to a file is not possible easily (and it&amp;#039;s not efficient).&lt;br /&gt;
* It doesn&amp;#039;t support storing additional information for frontends (channel colors, and so on).&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
The following list highlights some of the goals of the new file format (v3):&lt;br /&gt;
&lt;br /&gt;
* It must be able to store&lt;br /&gt;
** arbitrary data (logic samples, and/or analog samples, and/or protocol decoder data, and more), as well as&lt;br /&gt;
** arbitrary meta-/config-data and other extra information that may be useful to frontends (UI state data, user-configured probe colors, names, positions, and so on).&lt;br /&gt;
* It must support and facilitate stream-oriented processing (save, load, transmission, compression/decompression, and so on).&lt;br /&gt;
* It must support compression of the payload data.&lt;br /&gt;
* It must be usable independent of hardware architecture (x86, ARM, PowerPC, MIPS, and so on), operating system, endianness, float representation, and so on. All data fields must be properly specified (endianness, signedness, size, format).&lt;br /&gt;
* It must allow for sufficiently good performance for the common operations a frontend needs to perform on the data/file/stream (save, load, compress/uncompress, append, and so on) so that it doesn&amp;#039;t become the bottleneck. This is especially important for stream-oriented devices which could otherwise lose samples if the processing on the host side is not sufficiently fast ([[Saleae Logic]], [[Saleae Logic16]], [[IKALOGIC ScanaPLUS]], others).&lt;br /&gt;
* It should be able to handle run-time changes in the data streams (via meta packets on the session bus), e.g. changing samplerates, changing probes, etc. etc.&lt;br /&gt;
* It should have better compression properties than ZIP (e.g. using LZO or other algorithms, this is to be evaluated). What we ideally want out of the compression algorithm is:&lt;br /&gt;
** Good and relatively fast compression results at only moderate CPU usage.&lt;br /&gt;
** Very fast decompression (LZO is probably the best one here, as it&amp;#039;s specifically designed for this).&lt;br /&gt;
** Ideally, support for appending further data to already compressed data chunks (though this could be also implemented outside of the compression algorithm per se).&lt;br /&gt;
** Open-source license and OS portability. There should be an open-source library or code chunk for compression/uncompression and it should be widely available in Linux distros, and portable to Windows, Mac OS X, FreeBSD, Android, and so on.&lt;br /&gt;
&lt;br /&gt;
== Specification ==&lt;br /&gt;
&lt;br /&gt;
== UUIDs ==&lt;br /&gt;
&lt;br /&gt;
The format uses random [http://en.wikipedia.org/wiki/Universally_unique_identifier UUIDs] (version 4) as per [http://tools.ietf.org/html/rfc4122 RFC4122] in various places. These UUIDs are always 16 bytes long.&lt;br /&gt;
&lt;br /&gt;
A simple way to generate a random (version 4) UUID (ASCII and hex representation):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;python3 -c &amp;#039;import uuid; u = uuid.uuid4(); print(u); print(u.hex)&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 14c49f22-f08a-4ef2-b3d7-82ee16c3d531&lt;br /&gt;
 14c49f22f08a4ef2b3d782ee16c3d531&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File/stream format ==&lt;br /&gt;
&lt;br /&gt;
The format consists entirely of a stream of packets of various types.&lt;br /&gt;
&lt;br /&gt;
These packets can be either written to or read from a file, buffer, pipe, socket, or any other source/destination.&lt;br /&gt;
&lt;br /&gt;
== Packet format ==&lt;br /&gt;
&lt;br /&gt;
Every packet consists of four fields:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Short-UUID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| An ID (2 bytes, big-endian) that maps to a previously defined 16-byte packet type UUID. The Short-UUID values can range from 0x0002 to 0xffff, which allows for 65535 different packet types in a single file/stream. The Short-UUIDs 0x0000 and 0x0001 are special and cannot be used for &amp;quot;normal&amp;quot; packets, see below. The reason for using a (Short-)UUID here instead of some simple index number is to allow for clients to define and use their own special-purpose packet types as they see fit, without having to fear any conflicts with existing packet types (or packet types that someone else might add later).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Reference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| An ID (4 bytes, big-endian) that is assigned to this packet, so that other packets can reference it. Valid values: 0x00000001 - 0xffffffff. A value of 0x00000000 means that this packet doesn&amp;#039;t have a Reference-ID. Note that a (Short-)UUID specifies a certain &amp;#039;&amp;#039;type&amp;#039;&amp;#039; of packet, whereas the Reference-ID identifies a specific &amp;#039;&amp;#039;individual&amp;#039;&amp;#039; packet. For example, there can be multiple different packets (different Reference-ID) that are of the same type (same Short-UUID).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Length&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| The length of the data in this packet (in number of bytes; big-endian). The length does not include the length of the &amp;#039;&amp;#039;&amp;#039;Short-UUID&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Reference-ID&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;Length&amp;#039;&amp;#039;&amp;#039; field, only the length of the &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field. The length is given as an uint32_t number (little-endian).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 0..n&lt;br /&gt;
| The actual payload data, max. 2^32 bytes (4GiB). For some packet types the &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field is optional (in that case it is completely omitted and the &amp;#039;&amp;#039;&amp;#039;Length&amp;#039;&amp;#039;&amp;#039; field is set to 0). The contents of the &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field are entirely dependent on (and vary with) the type of packet.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Using the common [http://en.wikipedia.org/wiki/Type-length-value type-length-value] idom for each packet allows clients to easily skip over (ignore) any packets they do not know how to handle, and instead continue on to checking/handling the next packet.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet with a 7-byte data field (Short-UUID is 0x55aa, Reference-ID is 0x00008ab2):&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 55 aa&lt;br /&gt;
| 00 00 8a b2&lt;br /&gt;
| 00 00 00 07&lt;br /&gt;
| 11 22 33 44 55 66 77&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet without a data field (Short-UUID is 0x55aa, Reference-ID is 0x00005f31):&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 55 aa&lt;br /&gt;
| 00 00 5f 31&lt;br /&gt;
| 00 00 00 00&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PACKET_MAP_UUIDS packet ==&lt;br /&gt;
&lt;br /&gt;
This is a special packet that is used to map 16-byte UUIDs to 2-byte Short-UUIDs.&lt;br /&gt;
&lt;br /&gt;
Since every packet has a 2-byte Short-UUID, PACKET_MAP_UUIDS must be the first packet in a file/stream, otherwise the client will not be able to interpret any other packets.&lt;br /&gt;
&lt;br /&gt;
However, PACKET_MAP_UUIDS can occur multiple times in a stream. Every time PACKET_MAP_UUIDS is seen, mappings that were not yet defined are added to the list of mappings, and mappings that already existed will be overwritten with the respective new mapping.&lt;br /&gt;
&lt;br /&gt;
Since PACKET_MAP_UUIDS is a packet itself, it also consists of the four common fields Short-UUID/Reference-ID/Length/Data. The Short-UUID of PACKET_MAP_UUIDS is always &amp;#039;&amp;#039;&amp;#039;0x0000&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Special Short-UUID for magic marker&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| A reserved special Short-UUID (2 bytes, little-endian) for the magic marker. Value: &amp;#039;&amp;#039;&amp;#039;0x0001&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Special UUID for magic marker&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 16&lt;br /&gt;
| This is a special marker that can be used by the &amp;#039;&amp;#039;&amp;#039;file&amp;#039;&amp;#039;&amp;#039; utility (and other tools) to detect the file format easily. Contents: &amp;#039;&amp;#039;&amp;#039;$sIgRoK$$sIgRoK$&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Short-UUID 1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The 2-byte Short-UUID with index 1 (valid values: 0x0002 to 0xffff) that will, from now on, map to the UUID specified below.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;UUID 1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 16&lt;br /&gt;
| The UUID with index 1 (binary representation, 16 bytes, little-endian) which identifies the type of packet (globally unique).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Short-UUID 2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The 2-byte Short-UUID with index 2 (valid values: 0x0002 to 0xffff) that will, from now on, map to the UUID specified below.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;UUID 2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 16&lt;br /&gt;
| The UUID with index 2 (binary representation, 16 bytes, little-endian) which identifies the type of packet (globally unique).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ...&lt;br /&gt;
| ...&lt;br /&gt;
| ...&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Important notes:&lt;br /&gt;
&lt;br /&gt;
* The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field contains a list of Short-UUID to UUID mappings. Since every such pair is 18 bytes in size, the &amp;#039;&amp;#039;&amp;#039;Length&amp;#039;&amp;#039;&amp;#039; field of PACKET_MAP_UUIDS can be used to deduce how many such mappings are contained in the &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field.&lt;br /&gt;
* The special &amp;quot;magic marker&amp;quot; fields (2 + 16 bytes) are required to be in every PACKET_MAP_UUIDS and are required to always be the first entries of PACKET_MAP_UUIDS. The file format can thus easily be detected by looking at the unique bytes 10-27 in the file (additionally, the file also always starts with the two bytes 0x00 0x00).&lt;br /&gt;
* The special Short-UUID 0x0000 must not be used in any mapping, it is reserved for PACKET_MAP_UUIDS itself.&lt;br /&gt;
* The special Short-UUID 0x0001 must not be used in any mapping, it is reserved for the special &amp;quot;magic marker&amp;quot;, see above.&lt;br /&gt;
* There is no guarantee of any kind about which Short-UUIDs will be mapped (and to what). Specifically, a client can &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; assume that Short-UUIDs start at 0x0002, and it can &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; assume that Short-UUIDs are ordered in any way. The Short-UUIDs can have a completely random order and they can also have gaps.&lt;br /&gt;
* Mappings are generally not static in nature. Every additional PACKET_MAP_UUIDS that occurs can dynamically add or overwrite/change mappings, for example.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 00&amp;amp;nbsp;00&lt;br /&gt;
| &amp;#039;&amp;#039;xx&amp;amp;nbsp;xx&amp;amp;nbsp;xx&amp;amp;nbsp;xx&amp;#039;&amp;#039;&lt;br /&gt;
| 00&amp;amp;nbsp;00&amp;amp;nbsp;00&amp;amp;nbsp;48&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;00 01&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;24 73 49 67 52 6f 4b 24 24 73 49 67 52 6f 4b 24&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;77 a1&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;5a 17 72 eb 28 54 48 a8 a4 1c 73 97 d7 e9 22 3d&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;00 06&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;59 de f3 30 53 6a 46 b1 8e dd 62 f2 19 5d 1c 95&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;a3 9f&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;ec 6b d7 63 c8 79 4a a7 a9 7a 7e df 0e 68 af c7&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The above PACKET_MAP_UUIDS maps three different UUIDs to the Short-UUIDs 0x77a1, 0x0006 and 0xa39f.&lt;br /&gt;
&lt;br /&gt;
== sigrok packets ==&lt;br /&gt;
&lt;br /&gt;
The following packets are currently defined for use in projects hosted on [http://sigrok.org sigrok.org].&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;names&amp;quot; (e.g. &amp;quot;SIGROK_PACKET_LOGIC&amp;quot;) are for documentation purposes only, the (Short-)UUIDs are what actually matters. The names are prefixed with SIGROK_ to make it clear that other 3rd-party software may define their own additional packet types with arbitrary contents and for arbitrary purposes.&lt;br /&gt;
&lt;br /&gt;
One of the reasons for splitting up different properties into many small packets (SIGROK_PACKET_CHANNEL_TYPE, SIGROK_PACKET_CHANNEL_NAME, and so on) is that this allows for future additions (of e.g. various other channel properties), without the need to change an existing packet format. Additional packets for e.g. the channel color (for use in UIs) that also back-reference a SIGROK_PACKET_CHANNEL packet can be added without the need for protocol/format changes or version field bumps.&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a device.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;94aa863d-bb58-4d79-b944-ab9dd30eecdf&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field is empty.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 00&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE_VENDOR_NAME ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a device vendor name.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;c09c7a5c-8566-42ec-8fde-7737436b0e64&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Backreference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| A Reference-ID (4 bytes, little-endian) referencing a previously defined device (SIGROK_PACKET_DEVICE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Vendor name length&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The length in number of bytes of the vendor name (2 bytes, little-endian).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Vendor name&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| n&lt;br /&gt;
| The vendor name (UTF-8 string).&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The following packet defines a vendor name &amp;quot;Saleae&amp;quot; (with the Reference-ID &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;). The Backreference-ID &amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039; references a previously defined device.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 0c&lt;br /&gt;
| &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;00 06&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;Saleae&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE_MODEL_NAME ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a device model name.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;88058d2f-225e-4ee6-b915-9fd009944464&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Backreference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| A Reference-ID (4 bytes, little-endian) referencing a previously defined device (SIGROK_PACKET_DEVICE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Model name length&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The length in number of bytes of the model name (2 bytes, little-endian).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Model name&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| n&lt;br /&gt;
| The model name (UTF-8 string).&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The following packet defines a model name &amp;quot;Logic16&amp;quot; (with the Reference-ID &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;). The Backreference-ID &amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039; references a previously defined device.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 0d&lt;br /&gt;
| &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;00 07&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;Logic16&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE_VERSION ===&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE_SERIAL_NUMBER ===&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_DEVICE_CONNECTION_ID ===&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_CHANNEL_GROUP ===&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_CHANNEL_GROUP_NAME ===&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_CHANNEL ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a channel.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;1325b595-0d5e-40a4-ac4d-36e89224dcb9&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Backreference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| A Reference-ID (4 bytes, little-endian) referencing a previously defined device (SIGROK_PACKET_DEVICE) that the channel belongs to.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 04&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_CHANNEL_TYPE ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a channel type.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;6b12bdcc-02c8-493a-a89d-662ee9d1a34d&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Backreference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| A Reference-ID (4 bytes, little-endian) referencing a previously defined channel (SIGROK_PACKET_CHANNEL).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Channel type&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 1&lt;br /&gt;
| The type of the back-referenced channel. &amp;#039;&amp;#039;&amp;#039;0x01&amp;#039;&amp;#039;&amp;#039;: Logic, &amp;#039;&amp;#039;&amp;#039;0x02&amp;#039;&amp;#039;&amp;#039;: Analog.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&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 sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 05&lt;br /&gt;
| &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_CHANNEL_NAME ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to define a channel name.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;730ba9b7-638a-4b79-94dc-b9beb0735acf&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Backreference-ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| A Reference-ID (4 bytes, little-endian) referencing a previously defined channel (SIGROK_PACKET_CHANNEL).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Channel name length&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The length in number of bytes of the channel name (2 bytes, little-endian).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Channel name&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| n&lt;br /&gt;
| The channel name (UTF-8 string).&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The following packet defines a channel name &amp;quot;CH1&amp;quot; (with the Reference-ID &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;). The Backreference-ID &amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039; references a previously defined channel for which this name is to apply.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 09&lt;br /&gt;
| &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;bb bb bb bb&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;00 03&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;CH1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_LOGIC ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to store/transmit (only) digital samples, usually from a logic analyzer.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;2236202e-9ee7-4bc6-81f6-56b4e6e029ba&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039; field has the following contents:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field&lt;br /&gt;
!Length&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Version&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| The version of the SIGROK_PACKET_LOGIC format in binary format (little-endian). Current version: &amp;#039;&amp;#039;&amp;#039;0x0001&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Payload format Short-UUID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| A Short-UUID (2 bytes, little-endian) which identifies a certain payload format.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Compression scheme Short-UUID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 2&lt;br /&gt;
| A Short-UUID (2 bytes, little-endian) which identifies a certain compression scheme that is applied to the payload data.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Payload length&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 4&lt;br /&gt;
| The length of the actual payload data in this SIGROK_PACKET_LOGIC packet (in number of bytes). The length only includes the &amp;#039;&amp;#039;&amp;#039;Payload&amp;#039;&amp;#039;&amp;#039; field. The length is given as an uint32_t number (little-endian).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Payload&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| 0..n&lt;br /&gt;
| The actual payload data, i.e. logic analyzer samples in the specified payload format, using the specified compression scheme.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example packet:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
(Packet type SIGROK_PACKET_LOGIC Short-UUID &amp;#039;&amp;#039;0xuuuu&amp;#039;&amp;#039;, Reference-ID &amp;#039;&amp;#039;0xtttttttt&amp;#039;&amp;#039;, 0x12 bytes packet data, SIGROK_PACKET_LOGIC version 0x0001, SIGROK_PAYLOAD_FORMAT_LOGIC_V1 payload format Short-UUID &amp;#039;&amp;#039;0xvvvv&amp;#039;&amp;#039;, SIGROK_COMPRESSION_NONE compression scheme Short-UUID &amp;#039;&amp;#039;0xwwww&amp;#039;&amp;#039;, 8 bytes of logic analyzer payload (uncompressed))&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Short-UUID&lt;br /&gt;
!Reference-ID&lt;br /&gt;
!Length&lt;br /&gt;
!Data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;uu uu&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;tt tt tt tt&amp;#039;&amp;#039;&lt;br /&gt;
| 00 00 00 12&lt;br /&gt;
| &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;00 01&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;&amp;#039;&amp;#039;vv vv&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;&amp;#039;&amp;#039;ww ww&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: lightblue&amp;quot;&amp;gt;00 00 00 08&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;11 22 33 44 55 66 77 88&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SA: How does the mapping to the individual channels work? Do we need to backreference a channel group here that declares e.g. which 8 logic channels make up one such logic packet and in which order they are stored?&lt;br /&gt;
&lt;br /&gt;
=== SIGROK_PACKET_ANALOG ===&lt;br /&gt;
&lt;br /&gt;
This is a packet type used to store/transmit (only) analog samples, e.g. from a multimeter, oscilloscope, sound level meter, or any other source for analog data.&lt;br /&gt;
&lt;br /&gt;
This packet uses the fixed UUID &amp;#039;&amp;#039;&amp;#039;59def330-536a-46b1-8edd-62f2195d1c95&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Details yet to be defined.&lt;br /&gt;
&lt;br /&gt;
== List of known packet types ==&lt;br /&gt;
&lt;br /&gt;
This is a short overview of known packet types that are in use. This includes the packet types used in projects hosted at [http://sigrok.org sigrok.org], as well as pointers to packet types that other (3rd-party) software is known to use.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!UUID&lt;br /&gt;
!Packet type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 94aa863d-bb58-4d79-b944-ab9dd30eecdf&lt;br /&gt;
| SIGROK_PACKET_DEVICE&lt;br /&gt;
| [[File format:sigrok#SIGROK_PACKET_DEVICE|See above]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 1325b595-0d5e-40a4-ac4d-36e89224dcb9&lt;br /&gt;
| SIGROK_PACKET_CHANNEL&lt;br /&gt;
| [[File format:sigrok#SIGROK_PACKET_CHANNEL|See above]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 5a1772eb-2854-48a8-a41c-7397d7e9223d&lt;br /&gt;
| SIGROK_PACKET_LOGIC&lt;br /&gt;
| [[File format:sigrok#SIGROK_PACKET_LOGIC|See above]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 59def330-536a-46b1-8edd-62f2195d1c95&lt;br /&gt;
| SIGROK_PACKET_ANALOG&lt;br /&gt;
| [[File format:sigrok#SIGROK_PACKET_ANALOG|See above]].&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== List of known payload formats ==&lt;br /&gt;
&lt;br /&gt;
This is a short overview of known payload formats that are in use. This includes the payload formats used in projects hosted at [http://sigrok.org sigrok.org], as well as pointers to payload formats that other (3rd-party) software is known to use.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!UUID&lt;br /&gt;
!Payload format&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;white-space: nowrap;&amp;quot; | d2964f38-8b13-4570-9add-add5678a0394&lt;br /&gt;
| SIGROK_PAYLOAD_FORMAT_LOGIC_V1&lt;br /&gt;
| This payload format can only store digital samples from a logic analyzer (0/1 values for a certain channel/probe/pin). It is basically identical to the format that was used in the previous ZIP-based file format versions. Details are yet to be defined.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 79e7cfd1-0f56-4d5e-968a-b66fdbdff624&lt;br /&gt;
| SIGROK_PAYLOAD_FORMAT_ANALOG_V1&lt;br /&gt;
| A certain type of payload format that can store (only) analog samples of a certain number of analog channels. Details are yet to be defined.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== List of known compression schemes ==&lt;br /&gt;
&lt;br /&gt;
This is a short overview of known compression schemes that are in use. This includes the schemes used in projects hosted at [http://sigrok.org sigrok.org], as well as pointers to schemes that other (3rd-party) software is known to use.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller;&amp;quot; class=&amp;quot;alternategrey sigroktable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!UUID&lt;br /&gt;
!Compression scheme&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ec6bd763-c879-4aa7-a97a-7edf0e68afc7&lt;br /&gt;
| SIGROK_COMPRESSION_NONE&lt;br /&gt;
| No compression whatsoever is used.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| acd2e249-5c4d-426d-96ae-ded5b6020e6f&lt;br /&gt;
| SIGROK_COMPRESSION_RLE_V1&lt;br /&gt;
| A certain type of RLE-based compression is used. Details are yet to be defined.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* JH: Do we need info about interleaving here? We could insist that all channels be de-intereleaved, or add support for interleaved streams.&lt;br /&gt;
* JH: Would could add support for device compression schemes. It may sometimes be desirable to be able to pass the device stream straight into the file.&lt;br /&gt;
&lt;br /&gt;
== Futher notes and ideas to consider ==&lt;br /&gt;
&lt;br /&gt;
* SA: Currently, the sample rate isn&amp;#039;t declared anywhere. Do we do this on a per-device or per-channel basis? My guts tell me that it&amp;#039;s probably wiser to do it on a per-channel basis, even if all channels have the same sample rate.&lt;br /&gt;
* Data should be encoded in a data aware way. This would give greater compression:&lt;br /&gt;
** Logic Data is most efficient stored in RLE+Huffman or Golomb coding. e.g. a clock signal may compress to one bit per edge.&lt;br /&gt;
*** JH: I wonder if we can do even better by XOR-ing the data with some kind of frequency tracking oscillator. This would convert a square wave into mostly continuous 0s or 1s, with occasional pulses where jitter occurs.&lt;br /&gt;
*** JH: This kind of thing is best prototyped with a script e.g python + the bitset library.&lt;br /&gt;
** FLAC (libflac) or a FLAC inspired codec (linear predicition) is probably as good as it gets for lossless analog data encoding.&lt;br /&gt;
* If data is stored in a format specific way, it would be best to store it as a series of stream-blocks, similar to how video containers work. Would it be possible to simply leverage a video container such as OGG? IIRC this contains headers to declare metadata about each stream, then a series of timestamped stream blocks interleaved together. The time stamp is a format specific number... for audio: the sample number, for video: the frame number, so sigrok formats can easily leverage this.&lt;br /&gt;
** Similarly RTP is a rather natural protocol for sigrok network streaming.&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Mcupro_Logic16_clone&amp;diff=11630</id>
		<title>Mcupro Logic16 clone</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Mcupro_Logic16_clone&amp;diff=11630"/>
		<updated>2016-04-10T02:02:54Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: /* Hardware (2014-01-25 variant) */ confirmed FPGA !&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:mcupro Logic16 clone}}&lt;br /&gt;
{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Mcupro_Logic16_overview.png|180px]]&lt;br /&gt;
| name             = mcupro Logic16 clone&lt;br /&gt;
| status           = supported&lt;br /&gt;
| source_code_dir  = saleae-logic16&lt;br /&gt;
| channels         = 3/6/9/16&lt;br /&gt;
| samplerate       = 100/50/32/16MHz&lt;br /&gt;
| samplerate_state = &amp;amp;mdash;&lt;br /&gt;
| triggers         = none (SW-only)&lt;br /&gt;
| voltages         = -0.9V &amp;amp;mdash; 6V&lt;br /&gt;
| threshold        = 1.5V (operates with 3.3V logic)&lt;br /&gt;
| memory           = none&lt;br /&gt;
| compression      = yes&lt;br /&gt;
| website          = [http://www.aliexpress.com/store/product/USB-Logic-Analyzer-100M-max-sample-rate-16Channels-10B-samples-MCU-ARM-FPGA-debug-tool/614202_1916810169.html aliexpress.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;mcupro Logic16 clone&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyzer with 100/50/32/16MHz sampling rate (at 3/6/9/16 enabled channels).&lt;br /&gt;
&lt;br /&gt;
This is a clone of the [[Saleae Logic16]].&lt;br /&gt;
&lt;br /&gt;
See [[mcupro Logic16 clone/Info]] for more details (such as &amp;#039;&amp;#039;&amp;#039;lsusb -v&amp;#039;&amp;#039;&amp;#039; output) about the device.&lt;br /&gt;
&lt;br /&gt;
== Hardware (Actel variant) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: [https://www.actel.com/documents/PA3_DS.pdf Actel A3P125]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: [http://www.atmel.com/Images/doc3256.pdf Atmel 24C02N]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-3.3]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-1.5]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
&lt;br /&gt;
== Hardware (Cyclone variant) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: [https://www.altera.com/products/fpga/cyclone-series/cyclone/support.html#Cyclone-Device-Handbook--All-Sections- Altera Cyclone EP1C3T100]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: [http://www.atmel.com/Images/doc3256.pdf Atmel 24C02N]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-3.3]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-1.5]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: 100MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bootstrap controller&amp;#039;&amp;#039;&amp;#039;: [http://www.stcmcu.com/datasheet/stc/STC-AD-PDF/STC15.pdf STCMCU 15F10], 8051 compatible&lt;br /&gt;
&lt;br /&gt;
== Hardware (2015-01-08 variant) ==&lt;br /&gt;
&lt;br /&gt;
The PCB is marked &amp;quot;Saleae Logic 16 By MCUPro 2015-1-8&amp;quot;. Readily identifiable by the irregular PCB traces, and switching power supplies. This comes in a different case, identical to the [[Noname_XL-LOGIC16-100M]].&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: Markings ground off&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: Markings ground off&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://www.techcodesemi.com/cn/products_info.asp?pid=26 TD 6810] adjustable version + 150k/680k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://www.techcodesemi.com/cn/products_info.asp?pid=26 TD 6810] adjustable version + 160k/240k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: Looks like 32MHz?&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bootstrap controller&amp;#039;&amp;#039;&amp;#039;: Not required?&lt;br /&gt;
&lt;br /&gt;
== Hardware (2014-01-25 variant) ==&lt;br /&gt;
&lt;br /&gt;
The PCB is marked &amp;quot;Saleae Logic 16 mcupro 2014.1.25&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: Markings ground off, but pinout and JTAG (IDCODE 0x020810dd) indicate an Altera Cyclone EP1C3T100.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: Markings sometimes ground off ? CY7C68013A&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: marked &amp;quot;DKF 24.000&amp;quot;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: marked &amp;quot;RAK32.00&amp;quot;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics (see [https://www.micron.com/~/media/documents/products/data-sheet/nor-flash/serial-nor/m25p/m25p10a.pdf Micron M25P10] too)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: None ? (CY7C I2C port wired to FPGA pins)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bootstrap controller&amp;#039;&amp;#039;&amp;#039;: Markings ground off, pinout could indicate a [http://www.stcmcu.com/datasheet/stc/STC-AD-PDF/STC15.pdf STCMCU 15F10x] 8051-based mcu?&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: unknown switching regulator (marked &amp;quot;IC5CJ&amp;quot; ?) + 150k/680k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: unknown switching regulator (marked &amp;quot;IC5CJ&amp;quot; ?) + 160k/240k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Channel input buffering&amp;#039;&amp;#039;&amp;#039;: none, only simple resistor (510R) + TVS diode array protection (possibly [http://www.semtech.com/images/datasheet/srv05-4.pdf Semtech SRV05])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The bottom two channels are not GND, but SCK (sample clock out) and HCK (half of SCK out).&lt;br /&gt;
&lt;br /&gt;
== Photos (Actel) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_top.jpeg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_bottom.jpeg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_top.jpeg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_bottom.jpeg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (Cyclone) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_top.jpeg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_bottom.jpeg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro Logic16 Variant2 top.jpg|&amp;lt;small&amp;gt;PCB with Altera Cyclone, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:IMG 0207 v1.JPG|&amp;lt;small&amp;gt;PCB with Altera Cyclone, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro Logic16 Variant2 top flash+uC.jpg|&amp;lt;small&amp;gt;PCB, top, 1MBit flash and STCMCU uC&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (2015-01-08 variant) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Xl-logic16-100m-external.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-top-overview.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-bottom-overview.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-voltage-regulators.jpg|&amp;lt;small&amp;gt;PCB, 3.3 and 1.5 voltage regulators&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-bottom-markings-intact.jpg|&amp;lt;small&amp;gt;PCB, bottom - chip markings intact&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (2014-01-25 variant) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:seleae-logic16-aliexpress-clone.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-top_ortho.jpg|&amp;lt;small&amp;gt;PCB top detail&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-bottom_ortho.jpg|&amp;lt;small&amp;gt;PCB bottom detail&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-top-overview.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-bottom-overview.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
See [[Saleae_Logic16#Protocol]].&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
;Actel variant&lt;br /&gt;
: This logic analyzer works with unmodified Saleae software. The Actel FPGA has on-chip flash storage, so it only requires an upload of Cypress FX2LP firmware in order to operate.&lt;br /&gt;
;Cyclone variant&lt;br /&gt;
: This logic analyzer works with unmodified Saleae software. The PCB contains an SPI flash chip, so it only requires an upload of Cypress FX2LP firmware in order to operate.&lt;br /&gt;
;2015-01-08 variant&lt;br /&gt;
: Only requires an upload of Cypress FX2LP firmware to operate. Open-source binaries from [https://github.com/gregani/la16fw gregani] work, but must be renamed to &amp;#039;&amp;#039;&amp;#039;saleae-logic16-fx2.fw&amp;#039;&amp;#039;&amp;#039;. It also requires a [[libsigrok]] more recent than 2014-08-22 to work (see bug [http://sigrok.org/bugzilla/show_bug.cgi?id=680#c4 #680]).&lt;br /&gt;
;2014-01-25 variant&lt;br /&gt;
: Seems to have the bitstream in internal flash, so it only requires an upload of Cypress FX2LP firmware in order to operate. This requires a [[libsigrok]] more recent than 2014-08-22 to work (see bug [http://sigrok.org/bugzilla/show_bug.cgi?id=680#c4 #680]).&lt;br /&gt;
&lt;br /&gt;
The firmware extraction steps are identical to [[Saleae_Logic16#Firmware|steps for Saleae Logic16]], however you only need to have &amp;#039;&amp;#039;&amp;#039;saleae-logic16-fx2.fw&amp;#039;&amp;#039;&amp;#039; installed.&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:Supported]]&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Mcupro_Logic16_clone&amp;diff=11627</id>
		<title>Mcupro Logic16 clone</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Mcupro_Logic16_clone&amp;diff=11627"/>
		<updated>2016-04-07T20:26:53Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: /* Hardware (Cyclone variant) */ datasheet link for STC15F10x mcu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:mcupro Logic16 clone}}&lt;br /&gt;
{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Mcupro_Logic16_overview.png|180px]]&lt;br /&gt;
| name             = mcupro Logic16 clone&lt;br /&gt;
| status           = supported&lt;br /&gt;
| source_code_dir  = saleae-logic16&lt;br /&gt;
| channels         = 3/6/9/16&lt;br /&gt;
| samplerate       = 100/50/32/16MHz&lt;br /&gt;
| samplerate_state = &amp;amp;mdash;&lt;br /&gt;
| triggers         = none (SW-only)&lt;br /&gt;
| voltages         = -0.9V &amp;amp;mdash; 6V&lt;br /&gt;
| threshold        = 1.5V (operates with 3.3V logic)&lt;br /&gt;
| memory           = none&lt;br /&gt;
| compression      = yes&lt;br /&gt;
| website          = [http://www.aliexpress.com/store/product/USB-Logic-Analyzer-100M-max-sample-rate-16Channels-10B-samples-MCU-ARM-FPGA-debug-tool/614202_1916810169.html aliexpress.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;mcupro Logic16 clone&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyzer with 100/50/32/16MHz sampling rate (at 3/6/9/16 enabled channels).&lt;br /&gt;
&lt;br /&gt;
This is a clone of the [[Saleae Logic16]].&lt;br /&gt;
&lt;br /&gt;
See [[mcupro Logic16 clone/Info]] for more details (such as &amp;#039;&amp;#039;&amp;#039;lsusb -v&amp;#039;&amp;#039;&amp;#039; output) about the device.&lt;br /&gt;
&lt;br /&gt;
== Hardware (Actel variant) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: [https://www.actel.com/documents/PA3_DS.pdf Actel A3P125]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: [http://www.atmel.com/Images/doc3256.pdf Atmel 24C02N]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-3.3]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-1.5]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
&lt;br /&gt;
== Hardware (Cyclone variant) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: [https://www.altera.com/products/fpga/cyclone-series/cyclone/support.html#Cyclone-Device-Handbook--All-Sections- Altera Cyclone EP1C3T100]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: [http://www.atmel.com/Images/doc3256.pdf Atmel 24C02N]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-3.3]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-1.5]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: 100MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bootstrap controller&amp;#039;&amp;#039;&amp;#039;: [http://www.stcmcu.com/datasheet/stc/STC-AD-PDF/STC15.pdf STCMCU 15F10], 8051 compatible&lt;br /&gt;
&lt;br /&gt;
== Hardware (2015-01-08 variant) ==&lt;br /&gt;
&lt;br /&gt;
The PCB is marked &amp;quot;Saleae Logic 16 By MCUPro 2015-1-8&amp;quot;. Readily identifiable by the irregular PCB traces, and switching power supplies. This comes in a different case, identical to the [[Noname_XL-LOGIC16-100M]].&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: Markings ground off&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: Markings ground off&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://www.techcodesemi.com/cn/products_info.asp?pid=26 TD 6810] adjustable version + 150k/680k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://www.techcodesemi.com/cn/products_info.asp?pid=26 TD 6810] adjustable version + 160k/240k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: Looks like 32MHz?&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bootstrap controller&amp;#039;&amp;#039;&amp;#039;: Not required?&lt;br /&gt;
&lt;br /&gt;
== Hardware (2014-01-25 variant) ==&lt;br /&gt;
&lt;br /&gt;
The PCB is marked &amp;quot;Saleae Logic 16 mcupro 2014.1.25&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: Markings ground off, pinout would indicate a Cyclone EP1C3 (JTAG IDCODE not confirmed yet)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: Markings sometimes ground off ? CY7C68013A&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: marked &amp;quot;DKF 24.000&amp;quot;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: marked &amp;quot;RAK32.00&amp;quot;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics (see [https://www.micron.com/~/media/documents/products/data-sheet/nor-flash/serial-nor/m25p/m25p10a.pdf Micron M25P10] too)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: None ? (CY7C I2C port wired to FPGA pins)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bootstrap controller&amp;#039;&amp;#039;&amp;#039;: Markings ground off, pinout could indicate a [http://www.stcmcu.com/datasheet/stc/STC-AD-PDF/STC15.pdf STCMCU 15F10x] 8051-based mcu?&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: unknown switching regulator (marked &amp;quot;IC5CJ&amp;quot; ?) + 150k/680k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: unknown switching regulator (marked &amp;quot;IC5CJ&amp;quot; ?) + 160k/240k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Channel input buffering&amp;#039;&amp;#039;&amp;#039;: none, only simple resistor (510R) + TVS diode array protection (possibly [http://www.semtech.com/images/datasheet/srv05-4.pdf Semtech SRV05])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The bottom two channels are not GND, but SCK (sample clock out) and HCK (half of SCK out).&lt;br /&gt;
&lt;br /&gt;
== Photos (Actel) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_top.jpeg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_bottom.jpeg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_top.jpeg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_bottom.jpeg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (Cyclone) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_top.jpeg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_bottom.jpeg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro Logic16 Variant2 top.jpg|&amp;lt;small&amp;gt;PCB with Altera Cyclone, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:IMG 0207 v1.JPG|&amp;lt;small&amp;gt;PCB with Altera Cyclone, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro Logic16 Variant2 top flash+uC.jpg|&amp;lt;small&amp;gt;PCB, top, 1MBit flash and STCMCU uC&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (2015-01-08 variant) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Xl-logic16-100m-external.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-top-overview.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-bottom-overview.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-voltage-regulators.jpg|&amp;lt;small&amp;gt;PCB, 3.3 and 1.5 voltage regulators&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-bottom-markings-intact.jpg|&amp;lt;small&amp;gt;PCB, bottom - chip markings intact&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (2014-01-25 variant) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:seleae-logic16-aliexpress-clone.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-top_ortho.jpg|&amp;lt;small&amp;gt;PCB top detail&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-bottom_ortho.jpg|&amp;lt;small&amp;gt;PCB bottom detail&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-top-overview.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-bottom-overview.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
See [[Saleae_Logic16#Protocol]].&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
;Actel variant&lt;br /&gt;
: This logic analyzer works with unmodified Saleae software. The Actel FPGA has on-chip flash storage, so it only requires an upload of Cypress FX2LP firmware in order to operate.&lt;br /&gt;
;Cyclone variant&lt;br /&gt;
: This logic analyzer works with unmodified Saleae software. The PCB contains an SPI flash chip, so it only requires an upload of Cypress FX2LP firmware in order to operate.&lt;br /&gt;
;2015-01-08 variant&lt;br /&gt;
: Only requires an upload of Cypress FX2LP firmware to operate. Open-source binaries from [https://github.com/gregani/la16fw gregani] work, but must be renamed to &amp;#039;&amp;#039;&amp;#039;saleae-logic16-fx2.fw&amp;#039;&amp;#039;&amp;#039;. It also requires a [[libsigrok]] more recent than 2014-08-22 to work (see bug [http://sigrok.org/bugzilla/show_bug.cgi?id=680#c4 #680]).&lt;br /&gt;
;2014-01-25 variant&lt;br /&gt;
: Seems to have the bitstream in internal flash, so it only requires an upload of Cypress FX2LP firmware in order to operate. This requires a [[libsigrok]] more recent than 2014-08-22 to work (see bug [http://sigrok.org/bugzilla/show_bug.cgi?id=680#c4 #680]).&lt;br /&gt;
&lt;br /&gt;
The firmware extraction steps are identical to [[Saleae_Logic16#Firmware|steps for Saleae Logic16]], however you only need to have &amp;#039;&amp;#039;&amp;#039;saleae-logic16-fx2.fw&amp;#039;&amp;#039;&amp;#039; installed.&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:Supported]]&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Mcupro_Logic16_clone&amp;diff=11626</id>
		<title>Mcupro Logic16 clone</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Mcupro_Logic16_clone&amp;diff=11626"/>
		<updated>2016-04-07T20:26:13Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: /* Hardware (2014-01-25 variant) */ clarified I2C EEPROM =&amp;gt; bootstrap IC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:mcupro Logic16 clone}}&lt;br /&gt;
{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Mcupro_Logic16_overview.png|180px]]&lt;br /&gt;
| name             = mcupro Logic16 clone&lt;br /&gt;
| status           = supported&lt;br /&gt;
| source_code_dir  = saleae-logic16&lt;br /&gt;
| channels         = 3/6/9/16&lt;br /&gt;
| samplerate       = 100/50/32/16MHz&lt;br /&gt;
| samplerate_state = &amp;amp;mdash;&lt;br /&gt;
| triggers         = none (SW-only)&lt;br /&gt;
| voltages         = -0.9V &amp;amp;mdash; 6V&lt;br /&gt;
| threshold        = 1.5V (operates with 3.3V logic)&lt;br /&gt;
| memory           = none&lt;br /&gt;
| compression      = yes&lt;br /&gt;
| website          = [http://www.aliexpress.com/store/product/USB-Logic-Analyzer-100M-max-sample-rate-16Channels-10B-samples-MCU-ARM-FPGA-debug-tool/614202_1916810169.html aliexpress.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;mcupro Logic16 clone&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyzer with 100/50/32/16MHz sampling rate (at 3/6/9/16 enabled channels).&lt;br /&gt;
&lt;br /&gt;
This is a clone of the [[Saleae Logic16]].&lt;br /&gt;
&lt;br /&gt;
See [[mcupro Logic16 clone/Info]] for more details (such as &amp;#039;&amp;#039;&amp;#039;lsusb -v&amp;#039;&amp;#039;&amp;#039; output) about the device.&lt;br /&gt;
&lt;br /&gt;
== Hardware (Actel variant) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: [https://www.actel.com/documents/PA3_DS.pdf Actel A3P125]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: [http://www.atmel.com/Images/doc3256.pdf Atmel 24C02N]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-3.3]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-1.5]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
&lt;br /&gt;
== Hardware (Cyclone variant) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: [https://www.altera.com/products/fpga/cyclone-series/cyclone/support.html#Cyclone-Device-Handbook--All-Sections- Altera Cyclone EP1C3T100]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: [http://www.atmel.com/Images/doc3256.pdf Atmel 24C02N]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-3.3]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-1.5]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: 100MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bootstrap controller&amp;#039;&amp;#039;&amp;#039;: STCMCU 15F10, 8051 compatible&lt;br /&gt;
&lt;br /&gt;
== Hardware (2015-01-08 variant) ==&lt;br /&gt;
&lt;br /&gt;
The PCB is marked &amp;quot;Saleae Logic 16 By MCUPro 2015-1-8&amp;quot;. Readily identifiable by the irregular PCB traces, and switching power supplies. This comes in a different case, identical to the [[Noname_XL-LOGIC16-100M]].&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: Markings ground off&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: Markings ground off&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://www.techcodesemi.com/cn/products_info.asp?pid=26 TD 6810] adjustable version + 150k/680k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://www.techcodesemi.com/cn/products_info.asp?pid=26 TD 6810] adjustable version + 160k/240k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: Looks like 32MHz?&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bootstrap controller&amp;#039;&amp;#039;&amp;#039;: Not required?&lt;br /&gt;
&lt;br /&gt;
== Hardware (2014-01-25 variant) ==&lt;br /&gt;
&lt;br /&gt;
The PCB is marked &amp;quot;Saleae Logic 16 mcupro 2014.1.25&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: Markings ground off, pinout would indicate a Cyclone EP1C3 (JTAG IDCODE not confirmed yet)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: Markings sometimes ground off ? CY7C68013A&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: marked &amp;quot;DKF 24.000&amp;quot;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: marked &amp;quot;RAK32.00&amp;quot;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics (see [https://www.micron.com/~/media/documents/products/data-sheet/nor-flash/serial-nor/m25p/m25p10a.pdf Micron M25P10] too)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: None ? (CY7C I2C port wired to FPGA pins)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bootstrap controller&amp;#039;&amp;#039;&amp;#039;: Markings ground off, pinout could indicate a [http://www.stcmcu.com/datasheet/stc/STC-AD-PDF/STC15.pdf STCMCU 15F10x] 8051-based mcu?&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: unknown switching regulator (marked &amp;quot;IC5CJ&amp;quot; ?) + 150k/680k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: unknown switching regulator (marked &amp;quot;IC5CJ&amp;quot; ?) + 160k/240k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Channel input buffering&amp;#039;&amp;#039;&amp;#039;: none, only simple resistor (510R) + TVS diode array protection (possibly [http://www.semtech.com/images/datasheet/srv05-4.pdf Semtech SRV05])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The bottom two channels are not GND, but SCK (sample clock out) and HCK (half of SCK out).&lt;br /&gt;
&lt;br /&gt;
== Photos (Actel) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_top.jpeg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_bottom.jpeg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_top.jpeg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_bottom.jpeg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (Cyclone) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_top.jpeg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_bottom.jpeg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro Logic16 Variant2 top.jpg|&amp;lt;small&amp;gt;PCB with Altera Cyclone, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:IMG 0207 v1.JPG|&amp;lt;small&amp;gt;PCB with Altera Cyclone, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro Logic16 Variant2 top flash+uC.jpg|&amp;lt;small&amp;gt;PCB, top, 1MBit flash and STCMCU uC&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (2015-01-08 variant) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Xl-logic16-100m-external.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-top-overview.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-bottom-overview.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-voltage-regulators.jpg|&amp;lt;small&amp;gt;PCB, 3.3 and 1.5 voltage regulators&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-bottom-markings-intact.jpg|&amp;lt;small&amp;gt;PCB, bottom - chip markings intact&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (2014-01-25 variant) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:seleae-logic16-aliexpress-clone.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-top_ortho.jpg|&amp;lt;small&amp;gt;PCB top detail&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-bottom_ortho.jpg|&amp;lt;small&amp;gt;PCB bottom detail&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-top-overview.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-bottom-overview.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
See [[Saleae_Logic16#Protocol]].&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
;Actel variant&lt;br /&gt;
: This logic analyzer works with unmodified Saleae software. The Actel FPGA has on-chip flash storage, so it only requires an upload of Cypress FX2LP firmware in order to operate.&lt;br /&gt;
;Cyclone variant&lt;br /&gt;
: This logic analyzer works with unmodified Saleae software. The PCB contains an SPI flash chip, so it only requires an upload of Cypress FX2LP firmware in order to operate.&lt;br /&gt;
;2015-01-08 variant&lt;br /&gt;
: Only requires an upload of Cypress FX2LP firmware to operate. Open-source binaries from [https://github.com/gregani/la16fw gregani] work, but must be renamed to &amp;#039;&amp;#039;&amp;#039;saleae-logic16-fx2.fw&amp;#039;&amp;#039;&amp;#039;. It also requires a [[libsigrok]] more recent than 2014-08-22 to work (see bug [http://sigrok.org/bugzilla/show_bug.cgi?id=680#c4 #680]).&lt;br /&gt;
;2014-01-25 variant&lt;br /&gt;
: Seems to have the bitstream in internal flash, so it only requires an upload of Cypress FX2LP firmware in order to operate. This requires a [[libsigrok]] more recent than 2014-08-22 to work (see bug [http://sigrok.org/bugzilla/show_bug.cgi?id=680#c4 #680]).&lt;br /&gt;
&lt;br /&gt;
The firmware extraction steps are identical to [[Saleae_Logic16#Firmware|steps for Saleae Logic16]], however you only need to have &amp;#039;&amp;#039;&amp;#039;saleae-logic16-fx2.fw&amp;#039;&amp;#039;&amp;#039; installed.&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:Supported]]&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Saleae_Logic16&amp;diff=11623</id>
		<title>Saleae Logic16</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Saleae_Logic16&amp;diff=11623"/>
		<updated>2016-04-07T18:05:04Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: /* Hardware */ updated C7C68013A datasheet URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Saleae Logic16 bottom.png|180px]]&lt;br /&gt;
| name             = Saleae Logic16&lt;br /&gt;
| status           = supported&lt;br /&gt;
| source_code_dir  = saleae-logic16&lt;br /&gt;
| channels         = 3/6/9/16&lt;br /&gt;
| samplerate       = 100/50/32/16MHz&lt;br /&gt;
| samplerate_state = &amp;amp;mdash;&lt;br /&gt;
| triggers         = none (SW-only)&lt;br /&gt;
| voltages         = -0.9V &amp;amp;mdash; 6V&lt;br /&gt;
| threshold        = configurable:&amp;lt;br /&amp;gt;for 1.8V to 3.6V systems: V&amp;lt;sub&amp;gt;IH&amp;lt;/sub&amp;gt;=1.4V, V&amp;lt;sub&amp;gt;IL&amp;lt;/sub&amp;gt;=0.7V&amp;lt;br /&amp;gt;for 5V systems: V&amp;lt;sub&amp;gt;IH&amp;lt;/sub&amp;gt;=3.6V, V&amp;lt;sub&amp;gt;IL&amp;lt;/sub&amp;gt;=1.4V&lt;br /&gt;
| memory           = none&lt;br /&gt;
| compression      = yes&lt;br /&gt;
| website          = [http://www.saleae.com/logic16/ saleae.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Saleae Logic16&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyzer with 100/50/32/16MHz sampling rate (at 3/6/9/16 enabled channels). &lt;br /&gt;
&lt;br /&gt;
The case requires a &amp;#039;&amp;#039;&amp;#039;Torx T5&amp;#039;&amp;#039;&amp;#039; screwdriver to open.&lt;br /&gt;
&lt;br /&gt;
See [[Saleae Logic16/Info]] for more details (such as &amp;#039;&amp;#039;&amp;#039;lsusb -v&amp;#039;&amp;#039;&amp;#039; output) about the device.&lt;br /&gt;
&lt;br /&gt;
See [[Saleae Logic]] for the predecessor product of the Saleae Logic16. &lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: [http://www.xilinx.com/support/index.html/content/xilinx/en/supportNav/silicon_devices/fpga/spartan-3a.html Xilinx Spartan-3A XC3S200A], 200K gates ([http://www.xilinx.com/support/documentation/data_sheets/ds529.pdf datasheeet])&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?mpn=CY7C68013A-56PVXC Cypress CY7C68013A-56PVXC (FX2LP)] ([http://www.cypress.com/file/138911/download datasheet])&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ultralow capacitance ESD protection&amp;#039;&amp;#039;&amp;#039;: 4x [http://www.st.com/web/catalog/sense_power/FM114/CL1137/SC1490/PF109008 ST DVIULC6-4SC6] ([http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00065974.pdf datasheet])&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;2Kbit I2C EEPROM&amp;#039;&amp;#039;&amp;#039;: [http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010774 Microchip 24AA02] ([http://ww1.microchip.com/downloads/en/DeviceDoc/21709J.pdf datasheet]) (marking: &amp;quot;B2TH&amp;quot;, starts with &amp;quot;B2&amp;quot; always, the last 2 characters are a &amp;quot;traceability code&amp;quot;)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;2.5MHz, 1.5A synchronous step down switching regulator (1.2V)&amp;#039;&amp;#039;&amp;#039;: [http://www.semtech.com/power-management/switching-regulators/sc189 Semtech SC189] ([http://www.semtech.com/images/datasheet/sc189.pdf datasheet]) (marking: &amp;quot;189C&amp;quot;)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;2.5MHz, 1.5A synchronous step down switching regulator (3.3V)&amp;#039;&amp;#039;&amp;#039;: [http://www.semtech.com/power-management/switching-regulators/sc189 Semtech SC189] ([http://www.semtech.com/images/datasheet/sc189.pdf datasheet]) (marking: &amp;quot;189Z&amp;quot;)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;N-MOSFET&amp;#039;&amp;#039;&amp;#039;: 2x 2N7002 type MOSFET (marking: &amp;quot;72Y7&amp;quot;). Connected as &amp;quot;low-side&amp;quot; switch/LED driver and inverter.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pinouts and connections:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;JTAG header (FPGA):&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;J3&amp;#039;&amp;#039;&amp;#039; pin header is a JTAG connector wired to the FPGA. The pins are (from left to right, the right-most pin, pin number 1, is square):&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller&amp;quot; class=&amp;quot;sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!5&lt;br /&gt;
!4&lt;br /&gt;
!3&lt;br /&gt;
!2&lt;br /&gt;
!1&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| GND&lt;br /&gt;
| TMS&lt;br /&gt;
| TCK&lt;br /&gt;
| TDO&lt;br /&gt;
| TDI&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Testpoints:&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;sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!T1&lt;br /&gt;
!T2&lt;br /&gt;
!T3&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 1.2V&lt;br /&gt;
| 3.3V&lt;br /&gt;
| GND (FX2)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Cypress FX2:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
{{chip_56pin&lt;br /&gt;
| 1=&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 15, IO_L05P_3)&amp;lt;/span&amp;gt; PD5&lt;br /&gt;
| 2=&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 13, IO_L04N_3)&amp;lt;/span&amp;gt; PD6&lt;br /&gt;
| 3=&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 10, IO_L03N_3)&amp;lt;/span&amp;gt; PD7&lt;br /&gt;
| 4=GND&lt;br /&gt;
| 5=&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 90, IO_0)&amp;lt;/span&amp;gt; CLKOUT&lt;br /&gt;
| 6=VCC&lt;br /&gt;
| 7=GND&lt;br /&gt;
| 8=&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 3, IO_L01P_3)&amp;lt;/span&amp;gt; RDY0/*SLRD&lt;br /&gt;
| 9=&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 16, IO_L05N_3)&amp;lt;/span&amp;gt; RDY1/*SLWR&lt;br /&gt;
| 10=AVCC&lt;br /&gt;
| 11=&amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;(24MHz crystal)&amp;lt;/span&amp;gt; XTALOUT&lt;br /&gt;
| 12=&amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;(24MHz crystal)&amp;lt;/span&amp;gt; XTALIN&lt;br /&gt;
| 13=AGND&lt;br /&gt;
| 14=AVCC&lt;br /&gt;
&lt;br /&gt;
| 15=&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;(USB D+)&amp;lt;/span&amp;gt; DPLUS&lt;br /&gt;
| 16=&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;(USB D-)&amp;lt;/span&amp;gt; DMINUS&lt;br /&gt;
| 17=AGND&lt;br /&gt;
| 18=VCC&lt;br /&gt;
| 19=GND&lt;br /&gt;
| 20=&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 84, IO_L02N_0)&amp;lt;/span&amp;gt; *IFCLK&lt;br /&gt;
| 21=RESERVED&lt;br /&gt;
| 22=&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;(EEPROM SCL)&amp;lt;/span&amp;gt; SCL&lt;br /&gt;
| 23=&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;(EEPROM SDA)&amp;lt;/span&amp;gt; SDA&lt;br /&gt;
| 24=VCC&lt;br /&gt;
| 25=&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 40, IO_L08P_2)&amp;lt;/span&amp;gt; PB0&lt;br /&gt;
| 26=&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 78, IO_L01N_0)&amp;lt;/span&amp;gt; PB1&lt;br /&gt;
| 27=&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 77, IO_L01P_0)&amp;lt;/span&amp;gt; PB2&lt;br /&gt;
| 28=&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 49, IO_L10N_2)&amp;lt;/span&amp;gt; PB3&lt;br /&gt;
&lt;br /&gt;
| 29=PB4 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 46, MOSI)&amp;lt;/span&amp;gt;&lt;br /&gt;
| 30=PB5 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 41, IO_L08N_2)&amp;lt;/span&amp;gt;&lt;br /&gt;
| 31=PB6 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 37, IO_L07N_2)&amp;lt;/span&amp;gt;&lt;br /&gt;
| 32=PB7 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 93, IO_L05P_0)&amp;lt;/span&amp;gt;&lt;br /&gt;
| 33=GND&lt;br /&gt;
| 34=VCC&lt;br /&gt;
| 35=GND&lt;br /&gt;
| 36=CTL0 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 94, IO_L05N_0)&amp;lt;/span&amp;gt;&lt;br /&gt;
| 37=CTL1 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 97, IP_0)&amp;lt;/span&amp;gt;&lt;br /&gt;
| 38=CTL2 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 100, PROG_B)&amp;lt;/span&amp;gt;&lt;br /&gt;
| 39=VCC&lt;br /&gt;
| 40=PA0 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 54, DONE)&amp;lt;/span&amp;gt;&lt;br /&gt;
| 41=PA1 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 48, INIT_B)&amp;lt;/span&amp;gt;&lt;br /&gt;
| 42=PA2 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 53, CCLK)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| 43=PA3 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 51, MISO)&amp;lt;/span&amp;gt;&lt;br /&gt;
| 44=PA4 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 98, IO_L06P_0)&amp;lt;/span&amp;gt;&lt;br /&gt;
| 45=PA5 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 85, IO_L03P_0)&amp;lt;/span&amp;gt;&lt;br /&gt;
| 46=PA6 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 30, IO_L04P_2)&amp;lt;/span&amp;gt;&lt;br /&gt;
| 47=PA7 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 9, IO_L03P_3)&amp;lt;/span&amp;gt;&lt;br /&gt;
| 48=GND&lt;br /&gt;
| 49=RESET# &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;(3.3V via D2 (diode?))&amp;lt;/span&amp;gt;&lt;br /&gt;
| 50=VCC&lt;br /&gt;
| 51=*WAKEUP &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;(3.3V)&amp;lt;/span&amp;gt;&lt;br /&gt;
| 52=PD0 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 6, IO_L02N_3)&amp;lt;/span&amp;gt;&lt;br /&gt;
| 53=PD1 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 4, IO_L01N_3)&amp;lt;/span&amp;gt;&lt;br /&gt;
| 54=PD2 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 5, IO_L02P_3)&amp;lt;/span&amp;gt;&lt;br /&gt;
| 55=PD3 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 44, IO_L09N_2)&amp;lt;/span&amp;gt;&lt;br /&gt;
| 56=PD4 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(FPGA 12, IO_L04P_3)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Other FPGA connections:&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;sigroktable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CH0&lt;br /&gt;
!52&lt;br /&gt;
|CH8&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CH1&lt;br /&gt;
!56&lt;br /&gt;
|CH9&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|CH2&lt;br /&gt;
!57&lt;br /&gt;
|CH10&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CH3&lt;br /&gt;
!60&lt;br /&gt;
|CH11&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|CH4&lt;br /&gt;
!61&lt;br /&gt;
|CH12&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|CH5&lt;br /&gt;
!62&lt;br /&gt;
|CH13&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|CH6&lt;br /&gt;
!64&lt;br /&gt;
|CH14&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|CH7&lt;br /&gt;
!65&lt;br /&gt;
|CH15&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;|LED (active low)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Saleae Logic16.jpg|&amp;lt;small&amp;gt;Device, front&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Saleae Logic16 bottom.jpg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Saleae Logic16 PCB top.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Saleae Logic16 PCB bottom.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Saleae logic16 xilinx xc3s200a.jpg|&amp;lt;small&amp;gt;Xilinx XC3S200A&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Saleae logic16 cypress fx2lp.jpg|&amp;lt;small&amp;gt;Cypress FX2LP&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Saleae logic16 eeprom b2th.jpg|&amp;lt;small&amp;gt;I2C EEPROM&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Saleae logic16 dl46.jpg|&amp;lt;small&amp;gt;ST DVIULC6-4SC6&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Saleae logic16 189z 189c.jpg|&amp;lt;small&amp;gt;Voltage regulators&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Saleae logic16 72y7.jpg|&amp;lt;small&amp;gt;N-MOSFETs&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
=== Firmware and FPGA bitstream usage ===&lt;br /&gt;
&lt;br /&gt;
You can use the [http://sigrok.org/gitweb/?p=sigrok-util.git;a=tree;f=firmware/saleae-logic16 sigrok-fwextract-saleae-logic16] tool to extract (from the &amp;quot;Logic&amp;quot; Linux binary) the FX2 firmware and the FPGA bitstreams required for using the Saleae Logic16:&lt;br /&gt;
&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;sigrok-fwextract-saleae-logic16 Logic&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 saved 5214 bytes to saleae-logic16-fx2.fw&lt;br /&gt;
 saved 149516 bytes to saleae-logic16-fpga-18.bitstream&lt;br /&gt;
 saved 149516 bytes to saleae-logic16-fpga-33.bitstream&lt;br /&gt;
&lt;br /&gt;
Copy these files to the directory where your [[libsigrok]] installation expects them (usually &amp;#039;&amp;#039;&amp;#039;/usr/local/share/sigrok-firmware&amp;#039;&amp;#039;&amp;#039;) and they will be found and used automatically by the libsigrok &amp;#039;&amp;#039;&amp;#039;saleae-logic16&amp;#039;&amp;#039;&amp;#039; driver.&lt;br /&gt;
&lt;br /&gt;
=== Technical firmware details ===&lt;br /&gt;
&lt;br /&gt;
The firmware for the FX2LP is embedded in the vendor application as a set of Intel HEX lines.  Each line is uploaded individually with a separate control transfer.  The firmware currently occupies the address range [0x0000-0x145d], but is uploaded out of order.&lt;br /&gt;
&lt;br /&gt;
See [[Saleae Logic16/Firmware]] for more details on the vendor firmware.&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sample format&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The samples (as received via USB) for the enabled probes (3, 6, 9, or 16) are organized as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;0xLL 0xLL  0xMM 0xMM  0xNN 0xNN&amp;lt;/span&amp;gt;   &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;0xPP 0xPP  0xQQ 0xQQ  0xRR 0xRR&amp;lt;/span&amp;gt; ...&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
In the above example, 3 probes are enabled. For each probe there are 2 bytes / 16 bits (e.g. 0xLL 0xLL for probe 0), then the next probe&amp;#039;s data is received (0xMM 0xMM for probe 1), then 0xNN 0xNN for probe 2. When 2 bytes have been received for all enabled probes, the process restarts with probe 0 again.&lt;br /&gt;
&lt;br /&gt;
The 16 bits of data per probe seem to contain the pin state of the respective probe (1: high, 0: low) at 16 different sampling points/times (which ones depends on the samplerate).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Configuration&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Endpoint 1 is used for configuration of the analyzer.  The transfers are &amp;quot;encrypted&amp;quot; using a simple series of additions and XORs.  Two kinds of transfers are used; a 3 byte out transfer starting with 0x81 followed by a 1 byte in transfer, and a 4 byte out transfer starting with 0x80.  It&amp;#039;s quite plausible that these provide raw read/write access to memory locations.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller; white-space: nowrap;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Channel number configuration&lt;br /&gt;
|-&lt;br /&gt;
| 3 channels&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;0x80 0x01 0x02 &amp;#039;&amp;#039;&amp;#039;0x07&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;   &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;0x80 0x01 0x03 &amp;#039;&amp;#039;&amp;#039;0x00&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 6 channels&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;0x80 0x01 0x02 &amp;#039;&amp;#039;&amp;#039;0x3f&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;   &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;0x80 0x01 0x03 &amp;#039;&amp;#039;&amp;#039;0x00&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 9 channels&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;0x80 0x01 0x02 &amp;#039;&amp;#039;&amp;#039;0xff&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;   &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;0x80 0x01 0x03 &amp;#039;&amp;#039;&amp;#039;0x01&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 16 channels&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;0x80 0x01 0x02 &amp;#039;&amp;#039;&amp;#039;0xff&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;   &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;0x80 0x01 0x03 &amp;#039;&amp;#039;&amp;#039;0xff&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller; white-space: nowrap;&amp;quot; class=&amp;quot;alternategrey sigroktable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Sampling frequency&lt;br /&gt;
|-&lt;br /&gt;
| 500kHz&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;0x80 0x01 0x0a &amp;#039;&amp;#039;&amp;#039;0x00&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;   &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;0x80 0x01 0x04 &amp;#039;&amp;#039;&amp;#039;0xc7&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 1MHz&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;0x80 0x01 0x0a &amp;#039;&amp;#039;&amp;#039;0x00&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;   &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;0x80 0x01 0x04 &amp;#039;&amp;#039;&amp;#039;0x63&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2MHz&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;0x80 0x01 0x0a &amp;#039;&amp;#039;&amp;#039;0x00&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;   &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;0x80 0x01 0x04 &amp;#039;&amp;#039;&amp;#039;0x31&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 4MHz&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;0x80 0x01 0x0a &amp;#039;&amp;#039;&amp;#039;0x00&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;   &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;0x80 0x01 0x04 &amp;#039;&amp;#039;&amp;#039;0x18&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 5MHz&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;0x80 0x01 0x0a &amp;#039;&amp;#039;&amp;#039;0x00&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;   &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;0x80 0x01 0x04 &amp;#039;&amp;#039;&amp;#039;0x13&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 8MHz&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;0x80 0x01 0x0a &amp;#039;&amp;#039;&amp;#039;0x01&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;   &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;0x80 0x01 0x04 &amp;#039;&amp;#039;&amp;#039;0x13&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 10MHz&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;0x80 0x01 0x0a &amp;#039;&amp;#039;&amp;#039;0x00&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;   &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;0x80 0x01 0x04 &amp;#039;&amp;#039;&amp;#039;0x09&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 12.5MHz&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;0x80 0x01 0x0a &amp;#039;&amp;#039;&amp;#039;0x00&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;   &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;0x80 0x01 0x04 &amp;#039;&amp;#039;&amp;#039;0x07&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 16MHz&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;0x80 0x01 0x0a &amp;#039;&amp;#039;&amp;#039;0x01&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;   &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;0x80 0x01 0x04 &amp;#039;&amp;#039;&amp;#039;0x09&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 25MHz&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;0x80 0x01 0x0a &amp;#039;&amp;#039;&amp;#039;0x00&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;   &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;0x80 0x01 0x04 &amp;#039;&amp;#039;&amp;#039;0x03&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 32MHz&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;0x80 0x01 0x0a &amp;#039;&amp;#039;&amp;#039;0x01&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;   &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;0x80 0x01 0x04 &amp;#039;&amp;#039;&amp;#039;0x04&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 40MHz&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;0x80 0x01 0x0a &amp;#039;&amp;#039;&amp;#039;0x01&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;   &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;0x80 0x01 0x04 &amp;#039;&amp;#039;&amp;#039;0x03&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 50MHz&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;0x80 0x01 0x0a &amp;#039;&amp;#039;&amp;#039;0x00&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;   &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;0x80 0x01 0x04 &amp;#039;&amp;#039;&amp;#039;0x01&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 80MHz&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;0x80 0x01 0x0a &amp;#039;&amp;#039;&amp;#039;0x01&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;   &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;0x80 0x01 0x04 &amp;#039;&amp;#039;&amp;#039;0x01&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 100MHz&lt;br /&gt;
| &amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;0x80 0x01 0x0a &amp;#039;&amp;#039;&amp;#039;0x00&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;   &amp;lt;span style=&amp;quot;background-color: cyan&amp;quot;&amp;gt;0x80 0x01 0x04 &amp;#039;&amp;#039;&amp;#039;0x00&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://downloads.saleae.com/Logic+Guide.pdf Manual]&lt;br /&gt;
* [http://www.saleae.com/downloads Vendor software]&lt;br /&gt;
* [http://community.saleae.com/ SDKs]&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:Supported]]&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Aud&amp;diff=11622</id>
		<title>Protocol decoder:Aud</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Aud&amp;diff=11622"/>
		<updated>2016-04-07T15:52:41Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: added &amp;quot;infobox&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox protocol decoder&lt;br /&gt;
| id              = aud&lt;br /&gt;
| name            = AUD&lt;br /&gt;
| description     = Renesas/Hitachi Advanced User Debugger (AUD) protocol&lt;br /&gt;
| status          = supported&lt;br /&gt;
| license         = GPLv2+&lt;br /&gt;
| source_code_dir = aud&lt;br /&gt;
| image           = [[File:PV_example_AUD.png|250px]]&lt;br /&gt;
| input           = logic&lt;br /&gt;
| output          = aud&lt;br /&gt;
| probes          = AUDCK, nAUDSYNC, AUDATA3-AUDATA0&lt;br /&gt;
| optional_probes = &amp;amp;mdash;&lt;br /&gt;
| options         = &amp;amp;mdash;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Renesas/Hitachi AUD (Advanced User Debugger) =&lt;br /&gt;
&lt;br /&gt;
The AUD (Advanced User Debugger) port of certain Renesas / Hitachi microcontrollers has two modes of peration, &amp;quot;Branch Trace mode&amp;quot; and &amp;quot;RAM monitor mode&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Currently the protocol decoder implementation only recognizes &amp;quot;Branch Trace&amp;quot; mode.&lt;br /&gt;
&lt;br /&gt;
The AUD protocol is described in the microcontroller datasheets, such as [http://www.renesas.eu/products/mpumcu/superh/sh7050/sh7058/Documentation.jsp rej09b0046 - SH7058 Hardware manual]&lt;br /&gt;
&lt;br /&gt;
Refer to the AUD chapter for functional description, and the AC characteristics chapter for timing diagrams.&lt;br /&gt;
&lt;br /&gt;
== Interface description ==&lt;br /&gt;
The interface itself is 4 data lines, and 4 control lines (reset, clock, mode, sync):&lt;br /&gt;
# AUDCK&lt;br /&gt;
# nAUDSYNC&lt;br /&gt;
# nAUDRST&lt;br /&gt;
# nAUDMD&lt;br /&gt;
# AUDATA3&lt;br /&gt;
# AUDATA2&lt;br /&gt;
# AUDATA1&lt;br /&gt;
# AUDATA0&lt;br /&gt;
&lt;br /&gt;
== Modes of operation ==&lt;br /&gt;
=== Branch trace mode ===&lt;br /&gt;
In this mode, the mcu generates the clock signal on AUDCK (typically 20MHz) and shifts out a 4-bit nibble every clock. The value reconstructed from those nibbles is the destination address of any jump, branch, or call instruction changing the PC register. Specialized or very fast hardware is required to read the data. FPGA / CPLD based interfaces, or a logic analyzer capable of sampling at least 6 simultaneous channels at &amp;gt;= 80MSps, can do this. 40MSps gives very inconsistent results since the sampling clock is certainly at least a few ppm away from the target clock, and the AUDCK edges are sometimes missed.&lt;br /&gt;
&lt;br /&gt;
Alternately, a logic analyzer capable of state analysis at 20MHz (capturing on rising edges of AUDCK) should be sufficient. Unfortunately, cheap hardware like Logic/Logic16 clones do not support this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RAM monitor mode ===&lt;br /&gt;
The AUD port accepts commands to read/write to the RAM. Decoding this mode is not implemented at the moment.&lt;br /&gt;
&lt;br /&gt;
== Timing diagrams ==&lt;br /&gt;
[[File:AUD_timing.png]]&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File:PV_example_AUD.png&amp;diff=11621</id>
		<title>File:PV example AUD.png</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File:PV_example_AUD.png&amp;diff=11621"/>
		<updated>2016-04-07T15:48:25Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Licensing ==&lt;br /&gt;
{{PD}}&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Protocol_decoder:Aud&amp;diff=11620</id>
		<title>Protocol decoder:Aud</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Protocol_decoder:Aud&amp;diff=11620"/>
		<updated>2016-04-07T15:35:41Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: Created page with &amp;quot;= Renesas/Hitachi AUD (Advanced User Debugger) =  The AUD (Advanced User Debugger) port of certain Renesas / Hitachi microcontrollers has two modes of peration, &amp;quot;Branch Trace...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Renesas/Hitachi AUD (Advanced User Debugger) =&lt;br /&gt;
&lt;br /&gt;
The AUD (Advanced User Debugger) port of certain Renesas / Hitachi microcontrollers has two modes of peration, &amp;quot;Branch Trace mode&amp;quot; and &amp;quot;RAM monitor mode&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Currently the protocol decoder implementation only recognizes &amp;quot;Branch Trace&amp;quot; mode.&lt;br /&gt;
&lt;br /&gt;
The AUD protocol is described in the microcontroller datasheets, such as [http://www.renesas.eu/products/mpumcu/superh/sh7050/sh7058/Documentation.jsp rej09b0046 - SH7058 Hardware manual]&lt;br /&gt;
&lt;br /&gt;
Refer to the AUD chapter for functional description, and the AC characteristics chapter for timing diagrams.&lt;br /&gt;
&lt;br /&gt;
== Interface description ==&lt;br /&gt;
The interface itself is 4 data lines, and 4 control lines (reset, clock, mode, sync):&lt;br /&gt;
# AUDCK&lt;br /&gt;
# nAUDSYNC&lt;br /&gt;
# nAUDRST&lt;br /&gt;
# nAUDMD&lt;br /&gt;
# AUDATA3&lt;br /&gt;
# AUDATA2&lt;br /&gt;
# AUDATA1&lt;br /&gt;
# AUDATA0&lt;br /&gt;
&lt;br /&gt;
== Modes of operation ==&lt;br /&gt;
=== Branch trace mode ===&lt;br /&gt;
In this mode, the mcu generates the clock signal on AUDCK (typically 20MHz) and shifts out a 4-bit nibble every clock. Therefore , specialized or very fast hardware is required to read the data. FPGA / CPLD based interfaces, or a logic analyzer capable of sampling at least 6 simultaneous channels at &amp;gt;= 80MSps, can do this. 40MSps gives very inconsistent results since the LA sampling clock is always at least a few ppm away from the target clock, and the AUDCK edges are sometimes missed.&lt;br /&gt;
&lt;br /&gt;
Alternately, a logic analyzer capable of state analysis at 20MHz (capturing on rising edges of AUDCK) should be sufficient. Unfortunately, cheap hardware like Logic/Logic16 clones do not support this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RAM monitor mode ===&lt;br /&gt;
The AUD port accepts commands to read/write to the RAM. Decoding this mode is not implemented at the moment.&lt;br /&gt;
&lt;br /&gt;
== Timing diagrams ==&lt;br /&gt;
[[File:AUD_timing.png]]&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File:AUD_timing.png&amp;diff=11619</id>
		<title>File:AUD timing.png</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File:AUD_timing.png&amp;diff=11619"/>
		<updated>2016-04-07T15:34:51Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: AUD protocol timing diagrams. Source : &amp;quot;SH-2E SH7058 F-ZTAT TM Hardware manual&amp;quot;, Renesas document # rej09b0046 .&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AUD protocol timing diagrams. Source : &amp;quot;SH-2E SH7058 F-ZTAT TM Hardware manual&amp;quot;, Renesas document # rej09b0046 .&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Mcupro_Logic16_clone&amp;diff=11618</id>
		<title>Mcupro Logic16 clone</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Mcupro_Logic16_clone&amp;diff=11618"/>
		<updated>2016-04-07T02:49:15Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: /* Hardware (2014-01-25 variant) */ channel input info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:mcupro Logic16 clone}}&lt;br /&gt;
{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Mcupro_Logic16_overview.png|180px]]&lt;br /&gt;
| name             = mcupro Logic16 clone&lt;br /&gt;
| status           = supported&lt;br /&gt;
| source_code_dir  = saleae-logic16&lt;br /&gt;
| channels         = 3/6/9/16&lt;br /&gt;
| samplerate       = 100/50/32/16MHz&lt;br /&gt;
| samplerate_state = &amp;amp;mdash;&lt;br /&gt;
| triggers         = none (SW-only)&lt;br /&gt;
| voltages         = -0.9V &amp;amp;mdash; 6V&lt;br /&gt;
| threshold        = 1.5V (operates with 3.3V logic)&lt;br /&gt;
| memory           = none&lt;br /&gt;
| compression      = yes&lt;br /&gt;
| website          = [http://www.aliexpress.com/store/product/USB-Logic-Analyzer-100M-max-sample-rate-16Channels-10B-samples-MCU-ARM-FPGA-debug-tool/614202_1916810169.html aliexpress.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;mcupro Logic16 clone&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyzer with 100/50/32/16MHz sampling rate (at 3/6/9/16 enabled channels).&lt;br /&gt;
&lt;br /&gt;
This is a clone of the [[Saleae Logic16]].&lt;br /&gt;
&lt;br /&gt;
See [[mcupro Logic16 clone/Info]] for more details (such as &amp;#039;&amp;#039;&amp;#039;lsusb -v&amp;#039;&amp;#039;&amp;#039; output) about the device.&lt;br /&gt;
&lt;br /&gt;
== Hardware (Actel variant) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: [https://www.actel.com/documents/PA3_DS.pdf Actel A3P125]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: [http://www.atmel.com/Images/doc3256.pdf Atmel 24C02N]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-3.3]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-1.5]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
&lt;br /&gt;
== Hardware (Cyclone variant) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: [https://www.altera.com/products/fpga/cyclone-series/cyclone/support.html#Cyclone-Device-Handbook--All-Sections- Altera Cyclone EP1C3T100]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: [http://www.atmel.com/Images/doc3256.pdf Atmel 24C02N]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-3.3]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-1.5]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: 100MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bootstrap controller&amp;#039;&amp;#039;&amp;#039;: STCMCU 15F10, 8051 compatible&lt;br /&gt;
&lt;br /&gt;
== Hardware (2015-01-08 variant) ==&lt;br /&gt;
&lt;br /&gt;
The PCB is marked &amp;quot;Saleae Logic 16 By MCUPro 2015-1-8&amp;quot;. Readily identifiable by the irregular PCB traces, and switching power supplies. This comes in a different case, identical to the [[Noname_XL-LOGIC16-100M]].&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: Markings ground off&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: Markings ground off&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://www.techcodesemi.com/cn/products_info.asp?pid=26 TD 6810] adjustable version + 150k/680k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://www.techcodesemi.com/cn/products_info.asp?pid=26 TD 6810] adjustable version + 160k/240k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: Looks like 32MHz?&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bootstrap controller&amp;#039;&amp;#039;&amp;#039;: Not required?&lt;br /&gt;
&lt;br /&gt;
== Hardware (2014-01-25 variant) ==&lt;br /&gt;
&lt;br /&gt;
The PCB is marked &amp;quot;Saleae Logic 16 mcupro 2014.1.25&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: Markings ground off, pinout would indicate a Cyclone EP1C3 (JTAG IDCODE not confirmed yet)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: Markings sometimes ground off ? CY7C68013A&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: marked &amp;quot;DKF 24.000&amp;quot;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: marked &amp;quot;RAK32.00&amp;quot;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics (see [https://www.micron.com/~/media/documents/products/data-sheet/nor-flash/serial-nor/m25p/m25p10a.pdf Micron M25P10] too)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: Markings ground off&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: unknown switching regulator (marked &amp;quot;IC5CJ&amp;quot; ?) + 150k/680k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: unknown switching regulator (marked &amp;quot;IC5CJ&amp;quot; ?) + 160k/240k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Channel input buffering&amp;#039;&amp;#039;&amp;#039;: none, only simple resistor (510R) + TVS diode array protection (possibly [http://www.semtech.com/images/datasheet/srv05-4.pdf Semtech SRV05])&lt;br /&gt;
&lt;br /&gt;
The bottom two channels are not GND, but SCK (sample clock out) and HCK (half of SCK out).&lt;br /&gt;
&lt;br /&gt;
== Photos (Actel) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_top.jpeg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_bottom.jpeg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_top.jpeg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_bottom.jpeg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (Cyclone) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_top.jpeg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_bottom.jpeg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro Logic16 Variant2 top.jpg|&amp;lt;small&amp;gt;PCB with Altera Cyclone, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:IMG 0207 v1.JPG|&amp;lt;small&amp;gt;PCB with Altera Cyclone, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro Logic16 Variant2 top flash+uC.jpg|&amp;lt;small&amp;gt;PCB, top, 1MBit flash and STCMCU uC&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (2015-01-08 variant) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Xl-logic16-100m-external.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-top-overview.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-bottom-overview.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-voltage-regulators.jpg|&amp;lt;small&amp;gt;PCB, 3.3 and 1.5 voltage regulators&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-bottom-markings-intact.jpg|&amp;lt;small&amp;gt;PCB, bottom - chip markings intact&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (2014-01-25 variant) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:seleae-logic16-aliexpress-clone.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-top_ortho.jpg|&amp;lt;small&amp;gt;PCB top detail&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-bottom_ortho.jpg|&amp;lt;small&amp;gt;PCB bottom detail&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-top-overview.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-bottom-overview.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
See [[Saleae_Logic16#Protocol]].&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
;Actel variant&lt;br /&gt;
: This logic analyzer works with unmodified Saleae software. The Actel FPGA has on-chip flash storage, so it only requires an upload of Cypress FX2LP firmware in order to operate.&lt;br /&gt;
;Cyclone variant&lt;br /&gt;
: This logic analyzer works with unmodified Saleae software. The PCB contains an SPI flash chip, so it only requires an upload of Cypress FX2LP firmware in order to operate.&lt;br /&gt;
;2015-01-08 variant&lt;br /&gt;
: Only requires an upload of Cypress FX2LP firmware to operate. Open-source binaries from [https://github.com/gregani/la16fw gregani] work, but must be renamed to &amp;#039;&amp;#039;&amp;#039;saleae-logic16-fx2.fw&amp;#039;&amp;#039;&amp;#039;. It also requires a [[libsigrok]] more recent than 2014-08-22 to work (see bug [http://sigrok.org/bugzilla/show_bug.cgi?id=680#c4 #680]).&lt;br /&gt;
;2014-01-25 variant&lt;br /&gt;
: Seems to have the bitstream in internal flash, so it only requires an upload of Cypress FX2LP firmware in order to operate. This requires a [[libsigrok]] more recent than 2014-08-22 to work (see bug [http://sigrok.org/bugzilla/show_bug.cgi?id=680#c4 #680]).&lt;br /&gt;
&lt;br /&gt;
The firmware extraction steps are identical to [[Saleae_Logic16#Firmware|steps for Saleae Logic16]], however you only need to have &amp;#039;&amp;#039;&amp;#039;saleae-logic16-fx2.fw&amp;#039;&amp;#039;&amp;#039; installed.&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:Supported]]&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Mcupro_Logic16_clone&amp;diff=11617</id>
		<title>Mcupro Logic16 clone</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Mcupro_Logic16_clone&amp;diff=11617"/>
		<updated>2016-04-07T02:31:08Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: /* Photos (2014-01-25 variant) */  added higher res, ortho PCB photos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:mcupro Logic16 clone}}&lt;br /&gt;
{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Mcupro_Logic16_overview.png|180px]]&lt;br /&gt;
| name             = mcupro Logic16 clone&lt;br /&gt;
| status           = supported&lt;br /&gt;
| source_code_dir  = saleae-logic16&lt;br /&gt;
| channels         = 3/6/9/16&lt;br /&gt;
| samplerate       = 100/50/32/16MHz&lt;br /&gt;
| samplerate_state = &amp;amp;mdash;&lt;br /&gt;
| triggers         = none (SW-only)&lt;br /&gt;
| voltages         = -0.9V &amp;amp;mdash; 6V&lt;br /&gt;
| threshold        = 1.5V (operates with 3.3V logic)&lt;br /&gt;
| memory           = none&lt;br /&gt;
| compression      = yes&lt;br /&gt;
| website          = [http://www.aliexpress.com/store/product/USB-Logic-Analyzer-100M-max-sample-rate-16Channels-10B-samples-MCU-ARM-FPGA-debug-tool/614202_1916810169.html aliexpress.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;mcupro Logic16 clone&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyzer with 100/50/32/16MHz sampling rate (at 3/6/9/16 enabled channels).&lt;br /&gt;
&lt;br /&gt;
This is a clone of the [[Saleae Logic16]].&lt;br /&gt;
&lt;br /&gt;
See [[mcupro Logic16 clone/Info]] for more details (such as &amp;#039;&amp;#039;&amp;#039;lsusb -v&amp;#039;&amp;#039;&amp;#039; output) about the device.&lt;br /&gt;
&lt;br /&gt;
== Hardware (Actel variant) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: [https://www.actel.com/documents/PA3_DS.pdf Actel A3P125]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: [http://www.atmel.com/Images/doc3256.pdf Atmel 24C02N]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-3.3]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-1.5]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
&lt;br /&gt;
== Hardware (Cyclone variant) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: [https://www.altera.com/products/fpga/cyclone-series/cyclone/support.html#Cyclone-Device-Handbook--All-Sections- Altera Cyclone EP1C3T100]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: [http://www.atmel.com/Images/doc3256.pdf Atmel 24C02N]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-3.3]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-1.5]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: 100MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bootstrap controller&amp;#039;&amp;#039;&amp;#039;: STCMCU 15F10, 8051 compatible&lt;br /&gt;
&lt;br /&gt;
== Hardware (2015-01-08 variant) ==&lt;br /&gt;
&lt;br /&gt;
The PCB is marked &amp;quot;Saleae Logic 16 By MCUPro 2015-1-8&amp;quot;. Readily identifiable by the irregular PCB traces, and switching power supplies. This comes in a different case, identical to the [[Noname_XL-LOGIC16-100M]].&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: Markings ground off&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: Markings ground off&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://www.techcodesemi.com/cn/products_info.asp?pid=26 TD 6810] adjustable version + 150k/680k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://www.techcodesemi.com/cn/products_info.asp?pid=26 TD 6810] adjustable version + 160k/240k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: Looks like 32MHz?&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bootstrap controller&amp;#039;&amp;#039;&amp;#039;: Not required?&lt;br /&gt;
&lt;br /&gt;
== Hardware (2014-01-25 variant) ==&lt;br /&gt;
&lt;br /&gt;
The PCB is marked &amp;quot;Saleae Logic 16 mcupro 2014.1.25&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: Markings ground off, pinout would indicate a Cyclone EP1C3 (JTAG IDCODE not confirmed yet)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: Markings sometimes ground off ? CY7C68013A&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: marked &amp;quot;DKF 24.000&amp;quot;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: marked &amp;quot;RAK32.00&amp;quot;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics (see Micron M25P10 [https://www.micron.com/~/media/documents/products/data-sheet/nor-flash/serial-nor/m25p/m25p10a.pdf datasheet] too)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: Markings ground off&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: unknown switching regulator (marked &amp;quot;IC5CJ&amp;quot; ?) + 150k/680k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: unknown switching regulator (marked &amp;quot;IC5CJ&amp;quot; ?) + 160k/240k resistors pair&lt;br /&gt;
&lt;br /&gt;
The bottom two channels are not GND, but SCK (sample clock out) and HCK (half of SCK out).&lt;br /&gt;
&lt;br /&gt;
== Photos (Actel) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_top.jpeg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_bottom.jpeg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_top.jpeg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_bottom.jpeg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (Cyclone) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_top.jpeg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_bottom.jpeg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro Logic16 Variant2 top.jpg|&amp;lt;small&amp;gt;PCB with Altera Cyclone, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:IMG 0207 v1.JPG|&amp;lt;small&amp;gt;PCB with Altera Cyclone, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro Logic16 Variant2 top flash+uC.jpg|&amp;lt;small&amp;gt;PCB, top, 1MBit flash and STCMCU uC&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (2015-01-08 variant) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Xl-logic16-100m-external.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-top-overview.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-bottom-overview.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-voltage-regulators.jpg|&amp;lt;small&amp;gt;PCB, 3.3 and 1.5 voltage regulators&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-bottom-markings-intact.jpg|&amp;lt;small&amp;gt;PCB, bottom - chip markings intact&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (2014-01-25 variant) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:seleae-logic16-aliexpress-clone.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-top_ortho.jpg|&amp;lt;small&amp;gt;PCB top detail&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-bottom_ortho.jpg|&amp;lt;small&amp;gt;PCB bottom detail&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-top-overview.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-bottom-overview.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
See [[Saleae_Logic16#Protocol]].&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
;Actel variant&lt;br /&gt;
: This logic analyzer works with unmodified Saleae software. The Actel FPGA has on-chip flash storage, so it only requires an upload of Cypress FX2LP firmware in order to operate.&lt;br /&gt;
;Cyclone variant&lt;br /&gt;
: This logic analyzer works with unmodified Saleae software. The PCB contains an SPI flash chip, so it only requires an upload of Cypress FX2LP firmware in order to operate.&lt;br /&gt;
;2015-01-08 variant&lt;br /&gt;
: Only requires an upload of Cypress FX2LP firmware to operate. Open-source binaries from [https://github.com/gregani/la16fw gregani] work, but must be renamed to &amp;#039;&amp;#039;&amp;#039;saleae-logic16-fx2.fw&amp;#039;&amp;#039;&amp;#039;. It also requires a [[libsigrok]] more recent than 2014-08-22 to work (see bug [http://sigrok.org/bugzilla/show_bug.cgi?id=680#c4 #680]).&lt;br /&gt;
;2014-01-25 variant&lt;br /&gt;
: Seems to have the bitstream in internal flash, so it only requires an upload of Cypress FX2LP firmware in order to operate. This requires a [[libsigrok]] more recent than 2014-08-22 to work (see bug [http://sigrok.org/bugzilla/show_bug.cgi?id=680#c4 #680]).&lt;br /&gt;
&lt;br /&gt;
The firmware extraction steps are identical to [[Saleae_Logic16#Firmware|steps for Saleae Logic16]], however you only need to have &amp;#039;&amp;#039;&amp;#039;saleae-logic16-fx2.fw&amp;#039;&amp;#039;&amp;#039; installed.&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:Supported]]&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File:Mcupro-2014-1-25-top_ortho.jpg&amp;diff=11616</id>
		<title>File:Mcupro-2014-1-25-top ortho.jpg</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File:Mcupro-2014-1-25-top_ortho.jpg&amp;diff=11616"/>
		<updated>2016-04-07T02:29:51Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: mcupro Logic16 clone, &amp;quot;2014-1-24&amp;quot; variant, PCB top, perspective corrected&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
mcupro Logic16 clone, &amp;quot;2014-1-24&amp;quot; variant, PCB top, perspective corrected&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{CC-BY-SA-3.0}}&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File:Mcupro-2014-1-25-bottom_ortho.jpg&amp;diff=11615</id>
		<title>File:Mcupro-2014-1-25-bottom ortho.jpg</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File:Mcupro-2014-1-25-bottom_ortho.jpg&amp;diff=11615"/>
		<updated>2016-04-07T02:27:23Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: mcupro Logic16 clone, &amp;quot;2014-1-24&amp;quot; variant, PCB bottom w/ perspective corrected&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
mcupro Logic16 clone, &amp;quot;2014-1-24&amp;quot; variant, PCB bottom w/ perspective corrected&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{CC-BY-SA-3.0}}&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Mcupro_Logic16_clone&amp;diff=11614</id>
		<title>Mcupro Logic16 clone</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Mcupro_Logic16_clone&amp;diff=11614"/>
		<updated>2016-04-06T19:21:04Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: /* Hardware (Cylone variant) */  &amp;quot;Cyclone&amp;quot; typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:mcupro Logic16 clone}}&lt;br /&gt;
{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Mcupro_Logic16_overview.png|180px]]&lt;br /&gt;
| name             = mcupro Logic16 clone&lt;br /&gt;
| status           = supported&lt;br /&gt;
| source_code_dir  = saleae-logic16&lt;br /&gt;
| channels         = 3/6/9/16&lt;br /&gt;
| samplerate       = 100/50/32/16MHz&lt;br /&gt;
| samplerate_state = &amp;amp;mdash;&lt;br /&gt;
| triggers         = none (SW-only)&lt;br /&gt;
| voltages         = -0.9V &amp;amp;mdash; 6V&lt;br /&gt;
| threshold        = 1.5V (operates with 3.3V logic)&lt;br /&gt;
| memory           = none&lt;br /&gt;
| compression      = yes&lt;br /&gt;
| website          = [http://www.aliexpress.com/store/product/USB-Logic-Analyzer-100M-max-sample-rate-16Channels-10B-samples-MCU-ARM-FPGA-debug-tool/614202_1916810169.html aliexpress.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;mcupro Logic16 clone&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyzer with 100/50/32/16MHz sampling rate (at 3/6/9/16 enabled channels).&lt;br /&gt;
&lt;br /&gt;
This is a clone of the [[Saleae Logic16]].&lt;br /&gt;
&lt;br /&gt;
See [[mcupro Logic16 clone/Info]] for more details (such as &amp;#039;&amp;#039;&amp;#039;lsusb -v&amp;#039;&amp;#039;&amp;#039; output) about the device.&lt;br /&gt;
&lt;br /&gt;
== Hardware (Actel variant) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: [https://www.actel.com/documents/PA3_DS.pdf Actel A3P125]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: [http://www.atmel.com/Images/doc3256.pdf Atmel 24C02N]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-3.3]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-1.5]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
&lt;br /&gt;
== Hardware (Cyclone variant) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: [https://www.altera.com/products/fpga/cyclone-series/cyclone/support.html#Cyclone-Device-Handbook--All-Sections- Altera Cyclone EP1C3T100]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: [http://www.atmel.com/Images/doc3256.pdf Atmel 24C02N]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-3.3]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-1.5]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: 100MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bootstrap controller&amp;#039;&amp;#039;&amp;#039;: STCMCU 15F10, 8051 compatible&lt;br /&gt;
&lt;br /&gt;
== Hardware (2015-01-08 variant) ==&lt;br /&gt;
&lt;br /&gt;
The PCB is marked &amp;quot;Saleae Logic 16 By MCUPro 2015-1-8&amp;quot;. Readily identifiable by the irregular PCB traces, and switching power supplies. This comes in a different case, identical to the [[Noname_XL-LOGIC16-100M]].&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: Markings ground off&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: Markings ground off&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://www.techcodesemi.com/cn/products_info.asp?pid=26 TD 6810] adjustable version + 150k/680k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://www.techcodesemi.com/cn/products_info.asp?pid=26 TD 6810] adjustable version + 160k/240k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: Looks like 32MHz?&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bootstrap controller&amp;#039;&amp;#039;&amp;#039;: Not required?&lt;br /&gt;
&lt;br /&gt;
== Hardware (2014-01-25 variant) ==&lt;br /&gt;
&lt;br /&gt;
The PCB is marked &amp;quot;Saleae Logic 16 mcupro 2014.1.25&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: Markings ground off, pinout would indicate a Cyclone EP1C3 (JTAG IDCODE not confirmed yet)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: Markings sometimes ground off ? CY7C68013A&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: marked &amp;quot;DKF 24.000&amp;quot;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: marked &amp;quot;RAK32.00&amp;quot;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics (see Micron M25P10 [https://www.micron.com/~/media/documents/products/data-sheet/nor-flash/serial-nor/m25p/m25p10a.pdf datasheet] too)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: Markings ground off&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: unknown switching regulator (marked &amp;quot;IC5CJ&amp;quot; ?) + 150k/680k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: unknown switching regulator (marked &amp;quot;IC5CJ&amp;quot; ?) + 160k/240k resistors pair&lt;br /&gt;
&lt;br /&gt;
The bottom two channels are not GND, but SCK (sample clock out) and HCK (half of SCK out).&lt;br /&gt;
&lt;br /&gt;
== Photos (Actel) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_top.jpeg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_bottom.jpeg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_top.jpeg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_bottom.jpeg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (Cyclone) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_top.jpeg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_bottom.jpeg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro Logic16 Variant2 top.jpg|&amp;lt;small&amp;gt;PCB with Altera Cyclone, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:IMG 0207 v1.JPG|&amp;lt;small&amp;gt;PCB with Altera Cyclone, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro Logic16 Variant2 top flash+uC.jpg|&amp;lt;small&amp;gt;PCB, top, 1MBit flash and STCMCU uC&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (2015-01-08 variant) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Xl-logic16-100m-external.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-top-overview.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-bottom-overview.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-voltage-regulators.jpg|&amp;lt;small&amp;gt;PCB, 3.3 and 1.5 voltage regulators&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-bottom-markings-intact.jpg|&amp;lt;small&amp;gt;PCB, bottom - chip markings intact&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (2014-01-25 variant) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:seleae-logic16-aliexpress-clone.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-top-overview.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-bottom-overview.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
See [[Saleae_Logic16#Protocol]].&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
;Actel variant&lt;br /&gt;
: This logic analyzer works with unmodified Saleae software. The Actel FPGA has on-chip flash storage, so it only requires an upload of Cypress FX2LP firmware in order to operate.&lt;br /&gt;
;Cyclone variant&lt;br /&gt;
: This logic analyzer works with unmodified Saleae software. The PCB contains an SPI flash chip, so it only requires an upload of Cypress FX2LP firmware in order to operate.&lt;br /&gt;
;2015-01-08 variant&lt;br /&gt;
: Only requires an upload of Cypress FX2LP firmware to operate. Open-source binaries from [https://github.com/gregani/la16fw gregani] work, but must be renamed to &amp;#039;&amp;#039;&amp;#039;saleae-logic16-fx2.fw&amp;#039;&amp;#039;&amp;#039;. It also requires a [[libsigrok]] more recent than 2014-08-22 to work (see bug [http://sigrok.org/bugzilla/show_bug.cgi?id=680#c4 #680]).&lt;br /&gt;
;2014-01-25 variant&lt;br /&gt;
: Seems to have the bitstream in internal flash, so it only requires an upload of Cypress FX2LP firmware in order to operate. This requires a [[libsigrok]] more recent than 2014-08-22 to work (see bug [http://sigrok.org/bugzilla/show_bug.cgi?id=680#c4 #680]).&lt;br /&gt;
&lt;br /&gt;
The firmware extraction steps are identical to [[Saleae_Logic16#Firmware|steps for Saleae Logic16]], however you only need to have &amp;#039;&amp;#039;&amp;#039;saleae-logic16-fx2.fw&amp;#039;&amp;#039;&amp;#039; installed.&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:Supported]]&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Mcupro_Logic16_clone&amp;diff=11613</id>
		<title>Mcupro Logic16 clone</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Mcupro_Logic16_clone&amp;diff=11613"/>
		<updated>2016-04-06T19:15:55Z</updated>

		<summary type="html">&lt;p&gt;Fenugrec: /* Hardware (2014-01-25 variant) */  added tentative FPGA + IC info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:mcupro Logic16 clone}}&lt;br /&gt;
{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Mcupro_Logic16_overview.png|180px]]&lt;br /&gt;
| name             = mcupro Logic16 clone&lt;br /&gt;
| status           = supported&lt;br /&gt;
| source_code_dir  = saleae-logic16&lt;br /&gt;
| channels         = 3/6/9/16&lt;br /&gt;
| samplerate       = 100/50/32/16MHz&lt;br /&gt;
| samplerate_state = &amp;amp;mdash;&lt;br /&gt;
| triggers         = none (SW-only)&lt;br /&gt;
| voltages         = -0.9V &amp;amp;mdash; 6V&lt;br /&gt;
| threshold        = 1.5V (operates with 3.3V logic)&lt;br /&gt;
| memory           = none&lt;br /&gt;
| compression      = yes&lt;br /&gt;
| website          = [http://www.aliexpress.com/store/product/USB-Logic-Analyzer-100M-max-sample-rate-16Channels-10B-samples-MCU-ARM-FPGA-debug-tool/614202_1916810169.html aliexpress.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;mcupro Logic16 clone&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyzer with 100/50/32/16MHz sampling rate (at 3/6/9/16 enabled channels).&lt;br /&gt;
&lt;br /&gt;
This is a clone of the [[Saleae Logic16]].&lt;br /&gt;
&lt;br /&gt;
See [[mcupro Logic16 clone/Info]] for more details (such as &amp;#039;&amp;#039;&amp;#039;lsusb -v&amp;#039;&amp;#039;&amp;#039; output) about the device.&lt;br /&gt;
&lt;br /&gt;
== Hardware (Actel variant) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: [https://www.actel.com/documents/PA3_DS.pdf Actel A3P125]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: [http://www.atmel.com/Images/doc3256.pdf Atmel 24C02N]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-3.3]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-1.5]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
&lt;br /&gt;
== Hardware (Cylone variant) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: [https://www.altera.com/products/fpga/cyclone-series/cyclone/support.html#Cyclone-Device-Handbook--All-Sections- Altera Cyclone EP1C3T100]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: [http://www.atmel.com/Images/doc3256.pdf Atmel 24C02N]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-3.3]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://ams-semitech.com/attachments/File/AMS1117_20120314.pdf Advanced Monolithic Systems AMS1117-1.5]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: 100MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bootstrap controller&amp;#039;&amp;#039;&amp;#039;: STCMCU 15F10, 8051 compatible&lt;br /&gt;
&lt;br /&gt;
== Hardware (2015-01-08 variant) ==&lt;br /&gt;
&lt;br /&gt;
The PCB is marked &amp;quot;Saleae Logic 16 By MCUPro 2015-1-8&amp;quot;. Readily identifiable by the irregular PCB traces, and switching power supplies. This comes in a different case, identical to the [[Noname_XL-LOGIC16-100M]].&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: Markings ground off&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: [http://www.cypress.com/?docID=45142 Cypress CY7C68013A]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: Markings ground off&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://www.techcodesemi.com/cn/products_info.asp?pid=26 TD 6810] adjustable version + 150k/680k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: [http://www.techcodesemi.com/cn/products_info.asp?pid=26 TD 6810] adjustable version + 160k/240k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: 24MHz&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: Looks like 32MHz?&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bootstrap controller&amp;#039;&amp;#039;&amp;#039;: Not required?&lt;br /&gt;
&lt;br /&gt;
== Hardware (2014-01-25 variant) ==&lt;br /&gt;
&lt;br /&gt;
The PCB is marked &amp;quot;Saleae Logic 16 mcupro 2014.1.25&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;: Markings ground off, pinout would indicate a Cyclone EP1C3 (JTAG IDCODE not confirmed yet)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;USB interface chip&amp;#039;&amp;#039;&amp;#039;: Markings sometimes ground off ? CY7C68013A&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FX2)&amp;#039;&amp;#039;&amp;#039;: marked &amp;quot;DKF 24.000&amp;quot;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Crystal (FPGA)&amp;#039;&amp;#039;&amp;#039;: marked &amp;quot;RAK32.00&amp;quot;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA bitstream&amp;#039;&amp;#039;&amp;#039;: 25P10 1MBit SPI NOR flash, ST Microelectronics (see Micron M25P10 [https://www.micron.com/~/media/documents/products/data-sheet/nor-flash/serial-nor/m25p/m25p10a.pdf datasheet] too)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I²C EEPROM&amp;#039;&amp;#039;&amp;#039;: Markings ground off&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3.3V voltage regulator&amp;#039;&amp;#039;&amp;#039;: unknown switching regulator (marked &amp;quot;IC5CJ&amp;quot; ?) + 150k/680k resistors pair&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1.5V voltage regulator&amp;#039;&amp;#039;&amp;#039;: unknown switching regulator (marked &amp;quot;IC5CJ&amp;quot; ?) + 160k/240k resistors pair&lt;br /&gt;
&lt;br /&gt;
The bottom two channels are not GND, but SCK (sample clock out) and HCK (half of SCK out).&lt;br /&gt;
&lt;br /&gt;
== Photos (Actel) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_top.jpeg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_bottom.jpeg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_top.jpeg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_bottom.jpeg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (Cyclone) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_top.jpeg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro_Logic16_case_bottom.jpeg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro Logic16 Variant2 top.jpg|&amp;lt;small&amp;gt;PCB with Altera Cyclone, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:IMG 0207 v1.JPG|&amp;lt;small&amp;gt;PCB with Altera Cyclone, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro Logic16 Variant2 top flash+uC.jpg|&amp;lt;small&amp;gt;PCB, top, 1MBit flash and STCMCU uC&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (2015-01-08 variant) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Xl-logic16-100m-external.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-top-overview.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-bottom-overview.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-voltage-regulators.jpg|&amp;lt;small&amp;gt;PCB, 3.3 and 1.5 voltage regulators&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2015-1-8-bottom-markings-intact.jpg|&amp;lt;small&amp;gt;PCB, bottom - chip markings intact&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos (2014-01-25 variant) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:seleae-logic16-aliexpress-clone.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-top-overview.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Mcupro-2014-1-25-bottom-overview.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
See [[Saleae_Logic16#Protocol]].&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
;Actel variant&lt;br /&gt;
: This logic analyzer works with unmodified Saleae software. The Actel FPGA has on-chip flash storage, so it only requires an upload of Cypress FX2LP firmware in order to operate.&lt;br /&gt;
;Cyclone variant&lt;br /&gt;
: This logic analyzer works with unmodified Saleae software. The PCB contains an SPI flash chip, so it only requires an upload of Cypress FX2LP firmware in order to operate.&lt;br /&gt;
;2015-01-08 variant&lt;br /&gt;
: Only requires an upload of Cypress FX2LP firmware to operate. Open-source binaries from [https://github.com/gregani/la16fw gregani] work, but must be renamed to &amp;#039;&amp;#039;&amp;#039;saleae-logic16-fx2.fw&amp;#039;&amp;#039;&amp;#039;. It also requires a [[libsigrok]] more recent than 2014-08-22 to work (see bug [http://sigrok.org/bugzilla/show_bug.cgi?id=680#c4 #680]).&lt;br /&gt;
;2014-01-25 variant&lt;br /&gt;
: Seems to have the bitstream in internal flash, so it only requires an upload of Cypress FX2LP firmware in order to operate. This requires a [[libsigrok]] more recent than 2014-08-22 to work (see bug [http://sigrok.org/bugzilla/show_bug.cgi?id=680#c4 #680]).&lt;br /&gt;
&lt;br /&gt;
The firmware extraction steps are identical to [[Saleae_Logic16#Firmware|steps for Saleae Logic16]], however you only need to have &amp;#039;&amp;#039;&amp;#039;saleae-logic16-fx2.fw&amp;#039;&amp;#039;&amp;#039; installed.&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:Supported]]&lt;/div&gt;</summary>
		<author><name>Fenugrec</name></author>
	</entry>
</feed>