<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://freemyipod.org/index.php?action=history&amp;feed=atom&amp;title=EmCORE_Monitor_Protocol</id>
	<title>EmCORE Monitor Protocol - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://freemyipod.org/index.php?action=history&amp;feed=atom&amp;title=EmCORE_Monitor_Protocol"/>
	<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=EmCORE_Monitor_Protocol&amp;action=history"/>
	<updated>2026-05-26T12:37:51Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://freemyipod.org/index.php?title=EmCORE_Monitor_Protocol&amp;diff=4231&amp;oldid=prev</id>
		<title>User890104: clarification about EP0 USB debugging</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=EmCORE_Monitor_Protocol&amp;diff=4231&amp;oldid=prev"/>
		<updated>2014-05-08T13:13:09Z</updated>

		<summary type="html">&lt;p&gt;clarification about EP0 USB debugging&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:13, 8 May 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Endpoints ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Endpoints ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Template:Outdated|reason=since [http://websvn.freemyipod.org/revision.php?repname=freemyipod&amp;amp;path=%2F&amp;amp;rev=891 r891] emCORE uses only EP0 for debugging, the rest are used by the usermode USB API}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The emCORE Monitor interface contains 4 bulk endpoints, in the following order:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The emCORE Monitor interface contains 4 bulk endpoints, in the following order:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>User890104</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=EmCORE_Monitor_Protocol&amp;diff=3597&amp;oldid=prev</id>
		<title>Farthen: Created page with &quot;This article describes the USB communcation protocol of emCORE monitor.   == Endpoints ==  The emCORE Monitor interface contains 4 bulk endpoints, in the following order: * Comma...&quot;</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=EmCORE_Monitor_Protocol&amp;diff=3597&amp;oldid=prev"/>
		<updated>2011-01-16T20:36:27Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;This article describes the USB communcation protocol of emCORE monitor.   == Endpoints ==  The emCORE Monitor interface contains 4 bulk endpoints, in the following order: * Comma...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This article describes the USB communcation protocol of emCORE monitor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Endpoints ==&lt;br /&gt;
&lt;br /&gt;
The emCORE Monitor interface contains 4 bulk endpoints, in the following order:&lt;br /&gt;
* Command OUT Endpoint&lt;br /&gt;
* Command IN Endpoint&lt;br /&gt;
* Data OUT Endpoint&lt;br /&gt;
* Data IN Endpoint&lt;br /&gt;
&lt;br /&gt;
If not stated otherwise, everything is little endian.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General Structure ==&lt;br /&gt;
Each packet send to the Command OUT Endpoint has a 16 byte header. The first 4 bytes, interpreted as a 32bit little endian word, contain the command ID. The meaning of the other bytes depends on the command. For commands that send data to the device, it will immediately follow that header.&lt;br /&gt;
&lt;br /&gt;
After sending a packet to the Command OUT Endpoint, listen on the Command IN Endpoint for a response. The response also has a 16 byte header, followed by an optional data stage, depending on the command. The first 4 bytes of the header, interpreted as a 32bit word, is the status code, the meaning of the other bytes depends on the command.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Status Codes&lt;br /&gt;
|-&lt;br /&gt;
! Status Code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || Invalid response, you should bail out when receiving this&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 1 || OK (everything went fine)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 2 || Command not supported&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 3 || Device is busy, retry later (another asynchronous command is already running)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
&lt;br /&gt;
=== 0: Invalid ===&lt;br /&gt;
Never issue this command. It will be rejected with status code 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 1: Get device information ===&lt;br /&gt;
Use this command to figure out various device properties.&lt;br /&gt;
&lt;br /&gt;
==== Get version information ====&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Requested information type (0)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || SVN Revision Number&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 1 || Major version&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 9 || style=&amp;quot;text-align:right&amp;quot; | 1 || Minor version&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 10 || style=&amp;quot;text-align:right&amp;quot; | 1 || Patch version&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 11 || style=&amp;quot;text-align:right&amp;quot; | 1 || Software Type ID&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Device Type ID&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Software Types&lt;br /&gt;
|-&lt;br /&gt;
! Software Type ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || invalid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 2 || emCORE Debugger&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Hardware Types&lt;br /&gt;
|-&lt;br /&gt;
! Device Type ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || invalid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0x47324e49 || iPod Nano 2G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0x47334e49 || iPod Nano 3G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0x47344e49 || iPod Nano 4G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0x4c435049 || iPod Classic&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Get packet size information ====&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Requested information type (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 2 || Maximum Command OUT Endpoint packet size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 6 || style=&amp;quot;text-align:right&amp;quot; | 2 || Maximum Command IN Endpoint packet size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Maximum Data OUT Endpoint packet size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Maximum Data IN Endpoint packet size&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get user memory address range ====&lt;br /&gt;
Provides information about the range of memory not used by emCORE itself.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Requested information type (2)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Lower bound (inclusive) of the usable memory range&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Upper bound (exclusive) of the usable memory range&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2: Reset ===&lt;br /&gt;
Reboot the device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (2)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Type: Reboot forcibly (0) / Reboot gracefully (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Graceful reboots are asynchronous commands. Forced reboots won&amp;#039;t send a response packet before rebooting.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1 or 3)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The response indicates that the request has been acknowledged, however there might be substantial delay before device actually reboots.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3: Power off ===&lt;br /&gt;
Power the device off.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (3)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Type: Power off forcibly (0) / Shut down gracefully (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Both variants are asynchronous commands.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1 or 3)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The response indicates that the request has been acknowledged, however there might be substantial delay before device actually powers off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4: Read memory ===&lt;br /&gt;
Use this command to read small amouts of memory through the command pipe. You may not request a transfer that would exceed the maximum Command IN Endpoint packet size (including the header).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (4)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Memory address to read from&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes to be read&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 16 || style=&amp;quot;text-align:right&amp;quot; | variable || The data read from memory&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 5: Write memory ===&lt;br /&gt;
Use this command to write small amouts of memory through the command pipe. You may not request a transfer that would exceed the maximum Command OUT Endpoint packet size (including the header).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (5)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Memory address to write to&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes to write&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 16 || style=&amp;quot;text-align:right&amp;quot; | variable || The data to be written&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 6: Read memory using DMA ===&lt;br /&gt;
Use this command to read large amouts of memory through the data pipe. You may not request a transfer that would exceed the maximum Data IN Endpoint packet size.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (6)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Memory address to read from&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes to be read&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After receiving the response, read the requested data from the Data IN Endpoint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 7: Write memory using DMA ===&lt;br /&gt;
Use this command to read large amouts of memory through the data pipe. You may not request a transfer that would exceed the maximum Data OUT Endpoint packet size.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (7)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Memory address to write to&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes to be written&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After receiving the response, send the data to be written to the Data OUT Endpoint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 8: Read from I2C device ===&lt;br /&gt;
Use this command to read from an I2C slave. You may not request a transfer that would exceed the maximum Command IN Endpoint packet size (including the header) or 255 bytes (excluding the header), whichever is smaller.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (8)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 1 || I2C bus index&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 5 || style=&amp;quot;text-align:right&amp;quot; | 1 || I2C slave address (in the upper 7 bits)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 6 || style=&amp;quot;text-align:right&amp;quot; | 1 || Start address on the I2C device&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 7 || style=&amp;quot;text-align:right&amp;quot; | 1 || Number of bytes to be read (0 means 256)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
I2C transactions are asynchronous commands.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1 or 3)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 16 || style=&amp;quot;text-align:right&amp;quot; | variable || The data read from the I2C device (undefined if the status code is not 1)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 9: Write to I2C device ===&lt;br /&gt;
Use this command to write to an I2C slave. You may not request a transfer that would exceed the maximum Command OUT Endpoint packet size (including the header) or 255 bytes (excluding the header), whichever is smaller.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (9)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 1 || I2C bus index&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 5 || style=&amp;quot;text-align:right&amp;quot; | 1 || I2C slave address (in the upper 7 bits)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 6 || style=&amp;quot;text-align:right&amp;quot; | 1 || Start address on the I2C device&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 7 || style=&amp;quot;text-align:right&amp;quot; | 1 || Number of bytes to be written (0 means 256)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 16 || style=&amp;quot;text-align:right&amp;quot; | variable || The data to be written to the I2C device&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
I2C transactions are asynchronous commands.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1 or 3)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10: Read from the USB console ===&lt;br /&gt;
Use this command to get data written to the USB console. You may not request a transfer that would exceed the maximum Command IN Endpoint packet size (including the header).&lt;br /&gt;
&lt;br /&gt;
As long as the console application is running, make sure to issue this request at least once a second. Otherwise the console might start dropping data and inserting an &amp;quot;\n\n[overflowed]\n\n&amp;quot; mark. If you can&amp;#039;t receive any data but need to keep the console from dropping data, issue zero-length read requests.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (10)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes requested&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Actual number of valid response bytes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Size of the on-device USB console read buffer&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes still waiting in the on-device USB console read buffer&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 16 || style=&amp;quot;text-align:right&amp;quot; | variable || Valid console data padded with undefined data to meet the requested size&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 11: Write to the USB console ===&lt;br /&gt;
Use this command to write data to the USB console. You may not request a transfer that would exceed the maximum Command OUT Endpoint packet size (including the header).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (11)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes to be written&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 16 || style=&amp;quot;text-align:right&amp;quot; | variable || Data to be written&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Actual number of bytes written (the remainder will have to be resent)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Size of the on-device USB console write buffer&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes still free in the on-device USB console write buffer&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 12: Write to device&amp;#039;s consoles ===&lt;br /&gt;
Use this command to write data to one or more of the consoles. This is equivalent to the cwrite system call. You may not request a transfer that would exceed the maximum Command OUT Endpoint packet size (including the header).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (12)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Bitmask of consoles to be written to&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes to be written&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 16 || style=&amp;quot;text-align:right&amp;quot; | variable || Data to be written&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 13: Read from device&amp;#039;s consoles ===&lt;br /&gt;
Use this command to read data from one or more of the consoles. This is equivalent to the cread system call. You may not request a transfer that would exceed the maximum Command IN Endpoint packet size (including the header). This command will &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; block until there is data available.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (13)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Bitmask of consoles to be read from&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes to be read&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes actually read&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 16 || style=&amp;quot;text-align:right&amp;quot; | variable || The data read, padded with undefined data to meet the requested size&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 14: Flush device&amp;#039;s console buffers ===&lt;br /&gt;
Use this command to flush one or more console&amp;#039;s buffers. This is equivalent to the cflush system call.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (14)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Bitmask of consoles to be flushed&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 15: Get process information ===&lt;br /&gt;
Use this command to obtain the current state of the scheduler. You may not request a transfer that would exceed the maximum Command IN Endpoint packet size (including the header).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (15)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Offset of first byte requested&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes requested&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Process information struct version (incremented each time the format changes)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Total size of the process information table&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 16 || style=&amp;quot;text-align:right&amp;quot; | variable || The requested data, padded with undefined data to meet the requested size, if it exceeds bounds&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 16: (Un)Freeze scheduler ===&lt;br /&gt;
Use this command to prevent execution of userspace code on the device while dumping or manipulating critical data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (16)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Lock (1) or unlock (0) the scheduler&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Previous state: Locked (1) or unlocked (0)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 17: (Un)Suspend thread ===&lt;br /&gt;
Suspend or resume a thread&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (17)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Suspend (1) or resume (0) the thread&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Thread ID&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Previous state: Suspended (1) or running (0)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Undefined&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 18: Kill thread ===&lt;br /&gt;
Kill a thread&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (18)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Thread ID&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 19: Create thread ===&lt;br /&gt;
Create a new thread. This command uses an extended command size of 32 bytes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (19)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Pointer to thread name or NULL&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Pointer to entry point of the new thread&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Pointer to stack of the new thread&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 16 || style=&amp;quot;text-align:right&amp;quot; | 4 || Size of the new thread&amp;#039;s stack in bytes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 20 || style=&amp;quot;text-align:right&amp;quot; | 4 || Type: User thread (0) or system thread (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 24 || style=&amp;quot;text-align:right&amp;quot; | 4 || Priority of the new thread (1-255)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 28 || style=&amp;quot;text-align:right&amp;quot; | 4 || Initial state: Ready (1) or suspended (0)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || ID of the created thread (positive) or error code (negative)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 20: Flush CPU caches ===&lt;br /&gt;
Flushes the CPU&amp;#039;s instruction and data caches&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (20)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 21: Execute image ===&lt;br /&gt;
Executes an emCORE executable image. This is an asynchronous command.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (21)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Memory address where the image to be executed is located&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1, does not mean it actually succeeded)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || The return code of execimage(). Use this to check for success.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 22: Read raw boot flash ===&lt;br /&gt;
Reads raw data from the boot flash to RAM. This is an asynchronous command.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (22)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Memory address to copy the data to&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Bootflash address to read from&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes to be copied&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 23: Write raw boot flash ===&lt;br /&gt;
Writes raw data to the boot flash. Don&amp;#039;t call this unless you really know what you&amp;#039;re doing. This is an asynchronous command.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (23)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Memory address to read from&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Bootflash address to write to&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes to be copied (must be an integer multiple of the boot flash width)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24: Execute firmware ===&lt;br /&gt;
Executes a firmware image at the specified address. This is an asynchronous command.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (24)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Memory address where the firmware image to be booted is located&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 25: Hardware key AES ===&lt;br /&gt;
Encrypt or decrypt a buffer using a hardware key. This is an asynchronous command.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (25)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 1 || Decrypt (0) / Encrypt (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 5 || style=&amp;quot;text-align:right&amp;quot; | 1 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 6 || style=&amp;quot;text-align:right&amp;quot; | 2 || Hardware key index&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Memory address of the buffer to be encrypted/decrypted&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Size of the buffer to be encrypted/decrypted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 26: HMAC-SHA1 ===&lt;br /&gt;
Generate a HMAC-SHA1 hash of a buffer. This is an asynchronous command.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (26)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Memory address of the buffer to be hashed&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Size of the buffer to be hashed&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Destination address where the hash is stored&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Farthen</name></author>
	</entry>
</feed>