james_crowley.intel_amt — Ansible collection for Intel AMT / vPro
Copyright (c) 2026 Jim Crowley

This collection is licensed under the GNU General Public License v3.0 or later.
See LICENSE for the full text.

================================================================================
Third-party attributions
================================================================================

This collection contains work derived from the following projects. Protocol
knowledge, wire formats, SCSI mode-page byte arrays, and IDE-R state-machine
behaviour were reimplemented in Python from these sources.

--------------------------------------------------------------------------------
1. MeshCentral
--------------------------------------------------------------------------------
   Copyright 2020-2021 Intel Corporation
   Author: Ylian Saint-Hilaire
   License: Apache License, Version 2.0
   Source: https://github.com/Ylianst/MeshCentral

   Files consulted and reimplemented:
     amt/amt-wsman.js
     amt/amt-wsman-comm.js
     amt/amt.js
     amt/amt-redir-mesh.js
     amt/amt-ider-module.js
     agents/meshcmd.js

   Specifically derived:
     - the redirection session handshake and digest authentication framing
       implemented in plugins/module_utils/redirection.py
     - the IDE-R command set, framing, and SCSI command emulation implemented
       in plugins/module_utils/ider.py, including the constant MODE_SENSE and
       GET_CONFIGURATION byte arrays
     - the AMT_BootSettingData / SetBootConfigRole / ChangeBootOrder ordering
       implemented in plugins/module_utils/client.py

   You may obtain a copy of the Apache License, Version 2.0 at:
     http://www.apache.org/licenses/LICENSE-2.0
   A copy is included at licenses/Apache-2.0.txt

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
   WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

   NOTE ON LICENSE COMPATIBILITY: the Apache License 2.0 is one-way compatible
   with GPLv3. Apache-2.0 licensed work may be incorporated into a GPL-3.0-or-later
   project, which is what this collection is. The combined work is distributed
   under GPL-3.0-or-later.

--------------------------------------------------------------------------------
2. parmstro/intel_amt
--------------------------------------------------------------------------------
   License: GPL-3.0-or-later
   Source: https://github.com/parmstro/intel_amt

   Consulted for:
     - the WS-Man SOAP envelope structure and digest-auth transport approach
       in plugins/module_utils/wsman.py
     - hardware-verified findings that Intel AMT 10.0.56 in Small Business Mode
       does not implement TLS on port 16993, which shaped this collection's
       transport policy (see docs/protocol-notes.md section 1.1)

   Files consulted:
     development/research/AMT_10_TLS_LIMITATION.md
     development/research/AMT_RESOURCE_DISCOVERY.md
     development/research/AMT_10_CAPABILITIES.md

   WHAT WAS TAKEN: protocol facts from the hardware research notes above --
   WS-Man class names, ResourceURIs, InstanceID selector strings, property
   names, observed property values, and the finding about which WS-Man verb
   each class accepts. These were dumped from a real Intel NUC5i5MYBE running
   AMT 10.0.56 build 3002. NO CODE was taken. Every implementation in this
   collection was written from the protocol facts, and that distinction is
   deliberate: that project's module code and user-facing documentation were
   assessed as unreliable (several of its modules report success while
   performing no operation, and its power-action constants map "reset" to CIM
   code 11, Diagnostic Interrupt/NMI, rather than 10, Master Bus Reset). Its
   research notes are the trustworthy artefact; its code is not.

   Specifically derived, per file:
     - plugins/module_utils/models.py -- the AMT_GeneralSettings,
       AMT_EthernetPortSettings and CIM_ComputerSystem property names parsed by
       EthernetSettings.from_instance() and SystemState.from_instance(), and the
       AMT_EthernetPortSettings LinkPolicy value table (1/2/14/15/16), whose
       values 1, 14 and 16 are corroborated by a live reading in
       development/research/AMT_RESOURCE_DISCOVERY.md. The DMTF EnabledState and
       OperationalStatus tables are from the DMTF CIM schema, not from that
       project (whose own decoding covers only OperationalStatus 0 and 2).
     - plugins/module_utils/client.py -- the InstanceID selector string
       "Intel(r) AMT Ethernet Port Settings 0", and the requirement to reach
       AMT_-prefixed classes with Get plus an exact selector rather than
       Enumerate, which returns HTTP 400 on AMT 10 for
       AMT_EthernetPortSettings, AMT_GeneralSettings, AMT_BootCapabilities,
       AMT_BootSettingData and AMT_TLSSettingData
       (development/research/AMT_10_CAPABILITIES.md).
     - plugins/modules/amt_info.py -- the resulting read-only fact set
       (amt.network, amt.system_state, amt.bios_version, and the additional
       AMT_GeneralSettings fields).
     - docs/protocol-notes.md section 2.7 -- the transcribed class/selector
       reference and the Enumerate-versus-Get finding.

   Both this collection and parmstro/intel_amt are licensed GPL-3.0-or-later,
   so no license-compatibility question arises. The project owner explicitly
   authorised this reuse with attribution.

--------------------------------------------------------------------------------
3. Intel AMT Implementation and Reference Guide
--------------------------------------------------------------------------------
   Copyright Intel Corporation. Consulted as documentation for power state
   transitions, boot configuration, redirection enablement, manageability port
   assignments, and security considerations.
