From af75105f35329916ba1a3a3e55108c6fe61fc4ad Mon Sep 17 00:00:00 2001 From: TheSilentCoder <184309164+ThatSilentCoder@users.noreply.github.com> Date: Wed, 16 Oct 2024 17:59:58 -0400 Subject: [PATCH 01/22] issue_847: Started handling a good chunk of the styling issues. Lots of javadocumenting. --- .../AttestationCertificateAuthority.java | 69 ++++++---- .../persist/CriteriaModifier.java | 3 + .../persist/DBManagerException.java | 14 +- .../persist/FilteredRecordsList.java | 6 +- ...estfulAttestationCertificateAuthority.java | 19 +-- .../persist/RestfulInterface.java | 12 ++ .../persist/entity/AbstractEntity.java | 17 ++- .../persist/entity/Appraiser.java | 6 +- .../manager/CACredentialRepository.java | 69 +++++++++- .../entity/manager/CertificateRepository.java | 96 +++++++++++++ .../entity/manager/DeviceRepository.java | 6 + .../EndorsementCredentialRepository.java | 35 +++++ .../manager/IDevIDCertificateRepository.java | 13 ++ .../manager/IssuedCertificateRepository.java | 19 +++ .../PlatformCertificateRepository.java | 21 +++ .../entity/manager/PolicyRepository.java | 7 + .../ReferenceDigestValueRepository.java | 42 ++++++ .../manager/ReferenceManifestRepository.java | 126 +++++++++++++++++- .../SupplyChainValidationRepository.java | 13 ++ ...upplyChainValidationSummaryRepository.java | 19 ++- .../TPM2ProvisionerStateRepository.java | 6 + .../persist/entity/manager/package-info.java | 1 + .../persist/entity/tpm/package-info.java | 1 + .../attestationca/persist/package-info.java | 1 + config/checkstyle/checkstyle.xml | 17 ++- 25 files changed, 580 insertions(+), 58 deletions(-) create mode 100644 HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/package-info.java create mode 100644 HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/tpm/package-info.java create mode 100644 HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/package-info.java diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/AttestationCertificateAuthority.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/AttestationCertificateAuthority.java index 6ca834f8..f45c7269 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/AttestationCertificateAuthority.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/AttestationCertificateAuthority.java @@ -45,44 +45,42 @@ public abstract class AttestationCertificateAuthority { * A handle to the service used to validate the supply chain. */ private final SupplyChainValidationService supplyChainValidationService; - + private final ComponentResultRepository componentResultRepository; + private final CertificateRepository certificateRepository; + private final IssuedCertificateRepository issuedCertificateRepository; + private final ReferenceManifestRepository referenceManifestRepository; + private final DeviceRepository deviceRepository; + // private final DBManager tpm2ProvisionerStateDBManager; + private final ReferenceDigestValueRepository referenceDigestValueRepository; + private final PolicyRepository policyRepository; + private final TPM2ProvisionerStateRepository tpm2ProvisionerStateRepository; + private final ComponentInfoRepository componentInfoRepository; + private final CertificateRequestProcessor certificateRequestHandler; + private final IdentityClaimProcessor identityClaimHandler; /** * Container wired application configuration property identifying the number of days that * certificates issued by this ACA are valid for. */ private Integer validDays = 1; - private final ComponentResultRepository componentResultRepository; - private ComponentInfoRepository componentInfoRepository; - private final CertificateRepository certificateRepository; - private final IssuedCertificateRepository issuedCertificateRepository; - private final ReferenceManifestRepository referenceManifestRepository; - private final DeviceRepository deviceRepository; -// private final DBManager tpm2ProvisionerStateDBManager; - private final ReferenceDigestValueRepository referenceDigestValueRepository; - private final PolicyRepository policyRepository; - private final TPM2ProvisionerStateRepository tpm2ProvisionerStateRepository; - - private CertificateRequestProcessor certificateRequestHandler; - private IdentityClaimProcessor identityClaimHandler; - /** * Constructor. - * @param supplyChainValidationService the supply chain service - * @param privateKey the ACA private key - * @param acaCertificate the ACA certificate - * @param structConverter the struct converter - * @param componentResultRepository the component result manager - * @param componentInfoRepository the component info manager - * @param certificateRepository the certificate manager - * @param referenceManifestRepository the Reference Manifest manager - * @param validDays the number of days issued certs are valid - * @param deviceRepository the device manager + * + * @param supplyChainValidationService the supply chain service + * @param privateKey the ACA private key + * @param acaCertificate the ACA certificate + * @param structConverter the struct converter + * @param componentResultRepository the component result manager + * @param componentInfoRepository the component info manager + * @param certificateRepository the certificate manager + * @param issuedCertificateRepository the issued certificate repository + * @param referenceManifestRepository the Reference Manifest manager + * @param validDays the number of days issued certs are valid + * @param deviceRepository the device manager * @param referenceDigestValueRepository the reference event manager - * @param policyRepository policy setting repository + * @param policyRepository policy setting repository * @param tpm2ProvisionerStateRepository tpm2 provisioner state repository */ - @SuppressWarnings("checkstyle:parameternumber") public AttestationCertificateAuthority( final SupplyChainValidationService supplyChainValidationService, final PrivateKey privateKey, final X509Certificate acaCertificate, @@ -121,14 +119,31 @@ public abstract class AttestationCertificateAuthority { deviceRepository, tpm2ProvisionerStateRepository, policyRepository); } + /** + * Processes the provided identity claim. + * + * @param identityClaim a byte array representation of the identity claim + * @return processed identity claim response + */ byte[] processIdentityClaimTpm2(final byte[] identityClaim) { return this.identityClaimHandler.processIdentityClaimTpm2(identityClaim); } + /** + * Processes the provided certificate request. + * + * @param certificateRequest a byte array representation of the certificate request + * @return processed certificate request response + */ byte[] processCertificateRequest(final byte[] certificateRequest) { return this.certificateRequestHandler.processCertificateRequest(certificateRequest); } + /** + * Retrieves the encoded public key. + * + * @return encoded public key + */ public byte[] getPublicKey() { return acaCertificate.getPublicKey().getEncoded(); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/CriteriaModifier.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/CriteriaModifier.java index 452138f4..8c42b383 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/CriteriaModifier.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/CriteriaModifier.java @@ -4,10 +4,13 @@ import jakarta.persistence.criteria.CriteriaQuery; /** * Allows a user of the DBManager to modify the criteria object before processing. + * + * @param the parameter type */ public interface CriteriaModifier { /** * Allows a client to modify the criteria object by reference. + * * @param criteria The hibernate criteria builder object */ void modify(CriteriaQuery criteria); diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/DBManagerException.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/DBManagerException.java index e68d1b2e..aec4ddc9 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/DBManagerException.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/DBManagerException.java @@ -12,8 +12,7 @@ public class DBManagerException extends RuntimeException { * Creates a new DBManagerException that has the message * msg. * - * @param msg - * exception message + * @param msg exception message */ public DBManagerException(final String msg) { super(msg); @@ -23,8 +22,7 @@ public class DBManagerException extends RuntimeException { * Creates a new DBManagerException that wraps the given * Throwable. * - * @param t - * root cause + * @param t root cause */ public DBManagerException(final Throwable t) { super(t); @@ -34,13 +32,11 @@ public class DBManagerException extends RuntimeException { * Creates a new DBManagerException that has the message * msg and wraps the root cause. * - * @param msg - * exception message - * @param t - * root cause + * @param msg exception message + * @param t root cause */ public DBManagerException(final String msg, final Throwable t) { super(msg, t); } -} \ No newline at end of file +} diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/FilteredRecordsList.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/FilteredRecordsList.java index 07c5d5d7..0fedb994 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/FilteredRecordsList.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/FilteredRecordsList.java @@ -14,8 +14,10 @@ import java.util.ArrayList; * @param Class accepts generic for the list of data records. */ @Data -@EqualsAndHashCode(callSuper=false) +@EqualsAndHashCode(callSuper = false) public class FilteredRecordsList extends ArrayList { - private long recordsTotal, recordsFiltered; + private long recordsTotal; + + private long recordsFiltered; } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/RestfulAttestationCertificateAuthority.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/RestfulAttestationCertificateAuthority.java index 5914cd40..db00267d 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/RestfulAttestationCertificateAuthority.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/RestfulAttestationCertificateAuthority.java @@ -33,13 +33,13 @@ import java.security.cert.X509Certificate; // detects if file exists, if not, ignore errors @PropertySource(value = "file:/etc/hirs/aca/application.properties", ignoreResourceNotFound = true), - @PropertySource(value = "file:C:/ProgramData/hirs/aca/application.win.properties", ignoreResourceNotFound = true) }) @RestController @RequestMapping("/HIRS_AttestationCA") -public class RestfulAttestationCertificateAuthority extends AttestationCertificateAuthority implements RestfulInterface { +public class RestfulAttestationCertificateAuthority extends AttestationCertificateAuthority + implements RestfulInterface { /** * Constructor. @@ -47,8 +47,11 @@ public class RestfulAttestationCertificateAuthority extends AttestationCertifica * @param supplyChainValidationService scp service * @param privateKey the ACA private key * @param acaCertificate the ACA certificate + * @param structConverter the struct converter * @param componentResultRepository the component result repository + * @param componentInfoRepository the component info repository * @param certificateRepository the certificate manager + * @param issuedCertificateRepository the issued certificate repository * @param referenceManifestRepository the referenceManifestManager * @param validDays the number of days issued certs are valid * @param deviceRepository the device manager @@ -56,11 +59,11 @@ public class RestfulAttestationCertificateAuthority extends AttestationCertifica * @param policyRepository the provisioning policy entity * @param tpm2ProvisionerStateRepository the provisioner state */ - @SuppressWarnings({"checkstyle:parameternumber"}) @Autowired public RestfulAttestationCertificateAuthority( final SupplyChainValidationService supplyChainValidationService, - final PrivateKey privateKey, final X509Certificate acaCertificate, + final PrivateKey privateKey, + final X509Certificate acaCertificate, final StructConverter structConverter, final ComponentResultRepository componentResultRepository, final ComponentInfoRepository componentInfoRepository, @@ -82,7 +85,7 @@ public class RestfulAttestationCertificateAuthority extends AttestationCertifica /** * Listener for identity requests from TPM 2.0 provisioning. - * + *

* Processes a given IdentityClaim and generates a response * containing an encrypted nonce to be returned by the client in * a future handshake request. @@ -105,7 +108,7 @@ public class RestfulAttestationCertificateAuthority extends AttestationCertifica * the client's desired attestation key, if the correct nonce is supplied. * * @param certificateRequest request containing nonce from earlier identity - * * claim handshake + * * claim handshake * @return The response to the client provisioner. */ @Override @@ -121,8 +124,8 @@ public class RestfulAttestationCertificateAuthority extends AttestationCertifica * (non-javadoc) *

* Wrap the {@link AttestationCertificateAuthority#getPublicKey()} with a Spring - * {@link org.springframework.web.bind.annotation.RequestMapping} such that Spring can serialize the certificate to be returned to an - * HTTP Request. + * {@link org.springframework.web.bind.annotation.RequestMapping} such that Spring can serialize + * the certificate to be returned to an HTTP Request. */ @Override @ResponseBody diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/RestfulInterface.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/RestfulInterface.java index e6c8eeaf..a4bb8a00 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/RestfulInterface.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/RestfulInterface.java @@ -5,8 +5,20 @@ package hirs.attestationca.persist; */ public interface RestfulInterface { + /** + * Processes the provided identity claim. + * + * @param identityClaim a byte array representation of the identity claim + * @return a byte array representation of the identity claim response + */ byte[] processIdentityClaimTpm2(byte[] identityClaim); + /** + * Processes the provided certificate request. + * + * @param certificateRequest a byte array representation of the certificate request + * @return a byte array representation of the certificate request response + */ byte[] processCertificateRequest(byte[] certificateRequest); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/AbstractEntity.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/AbstractEntity.java index 67755c06..8ab564a2 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/AbstractEntity.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/AbstractEntity.java @@ -32,7 +32,7 @@ public abstract class AbstractEntity implements Serializable { @Getter private UUID id; - @Column (name = "create_time") + @Column(name = "create_time") private Date createTime; /** @@ -47,9 +47,10 @@ public abstract class AbstractEntity implements Serializable { /** * Setter for the UUID that can not be null * and can not be overridden. + * * @param id - primary able key */ - public void setId(UUID id) { + public void setId(final UUID id) { if (id != null) { this.id = id; } @@ -74,6 +75,11 @@ public abstract class AbstractEntity implements Serializable { createTime.setTime(new Date().getTime()); } + /** + * Generates an integer hash code for this entity. + * + * @return hash code + */ @Override public int hashCode() { if (id != null) { @@ -82,6 +88,13 @@ public abstract class AbstractEntity implements Serializable { return super.hashCode(); } + /** + * Compares this entity to the provided object to verify + * that both objects are equal. + * + * @param object object to compare + * @return true if they are equal, false otherwise + */ @Override public boolean equals(final Object object) { if (this == object) { diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/Appraiser.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/Appraiser.java index 8c5fb78b..d64b2de7 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/Appraiser.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/Appraiser.java @@ -6,7 +6,11 @@ import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.Table; -import lombok.*; +import lombok.AccessLevel; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; /** * The Appraiser class represents an appraiser that can appraise a Report. diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/CACredentialRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/CACredentialRepository.java index 253d0a3d..1319399e 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/CACredentialRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/CACredentialRepository.java @@ -12,12 +12,77 @@ import java.util.UUID; @Repository public interface CACredentialRepository extends JpaRepository { + /** + * Query that retrieves a list of certificate authority credentials using the provided archive flag. + * + * @param archiveFlag archive flag + * @return a list of certificate authority credentials + */ List findByArchiveFlag(boolean archiveFlag); + + /** + * Query that retrieves a page of certificate authority credentials using the provided archive + * flag and the provided pageable. + * + * @param archiveFlag archive flag + * @param pageable pageable + * @return a page of certificate authority credentials + */ Page findByArchiveFlag(boolean archiveFlag, Pageable pageable); + + /** + * Query that retrieves a list of certificate authority credentials using the provided subject. + * + * @param subject subject + * @return a list of certificate authority credentials + */ List findBySubject(String subject); + + /** + * Query that retrieves a sorted list of certificate authority credentials using the provided subject. + * + * @param subject subject + * @return a sorted list of certificate authority credentials + */ List findBySubjectSorted(String subject); + + /** + * Query that retrieves a list of certificate authority credentials using the provided subject + * and the provided archive flag. + * + * @param subject subject + * @param archiveFlag archive flag + * @return a list of certificate authority credentials + */ List findBySubjectAndArchiveFlag(String subject, boolean archiveFlag); - List findBySubjectSortedAndArchiveFlag(String subject, boolean archiveFlag); + + /** + * Query that retrieves a sorted list of certificate authority credentials using the provided subject + * and the provided archive flag. + * + * @param subject subject + * @param archiveFlag archive flag + * @return a sorted list of certificate authority credentials + */ + List findBySubjectSortedAndArchiveFlag(String subject, + boolean archiveFlag); + + /** + * Query that retrieves a certificate authority credential using the provided subject key identifier. + * + * @param subjectKeyIdentifier byte array representation of the subject key identifier + * @return a certificate authority credential + */ CertificateAuthorityCredential findBySubjectKeyIdentifier(byte[] subjectKeyIdentifier); - CertificateAuthorityCredential findBySubjectKeyIdStringAndArchiveFlag(String subjectKeyIdString, boolean archiveFlag); + + /** + * Query that retrieves a certificate authority credential using the provided subject key identifier + * and the provided archive flag. + * + * @param subjectKeyIdString string representation of the subject key id + * @param archiveFlag archive flag + * @return a certificate authority credential + */ + CertificateAuthorityCredential findBySubjectKeyIdStringAndArchiveFlag(String subjectKeyIdString, + boolean archiveFlag); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/CertificateRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/CertificateRepository.java index cfdfd10a..5aeb4ba9 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/CertificateRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/CertificateRepository.java @@ -16,26 +16,122 @@ import java.util.UUID; @Repository public interface CertificateRepository extends JpaRepository { + /** + * Query that retrieves a certificate using the provided uuid. + * + * @param uuid uuid + * @return a certificate + */ @Query(value = "SELECT * FROM Certificate where id = ?1", nativeQuery = true) Certificate getCertificate(UUID uuid); + + /** + * Query that retrieves a list of certificates using the provided subject and dtype. + * + * @param subject subject + * @param dType d type + * @return a list of certificates + */ @Query(value = "SELECT * FROM Certificate where subject = ?1 AND DTYPE = ?2", nativeQuery = true) List findBySubject(String subject, String dType); + + /** + * Query that retrieves a sorted list of certificates using the provided subject and dtype. + * + * @param subjectSorted + * @param dType + * @return a list of sorted certificates + */ @Query(value = "SELECT * FROM Certificate where subjectSorted = ?1 AND DTYPE = ?2", nativeQuery = true) List findBySubjectSorted(String subjectSorted, String dType); + + /** + * Query that retrieves a + * + * @param dType + * @return + */ @Query(value = "SELECT * FROM Certificate where DTYPE = ?1", nativeQuery = true) List findByType(String dType); + + /** + * Query that retrieves a + * + * @param serialNumber + * @param dType + * @return + */ @Query(value = "SELECT * FROM Certificate where serialNumber = ?1 AND DTYPE = ?2", nativeQuery = true) Certificate findBySerialNumber(BigInteger serialNumber, String dType); + + /** + * Query that retrieves a + * + * @param boardSerialNumber + * @return + */ @Query(value = "SELECT * FROM Certificate where platformSerial = ?1 AND DTYPE = 'PlatformCredential'", nativeQuery = true) List byBoardSerialNumber(String boardSerialNumber); + + /** + * Query that retrieves a + * + * @param holderSerialNumber + * @return + */ @Query(value = "SELECT * FROM Certificate where holderSerialNumber = ?1 AND DTYPE = 'PlatformCredential'", nativeQuery = true) PlatformCredential getPcByHolderSerialNumber(BigInteger holderSerialNumber); + + /** + * Query that retrieves a + * + * @param holderSerialNumber + * @return + */ @Query(value = "SELECT * FROM Certificate where holderSerialNumber = ?1 AND DTYPE = 'PlatformCredential'", nativeQuery = true) List getByHolderSerialNumber(BigInteger holderSerialNumber); + + /** + * Query that retrieves a + * + * @param certificateHash + * @param dType + * @return + */ @Query(value = "SELECT * FROM Certificate where certificateHash = ?1 AND DTYPE = ?2", nativeQuery = true) Certificate findByCertificateHash(int certificateHash, String dType); + + /** + * Query that retrieves a + * + * @param publicKeyModulusHexValue + * @return + */ EndorsementCredential findByPublicKeyModulusHexValue(String publicKeyModulusHexValue); + + /** + * Query that retrieves a + * + * @param deviceId + * @return + */ IssuedAttestationCertificate findByDeviceId(UUID deviceId); + + /** + * Query that retrieves a + * + * @param deviceId + * @param isLDevID + * @param sort + * @return + */ List findByDeviceIdAndIsLDevID(UUID deviceId, boolean isLDevID, Sort sort); + + /** + * Query that retrieves a + * + * @param certificateHash + * @return + */ Certificate findByCertificateHash(int certificateHash); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/DeviceRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/DeviceRepository.java index fb3c331b..e708812e 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/DeviceRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/DeviceRepository.java @@ -8,5 +8,11 @@ import java.util.UUID; @Repository public interface DeviceRepository extends JpaRepository { + /** + * Query that retrieves a device using the provided device name. + * + * @param deviceName device name + * @return a device + */ Device findByName(String deviceName); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/EndorsementCredentialRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/EndorsementCredentialRepository.java index 6ba43285..a2d67fd5 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/EndorsementCredentialRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/EndorsementCredentialRepository.java @@ -13,9 +13,44 @@ import java.util.UUID; @Repository public interface EndorsementCredentialRepository extends JpaRepository { + /** + * Query that retrieves a + * + * @param archiveFlag + * @return + */ List findByArchiveFlag(boolean archiveFlag); + + /** + * Query that retrieves a + * + * @param archiveFlag + * @param pageable + * @return + */ Page findByArchiveFlag(boolean archiveFlag, Pageable pageable); + + /** + * Query that retrieves a + * + * @param holderSerialNumber + * @return + */ EndorsementCredential findByHolderSerialNumber(BigInteger holderSerialNumber); + + /** + * Query that retrieves a + * + * @param serialNumber + * @return + */ EndorsementCredential findBySerialNumber(BigInteger serialNumber); + + /** + * Query that retrieves a + * + * @param deviceId + * @return + */ List findByDeviceId(UUID deviceId); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IDevIDCertificateRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IDevIDCertificateRepository.java index 5fd72a43..2aee1e4a 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IDevIDCertificateRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IDevIDCertificateRepository.java @@ -12,8 +12,21 @@ import java.util.UUID; @Repository public interface IDevIDCertificateRepository extends JpaRepository { + /** + * Query that retrieves a + * + * @param archiveFlag + * @return + */ List findByArchiveFlag(boolean archiveFlag); + /** + * Query that retrieves a + * + * @param archiveFlag + * @param pageable + * @return + */ Page findByArchiveFlag(boolean archiveFlag, Pageable pageable); /*List findBySubject(String subject); List findBySubjectSorted(String subject); diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IssuedCertificateRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IssuedCertificateRepository.java index 9ceb14e6..8d56626e 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IssuedCertificateRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IssuedCertificateRepository.java @@ -12,7 +12,26 @@ import java.util.UUID; @Repository public interface IssuedCertificateRepository extends JpaRepository { + /** + * Query that retrieves a + * + * @param archiveFlag + * @return + */ List findByArchiveFlag(boolean archiveFlag); + + /** + * Query that retrieves a + * + * @param archiveFlag + * @param pageable + * @return + */ Page findByArchiveFlag(boolean archiveFlag, Pageable pageable); + + /** + * @param deviceId + * @return + */ List findByDeviceId(UUID deviceId); } \ No newline at end of file diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/PlatformCertificateRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/PlatformCertificateRepository.java index 690d82ca..bd65c0cb 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/PlatformCertificateRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/PlatformCertificateRepository.java @@ -12,7 +12,28 @@ import java.util.UUID; @Repository public interface PlatformCertificateRepository extends JpaRepository { + /** + * Query that retrieves a + * + * @param archiveFlag + * @return + */ List findByArchiveFlag(boolean archiveFlag); + + /** + * Query that retrieves a + * + * @param archiveFlag + * @param pageable + * @return + */ Page findByArchiveFlag(boolean archiveFlag, Pageable pageable); + + /** + * Query that retrieves a + * + * @param deviceId + * @return + */ List findByDeviceId(UUID deviceId); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/PolicyRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/PolicyRepository.java index 78c48cde..ae30b966 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/PolicyRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/PolicyRepository.java @@ -8,5 +8,12 @@ import java.util.UUID; @Repository public interface PolicyRepository extends JpaRepository { + + /** + * Query that retrieves policy settings using the provided name. + * + * @param name name + * @return policy settings + */ PolicySettings findByName(String name); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ReferenceDigestValueRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ReferenceDigestValueRepository.java index 0d967757..2df75216 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ReferenceDigestValueRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ReferenceDigestValueRepository.java @@ -10,10 +10,52 @@ import java.util.UUID; @Repository public interface ReferenceDigestValueRepository extends JpaRepository { + /** + * Query that retrieves a + * + * @param model + * @return + */ List findByModel(String model); + + /** + * Query that retrieves a + * + * @param manufacturer + * @return + */ List findByManufacturer(String manufacturer); + + /** + * Query that retrieves a + * + * @param associatedRimId + * @return + */ List findValuesByBaseRimId(UUID associatedRimId); + + /** + * Query that retrieves a + * + * @param supportRimId + * @return + */ List findBySupportRimId(UUID supportRimId); + + /** + * Query that retrieves a + * + * @param supportRimHash + * @return + */ List findBySupportRimHash(String supportRimHash); + + /** + * Query that retrieves a + * + * @param manufacturer + * @param model + * @return + */ List findByManufacturerAndModel(String manufacturer, String model); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ReferenceManifestRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ReferenceManifestRepository.java index 53884809..c2f4175f 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ReferenceManifestRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ReferenceManifestRepository.java @@ -15,36 +15,160 @@ import java.util.UUID; @Repository public interface ReferenceManifestRepository extends JpaRepository { - + /** + * Query that retrieves a + * + * @param hexDecHash + * @return + */ ReferenceManifest findByHexDecHash(String hexDecHash); + + /** + * Query that retrieves a + * + * @param base64Hash + * @return + */ ReferenceManifest findByBase64Hash(String base64Hash); + + /** + * @param hexDecHash + * @param rimType + * @return + */ ReferenceManifest findByHexDecHashAndRimType(String hexDecHash, String rimType); + + /** + * @param hexDecHash + * @param rimType + * @return + */ ReferenceManifest findByEventLogHashAndRimType(String hexDecHash, String rimType); + + /** + * @param manufacturer + * @param model + * @return + */ @Query(value = "SELECT * FROM ReferenceManifest WHERE platformManufacturer = ?1 AND platformModel = ?2 AND rimType = 'Base'", nativeQuery = true) List getBaseByManufacturerModel(String manufacturer, String model); + + /** + * @param manufacturer + * @param dType + * @return + */ @Query(value = "SELECT * FROM ReferenceManifest WHERE platformManufacturer = ?1 AND DTYPE = ?2", nativeQuery = true) List getByManufacturer(String manufacturer, String dType); + + /** + * @param model + * @param dType + * @return + */ @Query(value = "SELECT * FROM ReferenceManifest WHERE platformModel = ?1 AND DTYPE = ?2", nativeQuery = true) ReferenceManifest getByModel(String model, String dType); + + /** + * @return + */ @Query(value = "SELECT * FROM ReferenceManifest WHERE DTYPE = 'BaseReferenceManifest'", nativeQuery = true) List findAllBaseRims(); + + /** + * Query that retrieves a + * + * @return + */ @Query(value = "SELECT * FROM ReferenceManifest WHERE DTYPE = 'SupportReferenceManifest'", nativeQuery = true) List findAllSupportRims(); + + /** + * Query that retrieves a + * + * @param uuid + * @return + */ @Query(value = "SELECT * FROM ReferenceManifest WHERE id = ?1 AND DTYPE = 'BaseReferenceManifest'", nativeQuery = true) BaseReferenceManifest getBaseRimEntityById(UUID uuid); + + /** + * Query that retrieves a + * + * @param uuid + * @return + */ @Query(value = "SELECT * FROM ReferenceManifest WHERE id = ?1 AND DTYPE = 'SupportReferenceManifest'", nativeQuery = true) SupportReferenceManifest getSupportRimEntityById(UUID uuid); + + /** + * Query that retrieves a + * + * @param uuid + * @return + */ @Query(value = "SELECT * FROM ReferenceManifest WHERE id = ?1 AND DTYPE = 'EventLogMeasurements'", nativeQuery = true) EventLogMeasurements getEventLogRimEntityById(UUID uuid); + + /** + * Query that retrieves a + * + * @param deviceName + * @return + */ @Query(value = "SELECT * FROM ReferenceManifest WHERE deviceName = ?1 AND DTYPE = 'SupportReferenceManifest'", nativeQuery = true) List byDeviceName(String deviceName); + + /** + * Query that retrieves a + * + * @param deviceName + * @return + */ @Query(value = "SELECT * FROM ReferenceManifest WHERE deviceName = ?1 AND DTYPE = 'EventLogMeasurements'", nativeQuery = true) EventLogMeasurements byMeasurementDeviceName(String deviceName); + + /** + * Query that retrieves a + * + * @param manufacturer + * @param model + * @return + */ @Query(value = "SELECT * FROM ReferenceManifest WHERE platformManufacturer = ?1 AND platformModel = ?2 AND rimType = 'Support'", nativeQuery = true) List getSupportByManufacturerModel(String manufacturer, String model); + + /** + * Query that retrieves a + * + * @param model + * @return + */ @Query(value = "SELECT * FROM ReferenceManifest WHERE platformModel = ?1 AND DTYPE = 'EventLogMeasurements'", nativeQuery = true) EventLogMeasurements getLogByModel(String model); + + /** + * Query that retrieves a + * + * @param deviceName + * @return + */ List findByDeviceName(String deviceName); + + /** + * Query that retrieves a + * + * @param archiveFlag + * @return + */ List findByArchiveFlag(boolean archiveFlag); + + /** + * Query that retrieves a + * + * @param archiveFlag + * @param pageable + * @return + */ Page findByArchiveFlag(boolean archiveFlag, Pageable pageable); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/SupplyChainValidationRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/SupplyChainValidationRepository.java index 161273fa..3b66c935 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/SupplyChainValidationRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/SupplyChainValidationRepository.java @@ -9,6 +9,19 @@ import java.util.UUID; @Repository public interface SupplyChainValidationRepository extends JpaRepository { + /** + * Query that retrieves a list of supply chain validation using the provided validate type. + * + * @param validateType validate type + * @return a list of supply chain validation + */ List findByValidationType(String validateType); + + /** + * Query that retrieves a list of supply chain validation using the provided validation result. + * + * @param validationResult validation result + * @return a list of supply chain validation + */ List findByValidationResult(String validationResult); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/SupplyChainValidationSummaryRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/SupplyChainValidationSummaryRepository.java index 1e7f94f5..19741741 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/SupplyChainValidationSummaryRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/SupplyChainValidationSummaryRepository.java @@ -7,12 +7,27 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; -import java.util.UUID; import java.util.List; +import java.util.UUID; @Repository -public interface SupplyChainValidationSummaryRepository extends JpaRepository { +public interface SupplyChainValidationSummaryRepository + extends JpaRepository { + + /** + * @param device + * @return + */ SupplyChainValidationSummary findByDevice(Device device); + + /** + * @return + */ List findByArchiveFlagFalse(); + + /** + * @param pageable + * @return + */ Page findByArchiveFlagFalse(Pageable pageable); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/TPM2ProvisionerStateRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/TPM2ProvisionerStateRepository.java index 3e17881d..e5cd76d2 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/TPM2ProvisionerStateRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/TPM2ProvisionerStateRepository.java @@ -7,5 +7,11 @@ import org.springframework.stereotype.Repository; @Repository public interface TPM2ProvisionerStateRepository extends JpaRepository { + /** + * Query that retrieves the TPM2 Provisioner State using the provided first part of nonce. + * + * @param findByFirstPartOfNonce + * @return TPM2 Provisioner State + */ TPM2ProvisionerState findByFirstPartOfNonce(Long findByFirstPartOfNonce); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/package-info.java new file mode 100644 index 00000000..a71f8943 --- /dev/null +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/package-info.java @@ -0,0 +1 @@ +package hirs.attestationca.persist.entity.manager; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/tpm/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/tpm/package-info.java new file mode 100644 index 00000000..247ff4f6 --- /dev/null +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/tpm/package-info.java @@ -0,0 +1 @@ +package hirs.attestationca.persist.entity.tpm; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/package-info.java new file mode 100644 index 00000000..625de584 --- /dev/null +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/package-info.java @@ -0,0 +1 @@ +package hirs.attestationca.persist; diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml index 503e7bab..b6346de4 100644 --- a/config/checkstyle/checkstyle.xml +++ b/config/checkstyle/checkstyle.xml @@ -109,7 +109,10 @@ - + + + @@ -131,7 +134,6 @@ - @@ -163,10 +165,17 @@ - + + + - + + + + + From 59f50212f17eeda678c0c62d359996cd0723ca85 Mon Sep 17 00:00:00 2001 From: TheSilentCoder <184309164+ThatSilentCoder@users.noreply.github.com> Date: Wed, 16 Oct 2024 18:04:28 -0400 Subject: [PATCH 02/22] issue_847: More javadocs --- .../entity/manager/ComponentAttributeRepository.java | 8 ++++++-- .../persist/entity/manager/ComponentInfoRepository.java | 4 +++- .../persist/entity/manager/ComponentResultRepository.java | 7 +++++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ComponentAttributeRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ComponentAttributeRepository.java index bfa10117..87e4c9b4 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ComponentAttributeRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ComponentAttributeRepository.java @@ -10,6 +10,7 @@ public interface ComponentAttributeRepository extends JpaRepository findByComponentIdAndProvisionSessionId(UUID componentId, UUID provisionSessionId); + List findByComponentIdAndProvisionSessionId(UUID componentId, + UUID provisionSessionId); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ComponentInfoRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ComponentInfoRepository.java index 67fec4f0..919c0494 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ComponentInfoRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ComponentInfoRepository.java @@ -9,6 +9,7 @@ import java.util.UUID; public interface ComponentInfoRepository extends JpaRepository { /** * Query that retrieves device components by device name. + * * @param deviceName string for the host name * @return a list of device components */ @@ -17,7 +18,8 @@ public interface ComponentInfoRepository extends JpaRepository findByBoardSerialNumberAndDelta(String boardSerialNumber, boolean delta); /** * Query based on certificate serial number and device serial number. + * * @param certificateSerialNumber certificate specific serial number - * @param boardSerialNumber variable holding the device serial number + * @param boardSerialNumber variable holding the device serial number * @return a list of component result. */ List findByCertificateSerialNumberAndBoardSerialNumber( From 63521a40757d10ccd4ee3e931e5b5b8b24bdb32d Mon Sep 17 00:00:00 2001 From: TheSilentCoder <184309164+ThatSilentCoder@users.noreply.github.com> Date: Thu, 17 Oct 2024 17:12:58 -0400 Subject: [PATCH 03/22] issue_847: Added javadoc comments + params to the rest of the repo classes, cleaned up imports, and made more styling changes. --- .../entity/manager/CertificateRepository.java | 87 ++-- .../EndorsementCredentialRepository.java | 32 +- .../manager/IDevIDCertificateRepository.java | 72 ++- .../manager/IssuedCertificateRepository.java | 23 +- .../PlatformCertificateRepository.java | 21 +- .../ReferenceDigestValueRepository.java | 38 +- .../manager/ReferenceManifestRepository.java | 169 +++--- .../SupplyChainValidationRepository.java | 4 +- ...upplyChainValidationSummaryRepository.java | 17 +- .../TPM2ProvisionerStateRepository.java | 2 +- .../entity/userdefined/Certificate.java | 485 +++++++++--------- .../persist/entity/userdefined/Device.java | 19 +- .../userdefined/SupplyChainValidation.java | 61 +-- .../SupplyChainValidationSummary.java | 230 ++++----- .../certificate/CertificateVariables.java | 165 +++++- .../certificate/IDevIDCertificate.java | 36 +- .../provision/IdentityClaimProcessor.java | 57 +- .../service/SupplyChainValidationService.java | 63 +-- .../CertificateAttributeScvValidator.java | 26 +- .../validation/FirmwareScvValidator.java | 37 +- config/checkstyle/checkstyle.xml | 4 +- 21 files changed, 977 insertions(+), 671 deletions(-) diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/CertificateRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/CertificateRepository.java index 5aeb4ba9..ee4f5a7a 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/CertificateRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/CertificateRepository.java @@ -29,7 +29,7 @@ public interface CertificateRepository extends JpaRepository * Query that retrieves a list of certificates using the provided subject and dtype. * * @param subject subject - * @param dType d type + * @param dType dtype * @return a list of certificates */ @Query(value = "SELECT * FROM Certificate where subject = ?1 AND DTYPE = ?2", nativeQuery = true) @@ -38,100 +38,107 @@ public interface CertificateRepository extends JpaRepository /** * Query that retrieves a sorted list of certificates using the provided subject and dtype. * - * @param subjectSorted - * @param dType + * @param subjectSorted subject + * @param dType dtype * @return a list of sorted certificates */ @Query(value = "SELECT * FROM Certificate where subjectSorted = ?1 AND DTYPE = ?2", nativeQuery = true) List findBySubjectSorted(String subjectSorted, String dType); /** - * Query that retrieves a + * Query that retrieves a list of certificates using the provided dtype. * - * @param dType - * @return + * @param dType dtype + * @return a list of certificates */ @Query(value = "SELECT * FROM Certificate where DTYPE = ?1", nativeQuery = true) List findByType(String dType); /** - * Query that retrieves a + * Query that retrieves a list of certificates using the provided serial number and dtype. * - * @param serialNumber - * @param dType - * @return + * @param serialNumber serial number + * @param dType dtype + * @return a certificate */ @Query(value = "SELECT * FROM Certificate where serialNumber = ?1 AND DTYPE = ?2", nativeQuery = true) Certificate findBySerialNumber(BigInteger serialNumber, String dType); /** - * Query that retrieves a + * Query that retrieves a list of platform credentials using the provided board serial number + * and a dtype of "Platform Credential". * - * @param boardSerialNumber - * @return + * @param boardSerialNumber board serial number + * @return a list of platform credentials */ - @Query(value = "SELECT * FROM Certificate where platformSerial = ?1 AND DTYPE = 'PlatformCredential'", nativeQuery = true) + @Query(value = "SELECT * FROM Certificate where platformSerial = ?1 AND DTYPE = 'PlatformCredential'", + nativeQuery = true) List byBoardSerialNumber(String boardSerialNumber); /** - * Query that retrieves a + * Query that retrieves a platform credential using the provided holder serial number + * and a dtype of "Platform Credential". * - * @param holderSerialNumber - * @return + * @param holderSerialNumber holder serial number + * @return platform credential */ - @Query(value = "SELECT * FROM Certificate where holderSerialNumber = ?1 AND DTYPE = 'PlatformCredential'", nativeQuery = true) + @Query(value = "SELECT * FROM Certificate where holderSerialNumber = ?1 AND DTYPE = 'PlatformCredential'", + nativeQuery = true) PlatformCredential getPcByHolderSerialNumber(BigInteger holderSerialNumber); /** - * Query that retrieves a + * Query that retrieves a list of platform credentials using the provided holder serial number + * and a dtype of "Platform Credential". * - * @param holderSerialNumber - * @return + * @param holderSerialNumber holder serial numberz + * @return a list of platform credentials */ - @Query(value = "SELECT * FROM Certificate where holderSerialNumber = ?1 AND DTYPE = 'PlatformCredential'", nativeQuery = true) + @Query(value = "SELECT * FROM Certificate where holderSerialNumber = ?1 AND DTYPE = 'PlatformCredential'", + nativeQuery = true) List getByHolderSerialNumber(BigInteger holderSerialNumber); /** - * Query that retrieves a + * Query that retrieves a certificate using the provided certificate hash and dtype. * - * @param certificateHash - * @param dType - * @return + * @param certificateHash integer certificate hash + * @param dType dtype + * @return a certificate */ @Query(value = "SELECT * FROM Certificate where certificateHash = ?1 AND DTYPE = ?2", nativeQuery = true) Certificate findByCertificateHash(int certificateHash, String dType); /** - * Query that retrieves a + * Query that retrieves an endorssement credential using the provided public key modulus hex value. * - * @param publicKeyModulusHexValue - * @return + * @param publicKeyModulusHexValue public key modulus hex value + * @return an endorsement credential */ EndorsementCredential findByPublicKeyModulusHexValue(String publicKeyModulusHexValue); /** - * Query that retrieves a + * Query that retrieves an issued attestation certificate using the provided device id. * - * @param deviceId - * @return + * @param deviceId uuid representation of the device id + * @return an issued attestation certificate */ IssuedAttestationCertificate findByDeviceId(UUID deviceId); /** - * Query that retrieves a + * Query that retrieves a list of issued attestation certificates using the provided device id, + * isLDevID value and sort value. * - * @param deviceId - * @param isLDevID - * @param sort - * @return + * @param deviceId device id + * @param isLDevID is it a LDevId + * @param sort sort + * @return a list of issued attestation certificates */ List findByDeviceIdAndIsLDevID(UUID deviceId, boolean isLDevID, Sort sort); /** - * Query that retrieves a + * Query that retrieves a certificates using the provided certificate hash. * - * @param certificateHash - * @return + * @param certificateHash integer certificate hash + * @return a certificate */ Certificate findByCertificateHash(int certificateHash); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/EndorsementCredentialRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/EndorsementCredentialRepository.java index a2d67fd5..dbf09fdf 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/EndorsementCredentialRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/EndorsementCredentialRepository.java @@ -14,43 +14,43 @@ import java.util.UUID; public interface EndorsementCredentialRepository extends JpaRepository { /** - * Query that retrieves a + * Query that retrieves a list of endorsement credentials using the provided archive flag. * - * @param archiveFlag - * @return + * @param archiveFlag archive flag + * @return a list of endorsement credentials */ List findByArchiveFlag(boolean archiveFlag); /** - * Query that retrieves a + * Query that retrieves a page of endorsement credentials using provided archive flag and pageable value. * - * @param archiveFlag - * @param pageable - * @return + * @param archiveFlag archive flag + * @param pageable pageable value + * @return a page of endorsement credentials */ Page findByArchiveFlag(boolean archiveFlag, Pageable pageable); /** - * Query that retrieves a + * Query that retrieves an endorsement credential using the provided holder serial number. * - * @param holderSerialNumber - * @return + * @param holderSerialNumber big integer representation of the holder serial number + * @return an endorsement credential */ EndorsementCredential findByHolderSerialNumber(BigInteger holderSerialNumber); /** - * Query that retrieves a + * Query that retrieves an endorsement credential using the provided serial number. * - * @param serialNumber - * @return + * @param serialNumber big integer representation of the serial number + * @return an endorsement credential */ EndorsementCredential findBySerialNumber(BigInteger serialNumber); /** - * Query that retrieves a + * Query that retrieves a list of endorsement credentials using the provided device id. * - * @param deviceId - * @return + * @param deviceId uuid representation of the device id + * @return an endorsement credential */ List findByDeviceId(UUID deviceId); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IDevIDCertificateRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IDevIDCertificateRepository.java index 2aee1e4a..02325ef7 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IDevIDCertificateRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IDevIDCertificateRepository.java @@ -13,26 +13,70 @@ import java.util.UUID; public interface IDevIDCertificateRepository extends JpaRepository { /** - * Query that retrieves a + * Query that retrieves a list of IDevId certificates using the provided archive flag. * - * @param archiveFlag - * @return + * @param archiveFlag archive flag + * @return a list of IDevId certificates */ List findByArchiveFlag(boolean archiveFlag); /** - * Query that retrieves a + * Query that retrieves a page of IDevId certificates using the provided archive flag and pageable value. * - * @param archiveFlag - * @param pageable - * @return + * @param archiveFlag archive flag + * @param pageable pageable value + * @return a page of IDevId certificates */ Page findByArchiveFlag(boolean archiveFlag, Pageable pageable); - /*List findBySubject(String subject); - List findBySubjectSorted(String subject); - List findBySubjectAndArchiveFlag(String subject, boolean archiveFlag); - List findBySubjectSortedAndArchiveFlag(String subject, boolean archiveFlag); - IDevIDCertificate findBySubjectKeyIdentifier(byte[] subjectKeyIdentifier); - IDevIDCertificate findBySubjectKeyIdStringAndArchiveFlag(String subjectKeyIdString, boolean archiveFlag); + + /** + * Query that retrieves a list of IDevId certificates using the provided subject. + * + * @param subject string representation of the subject + * @return a list of IDevId certificates */ -} \ No newline at end of file + List findBySubject(String subject); + + /** + * Query that retrieves a sorted list of IDevId certificates using the provided subject. + * + * @param subject string representation of the subject + * @return a sorted list of IDevId certificates + */ + List findBySubjectSorted(String subject); + + /** + * Query that retrieves a list of IDevId certificates using the provided subject and archive flag. + * + * @param subject string representation of the subject + * @param archiveFlag archive flag + * @return a list of IDevId certificates + */ + List findBySubjectAndArchiveFlag(String subject, boolean archiveFlag); + + /** + * Query that retrieves a sorted list of IDevId certificates using the provided subject and archive flag. + * + * @param subject string representation of the subject + * @param archiveFlag archive flag + * @return a sorted list of IDevId certificates + */ + List findBySubjectSortedAndArchiveFlag(String subject, boolean archiveFlag); + + /** + * Query that retrieves an IDevId certificate using the provided subject key identifier. + * + * @param subjectKeyIdentifier byte representation of the subject key identifier + * @return an IDevId certificate + */ + IDevIDCertificate findBySubjectKeyIdentifier(byte[] subjectKeyIdentifier); + + /** + * Query that retrieves an IDevId certificate using the provided subject key and archive flag. + * + * @param subjectKeyIdString string representation of the subject key id + * @param archiveFlag archive flag + * @return an IDevId certificate + */ + IDevIDCertificate findBySubjectKeyIdStringAndArchiveFlag(String subjectKeyIdString, boolean archiveFlag); +} diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IssuedCertificateRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IssuedCertificateRepository.java index 8d56626e..0d50494f 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IssuedCertificateRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IssuedCertificateRepository.java @@ -13,25 +13,28 @@ import java.util.UUID; public interface IssuedCertificateRepository extends JpaRepository { /** - * Query that retrieves a + * Query that retrieves a list of issued attestation certificates using the provided archive flag. * - * @param archiveFlag - * @return + * @param archiveFlag archive flag + * @return a list of issued attestation certificates */ List findByArchiveFlag(boolean archiveFlag); /** - * Query that retrieves a + * Query that retrieves a page of issued attestation certificates using the provided archive flag + * and pageable value. * - * @param archiveFlag - * @param pageable - * @return + * @param archiveFlag archive flag + * @param pageable pageable value + * @return a page of issued attestation certificates */ Page findByArchiveFlag(boolean archiveFlag, Pageable pageable); /** - * @param deviceId - * @return + * Query that retrieves a list of issued attestation certificates using the provided device id. + * + * @param deviceId uuid representation of the device id + * @return a list of issued attestation certificates */ List findByDeviceId(UUID deviceId); -} \ No newline at end of file +} diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/PlatformCertificateRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/PlatformCertificateRepository.java index bd65c0cb..ad7a4190 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/PlatformCertificateRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/PlatformCertificateRepository.java @@ -13,27 +13,28 @@ import java.util.UUID; public interface PlatformCertificateRepository extends JpaRepository { /** - * Query that retrieves a + * Query that retrieves a list of platform credentials using the provided archive flag. * - * @param archiveFlag - * @return + * @param archiveFlag archive flag + * @return a list of platform credentials */ List findByArchiveFlag(boolean archiveFlag); /** - * Query that retrieves a + * Query that retrieves a page of platform credentials using the provided archive flag + * and pageable value. * - * @param archiveFlag - * @param pageable - * @return + * @param archiveFlag archive flag + * @param pageable pageable + * @return a page of platform credentials */ Page findByArchiveFlag(boolean archiveFlag, Pageable pageable); /** - * Query that retrieves a + * Query that retrieves a list of platform credentials using the provided device id. * - * @param deviceId - * @return + * @param deviceId uuid representation of the device id + * @return a list of platform credentials */ List findByDeviceId(UUID deviceId); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ReferenceDigestValueRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ReferenceDigestValueRepository.java index 2df75216..008c2abe 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ReferenceDigestValueRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ReferenceDigestValueRepository.java @@ -11,51 +11,51 @@ import java.util.UUID; public interface ReferenceDigestValueRepository extends JpaRepository { /** - * Query that retrieves a + * Query that retrieves a list of reference digest values using the provided model. * - * @param model - * @return + * @param model string representation of the model + * @return a list of reference digest values */ List findByModel(String model); /** - * Query that retrieves a + * Query that retrieves a list of reference digest values using the provided manufacturer. * - * @param manufacturer - * @return + * @param manufacturer string representation of the manufacturer + * @return a list of reference digest values */ List findByManufacturer(String manufacturer); /** - * Query that retrieves a + * Query that retrieves a list of reference digest values using the provided associated rim id. * - * @param associatedRimId - * @return + * @param associatedRimId uuid representation of the associated rim ID + * @return a list of reference digest values */ List findValuesByBaseRimId(UUID associatedRimId); /** - * Query that retrieves a + * Query that retrieves a list of reference digest values using the provided support rim id. * - * @param supportRimId - * @return + * @param supportRimId uuid representation of the support rim ID + * @return a list of reference digest values */ List findBySupportRimId(UUID supportRimId); /** - * Query that retrieves a + * Query that retrieves a list of reference digest values using the provided support rim hash. * - * @param supportRimHash - * @return + * @param supportRimHash a string representation of the support rim hash + * @return a list of reference digest values */ List findBySupportRimHash(String supportRimHash); /** - * Query that retrieves a + * Query that retrieves a list of reference digest values using the provided manufacturer and model. * - * @param manufacturer - * @param model - * @return + * @param manufacturer string representation of the manufacturer + * @param model string representation of the model + * @return a list of reference digest values */ List findByManufacturerAndModel(String manufacturer, String model); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ReferenceManifestRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ReferenceManifestRepository.java index c2f4175f..5f145fb0 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ReferenceManifestRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/ReferenceManifestRepository.java @@ -16,159 +16,192 @@ import java.util.UUID; @Repository public interface ReferenceManifestRepository extends JpaRepository { /** - * Query that retrieves a + * Query that retrieves a reference manifest using the provided hex/dec hash. * - * @param hexDecHash - * @return + * @param hexDecHash string representation of the hex dec hash + * @return a reference manifest */ ReferenceManifest findByHexDecHash(String hexDecHash); /** - * Query that retrieves a + * Query that retrieves a reference manifest using the provided base 64 hash. * - * @param base64Hash - * @return + * @param base64Hash string representation of the base 64 hash + * @return a reference manifest */ ReferenceManifest findByBase64Hash(String base64Hash); /** - * @param hexDecHash - * @param rimType - * @return + * Query that retrieves a reference manifest using the provided hex/dec hash and rim type. + * + * @param hexDecHash string representation of the hex dec hash + * @param rimType string representation of the rim type + * @return a reference manifest */ ReferenceManifest findByHexDecHashAndRimType(String hexDecHash, String rimType); /** - * @param hexDecHash - * @param rimType - * @return + * Query that retrieves a reference manifest using the provided event log hash and rim type. + * + * @param hexDecHash string representation of the event log hash + * @param rimType string representation of the rim type + * @return a reference manifest */ ReferenceManifest findByEventLogHashAndRimType(String hexDecHash, String rimType); /** - * @param manufacturer - * @param model - * @return + * Query that retrieves a list of base reference manifests using the provided manufacturer and model + * and where the rim type is equal to base. + * + * @param manufacturer string representation of platform manufacturer + * @param model string representation of platform model + * @return a list of base reference manifests */ - @Query(value = "SELECT * FROM ReferenceManifest WHERE platformManufacturer = ?1 AND platformModel = ?2 AND rimType = 'Base'", nativeQuery = true) + @Query(value = "SELECT * FROM ReferenceManifest WHERE platformManufacturer = ?1 AND platformModel = ?2 " + + "AND rimType = 'Base'", nativeQuery = true) List getBaseByManufacturerModel(String manufacturer, String model); /** - * @param manufacturer - * @param dType - * @return + * Query that retrieves a list of base reference manifests using the provided manufacturer and model. + * + * @param manufacturer string representation of platform manufacturer + * @param dType dtype + * @return a list of base reference manifests */ - @Query(value = "SELECT * FROM ReferenceManifest WHERE platformManufacturer = ?1 AND DTYPE = ?2", nativeQuery = true) + @Query(value = "SELECT * FROM ReferenceManifest WHERE platformManufacturer = ?1 AND DTYPE = ?2", + nativeQuery = true) List getByManufacturer(String manufacturer, String dType); /** - * @param model - * @param dType - * @return + * Query that retrieves a reference manifest using the provided model and dtype. + * + * @param model string representation of platform model + * @param dType dtype + * @return a reference manifest */ - @Query(value = "SELECT * FROM ReferenceManifest WHERE platformModel = ?1 AND DTYPE = ?2", nativeQuery = true) + @Query(value = "SELECT * FROM ReferenceManifest WHERE platformModel = ?1 AND DTYPE = ?2", + nativeQuery = true) ReferenceManifest getByModel(String model, String dType); /** - * @return + * Query that retrieves a list of base reference manifests where the dtype is a base reference manifest. + * + * @return a list of base reference manifests */ - @Query(value = "SELECT * FROM ReferenceManifest WHERE DTYPE = 'BaseReferenceManifest'", nativeQuery = true) + @Query(value = "SELECT * FROM ReferenceManifest WHERE DTYPE = 'BaseReferenceManifest'", + nativeQuery = true) List findAllBaseRims(); /** - * Query that retrieves a + * Query that retrieves a list of support reference manifests where the dtype is a + * support reference manifest. * - * @return + * @return a list of support reference manifests */ - @Query(value = "SELECT * FROM ReferenceManifest WHERE DTYPE = 'SupportReferenceManifest'", nativeQuery = true) + @Query(value = "SELECT * FROM ReferenceManifest WHERE DTYPE = 'SupportReferenceManifest'", + nativeQuery = true) List findAllSupportRims(); /** - * Query that retrieves a + * Query that retrieves a base reference manifest using the provided uuid and where the dtype is a + * base reference manifest. * - * @param uuid - * @return + * @param uuid uuid + * @return a base reference manifest */ - @Query(value = "SELECT * FROM ReferenceManifest WHERE id = ?1 AND DTYPE = 'BaseReferenceManifest'", nativeQuery = true) + @Query(value = "SELECT * FROM ReferenceManifest WHERE id = ?1 AND DTYPE = 'BaseReferenceManifest'", + nativeQuery = true) BaseReferenceManifest getBaseRimEntityById(UUID uuid); /** - * Query that retrieves a + * Query that retrieves a support reference manifest using the provided uuid and + * where the dtype is a support reference manifest. * - * @param uuid - * @return + * @param uuid uuid + * @return a support reference manifest */ - @Query(value = "SELECT * FROM ReferenceManifest WHERE id = ?1 AND DTYPE = 'SupportReferenceManifest'", nativeQuery = true) + @Query(value = "SELECT * FROM ReferenceManifest WHERE id = ?1 AND DTYPE = 'SupportReferenceManifest'", + nativeQuery = true) SupportReferenceManifest getSupportRimEntityById(UUID uuid); /** - * Query that retrieves a + * Query that retrieves event log measurements using the provided uuid and where the dtype is an + * event log measurement. * - * @param uuid - * @return + * @param uuid uuid + * @return event log measurements */ - @Query(value = "SELECT * FROM ReferenceManifest WHERE id = ?1 AND DTYPE = 'EventLogMeasurements'", nativeQuery = true) + @Query(value = "SELECT * FROM ReferenceManifest WHERE id = ?1 AND DTYPE = 'EventLogMeasurements'", + nativeQuery = true) EventLogMeasurements getEventLogRimEntityById(UUID uuid); /** - * Query that retrieves a + * Query that retrieves a list of support reference manifests using the provided device name and where the + * dtype is a support reference manifest. * - * @param deviceName - * @return + * @param deviceName string representation of the device name + * @return a list of support reference manifests */ - @Query(value = "SELECT * FROM ReferenceManifest WHERE deviceName = ?1 AND DTYPE = 'SupportReferenceManifest'", nativeQuery = true) + @Query(value = "SELECT * FROM ReferenceManifest WHERE deviceName = ?1 " + + "AND DTYPE = 'SupportReferenceManifest'", nativeQuery = true) List byDeviceName(String deviceName); /** - * Query that retrieves a + * Query that retrieves event log measurements using the provided device name and where the dtype is + * event log measurements. * - * @param deviceName - * @return + * @param deviceName string representation of the device name + * @return event log measurements */ - @Query(value = "SELECT * FROM ReferenceManifest WHERE deviceName = ?1 AND DTYPE = 'EventLogMeasurements'", nativeQuery = true) + @Query(value = "SELECT * FROM ReferenceManifest WHERE deviceName = ?1 " + + "AND DTYPE = 'EventLogMeasurements'", nativeQuery = true) EventLogMeasurements byMeasurementDeviceName(String deviceName); /** - * Query that retrieves a + * Query that retrieves a list of support reference manifests using the provided manufacturer and platform + * model and where the rim type is support. * - * @param manufacturer - * @param model - * @return + * @param manufacturer string representation of platform manufacturer + * @param model string representation of platform model + * @return a list of support reference manifests */ - @Query(value = "SELECT * FROM ReferenceManifest WHERE platformManufacturer = ?1 AND platformModel = ?2 AND rimType = 'Support'", nativeQuery = true) + @Query(value = "SELECT * FROM ReferenceManifest WHERE platformManufacturer = ?1 AND platformModel = ?2 " + + "AND rimType = 'Support'", nativeQuery = true) List getSupportByManufacturerModel(String manufacturer, String model); /** - * Query that retrieves a + * Query that retrieves event log measurements using the provided platform model and where the dtype is + * event log measurements. * - * @param model - * @return + * @param model string representation of platform model. + * @return event log measurements */ - @Query(value = "SELECT * FROM ReferenceManifest WHERE platformModel = ?1 AND DTYPE = 'EventLogMeasurements'", nativeQuery = true) + @Query(value = "SELECT * FROM ReferenceManifest WHERE platformModel = ?1 " + + "AND DTYPE = 'EventLogMeasurements'", nativeQuery = true) EventLogMeasurements getLogByModel(String model); /** - * Query that retrieves a + * Query that retrieves a list of reference manifests using the provided device name. * - * @param deviceName - * @return + * @param deviceName string representation of device name + * @return a list of reference manifests */ List findByDeviceName(String deviceName); /** - * Query that retrieves a + * Query that retrieves a list of reference manifests using the provided archive flag. * - * @param archiveFlag - * @return + * @param archiveFlag archive flag + * @return a list of reference manifests */ List findByArchiveFlag(boolean archiveFlag); /** - * Query that retrieves a + * Query that retrieves a page of reference manifests using the provided archive flag and pageable value. * - * @param archiveFlag - * @param pageable - * @return + * @param archiveFlag archive flag + * @param pageable pageable + * @return a page of reference manifests */ Page findByArchiveFlag(boolean archiveFlag, Pageable pageable); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/SupplyChainValidationRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/SupplyChainValidationRepository.java index 3b66c935..6e6da523 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/SupplyChainValidationRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/SupplyChainValidationRepository.java @@ -12,7 +12,7 @@ public interface SupplyChainValidationRepository extends JpaRepository findByValidationType(String validateType); @@ -20,7 +20,7 @@ public interface SupplyChainValidationRepository extends JpaRepository findByValidationResult(String validationResult); diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/SupplyChainValidationSummaryRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/SupplyChainValidationSummaryRepository.java index 19741741..bf4964b3 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/SupplyChainValidationSummaryRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/SupplyChainValidationSummaryRepository.java @@ -15,19 +15,26 @@ public interface SupplyChainValidationSummaryRepository extends JpaRepository { /** - * @param device - * @return + * Query that retrieves a supply chain validation summary using the provided device. + * + * @param device device + * @return a supply chain validation summary */ SupplyChainValidationSummary findByDevice(Device device); /** - * @return + * Query that retrieves a list of supply chain validation summaries where the archive flag is false. + * + * @return a list of supply chain validation summary */ List findByArchiveFlagFalse(); /** - * @param pageable - * @return + * Query that retrieves a page of supply chain validation summaries using the provided pageable value + * and where the archive flag is false. + * + * @param pageable pageable + * @return a page of supply chain validation summary */ Page findByArchiveFlagFalse(Pageable pageable); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/TPM2ProvisionerStateRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/TPM2ProvisionerStateRepository.java index e5cd76d2..ea6c7e91 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/TPM2ProvisionerStateRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/TPM2ProvisionerStateRepository.java @@ -10,7 +10,7 @@ public interface TPM2ProvisionerStateRepository extends JpaRepository l = new ArrayList<>(names.length); + + for (int i = 0; i != names.length; i++) { + if (names[i].getTagNo() == GeneralName.directoryName) { + l.add(X500Name.getInstance(names[i].getName())); + } + } + + return l.toArray(new X500Name[l.size()]); + } + + /** + * Retrieve the Date from an ASN1GeneralizedTime. + * + * @param time (ASN1GeneralizedTime) of the certificate + * @return the Date from a ASN1GeneralizedTime + */ + public static Date recoverDate(final ASN1GeneralizedTime time) { + try { + return time.getDate(); + } catch (ParseException e) { + throw new IllegalStateException("unable to recover date: " + e.getMessage()); + } + } + /** * Getter for the CRL Distribution that is reference by the Revocation Locator * on the portal. @@ -502,6 +663,7 @@ public abstract class Certificate extends ArchivableEntity { /** * Getter for the x509 Platform Certificate version. + * * @return a big integer representing the certificate version. If there * is an error, return the max value to visible show error. */ @@ -519,7 +681,7 @@ public abstract class Certificate extends ArchivableEntity { * Checks if another certificate is the issuer for this certificate. * * @param issuer the other certificate to check (must be an X509Certificate, - * not an X509AttributeCertificateHolder) + * not an X509AttributeCertificateHolder) * @return whether or not the other certificate is the issuer for this certificate * @throws IOException if there is an issue deserializing either certificate */ @@ -536,7 +698,7 @@ public abstract class Certificate extends ArchivableEntity { certX509.verify(issuerX509.getPublicKey()); isIssuer = ""; } catch (CertificateException | NoSuchAlgorithmException | InvalidKeyException - | NoSuchProviderException | SignatureException e) { + | NoSuchProviderException | SignatureException e) { log.error(e); } break; @@ -550,8 +712,8 @@ public abstract class Certificate extends ArchivableEntity { isIssuer = ""; } } catch (NoSuchAlgorithmException - | InvalidKeyException - | SignatureException sigEx) { + | InvalidKeyException + | SignatureException sigEx) { log.error(sigEx); } break; @@ -564,7 +726,7 @@ public abstract class Certificate extends ArchivableEntity { } /** - * Return whether or not this certificate is valid on a particular date. + * Return whether this certificate is valid on a particular date. * * @param date the date of interest. * @return true if the attribute certificate is valid, false otherwise. @@ -601,7 +763,7 @@ public abstract class Certificate extends ArchivableEntity { protected CertificateType getCertificateType() throws IOException { //Parse the certificate into a sequence ASN1Sequence testCred1 = (ASN1Sequence) ASN1Primitive.fromByteArray(this.certificateBytes); - ASN1Sequence testSeq = (ASN1Sequence) ((ASN1Object) testCred1.toArray()[0]); + ASN1Sequence testSeq = (ASN1Sequence) testCred1.toArray()[0]; if (testSeq.toArray()[0] instanceof ASN1Integer) { if (testSeq.toArray().length >= MIN_ATTR_CERT_LENGTH) { @@ -611,7 +773,8 @@ public abstract class Certificate extends ArchivableEntity { // V1 X509Certificate return CertificateType.X509_CERTIFICATE; } - } else if (testSeq.toArray()[0] instanceof DERTaggedObject || testSeq.toArray()[0] instanceof DLTaggedObject) { + } else if (testSeq.toArray()[0] instanceof DERTaggedObject + || testSeq.toArray()[0] instanceof DLTaggedObject) { // V2 or V3 X509Certificate return CertificateType.X509_CERTIFICATE; } @@ -619,7 +782,6 @@ public abstract class Certificate extends ArchivableEntity { return CertificateType.INVALID_CERTIFICATE; } - private String parseKeyUsage(final boolean[] bools) { StringBuilder sb = new StringBuilder(); @@ -636,6 +798,8 @@ public abstract class Certificate extends ArchivableEntity { /** * Getter for the authorityKeyIdentifier. + * + * @param aki authority key identifier * @return the ID's byte representation */ private String authKeyIdentifierToString(final AuthorityKeyIdentifier aki) { @@ -655,7 +819,7 @@ public abstract class Certificate extends ArchivableEntity { * * @param oid Object Identifier * @return ASN1Primitive Content related to the requested OID - * @throws java.io.IOException + * @throws IOException io exception */ private ASN1Primitive getExtensionValue(final String oid) throws IOException { byte[] extensionValue = getX509Certificate().getExtensionValue(oid); @@ -684,6 +848,7 @@ public abstract class Certificate extends ArchivableEntity { /** * Getter for the AuthorityInfoAccess extension value on list format. * + * @param authInfoAccess byte representation of the authority info access * @return List Authority info access list */ private String getAuthorityInfoAccess(final byte[] authInfoAccess) { @@ -704,6 +869,7 @@ public abstract class Certificate extends ArchivableEntity { /** * Getter for the AuthorityInfoAccess extension value on list format. * + * @param authInfoAccess authority information access * @return List Authority info access list */ private String getAuthorityInfoAccess(final AuthorityInformationAccess authInfoAccess) { @@ -724,7 +890,6 @@ public abstract class Certificate extends ArchivableEntity { return sb.toString(); } - /** * Retrieve the original X509 attribute certificate. * @@ -773,6 +938,7 @@ public abstract class Certificate extends ArchivableEntity { /** * Getter for the policy statement. + * * @return cloned bit representation of constraints */ public byte[] getPolicyConstraints() { @@ -837,159 +1003,20 @@ public abstract class Certificate extends ArchivableEntity { } /** - * - * Gets the raw bytes for the certificate. - * @param certificatePath path to the certificate file - * @return bytes from the certificate file - * @throws IOException if there is a problem reading the file + * Holds the different certificate types. */ - public static byte[] readBytes(final Path certificatePath) throws IOException { - Preconditions.checkArgument( - certificatePath != null, - "Cannot construct a Certificate from a null path" - ); - - return Files.readAllBytes(certificatePath); - } - - /** - * Retrieve a formatted subject DN string from a certificate. This allows for extended support of DNs found in - * various RFCs. - * - * @param certificate the certificate holding subject DNs - * @return IOException if there is an issue decoding the subject DNs - */ - public static String getSubjectDNString(final X509Certificate certificate) - throws IOException { - X509CertificateHolder certificateHolder = null; - try { - certificateHolder = new X509CertificateHolder(certificate.getEncoded()); - } catch (CertificateEncodingException e) { - throw new IOException("Could not encode certificate", e); - } - - X500Name x500Name = certificateHolder.getSubject(); - return x500Name.toString(); - } - - /** - * Retrieve a formatted issuer DN string from a certificate. This allows for extended support of DNs found in - * various RFCs. - * - * @param certificate the certificate holding issuer DNs - * @return IOException if there is an issue decoding the issuer DNs - */ - public static String getIssuerDNString(final X509Certificate certificate) - throws IOException { - X509CertificateHolder certificateHolder = null; - try { - certificateHolder = new X509CertificateHolder(certificate.getEncoded()); - } catch (CertificateEncodingException e) { - throw new IOException("Could not encode certificate", e); - } - - X500Name x500Name = certificateHolder.getIssuer(); - return x500Name.toString(); - } - - /** - * Retrieve an RSA-based X509 certificate's public key modulus. - * - * @param certificate the certificate holding a public key - * @return a BigInteger representing its public key's modulus or null if none found - * @throws IOException if there is an issue decoding the encoded public key - */ - public static BigInteger getPublicKeyModulus(final X509Certificate certificate) - throws IOException { - X509CertificateHolder certificateHolder = null; - try { - certificateHolder = new X509CertificateHolder(certificate.getEncoded()); - } catch (CertificateEncodingException e) { - throw new IOException("Could not encode certificate", e); - } - try { - return getPublicKeyModulus( - certificateHolder.getSubjectPublicKeyInfo().parsePublicKey().toASN1Primitive() - ); - } catch (IOException e) { - log.info("No RSA Key Detected in certificate"); - return null; - } - } - - /** - * Retrieves the modulus of the given PublicKey. - * - * @param publicKey the public key - * @return a BigInteger representing the public key's modulus - * @throws IOException if there is an issue decoding the public key - */ - public static BigInteger getPublicKeyModulus(final PublicKey publicKey) throws IOException { - ASN1Primitive publicKeyASN1 = ASN1Primitive.fromByteArray(publicKey.getEncoded()); - if (publicKeyASN1 instanceof ASN1Sequence) { - ASN1Sequence publicKeyASN1Sequence = (ASN1Sequence) publicKeyASN1; - ASN1BitString encodedModulusAndExponent = (ASN1BitString) - publicKeyASN1Sequence.getObjectAt(1); - byte[] modulusAndExponentBytes = encodedModulusAndExponent.getOctets(); - return getPublicKeyModulus(ASN1Primitive.fromByteArray(modulusAndExponentBytes)); - } else { - throw new IOException("Could not read public key as ASN1Sequence"); - } - } - - private static BigInteger getPublicKeyModulus(final ASN1Primitive publicKey) - throws IOException { - if (publicKey instanceof ASN1Sequence) { - ASN1Sequence pubKeySeq = (ASN1Sequence) publicKey; - ASN1Encodable modulus = pubKeySeq.getObjectAt(0); - if (modulus instanceof ASN1Integer) { - return ((ASN1Integer) modulus).getValue(); - } else { - throw new IOException("Could not read modulus as an ASN1Integer"); - } - } else { - throw new IOException("Could not parse public key information as an ASN1Sequence"); - } - } - - /** - * Retrieve the X509 Name array from the issuer in an Attribute Certificate. - * - * @param issuer for the Attribute Certificate - * @return a X500Name[] representing the names of the issuer - */ - public static X500Name[] getAttributeCertificateIssuerNames(final AttCertIssuer issuer) { - final ASN1Encodable form = issuer.getIssuer(); - GeneralNames name; - if (form instanceof V2Form) { - name = ((V2Form) form).getIssuerName(); - } else { - name = (GeneralNames) form; - } - - GeneralName[] names = name.getNames(); - List l = new ArrayList<>(names.length); - - for (int i = 0; i != names.length; i++) { - if (names[i].getTagNo() == GeneralName.directoryName) { - l.add(X500Name.getInstance(names[i].getName())); - } - } - - return (X500Name[]) l.toArray(new X500Name[l.size()]); - } - - /** - * Retrieve the Date from an ASN1GeneralizedTime. - * - * @param time (ASN1GeneralizedTime) of the certificate - * @return the Date from a ASN1GeneralizedTime - */ - public static Date recoverDate(final ASN1GeneralizedTime time) { - try { - return time.getDate(); - } catch (ParseException e) { - throw new IllegalStateException("unable to recover date: " + e.getMessage()); - } + public enum CertificateType { + /** + * Basic X509 Certificate. + */ + X509_CERTIFICATE, + /** + * Basic Attribute Certificate. + */ + ATTRIBUTE_CERTIFICATE, + /** + * Invalid Certificate. + */ + INVALID_CERTIFICATE } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/Device.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/Device.java index ff6e7c0f..d3f26d4a 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/Device.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/Device.java @@ -65,6 +65,11 @@ public class Device extends AbstractEntity { @Column(name = "summary_id") private String summaryId; + /** + * Constructor creates a Device object using the provided device info report. + * + * @param deviceInfoReport device information report + */ public Device(final DeviceInfoReport deviceInfoReport) { super(); if (deviceInfoReport != null) { @@ -94,6 +99,7 @@ public class Device extends AbstractEntity { /** * Getter for the report time stamp. + * * @return a cloned version */ public Timestamp getLastReportTimestamp() { @@ -106,12 +112,14 @@ public class Device extends AbstractEntity { /** * Setter for the report time stamp. + * * @param lastReportTimestamp */ public void setLastReportTimestamp(final Timestamp lastReportTimestamp) { this.lastReportTimestamp = (Timestamp) lastReportTimestamp.clone(); } + @Override public String toString() { return String.format("Device Name: %s%nStatus: %s%nSummary: %s%n", name, (healthStatus == null ? "N/A" : healthStatus.getStatus()), @@ -119,13 +127,14 @@ public class Device extends AbstractEntity { } @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof Device)) { + public boolean equals(final Object o) { + if (this == o) { + return true; + } + if (!(o instanceof Device device)) { return false; } - Device device = (Device) o; return isStateOverridden == device.isStateOverridden && Objects.equals(name, device.name) && healthStatus == device.healthStatus @@ -141,4 +150,4 @@ public class Device extends AbstractEntity { supplyChainValidationStatus, lastReportTimestamp, isStateOverridden, overrideReason, summaryId); } -} \ No newline at end of file +} diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidation.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidation.java index c316f313..4c8a4f2d 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidation.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidation.java @@ -2,7 +2,6 @@ package hirs.attestationca.persist.entity.userdefined; import com.google.common.base.Preconditions; import hirs.attestationca.persist.entity.ArchivableEntity; -import hirs.attestationca.persist.entity.userdefined.rim.BaseReferenceManifest; import hirs.attestationca.persist.enums.AppraisalStatus; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -21,48 +20,19 @@ import java.util.List; */ @Entity public class SupplyChainValidation extends ArchivableEntity { - /** - * Used to indicate which type of validation a result is related to. - */ - public enum ValidationType { - /** - * Validation of an endorsement credential. - */ - ENDORSEMENT_CREDENTIAL, - - /** - * Validation of a platform credential and also delta platform credentials from spec 1.1. - */ - PLATFORM_CREDENTIAL, - - /** - * Validation of a platform credential's attributes. - */ - PLATFORM_CREDENTIAL_ATTRIBUTES, - - /** - * Validation of the device firmware. - */ - FIRMWARE - } - @Getter @Column private final ValidationType validationType; - @Getter @Column private final AppraisalStatus.Status validationResult; - @ManyToMany(fetch = FetchType.EAGER) @JoinTable(name = "CertificatesUsedToValidate", - joinColumns = { @JoinColumn(name = "validation_id", nullable = false) }) + joinColumns = {@JoinColumn(name = "validation_id", nullable = false)}) private final List certificatesUsed; - @Getter @Column(length = RESULT_MESSAGE_LENGTH) private final String message; - @Getter @Column private String rimId; @@ -81,10 +51,10 @@ public class SupplyChainValidation extends ArchivableEntity { /** * Construct a new SupplyChainValidation instance. * - * @param validationType the type of validation this instance will represent; not null + * @param validationType the type of validation this instance will represent; not null * @param validationResult whether the validation was successful or not * @param certificatesUsed certificates used, if any, in the validation process; not null - * @param message a related information or error message; may be null + * @param message a related information or error message; may be null */ public SupplyChainValidation(final ValidationType validationType, final AppraisalStatus.Status validationResult, @@ -122,4 +92,29 @@ public class SupplyChainValidation extends ArchivableEntity { public List getCertificatesUsed() { return Collections.unmodifiableList(certificatesUsed); } + + /** + * Used to indicate which type of validation a result is related to. + */ + public enum ValidationType { + /** + * Validation of an endorsement credential. + */ + ENDORSEMENT_CREDENTIAL, + + /** + * Validation of a platform credential and also delta platform credentials from spec 1.1. + */ + PLATFORM_CREDENTIAL, + + /** + * Validation of a platform credential's attributes. + */ + PLATFORM_CREDENTIAL_ATTRIBUTES, + + /** + * Validation of the device firmware. + */ + FIRMWARE + } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidationSummary.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidationSummary.java index 8793fe37..b0f5a43c 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidationSummary.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidationSummary.java @@ -32,7 +32,6 @@ import java.util.Set; import java.util.UUID; - /** * A container class to group multiple related {@link SupplyChainValidation} instances * together. @@ -40,12 +39,10 @@ import java.util.UUID; @Entity public class SupplyChainValidationSummary extends ArchivableEntity { + private static final String DEVICE_ID_FIELD = "device.id"; @ManyToOne @JoinColumn(name = "device_id") private final Device device; - - private static final String DEVICE_ID_FIELD = "device.id"; - @Getter @Column @Enumerated(EnumType.STRING) @@ -72,120 +69,11 @@ public class SupplyChainValidationSummary extends ArchivableEntity { this.message = Strings.EMPTY; } - /** - * This class enables the retrieval of SupplyChainValidationSummaries by their attributes. - */ - public static class Selector { - private final CrudRepository - supplyChainValidationSummaryCrudManager; - - private final Map fieldValueSelections; - - /** - * Construct a new Selector that will use the given {@link CrudRepository} to - * retrieve SupplyChainValidationSummaries. - * - * @param supplyChainValidationSummaryCrudManager the summary manager to be used to retrieve - * supply chain validation summaries - */ - public Selector( - final CrudRepository - supplyChainValidationSummaryCrudManager) { - Preconditions.checkArgument( - supplyChainValidationSummaryCrudManager != null, - "supply chain validation summary manager cannot be null" - ); - - this.supplyChainValidationSummaryCrudManager = supplyChainValidationSummaryCrudManager; - this.fieldValueSelections = new HashMap<>(); - } - - /** - * Construct the criterion that can be used to query for supply chain validation summaries - * matching the configuration of this Selector. - * - * @return a Criterion that can be used to query for supply chain validation summaries - * matching the configuration of this instance - */ - public Predicate[] getCriterion(final CriteriaBuilder criteriaBuilder) { - Predicate[] predicates = new Predicate[fieldValueSelections.size()]; - CriteriaQuery query = criteriaBuilder.createQuery(SupplyChainValidationSummary.class); - Root root = query.from(SupplyChainValidationSummary.class); - - int i = 0; - for (Map.Entry fieldValueEntry : fieldValueSelections.entrySet()) { - predicates[i++] = criteriaBuilder.equal(root.get(fieldValueEntry.getKey()), fieldValueEntry.getValue()); - } - - return predicates; - } - - /** - * Set a field name and value to match. - * - * @param name the field name to query - * @param value the value to query - */ - protected void setFieldValue(final String name, final Object value) { - Object valueToAssign = value; - - Preconditions.checkArgument( - value != null, - "field value cannot be null." - ); - - if (value instanceof String) { - Preconditions.checkArgument( - StringUtils.isNotEmpty((String) value), - "field value cannot be empty." - ); - } - - if (value instanceof byte[]) { - byte[] valueBytes = (byte[]) value; - - Preconditions.checkArgument( - ArrayUtils.isNotEmpty(valueBytes), - "field value cannot be empty." - ); - - valueToAssign = Arrays.copyOf(valueBytes, valueBytes.length); - } - - fieldValueSelections.put(name, valueToAssign); - } - - - /** - * Specify a device id that supply chain validation summaries must have to be considered - * as matching. - * - * @param device the device id to query - * @return this instance (for chaining further calls) - */ - public Selector byDeviceId(final UUID device) { - setFieldValue(DEVICE_ID_FIELD, device); - return this; - } - } - - /** - * Get a Selector for use in retrieving SupplyChainValidationSummary. - * - * @param certMan the CrudManager to be used to retrieve persisted supply chain validation - * summaries - * @return a SupplyChainValidationSummary.Selector instance to use for retrieving certificates - */ - public static SupplyChainValidationSummary.Selector select( - final CrudRepository certMan) { - return new SupplyChainValidationSummary.Selector(certMan); - } - /** * Construct a new SupplyChainValidationSummary. * - * @param device device that underwent supply chain validation - * @param validations a Collection of Validations that should comprise this summary; not null + * @param device device that underwent supply chain validation + * @param validations a Collection of Validations that should comprise this summary; not null * @param provisionSessionId randomly generated UUID to associate with results */ public SupplyChainValidationSummary(final Device device, @@ -198,7 +86,7 @@ public class SupplyChainValidationSummary extends ArchivableEntity { /** * Construct a new SupplyChainValidationSummary. * - * @param device device that underwent supply chain validation + * @param device device that underwent supply chain validation * @param validations a Collection of Validations that should comprise this summary; not null */ public SupplyChainValidationSummary(final Device device, @@ -221,6 +109,18 @@ public class SupplyChainValidationSummary extends ArchivableEntity { this.message = status.getMessage(); } + /** + * Get a Selector for use in retrieving SupplyChainValidationSummary. + * + * @param certMan the CrudManager to be used to retrieve persisted supply chain validation + * summaries + * @return a SupplyChainValidationSummary.Selector instance to use for retrieving certificates + */ + public static SupplyChainValidationSummary.Selector select( + final CrudRepository certMan) { + return new SupplyChainValidationSummary.Selector(certMan); + } + /** * This retrieves the device associated with the supply chain validation summaries. * @@ -270,4 +170,102 @@ public class SupplyChainValidationSummary extends ArchivableEntity { return new AppraisalStatus(AppraisalStatus.Status.PASS, Strings.EMPTY); } + + /** + * This class enables the retrieval of SupplyChainValidationSummaries by their attributes. + */ + public static class Selector { + private final CrudRepository + supplyChainValidationSummaryCrudManager; + + private final Map fieldValueSelections; + + /** + * Construct a new Selector that will use the given {@link CrudRepository} to + * retrieve SupplyChainValidationSummaries. + * + * @param supplyChainValidationSummaryCrudManager the summary manager to be used to retrieve + * supply chain validation summaries + */ + public Selector( + final CrudRepository + supplyChainValidationSummaryCrudManager) { + Preconditions.checkArgument( + supplyChainValidationSummaryCrudManager != null, + "supply chain validation summary manager cannot be null" + ); + + this.supplyChainValidationSummaryCrudManager = supplyChainValidationSummaryCrudManager; + this.fieldValueSelections = new HashMap<>(); + } + + /** + * Construct the criterion that can be used to query for supply chain validation summaries + * matching the configuration of this Selector. + * + * @return a Criterion that can be used to query for supply chain validation summaries + * matching the configuration of this instance + */ + public Predicate[] getCriterion(final CriteriaBuilder criteriaBuilder) { + Predicate[] predicates = new Predicate[fieldValueSelections.size()]; + CriteriaQuery query = + criteriaBuilder.createQuery(SupplyChainValidationSummary.class); + Root root = query.from(SupplyChainValidationSummary.class); + + int i = 0; + for (Map.Entry fieldValueEntry : fieldValueSelections.entrySet()) { + predicates[i++] = + criteriaBuilder.equal(root.get(fieldValueEntry.getKey()), fieldValueEntry.getValue()); + } + + return predicates; + } + + /** + * Set a field name and value to match. + * + * @param name the field name to query + * @param value the value to query + */ + protected void setFieldValue(final String name, final Object value) { + Object valueToAssign = value; + + Preconditions.checkArgument( + value != null, + "field value cannot be null." + ); + + if (value instanceof String) { + Preconditions.checkArgument( + StringUtils.isNotEmpty((String) value), + "field value cannot be empty." + ); + } + + if (value instanceof byte[] valueBytes) { + + Preconditions.checkArgument( + ArrayUtils.isNotEmpty(valueBytes), + "field value cannot be empty." + ); + + valueToAssign = Arrays.copyOf(valueBytes, valueBytes.length); + } + + fieldValueSelections.put(name, valueToAssign); + } + + + /** + * Specify a device id that supply chain validation summaries must have to be considered + * as matching. + * + * @param device the device id to query + * @return this instance (for chaining further calls) + */ + public Selector byDeviceId(final UUID device) { + setFieldValue(DEVICE_ID_FIELD, device); + return this; + } + } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateVariables.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateVariables.java index 621ef771..9db24544 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateVariables.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateVariables.java @@ -2,46 +2,209 @@ package hirs.attestationca.persist.entity.userdefined.certificate; public class CertificateVariables { + /** + * + */ public static final String PEM_HEADER = "-----BEGIN CERTIFICATE-----"; + + /** + * + */ public static final String PEM_FOOTER = "-----END CERTIFICATE-----"; + + /** + * + */ public static final String PEM_ATTRIBUTE_HEADER = "-----BEGIN ATTRIBUTE CERTIFICATE-----"; + + /** + * + */ public static final String PEM_ATTRIBUTE_FOOTER = "-----END ATTRIBUTE CERTIFICATE-----"; + + /** + * + */ public static final String MALFORMED_CERT_MESSAGE = "Malformed certificate detected."; + + /** + * + */ public static final int MAX_CERT_LENGTH_BYTES = 2048; - public static final int MAX_NUMERIC_PRECISION = 49; // Can store up to 160 bit values + + /** + * + */ + public static final int MAX_NUMERIC_PRECISION = 49; + /** + * Can store up to 160 bit values + */ public static final int MAX_PUB_KEY_MODULUS_HEX_LENGTH = 1024; + + /** + * + */ public static final int KEY_USAGE_BIT0 = 0; + + /** + * + */ public static final int KEY_USAGE_BIT1 = 1; + + /** + * + */ public static final int KEY_USAGE_BIT2 = 2; + + /** + * + */ public static final int KEY_USAGE_BIT3 = 3; + + /** + * + */ public static final int KEY_USAGE_BIT4 = 4; + + /** + * + */ public static final int KEY_USAGE_BIT5 = 5; + + /** + * + */ public static final int KEY_USAGE_BIT6 = 6; + + /** + * + */ public static final int KEY_USAGE_BIT7 = 7; + + /** + * + */ public static final int KEY_USAGE_BIT8 = 8; + + /** + * + */ public static final String KEY_USAGE_DS = "DIGITAL SIGNATURE"; + + /** + * + */ public static final String KEY_USAGE_NR = "NON-REPUDIATION"; + + /** + * + */ public static final String KEY_USAGE_KE = "KEY ENCIPHERMENT"; + + /** + * + */ public static final String KEY_USAGE_DE = "DATA ENCIPHERMENT"; + + /** + * + */ public static final String KEY_USAGE_KA = "KEY AGREEMENT"; + + /** + * + */ public static final String KEY_USAGE_KC = "KEY CERT SIGN"; + + /** + * + */ public static final String KEY_USAGE_CS = "CRL SIGN"; + + /** + * + */ public static final String KEY_USAGE_EO = "ENCIPHER ONLY"; + + /** + * + */ public static final String KEY_USAGE_DO = "DECIPHER ONLY"; + + /** + * + */ public static final String ECDSA_OID = "1.2.840.10045.4.3.2"; + + /** + * + */ public static final String ECDSA_SHA224_OID = "1.2.840.10045.4.1"; + + /** + * + */ public static final String RSA256_OID = "1.2.840.113549.1.1.11"; + + /** + * + */ public static final String RSA384_OID = "1.2.840.113549.1.1.12"; + + /** + * + */ public static final String RSA512_OID = "1.2.840.113549.1.1.13"; + + /** + * + */ public static final String RSA224_OID = "1.2.840.113549.1.1.14"; + + /** + * + */ public static final String RSA512_224_OID = "1.2.840.113549.1.1.15"; + + /** + * + */ public static final String RSA512_256_OID = "1.2.840.113549.1.1.16"; + + /** + * + */ public static final String RSA256_STRING = "SHA256WithRSA"; + + /** + * + */ public static final String RSA384_STRING = "SHA384WithRSA"; + + /** + * + */ public static final String RSA224_STRING = "SHA224WithRSA"; + + /** + * + */ public static final String RSA512_STRING = "SHA512WithRSA"; + + /** + * + */ public static final String RSA512_224_STRING = "SHA512-224WithRSA"; + + /** + * + */ public static final String RSA512_256_STRING = "SHA512-256WithRSA"; + + /** + * + */ public static final String ECDSA_STRING = "SHA256WithECDSA"; + public static final String ECDSA_SHA224_STRING = "SHA224WithECDSA"; } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/IDevIDCertificate.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/IDevIDCertificate.java index a282c6b8..43c77842 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/IDevIDCertificate.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/IDevIDCertificate.java @@ -6,8 +6,12 @@ import jakarta.persistence.Entity; import jakarta.persistence.Transient; import lombok.Getter; import lombok.extern.log4j.Log4j2; -import org.apache.commons.codec.binary.Hex; -import org.bouncycastle.asn1.*; +import org.bouncycastle.asn1.ASN1Encodable; +import org.bouncycastle.asn1.ASN1InputStream; +import org.bouncycastle.asn1.ASN1ObjectIdentifier; +import org.bouncycastle.asn1.ASN1OctetString; +import org.bouncycastle.asn1.ASN1Sequence; +import org.bouncycastle.asn1.ASN1TaggedObject; import org.bouncycastle.asn1.x509.CertificatePolicies; import org.bouncycastle.asn1.x509.Extension; import org.bouncycastle.asn1.x509.PolicyInformation; @@ -15,21 +19,13 @@ import org.bouncycastle.cert.jcajce.JcaX509ExtensionUtils; import java.io.ByteArrayInputStream; import java.io.IOException; -import java.nio.ByteBuffer; -import java.nio.CharBuffer; -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.time.Instant; -import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; -import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.Set; @Entity @Log4j2 @@ -154,6 +150,7 @@ public class IDevIDCertificate extends Certificate { /** * Parses fields related to IDevID certificates. + * * @throws IOException if a problem is encountered during parsing */ private void parseIDevIDCertificate() throws IOException { @@ -207,12 +204,12 @@ public class IDevIDCertificate extends Certificate { } catch (IllegalArgumentException e) { // Some certs have been found to contain tagged objects for hwSerialNum. // Handle this as a special case. - log.warn("Could not parse octet string for hwSerialNum. Attempting to parse tag."); + log.warn( + "Could not parse octet string for hwSerialNum. Attempting to parse tag."); try { tagObj1 = ASN1TaggedObject.getInstance(seq1.getObjectAt(1)); obj2 = ASN1OctetString.getInstance(tagObj1, false); - } - catch (Exception i) { // Invalid object found + } catch (Exception i) { // Invalid object found log.warn("Invalid object found for hwSerialNum."); break; } @@ -223,7 +220,7 @@ public class IDevIDCertificate extends Certificate { // the hwSerialNum field will be parsed accordingly. hwType = obj1.toString(); if (hasTCGOIDs()) { - tcgOid = true; + tcgOid = true; } // Convert octet string to byte array @@ -237,7 +234,8 @@ public class IDevIDCertificate extends Certificate { // Check for certificate policy qualifiers, which should be present for IDevIDs if in compliance with the // TCG specification. // For interoperability reasons, this will only log a warning if a TCG OID is specified above. - byte[] policyBytes = getX509Certificate().getExtensionValue(Extension.certificatePolicies.getId()); + byte[] policyBytes = + getX509Certificate().getExtensionValue(Extension.certificatePolicies.getId()); Map policyQualifiers = null; if (policyBytes != null) { @@ -264,8 +262,9 @@ public class IDevIDCertificate extends Certificate { failCondition = true; } if (failCondition) { - log.warn("TPM policy qualifiers not found, or do not meet logical criteria. Certificate may not " + - "be in compliance with TCG specification."); + log.warn( + "TPM policy qualifiers not found, or do not meet logical criteria. Certificate may not " + + "be in compliance with TCG specification."); } } @@ -288,8 +287,7 @@ public class IDevIDCertificate extends Certificate { public boolean hasTCGOIDs() { if (this.getHwType() != null) { return this.getHwType().equals(HWTYPE_TCG_TPM2_OID); - } - else { + } else { return false; } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/IdentityClaimProcessor.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/IdentityClaimProcessor.java index 2b95045a..f3446c26 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/IdentityClaimProcessor.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/IdentityClaimProcessor.java @@ -1,6 +1,5 @@ package hirs.attestationca.persist.provision; -import com.fasterxml.jackson.databind.ser.Serializers; import com.google.protobuf.ByteString; import hirs.attestationca.configuration.provisionerTpm2.ProvisionerTpm2; import hirs.attestationca.persist.entity.manager.CertificateRepository; @@ -69,24 +68,23 @@ import java.util.regex.Pattern; @Log4j2 public class IdentityClaimProcessor extends AbstractProcessor { - private static final String PCR_QUOTE_MASK = "0,1,2,3,4,5,6,7,8,9,10,11,12,13," - + "14,15,16,17,18,19,20,21,22,23"; - - private static final int NUM_OF_VARIABLES = 5; /** * Number of bytes to include in the TPM2.0 nonce. */ public static final int NONCE_LENGTH = 20; + private static final String PCR_QUOTE_MASK = "0,1,2,3,4,5,6,7,8,9,10,11,12,13," + + "14,15,16,17,18,19,20,21,22,23"; + private static final int NUM_OF_VARIABLES = 5; private static final int MAC_BYTES = 6; - private SupplyChainValidationService supplyChainValidationService; - private CertificateRepository certificateRepository; - private ComponentResultRepository componentResultRepository; - private ComponentInfoRepository componentInfoRepository; - private ReferenceManifestRepository referenceManifestRepository; - private ReferenceDigestValueRepository referenceDigestValueRepository; - private DeviceRepository deviceRepository; - private TPM2ProvisionerStateRepository tpm2ProvisionerStateRepository; + private final SupplyChainValidationService supplyChainValidationService; + private final CertificateRepository certificateRepository; + private final ComponentResultRepository componentResultRepository; + private final ComponentInfoRepository componentInfoRepository; + private final ReferenceManifestRepository referenceManifestRepository; + private final ReferenceDigestValueRepository referenceDigestValueRepository; + private final DeviceRepository deviceRepository; + private final TPM2ProvisionerStateRepository tpm2ProvisionerStateRepository; /** * Constructor. @@ -116,8 +114,8 @@ public class IdentityClaimProcessor extends AbstractProcessor { * Basic implementation of the ACA processIdentityClaimTpm2 method. Parses the claim, * stores the device info, performs supply chain validation, generates a nonce, * and wraps that nonce with the make credential process before returning it to the client. - * attCert.setPcrValues(pcrValues); - + * attCert.setPcrValues(pcrValues); + * * @param identityClaim the request to process, cannot be null * @return an identity claim response for the specified request containing a wrapped blob */ @@ -147,7 +145,7 @@ public class IdentityClaimProcessor extends AbstractProcessor { } } - ByteString blobStr = ByteString.copyFrom(new byte[]{}); + ByteString blobStr = ByteString.copyFrom(new byte[] {}); if (validationResult == AppraisalStatus.Status.PASS) { RSAPublicKey akPub = ProvisionUtils.parsePublicKey(claim.getAkPublicArea().toByteArray()); byte[] nonce = ProvisionUtils.generateRandomBytes(NONCE_LENGTH); @@ -195,7 +193,8 @@ public class IdentityClaimProcessor extends AbstractProcessor { private AppraisalStatus.Status doSupplyChainValidation( final ProvisionerTpm2.IdentityClaim claim, final PublicKey ekPub) { // attempt to find an endorsement credential to validate - EndorsementCredential endorsementCredential = parseEcFromIdentityClaim(claim, ekPub, certificateRepository); + EndorsementCredential endorsementCredential = + parseEcFromIdentityClaim(claim, ekPub, certificateRepository); // attempt to find platform credentials to validate List platformCredentials = parsePcsFromIdentityClaim(claim, @@ -283,10 +282,10 @@ public class IdentityClaimProcessor extends AbstractProcessor { /** * Converts a protobuf DeviceInfo object to a HIRS Utils DeviceInfoReport object. + * * @param claim the protobuf serialized identity claim containing the device info * @return a HIRS Utils DeviceInfoReport representation of device info */ - @SuppressWarnings("methodlength") private DeviceInfoReport parseDeviceInfo(final ProvisionerTpm2.IdentityClaim claim) throws NoSuchAlgorithmException { ProvisionerTpm2.DeviceInfo dv = claim.getDv(); @@ -357,7 +356,7 @@ public class IdentityClaimProcessor extends AbstractProcessor { String fileName = ""; Pattern pattern = Pattern.compile("([^\\s]+(\\.(?i)(rimpcr|rimel|bin|log))$)"); Matcher matcher; - MessageDigest messageDigest = MessageDigest.getInstance("SHA-256"); + MessageDigest messageDigest = MessageDigest.getInstance("SHA-256"); if (dv.getSwidfileCount() > 0) { for (ByteString swidFile : dv.getSwidfileList()) { @@ -425,9 +424,10 @@ public class IdentityClaimProcessor extends AbstractProcessor { if (dv.getLogfileCount() > 0) { for (ByteString logFile : dv.getLogfileList()) { try { - support = (SupportReferenceManifest) referenceManifestRepository.findByHexDecHashAndRimType( + support = + (SupportReferenceManifest) referenceManifestRepository.findByHexDecHashAndRimType( Hex.encodeHexString(messageDigest.digest(logFile.toByteArray())), - ReferenceManifest.SUPPORT_RIM); + ReferenceManifest.SUPPORT_RIM); if (support == null) { /* Either the logFile does not have a corresponding support RIM in the backend @@ -512,8 +512,10 @@ public class IdentityClaimProcessor extends AbstractProcessor { } // now update support rim - SupportReferenceManifest dbSupport = (SupportReferenceManifest) referenceManifestRepository - .findByHexDecHashAndRimType(swid.getHashValue(), ReferenceManifest.SUPPORT_RIM); + SupportReferenceManifest dbSupport = + (SupportReferenceManifest) referenceManifestRepository + .findByHexDecHashAndRimType(swid.getHashValue(), + ReferenceManifest.SUPPORT_RIM); if (dbSupport != null) { dbSupport.setFileName(swid.getName()); dbSupport.setSwidTagVersion(dbBaseRim.getSwidTagVersion()); @@ -584,7 +586,7 @@ public class IdentityClaimProcessor extends AbstractProcessor { dv.getNw().getHostname())); } - // Get TPM info, currently unimplemented + // Get TPM info, currently unimplemented TPMInfo tpmInfo = new TPMInfo(DeviceInfoEnums.NOT_SPECIFIED, (short) 0, (short) 0, @@ -628,7 +630,8 @@ public class IdentityClaimProcessor extends AbstractProcessor { } if (baseSupportRim != null - && referenceDigestValueRepository.findBySupportRimHash(baseSupportRim.getHexDecHash()).isEmpty()) { + && referenceDigestValueRepository.findBySupportRimHash(baseSupportRim.getHexDecHash()) + .isEmpty()) { try { TCGEventLog logProcessor = new TCGEventLog(baseSupportRim.getRimBytes()); ReferenceDigestValue rdv; @@ -688,7 +691,7 @@ public class IdentityClaimProcessor extends AbstractProcessor { log.error(String.format("Patching value does not exist (%s)", patchedValue)); } else { - // WIP - Until we get patch examples + // WIP - Until we get patch examples dbRdv.setPatched(true); } } @@ -721,7 +724,7 @@ public class IdentityClaimProcessor extends AbstractProcessor { } private int handleDeviceComponents(final String hostName, final String paccorString) { - int deviceComponents = 0 ; + int deviceComponents = 0; Map componentInfoMap = new HashMap<>(); try { List componentInfos = SupplyChainCredentialValidator diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/SupplyChainValidationService.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/SupplyChainValidationService.java index ff5b1611..1b763368 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/SupplyChainValidationService.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/SupplyChainValidationService.java @@ -11,7 +11,11 @@ import hirs.attestationca.persist.entity.manager.ReferenceDigestValueRepository; import hirs.attestationca.persist.entity.manager.ReferenceManifestRepository; import hirs.attestationca.persist.entity.manager.SupplyChainValidationRepository; import hirs.attestationca.persist.entity.manager.SupplyChainValidationSummaryRepository; -import hirs.attestationca.persist.entity.userdefined.*; +import hirs.attestationca.persist.entity.userdefined.Device; +import hirs.attestationca.persist.entity.userdefined.PolicySettings; +import hirs.attestationca.persist.entity.userdefined.ReferenceManifest; +import hirs.attestationca.persist.entity.userdefined.SupplyChainValidation; +import hirs.attestationca.persist.entity.userdefined.SupplyChainValidationSummary; import hirs.attestationca.persist.entity.userdefined.certificate.ComponentResult; import hirs.attestationca.persist.entity.userdefined.certificate.EndorsementCredential; import hirs.attestationca.persist.entity.userdefined.certificate.PlatformCredential; @@ -27,12 +31,10 @@ import lombok.extern.log4j.Log4j2; import org.apache.logging.log4j.Level; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.yaml.snakeyaml.events.Event; import java.security.KeyStore; import java.util.ArrayList; import java.util.HashMap; -import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -46,28 +48,28 @@ import static hirs.attestationca.persist.enums.AppraisalStatus.Status.PASS; @Service public class SupplyChainValidationService { - private CACredentialRepository caCredentialRepository; - private PolicyRepository policyRepository; - private ReferenceManifestRepository referenceManifestRepository; - private ReferenceDigestValueRepository referenceDigestValueRepository; - private ComponentResultRepository componentResultRepository; - private ComponentAttributeRepository componentAttributeRepository; - private CertificateRepository certificateRepository; - private SupplyChainValidationRepository supplyChainValidationRepository; - private SupplyChainValidationSummaryRepository supplyChainValidationSummaryRepository; + private final CACredentialRepository caCredentialRepository; + private final PolicyRepository policyRepository; + private final ReferenceManifestRepository referenceManifestRepository; + private final ReferenceDigestValueRepository referenceDigestValueRepository; + private final ComponentResultRepository componentResultRepository; + private final ComponentAttributeRepository componentAttributeRepository; + private final CertificateRepository certificateRepository; + private final SupplyChainValidationRepository supplyChainValidationRepository; + private final SupplyChainValidationSummaryRepository supplyChainValidationSummaryRepository; private UUID provisionSessionId; /** * Constructor. * - * @param caCredentialRepository ca credential repository - * @param policyRepository the policy manager - * @param certificateRepository the cert manager - * @param componentResultRepository the comp result manager - * @param referenceManifestRepository the RIM manager - * @param supplyChainValidationRepository the scv manager + * @param caCredentialRepository ca credential repository + * @param policyRepository the policy manager + * @param certificateRepository the cert manager + * @param componentResultRepository the comp result manager + * @param referenceManifestRepository the RIM manager + * @param supplyChainValidationRepository the scv manager * @param supplyChainValidationSummaryRepository the summary manager - * @param referenceDigestValueRepository the even manager + * @param referenceDigestValueRepository the even manager */ @Autowired @SuppressWarnings("ParameterNumberCheck") @@ -97,13 +99,12 @@ public class SupplyChainValidationService { * an identity request and validates the supply chain in accordance to the * current supply chain policy. * - * @param ec The endorsement credential from the identity request. - * @param pcs The platform credentials from the identity request. - * @param device The device to be validated. + * @param ec The endorsement credential from the identity request. + * @param pcs The platform credentials from the identity request. + * @param device The device to be validated. * @param componentInfos list of components from the device * @return A summary of the validation results. */ - @SuppressWarnings("methodlength") public SupplyChainValidationSummary validateSupplyChain(final EndorsementCredential ec, final List pcs, final Device device, @@ -250,8 +251,8 @@ public class SupplyChainValidationService { updateComponentStatus(componentResultRepository .findByCertificateSerialNumberAndBoardSerialNumber( - baseCredential.getSerialNumber().toString(), - baseCredential.getPlatformSerial())); + baseCredential.getSerialNumber().toString(), + baseCredential.getPlatformSerial())); } if (!attrErrorMessage.isEmpty()) { //combine platform and platform attributes @@ -323,9 +324,10 @@ public class SupplyChainValidationService { deviceName)); } else { ReferenceManifest manifest = referenceManifestRepository - .findByHexDecHashAndRimType(sRim.getEventLogHash(), ReferenceManifest.MEASUREMENT_RIM); + .findByHexDecHashAndRimType(sRim.getEventLogHash(), + ReferenceManifest.MEASUREMENT_RIM); if (manifest instanceof EventLogMeasurements) { - eventLog = (EventLogMeasurements)manifest; + eventLog = (EventLogMeasurements) manifest; } } if (eventLog == null) { @@ -357,7 +359,8 @@ public class SupplyChainValidationService { BaseReferenceManifest bRim = null; if (sRim != null && sRim.getAssociatedRim() != null) { - Optional oRim = referenceManifestRepository.findById(sRim.getAssociatedRim()); + Optional oRim = + referenceManifestRepository.findById(sRim.getAssociatedRim()); if (oRim.isPresent()) { ReferenceManifest rim = oRim.get(); if (rim instanceof BaseReferenceManifest) { @@ -375,7 +378,8 @@ public class SupplyChainValidationService { Optional previousOpt //= this.supplyChainValidationSummaryRepository.findByDevice(deviceName); //= this.supplyChainValidationSummaryRepository.findByDevice(device); - = this.supplyChainValidationSummaryRepository.findById(UUID.fromString(device.getSummaryId())); + = this.supplyChainValidationSummaryRepository.findById( + UUID.fromString(device.getSummaryId())); if (previousOpt.isPresent()) { SupplyChainValidationSummary previous = previousOpt.get(); for (SupplyChainValidation scv : previous.getValidations()) { @@ -421,6 +425,7 @@ public class SupplyChainValidationService { * If the platform attributes policy is enabled, this method updates the matched * status for the component result. This is done so that the details page for the * platform certificate highlights the title card red. + * * @param componentResults list of associated component results */ private void updateComponentStatus(final List componentResults) { diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/CertificateAttributeScvValidator.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/CertificateAttributeScvValidator.java index a427835c..060855ea 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/CertificateAttributeScvValidator.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/CertificateAttributeScvValidator.java @@ -49,10 +49,11 @@ public class CertificateAttributeScvValidator extends SupplyChainCredentialValid private static final String LC_UNKNOWN = "unknown"; /** + * Validates platform credential attributes v1 p2. * - * @param platformCredential - * @param deviceInfoReport - * @return + * @param platformCredential platform credential + * @param deviceInfoReport device information report + * @return an appraisal status */ public static AppraisalStatus validatePlatformCredentialAttributesV1p2( final PlatformCredential platformCredential, @@ -159,7 +160,7 @@ public class CertificateAttributeScvValidator extends SupplyChainCredentialValid * @param componentAttributeRepository db access to component attribute match status * @param componentInfos list of device components * @param provisionSessionId UUID associated with the SCV Summary - * @param ignoreRevisionAttribute policy flag to ignore the revision attribute + * @param ignoreRevisionAttribute policy flag to ignore the revision attribute * @return either PASS or FAIL */ public static AppraisalStatus validatePlatformCredentialAttributesV2p0( @@ -275,10 +276,10 @@ public class CertificateAttributeScvValidator extends SupplyChainCredentialValid numOfAttributes = attributeResults.size(); boolean saveAttributeResult; for (ComponentAttributeResult componentAttributeResult : attributeResults) { - saveAttributeResult = true; + saveAttributeResult = true; if (ignoreRevisionAttribute) { - saveAttributeResult = !componentAttributeResult.getAttribute() - .equalsIgnoreCase(ComponentResult.ATTRIBUTE_REVISION); + saveAttributeResult = !componentAttributeResult.getAttribute() + .equalsIgnoreCase(ComponentResult.ATTRIBUTE_REVISION); } if (saveAttributeResult) { componentAttributeResult.setProvisionSessionId(provisionSessionId); @@ -318,7 +319,7 @@ public class CertificateAttributeScvValidator extends SupplyChainCredentialValid * base cert for this specific chain * @return Appraisal Status of delta being validated. */ - @SuppressWarnings("methodlength") + static AppraisalStatus validateDeltaAttributesChainV2p0( final DeviceInfoReport deviceInfoReport, final Map deltaMapping, @@ -366,7 +367,7 @@ public class CertificateAttributeScvValidator extends SupplyChainCredentialValid if (!componentAttributeResults.isEmpty()) { resultMessage.append(String.format("There are %d errors with Delta " - + "Components associated with: %s%n", + + "Components associated with: %s%n", componentAttributeResults.size(), deltaCertificates.get(0).getPlatformSerial())); fieldValidation = false; @@ -856,7 +857,8 @@ public class CertificateAttributeScvValidator extends SupplyChainCredentialValid /** * This method uses a specific hash to match device components with certificate components. - * @param componentInfos list of device component infos + * + * @param componentInfos list of device component infos * @param compiledComponentList list of the remaining unmatched component results * @return remaining component results not matched */ @@ -892,7 +894,8 @@ public class CertificateAttributeScvValidator extends SupplyChainCredentialValid /** * This method is used to find matches based on the component class value. - * @param componentInfos list of device component infos + * + * @param componentInfos list of device component infos * @param remainingComponentResults list of the remaining unmatched component results * @return a generated list of component attributes results */ @@ -1019,7 +1022,6 @@ public class CertificateAttributeScvValidator extends SupplyChainCredentialValid } /** - * * @param deltaCertificates * @param componentResultRepository * @param componentAttributeRepository diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/FirmwareScvValidator.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/FirmwareScvValidator.java index eb450250..9d922042 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/FirmwareScvValidator.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/FirmwareScvValidator.java @@ -12,8 +12,8 @@ import hirs.attestationca.persist.entity.userdefined.rim.EventLogMeasurements; import hirs.attestationca.persist.entity.userdefined.rim.ReferenceDigestValue; import hirs.attestationca.persist.enums.AppraisalStatus; import hirs.attestationca.persist.service.ValidationService; -import hirs.utils.rim.ReferenceManifestValidator; import hirs.utils.SwidResource; +import hirs.utils.rim.ReferenceManifestValidator; import hirs.utils.tpm.eventlog.TCGEventLog; import hirs.utils.tpm.eventlog.TpmPcrEvent; import lombok.extern.log4j.Log4j2; @@ -24,7 +24,12 @@ import java.security.KeyStore; import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; import static hirs.attestationca.persist.enums.AppraisalStatus.Status.FAIL; import static hirs.attestationca.persist.enums.AppraisalStatus.Status.PASS; @@ -35,7 +40,6 @@ public class FirmwareScvValidator extends SupplyChainCredentialValidator { private static PcrValidator pcrValidator; /** - * * @param device * @param policySettings * @param referenceManifestRepository @@ -43,7 +47,7 @@ public class FirmwareScvValidator extends SupplyChainCredentialValidator { * @param caCredentialRepository * @return */ - @SuppressWarnings("methodlength") + public static AppraisalStatus validateFirmware( final Device device, final PolicySettings policySettings, final ReferenceManifestRepository referenceManifestRepository, @@ -66,7 +70,8 @@ public class FirmwareScvValidator extends SupplyChainCredentialValidator { // In this case, try to look up the event log associated with the device, then get the base rim associated by event log hash List deviceRims = referenceManifestRepository.findByDeviceName(hostName); for (ReferenceManifest deviceRim : deviceRims) { - if (deviceRim instanceof BaseReferenceManifest && !deviceRim.isSwidSupplemental() && !deviceRim.isSwidPatch()) { + if (deviceRim instanceof BaseReferenceManifest && !deviceRim.isSwidSupplemental() && + !deviceRim.isSwidPatch()) { baseReferenceManifest = (BaseReferenceManifest) deviceRim; } @@ -77,7 +82,9 @@ public class FirmwareScvValidator extends SupplyChainCredentialValidator { // Attempt to get an event log from the database matching the expected hash if (baseReferenceManifest == null && measurement != null) { - baseReferenceManifest = (BaseReferenceManifest)referenceManifestRepository.findByEventLogHashAndRimType(measurement.getHexDecHash(), ReferenceManifest.BASE_RIM); + baseReferenceManifest = + (BaseReferenceManifest) referenceManifestRepository.findByEventLogHashAndRimType( + measurement.getHexDecHash(), ReferenceManifest.BASE_RIM); } String failedString = ""; @@ -101,7 +108,7 @@ public class FirmwareScvValidator extends SupplyChainCredentialValidator { if (passed) { List resources = - ((BaseReferenceManifest) baseReferenceManifest).getFileResources(); + baseReferenceManifest.getFileResources(); fwStatus = new AppraisalStatus(PASS, SupplyChainCredentialValidator.FIRMWARE_VALID); @@ -131,20 +138,22 @@ public class FirmwareScvValidator extends SupplyChainCredentialValidator { try { certs.add(cac.getX509Certificate()); } catch (IOException e) { - log.error("Error building CA chain for " + signingCert.getSubjectKeyIdentifier() + ": " - + e.getMessage()); + log.error( + "Error building CA chain for " + signingCert.getSubjectKeyIdentifier() + ": " + + e.getMessage()); } } referenceManifestValidator.setTrustStore(certs); try { - if (referenceManifestValidator.validateXmlSignature(signingCert.getX509Certificate().getPublicKey(), - signingCert.getSubjectKeyIdString(), signingCert.getEncodedPublicKey())) { + if (referenceManifestValidator.validateXmlSignature( + signingCert.getX509Certificate().getPublicKey(), + signingCert.getSubjectKeyIdString(), signingCert.getEncodedPublicKey())) { try { if (!SupplyChainCredentialValidator.verifyCertificate( - signingCert.getX509Certificate(), keyStore)) { + signingCert.getX509Certificate(), keyStore)) { passed = false; fwStatus = new AppraisalStatus(FAIL, - "Firmware validation failed: invalid certificate path."); + "Firmware validation failed: invalid certificate path."); } } catch (IOException ioEx) { log.error("Error getting X509 cert from manager: " + ioEx.getMessage()); @@ -268,7 +277,7 @@ public class FirmwareScvValidator extends SupplyChainCredentialValidator { } if (fwStatus.getAppStatus().equals(FAIL)) { fwStatus = new AppraisalStatus(FAIL, String.format("%s%n%s", - fwStatus.getMessage(), sb.toString())); + fwStatus.getMessage(), sb)); } else { fwStatus = new AppraisalStatus(FAIL, sb.toString(), ReferenceManifest.MEASUREMENT_RIM); diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml index b6346de4..5d872646 100644 --- a/config/checkstyle/checkstyle.xml +++ b/config/checkstyle/checkstyle.xml @@ -133,7 +133,9 @@ - + + + From 615bbc754732d796c657a4bb6078d6bcec87893d Mon Sep 17 00:00:00 2001 From: TheSilentCoder <184309164+ThatSilentCoder@users.noreply.github.com> Date: Fri, 18 Oct 2024 16:22:38 -0400 Subject: [PATCH 04/22] issue_847: Made more styling fixes to the entity files. 300 more changes left to go. --- .../manager/IDevIDCertificateRepository.java | 99 +++---- .../entity/userdefined/ReferenceManifest.java | 33 ++- .../SupplyChainValidationSummary.java | 1 + .../CertificateAuthorityCredential.java | 50 +--- .../certificate/CertificateVariables.java | 6 +- .../certificate/ComponentResult.java | 58 +++- .../certificate/EndorsementCredential.java | 66 ++--- .../certificate/IDevIDCertificate.java | 98 ++----- .../IssuedAttestationCertificate.java | 21 +- .../certificate/PlatformCredential.java | 266 +++++++++--------- .../attributes/ComponentAddress.java | 23 +- .../attributes/ComponentAttributeResult.java | 24 +- .../attributes/ComponentClass.java | 233 ++++++++------- .../attributes/ComponentIdentifier.java | 44 ++- .../attributes/V2/ComponentIdentifierV2.java | 43 +-- .../CertificateDetailsPageControllerTest.java | 60 ++-- 16 files changed, 567 insertions(+), 558 deletions(-) diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IDevIDCertificateRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IDevIDCertificateRepository.java index 02325ef7..f9c548de 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IDevIDCertificateRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IDevIDCertificateRepository.java @@ -29,54 +29,55 @@ public interface IDevIDCertificateRepository extends JpaRepository findByArchiveFlag(boolean archiveFlag, Pageable pageable); - /** - * Query that retrieves a list of IDevId certificates using the provided subject. - * - * @param subject string representation of the subject - * @return a list of IDevId certificates - */ - List findBySubject(String subject); - /** - * Query that retrieves a sorted list of IDevId certificates using the provided subject. - * - * @param subject string representation of the subject - * @return a sorted list of IDevId certificates - */ - List findBySubjectSorted(String subject); - - /** - * Query that retrieves a list of IDevId certificates using the provided subject and archive flag. - * - * @param subject string representation of the subject - * @param archiveFlag archive flag - * @return a list of IDevId certificates - */ - List findBySubjectAndArchiveFlag(String subject, boolean archiveFlag); - - /** - * Query that retrieves a sorted list of IDevId certificates using the provided subject and archive flag. - * - * @param subject string representation of the subject - * @param archiveFlag archive flag - * @return a sorted list of IDevId certificates - */ - List findBySubjectSortedAndArchiveFlag(String subject, boolean archiveFlag); - - /** - * Query that retrieves an IDevId certificate using the provided subject key identifier. - * - * @param subjectKeyIdentifier byte representation of the subject key identifier - * @return an IDevId certificate - */ - IDevIDCertificate findBySubjectKeyIdentifier(byte[] subjectKeyIdentifier); - - /** - * Query that retrieves an IDevId certificate using the provided subject key and archive flag. - * - * @param subjectKeyIdString string representation of the subject key id - * @param archiveFlag archive flag - * @return an IDevId certificate - */ - IDevIDCertificate findBySubjectKeyIdStringAndArchiveFlag(String subjectKeyIdString, boolean archiveFlag); +// /** +// * Query that retrieves a list of IDevId certificates using the provided subject. +// * +// * @param subject string representation of the subject +// * @return a list of IDevId certificates +// */ +// List findBySubject(String subject); +// +// /** +// * Query that retrieves a sorted list of IDevId certificates using the provided subject. +// * +// * @param subject string representation of the subject +// * @return a sorted list of IDevId certificates +// */ +// List findBySubjectSorted(String subject); +// +// /** +// * Query that retrieves a list of IDevId certificates using the provided subject and archive flag. +// * +// * @param subject string representation of the subject +// * @param archiveFlag archive flag +// * @return a list of IDevId certificates +// */ +// List findBySubjectAndArchiveFlag(String subject, boolean archiveFlag); +// +// /** +// * Query that retrieves a sorted list of IDevId certificates using the provided subject and archive flag. +// * +// * @param subject string representation of the subject +// * @param archiveFlag archive flag +// * @return a sorted list of IDevId certificates +// */ +// List findBySubjectSortedAndArchiveFlag(String subject, boolean archiveFlag); +// +// /** +// * Query that retrieves an IDevId certificate using the provided subject key identifier. +// * +// * @param subjectKeyIdentifier byte representation of the subject key identifier +// * @return an IDevId certificate +// */ +// IDevIDCertificate findBySubjectKeyIdentifier(byte[] subjectKeyIdentifier); +// +// /** +// * Query that retrieves an IDevId certificate using the provided subject key and archive flag. +// * +// * @param subjectKeyIdString string representation of the subject key id +// * @param archiveFlag archive flag +// * @return an IDevId certificate +// */ +// IDevIDCertificate findBySubjectKeyIdStringAndArchiveFlag(String subjectKeyIdString, boolean archiveFlag); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/ReferenceManifest.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/ReferenceManifest.java index db2d950f..4388451a 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/ReferenceManifest.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/ReferenceManifest.java @@ -28,14 +28,15 @@ import java.util.UUID; * This class represents the Reference Integrity Manifest object that will be * loaded into the DB and displayed in the ACA. */ -@Getter @ToString +@Getter +@ToString @EqualsAndHashCode(onlyExplicitlyIncluded = true, callSuper = false) @Log4j2 @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @Table(name = "ReferenceManifest") @Access(AccessType.FIELD) -public class ReferenceManifest extends ArchivableEntity { +public class ReferenceManifest extends ArchivableEntity { /** * Holds the name of the 'hexDecHash' field. @@ -74,56 +75,71 @@ public class ReferenceManifest extends ArchivableEntity { @EqualsAndHashCode.Include @Column(columnDefinition = "mediumblob", nullable = false) - private byte[] rimBytes; + private final byte[] rimBytes; @Setter @EqualsAndHashCode.Include @Column(nullable = false) private String rimType = "Base"; + @Setter @Column private String tagId = null; + @Setter @Column private boolean swidPatch = false; + @Setter @Column private boolean swidSupplemental = false; + @Setter @Column private String platformManufacturer = null; + @Setter @Column private String platformManufacturerId = null; + @Setter @Column private String swidTagVersion = null; + @Setter @Column private String swidVersion = null; + @Setter @Column private String platformModel = null; + @Setter @Column(nullable = false) private String fileName = null; + @Setter @JdbcTypeCode(java.sql.Types.VARCHAR) @Column private UUID associatedRim; + @Setter @Column private String deviceName; + @Setter @Column private String hexDecHash = ""; + @Setter @Column private String eventLogHash = ""; + @Setter @Column @JsonIgnore private String base64Hash = ""; + /** * Default constructor necessary for Hibernate. */ @@ -141,6 +157,7 @@ public class ReferenceManifest extends ArchivableEntity { /** * Default constructor for ingesting the bytes of the file content. + * * @param rimBytes - file contents. */ public ReferenceManifest(final byte[] rimBytes) { @@ -183,10 +200,20 @@ public class ReferenceManifest extends ArchivableEntity { return null; } + /** + * Determines if this reference manifest's rim type is a base rim. + * + * @return true if the rim type is a base rim, false otherwise + */ public boolean isBase() { return rimType.equals(BASE_RIM); } + /** + * Determines if this reference manifest's rim type is a support rim. + * + * @return true if the rim type is a support rim, false otherwise + */ public boolean isSupport() { return rimType.equals(SUPPORT_RIM); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidationSummary.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidationSummary.java index b0f5a43c..a56503c4 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidationSummary.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidationSummary.java @@ -203,6 +203,7 @@ public class SupplyChainValidationSummary extends ArchivableEntity { * Construct the criterion that can be used to query for supply chain validation summaries * matching the configuration of this Selector. * + * @param criteriaBuilder criteria builder * @return a Criterion that can be used to query for supply chain validation summaries * matching the configuration of this instance */ diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateAuthorityCredential.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateAuthorityCredential.java index 72047d42..f5356160 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateAuthorityCredential.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateAuthorityCredential.java @@ -3,39 +3,36 @@ package hirs.attestationca.persist.entity.userdefined.certificate; import hirs.attestationca.persist.entity.userdefined.Certificate; import jakarta.persistence.Column; import jakarta.persistence.Entity; +import lombok.EqualsAndHashCode; import lombok.Getter; import org.apache.commons.codec.binary.Hex; import java.io.IOException; import java.nio.file.Path; -import java.util.Arrays; /** * This class persists Certificate Authority credentials by extending the base Certificate * class with fields unique to CA credentials. */ @Entity +@EqualsAndHashCode public class CertificateAuthorityCredential extends Certificate { - - @SuppressWarnings("PMD.AvoidUsingHardCodedIP") - private static final String SUBJECT_KEY_IDENTIFIER_EXTENSION = "2.5.29.14"; - /** * Holds the name of the 'subjectKeyIdentifier' field. */ public static final String SUBJECT_KEY_IDENTIFIER_FIELD = "subjectKeyIdentifier"; + @SuppressWarnings("PMD.AvoidUsingHardCodedIP") + private static final String SUBJECT_KEY_IDENTIFIER_EXTENSION = "2.5.29.14"; + private static final int CA_BYTE_SIZE = 20; + private static final int PREFIX_BYTE_SIZE = 4; @Column private final byte[] subjectKeyIdentifier; - @Getter - @Column - private String subjectKeyIdString; - /** * this field is part of the TCG CA specification, but has not yet been found in * manufacturer-provided CAs, and is therefore not currently parsed. @@ -44,6 +41,10 @@ public class CertificateAuthorityCredential extends Certificate { @Column private final String credentialType = "TCPA Trusted Platform Module Endorsement"; + @Getter + @Column + private String subjectKeyIdString; + /** * Construct a new CertificateAuthorityCredential given its binary contents. The given * certificate should represent either an X509 certificate or X509 attribute certificate. @@ -117,35 +118,4 @@ public class CertificateAuthorityCredential extends Certificate { return temp; } - - @Override - @SuppressWarnings("checkstyle:avoidinlineconditionals") - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - if (!super.equals(o)) { - return false; - } - - CertificateAuthorityCredential that = (CertificateAuthorityCredential) o; - -// if (!Objects.equals(credentialType, that.credentialType)) { -// return false; -// } - - return Arrays.equals(subjectKeyIdentifier, that.subjectKeyIdentifier); - } - - @Override - @SuppressWarnings({"checkstyle:magicnumber", "checkstyle:avoidinlineconditionals"}) - public int hashCode() { - int result = super.hashCode(); - result = 31 * result + (credentialType != null ? credentialType.hashCode() : 0); - result = 31 * result + Arrays.hashCode(subjectKeyIdentifier); - return result; - } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateVariables.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateVariables.java index 9db24544..04aca65a 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateVariables.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateVariables.java @@ -36,8 +36,9 @@ public class CertificateVariables { * */ public static final int MAX_NUMERIC_PRECISION = 49; + /** - * Can store up to 160 bit values + * Can store up to 160 bit values. */ public static final int MAX_PUB_KEY_MODULUS_HEX_LENGTH = 1024; @@ -206,5 +207,8 @@ public class CertificateVariables { */ public static final String ECDSA_STRING = "SHA256WithECDSA"; + /** + * + */ public static final String ECDSA_SHA224_STRING = "SHA224WithECDSA"; } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/ComponentResult.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/ComponentResult.java index 72b09a72..01eef415 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/ComponentResult.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/ComponentResult.java @@ -26,50 +26,80 @@ import java.util.Objects; @NoArgsConstructor(access = AccessLevel.PROTECTED) public class ComponentResult extends ArchivableEntity { - // String value for the Manufacturer title + /** + * String value for the Manufacturer title. + */ public static final String ATTRIBUTE_MANUFACTURER = "Manufacturer"; - // String value for the Model title + + /** + * String value for the Model title. + */ public static final String ATTRIBUTE_MODEL = "Model"; - // String value for the Serial title + + /** + * String value for the Serial title. + */ public static final String ATTRIBUTE_SERIAL = "Serial"; - // String value for the revision title + + /** + * String value for the revision title. + */ public static final String ATTRIBUTE_REVISION = "Revision"; - // embedded component info + + /** + * Embedded component info. + */ @Setter private String manufacturer; + @Setter private String model; + @Setter private String serialNumber; + @Setter private String revisionNumber; + private boolean fieldReplaceable = false; + // this is a string because component class doesn't inherit serializable. @Setter private String componentClassValue; + private String componentClassStr; + private String componentClassType; + private AttributeStatus attributeStatus; + private String componentAddress; + private boolean version2 = false; + @Setter private boolean delta = false; + @Setter private boolean failedValidation; + private String certificateType; private String issuerDN; - private String certificateSerialNumber; - private String boardSerialNumber; - private String uniformResourceIdentifier; + private String certificateSerialNumber; + + private String boardSerialNumber; + + private String uniformResourceIdentifier; /** * Default constructor. - * @param boardSerialNumber associated platform certificate serial number. + * + * @param boardSerialNumber associated platform certificate serial number. * @param certificateSerialNumber unique number associated with header info. - * @param certificateType parameter holds version 1.2 or 2.0. - * @param componentIdentifier object with information from the platform certificate components. + * @param certificateType parameter holds version 1.2 or 2.0. + * @param componentIdentifier object with information from the platform certificate components. */ public ComponentResult(final String boardSerialNumber, final String certificateSerialNumber, final String certificateType, @@ -94,10 +124,9 @@ public class ComponentResult extends ArchivableEntity { // V2 fields if (componentIdentifier.isVersion2() - && componentIdentifier instanceof ComponentIdentifierV2) { + && componentIdentifier instanceof ComponentIdentifierV2 ciV2) { // this is a downside of findbugs, the code is set up to indicate if a CI is V2 or not // but find bugs is throwing a flag because instanceof isn't being used. - ComponentIdentifierV2 ciV2 = (ComponentIdentifierV2) componentIdentifier; this.componentClassValue = ciV2.getComponentClass().getComponentIdentifier(); this.componentClassStr = ciV2.getComponentClass().toString(); this.componentClassType = ciV2.getComponentClass().getRegistryType(); @@ -117,6 +146,7 @@ public class ComponentResult extends ArchivableEntity { * This method is only used by the certificate-details.jsp page. This * method splits the compiled string of addresses into the component address * object for display on the jsp page. + * * @return a collection of component addresses. */ public List getComponentAddresses() { @@ -135,6 +165,7 @@ public class ComponentResult extends ArchivableEntity { /** * Returns a hash code that is associated with common fields for components. + * * @return int value of the elements */ public int hashCommonElements() { @@ -144,6 +175,7 @@ public class ComponentResult extends ArchivableEntity { /** * The string method for log entries. + * * @return a string for the component result */ public String toString() { diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/EndorsementCredential.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/EndorsementCredential.java index 8c12e05b..f8a8bf70 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/EndorsementCredential.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/EndorsementCredential.java @@ -53,16 +53,15 @@ import java.util.Map; import java.util.Set; /** - * * This class persists an Endorsement Credential by extending the base Certificate * class with fields unique to Endorsement credentials, as defined in the Trusted * Computing Group Credential Profiles, specification v.1.2. - * + *

* trustedcomputinggroup.org/wp-content/uploads/Credential_Profiles_V1.2_Level2_Revision8.pdf */ @Log4j2 @EqualsAndHashCode(callSuper = false) -@NoArgsConstructor(access= AccessLevel.PROTECTED) +@NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity public class EndorsementCredential extends DeviceAssociatedCertificate { @@ -105,11 +104,27 @@ public class EndorsementCredential extends DeviceAssociatedCertificate { /** * this field is part of the TCG EC specification, but has not yet been found in - * manufacturer-provided ECs, and is therefore not currently parsed + * manufacturer-provided ECs, and is therefore not currently parsed. */ @Getter @Column - private String credentialType = "TCPA Trusted Platform Module Endorsement"; + private final String credentialType = "TCPA Trusted Platform Module Endorsement"; + + /** + * this field is part of the TCG EC specification, but has not yet been found in + * manufacturer-provided ECs, and is therefore not currently parsed. + */ + @Getter + @Column(nullable = true) + private final String policyReference = null; // optional + + /** + * this field is part of the TCG EC specification, but has not yet been found in + * manufacturer-provided ECs, and is therefore not currently parsed. + */ + @Getter + @Column(nullable = true) + private final String revocationLocator = null; // optional @Getter @Column @@ -131,22 +146,6 @@ public class EndorsementCredential extends DeviceAssociatedCertificate { @Embedded private TPMSecurityAssertions tpmSecurityAssertions = null; //optional - /* - * this field is part of the TCG EC specification, but has not yet been found in - * manufacturer-provided ECs, and is therefore not currently parsed - */ - @Getter - @Column(nullable = true) - private String policyReference = null; // optional - - /* - * this field is part of the TCG EC specification, but has not yet been found in - * manufacturer-provided ECs, and is therefore not currently parsed - */ - @Getter - @Column(nullable = true) - private String revocationLocator = null; // optional - @Transient private Set expectedOids; @@ -180,6 +179,7 @@ public class EndorsementCredential extends DeviceAssociatedCertificate { * Parses the bytes as an EK. If parsing fails initially, the optionally present header * is removed and tried again. The cert header, if present, contains some certificate length * information which isn't needed for parsing. + * * @param certificateBytes the bytes of the EC * @return the EC if a valid credential, null otherwise */ @@ -228,6 +228,7 @@ public class EndorsementCredential extends DeviceAssociatedCertificate { * ASN1Primitives in the certificate and searches for matching OID keys of specific values. If * matching OID keys are found, their values are encoded in the fields of the current * EndorsementCredential object. + * * @throws IOException the input certificate bytes were not readable into an X509 * certificate format */ @@ -280,9 +281,10 @@ public class EndorsementCredential extends DeviceAssociatedCertificate { * however, the method is set to add the sequence to the OID mapping, it may search for * patterns that correspond to the TPM Security Assertions and TPM Specification and set * those fields appropriately. - * @param seq the sequence to parse + * + * @param seq the sequence to parse * @param addToMapping whether or not to store the sequence value as an OID key/value value - * @param key the associated OID key with this value necessary if addToMapping is true + * @param key the associated OID key with this value necessary if addToMapping is true * @throws IOException parsing individual subcomponents failed */ private void parseSequence(final ASN1Sequence seq, final boolean addToMapping, @@ -315,7 +317,7 @@ public class EndorsementCredential extends DeviceAssociatedCertificate { ASN1Integer revision = (ASN1Integer) seq.getObjectAt(ASN1_REV_INDEX); tpmSpecification = new TPMSpecification(family.getString(), level.getValue(), revision.getValue()); - log.debug("Found TPM Spec:" + tpmSpecification.toString()); + log.debug("Found TPM Spec:" + tpmSpecification); } else if (addToMapping && key.equals(TPM_SECURITY_ASSERTIONS)) { // Parse TPM Security Assertions int seqPosition = 0; @@ -341,7 +343,7 @@ public class EndorsementCredential extends DeviceAssociatedCertificate { tpmSecurityAssertions = new TPMSecurityAssertions(ver.getValue(), fieldUpgradeable.isTrue()); - log.debug("Found TPM Assertions: " + tpmSecurityAssertions.toString()); + log.debug("Found TPM Assertions: " + tpmSecurityAssertions); // Iterate through remaining fields to set optional attributes int tag; ASN1TaggedObject obj; @@ -392,10 +394,11 @@ public class EndorsementCredential extends DeviceAssociatedCertificate { * Parses the many different types of ASN1Primitives and searches for specific OID * key/value pairs. Works by traversing the entire ASN1Primitive tree with a single * pass and populates relevant fields in the EndorsementCredential object. - * @param component the ASN1Primitive to parse + * + * @param component the ASN1Primitive to parse * @param addToMapping whether or not the current component has been matched as the * value in an expected TPM OID key/value pair - * @param key if addToMapping is true, the key in the OID key/value pair + * @param key if addToMapping is true, the key in the OID key/value pair * @throws IOException parsing of subcomponents in the tree failed. */ @SuppressWarnings("checkstyle:methodlength") @@ -421,13 +424,11 @@ public class EndorsementCredential extends DeviceAssociatedCertificate { parsedFields.put(key, ((ASN1ObjectIdentifier) component).getId()); } - } else if (component instanceof ASN1TaggedObject) { - ASN1TaggedObject taggedObj = (ASN1TaggedObject) component; + } else if (component instanceof ASN1TaggedObject taggedObj) { parseSingle(taggedObj.getBaseObject().toASN1Primitive(), addToMapping, key); - } else if (component instanceof ASN1OctetString) { + } else if (component instanceof ASN1OctetString octStr) { // this may contain parseable data or may just be a OID key-pair value - ASN1OctetString octStr = (ASN1OctetString) component; byte[] bytes = octStr.getOctets(); ByteArrayInputStream inStream = new ByteArrayInputStream(bytes); ASN1InputStream octIn = new ASN1InputStream(inStream); @@ -446,12 +447,11 @@ public class EndorsementCredential extends DeviceAssociatedCertificate { } } - } else if (component instanceof ASN1Set) { + } else if (component instanceof ASN1Set set) { // all ECs seen to this point use sets differently than sequences and their sets // don't contain top level OIDs, so we can parse everything term by term, if that // ceases to be the case, we need to switch to this parsing to be more like // parseSequences in the future - ASN1Set set = (ASN1Set) component; Enumeration setContents = set.getObjects(); ASN1Encodable subComp; while (setContents.hasMoreElements()) { diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/IDevIDCertificate.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/IDevIDCertificate.java index 43c77842..355898e8 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/IDevIDCertificate.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/IDevIDCertificate.java @@ -4,6 +4,7 @@ import hirs.attestationca.persist.entity.userdefined.Certificate; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.Transient; +import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.extern.log4j.Log4j2; import org.bouncycastle.asn1.ASN1Encodable; @@ -21,13 +22,13 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.nio.file.Path; import java.time.Instant; -import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.Map; -import java.util.Objects; @Entity +@Getter +@EqualsAndHashCode @Log4j2 public class IDevIDCertificate extends Certificate { @@ -45,28 +46,24 @@ public class IDevIDCertificate extends Certificate { private static final String POLICY_QUALIFIER_VERIFIED_TPM_FIXED = "2.23.133.11.1.2"; private static final String POLICY_QUALIFIER_VERIFIED_TPM_RESTRICTED = "2.23.133.11.1.3"; - @Getter @Transient private byte[] subjectAltName; /** * Corresponds to the hwType field found in a Hardware Module Name (if present). */ - @Getter @Column private String hwType; /** * Corresponds to the serial number found in a Hardware Module Name (if present). */ - @Getter @Column private byte[] hwSerialNum; /** * TPM policy qualifiers (TCG only). */ - @Getter @Column private String tpmPolicies; @@ -106,13 +103,14 @@ public class IDevIDCertificate extends Certificate { } /** - * Obtains TPM policy qualifiers from the Certificate Policies extension, if present. These policy qualifiers are - * specified in the TCG document "TPM 2.0 Keys for Device Identity and Attestation". + * Obtains TPM policy qualifiers from the Certificate Policies extension, if present. These policy + * qualifiers are specified in the TCG document "TPM 2.0 Keys for Device Identity and Attestation". * + * @param policyBytes byte array representation of the policy * @return A {@link java.util.Map} containing the policy qualifiers obtained. * @throws IOException if policy qualifiers cannot be parsed from extension value */ - public Map getTPMPolicyQualifiers(byte[] policyBytes) throws IOException { + public Map getTPMPolicyQualifiers(final byte[] policyBytes) throws IOException { CertificatePolicies certPolicies = CertificatePolicies.getInstance(JcaX509ExtensionUtils.parseExtensionValue(policyBytes)); Map policyQualifiers = new HashMap<>(); @@ -167,13 +165,13 @@ public class IDevIDCertificate extends Certificate { ASN1OctetString obj = (ASN1OctetString) input.readObject(); boolean tcgOid = false; - // Parse the otherName structure. According to the specification "TPM 2.0 Keys for Device Identity and - // Attestation", otherName can contain up to two structures: HardwareModuleName and PermanentIdentifier. - // Currently, this parser only supports HardwareModuleName (if present). + // Parse the otherName structure. According to the specification "TPM 2.0 Keys for Device Identity + // and Attestation", otherName can contain up to two structures: HardwareModuleName and + // PermanentIdentifier. Currently, this parser only supports HardwareModuleName (if present). if (obj != null) { - // Parse Hardware Module Name structure, comprised of a hwType and hwSerialNum, and associated OID - // See also RFC 4108 + // Parse Hardware Module Name structure, comprised of a hwType and hwSerialNum, + // and associated OID. See also RFC 4108 ASN1Sequence seq1 = ASN1Sequence.getInstance(obj.getOctets()); // Iterate over GeneralNames sequence until HardwareModuleName is found @@ -205,7 +203,8 @@ public class IDevIDCertificate extends Certificate { // Some certs have been found to contain tagged objects for hwSerialNum. // Handle this as a special case. log.warn( - "Could not parse octet string for hwSerialNum. Attempting to parse tag."); + "Could not parse octet string for hwSerialNum. " + + "Attempting to parse tag."); try { tagObj1 = ASN1TaggedObject.getInstance(seq1.getObjectAt(1)); obj2 = ASN1OctetString.getInstance(tagObj1, false); @@ -215,9 +214,9 @@ public class IDevIDCertificate extends Certificate { } } - // If an OID corresponding to TPM 2.0 for hwType is supported, according to the - // specification "TPM 2.0 Keys for Device Identity and Attestation", the contents of - // the hwSerialNum field will be parsed accordingly. + // If an OID corresponding to TPM 2.0 for hwType is supported, according + // to the specification "TPM 2.0 Keys for Device Identity and Attestation", + // the contents of the hwSerialNum field will be parsed accordingly. hwType = obj1.toString(); if (hasTCGOIDs()) { tcgOid = true; @@ -231,9 +230,9 @@ public class IDevIDCertificate extends Certificate { } } - // Check for certificate policy qualifiers, which should be present for IDevIDs if in compliance with the - // TCG specification. - // For interoperability reasons, this will only log a warning if a TCG OID is specified above. + // Check for certificate policy qualifiers, which should be present for IDevIDs if in compliance + // with the TCG specification. For interoperability reasons, this will only log a warning + // if a TCG OID is specified above. byte[] policyBytes = getX509Certificate().getExtensionValue(Extension.certificatePolicies.getId()); Map policyQualifiers = null; @@ -255,23 +254,23 @@ public class IDevIDCertificate extends Certificate { }); tpmPolicies = qualifierSB.toString(); - failCondition = !(policyQualifiers.get("verifiedTPMResidency") && - (policyQualifiers.get("verifiedTPMFixed") || - policyQualifiers.get("verifiedTPMRestricted"))); + failCondition = !(policyQualifiers.get("verifiedTPMResidency") + && (policyQualifiers.get("verifiedTPMFixed") + || policyQualifiers.get("verifiedTPMRestricted"))); } else { failCondition = true; } if (failCondition) { log.warn( - "TPM policy qualifiers not found, or do not meet logical criteria. Certificate may not " + - "be in compliance with TCG specification."); + "TPM policy qualifiers not found, or do not meet logical criteria. " + + "Certificate may not be in compliance with TCG specification."); } } // Log a warning if notAfter field has an expiry date that is not indefinite if (!this.getEndValidity().toInstant().equals(Instant.ofEpochSecond(UNDEFINED_EXPIRY_DATE))) { - log.warn("IDevID does not contain an indefinite expiry date. This may indicate an invalid " + - "certificate."); + log.warn("IDevID does not contain an indefinite expiry date. This may indicate an invalid " + + "certificate."); } input.close(); @@ -279,8 +278,8 @@ public class IDevIDCertificate extends Certificate { } /** - * Function to check whether a given IDevID certificate has TCG OIDs, in order to check compliance with various - * fields. + * Function to check whether a given IDevID certificate has TCG OIDs, in order to check compliance with + * various fields. * * @return a boolean value */ @@ -291,41 +290,4 @@ public class IDevIDCertificate extends Certificate { return false; } } - - @Override - @SuppressWarnings("checkstyle:avoidinlineconditionals") - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - if (!super.equals(o)) { - return false; - } - - IDevIDCertificate that = (IDevIDCertificate) o; - - if (!Objects.equals(getTpmPolicies(), that.getTpmPolicies())) { - return false; - } - - if (!Objects.equals(getHwType(), that.getHwType())) { - return false; - } - - return Arrays.equals(getHwSerialNum(), that.getHwSerialNum()); - } - - @Override - @SuppressWarnings({"checkstyle:magicnumber", "checkstyle:avoidinlineconditionals"}) - public int hashCode() { - int result = super.hashCode(); - result = 31 * result + (getTpmPolicies() != null ? getTpmPolicies().hashCode() : 0); - result = 31 * result + (getHwType() != null ? getHwType().hashCode() : 0); - result = 31 * result + (getHwSerialNum() != null ? Arrays.hashCode(getHwSerialNum()) : 0); - - return result; - } -} \ No newline at end of file +} diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/IssuedAttestationCertificate.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/IssuedAttestationCertificate.java index 8c4c0e41..dd219ff0 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/IssuedAttestationCertificate.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/IssuedAttestationCertificate.java @@ -28,6 +28,9 @@ public class IssuedAttestationCertificate extends DeviceAssociatedCertificate { */ public static final String AIC_TYPE_LABEL = "TCPA Trusted Platform Identity"; + @Column + public boolean isLDevID; + @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "ek_id") private EndorsementCredential endorsementCredential; @@ -36,14 +39,12 @@ public class IssuedAttestationCertificate extends DeviceAssociatedCertificate { @JoinColumn(name = "pc_id") private List platformCredentials; - @Column - public boolean isLDevID; - /** * Constructor. - * @param certificateBytes the issued certificate bytes + * + * @param certificateBytes the issued certificate bytes * @param endorsementCredential the endorsement credential - * @param platformCredentials the platform credentials + * @param platformCredentials the platform credentials * @throws IOException if there is a problem extracting information from the certificate */ public IssuedAttestationCertificate(final byte[] certificateBytes, @@ -58,9 +59,11 @@ public class IssuedAttestationCertificate extends DeviceAssociatedCertificate { /** * Constructor. - * @param certificatePath path to certificate + * + * @param certificatePath path to certificate * @param endorsementCredential the endorsement credential - * @param platformCredentials the platform credentials + * @param platformCredentials the platform credentials + * @param isLDevID is it an LDev ID * @throws IOException if there is a problem extracting information from the certificate */ public IssuedAttestationCertificate(final Path certificatePath, @@ -70,8 +73,4 @@ public class IssuedAttestationCertificate extends DeviceAssociatedCertificate { throws IOException { this(readBytes(certificatePath), endorsementCredential, platformCredentials, isLDevID); } - - public List getPlatformCredentials() { - return new ArrayList<>(platformCredentials); - } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/PlatformCredential.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/PlatformCredential.java index fb31822a..0f420e02 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/PlatformCredential.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/PlatformCredential.java @@ -46,7 +46,6 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.UUID; /** * This class persists Platform credentials by extending the base Certificate @@ -61,24 +60,29 @@ import java.util.UUID; @Entity public class PlatformCredential extends DeviceAssociatedCertificate { + /** + * TCPA Trusted Platform Endorsement. + */ + public static final String CERTIFICATE_TYPE_1_2 = "TCPA Trusted Platform Endorsement"; + /** + * TCG Trusted Platform Endorsement. + */ + public static final String CERTIFICATE_TYPE_2_0 = "TCG Trusted Platform Endorsement"; private static final int TCG_SPECIFICATION_LENGTH = 3; // These are Object Identifiers (OIDs) for sections in the credentials private static final String POLICY_QUALIFIER_CPSURI = "1.3.6.1.5.5.7.2.1"; private static final String POLICY_QUALIFIER_USER_NOTICE = "1.3.6.1.5.5.7.2.2"; - // OID for TCG Attributes private static final String PLATFORM_MANUFACTURER = "2.23.133.2.4"; private static final String PLATFORM_MODEL = "2.23.133.2.5"; private static final String PLATFORM_VERSION = "2.23.133.2.6"; private static final String PLATFORM_SERIAL = "2.23.133.2.23"; private static final String PLATFORM_BASEBOARD_CHASSIS_COMBINED = "2.23.133.5.1.6"; - // OID for TCG Platform Class Common Attributes private static final String PLATFORM_MANUFACTURER_2_0 = "2.23.133.5.1.1"; private static final String PLATFORM_MODEL_2_0 = "2.23.133.5.1.4"; private static final String PLATFORM_VERSION_2_0 = "2.23.133.5.1.5"; private static final String PLATFORM_SERIAL_2_0 = "2.23.133.5.1.6"; - // OID for Certificate Attributes private static final String TCG_PLATFORM_SPECIFICATION = "2.23.133.2.17"; private static final String TPM_SECURITY_ASSERTION = "2.23.133.2.18"; @@ -115,16 +119,11 @@ public class PlatformCredential extends DeviceAssociatedCertificate { // number of extra bytes potentially present in a cert header. private static final int PC_CERT_HEADER_BYTE_COUNT = 8; - - /** - * TCPA Trusted Platform Endorsement. - */ - public static final String CERTIFICATE_TYPE_1_2 = "TCPA Trusted Platform Endorsement"; - - /** - * TCG Trusted Platform Endorsement. - */ - public static final String CERTIFICATE_TYPE_2_0 = "TCG Trusted Platform Endorsement"; + private static final String MANUFACTURER_FIELD = "manufacturer"; + private static final String MODEL_FIELD = "model"; + private static final String VERSION_FIELD = "version"; + private static final String PLATFORM_SERIAL_FIELD = "platformSerial"; + private static final String CHASSIS_SERIAL_NUMBER_FIELD = "chassisSerialNumber"; @Column private String credentialType = null; @@ -132,23 +131,18 @@ public class PlatformCredential extends DeviceAssociatedCertificate { @Column private boolean platformBase = false; - private static final String MANUFACTURER_FIELD = "manufacturer"; @Column private String manufacturer = null; - private static final String MODEL_FIELD = "model"; @Column private String model = null; - private static final String VERSION_FIELD = "version"; @Column private String version = null; - private static final String PLATFORM_SERIAL_FIELD = "platformSerial"; @Column private String platformSerial = null; - private static final String CHASSIS_SERIAL_NUMBER_FIELD = "chassisSerialNumber"; @Column private String chassisSerialNumber; @@ -175,6 +169,7 @@ public class PlatformCredential extends DeviceAssociatedCertificate { @Column(length = MAX_MESSAGE_LENGTH) private String componentFailures = Strings.EMPTY; + @Column(length = MAX_MESSAGE_LENGTH) private String componentFailureMessage = Strings.EMPTY; @@ -182,6 +177,7 @@ public class PlatformCredential extends DeviceAssociatedCertificate { private EndorsementCredential endorsementCredential = null; private String platformChainType = Strings.EMPTY; + private boolean isDeltaChain = false; /** @@ -190,7 +186,7 @@ public class PlatformCredential extends DeviceAssociatedCertificate { * or X509 attribute certificate. * * @param certificateBytes the contents of a certificate file - * @param parseFields boolean True to parse fields + * @param parseFields boolean True to parse fields * @throws IOException if there is a problem extracting information from the certificate\ */ public PlatformCredential(final byte[] certificateBytes, @@ -223,40 +219,11 @@ public class PlatformCredential extends DeviceAssociatedCertificate { this(readBytes(certificatePath), true); } - /** - * Validate the signature on the attribute certificate in this holder. - * - * @param verifierProvider a ContentVerifierProvider that can generate a - * verifier for the signature. - * @return true if the signature is valid, false otherwise. - * @throws IOException if the signature cannot be processed or is inappropriate. - */ - public boolean isSignatureValid(final ContentVerifierProvider verifierProvider) - throws IOException { - AttributeCertificate attCert = getAttributeCertificate(); - AttributeCertificateInfo acinfo = getAttributeCertificate().getAcinfo(); - - // Check if the algorithm identifier is the same - if (!isAlgIdEqual(acinfo.getSignature(), attCert.getSignatureAlgorithm())) { - throw new IOException("signature invalid - algorithm identifier mismatch"); - } - - ContentVerifier verifier; - - try { - // Set ContentVerifier with the signature that will verify - verifier = verifierProvider.get((acinfo.getSignature())); - - } catch (Exception e) { - throw new IOException("unable to process signature: " + e.getMessage(), e); - } - - return verifier.verify(attCert.getSignatureValue().getOctets()); - } /** * Parses the bytes as an PC. If parsing fails initially, the optionally present header * is removed and tried again. The cert header, if present, contains some certificate length * information which isn't needed for parsing. + * * @param certificateBytes the bytes of the PC * @return the PC if a valid credential, null otherwise */ @@ -285,6 +252,103 @@ public class PlatformCredential extends DeviceAssociatedCertificate { return credential; } + /** + * Verify if the AlgorithmIdentifiers are equal. + * + * @param id1 AlgorithIdentifier one + * @param id2 AlgorithIdentifier two + * @return True if are the same, False if not + */ + public static boolean isAlgIdEqual(final AlgorithmIdentifier id1, + final AlgorithmIdentifier id2) { + if (!id1.getAlgorithm().equals(id2.getAlgorithm())) { + return false; + } + if (id1.getParameters() == null) { + return id2.getParameters() == null || id2.getParameters().equals(DERNull.INSTANCE); + } + if (id2.getParameters() == null) { + return id1.getParameters() == null || id1.getParameters().equals(DERNull.INSTANCE); + } + return id1.getParameters().equals(id2.getParameters()); + } + + /** + * Get the PolicyQualifier from the Certificate Policies Extension. + * + * @param certificate Attribute Certificate information + * @return Policy Qualifier from the Certificate Policies Extension + */ + public static Map getPolicyQualifier( + final AttributeCertificateInfo certificate) { + Preconditions.checkArgument(certificate.getExtensions() != null, + "Platform certificate should have extensions."); + + CertificatePolicies certPolicies + = CertificatePolicies.fromExtensions(certificate.getExtensions()); + Map policyQualifiers = new HashMap<>(); + String userNoticeQualifier = ""; + String cpsURI = ""; + + if (certPolicies != null) { + // Must contain at least one Policy + for (PolicyInformation policy : certPolicies.getPolicyInformation()) { + for (ASN1Encodable pQualifierInfo : policy.getPolicyQualifiers().toArray()) { + PolicyQualifierInfo info = PolicyQualifierInfo.getInstance(pQualifierInfo); + // Subtract the data based on the OID + switch (info.getPolicyQualifierId().getId()) { + case POLICY_QUALIFIER_CPSURI: + cpsURI = DERIA5String.getInstance(info.getQualifier()).getString(); + break; + case POLICY_QUALIFIER_USER_NOTICE: + UserNotice userNotice = UserNotice.getInstance(info.getQualifier()); + userNoticeQualifier = userNotice.getExplicitText().getString(); + break; + default: + break; + } + } + } + } + + // Add to map + policyQualifiers.put("userNotice", userNoticeQualifier); + policyQualifiers.put("cpsURI", cpsURI); + + return policyQualifiers; + } + + /** + * Validate the signature on the attribute certificate in this holder. + * + * @param verifierProvider a ContentVerifierProvider that can generate a + * verifier for the signature. + * @return true if the signature is valid, false otherwise. + * @throws IOException if the signature cannot be processed or is inappropriate. + */ + public boolean isSignatureValid(final ContentVerifierProvider verifierProvider) + throws IOException { + AttributeCertificate attCert = getAttributeCertificate(); + AttributeCertificateInfo acinfo = getAttributeCertificate().getAcinfo(); + + // Check if the algorithm identifier is the same + if (!isAlgIdEqual(acinfo.getSignature(), attCert.getSignatureAlgorithm())) { + throw new IOException("signature invalid - algorithm identifier mismatch"); + } + + ContentVerifier verifier; + + try { + // Set ContentVerifier with the signature that will verify + verifier = verifierProvider.get((acinfo.getSignature())); + + } catch (Exception e) { + throw new IOException("unable to process signature: " + e.getMessage(), e); + } + + return verifier.verify(attCert.getSignatureValue().getOctets()); + } + private void parseFields() throws IOException { AttributeCertificateInfo certificate = getAttributeCertificate().getAcinfo(); Map policyQualifier = getPolicyQualifier(certificate); @@ -340,6 +404,7 @@ public class PlatformCredential extends DeviceAssociatedCertificate { /** * Parse a 1.2 Platform Certificate (Attribute Certificate). + * * @param certificate Attribute Certificate */ private void parseAttributeCert(final AttributeCertificateInfo certificate) { @@ -347,14 +412,14 @@ public class PlatformCredential extends DeviceAssociatedCertificate { = certificate.getExtensions().getExtension(Extension.subjectAlternativeName); // It contains a Subject Alternative Name Extension if (subjectAlternativeNameExtension != null) { - GeneralNames gnames = GeneralNames.getInstance( + GeneralNames gnames = GeneralNames.getInstance( subjectAlternativeNameExtension.getParsedValue()); for (GeneralName gname : gnames.getNames()) { // Check if it's a directoryName [4] Name type if (gname.getTagNo() == GeneralName.directoryName) { X500Name name = X500Name.getInstance(gname.getName()); - for (RDN rdn: name.getRDNs()) { - for (AttributeTypeAndValue attTV: rdn.getTypesAndValues()) { + for (RDN rdn : name.getRDNs()) { + for (AttributeTypeAndValue attTV : rdn.getTypesAndValues()) { switch (attTV.getType().toString()) { case PLATFORM_MANUFACTURER: this.manufacturer = attTV.getValue().toString(); @@ -392,6 +457,7 @@ public class PlatformCredential extends DeviceAssociatedCertificate { /** * Parse a 2.0 Platform Certificate (Attribute Certificate). + * * @param certificate Attribute Certificate */ private void parseAttributeCert2(final AttributeCertificateInfo certificate) @@ -407,8 +473,8 @@ public class PlatformCredential extends DeviceAssociatedCertificate { // Check if it's a directoryName [4] Name type if (gname.getTagNo() == GeneralName.directoryName) { X500Name name = X500Name.getInstance(gname.getName()); - for (RDN rdn: name.getRDNs()) { - for (AttributeTypeAndValue attTV: rdn.getTypesAndValues()) { + for (RDN rdn : name.getRDNs()) { + for (AttributeTypeAndValue attTV : rdn.getTypesAndValues()) { switch (attTV.getType().toString()) { case PLATFORM_MANUFACTURER_2_0: this.manufacturer = attTV.getValue().toString(); @@ -440,6 +506,7 @@ public class PlatformCredential extends DeviceAssociatedCertificate { /** * Get the x509 Platform Certificate version. + * * @return a big integer representing the certificate version. */ @Override @@ -458,6 +525,7 @@ public class PlatformCredential extends DeviceAssociatedCertificate { /** * Get the cPSuri from the Certificate Policies. + * * @return cPSuri from the CertificatePolicies. * @throws IOException when reading the certificate. */ @@ -473,9 +541,10 @@ public class PlatformCredential extends DeviceAssociatedCertificate { /** * Get the Platform Configuration Attribute from the Platform Certificate. + * * @return a map with all the attributes * @throws IllegalArgumentException when there is a parsing error - * @throws IOException when reading the certificate. + * @throws IOException when reading the certificate. */ public Map getAllAttributes() throws IllegalArgumentException, IOException { @@ -523,10 +592,11 @@ public class PlatformCredential extends DeviceAssociatedCertificate { /** * Get the specified attribute from the Platform Certificate. + * * @param attributeName to retrieve from the map. * @return an Object with the attribute. * @throws IllegalArgumentException when there is a parsing error - * @throws IOException when reading the certificate. + * @throws IOException when reading the certificate. */ public Object getAttribute(final String attributeName) throws IllegalArgumentException, IOException { @@ -535,9 +605,10 @@ public class PlatformCredential extends DeviceAssociatedCertificate { /** * Get the Platform Configuration Attribute from the Platform Certificate. + * * @return a map with the Platform Configuration information. * @throws IllegalArgumentException when there is a parsing error - * @throws IOException when reading the certificate. + * @throws IOException when reading the certificate. */ public PlatformConfiguration getPlatformConfiguration() throws IllegalArgumentException, IOException { @@ -552,9 +623,10 @@ public class PlatformCredential extends DeviceAssociatedCertificate { /** * Get the Platform Configuration URI Attribute from the Platform Certificate. + * * @return an URIReference object to the Platform Configuration URI. * @throws IllegalArgumentException when there is a parsing error - * @throws IOException when reading the certificate. + * @throws IOException when reading the certificate. */ public URIReference getPlatformConfigurationURI() throws IllegalArgumentException, IOException { @@ -567,9 +639,10 @@ public class PlatformCredential extends DeviceAssociatedCertificate { /** * Get the TBB Security Assertion from the Platform Certificate. + * * @return a TBBSecurityAssertion object. * @throws IllegalArgumentException when there is a parsing error - * @throws IOException when reading the certificate. + * @throws IOException when reading the certificate. */ public TBBSecurityAssertion getTBBSecurityAssertion() throws IllegalArgumentException, IOException { @@ -612,6 +685,7 @@ public class PlatformCredential extends DeviceAssociatedCertificate { /** * Get the list of component identifiers if there are any. + * * @return the list of component identifiers if there are any */ public List getComponentIdentifiers() { @@ -626,76 +700,4 @@ public class PlatformCredential extends DeviceAssociatedCertificate { } return Collections.emptyList(); } - - /** - * Verify if the AlgorithmIdentifiers are equal. - * - * @param id1 AlgorithIdentifier one - * @param id2 AlgorithIdentifier two - * @return True if are the same, False if not - */ - public static boolean isAlgIdEqual(final AlgorithmIdentifier id1, - final AlgorithmIdentifier id2) { - if (!id1.getAlgorithm().equals(id2.getAlgorithm())) { - return false; - } - if (id1.getParameters() == null) { - if (id2.getParameters() != null && !id2.getParameters().equals(DERNull.INSTANCE)) { - return false; - } - return true; - } - if (id2.getParameters() == null) { - if (id1.getParameters() != null && !id1.getParameters().equals(DERNull.INSTANCE)) { - return false; - } - return true; - } - return id1.getParameters().equals(id2.getParameters()); - } - - /** - * Get the PolicyQualifier from the Certificate Policies Extension. - * - * @param certificate Attribute Certificate information - * @return Policy Qualifier from the Certificate Policies Extension - */ - public static Map getPolicyQualifier( - final AttributeCertificateInfo certificate) { - Preconditions.checkArgument(certificate.getExtensions() != null, - "Platform certificate should have extensions."); - - CertificatePolicies certPolicies - = CertificatePolicies.fromExtensions(certificate.getExtensions()); - Map policyQualifiers = new HashMap<>(); - String userNoticeQualifier = ""; - String cpsURI = ""; - - if (certPolicies != null) { - // Must contain at least one Policy - for (PolicyInformation policy : certPolicies.getPolicyInformation()) { - for (ASN1Encodable pQualifierInfo: policy.getPolicyQualifiers().toArray()) { - PolicyQualifierInfo info = PolicyQualifierInfo.getInstance(pQualifierInfo); - // Subtract the data based on the OID - switch (info.getPolicyQualifierId().getId()) { - case POLICY_QUALIFIER_CPSURI: - cpsURI = DERIA5String.getInstance(info.getQualifier()).getString(); - break; - case POLICY_QUALIFIER_USER_NOTICE: - UserNotice userNotice = UserNotice.getInstance(info.getQualifier()); - userNoticeQualifier = userNotice.getExplicitText().getString(); - break; - default: - break; - } - } - } - } - - // Add to map - policyQualifiers.put("userNotice", userNoticeQualifier); - policyQualifiers.put("cpsURI", cpsURI); - - return policyQualifiers; - } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentAddress.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentAddress.java index e979c4e2..d8eb162c 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentAddress.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentAddress.java @@ -62,25 +62,16 @@ public class ComponentAddress { /** * Get the string value for the address type. + * * @return the string value for the address type */ public String getAddressTypeValue() { - String typeValue; - switch (this.addressType.getId()) { - case ETHERNET_MAC: - typeValue = "ethernet mac"; - break; - case WLAN_MAC: - typeValue = "wlan mac"; - break; - case BLUETOOTH_MAC: - typeValue = "bluetooth mac"; - break; - default: - typeValue = "unknown mac"; - break; - } - return typeValue; + return switch (this.addressType.getId()) { + case ETHERNET_MAC -> "ethernet mac"; + case WLAN_MAC -> "wlan mac"; + case BLUETOOTH_MAC -> "bluetooth mac"; + default -> "unknown mac"; + }; } @Override diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentAttributeResult.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentAttributeResult.java index bf7c832d..476bad44 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentAttributeResult.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentAttributeResult.java @@ -6,7 +6,6 @@ import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import org.apache.commons.lang3.StringUtils; import java.util.UUID; @@ -14,29 +13,34 @@ import java.util.UUID; * This is tied to the ComponentResult class. If a component has a mismatched * value from what the device has listed, this class represents which attribute * of that component mismatched. - * + *

* If this is a delta issue, the component ID would be set to null if the * remove or modified don't exist. */ @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) -public class ComponentAttributeResult extends ArchivableEntity { +public class ComponentAttributeResult extends ArchivableEntity { private UUID componentId; + @Setter private UUID provisionSessionId; + // this is used to identify Revision for the ignore policy @Setter private String attribute; + private String expectedValue; + private String actualValue; /** * Default constructor that populates the expected and actual values. - * @param componentId id associated with component result + * + * @param componentId id associated with component result * @param expectedValue platform certificate value - * @param actualValue paccor value from the device + * @param actualValue paccor value from the device */ public ComponentAttributeResult(final UUID componentId, final String expectedValue, @@ -48,10 +52,11 @@ public class ComponentAttributeResult extends ArchivableEntity { /** * Default constructor that populates the expected and actual values. - * @param componentId id associated with component result + * + * @param componentId id associated with component result * @param provisionSessionId an id for the associated provision - * @param expectedValue platform certificate value - * @param actualValue paccor value from the device + * @param expectedValue platform certificate value + * @param actualValue paccor value from the device */ public ComponentAttributeResult(final UUID componentId, final UUID provisionSessionId, @@ -65,6 +70,8 @@ public class ComponentAttributeResult extends ArchivableEntity { /** * This method is used to check the mismatched status flag for * displaying red if there is a failure. + * + * @return true if there is status match, false otherwise */ public boolean checkMatchedStatus() { return this.actualValue.equals(this.expectedValue); @@ -72,6 +79,7 @@ public class ComponentAttributeResult extends ArchivableEntity { /** * For the state of the object, this shouldn't be negative. + * * @return the string value of the attribute name */ public String getAttribute() { diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentClass.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentClass.java index a12f73c5..ab4683d1 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentClass.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentClass.java @@ -23,39 +23,52 @@ import java.nio.file.Path; * componentClassRegistry ComponentClassRegistry, * componentClassValue OCTET STRING SIZE(4) ) } * - * + *

* A note for the future. */ -public class ComponentClass { +@Getter +public class +ComponentClass { private static final String TCG_COMPONENT_REGISTRY = "2.23.133.18.3.1"; + private static final String SMBIOS_COMPONENT_REGISTRY = "2.23.133.18.3.3"; + private static final Path WINDOWS_JSON_PATH = FileSystems.getDefault().getPath( - "C:/", "ProgramData", "hirs", "aca", "default-properties", "component-class.json"); - private static final Path JSON_PATH = WINDOWS_JSON_PATH.toFile().exists() ? WINDOWS_JSON_PATH : - FileSystems.getDefault().getPath( - "/etc", "hirs", "aca", "default-properties", "component-class.json"); + "C:/", "ProgramData", "hirs", "aca", "default-properties", "component-class.json"); + + private static final Path JSON_PATH = WINDOWS_JSON_PATH.toFile().exists() ? WINDOWS_JSON_PATH + : FileSystems.getDefault().getPath( + "/etc", "hirs", "aca", "default-properties", "component-class.json"); private static final String OTHER_STRING = "Other"; + private static final String UNKNOWN_STRING = "Unknown"; + private static final String NONE_STRING = "None"; // Used to indicate that the component string value provided is erroneous private static final String ERROR = "-1"; + private static final int MID_INDEX = 4; + /** * All TCG categories have Other and Unknown as the first 2 values. */ private static final String OTHER = "0000"; + private static final String UNKNOWN = "0001"; - @Getter - private String category, categoryStr; - @Getter - private String component, componentStr; - @Getter - private String registryType; - @Getter - private String componentIdentifier; + private final String registryType; + + private final String componentIdentifier; + + private String category; + + private String categoryStr; + + private String component; + + private String componentStr; /** * Default class constructor. @@ -68,7 +81,7 @@ public class ComponentClass { * Class Constructor that takes a String representation of the component * value. * - * @param registryOid the decimal notation for the type of registry + * @param registryOid the decimal notation for the type of registry * @param componentIdentifier component value */ public ComponentClass(final String registryOid, final String componentIdentifier) { @@ -79,7 +92,7 @@ public class ComponentClass { * Class Constructor that takes a String representation of the component * value. * - * @param componentClassPath file path for the json + * @param componentClassPath file path for the json * @param componentIdentifier component value */ public ComponentClass(final Path componentClassPath, final String componentIdentifier) { @@ -91,8 +104,8 @@ public class ComponentClass { * component value. Sets main class variables to default values and then * matches the value against defined values in the associated JSON file. * - * @param registryOid the decimal notation for the type of registry - * @param componentClassPath file path for the json + * @param registryOid the decimal notation for the type of registry + * @param componentClassPath file path for the json * @param componentIdentifier component value */ public ComponentClass(final String registryOid, @@ -106,11 +119,11 @@ public class ComponentClass { this.componentIdentifier = verifyComponentValue(componentIdentifier); } - switch (registryOid) { - case TCG_COMPONENT_REGISTRY -> registryType = "TCG"; - case SMBIOS_COMPONENT_REGISTRY -> registryType = "SMBIOS"; - default -> registryType = UNKNOWN_STRING; - } + this.registryType = switch (registryOid) { + case TCG_COMPONENT_REGISTRY -> "TCG"; + case SMBIOS_COMPONENT_REGISTRY -> "SMBIOS"; + default -> UNKNOWN_STRING; + }; switch (this.componentIdentifier) { case OTHER: @@ -135,91 +148,6 @@ public class ComponentClass { } } - /** - * This is the main way this class will be referenced and how it - * will be displayed on the portal. - * @return String combination of category and component. - */ - @Override - public String toString() { - String resultString; - if (componentStr.equals(UNKNOWN_STRING) || component.equals(OTHER_STRING)) { - resultString = String.format("%s%n%s", registryType, categoryStr); - } else { - resultString = String.format("%s%n%s - %s", registryType, categoryStr, componentStr); - } - return resultString; - } - - /** - * Getter for the Category mapped to the associated value in. - * - * @param categories a JSON object associated with mapped categories in file - * {}@link componentIdentifier}. - */ - private void findStringValues(final JsonObject categories) { - String categoryID; - String componentMask; - boolean found = false; - - if (categories != null) { - for (String name : categories.names()) { - categoryID = verifyComponentValue(categories.get(name) - .asObject().get("ID").asString()); - componentMask = componentIdentifier.substring(MID_INDEX); - // check for the correct flag - if (categoryMatch(componentIdentifier.substring(0, MID_INDEX), - categoryID.substring(0, MID_INDEX))) { - found = true; - JsonObject componentTypes = categories.get(name) - .asObject().get("Types").asObject(); - categoryStr = name; - - switch (componentMask) { - case OTHER -> componentStr = OTHER_STRING; - case UNKNOWN -> componentStr = UNKNOWN_STRING; - default -> getComponent(componentTypes); - } - } - } - } - - if (!found) { - this.categoryStr = NONE_STRING; - this.componentStr = UNKNOWN_STRING; - } - } - - /** - * Returns the value of the comparison between a category and the what's in the id. - * @param category the category to compare - * @param componentId the id value to compare - * @return true if they match - */ - public boolean categoryMatch(final String category, final String componentId) { - return category.equals(componentId); - } - - /** - * Getter for the component associated with the component JSON Object mapped - * in the JSON file. - * - * @param components JSON Object for the categories components - */ - private void getComponent(final JsonObject components) { - String typeID; - - if (components != null) { - for (Member member : components) { - typeID = verifyComponentValue(member.getName()); - - if (component.equalsIgnoreCase(typeID)) { - componentStr = member.getValue().asString(); - } - } - } - } - /** * This method converts the string representation of the component ID into * an integer. Or throws and error if the format is in error. @@ -248,4 +176,93 @@ public class ComponentClass { return componentValue; } + + /** + * This is the main way this class will be referenced and how it + * will be displayed on the portal. + * + * @return String combination of category and component. + */ + @Override + public String toString() { + String resultString; + if (componentStr.equals(UNKNOWN_STRING) || component.equals(OTHER_STRING)) { + resultString = String.format("%s%n%s", registryType, categoryStr); + } else { + resultString = String.format("%s%n%s - %s", registryType, categoryStr, componentStr); + } + return resultString; + } + + /** + * Getter for the Category mapped to the associated value in. + * + * @param categories a JSON object associated with mapped categories in file + * {}@link componentIdentifier}. + */ + private void findStringValues(final JsonObject categories) { + String categoryID; + String componentMask; + boolean found = false; + + if (categories != null) { + for (String name : categories.names()) { + categoryID = verifyComponentValue(categories.get(name) + .asObject().get("ID").asString()); + componentMask = componentIdentifier.substring(MID_INDEX); + // check for the correct flag + if (categoryMatch(componentIdentifier.substring(0, MID_INDEX), + categoryID.substring(0, MID_INDEX))) { + found = true; + JsonObject componentTypes = categories.get(name) + .asObject().get("Types").asObject(); + this.categoryStr = name; + + if (componentMask.equals(OTHER)) { + this.componentStr = OTHER_STRING; + } else if (componentMask.equals(UNKNOWN)) { + this.componentStr = UNKNOWN_STRING; + } else { + getComponent(componentTypes); + } + } + } + } + + if (!found) { + this.categoryStr = NONE_STRING; + this.componentStr = UNKNOWN_STRING; + } + } + + /** + * Returns the value of the comparison between a category and the what's in the id. + * + * @param category the category to compare + * @param componentId the id value to compare + * @return true if they match + */ + public boolean categoryMatch(final String category, final String componentId) { + return category.equals(componentId); + } + + /** + * Getter for the component associated with the component JSON Object mapped + * in the JSON file. + * + * @param components JSON Object for the categories components + */ + private void getComponent(final JsonObject components) { + String typeID; + + if (components != null) { + for (Member member : components) { + typeID = verifyComponentValue(member.getName()); + + if (component.equalsIgnoreCase(typeID)) { + componentStr = member.getValue().asString(); + } + } + } + } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentIdentifier.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentIdentifier.java index 7cf9a73b..b0c37e7a 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentIdentifier.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentIdentifier.java @@ -44,13 +44,11 @@ public class ComponentIdentifier { * Maximum number of configurations. */ public static final int CONFIGMAX = 32; - - private static final int MANDATORY_ELEMENTS = 2; - // optional sequence objects /** * Static variable indicated array position for the serial number. */ protected static final int COMPONENT_SERIAL = 0; + // optional sequence objects /** * Static variable indicated array position for the revision info. */ @@ -68,13 +66,22 @@ public class ComponentIdentifier { */ protected static final int COMPONENT_ADDRESS = 4; + private static final int MANDATORY_ELEMENTS = 2; + private DERUTF8String componentManufacturer; + private DERUTF8String componentModel; + private DERUTF8String componentSerial; + private DERUTF8String componentRevision; + private ASN1ObjectIdentifier componentManufacturerId; + private ASN1Boolean fieldReplaceable; + private List componentAddress; + private boolean validationResult = true; /** @@ -93,13 +100,13 @@ public class ComponentIdentifier { /** * Constructor given the components values. * - * @param componentManufacturer represents the component manufacturer - * @param componentModel represents the component model - * @param componentSerial represents the component serial number - * @param componentRevision represents the component revision + * @param componentManufacturer represents the component manufacturer + * @param componentModel represents the component model + * @param componentSerial represents the component serial number + * @param componentRevision represents the component revision * @param componentManufacturerId represents the component manufacturer ID - * @param fieldReplaceable represents if the component is replaceable - * @param componentAddress represents a list of addresses + * @param fieldReplaceable represents if the component is replaceable + * @param componentAddress represents a list of addresses */ public ComponentIdentifier(final DERUTF8String componentManufacturer, final DERUTF8String componentModel, @@ -119,6 +126,7 @@ public class ComponentIdentifier { /** * Constructor given the SEQUENCE that contains Component Identifier. + * * @param sequence containing the component identifier * @throws IllegalArgumentException if there was an error on the parsing */ @@ -193,22 +201,6 @@ public class ComponentIdentifier { return false; } - /** - * Getter for the component addresses. - * @return a collection of component addresses - */ - public List getComponentAddress() { - return componentAddress.stream().toList(); - } - - /** - * Setter for the list of component addresses. - * @param componentAddress collection of addresses - */ - public void setComponentAddress(List componentAddress) { - this.componentAddress = componentAddress.stream().toList(); - } - @Override public String toString() { StringBuilder sb = new StringBuilder(); @@ -230,7 +222,7 @@ public class ComponentIdentifier { } sb.append(", fieldReplaceable="); if (fieldReplaceable != null) { - sb.append(fieldReplaceable.toString()); + sb.append(fieldReplaceable); } sb.append(", componentAddress="); if (!componentAddress.isEmpty()) { diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/ComponentIdentifierV2.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/ComponentIdentifierV2.java index 26090cbc..f3394857 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/ComponentIdentifierV2.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/ComponentIdentifierV2.java @@ -67,19 +67,18 @@ public class ComponentIdentifierV2 extends ComponentIdentifier { /** * Constructor given the components values. * - * @param componentClass represent the component type - * @param componentManufacturer represents the component manufacturer - * @param componentModel represents the component model - * @param componentSerial represents the component serial number - * @param componentRevision represents the component revision + * @param componentClass represent the component type + * @param componentManufacturer represents the component manufacturer + * @param componentModel represents the component model + * @param componentSerial represents the component serial number + * @param componentRevision represents the component revision * @param componentManufacturerId represents the component manufacturer ID - * @param fieldReplaceable represents if the component is replaceable - * @param componentAddress represents a list of addresses - * @param certificateIdentifier object representing certificate Id - * @param componentPlatformUri object containing the URI Reference - * @param attributeStatus object containing enumerated status + * @param fieldReplaceable represents if the component is replaceable + * @param componentAddress represents a list of addresses + * @param certificateIdentifier object representing certificate Id + * @param componentPlatformUri object containing the URI Reference + * @param attributeStatus object containing enumerated status */ - @SuppressWarnings("checkstyle:parameternumber") public ComponentIdentifierV2(final ComponentClass componentClass, final DERUTF8String componentManufacturer, final DERUTF8String componentModel, @@ -103,6 +102,7 @@ public class ComponentIdentifierV2 extends ComponentIdentifier { /** * Constructor given the SEQUENCE that contains Component Identifier. + * * @param sequence containing the component identifier * @throws IllegalArgumentException if there was an error on the parsing */ @@ -120,7 +120,8 @@ public class ComponentIdentifierV2 extends ComponentIdentifier { ASN1OctetString.getInstance(componentIdSeq.getObjectAt(tag)).toString()); // Mandatory values - this.setComponentManufacturer((DERUTF8String) ASN1UTF8String.getInstance(sequence.getObjectAt(tag++))); + this.setComponentManufacturer( + (DERUTF8String) ASN1UTF8String.getInstance(sequence.getObjectAt(tag++))); this.setComponentModel((DERUTF8String) ASN1UTF8String.getInstance(sequence.getObjectAt(tag++))); // Continue reading the sequence if it does contain more than 2 values @@ -202,9 +203,15 @@ public class ComponentIdentifierV2 extends ComponentIdentifier { @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - if (!super.equals(o)) return false; + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + if (!super.equals(o)) { + return false; + } ComponentIdentifierV2 that = (ComponentIdentifierV2) o; return Objects.equals(componentClass, that.componentClass) && Objects.equals(certificateIdentifier, that.certificateIdentifier) @@ -241,7 +248,7 @@ public class ComponentIdentifierV2 extends ComponentIdentifier { } sb.append(", fieldReplaceable="); if (getFieldReplaceable() != null) { - sb.append(getFieldReplaceable().toString()); + sb.append(getFieldReplaceable()); } sb.append(", componentAddress="); if (getComponentAddress().size() > 0) { @@ -252,11 +259,11 @@ public class ComponentIdentifierV2 extends ComponentIdentifier { } sb.append(", certificateIdentifier="); if (certificateIdentifier != null) { - sb.append(certificateIdentifier.toString()); + sb.append(certificateIdentifier); } sb.append(", componentPlatformUri="); if (componentPlatformUri != null) { - sb.append(componentPlatformUri.toString()); + sb.append(componentPlatformUri); } sb.append(", status="); if (attributeStatus != null) { diff --git a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/CertificateDetailsPageControllerTest.java b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/CertificateDetailsPageControllerTest.java index d1c7859d..dd2daff6 100644 --- a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/CertificateDetailsPageControllerTest.java +++ b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/CertificateDetailsPageControllerTest.java @@ -12,13 +12,6 @@ import hirs.attestationca.persist.enums.HealthStatus; import hirs.attestationca.portal.page.Page; import hirs.attestationca.portal.page.PageController; import hirs.attestationca.portal.page.PageControllerTest; -import java.io.IOException; - -import java.security.Security; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -27,8 +20,15 @@ import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.Rollback; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; -import static org.hamcrest.Matchers.hasProperty; + +import java.io.IOException; +import java.security.Security; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + import static org.hamcrest.Matchers.hasItem; +import static org.hamcrest.Matchers.hasProperty; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model; @@ -40,25 +40,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS) public class CertificateDetailsPageControllerTest extends PageControllerTest { - // Base path for the page - private String pagePath; - - // Repository manager to handle data access between device entity and data storage in db - @Autowired - private DeviceRepository deviceRepository; - - // Repository manager to handle data access between certificate entity and data storage in db - @Autowired - private CertificateRepository certificateRepository; - - private CertificateAuthorityCredential caCertificate; - private CertificateAuthorityCredential caRootCertificate; - private PlatformCredential platformCredential; - private PlatformCredential platformCredential2; - private PlatformCredential platformCertificatePCI; - private EndorsementCredential endorsementCredential; - private IssuedAttestationCertificate issuedCredential; - // Random UUID for certificate search. private static final String ID = "046b6c7f-0b8a-43b9-b35d-6489e6daee91"; private static final String TEST_CA_CERTIFICATE @@ -75,6 +56,21 @@ public class CertificateDetailsPageControllerTest extends PageControllerTest { = "/platform_credentials/basic_plat_cert_2-0.pem"; private static final String TEST_PLATFORM_CREDENTIAL_2_PCI = "/platform_credentials/pciids_plat_cert_2-0.pem"; + // Base path for the page + private final String pagePath; + // Repository manager to handle data access between device entity and data storage in db + @Autowired + private DeviceRepository deviceRepository; + // Repository manager to handle data access between certificate entity and data storage in db + @Autowired + private CertificateRepository certificateRepository; + private CertificateAuthorityCredential caCertificate; + private CertificateAuthorityCredential caRootCertificate; + private PlatformCredential platformCredential; + private PlatformCredential platformCredential2; + private PlatformCredential platformCertificatePCI; + private EndorsementCredential endorsementCredential; + private IssuedAttestationCertificate issuedCredential; /** * Constructor providing the Page's display and routing specification. @@ -239,7 +235,7 @@ public class CertificateDetailsPageControllerTest extends PageControllerTest { .getModelAndView() .getModel() .get(PolicyPageController.INITIAL_DATA); - assertEquals(caCertificate.getIssuer(), initialData.get("issuer")); + assertEquals(caCertificate.getIssuer(), initialData.get("issuer")); } @@ -268,7 +264,7 @@ public class CertificateDetailsPageControllerTest extends PageControllerTest { .getModel() .get(PolicyPageController.INITIAL_DATA); assertEquals(platformCredential.getIssuer(), initialData.get("issuer")); - assertEquals(((PlatformCredential) platformCredential).getCredentialType(), + assertEquals(platformCredential.getCredentialType(), initialData.get("credentialType")); } @@ -298,7 +294,7 @@ public class CertificateDetailsPageControllerTest extends PageControllerTest { .getModel() .get(PolicyPageController.INITIAL_DATA); assertEquals(platformCredential2.getIssuer(), initialData.get("issuer")); - assertEquals(((PlatformCredential) platformCredential2).getCredentialType(), + assertEquals(platformCredential2.getCredentialType(), initialData.get("credentialType")); // Check component identifier assertNotNull(initialData.get("componentsIdentifier")); @@ -337,7 +333,7 @@ public class CertificateDetailsPageControllerTest extends PageControllerTest { .getModel() .get(PolicyPageController.INITIAL_DATA); assertEquals(platformCertificatePCI.getIssuer(), initialData.get("issuer")); - assertEquals(((PlatformCredential) platformCertificatePCI).getCredentialType(), + assertEquals(platformCertificatePCI.getCredentialType(), initialData.get("credentialType")); // Check component identifier assertNotNull(initialData.get("componentsIdentifier")); @@ -376,7 +372,7 @@ public class CertificateDetailsPageControllerTest extends PageControllerTest { .getModel() .get(PolicyPageController.INITIAL_DATA); assertEquals(endorsementCredential.getIssuer(), initialData.get("issuer")); - assertEquals(((EndorsementCredential) endorsementCredential).getManufacturer(), + assertEquals(endorsementCredential.getManufacturer(), initialData.get("manufacturer")); } From b3d1bd8fcc2530244f56d2d860c07a1989d24308 Mon Sep 17 00:00:00 2001 From: TheSilentCoder <184309164+ThatSilentCoder@users.noreply.github.com> Date: Mon, 21 Oct 2024 13:46:57 -0400 Subject: [PATCH 05/22] issue_847: Applied formatting changes to entire CA module. Reduced errors by 100. --- HIRS_AttestationCA/build.gradle | 18 +- .../config/spotbugs/spotbugs-exclude.xml | 8 +- .../persist/OrderedListQuerier.java | 39 +- .../persist/entity/ArchivableEntity.java | 15 +- .../attestationca/persist/entity/Policy.java | 11 +- .../persist/entity/UserDefinedEntity.java | 14 +- .../manager/IDevIDCertificateRepository.java | 8 +- .../entity/tpm/TPM2ProvisionerState.java | 46 +- .../entity/userdefined/ExaminableRecord.java | 45 +- .../entity/userdefined/PolicySettings.java | 9 +- .../certificate/CertificateVariables.java | 2 +- .../certificate/ConformanceCredential.java | 21 +- .../DeviceAssociatedCertificate.java | 23 +- .../certificate/PlatformCredential.java | 2 +- .../attributes/CommonCriteriaMeasures.java | 281 ++++----- .../certificate/attributes/FIPSLevel.java | 110 ++-- .../attributes/PlatformConfiguration.java | 44 +- .../attributes/PlatformConfigurationV1.java | 3 +- .../attributes/PlatformProperty.java | 5 +- .../attributes/TBBSecurityAssertion.java | 113 ++-- .../attributes/TPMSecurityAssertions.java | 96 ++- .../attributes/TPMSpecification.java | 11 +- .../certificate/attributes/URIReference.java | 11 +- .../attributes/V2/CertificateIdentifier.java | 6 +- .../V2/PlatformConfigurationV2.java | 5 +- .../attributes/V2/PlatformPropertyV2.java | 7 +- .../certificate/attributes/package-info.java | 2 +- .../userdefined/certificate/package-info.java | 2 +- .../userdefined/info/ComponentInfo.java | 46 +- .../entity/userdefined/info/FirmwareInfo.java | 4 +- .../entity/userdefined/info/HardwareInfo.java | 16 +- .../entity/userdefined/info/NetworkInfo.java | 58 +- .../entity/userdefined/info/OSInfo.java | 15 +- .../entity/userdefined/info/RIMInfo.java | 7 +- .../entity/userdefined/info/TPMInfo.java | 163 +++-- .../info/component/package-info.java | 1 + .../entity/userdefined/info/package-info.java | 1 + .../entity/userdefined/package-info.java | 2 +- .../record/TPMMeasurementRecord.java | 34 +- .../userdefined/report/DeviceInfoReport.java | 94 ++- .../result/CertificateValidationResult.java | 35 +- .../rim/BaseReferenceManifest.java | 26 +- .../userdefined/rim/EventLogMeasurements.java | 8 +- .../userdefined/rim/ReferenceDigestValue.java | 31 +- .../rim/SupportReferenceManifest.java | 14 +- .../persist/enums/AppraisalStatus.java | 56 +- .../persist/enums/HealthStatus.java | 21 +- .../persist/enums/package-info.java | 2 +- .../persist/provision/AbstractProcessor.java | 66 +- .../CertificateRequestProcessor.java | 41 +- .../helper/CredentialManagementHelper.java | 14 +- .../IssuedCertificateAttributeHelper.java | 22 +- .../provision/helper/ProvisionUtils.java | 101 ++-- .../persist/service/ValidationService.java | 6 +- .../service/selector/CertificateSelector.java | 27 +- .../selector/ReferenceManifestSelector.java | 14 +- .../persist/tpm/PcrComposite.java | 19 +- .../persist/tpm/PcrInfoShort.java | 23 +- .../persist/tpm/PcrSelection.java | 11 +- .../persist/type/InetAddressType.java | 30 +- .../persist/type/X509CertificateType.java | 34 +- .../attestationca/persist/util/AcaPciIds.java | 5 +- .../persist/util/CredentialHelper.java | 8 +- .../validation/CredentialValidator.java | 48 +- .../persist/validation/PcrValidator.java | 79 +-- .../SupplyChainCredentialValidator.java | 72 +-- .../SupplyChainValidatorException.java | 12 +- .../main/resources/identity_transform.xslt | 4 +- .../AttestationCertificateAuthorityTest.java | 134 ++--- .../entity/tpm/TPM2ProvisionerStateTest.java | 25 +- .../AbstractUserdefinedEntityTest.java | 24 +- .../entity/userdefined/CertificateTest.java | 72 +-- .../entity/userdefined/DeviceTest.java | 3 +- .../userdefined/PolicySettingsTest.java | 7 +- .../SupplyChainValidationSummaryTest.java | 39 +- .../SupplyChainValidationTest.java | 32 +- .../CertificateAuthorityCredentialTest.java | 9 +- .../EndorsementCredentialTest.java | 19 +- .../certificate/PlatformCredentialTest.java | 215 ++++--- .../attributes/ComponentClassTest.java | 24 +- .../attributes/TPMSecurityAssertionsTest.java | 5 +- .../userdefined/info/PortalInfoTest.java | 7 +- .../entity/userdefined/info/TPMInfoTest.java | 21 +- .../record/TPMMeasurementRecordTest.java | 7 +- .../report/DeviceInfoReportTest.java | 11 +- .../CredentialManagementHelperTest.java | 20 +- .../IssuedCertificateAttributeHelperTest.java | 19 +- .../SupplyChainCredentialValidatorTest.java | 566 +++++++++--------- 88 files changed, 1713 insertions(+), 1773 deletions(-) create mode 100644 HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/component/package-info.java create mode 100644 HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/package-info.java diff --git a/HIRS_AttestationCA/build.gradle b/HIRS_AttestationCA/build.gradle index 092747c7..55ce5538 100644 --- a/HIRS_AttestationCA/build.gradle +++ b/HIRS_AttestationCA/build.gradle @@ -70,10 +70,10 @@ configurations.checkstyle { } } checkstyleMain { - source ='src/main/java' + source = 'src/main/java' } checkstyleTest { - source ='src/test/java' + source = 'src/test/java' } tasks.withType(Checkstyle) { reports { @@ -82,16 +82,16 @@ tasks.withType(Checkstyle) { } } protobuf { - protoc { - artifact = 'com.google.protobuf:protoc:3.24.3' - } + protoc { + artifact = 'com.google.protobuf:protoc:3.24.3' + } } sourceSets { - main { - proto { - srcDir '../HIRS_ProvisionerTPM2/src' + main { + proto { + srcDir '../HIRS_ProvisionerTPM2/src' + } } - } } test { diff --git a/HIRS_AttestationCA/config/spotbugs/spotbugs-exclude.xml b/HIRS_AttestationCA/config/spotbugs/spotbugs-exclude.xml index 5c601ccc..acdcaa9b 100644 --- a/HIRS_AttestationCA/config/spotbugs/spotbugs-exclude.xml +++ b/HIRS_AttestationCA/config/spotbugs/spotbugs-exclude.xml @@ -2,18 +2,18 @@ - + - + - + - + diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/OrderedListQuerier.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/OrderedListQuerier.java index f303e0e4..6eeb8de3 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/OrderedListQuerier.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/OrderedListQuerier.java @@ -5,6 +5,7 @@ import java.util.Map; /** * Interface defining methods for getting ordered lists from a data source. Includes * properties for sorting, paging, and searching. + * * @param the record type, T. */ public interface OrderedListQuerier { @@ -14,16 +15,16 @@ public interface OrderedListQuerier { * direction (ASC, DESC) that is provided by the user. This method helps * support the server-side processing in the JQuery DataTables. * - * @param clazz class type of Ts to search for (may be null to - * use Class<T>) - * @param columnToOrder Column to be ordered - * @param ascending direction of sort - * @param firstResult starting point of first result in set - * @param maxResults total number we want returned for display in table - * @param search string of criteria to be matched to visible columns + * @param clazz class type of Ts to search for (may be null to + * use Class<T>) + * @param columnToOrder Column to be ordered + * @param ascending direction of sort + * @param firstResult starting point of first result in set + * @param maxResults total number we want returned for display in table + * @param search string of criteria to be matched to visible columns * @param searchableColumns Map of String and boolean values with column - * headers and whether they should be searched. Boolean is true if field provides a - * typical String that can be searched by Hibernate without transformation. + * headers and whether they should be searched. Boolean is true if field provides a + * typical String that can be searched by Hibernate without transformation. * @return FilteredRecordsList object with query data * @throws DBManagerException if unable to create the list */ @@ -41,17 +42,17 @@ public interface OrderedListQuerier { * support the server-side processing in the JQuery DataTables. For entities that support * soft-deletes, the returned list does not contain Ts that have been soft-deleted. * - * @param clazz class type of Ts to search for (may be null to - * use Class<T>) - * @param columnToOrder Column to be ordered - * @param ascending direction of sort - * @param firstResult starting point of first result in set - * @param maxResults total number we want returned for display in table - * @param search string of criteria to be matched to visible columns + * @param clazz class type of Ts to search for (may be null to + * use Class<T>) + * @param columnToOrder Column to be ordered + * @param ascending direction of sort + * @param firstResult starting point of first result in set + * @param maxResults total number we want returned for display in table + * @param search string of criteria to be matched to visible columns * @param searchableColumns Map of String and boolean values with column - * headers and whether they should be searched. Boolean is true if field provides a - * typical String that can be searched by Hibernate without transformation. - * @param criteriaModifier a way to modify the criteria used in the query + * headers and whether they should be searched. Boolean is true if field provides a + * typical String that can be searched by Hibernate without transformation. + * @param criteriaModifier a way to modify the criteria used in the query * @return FilteredRecordsList object with query data * @throws DBManagerException if unable to create the list */ diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/ArchivableEntity.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/ArchivableEntity.java index c209df3e..295a159d 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/ArchivableEntity.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/ArchivableEntity.java @@ -55,9 +55,8 @@ public abstract class ArchivableEntity extends AbstractEntity { * Signals that this entity has been archived, by setting the archivedTime to the current date * and time. * - * @return - * true if time was null and date was set. - * false is archived time is already set, signifying the entity has been archived. + * @return true if time was null and date was set. + * false is archived time is already set, signifying the entity has been archived. */ public final boolean archive() { if (this.archivedTime == null) { @@ -73,8 +72,7 @@ public abstract class ArchivableEntity extends AbstractEntity { * purposes so the reason for action taken can be referenced. * * @param description - description of the action taken for resolution - * @return - * boolean result is dependent on the return value of the archive() method + * @return boolean result is dependent on the return value of the archive() method */ public final boolean archive(final String description) { if (archive()) { @@ -90,7 +88,7 @@ public abstract class ArchivableEntity extends AbstractEntity { * entity has not been resolved, then null is returned. * * @return archivedTime - * If entity was archived, timestamp of the occurrence, null otherwise. + * If entity was archived, timestamp of the occurrence, null otherwise. */ public final Date getArchivedTime() { if (archivedTime == null) { @@ -104,9 +102,8 @@ public abstract class ArchivableEntity extends AbstractEntity { * Sets the archivedTime to null. The archivedTime being null signifies that the entity has * not been archived. If the time is already null then this call was unnecessary. * - * @return - * true if the time is changed to null. - * false if time was already set to null. + * @return true if the time is changed to null. + * false if time was already set to null. */ public final boolean restore() { if (this.archivedTime != null) { diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/Policy.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/Policy.java index d4b1cb24..2e8648bb 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/Policy.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/Policy.java @@ -16,7 +16,7 @@ import jakarta.persistence.MappedSuperclass; @Inheritance(strategy = InheritanceType.JOINED) @Access(AccessType.FIELD) @MappedSuperclass -public abstract class Policy extends UserDefinedEntity { +public abstract class Policy extends UserDefinedEntity { /** * Default empty constructor is required for Hibernate. It is protected to @@ -29,8 +29,7 @@ public abstract class Policy extends UserDefinedEntity { /** * Creates a new Policy with the specified name. * - * @param name - * name + * @param name name */ public Policy(final String name) { super(name); @@ -40,10 +39,8 @@ public abstract class Policy extends UserDefinedEntity { * Creates a new Policy with the specified name and * description. * - * @param name - * name (required) - * @param description - * description (may be null) + * @param name name (required) + * @param description description (may be null) */ public Policy(final String name, final String description) { super(name, description); diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/UserDefinedEntity.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/UserDefinedEntity.java index ca38680d..f061a8f0 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/UserDefinedEntity.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/UserDefinedEntity.java @@ -4,9 +4,9 @@ import jakarta.persistence.Column; import jakarta.persistence.MappedSuperclass; import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.NonNull; import lombok.Setter; import lombok.ToString; -import lombok.NonNull; /** * An abstract archivable entity that can be given a user-defined name and description. @@ -18,11 +18,13 @@ import lombok.NonNull; public abstract class UserDefinedEntity extends ArchivableEntity { @Column(nullable = false, unique = true) - @NonNull private String name; + @NonNull + private String name; @ToString.Exclude @Column(nullable = false, unique = false) - @NonNull private String description = ""; + @NonNull + private String description = ""; /** * Default empty constructor is required for Hibernate. It is protected to @@ -47,8 +49,7 @@ public abstract class UserDefinedEntity extends ArchivableEntity { * an instance of UserDefinedEntity and its name is the same as this * UserDefinedEntity. Otherwise this returns false. * - * @param other - * other object to test for equals + * @param other other object to test for equals * @return true if other is Baseline and has same name */ @Override @@ -56,11 +57,10 @@ public abstract class UserDefinedEntity extends ArchivableEntity { if (this == other) { return true; } - if (!(other instanceof UserDefinedEntity)) { + if (!(other instanceof UserDefinedEntity entity)) { return false; } - final UserDefinedEntity entity = (UserDefinedEntity) other; return this.getName().equals(entity.getName()); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IDevIDCertificateRepository.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IDevIDCertificateRepository.java index f9c548de..b8d062a0 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IDevIDCertificateRepository.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/manager/IDevIDCertificateRepository.java @@ -30,7 +30,7 @@ public interface IDevIDCertificateRepository extends JpaRepository findByArchiveFlag(boolean archiveFlag, Pageable pageable); -// /** + // /** // * Query that retrieves a list of IDevId certificates using the provided subject. // * // * @param subject string representation of the subject @@ -56,7 +56,8 @@ public interface IDevIDCertificateRepository extends JpaRepository findBySubjectAndArchiveFlag(String subject, boolean archiveFlag); // // /** -// * Query that retrieves a sorted list of IDevId certificates using the provided subject and archive flag. +// * Query that retrieves a sorted list of IDevId certificates using the provided subject +// * and archive flag. // * // * @param subject string representation of the subject // * @param archiveFlag archive flag @@ -79,5 +80,6 @@ public interface IDevIDCertificateRepository extends JpaRepository { // /** // * Construct a new CertificateSelector that will use the given {@link CertificateManager} to @@ -30,12 +31,12 @@ public class ConformanceCredential extends Certificate { // } // } - /** - * Get a Selector for use in retrieving ConformanceCredentials. - * - * @param certMan the CertificateManager to be used to retrieve persisted certificates - * @return a ConformanceCredential.Selector instance to use for retrieving certificates - */ +// /** +// * Get a Selector for use in retrieving ConformanceCredentials. +// * +// * @param certMan the CertificateManager to be used to retrieve persisted certificates +// * @return a ConformanceCredential.Selector instance to use for retrieving certificates +// */ // public static Selector select(final CertificateManager certMan) { // return new Selector(certMan); // } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/DeviceAssociatedCertificate.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/DeviceAssociatedCertificate.java index e0f54321..45c08175 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/DeviceAssociatedCertificate.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/DeviceAssociatedCertificate.java @@ -18,26 +18,25 @@ import java.util.UUID; * * @see Certificate */ -@NoArgsConstructor(access= AccessLevel.PACKAGE) +@Setter +@Getter +@NoArgsConstructor(access = AccessLevel.PACKAGE) @MappedSuperclass public abstract class DeviceAssociatedCertificate extends Certificate { - // a device can have multiple certs of this type. - @Getter - @Setter - @JdbcTypeCode(java.sql.Types.VARCHAR) - @Column - private UUID deviceId; - @Getter - @Setter - @Column - private String deviceName; - /** * Holds the name of the entity 'DEVICE_ID' field. */ protected static final String DEVICE_ID_FIELD = "device_id"; + // a device can have multiple certs of this type. + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column + private UUID deviceId; + + @Column + private String deviceName; + /** * Construct a new Certificate by parsing the file at the given path. The given certificate * should represent either an X509 certificate or X509 attribute certificate. diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/PlatformCredential.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/PlatformCredential.java index 0f420e02..e11ab146 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/PlatformCredential.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/PlatformCredential.java @@ -177,7 +177,7 @@ public class PlatformCredential extends DeviceAssociatedCertificate { private EndorsementCredential endorsementCredential = null; private String platformChainType = Strings.EMPTY; - + private boolean isDeltaChain = false; /** diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/CommonCriteriaMeasures.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/CommonCriteriaMeasures.java index c7715226..a1432d48 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/CommonCriteriaMeasures.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/CommonCriteriaMeasures.java @@ -25,7 +25,8 @@ import org.bouncycastle.asn1.ASN1TaggedObject; * targetUri [4] IMPLICIT URIReference OPTIONAL } * */ -@Getter @Setter +@Getter +@Setter public class CommonCriteriaMeasures { private static final int STRENGTH_OF_FUNCTION = 0; @@ -33,140 +34,6 @@ public class CommonCriteriaMeasures { private static final int PROFILE_URI = 2; private static final int TARGET_OID = 3; private static final int TARGET_URI = 4; - - /** - * A type to handle the evaluation status used in the Common Criteria Measurement. - * Ordering of enum types is intentional and their ordinal values correspond to enum - * values in the TCG spec. - * - *

-     * EvaluationStatus ::= ENUMERATED {
-     *      designedToMeet (0),
-     *      evaluationInProgress (1),
-     *      evaluationCompleted (2) }
-     * 
- */ - public enum EvaluationStatus { - /** - * Evaluation designed to meet. - */ - DESIGNEDTOMEET("designed To Meet"), - /** - * Evaluation in progress. - */ - EVALUATIONINPROGRESS("evaluation In Progress"), - /** - * Evaluation completed. - */ - EVALUATIONCOMPLETED("evaluation Completed"); - - @Getter - private final String value; - - /** - * Basic constructor. - * @param value string containing the value. - */ - EvaluationStatus(final String value) { - this.value = value; - } - } - - /** - * A type to handle the strength of function used in the Common Criteria Measurement. - * Ordering of enum types is intentional and their ordinal values correspond to enum - * values in the TCG spec. - * - *
-     * StrengthOfFunction ::= ENUMERATED {
-     *      basic (0),
-     *      medium (1),
-     *      high (2) }
-     * 
- */ - public enum StrengthOfFunction { - /** - * Basic function. - */ - BASIC("basic"), - /** - * Medium function. - */ - MEDIUM("medium"), - /** - * Hight function. - */ - HIGH("high"); - - @Getter - private final String value; - - /** - * Basic constructor. - * @param value string containing the value. - */ - StrengthOfFunction(final String value) { - this.value = value; - } - } - - /** - * A type to handle the evaluation assurance aevel used in the Common Criteria Measurement. - * Ordering of enum types is intentional and their ordinal values correspond to enum - * values in the TCG spec. - * - *
-     * EvaluationAssuranceLevel ::= ENUMERATED {
-     *      levell (1),
-     *      level2 (2),
-     *      level3 (3),
-     *      level4 (4),
-     *      level5 (5),
-     *      level6 (6),
-     *      level7 (7) }
-     * 
- */ - public enum EvaluationAssuranceLevel { - /** - * Evaluation Assurance Level 1. - */ - LEVEL1("level 1"), - /** - * Evaluation Assurance Level 2. - */ - LEVEL2("level 2"), - /** - * Evaluation Assurance Level 3. - */ - LEVEL3("level 3"), - /** - * Evaluation Assurance Level 4. - */ - LEVEL4("level 4"), - /** - * Evaluation Assurance Level 5. - */ - LEVEL5("level 5"), - /** - * Evaluation Assurance Level 6. - */ - LEVEL6("level 6"), - /** - * Evaluation Assurance Level 7. - */ - LEVEL7("level 7"); - - @Getter - private final String value; - /** - * Basic constructor. - * @param value string containing the value. - */ - EvaluationAssuranceLevel(final String value) { - this.value = value; - } - } - private ASN1IA5String version; private EvaluationAssuranceLevel assuranceLevel; private EvaluationStatus evaluationStatus; @@ -194,6 +61,7 @@ public class CommonCriteriaMeasures { /** * Constructor given the SEQUENCE that contains Common Criteria Measures. + * * @param sequence containing the the common criteria measures * @throws IllegalArgumentException if there was an error on the parsing */ @@ -258,7 +126,6 @@ public class CommonCriteriaMeasures { } } - @Override public String toString() { StringBuilder sb = new StringBuilder(); @@ -278,7 +145,7 @@ public class CommonCriteriaMeasures { } sb.append(", profileUri="); if (profileUri != null) { - sb.append(profileUri.toString()); + sb.append(profileUri); } sb.append(", targetOid="); if (targetOid != null) { @@ -286,10 +153,148 @@ public class CommonCriteriaMeasures { } sb.append(", targetUri="); if (targetUri != null) { - sb.append(targetUri.toString()); + sb.append(targetUri); } sb.append("}"); return sb.toString(); } + + /** + * A type to handle the evaluation status used in the Common Criteria Measurement. + * Ordering of enum types is intentional and their ordinal values correspond to enum + * values in the TCG spec. + * + *
+     * EvaluationStatus ::= ENUMERATED {
+     *      designedToMeet (0),
+     *      evaluationInProgress (1),
+     *      evaluationCompleted (2) }
+     * 
+ */ + public enum EvaluationStatus { + /** + * Evaluation designed to meet. + */ + DESIGNEDTOMEET("designed To Meet"), + /** + * Evaluation in progress. + */ + EVALUATIONINPROGRESS("evaluation In Progress"), + /** + * Evaluation completed. + */ + EVALUATIONCOMPLETED("evaluation Completed"); + + @Getter + private final String value; + + /** + * Basic constructor. + * + * @param value string containing the value. + */ + EvaluationStatus(final String value) { + this.value = value; + } + } + + /** + * A type to handle the strength of function used in the Common Criteria Measurement. + * Ordering of enum types is intentional and their ordinal values correspond to enum + * values in the TCG spec. + * + *
+     * StrengthOfFunction ::= ENUMERATED {
+     *      basic (0),
+     *      medium (1),
+     *      high (2) }
+     * 
+ */ + public enum StrengthOfFunction { + /** + * Basic function. + */ + BASIC("basic"), + /** + * Medium function. + */ + MEDIUM("medium"), + /** + * Hight function. + */ + HIGH("high"); + + @Getter + private final String value; + + /** + * Basic constructor. + * + * @param value string containing the value. + */ + StrengthOfFunction(final String value) { + this.value = value; + } + } + + + /** + * A type to handle the evaluation assurance aevel used in the Common Criteria Measurement. + * Ordering of enum types is intentional and their ordinal values correspond to enum + * values in the TCG spec. + * + *
+     * EvaluationAssuranceLevel ::= ENUMERATED {
+     *      levell (1),
+     *      level2 (2),
+     *      level3 (3),
+     *      level4 (4),
+     *      level5 (5),
+     *      level6 (6),
+     *      level7 (7) }
+     * 
+ */ + public enum EvaluationAssuranceLevel { + /** + * Evaluation Assurance Level 1. + */ + LEVEL1("level 1"), + /** + * Evaluation Assurance Level 2. + */ + LEVEL2("level 2"), + /** + * Evaluation Assurance Level 3. + */ + LEVEL3("level 3"), + /** + * Evaluation Assurance Level 4. + */ + LEVEL4("level 4"), + /** + * Evaluation Assurance Level 5. + */ + LEVEL5("level 5"), + /** + * Evaluation Assurance Level 6. + */ + LEVEL6("level 6"), + /** + * Evaluation Assurance Level 7. + */ + LEVEL7("level 7"); + + @Getter + private final String value; + + /** + * Basic constructor. + * + * @param value string containing the value. + */ + EvaluationAssuranceLevel(final String value) { + this.value = value; + } + } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/FIPSLevel.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/FIPSLevel.java index fa2db5aa..012fb957 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/FIPSLevel.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/FIPSLevel.java @@ -21,60 +21,14 @@ import org.bouncycastle.asn1.ASN1Sequence; public class FIPSLevel { private static final int MAX_SEQUENCE_SIZE = 3; - /** - * A type to handle the security Level used in the FIPS Level. - * Ordering of enum types is intentional and their ordinal values correspond to enum - * values in the TCG spec. - * - *
-     * SecurityLevel ::= ENUMERATED {
-     *      level1 (1),
-     *      level2 (2),
-     *      level3 (3),
-     *      level4 (4) }
-     * 
- */ - public enum SecurityLevel { - /** - * Security Level 1. - */ - LEVEL1("level 1"), - /** - * Security Level 2. - */ - LEVEL2("level 2"), - /** - * Security Level 3. - */ - LEVEL3("level 3"), - /** - * Security Level 4. - */ - LEVEL4("level 4"); - - private final String value; - /** - * Basic constructor. - * @param value string containing the value. - */ - SecurityLevel(final String value) { - this.value = value; - } - - /** - * Get the string value from the StrengthOfFunction. - * @return the string containing the value. - */ - public String getValue() { - return this.value; - } - } - - @Getter @Setter + @Getter + @Setter private ASN1IA5String version; - @Getter @Setter + @Getter + @Setter private SecurityLevel level; - @Getter @Setter + @Getter + @Setter private ASN1Boolean plus; /** @@ -119,4 +73,56 @@ public class FIPSLevel { + ", plus=" + plus.toString() + '}'; } + + /** + * A type to handle the security Level used in the FIPS Level. + * Ordering of enum types is intentional and their ordinal values correspond to enum + * values in the TCG spec. + * + *
+     * SecurityLevel ::= ENUMERATED {
+     *      level1 (1),
+     *      level2 (2),
+     *      level3 (3),
+     *      level4 (4) }
+     * 
+ */ + public enum SecurityLevel { + /** + * Security Level 1. + */ + LEVEL1("level 1"), + /** + * Security Level 2. + */ + LEVEL2("level 2"), + /** + * Security Level 3. + */ + LEVEL3("level 3"), + /** + * Security Level 4. + */ + LEVEL4("level 4"); + + private final String value; + + /** + * Basic constructor. + * + * @param value string containing the value. + */ + SecurityLevel(final String value) { + this.value = value; + } + + /** + * Get the string value from the StrengthOfFunction. + * + * @return the string containing the value. + */ + public String getValue() { + return this.value; + } + } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformConfiguration.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformConfiguration.java index 9f5e63d9..9680dc92 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformConfiguration.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformConfiguration.java @@ -15,10 +15,12 @@ import java.util.List; @AllArgsConstructor public abstract class PlatformConfiguration { private ArrayList componentIdentifier = new ArrayList<>(); - @Getter @Setter + @Getter + @Setter private URIReference componentIdentifierUri; private ArrayList platformProperties = new ArrayList<>(); - @Getter @Setter + @Getter + @Setter private URIReference platformPropertiesUri; /** @@ -34,10 +36,10 @@ public abstract class PlatformConfiguration { /** * Constructor given the Platform Configuration values. * - * @param componentIdentifier list containing all the components inside the - * Platform Configuration. - * @param platformProperties list containing all the properties inside the - * Platform Configuration. + * @param componentIdentifier list containing all the components inside the + * Platform Configuration. + * @param platformProperties list containing all the properties inside the + * Platform Configuration. * @param platformPropertiesUri object containing the URI Reference */ public PlatformConfiguration(final List componentIdentifier, @@ -55,8 +57,16 @@ public abstract class PlatformConfiguration { return Collections.unmodifiableList(componentIdentifier); } + /** + * @param componentIdentifier the componentIdentifier to set + */ + public void setComponentIdentifier(final List componentIdentifier) { + this.componentIdentifier = new ArrayList<>(componentIdentifier); + } + /** * Add function for the component identifier array. + * * @param componentIdentifier object to add * @return status of the add, if successful or not */ @@ -68,13 +78,6 @@ public abstract class PlatformConfiguration { return false; } - /** - * @param componentIdentifier the componentIdentifier to set - */ - public void setComponentIdentifier(final List componentIdentifier) { - this.componentIdentifier = new ArrayList<>(componentIdentifier); - } - /** * @return the platformProperties */ @@ -82,8 +85,16 @@ public abstract class PlatformConfiguration { return Collections.unmodifiableList(platformProperties); } + /** + * @param platformProperties the platformProperties to set + */ + public void setPlatformProperties(final List platformProperties) { + this.platformProperties = new ArrayList<>(platformProperties); + } + /** * Add function for the platform property array. + * * @param platformProperty property object to add * @return status of the add, if successful or not */ @@ -94,11 +105,4 @@ public abstract class PlatformConfiguration { return false; } - - /** - * @param platformProperties the platformProperties to set - */ - public void setPlatformProperties(final List platformProperties) { - this.platformProperties = new ArrayList<>(platformProperties); - } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformConfigurationV1.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformConfigurationV1.java index 57c6d793..9f8a253e 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformConfigurationV1.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformConfigurationV1.java @@ -25,6 +25,7 @@ public class PlatformConfigurationV1 extends PlatformConfiguration { /** * Constructor given the SEQUENCE that contains Platform Configuration. + * * @param sequence containing the Platform Configuration. * @throws IllegalArgumentException if there was an error on the parsing */ @@ -96,7 +97,7 @@ public class PlatformConfigurationV1 extends PlatformConfiguration { } sb.append(", platformPropertiesUri="); if (getPlatformPropertiesUri() != null) { - sb.append(getPlatformPropertiesUri().toString()); + sb.append(getPlatformPropertiesUri()); } sb.append("}"); diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformProperty.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformProperty.java index 6f7ac2b2..9d3d2d06 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformProperty.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformProperty.java @@ -8,7 +8,6 @@ import org.bouncycastle.asn1.ASN1UTF8String; import org.bouncycastle.asn1.DERUTF8String; /** - * * Basic class that handles a single property for the platform configuration. *
  * Properties ::= SEQUENCE {
@@ -22,13 +21,11 @@ import org.bouncycastle.asn1.DERUTF8String;
 @AllArgsConstructor
 public class PlatformProperty {
 
-    private static final String NOT_SPECIFIED = "Not Specified";
-
     /**
      * Number of identifiers for version 1.
      */
     protected static final int IDENTIFIER_NUMBER = 2;
-
+    private static final String NOT_SPECIFIED = "Not Specified";
     private ASN1UTF8String propertyName;
     private ASN1UTF8String propertyValue;
 
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TBBSecurityAssertion.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TBBSecurityAssertion.java
index 2b6326da..48d4195e 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TBBSecurityAssertion.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TBBSecurityAssertion.java
@@ -30,60 +30,6 @@ public class TBBSecurityAssertion {
     private static final int CCINFO = 0;
     private static final int FIPSLEVEL = 1;
     private static final int RTMTYPE = 2;
-
-    /**
-     * A type to handle the evaluation status used in the Common Criteria Measurement.
-     * Ordering of enum types is intentional and their ordinal values correspond to enum
-     * values in the TCG spec.
-     *
-     * 
-     * MeasurementRootType ::= ENUMERATED {
-     *    static (0),
-     *    dynamic (1),
-     *    nonHost (2),
-     *    hybrid (3),
-     *    physical (4),
-     *    virtual (5) }
-     * 
- */ - public enum MeasurementRootType { - /** - * Static measurement root type. - */ - STATIC("static"), - /** - * Dynamic measurement root type. - */ - DYNAMIC("dynamic"), - /** - * Non-Host measurement root type. - */ - NONHOST("nonHost"), - /** - * Hybrid measurement root type. - */ - HYBRID("hybrid"), - /** - * Physical measurement root type. - */ - PHYSICAL("physical"), - /** - * Virtual measurement root type. - */ - VIRTUAL("virtual"); - - @Getter - private final String value; - - /** - * Basic constructor. - * @param value string containing the value. - */ - MeasurementRootType(final String value) { - this.value = value; - } - } - private ASN1Integer version; private CommonCriteriaMeasures ccInfo; private FIPSLevel fipsLevel; @@ -105,6 +51,7 @@ public class TBBSecurityAssertion { /** * Constructor given the SEQUENCE that contains a TBBSecurityAssertion Object. + * * @param sequence containing the the TBB Security Assertion * @throws IllegalArgumentException if there was an error on the parsing */ @@ -260,11 +207,11 @@ public class TBBSecurityAssertion { //Optional values not null sb.append(", ccInfo="); if (ccInfo != null) { - sb.append(ccInfo.toString()); + sb.append(ccInfo); } sb.append(", fipsLevel="); if (fipsLevel != null) { - sb.append(fipsLevel.toString()); + sb.append(fipsLevel); } sb.append(", rtmType="); if (rtmType != null) { @@ -279,4 +226,58 @@ public class TBBSecurityAssertion { return sb.toString(); } + + /** + * A type to handle the evaluation status used in the Common Criteria Measurement. + * Ordering of enum types is intentional and their ordinal values correspond to enum + * values in the TCG spec. + * + *
+     * MeasurementRootType ::= ENUMERATED {
+     *    static (0),
+     *    dynamic (1),
+     *    nonHost (2),
+     *    hybrid (3),
+     *    physical (4),
+     *    virtual (5) }
+     * 
+ */ + public enum MeasurementRootType { + /** + * Static measurement root type. + */ + STATIC("static"), + /** + * Dynamic measurement root type. + */ + DYNAMIC("dynamic"), + /** + * Non-Host measurement root type. + */ + NONHOST("nonHost"), + /** + * Hybrid measurement root type. + */ + HYBRID("hybrid"), + /** + * Physical measurement root type. + */ + PHYSICAL("physical"), + /** + * Virtual measurement root type. + */ + VIRTUAL("virtual"); + + @Getter + private final String value; + + /** + * Basic constructor. + * + * @param value string containing the value. + */ + MeasurementRootType(final String value) { + this.value = value; + } + } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSecurityAssertions.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSecurityAssertions.java index 6fe9efdc..2f0e7d32 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSecurityAssertions.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSecurityAssertions.java @@ -14,19 +14,61 @@ import java.math.BigInteger; /** * A class to represent the TPM Security Assertions in an Endorsement Credential as * defined by the TCG spec for TPM 1.2. - * + *

* https://www.trustedcomputinggroup.org/wp-content/uploads/IWG-Credential_Profiles_V1_R0.pdf - * + *

* Future iterations of this code may want to reference * www.trustedcomputinggroup.org/wp-content/uploads/Credential_Profile_EK_V2.0_R14_published.pdf * for specifications for TPM 2.0 (pg. 19). */ @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) -@Getter @Setter +@Getter +@Setter @Embeddable public class TPMSecurityAssertions implements Serializable { + @Column + private BigInteger tpmSecAssertsVersion; //default v1 + @Column + private boolean fieldUpgradeable; //default false + @Column(nullable = true) + private EkGenerationType ekGenType; //optional + @Column(nullable = true) + private EkGenerationLocation ekGenerationLocation; //optional + @Column(nullable = true) + private EkGenerationLocation ekCertificateGenerationLocation; //optional + + /** + * Standard constructor that sets required fields. Use accessor methods + * to set optional fields. + * + * @param version the version of the security assertions + * @param fieldUpgradeable whether or not the security assertions are + * field upgradeable. + */ + public TPMSecurityAssertions(final BigInteger version, final boolean fieldUpgradeable) { + this.tpmSecAssertsVersion = version; + this.fieldUpgradeable = fieldUpgradeable; + } + + @Override + public String toString() { + return "TPMSecurityAssertions{" + + "version=" + tpmSecAssertsVersion + + ", fieldUpgradeable=" + fieldUpgradeable + + ", ekGenType=" + ekGenType + + ", ekGenLoc=" + ekGenerationLocation + + ", ekCertGenLoc=" + ekCertificateGenerationLocation + + '}'; + } + + // Future work (may need to create other classes): + //private CommonCriteriaMeasures commCritMeasures; //optional + //private FIPSLevel fipsLevel; //optional + //private boolean iso9000Certified; //default false + //private IA5String iso9000Uri; //optional + /** * A type to handle the different endorsement key generation types used in the TPM * Assertions field of an endorsement credential. Ordering of enum types is intentional @@ -51,7 +93,7 @@ public class TPMSecurityAssertions implements Serializable { * Generated externally and then inserted under a controlled environment during * manufacturing. Can be revoked. Enum value of 3. */ - INJECTED_REVOCABLE; + INJECTED_REVOCABLE } /** @@ -73,50 +115,6 @@ public class TPMSecurityAssertions implements Serializable { /** * Generated by the endorsement key certificate signer. Enum value of 2. */ - EK_CERT_SIGNER; - } - - @Column - private BigInteger tpmSecAssertsVersion; //default v1 - - @Column - private boolean fieldUpgradeable; //default false - - @Column(nullable = true) - private EkGenerationType ekGenType; //optional - - @Column(nullable = true) - private EkGenerationLocation ekGenerationLocation; //optional - - @Column(nullable = true) - private EkGenerationLocation ekCertificateGenerationLocation; //optional - - // Future work (may need to create other classes): - //private CommonCriteriaMeasures commCritMeasures; //optional - //private FIPSLevel fipsLevel; //optional - //private boolean iso9000Certified; //default false - //private IA5String iso9000Uri; //optional - - /** - * Standard constructor that sets required fields. Use accessor methods - * to set optional fields. - * @param version the version of the security assertions - * @param fieldUpgradeable whether or not the security assertions are - * field upgradeable. - */ - public TPMSecurityAssertions(final BigInteger version, final boolean fieldUpgradeable) { - this.tpmSecAssertsVersion = version; - this.fieldUpgradeable = fieldUpgradeable; - } - - @Override - public String toString() { - return "TPMSecurityAssertions{" - + "version=" + tpmSecAssertsVersion - + ", fieldUpgradeable=" + fieldUpgradeable - + ", ekGenType=" + ekGenType - + ", ekGenLoc=" + ekGenerationLocation - + ", ekCertGenLoc=" + ekCertificateGenerationLocation - + '}'; + EK_CERT_SIGNER } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSpecification.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSpecification.java index 36b429d0..91768a6a 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSpecification.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSpecification.java @@ -13,15 +13,15 @@ import java.math.BigInteger; /** * A class to represent the TPM Specification in an Endorsement Credential as * defined by the TCG spec for TPM 1.2. - * + *

* https://www.trustedcomputinggroup.org/wp-content/uploads/IWG-Credential_Profiles_V1_R0.pdf - * + *

* Future iterations of this code may want to reference * www.trustedcomputinggroup.org/wp-content/uploads/Credential_Profile_EK_V2.0_R14_published.pdf * for specifications for TPM 2.0. */ @EqualsAndHashCode -@NoArgsConstructor(access= AccessLevel.PROTECTED) +@NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter @Embeddable public class TPMSpecification implements Serializable { @@ -37,8 +37,9 @@ public class TPMSpecification implements Serializable { /** * Standard constructor. - * @param family the specification family. - * @param level the specification level. + * + * @param family the specification family. + * @param level the specification level. * @param revision the specification revision. */ public TPMSpecification(final String family, final BigInteger level, diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/URIReference.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/URIReference.java index 622cc058..4b8915d2 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/URIReference.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/URIReference.java @@ -10,27 +10,26 @@ import org.bouncycastle.asn1.ASN1Sequence; import org.bouncycastle.asn1.x509.AlgorithmIdentifier; /** - * * Basic class that handle a URIReference object. *

  * URIReference ::= SEQUENCE {
  *      uniformResourceIdentifier IA5String (SIZE (1..URIMAX)),
  *      hashAlgorithm AlgorithmIdentifier OPTIONAL,
  *      hashValue BIT STRING OPTIONAL
- }
+ * }
  * 
*/ -@Getter @Setter +@Getter +@Setter @AllArgsConstructor public class URIReference { + private static final int PLATFORM_PROPERTIES_URI_MAX = 3; + private static final int PLATFORM_PROPERTIES_URI_MIN = 1; private ASN1IA5String uniformResourceIdentifier; private AlgorithmIdentifier hashAlgorithm; @JsonIgnore private ASN1BitString hashValue; - private static final int PLATFORM_PROPERTIES_URI_MAX = 3; - private static final int PLATFORM_PROPERTIES_URI_MIN = 1; - /** * Default constructor. */ diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/CertificateIdentifier.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/CertificateIdentifier.java index 767bd045..2512d498 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/CertificateIdentifier.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/CertificateIdentifier.java @@ -51,6 +51,7 @@ public class CertificateIdentifier { /** * Primary constructor for the parsing of the sequence. + * * @param sequence containing the name and value of the Certificate Identifier */ public CertificateIdentifier(final ASN1Sequence sequence) { @@ -103,6 +104,7 @@ public class CertificateIdentifier { /** * String for the internal data stored. + * * @return String representation of the data. */ @Override @@ -114,11 +116,11 @@ public class CertificateIdentifier { sb.append(", hashSigValue").append(hashSigValue); sb.append(", issuerDN="); if (issuerDN != null) { - sb.append(issuerDN.toString()); + sb.append(issuerDN); } sb.append(", certificateSerialNumber="); if (certificateSerialNumber != null) { - sb.append(certificateSerialNumber.toString()); + sb.append(certificateSerialNumber); } sb.append("}"); diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/PlatformConfigurationV2.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/PlatformConfigurationV2.java index c92019f0..638542a0 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/PlatformConfigurationV2.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/PlatformConfigurationV2.java @@ -29,6 +29,7 @@ public class PlatformConfigurationV2 extends PlatformConfiguration { /** * Constructor given the SEQUENCE that contains Platform Configuration. + * * @param sequence containing the the Platform Configuration. * @throws IllegalArgumentException if there was an error on the parsing */ @@ -99,7 +100,7 @@ public class PlatformConfigurationV2 extends PlatformConfiguration { } sb.append(", componentIdentifierUri="); if (getComponentIdentifierUri() != null) { - sb.append(getComponentIdentifierUri().toString()); + sb.append(getComponentIdentifierUri()); } sb.append(", platformProperties="); if (getPlatformProperties().size() > 0) { @@ -110,7 +111,7 @@ public class PlatformConfigurationV2 extends PlatformConfiguration { } sb.append(", platformPropertiesUri="); if (getPlatformPropertiesUri() != null) { - sb.append(getPlatformPropertiesUri().toString()); + sb.append(getPlatformPropertiesUri()); } sb.append("}"); diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/PlatformPropertyV2.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/PlatformPropertyV2.java index 47a0d0cb..cd6d3b7b 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/PlatformPropertyV2.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/PlatformPropertyV2.java @@ -8,7 +8,6 @@ import org.bouncycastle.asn1.ASN1Sequence; import org.bouncycastle.asn1.ASN1UTF8String; /** - * * Basic class that handles a single property for the platform configuration. *
  * Properties ::= SEQUENCE {
@@ -35,8 +34,8 @@ public class PlatformPropertyV2 extends PlatformProperty {
     /**
      * Constructor given the name and value for the platform property.
      *
-     * @param propertyName string containing the property name
-     * @param propertyValue string containing the property value
+     * @param propertyName    string containing the property name
+     * @param propertyValue   string containing the property value
      * @param attributeStatus enumerated object with the status of the property
      */
     public PlatformPropertyV2(final ASN1UTF8String propertyName, final ASN1UTF8String propertyValue,
@@ -91,7 +90,7 @@ public class PlatformPropertyV2 extends PlatformProperty {
         sb.append("PropertyName=").append(getPropertyName().getString());
         sb.append(", propertyValue=").append(getPropertyValue().getString());
         if (attributeStatus != null) {
-            sb.append(", attributeStatus=").append(attributeStatus.toString());
+            sb.append(", attributeStatus=").append(attributeStatus);
         }
         sb.append("}");
 
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/package-info.java
index 8a827d6d..e165d514 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/package-info.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/package-info.java
@@ -1 +1 @@
-package hirs.attestationca.persist.entity.userdefined.certificate.attributes;
\ No newline at end of file
+package hirs.attestationca.persist.entity.userdefined.certificate.attributes;
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/package-info.java
index fc0e99e0..dea4ad9b 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/package-info.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/package-info.java
@@ -1 +1 @@
-package hirs.attestationca.persist.entity.userdefined.certificate;
\ No newline at end of file
+package hirs.attestationca.persist.entity.userdefined.certificate;
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/ComponentInfo.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/ComponentInfo.java
index 1e9e9c7b..6e8901fb 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/ComponentInfo.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/ComponentInfo.java
@@ -34,6 +34,7 @@ public class ComponentInfo extends ArchivableEntity {
 
     @Column(nullable = false)
     private String deviceName;
+
     @XmlElement
     @Column(nullable = false)
     private String componentManufacturer;
@@ -56,10 +57,11 @@ public class ComponentInfo extends ArchivableEntity {
 
     /**
      * Base constructor for children.
+     *
      * @param componentManufacturer Component Manufacturer (must not be null)
-     * @param componentModel Component Model (must not be null)
-     * @param componentSerial Component Serial Number (can be null)
-     * @param componentRevision Component Revision or Version (can be null)
+     * @param componentModel        Component Model (must not be null)
+     * @param componentSerial       Component Serial Number (can be null)
+     * @param componentRevision     Component Revision or Version (can be null)
      */
     public ComponentInfo(final String componentManufacturer,
                          final String componentModel,
@@ -68,13 +70,15 @@ public class ComponentInfo extends ArchivableEntity {
         this(DeviceInfoEnums.NOT_SPECIFIED, componentManufacturer, componentModel,
                 componentSerial, componentRevision);
     }
+
     /**
      * Constructor.
-     * @param deviceName the host machine associated with this component. (must not be null)
+     *
+     * @param deviceName            the host machine associated with this component. (must not be null)
      * @param componentManufacturer Component Manufacturer (must not be null)
-     * @param componentModel Component Model (must not be null)
-     * @param componentSerial Component Serial Number (can be null)
-     * @param componentRevision Component Revision or Version (can be null)
+     * @param componentModel        Component Model (must not be null)
+     * @param componentSerial       Component Serial Number (can be null)
+     * @param componentRevision     Component Revision or Version (can be null)
      */
     public ComponentInfo(final String deviceName,
                          final String componentManufacturer,
@@ -108,12 +112,13 @@ public class ComponentInfo extends ArchivableEntity {
 
     /**
      * Constructor.
-     * @param deviceName the host machine associated with this component.
+     *
+     * @param deviceName            the host machine associated with this component.
      * @param componentManufacturer Component Manufacturer (must not be null)
-     * @param componentModel Component Model (must not be null)
-     * @param componentSerial Component Serial Number (can be null)
-     * @param componentRevision Component Revision or Version (can be null)
-     * @param componentClass Component Class (can be null)
+     * @param componentModel        Component Model (must not be null)
+     * @param componentSerial       Component Serial Number (can be null)
+     * @param componentRevision     Component Revision or Version (can be null)
+     * @param componentClass        Component Class (can be null)
      */
     public ComponentInfo(final String deviceName,
                          final String componentManufacturer,
@@ -134,9 +139,9 @@ public class ComponentInfo extends ArchivableEntity {
      * manufacturer and model are considered valid.
      *
      * @param componentManufacturer a String containing a component's manufacturer
-     * @param componentModel a String representing a component's model
-     * @param componentSerial a String representing a component's serial number
-     * @param componentRevision a String representing a component's revision
+     * @param componentModel        a String representing a component's model
+     * @param componentSerial       a String representing a component's serial number
+     * @param componentRevision     a String representing a component's revision
      * @return true if the component is valid, false if not
      */
     public static boolean isComplete(final String componentManufacturer,
@@ -149,13 +154,18 @@ public class ComponentInfo extends ArchivableEntity {
 
     /**
      * Equals for the component info that just uses this classes attributes.
+     *
      * @param object the object to compare
      * @return the boolean result
      */
     @Override
     public boolean equals(Object object) {
-        if (this == object) return true;
-        if (object == null || getClass() != object.getClass()) return false;
+        if (this == object) {
+            return true;
+        }
+        if (object == null || getClass() != object.getClass()) {
+            return false;
+        }
 
         ComponentInfo that = (ComponentInfo) object;
         return Objects.equals(deviceName, that.deviceName)
@@ -169,6 +179,7 @@ public class ComponentInfo extends ArchivableEntity {
 
     /**
      * Returns a hash code that is associated with common fields for components.
+     *
      * @return int value of the elements
      */
     public int hashCommonElements() {
@@ -178,6 +189,7 @@ public class ComponentInfo extends ArchivableEntity {
 
     /**
      * Hash method for the attributes of this class.
+     *
      * @return int value that represents this class
      */
     @Override
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/FirmwareInfo.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/FirmwareInfo.java
index 333379cb..8921c108 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/FirmwareInfo.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/FirmwareInfo.java
@@ -33,8 +33,8 @@ public class FirmwareInfo implements Serializable {
     /**
      * Constructor used to create a populated firmware info object.
      *
-     * @param biosVendor String bios vendor name, i.e. Dell Inc.
-     * @param biosVersion String bios version info, i.e. A11
+     * @param biosVendor      String bios vendor name, i.e. Dell Inc.
+     * @param biosVersion     String bios version info, i.e. A11
      * @param biosReleaseDate String bios release date info, i.e. 03/12/2013
      */
     public FirmwareInfo(final String biosVendor, final String biosVersion,
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/HardwareInfo.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/HardwareInfo.java
index 24d9539e..35a9bd7f 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/HardwareInfo.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/HardwareInfo.java
@@ -48,11 +48,11 @@ public class HardwareInfo implements Serializable {
     /**
      * Constructor used to create a populated firmware info object.
      *
-     * @param manufacturer String manufacturer name
-     * @param productName String product name info
-     * @param version String bios release date info
-     * @param systemSerialNumber String device serial number
-     * @param chassisSerialNumber String device chassis serial number
+     * @param manufacturer          String manufacturer name
+     * @param productName           String product name info
+     * @param version               String bios release date info
+     * @param systemSerialNumber    String device serial number
+     * @param chassisSerialNumber   String device chassis serial number
      * @param baseboardSerialNumber String device baseboard serial number
      */
     public HardwareInfo(
@@ -80,19 +80,19 @@ public class HardwareInfo implements Serializable {
 
         if (!StringUtils.isBlank(systemSerialNumber)) {
             this.systemSerialNumber = StringValidator.check(systemSerialNumber,
-                    "systemSerialNumber")
+                            "systemSerialNumber")
                     .maxLength(DeviceInfoEnums.LONG_STRING_LENGTH).getValue();
         }
 
         if (!StringUtils.isBlank(chassisSerialNumber)) {
             this.chassisSerialNumber = StringValidator.check(chassisSerialNumber,
-                    "chassisSerialNumber")
+                            "chassisSerialNumber")
                     .maxLength(DeviceInfoEnums.LONG_STRING_LENGTH).getValue();
         }
 
         if (!StringUtils.isBlank(baseboardSerialNumber)) {
             this.baseboardSerialNumber = StringValidator.check(
-                    baseboardSerialNumber, "baseboardSerialNumber")
+                            baseboardSerialNumber, "baseboardSerialNumber")
                     .maxLength(DeviceInfoEnums.LONG_STRING_LENGTH).getValue();
         }
     }
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/NetworkInfo.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/NetworkInfo.java
index 2df866a7..73ec8d80 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/NetworkInfo.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/NetworkInfo.java
@@ -10,47 +10,42 @@ import lombok.extern.log4j.Log4j2;
 
 import java.io.Serializable;
 import java.net.InetAddress;
-import java.util.Arrays;
-import java.util.Objects;
 
 /**
  * This class is used to represent the network info of a device.
  */
 @Log4j2
 @Embeddable
+@EqualsAndHashCode
 public class NetworkInfo implements Serializable {
 
     private static final int NUM_MAC_ADDRESS_BYTES = 6;
 
     @XmlElement
     @Getter
-    @Column(length = DeviceInfoEnums.LONG_STRING_LENGTH, nullable = true)
+    @Column(length = DeviceInfoEnums.LONG_STRING_LENGTH)
     private String hostname;
 
     @XmlElement
     @Getter
 //    @XmlJavaTypeAdapter(value = InetAddressXmlAdapter.class)
-    @Column(length = DeviceInfoEnums.SHORT_STRING_LENGTH, nullable = true)
+    @Column(length = DeviceInfoEnums.SHORT_STRING_LENGTH)
 //    @JsonSubTypes.Type(type = "hirs.data.persist.type.InetAddressType")
     private InetAddress ipAddress;
 
     @XmlElement
-    @Column(length = NUM_MAC_ADDRESS_BYTES, nullable = true)
-    @SuppressWarnings("checkstyle:magicnumber")
+    @Column(length = NUM_MAC_ADDRESS_BYTES)
     private byte[] macAddress;
 
     /**
      * Constructor used to create a NetworkInfo object.
      *
-     * @param hostname
-     *            String representing the hostname information for the device,
-     *            can be null if hostname unknown
-     * @param ipAddress
-     *            InetAddress object representing the IP address for the device,
-     *            can be null if IP address unknown
-     * @param macAddress
-     *            byte array representing the MAC address for the device, can be
-     *            null if MAC address is unknown
+     * @param hostname   String representing the hostname information for the device,
+     *                   can be null if hostname unknown
+     * @param ipAddress  InetAddress object representing the IP address for the device,
+     *                   can be null if IP address unknown
+     * @param macAddress byte array representing the MAC address for the device, can be
+     *                   null if MAC address is unknown
      */
     public NetworkInfo(final String hostname, final InetAddress ipAddress,
                        final byte[] macAddress) {
@@ -72,7 +67,7 @@ public class NetworkInfo implements Serializable {
      * Used to retrieve the MAC address of the device.
      *
      * @return a String representing the MAC address, may return null if no
-     *         value is set
+     * value is set
      */
     public final byte[] getMacAddress() {
         if (macAddress == null) {
@@ -82,16 +77,6 @@ public class NetworkInfo implements Serializable {
         }
     }
 
-    private void setHostname(final String hostname) {
-        log.debug("setting hostname to: {}", hostname);
-        this.hostname = hostname;
-    }
-
-    private void setIpAddress(final InetAddress ipAddress) {
-        log.debug("setting IP address to: {}", ipAddress);
-        this.ipAddress = ipAddress;
-    }
-
     private void setMacAddress(final byte[] macAddress) {
         StringBuilder sb;
         if (macAddress == null) {
@@ -114,22 +99,13 @@ public class NetworkInfo implements Serializable {
         this.macAddress = macAddress;
     }
 
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof NetworkInfo)) {
-            return false;
-        }
-        NetworkInfo that = (NetworkInfo) o;
-        return Objects.equals(hostname, that.hostname)
-                && Objects.equals(ipAddress, that.ipAddress)
-                && Arrays.equals(macAddress, that.macAddress);
+    private void setHostname(final String hostname) {
+        log.debug("setting hostname to: {}", hostname);
+        this.hostname = hostname;
     }
 
-    @Override
-    public int hashCode() {
-        int result = Objects.hash(hostname, ipAddress);
-        result = 31 * result + Arrays.hashCode(macAddress);
-        return result;
+    private void setIpAddress(final InetAddress ipAddress) {
+        log.debug("setting IP address to: {}", ipAddress);
+        this.ipAddress = ipAddress;
     }
 }
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/OSInfo.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/OSInfo.java
index add66ae3..285682df 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/OSInfo.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/OSInfo.java
@@ -47,16 +47,11 @@ public class OSInfo implements Serializable {
      * Fedora), and distribution release (7.0.1406). Distribution only makes
      * sense for Linux, so distribution and distributionRelease may be null.
      *
-     * @param osName
-     *            String OS name (Linux | Mac OS X | Windows 7)
-     * @param osVersion
-     *            String OS version (i.e. 3.10.0-123.el7.x86_64)
-     * @param osArch
-     *            String OS architecture (x86_64)
-     * @param distribution
-     *            String distribution (CentOS | Fedora)
-     * @param distributionRelease
-     *            String distribution release (7.0.1406)
+     * @param osName              String OS name (Linux | Mac OS X | Windows 7)
+     * @param osVersion           String OS version (i.e. 3.10.0-123.el7.x86_64)
+     * @param osArch              String OS architecture (x86_64)
+     * @param distribution        String distribution (CentOS | Fedora)
+     * @param distributionRelease String distribution release (7.0.1406)
      */
     public OSInfo(final String osName, final String osVersion,
                   final String osArch, final String distribution,
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/RIMInfo.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/RIMInfo.java
index 70bb63a1..48c301cd 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/RIMInfo.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/RIMInfo.java
@@ -38,10 +38,11 @@ public class RIMInfo implements Serializable {
 
     /**
      * Constructor for the initial values of the class.
+     *
      * @param rimManufacturer string of the rimManufacturer
-     * @param model string of the model
-     * @param fileHash string of the file hash
-     * @param pcrHash string of the pcr hash
+     * @param model           string of the model
+     * @param fileHash        string of the file hash
+     * @param pcrHash         string of the pcr hash
      */
     public RIMInfo(final String rimManufacturer, final String model,
                    final String fileHash, final String pcrHash) {
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/TPMInfo.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/TPMInfo.java
index 9dbf4757..42c07892 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/TPMInfo.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/TPMInfo.java
@@ -68,25 +68,16 @@ public class TPMInfo implements Serializable {
     /**
      * Constructor used to create a TPMInfo object.
      *
-     * @param tpmMake
-     *            String representing the make information for the TPM,
-     *            NullPointerException thrown if null
-     * @param tpmVersionMajor
-     *            short representing the major version number for the TPM
-     * @param tpmVersionMinor
-     *            short representing the minor version number for the TPM
-     * @param tpmVersionRevMajor
-     *            short representing the major revision number for the TPM
-     * @param tpmVersionRevMinor
-     *            short representing the minor revision number for the TPM
-     * @param identityCertificate
-     *            byte array with the value of the identity certificate
-     * @param pcrValues
-     *            short representing the major revision number for the TPM
-     * @param tpmQuoteHash
-     *            short representing the minor revision number for the TPM
-     * @param tpmQuoteSignature
-     *            byte array with the value of the identity certificate
+     * @param tpmMake             String representing the make information for the TPM,
+     *                            NullPointerException thrown if null
+     * @param tpmVersionMajor     short representing the major version number for the TPM
+     * @param tpmVersionMinor     short representing the minor version number for the TPM
+     * @param tpmVersionRevMajor  short representing the major revision number for the TPM
+     * @param tpmVersionRevMinor  short representing the minor revision number for the TPM
+     * @param identityCertificate byte array with the value of the identity certificate
+     * @param pcrValues           short representing the major revision number for the TPM
+     * @param tpmQuoteHash        short representing the minor revision number for the TPM
+     * @param tpmQuoteSignature   byte array with the value of the identity certificate
      */
     @SuppressWarnings("parameternumber")
     public TPMInfo(final String tpmMake, final short tpmVersionMajor,
@@ -109,23 +100,15 @@ public class TPMInfo implements Serializable {
      * Constructor used to create a TPMInfo object without an identity
      * certificate.
      *
-     * @param tpmMake
-     *            String representing the make information for the TPM,
-     *            NullPointerException thrown if null
-     * @param tpmVersionMajor
-     *            short representing the major version number for the TPM
-     * @param tpmVersionMinor
-     *            short representing the minor version number for the TPM
-     * @param tpmVersionRevMajor
-     *            short representing the major revision number for the TPM
-     * @param tpmVersionRevMinor
-     *            short representing the minor revision number for the TPM
-     * @param pcrValues
-     *            short representing the major revision number for the TPM
-     * @param tpmQuoteHash
-     *            short representing the minor revision number for the TPM
-     * @param tpmQuoteSignature
-     *            byte array with the value of the identity certificate
+     * @param tpmMake            String representing the make information for the TPM,
+     *                           NullPointerException thrown if null
+     * @param tpmVersionMajor    short representing the major version number for the TPM
+     * @param tpmVersionMinor    short representing the minor version number for the TPM
+     * @param tpmVersionRevMajor short representing the major revision number for the TPM
+     * @param tpmVersionRevMinor short representing the minor revision number for the TPM
+     * @param pcrValues          short representing the major revision number for the TPM
+     * @param tpmQuoteHash       short representing the minor revision number for the TPM
+     * @param tpmQuoteSignature  byte array with the value of the identity certificate
      */
     @SuppressWarnings("parameternumber")
     public TPMInfo(final String tpmMake, final short tpmVersionMajor,
@@ -146,17 +129,12 @@ public class TPMInfo implements Serializable {
      * Constructor used to create a TPMInfo object without an identity
      * certificate.
      *
-     * @param tpmMake
-     *            String representing the make information for the TPM,
-     *            NullPointerException thrown if null
-     * @param tpmVersionMajor
-     *            short representing the major version number for the TPM
-     * @param tpmVersionMinor
-     *            short representing the minor version number for the TPM
-     * @param tpmVersionRevMajor
-     *            short representing the major revision number for the TPM
-     * @param tpmVersionRevMinor
-     *            short representing the minor revision number for the TPM
+     * @param tpmMake            String representing the make information for the TPM,
+     *                           NullPointerException thrown if null
+     * @param tpmVersionMajor    short representing the major version number for the TPM
+     * @param tpmVersionMinor    short representing the minor version number for the TPM
+     * @param tpmVersionRevMajor short representing the major revision number for the TPM
+     * @param tpmVersionRevMinor short representing the minor revision number for the TPM
      */
     public TPMInfo(final String tpmMake, final short tpmVersionMajor,
                    final short tpmVersionMinor, final short tpmVersionRevMajor,
@@ -170,19 +148,13 @@ public class TPMInfo implements Serializable {
      * Constructor used to create a TPMInfo object without an identity
      * certificate.
      *
-     * @param tpmMake
-     *            String representing the make information for the TPM,
-     *            NullPointerException thrown if null
-     * @param tpmVersionMajor
-     *            short representing the major version number for the TPM
-     * @param tpmVersionMinor
-     *            short representing the minor version number for the TPM
-     * @param tpmVersionRevMajor
-     *            short representing the major revision number for the TPM
-     * @param tpmVersionRevMinor
-     *            short representing the minor revision number for the TPM
-     * @param identityCertificate
-     *            byte array with the value of the identity certificate
+     * @param tpmMake             String representing the make information for the TPM,
+     *                            NullPointerException thrown if null
+     * @param tpmVersionMajor     short representing the major version number for the TPM
+     * @param tpmVersionMinor     short representing the minor version number for the TPM
+     * @param tpmVersionRevMajor  short representing the major revision number for the TPM
+     * @param tpmVersionRevMinor  short representing the minor revision number for the TPM
+     * @param identityCertificate byte array with the value of the identity certificate
      */
     public TPMInfo(final String tpmMake, final short tpmVersionMajor,
                    final short tpmVersionMinor, final short tpmVersionRevMajor,
@@ -217,30 +189,67 @@ public class TPMInfo implements Serializable {
         return identityCertificate;
     }
 
+    private void setIdentityCertificate(
+            final X509Certificate identityCertificate) {
+        if (identityCertificate == null) {
+            log.error("identity certificate cannot be null");
+            throw new NullPointerException("identityCertificate");
+        }
+        log.debug("setting identity certificate");
+        this.identityCertificate = identityCertificate;
+    }
+
     /**
      * Getter for the tpmQuote passed up by the client.
+     *
      * @return a byte blob of quote
      */
     public final byte[] getTpmQuoteHash() {
         return tpmQuoteHash.clone();
     }
 
+    private void setTpmQuoteHash(final byte[] tpmQuoteHash) {
+        if (tpmQuoteHash == null) {
+            this.tpmQuoteHash = new byte[0];
+        } else {
+            this.tpmQuoteHash = tpmQuoteHash.clone();
+        }
+    }
+
     /**
      * Getter for the quote signature.
+     *
      * @return a byte blob.
      */
     public final byte[] getTpmQuoteSignature() {
         return tpmQuoteSignature.clone();
     }
 
+    private void setTpmQuoteSignature(final byte[] tpmQuoteSignature) {
+        if (tpmQuoteSignature == null) {
+            this.tpmQuoteSignature = new byte[0];
+        } else {
+            this.tpmQuoteSignature = tpmQuoteSignature.clone();
+        }
+    }
+
     /**
      * Getter for the pcr values.
+     *
      * @return a byte blob for the pcrValues.
      */
     public final byte[] getPcrValues() {
         return pcrValues.clone();
     }
 
+    private void setPcrValues(final byte[] pcrValues) {
+        if (pcrValues == null) {
+            this.pcrValues = new byte[0];
+        } else {
+            this.pcrValues = pcrValues.clone();
+        }
+    }
+
     private void setTPMMake(final String tpmMake) {
         log.debug("setting TPM make info: {}", tpmMake);
         this.tpmMake = StringValidator.check(tpmMake, "tpmMake")
@@ -292,38 +301,4 @@ public class TPMInfo implements Serializable {
                 tpmVersionRevMinor);
         this.tpmVersionRevMinor = tpmVersionRevMinor;
     }
-
-    private void setIdentityCertificate(
-            final X509Certificate identityCertificate) {
-        if (identityCertificate == null) {
-            log.error("identity certificate cannot be null");
-            throw new NullPointerException("identityCertificate");
-        }
-        log.debug("setting identity certificate");
-        this.identityCertificate = identityCertificate;
-    }
-
-    private void setPcrValues(final byte[] pcrValues) {
-        if (pcrValues == null) {
-            this.pcrValues = new byte[0];
-        } else {
-            this.pcrValues = pcrValues.clone();
-        }
-    }
-
-    private void setTpmQuoteHash(final byte[] tpmQuoteHash) {
-        if (tpmQuoteHash == null) {
-            this.tpmQuoteHash = new byte[0];
-        } else {
-            this.tpmQuoteHash = tpmQuoteHash.clone();
-        }
-    }
-
-    private void setTpmQuoteSignature(final byte[] tpmQuoteSignature) {
-        if (tpmQuoteSignature == null) {
-            this.tpmQuoteSignature = new byte[0];
-        } else {
-            this.tpmQuoteSignature = tpmQuoteSignature.clone();
-        }
-    }
 }
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/component/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/component/package-info.java
new file mode 100644
index 00000000..a7f24171
--- /dev/null
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/component/package-info.java
@@ -0,0 +1 @@
+package hirs.attestationca.persist.entity.userdefined.info.component;
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/package-info.java
new file mode 100644
index 00000000..3e4d9b76
--- /dev/null
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/package-info.java
@@ -0,0 +1 @@
+package hirs.attestationca.persist.entity.userdefined.info;
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/package-info.java
index fd20b8af..0962e038 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/package-info.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/package-info.java
@@ -1 +1 @@
-package hirs.attestationca.persist.entity.userdefined;
\ No newline at end of file
+package hirs.attestationca.persist.entity.userdefined;
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/record/TPMMeasurementRecord.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/record/TPMMeasurementRecord.java
index 7507b8c6..c74d93a8 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/record/TPMMeasurementRecord.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/record/TPMMeasurementRecord.java
@@ -63,9 +63,8 @@ public final class TPMMeasurementRecord extends ExaminableRecord {
      * Constructor initializes values associated with TPMMeasurementRecord.
      *
      * @param pcrId is the TPM PCR index. pcrId must be between 0 and 23.
-     * @param hash
-     *            represents the measurement digest found at the particular PCR
-     *            index.
+     * @param hash  represents the measurement digest found at the particular PCR
+     *              index.
      * @throws IllegalArgumentException if pcrId is not valid
      */
     public TPMMeasurementRecord(final int pcrId, final Digest hash)
@@ -85,8 +84,8 @@ public final class TPMMeasurementRecord extends ExaminableRecord {
      * Constructor initializes values associated with TPMMeasurementRecord.
      *
      * @param pcrId is the TPM PCR index. pcrId must be between 0 and 23.
-     * @param hash represents the measurement digest found at the particular PCR
-     *            index.
+     * @param hash  represents the measurement digest found at the particular PCR
+     *              index.
      * @throws DecoderException if there is a decode issue with string hex.
      */
     public TPMMeasurementRecord(final int pcrId, final String hash)
@@ -98,18 +97,26 @@ public final class TPMMeasurementRecord extends ExaminableRecord {
      * Constructor initializes values associated with TPMMeasurementRecord.
      *
      * @param pcrId is the TPM PCR index. pcrId must be between 0 and 23.
-     * @param hash represents the measurement digest found at the particular PCR
-     *            index.
+     * @param hash  represents the measurement digest found at the particular PCR
+     *              index.
      */
     public TPMMeasurementRecord(final int pcrId, final byte[] hash) {
         this(pcrId, new Digest(hash));
     }
 
+    /**
+     * Default constructor necessary for Hibernate.
+     */
+    private TPMMeasurementRecord() {
+        super();
+        this.pcrId = -1;
+        this.hash = null;
+    }
+
     /**
      * Helper method to determine if a PCR ID number is valid.
      *
-     * @param pcrId
-     *            int to check
+     * @param pcrId int to check
      */
     public static void checkForValidPcrId(final int pcrId) {
         if (pcrId < MIN_PCR_ID || pcrId > MAX_PCR_ID) {
@@ -118,13 +125,4 @@ public final class TPMMeasurementRecord extends ExaminableRecord {
             throw new IllegalArgumentException(msg);
         }
     }
-
-    /**
-     * Default constructor necessary for Hibernate.
-     */
-    protected TPMMeasurementRecord() {
-        super();
-        this.pcrId = -1;
-        this.hash = null;
-    }
 }
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/report/DeviceInfoReport.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/report/DeviceInfoReport.java
index 04102611..74bbdec8 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/report/DeviceInfoReport.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/report/DeviceInfoReport.java
@@ -67,17 +67,12 @@ public class DeviceInfoReport extends AbstractEntity implements Serializable {
      * information cannot be changed after the DeviceInfoReport is
      * created.
      *
-     * @param networkInfo
-     *            NetworkInfo object, cannot be null
-     * @param osInfo
-     *            OSInfo object, cannot be null
-     * @param firmwareInfo
-     *            FirmwareInfo object, cannot be null
-     * @param hardwareInfo
-     *            HardwareInfo object, cannot be null
-     * @param tpmInfo
-     *            TPMInfo object, may be null if a TPM is not available on the
-     *            device
+     * @param networkInfo  NetworkInfo object, cannot be null
+     * @param osInfo       OSInfo object, cannot be null
+     * @param firmwareInfo FirmwareInfo object, cannot be null
+     * @param hardwareInfo HardwareInfo object, cannot be null
+     * @param tpmInfo      TPMInfo object, may be null if a TPM is not available on the
+     *                     device
      */
     public DeviceInfoReport(final NetworkInfo networkInfo, final OSInfo osInfo,
                             final FirmwareInfo firmwareInfo, final HardwareInfo hardwareInfo,
@@ -90,20 +85,14 @@ public class DeviceInfoReport extends AbstractEntity implements Serializable {
      * information cannot be changed after the DeviceInfoReport is
      * created.
      *
-     * @param networkInfo
-     *            NetworkInfo object, cannot be null
-     * @param osInfo
-     *            OSInfo object, cannot be null
-     * @param firmwareInfo
-     *            FirmwareInfo object, cannot be null
-     * @param hardwareInfo
-     *            HardwareInfo object, cannot be null
-     * @param tpmInfo
-     *            TPMInfo object, may be null if a TPM is not available on the
-     *            device
-     * @param clientApplicationVersion
-     *            string representing the version of the client that submitted this report,
-     *            cannot be null
+     * @param networkInfo              NetworkInfo object, cannot be null
+     * @param osInfo                   OSInfo object, cannot be null
+     * @param firmwareInfo             FirmwareInfo object, cannot be null
+     * @param hardwareInfo             HardwareInfo object, cannot be null
+     * @param tpmInfo                  TPMInfo object, may be null if a TPM is not available on the
+     *                                 device
+     * @param clientApplicationVersion string representing the version of the client that submitted this report,
+     *                                 cannot be null
      */
     public DeviceInfoReport(final NetworkInfo networkInfo, final OSInfo osInfo,
                             final FirmwareInfo firmwareInfo, final HardwareInfo hardwareInfo,
@@ -135,6 +124,14 @@ public class DeviceInfoReport extends AbstractEntity implements Serializable {
                 networkInfo.getIpAddress(), networkInfo.getMacAddress());
     }
 
+    private void setNetworkInfo(final NetworkInfo networkInfo) {
+        if (networkInfo == null) {
+            log.error("NetworkInfo cannot be null");
+            throw new NullPointerException("network info");
+        }
+        this.networkInfo = networkInfo;
+    }
+
     /**
      * Retrieves the OSInfo for this DeviceInfoReport.
      *
@@ -154,6 +151,14 @@ public class DeviceInfoReport extends AbstractEntity implements Serializable {
         return osInfo;
     }
 
+    private void setOSInfo(final OSInfo osInfo) {
+        if (osInfo == null) {
+            log.error("OSInfo cannot be null");
+            throw new NullPointerException("os info");
+        }
+        this.osInfo = osInfo;
+    }
+
     /**
      * Retrieves the FirmwareInfo for this DeviceInfoReport.
      *
@@ -172,6 +177,14 @@ public class DeviceInfoReport extends AbstractEntity implements Serializable {
         return firmwareInfo;
     }
 
+    private void setFirmwareInfo(final FirmwareInfo firmwareInfo) {
+        if (firmwareInfo == null) {
+            log.error("FirmwareInfo cannot be null");
+            throw new NullPointerException("firmware info");
+        }
+        this.firmwareInfo = firmwareInfo;
+    }
+
     /**
      * Retrieves the OSInfo for this DeviceInfoReport.
      *
@@ -196,30 +209,6 @@ public class DeviceInfoReport extends AbstractEntity implements Serializable {
         return hardwareInfo;
     }
 
-    private void setNetworkInfo(final NetworkInfo networkInfo) {
-        if (networkInfo == null) {
-            log.error("NetworkInfo cannot be null");
-            throw new NullPointerException("network info");
-        }
-        this.networkInfo = networkInfo;
-    }
-
-    private void setOSInfo(final OSInfo osInfo) {
-        if (osInfo == null) {
-            log.error("OSInfo cannot be null");
-            throw new NullPointerException("os info");
-        }
-        this.osInfo = osInfo;
-    }
-
-    private void setFirmwareInfo(final FirmwareInfo firmwareInfo) {
-        if (firmwareInfo == null) {
-            log.error("FirmwareInfo cannot be null");
-            throw new NullPointerException("firmware info");
-        }
-        this.firmwareInfo = firmwareInfo;
-    }
-
     private void setHardwareInfo(final HardwareInfo hardwareInfo) {
         if (hardwareInfo == null) {
             log.error("HardwareInfo cannot be null");
@@ -234,11 +223,12 @@ public class DeviceInfoReport extends AbstractEntity implements Serializable {
 
     @Override
     public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof DeviceInfoReport)) {
+        if (this == o) {
+            return true;
+        }
+        if (!(o instanceof DeviceInfoReport that)) {
             return false;
         }
-        DeviceInfoReport that = (DeviceInfoReport) o;
         return Objects.equals(networkInfo, that.networkInfo)
                 && Objects.equals(osInfo, that.osInfo)
                 && Objects.equals(firmwareInfo, that.firmwareInfo)
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/result/CertificateValidationResult.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/result/CertificateValidationResult.java
index 39d75739..a48573f3 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/result/CertificateValidationResult.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/result/CertificateValidationResult.java
@@ -6,11 +6,27 @@ import lombok.Setter;
 /**
  * An CertificateValidationResult represents the result of a certificate validation
  * operation.
- *
  */
 @Getter
 @Setter
 public class CertificateValidationResult {
+    private CertificateValidationStatus validationStatus;
+    private String validationResultMessage;
+
+    /**
+     * Sets the certificate validation status and result message.
+     *
+     * @param status        enum representing the certificate validation status
+     * @param resultMessage String representing certificate validation message
+     */
+    public final void setCertValidationStatusAndResultMessage(
+            final CertificateValidationStatus status,
+            final String resultMessage) {
+        this.validationStatus = status;
+        this.validationResultMessage = resultMessage;
+    }
+
+
     /**
      * Enum used to represent certificate validation status.
      */
@@ -31,21 +47,4 @@ public class CertificateValidationResult {
          */
         ERROR
     }
-
-    private CertificateValidationStatus validationStatus;
-    private String validationResultMessage;
-
-
-    /**
-     * Sets the certificate validation status and result message.
-     *
-     * @param status        enum representing the certificate validation status
-     * @param resultMessage String representing certificate validation message
-     */
-    public final void setCertValidationStatusAndResultMessage(
-            final CertificateValidationStatus status,
-            final String resultMessage) {
-        this.validationStatus = status;
-        this.validationResultMessage = resultMessage;
-    }
 }
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/BaseReferenceManifest.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/BaseReferenceManifest.java
index bf16cfd3..95e8e714 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/BaseReferenceManifest.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/BaseReferenceManifest.java
@@ -127,9 +127,11 @@ public class BaseReferenceManifest extends ReferenceManifest {
                     SwidTagConstants.SWIDTAG_NAMESPACE, SwidTagConstants.META).item(0);
             setTagId(softwareIdentity.getAttribute(SwidTagConstants.TAGID));
             this.swidName = softwareIdentity.getAttribute(SwidTagConstants.NAME);
-            this.swidCorpus = Boolean.parseBoolean(softwareIdentity.getAttribute(SwidTagConstants.CORPUS)) ? 1 : 0;
+            this.swidCorpus =
+                    Boolean.parseBoolean(softwareIdentity.getAttribute(SwidTagConstants.CORPUS)) ? 1 : 0;
             this.setSwidPatch(Boolean.parseBoolean(softwareIdentity.getAttribute(SwidTagConstants.PATCH)));
-            this.setSwidSupplemental(Boolean.parseBoolean(softwareIdentity.getAttribute(SwidTagConstants.SUPPLEMENTAL)));
+            this.setSwidSupplemental(
+                    Boolean.parseBoolean(softwareIdentity.getAttribute(SwidTagConstants.SUPPLEMENTAL)));
             this.setSwidVersion(softwareIdentity.getAttribute(SwidTagConstants.VERSION));
             this.setSwidTagVersion(softwareIdentity.getAttribute(SwidTagConstants.TAGVERSION));
 
@@ -154,8 +156,10 @@ public class BaseReferenceManifest extends ReferenceManifest {
             this.rimLinkHash = softwareMeta.getAttribute(SwidTagConstants._RIM_LINK_HASH_STR);
             this.bindingSpec = softwareMeta.getAttribute(SwidTagConstants._BINDING_SPEC_STR);
             this.bindingSpecVersion = softwareMeta.getAttribute(SwidTagConstants._BINDING_SPEC_VERSION_STR);
-            this.setPlatformManufacturerId(softwareMeta.getAttribute(SwidTagConstants._PLATFORM_MANUFACTURER_ID_STR));
-            this.setPlatformManufacturer(softwareMeta.getAttribute(SwidTagConstants._PLATFORM_MANUFACTURER_STR));
+            this.setPlatformManufacturerId(
+                    softwareMeta.getAttribute(SwidTagConstants._PLATFORM_MANUFACTURER_ID_STR));
+            this.setPlatformManufacturer(
+                    softwareMeta.getAttribute(SwidTagConstants._PLATFORM_MANUFACTURER_STR));
             this.setPlatformModel(softwareMeta.getAttribute(SwidTagConstants._PLATFORM_MODEL_STR));
             this.platformVersion = softwareMeta.getAttribute(SwidTagConstants._PLATFORM_VERSION_STR);
             this.payloadType = softwareMeta.getAttribute(SwidTagConstants._PAYLOAD_TYPE_STR);
@@ -202,7 +206,6 @@ public class BaseReferenceManifest extends ReferenceManifest {
      * This method validates the .swidtag file at the given filepath against the
      * schema. A successful validation results in the output of the tag's name
      * and tagId attributes, otherwise a generic error message is printed.
-     *
      */
     private Element getDirectoryTag(final byte[] rimBytes) {
         if (rimBytes == null || rimBytes.length == 0) {
@@ -254,7 +257,6 @@ public class BaseReferenceManifest extends ReferenceManifest {
      * This method iterates over the list of File elements under the directory.
      *
      * @param rimBytes the bytes to find the files
-     *
      */
     public List getFileResources(final byte[] rimBytes) {
         Element directoryTag = getDirectoryTag(rimBytes);
@@ -353,9 +355,15 @@ public class BaseReferenceManifest extends ReferenceManifest {
 
     @Override
     public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-        if (!super.equals(o)) return false;
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        if (!super.equals(o)) {
+            return false;
+        }
         BaseReferenceManifest that = (BaseReferenceManifest) o;
         return swidCorpus == that.swidCorpus && Objects.equals(swidName, that.swidName)
                 && Objects.equals(colloquialVersion, that.colloquialVersion)
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/EventLogMeasurements.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/EventLogMeasurements.java
index e361c5b7..a77bfe44 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/EventLogMeasurements.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/EventLogMeasurements.java
@@ -1,7 +1,6 @@
 package hirs.attestationca.persist.entity.userdefined.rim;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
-import hirs.attestationca.persist.entity.userdefined.ReferenceManifest;
 import hirs.attestationca.persist.enums.AppraisalStatus;
 import hirs.utils.tpm.eventlog.TCGEventLog;
 import hirs.utils.tpm.eventlog.TpmPcrEvent;
@@ -31,10 +30,12 @@ public class EventLogMeasurements extends SupportReferenceManifest {
 
     @Column
     @JsonIgnore
-    @Getter @Setter
+    @Getter
+    @Setter
     private int pcrHash = 0;
     @Enumerated(EnumType.STRING)
-    @Getter @Setter
+    @Getter
+    @Setter
     private AppraisalStatus.Status overallValidationResult = AppraisalStatus.Status.FAIL;
 
     /**
@@ -74,6 +75,7 @@ public class EventLogMeasurements extends SupportReferenceManifest {
     /**
      * Getter method for the expected PCR values contained within the support
      * RIM.
+     *
      * @return a string array of the pcr values.
      */
     public String[] getExpectedPCRList() {
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/ReferenceDigestValue.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/ReferenceDigestValue.java
index 101fe606..323be11f 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/ReferenceDigestValue.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/ReferenceDigestValue.java
@@ -8,7 +8,6 @@ import jakarta.persistence.Entity;
 import jakarta.persistence.Table;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
-
 import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.Setter;
@@ -25,7 +24,7 @@ import java.util.UUID;
 @Builder
 @AllArgsConstructor
 @Entity
-@EqualsAndHashCode(callSuper=false)
+@EqualsAndHashCode(callSuper = false)
 @Table(name = "ReferenceDigestValue")
 @Access(AccessType.FIELD)
 public class ReferenceDigestValue extends AbstractEntity {
@@ -88,18 +87,19 @@ public class ReferenceDigestValue extends AbstractEntity {
 
     /**
      * Default Constructor with parameters for all associated data.
-     * @param baseRimId the UUID of the associated record
-     * @param supportRimId the UUID of the associated record
-     * @param manufacturer associated creator for this information
-     * @param model the specific device type
-     * @param pcrIndex the event number
-     * @param digestValue the key digest value
+     *
+     * @param baseRimId      the UUID of the associated record
+     * @param supportRimId   the UUID of the associated record
+     * @param manufacturer   associated creator for this information
+     * @param model          the specific device type
+     * @param pcrIndex       the event number
+     * @param digestValue    the key digest value
      * @param supportRimHash the support file's hash value
-     * @param eventType the event type to store
-     * @param matchFail the status of the baseline check
-     * @param patched the status of the value being updated to patch
-     * @param updated the status of the value being updated with info
-     * @param contentBlob the data value of the content
+     * @param eventType      the event type to store
+     * @param matchFail      the status of the baseline check
+     * @param patched        the status of the value being updated to patch
+     * @param updated        the status of the value being updated with info
+     * @param contentBlob    the data value of the content
      */
     public ReferenceDigestValue(final UUID baseRimId, final UUID supportRimId,
                                 final String manufacturer, final String model,
@@ -124,6 +124,7 @@ public class ReferenceDigestValue extends AbstractEntity {
 
     /**
      * the object that contains the raw bytes for this RDV.
+     *
      * @return the raw bytes
      */
     public byte[] getContentBlob() {
@@ -132,7 +133,8 @@ public class ReferenceDigestValue extends AbstractEntity {
 
     /**
      * Helper method to update the attributes of this object.
-     * @param support the associated RIM.
+     *
+     * @param support   the associated RIM.
      * @param baseRimId the main id to update
      */
     public void updateInfo(final SupportReferenceManifest support, final UUID baseRimId) {
@@ -151,6 +153,7 @@ public class ReferenceDigestValue extends AbstractEntity {
 
     /**
      * Returns a string of the classes fields.
+     *
      * @return a string
      */
     public String toString() {
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/SupportReferenceManifest.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/SupportReferenceManifest.java
index 1e354615..9aef0d7e 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/SupportReferenceManifest.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/SupportReferenceManifest.java
@@ -71,6 +71,7 @@ public class SupportReferenceManifest extends ReferenceManifest {
     /**
      * Getter method for the expected PCR values contained within the support
      * RIM.
+     *
      * @return a string array of the pcr values.
      */
     public String[] getExpectedPCRList() {
@@ -113,6 +114,7 @@ public class SupportReferenceManifest extends ReferenceManifest {
     /**
      * This is a method to indicate whether or not this support
      * rim is a base log file.
+     *
      * @return flag for base.
      */
     public boolean isBaseSupport() {
@@ -121,9 +123,15 @@ public class SupportReferenceManifest extends ReferenceManifest {
 
     @Override
     public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-        if (!super.equals(o)) return false;
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        if (!super.equals(o)) {
+            return false;
+        }
         SupportReferenceManifest that = (SupportReferenceManifest) o;
         return pcrHash == that.pcrHash && updated == that.updated;
     }
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/AppraisalStatus.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/AppraisalStatus.java
index 0988656c..1067bf16 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/AppraisalStatus.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/AppraisalStatus.java
@@ -9,6 +9,35 @@ import lombok.Setter;
 @Getter
 @Setter
 public class AppraisalStatus {
+    private Status appStatus;
+    private String message;
+    private String additionalInfo;
+
+    /**
+     * Default constructor. Set appraisal status and description.
+     *
+     * @param appStatus status of appraisal
+     * @param message   description of result
+     */
+    public AppraisalStatus(final Status appStatus, final String message) {
+        this(appStatus, message, "");
+    }
+
+    /**
+     * Default constructor. Set appraisal status and description.
+     *
+     * @param appStatus      status of appraisal
+     * @param message        description of result
+     * @param additionalInfo any additional information needed to
+     *                       be passed on
+     */
+    public AppraisalStatus(final Status appStatus, final String message,
+                           final String additionalInfo) {
+        this.appStatus = appStatus;
+        this.message = message;
+        this.additionalInfo = additionalInfo;
+    }
+
     /**
      * Enum used to represent appraisal status.
      */
@@ -33,31 +62,4 @@ public class AppraisalStatus {
          */
         UNKNOWN
     }
-
-    private Status appStatus;
-    private String message;
-    private String additionalInfo;
-
-    /**
-     * Default constructor. Set appraisal status and description.
-     * @param appStatus status of appraisal
-     * @param message description of result
-     */
-    public AppraisalStatus(final Status appStatus, final String message) {
-        this(appStatus, message, "");
-    }
-
-    /**
-     * Default constructor. Set appraisal status and description.
-     * @param appStatus status of appraisal
-     * @param message description of result
-     * @param additionalInfo any additional information needed to
-     *                       be passed on
-     */
-    public AppraisalStatus(final Status appStatus, final String message,
-                           final String additionalInfo) {
-        this.appStatus = appStatus;
-        this.message = message;
-        this.additionalInfo = additionalInfo;
-    }
 }
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/HealthStatus.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/HealthStatus.java
index ffeffb99..b922a230 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/HealthStatus.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/HealthStatus.java
@@ -22,18 +22,24 @@ public enum HealthStatus {
      */
     UNKNOWN("unknown");
 
-    private String healthStatus;
+    private final String healthStatus;
 
     /**
      * Creates a new HealthStatus object given a String.
      *
-     * @param healthStatus
-     *            "trusted", "untrusted", or "unknown"
+     * @param healthStatus "trusted", "untrusted", or "unknown"
      */
     HealthStatus(final String healthStatus) {
         this.healthStatus = healthStatus;
     }
 
+    public static boolean isValidStatus(final String healthStatus) {
+        return Arrays.stream(HealthStatus.values())
+                .map(HealthStatus::name)
+                .collect(Collectors.toSet())
+                .contains(healthStatus);
+    }
+
     /**
      * Returns the health status.
      *
@@ -47,11 +53,4 @@ public enum HealthStatus {
     public String toString() {
         return getStatus();
     }
-
-    public static boolean isValidStatus(final String healthStatus) {
-        return Arrays.stream(HealthStatus.values())
-                .map(HealthStatus::name)
-                .collect(Collectors.toSet())
-                .contains(healthStatus);
-    }
-}
\ No newline at end of file
+}
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/package-info.java
index cf1c1525..e1b0239f 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/package-info.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/package-info.java
@@ -1 +1 @@
-package hirs.attestationca.persist.enums;
\ No newline at end of file
+package hirs.attestationca.persist.enums;
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/AbstractProcessor.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/AbstractProcessor.java
index 0f59637a..e28c3379 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/AbstractProcessor.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/AbstractProcessor.java
@@ -54,8 +54,9 @@ public class AbstractProcessor {
 
     /**
      * Default constructor that sets main class fields.
+     *
      * @param privateKey private key used for communication authentication
-     * @param validDays property value to set for issued certificates
+     * @param validDays  property value to set for issued certificates
      */
     public AbstractProcessor(final PrivateKey privateKey,
                              final int validDays) {
@@ -66,17 +67,18 @@ public class AbstractProcessor {
     /**
      * Generates a credential using the specified public key.
      *
-     * @param publicKey cannot be null
+     * @param publicKey             cannot be null
      * @param endorsementCredential the endorsement credential
-     * @param platformCredentials the set of platform credentials
-     * @param deviceName The host name used in the subject alternative name
-     * @param acaCertificate object used to create credential
+     * @param platformCredentials   the set of platform credentials
+     * @param deviceName            The host name used in the subject alternative name
+     * @param acaCertificate        object used to create credential
      * @return identity credential
      */
     protected X509Certificate generateCredential(final PublicKey publicKey,
-                                       final EndorsementCredential endorsementCredential,
-                                       final List platformCredentials,
-                                       final String deviceName, final X509Certificate acaCertificate) {
+                                                 final EndorsementCredential endorsementCredential,
+                                                 final List platformCredentials,
+                                                 final String deviceName,
+                                                 final X509Certificate acaCertificate) {
         try {
             // have the certificate expire in the configured number of days
             Calendar expiry = Calendar.getInstance();
@@ -132,8 +134,8 @@ public class AbstractProcessor {
      * IdentityClaim. Will also check if the Endorsement Credential was already uploaded.
      * Persists the Endorsement Credential if it does not already exist.
      *
-     * @param identityClaim a Protobuf generated Identity Claim object
-     * @param ekPub the endorsement public key from the Identity Claim object
+     * @param identityClaim         a Protobuf generated Identity Claim object
+     * @param ekPub                 the endorsement public key from the Identity Claim object
      * @param certificateRepository db connector from certificates
      * @return the Endorsement Credential, if one exists, null otherwise
      */
@@ -162,7 +164,7 @@ public class AbstractProcessor {
      * IdentityClaim and Endorsement Credential. Persists the Platform Credentials if they
      * do not already exist.
      *
-     * @param identityClaim a Protobuf generated Identity Claim object
+     * @param identityClaim         a Protobuf generated Identity Claim object
      * @param endorsementCredential an endorsement credential to check if platform credentials
      *                              exist
      * @param certificateRepository db connector from certificates
@@ -193,7 +195,8 @@ public class AbstractProcessor {
 
     /**
      * Gets the Endorsement Credential from the DB given the EK public key.
-     * @param ekPublicKey the EK public key
+     *
+     * @param ekPublicKey           the EK public key
      * @param certificateRepository db store manager for certificates
      * @return the Endorsement credential, if found, otherwise null
      */
@@ -229,22 +232,22 @@ public class AbstractProcessor {
      * Helper method to create an {@link IssuedAttestationCertificate} object, set its
      * corresponding device and persist it.
      *
-     * @param certificateRepository db store manager for certificates
+     * @param certificateRepository            db store manager for certificates
      * @param derEncodedAttestationCertificate the byte array representing the Attestation
      *                                         certificate
-     * @param endorsementCredential the endorsement credential used to generate the AC
-     * @param platformCredentials the platform credentials used to generate the AC
-     * @param device the device to which the attestation certificate is tied
-     * @param isLDevID whether the certificate is a ldevid
+     * @param endorsementCredential            the endorsement credential used to generate the AC
+     * @param platformCredentials              the platform credentials used to generate the AC
+     * @param device                           the device to which the attestation certificate is tied
+     * @param isLDevID                         whether the certificate is a ldevid
      * @return whether the certificate was saved successfully
      * @throws {@link CertificateProcessingException} if error occurs in persisting the Attestation
-     *                                             Certificate
+     *                Certificate
      */
     public boolean saveAttestationCertificate(final CertificateRepository certificateRepository,
-                                           final byte[] derEncodedAttestationCertificate,
-                                            final EndorsementCredential endorsementCredential,
-                                            final List platformCredentials,
-                                            final Device device, boolean isLDevID) {
+                                              final byte[] derEncodedAttestationCertificate,
+                                              final EndorsementCredential endorsementCredential,
+                                              final List platformCredentials,
+                                              final Device device, boolean isLDevID) {
         List issuedAc;
         boolean generateCertificate = true;
         PolicyRepository scp = getPolicyRepository();
@@ -260,23 +263,22 @@ public class AbstractProcessor {
                 policySettings = scp.findByName("Default");
 
                 Sort sortCriteria = Sort.by(Sort.Direction.DESC, "endValidity");
-                issuedAc = certificateRepository.findByDeviceIdAndIsLDevID(device.getId(), isLDevID, sortCriteria);
+                issuedAc = certificateRepository.findByDeviceIdAndIsLDevID(device.getId(), isLDevID,
+                        sortCriteria);
 
                 generateCertificate = isLDevID ? policySettings.isIssueDevIdCertificate()
                         : policySettings.isIssueAttestationCertificate();
 
-                if (issuedAc != null && issuedAc.size() > 0 && (isLDevID ? policySettings.isDevIdExpirationFlag()
-                        : policySettings.isGenerateOnExpiration())) {
+                if (issuedAc != null && issuedAc.size() > 0 &&
+                        (isLDevID ? policySettings.isDevIdExpirationFlag()
+                                : policySettings.isGenerateOnExpiration())) {
                     if (issuedAc.get(0).getEndValidity().after(currentDate)) {
                         // so the issued AC is not expired
                         // however are we within the threshold
                         days = ProvisionUtils.daysBetween(currentDate, issuedAc.get(0).getEndValidity());
-                        if (days < Integer.parseInt(isLDevID ? policySettings.getDevIdReissueThreshold()
-                                : policySettings.getReissueThreshold())) {
-                            generateCertificate = true;
-                        } else {
-                            generateCertificate = false;
-                        }
+                        generateCertificate =
+                                days < Integer.parseInt(isLDevID ? policySettings.getDevIdReissueThreshold()
+                                        : policySettings.getReissueThreshold());
                     }
                 }
             }
@@ -297,7 +299,7 @@ public class AbstractProcessor {
     }
 
     private List getPlatformCredentials(final CertificateRepository certificateRepository,
-                                                           final EndorsementCredential ec) {
+                                                            final EndorsementCredential ec) {
         List credentials = null;
 
         if (ec == null) {
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/CertificateRequestProcessor.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/CertificateRequestProcessor.java
index 571e8ae0..1dec628d 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/CertificateRequestProcessor.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/CertificateRequestProcessor.java
@@ -30,22 +30,23 @@ import java.util.List;
 @Log4j2
 public class CertificateRequestProcessor extends AbstractProcessor {
 
-    private SupplyChainValidationService supplyChainValidationService;
-    private CertificateRepository certificateRepository;
-    private DeviceRepository deviceRepository;
-    private X509Certificate acaCertificate;
-    private TPM2ProvisionerStateRepository tpm2ProvisionerStateRepository;
+    private final SupplyChainValidationService supplyChainValidationService;
+    private final CertificateRepository certificateRepository;
+    private final DeviceRepository deviceRepository;
+    private final X509Certificate acaCertificate;
+    private final TPM2ProvisionerStateRepository tpm2ProvisionerStateRepository;
 
     /**
      * Constructor.
-     * @param supplyChainValidationService object that is used to run provisioning
-     * @param certificateRepository db connector for all certificates.
-     * @param deviceRepository database connector for Devices.
-     * @param privateKey private key used for communication authentication
-     * @param acaCertificate object used to create credential
-     * @param validDays int for the time in which a certificate is valid.
+     *
+     * @param supplyChainValidationService   object that is used to run provisioning
+     * @param certificateRepository          db connector for all certificates.
+     * @param deviceRepository               database connector for Devices.
+     * @param privateKey                     private key used for communication authentication
+     * @param acaCertificate                 object used to create credential
+     * @param validDays                      int for the time in which a certificate is valid.
      * @param tpm2ProvisionerStateRepository db connector for provisioner state.
-     * @param policyRepository db connector for policies.
+     * @param policyRepository               db connector for policies.
      */
     public CertificateRequestProcessor(final SupplyChainValidationService supplyChainValidationService,
                                        final CertificateRepository certificateRepository,
@@ -170,10 +171,12 @@ public class CertificateRequestProcessor extends AbstractProcessor {
                     ByteString ldevidCertificateBytes = ByteString
                             .copyFrom(derEncodedLdevidCertificate);
 
-                    boolean generateAtt = saveAttestationCertificate(certificateRepository, derEncodedAttestationCertificate,
+                    boolean generateAtt = saveAttestationCertificate(certificateRepository,
+                            derEncodedAttestationCertificate,
                             endorsementCredential, platformCredentials, device, false);
-                    boolean generateLDevID = saveAttestationCertificate(certificateRepository, derEncodedLdevidCertificate,
-                            endorsementCredential, platformCredentials, device, true);
+                    boolean generateLDevID =
+                            saveAttestationCertificate(certificateRepository, derEncodedLdevidCertificate,
+                                    endorsementCredential, platformCredentials, device, true);
 
                     ProvisionerTpm2.CertificateResponse.Builder builder = ProvisionerTpm2.CertificateResponse.
                             newBuilder().setStatus(ProvisionerTpm2.ResponseStatus.PASS);
@@ -186,8 +189,7 @@ public class CertificateRequestProcessor extends AbstractProcessor {
                     ProvisionerTpm2.CertificateResponse response = builder.build();
 
                     return response.toByteArray();
-                }
-                else {
+                } else {
                     byte[] derEncodedAttestationCertificate = ProvisionUtils.getDerEncodedCertificate(
                             attestationCertificate);
 
@@ -200,7 +202,8 @@ public class CertificateRequestProcessor extends AbstractProcessor {
                     ProvisionerTpm2.CertificateResponse.Builder builder = ProvisionerTpm2.CertificateResponse.
                             newBuilder().setStatus(ProvisionerTpm2.ResponseStatus.PASS);
 
-                    boolean generateAtt = saveAttestationCertificate(certificateRepository, derEncodedAttestationCertificate,
+                    boolean generateAtt = saveAttestationCertificate(certificateRepository,
+                            derEncodedAttestationCertificate,
                             endorsementCredential, platformCredentials, device, false);
                     if (generateAtt) {
                         builder = builder.setCertificate(certificateBytes);
@@ -221,7 +224,7 @@ public class CertificateRequestProcessor extends AbstractProcessor {
             }
         } else {
             log.error("Could not process credential request. Invalid nonce provided: "
-                    + request.getNonce().toString());
+                    + request.getNonce());
             throw new CertificateProcessingException("Invalid nonce given in request by client.");
         }
     }
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/CredentialManagementHelper.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/CredentialManagementHelper.java
index 8bb2a7ba..ae22d14a 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/CredentialManagementHelper.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/CredentialManagementHelper.java
@@ -22,9 +22,10 @@ public final class CredentialManagementHelper {
     /**
      * Parses and stores the EK in the cert manager. If the cert is already present and archived,
      * it is unarchived.
+     *
      * @param certificateRepository the certificate manager used for storage
-     * @param endorsementBytes the raw EK bytes used for parsing
-     * @param deviceName the host name
+     * @param endorsementBytes      the raw EK bytes used for parsing
+     * @param deviceName            the host name
      * @return the parsed, valid EK
      * @throws IllegalArgumentException if the provided bytes are not a valid EK.
      */
@@ -63,7 +64,7 @@ public final class CredentialManagementHelper {
         if (existingCredential == null) {
             log.info("No Endorsement Credential found with hash: " + certificateHash);
             endorsementCredential.setDeviceName(deviceName);
-            return (EndorsementCredential) certificateRepository.save(endorsementCredential);
+            return certificateRepository.save(endorsementCredential);
         } else if (existingCredential.isArchived()) {
             // if the EK is stored in the DB and it's archived, unarchive.
             log.info("Unarchiving credential");
@@ -77,9 +78,10 @@ public final class CredentialManagementHelper {
     /**
      * Parses and stores the PC in the cert manager. If the cert is already present and archived,
      * it is unarchived.
+     *
      * @param certificateRepository the certificate manager used for storage
-     * @param platformBytes the raw PC bytes used for parsing
-     * @param deviceName the host name of the associated machine
+     * @param platformBytes         the raw PC bytes used for parsing
+     * @param deviceName            the host name of the associated machine
      * @return the parsed, valid PC, or null if the provided bytes are not a valid EK.
      */
     public static PlatformCredential storePlatformCredential(
@@ -129,7 +131,7 @@ public final class CredentialManagementHelper {
                     }
                 }
                 platformCredential.setDeviceName(deviceName);
-                return (PlatformCredential) certificateRepository.save(platformCredential);
+                return certificateRepository.save(platformCredential);
             } else if (existingCredential.isArchived()) {
                 // if the PC is stored in the DB and it's archived, unarchive.
                 log.info("Unarchiving credential");
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/IssuedCertificateAttributeHelper.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/IssuedCertificateAttributeHelper.java
index f3772c9f..6154d5f9 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/IssuedCertificateAttributeHelper.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/IssuedCertificateAttributeHelper.java
@@ -12,6 +12,7 @@ import org.bouncycastle.asn1.x500.AttributeTypeAndValue;
 import org.bouncycastle.asn1.x500.RDN;
 import org.bouncycastle.asn1.x500.X500Name;
 import org.bouncycastle.asn1.x500.X500NameBuilder;
+import org.bouncycastle.asn1.x509.AttributeCertificateInfo;
 import org.bouncycastle.asn1.x509.AuthorityKeyIdentifier;
 import org.bouncycastle.asn1.x509.ExtendedKeyUsage;
 import org.bouncycastle.asn1.x509.Extension;
@@ -21,7 +22,6 @@ import org.bouncycastle.asn1.x509.GeneralNames;
 import org.bouncycastle.asn1.x509.GeneralNamesBuilder;
 import org.bouncycastle.asn1.x509.KeyPurposeId;
 import org.bouncycastle.asn1.x509.TBSCertificate;
-import org.bouncycastle.asn1.x509.AttributeCertificateInfo;
 
 import java.io.IOException;
 import java.security.cert.CertificateEncodingException;
@@ -35,17 +35,16 @@ import java.util.Collection;
 @Log4j2
 public final class IssuedCertificateAttributeHelper {
 
+    /**
+     * The extended key usage extension.
+     */
+    public static final Extension EXTENDED_KEY_USAGE_EXTENSION;
     private static final String TPM_ID_LABEL_OID = "2.23.133.2.15";
-
     /**
      * Object Identifier TCPA at TPM ID Label.
      */
     public static final ASN1ObjectIdentifier TCPA_AT_TPM_ID_LABEL =
             new ASN1ObjectIdentifier(TPM_ID_LABEL_OID);
-    /**
-     * The extended key usage extension.
-     */
-    public static final Extension EXTENDED_KEY_USAGE_EXTENSION;
     private static final ASN1ObjectIdentifier TCG_KP_AIK_CERTIFICATE_ATTRIBUTE =
             new ASN1ObjectIdentifier("2.23.133.8.3");
 
@@ -69,6 +68,7 @@ public final class IssuedCertificateAttributeHelper {
     /**
      * This method builds the AKI extension that will be stored in the generated
      * Attestation Issued Certificate.
+     *
      * @param endorsementCredential EK object to pull AKI from.
      * @return the AKI extension.
      * @throws IOException on bad get instance for AKI.
@@ -93,11 +93,12 @@ public final class IssuedCertificateAttributeHelper {
 
     /**
      * Builds the subject alternative name based on the supplied certificates.
+     *
      * @param endorsementCredential the endorsement credential
-     * @param platformCredentials the platform credentials
-     * @param hostName the host name
+     * @param platformCredentials   the platform credentials
+     * @param hostName              the host name
      * @return the subject alternative name extension
-     * @throws IOException an IO exception occurs building the extension
+     * @throws IOException              an IO exception occurs building the extension
      * @throws IllegalArgumentException if the host name is null
      */
     public static Extension buildSubjectAlternativeNameFromCerts(
@@ -178,14 +179,11 @@ public final class IssuedCertificateAttributeHelper {
                 populateRdnAttributesInNameBuilder(nameBuilder, rdns);
             } else {
                 log.error("No RDNs in endorsement credential attributes");
-                return;
             }
         } catch (CertificateEncodingException e) {
             log.error("Certificate encoding exception", e);
-            return;
         } catch (IOException e) {
             log.error("Error creating x509 cert from endorsement credential", e);
-            return;
         }
 
     }
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java
index fd131138..43af0bce 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java
@@ -3,7 +3,6 @@ package hirs.attestationca.persist.provision.helper;
 import com.google.protobuf.ByteString;
 import com.google.protobuf.InvalidProtocolBufferException;
 import hirs.attestationca.configuration.provisionerTpm2.ProvisionerTpm2;
-import hirs.attestationca.persist.entity.userdefined.info.TPMInfo;
 import hirs.attestationca.persist.exceptions.CertificateProcessingException;
 import hirs.attestationca.persist.exceptions.IdentityProcessingException;
 import hirs.attestationca.persist.exceptions.UnexpectedServerException;
@@ -14,7 +13,6 @@ import hirs.structs.elements.tpm.IdentityRequest;
 import hirs.structs.elements.tpm.SymmetricKey;
 import hirs.structs.elements.tpm.SymmetricKeyParams;
 import hirs.utils.HexUtils;
-import hirs.utils.enums.DeviceInfoEnums;
 import lombok.extern.log4j.Log4j2;
 import org.apache.commons.codec.binary.Hex;
 import org.apache.commons.lang3.ArrayUtils;
@@ -54,16 +52,16 @@ public final class ProvisionUtils {
      * The default size for IV blocks.
      */
     public final static int DEFAULT_IV_SIZE = 16;
-    /**
-     * Defines the well known exponent.
-     * https://en.wikipedia.org/wiki/65537_(number)#Applications
-     */
-    private final static BigInteger EXPONENT = new BigInteger("010001", DEFAULT_IV_SIZE);
     public static final int HMAC_SIZE_LENGTH_BYTES = 2;
     public static final int HMAC_KEY_LENGTH_BYTES = 32;
     public static final int SEED_LENGTH = 32;
     public static final int MAX_SECRET_LENGTH = 32;
     public static final int AES_KEY_LENGTH_BYTES = 16;
+    /**
+     * Defines the well known exponent.
+     * https://en.wikipedia.org/wiki/65537_(number)#Applications
+     */
+    private final static BigInteger EXPONENT = new BigInteger("010001", DEFAULT_IV_SIZE);
     private static final int TPM2_CREDENTIAL_BLOB_SIZE = 392;
     private static final int RSA_MODULUS_LENGTH = 256;
     // Constants used to parse out the ak name from the ak public data. Used in generateAkName
@@ -77,8 +75,8 @@ public final class ProvisionUtils {
      *
      * @param identityClaim byte array that should be converted to a Protobuf IdentityClaim
      *                      object
-     * @throws {@link IdentityProcessingException} if byte array could not be parsed
      * @return the Protobuf generated Identity Claim object
+     * @throws {@link IdentityProcessingException} if byte array could not be parsed
      */
     public static ProvisionerTpm2.IdentityClaim parseIdentityClaim(final byte[] identityClaim) {
         try {
@@ -93,8 +91,8 @@ public final class ProvisionUtils {
      * Helper method to extract a DER encoded ASN.1 certificate from an X509 certificate.
      *
      * @param certificate the X509 certificate to be converted to DER encoding
-     * @throws {@link UnexpectedServerException} if error occurs during encoding retrieval
      * @return the byte array representing the DER encoded certificate
+     * @throws {@link UnexpectedServerException} if error occurs during encoding retrieval
      */
     public static byte[] getDerEncodedCertificate(final X509Certificate certificate) {
         try {
@@ -109,6 +107,7 @@ public final class ProvisionUtils {
 
     /**
      * Parse public key from public data segment generated by TPM 2.0.
+     *
      * @param publicArea the public area segment to parse
      * @return the RSA public key of the supplied public data
      */
@@ -128,8 +127,7 @@ public final class ProvisionUtils {
     /**
      * Constructs a public key where the modulus is in raw form.
      *
-     * @param modulus
-     *            in byte array form
+     * @param modulus in byte array form
      * @return public key using specific modulus and the well known exponent
      */
     public static PublicKey assemblePublicKey(final byte[] modulus) {
@@ -139,8 +137,7 @@ public final class ProvisionUtils {
     /**
      * Constructs a public key where the modulus is Hex encoded.
      *
-     * @param modulus
-     *            hex encoded modulus
+     * @param modulus hex encoded modulus
      * @return public key using specific modulus and the well known exponent
      */
     public static PublicKey assemblePublicKey(final String modulus) {
@@ -169,8 +166,8 @@ public final class ProvisionUtils {
      * {@link hirs.structs.elements.tpm.IdentityRequest} using the cipher transformation.
      *
      * @param asymmetricBlob to be decrypted
-     * @param scheme to decrypt with
-     * @param privateKey cipher private key
+     * @param scheme         to decrypt with
+     * @param privateKey     cipher private key
      * @return decrypted blob
      */
     public static byte[] decryptAsymmetricBlob(final byte[] asymmetricBlob,
@@ -197,8 +194,8 @@ public final class ProvisionUtils {
 
             return cipher.doFinal();
         } catch (NoSuchPaddingException | NoSuchAlgorithmException | InvalidKeyException
-                | BadPaddingException | IllegalBlockSizeException
-                | InvalidAlgorithmParameterException e) {
+                 | BadPaddingException | IllegalBlockSizeException
+                 | InvalidAlgorithmParameterException e) {
             throw new IdentityProcessingException(
                     "Encountered error while decrypting asymmetric blob of an identity request: "
                             + e.getMessage(), e);
@@ -210,14 +207,14 @@ public final class ProvisionUtils {
      * {@link hirs.structs.elements.tpm.IdentityRequest} using the specified symmetric key
      * and cipher transformation.
      *
-     * @param symmetricBlob to be decrypted
-     * @param symmetricKey to use to decrypt
-     * @param iv to use with decryption cipher
+     * @param symmetricBlob  to be decrypted
+     * @param symmetricKey   to use to decrypt
+     * @param iv             to use with decryption cipher
      * @param transformation of the cipher
      * @return decrypted symmetric blob
      */
     public static byte[] decryptSymmetricBlob(final byte[] symmetricBlob, final byte[] symmetricKey,
-                                        final byte[] iv, final String transformation) {
+                                              final byte[] iv, final String transformation) {
         try {
             // create a cipher from the specified transformation
             Cipher cipher = Cipher.getInstance(transformation);
@@ -231,8 +228,8 @@ public final class ProvisionUtils {
             // decrypt the symmetric blob
             return cipher.doFinal(symmetricBlob);
         } catch (IllegalBlockSizeException | InvalidKeyException | NoSuchAlgorithmException
-                | BadPaddingException | NoSuchPaddingException
-                | InvalidAlgorithmParameterException exception) {
+                 | BadPaddingException | NoSuchPaddingException
+                 | InvalidAlgorithmParameterException exception) {
             log.error("Encountered error while decrypting symmetric blob of an identity request: "
                     + exception.getMessage(), exception);
         }
@@ -261,16 +258,16 @@ public final class ProvisionUtils {
      * key to generate an HMAC to cover the encrypted secret and the ak name. The output is an
      * encrypted blob that acts as the first part of a challenge-response authentication mechanism
      * to validate an identity claim.
-     *
+     * 

* Equivalent to calling tpm2_makecredential using tpm2_tools. * - * @param ek endorsement key in the identity claim - * @param ak attestation key in the identity claim + * @param ek endorsement key in the identity claim + * @param ak attestation key in the identity claim * @param secret a nonce * @return the encrypted blob forming the identity claim challenge */ public static ByteString tpm20MakeCredential(final RSAPublicKey ek, final RSAPublicKey ak, - final byte[] secret) { + final byte[] secret) { // check size of the secret if (secret.length > MAX_SECRET_LENGTH) { throw new IllegalArgumentException("Secret must be " + MAX_SECRET_LENGTH @@ -284,7 +281,8 @@ public final class ProvisionUtils { // encrypt seed with pubEk Cipher asymCipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding"); OAEPParameterSpec oaepSpec = new OAEPParameterSpec("SHA-256", "MGF1", - MGF1ParameterSpec.SHA256, new PSource.PSpecified("IDENTITY\0".getBytes(StandardCharsets.UTF_8))); + MGF1ParameterSpec.SHA256, + new PSource.PSpecified("IDENTITY\0".getBytes(StandardCharsets.UTF_8))); asymCipher.init(Cipher.PUBLIC_KEY, ek, oaepSpec); asymCipher.update(seed); byte[] encSeed = asymCipher.doFinal(); @@ -339,8 +337,8 @@ public final class ProvisionUtils { return ByteString.copyFrom(bytesToReturn); } catch (BadPaddingException | IllegalBlockSizeException | NoSuchAlgorithmException - | InvalidKeyException | InvalidAlgorithmParameterException - | NoSuchPaddingException e) { + | InvalidKeyException | InvalidAlgorithmParameterException + | NoSuchPaddingException e) { throw new IdentityProcessingException( "Encountered error while making the identity claim challenge: " + e.getMessage(), e); @@ -351,13 +349,13 @@ public final class ProvisionUtils { * Generate asymmetric contents part of the identity response. * * @param identityKey identity requests symmetric contents, otherwise, the identity proof - * @param sessionKey identity response session key - * @param publicKey of the EK certificate contained within the identity proof + * @param sessionKey identity response session key + * @param publicKey of the EK certificate contained within the identity proof * @return encrypted asymmetric contents */ public static byte[] generateAsymmetricContents(final byte[] identityKey, - final byte[] sessionKey, - final PublicKey publicKey) { + final byte[] sessionKey, + final PublicKey publicKey) { try { // create a SHA1 digest of the identity key MessageDigest md = MessageDigest.getInstance("SHA-1"); @@ -382,8 +380,8 @@ public final class ProvisionUtils { return cipher.doFinal(asymmetricContents); } catch (NoSuchAlgorithmException | IllegalBlockSizeException | NoSuchPaddingException - | InvalidKeyException | BadPaddingException - | InvalidAlgorithmParameterException e) { + | InvalidKeyException | BadPaddingException + | InvalidAlgorithmParameterException e) { throw new CertificateProcessingException( "Encountered error while generating ACA session key: " + e.getMessage(), e); } @@ -421,12 +419,12 @@ public final class ProvisionUtils { /** * Generate the Identity Response using the identity credential and the session key. * - * @param credential the identity credential + * @param credential the identity credential * @param symmetricKey generated session key for this request/response chain * @return identity response for an identity request */ public static SymmetricAttestation generateAttestation(final X509Certificate credential, - final SymmetricKey symmetricKey) { + final SymmetricKey symmetricKey) { try { // initialize the symmetric cipher Cipher aesCipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); @@ -463,8 +461,8 @@ public final class ProvisionUtils { return attestation; } catch (BadPaddingException | IllegalBlockSizeException | NoSuchAlgorithmException - | InvalidKeyException | InvalidAlgorithmParameterException | NoSuchPaddingException - | CertificateEncodingException exception) { + | InvalidKeyException | InvalidAlgorithmParameterException | NoSuchPaddingException + | CertificateEncodingException exception) { throw new CertificateProcessingException( "Encountered error while generating Identity Response: " + exception.getMessage(), exception); @@ -473,8 +471,8 @@ public final class ProvisionUtils { @SuppressWarnings("magicnumber") public static byte[] assembleCredential(final byte[] topSize, final byte[] integrityHmac, - final byte[] encryptedSecret, - final byte[] encryptedSeed) { + final byte[] encryptedSecret, + final byte[] encryptedSeed) { /* * Credential structure breakdown with endianness: * 0-1 topSize (2), LE @@ -503,6 +501,7 @@ public final class ProvisionUtils { /** * Determines the AK name from the AK Modulus. + * * @param akModulus modulus of an attestation key * @return the ak name byte array * @throws java.security.NoSuchAlgorithmException Underlying SHA256 method used a bad algorithm @@ -526,24 +525,24 @@ public final class ProvisionUtils { * multiple contexts are not supported in this implementation. This should work for all uses of * the KDF for TPM2_MakeCredential. * - * @param seed random value used to generate the key - * @param label first portion of message used to generate key - * @param context second portion of message used to generate key + * @param seed random value used to generate the key + * @param label first portion of message used to generate key + * @param context second portion of message used to generate key * @param sizeInBytes size of key to generate in bytes * @return the derived key - * @throws NoSuchAlgorithmException Wrong crypto algorithm selected + * @throws NoSuchAlgorithmException Wrong crypto algorithm selected * @throws java.security.InvalidKeyException Invalid key used */ @SuppressWarnings("magicnumber") public static byte[] cryptKDFa(final byte[] seed, final String label, final byte[] context, - final int sizeInBytes) + final int sizeInBytes) throws NoSuchAlgorithmException, InvalidKeyException { ByteBuffer b = ByteBuffer.allocate(4); b.putInt(1); byte[] counter = b.array(); // get the label String labelWithEnding = label; - if (label.charAt(label.length() - 1) != "\0".charAt(0)) { + if (label.charAt(label.length() - 1) != '\u0000') { labelWithEnding = label + "\0"; } byte[] labelBytes = labelWithEnding.getBytes(StandardCharsets.UTF_8); @@ -580,6 +579,7 @@ public final class ProvisionUtils { /** * This method takes the provided TPM Quote and splits it between the PCR * quote and the signature hash. + * * @param tpmQuote contains hash values for the quote and the signature */ public static String parseTPMQuoteHash(final String tpmQuote) { @@ -598,6 +598,7 @@ public final class ProvisionUtils { /** * This method takes the provided TPM Quote and splits it between the PCR * quote and the signature hash. + * * @param tpmQuote contains hash values for the quote and the signature */ public static String parseTPMQuoteSignature(final String tpmQuote) { @@ -612,6 +613,7 @@ public final class ProvisionUtils { /** * Computes the sha256 hash of the given blob. + * * @param blob byte array to take the hash of * @return sha256 hash of blob * @throws NoSuchAlgorithmException improper algorithm selected @@ -625,8 +627,7 @@ public final class ProvisionUtils { /** * Generates a array of random bytes. * - * @param numberOfBytes - * to be generated + * @param numberOfBytes to be generated * @return byte array filled with the specified number of bytes. */ public static byte[] generateRandomBytes(final int numberOfBytes) { diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/ValidationService.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/ValidationService.java index 9ee79707..5ce06f6d 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/ValidationService.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/ValidationService.java @@ -18,7 +18,6 @@ import hirs.attestationca.persist.entity.userdefined.certificate.PlatformCredent import hirs.attestationca.persist.entity.userdefined.info.ComponentInfo; import hirs.attestationca.persist.entity.userdefined.report.DeviceInfoReport; import hirs.attestationca.persist.enums.AppraisalStatus; -import hirs.attestationca.persist.validation.CertificateAttributeScvValidator; import hirs.attestationca.persist.validation.CredentialValidator; import hirs.attestationca.persist.validation.FirmwareScvValidator; import hirs.utils.BouncyCastleUtils; @@ -258,7 +257,7 @@ public class ValidationService { * include the trust chain if it exists in this class' CertificateManager. * Returns the certificate authority credentials in a KeyStore. * - * @param certificate the credential whose CA chain should be retrieved + * @param certificate the credential whose CA chain should be retrieved * @param caCredentialRepository db service to get CA Certs * @return A keystore containing all relevant CA credentials to the given * certificate's organization or null if the keystore can't be assembled @@ -318,7 +317,8 @@ public class ValidationService { certAuthsWithMatchingIssuer = caCredentialRepository.findBySubject(credential.getIssuer()); } else { //Get certificates by subject organization - certAuthsWithMatchingIssuer = caCredentialRepository.findBySubjectSorted(credential.getIssuerSorted()); + certAuthsWithMatchingIssuer = + caCredentialRepository.findBySubjectSorted(credential.getIssuerSorted()); } } else { certAuthsWithMatchingIssuer.add(skiCA); diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/CertificateSelector.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/CertificateSelector.java index 5f28222c..a99d2dba 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/CertificateSelector.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/CertificateSelector.java @@ -24,7 +24,7 @@ import java.util.UUID; * This class is used to select one or many certificates in conjunction * with a {@link }. To make use of this object, * use (some CertificateImpl).select(CertificateManager). - * + *

* This class loosely follows the builder pattern. It is instantiated with * the type of certificate that should be retrieved. It is possible to * further specify which certificate(s) should be retrieved by using an @@ -32,10 +32,10 @@ import java.util.UUID; * restrict the result set. At any time, the results may be retrieved * by using one of the get* methods according to the form the * results should be in. - * + *

* If no matching certificates were found for the query, the returned * value may empty or null, depending on the return type. - * + *

* For example, to retrieve all platform certificates: * *

@@ -45,7 +45,7 @@ import java.util.UUID;
  *      .getCertificates();
  * }
  * 
- * + *

* To retrieve all CA certificates in a KeyStore: * *

@@ -55,7 +55,7 @@ import java.util.UUID;
  *      .getKeyStore();
  * }
  * 
- * + *

* To retrieve all CA certificates matching a certain issuer in X509 format: * *

@@ -91,7 +91,7 @@ public abstract class CertificateSelector {
      * Construct a new CertificateSelector that will use the given {@link  } to
      * retrieve certificates of the given type.
      *
-     * @param certificateClass the class of certificate to be retrieved
+     * @param certificateClass            the class of certificate to be retrieved
      * @param excludeArchivedCertificates true if excluding archived certificates
      */
     public CertificateSelector(
@@ -105,6 +105,7 @@ public abstract class CertificateSelector {
         this.fieldValueSelections = new HashMap<>();
         this.excludeArchivedCertificates = excludeArchivedCertificates;
     }
+
     /**
      * Specify the entity id that certificates must have to be considered
      * as matching.
@@ -249,6 +250,7 @@ public abstract class CertificateSelector {
 
     /**
      * Specify the authority key identifier to find certificate(s).
+     *
      * @param authorityKeyIdentifier the string of the AKI associated with the certificate.
      * @return this instance
      */
@@ -289,7 +291,7 @@ public abstract class CertificateSelector {
     /**
      * Set a field name and value to match.
      *
-     * @param name the field name to query
+     * @param name  the field name to query
      * @param value the value to query
      */
     protected void setFieldValue(final String name, final Object value) {
@@ -307,8 +309,7 @@ public abstract class CertificateSelector {
             );
         }
 
-        if (value instanceof byte[]) {
-            byte[] valueBytes = (byte[]) value;
+        if (value instanceof byte[] valueBytes) {
 
             Preconditions.checkArgument(
                     ArrayUtils.isNotEmpty(valueBytes),
@@ -329,7 +330,7 @@ public abstract class CertificateSelector {
      *
      * @return a KeyStore populated with the matching certificates, if any
      * @throws KeyStoreException if there is a problem instantiating a JKS-formatted KeyStore
-     * @throws IOException if there is a problem populating the keystore
+     * @throws IOException       if there is a problem populating the keystore
      */
     public KeyStore getKeyStore() throws KeyStoreException, IOException {
         KeyStore keyStore = KeyStore.getInstance("JKS");
@@ -350,7 +351,7 @@ public abstract class CertificateSelector {
      * of this {@link CertificateSelector}.
      *
      * @return a Criterion that can be used to query for certificates matching the configuration of
-     *         this instance
+     * this instance
      */
     Predicate[] getCriterion(final CriteriaBuilder criteriaBuilder) {
         Predicate[] predicates = new Predicate[fieldValueSelections.size()];
@@ -359,7 +360,8 @@ public abstract class CertificateSelector {
 
         int i = 0;
         for (Map.Entry fieldValueEntry : fieldValueSelections.entrySet()) {
-            predicates[i++] = criteriaBuilder.equal(root.get(fieldValueEntry.getKey()), fieldValueEntry.getValue());
+            predicates[i++] =
+                    criteriaBuilder.equal(root.get(fieldValueEntry.getKey()), fieldValueEntry.getValue());
         }
 
         if (this.excludeArchivedCertificates) {
@@ -378,6 +380,7 @@ public abstract class CertificateSelector {
 
     /**
      * Configures the selector to query for archived and unarchived certificates.
+     *
      * @return the selector
      */
     public CertificateSelector includeArchived() {
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/ReferenceManifestSelector.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/ReferenceManifestSelector.java
index 62442115..d8c1e307 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/ReferenceManifestSelector.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/ReferenceManifestSelector.java
@@ -12,9 +12,7 @@ import org.apache.commons.lang3.StringUtils;
 
 import java.util.Arrays;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.UUID;
 
 /**
@@ -60,7 +58,7 @@ public abstract class ReferenceManifestSelector {
     /**
      * Standard Constructor for the Selector.
      *
-     * @param referenceTypeClass the type of Reference Manifest to process.
+     * @param referenceTypeClass  the type of Reference Manifest to process.
      * @param excludeArchivedRims true if excluding archived RIMs
      */
     public ReferenceManifestSelector(final Class referenceTypeClass,
@@ -88,6 +86,7 @@ public abstract class ReferenceManifestSelector {
 
     /**
      * Specify the file name of the object to grab.
+     *
      * @param fileName the name of the file associated with the rim
      * @return instance of the manifest in relation to the filename.
      */
@@ -98,6 +97,7 @@ public abstract class ReferenceManifestSelector {
 
     /**
      * Specify the RIM Type to match.
+     *
      * @param rimType the type of rim
      * @return this instance
      */
@@ -109,7 +109,7 @@ public abstract class ReferenceManifestSelector {
     /**
      * Set a field name and value to match.
      *
-     * @param name the field name to query
+     * @param name  the field name to query
      * @param value the value to query
      */
     protected void setFieldValue(final String name, final Object value) {
@@ -127,8 +127,7 @@ public abstract class ReferenceManifestSelector {
             );
         }
 
-        if (value instanceof byte[]) {
-            byte[] valueBytes = (byte[]) value;
+        if (value instanceof byte[] valueBytes) {
 
             Preconditions.checkArgument(
                     ArrayUtils.isNotEmpty(valueBytes),
@@ -155,7 +154,8 @@ public abstract class ReferenceManifestSelector {
 
         int i = 0;
         for (Map.Entry fieldValueEntry : fieldValueSelections.entrySet()) {
-            predicates[i++] = criteriaBuilder.equal(root.get(fieldValueEntry.getKey()), fieldValueEntry.getValue());
+            predicates[i++] =
+                    criteriaBuilder.equal(root.get(fieldValueEntry.getKey()), fieldValueEntry.getValue());
         }
 
         if (this.excludeArchivedRims) {
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/tpm/PcrComposite.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/tpm/PcrComposite.java
index 5aef5da3..f678a282 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/tpm/PcrComposite.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/tpm/PcrComposite.java
@@ -25,13 +25,13 @@ import java.util.List;
  * was removed. This change was not TCG-compliant, as the auto-generated code
  * would produce something like:
  * 

  - *

+ * 
  *     <PcrValue PcrNumber="0">06fl7EXo34MWxuLq9kcXI9la9NA=</ns3:PcrValue>
  * 
*

- * but using TPMMeasurementRecords result in something like: + * but using TPMMeasurementRecords result in something like: *

  - *

+ * 
  *     <PcrValue PcrNumber="2">
  *       <hash>
  *         <digest>AAECAwQFBgcICQoLDA0ODxAREhM=</digest>
@@ -39,14 +39,13 @@ import java.util.List;
  *     </hash>
  *   </PcrValue>
  * 
- * */ @Log4j2 @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "PcrComposite", namespace = "http://www.trustedcomputinggroup.org/XML/SCHEMA/" + "Integrity_Report_v1_0#", propOrder = {"pcrSelection", - "valueSize", "pcrValueList" }) + "valueSize", "pcrValueList"}) @Embeddable public class PcrComposite { @@ -69,11 +68,9 @@ public class PcrComposite { /** * Constructor used to create a PcrComposite object. * - * @param pcrSelection - * {@link PcrSelection } object, identifies which TPM PCRs are - * quoted - * @param pcrValueList - * List of TPMMeasurementRecords representing the PCR values + * @param pcrSelection {@link PcrSelection } object, identifies which TPM PCRs are + * quoted + * @param pcrValueList List of TPMMeasurementRecords representing the PCR values */ public PcrComposite(final PcrSelection pcrSelection, final List pcrValueList) { @@ -90,13 +87,11 @@ public class PcrComposite { } - /** * Gets the value of the valueSize property, the length in bytes of the * array of PcrValue complex types. * * @return int value representing the valueSize - * */ @XmlElement(name = "ValueSize", required = true) public final int getValueSize() { diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/tpm/PcrInfoShort.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/tpm/PcrInfoShort.java index a81c87f0..3d0fc054 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/tpm/PcrInfoShort.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/tpm/PcrInfoShort.java @@ -39,7 +39,7 @@ import java.util.List; @XmlType(name = "PcrInfoShort", namespace = "http://www.trustedcomputinggroup.org/XML/SCHEMA/" + "Integrity_Report_v1_0#", propOrder = {"pcrSelection", - "localityAtRelease", "compositeHash", "pcrComposite" }) + "localityAtRelease", "compositeHash", "pcrComposite"}) @Embeddable public class PcrInfoShort { @@ -77,16 +77,12 @@ public class PcrInfoShort { /** * Constructor used to create a PcrInfoShort object. * - * @param pcrSelection - * PcrSelection defines which TPM PCRs are used in the TPM Quote. - * @param localityAtRelease - * short value includes locality information to provide the - * requestor a more complete view of the current platform - * configuration - * @param compositeHash - * A hash of PcrComposite - * @param pcrComposite - * A structure containing the actual values of the PCRs quoted. + * @param pcrSelection PcrSelection defines which TPM PCRs are used in the TPM Quote. + * @param localityAtRelease short value includes locality information to provide the + * requestor a more complete view of the current platform + * configuration + * @param compositeHash A hash of PcrComposite + * @param pcrComposite A structure containing the actual values of the PCRs quoted. */ public PcrInfoShort(final PcrSelection pcrSelection, final short localityAtRelease, final byte[] compositeHash, @@ -126,8 +122,7 @@ public class PcrInfoShort { * collected PCR values match the digest in the quote. * * @return byte array containing the digest - * @throws NoSuchAlgorithmException - * if MessageDigest doesn't recognize "SHA-1" or "SHA-256" + * @throws NoSuchAlgorithmException if MessageDigest doesn't recognize "SHA-1" or "SHA-256" */ public final byte[] getCalculatedDigest() throws NoSuchAlgorithmException { if (this.isTpm1()) { @@ -159,7 +154,7 @@ public class PcrInfoShort { byteBuffer.put(this.pcrSelection.getValue()); byteBuffer.putInt(pcrComposite.getValueSize()); - for (TPMMeasurementRecord record: pcrComposite.getPcrValueList()) { + for (TPMMeasurementRecord record : pcrComposite.getPcrValueList()) { byteBuffer.put(record.getHash().getDigest()); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/tpm/PcrSelection.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/tpm/PcrSelection.java index 1692697c..93c1b561 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/tpm/PcrSelection.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/tpm/PcrSelection.java @@ -6,7 +6,6 @@ import jakarta.xml.bind.annotation.XmlAccessorType; import jakarta.xml.bind.annotation.XmlAttribute; import jakarta.xml.bind.annotation.XmlSchemaType; import jakarta.xml.bind.annotation.XmlType; -import lombok.extern.java.Log; import lombok.extern.log4j.Log4j2; import java.nio.ByteBuffer; @@ -27,12 +26,11 @@ import java.util.Arrays; @Embeddable public class PcrSelection { - private static final int MAX_SIZE_PCR_ARRAY = 3; /** * All PCRs are on. */ public static final int ALL_PCRS_ON = 0xffffff; - + private static final int MAX_SIZE_PCR_ARRAY = 3; @XmlAttribute(name = "PcrSelect", required = true) private final byte[] pcrSelect; @@ -50,9 +48,7 @@ public class PcrSelection { * Each byte represents 8 PCRs. Byte 0 indicates PCRs 0-7, byte 1 8-15 and * so on. For each byte, the individual bits represent a corresponding PCR. * - * @param pcrSelect - * byte array indicating which PCRS are selected - * + * @param pcrSelect byte array indicating which PCRS are selected */ public PcrSelection(final byte[] pcrSelect) { if (pcrSelect == null) { @@ -74,8 +70,7 @@ public class PcrSelection { * selection value. For example, to select the first 3 PCRs, one would use * the long value 7 (b0000 0000 0000 0111). * - * @param pcrSelectLong - * long value representing the bits to be selected + * @param pcrSelectLong long value representing the bits to be selected */ public PcrSelection(final long pcrSelectLong) { if (pcrSelectLong > ALL_PCRS_ON) { diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/type/InetAddressType.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/type/InetAddressType.java index 27fc35c4..a7ae064c 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/type/InetAddressType.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/type/InetAddressType.java @@ -72,19 +72,13 @@ public final class InetAddressType implements UserType { * Converts the IP address that is stored as a String and * converts it to an InetAddress. * - * @param rs - * result set - * @param index - * column names - * @param session - * session - * @param owner - * owner + * @param rs result set + * @param index column names + * @param session session + * @param owner owner * @return InetAddress of String - * @throws HibernateException - * if unable to convert the String to an InetAddress - * @throws SQLException - * if unable to retrieve the String from the result set + * @throws HibernateException if unable to convert the String to an InetAddress + * @throws SQLException if unable to retrieve the String from the result set */ @Override public Object nullSafeGet(final ResultSet rs, final int index, @@ -107,9 +101,9 @@ public final class InetAddressType implements UserType { * Converts the InetAddress value to a * String and stores it in the database. * - * @param st prepared statement - * @param value InetAddress - * @param index index + * @param st prepared statement + * @param value InetAddress + * @param index index * @param session session * @throws SQLException if unable to set the value in the result set */ @@ -165,7 +159,7 @@ public final class InetAddressType implements UserType { * immutable. * * @param cached cached - * @param owner owner + * @param owner owner * @return cached */ @Override @@ -178,8 +172,8 @@ public final class InetAddressType implements UserType { * immutable. * * @param original original - * @param target target - * @param owner owner + * @param target target + * @param owner owner * @return original */ @Override diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/type/X509CertificateType.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/type/X509CertificateType.java index 9836a682..9dfc6eee 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/type/X509CertificateType.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/type/X509CertificateType.java @@ -26,7 +26,7 @@ import java.util.Objects; * Hibernate. This class provides the mapping from X509Certificate * to Hibernate commands to JDBC. */ -@NoArgsConstructor(access= AccessLevel.PUBLIC) +@NoArgsConstructor(access = AccessLevel.PUBLIC) public final class X509CertificateType implements UserType { @Override @@ -73,19 +73,13 @@ public final class X509CertificateType implements UserType { * Converts the X509Certificate that is stored as a String and * converts it to an X509Certificate. * - * @param rs - * result set - * @param names - * column names - * @param session - * session - * @param owner - * owner + * @param rs result set + * @param names column names + * @param session session + * @param owner owner * @return X509Certificate of String - * @throws HibernateException - * if unable to convert the String to an X509Certificate - * @throws SQLException - * if unable to retrieve the String from the result set + * @throws HibernateException if unable to convert the String to an X509Certificate + * @throws SQLException if unable to retrieve the String from the result set */ @Override public Object nullSafeGet(final ResultSet rs, final int names, @@ -111,9 +105,9 @@ public final class X509CertificateType implements UserType { * Converts the X509Certificate value to a * String and stores it in the database. * - * @param st prepared statement - * @param value X509Certificate - * @param index index + * @param st prepared statement + * @param value X509Certificate + * @param index index * @param session session * @throws SQLException if unable to set the value in the result set */ @@ -131,7 +125,7 @@ public final class X509CertificateType implements UserType { } catch (Exception e) { final String msg = String.format("unable to convert certificate: %s", - value.toString()); + value); throw new HibernateException(msg, e); } } @@ -178,7 +172,7 @@ public final class X509CertificateType implements UserType { * immutable. * * @param cached cached - * @param owner owner + * @param owner owner * @return cached */ @Override @@ -191,8 +185,8 @@ public final class X509CertificateType implements UserType { * immutable. * * @param original original - * @param target target - * @param owner owner + * @param target target + * @param owner owner * @return original */ @Override diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/AcaPciIds.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/AcaPciIds.java index 1234ebca..6725b13d 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/AcaPciIds.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/AcaPciIds.java @@ -3,7 +3,6 @@ package hirs.attestationca.persist.util; import hirs.attestationca.persist.entity.userdefined.certificate.ComponentResult; import hirs.attestationca.persist.entity.userdefined.certificate.attributes.ComponentIdentifier; import hirs.attestationca.persist.entity.userdefined.certificate.attributes.V2.ComponentIdentifierV2; - import lombok.extern.log4j.Log4j2; import org.bouncycastle.asn1.DERUTF8String; @@ -35,6 +34,7 @@ public final class AcaPciIds { /** * Iterate through all components and translate PCI hardware IDs as necessary. It will only * translate ComponentIdentifierV2+ objects as it relies on Component Class information. + * * @param components List of ComponentIdentifiers. * @return the translated list of ComponentIdentifiers. */ @@ -58,6 +58,7 @@ public final class AcaPciIds { /** * Iterate through all components and translate PCI hardware IDs as necessary. It will only * translate ComponentResults objects as it relies on Component Class information. + * * @param componentResults List of ComponentResults. * @return the translated list of ComponentResults. */ @@ -75,6 +76,7 @@ public final class AcaPciIds { /** * Translate Vendor and Device IDs, if found, in ComponentIdentifierV2 objects. * It will only translate ID values, any other value will pass through. + * * @param component ComponentIdentifierV2 object. * @return the translated ComponentIdentifierV2 object. */ @@ -113,6 +115,7 @@ public final class AcaPciIds { /** * Translate Vendor and Device IDs, if found, in ComponentResult objects. * It will only translate ID values, any other value will pass through. + * * @param componentResult ComponentResult object. * @return the translated ComponentResult object. */ diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/CredentialHelper.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/CredentialHelper.java index 8c4c38a2..df4becff 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/CredentialHelper.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/CredentialHelper.java @@ -1,8 +1,6 @@ package hirs.attestationca.persist.util; import hirs.attestationca.persist.entity.userdefined.certificate.CertificateVariables; -import lombok.AccessLevel; -import lombok.NoArgsConstructor; import lombok.extern.log4j.Log4j2; import org.bouncycastle.util.encoders.Base64; @@ -17,6 +15,7 @@ public final class CredentialHelper { /** * Small method to check if the certificate is a PEM. + * * @param possiblePEM header information * @return true if it is. */ @@ -27,6 +26,7 @@ public final class CredentialHelper { /** * Small method to check if there are multi pem files + * * @param possiblePEM header information * @return true if it is. */ @@ -45,6 +45,7 @@ public final class CredentialHelper { /** * Method to remove header footer information from PEM + * * @param pemFile string representation of the file * @return a cleaned up raw byte object */ @@ -59,6 +60,7 @@ public final class CredentialHelper { /** * The method is used to remove unwanted spaces and other artifacts from the certificate. + * * @param certificateBytes raw byte form * @return a cleaned up byte form */ @@ -112,6 +114,7 @@ public final class CredentialHelper { /** * Return the string associated with the boolean slot. + * * @param bit associated with the location in the array. * @return string value of the bit set. */ @@ -157,6 +160,7 @@ public final class CredentialHelper { * This method is to take the DNs from certificates and sort them in an order * that will be used to lookup issuer certificates. This will not be stored in * the certificate, just the DB for lookup. + * * @param distinguishedName the original DN string. * @return a modified string of sorted DNs */ diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/CredentialValidator.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/CredentialValidator.java index bb4beedc..14ac22bf 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/CredentialValidator.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/CredentialValidator.java @@ -33,8 +33,8 @@ public class CredentialValidator extends SupplyChainCredentialValidator { /** * Checks if the endorsement credential is valid. * - * @param ec the endorsement credential to verify. - * @param trustStore trust store holding trusted certificates. + * @param ec the endorsement credential to verify. + * @param trustStore trust store holding trusted certificates. * @param acceptExpired whether or not to accept expired and not yet valid certificates * as valid. * @return the result of the validation. @@ -98,8 +98,8 @@ public class CredentialValidator extends SupplyChainCredentialValidator { /** * Checks if the platform credential is valid. * - * @param pc The platform credential to verify. - * @param trustStore trust store holding trusted certificates. + * @param pc The platform credential to verify. + * @param trustStore trust store holding trusted certificates. * @param acceptExpired whether or not to accept expired certificates as valid. * @return The result of the validation. */ @@ -163,16 +163,17 @@ public class CredentialValidator extends SupplyChainCredentialValidator { /** * Checks if the platform credential's attributes are valid. - * @param platformCredential The platform credential to verify. - * @param deviceInfoReport The device info report containing - * serial number of the platform to be validated. - * @param endorsementCredential The endorsement credential supplied from the same - * identity request as the platform credential. - * @param componentResultRepository db access to component result of mismatching - * @param componentAttributeRepository db access to component attribute match status - * @param componentInfos list of device components - * @param provisionSessionId UUID associated with this run of the provision - * @param ignoreRevisionAttribute policy flag to ignore the revision attribute + * + * @param platformCredential The platform credential to verify. + * @param deviceInfoReport The device info report containing + * serial number of the platform to be validated. + * @param endorsementCredential The endorsement credential supplied from the same + * identity request as the platform credential. + * @param componentResultRepository db access to component result of mismatching + * @param componentAttributeRepository db access to component attribute match status + * @param componentInfos list of device components + * @param provisionSessionId UUID associated with this run of the provision + * @param ignoreRevisionAttribute policy flag to ignore the revision attribute * @return The result of the validation. */ public static AppraisalStatus validatePlatformCredentialAttributes( @@ -223,16 +224,17 @@ public class CredentialValidator extends SupplyChainCredentialValidator { /** * Checks if the delta credential's attributes are valid. - * @param deviceInfoReport The device info report containing - * serial number of the platform to be validated. - * @param basePlatformCredential the base credential from the same identity request - * * as the delta credential. - * @param deltaMapping delta certificates associated with the - * * delta supply validation. - * @param componentInfos list of device components - * @param componentResultRepository repository for component results + * + * @param deviceInfoReport The device info report containing + * serial number of the platform to be validated. + * @param basePlatformCredential the base credential from the same identity request + * * as the delta credential. + * @param deltaMapping delta certificates associated with the + * * delta supply validation. + * @param componentInfos list of device components + * @param componentResultRepository repository for component results * @param componentAttributeRepository repository for the attribute status - * @param provisionSessionId the session id to share + * @param provisionSessionId the session id to share * @return the result of the validation. */ public static AppraisalStatus validateDeltaPlatformCredentialAttributes( diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/PcrValidator.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/PcrValidator.java index b53296ba..1ee17fca 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/PcrValidator.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/PcrValidator.java @@ -63,13 +63,38 @@ public class PcrValidator { */ public PcrValidator(final String[] pcrValues) { baselinePcrs = new String[TPMMeasurementRecord.MAX_PCR_ID + 1]; - for (int i = 0; i <= TPMMeasurementRecord.MAX_PCR_ID; i++) { - baselinePcrs[i] = pcrValues[i]; + System.arraycopy(pcrValues, 0, baselinePcrs, 0, TPMMeasurementRecord.MAX_PCR_ID + 1); + } + + public static String[] buildStoredPcrs(final String pcrContent, final int algorithmLength) { + // we have a full set of PCR values + String[] pcrSet = pcrContent.split("\\n"); + String[] storedPcrs = new String[TPMMeasurementRecord.MAX_PCR_ID + 1]; + + // we need to scroll through the entire list until we find + // a matching hash length + int offset = 1; + + for (int i = 0; i < pcrSet.length; i++) { + if (pcrSet[i].contains("sha")) { + // entered a new set, check size + if (pcrSet[i + offset].split(":")[1].trim().length() + == algorithmLength) { + // found the matching set + for (int j = 0; j <= TPMMeasurementRecord.MAX_PCR_ID; j++) { + storedPcrs[j] = pcrSet[++i].split(":")[1].trim(); + } + break; + } + } } + + return storedPcrs; } /** * Getter for the array of baseline PCRs. + * * @return instance of the PCRs. */ public String[] getBaselinePcrs() { @@ -78,6 +103,7 @@ public class PcrValidator { /** * Setter for the array of baseline PCRs. + * * @param baselinePcrs instance of the PCRs. */ public void setBaselinePcrs(final String[] baselinePcrs) { @@ -88,7 +114,7 @@ public class PcrValidator { * Compares the baseline pcr list and the quote pcr list. If the * ignore flags are set, 10 and 17-19 will be skipped for comparison. * - * @param storedPcrs non-baseline pcr list + * @param storedPcrs non-baseline pcr list * @param policySettings db entity that holds all of policy * @return a StringBuilder that is empty if everything passes. */ @@ -128,9 +154,10 @@ public class PcrValidator { /** * Checks that the expected FM events occurring. There are policy options that * will ignore certin PCRs, Event Types and Event Variables present. + * * @param tcgMeasurementLog Measurement log from the client - * @param eventValueMap The events stored as baseline to compare - * @param policySettings db entity that holds all of policy + * @param eventValueMap The events stored as baseline to compare + * @param policySettings db entity that holds all of policy * @return the events that didn't pass */ public List validateTpmEvents(final TCGEventLog tcgMeasurementLog, @@ -151,11 +178,11 @@ public class PcrValidator { log.info(String.format("GPT Ignored -> %s", tpe)); } else if (policySettings.isIgnoreOsEvtEnabled() && ( tpe.getEventTypeStr().contains(EVT_EFI_BOOT) - || tpe.getEventTypeStr().contains(EVT_EFI_VAR))) { + || tpe.getEventTypeStr().contains(EVT_EFI_VAR))) { log.info(String.format("OS Evt Ignored -> %s", tpe)); } else if (policySettings.isIgnoreOsEvtEnabled() && ( tpe.getEventTypeStr().contains(EVT_EFI_CFG) - && tpe.getEventContentStr().contains("SecureBoot"))) { + && tpe.getEventContentStr().contains("SecureBoot"))) { log.info(String.format("OS Evt Config Ignored -> %s", tpe)); } else { if (!eventValueMap.containsKey(tpe.getEventDigestStr())) { @@ -171,8 +198,8 @@ public class PcrValidator { /** * Compares hashs to validate the quote from the client. * - * @param tpmQuote the provided quote - * @param storedPcrs values from the RIM file + * @param tpmQuote the provided quote + * @param storedPcrs values from the RIM file * @param policySettings db entity that holds all of policy * @return true if validated, false if not */ @@ -211,10 +238,10 @@ public class PcrValidator { try { - // The calculated string is being used in the contains method - // because the TPM Quote's hash isn't just for PCR values, - // it contains the calculated digest of the PCRs, along with - // other information. + // The calculated string is being used in the contains method + // because the TPM Quote's hash isn't just for PCR values, + // it contains the calculated digest of the PCRs, along with + // other information. String calculatedString = Hex.encodeHexString( pcrInfoShort.getCalculatedDigest()); log.debug("Validating PCR information with the following:" + @@ -230,30 +257,4 @@ public class PcrValidator { return validated; } - - public static String[] buildStoredPcrs(final String pcrContent, final int algorithmLength) { - // we have a full set of PCR values - String[] pcrSet = pcrContent.split("\\n"); - String[] storedPcrs = new String[TPMMeasurementRecord.MAX_PCR_ID + 1]; - - // we need to scroll through the entire list until we find - // a matching hash length - int offset = 1; - - for (int i = 0; i < pcrSet.length; i++) { - if (pcrSet[i].contains("sha")) { - // entered a new set, check size - if (pcrSet[i + offset].split(":")[1].trim().length() - == algorithmLength) { - // found the matching set - for (int j = 0; j <= TPMMeasurementRecord.MAX_PCR_ID; j++) { - storedPcrs[j] = pcrSet[++i].split(":")[1].trim(); - } - break; - } - } - } - - return storedPcrs; - } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidator.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidator.java index 86e3cdef..749a34a8 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidator.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidator.java @@ -36,7 +36,7 @@ import java.util.Set; @Log4j2 @NoArgsConstructor -public class SupplyChainCredentialValidator { +public class SupplyChainCredentialValidator { /** * used to identify and clear a nuc @@ -78,13 +78,10 @@ public class SupplyChainCredentialValidator { * continue to try to find the signing cert of the intermediate cert. It will continue searching * until it follows the chain up to a root (self-signed) cert. * - * @param cert - * certificate to validate - * @param trustStore - * trust store holding trusted root certificates and intermediate certificates + * @param cert certificate to validate + * @param trustStore trust store holding trusted root certificates and intermediate certificates * @return the certificate chain if validation is successful - * @throws SupplyChainValidatorException - * if the verification is not successful + * @throws SupplyChainValidatorException if the verification is not successful */ public static String verifyCertificate(final X509AttributeCertificateHolder cert, final KeyStore trustStore) throws SupplyChainValidatorException { @@ -122,13 +119,10 @@ public class SupplyChainCredentialValidator { * continue to try to find the signing cert of the intermediate cert. It will continue searching * until it follows the chain up to a root (self-signed) cert. * - * @param cert - * certificate to validate - * @param trustStore - * trust store holding trusted root certificates and intermediate certificates + * @param cert certificate to validate + * @param trustStore trust store holding trusted root certificates and intermediate certificates * @return the certificate chain if validation is successful - * @throws SupplyChainValidatorException - * if the verification is not successful + * @throws SupplyChainValidatorException if the verification is not successful */ public static boolean verifyCertificate(final X509Certificate cert, final KeyStore trustStore) throws SupplyChainValidatorException { @@ -164,12 +158,10 @@ public class SupplyChainCredentialValidator { * to find the signing cert of the intermediate cert. It will continue searching until it * follows the chain up to a root (self-signed) cert. * - * @param cert - * certificate to validate - * @param additionalCerts - * Set of certs to validate against + * @param cert certificate to validate + * @param additionalCerts Set of certs to validate against * @return String status of the cert chain validation - - * blank if successful, error message otherwise + * blank if successful, error message otherwise * @throws SupplyChainValidatorException tried to validate using null certificates */ public static String validateCertChain(final X509AttributeCertificateHolder cert, @@ -227,12 +219,10 @@ public class SupplyChainCredentialValidator { * to find the signing cert of the intermediate cert. It will continue searching until it * follows the chain up to a root (self-signed) cert. * - * @param cert - * certificate to validate - * @param additionalCerts - * Set of certs to validate against + * @param cert certificate to validate + * @param additionalCerts Set of certs to validate against * @return String status of the cert chain validation - - * blank if successful, error message otherwise + * blank if successful, error message otherwise * @throws SupplyChainValidatorException tried to validate using null certificates */ public static String validateCertChain(final X509Certificate cert, @@ -277,7 +267,8 @@ public class SupplyChainCredentialValidator { /** * Parses the output from PACCOR's allcomponents.sh script into ComponentInfo objects. - * @param hostName the host machine associated with the component + * + * @param hostName the host machine associated with the component * @param paccorOutput the output from PACCOR's allcomoponents.sh * @return a list of ComponentInfo objects built from paccorOutput * @throws java.io.IOException if something goes wrong parsing the JSON @@ -333,10 +324,8 @@ public class SupplyChainCredentialValidator { * Checks if the issuer info of an attribute cert matches the supposed signing cert's * distinguished name. * - * @param cert - * the attribute certificate with the signature to validate - * @param signingCert - * the certificate with the public key to validate + * @param cert the attribute certificate with the signature to validate + * @param signingCert the certificate with the public key to validate * @return boolean indicating if the names * @throws SupplyChainValidatorException tried to validate using null certificates */ @@ -359,10 +348,8 @@ public class SupplyChainCredentialValidator { * Checks if the issuer info of a public-key cert matches the supposed signing cert's * distinguished name. * - * @param cert - * the public-key certificate with the signature to validate - * @param signingCert - * the certificate with the public key to validate + * @param cert the public-key certificate with the signature to validate + * @param signingCert the certificate with the public key to validate * @return boolean indicating if the names * @throws SupplyChainValidatorException tried to validate using null certificates */ @@ -387,10 +374,8 @@ public class SupplyChainCredentialValidator { * Checks if the signature of an attribute cert is validated against the signing cert's public * key. * - * @param cert - * the public-key certificate with the signature to validate - * @param signingCert - * the certificate with the public key to validate + * @param cert the public-key certificate with the signature to validate + * @param signingCert the certificate with the public key to validate * @return boolean indicating if the validation passed * @throws SupplyChainValidatorException tried to validate using null certificates */ @@ -423,10 +408,8 @@ public class SupplyChainCredentialValidator { * Checks if the signature of a public-key cert is validated against the signing cert's public * key. * - * @param cert - * the attribute certificate with the signature to validate - * @param signingCert - * the certificate with the public key to validate + * @param cert the attribute certificate with the signature to validate + * @param signingCert the certificate with the public key to validate * @return boolean indicating if the validation passed * @throws SupplyChainValidatorException tried to validate using null certificates */ @@ -442,10 +425,8 @@ public class SupplyChainCredentialValidator { /** * Checks if an X509 Attribute Certificate is valid directly against a public key. * - * @param cert - * the attribute certificate with the signature to validate - * @param signingKey - * the key to use to check the attribute cert + * @param cert the attribute certificate with the signature to validate + * @param signingKey the key to use to check the attribute cert * @return boolean indicating if the validation passed * @throws SupplyChainValidatorException tried to validate using null certificates */ @@ -472,8 +453,7 @@ public class SupplyChainCredentialValidator { * Checks whether given X.509 public-key certificate is self-signed. If the cert can be * verified using its own public key, that means it was self-signed. * - * @param cert - * X.509 Certificate + * @param cert X.509 Certificate * @return boolean indicating if the cert was self-signed */ private static boolean isSelfSigned(final X509Certificate cert) diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/SupplyChainValidatorException.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/SupplyChainValidatorException.java index 82a300e8..456eb043 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/SupplyChainValidatorException.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/SupplyChainValidatorException.java @@ -11,10 +11,8 @@ public class SupplyChainValidatorException extends Exception { * Creates a new SupplyChainValidatorException that has the message * message and Throwable cause cause. * - * @param message - * exception message - * @param cause - * root cause + * @param message exception message + * @param cause root cause */ public SupplyChainValidatorException(final String message, final Throwable cause) { super(message, cause); @@ -24,8 +22,7 @@ public class SupplyChainValidatorException extends Exception { * Creates a new SupplyChainValidatorException that has the String * message message. * - * @param message - * exception message + * @param message exception message */ public SupplyChainValidatorException(final String message) { super(message); @@ -35,8 +32,7 @@ public class SupplyChainValidatorException extends Exception { * Creates a new SupplyChainValidatorException that has the Throwable * cause cause. * - * @param cause - * root cause + * @param cause root cause */ public SupplyChainValidatorException(final Throwable cause) { super(cause); diff --git a/HIRS_AttestationCA/src/main/resources/identity_transform.xslt b/HIRS_AttestationCA/src/main/resources/identity_transform.xslt index e5b58225..77396b49 100644 --- a/HIRS_AttestationCA/src/main/resources/identity_transform.xslt +++ b/HIRS_AttestationCA/src/main/resources/identity_transform.xslt @@ -1,6 +1,6 @@ - - + + diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/AttestationCertificateAuthorityTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/AttestationCertificateAuthorityTest.java index a638afa1..a5e1c56f 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/AttestationCertificateAuthorityTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/AttestationCertificateAuthorityTest.java @@ -72,62 +72,10 @@ import static org.mockito.Mockito.when; @TestInstance(TestInstance.Lifecycle.PER_CLASS) // needed to use non-static BeforeAll public class AttestationCertificateAuthorityTest { - /** - * This internal class handles setup for testing the function - * generateCredential() from class AbstractProcessor. Because the - * function is Protected and in a different package than the test, - * it cannot be accessed directly. - */ - @Nested - public class AccessAbstractProcessor extends AbstractProcessor { - - /** - * Constructor. - * - * @param privateKey the private key of the ACA - * @param validDays int for the time in which a certificate is valid. - */ - public AccessAbstractProcessor(final PrivateKey privateKey, - final int validDays) { - super(privateKey, validDays); - } - - /** - * Public wrapper for the protected function generateCredential(), to access for testing. - * - * @param publicKey cannot be null - * @param endorsementCredential the endorsement credential - * @param platformCredentials the set of platform credentials - * @param deviceName The host name used in the subject alternative name - * @param acaCertificate the aca certificate - * @return the generated X509 certificate - */ - public X509Certificate accessGenerateCredential(final PublicKey publicKey, - final EndorsementCredential endorsementCredential, - final List platformCredentials, - final String deviceName, - final X509Certificate acaCertificate) { - - return generateCredential(publicKey, - endorsementCredential, - platformCredentials, - deviceName, - acaCertificate); - } - } - - // object in test - private AttestationCertificateAuthority aca; - private AccessAbstractProcessor abstractProcessor; - - // test key pair - private KeyPair keyPair; - // length of IV used in PKI private static final int ENCRYPTION_IV_LEN = 16; // length of secret key used in PKI private static final int SECRETKEY_LEN = 128; - private static final String EK_PUBLIC_PATH = "/tpm2/ek.pub"; private static final String AK_PUBLIC_PATH = "/tpm2/ak.pub"; private static final String AK_NAME_PATH = "/tpm2/ak.name"; @@ -167,7 +115,11 @@ public class AttestationCertificateAuthorityTest { private static final String AK_NAME_HEX = "00 0b 6e 8f 79 1c 7e 16 96 1b 11 71 65 9c e0 cd" + "ae 0d 4d aa c5 41 be 58 89 74 67 55 96 c2 5e 38" + "e2 94"; - + // object in test + private AttestationCertificateAuthority aca; + private AccessAbstractProcessor abstractProcessor; + // test key pair + private KeyPair keyPair; /** * Registers bouncy castle as a security provider. Normally the JEE container will handle this, @@ -199,7 +151,7 @@ public class AttestationCertificateAuthorityTest { @Test public void testProcessIdentityClaimTpm2NullRequest() { assertThrows(IllegalArgumentException.class, () -> - aca.processIdentityClaimTpm2(null)); + aca.processIdentityClaimTpm2(null)); } /** @@ -209,7 +161,7 @@ public class AttestationCertificateAuthorityTest { public void testGetPublicKey() { // encoded byte array to be returned by public key - byte[] encoded = new byte[]{0, 1, 0, 1, 0}; + byte[] encoded = new byte[] {0, 1, 0, 1, 0}; // create mocks for testing X509Certificate acaCertificate = mock(X509Certificate.class); @@ -260,7 +212,7 @@ public class AttestationCertificateAuthorityTest { /** * Tests {@link ProvisionUtils#decryptSymmetricBlob( - * byte[], byte[], byte[], String)}. + *byte[], byte[], byte[], String)}. * * @throws Exception during aca processing */ @@ -315,7 +267,7 @@ public class AttestationCertificateAuthorityTest { /** * Tests {@link ProvisionUtils#generateAsymmetricContents( - * byte[], byte[], PublicKey)}. + *byte[], byte[], PublicKey)}. * * @throws Exception during aca processing */ @@ -323,7 +275,7 @@ public class AttestationCertificateAuthorityTest { public void testGenerateAsymmetricContents() throws Exception { // "encoded" identity proof (returned by struct converter) - byte[] identityProofEncoded = new byte[]{0, 0, 1, 1}; + byte[] identityProofEncoded = new byte[] {0, 0, 1, 1}; // generate a random session key to be used for encryption and decryption byte[] sessionKey = new byte[ENCRYPTION_IV_LEN]; @@ -478,10 +430,10 @@ public class AttestationCertificateAuthorityTest { assertEquals("", certificate.getSubjectX500Principal().getName()); assertEquals("exampleIdLabel", ((X500Name) GeneralNames.fromExtensions(((TBSCertificate.getInstance( - certificate.getTBSCertificate()).getExtensions())), Extension. - subjectAlternativeName).getNames()[0].getName()).getRDNs( + certificate.getTBSCertificate()).getExtensions())), Extension. + subjectAlternativeName).getNames()[0].getName()).getRDNs( IssuedCertificateAttributeHelper.TCPA_AT_TPM_ID_LABEL)[0].getFirst() - .getValue().toString()); + .getValue().toString()); assertArrayEquals(modulus, resultMod); @@ -540,8 +492,9 @@ public class AttestationCertificateAuthorityTest { /** * Tests parsing the EK from the TPM2 output file. + * * @throws URISyntaxException incorrect resource path - * @throws IOException unable to read from file + * @throws IOException unable to read from file */ @Test public void testParseEk() throws URISyntaxException, IOException { @@ -567,8 +520,9 @@ public class AttestationCertificateAuthorityTest { /** * Tests parsing the AK public key from the TPM2 output file. + * * @throws URISyntaxException incorrect resource path - * @throws IOException unable to read from file + * @throws IOException unable to read from file */ @Test public void testParseAk() throws URISyntaxException, IOException { @@ -594,8 +548,9 @@ public class AttestationCertificateAuthorityTest { /** * Tests parsing the AK name from the TPM2 output file. - * @throws URISyntaxException incorrect resource path - * @throws IOException unable to read from file + * + * @throws URISyntaxException incorrect resource path + * @throws IOException unable to read from file * @throws NoSuchAlgorithmException inavlid algorithm */ @Test @@ -624,8 +579,9 @@ public class AttestationCertificateAuthorityTest { * and ekPubPath are correct. Your output file will be * HIRS_AttestationCA/src/test/resources/tpm2/test/make.blob and the nonce used will be * output as HIRS_AttestationCA/src/test/resources/tpm2/test/secret.blob + * * @throws URISyntaxException invalid file path - * @throws IOException unable to read file + * @throws IOException unable to read file */ @Disabled @Test @@ -647,7 +603,7 @@ public class AttestationCertificateAuthorityTest { ByteString blob = ProvisionUtils.tpm20MakeCredential(ekPub, akPub, nonce); Path resources = Objects.requireNonNull(Paths.get(Objects.requireNonNull(this.getClass().getResource( - "/").toURI())) + "/").toURI())) .getParent().getParent().getParent().getParent()); Path makeBlob = resources.resolve("src/test/resources/tpm2/test/make.blob"); Files.write(makeBlob, blob.toByteArray()); @@ -754,4 +710,48 @@ public class AttestationCertificateAuthorityTest { // return the cipher text return cipher.doFinal(blob); } + + /** + * This internal class handles setup for testing the function + * generateCredential() from class AbstractProcessor. Because the + * function is Protected and in a different package than the test, + * it cannot be accessed directly. + */ + @Nested + public class AccessAbstractProcessor extends AbstractProcessor { + + /** + * Constructor. + * + * @param privateKey the private key of the ACA + * @param validDays int for the time in which a certificate is valid. + */ + public AccessAbstractProcessor(final PrivateKey privateKey, + final int validDays) { + super(privateKey, validDays); + } + + /** + * Public wrapper for the protected function generateCredential(), to access for testing. + * + * @param publicKey cannot be null + * @param endorsementCredential the endorsement credential + * @param platformCredentials the set of platform credentials + * @param deviceName The host name used in the subject alternative name + * @param acaCertificate the aca certificate + * @return the generated X509 certificate + */ + public X509Certificate accessGenerateCredential(final PublicKey publicKey, + final EndorsementCredential endorsementCredential, + final List platformCredentials, + final String deviceName, + final X509Certificate acaCertificate) { + + return generateCredential(publicKey, + endorsementCredential, + platformCredentials, + deviceName, + acaCertificate); + } + } } diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/tpm/TPM2ProvisionerStateTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/tpm/TPM2ProvisionerStateTest.java index 72845e07..6367720d 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/tpm/TPM2ProvisionerStateTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/tpm/TPM2ProvisionerStateTest.java @@ -1,20 +1,20 @@ package hirs.attestationca.persist.entity.tpm; import hirs.attestationca.persist.entity.manager.TPM2ProvisionerStateRepository; - -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertArrayEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.Test; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.io.IOException; import java.util.Random; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + /** * Contains unit tests for {@link TPM2ProvisionerState}. */ @@ -88,9 +88,10 @@ public class TPM2ProvisionerStateTest { /** * Test that {@link TPM2ProvisionerState#getTPM2ProvisionerState( - * TPM2ProvisionerStateRepository, byte[])} works. + *TPM2ProvisionerStateRepository, byte[])} works. * {@link TPM2ProvisionerState#getTPM2ProvisionerState( - * TPM2ProvisionerStateRepository, byte[])}, null is returned. + *TPM2ProvisionerStateRepository, byte[])}, null is returned. + * * @throws IOException this will never happen */ @Test @@ -116,7 +117,8 @@ public class TPM2ProvisionerStateTest { /** * Test that if a null is passed as a nonce to * {@link TPM2ProvisionerState#getTPM2ProvisionerState( - * TPM2ProvisionerStateRepository, byte[])}, null is returned. + *TPM2ProvisionerStateRepository, byte[])}, null is returned. + * * @throws IOException this will never happen */ @Test @@ -139,7 +141,8 @@ public class TPM2ProvisionerStateTest { /** * Test that if a nonce that is less than 8 bytes is passed to * {@link TPM2ProvisionerState#getTPM2ProvisionerState( - * TPM2ProvisionerStateRepository, byte[])}, null is returned. + *TPM2ProvisionerStateRepository, byte[])}, null is returned. + * * @throws IOException this will never happen */ @Test diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/AbstractUserdefinedEntityTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/AbstractUserdefinedEntityTest.java index 56ff99c8..086d8e6c 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/AbstractUserdefinedEntityTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/AbstractUserdefinedEntityTest.java @@ -33,7 +33,6 @@ import java.util.Objects; /** * Class with definitions and functions common to multiple Userdefined Entity object tests. - * */ public class AbstractUserdefinedEntityTest { @@ -58,54 +57,45 @@ public class AbstractUserdefinedEntityTest { */ public static final String FAKE_ROOT_CA_SUBJECT_KEY_IDENTIFIER_HEX = "58ec313a1699f94c1c8c4e2c6412402b258f0177"; - - /** - * Location of a test identity certificate. - */ - private static final String TEST_IDENTITY_CERT = "/tpm/sample_identity_cert.cer"; - /** * Location of a test platform attribute cert. */ public static final String TEST_PLATFORM_CERT_1 = "/validation/platform_credentials/Intel_pc1.cer"; - /** * Location of another, slightly different platform attribute cert. */ public static final String TEST_PLATFORM_CERT_2 = "/validation/platform_credentials/Intel_pc2.cer"; - /** * Location of another, slightly different platform attribute cert. */ public static final String TEST_PLATFORM_CERT_3 = "/validation/platform_credentials/Intel_pc3.cer"; - /** * Platform cert with comma separated baseboard and chassis serial number. */ public static final String TEST_PLATFORM_CERT_4 = "/validation/platform_credentials/Intel_pc4.pem"; - /** * Another platform cert with comma separated baseboard and chassis serial number. */ public static final String TEST_PLATFORM_CERT_5 = "/validation/platform_credentials/Intel_pc5.pem"; - /** * Location of another, slightly different platform attribute cert. */ public static final String TEST_PLATFORM_CERT_6 = "/validation/platform_credentials/TPM_INTC_Platform_Cert_RSA.txt"; - - private static final Logger LOGGER = LogManager.getLogger(DeviceInfoReportTest.class); - /** * Dummy message for supply chain validation test. */ public static final String VALIDATION_MESSAGE = "Some message."; + /** + * Location of a test identity certificate. + */ + private static final String TEST_IDENTITY_CERT = "/tpm/sample_identity_cert.cer"; + private static final Logger LOGGER = LogManager.getLogger(DeviceInfoReportTest.class); /** * Construct a test certificate from the given parameters. @@ -294,8 +284,8 @@ public class AbstractUserdefinedEntityTest { /** * Construct a SupplyChainValidation for use in tests according to the provided parameters. * - * @param type the type of validation - * @param result the appraisal result + * @param type the type of validation + * @param result the appraisal result * @param certificates the certificates related to this validation * @return the resulting SupplyChainValidation object */ diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/CertificateTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/CertificateTest.java index 00225c6b..38abacb1 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/CertificateTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/CertificateTest.java @@ -21,11 +21,12 @@ import java.security.cert.X509Certificate; import java.util.Arrays; import java.util.Objects; -import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertArrayEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * This class tests functionality of the {@link Certificate} class. @@ -88,6 +89,37 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { private static final String EK_CERT_WITH_PADDED_BYTES = "/certificates/ek_cert_with_padded_bytes.cer"; + /** + * Construct a CertificateAuthorityCredential from the given parameters. + * + * @param filename the location of the certificate to be used + * @return the newly-constructed Certificate + * @throws IOException if there is a problem constructing the test certificate + */ + public static Certificate getTestCertificate( + final String filename) throws IOException { + return getTestCertificate(CertificateAuthorityCredential.class, filename); + } + + private static X509Certificate readX509Certificate(final String resourceName) + throws IOException { + + CertificateFactory cf; + try { + cf = CertificateFactory.getInstance("X.509"); + } catch (CertificateException e) { + throw new IOException("Cannot get X509 CertificateFactory instance", e); + } + + try (FileInputStream certInputStream = new FileInputStream(Paths.get( + Objects.requireNonNull(CertificateTest.class.getResource( + resourceName)).toURI()).toFile() + )) { + return (X509Certificate) cf.generateCertificate(certInputStream); + } catch (CertificateException | URISyntaxException e) { + throw new IOException("Cannot read certificate", e); + } + } /** * Tests that a certificate can be constructed from a byte array. @@ -132,7 +164,7 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { public void testConstructCertFromEmptyByteArray() throws IOException, CertificateException { assertThrows(IllegalArgumentException.class, () -> - new CertificateAuthorityCredential(new byte[]{})); + new CertificateAuthorityCredential(new byte[] {})); } /** @@ -293,7 +325,7 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { attrCertHolder.getIssuer().getNames()[0].toString(), platformCert.getIssuer() ); - assertEquals(null, platformCert.getSubject()); + assertNull(platformCert.getSubject()); assertArrayEquals(null, platformCert.getEncodedPublicKey()); assertArrayEquals(attrCertHolder.getSignature(), platformCert.getSignature()); assertEquals(attrCertHolder.getNotBefore(), platformCert.getBeginValidity()); @@ -492,36 +524,4 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { ).hashCode() ); } - - /** - * Construct a CertificateAuthorityCredential from the given parameters. - * - * @param filename the location of the certificate to be used - * @return the newly-constructed Certificate - * @throws IOException if there is a problem constructing the test certificate - */ - public static Certificate getTestCertificate( - final String filename) throws IOException { - return getTestCertificate(CertificateAuthorityCredential.class, filename); - } - - private static X509Certificate readX509Certificate(final String resourceName) - throws IOException { - - CertificateFactory cf; - try { - cf = CertificateFactory.getInstance("X.509"); - } catch (CertificateException e) { - throw new IOException("Cannot get X509 CertificateFactory instance", e); - } - - try (FileInputStream certInputStream = new FileInputStream(Paths.get( - Objects.requireNonNull(CertificateTest.class.getResource( - resourceName)).toURI()).toFile() - )) { - return (X509Certificate) cf.generateCertificate(certInputStream); - } catch (CertificateException | URISyntaxException e) { - throw new IOException("Cannot read certificate", e); - } - } } diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/DeviceTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/DeviceTest.java index 7f7a54fc..0053338f 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/DeviceTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/DeviceTest.java @@ -11,7 +11,6 @@ import static org.junit.jupiter.api.Assertions.assertNull; /** * This is the test class for the Device class. - * */ public final class DeviceTest extends AbstractUserdefinedEntityTest { @@ -113,7 +112,7 @@ public final class DeviceTest extends AbstractUserdefinedEntityTest { */ @Test public void testSetHealthStatus() { - final Device device = new Device("test-device", null, HealthStatus.UNKNOWN, + final Device device = new Device("test-device", null, HealthStatus.UNKNOWN, AppraisalStatus.Status.UNKNOWN, null, false, null, null); device.setHealthStatus(HealthStatus.TRUSTED); diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/PolicySettingsTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/PolicySettingsTest.java index dfd56a55..33f2a595 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/PolicySettingsTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/PolicySettingsTest.java @@ -1,10 +1,11 @@ package hirs.attestationca.persist.entity.userdefined; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.assertFalse; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + /** * Unit test class for PolicySettings. */ diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidationSummaryTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidationSummaryTest.java index acb3fe48..4b2d07c0 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidationSummaryTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidationSummaryTest.java @@ -26,16 +26,28 @@ public class SupplyChainValidationSummaryTest extends AbstractUserdefinedEntityT /** * Test device. - * */ private Device device; /** * List of test certificates. - * */ private List certificates; + /** + * Utility method for getting a Device that can be used for + * testing. + * + * @param name name for the Device + * @return device + */ + public static Device getTestDevice(final String name) { + final DeviceInfoReport deviceInfo = getTestDeviceInfoReport(); + return new Device(name, deviceInfo, HealthStatus.UNKNOWN, + AppraisalStatus.Status.UNKNOWN, null, + false, null, null); + } + /** * Create a set of certificates and a device for use by these tests. * @@ -152,28 +164,12 @@ public class SupplyChainValidationSummaryTest extends AbstractUserdefinedEntityT assertNotNull(twoBadValidations.getCreateTime()); } - /** - * Utility method for getting a Device that can be used for - * testing. - * - * @param name name for the Device - * - * @return device - */ - public static Device getTestDevice(final String name) { - final DeviceInfoReport deviceInfo = getTestDeviceInfoReport(); - return new Device(name, deviceInfo, HealthStatus.UNKNOWN, - AppraisalStatus.Status.UNKNOWN, null, - false, null, null); - } - /** * Utility method for getting a SupplyChainValidationSummary that can be used for * testing. * * @param numberOfValidations number of validations for the SupplyChainValidationSummary - * @param numFail number of failed validations - * + * @param numFail number of failed validations * @return device */ private SupplyChainValidationSummary getTestSummary( @@ -199,10 +195,7 @@ public class SupplyChainValidationSummaryTest extends AbstractUserdefinedEntityT Collection validations = new HashSet<>(); for (int i = 0; i < numberOfValidations; i++) { - boolean successful = true; - if (i >= (numberOfValidations - numFail)) { - successful = false; - } + boolean successful = i < (numberOfValidations - numFail); AppraisalStatus.Status result = AppraisalStatus.Status.FAIL; if (successful) { diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidationTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidationTest.java index 4a3e1a53..f9f78195 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidationTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidationTest.java @@ -14,6 +14,22 @@ import static org.junit.jupiter.api.Assertions.assertThrows; */ class SupplyChainValidationTest extends AbstractUserdefinedEntityTest { + /** + * Construct a SupplyChainValidation for use in tests. It will have a validation + * type of ENDORSEMENT_CREDENTIAL, will represent a successful validation, and will use + * multiple test certificates. + * + * @return the test SupplyChainValidation + * @throws IOException if there si + */ + public static SupplyChainValidation getTestSupplyChainValidation() throws IOException { + return getTestSupplyChainValidation( + SupplyChainValidation.ValidationType.ENDORSEMENT_CREDENTIAL, + AppraisalStatus.Status.PASS, + getAllTestCertificates() + ); + } + /** * Test that this class' getter methods work properly. * @@ -79,20 +95,4 @@ class SupplyChainValidationTest extends AbstractUserdefinedEntityTest { VALIDATION_MESSAGE ); } - - /** - * Construct a SupplyChainValidation for use in tests. It will have a validation - * type of ENDORSEMENT_CREDENTIAL, will represent a successful validation, and will use - * multiple test certificates. - * - * @return the test SupplyChainValidation - * @throws IOException if there si - */ - public static SupplyChainValidation getTestSupplyChainValidation() throws IOException { - return getTestSupplyChainValidation( - SupplyChainValidation.ValidationType.ENDORSEMENT_CREDENTIAL, - AppraisalStatus.Status.PASS, - getAllTestCertificates() - ); - } } diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateAuthorityCredentialTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateAuthorityCredentialTest.java index b0154d48..0481d449 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateAuthorityCredentialTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateAuthorityCredentialTest.java @@ -2,8 +2,6 @@ package hirs.attestationca.persist.entity.userdefined.certificate; import hirs.attestationca.persist.entity.userdefined.AbstractUserdefinedEntityTest; import org.apache.commons.codec.binary.Hex; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; import org.junit.jupiter.api.Test; import java.io.IOException; @@ -12,6 +10,9 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.security.cert.CertificateException; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + /** * Tests that CertificateAuthorityCredential properly parses its fields. */ @@ -21,10 +22,10 @@ public class CertificateAuthorityCredentialTest extends AbstractUserdefinedEntit * Tests that a CertificateAuthorityCredential can be created from an X.509 certificate and * that the subject key identifier is correctly extracted. * - * @throws IOException if the certificate could not be constructed properly + * @throws IOException if the certificate could not be constructed properly * @throws CertificateException if there is a problem with the KeyStore or de/serializing the * certificate - * @throws URISyntaxException if there is a problem constructing the path to the certificate + * @throws URISyntaxException if there is a problem constructing the path to the certificate */ @Test public void testGetSubjectKeyIdentifier() diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/EndorsementCredentialTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/EndorsementCredentialTest.java index f176b4b4..41467ec6 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/EndorsementCredentialTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/EndorsementCredentialTest.java @@ -1,10 +1,7 @@ package hirs.attestationca.persist.entity.userdefined.certificate; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.assertNotNull; - +import hirs.attestationca.persist.entity.userdefined.certificate.attributes.TPMSecurityAssertions; +import hirs.attestationca.persist.entity.userdefined.certificate.attributes.TPMSpecification; import org.junit.jupiter.api.Test; import java.io.IOException; @@ -12,8 +9,11 @@ import java.math.BigInteger; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import hirs.attestationca.persist.entity.userdefined.certificate.attributes.TPMSecurityAssertions; -import hirs.attestationca.persist.entity.userdefined.certificate.attributes.TPMSpecification; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * Tests for the EndorsementCredential class. @@ -32,6 +32,7 @@ public class EndorsementCredentialTest { /** * Tests the successful parsing of an EC using a test cert from STM. + * * @throws IOException test failed due to invalid certificate parsing */ @Test @@ -65,6 +66,7 @@ public class EndorsementCredentialTest { /** * Tests the successful parsing of an EC using a test cert from NUC 1. + * * @throws IOException test failed due to invalid certificate parsing */ @Test @@ -99,6 +101,7 @@ public class EndorsementCredentialTest { /** * Tests the successful parsing of an EC using a test cert from NUC 1, * using the static builder method. + * * @throws IOException test failed due to invalid certificate parsing */ @Test @@ -134,6 +137,7 @@ public class EndorsementCredentialTest { /** * Tests the successful parsing of an EC using a test cert from NUC 2. + * * @throws IOException test failed due to invalid certificate parsing */ @Test @@ -167,6 +171,7 @@ public class EndorsementCredentialTest { /** * Tests that different EC certificates aren't the same, even if their attributes are the same. + * * @throws IOException test failed due to invalid certificate parsing */ @Test diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/PlatformCredentialTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/PlatformCredentialTest.java index aec780e4..045e716e 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/PlatformCredentialTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/PlatformCredentialTest.java @@ -12,7 +12,6 @@ import org.apache.commons.codec.binary.Hex; import org.bouncycastle.util.encoders.Base64; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.fail; import java.io.IOException; import java.net.URISyntaxException; @@ -23,6 +22,8 @@ import java.util.Calendar; import java.util.List; import java.util.TimeZone; +import static org.junit.jupiter.api.Assertions.fail; + /** * Tests that a PlatformCredential parses its fields correctly. */ @@ -169,7 +170,7 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { * extension but is missing the subject alternative name extension. This certificate * also has a policy extension, but it is not currently parsed. * - * @throws IOException if an IO error occurs during processing + * @throws IOException if an IO error occurs during processing * @throws URISyntaxException if there is a problem constructing the cert's URI */ @Test @@ -206,7 +207,7 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { Assertions.assertEquals(credential.getCredentialType(), "TCPA Trusted Platform Endorsement"); // the platform certificate in this test does not contain the following information - Assertions.assertEquals(credential.getPlatformSerial(), null); + Assertions.assertNull(credential.getPlatformSerial()); Assertions.assertEquals(credential.getMajorVersion(), 1); Assertions.assertEquals(credential.getMinorVersion(), 2); Assertions.assertEquals(credential.getRevisionLevel(), 1); @@ -218,7 +219,7 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { * extension but is missing the subject alternative name extension. This certificate * also has a policy extension, but it is not currently parsed. * - * @throws IOException if an IO error occurs during processing + * @throws IOException if an IO error occurs during processing * @throws URISyntaxException if there is a problem constructing the cert's URI */ @Test @@ -255,7 +256,7 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { Assertions.assertEquals(credential.getCredentialType(), "TCPA Trusted Platform Endorsement"); // the platform certificate in this test does not contain the following information - Assertions.assertEquals(credential.getPlatformSerial(), null); + Assertions.assertNull(credential.getPlatformSerial()); Assertions.assertEquals(credential.getMajorVersion(), 1); Assertions.assertEquals(credential.getMinorVersion(), 2); Assertions.assertEquals(credential.getRevisionLevel(), 1); @@ -266,7 +267,7 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { * Tests the parsing of a platform credential that has a combined baseboard and chassis * serial number in one attribute can be parsed. * - * @throws IOException if an IO error occurs during processing + * @throws IOException if an IO error occurs during processing * @throws URISyntaxException if there is a problem constructing the cert's URI */ @Test @@ -311,7 +312,7 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { * Tests the parsing another platform credential that has a combined baseboard and chassis * serial number in one attribute can be parsed. * - * @throws IOException if an IO error occurs during processing + * @throws IOException if an IO error occurs during processing * @throws URISyntaxException if there is a problem constructing the cert's URI */ @Test @@ -355,7 +356,7 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { /** * Tests isIssuer of a platform credential. * - * @throws IOException if an IO error occurs during processing + * @throws IOException if an IO error occurs during processing * @throws URISyntaxException if there is a problem constructing the cert's URI */ @Test @@ -376,7 +377,7 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { /** * Tests platform Configuration Values. * - * @throws IOException if an IO error occurs during processing + * @throws IOException if an IO error occurs during processing * @throws URISyntaxException if there is a problem constructing the cert's URI */ @Test @@ -398,37 +399,30 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { ComponentIdentifier component; //Check component #2 - component = (ComponentIdentifier) allComponents.get(1); - Assertions.assertTrue(component.getComponentManufacturer() - .getString() - .equals("Intel Corporation")); - Assertions.assertTrue(component.getComponentModel() - .getString() - .equals("NUC7i5DNB")); - Assertions.assertTrue(component.getComponentSerial() - .getString() - .equals("BTDN732000QM")); + component = allComponents.get(1); + Assertions.assertEquals("Intel Corporation", component.getComponentManufacturer() + .getString()); + Assertions.assertEquals("NUC7i5DNB", component.getComponentModel() + .getString()); + Assertions.assertEquals("BTDN732000QM", component.getComponentSerial() + .getString()); //Check component #3 - component = (ComponentIdentifier) allComponents.get(2); - Assertions.assertTrue(component.getComponentManufacturer() - .getString() - .equals("Intel(R) Corporation")); - Assertions.assertTrue(component.getComponentModel().getString().equals("Core i5")); + component = allComponents.get(2); + Assertions.assertEquals("Intel(R) Corporation", component.getComponentManufacturer() + .getString()); + Assertions.assertEquals("Core i5", component.getComponentModel().getString()); Assertions.assertTrue(component.getFieldReplaceable().isTrue()); //Check component #5 - component = (ComponentIdentifier) allComponents.get(4); - Assertions.assertTrue(component.getComponentModel() - .getString() - .equals("Ethernet Connection I219-LM")); - Assertions.assertTrue(component.getComponentAddress().get(0) + component = allComponents.get(4); + Assertions.assertEquals("Ethernet Connection I219-LM", component.getComponentModel() + .getString()); + Assertions.assertEquals("8c:0f:6f:72:c6:c5", component.getComponentAddress().get(0) .getAddressValue() - .getString() - .equals("8c:0f:6f:72:c6:c5")); - Assertions.assertTrue(component.getComponentAddress().get(0) - .getAddressTypeValue() - .equals("ethernet mac")); + .getString()); + Assertions.assertEquals("ethernet mac", component.getComponentAddress().get(0) + .getAddressTypeValue()); //Check Platform Properties List platformProperties = platformConfig.getPlatformProperties(); @@ -441,22 +435,22 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { PlatformProperty property; //Check property #1 - property = (PlatformProperty) platformProperties.get(0); - Assertions.assertTrue(property.getPropertyName().getString().equals("vPro")); - Assertions.assertTrue(property.getPropertyValue().getString().equals("true")); + property = platformProperties.get(0); + Assertions.assertEquals("vPro", property.getPropertyName().getString()); + Assertions.assertEquals("true", property.getPropertyValue().getString()); //Check property #2 - property = (PlatformProperty) platformProperties.get(1); - Assertions.assertTrue(property.getPropertyName().getString().equals("AMT")); - Assertions.assertTrue(property.getPropertyValue().getString().equals("true")); + property = platformProperties.get(1); + Assertions.assertEquals("AMT", property.getPropertyName().getString()); + Assertions.assertEquals("true", property.getPropertyValue().getString()); //Check Platform Properties URI URIReference platformPropertyUri = platformConfig.getPlatformPropertiesUri(); Assertions.assertNotNull(platformPropertyUri); - Assertions.assertTrue(platformPropertyUri.getUniformResourceIdentifier() - .getString() - .equals("https://www.intel.com/platformproperties.xml")); + Assertions.assertEquals("https://www.intel.com/platformproperties.xml", + platformPropertyUri.getUniformResourceIdentifier() + .getString()); Assertions.assertNull(platformPropertyUri.getHashAlgorithm()); Assertions.assertNull(platformPropertyUri.getHashValue()); } @@ -464,7 +458,7 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { /** * Tests Platform Configuration Values. View platform Properties * - * @throws IOException if an IO error occurs during processing + * @throws IOException if an IO error occurs during processing * @throws URISyntaxException if there is a problem constructing the cert's URI */ @Test @@ -489,20 +483,20 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { PlatformProperty property; //Check property #1 - property = (PlatformProperty) platformProperties.get(0); - Assertions.assertTrue(property.getPropertyName().getString().equals("vPro")); - Assertions.assertTrue(property.getPropertyValue().getString().equals("true")); + property = platformProperties.get(0); + Assertions.assertEquals("vPro", property.getPropertyName().getString()); + Assertions.assertEquals("true", property.getPropertyValue().getString()); //Check property #2 - property = (PlatformProperty) platformProperties.get(1); - Assertions.assertTrue(property.getPropertyName().getString().equals("AMT")); - Assertions.assertTrue(property.getPropertyValue().getString().equals("true")); + property = platformProperties.get(1); + Assertions.assertEquals("AMT", property.getPropertyName().getString()); + Assertions.assertEquals("true", property.getPropertyValue().getString()); } /** * Tests Platform Configuration Values. View platform Properties * - * @throws IOException if an IO error occurs during processing + * @throws IOException if an IO error occurs during processing * @throws URISyntaxException if there is a problem constructing the cert's URI */ @Test @@ -524,25 +518,20 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { ComponentIdentifier component; //Check component #2 - component = (ComponentIdentifier) allComponents.get(1); - Assertions.assertTrue(component.getComponentManufacturer() - .getString() - .equals("Intel(R) Corporation")); - Assertions.assertTrue(component.getComponentModel() - .getString() - .equals("Intel(R) Core(TM) i5-7300U CPU @ 2.60GHz")); + component = allComponents.get(1); + Assertions.assertEquals("Intel(R) Corporation", component.getComponentManufacturer() + .getString()); + Assertions.assertEquals("Intel(R) Core(TM) i5-7300U CPU @ 2.60GHz", component.getComponentModel() + .getString()); //Check component #3 - component = (ComponentIdentifier) allComponents.get(2); - Assertions.assertTrue(component.getComponentModel() - .getString() - .equals("BIOS")); - Assertions.assertTrue(component.getComponentSerial() - .getString() - .equals(ComponentIdentifier.NOT_SPECIFIED_COMPONENT)); - Assertions.assertTrue(component.getComponentRevision() - .getString() - .equals("DNKBLi5v.86A.0019.2017.0804.1146")); + component = allComponents.get(2); + Assertions.assertEquals("BIOS", component.getComponentModel() + .getString()); + Assertions.assertEquals(ComponentIdentifier.NOT_SPECIFIED_COMPONENT, component.getComponentSerial() + .getString()); + Assertions.assertEquals("DNKBLi5v.86A.0019.2017.0804.1146", component.getComponentRevision() + .getString()); //Check Platform Properties List platformProperties = platformConfig.getPlatformProperties(); @@ -556,26 +545,26 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { URIReference platformPropertyUri = platformConfig.getPlatformPropertiesUri(); Assertions.assertNotNull(platformPropertyUri); - Assertions.assertTrue(platformPropertyUri.getUniformResourceIdentifier() - .getString() - .equals("https://www.intel.com/platformproperties.xml")); + Assertions.assertEquals("https://www.intel.com/platformproperties.xml", + platformPropertyUri.getUniformResourceIdentifier() + .getString()); Assertions.assertNull(platformPropertyUri.getHashAlgorithm()); Assertions.assertNull(platformPropertyUri.getHashValue()); //Test TBBSecurityAssertion TBBSecurityAssertion tbbSec = platformCert.getTBBSecurityAssertion(); Assertions.assertNotNull(tbbSec); - Assertions.assertTrue(tbbSec.getCcInfo().getVersion().getString().equals("3.1")); - Assertions.assertTrue(tbbSec.getCcInfo().getProfileOid().getId().equals("1.2.3.4.5.6")); - Assertions.assertTrue(tbbSec.getFipsLevel().getVersion().getString().equals("140-2")); - Assertions.assertTrue(tbbSec.getIso9000Uri().getString() - .equals("https://www.intel.com/isocertification.pdf")); + Assertions.assertEquals("3.1", tbbSec.getCcInfo().getVersion().getString()); + Assertions.assertEquals("1.2.3.4.5.6", tbbSec.getCcInfo().getProfileOid().getId()); + Assertions.assertEquals("140-2", tbbSec.getFipsLevel().getVersion().getString()); + Assertions.assertEquals("https://www.intel.com/isocertification.pdf", + tbbSec.getIso9000Uri().getString()); } /** * Tests Platform Configuration Values. View platform Properties * - * @throws IOException if an IO error occurs during processing + * @throws IOException if an IO error occurs during processing * @throws URISyntaxException if there is a problem constructing the cert's URI */ @Test @@ -597,24 +586,20 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { ComponentIdentifier component; //Check component #1 - component = (ComponentIdentifier) allComponents.get(0); - Assertions.assertTrue(component.getComponentModel() - .getString() - .equals("NUC7i5DNB")); - Assertions.assertTrue(component.getComponentRevision() - .getString() - .equals("J57626-401")); + component = allComponents.get(0); + Assertions.assertEquals("NUC7i5DNB", component.getComponentModel() + .getString()); + Assertions.assertEquals("J57626-401", component.getComponentRevision() + .getString()); //Check component #7 - component = (ComponentIdentifier) allComponents.get(6); + component = allComponents.get(6); Assertions.assertTrue(component.getComponentAddress().size() > 0); - Assertions.assertTrue(component.getComponentAddress().get(0) + Assertions.assertEquals("8c:0f:6f:72:c6:c5", component.getComponentAddress().get(0) .getAddressValue() - .getString() - .equals("8c:0f:6f:72:c6:c5")); - Assertions.assertTrue(component.getComponentAddress().get(0) - .getAddressTypeValue() - .equals("ethernet mac")); + .getString()); + Assertions.assertEquals("ethernet mac", component.getComponentAddress().get(0) + .getAddressTypeValue()); //Check Platform Properties List platformProperties = platformConfig.getPlatformProperties(); @@ -628,27 +613,27 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { URIReference platformPropertyUri = platformConfig.getPlatformPropertiesUri(); Assertions.assertNotNull(platformPropertyUri); - Assertions.assertTrue(platformPropertyUri.getUniformResourceIdentifier() - .getString() - .equals("https://www.intel.com/platformproperties.xml")); + Assertions.assertEquals("https://www.intel.com/platformproperties.xml", + platformPropertyUri.getUniformResourceIdentifier() + .getString()); Assertions.assertNull(platformPropertyUri.getHashAlgorithm()); Assertions.assertNull(platformPropertyUri.getHashValue()); //Test TBBSecurityAssertion TBBSecurityAssertion tbbSec = platformCert.getTBBSecurityAssertion(); Assertions.assertNotNull(tbbSec); - Assertions.assertTrue(tbbSec.getCcInfo().getVersion().getString().equals("3.1")); - Assertions.assertTrue(tbbSec.getCcInfo().getProfileOid().getId().equals("1.2.3.4.5.6")); - Assertions.assertTrue(tbbSec.getFipsLevel().getVersion().getString().equals("140-2")); - Assertions.assertTrue(tbbSec.getIso9000Uri().getString() - .equals("https://www.intel.com/isocertification.pdf")); + Assertions.assertEquals("3.1", tbbSec.getCcInfo().getVersion().getString()); + Assertions.assertEquals("1.2.3.4.5.6", tbbSec.getCcInfo().getProfileOid().getId()); + Assertions.assertEquals("140-2", tbbSec.getFipsLevel().getVersion().getString()); + Assertions.assertEquals("https://www.intel.com/isocertification.pdf", + tbbSec.getIso9000Uri().getString()); } /** * Tests Platform Configuration Values. View platform Properties * - * @throws IOException if an IO error occurs during processing + * @throws IOException if an IO error occurs during processing * @throws URISyntaxException if there is a problem constructing the cert's URI */ @Test @@ -675,25 +660,25 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { PlatformProperty property; //Check property #1 - property = (PlatformProperty) platformProperties.get(0); - Assertions.assertTrue(property.getPropertyName().getString().equals("AMT")); - Assertions.assertTrue(property.getPropertyValue().getString().equals("true")); + property = platformProperties.get(0); + Assertions.assertEquals("AMT", property.getPropertyName().getString()); + Assertions.assertEquals("true", property.getPropertyValue().getString()); //Check property #2 - property = (PlatformProperty) platformProperties.get(1); - Assertions.assertTrue(property.getPropertyName().getString().equals("vPro Enabled")); - Assertions.assertTrue(property.getPropertyValue().getString().equals("true")); + property = platformProperties.get(1); + Assertions.assertEquals("vPro Enabled", property.getPropertyName().getString()); + Assertions.assertEquals("true", property.getPropertyValue().getString()); //Check property #3 - property = (PlatformProperty) platformProperties.get(2); - Assertions.assertTrue(property.getPropertyName().getString().equals("DropShip Enabled")); - Assertions.assertTrue(property.getPropertyValue().getString().equals("false")); + property = platformProperties.get(2); + Assertions.assertEquals("DropShip Enabled", property.getPropertyName().getString()); + Assertions.assertEquals("false", property.getPropertyValue().getString()); } /** * Tests Platform Configuration Values. View platform Properties * - * @throws IOException if an IO error occurs during processing + * @throws IOException if an IO error occurs during processing * @throws URISyntaxException if there is a problem constructing the cert's URI */ @Test @@ -705,7 +690,7 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { PlatformCredential platformCert = new PlatformCredential(certPath); PlatformConfiguration platformConfig = platformCert.getPlatformConfiguration(); - Assertions.assertTrue(platformConfig instanceof PlatformConfigurationV2); + Assertions.assertInstanceOf(PlatformConfigurationV2.class, platformConfig); Assertions.assertEquals(platformConfig.getPlatformPropertiesUri() .getUniformResourceIdentifier().toString(), "https://www.intel.com/platformproperties.xml"); @@ -721,7 +706,7 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { * Tests Platform Configuration Values. View platform Properties * * @throws URISyntaxException if there is a problem constructing the cert's URI - * @throws IOException if there is a problem reading the cert file + * @throws IOException if there is a problem reading the cert file */ @Test public final void testSmallNewPlatformCredential() throws URISyntaxException, IOException { @@ -734,7 +719,7 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { /** * Tests Platform Configuration Values. View platform Properties * - * @throws IOException if an IO error occurs during processing + * @throws IOException if an IO error occurs during processing * @throws URISyntaxException if there is a problem constructing the cert's URI */ @Test @@ -748,7 +733,7 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { /** * Tests Platform Configuration Values. View platform Properties * - * @throws IOException if an IO error occurs during processing + * @throws IOException if an IO error occurs during processing * @throws URISyntaxException if there is a problem constructing the cert's URI */ @Test @@ -762,7 +747,7 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { /** * Tests Platform Configuration Values. View platform Properties * - * @throws IOException if an IO error occurs during processing + * @throws IOException if an IO error occurs during processing * @throws URISyntaxException if there is a problem constructing the cert's URI */ @Test diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentClassTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentClassTest.java index 3d62eccb..8dc54358 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentClassTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentClassTest.java @@ -1,12 +1,13 @@ package hirs.attestationca.persist.entity.userdefined.certificate.attributes; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; import org.junit.jupiter.api.Test; import java.net.URISyntaxException; import java.nio.file.Paths; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + /** * Tests for the ComponentClassTest class. */ @@ -16,6 +17,7 @@ public class ComponentClassTest { /** * Test of getComponent method, of class ComponentClass. + * * @throws URISyntaxException if there is a problem constructing the URI */ @Test @@ -32,6 +34,7 @@ public class ComponentClassTest { /** * Test of getComponent method, of class ComponentClass. + * * @throws URISyntaxException if there is a problem constructing the URI */ @Test @@ -47,6 +50,7 @@ public class ComponentClassTest { /** * Test of getComponent method, of class ComponentClass. + * * @throws URISyntaxException if there is a problem constructing the URI */ @Test @@ -59,8 +63,10 @@ public class ComponentClassTest { assertEquals(resultComponent, "Unknown"); assertEquals(resultCategory, "None"); } + /** * Test of getComponent method, of class ComponentClass. + * * @throws URISyntaxException if there is a problem constructing the URI */ @Test @@ -76,6 +82,7 @@ public class ComponentClassTest { /** * Test of getComponent method, of class ComponentClass. + * * @throws URISyntaxException if there is a problem constructing the URI */ @Test @@ -91,6 +98,7 @@ public class ComponentClassTest { /** * Test of getComponent method, of class ComponentClass. + * * @throws URISyntaxException if there is a problem constructing the URI */ @Test @@ -106,6 +114,7 @@ public class ComponentClassTest { /** * Test of getComponent method, of class ComponentClass. + * * @throws URISyntaxException if there is a problem constructing the URI */ @Test @@ -121,6 +130,7 @@ public class ComponentClassTest { /** * Test of getComponent method, of class ComponentClass. + * * @throws URISyntaxException if there is a problem constructing the URI */ @Test @@ -136,6 +146,7 @@ public class ComponentClassTest { /** * Test of getComponent method, of class ComponentClass. + * * @throws URISyntaxException if there is a problem constructing the URI */ @Test @@ -151,6 +162,7 @@ public class ComponentClassTest { /** * Test of getComponent method, of class ComponentClass. + * * @throws URISyntaxException if there is a problem constructing the URI */ @Test @@ -166,6 +178,7 @@ public class ComponentClassTest { /** * Test of getComponent method, of class ComponentClass. + * * @throws URISyntaxException if there is a problem constructing the URI */ @Test @@ -181,6 +194,7 @@ public class ComponentClassTest { /** * Test of getComponent method, of class ComponentClass. + * * @throws URISyntaxException if there is a problem constructing the URI */ @Test @@ -196,6 +210,7 @@ public class ComponentClassTest { /** * Test of getComponent method, of class ComponentClass. + * * @throws URISyntaxException if there is a problem constructing the URI */ @Test @@ -211,6 +226,7 @@ public class ComponentClassTest { /** * Test of getComponent method, of class ComponentClass. + * * @throws URISyntaxException if there is a problem constructing the URI */ @Test @@ -226,6 +242,7 @@ public class ComponentClassTest { /** * Test of getComponent method, of class ComponentClass. + * * @throws URISyntaxException if there is a problem constructing the URI */ @Test @@ -241,6 +258,7 @@ public class ComponentClassTest { /** * Test of getComponent method, of class ComponentClass. + * * @throws URISyntaxException if there is a problem constructing the URI */ @Test @@ -256,6 +274,7 @@ public class ComponentClassTest { /** * Test of getComponent method, of class ComponentClass. + * * @throws URISyntaxException if there is a problem constructing the URI */ @Test @@ -271,6 +290,7 @@ public class ComponentClassTest { /** * Test of getComponent method, of class ComponentClass. + * * @throws URISyntaxException if there is a problem constructing the URI */ @Test diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSecurityAssertionsTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSecurityAssertionsTest.java index ed4d806e..7bd3edf4 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSecurityAssertionsTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSecurityAssertionsTest.java @@ -1,9 +1,10 @@ package hirs.attestationca.persist.entity.userdefined.certificate.attributes; +import org.junit.jupiter.api.Test; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.fail; -import org.junit.jupiter.api.Test; /** * Tests for the TPMSecurityAssertions class. @@ -28,7 +29,6 @@ public class TPMSecurityAssertionsTest { assertNull(TPMSecurityAssertions.EkGenerationType.values()[4]); fail(); } catch (ArrayIndexOutOfBoundsException e) { - return; } } @@ -48,7 +48,6 @@ public class TPMSecurityAssertionsTest { assertNull(TPMSecurityAssertions.EkGenerationLocation.values()[3]); fail(); } catch (ArrayIndexOutOfBoundsException e) { - return; } } } diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/info/PortalInfoTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/info/PortalInfoTest.java index 5acaba3d..ba3fa97a 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/info/PortalInfoTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/info/PortalInfoTest.java @@ -1,12 +1,13 @@ package hirs.attestationca.persist.entity.userdefined.info; import hirs.utils.enums.PortalScheme; +import org.junit.jupiter.api.Test; + import java.net.InetAddress; -import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.fail; -import org.junit.jupiter.api.Test; /** * Provides tests for PortalInfo. @@ -56,6 +57,7 @@ public class PortalInfoTest { /** * Test that the ip address can be set and retrieved via an InetAddress. + * * @throws Exception If there is a problem with InetAddress. */ @Test @@ -70,6 +72,7 @@ public class PortalInfoTest { /** * Test that the ip address can be set and retrieved via a String. + * * @throws Exception If there is a problem with InetAddress. */ @Test diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/info/TPMInfoTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/info/TPMInfoTest.java index 41382a19..6c1ba152 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/info/TPMInfoTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/info/TPMInfoTest.java @@ -1,15 +1,16 @@ package hirs.attestationca.persist.entity.userdefined.info; -import static hirs.utils.enums.DeviceInfoEnums.NOT_SPECIFIED; - import hirs.attestationca.persist.entity.userdefined.AbstractUserdefinedEntityTest; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.Test; + +import static hirs.utils.enums.DeviceInfoEnums.NOT_SPECIFIED; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertThrows; -import org.junit.jupiter.api.Test; /** * TPMInfoTest is a unit test class for TPMInfo. @@ -53,7 +54,7 @@ public class TPMInfoTest extends AbstractUserdefinedEntityTest { assertEquals(tpmInfo.getTpmVersionMinor(), (short) 0); assertEquals(tpmInfo.getTpmVersionRevMajor(), (short) 0); assertEquals(tpmInfo.getTpmVersionRevMinor(), (short) 0); - assertEquals(tpmInfo.getIdentityCertificate(), null); + assertNull(tpmInfo.getIdentityCertificate()); } /** @@ -63,7 +64,7 @@ public class TPMInfoTest extends AbstractUserdefinedEntityTest { public final void tpmMakeNullTest() { assertThrows(IllegalArgumentException.class, () -> new TPMInfo(null, VERSION_MAJOR, VERSION_MINOR, VERSION_REV_MAJOR, - VERSION_REV_MINOR, getTestIdentityCertificate())); + VERSION_REV_MINOR, getTestIdentityCertificate())); } /** @@ -73,7 +74,7 @@ public class TPMInfoTest extends AbstractUserdefinedEntityTest { public final void tpmMakeLongTest() { assertThrows(IllegalArgumentException.class, () -> new TPMInfo(LONG_TPM_MAKE, VERSION_MAJOR, VERSION_MINOR, VERSION_REV_MAJOR, - VERSION_REV_MINOR, getTestIdentityCertificate())); + VERSION_REV_MINOR, getTestIdentityCertificate())); } /** @@ -84,7 +85,7 @@ public class TPMInfoTest extends AbstractUserdefinedEntityTest { public final void testTPMInfoInvalidVersionMajor() { assertThrows(IllegalArgumentException.class, () -> new TPMInfo(TPM_MAKE, (short) -1, VERSION_MINOR, VERSION_REV_MAJOR, - VERSION_REV_MINOR, getTestIdentityCertificate())); + VERSION_REV_MINOR, getTestIdentityCertificate())); } /** @@ -95,7 +96,7 @@ public class TPMInfoTest extends AbstractUserdefinedEntityTest { public final void testTPMInfoInvalidVersionMinor() { assertThrows(IllegalArgumentException.class, () -> new TPMInfo(TPM_MAKE, VERSION_MAJOR, (short) -1, VERSION_REV_MAJOR, - VERSION_REV_MINOR, getTestIdentityCertificate())); + VERSION_REV_MINOR, getTestIdentityCertificate())); } /** @@ -106,7 +107,7 @@ public class TPMInfoTest extends AbstractUserdefinedEntityTest { public final void testTPMInfoInvalidVersionRevMajor() { assertThrows(IllegalArgumentException.class, () -> new TPMInfo(TPM_MAKE, VERSION_MAJOR, VERSION_MINOR, (short) -1, - VERSION_REV_MINOR, getTestIdentityCertificate())); + VERSION_REV_MINOR, getTestIdentityCertificate())); } /** @@ -117,7 +118,7 @@ public class TPMInfoTest extends AbstractUserdefinedEntityTest { public final void testTPMInfoInvalidVersionRevMinor() { assertThrows(IllegalArgumentException.class, () -> new TPMInfo(TPM_MAKE, VERSION_MAJOR, VERSION_MINOR, VERSION_REV_MAJOR, - (short) -1, getTestIdentityCertificate())); + (short) -1, getTestIdentityCertificate())); } /** diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/record/TPMMeasurementRecordTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/record/TPMMeasurementRecordTest.java index 56522cec..9fdccee1 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/record/TPMMeasurementRecordTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/record/TPMMeasurementRecordTest.java @@ -5,14 +5,13 @@ import hirs.utils.digest.Digest; import hirs.utils.digest.DigestAlgorithm; import org.apache.commons.codec.DecoderException; import org.apache.commons.codec.binary.Hex; -import org.junit.jupiter.api.Test; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; /** diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/report/DeviceInfoReportTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/report/DeviceInfoReportTest.java index c00511eb..55297ac9 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/report/DeviceInfoReportTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/report/DeviceInfoReportTest.java @@ -1,14 +1,14 @@ package hirs.attestationca.persist.entity.userdefined.report; import hirs.attestationca.persist.entity.userdefined.AbstractUserdefinedEntityTest; +import hirs.attestationca.persist.entity.userdefined.info.FirmwareInfo; +import hirs.attestationca.persist.entity.userdefined.info.HardwareInfo; +import hirs.attestationca.persist.entity.userdefined.info.NetworkInfo; import hirs.attestationca.persist.entity.userdefined.info.OSInfo; import hirs.attestationca.persist.entity.userdefined.info.TPMInfo; -import hirs.attestationca.persist.entity.userdefined.info.NetworkInfo; -import hirs.attestationca.persist.entity.userdefined.info.HardwareInfo; -import hirs.attestationca.persist.entity.userdefined.info.FirmwareInfo; - import hirs.utils.VersionHelper; import org.junit.jupiter.api.Test; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -16,14 +16,13 @@ import static org.junit.jupiter.api.Assertions.assertThrows; * Unit test class for DeviceInfoReports. */ public class DeviceInfoReportTest extends AbstractUserdefinedEntityTest { + private static final String EXPECTED_CLIENT_VERSION = VersionHelper.getVersion(); private final NetworkInfo networkInfo = createTestNetworkInfo(); private final OSInfo osInfo = createTestOSInfo(); private final FirmwareInfo firmwareInfo = createTestFirmwareInfo(); private final HardwareInfo hardwareInfo = createTestHardwareInfo(); private final TPMInfo tpmInfo = createTPMInfo(); - private static final String EXPECTED_CLIENT_VERSION = VersionHelper.getVersion(); - /** * Tests instantiation of a DeviceInfoReport. */ diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/provision/helper/CredentialManagementHelperTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/provision/helper/CredentialManagementHelperTest.java index 1218137f..d51602c1 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/provision/helper/CredentialManagementHelperTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/provision/helper/CredentialManagementHelperTest.java @@ -20,13 +20,12 @@ import static org.mockito.Mockito.verify; */ public class CredentialManagementHelperTest { - @Mock - private CertificateRepository certificateRepository; - private static final String EK_HEADER_TRUNCATED = "/certificates/nuc-1/ek_cert_7_byte_header_removed.cer"; private static final String EK_UNTOUCHED = "/certificates/nuc-1/ek_cert_untouched.cer"; + @Mock + private CertificateRepository certificateRepository; /** * Setup mocks. @@ -39,6 +38,7 @@ public class CredentialManagementHelperTest { /** * Tests exception generated if providing a null cert repository. + * * @throws IOException if an IO error occurs */ @Test @@ -47,7 +47,7 @@ public class CredentialManagementHelperTest { String path = CredentialManagementHelperTest.class.getResource(EK_UNTOUCHED).getPath(); byte[] ekBytes = IOUtils.toByteArray(new FileInputStream(path)); assertThrows(IllegalArgumentException.class, () -> - CredentialManagementHelper.storeEndorsementCredential(null, ekBytes, "testName")); + CredentialManagementHelper.storeEndorsementCredential(null, ekBytes, "testName")); } /** @@ -56,7 +56,8 @@ public class CredentialManagementHelperTest { @Test public void processNullEndorsementCredential() { assertThrows(IllegalArgumentException.class, () -> - CredentialManagementHelper.storeEndorsementCredential(certificateRepository, null, "testName")); + CredentialManagementHelper.storeEndorsementCredential(certificateRepository, null, + "testName")); } /** @@ -65,8 +66,8 @@ public class CredentialManagementHelperTest { @Test public void processEmptyEndorsementCredential() { assertThrows(IllegalArgumentException.class, () -> - CredentialManagementHelper.storeEndorsementCredential( - certificateRepository, new byte[0], "testName")); + CredentialManagementHelper.storeEndorsementCredential( + certificateRepository, new byte[0], "testName")); } /** @@ -87,11 +88,13 @@ public class CredentialManagementHelperTest { public void processInvalidEndorsementCredentialCase2() { byte[] ekBytes = new byte[] {1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0}; assertThrows(IllegalArgumentException.class, () -> - CredentialManagementHelper.storeEndorsementCredential(certificateRepository, ekBytes, "testName")); + CredentialManagementHelper.storeEndorsementCredential(certificateRepository, ekBytes, + "testName")); } /** * Tests processing a valid EK with the 7 byte header in tact. + * * @throws IOException if an IO error occurs */ @Test @@ -105,6 +108,7 @@ public class CredentialManagementHelperTest { /** * Tests processing a valid EK with the 7 byte header already stripped. + * * @throws IOException if an IO error occurs */ @Test diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/provision/helper/IssuedCertificateAttributeHelperTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/provision/helper/IssuedCertificateAttributeHelperTest.java index 77185604..ff34d14d 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/provision/helper/IssuedCertificateAttributeHelperTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/provision/helper/IssuedCertificateAttributeHelperTest.java @@ -1,7 +1,7 @@ package hirs.attestationca.persist.provision.helper; -import hirs.attestationca.persist.entity.userdefined.certificate.PlatformCredential; import hirs.attestationca.persist.entity.userdefined.certificate.EndorsementCredential; +import hirs.attestationca.persist.entity.userdefined.certificate.PlatformCredential; import org.bouncycastle.asn1.ASN1Sequence; import org.bouncycastle.asn1.ASN1Set; import org.bouncycastle.asn1.ASN1TaggedObject; @@ -51,23 +51,25 @@ public class IssuedCertificateAttributeHelperTest { /** * Test that provide a null host name and is rejected. + * * @throws IOException an IO error occurs */ @Test public void rejectNullHostName() throws IOException { assertThrows(IllegalArgumentException.class, () -> - IssuedCertificateAttributeHelper.buildSubjectAlternativeNameFromCerts(null, null, "")); + IssuedCertificateAttributeHelper.buildSubjectAlternativeNameFromCerts(null, null, "")); } /** * Test that subject alt name can be built without an EC or PC. + * * @throws IOException an IO error occurs */ @Test public void buildAttributesNoEndorsementNoPlatform() throws IOException { Extension subjectAlternativeName = - IssuedCertificateAttributeHelper.buildSubjectAlternativeNameFromCerts( - null, new ArrayList(), TEST_HOSTNAME); + IssuedCertificateAttributeHelper.buildSubjectAlternativeNameFromCerts( + null, new ArrayList(), TEST_HOSTNAME); Map subjectAlternativeNameAttrMap = getSubjectAlternativeNameAttributes( subjectAlternativeName); @@ -83,7 +85,8 @@ public class IssuedCertificateAttributeHelperTest { /** * Test that subject alt name can be built with an EC but no PC. - * @throws IOException an IO error occurs + * + * @throws IOException an IO error occurs * @throws URISyntaxException unrecognized URI for EC Path */ @Test @@ -114,7 +117,8 @@ public class IssuedCertificateAttributeHelperTest { /** * Test that subject alt name can be built with an PC but no EC. - * @throws IOException an IO error occurs + * + * @throws IOException an IO error occurs * @throws URISyntaxException unrecognized URI for PC Path */ @Test @@ -147,7 +151,8 @@ public class IssuedCertificateAttributeHelperTest { /** * Test that subject alt name can be built with a PC and an EC. - * @throws IOException an IO error occurs + * + * @throws IOException an IO error occurs * @throws URISyntaxException unrecognized URI for EC or PC Path */ @Test diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidatorTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidatorTest.java index 4cb63d91..2a002af3 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidatorTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidatorTest.java @@ -1,26 +1,20 @@ package hirs.attestationca.persist.validation; -import hirs.attestationca.persist.entity.ArchivableEntity; import hirs.attestationca.persist.entity.userdefined.Certificate; -import hirs.attestationca.persist.entity.userdefined.SupplyChainValidation; import hirs.attestationca.persist.entity.userdefined.certificate.CertificateAuthorityCredential; import hirs.attestationca.persist.entity.userdefined.certificate.EndorsementCredential; import hirs.attestationca.persist.entity.userdefined.certificate.PlatformCredential; -import hirs.attestationca.persist.entity.userdefined.certificate.attributes.ComponentClass; -import hirs.attestationca.persist.entity.userdefined.certificate.attributes.V2.AttributeStatus; +import hirs.attestationca.persist.entity.userdefined.certificate.attributes.ComponentIdentifier; import hirs.attestationca.persist.entity.userdefined.info.ComponentInfo; -import hirs.attestationca.persist.entity.userdefined.info.HardwareInfo; -import hirs.attestationca.persist.entity.userdefined.info.OSInfo; -import hirs.attestationca.persist.entity.userdefined.info.NetworkInfo; import hirs.attestationca.persist.entity.userdefined.info.FirmwareInfo; +import hirs.attestationca.persist.entity.userdefined.info.HardwareInfo; +import hirs.attestationca.persist.entity.userdefined.info.NetworkInfo; +import hirs.attestationca.persist.entity.userdefined.info.OSInfo; import hirs.attestationca.persist.entity.userdefined.info.TPMInfo; import hirs.attestationca.persist.entity.userdefined.info.component.NICComponentInfo; -import hirs.attestationca.persist.entity.userdefined.certificate.attributes.ComponentIdentifier; -import hirs.attestationca.persist.entity.userdefined.certificate.attributes.V2.ComponentIdentifierV2; import hirs.attestationca.persist.entity.userdefined.report.DeviceInfoReport; import hirs.attestationca.persist.enums.AppraisalStatus; import hirs.utils.enums.DeviceInfoEnums; - import org.apache.commons.io.IOUtils; import org.bouncycastle.asn1.ASN1Boolean; import org.bouncycastle.asn1.DERUTF8String; @@ -39,18 +33,10 @@ import org.bouncycastle.openssl.PEMParser; import org.bouncycastle.operator.ContentSigner; import org.bouncycastle.operator.OperatorCreationException; import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder; - import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.fail; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; @@ -81,17 +67,22 @@ import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.security.spec.InvalidKeySpecException; import java.security.spec.X509EncodedKeySpec; +import java.util.ArrayList; import java.util.Collections; +import java.util.Date; import java.util.HashSet; +import java.util.List; import java.util.Objects; import java.util.Set; -import java.util.List; -import java.util.ArrayList; -import java.util.Date; -import java.util.Map; -import java.util.HashMap; import java.util.UUID; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + /** * Tests the SupplyChainCredentialValidator and CredentialValidator class. * Migration note: Tests specifically for test Intel Nuc Platform Credentials @@ -100,24 +91,6 @@ import java.util.UUID; */ public class SupplyChainCredentialValidatorTest { - private static final String JSON_FILE = "/config/component-class.json"; - private static final String SAMPLE_PACCOR_OUTPUT_TXT = "/hirs/validation/sample_paccor_output.txt"; - private static final String SAMPLE_PACCOR_OUTPUT_NOT_SPECIFIED_TXT - = "/hirs/validation/sample_paccor_output_not_specified_values.txt"; - private static final String SAMPLE_TEST_PACCOR_CERT - = "/validation/platform_credentials_2/paccor_platform_cert.crt"; - - private static final String SAMPLE_PACCOR_OUTPUT_WITH_EXTRA_COMPONENT_TXT - = "/hirs/validation/sample_paccor_output_with_extra_component.txt"; - private static HardwareInfo hardwareInfo; - private final SupplyChainCredentialValidator supplyChainCredentialValidator = - new SupplyChainCredentialValidator(); - - private final CredentialValidator credentialValidator = - new CredentialValidator(); - - private static KeyStore keyStore; - private static KeyStore emptyKeyStore; /** * File name used to initialize a test KeyStore. */ @@ -126,17 +99,21 @@ public class SupplyChainCredentialValidatorTest { * SecureRandom instance. */ static final SecureRandom SECURE_RANDOM = new SecureRandom(); - + private static final String JSON_FILE = "/config/component-class.json"; + private static final String SAMPLE_PACCOR_OUTPUT_TXT = "/hirs/validation/sample_paccor_output.txt"; + private static final String SAMPLE_PACCOR_OUTPUT_NOT_SPECIFIED_TXT + = "/hirs/validation/sample_paccor_output_not_specified_values.txt"; + private static final String SAMPLE_TEST_PACCOR_CERT + = "/validation/platform_credentials_2/paccor_platform_cert.crt"; + private static final String SAMPLE_PACCOR_OUTPUT_WITH_EXTRA_COMPONENT_TXT + = "/hirs/validation/sample_paccor_output_with_extra_component.txt"; private static final String TEST_SIGNING_KEY = "/validation/platform_credentials/ca.pub"; - private static final String TEST_PLATFORM_CRED = "/validation/platform_credentials/plat_cert1.pem"; private static final String TEST_PLATFORM_CRED2 = "/validation/platform_credentials/pciids_plat_cert_2-0.pem"; - private static final String TEST_PLATFORM_CRED_BASE_CHASIS_COMBO = "/validation/platform_credentials/Intel_pc5.pem"; - private static final String TEST_BOARD_SERIAL_NUMBER = "GETY421001GV"; private static final String TEST_CHASSIS_SERIAL_NUMBER = "G6YK42300C87"; private static final String TEST_EK_CERT = "/certificates/nuc-2/tpmcert.pem"; @@ -145,20 +122,16 @@ public class SupplyChainCredentialValidatorTest { private static final String TEST_COMPONENT_MODEL = "platform2018"; private static final String TEST_COMPONENT_REVISION = "1.0"; private static final String BAD_SERIAL = "BAD_SERIAL"; - //-------Actual ST Micro Endorsement Credential Certificate Chain!-------------- private static final String EK_CERT = ""; private static final String INT_CA_CERT02 = "/certificates/fakestmtpmekint02.pem"; - //-------Generated Intel Credential Certificate Chain-------------- private static final String INTEL_PLATFORM_CERT = "/validation/platform_credentials/plat_cert3.pem"; private static final String INTEL_PLATFORM_CERT_2 = "/validation/platform_credentials/Intel_pc2.pem"; - private static final String INTEL_PLATFORM_CERT_3 = "/validation/platform_credentials/pciids_plat_cert_2-0.pem"; - private static final String INTEL_INT_CA = "/validation/platform_credentials/intel_chain/root/intermediate1.crt"; private static final String FAKE_ROOT_CA = @@ -166,7 +139,6 @@ public class SupplyChainCredentialValidatorTest { private static final String PLATFORM_MANUFACTURER = "Intel"; private static final String PLATFORM_MODEL = "S2600KP"; private static final String PLATFORM_VERSION = "H76962-350"; - //-------Original Intel Credential Certificate Chain-------------- private static final String INTEL_PLATFORM_CERT_ORIG = "/certificates/fakeIntel_S2600KP_F00F00F00F00.pem"; @@ -174,38 +146,36 @@ public class SupplyChainCredentialValidatorTest { "/certificates/fakeIntelIntermediateCA.pem"; private static final String FAKE_ROOT_CA_ORIG = "/certificates/fakeCA.pem"; - //-------Fake SGI Credential Certificate Chain-------------- private static final String SGI_PLATFORM_CERT = "/certificates/fakeSGI_J2_F00F00F0.pem"; private static final String SGI_INT_CA = "/certificates/fakeSGIIntermediateCA.pem"; private static final String SGI_CRED_SERIAL_NUMBER = "F00F00F0"; - //-------Actual Intel NUC Platform -------------- private static final String NUC_PLATFORM_CERT = "/certificates/Intel_nuc_pc.pem"; private static final String NUC_PLATFORM_CERT_SERIAL_NUMBER = "GETY421001DY"; - private static final String NUC_PLATFORM_CERT2 = "/certificates/Intel_nuc_pc2.pem"; private static final String NUC_PLATFORM_CERT_SERIAL_NUMBER2 = "GETY4210001M"; - private static final String INTEL_SIGNING_KEY = "/certificates/IntelSigningKey_20April2017.pem"; - private static final String NEW_NUC1 = "/validation/platform_credentials/Intel_pc3.cer"; + private static HardwareInfo hardwareInfo; + private static KeyStore keyStore; + private static KeyStore emptyKeyStore; + private final SupplyChainCredentialValidator supplyChainCredentialValidator = + new SupplyChainCredentialValidator(); + private final CredentialValidator credentialValidator = + new CredentialValidator(); /** * Sets up a KeyStore for testing. * - * @throws KeyStoreException - * if no Provider supports a KeyStoreSpi implementation for the specified type. - * @throws NoSuchAlgorithmException - * if the algorithm used to check the integrity of the keystore cannot be found - * @throws CertificateException - * if any of the certificates in the keystore could not be loaded - * @throws IOException - * if there is an I/O or format problem with the keystore data, if a password is - * required but not given, or if the given password was incorrect + * @throws KeyStoreException if no Provider supports a KeyStoreSpi implementation for the specified type. + * @throws NoSuchAlgorithmException if the algorithm used to check the integrity of the keystore cannot be found + * @throws CertificateException if any of the certificates in the keystore could not be loaded + * @throws IOException if there is an I/O or format problem with the keystore data, if a password is + * required but not given, or if the given password was incorrect */ @BeforeAll public static void setUp() throws KeyStoreException, NoSuchAlgorithmException, @@ -234,13 +204,178 @@ public class SupplyChainCredentialValidatorTest { } } + private static DeviceInfoReport setupDeviceInfoReport() { + hardwareInfo = new HardwareInfo( + "ACME", + "anvil", + "3.0", + "1234", + "567", + "890"); + + DeviceInfoReport deviceInfoReport = mock(DeviceInfoReport.class); + when(deviceInfoReport.getHardwareInfo()).thenReturn(hardwareInfo); + return deviceInfoReport; + } + + private static DeviceInfoReport setupDeviceInfoReportWithComponents() throws IOException { + return setupDeviceInfoReportWithComponents(SAMPLE_PACCOR_OUTPUT_TXT); + } + + private static DeviceInfoReport setupDeviceInfoReportWithNotSpecifiedComponents() + throws IOException { + return setupDeviceInfoReportWithComponents(SAMPLE_PACCOR_OUTPUT_NOT_SPECIFIED_TXT); + } + + private static DeviceInfoReport setupDeviceInfoReportWithComponents( + final String paccorOutputResource) throws IOException { + DeviceInfoReport deviceInfoReport = setupDeviceInfoReport(); + URL url = SupplyChainCredentialValidator.class.getResource(paccorOutputResource); + String paccorOutputString = IOUtils.toString(url, StandardCharsets.UTF_8); + when(deviceInfoReport.getPaccorOutputString()).thenReturn(paccorOutputString); + return deviceInfoReport; + } + + /** + * Creates a new RSA 1024-bit KeyPair using a Bouncy Castle Provider. + * + * @return new KeyPair + */ + private static KeyPair createKeyPair() { + final int keySize = 1024; + KeyPairGenerator gen; + KeyPair keyPair = null; + try { + gen = KeyPairGenerator.getInstance("RSA", BouncyCastleProvider.PROVIDER_NAME); + gen.initialize(keySize, SECURE_RANDOM); + keyPair = gen.generateKeyPair(); + } catch (NoSuchAlgorithmException | NoSuchProviderException e) { + fail("Error occurred while generating key pair", e); + } + return keyPair; + } + + /** + * Create a new X.509 attribute certificate given the holder cert, the signing cert, and the + * signing key. + * + * @param targetCert X509Certificate that will be the holder of the attribute cert + * @param signingCert X509Certificate used to sign the new attribute cert + * @param caPrivateKey PrivateKey used to sign the new attribute cert + * @return new X509AttributeCertificate + */ + private static X509AttributeCertificateHolder createAttributeCert( + final X509Certificate targetCert, final X509Certificate signingCert, + final PrivateKey caPrivateKey) { + X509AttributeCertificateHolder cert = null; + try { + final int timeRange = 50000; + AttributeCertificateHolder holder = + new AttributeCertificateHolder(new X509CertificateHolder( + targetCert.getEncoded())); + AttributeCertificateIssuer issuer = + new AttributeCertificateIssuer(new X500Name(signingCert + .getSubjectX500Principal().getName())); + BigInteger serialNumber = BigInteger.ONE; + Date notBefore = new Date(System.currentTimeMillis() - timeRange); + Date notAfter = new Date(System.currentTimeMillis() + timeRange); + X509v2AttributeCertificateBuilder builder = + new X509v2AttributeCertificateBuilder(holder, issuer, serialNumber, notBefore, + notAfter); + + ContentSigner signer = + new JcaContentSignerBuilder("SHA1WithRSA").setProvider("BC") + .build(caPrivateKey); + + cert = builder.build(signer); + } catch (CertificateEncodingException | IOException | OperatorCreationException e) { + fail("Exception occurred while creating a cert", e); + } + + return cert; + + } + + /** + * Create a new X.509 public-key certificate signed by the given certificate. + * + * @param keyPair KeyPair to create the cert for + * @param signingKey PrivateKey of the signing cert + * @param signingCert signing cert + * @return new X509Certificate + */ + private static X509Certificate createCertSignedByAnotherCert(final KeyPair keyPair, + final PrivateKey signingKey, + final X509Certificate signingCert) { + final int timeRange = 10000; + X509Certificate cert = null; + try { + + X500Name issuerName = new X500Name(signingCert.getSubjectX500Principal().getName()); + X500Name subjectName = new X500Name("CN=Test V3 Certificate"); + BigInteger serialNumber = BigInteger.ONE; + Date notBefore = new Date(System.currentTimeMillis() - timeRange); + Date notAfter = new Date(System.currentTimeMillis() + timeRange); + X509v3CertificateBuilder builder = + new JcaX509v3CertificateBuilder(issuerName, serialNumber, notBefore, notAfter, + subjectName, keyPair.getPublic()); + ContentSigner signer = + new JcaContentSignerBuilder("SHA1WithRSA").setProvider("BC").build(signingKey); + return new JcaX509CertificateConverter().setProvider("BC").getCertificate( + builder.build(signer)); + } catch (Exception e) { + fail("Exception occurred while creating a cert", e); + } + return cert; + } + + /** + * Creates a self-signed X.509 public-key certificate. + * + * @param pair KeyPair to create the cert for + * @return self-signed X509Certificate + */ + private static X509Certificate createSelfSignedCertificate(final KeyPair pair) { + Security.addProvider(new BouncyCastleProvider()); + final int timeRange = 10000; + X509Certificate cert = null; + try { + + X500Name issuerName = new X500Name("CN=Test Self-Signed V3 Certificate"); + X500Name subjectName = new X500Name("CN=Test Self-Signed V3 Certificate"); + BigInteger serialNumber = BigInteger.ONE; + Date notBefore = new Date(System.currentTimeMillis() - timeRange); + Date notAfter = new Date(System.currentTimeMillis() + timeRange); + X509v3CertificateBuilder builder = + new JcaX509v3CertificateBuilder(issuerName, serialNumber, notBefore, notAfter, + subjectName, pair.getPublic()); + ContentSigner signer = + new JcaContentSignerBuilder("SHA1WithRSA").setProvider("BC").build( + pair.getPrivate()); + return new JcaX509CertificateConverter().setProvider("BC").getCertificate( + builder.build(signer)); + } catch (Exception e) { + fail("Exception occurred while creating a cert", e); + } + return cert; + } + + private static InetAddress getTestIpAddress() { + try { + return InetAddress.getByAddress(new byte[] {127, 0, 0, 1}); + } catch (UnknownHostException e) { + return null; + } + } + /** * Checks if the ST Micro Endorsement Credential can be validated against the * ST/GlobalSIgn Certificate Chain. - * @throws IOException if error occurs while reading files - * @throws URISyntaxException if error occurs while reading files + * + * @throws IOException if error occurs while reading files + * @throws URISyntaxException if error occurs while reading files * @throws CertificateException if error occurs while processing X509 Certs - * @throws KeyStoreException if error occurs while processing Keystore + * @throws KeyStoreException if error occurs while processing Keystore */ @Test public final void testValidateEndorsementCredential() @@ -267,7 +402,7 @@ public class SupplyChainCredentialValidatorTest { ekcert, keyStore, true); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.ENDORSEMENT_VALID, result.getMessage()); - } finally { + } finally { keyStore.deleteEntry("Intel Intermediate Cert"); keyStore.deleteEntry("CA cert"); } @@ -277,10 +412,10 @@ public class SupplyChainCredentialValidatorTest { * Validates a generated cert chain pretending to be from Intel. Credential was generated * with an intermediate CA. This tests the entire chain of validation back to the root CA. * - * @throws IOException if error occurs while reading files - * @throws KeyStoreException if there's an issue string certs to the keystore + * @throws IOException if error occurs while reading files + * @throws KeyStoreException if there's an issue string certs to the keystore * @throws CertificateException if error occurs while ingesting a certificate - * @throws URISyntaxException if a URI can't be processed + * @throws URISyntaxException if a URI can't be processed */ @Test public final void validateIntelPlatformCredentials() @@ -288,13 +423,13 @@ public class SupplyChainCredentialValidatorTest { Certificate intermediatecacert = new CertificateAuthorityCredential(Files.readAllBytes(Paths.get( - Objects.requireNonNull(getClass().getResource(INTEL_INT_CA)).toURI())) - ); + Objects.requireNonNull(getClass().getResource(INTEL_INT_CA)).toURI())) + ); Certificate rootcacert = new CertificateAuthorityCredential(Files.readAllBytes(Paths.get( - Objects.requireNonNull(getClass().getResource(FAKE_ROOT_CA)).toURI())) - ); + Objects.requireNonNull(getClass().getResource(FAKE_ROOT_CA)).toURI())) + ); try { keyStore.setCertificateEntry("CA cert", rootcacert.getX509Certificate()); @@ -354,9 +489,9 @@ public class SupplyChainCredentialValidatorTest { /** * Checks if the Platform Credential contains the serial number from * the device in the platform serial number field. - * @throws Exception If there are errors. * - * */ + * @throws Exception If there are errors. + */ // @Test public final void validatePlatformCredentialWithDeviceBaseboard() throws Exception { @@ -377,7 +512,7 @@ public class SupplyChainCredentialValidatorTest { AppraisalStatus result = CredentialValidator.validatePlatformCredentialAttributes(pc, deviceInfoReport, ec, null, null, - Collections.emptyList(), UUID.randomUUID(), false); + Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, result.getMessage()); @@ -414,10 +549,10 @@ public class SupplyChainCredentialValidatorTest { result.getMessage()); } - /** * Checks if the NUC Platform Credential contains the serial number from * the device as a baseboard component in the serial number field. + * * @throws Exception If there are errors. */ // @Test @@ -462,7 +597,7 @@ public class SupplyChainCredentialValidatorTest { byte[] certBytes = Files.readAllBytes(Paths.get( Objects.requireNonNull(SupplyChainCredentialValidatorTest.class. - getResource(INTEL_PLATFORM_CERT_2)).toURI())); + getResource(INTEL_PLATFORM_CERT_2)).toURI())); PlatformCredential pc = new PlatformCredential(certBytes); @@ -530,7 +665,7 @@ public class SupplyChainCredentialValidatorTest { PlatformCredential pc = new PlatformCredential(certBytes); EndorsementCredential ec = new EndorsementCredential(Files.readAllBytes(Paths.get( - Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI()))); + Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI()))); AppraisalStatus result = CredentialValidator.validatePlatformCredentialAttributes(pc, @@ -544,6 +679,7 @@ public class SupplyChainCredentialValidatorTest { /** * Checks if the Platform Credential validator appropriately fails * when there are no serial numbers returned from the device. + * * @throws Exception If there are errors. */ // @Test @@ -578,6 +714,7 @@ public class SupplyChainCredentialValidatorTest { /** * Checks if the Platform Credential validator appropriately fails * when there are no serial numbers matching any of the platform info from the device. + * * @throws Exception If there are errors. */ // @Test @@ -611,10 +748,10 @@ public class SupplyChainCredentialValidatorTest { /** * Checks if a cert can be validated against the given public key. * - * @throws IOException if error occurs while reading files - * @throws InvalidKeySpecException if error occurs while generating the PublicKey - * @throws NoSuchAlgorithmException if error occurs while getting RSA KeyFactory - * @throws URISyntaxException if error occurs constructing test cert path + * @throws IOException if error occurs while reading files + * @throws InvalidKeySpecException if error occurs while generating the PublicKey + * @throws NoSuchAlgorithmException if error occurs while getting RSA KeyFactory + * @throws URISyntaxException if error occurs constructing test cert path * @throws SupplyChainValidatorException if error occurs due to using null certificates */ @Test @@ -643,8 +780,8 @@ public class SupplyChainCredentialValidatorTest { * Negative test to check if validation against a public key can fail. Generates a random * key pair and attempts to validate it against the Intel cert, which is expected to fail. * - * @throws IOException if error occurs while reading files - * @throws URISyntaxException if an error occurs while constructing test resource's URI + * @throws IOException if error occurs while reading files + * @throws URISyntaxException if an error occurs while constructing test resource's URI * @throws SupplyChainValidatorException if error occurs due to using null certificates */ @Test @@ -899,7 +1036,7 @@ public class SupplyChainCredentialValidatorTest { * validation passes. This should result in an error as keystores should never * be empty. * - * @throws IOException an error occurs when parsing the certificate + * @throws IOException an error occurs when parsing the certificate * @throws URISyntaxException an error occurs parsing the certificate file path */ @Test @@ -907,7 +1044,7 @@ public class SupplyChainCredentialValidatorTest { throws URISyntaxException, IOException { byte[] certBytes = Files.readAllBytes(Paths.get( Objects.requireNonNull(SupplyChainCredentialValidatorTest.class.getResource( - INTEL_PLATFORM_CERT)).toURI())); + INTEL_PLATFORM_CERT)).toURI())); PlatformCredential pc = new PlatformCredential(certBytes); @@ -939,7 +1076,7 @@ public class SupplyChainCredentialValidatorTest { * Verifies that a null check is performed on the keyStore * when validating platform credentials. * - * @throws IOException an error occurs when parsing the certificate + * @throws IOException an error occurs when parsing the certificate * @throws URISyntaxException an error occurs parsing the certificate file path */ @Test @@ -947,7 +1084,7 @@ public class SupplyChainCredentialValidatorTest { throws URISyntaxException, IOException { byte[] certBytes = Files.readAllBytes(Paths.get( Objects.requireNonNull(SupplyChainCredentialValidatorTest.class.getResource( - INTEL_PLATFORM_CERT)).toURI())); + INTEL_PLATFORM_CERT)).toURI())); PlatformCredential pc = new PlatformCredential(certBytes); @@ -964,7 +1101,7 @@ public class SupplyChainCredentialValidatorTest { * Verifies that a null check is performed on the device info report * when validating platform credentials. * - * @throws IOException an error occurs when parsing the certificate + * @throws IOException an error occurs when parsing the certificate * @throws URISyntaxException an error occurs parsing the certificate file path */ // @Test @@ -972,7 +1109,7 @@ public class SupplyChainCredentialValidatorTest { throws URISyntaxException, IOException { byte[] certBytes = Files.readAllBytes(Paths.get( Objects.requireNonNull(SupplyChainCredentialValidatorTest.class.getResource( - INTEL_PLATFORM_CERT_2)).toURI())); + INTEL_PLATFORM_CERT_2)).toURI())); PlatformCredential pc = new PlatformCredential(certBytes); @@ -992,9 +1129,10 @@ public class SupplyChainCredentialValidatorTest { /** * Tests that issuer/subject distinguished names can be properly verified as equal even * if their elements are in different orders. - * @throws URISyntaxException failed to read certificate - * @throws IOException failed to read certificate - * @throws KeyStoreException failed to read key store + * + * @throws URISyntaxException failed to read certificate + * @throws IOException failed to read certificate + * @throws KeyStoreException failed to read key store * @throws SupplyChainValidatorException missing credential */ @@ -1023,9 +1161,10 @@ public class SupplyChainCredentialValidatorTest { /** * Tests that issuer/subject distinguished names can be properly verified as being unequal * if their elements don't match. - * @throws URISyntaxException failed to read certificate - * @throws IOException failed to read certificate - * @throws KeyStoreException failed to read key store + * + * @throws URISyntaxException failed to read certificate + * @throws IOException failed to read certificate + * @throws KeyStoreException failed to read key store * @throws SupplyChainValidatorException missing credential */ @Test @@ -1038,7 +1177,7 @@ public class SupplyChainCredentialValidatorTest { byte[] certBytes = Files.readAllBytes(Paths.get( Objects.requireNonNull(SupplyChainCredentialValidator.class. - getResource(NEW_NUC1)).toURI())); + getResource(NEW_NUC1)).toURI())); PlatformCredential pc = new PlatformCredential(certBytes); @@ -1052,9 +1191,10 @@ public class SupplyChainCredentialValidatorTest { /** * Tests that issuer/subject distinguished names can be properly verified as equal. - * @throws URISyntaxException failed to read certificate - * @throws IOException failed to read certificate - * @throws KeyStoreException failed to read key store + * + * @throws URISyntaxException failed to read certificate + * @throws IOException failed to read certificate + * @throws KeyStoreException failed to read key store * @throws SupplyChainValidatorException missing credential */ @Test @@ -1082,9 +1222,10 @@ public class SupplyChainCredentialValidatorTest { /** * Tests that issuer/subject distinguished names can be properly verified as being unequal * if their elements don't match. - * @throws URISyntaxException failed to read certificate - * @throws IOException failed to read certificate - * @throws KeyStoreException failed to read key store + * + * @throws URISyntaxException failed to read certificate + * @throws IOException failed to read certificate + * @throws KeyStoreException failed to read key store * @throws SupplyChainValidatorException missing credential */ @Test @@ -1097,7 +1238,7 @@ public class SupplyChainCredentialValidatorTest { byte[] certBytes = Files.readAllBytes(Paths.get( Objects.requireNonNull(SupplyChainCredentialValidator.class. - getResource(TEST_EK_CERT)).toURI())); + getResource(TEST_EK_CERT)).toURI())); EndorsementCredential ec = new EndorsementCredential(certBytes); @@ -1109,38 +1250,6 @@ public class SupplyChainCredentialValidatorTest { x509Cert, caX509)); } - private static DeviceInfoReport setupDeviceInfoReport() { - hardwareInfo = new HardwareInfo( - "ACME", - "anvil", - "3.0", - "1234", - "567", - "890"); - - DeviceInfoReport deviceInfoReport = mock(DeviceInfoReport.class); - when(deviceInfoReport.getHardwareInfo()).thenReturn(hardwareInfo); - return deviceInfoReport; - } - - private static DeviceInfoReport setupDeviceInfoReportWithComponents() throws IOException { - return setupDeviceInfoReportWithComponents(SAMPLE_PACCOR_OUTPUT_TXT); - } - - private static DeviceInfoReport setupDeviceInfoReportWithNotSpecifiedComponents() - throws IOException { - return setupDeviceInfoReportWithComponents(SAMPLE_PACCOR_OUTPUT_NOT_SPECIFIED_TXT); - } - - private static DeviceInfoReport setupDeviceInfoReportWithComponents( - final String paccorOutputResource) throws IOException { - DeviceInfoReport deviceInfoReport = setupDeviceInfoReport(); - URL url = SupplyChainCredentialValidator.class.getResource(paccorOutputResource); - String paccorOutputString = IOUtils.toString(url, StandardCharsets.UTF_8); - when(deviceInfoReport.getPaccorOutputString()).thenReturn(paccorOutputString); - return deviceInfoReport; - } - /** * Tests that isMatch works correctly in comparing component info to component identifier. */ @@ -1199,7 +1308,7 @@ public class SupplyChainCredentialValidatorTest { List deviceInfoComponents = SupplyChainCredentialValidator.getComponentInfoFromPaccorOutput( - deviceInfoReport.getNetworkInfo().getHostname(), + deviceInfoReport.getNetworkInfo().getHostname(), deviceInfoReport.getPaccorOutputString()); List componentIdentifierList = new ArrayList<>(); for (ComponentInfo deviceInfoComponent : deviceInfoComponents) { @@ -1231,6 +1340,7 @@ public class SupplyChainCredentialValidatorTest { /** * Tests that TPM 2.0 Platform Credentials validate correctly against the device info report * when there are no components. + * * @throws IOException if unable to set up DeviceInfoReport from resource file */ // @Test @@ -1251,6 +1361,7 @@ public class SupplyChainCredentialValidatorTest { /** * Tests that TPM 2.0 Platform Credentials validate correctly against the device info report * when there are components present. + * * @throws IOException if unable to set up DeviceInfoReport from resource file */ // @Test @@ -1271,6 +1382,7 @@ public class SupplyChainCredentialValidatorTest { * Tests that TPM 2.0 Platform Credentials validate correctly against the device info report * when there are components present, and when the PlatformSerial field holds the system's * serial number instead of the baseboard serial number. + * * @throws IOException if unable to set up DeviceInfoReport from resource file */ // @Test @@ -1293,7 +1405,8 @@ public class SupplyChainCredentialValidatorTest { * Tests that TPM 2.0 Platform Credentials validate correctly against the device info report * when there are components present, and when the PlatformSerial field holds the system's * serial number instead of the baseboard serial number. - * @throws IOException if unable to set up DeviceInfoReport from resource file + * + * @throws IOException if unable to set up DeviceInfoReport from resource file * @throws URISyntaxException failed to read certificate */ // @Test @@ -1302,8 +1415,8 @@ public class SupplyChainCredentialValidatorTest { DeviceInfoReport deviceInfoReport = setupDeviceInfoReportWithNotSpecifiedComponents(); PlatformCredential platformCredential = new PlatformCredential( Files.readAllBytes(Paths.get( - Objects.requireNonNull(SupplyChainCredentialValidator.class.getResource( - SAMPLE_TEST_PACCOR_CERT)).toURI()))); + Objects.requireNonNull(SupplyChainCredentialValidator.class.getResource( + SAMPLE_TEST_PACCOR_CERT)).toURI()))); AppraisalStatus appraisalStatus = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, deviceInfoReport, null, null, @@ -1313,6 +1426,7 @@ public class SupplyChainCredentialValidatorTest { /** * Tests that the SupplyChainCredentialValidator fails when required fields are null. + * * @throws IOException if unable to set up DeviceInfoReport from resource file */ // @Test @@ -1425,6 +1539,7 @@ public class SupplyChainCredentialValidatorTest { /** * Tests that the SupplyChainCredentialValidator fails when required fields contain only empty * strings. + * * @throws IOException if unable to set up DeviceInfoReport from resource file */ // @Test @@ -1484,7 +1599,7 @@ public class SupplyChainCredentialValidatorTest { result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, deviceInfoReport, null, null, - Collections.emptyList(), UUID.randomUUID(), false); + Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, result.getMessage()); @@ -1514,9 +1629,9 @@ public class SupplyChainCredentialValidatorTest { Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals("Component manufacturer is empty\n" - + "There are unmatched components:\n" - + "Manufacturer=, Model=Core i7, Serial=Not Specified," - + " Revision=Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz;\n", + + "There are unmatched components:\n" + + "Manufacturer=, Model=Core i7, Serial=Not Specified," + + " Revision=Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz;\n", result.getMessage()); platformCredential = setupMatchingPlatformCredential(deviceInfoReport); @@ -1541,6 +1656,7 @@ public class SupplyChainCredentialValidatorTest { /** * Tests that {@link SupplyChainCredentialValidator} failes when a component exists in the * platform credential, but not in the device info report. + * * @throws IOException if unable to set up DeviceInfoReport from resource file */ // @Test @@ -1577,7 +1693,7 @@ public class SupplyChainCredentialValidatorTest { Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals("There are unmatched components:\n" - + "Manufacturer=ACME, Model=TNT, Serial=2, Revision=1.1;\n", + + "Manufacturer=ACME, Model=TNT, Serial=2, Revision=1.1;\n", result.getMessage()); } @@ -1585,6 +1701,7 @@ public class SupplyChainCredentialValidatorTest { * Tests that SupplyChainCredentialValidator passes when everything matches but there are * extra components in the device info report that are not represented in the platform * credential. + * * @throws IOException if unable to set up DeviceInfoReport from resource file */ // @Test @@ -1617,6 +1734,7 @@ public class SupplyChainCredentialValidatorTest { /** * Tests that SupplyChainCredentialValidator fails when a component is found in the platform * credential without a manufacturer or model. + * * @throws IOException if unable to set up DeviceInfoReport from resource file */ // @Test @@ -1644,9 +1762,9 @@ public class SupplyChainCredentialValidatorTest { Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals("Component manufacturer is empty\n" - + "There are unmatched components:\n" - + "Manufacturer=, Model=Core i7, Serial=Not Specified," - + " Revision=Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz;\n", + + "There are unmatched components:\n" + + "Manufacturer=, Model=Core i7, Serial=Not Specified," + + " Revision=Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz;\n", result.getMessage()); platformCredential = setupMatchingPlatformCredential(deviceInfoReport); @@ -1673,6 +1791,7 @@ public class SupplyChainCredentialValidatorTest { /** * Tests that SupplyChainCredentialValidator passes when a component on the system has a * matching component in the platform certificate, except the serial value is missing. + * * @throws IOException if unable to set up DeviceInfoReport from resource file */ // @Test @@ -1704,6 +1823,7 @@ public class SupplyChainCredentialValidatorTest { /** * Tests that SupplyChainCredentialValidator passes when a component on the system has a * matching component in the platform certificate, except the revision value is missing. + * * @throws IOException if unable to set up DeviceInfoReport from resource file */ // @Test @@ -1736,6 +1856,7 @@ public class SupplyChainCredentialValidatorTest { * Tests that SupplyChainCredentialValidator passes when a component on the system has a * matching component in the platform certificate, except the serial and revision values * are missing. + * * @throws IOException if unable to set up DeviceInfoReport from resource file */ // @Test @@ -1768,7 +1889,8 @@ public class SupplyChainCredentialValidatorTest { /** * Tests that SupplyChainCredentialValidator passes with a base and delta certificate where * the base serial number and delta holder serial number match. - * @throws java.io.IOException Reading file for the certificates + * + * @throws java.io.IOException Reading file for the certificates * @throws java.net.URISyntaxException when loading certificates bytes */ // @Test @@ -1904,7 +2026,8 @@ public class SupplyChainCredentialValidatorTest { /** * Tests that SupplyChainCredentialValidator fails when a component needs to * be replaced but hasn't been by a delta certificate. - * @throws java.io.IOException Reading file for the certificates + * + * @throws java.io.IOException Reading file for the certificates * @throws java.net.URISyntaxException when loading certificates bytes */ // @Test @@ -2014,136 +2137,6 @@ public class SupplyChainCredentialValidatorTest { // result.getMessage()); } - /** - * Creates a new RSA 1024-bit KeyPair using a Bouncy Castle Provider. - * - * @return new KeyPair - */ - private static KeyPair createKeyPair() { - final int keySize = 1024; - KeyPairGenerator gen; - KeyPair keyPair = null; - try { - gen = KeyPairGenerator.getInstance("RSA", BouncyCastleProvider.PROVIDER_NAME); - gen.initialize(keySize, SECURE_RANDOM); - keyPair = gen.generateKeyPair(); - } catch (NoSuchAlgorithmException | NoSuchProviderException e) { - fail("Error occurred while generating key pair", e); - } - return keyPair; - } - - /** - * Create a new X.509 attribute certificate given the holder cert, the signing cert, and the - * signing key. - * - * @param targetCert - * X509Certificate that will be the holder of the attribute cert - * @param signingCert - * X509Certificate used to sign the new attribute cert - * @param caPrivateKey - * PrivateKey used to sign the new attribute cert - * @return new X509AttributeCertificate - */ - private static X509AttributeCertificateHolder createAttributeCert( - final X509Certificate targetCert, final X509Certificate signingCert, - final PrivateKey caPrivateKey) { - X509AttributeCertificateHolder cert = null; - try { - final int timeRange = 50000; - AttributeCertificateHolder holder = - new AttributeCertificateHolder(new X509CertificateHolder( - targetCert.getEncoded())); - AttributeCertificateIssuer issuer = - new AttributeCertificateIssuer(new X500Name(signingCert - .getSubjectX500Principal().getName())); - BigInteger serialNumber = BigInteger.ONE; - Date notBefore = new Date(System.currentTimeMillis() - timeRange); - Date notAfter = new Date(System.currentTimeMillis() + timeRange); - X509v2AttributeCertificateBuilder builder = - new X509v2AttributeCertificateBuilder(holder, issuer, serialNumber, notBefore, - notAfter); - - ContentSigner signer = - new JcaContentSignerBuilder("SHA1WithRSA").setProvider("BC") - .build(caPrivateKey); - - cert = builder.build(signer); - } catch (CertificateEncodingException | IOException | OperatorCreationException e) { - fail("Exception occurred while creating a cert", e); - } - - return cert; - - } - - /** - * Create a new X.509 public-key certificate signed by the given certificate. - * - * @param keyPair - * KeyPair to create the cert for - * @param signingKey - * PrivateKey of the signing cert - * @param signingCert - * signing cert - * @return new X509Certificate - */ - private static X509Certificate createCertSignedByAnotherCert(final KeyPair keyPair, - final PrivateKey signingKey, final X509Certificate signingCert) { - final int timeRange = 10000; - X509Certificate cert = null; - try { - - X500Name issuerName = new X500Name(signingCert.getSubjectX500Principal().getName()); - X500Name subjectName = new X500Name("CN=Test V3 Certificate"); - BigInteger serialNumber = BigInteger.ONE; - Date notBefore = new Date(System.currentTimeMillis() - timeRange); - Date notAfter = new Date(System.currentTimeMillis() + timeRange); - X509v3CertificateBuilder builder = - new JcaX509v3CertificateBuilder(issuerName, serialNumber, notBefore, notAfter, - subjectName, keyPair.getPublic()); - ContentSigner signer = - new JcaContentSignerBuilder("SHA1WithRSA").setProvider("BC").build(signingKey); - return new JcaX509CertificateConverter().setProvider("BC").getCertificate( - builder.build(signer)); - } catch (Exception e) { - fail("Exception occurred while creating a cert", e); - } - return cert; - } - - /** - * Creates a self-signed X.509 public-key certificate. - * - * @param pair - * KeyPair to create the cert for - * @return self-signed X509Certificate - */ - private static X509Certificate createSelfSignedCertificate(final KeyPair pair) { - Security.addProvider(new BouncyCastleProvider()); - final int timeRange = 10000; - X509Certificate cert = null; - try { - - X500Name issuerName = new X500Name("CN=Test Self-Signed V3 Certificate"); - X500Name subjectName = new X500Name("CN=Test Self-Signed V3 Certificate"); - BigInteger serialNumber = BigInteger.ONE; - Date notBefore = new Date(System.currentTimeMillis() - timeRange); - Date notAfter = new Date(System.currentTimeMillis() + timeRange); - X509v3CertificateBuilder builder = - new JcaX509v3CertificateBuilder(issuerName, serialNumber, notBefore, notAfter, - subjectName, pair.getPublic()); - ContentSigner signer = - new JcaContentSignerBuilder("SHA1WithRSA").setProvider("BC").build( - pair.getPrivate()); - return new JcaX509CertificateConverter().setProvider("BC").getCertificate( - builder.build(signer)); - } catch (Exception e) { - fail("Exception occurred while creating a cert", e); - } - return cert; - } - private DeviceInfoReport buildReport(final HardwareInfo givenHardwareInfo) { final InetAddress ipAddress = getTestIpAddress(); final byte[] macAddress = new byte[] {11, 22, 33, 44, 55, 66}; @@ -2156,11 +2149,4 @@ public class SupplyChainCredentialValidatorTest { return new DeviceInfoReport(networkInfo, osInfo, firmwareInfo, givenHardwareInfo, tpmInfo); } - private static InetAddress getTestIpAddress() { - try { - return InetAddress.getByAddress(new byte[] {127, 0, 0, 1}); - } catch (UnknownHostException e) { - return null; - } - } } From 64c74eae5c2d7891e618b8bd1bb4573ef2687367 Mon Sep 17 00:00:00 2001 From: TheSilentCoder <184309164+ThatSilentCoder@users.noreply.github.com> Date: Tue, 22 Oct 2024 17:16:50 -0400 Subject: [PATCH 06/22] issue_847: Applied formatting changes to entire CA module_portal module. Reduced errors in CA module to less than 180 --- .../persist/OrderedListQuerier.java | 9 +- .../persist/entity/userdefined/Device.java | 34 +- .../entity/userdefined/ReferenceManifest.java | 20 +- .../IssuedAttestationCertificate.java | 4 +- .../attributes/V2/package-info.java | 2 +- .../record/TPMMeasurementRecord.java | 1 + .../userdefined/record/package-info.java | 1 + .../userdefined/report/DeviceInfoReport.java | 47 +- .../userdefined/report/package-info.java | 1 + .../userdefined/result/package-info.java | 1 + .../rim/BaseReferenceManifest.java | 77 +- .../userdefined/rim/EventLogMeasurements.java | 25 +- .../userdefined/rim/ReferenceDigestValue.java | 38 +- .../entity/userdefined/rim/package-info.java | 2 +- .../persist/enums/HealthStatus.java | 25 +- .../persist/exceptions/package-info.java | 1 + .../provision/IdentityClaimProcessor.java | 43 +- .../provision/helper/ProvisionUtils.java | 98 ++- .../provision/helper/package-info.java | 1 + .../persist/provision/package-info.java | 1 + .../persist/service/ValidationService.java | 186 ++-- .../persist/service/package-info.java | 1 + .../service/selector/CertificateSelector.java | 10 +- .../service/selector/package-info.java | 1 + .../persist/tpm/package-info.java | 1 + .../persist/type/package-info.java | 1 + .../persist/util/CredentialHelper.java | 2 +- .../persist/util/package-info.java | 1 + .../CertificateAttributeScvValidator.java | 27 +- .../validation/CredentialValidator.java | 8 +- .../validation/FirmwareScvValidator.java | 38 +- .../persist/validation/PcrValidator.java | 30 +- .../SupplyChainCredentialValidator.java | 4 +- .../persist/validation/package-info.java | 1 + .../entity/tpm/TPM2ProvisionerStateTest.java | 88 +- HIRS_AttestationCAPortal/build.gradle | 58 +- .../config/spotbugs/spotbugs-exclude.xml | 4 +- .../attestationca/portal/HIRSApplication.java | 10 - .../portal/HIRSDbInitializer.java | 12 +- .../portal/PersistenceJPAConfig.java | 9 +- .../portal/datatables/DataTableInput.java | 132 ++- .../portal/datatables/DataTableResponse.java | 6 +- .../portal/datatables/DataTableView.java | 11 +- .../portal/datatables/Order.java | 36 +- .../OrderedListQueryDataTableAdapter.java | 33 +- .../portal/datatables/Search.java | 18 +- .../hirs/attestationca/portal/page/Page.java | 24 +- .../portal/page/PageController.java | 14 +- .../CertificateDetailsPageController.java | 9 +- .../CertificatePageController.java | 194 ++-- .../controllers/DevicePageController.java | 7 +- .../page/controllers/HelpPageController.java | 5 +- .../page/controllers/IndexPageController.java | 2 +- .../controllers/PolicyPageController.java | 113 ++- ...eferenceManifestDetailsPageController.java | 175 ++-- .../ReferenceManifestPageController.java | 44 +- .../RimDatabasePageController.java | 16 +- .../ValidationReportsPageController.java | 48 +- .../portal/page/params/NoPageParams.java | 1 + .../ReferenceManifestDetailsPageParams.java | 3 +- .../params/ReferenceManifestPageParams.java | 2 +- .../utils/CertificateStringMapBuilder.java | 76 +- .../src/main/resources/log4j2-spring.win.xml | 16 +- .../src/main/resources/log4j2-spring.xml | 18 +- .../src/main/webapp/WEB-INF/web.xml | 4 +- .../fonts/glyphicons-halflings-regular.svg | 825 ++++++++++++------ .../portal/page/PageControllerTest.java | 126 +-- .../portal/page/PageTestConfiguration.java | 31 +- .../controllers/DevicePageControllerTest.java | 33 +- ...ementKeyCredentialsPageControllerTest.java | 35 +- .../IssuedCertificatesPageControllerTest.java | 48 +- ...PlatformCredentialsPageControllerTest.java | 30 +- .../controllers/PolicyPageControllerTest.java | 19 +- ...rustChainManagementPageControllerTest.java | 34 +- .../utils/rim/ReferenceManifestValidator.java | 2 +- 75 files changed, 1730 insertions(+), 1383 deletions(-) create mode 100644 HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/record/package-info.java create mode 100644 HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/report/package-info.java create mode 100644 HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/result/package-info.java create mode 100644 HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/exceptions/package-info.java create mode 100644 HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/package-info.java create mode 100644 HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/package-info.java create mode 100644 HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/package-info.java create mode 100644 HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/package-info.java create mode 100644 HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/tpm/package-info.java create mode 100644 HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/type/package-info.java create mode 100644 HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/package-info.java create mode 100644 HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/package-info.java diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/OrderedListQuerier.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/OrderedListQuerier.java index 6eeb8de3..63e93515 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/OrderedListQuerier.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/OrderedListQuerier.java @@ -23,8 +23,8 @@ public interface OrderedListQuerier { * @param maxResults total number we want returned for display in table * @param search string of criteria to be matched to visible columns * @param searchableColumns Map of String and boolean values with column - * headers and whether they should be searched. Boolean is true if field provides a - * typical String that can be searched by Hibernate without transformation. + * headers and whether they should be searched. Boolean is true if field provides + * a typical String that can be searched by Hibernate without transformation. * @return FilteredRecordsList object with query data * @throws DBManagerException if unable to create the list */ @@ -50,13 +50,12 @@ public interface OrderedListQuerier { * @param maxResults total number we want returned for display in table * @param search string of criteria to be matched to visible columns * @param searchableColumns Map of String and boolean values with column - * headers and whether they should be searched. Boolean is true if field provides a - * typical String that can be searched by Hibernate without transformation. + * headers and whether they should be searched. Boolean is true if field provides + * a typical String that can be searched by Hibernate without transformation. * @param criteriaModifier a way to modify the criteria used in the query * @return FilteredRecordsList object with query data * @throws DBManagerException if unable to create the list */ - @SuppressWarnings("checkstyle:parameternumber") FilteredRecordsList getOrderedList( Class clazz, String columnToOrder, boolean ascending, int firstResult, diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/Device.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/Device.java index d3f26d4a..ed3d1ffc 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/Device.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/Device.java @@ -14,19 +14,20 @@ import jakarta.persistence.OneToOne; import jakarta.persistence.Table; import lombok.AccessLevel; import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import java.sql.Timestamp; import java.time.LocalDateTime; -import java.util.Objects; @Entity @Table(name = "Device") @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor +@EqualsAndHashCode(callSuper = false) public class Device extends AbstractEntity { @Getter @@ -34,7 +35,7 @@ public class Device extends AbstractEntity { private String name; @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER, - optional = true, orphanRemoval = true) + orphanRemoval = true) private DeviceInfoReport deviceInfo; @Getter @@ -113,7 +114,7 @@ public class Device extends AbstractEntity { /** * Setter for the report time stamp. * - * @param lastReportTimestamp + * @param lastReportTimestamp last reported time */ public void setLastReportTimestamp(final Timestamp lastReportTimestamp) { this.lastReportTimestamp = (Timestamp) lastReportTimestamp.clone(); @@ -122,32 +123,7 @@ public class Device extends AbstractEntity { @Override public String toString() { return String.format("Device Name: %s%nStatus: %s%nSummary: %s%n", - name, (healthStatus == null ? "N/A" : healthStatus.getStatus()), + name, (healthStatus == null ? "N/A" : healthStatus.getHealthStatus()), (supplyChainValidationStatus == null ? "N/A" : supplyChainValidationStatus.toString())); } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (!(o instanceof Device device)) { - return false; - } - - return isStateOverridden == device.isStateOverridden - && Objects.equals(name, device.name) - && healthStatus == device.healthStatus - && supplyChainValidationStatus == device.supplyChainValidationStatus - && Objects.equals(lastReportTimestamp, device.lastReportTimestamp) - && Objects.equals(overrideReason, device.overrideReason) - && Objects.equals(summaryId, device.summaryId); - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), name, healthStatus, - supplyChainValidationStatus, lastReportTimestamp, - isStateOverridden, overrideReason, summaryId); - } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/ReferenceManifest.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/ReferenceManifest.java index 4388451a..572dd153 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/ReferenceManifest.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/ReferenceManifest.java @@ -10,6 +10,7 @@ import jakarta.persistence.Entity; import jakarta.persistence.Inheritance; import jakarta.persistence.InheritanceType; import jakarta.persistence.Table; +import lombok.AccessLevel; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; @@ -29,6 +30,7 @@ import java.util.UUID; * loaded into the DB and displayed in the ACA. */ @Getter +@Setter @ToString @EqualsAndHashCode(onlyExplicitlyIncluded = true, callSuper = false) @Log4j2 @@ -73,73 +75,59 @@ public class ReferenceManifest extends ArchivableEntity { */ public static final String SCHEMA_PACKAGE = "hirs.utils.xjc"; + @Setter(AccessLevel.NONE) @EqualsAndHashCode.Include @Column(columnDefinition = "mediumblob", nullable = false) private final byte[] rimBytes; - @Setter + @EqualsAndHashCode.Include @Column(nullable = false) private String rimType = "Base"; - @Setter @Column private String tagId = null; - @Setter @Column private boolean swidPatch = false; - @Setter @Column private boolean swidSupplemental = false; - @Setter @Column private String platformManufacturer = null; - @Setter @Column private String platformManufacturerId = null; - @Setter @Column private String swidTagVersion = null; - @Setter @Column private String swidVersion = null; - @Setter @Column private String platformModel = null; - @Setter @Column(nullable = false) private String fileName = null; - @Setter @JdbcTypeCode(java.sql.Types.VARCHAR) @Column private UUID associatedRim; - @Setter @Column private String deviceName; - @Setter @Column private String hexDecHash = ""; - @Setter @Column private String eventLogHash = ""; - @Setter @Column @JsonIgnore private String base64Hash = ""; - /** * Default constructor necessary for Hibernate. */ diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/IssuedAttestationCertificate.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/IssuedAttestationCertificate.java index dd219ff0..4202362f 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/IssuedAttestationCertificate.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/IssuedAttestationCertificate.java @@ -45,11 +45,13 @@ public class IssuedAttestationCertificate extends DeviceAssociatedCertificate { * @param certificateBytes the issued certificate bytes * @param endorsementCredential the endorsement credential * @param platformCredentials the platform credentials + * @param isLDevID is LDevId * @throws IOException if there is a problem extracting information from the certificate */ public IssuedAttestationCertificate(final byte[] certificateBytes, final EndorsementCredential endorsementCredential, - final List platformCredentials, boolean isLDevID) + final List platformCredentials, + final boolean isLDevID) throws IOException { super(certificateBytes); this.endorsementCredential = endorsementCredential; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/package-info.java index 59110856..12ec500e 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/package-info.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/package-info.java @@ -1 +1 @@ -package hirs.attestationca.persist.entity.userdefined.certificate.attributes.V2; \ No newline at end of file +package hirs.attestationca.persist.entity.userdefined.certificate.attributes.V2; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/record/TPMMeasurementRecord.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/record/TPMMeasurementRecord.java index c74d93a8..16dc27a6 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/record/TPMMeasurementRecord.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/record/TPMMeasurementRecord.java @@ -55,6 +55,7 @@ public final class TPMMeasurementRecord extends ExaminableRecord { @Column(name = "pcr", nullable = false) @XmlAttribute(name = "PcrNumber", required = true) private final int pcrId; + @Embedded @XmlElement private final Digest hash; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/record/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/record/package-info.java new file mode 100644 index 00000000..a297fc9c --- /dev/null +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/record/package-info.java @@ -0,0 +1 @@ +package hirs.attestationca.persist.entity.userdefined.record; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/report/DeviceInfoReport.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/report/DeviceInfoReport.java index 74bbdec8..a589dbbe 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/report/DeviceInfoReport.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/report/DeviceInfoReport.java @@ -13,6 +13,8 @@ import jakarta.persistence.Embedded; import jakarta.persistence.Entity; import jakarta.persistence.Transient; import jakarta.xml.bind.annotation.XmlElement; +import lombok.AccessLevel; +import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -20,16 +22,15 @@ import lombok.extern.log4j.Log4j2; import java.io.Serializable; import java.net.InetAddress; -import java.util.Objects; /** * A DeviceInfoReport is a Report used to transfer the * information about the device. This Report includes the network, * OS, and TPM information. */ -@Log4j2 @NoArgsConstructor -@Getter +@EqualsAndHashCode(callSuper = false) +@Log4j2 @Entity public class DeviceInfoReport extends AbstractEntity implements Serializable { @@ -49,14 +50,18 @@ public class DeviceInfoReport extends AbstractEntity implements Serializable { @Embedded private HardwareInfo hardwareInfo; + @Setter(AccessLevel.PRIVATE) + @Getter @XmlElement @Embedded private TPMInfo tpmInfo; + @Getter @XmlElement @Column(nullable = false) private String clientApplicationVersion; + @Getter @Setter @XmlElement @Transient @@ -91,8 +96,8 @@ public class DeviceInfoReport extends AbstractEntity implements Serializable { * @param hardwareInfo HardwareInfo object, cannot be null * @param tpmInfo TPMInfo object, may be null if a TPM is not available on the * device - * @param clientApplicationVersion string representing the version of the client that submitted this report, - * cannot be null + * @param clientApplicationVersion string representing the version of the client that submitted this + * report, cannot be null */ public DeviceInfoReport(final NetworkInfo networkInfo, final OSInfo osInfo, final FirmwareInfo firmwareInfo, final HardwareInfo hardwareInfo, @@ -101,7 +106,7 @@ public class DeviceInfoReport extends AbstractEntity implements Serializable { setOSInfo(osInfo); setFirmwareInfo(firmwareInfo); setHardwareInfo(hardwareInfo); - setTPMInfo(tpmInfo); + setTpmInfo(tpmInfo); this.clientApplicationVersion = clientApplicationVersion; } @@ -216,32 +221,6 @@ public class DeviceInfoReport extends AbstractEntity implements Serializable { } this.hardwareInfo = hardwareInfo; } - - private void setTPMInfo(final TPMInfo tpmInfo) { - this.tpmInfo = tpmInfo; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (!(o instanceof DeviceInfoReport that)) { - return false; - } - return Objects.equals(networkInfo, that.networkInfo) - && Objects.equals(osInfo, that.osInfo) - && Objects.equals(firmwareInfo, that.firmwareInfo) - && Objects.equals(hardwareInfo, that.hardwareInfo) - && Objects.equals(tpmInfo, that.tpmInfo) - && Objects.equals(clientApplicationVersion, that.clientApplicationVersion) - && Objects.equals(paccorOutputString, that.paccorOutputString); - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), networkInfo, osInfo, - firmwareInfo, hardwareInfo, tpmInfo, - clientApplicationVersion, paccorOutputString); - } } + + diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/report/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/report/package-info.java new file mode 100644 index 00000000..fca94e7e --- /dev/null +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/report/package-info.java @@ -0,0 +1 @@ +package hirs.attestationca.persist.entity.userdefined.report; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/result/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/result/package-info.java new file mode 100644 index 00000000..3ad7260f --- /dev/null +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/result/package-info.java @@ -0,0 +1 @@ +package hirs.attestationca.persist.entity.userdefined.result; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/BaseReferenceManifest.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/BaseReferenceManifest.java index 95e8e714..6c993795 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/BaseReferenceManifest.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/BaseReferenceManifest.java @@ -10,6 +10,7 @@ import jakarta.xml.bind.JAXBException; import jakarta.xml.bind.UnmarshalException; import jakarta.xml.bind.Unmarshaller; import lombok.AccessLevel; +import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -33,7 +34,6 @@ import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; -import java.util.Objects; /** * @@ -42,6 +42,7 @@ import java.util.Objects; @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) +@EqualsAndHashCode @Entity public class BaseReferenceManifest extends ReferenceManifest { /** @@ -53,43 +54,60 @@ public class BaseReferenceManifest extends ReferenceManifest { @Column private String swidName = null; + @Column private int swidCorpus = 0; + @Column private String colloquialVersion = null; + @Column private String product = null; + @Column private String revision = null; + @Column private String edition = null; + @Column private String rimLinkHash = null; + @Column private String bindingSpec = null; + @Column private String bindingSpecVersion = null; + @Column private String platformVersion = null; + @Column private String payloadType = null; + @Column private String pcURIGlobal = null; + @Column private String pcURILocal = null; private String entityName = null; + private String entityRegId = null; + private String entityRole = null; + private String entityThumbprint = null; + private String linkHref = null; + private String linkRel = null; /** * Support constructor for the RIM object. * * @param rimBytes - the file content of the uploaded file. - * @throws IOException - thrown if the file is invalid. + * @throws UnmarshalException - thrown if the file is invalid. */ public BaseReferenceManifest(final byte[] rimBytes) throws UnmarshalException { this("", rimBytes); @@ -101,9 +119,8 @@ public class BaseReferenceManifest extends ReferenceManifest { * * @param fileName - string representation of the uploaded file. * @param rimBytes byte array representation of the RIM - * @throws IOException if unable to unmarshal the string + * @throws UnmarshalException if unable to unmarshal the string */ - @SuppressWarnings("checkstyle:AvoidInlineConditionals") public BaseReferenceManifest(final String fileName, final byte[] rimBytes) throws UnmarshalException { super(rimBytes); @@ -206,6 +223,9 @@ public class BaseReferenceManifest extends ReferenceManifest { * This method validates the .swidtag file at the given filepath against the * schema. A successful validation results in the output of the tag's name * and tagId attributes, otherwise a generic error message is printed. + * + * @param rimBytes byte array representation of the RIM + * @return an element */ private Element getDirectoryTag(final byte[] rimBytes) { if (rimBytes == null || rimBytes.length == 0) { @@ -221,6 +241,7 @@ public class BaseReferenceManifest extends ReferenceManifest { * and tagId attributes, otherwise a generic error message is printed. * * @param byteArrayInputStream the location of the file to be validated + * @return an element */ private Element getDirectoryTag(final ByteArrayInputStream byteArrayInputStream) { Document document = null; @@ -247,7 +268,9 @@ public class BaseReferenceManifest extends ReferenceManifest { } /** - * This method iterates over the list of File elements under the directory. * + * This method iterates over the list of File elements under the directory. + * + * @return a list of swid resources */ public List getFileResources() { return getFileResources(getRimBytes()); @@ -257,6 +280,7 @@ public class BaseReferenceManifest extends ReferenceManifest { * This method iterates over the list of File elements under the directory. * * @param rimBytes the bytes to find the files + * @return a list of swid resources */ public List getFileResources(final byte[] rimBytes) { Element directoryTag = getDirectoryTag(rimBytes); @@ -353,49 +377,6 @@ public class BaseReferenceManifest extends ReferenceManifest { return document; } - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - if (!super.equals(o)) { - return false; - } - BaseReferenceManifest that = (BaseReferenceManifest) o; - return swidCorpus == that.swidCorpus && Objects.equals(swidName, that.swidName) - && Objects.equals(colloquialVersion, that.colloquialVersion) - && Objects.equals(product, that.product) - && Objects.equals(revision, that.revision) - && Objects.equals(edition, that.edition) - && Objects.equals(rimLinkHash, that.rimLinkHash) - && Objects.equals(bindingSpec, that.bindingSpec) - && Objects.equals(bindingSpecVersion, that.bindingSpecVersion) - && Objects.equals(platformVersion, that.platformVersion) - && Objects.equals(payloadType, that.payloadType) - && Objects.equals(pcURIGlobal, that.pcURIGlobal) - && Objects.equals(pcURILocal, that.pcURILocal) - && Objects.equals(entityName, that.entityName) - && Objects.equals(entityRegId, that.entityRegId) - && Objects.equals(entityRole, that.entityRole) - && Objects.equals(entityThumbprint, that.entityThumbprint) - && Objects.equals(linkHref, that.linkHref) - && Objects.equals(linkRel, that.linkRel); - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), swidName, - swidCorpus, colloquialVersion, product, - revision, edition, rimLinkHash, bindingSpec, - bindingSpecVersion, platformVersion, - payloadType, pcURIGlobal, pcURILocal, - entityName, entityRegId, entityRole, - entityThumbprint, linkHref, linkRel); - } - @Override public String toString() { return String.format("ReferenceManifest{swidName=%s," diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/EventLogMeasurements.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/EventLogMeasurements.java index a77bfe44..57607c72 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/EventLogMeasurements.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/EventLogMeasurements.java @@ -24,18 +24,17 @@ import java.util.Collection; * Similar to {@link SupportReferenceManifest} * however this is the live log from the client. */ +@Getter +@Setter @Log4j2 @Entity public class EventLogMeasurements extends SupportReferenceManifest { @Column @JsonIgnore - @Getter - @Setter private int pcrHash = 0; + @Enumerated(EnumType.STRING) - @Getter - @Setter private AppraisalStatus.Status overallValidationResult = AppraisalStatus.Status.FAIL; /** @@ -83,12 +82,8 @@ public class EventLogMeasurements extends SupportReferenceManifest { TCGEventLog logProcessor = new TCGEventLog(this.getRimBytes()); this.pcrHash = Arrays.hashCode(logProcessor.getExpectedPCRValues()); return logProcessor.getExpectedPCRValues(); - } catch (CertificateException cEx) { - log.error(cEx); - } catch (NoSuchAlgorithmException noSaEx) { - log.error(noSaEx); - } catch (IOException ioEx) { - log.error(ioEx); + } catch (CertificateException | NoSuchAlgorithmException | IOException exception) { + log.error(exception); } return new String[0]; @@ -104,12 +99,8 @@ public class EventLogMeasurements extends SupportReferenceManifest { try { logProcessor = new TCGEventLog(this.getRimBytes()); return logProcessor.getEventList(); - } catch (CertificateException cEx) { - log.error(cEx); - } catch (NoSuchAlgorithmException noSaEx) { - log.error(noSaEx); - } catch (IOException ioEx) { - log.error(ioEx); + } catch (CertificateException | NoSuchAlgorithmException | IOException exception) { + log.error(exception); } return new ArrayList<>(); @@ -132,4 +123,4 @@ public class EventLogMeasurements extends SupportReferenceManifest { public int hashCode() { return super.hashCode(); } -} \ No newline at end of file +} diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/ReferenceDigestValue.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/ReferenceDigestValue.java index 323be11f..0240c351 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/ReferenceDigestValue.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/ReferenceDigestValue.java @@ -6,6 +6,7 @@ import jakarta.persistence.AccessType; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.Table; +import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.EqualsAndHashCode; @@ -21,6 +22,7 @@ import java.util.UUID; * Digest Value, Event Type, index, RIM Tagid */ @Getter +@Setter @Builder @AllArgsConstructor @Entity @@ -28,41 +30,42 @@ import java.util.UUID; @Table(name = "ReferenceDigestValue") @Access(AccessType.FIELD) public class ReferenceDigestValue extends AbstractEntity { - @Setter @JdbcTypeCode(java.sql.Types.VARCHAR) @Column private UUID baseRimId; - @Setter + @JdbcTypeCode(java.sql.Types.VARCHAR) @Column private UUID supportRimId; - @Setter + @Column(nullable = false) private String manufacturer; - @Setter + @Column(nullable = false) private String model; - @Setter + @Column(nullable = false) private int pcrIndex; - @Setter + @Column(nullable = false) private String digestValue; - @Setter + @Column(nullable = false) private String supportRimHash; - @Setter + @Column(nullable = false) private String eventType; - @Column(columnDefinition = "blob", nullable = true) + + @Setter(AccessLevel.NONE) + @Column(columnDefinition = "blob") private byte[] contentBlob; - @Setter + @Column(nullable = false) private boolean matchFail; - @Setter + @Column(nullable = false) private boolean patched; - @Setter + @Column(nullable = false) private boolean updated; @@ -108,6 +111,8 @@ public class ReferenceDigestValue extends AbstractEntity { final String eventType, final boolean matchFail, final boolean patched, final boolean updated, final byte[] contentBlob) { + + this.baseRimId = baseRimId; this.supportRimId = supportRimId; this.manufacturer = manufacturer; @@ -122,15 +127,6 @@ public class ReferenceDigestValue extends AbstractEntity { this.contentBlob = Arrays.clone(contentBlob); } - /** - * the object that contains the raw bytes for this RDV. - * - * @return the raw bytes - */ - public byte[] getContentBlob() { - return Arrays.clone(contentBlob); - } - /** * Helper method to update the attributes of this object. * diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/package-info.java index 85a64fc8..aa634383 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/package-info.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/package-info.java @@ -1 +1 @@ -package hirs.attestationca.persist.entity.userdefined.rim; \ No newline at end of file +package hirs.attestationca.persist.entity.userdefined.rim; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/HealthStatus.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/HealthStatus.java index b922a230..c9bff06f 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/HealthStatus.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/HealthStatus.java @@ -1,11 +1,16 @@ package hirs.attestationca.persist.enums; +import lombok.AllArgsConstructor; +import lombok.Getter; + import java.util.Arrays; import java.util.stream.Collectors; /** * HealthStatus is used to represent the health of a device. */ +@Getter +@AllArgsConstructor public enum HealthStatus { /** * The trusted state, no issues with the device. @@ -24,15 +29,6 @@ public enum HealthStatus { private final String healthStatus; - /** - * Creates a new HealthStatus object given a String. - * - * @param healthStatus "trusted", "untrusted", or "unknown" - */ - HealthStatus(final String healthStatus) { - this.healthStatus = healthStatus; - } - public static boolean isValidStatus(final String healthStatus) { return Arrays.stream(HealthStatus.values()) .map(HealthStatus::name) @@ -40,17 +36,8 @@ public enum HealthStatus { .contains(healthStatus); } - /** - * Returns the health status. - * - * @return the status - */ - public String getStatus() { - return this.healthStatus; - } - @Override public String toString() { - return getStatus(); + return getHealthStatus(); } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/exceptions/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/exceptions/package-info.java new file mode 100644 index 00000000..4bc1b624 --- /dev/null +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/exceptions/package-info.java @@ -0,0 +1 @@ +package hirs.attestationca.persist.exceptions; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/IdentityClaimProcessor.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/IdentityClaimProcessor.java index f3446c26..1c6baf6c 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/IdentityClaimProcessor.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/IdentityClaimProcessor.java @@ -88,6 +88,16 @@ public class IdentityClaimProcessor extends AbstractProcessor { /** * Constructor. + * + * @param supplyChainValidationService supply chain validation service + * @param certificateRepository certificate repository + * @param componentResultRepository component result repository + * @param componentInfoRepository component info repository + * @param referenceManifestRepository reference manifest repository + * @param referenceDigestValueRepository reference digest value repository + * @param deviceRepository device repository + * @param tpm2ProvisionerStateRepository tpm2 provisioner state repository + * @param policyRepository policy repository */ public IdentityClaimProcessor( final SupplyChainValidationService supplyChainValidationService, @@ -155,8 +165,8 @@ public class IdentityClaimProcessor extends AbstractProcessor { String pcrQuoteMask = PCR_QUOTE_MASK; String strNonce = HexUtils.byteArrayToHexString(nonce); - log.info("Sending nonce: " + strNonce); - log.info("Persisting claim of length: " + identityClaim.length); + log.info("Sending nonce: {}", strNonce); + log.info("Persisting claim of length: {}", identityClaim.length); tpm2ProvisionerStateRepository.save(new TPM2ProvisionerState(nonce, identityClaim)); @@ -171,8 +181,7 @@ public class IdentityClaimProcessor extends AbstractProcessor { .build(); return response.toByteArray(); } else { - log.error("Supply chain validation did not succeed. Result is: " - + validationResult); + log.error("Supply chain validation did not succeed. Result is: {}", validationResult); // empty response ProvisionerTpm2.IdentityClaimResponse response = ProvisionerTpm2.IdentityClaimResponse.newBuilder() @@ -393,8 +402,8 @@ public class IdentityClaimProcessor extends AbstractProcessor { */ List rims = referenceManifestRepository.findByArchiveFlag(false); for (ReferenceManifest rim : rims) { - if (rim.isBase() && rim.getTagId().equals(dbBaseRim.getTagId()) && - rim.getCreateTime().after(dbBaseRim.getCreateTime())) { + if (rim.isBase() && rim.getTagId().equals(dbBaseRim.getTagId()) + && rim.getCreateTime().after(dbBaseRim.getCreateTime())) { dbBaseRim.setDeviceName(null); dbBaseRim = (BaseReferenceManifest) rim; dbBaseRim.setDeviceName(dv.getNw().getHostname()); @@ -413,12 +422,11 @@ public class IdentityClaimProcessor extends AbstractProcessor { } catch (UnmarshalException e) { log.error(e); } catch (Exception ex) { - log.error(String.format("Failed to load base rim: %s", ex.getMessage())); + log.error("Failed to load base rim: {}", ex.getMessage()); } } } else { - log.warn(String.format("%s did not send swid tag file...", - dv.getNw().getHostname())); + log.warn("{} did not send swid tag file...", dv.getNw().getHostname()); } if (dv.getLogfileCount() > 0) { @@ -466,9 +474,9 @@ public class IdentityClaimProcessor extends AbstractProcessor { */ List rims = referenceManifestRepository.findByArchiveFlag(false); for (ReferenceManifest rim : rims) { - if (rim.isSupport() && - rim.getTagId().equals(support.getTagId()) && - rim.getCreateTime().after(support.getCreateTime())) { + if (rim.isSupport() + && rim.getTagId().equals(support.getTagId()) + && rim.getCreateTime().after(support.getCreateTime())) { support.setDeviceName(null); support = (SupportReferenceManifest) rim; support.setDeviceName(dv.getNw().getHostname()); @@ -486,12 +494,11 @@ public class IdentityClaimProcessor extends AbstractProcessor { } catch (IOException ioEx) { log.error(ioEx); } catch (Exception ex) { - log.error(String.format("Failed to load support rim: %s", ex.getMessage())); + log.error("Failed to load support rim: {}", ex.getMessage()); } } } else { - log.warn(String.format("%s did not send support RIM file...", - dv.getNw().getHostname())); + log.warn("{} did not send support RIM file...", dv.getNw().getHostname()); } //update Support RIMs and Base RIMs. @@ -582,8 +589,7 @@ public class IdentityClaimProcessor extends AbstractProcessor { log.error(ioEx); } } else { - log.warn(String.format("%s did not send bios measurement log...", - dv.getNw().getHostname())); + log.warn("{} did not send bios measurement log...", dv.getNw().getHostname()); } // Get TPM info, currently unimplemented @@ -688,8 +694,7 @@ public class IdentityClaimProcessor extends AbstractProcessor { dbRdv = digestValueMap.get(patchedValue); if (dbRdv == null) { - log.error(String.format("Patching value does not exist (%s)", - patchedValue)); + log.error("Patching value does not exist ({})", patchedValue); } else { // WIP - Until we get patch examples dbRdv.setPatched(true); diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java index 43af0bce..549a9e6e 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java @@ -51,27 +51,60 @@ public final class ProvisionUtils { /** * The default size for IV blocks. */ - public final static int DEFAULT_IV_SIZE = 16; + public static final int DEFAULT_IV_SIZE = 16; + + /** + * HMAC Size Length in bytes. + */ public static final int HMAC_SIZE_LENGTH_BYTES = 2; + + /** + * HMAC key Length in bytes. + */ public static final int HMAC_KEY_LENGTH_BYTES = 32; + + /** + * Seed Length in bytes. + */ public static final int SEED_LENGTH = 32; + + /** + * Max secret length. + */ public static final int MAX_SECRET_LENGTH = 32; + + /** + * AES Key Length un bytes. + */ public static final int AES_KEY_LENGTH_BYTES = 16; + /** * Defines the well known exponent. * https://en.wikipedia.org/wiki/65537_(number)#Applications */ - private final static BigInteger EXPONENT = new BigInteger("010001", DEFAULT_IV_SIZE); + private static final BigInteger EXPONENT = new BigInteger("010001", DEFAULT_IV_SIZE); + private static final int TPM2_CREDENTIAL_BLOB_SIZE = 392; + private static final int RSA_MODULUS_LENGTH = 256; + // Constants used to parse out the ak name from the ak public data. Used in generateAkName private static final String AK_NAME_PREFIX = "000b"; + private static final String AK_NAME_HASH_PREFIX = "0001000b00050072000000100014000b0800000000000100"; - private static final SecureRandom random = new SecureRandom(); + + private static final SecureRandom SECURE_RANDOM = new SecureRandom(); /** - * Helper method to parse a byte array into an {@link hirs.attestationca.configuration.provisionerTpm2.ProvisionerTpm2.IdentityClaim}. + * This private constructor was created to silence one of checkstyle errors + */ + private ProvisionUtils() { + } + + /** + * Helper method to parse a byte array into an + * {@link hirs.attestationca.configuration.provisionerTpm2.ProvisionerTpm2.IdentityClaim}. * * @param identityClaim byte array that should be converted to a Protobuf IdentityClaim * object @@ -146,6 +179,9 @@ public final class ProvisionUtils { /** * Assembles a public key using a defined big int modulus and the well known exponent. + * + * @param modulus modulus + * @return public key using the provided integer modulus */ public static PublicKey assemblePublicKey(final BigInteger modulus) { // generate a key spec using mod and exp @@ -177,17 +213,14 @@ public final class ProvisionUtils { // create a cipher from the specified transformation Cipher cipher = Cipher.getInstance(scheme.toString()); - switch (scheme) { - case OAEP: - OAEPParameterSpec spec = - new OAEPParameterSpec("Sha1", "MGF1", MGF1ParameterSpec.SHA1, - new PSource.PSpecified("".getBytes(StandardCharsets.UTF_8))); + if (scheme == EncryptionScheme.OAEP) { + OAEPParameterSpec spec = + new OAEPParameterSpec("Sha1", "MGF1", MGF1ParameterSpec.SHA1, + new PSource.PSpecified("".getBytes(StandardCharsets.UTF_8))); - cipher.init(Cipher.PRIVATE_KEY, privateKey, spec); - break; - default: - // initialize the cipher to decrypt using the ACA private key. - cipher.init(Cipher.DECRYPT_MODE, privateKey); + cipher.init(Cipher.PRIVATE_KEY, privateKey, spec); + } else {// initialize the cipher to decrypt using the ACA private key. + cipher.init(Cipher.DECRYPT_MODE, privateKey); } cipher.update(asymmetricBlob); @@ -237,6 +270,11 @@ public final class ProvisionUtils { return new byte[0]; } + /** + * Generates a symmetric key. + * + * @return a symmetric key + */ public static SymmetricKey generateSymmetricKey() { // create a session key for the CA contents byte[] responseSymmetricKey = @@ -469,7 +507,15 @@ public final class ProvisionUtils { } } - @SuppressWarnings("magicnumber") + /** + * Assembles a credential blob. + * + * @param topSize byte array representation of the top size + * @param integrityHmac byte array representation of the integrity HMAC + * @param encryptedSecret byte array representation of the encrypted secret + * @param encryptedSeed byte array representation of the encrypted seed + * @return byte array representation of a credential blob + */ public static byte[] assembleCredential(final byte[] topSize, final byte[] integrityHmac, final byte[] encryptedSecret, final byte[] encryptedSeed) { @@ -533,7 +579,7 @@ public final class ProvisionUtils { * @throws NoSuchAlgorithmException Wrong crypto algorithm selected * @throws java.security.InvalidKeyException Invalid key used */ - @SuppressWarnings("magicnumber") + public static byte[] cryptKDFa(final byte[] seed, final String label, final byte[] context, final int sizeInBytes) throws NoSuchAlgorithmException, InvalidKeyException { @@ -581,6 +627,7 @@ public final class ProvisionUtils { * quote and the signature hash. * * @param tpmQuote contains hash values for the quote and the signature + * @return parsed TPM Quote hash */ public static String parseTPMQuoteHash(final String tpmQuote) { if (tpmQuote != null) { @@ -600,6 +647,7 @@ public final class ProvisionUtils { * quote and the signature hash. * * @param tpmQuote contains hash values for the quote and the signature + * @return parsed TPM Quote signature */ public static String parseTPMQuoteSignature(final String tpmQuote) { if (tpmQuote != null) { @@ -625,19 +673,29 @@ public final class ProvisionUtils { } /** - * Generates a array of random bytes. + * Generates an array of random bytes. * * @param numberOfBytes to be generated * @return byte array filled with the specified number of bytes. */ public static byte[] generateRandomBytes(final int numberOfBytes) { byte[] bytes = new byte[numberOfBytes]; - random.nextBytes(bytes); + SECURE_RANDOM.nextBytes(bytes); return bytes; } - @SuppressWarnings("magicnumber") + /** + * Calculates the difference in days between the two provided dates. + * + * @param date1 first provided date + * @param date2 second provided date + * @return difference in days between two dates + */ public static int daysBetween(final Date date1, final Date date2) { - return (int) ((date2.getTime() - date1.getTime()) / (1000 * 60 * 60 * 24)); + final int hoursInADay = 24; + final int secondsInAnHour = 3600; + final int millisecondsInASecond = 1000; + return (int) ((date2.getTime() - date1.getTime()) / + (millisecondsInASecond * secondsInAnHour * hoursInADay)); } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/package-info.java new file mode 100644 index 00000000..52e582fe --- /dev/null +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/package-info.java @@ -0,0 +1 @@ +package hirs.attestationca.persist.provision.helper; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/package-info.java new file mode 100644 index 00000000..d995e10f --- /dev/null +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/package-info.java @@ -0,0 +1 @@ +package hirs.attestationca.persist.provision; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/ValidationService.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/ValidationService.java index 5ce06f6d..bf0661cb 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/ValidationService.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/ValidationService.java @@ -42,68 +42,93 @@ import java.util.UUID; @Log4j2 public class ValidationService { + /** + * Evaluates the provided endorsement credential status. + * + * @param endorsementCredential endorsement credential + * @param caCredentialRepository CA Credential repository + * @param acceptExpiredCerts whether to accept expired certificates + * @return a supply chain validation + */ public static SupplyChainValidation evaluateEndorsementCredentialStatus( - final EndorsementCredential ec, + final EndorsementCredential endorsementCredential, final CACredentialRepository caCredentialRepository, final boolean acceptExpiredCerts) { final SupplyChainValidation.ValidationType validationType = SupplyChainValidation.ValidationType.ENDORSEMENT_CREDENTIAL; log.info("Validating endorsement credential"); - if (ec == null) { + if (endorsementCredential == null) { log.error("No endorsement credential to validate"); return buildValidationRecord(validationType, AppraisalStatus.Status.FAIL, "Endorsement credential is missing", null, Level.ERROR); } - KeyStore ecStore = getCaChain(ec, caCredentialRepository); + KeyStore ecStore = getCaChain(endorsementCredential, caCredentialRepository); AppraisalStatus result = CredentialValidator. - validateEndorsementCredential(ec, ecStore, acceptExpiredCerts); - switch (result.getAppStatus()) { - case PASS: - return buildValidationRecord(validationType, AppraisalStatus.Status.PASS, - result.getMessage(), ec, Level.INFO); - case FAIL: - return buildValidationRecord(validationType, AppraisalStatus.Status.FAIL, - result.getMessage(), ec, Level.WARN); - case ERROR: - default: - return buildValidationRecord(validationType, AppraisalStatus.Status.ERROR, - result.getMessage(), ec, Level.ERROR); - } + validateEndorsementCredential(endorsementCredential, ecStore, acceptExpiredCerts); + return switch (result.getAppStatus()) { + case PASS -> buildValidationRecord(validationType, AppraisalStatus.Status.PASS, + result.getMessage(), endorsementCredential, Level.INFO); + case FAIL -> buildValidationRecord(validationType, AppraisalStatus.Status.FAIL, + result.getMessage(), endorsementCredential, Level.WARN); + default -> buildValidationRecord(validationType, AppraisalStatus.Status.ERROR, + result.getMessage(), endorsementCredential, Level.ERROR); + }; } + /** + * Evaluates the provided platform credential status. + * + * @param platformCredential platform credential + * @param trustedCertificateAuthority trusted certificate authority + * @param acceptExpiredCerts whether to accept expired certificates + * @return a supply chain validation + */ public static SupplyChainValidation evaluatePlatformCredentialStatus( - final PlatformCredential pc, + final PlatformCredential platformCredential, final KeyStore trustedCertificateAuthority, final boolean acceptExpiredCerts) { final SupplyChainValidation.ValidationType validationType = SupplyChainValidation.ValidationType.PLATFORM_CREDENTIAL; - if (pc == null) { + if (platformCredential == null) { log.error("No platform credential to validate"); return buildValidationRecord(validationType, AppraisalStatus.Status.FAIL, "Empty Platform credential", null, Level.ERROR); } + log.info("Validating Platform Credential"); - AppraisalStatus result = CredentialValidator.validatePlatformCredential(pc, + + AppraisalStatus result = CredentialValidator.validatePlatformCredential(platformCredential, trustedCertificateAuthority, acceptExpiredCerts); - switch (result.getAppStatus()) { - case PASS: - return buildValidationRecord(validationType, AppraisalStatus.Status.PASS, - result.getMessage(), pc, Level.INFO); - case FAIL: - return buildValidationRecord(validationType, AppraisalStatus.Status.FAIL, - result.getMessage(), pc, Level.WARN); - case ERROR: - default: - return buildValidationRecord(validationType, AppraisalStatus.Status.ERROR, - result.getMessage(), pc, Level.ERROR); - } + + return switch (result.getAppStatus()) { + case PASS -> buildValidationRecord(validationType, AppraisalStatus.Status.PASS, + result.getMessage(), platformCredential, Level.INFO); + case FAIL -> buildValidationRecord(validationType, AppraisalStatus.Status.FAIL, + result.getMessage(), platformCredential, Level.WARN); + default -> buildValidationRecord(validationType, AppraisalStatus.Status.ERROR, + result.getMessage(), platformCredential, Level.ERROR); + }; } + /** + * Evaluates PC Attributes status. + * + * @param platformCredential platform credential + * @param deviceInfoReport device information report + * @param endorsementCredential endorsement credential + * @param certificateRepository certificate repository + * @param componentResultRepository component result repository + * @param componentAttributeRepository component attribute repository + * @param componentInfos list of component information + * @param provisionSessionId uuid representation of the provision session id + * @param ignoreRevisionAttribute whether to ignore revision attribute + * @return a supply chain validation + */ public static SupplyChainValidation evaluatePCAttributesStatus( - final PlatformCredential pc, final DeviceInfoReport deviceInfoReport, - final EndorsementCredential ec, + final PlatformCredential platformCredential, final DeviceInfoReport deviceInfoReport, + final EndorsementCredential endorsementCredential, final CertificateRepository certificateRepository, final ComponentResultRepository componentResultRepository, final ComponentAttributeRepository componentAttributeRepository, @@ -112,36 +137,49 @@ public class ValidationService { final SupplyChainValidation.ValidationType validationType = SupplyChainValidation.ValidationType.PLATFORM_CREDENTIAL_ATTRIBUTES; - if (pc == null) { + if (platformCredential == null) { log.error("No platform credential to validate"); return buildValidationRecord(validationType, AppraisalStatus.Status.FAIL, "Platform credential is missing", null, Level.ERROR); } log.info("Validating platform credential attributes"); + AppraisalStatus result = CredentialValidator. - validatePlatformCredentialAttributes(pc, deviceInfoReport, ec, + validatePlatformCredentialAttributes(platformCredential, deviceInfoReport, + endorsementCredential, componentResultRepository, componentAttributeRepository, componentInfos, provisionSessionId, ignoreRevisionAttribute); - switch (result.getAppStatus()) { - case PASS: - return buildValidationRecord(validationType, AppraisalStatus.Status.PASS, - result.getMessage(), pc, Level.INFO); - case FAIL: + + return switch (result.getAppStatus()) { + case PASS -> buildValidationRecord(validationType, AppraisalStatus.Status.PASS, + result.getMessage(), platformCredential, Level.INFO); + case FAIL -> { if (!result.getAdditionalInfo().isEmpty()) { - pc.setComponentFailures(result.getAdditionalInfo()); - pc.setComponentFailureMessage(result.getMessage()); - certificateRepository.save(pc); + platformCredential.setComponentFailures(result.getAdditionalInfo()); + platformCredential.setComponentFailureMessage(result.getMessage()); + certificateRepository.save(platformCredential); } - return buildValidationRecord(validationType, AppraisalStatus.Status.FAIL, - result.getMessage(), pc, Level.WARN); - case ERROR: - default: - return buildValidationRecord(validationType, AppraisalStatus.Status.ERROR, - result.getMessage(), pc, Level.ERROR); - } + yield buildValidationRecord(validationType, AppraisalStatus.Status.FAIL, + result.getMessage(), platformCredential, Level.WARN); + } + default -> buildValidationRecord(validationType, AppraisalStatus.Status.ERROR, + result.getMessage(), platformCredential, Level.ERROR); + }; } + /** + * @param deviceInfoReport + * @param base + * @param deltaMapping + * @param certificateRepository + * @param componentResultRepository + * @param componentAttributeRepository + * @param componentInfos + * @param provisionSessionId + * @param ignoreRevisionAttribute + * @return + */ public static SupplyChainValidation evaluateDeltaAttributesStatus( final DeviceInfoReport deviceInfoReport, final PlatformCredential base, @@ -160,11 +198,11 @@ public class ValidationService { base, deltaMapping, componentInfos, componentResultRepository, componentAttributeRepository, provisionSessionId, ignoreRevisionAttribute); - switch (result.getAppStatus()) { - case PASS: - return buildValidationRecord(validationType, AppraisalStatus.Status.PASS, - result.getMessage(), base, Level.INFO); - case FAIL: + + return switch (result.getAppStatus()) { + case PASS -> buildValidationRecord(validationType, AppraisalStatus.Status.PASS, + result.getMessage(), base, Level.INFO); + case FAIL -> { if (!result.getAdditionalInfo().isEmpty()) { base.setComponentFailures(result.getAdditionalInfo()); base.setComponentFailureMessage(result.getMessage()); @@ -172,15 +210,24 @@ public class ValidationService { } // we are adding things to componentFailures // certificateRepository.save(delta); - return buildValidationRecord(validationType, AppraisalStatus.Status.FAIL, + yield buildValidationRecord(validationType, AppraisalStatus.Status.FAIL, result.getMessage(), base, Level.WARN); - case ERROR: - default: - return buildValidationRecord(validationType, AppraisalStatus.Status.ERROR, - result.getMessage(), base, Level.ERROR); - } + // we are adding things to componentFailures +// certificateRepository.save(delta); + } + default -> buildValidationRecord(validationType, AppraisalStatus.Status.ERROR, + result.getMessage(), base, Level.ERROR); + }; } + /** + * @param device + * @param policySettings + * @param rimRepo + * @param rdvRepo + * @param caRepo + * @return + */ public static SupplyChainValidation evaluateFirmwareStatus( final Device device, final PolicySettings policySettings, final ReferenceManifestRepository rimRepo, @@ -206,17 +253,12 @@ public class ValidationService { } } - switch (result.getAppStatus()) { - case PASS: - logLevel = Level.INFO; - break; - case FAIL: - logLevel = Level.WARN; - break; - case ERROR: - default: - logLevel = Level.ERROR; - } + logLevel = switch (result.getAppStatus()) { + case PASS -> Level.INFO; + case FAIL -> Level.WARN; + default -> Level.ERROR; + }; + return buildValidationRecord(validationType, result.getAppStatus(), result.getMessage(), referenceManifest, logLevel); } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/package-info.java new file mode 100644 index 00000000..0210df6c --- /dev/null +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/package-info.java @@ -0,0 +1 @@ +package hirs.attestationca.persist.service; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/CertificateSelector.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/CertificateSelector.java index a99d2dba..10ad8859 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/CertificateSelector.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/CertificateSelector.java @@ -6,6 +6,7 @@ import jakarta.persistence.criteria.CriteriaBuilder; import jakarta.persistence.criteria.CriteriaQuery; import jakarta.persistence.criteria.Predicate; import jakarta.persistence.criteria.Root; +import lombok.Getter; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; import org.bouncycastle.util.Arrays; @@ -71,6 +72,7 @@ import java.util.UUID; */ public abstract class CertificateSelector { + @Getter private final Class certificateClass; private final Map fieldValueSelections; @@ -350,6 +352,7 @@ public abstract class CertificateSelector { * Construct the criterion that can be used to query for certificates matching the configuration * of this {@link CertificateSelector}. * + * @param criteriaBuilder criteria builder * @return a Criterion that can be used to query for certificates matching the configuration of * this instance */ @@ -371,13 +374,6 @@ public abstract class CertificateSelector { return predicates; } - /** - * @return the certificate class that this instance will query - */ - public Class getCertificateClass() { - return certificateClass; - } - /** * Configures the selector to query for archived and unarchived certificates. * diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/package-info.java new file mode 100644 index 00000000..263ee908 --- /dev/null +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/package-info.java @@ -0,0 +1 @@ +package hirs.attestationca.persist.service.selector; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/tpm/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/tpm/package-info.java new file mode 100644 index 00000000..79899629 --- /dev/null +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/tpm/package-info.java @@ -0,0 +1 @@ +package hirs.attestationca.persist.tpm; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/type/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/type/package-info.java new file mode 100644 index 00000000..8b7ae213 --- /dev/null +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/type/package-info.java @@ -0,0 +1 @@ +package hirs.attestationca.persist.type; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/CredentialHelper.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/CredentialHelper.java index df4becff..bf336bbf 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/CredentialHelper.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/CredentialHelper.java @@ -64,7 +64,7 @@ public final class CredentialHelper { * @param certificateBytes raw byte form * @return a cleaned up byte form */ - @SuppressWarnings("magicnumber") + public static byte[] trimCertificate(final byte[] certificateBytes) { int certificateStart = 0; int certificateLength = 0; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/package-info.java new file mode 100644 index 00000000..736028a8 --- /dev/null +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/package-info.java @@ -0,0 +1 @@ +package hirs.attestationca.persist.util; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/CertificateAttributeScvValidator.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/CertificateAttributeScvValidator.java index 060855ea..af9464ca 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/CertificateAttributeScvValidator.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/CertificateAttributeScvValidator.java @@ -313,10 +313,15 @@ public class CertificateAttributeScvValidator extends SupplyChainCredentialValid * pick out the changes that lead to the delta cert and make sure the changes * are valid. * - * @param deviceInfoReport The paccor profile of device being validated against. - * @param deltaMapping map of delta certificates to their validated status - * @param origPcComponents The component identifier list associated with the - * base cert for this specific chain + * @param deviceInfoReport The paccor profile of device being validated against. + * @param deltaMapping map of delta certificates to their validated status + * @param origPcComponents The component identifier list associated with the + * base cert for this specific chain + * @param componentInfos list of component information + * @param componentResultRepository component result repository + * @param componentAttributeRepository component attribute repository + * @param provisionSessionId uuid representation of the provision session id + * @param ignoreRevisionAttribute whether to ignore the revision attribute * @return Appraisal Status of delta being validated. */ @@ -1022,11 +1027,13 @@ public class CertificateAttributeScvValidator extends SupplyChainCredentialValid } /** - * @param deltaCertificates - * @param componentResultRepository - * @param componentAttributeRepository - * @param provisionSessionId - * @return + * Compiles a list of delta component results. + * + * @param deltaCertificates delta certificates + * @param componentResultRepository component result repository + * @param componentAttributeRepository component attribute repository + * @param provisionSessionId uuid representation of the provision session id + * @return a list of delta component results */ private static List compileDeltaComponentResults( final List deltaCertificates, @@ -1044,7 +1051,7 @@ public class CertificateAttributeScvValidator extends SupplyChainCredentialValid // pull all component results that are not delta List dbBaseComponents = componentResultRepository .findByBoardSerialNumberAndDelta(deltaCertificates.get(0).getPlatformSerial(), false); - dbBaseComponents.stream().forEach((componentResult) -> { + dbBaseComponents.forEach((componentResult) -> { // ignore values that are not unique if (nonSerialValues.contains(componentResult.getSerialNumber())) { componentNonUniqueSerialMap.put(componentResult.hashCommonElements(), componentResult); diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/CredentialValidator.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/CredentialValidator.java index 14ac22bf..722f9b48 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/CredentialValidator.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/CredentialValidator.java @@ -228,13 +228,14 @@ public class CredentialValidator extends SupplyChainCredentialValidator { * @param deviceInfoReport The device info report containing * serial number of the platform to be validated. * @param basePlatformCredential the base credential from the same identity request - * * as the delta credential. + * as the delta credential. * @param deltaMapping delta certificates associated with the - * * delta supply validation. + * delta supply validation. * @param componentInfos list of device components * @param componentResultRepository repository for component results * @param componentAttributeRepository repository for the attribute status * @param provisionSessionId the session id to share + * @param ignoreRevisionAttribute whether to ignore the revision attribute * @return the result of the validation. */ public static AppraisalStatus validateDeltaPlatformCredentialAttributes( @@ -244,7 +245,8 @@ public class CredentialValidator extends SupplyChainCredentialValidator { final List componentInfos, final ComponentResultRepository componentResultRepository, final ComponentAttributeRepository componentAttributeRepository, - final UUID provisionSessionId, final boolean ignoreRevisionAttribute) { + final UUID provisionSessionId, + final boolean ignoreRevisionAttribute) { final String baseErrorMessage = "Can't validate platform credential attributes without "; String message; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/FirmwareScvValidator.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/FirmwareScvValidator.java index 9d922042..5cf9c635 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/FirmwareScvValidator.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/FirmwareScvValidator.java @@ -40,14 +40,13 @@ public class FirmwareScvValidator extends SupplyChainCredentialValidator { private static PcrValidator pcrValidator; /** - * @param device - * @param policySettings - * @param referenceManifestRepository - * @param referenceDigestValueRepository - * @param caCredentialRepository - * @return + * @param device device + * @param policySettings policy settings + * @param referenceManifestRepository reference manifest repository + * @param referenceDigestValueRepository reference digest value repository + * @param caCredentialRepository CA Credential repository + * @return an appraisal status */ - public static AppraisalStatus validateFirmware( final Device device, final PolicySettings policySettings, final ReferenceManifestRepository referenceManifestRepository, @@ -66,12 +65,13 @@ public class FirmwareScvValidator extends SupplyChainCredentialValidator { //baseReferenceManifests = referenceManifestRepository.findAllBaseRims(); // This block was looking for a base RIM matching the device name - // The base rim might not have a device name associated with it- i.e. if it's uploaded to the ACA prior to provisioning - // In this case, try to look up the event log associated with the device, then get the base rim associated by event log hash + // The base rim might not have a device name associated with it- i.e. if it's uploaded to the ACA + // prior to provisioning In this case, try to look up the event log associated with the device, + // then get the base rim associated by event log hash List deviceRims = referenceManifestRepository.findByDeviceName(hostName); for (ReferenceManifest deviceRim : deviceRims) { - if (deviceRim instanceof BaseReferenceManifest && !deviceRim.isSwidSupplemental() && - !deviceRim.isSwidPatch()) { + if (deviceRim instanceof BaseReferenceManifest && !deviceRim.isSwidSupplemental() + && !deviceRim.isSwidPatch()) { baseReferenceManifest = (BaseReferenceManifest) deviceRim; } @@ -210,12 +210,8 @@ public class FirmwareScvValidator extends SupplyChainCredentialValidator { try { logProcessor = new TCGEventLog(supportReferenceManifest.getRimBytes()); baseline = logProcessor.getExpectedPCRValues(); - } catch (CertificateException cEx) { - log.error(cEx); - } catch (NoSuchAlgorithmException noSaEx) { - log.error(noSaEx); - } catch (IOException ioEx) { - log.error(ioEx); + } catch (CertificateException | NoSuchAlgorithmException | IOException exception) { + log.error(exception); } // part 1 of firmware validation check: PCR baseline match @@ -258,12 +254,8 @@ public class FirmwareScvValidator extends SupplyChainCredentialValidator { tpmPcrEvents.addAll(pcrValidator.validateTpmEvents( tcgMeasurementLog, eventValueMap, policySettings)); } - } catch (CertificateException cEx) { - log.error(cEx); - } catch (NoSuchAlgorithmException noSaEx) { - log.error(noSaEx); - } catch (IOException ioEx) { - log.error(ioEx); + } catch (CertificateException | NoSuchAlgorithmException | IOException exception) { + log.error(exception); } if (!tpmPcrEvents.isEmpty()) { diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/PcrValidator.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/PcrValidator.java index 1ee17fca..f964007f 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/PcrValidator.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/PcrValidator.java @@ -66,6 +66,13 @@ public class PcrValidator { System.arraycopy(pcrValues, 0, baselinePcrs, 0, TPMMeasurementRecord.MAX_PCR_ID + 1); } + /** + * Builds a string array of stored pcrs. + * + * @param pcrContent string representation of the pcr content + * @param algorithmLength length of the algorithm + * @return string array representation of the stored pcrs. + */ public static String[] buildStoredPcrs(final String pcrContent, final int algorithmLength) { // we have a full set of PCR values String[] pcrSet = pcrContent.split("\\n"); @@ -142,7 +149,7 @@ public class PcrValidator { } if (!baselinePcrs[i].equals(storedPcrs[i])) { - log.error(String.format("%s =/= %s", baselinePcrs[i], storedPcrs[i])); + log.error("{} =/= {}", baselinePcrs[i], storedPcrs[i]); sb.append(String.format(failureMsg, i)); } } @@ -166,24 +173,24 @@ public class PcrValidator { List tpmPcrEvents = new LinkedList<>(); for (TpmPcrEvent tpe : tcgMeasurementLog.getEventList()) { if (policySettings.isIgnoreImaEnabled() && tpe.getPcrIndex() == IMA_PCR) { - log.info(String.format("IMA Ignored -> %s", tpe)); + log.info("IMA Ignored -> {}", tpe); } else if (policySettings.isIgnoretBootEnabled() && (tpe.getPcrIndex() >= TBOOT_PCR_START && tpe.getPcrIndex() <= TBOOT_PCR_END)) { - log.info(String.format("TBOOT Ignored -> %s", tpe)); + log.info("TBOOT Ignored -> {}", tpe); } else if (policySettings.isIgnoreOsEvtEnabled() && (tpe.getPcrIndex() >= PXE_PCR_START && tpe.getPcrIndex() <= PXE_PCR_END)) { - log.info(String.format("OS Evt Ignored -> %s", tpe)); + log.info("OS Evt Ignored -> {}", tpe); } else { if (policySettings.isIgnoreGptEnabled() && tpe.getEventTypeStr().contains(EVT_EFI_GPT)) { - log.info(String.format("GPT Ignored -> %s", tpe)); + log.info("GPT Ignored -> {}", tpe); } else if (policySettings.isIgnoreOsEvtEnabled() && ( tpe.getEventTypeStr().contains(EVT_EFI_BOOT) || tpe.getEventTypeStr().contains(EVT_EFI_VAR))) { - log.info(String.format("OS Evt Ignored -> %s", tpe)); + log.info("OS Evt Ignored -> {}", tpe); } else if (policySettings.isIgnoreOsEvtEnabled() && ( tpe.getEventTypeStr().contains(EVT_EFI_CFG) && tpe.getEventContentStr().contains("SecureBoot"))) { - log.info(String.format("OS Evt Config Ignored -> %s", tpe)); + log.info("OS Evt Config Ignored -> {}", tpe); } else { if (!eventValueMap.containsKey(tpe.getEventDigestStr())) { tpmPcrEvents.add(tpe); @@ -244,12 +251,13 @@ public class PcrValidator { // other information. String calculatedString = Hex.encodeHexString( pcrInfoShort.getCalculatedDigest()); - log.debug("Validating PCR information with the following:" + - System.lineSeparator() + "calculatedString = " + calculatedString + - System.lineSeparator() + "quoteString = " + quoteString); + log.debug( + "Validating PCR information with the following:{}calculatedString = {}{}" + + "quoteString = {}", System.lineSeparator(), calculatedString, + System.lineSeparator(), quoteString); validated = quoteString.contains(calculatedString); if (!validated) { - log.warn(calculatedString + " not found in " + quoteString); + log.warn("{} not found in {}", calculatedString, quoteString); } } catch (NoSuchAlgorithmException naEx) { log.error(naEx); diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidator.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidator.java index 749a34a8..d1567f7f 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidator.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidator.java @@ -39,7 +39,7 @@ import java.util.Set; public class SupplyChainCredentialValidator { /** - * used to identify and clear a nuc + * used to identify and clear a nuc. */ public static final int NUC_VARIABLE_BIT = 159; /** @@ -63,7 +63,7 @@ public class SupplyChainCredentialValidator { */ public static final String FIRMWARE_VALID = "Firmware validated"; - /** + /* * Ensure that BouncyCastle is configured as a javax.security.Security provider, as this * class expects it to be available. */ diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/package-info.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/package-info.java new file mode 100644 index 00000000..27ae86db --- /dev/null +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/package-info.java @@ -0,0 +1 @@ +package hirs.attestationca.persist.validation; diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/tpm/TPM2ProvisionerStateTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/tpm/TPM2ProvisionerStateTest.java index 6367720d..2c50cc70 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/tpm/TPM2ProvisionerStateTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/tpm/TPM2ProvisionerStateTest.java @@ -20,20 +20,21 @@ import static org.mockito.Mockito.when; */ public class TPM2ProvisionerStateTest { - private static final Random random = new Random(); + private static final Random RANDOM_GENERATOR = new Random(); /** * Tests that the values passed to the constructor are equal to the values * returned by the getters. - * - * @throws IOException this will never happen */ @Test - public final void testTPM2ProvisionerState() throws IOException { - byte[] nonce = new byte[32]; - byte[] identityClaim = new byte[360]; - random.nextBytes(nonce); - random.nextBytes(identityClaim); + public final void testTPM2ProvisionerState() { + final int nonceSize = 32; + final int identityClaimSize = 360; + byte[] nonce = new byte[nonceSize]; + byte[] identityClaim = new byte[identityClaimSize]; + + RANDOM_GENERATOR.nextBytes(nonce); + RANDOM_GENERATOR.nextBytes(identityClaim); TPM2ProvisionerState state = new TPM2ProvisionerState(nonce, identityClaim); @@ -45,12 +46,14 @@ public class TPM2ProvisionerStateTest { * Test that the constructor throws an {@link IllegalArgumentException} when a null is * passed in for the nonce. * - * @throws IOException this will never happen + * @throws IllegalArgumentException this will never happen */ @Test - public final void testNullNonce() throws IOException { - byte[] identityClaim = new byte[360]; - random.nextBytes(identityClaim); + public final void testNullNonce() throws IllegalArgumentException { + final int identityClaimSize = 360; + byte[] identityClaim = new byte[identityClaimSize]; + + RANDOM_GENERATOR.nextBytes(identityClaim); assertThrows(IllegalArgumentException.class, () -> new TPM2ProvisionerState(null, identityClaim)); } @@ -59,12 +62,15 @@ public class TPM2ProvisionerStateTest { * Test that the constructor throws an {@link IllegalArgumentException} when a null is * passed in for the identity claim. * - * @throws IOException this will never happen + * @throws IllegalArgumentException this will never happen */ @Test - public final void testNullIdentityClaim() throws IOException { - byte[] nonce = new byte[32]; - random.nextBytes(nonce); + public final void testNullIdentityClaim() throws IllegalArgumentException { + final int nonceSize = 32; + byte[] nonce = new byte[nonceSize]; + + RANDOM_GENERATOR.nextBytes(nonce); + assertThrows(IllegalArgumentException.class, () -> new TPM2ProvisionerState(nonce, null)); } @@ -73,14 +79,17 @@ public class TPM2ProvisionerStateTest { * Test that the constructor throws an {@link IllegalArgumentException} when a nonce is * passed in that is less than 8 bytes. * - * @throws IOException this will never happen + * @throws IllegalArgumentException this will never happen */ @Test - public final void testNonceToSmall() throws IOException { - byte[] nonce = new byte[7]; - byte[] identityClaim = new byte[360]; - random.nextBytes(nonce); - random.nextBytes(identityClaim); + public final void testNonceToSmall() throws IllegalArgumentException { + final int nonceSize = 7; + final int identityClaimSize = 360; + byte[] nonce = new byte[nonceSize]; + byte[] identityClaim = new byte[identityClaimSize]; + + RANDOM_GENERATOR.nextBytes(nonce); + RANDOM_GENERATOR.nextBytes(identityClaim); assertThrows(IllegalArgumentException.class, () -> new TPM2ProvisionerState(nonce, identityClaim)); } @@ -98,10 +107,13 @@ public class TPM2ProvisionerStateTest { public final void testGetTPM2ProvisionerStateNominal() throws IOException { TPM2ProvisionerStateRepository tpm2ProvisionerStateRepository = mock(TPM2ProvisionerStateRepository.class); - byte[] nonce = new byte[32]; - byte[] identityClaim = new byte[360]; - random.nextBytes(nonce); - random.nextBytes(identityClaim); + final int nonceSize = 32; + final int identityClaimSize = 360; + byte[] nonce = new byte[nonceSize]; + byte[] identityClaim = new byte[identityClaimSize]; + + RANDOM_GENERATOR.nextBytes(nonce); + RANDOM_GENERATOR.nextBytes(identityClaim); DataInputStream dis = new DataInputStream(new ByteArrayInputStream(nonce)); Long index = dis.readLong(); @@ -125,10 +137,14 @@ public class TPM2ProvisionerStateTest { public final void testGetTPM2ProvisionerStateNullNonce() throws IOException { TPM2ProvisionerStateRepository tpm2ProvisionerStateRepository = mock(TPM2ProvisionerStateRepository.class); - byte[] nonce = new byte[32]; - byte[] identityClaim = new byte[360]; - random.nextBytes(nonce); - random.nextBytes(identityClaim); + final int nonceSize = 32; + final int identityClaimSize = 360; + byte[] nonce = new byte[nonceSize]; + byte[] identityClaim = new byte[identityClaimSize]; + + RANDOM_GENERATOR.nextBytes(nonce); + RANDOM_GENERATOR.nextBytes(identityClaim); + DataInputStream dis = new DataInputStream(new ByteArrayInputStream(nonce)); Long index = dis.readLong(); dis.close(); @@ -149,10 +165,14 @@ public class TPM2ProvisionerStateTest { public final void testGetTPM2ProvisionerStateNonceTooSmall() throws IOException { TPM2ProvisionerStateRepository tpm2ProvisionerStateRepository = mock(TPM2ProvisionerStateRepository.class); - byte[] nonce = new byte[32]; - byte[] identityClaim = new byte[360]; - random.nextBytes(nonce); - random.nextBytes(identityClaim); + final int nonceSize = 32; + final int identityClaimSize = 360; + byte[] nonce = new byte[nonceSize]; + byte[] identityClaim = new byte[identityClaimSize]; + + RANDOM_GENERATOR.nextBytes(nonce); + RANDOM_GENERATOR.nextBytes(identityClaim); + DataInputStream dis = new DataInputStream(new ByteArrayInputStream(nonce)); Long index = dis.readLong(); dis.close(); diff --git a/HIRS_AttestationCAPortal/build.gradle b/HIRS_AttestationCAPortal/build.gradle index f18edb21..cd03df12 100644 --- a/HIRS_AttestationCAPortal/build.gradle +++ b/HIRS_AttestationCAPortal/build.gradle @@ -21,9 +21,9 @@ java { } bootRun { - if (project.hasProperty('debug')) { - jvmArgs project.debug - } + if (project.hasProperty('debug')) { + jvmArgs project.debug + } } configurations { @@ -80,10 +80,10 @@ configurations.checkstyle { } } checkstyleMain { - source ='src/main/java' + source = 'src/main/java' } checkstyleTest { - source ='src/test/java' + source = 'src/test/java' } tasks.withType(Checkstyle) { reports { @@ -110,36 +110,36 @@ ospackage { arch = NOARCH version = "$packVersion" release = '2' - - + + user 'root' fileMode = 0755 addParentDirs = true - createDirectoryEntry true + createDirectoryEntry true - into ('/etc/hirs') { - from '../VERSION' - } + into('/etc/hirs') { + from '../VERSION' + } // copy json tables - into ('/etc/hirs/aca/default-properties') { - from '../HIRS_AttestationCA/src/main/resources/component-class.json' - from '../HIRS_Utils/src/main/resources/vendor-table.json' + into('/etc/hirs/aca/default-properties') { + from '../HIRS_AttestationCA/src/main/resources/component-class.json' + from '../HIRS_Utils/src/main/resources/vendor-table.json' } // copy springboot property file - into ('/etc/hirs/aca/') { - from '../HIRS_AttestationCAPortal/src/main/resources/application.properties' - from 'build/VERSION' + into('/etc/hirs/aca/') { + from '../HIRS_AttestationCAPortal/src/main/resources/application.properties' + from 'build/VERSION' } // copy setup scripts to /opt/hirs/aca - into ('/opt/hirs/aca/scripts/') { - from '../package/linux/' + into('/opt/hirs/aca/scripts/') { + from '../package/linux/' } // copy the war file into /opt/hirs/aca - into ('/opt/hirs/aca/') { - from '../HIRS_AttestationCAPortal/build/libs/HIRS_AttestationCAPortal.war' - user 'root' - fileMode = 0755 + into('/opt/hirs/aca/') { + from '../HIRS_AttestationCAPortal/build/libs/HIRS_AttestationCAPortal.war' + user 'root' + fileMode = 0755 } // Install - check for existing setup @@ -152,12 +152,12 @@ ospackage { postUninstall 'if [ -d /opt/hirs ]; then rm -rf /opt/hirs; fi;' buildRpm { - dependsOn ':HIRS_AttestationCAPortal:buildVersion' - dependsOn ':HIRS_AttestationCAPortal:bootWar' + dependsOn ':HIRS_AttestationCAPortal:buildVersion' + dependsOn ':HIRS_AttestationCAPortal:bootWar' arch = X86_64 // Required apps will be aut installed by dnf if not present requires('java-17-openjdk', '17.0', GREATER | EQUAL) - requires('mariadb-server' , '10.3' , GREATER | EQUAL) + requires('mariadb-server', '10.3', GREATER | EQUAL) requires('procps-ng', '3.3.15', GREATER | EQUAL) requires('alternatives', '1.19', GREATER | EQUAL) // Post Trans stage (Occurs after required app and postInstall stage) @@ -174,12 +174,12 @@ ospackage { } buildDeb { - dependsOn ':HIRS_AttestationCAPortal:buildVersion' - dependsOn ':HIRS_AttestationCAPortal:bootWar' + dependsOn ':HIRS_AttestationCAPortal:buildVersion' + dependsOn ':HIRS_AttestationCAPortal:bootWar' packageName = 'hirs-attestationca' arch = 'amd64' requires('openjdk-17-jdk', '17.0', GREATER | EQUAL) - requires('mariadb-server' , '10.3' , GREATER | EQUAL) + requires('mariadb-server', '10.3', GREATER | EQUAL) requires('curl') // Install after required packages postInstall 'bash /opt/hirs/aca/scripts/aca/aca_setup.sh -u' diff --git a/HIRS_AttestationCAPortal/config/spotbugs/spotbugs-exclude.xml b/HIRS_AttestationCAPortal/config/spotbugs/spotbugs-exclude.xml index a78c5f3d..9460d1e7 100644 --- a/HIRS_AttestationCAPortal/config/spotbugs/spotbugs-exclude.xml +++ b/HIRS_AttestationCAPortal/config/spotbugs/spotbugs-exclude.xml @@ -2,11 +2,11 @@ - + - + diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSApplication.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSApplication.java index 1207576f..bbb35040 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSApplication.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSApplication.java @@ -1,18 +1,8 @@ package hirs.attestationca.portal; -import jakarta.servlet.ServletContext; -import jakarta.servlet.ServletException; -import jakarta.servlet.ServletRegistration; import lombok.extern.log4j.Log4j2; import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; -import org.springframework.web.context.support.GenericWebApplicationContext; -import org.springframework.web.servlet.DispatcherServlet; - -import java.util.Collections; @SpringBootApplication //@EnableAutoConfiguration diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSDbInitializer.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSDbInitializer.java index c42b7dfa..ebd34350 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSDbInitializer.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSDbInitializer.java @@ -11,7 +11,8 @@ import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatche @Log4j2 @WebListener -public class HIRSDbInitializer extends AbstractAnnotationConfigDispatcherServletInitializer implements ServletContextListener { +public class HIRSDbInitializer extends AbstractAnnotationConfigDispatcherServletInitializer + implements ServletContextListener { @Override public void contextInitialized(final ServletContextEvent servletContextEvent) { @@ -21,11 +22,12 @@ public class HIRSDbInitializer extends AbstractAnnotationConfigDispatcherServlet // applicationContext.register(PersistenceConfiguration.class); try { - applicationContext.refresh(); + applicationContext.refresh(); } catch (NoSuchBeanDefinitionException nsbdEx) { if (log.isDebugEnabled()) { - log.debug("Unable to locate MultipartResolver with name 'multipartResolver': no multipart request handling provided"); + log.debug( + "Unable to locate MultipartResolver with name 'multipartResolver': no multipart request handling provided"); } } catch (Exception ex) { log.error(ex.getMessage()); @@ -33,14 +35,14 @@ public class HIRSDbInitializer extends AbstractAnnotationConfigDispatcherServlet } @Override - protected Class [] getRootConfigClasses() { + protected Class[] getRootConfigClasses() { return new Class[] { PersistenceJPAConfig.class, PageConfiguration.class, PersistenceConfiguration.class }; } @Override - protected Class [] getServletConfigClasses() { + protected Class[] getServletConfigClasses() { return null; } diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/PersistenceJPAConfig.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/PersistenceJPAConfig.java index f969f751..dae778b7 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/PersistenceJPAConfig.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/PersistenceJPAConfig.java @@ -56,10 +56,12 @@ import java.util.Properties; ignoreResourceNotFound = true), @PropertySource(value = "file:/etc/hirs/aca/application.properties", ignoreResourceNotFound = true), - @PropertySource(value = "file:C:/ProgramData/hirs/aca/application.win.properties", + @PropertySource(value = "file:C:/ProgramData/hirs/aca/application.win.properties", ignoreResourceNotFound = true) }) -@ComponentScan({"hirs.attestationca.portal", "hirs.attestationca.portal.page.controllers", "hirs.attestationca.persist", "hirs.attestationca.persist.entity", "hirs.attestationca.persist.service"}) +@ComponentScan({"hirs.attestationca.portal", "hirs.attestationca.portal.page.controllers", + "hirs.attestationca.persist", "hirs.attestationca.persist.entity", + "hirs.attestationca.persist.service"}) @EnableJpaRepositories(basePackages = "hirs.attestationca.persist.entity.manager") public class PersistenceJPAConfig implements WebMvcConfigurer { @@ -80,7 +82,8 @@ public class PersistenceJPAConfig implements WebMvcConfigurer { @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory() { - final LocalContainerEntityManagerFactoryBean entityManagerBean = new LocalContainerEntityManagerFactoryBean(); + final LocalContainerEntityManagerFactoryBean entityManagerBean = + new LocalContainerEntityManagerFactoryBean(); entityManagerBean.setDataSource(dataSource()); entityManagerBean.setPackagesToScan("hirs.attestationca.persist.entity"); diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/DataTableInput.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/DataTableInput.java index ee6256c7..9c176eea 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/DataTableInput.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/DataTableInput.java @@ -22,14 +22,66 @@ import java.util.Map; public class DataTableInput { private static final int DEFAULT_LENGTH = 10; + /** + * Draw counter. This is used by DataTables to ensure that the Ajax returns from server-side + * processing requests are drawn in sequence by DataTables (Ajax requests are asynchronous and + * thus can return out of sequence). This is used as part of the draw return parameter (see + * below). + */ + @NotNull + @Min(0) + @Getter + @Setter + private int draw = 1; + /** + * Paging first record indicator. This is the start point in the current data set + * (0 index based - i.e. 0 is the first record). + */ + @NotNull + @Min(0) + @Getter + @Setter + private int start = 0; + /** + * Number of records that the table can display in the current draw. It is expected that the + * number of records returned will be equal to this number, + * unless the server has fewer records to return. Note that this can be -1 to indicate that + * all records should be returned (although that + * negates any benefits of server-side processing!) + */ + @NotNull + @Min(-1) + @Getter + @Setter + private int length = DEFAULT_LENGTH; + /** + * Global search parameter. + */ + @Getter + @Setter + @NotNull + private Search search = new Search(); + /** + * Order parameter. + */ + @Getter + @NotEmpty + private List order = new ArrayList<>(); + /** + * Per-column search parameter. + */ + @Getter + @NotEmpty + private List columns = new ArrayList<>(); /** * Constructor. - * @param draw the draw counter - * @param start the paging start indicator - * @param length the number of records in current draw - * @param search the search parameter - * @param order the orderings + * + * @param draw the draw counter + * @param start the paging start indicator + * @param length the number of records in current draw + * @param search the search parameter + * @param order the orderings * @param columns the columns of the input */ public DataTableInput(final Integer draw, final Integer start, final Integer length, @@ -43,65 +95,9 @@ public class DataTableInput { this.columns.addAll(columns); } - /** - * Draw counter. This is used by DataTables to ensure that the Ajax returns from server-side - * processing requests are drawn in sequence by DataTables (Ajax requests are asynchronous and - * thus can return out of sequence). This is used as part of the draw return parameter (see - * below). - */ - @NotNull - @Min(0) - @Getter - @Setter - private int draw = 1; - - /** - * Paging first record indicator. This is the start point in the current data set - * (0 index based - i.e. 0 is the first record). - */ - @NotNull - @Min(0) - @Getter - @Setter - private int start = 0; - - /** - * Number of records that the table can display in the current draw. It is expected that the - * number of records returned will be equal to this number, - * unless the server has fewer records to return. Note that this can be -1 to indicate that - * all records should be returned (although that - * negates any benefits of server-side processing!) - */ - @NotNull - @Min(-1) - @Getter - @Setter - private int length = DEFAULT_LENGTH; - - /** - * Global search parameter. - */ - @Getter - @Setter - @NotNull - private Search search = new Search(); - - /** - * Order parameter. - */ - @Getter - @NotEmpty - private List order = new ArrayList<>(); - - /** - * Per-column search parameter. - */ - @Getter - @NotEmpty - private List columns = new ArrayList<>(); - /** * Sets the orders. + * * @param order the orders */ public void setOrder(final List order) { @@ -111,6 +107,7 @@ public class DataTableInput { /** * Sets the table columns. + * * @param columns the columns */ public void setColumns(final List columns) { @@ -119,7 +116,6 @@ public class DataTableInput { } /** - * * @return a {@link Map} of {@link Column} indexed by name */ public Map getColumnsAsMap() { @@ -151,9 +147,9 @@ public class DataTableInput { /** * Add a new column. * - * @param columnName the name of the column - * @param searchable whether the column is searchable or not - * @param orderable whether the column is orderable or not + * @param columnName the name of the column + * @param searchable whether the column is searchable or not + * @param orderable whether the column is orderable or not * @param searchValue if any, the search value to apply */ public void addColumn(final String columnName, final boolean searchable, @@ -166,7 +162,7 @@ public class DataTableInput { * Add an order on the given column. * * @param columnName the name of the column - * @param ascending whether the sorting is ascending or descending + * @param ascending whether the sorting is ascending or descending */ public void addOrder(final String columnName, final boolean ascending) { if (columnName == null) { @@ -182,6 +178,7 @@ public class DataTableInput { /** * Gets the order column name, given the order ordinal value. + * * @return the order column name */ public String getOrderColumnName() { @@ -207,6 +204,7 @@ public class DataTableInput { /** * Generates a string for this object. + * * @return the string */ @Override diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/DataTableResponse.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/DataTableResponse.java index d366ea37..f931d817 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/DataTableResponse.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/DataTableResponse.java @@ -20,9 +20,11 @@ import java.util.List; public final class DataTableResponse { private List data = new LinkedList(); - @Getter @Setter + @Getter + @Setter private int draw; - @Getter @Setter + @Getter + @Setter private long recordsTotal, recordsFiltered; /** diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/DataTableView.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/DataTableView.java index 034fc819..d21b5231 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/DataTableView.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/DataTableView.java @@ -2,21 +2,22 @@ package hirs.attestationca.portal.datatables; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import java.util.Map; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.http.MediaType; import org.springframework.web.servlet.view.AbstractUrlBasedView; +import java.util.Map; + /** * Serializes the DataTableResponse from the view as JSON and writes it to the HTTP response. - * */ public class DataTableView extends AbstractUrlBasedView { private static final Gson GSON = new GsonBuilder().create(); private static final String MODEL_FIELD; + static { final String name = DataTableResponse.class.getSimpleName(); MODEL_FIELD = name.substring(0, 1).toLowerCase() + name.substring(1); @@ -25,9 +26,9 @@ public class DataTableView extends AbstractUrlBasedView { /** * Serializes the DataTableResponse from the view as JSON and writes it to the HTTP response. * - * @param model combined output Map (never {@code null}), with dynamic values taking precedence - * over static attributes - * @param request current HTTP request + * @param model combined output Map (never {@code null}), with dynamic values taking precedence + * over static attributes + * @param request current HTTP request * @param response current HTTP response * @throws Exception if rendering failed */ diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/Order.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/Order.java index 80ecd80b..4b0a66fe 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/Order.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/Order.java @@ -19,9 +19,25 @@ import lombok.Setter; public class Order { + /** + * Column to which ordering should be applied. This is an index reference + * to the columns array of information that is also submitted to the server. + */ + @NotNull + @Min(0) + private int column; + /** + * Ordering direction for this column. It will be asc or desc to indicate ascending ordering or + * descending ordering, respectively. + */ + @NotNull + @Pattern(regexp = "(desc|asc)") + private String dir; + /** * Constructor. - * @param column the column index + * + * @param column the column index * @param isAscending true if ascending order */ public Order(final int column, final boolean isAscending) { @@ -33,25 +49,7 @@ public class Order { } } - /** - * Column to which ordering should be applied. This is an index reference - * to the columns array of information that is also submitted to the server. - */ - @NotNull - @Min(0) - private int column; - - /** - * Ordering direction for this column. It will be asc or desc to indicate ascending ordering or - * descending ordering, respectively. - */ - @NotNull - @Pattern(regexp = "(desc|asc)") - private String dir; - - /** - * * @return true if ascending order, false otherwise. */ public boolean isAscending() { diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/OrderedListQueryDataTableAdapter.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/OrderedListQueryDataTableAdapter.java index 518fa12b..dc2fec31 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/OrderedListQueryDataTableAdapter.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/OrderedListQueryDataTableAdapter.java @@ -20,6 +20,7 @@ import java.util.UUID; /** * A class to adapt the Javascript DataTable java class abstractions to the DBManager's getting * of ordered lists. + * * @param The type of object to query */ @NoArgsConstructor(access = AccessLevel.PRIVATE) @@ -28,11 +29,12 @@ public final class OrderedListQueryDataTableAdapter { /** * Gets the ordered list of records using a default, no-op criteria modifier. - * @param clazz the type of objects to query for - * @param dbManager the db manager to execute the actual query - * @param dataTableInput the JS DataTable query abstraction + * + * @param clazz the type of objects to query for + * @param dbManager the db manager to execute the actual query + * @param dataTableInput the JS DataTable query abstraction * @param orderColumnName the name of the column (java object field name) to query on - * @param the parameter type + * @param the parameter type * @return the filtered record list */ public static FilteredRecordsList getOrderedList(final Class clazz, @@ -51,12 +53,13 @@ public final class OrderedListQueryDataTableAdapter { /** * Gets the ordered list of records. - * @param clazz the type of objects to query for - * @param dbManager the db manager to execute the actual query - * @param dataTableInput the JS DataTable query abstraction - * @param orderColumnName the name of the column (java object field name) to query on + * + * @param clazz the type of objects to query for + * @param dbManager the db manager to execute the actual query + * @param dataTableInput the JS DataTable query abstraction + * @param orderColumnName the name of the column (java object field name) to query on * @param criteriaModifier the criteria modifier - * @param the parameter type + * @param the parameter type * @return the filtered record list */ public static FilteredRecordsList getOrderedList(final Class clazz, @@ -92,11 +95,12 @@ public final class OrderedListQueryDataTableAdapter { // searchableColumnMap, criteriaModifier); } - public static FilteredRecordsList getOrderedList(final JpaRepository dbManager, - final DataTableInput dataTableInput, - final String orderColumnName, - final CriteriaModifier criteriaModifier, - final EntityManager entityManager) { + public static FilteredRecordsList getOrderedList( + final JpaRepository dbManager, + final DataTableInput dataTableInput, + final String orderColumnName, + final CriteriaModifier criteriaModifier, + final EntityManager entityManager) { Map searchableColumnMap = new HashMap<>(); for (Column column : dataTableInput.getColumns()) { @@ -121,7 +125,6 @@ public final class OrderedListQueryDataTableAdapter { FilteredRecordsList filteredRecordsList = new FilteredRecordsList<>(); - filteredRecordsList.setRecordsTotal(dbManager.count()); filteredRecordsList.addAll(dbManager.findAll()); filteredRecordsList.setRecordsFiltered(10); diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/Search.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/Search.java index c8d206d5..f6130bc7 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/Search.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/Search.java @@ -16,20 +16,11 @@ import lombok.Setter; @NoArgsConstructor(access = AccessLevel.PUBLIC) public class Search { - /** - * Constructor for a non-regex search. - * @param value the search value - */ - public Search(final String value) { - this(value, false); - } - /** * Global search value. To be applied to all columns which have searchable as true. */ @NotNull private String value = ""; - /** * true if the global filter should be treated as a regular expression for advanced searching, * false otherwise. Note that normally server-side processing scripts will not perform regular @@ -39,6 +30,15 @@ public class Search { @NotNull private boolean regex; + /** + * Constructor for a non-regex search. + * + * @param value the search value + */ + public Search(final String value) { + this(value, false); + } + @Override public String toString() { return "Search{" diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/Page.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/Page.java index eb39cf5e..49fbf333 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/Page.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/Page.java @@ -86,13 +86,13 @@ public enum Page { /** * Constructor for Page. * - * @param title title of the page - * @param subtitle subtitle of the page - * @param icon icon for the page - * @param hasMenu the page has its own menu - * @param inMenu the page appears in a menu + * @param title title of the page + * @param subtitle subtitle of the page + * @param icon icon for the page + * @param hasMenu the page has its own menu + * @param inMenu the page appears in a menu * @param menuLinkClass the category to which this page belongs - * @param prefixPath prefix path that appears in the URL for this page + * @param prefixPath prefix path that appears in the URL for this page */ Page(final String title, final String subtitle, @@ -115,10 +115,10 @@ public enum Page { /** * Constructor for Page. * - * @param title title of the page - * @param icon icon for the page + * @param title title of the page + * @param icon icon for the page * @param menuLinkClass the category to which this page belongs - * @param prefixPath prefix path that appears in the URL for this page + * @param prefixPath prefix path that appears in the URL for this page */ Page(final String title, final String icon, @@ -130,8 +130,8 @@ public enum Page { /** * Constructor for Page. * - * @param title title of the page - * @param icon icon for the page + * @param title title of the page + * @param icon icon for the page * @param menuLinkClass the category to which this page belongs */ Page(final String title, @@ -144,7 +144,7 @@ public enum Page { * Constructor for Page. * * @param title title of the page - * @param icon icon for the page + * @param icon icon for the page */ Page(final String title, final String icon) { diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/PageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/PageController.java index 13cf7455..e4a60827 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/PageController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/PageController.java @@ -61,8 +61,8 @@ public abstract class PageController

{ * Returns the path for the view and the data model for the page. * * @param params The object to map url parameters into. - * @param model The data model for the request. Can contain data from - * redirect. + * @param model The data model for the request. Can contain data from + * redirect. * @return the path for the view and data model for the page. */ @RequestMapping @@ -110,8 +110,8 @@ public abstract class PageController

{ * Redirects back to this controller's page with the specified data. * * @param params The url parameters to pass to the page. - * @param model The model data to pass to the page. - * @param attr The request's RedirectAttributes to hold the model data. + * @param model The model data to pass to the page. + * @param attr The request's RedirectAttributes to hold the model data. * @return RedirectView back to the page with the specified parameters. * @throws URISyntaxException if malformed URI */ @@ -127,9 +127,9 @@ public abstract class PageController

{ * Redirects controller's page with the specified data. * * @param newPage new page to get the model and view - * @param params The url parameters to pass to the page. - * @param model The model data to pass to the page. - * @param attr The request's RedirectAttributes to hold the model data. + * @param params The url parameters to pass to the page. + * @param model The model data to pass to the page. + * @param attr The request's RedirectAttributes to hold the model data. * @return RedirectView back to the page with the specified parameters. * @throws URISyntaxException if malformed URI */ diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/CertificateDetailsPageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/CertificateDetailsPageController.java index eef67603..0853d7df 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/CertificateDetailsPageController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/CertificateDetailsPageController.java @@ -39,9 +39,10 @@ public class CertificateDetailsPageController extends PageController { - @Autowired(required = false) - private EntityManager entityManager; - - private CertificateAuthorityCredential certificateAuthorityCredential; + /** + * Model attribute name used by initPage for the aca cert info. + */ + static final String ACA_CERT_DATA = "acaCertData"; + private static final String TRUSTCHAIN = "trust-chain"; + private static final String PLATFORMCREDENTIAL = "platform-credentials"; + private static final String IDEVIDCERTIFICATE = "idevid-certificates"; + private static final String ENDORSEMENTCREDENTIAL = "endorsement-key-credentials"; + private static final String ISSUEDCERTIFICATES = "issued-certificates"; private final CertificateRepository certificateRepository; private final PlatformCertificateRepository platformCertificateRepository; private final ComponentResultRepository componentResultRepository; @@ -92,17 +97,9 @@ public class CertificatePageController extends PageController { private final IssuedCertificateRepository issuedCertificateRepository; private final CACredentialRepository caCredentialRepository; private final IDevIDCertificateRepository iDevIDCertificateRepository; - - private static final String TRUSTCHAIN = "trust-chain"; - private static final String PLATFORMCREDENTIAL = "platform-credentials"; - private static final String IDEVIDCERTIFICATE = "idevid-certificates"; - private static final String ENDORSEMENTCREDENTIAL = "endorsement-key-credentials"; - private static final String ISSUEDCERTIFICATES = "issued-certificates"; - - /** - * Model attribute name used by initPage for the aca cert info. - */ - static final String ACA_CERT_DATA = "acaCertData"; + @Autowired(required = false) + private EntityManager entityManager; + private CertificateAuthorityCredential certificateAuthorityCredential; /** * Constructor providing the Page's display and routing specification. @@ -113,7 +110,8 @@ public class CertificatePageController extends PageController { * @param endorsementCredentialRepository the endorsement credential manager * @param issuedCertificateRepository the issued certificate manager * @param caCredentialRepository the ca credential manager - * @param acaCertificate the ACA's X509 certificate */ + * @param acaCertificate the ACA's X509 certificate + */ @Autowired public CertificatePageController(final CertificateRepository certificateRepository, final PlatformCertificateRepository platformCertificateRepository, @@ -142,12 +140,53 @@ public class CertificatePageController extends PageController { } } + /** + * Get the page based on the certificate type. + * + * @param certificateType String containing the certificate type + * @return the page for the certificate type. + */ + private static Page getCertificatePage(final String certificateType) { + // get page information (default to TRUST_CHAIN) + return switch (certificateType) { + case PLATFORMCREDENTIAL -> Page.PLATFORM_CREDENTIALS; + case ENDORSEMENTCREDENTIAL -> Page.ENDORSEMENT_KEY_CREDENTIALS; + case ISSUEDCERTIFICATES -> Page.ISSUED_CERTIFICATES; + case IDEVIDCERTIFICATE -> Page.IDEVID_CERTIFICATES; + default -> Page.TRUST_CHAIN; + }; + } + + /** + * Gets the concrete certificate class type to query for. + * + * @param certificateType String containing the certificate type + * @return the certificate class type + */ + private static Class getCertificateClass(final String certificateType) { + switch (certificateType) { + case PLATFORMCREDENTIAL: + return PlatformCredential.class; + case ENDORSEMENTCREDENTIAL: + return EndorsementCredential.class; + case ISSUEDCERTIFICATES: + return IssuedAttestationCertificate.class; + case IDEVIDCERTIFICATE: + return IDevIDCertificate.class; + case TRUSTCHAIN: + return CertificateAuthorityCredential.class; + default: + throw new IllegalArgumentException( + String.format("Unknown certificate type: %s", certificateType)); + } + } + /** * Returns the path for the view and the data model for the page. * * @param params The object to map url parameters into. - * @param model The data model for the request. Can contain data from - * redirect. + * @param model The data model for the request. Can contain data from + * redirect. * @return the path for the view and data model for the page. */ @Override @@ -160,9 +199,9 @@ public class CertificatePageController extends PageController { * Returns the path for the view and the data model for the page. * * @param certificateType String containing the certificate type - * @param params The object to map url parameters into. - * @param model The data model for the request. Can contain data from - * redirect. + * @param params The object to map url parameters into. + * @param model The data model for the request. Can contain data from + * redirect. * @return the path for the view and data model for the page. */ @RequestMapping("/{certificateType}") @@ -189,7 +228,8 @@ public class CertificatePageController extends PageController { mav = getBaseModelAndView(Page.TRUST_CHAIN); // Map with the ACA certificate information data.putAll(CertificateStringMapBuilder.getCertificateAuthorityInformation( - certificateAuthorityCredential, this.certificateRepository, this.caCredentialRepository)); + certificateAuthorityCredential, this.certificateRepository, + this.caCredentialRepository)); mav.addObject(ACA_CERT_DATA, data); break; default: @@ -200,13 +240,12 @@ public class CertificatePageController extends PageController { return mav; } - /** * Queries for the list of Certificates and returns a data table response * with the records. * * @param certificateType String containing the certificate type - * @param input the DataTables search/query parameters + * @param input the DataTables search/query parameters * @return the data table */ @ResponseBody @@ -229,7 +268,8 @@ public class CertificatePageController extends PageController { Session session = entityManager.unwrap(Session.class); CriteriaBuilder cb = session.getCriteriaBuilder(); Root rimRoot = criteriaQuery.from(Reference.class); - criteriaQuery.select(rimRoot).distinct(true).where(cb.isNull(rimRoot.get(Certificate.ARCHIVE_FIELD))); + criteriaQuery.select(rimRoot).distinct(true) + .where(cb.isNull(rimRoot.get(Certificate.ARCHIVE_FIELD))); // add a device alias if this query includes the device table // for getting the device (e.g. device name). @@ -249,7 +289,8 @@ public class CertificatePageController extends PageController { // serial number. (pc.HolderSerialNumber = ec.SerialNumber) if (certificateType.equals(PLATFORMCREDENTIAL)) { FilteredRecordsList records = new FilteredRecordsList<>(); - org.springframework.data.domain.Page pagedResult = this.platformCertificateRepository.findByArchiveFlag(false, paging); + org.springframework.data.domain.Page pagedResult = + this.platformCertificateRepository.findByArchiveFlag(false, paging); if (pagedResult.hasContent()) { records.addAll(pagedResult.getContent()); @@ -282,7 +323,8 @@ public class CertificatePageController extends PageController { return new DataTableResponse<>(records, input); } else if (certificateType.equals(ENDORSEMENTCREDENTIAL)) { FilteredRecordsList records = new FilteredRecordsList<>(); - org.springframework.data.domain.Page pagedResult = this.endorsementCredentialRepository.findByArchiveFlag(false, paging); + org.springframework.data.domain.Page pagedResult = + this.endorsementCredentialRepository.findByArchiveFlag(false, paging); if (pagedResult.hasContent()) { records.addAll(pagedResult.getContent()); @@ -297,7 +339,8 @@ public class CertificatePageController extends PageController { return new DataTableResponse<>(records, input); } else if (certificateType.equals(TRUSTCHAIN)) { FilteredRecordsList records = new FilteredRecordsList<>(); - org.springframework.data.domain.Page pagedResult = this.caCredentialRepository.findByArchiveFlag(false, paging); + org.springframework.data.domain.Page pagedResult = + this.caCredentialRepository.findByArchiveFlag(false, paging); if (pagedResult.hasContent()) { records.addAll(pagedResult.getContent()); @@ -312,7 +355,8 @@ public class CertificatePageController extends PageController { return new DataTableResponse<>(records, input); } else if (certificateType.equals(ISSUEDCERTIFICATES)) { FilteredRecordsList records = new FilteredRecordsList<>(); - org.springframework.data.domain.Page pagedResult = this.issuedCertificateRepository.findByArchiveFlag(false, paging); + org.springframework.data.domain.Page pagedResult = + this.issuedCertificateRepository.findByArchiveFlag(false, paging); if (pagedResult.hasContent()) { records.addAll(pagedResult.getContent()); @@ -325,8 +369,7 @@ public class CertificatePageController extends PageController { log.debug("Returning list of size: " + records.size()); return new DataTableResponse<>(records, input); - } - else if (certificateType.equals(IDEVIDCERTIFICATE)) { + } else if (certificateType.equals(IDEVIDCERTIFICATE)) { FilteredRecordsList records = new FilteredRecordsList(); org.springframework.data.domain.Page pagedResult = this.iDevIDCertificateRepository.findByArchiveFlag(false, paging); @@ -351,8 +394,8 @@ public class CertificatePageController extends PageController { * Upload and processes a credential. * * @param certificateType String containing the certificate type - * @param files the files to process - * @param attr the redirection attributes + * @param files the files to process + * @param attr the redirection attributes * @return the redirection view * @throws URISyntaxException if malformed URI */ @@ -388,9 +431,9 @@ public class CertificatePageController extends PageController { * Archives (soft delete) the credential. * * @param certificateType String containing the certificate type - * @param id the UUID of the cert to delete - * @param attr RedirectAttributes used to forward data back to the original - * page. + * @param id the UUID of the cert to delete + * @param attr RedirectAttributes used to forward data back to the original + * page. * @return redirect to this page * @throws URISyntaxException if malformed URI */ @@ -459,9 +502,9 @@ public class CertificatePageController extends PageController { * for download. * * @param certificateType String containing the certificate type - * @param id the UUID of the cert to download - * @param response the response object (needed to update the header with the - * file name) + * @param id the UUID of the cert to download + * @param response the response object (needed to update the header with the + * file name) * @throws java.io.IOException when writing to response output stream */ @RequestMapping(value = "/{certificateType}/download", method = RequestMethod.GET) @@ -508,8 +551,7 @@ public class CertificatePageController extends PageController { * stream for download. * * @param response the response object (needed to update the header with the - * file name) - * + * file name) * @throws java.io.IOException when writing to response output stream */ @ResponseBody @@ -530,7 +572,7 @@ public class CertificatePageController extends PageController { * for download in bulk. * * @param response the response object (needed to update the header with the - * file name) + * file name) * @throws java.io.IOException when writing to response output stream */ @RequestMapping(value = "/trust-chain/bulk", method = RequestMethod.GET) @@ -546,7 +588,8 @@ public class CertificatePageController extends PageController { try (ZipOutputStream zipOut = new ZipOutputStream(response.getOutputStream())) { // get all files - bulkDownload(zipOut, this.certificateRepository.findByType("CertificateAuthorityCredential"), singleFileName); + bulkDownload(zipOut, this.certificateRepository.findByType("CertificateAuthorityCredential"), + singleFileName); // write cert to output stream } catch (IllegalArgumentException ex) { String uuidError = "Failed to parse ID from: "; @@ -561,7 +604,7 @@ public class CertificatePageController extends PageController { * for download in bulk. * * @param response the response object (needed to update the header with the - * file name) + * file name) * @throws java.io.IOException when writing to response output stream */ @RequestMapping(value = "/platform-credentials/bulk", method = RequestMethod.GET) @@ -593,7 +636,7 @@ public class CertificatePageController extends PageController { * for download in bulk. * * @param response the response object (needed to update the header with the - * file name) + * file name) * @throws java.io.IOException when writing to response output stream */ @RequestMapping(value = "/issued-certificates/bulk", method = RequestMethod.GET) @@ -610,7 +653,8 @@ public class CertificatePageController extends PageController { try (ZipOutputStream zipOut = new ZipOutputStream(response.getOutputStream())) { // get all files - bulkDownload(zipOut, this.certificateRepository.findByType("IssuedAttestationCertificate"), singleFileName); + bulkDownload(zipOut, this.certificateRepository.findByType("IssuedAttestationCertificate"), + singleFileName); // write cert to output stream } catch (IllegalArgumentException ex) { String uuidError = "Failed to parse ID from: "; @@ -625,7 +669,7 @@ public class CertificatePageController extends PageController { * for download in bulk. * * @param response the response object (needed to update the header with the - * file name) + * file name) * @throws java.io.IOException when writing to response output stream */ @RequestMapping(value = "/endorsement-key-credentials/bulk", method = RequestMethod.GET) @@ -641,7 +685,8 @@ public class CertificatePageController extends PageController { try (ZipOutputStream zipOut = new ZipOutputStream(response.getOutputStream())) { // get all files - bulkDownload(zipOut, this.certificateRepository.findByType("EndorsementCredential"), singleFileName); + bulkDownload(zipOut, this.certificateRepository.findByType("EndorsementCredential"), + singleFileName); // write cert to output stream } catch (IllegalArgumentException ex) { String uuidError = "Failed to parse ID from: "; @@ -690,47 +735,6 @@ public class CertificatePageController extends PageController { return hasDevice; } - /** - * Get the page based on the certificate type. - * - * @param certificateType String containing the certificate type - * @return the page for the certificate type. - */ - private static Page getCertificatePage(final String certificateType) { - // get page information (default to TRUST_CHAIN) - return switch (certificateType) { - case PLATFORMCREDENTIAL -> Page.PLATFORM_CREDENTIALS; - case ENDORSEMENTCREDENTIAL -> Page.ENDORSEMENT_KEY_CREDENTIALS; - case ISSUEDCERTIFICATES -> Page.ISSUED_CERTIFICATES; - case IDEVIDCERTIFICATE -> Page.IDEVID_CERTIFICATES; - default -> Page.TRUST_CHAIN; - }; - } - - /** - * Gets the concrete certificate class type to query for. - * - * @param certificateType String containing the certificate type - * @return the certificate class type - */ - private static Class getCertificateClass(final String certificateType) { - switch (certificateType) { - case PLATFORMCREDENTIAL: - return PlatformCredential.class; - case ENDORSEMENTCREDENTIAL: - return EndorsementCredential.class; - case ISSUEDCERTIFICATES: - return IssuedAttestationCertificate.class; - case IDEVIDCERTIFICATE: - return IDevIDCertificate.class; - case TRUSTCHAIN: - return CertificateAuthorityCredential.class; - default: - throw new IllegalArgumentException( - String.format("Unknown certificate type: %s", certificateType)); - } - } - /** * Gets the certificate by the hash code of its bytes. Looks for both * archived and unarchived certificates. @@ -769,7 +773,7 @@ public class CertificatePageController extends PageController { * Gets the certificate by the platform serial number. * * @param certificateType String containing the certificate type - * @param serialNumber the platform serial number + * @param serialNumber the platform serial number * @return the certificate or null if none is found */ private List getCertificateByBoardSN( @@ -794,8 +798,8 @@ public class CertificatePageController extends PageController { * with error messages if parsing fails. * * @param certificateType String containing the certificate type - * @param file the file being uploaded from the portal - * @param messages contains any messages that will be display on the page + * @param file the file being uploaded from the portal + * @param messages contains any messages that will be display on the page * @return the parsed certificate or null if parsing failed. */ private Certificate parseCertificate( @@ -835,13 +839,15 @@ public class CertificatePageController extends PageController { storeCertificate( certificateType, file.getOriginalFilename(), - messages, new CertificateAuthorityCredential(((java.security.cert.Certificate) i.next()).getEncoded())); + messages, new CertificateAuthorityCredential( + ((java.security.cert.Certificate) i.next()).getEncoded())); } // stop the main thread from saving/storing return null; } catch (CertificateException e) { - throw new IOException("Cannot construct X509Certificate from the input stream", e); + throw new IOException("Cannot construct X509Certificate from the input stream", + e); } } return new CertificateAuthorityCredential(fileBytes); diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/DevicePageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/DevicePageController.java index 4b475c35..a783101f 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/DevicePageController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/DevicePageController.java @@ -6,15 +6,12 @@ import hirs.attestationca.persist.entity.manager.DeviceRepository; import hirs.attestationca.persist.entity.manager.EndorsementCredentialRepository; import hirs.attestationca.persist.entity.manager.IssuedCertificateRepository; import hirs.attestationca.persist.entity.manager.PlatformCertificateRepository; -import hirs.attestationca.persist.entity.userdefined.Certificate; import hirs.attestationca.persist.entity.userdefined.Device; -import hirs.attestationca.persist.entity.userdefined.certificate.DeviceAssociatedCertificate; import hirs.attestationca.persist.entity.userdefined.certificate.EndorsementCredential; import hirs.attestationca.persist.entity.userdefined.certificate.IssuedAttestationCertificate; import hirs.attestationca.persist.entity.userdefined.certificate.PlatformCredential; import hirs.attestationca.portal.datatables.DataTableInput; import hirs.attestationca.portal.datatables.DataTableResponse; -import hirs.attestationca.portal.datatables.OrderedListQueryDataTableAdapter; import hirs.attestationca.portal.page.Page; import hirs.attestationca.portal.page.PageController; import hirs.attestationca.portal.page.params.NoPageParams; @@ -105,6 +102,7 @@ public class DevicePageController extends PageController { /** * Returns the list of devices combined with the certificates. + * * @param deviceList list containing the devices * @return a record list after the device and certificate was mapped together. */ @@ -209,11 +207,12 @@ public class DevicePageController extends PageController { /** * Returns the list of devices IDs. + * * @param deviceList list containing the devices * @return a list of the devices IDs */ private List getDevicesId(final FilteredRecordsList deviceList) { - List deviceIds = new ArrayList<>(); + List deviceIds = new ArrayList<>(); // loop all the devices for (int i = 0; i < deviceList.size(); i++) { diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/HelpPageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/HelpPageController.java index 0f874f93..0bb6909e 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/HelpPageController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/HelpPageController.java @@ -23,11 +23,10 @@ import static hirs.attestationca.portal.page.Page.HELP; @RequestMapping("/HIRS_AttestationCAPortal/portal/help") public class HelpPageController extends PageController { + private static final String PATH = "/docs"; @Autowired private ApplicationContext applicationContext; - private static final String PATH = "/docs"; - /** * Constructor providing the Page's display and routing specification. */ @@ -39,7 +38,7 @@ public class HelpPageController extends PageController { * Returns the path for the view and the data model for the page. * * @param params The object to map url parameters into. - * @param model The data model for the request. Can contain data from redirect. + * @param model The data model for the request. Can contain data from redirect. * @return the path for the view and data model for the page. */ @Override diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/IndexPageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/IndexPageController.java index 6a223db5..eb4f7911 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/IndexPageController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/IndexPageController.java @@ -29,7 +29,7 @@ public class IndexPageController extends PageController { * Returns the path for the view and the data model for the page. * * @param params The object to map url parameters into. - * @param model The data model for the request. Can contain data from redirect. + * @param model The data model for the request. Can contain data from redirect. * @return the path for the view and data model for the page. */ @Override diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/PolicyPageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/PolicyPageController.java index eba8ad7f..ecd94bc8 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/PolicyPageController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/PolicyPageController.java @@ -31,27 +31,23 @@ import java.util.Map; @RequestMapping("/HIRS_AttestationCAPortal/portal/policy") public class PolicyPageController extends PageController { - /** - * Represents a web request indicating to enable a setting (based on radio - * buttons from a web form). - */ - private static final String ENABLED_CHECKED_PARAMETER_VALUE = "checked"; - - private static final String ENABLED_EXPIRES_PARAMETER_VALUE = "expires"; - - private final PolicyRepository policyRepository; - /** * Model attribute name used by initPage for the initial data passed to the * page. */ public static final String INITIAL_DATA = "initialData"; - /** * Flash attribute name used by initPage and post for the data forwarded * during the redirect from the POST operation back to the page. */ public static final String RESULT_DATA = "resultData"; + /** + * Represents a web request indicating to enable a setting (based on radio + * buttons from a web form). + */ + private static final String ENABLED_CHECKED_PARAMETER_VALUE = "checked"; + private static final String ENABLED_EXPIRES_PARAMETER_VALUE = "expires"; + private final PolicyRepository policyRepository; /** * Constructor. @@ -69,12 +65,31 @@ public class PolicyPageController extends PageController { } } + /** + * Takes in policy setting states and determines if policy configuration is + * valid or not. PC Attribute Validation must have PC Validation Enabled PC + * Validation must have EC Validation enabled + * + * @param isEcEnable EC Validation Policy State + * @param isPcEnable PC Validation Policy State + * @param isPcAttEnable PC Attribute Validation Policy State + * @return True if policy combination is valid + */ + private static boolean isPolicyValid(final boolean isEcEnable, final boolean isPcEnable, + final boolean isPcAttEnable) { + if (isPcAttEnable && !isPcEnable) { + return false; + } else { + return !isPcEnable || isEcEnable; + } + } + /** * Returns the path for the view and the data model for the page. * * @param params The object to map url parameters into. - * @param model The data model for the request. Can contain data from - * redirect. + * @param model The data model for the request. Can contain data from + * redirect. * @return the path for the view and data model for the page. */ @Override @@ -98,8 +113,8 @@ public class PolicyPageController extends PageController { * the original page. * * @param ppModel The data posted by the form mapped into an object. - * @param attr RedirectAttributes used to forward data back to the original - * page. + * @param attr RedirectAttributes used to forward data back to the original + * page. * @return View containing the url and parameters * @throws URISyntaxException if malformed URI */ @@ -149,8 +164,8 @@ public class PolicyPageController extends PageController { * redirects back to the original page. * * @param ppModel The data posted by the form mapped into an object. - * @param attr RedirectAttributes used to forward data back to the original - * page. + * @param attr RedirectAttributes used to forward data back to the original + * page. * @return View containing the url and parameters * @throws URISyntaxException if malformed URI */ @@ -199,14 +214,15 @@ public class PolicyPageController extends PageController { * redirects back to the original page. * * @param ppModel The data posted by the form mapped into an object. - * @param attr RedirectAttributes used to forward data back to the original - * page. + * @param attr RedirectAttributes used to forward data back to the original + * page. * @return View containing the url and parameters * @throws URISyntaxException if malformed URI */ @RequestMapping(value = "update-revision-ignore", method = RequestMethod.POST) public RedirectView updateIgnoreRevisionAttribute(@ModelAttribute final PolicyPageModel ppModel, - final RedirectAttributes attr) throws URISyntaxException { + final RedirectAttributes attr) + throws URISyntaxException { // set the data received to be populated back into the form Map model = new HashMap<>(); PageMessages messages = new PageMessages(); @@ -250,7 +266,7 @@ public class PolicyPageController extends PageController { * back to the original page. * * @param ppModel The data posted by the form mapped into an object. - * @param attr RedirectAttributes used to forward data back to the original page. + * @param attr RedirectAttributes used to forward data back to the original page. * @return View containing the url and parameters * @throws URISyntaxException if malformed URI */ @@ -294,7 +310,7 @@ public class PolicyPageController extends PageController { * back to the original page. * * @param ppModel The data posted by the form mapped into an object. - * @param attr RedirectAttributes used to forward data back to the original page. + * @param attr RedirectAttributes used to forward data back to the original page. * @return View containing the url and parameters * @throws URISyntaxException if malformed URI */ @@ -339,7 +355,7 @@ public class PolicyPageController extends PageController { * back to the original page. * * @param ppModel The data posted by the form mapped into an object. - * @param attr RedirectAttributes used to forward data back to the original page. + * @param attr RedirectAttributes used to forward data back to the original page. * @return View containing the url and parameters * @throws URISyntaxException if malformed URI */ @@ -409,7 +425,7 @@ public class PolicyPageController extends PageController { * back to the original page. * * @param ppModel The data posted by the form mapped into an object. - * @param attr RedirectAttributes used to forward data back to the original page. + * @param attr RedirectAttributes used to forward data back to the original page. * @return View containing the url and parameters * @throws URISyntaxException if malformed URI */ @@ -479,7 +495,7 @@ public class PolicyPageController extends PageController { * back to the original page. * * @param ppModel The data posted by the form mapped into an object. - * @param attr RedirectAttributes used to forward data back to the original page. + * @param attr RedirectAttributes used to forward data back to the original page. * @return View containing the url and parameters * @throws URISyntaxException if malformed URI */ @@ -550,7 +566,7 @@ public class PolicyPageController extends PageController { * back to the original page. * * @param ppModel The data posted by the form mapped into an object. - * @param attr RedirectAttributes used to forward data back to the original page. + * @param attr RedirectAttributes used to forward data back to the original page. * @return View containing the url and parameters * @throws URISyntaxException if malformed URI */ @@ -619,8 +635,8 @@ public class PolicyPageController extends PageController { * redirects back to the original page. * * @param ppModel The data posted by the form mapped into an object. - * @param attr RedirectAttributes used to forward data back to the original - * page. + * @param attr RedirectAttributes used to forward data back to the original + * page. * @return View containing the url and parameters * @throws URISyntaxException if malformed URI */ @@ -671,8 +687,8 @@ public class PolicyPageController extends PageController { * redirects back to the original page. * * @param ppModel The data posted by the form mapped into an object. - * @param attr RedirectAttributes used to forward data back to the original - * page. + * @param attr RedirectAttributes used to forward data back to the original + * page. * @return View containing the url and parameters * @throws URISyntaxException if malformed URI */ @@ -728,8 +744,8 @@ public class PolicyPageController extends PageController { * redirects back to the original page. * * @param ppModel The data posted by the form mapped into an object. - * @param attr RedirectAttributes used to forward data back to the original - * page. + * @param attr RedirectAttributes used to forward data back to the original + * page. * @return View containing the url and parameters * @throws URISyntaxException if malformed URI */ @@ -779,8 +795,8 @@ public class PolicyPageController extends PageController { * redirects back to the original page. * * @param ppModel The data posted by the form mapped into an object. - * @param attr RedirectAttributes used to forward data back to the original - * page. + * @param attr RedirectAttributes used to forward data back to the original + * page. * @return View containing the url and parameters * @throws URISyntaxException if malformed URI */ @@ -830,8 +846,8 @@ public class PolicyPageController extends PageController { * redirects back to the original page. * * @param ppModel The data posted by the form mapped into an object. - * @param attr RedirectAttributes used to forward data back to the original - * page. + * @param attr RedirectAttributes used to forward data back to the original + * page. * @return View containing the url and parameters * @throws URISyntaxException if malformed URI */ @@ -881,8 +897,8 @@ public class PolicyPageController extends PageController { * redirects back to the original page. * * @param ppModel The data posted by the form mapped into an object. - * @param attr RedirectAttributes used to forward data back to the original - * page. + * @param attr RedirectAttributes used to forward data back to the original + * page. * @return View containing the url and parameters * @throws URISyntaxException if malformed URI */ @@ -946,25 +962,6 @@ public class PolicyPageController extends PageController { model.put(MESSAGES_ATTRIBUTE, messages); } - /** - * Takes in policy setting states and determines if policy configuration is - * valid or not. PC Attribute Validation must have PC Validation Enabled PC - * Validation must have EC Validation enabled - * - * @param isEcEnable EC Validation Policy State - * @param isPcEnable PC Validation Policy State - * @param isPcAttEnable PC Attribute Validation Policy State - * @return True if policy combination is valid - */ - private static boolean isPolicyValid(final boolean isEcEnable, final boolean isPcEnable, - final boolean isPcAttEnable) { - if (isPcAttEnable && !isPcEnable) { - return false; - } else { - return !isPcEnable || isEcEnable; - } - } - /** * Helper function to get a fresh load of the default policy from the DB. * @@ -985,7 +982,7 @@ public class PolicyPageController extends PageController { * model. * * @param ppModel the page model - * @param model the map of string messages to be displayed on the view + * @param model the map of string messages to be displayed on the view * @return The default Supply Chain Policy */ private PolicySettings getDefaultPolicyAndSetInModel( diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestDetailsPageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestDetailsPageController.java index b89c78b7..1c5ca868 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestDetailsPageController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestDetailsPageController.java @@ -19,8 +19,8 @@ import hirs.attestationca.portal.page.Page; import hirs.attestationca.portal.page.PageController; import hirs.attestationca.portal.page.PageMessages; import hirs.attestationca.portal.page.params.ReferenceManifestDetailsPageParams; -import hirs.utils.rim.ReferenceManifestValidator; import hirs.utils.SwidResource; +import hirs.utils.rim.ReferenceManifestValidator; import hirs.utils.tpm.eventlog.TCGEventLog; import hirs.utils.tpm.eventlog.TpmPcrEvent; import lombok.extern.log4j.Log4j2; @@ -33,7 +33,6 @@ import org.springframework.web.servlet.ModelAndView; import java.io.IOException; import java.security.KeyStore; import java.security.NoSuchAlgorithmException; -import java.security.PublicKey; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.util.ArrayList; @@ -53,28 +52,30 @@ import java.util.UUID; @Log4j2 @Controller @RequestMapping("/HIRS_AttestationCAPortal/portal/rim-details") -public class ReferenceManifestDetailsPageController extends PageController { +public class ReferenceManifestDetailsPageController + extends PageController { + private static final ReferenceManifestValidator RIM_VALIDATOR + = new ReferenceManifestValidator(); private final ReferenceManifestRepository referenceManifestRepository; private final ReferenceDigestValueRepository referenceDigestValueRepository; private final CertificateRepository certificateRepository; private final CACredentialRepository caCertificateRepository; - private static final ReferenceManifestValidator RIM_VALIDATOR - = new ReferenceManifestValidator(); /** * Constructor providing the Page's display and routing specification. * - * @param referenceManifestRepository the repository for RIM. - * @param referenceDigestValueRepository the reference event manager. - * @param certificateRepository the certificate manager. - * @param caCertificateRepository the CA certificate manager. + * @param referenceManifestRepository the repository for RIM. + * @param referenceDigestValueRepository the reference event manager. + * @param certificateRepository the certificate manager. + * @param caCertificateRepository the CA certificate manager. */ @Autowired - public ReferenceManifestDetailsPageController(final ReferenceManifestRepository referenceManifestRepository, - final ReferenceDigestValueRepository referenceDigestValueRepository, - final CertificateRepository certificateRepository, - final CACredentialRepository caCertificateRepository) { + public ReferenceManifestDetailsPageController( + final ReferenceManifestRepository referenceManifestRepository, + final ReferenceDigestValueRepository referenceDigestValueRepository, + final CertificateRepository certificateRepository, + final CACredentialRepository caCertificateRepository) { super(Page.RIM_DETAILS); this.referenceManifestRepository = referenceManifestRepository; this.referenceDigestValueRepository = referenceDigestValueRepository; @@ -82,73 +83,15 @@ public class ReferenceManifestDetailsPageController extends PageController data = new HashMap<>(); - - // Check if parameters were set - if (params.getId() == null) { - String typeError = "ID was not provided"; - messages.addError(typeError); - log.debug(typeError); - mav.addObject(MESSAGES_ATTRIBUTE, messages); - } else { - try { - UUID uuid = UUID.fromString(params.getId()); - data.putAll(getRimDetailInfo(uuid, referenceManifestRepository, - referenceDigestValueRepository, certificateRepository, - caCertificateRepository)); - } catch (IllegalArgumentException iaEx) { - String uuidError = "Failed to parse ID from: " + params.getId(); - messages.addError(uuidError); - log.error(uuidError, iaEx); - } catch (CertificateException cEx) { - log.error(cEx); - } catch (NoSuchAlgorithmException nsEx) { - log.error(nsEx); - } catch (IOException ioEx) { - log.error(ioEx); - } catch (Exception ex) { - log.error(ex); - } - - if (data.isEmpty()) { - String notFoundMessage = "Unable to find RIM with ID: " + params.getId(); - messages.addError(notFoundMessage); - log.warn(notFoundMessage); - mav.addObject(MESSAGES_ATTRIBUTE, messages); - } else { - mav.addObject(INITIAL_DATA, data); - } - } - - // return the model and view - return mav; - } - /** * This method takes the place of an entire class for a string builder. * Gathers all information and returns it for displays. * - * @param uuid database reference for the requested RIM. - * @param referenceManifestRepository the reference manifest manager. - * @param referenceDigestValueRepository the reference event manager. - * @param certificateRepository the certificate manager. - * @param caCertificateRepository the certificate manager. + * @param uuid database reference for the requested RIM. + * @param referenceManifestRepository the reference manifest manager. + * @param referenceDigestValueRepository the reference event manager. + * @param certificateRepository the certificate manager. + * @param caCertificateRepository the certificate manager. * @return mapping of the RIM information from the database. * @throws java.io.IOException error for reading file bytes. * @throws NoSuchAlgorithmException If an unknown Algorithm is encountered. @@ -166,7 +109,8 @@ public class ReferenceManifestDetailsPageController extends PageController to a List. + * * @param set of CACs to convert * @return list of X509Certificates */ - private static List convertCACsToX509Certificates(Set set) + private static List convertCACsToX509Certificates( + Set set) throws IOException { ArrayList certs = new ArrayList<>(set.size()); for (CertificateAuthorityCredential cac : set) { @@ -364,7 +310,7 @@ public class ReferenceManifestDetailsPageController extends PageController data = new HashMap<>(); + + // Check if parameters were set + if (params.getId() == null) { + String typeError = "ID was not provided"; + messages.addError(typeError); + log.debug(typeError); + mav.addObject(MESSAGES_ATTRIBUTE, messages); + } else { + try { + UUID uuid = UUID.fromString(params.getId()); + data.putAll(getRimDetailInfo(uuid, referenceManifestRepository, + referenceDigestValueRepository, certificateRepository, + caCertificateRepository)); + } catch (IllegalArgumentException iaEx) { + String uuidError = "Failed to parse ID from: " + params.getId(); + messages.addError(uuidError); + log.error(uuidError, iaEx); + } catch (CertificateException cEx) { + log.error(cEx); + } catch (NoSuchAlgorithmException nsEx) { + log.error(nsEx); + } catch (IOException ioEx) { + log.error(ioEx); + } catch (Exception ex) { + log.error(ex); + } + + if (data.isEmpty()) { + String notFoundMessage = "Unable to find RIM with ID: " + params.getId(); + messages.addError(notFoundMessage); + log.warn(notFoundMessage); + mav.addObject(MESSAGES_ATTRIBUTE, messages); + } else { + mav.addObject(INITIAL_DATA, data); + } + } + + // return the model and view + return mav; + } } diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestPageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestPageController.java index 9722ab2d..9cc2faa9 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestPageController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestPageController.java @@ -64,22 +64,20 @@ public class ReferenceManifestPageController extends PageController records = new FilteredRecordsList<>(); int currentPage = input.getStart() / input.getLength(); Pageable paging = PageRequest.of(currentPage, input.getLength(), Sort.by(orderColumnName)); - org.springframework.data.domain.Page pagedResult = referenceManifestRepository.findByArchiveFlag(false, paging); + org.springframework.data.domain.Page pagedResult = + referenceManifestRepository.findByArchiveFlag(false, paging); int rimCount = 0; if (pagedResult.hasContent()) { @@ -145,10 +144,10 @@ public class ReferenceManifestPageController extends PageController { - @Autowired(required = false) - private EntityManager entityManager; - private final ReferenceDigestValueRepository referenceDigestValueRepository; private final ReferenceManifestRepository referenceManifestRepository; + @Autowired(required = false) + private EntityManager entityManager; /** * Constructor providing the Page's display and routing specification. * * @param referenceDigestValueRepository the referenceDigestValueRepository object - * @param referenceManifestRepository the reference manifest manager object + * @param referenceManifestRepository the reference manifest manager object */ @Autowired public RimDatabasePageController(final ReferenceDigestValueRepository referenceDigestValueRepository, @@ -102,7 +101,8 @@ public class RimDatabasePageController extends PageController { Session session = entityManager.unwrap(Session.class); CriteriaBuilder cb = session.getCriteriaBuilder(); Root rimRoot = criteriaQuery.from(Reference.class); - criteriaQuery.select(rimRoot).distinct(true).where(cb.isNull(rimRoot.get(Certificate.ARCHIVE_FIELD))); + criteriaQuery.select(rimRoot).distinct(true) + .where(cb.isNull(rimRoot.get(Certificate.ARCHIVE_FIELD))); } }; @@ -112,7 +112,8 @@ public class RimDatabasePageController extends PageController { int currentPage = input.getStart() / input.getLength(); Pageable paging = PageRequest.of(currentPage, input.getLength(), Sort.by(orderColumnName)); - org.springframework.data.domain.Page pagedResult = referenceDigestValueRepository.findAll(paging); + org.springframework.data.domain.Page pagedResult = + referenceDigestValueRepository.findAll(paging); if (pagedResult.hasContent()) { referenceDigestValues.addAll(pagedResult.getContent()); @@ -127,7 +128,8 @@ public class RimDatabasePageController extends PageController { for (ReferenceDigestValue rdv : referenceDigestValues) { // We are updating the base rim ID field if necessary and if (rdv.getBaseRimId() == null && referenceManifestRepository.existsById(rdv.getSupportRimId())) { - support = (SupportReferenceManifest) referenceManifestRepository.getReferenceById(rdv.getSupportRimId()); + support = (SupportReferenceManifest) referenceManifestRepository.getReferenceById( + rdv.getSupportRimId()); rdv.setBaseRimId(support.getAssociatedRim()); try { referenceDigestValueRepository.save(rdv); diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ValidationReportsPageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ValidationReportsPageController.java index ce19f790..7a6cacc2 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ValidationReportsPageController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ValidationReportsPageController.java @@ -55,6 +55,13 @@ import java.util.regex.Pattern; @RequestMapping("/HIRS_AttestationCAPortal/portal/validation-reports") public class ValidationReportsPageController extends PageController { + private static final String DEFAULT_COMPANY = "AllDevices"; + private static final String UNDEFINED = "undefined"; + private static final String TRUE = "true"; + private static String systemColumnHeaders = "Verified Manufacturer," + + "Model,SN,Verification Date,Device Status"; + private static String componentColumnHeaders = "Component name,Component manufacturer," + + "Component model,Component SN,Issuer,Component status"; private final SupplyChainValidationSummaryRepository supplyChainValidatorSummaryRepository; private final CertificateRepository certificateRepository; private final DeviceRepository deviceRepository; @@ -62,20 +69,13 @@ public class ValidationReportsPageController extends PageController records = new FilteredRecordsList<>(); int currentPage = input.getStart() / input.getLength(); Pageable paging = PageRequest.of(currentPage, input.getLength(), Sort.by(orderColumnName)); - org.springframework.data.domain.Page pagedResult = supplyChainValidatorSummaryRepository.findByArchiveFlagFalse(paging); + org.springframework.data.domain.Page pagedResult = + supplyChainValidatorSummaryRepository.findByArchiveFlagFalse(paging); if (pagedResult.hasContent()) { records.addAll(pagedResult.getContent()); @@ -138,11 +140,12 @@ public class ValidationReportsPageController extends PageController createTimes = new ArrayList(); - String[] deviceNames = new String[]{}; + String[] deviceNames = new String[] {}; String columnHeaders = ""; boolean systemOnly = false; boolean componentOnly = false; @@ -325,13 +328,14 @@ public class ValidationReportsPageController extends PageController> parsedComponents, final String company, @@ -372,6 +376,7 @@ public class ValidationReportsPageController extends PageController 0) { componentFailureString.append(pc.getComponentFailures()); // get all the certificates associated with the platform serial - List chainCertificates = certificateRepository.byBoardSerialNumber(pc.getPlatformSerial()); + List chainCertificates = + certificateRepository.byBoardSerialNumber(pc.getPlatformSerial()); // combine all components in each certificate for (ComponentIdentifier ci : pc.getComponentIdentifiers()) { ArrayList issuerAndComponent = new ArrayList(); diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/params/NoPageParams.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/params/NoPageParams.java index 55497f98..a270d0af 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/params/NoPageParams.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/params/NoPageParams.java @@ -1,6 +1,7 @@ package hirs.attestationca.portal.page.params; import hirs.attestationca.portal.page.PageParams; + import java.util.LinkedHashMap; /** diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/params/ReferenceManifestDetailsPageParams.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/params/ReferenceManifestDetailsPageParams.java index 23a3ddf6..c3cfced2 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/params/ReferenceManifestDetailsPageParams.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/params/ReferenceManifestDetailsPageParams.java @@ -15,7 +15,8 @@ import java.util.LinkedHashMap; @AllArgsConstructor public class ReferenceManifestDetailsPageParams implements PageParams { - @Getter @Setter + @Getter + @Setter private String id; /** diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/params/ReferenceManifestPageParams.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/params/ReferenceManifestPageParams.java index 789bd5fc..bd166cc5 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/params/ReferenceManifestPageParams.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/params/ReferenceManifestPageParams.java @@ -21,7 +21,7 @@ public class ReferenceManifestPageParams implements PageParams { private String type; /** - *Constructor to set all Reference Integrity Manifest URL parameters. + * Constructor to set all Reference Integrity Manifest URL parameters. * * @param id the String parameter to set */ diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/utils/CertificateStringMapBuilder.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/utils/CertificateStringMapBuilder.java index d415f3f1..49eefd5e 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/utils/CertificateStringMapBuilder.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/utils/CertificateStringMapBuilder.java @@ -42,7 +42,7 @@ public final class CertificateStringMapBuilder { /** * Returns the general information. * - * @param certificate certificate to get the general information. + * @param certificate certificate to get the general information. * @param certificateRepository the certificate repository for retrieving certs. * @return a hash map with the general certificate information. */ @@ -107,7 +107,8 @@ public final class CertificateStringMapBuilder { //Get issuer ID if not self signed if (data.get("isSelfSigned").equals("false")) { //Get the missing certificate chain for not self sign - Certificate missingCert = containsAllChain(certificate, certificateRepository, caCertificateRepository); + Certificate missingCert = + containsAllChain(certificate, certificateRepository, caCertificateRepository); String issuerResult; if (missingCert != null) { @@ -144,7 +145,7 @@ public final class CertificateStringMapBuilder { /** * Recursive function that check if all the certificate chain is present. * - * @param certificate certificate to get the issuer + * @param certificate certificate to get the issuer * @param certificateRepository the certificate repository for retrieving certs. * @return a boolean indicating if it has the full chain or not. */ @@ -159,7 +160,8 @@ public final class CertificateStringMapBuilder { //Check if there is a subject organization if (certificate.getAuthorityKeyIdentifier() != null && !certificate.getAuthorityKeyIdentifier().isEmpty()) { - skiCA = caCredentialRepository.findBySubjectKeyIdStringAndArchiveFlag(certificate.getAuthorityKeyIdentifier(), false); + skiCA = caCredentialRepository.findBySubjectKeyIdStringAndArchiveFlag( + certificate.getAuthorityKeyIdentifier(), false); } else { log.error(String.format("Certificate (%s) for %s has no authority key identifier.", certificate.getClass().toString(), certificate.getSubject())); @@ -169,10 +171,12 @@ public final class CertificateStringMapBuilder { if (certificate.getIssuerSorted() == null || certificate.getIssuerSorted().isEmpty()) { //Get certificates by subject - issuerCertificates = caCredentialRepository.findBySubjectAndArchiveFlag(certificate.getIssuer(), false); + issuerCertificates = + caCredentialRepository.findBySubjectAndArchiveFlag(certificate.getIssuer(), false); } else { //Get certificates by subject organization - issuerCertificates = caCredentialRepository.findBySubjectSortedAndArchiveFlag(certificate.getIssuerSorted(), false); + issuerCertificates = caCredentialRepository.findBySubjectSortedAndArchiveFlag( + certificate.getIssuerSorted(), false); } } else { issuerCertificates.add(skiCA); @@ -202,7 +206,7 @@ public final class CertificateStringMapBuilder { /** * Returns the Certificate Authority information. * - * @param uuid ID for the certificate. + * @param uuid ID for the certificate. * @param caCertificateRepository the certificate manager for retrieving certs. * @return a hash map with the endorsement certificate information. */ @@ -217,14 +221,15 @@ public final class CertificateStringMapBuilder { String notFoundMessage = "Unable to find Certificate Authority " + "Credential with ID: " + uuid; - return getCertificateAuthorityInfoHelper(certificateRepository, caCertificateRepository, certificate, notFoundMessage); + return getCertificateAuthorityInfoHelper(certificateRepository, caCertificateRepository, certificate, + notFoundMessage); } /** * Returns the Trust Chain credential information. * - * @param certificate the certificate - * @param certificateRepository the certificate repository for retrieving certs. + * @param certificate the certificate + * @param certificateRepository the certificate repository for retrieving certs. * @param caCertificateRepository the certificate repository for retrieving certs. * @return a hash map with the endorsement certificate information. */ @@ -243,7 +248,8 @@ public final class CertificateStringMapBuilder { HashMap data = new HashMap<>(); if (certificate != null) { - data.putAll(getGeneralCertificateInfo(certificate, certificateRepository, caCertificateRepository)); + data.putAll( + getGeneralCertificateInfo(certificate, certificateRepository, caCertificateRepository)); data.put("subjectKeyIdentifier", Arrays.toString(certificate.getSubjectKeyIdentifier())); //x509 credential version @@ -259,7 +265,7 @@ public final class CertificateStringMapBuilder { /** * Returns the endorsement credential information. * - * @param uuid ID for the certificate. + * @param uuid ID for the certificate. * @param certificateRepository the certificate repository for retrieving certs. * @return a hash map with the endorsement certificate information. */ @@ -267,10 +273,12 @@ public final class CertificateStringMapBuilder { final CertificateRepository certificateRepository, final CACredentialRepository caCertificateRepository) { HashMap data = new HashMap<>(); - EndorsementCredential certificate = (EndorsementCredential) certificateRepository.getCertificate(uuid); + EndorsementCredential certificate = + (EndorsementCredential) certificateRepository.getCertificate(uuid); if (certificate != null) { - data.putAll(getGeneralCertificateInfo(certificate, certificateRepository, caCertificateRepository)); + data.putAll( + getGeneralCertificateInfo(certificate, certificateRepository, caCertificateRepository)); // Set extra fields data.put("manufacturer", certificate.getManufacturer()); data.put("model", certificate.getModel()); @@ -301,10 +309,10 @@ public final class CertificateStringMapBuilder { /** * Returns the Platform credential information. * - * @param uuid ID for the certificate. + * @param uuid ID for the certificate. * @param certificateRepository the certificate manager for retrieving certs. * @return a hash map with the endorsement certificate information. - * @throws IOException when parsing the certificate + * @throws IOException when parsing the certificate * @throws IllegalArgumentException invalid argument on parsing the certificate */ public static HashMap getPlatformInformation(final UUID uuid, @@ -316,7 +324,8 @@ public final class CertificateStringMapBuilder { PlatformCredential certificate = (PlatformCredential) certificateRepository.getCertificate(uuid); if (certificate != null) { - data.putAll(getGeneralCertificateInfo(certificate, certificateRepository, caCertificateRepository)); + data.putAll( + getGeneralCertificateInfo(certificate, certificateRepository, caCertificateRepository)); data.put("credentialType", certificate.getCredentialType()); data.put("platformType", certificate.getPlatformChainType()); data.put("manufacturer", certificate.getManufacturer()); @@ -344,7 +353,7 @@ public final class CertificateStringMapBuilder { data.put("holderId", ekCertificate.getId().toString()); } } else { - if (certificate.getPlatformChainType()!= null + if (certificate.getPlatformChainType() != null && certificate.getPlatformChainType().equals("Delta")) { PlatformCredential holderCertificate = (PlatformCredential) certificateRepository .findBySerialNumber(certificate.getHolderSerialNumber(), @@ -399,7 +408,8 @@ public final class CertificateStringMapBuilder { if (certificate.getPlatformSerial() != null) { // link certificate chain - List chainCertificates = certificateRepository.byBoardSerialNumber(certificate.getPlatformSerial()); + List chainCertificates = + certificateRepository.byBoardSerialNumber(certificate.getPlatformSerial()); data.put("numInChain", chainCertificates.size()); Collections.sort(chainCertificates, new Comparator() { @Override @@ -433,9 +443,9 @@ public final class CertificateStringMapBuilder { /** * Returns a HasHMap of a string. * Ex: input "TPMSpecification{family='abc',level=0, revision=0}" - * output map[TPMSpecificationFamily] = 'abc' - * map[TPMSpecificationLevel] = 0 - * map[TPMSpecificationRevision] = 0 + * output map[TPMSpecificationFamily] = 'abc' + * map[TPMSpecificationLevel] = 0 + * map[TPMSpecificationRevision] = 0 * * @param str HashMap string to be converted. * @return a hash map with key-value pairs from the string @@ -460,7 +470,7 @@ public final class CertificateStringMapBuilder { /** * Returns the Issued Attestation Certificate information. * - * @param uuid ID for the certificate. + * @param uuid ID for the certificate. * @param certificateRepository the certificate manager for retrieving certs. * @return a hash map with the endorsement certificate information. */ @@ -468,10 +478,12 @@ public final class CertificateStringMapBuilder { final CertificateRepository certificateRepository, final CACredentialRepository caCredentialRepository) { HashMap data = new HashMap<>(); - IssuedAttestationCertificate certificate = (IssuedAttestationCertificate) certificateRepository.getCertificate(uuid); + IssuedAttestationCertificate certificate = + (IssuedAttestationCertificate) certificateRepository.getCertificate(uuid); if (certificate != null) { - data.putAll(getGeneralCertificateInfo(certificate, certificateRepository, caCredentialRepository)); + data.putAll( + getGeneralCertificateInfo(certificate, certificateRepository, caCredentialRepository)); // add endorsement credential ID if not null if (certificate.getEndorsementCredential() != null) { @@ -532,7 +544,7 @@ public final class CertificateStringMapBuilder { /** * Returns the IDevID Certificate information. * - * @param uuid ID for the certificate. + * @param uuid ID for the certificate. * @param certificateRepository the certificate manager for retrieving certs. * @return a hash map with the endorsement certificate information. */ @@ -544,15 +556,15 @@ public final class CertificateStringMapBuilder { IDevIDCertificate certificate = (IDevIDCertificate) certificateRepository.getCertificate(uuid); if (certificate != null) { - data.putAll(getGeneralCertificateInfo(certificate, certificateRepository, caCredentialRepository)); + data.putAll( + getGeneralCertificateInfo(certificate, certificateRepository, caCredentialRepository)); if (certificate.getHwType() != null) { data.put("hwType", certificate.getHwType()); String hwTypeReadable; if (certificate.hasTCGOIDs()) { hwTypeReadable = "TPM-Bound IDevID"; - } - else { + } else { hwTypeReadable = "Manufacturer Specific"; } data.put("hwTypeReadable", hwTypeReadable); @@ -570,16 +582,14 @@ public final class CertificateStringMapBuilder { data.put("ekAuthorityKeyIdentifier", hwSerialArray[1]); data.put("ekCertificateSerialNumber", hwSerialArray[2]); } - } - else { + } else { // Corresponds to digest of EK certificate data.put("ekCertificateDigest", Boolean.valueOf(true).toString()); String hwSerialToAdd = Hex.toHexString(certificate.getHwSerialNum()); data.put("hwSerialNumHex", Boolean.valueOf(true).toString()); data.put("hwSerialNum", hwSerialToAdd); } - } - else { + } else { String hwSerialToAdd = hwSerialStr; // Check if hwSerialNum is a printable ASCII string; default to hex otherwise diff --git a/HIRS_AttestationCAPortal/src/main/resources/log4j2-spring.win.xml b/HIRS_AttestationCAPortal/src/main/resources/log4j2-spring.win.xml index 16b13bf3..a2a7727a 100644 --- a/HIRS_AttestationCAPortal/src/main/resources/log4j2-spring.win.xml +++ b/HIRS_AttestationCAPortal/src/main/resources/log4j2-spring.win.xml @@ -5,28 +5,28 @@ + filePattern="C:/ProgramData/hirs/log/HIRS_AttestationCA_Portal.log-%d{yyyy-MM-dd}-%i.log"> %d{yyyy-MM-dd HH:mm:ss} [%C.%M] %-5p : %m%n - + - + size="10 MB"/> + - - + + - + - + diff --git a/HIRS_AttestationCAPortal/src/main/resources/log4j2-spring.xml b/HIRS_AttestationCAPortal/src/main/resources/log4j2-spring.xml index 8dec9345..2a64d950 100644 --- a/HIRS_AttestationCAPortal/src/main/resources/log4j2-spring.xml +++ b/HIRS_AttestationCAPortal/src/main/resources/log4j2-spring.xml @@ -5,28 +5,28 @@ + filePattern="/var/log/hirs/HIRS_AttestationCA_Portal-%d{yyyy-MM-dd}-%i.log"> %d{yyyy-MM-dd HH:mm:ss} [%C.%M] %-5p : %m%n - + - + size="10 MB"/> + - - - + + + - + - + diff --git a/HIRS_AttestationCAPortal/src/main/webapp/WEB-INF/web.xml b/HIRS_AttestationCAPortal/src/main/webapp/WEB-INF/web.xml index f7bf98b6..f6670d93 100644 --- a/HIRS_AttestationCAPortal/src/main/webapp/WEB-INF/web.xml +++ b/HIRS_AttestationCAPortal/src/main/webapp/WEB-INF/web.xml @@ -1,6 +1,6 @@ - HIRS Attestation CA Portal diff --git a/HIRS_AttestationCAPortal/src/main/webapp/lib/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.svg b/HIRS_AttestationCAPortal/src/main/webapp/lib/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.svg index 94fb5490..2ba280f4 100644 --- a/HIRS_AttestationCAPortal/src/main/webapp/lib/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.svg +++ b/HIRS_AttestationCAPortal/src/main/webapp/lib/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.svg @@ -1,288 +1,543 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/PageControllerTest.java b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/PageControllerTest.java index 7b70a1b9..b0ea939d 100644 --- a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/PageControllerTest.java +++ b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/PageControllerTest.java @@ -5,11 +5,6 @@ import hirs.attestationca.persist.entity.userdefined.certificate.CertificateAuth import hirs.attestationca.persist.entity.userdefined.certificate.EndorsementCredential; import hirs.attestationca.persist.entity.userdefined.certificate.IssuedAttestationCertificate; import hirs.attestationca.persist.entity.userdefined.certificate.PlatformCredential; -import java.io.IOException; -import java.net.URISyntaxException; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; @@ -17,20 +12,29 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultActions; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.ui.ExtendedModelMap; import org.springframework.ui.Model; import org.springframework.web.context.WebApplicationContext; -import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; + import static org.hamcrest.Matchers.equalTo; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.forwardedUrl; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; /** * Base class for PageController tests. - * */ @SpringBootTest @@ -39,22 +43,19 @@ import static org.hamcrest.Matchers.equalTo; @TestInstance(TestInstance.Lifecycle.PER_CLASS) // needed to use non-static BeforeAll public abstract class PageControllerTest { + // Pre-prefix path for all the Controllers. + // There's an option in Page to add prefix path used for some Controllers. + private static final String PRE_PREFIX_PATH = "/HIRS_AttestationCAPortal/portal/"; + // Represents the Page for the Controller under test. + private final Page page; // Contains server-side support for testing Spring MVC applications // via WebTestClient with MockMvc for server request handling. @Autowired private WebApplicationContext webApplicationContext; - // Used to set up mocked servlet environment to test the HTTP controller // endpoints without the need to launch the embedded servlet container. private MockMvc mockMvc; - // Represents the Page for the Controller under test. - private final Page page; - - // Pre-prefix path for all the Controllers. - // There's an option in Page to add prefix path used for some Controllers. - private static final String PRE_PREFIX_PATH = "/HIRS_AttestationCAPortal/portal/"; - /** * Constructor requiring the Page's display and routing specification. * @@ -64,6 +65,43 @@ public abstract class PageControllerTest { this.page = page; } + /** + * Returns a blank model for initPage tests. + * + * @return a blank model for initPage tests. + */ + protected static final Model getBlankModel() { + return new ExtendedModelMap(); + } + + /** + * If the AssertionError is a redirected URL error, check the results of the executed request + * for the actual redirected URL and throw a new error containing the comparison to the expected + * URL. + *

+ * If the error is not a redirected URL error, rethrow the original error. + * + * @param expectedURL the expected redirected URL AntMatcher pattern + * @param actions the results of the executed request + * @param err the AssertionError to indicate if the error is a redirected URL error + * @throws AssertionError with added information if a redirected URL error or the original error + */ + protected static final void enhanceRedirectedUrlError( + final String expectedURL, + final ResultActions actions, + final AssertionError err) throws AssertionError { + if ("Redirected URL".equals(err.getMessage())) { + final String actualURL = actions.andReturn().getResponse().getRedirectedUrl(); + final String msg + = err.getMessage() + ": " + + " expected [" + expectedURL + "]" + + " but found [" + actualURL + "]"; + throw new AssertionError(msg); + } else { + throw err; + } + } + /** * Returns the Page's display and routing specification. * @@ -82,49 +120,12 @@ public abstract class PageControllerTest { return mockMvc; } - /** - * Returns a blank model for initPage tests. - * - * @return a blank model for initPage tests. - */ - protected static final Model getBlankModel() { - return new ExtendedModelMap(); - } - - /** - * If the AssertionError is a redirected URL error, check the results of the executed request - * for the actual redirected URL and throw a new error containing the comparison to the expected - * URL. - * - * If the error is not a redirected URL error, rethrow the original error. - * - * @param expectedURL the expected redirected URL AntMatcher pattern - * @param actions the results of the executed request - * @param err the AssertionError to indicate if the error is a redirected URL error - * @throws AssertionError with added information if a redirected URL error or the original error - */ - protected static final void enhanceRedirectedUrlError( - final String expectedURL, - final ResultActions actions, - final AssertionError err) throws AssertionError { - if ("Redirected URL".equals(err.getMessage())) { - final String actualURL = actions.andReturn().getResponse().getRedirectedUrl(); - final String msg - = err.getMessage() + ": " - + " expected [" + expectedURL + "]" - + " but found [" + actualURL + "]"; - throw new AssertionError(msg); - } else { - throw err; - } - } - - /** * Construct a test certificate from the given parameters. - * @param the type of Certificate that will be created + * + * @param the type of Certificate that will be created * @param certificateClass the class of certificate to generate - * @param filename the location of the certificate to be used + * @param filename the location of the certificate to be used * @return the newly-constructed Certificate * @throws IOException if there is a problem constructing the test certificate */ @@ -138,11 +139,12 @@ public abstract class PageControllerTest { /** * Construct a test certificate from the given parameters. - * @param the type of Certificate that will be created - * @param certificateClass the class of certificate to generate - * @param filename the location of the certificate to be used + * + * @param the type of Certificate that will be created + * @param certificateClass the class of certificate to generate + * @param filename the location of the certificate to be used * @param endorsementCredential the endorsement credentials (can be null) - * @param platformCredentials the platform credentials (can be null) + * @param platformCredentials the platform credentials (can be null) * @return the newly-constructed Certificate * @throws IOException if there is a problem constructing the test certificate */ diff --git a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/PageTestConfiguration.java b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/PageTestConfiguration.java index 5fd2b98e..20c6a009 100644 --- a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/PageTestConfiguration.java +++ b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/PageTestConfiguration.java @@ -1,18 +1,10 @@ package hirs.attestationca.portal.page; import hirs.attestationca.persist.entity.userdefined.certificate.CertificateAuthorityCredential; -import javax.sql.DataSource; -import java.io.IOException; -import java.net.URISyntaxException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.security.*; -import java.security.cert.X509Certificate; -import java.util.Properties; import org.springframework.beans.factory.BeanInitializationException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.TestConfiguration; -import org.springframework.context.annotation.*; +import org.springframework.context.annotation.Bean; import org.springframework.core.env.Environment; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; @@ -21,12 +13,24 @@ import org.springframework.orm.jpa.JpaVendorAdapter; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; +import javax.sql.DataSource; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.security.GeneralSecurityException; +import java.security.KeyPairGenerator; +import java.security.KeyStore; +import java.security.PrivateKey; +import java.security.cert.X509Certificate; +import java.util.Properties; + /** * A configuration class for testing Attestation CA Portal classes that require a database. * This class sets up a temporary in-memory database that is used for testing. * This class also creates beans that override beans in main class PersistenceJPAConfig. * A few 'dummy' beans had to be created to override PersistenceJPAConfig beans that were - * not needed and would interfere with the tests. + * not needed and would interfere with the tests. */ @TestConfiguration @EnableJpaRepositories(basePackages = "hirs.attestationca.persist.entity.manager") @@ -49,7 +53,7 @@ public class PageTestConfiguration { * * @return the {@link X509Certificate} of the ACA * @throws URISyntaxException if there's a syntax error on the path to the cert - * @throws IOException exception reading the file + * @throws IOException exception reading the file */ @Bean public X509Certificate acaCertificate() throws URISyntaxException, IOException { @@ -78,7 +82,7 @@ public class PageTestConfiguration { * hibernate configuration file. * * @return entity manager factory, which provides instances of EntityManager for connecting - * to same database. + * to same database. */ @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory() { @@ -123,8 +127,7 @@ public class PageTestConfiguration { KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance("RSA"); PrivateKey dummy_privKey = keyGenerator.generateKeyPair().getPrivate(); return dummy_privKey; - } - catch (GeneralSecurityException e) { + } catch (GeneralSecurityException e) { throw new AssertionError(e); } } diff --git a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/DevicePageControllerTest.java b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/DevicePageControllerTest.java index 3ba0bcb9..a04ae23e 100644 --- a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/DevicePageControllerTest.java +++ b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/DevicePageControllerTest.java @@ -2,21 +2,24 @@ package hirs.attestationca.portal.page.controllers; import hirs.attestationca.persist.entity.manager.CertificateRepository; import hirs.attestationca.persist.entity.manager.DeviceRepository; +import hirs.attestationca.persist.entity.userdefined.Device; import hirs.attestationca.persist.entity.userdefined.certificate.EndorsementCredential; import hirs.attestationca.persist.entity.userdefined.certificate.PlatformCredential; -import hirs.attestationca.persist.entity.userdefined.Device; import hirs.attestationca.persist.enums.AppraisalStatus; import hirs.attestationca.persist.enums.HealthStatus; import hirs.attestationca.portal.page.PageControllerTest; -import java.io.IOException; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; + +import java.io.IOException; + import static hirs.attestationca.portal.page.Page.DEVICES; import static org.hamcrest.Matchers.hasSize; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** * Integration tests that test the URL End Points of DevicePageController. @@ -24,17 +27,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS) public class DevicePageControllerTest extends PageControllerTest { - // Base path for the page - private String pagePath; - - // Repository manager to handle data access between device entity and data storage in db - @Autowired - private DeviceRepository deviceRepository; - - // Repository manager to handle data access between certificate entity and data storage in db - @Autowired - private CertificateRepository certificateRepository; - // Location of test certs private static final String TEST_ENDORSEMENT_CREDENTIAL = "/endorsement_credentials/tpmcert.pem"; @@ -42,6 +34,14 @@ public class DevicePageControllerTest extends PageControllerTest { = "/endorsement_credentials/ab21ccf2-tpmcert.pem"; private static final String TEST_PLATFORM_CREDENTIAL = "/platform_credentials/Intel_pc.cer"; + // Base path for the page + private String pagePath; + // Repository manager to handle data access between device entity and data storage in db + @Autowired + private DeviceRepository deviceRepository; + // Repository manager to handle data access between certificate entity and data storage in db + @Autowired + private CertificateRepository certificateRepository; /** @@ -54,6 +54,7 @@ public class DevicePageControllerTest extends PageControllerTest { /** * Prepares a testing environment. + * * @throws IOException if there is a problem constructing the test certificate */ @BeforeAll @@ -63,8 +64,8 @@ public class DevicePageControllerTest extends PageControllerTest { Device device; // Create new device to be used in test and save it to db - device = new Device("Test Device",null, HealthStatus.TRUSTED, AppraisalStatus.Status.PASS, - null,false,"tmp_overrideReason", "tmp_summId"); + device = new Device("Test Device", null, HealthStatus.TRUSTED, AppraisalStatus.Status.PASS, + null, false, "tmp_overrideReason", "tmp_summId"); device = deviceRepository.save(device); // Upload and save EK Cert diff --git a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/EndorsementKeyCredentialsPageControllerTest.java b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/EndorsementKeyCredentialsPageControllerTest.java index b6064600..d5aeb522 100644 --- a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/EndorsementKeyCredentialsPageControllerTest.java +++ b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/EndorsementKeyCredentialsPageControllerTest.java @@ -6,8 +6,6 @@ import hirs.attestationca.persist.entity.userdefined.Certificate; import hirs.attestationca.persist.entity.userdefined.certificate.EndorsementCredential; import hirs.attestationca.portal.page.PageControllerTest; import hirs.attestationca.portal.page.PageMessages; -import java.io.IOException; -import java.util.List; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -18,8 +16,14 @@ import org.springframework.test.annotation.Rollback; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.web.servlet.FlashMap; + +import java.io.IOException; +import java.util.List; + import static hirs.attestationca.portal.page.Page.ENDORSEMENT_KEY_CREDENTIALS; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.springframework.test.annotation.DirtiesContext.MethodMode.BEFORE_METHOD; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -29,21 +33,17 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS) public class EndorsementKeyCredentialsPageControllerTest extends PageControllerTest { - // Base path for the page - private String pagePath; - - // Repository manager to handle data access between certificate entity and data storage in db - @Autowired - private CertificateRepository certificateRepository; - - // Repository manager to handle data access between endorsement certificate entity and data storage in db - @Autowired - private EndorsementCredentialRepository endorsementCredentialRepository; - // Location of test certs private static final String EKCERT = "certificates/fakeIntelIntermediateCA.pem"; private static final String BADEKCERT = "certificates/badCert.pem"; - + // Base path for the page + private String pagePath; + // Repository manager to handle data access between certificate entity and data storage in db + @Autowired + private CertificateRepository certificateRepository; + // Repository manager to handle data access between endorsement certificate entity and data storage in db + @Autowired + private EndorsementCredentialRepository endorsementCredentialRepository; // A file that contains a cert that is not an EK Cert. Should be parsable as a general cert, // but should (eventually) not be stored as an EK because it isn't one. private MockMultipartFile nonEkCertFile; @@ -60,6 +60,7 @@ public class EndorsementKeyCredentialsPageControllerTest extends PageControllerT /** * Prepares tests. + * * @throws IOException if test resources are not found */ @BeforeAll @@ -79,6 +80,7 @@ public class EndorsementKeyCredentialsPageControllerTest extends PageControllerT * Tests uploading a cert that is not an Endorsement Credential. Eventually, this * should indicate a failure, but for now, EndorsementCredential just parses it as a * generic credential successfully. + * * @throws Exception if an exception occurs */ @Test @@ -128,13 +130,14 @@ public class EndorsementKeyCredentialsPageControllerTest extends PageControllerT /** * Tests that uploading something that is not a cert at all results in an error returned * to the web client. + * * @throws Exception an exception occurs */ @Test @Rollback @DirtiesContext(methodMode = BEFORE_METHOD) // clear endorsement cert from db public void uploadBadEndorsementCert() throws Exception { - + // perform upload. Attach csv file and add HTTP parameters for the baseline name and type. MvcResult result = getMockMvc().perform(MockMvcRequestBuilders .multipart(pagePath + "/upload") diff --git a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/IssuedCertificatesPageControllerTest.java b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/IssuedCertificatesPageControllerTest.java index d3fd2cbc..1001f286 100644 --- a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/IssuedCertificatesPageControllerTest.java +++ b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/IssuedCertificatesPageControllerTest.java @@ -9,22 +9,23 @@ import hirs.attestationca.persist.entity.userdefined.certificate.PlatformCredent import hirs.attestationca.persist.enums.AppraisalStatus; import hirs.attestationca.persist.enums.HealthStatus; import hirs.attestationca.portal.page.PageControllerTest; -import java.io.IOException; -import java.util.LinkedList; -import java.util.List; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.Rollback; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; + +import java.io.IOException; +import java.util.LinkedList; +import java.util.List; + import static hirs.attestationca.portal.page.Page.ISSUED_CERTIFICATES; import static org.hamcrest.Matchers.hasSize; -//import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; -//import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header; -//import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; -//import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** * Integration tests that test the URL End Points of IssuedCertificatesPageController. @@ -32,20 +33,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS) public class IssuedCertificatesPageControllerTest extends PageControllerTest { - // Base path for the page - private String pagePath; - - // Fake device to store in db for test - private Device device; - - // Repository manager to handle data access between device entity and data storage in db - @Autowired - private DeviceRepository deviceRepository; - - // Repository manager to handle data access between certificate entity and data storage in db - @Autowired - private CertificateRepository certificateRepository; - // Location of test certs private static final String TEST_ENDORSEMENT_CREDENTIAL = "/endorsement_credentials/tpmcert.pem"; @@ -55,7 +42,16 @@ public class IssuedCertificatesPageControllerTest extends PageControllerTest { = "/platform_credentials/Intel_pc2.pem"; private static final String ISSUED_CLIENT_CERT = "/certificates/sample_identity_cert.cer"; - + // Base path for the page + private String pagePath; + // Fake device to store in db for test + private Device device; + // Repository manager to handle data access between device entity and data storage in db + @Autowired + private DeviceRepository deviceRepository; + // Repository manager to handle data access between certificate entity and data storage in db + @Autowired + private CertificateRepository certificateRepository; // Certs objects private List platformCredentialList; private IssuedAttestationCertificate issued; @@ -71,14 +67,15 @@ public class IssuedCertificatesPageControllerTest extends PageControllerTest { /** * Prepares a testing environment. + * * @throws IOException if there is a problem constructing the test certificate */ @BeforeAll public void beforeMethod() throws IOException { // Create new device to be used in test and save it to db - device = new Device("Test Device",null, HealthStatus.TRUSTED, AppraisalStatus.Status.PASS, - null,false,"temp", "temp"); + device = new Device("Test Device", null, HealthStatus.TRUSTED, AppraisalStatus.Status.PASS, + null, false, "temp", "temp"); device = deviceRepository.save(device); // Upload and save EK Cert @@ -148,6 +145,7 @@ public class IssuedCertificatesPageControllerTest extends PageControllerTest { /** * Tests downloading the certificate. + * * @throws Exception when getting raw report */ @Test diff --git a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/PlatformCredentialsPageControllerTest.java b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/PlatformCredentialsPageControllerTest.java index c7fd0f1a..94270880 100644 --- a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/PlatformCredentialsPageControllerTest.java +++ b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/PlatformCredentialsPageControllerTest.java @@ -4,6 +4,8 @@ import hirs.attestationca.persist.entity.manager.CertificateRepository; import hirs.attestationca.persist.entity.userdefined.Certificate; import hirs.attestationca.portal.page.PageControllerTest; import hirs.attestationca.portal.page.PageMessages; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; import org.springframework.mock.web.MockMultipartFile; @@ -12,14 +14,14 @@ import org.springframework.test.annotation.Rollback; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.web.servlet.FlashMap; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; import java.io.IOException; import java.util.List; import static hirs.attestationca.portal.page.Page.PLATFORM_CREDENTIALS; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -28,18 +30,15 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) public class PlatformCredentialsPageControllerTest extends PageControllerTest { - // Base path for the page - private String pagePath; - - // Repository manager to handle data access between certificate entity and data storage in db - @Autowired - private CertificateRepository certificateRepository; - // Location of test certs private static final String REALPCCERT = "platform_credentials/Intel_pc.cer"; private static final String NONPCCERT = "certificates/fakeIntelIntermediateCA.pem"; private static final String BADPCCERT = "certificates/badCert.pem"; - + // Base path for the page + private String pagePath; + // Repository manager to handle data access between certificate entity and data storage in db + @Autowired + private CertificateRepository certificateRepository; // A cert that is an actual PC cert file and should be parsable. private MockMultipartFile realPcCertFile; @@ -60,6 +59,7 @@ public class PlatformCredentialsPageControllerTest extends PageControllerTest { /** * Prepares tests. + * * @throws IOException if test resources are not found */ @BeforeAll @@ -83,6 +83,7 @@ public class PlatformCredentialsPageControllerTest extends PageControllerTest { /** * Tests uploading a cert that is a Platform Credential, and archiving it. + * * @throws Exception if an exception occurs */ @Test @@ -94,6 +95,7 @@ public class PlatformCredentialsPageControllerTest extends PageControllerTest { /** * Uploads test cert to db + * * @return the cert that was uploaded * @throws Exception if an exception occurs */ @@ -126,6 +128,7 @@ public class PlatformCredentialsPageControllerTest extends PageControllerTest { /** * Archives test cert that is in db by setting the archive flag + * * @throws Exception if an exception occurs */ private void archiveTestCert(final Certificate cert) throws Exception { @@ -147,6 +150,7 @@ public class PlatformCredentialsPageControllerTest extends PageControllerTest { /** * Tests that uploading a certificate when an identical certificate is archived will cause * the existing certificate to be unarchived and updated. + * * @throws Exception if an exception occurs */ @Test @@ -171,7 +175,7 @@ public class PlatformCredentialsPageControllerTest extends PageControllerTest { assertEquals(1, pageMessages.getSuccess().size()); assertEquals(0, pageMessages.getError().size()); assertEquals("Pre-existing certificate found and unarchived (" - + pathTokens[1] + "): ", + + pathTokens[1] + "): ", pageMessages.getSuccess().get(0)); // verify there is still only one cert in db @@ -189,6 +193,7 @@ public class PlatformCredentialsPageControllerTest extends PageControllerTest { /** * Tests uploading a cert that is not a Platform Credential, which results in failure. + * * @throws Exception if an exception occurs */ @Test @@ -222,6 +227,7 @@ public class PlatformCredentialsPageControllerTest extends PageControllerTest { /** * Tests that uploading something that is not a cert at all results in an error returned * to the web client. + * * @throws Exception an exception occurs */ @Test diff --git a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/PolicyPageControllerTest.java b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/PolicyPageControllerTest.java index e551eeba..5f785b79 100644 --- a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/PolicyPageControllerTest.java +++ b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/PolicyPageControllerTest.java @@ -11,9 +11,15 @@ import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import static hirs.attestationca.portal.page.Page.POLICY; -import static org.hamcrest.Matchers.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; +import static org.hamcrest.Matchers.hasItem; +import static org.hamcrest.Matchers.hasProperty; +import static org.hamcrest.Matchers.is; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.flash; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** * Integration tests that test the URL End Points of PolicyPageController. @@ -32,7 +38,6 @@ public class PolicyPageControllerTest extends PageControllerTest { /** * Constructor requiring the Page's display and routing specification. - * */ public PolicyPageControllerTest() { super(POLICY); @@ -229,6 +234,7 @@ public class PolicyPageControllerTest extends PageControllerTest { /** * Verifies the rest call for disabling the PC Validation policy setting. + * * @throws Exception if test fails */ @Test @@ -338,6 +344,7 @@ public class PolicyPageControllerTest extends PageControllerTest { /** * Verifies the rest call for disabling the PC attribute validation policy setting. + * * @throws Exception if test fails */ @Test @@ -381,7 +388,7 @@ public class PolicyPageControllerTest extends PageControllerTest { /** * Helper function to set policy member variable - PC Validation to True - * Note: to set PC Validation to true, EC Validation must also be true + * Note: to set PC Validation to true, EC Validation must also be true * * @return void */ @@ -392,7 +399,7 @@ public class PolicyPageControllerTest extends PageControllerTest { /** * Helper function to set policy member variable - PC Attribute Validation to True - * Note: to set PC Attribute Validation to true, PC Validation must also be true + * Note: to set PC Attribute Validation to true, PC Validation must also be true * * @return void */ diff --git a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/TrustChainManagementPageControllerTest.java b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/TrustChainManagementPageControllerTest.java index 4cef7ef7..5a06b2c5 100644 --- a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/TrustChainManagementPageControllerTest.java +++ b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/TrustChainManagementPageControllerTest.java @@ -21,7 +21,9 @@ import java.util.List; import static hirs.attestationca.portal.page.Page.TRUST_CHAIN; import static org.hamcrest.Matchers.hasEntry; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model; @@ -33,20 +35,16 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) public class TrustChainManagementPageControllerTest extends PageControllerTest { - // Base path for the page - private String pagePath; - - // Repository manager to handle data access between certificate entity and data storage in db - @Autowired - private CertificateRepository certificateRepository; - - @Autowired - private X509Certificate acaCert; - // Location of test certs private static final String NONCACERT = "certificates/fakeIntelIntermediateCA.pem"; private static final String BADCERT = "certificates/badCert.pem"; - + // Base path for the page + private String pagePath; + // Repository manager to handle data access between certificate entity and data storage in db + @Autowired + private CertificateRepository certificateRepository; + @Autowired + private X509Certificate acaCert; // A file that contains a cert that is not an UTC Cert. Should be parsable as a general // cert, but should (eventually) not be stored as an UTC because it isn't one. private MockMultipartFile nonCaCertFile; @@ -66,6 +64,7 @@ public class TrustChainManagementPageControllerTest extends PageControllerTest { /** * Prepares tests. + * * @throws IOException if test resources are not found */ @BeforeAll @@ -121,6 +120,7 @@ public class TrustChainManagementPageControllerTest extends PageControllerTest { /** * Tests downloading the certificate. + * * @throws Exception when getting raw report */ @Test @@ -153,6 +153,7 @@ public class TrustChainManagementPageControllerTest extends PageControllerTest { * Currently this test may pass certs that meet some, but not all requirements * However the underlying code is looking for the basic elements of a CA certificate * generic credential successfully. + * * @throws Exception if an exception occurs */ @Test @@ -164,6 +165,7 @@ public class TrustChainManagementPageControllerTest extends PageControllerTest { /** * Uploads test cert to db + * * @return the cert that was uploaded * @throws Exception if an exception occurs */ @@ -181,8 +183,9 @@ public class TrustChainManagementPageControllerTest extends PageControllerTest { // verify redirection messages FlashMap flashMap = result.getFlashMap(); PageMessages pageMessages = (PageMessages) flashMap.get("messages"); - assertEquals("New certificate successfully uploaded (" + pathTokens[1] + "): ", pageMessages.getSuccess() - .get(0)); + assertEquals("New certificate successfully uploaded (" + pathTokens[1] + "): ", + pageMessages.getSuccess() + .get(0)); assertEquals(0, pageMessages.getError().size()); // verify the cert was actually stored @@ -199,6 +202,7 @@ public class TrustChainManagementPageControllerTest extends PageControllerTest { /** * Archives test cert that is in db by setting the archive flag + * * @throws Exception if an exception occurs */ private void archiveTestCert(final Certificate cert) throws Exception { @@ -218,6 +222,7 @@ public class TrustChainManagementPageControllerTest extends PageControllerTest { /** * Tests that uploading a certificate when an identical certificate is archived will cause * the existing certificate to be unarchived and updated. + * * @throws Exception if an exception occurs */ // @Test @@ -258,6 +263,7 @@ public class TrustChainManagementPageControllerTest extends PageControllerTest { /** * Tests that uploading something that is not a cert at all results in an error returned * to the web client. + * * @throws Exception an exception occurs */ @Test diff --git a/HIRS_Utils/src/main/java/hirs/utils/rim/ReferenceManifestValidator.java b/HIRS_Utils/src/main/java/hirs/utils/rim/ReferenceManifestValidator.java index c84a70ec..306e8109 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/rim/ReferenceManifestValidator.java +++ b/HIRS_Utils/src/main/java/hirs/utils/rim/ReferenceManifestValidator.java @@ -177,7 +177,7 @@ public class ReferenceManifestValidator { * @param encodedPublicKey the encoded public key * @return true if the signature element is validated, false otherwise */ - @SuppressWarnings("magicnumber") + public boolean validateXmlSignature(final PublicKey publicKey, final String subjectKeyIdString, final byte[] encodedPublicKey) { From 571d107e1b77a91306bb7627f1dbc0f3eb91a63d Mon Sep 17 00:00:00 2001 From: TheSilentCoder <184309164+ThatSilentCoder@users.noreply.github.com> Date: Wed, 23 Oct 2024 17:22:20 -0400 Subject: [PATCH 07/22] issue_847: Reduced styling errors in CA module to less than 100 --- .../entity/userdefined/Certificate.java | 19 ++- .../IssuedAttestationCertificate.java | 4 +- .../attributes/CommonCriteriaMeasures.java | 5 + .../attributes/ComponentAddress.java | 11 ++ .../attributes/ComponentIdentifier.java | 5 + .../certificate/attributes/FIPSLevel.java | 42 ++---- .../attributes/PlatformConfigurationV1.java | 5 + .../attributes/PlatformProperty.java | 13 +- .../attributes/TBBSecurityAssertion.java | 125 ++---------------- .../attributes/TPMSecurityAssertions.java | 29 ++-- .../attributes/TPMSpecification.java | 15 +-- .../certificate/attributes/URIReference.java | 9 ++ .../attributes/V2/ComponentIdentifierV2.java | 38 ++---- .../V2/PlatformConfigurationV2.java | 5 + .../attributes/V2/PlatformPropertyV2.java | 10 +- .../userdefined/info/ComponentInfo.java | 39 +----- .../entity/userdefined/info/TPMInfo.java | 2 - .../rim/BaseReferenceManifest.java | 7 +- .../userdefined/rim/EventLogMeasurements.java | 20 +-- .../rim/SupportReferenceManifest.java | 40 +----- .../persist/enums/HealthStatus.java | 7 +- .../persist/provision/AbstractProcessor.java | 15 ++- .../provision/helper/ProvisionUtils.java | 2 +- .../service/SupplyChainValidationService.java | 1 - .../persist/service/ValidationService.java | 45 ++++--- .../AttestationCertificateAuthorityTest.java | 39 +++--- .../entity/tpm/TPM2ProvisionerStateTest.java | 10 +- .../AbstractUserdefinedEntityTest.java | 45 +++---- .../entity/userdefined/CertificateTest.java | 68 +++++----- .../SupplyChainValidationTest.java | 10 +- .../certificate/PlatformCredentialTest.java | 5 +- .../attributes/TPMSecurityAssertionsTest.java | 14 +- .../entity/userdefined/info/TPMInfoTest.java | 35 +++-- .../SupplyChainCredentialValidatorTest.java | 58 +++++++- config/checkstyle/checkstyle.xml | 6 +- 35 files changed, 369 insertions(+), 434 deletions(-) diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/Certificate.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/Certificate.java index 38d4e551..07df1852 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/Certificate.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/Certificate.java @@ -626,7 +626,7 @@ public abstract class Certificate extends ArchivableEntity { * on the portal. * * @return A list of URLs that inform the location of the certificate revocation lists - * @throws java.io.IOException + * @throws IOException if there is an issue while retrieving the CRL Distribution point */ private String getCRLDistributionPoint() throws IOException { List crlUrls = new ArrayList<>(); @@ -972,6 +972,11 @@ public abstract class Certificate extends ArchivableEntity { return null; } + /** + * Creates a string representation of the Certificate object. + * + * @return a string representation of the Certificate object. + */ @Override public String toString() { return String.format("Certificate{%s, AuthID=%s, serialNumber=%s, " @@ -982,6 +987,13 @@ public abstract class Certificate extends ArchivableEntity { signatureAlgorithm, certificateHash); } + /** + * Compares this certificate to the provided object to verify that both this and the provided certificate + * objects are equal. + * + * @param o object to compare + * @return true if both the provided certificate and this certificate are equal, false otherwise + */ @Override public boolean equals(final Object o) { if (this == o) { @@ -997,6 +1009,11 @@ public abstract class Certificate extends ArchivableEntity { return Arrays.equals(certificateBytes, that.certificateBytes); } + /** + * Creates an integer hash code for this Certificate object. + * + * @return integer hash code + */ @Override public int hashCode() { return Arrays.hashCode(certificateBytes); diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/IssuedAttestationCertificate.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/IssuedAttestationCertificate.java index 4202362f..891bf6b1 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/IssuedAttestationCertificate.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/IssuedAttestationCertificate.java @@ -18,8 +18,8 @@ import java.util.List; /** * Represents an issued attestation certificate to a HIRS Client. */ -@NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity public class IssuedAttestationCertificate extends DeviceAssociatedCertificate { @@ -29,7 +29,7 @@ public class IssuedAttestationCertificate extends DeviceAssociatedCertificate { public static final String AIC_TYPE_LABEL = "TCPA Trusted Platform Identity"; @Column - public boolean isLDevID; + private boolean isLDevID; @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "ek_id") diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/CommonCriteriaMeasures.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/CommonCriteriaMeasures.java index a1432d48..a9c115a5 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/CommonCriteriaMeasures.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/CommonCriteriaMeasures.java @@ -126,6 +126,11 @@ public class CommonCriteriaMeasures { } } + /** + * Creates a custom string representation of the Common Criteria Measures object. + * + * @return a string representation of Common Criteria Measures + */ @Override public String toString() { StringBuilder sb = new StringBuilder(); diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentAddress.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentAddress.java index d8eb162c..2f9f82a9 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentAddress.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentAddress.java @@ -27,12 +27,17 @@ public class ComponentAddress { public static final int IDENTIFIER_NUMBER = 2; private static final String ETHERNET_MAC = "2.23.133.17.1"; + private static final String WLAN_MAC = "2.23.133.17.2"; + private static final String BLUETOOTH_MAC = "2.23.133.17.3"; private ASN1ObjectIdentifier addressType; + private ASN1UTF8String addressValue; + private String addressTypeString; + private String addressValueString; /** @@ -74,6 +79,12 @@ public class ComponentAddress { }; } + + /** + * Creates a string representation of the Component Address object. + * + * @return a string representation of the Component Address object. + */ @Override public String toString() { return "ComponentAddress{" diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentIdentifier.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentIdentifier.java index b0c37e7a..7b56a283 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentIdentifier.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentIdentifier.java @@ -201,6 +201,11 @@ public class ComponentIdentifier { return false; } + /** + * Creates a string representation of the Component Identifier object. + * + * @return a string representation of the Component Identifier object. + */ @Override public String toString() { StringBuilder sb = new StringBuilder(); diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/FIPSLevel.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/FIPSLevel.java index 012fb957..b04ce00d 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/FIPSLevel.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/FIPSLevel.java @@ -3,6 +3,7 @@ package hirs.attestationca.persist.entity.userdefined.certificate.attributes; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; +import lombok.ToString; import org.bouncycastle.asn1.ASN1Boolean; import org.bouncycastle.asn1.ASN1Enumerated; import org.bouncycastle.asn1.ASN1IA5String; @@ -17,18 +18,18 @@ import org.bouncycastle.asn1.ASN1Sequence; * plus BOOLEAN DEFAULT FALSE } * */ +@Getter +@Setter @AllArgsConstructor +@ToString public class FIPSLevel { private static final int MAX_SEQUENCE_SIZE = 3; - @Getter - @Setter + private ASN1IA5String version; - @Getter - @Setter + private SecurityLevel level; - @Getter - @Setter + private ASN1Boolean plus; /** @@ -65,15 +66,6 @@ public class FIPSLevel { } } - @Override - public String toString() { - return "FIPSLevel{" - + "version=" + version.getString() - + ", level=" + level.getValue() - + ", plus=" + plus.toString() - + '}'; - } - /** * A type to handle the security Level used in the FIPS Level. * Ordering of enum types is intentional and their ordinal values correspond to enum @@ -87,6 +79,8 @@ public class FIPSLevel { * level4 (4) } * */ + @Getter + @AllArgsConstructor public enum SecurityLevel { /** * Security Level 1. @@ -106,23 +100,5 @@ public class FIPSLevel { LEVEL4("level 4"); private final String value; - - /** - * Basic constructor. - * - * @param value string containing the value. - */ - SecurityLevel(final String value) { - this.value = value; - } - - /** - * Get the string value from the StrengthOfFunction. - * - * @return the string containing the value. - */ - public String getValue() { - return this.value; - } } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformConfigurationV1.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformConfigurationV1.java index 9f8a253e..c0dd0df6 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformConfigurationV1.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformConfigurationV1.java @@ -77,6 +77,11 @@ public class PlatformConfigurationV1 extends PlatformConfiguration { } } + /** + * Creates a string representation of the Platform Configuration V1 object. + * + * @return a string representation of the Platform Configuration V1 object. + */ @Override public String toString() { StringBuilder sb = new StringBuilder(); diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformProperty.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformProperty.java index 9d3d2d06..d36e5b8e 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformProperty.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformProperty.java @@ -3,6 +3,7 @@ package hirs.attestationca.persist.entity.userdefined.certificate.attributes; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; +import lombok.ToString; import org.bouncycastle.asn1.ASN1Sequence; import org.bouncycastle.asn1.ASN1UTF8String; import org.bouncycastle.asn1.DERUTF8String; @@ -19,14 +20,18 @@ import org.bouncycastle.asn1.DERUTF8String; @Getter @Setter @AllArgsConstructor +@ToString public class PlatformProperty { /** * Number of identifiers for version 1. */ protected static final int IDENTIFIER_NUMBER = 2; + private static final String NOT_SPECIFIED = "Not Specified"; + private ASN1UTF8String propertyName; + private ASN1UTF8String propertyValue; /** @@ -54,12 +59,4 @@ public class PlatformProperty { this.propertyName = ASN1UTF8String.getInstance(sequence.getObjectAt(0)); this.propertyValue = ASN1UTF8String.getInstance(sequence.getObjectAt(1)); } - - @Override - public String toString() { - return "PlatformProperty{" - + "propertyName=" + propertyName.getString() - + ", propertyValue=" + propertyValue.getString() - + "}"; - } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TBBSecurityAssertion.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TBBSecurityAssertion.java index 48d4195e..74d14a55 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TBBSecurityAssertion.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TBBSecurityAssertion.java @@ -2,6 +2,8 @@ package hirs.attestationca.persist.entity.userdefined.certificate.attributes; import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.Setter; +import lombok.ToString; import org.bouncycastle.asn1.ASN1Boolean; import org.bouncycastle.asn1.ASN1Enumerated; import org.bouncycastle.asn1.ASN1IA5String; @@ -24,17 +26,28 @@ import java.math.BigInteger; * iso9000Uri IA5STRING (SIZE (1..URIMAX)) OPTIONAL } * */ +@Setter +@Getter @AllArgsConstructor +@ToString public class TBBSecurityAssertion { private static final int CCINFO = 0; + private static final int FIPSLEVEL = 1; + private static final int RTMTYPE = 2; + private ASN1Integer version; + private CommonCriteriaMeasures ccInfo; + private FIPSLevel fipsLevel; + private MeasurementRootType rtmType; + private ASN1Boolean iso9000Certified; + private ASN1IA5String iso9000Uri; /** @@ -115,118 +128,6 @@ public class TBBSecurityAssertion { } } - /** - * @return the version - */ - public ASN1Integer getVersion() { - return version; - } - - /** - * @param version the version to set - */ - public void setVersion(final ASN1Integer version) { - this.version = version; - } - - /** - * @return the ccInfo - */ - public CommonCriteriaMeasures getCcInfo() { - return ccInfo; - } - - /** - * @param ccInfo the ccInfo to set - */ - public void setCcInfo(final CommonCriteriaMeasures ccInfo) { - this.ccInfo = ccInfo; - } - - /** - * @return the fipsLevel - */ - public FIPSLevel getFipsLevel() { - return fipsLevel; - } - - /** - * @param fipsLevel the fipsLevel to set - */ - public void setFipsLevel(final FIPSLevel fipsLevel) { - this.fipsLevel = fipsLevel; - } - - /** - * @return the rtmType - */ - public MeasurementRootType getRtmType() { - return rtmType; - } - - /** - * @param rtmType the rtmType to set - */ - public void setRtmType(final MeasurementRootType rtmType) { - this.rtmType = rtmType; - } - - /** - * @return the iso9000Certified - */ - public ASN1Boolean getIso9000Certified() { - return iso9000Certified; - } - - /** - * @param iso9000Certified the iso9000Certified to set - */ - public void setIso9000Certified(final ASN1Boolean iso9000Certified) { - this.iso9000Certified = iso9000Certified; - } - - /** - * @return the iso9000Uri - */ - public ASN1IA5String getIso9000Uri() { - return iso9000Uri; - } - - /** - * @param iso9000Uri the iso9000Uri to set - */ - public void setIso9000Uri(final ASN1IA5String iso9000Uri) { - this.iso9000Uri = iso9000Uri; - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("TBBSecurityAssertion{"); - sb.append("version=").append(version.toString()); - //Optional values not null - sb.append(", ccInfo="); - if (ccInfo != null) { - sb.append(ccInfo); - } - sb.append(", fipsLevel="); - if (fipsLevel != null) { - sb.append(fipsLevel); - } - sb.append(", rtmType="); - if (rtmType != null) { - sb.append(rtmType.getValue()); - } - sb.append(", iso9000Certified=").append(iso9000Certified.toString()); - sb.append(", iso9000Uri="); - if (iso9000Uri != null) { - sb.append(iso9000Uri.getString()); - } - sb.append("}"); - - return sb.toString(); - } - /** * A type to handle the evaluation status used in the Common Criteria Measurement. * Ordering of enum types is intentional and their ordinal values correspond to enum diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSecurityAssertions.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSecurityAssertions.java index 2f0e7d32..11553e8e 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSecurityAssertions.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSecurityAssertions.java @@ -7,6 +7,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import lombok.ToString; import java.io.Serializable; import java.math.BigInteger; @@ -21,22 +22,27 @@ import java.math.BigInteger; * www.trustedcomputinggroup.org/wp-content/uploads/Credential_Profile_EK_V2.0_R14_published.pdf * for specifications for TPM 2.0 (pg. 19). */ -@AllArgsConstructor -@NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter @Setter +@AllArgsConstructor +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@ToString @Embeddable public class TPMSecurityAssertions implements Serializable { @Column private BigInteger tpmSecAssertsVersion; //default v1 + @Column private boolean fieldUpgradeable; //default false - @Column(nullable = true) + + @Column private EkGenerationType ekGenType; //optional - @Column(nullable = true) - private EkGenerationLocation ekGenerationLocation; //optional - @Column(nullable = true) + + @Column + private EkGenerationLocation ekGenerationLocation; //optionalv + + @Column private EkGenerationLocation ekCertificateGenerationLocation; //optional /** @@ -52,17 +58,6 @@ public class TPMSecurityAssertions implements Serializable { this.fieldUpgradeable = fieldUpgradeable; } - @Override - public String toString() { - return "TPMSecurityAssertions{" - + "version=" + tpmSecAssertsVersion - + ", fieldUpgradeable=" + fieldUpgradeable - + ", ekGenType=" + ekGenType - + ", ekGenLoc=" + ekGenerationLocation - + ", ekCertGenLoc=" + ekCertificateGenerationLocation - + '}'; - } - // Future work (may need to create other classes): //private CommonCriteriaMeasures commCritMeasures; //optional //private FIPSLevel fipsLevel; //optional diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSpecification.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSpecification.java index 91768a6a..fef71ed8 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSpecification.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSpecification.java @@ -6,6 +6,7 @@ import lombok.AccessLevel; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.ToString; import java.io.Serializable; import java.math.BigInteger; @@ -20,9 +21,10 @@ import java.math.BigInteger; * www.trustedcomputinggroup.org/wp-content/uploads/Credential_Profile_EK_V2.0_R14_published.pdf * for specifications for TPM 2.0. */ -@EqualsAndHashCode -@NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@ToString +@EqualsAndHashCode @Embeddable public class TPMSpecification implements Serializable { @@ -48,13 +50,4 @@ public class TPMSpecification implements Serializable { this.level = level; this.revision = revision; } - - @Override - public String toString() { - return "TPMSpecification{" - + "family='" + family + '\'' - + ", level=" + level - + ", revision=" + revision - + '}'; - } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/URIReference.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/URIReference.java index 4b8915d2..2df498ce 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/URIReference.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/URIReference.java @@ -24,9 +24,13 @@ import org.bouncycastle.asn1.x509.AlgorithmIdentifier; @AllArgsConstructor public class URIReference { private static final int PLATFORM_PROPERTIES_URI_MAX = 3; + private static final int PLATFORM_PROPERTIES_URI_MIN = 1; + private ASN1IA5String uniformResourceIdentifier; + private AlgorithmIdentifier hashAlgorithm; + @JsonIgnore private ASN1BitString hashValue; @@ -70,6 +74,11 @@ public class URIReference { } } + /** + * Creates a string representation of the URI Reference object. + * + * @return a string representation of URI Reference + */ @Override public String toString() { StringBuilder sb = new StringBuilder(); diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/ComponentIdentifierV2.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/ComponentIdentifierV2.java index f3394857..e7b4aa5b 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/ComponentIdentifierV2.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/ComponentIdentifierV2.java @@ -4,6 +4,7 @@ import hirs.attestationca.persist.entity.userdefined.certificate.attributes.Comp import hirs.attestationca.persist.entity.userdefined.certificate.attributes.ComponentClass; import hirs.attestationca.persist.entity.userdefined.certificate.attributes.ComponentIdentifier; import hirs.attestationca.persist.entity.userdefined.certificate.attributes.URIReference; +import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; import org.bouncycastle.asn1.ASN1Boolean; @@ -16,7 +17,6 @@ import org.bouncycastle.asn1.ASN1UTF8String; import org.bouncycastle.asn1.DERUTF8String; import java.util.List; -import java.util.Objects; import java.util.stream.Collectors; /** @@ -40,17 +40,24 @@ import java.util.stream.Collectors; */ @Getter @Setter +@EqualsAndHashCode(callSuper = true) public class ComponentIdentifierV2 extends ComponentIdentifier { private static final int MANDATORY_ELEMENTS = 3; + // Additional optional identifiers for version 2 private static final int COMPONENT_PLATFORM_CERT = 5; + private static final int COMPONENT_PLATFORM_URI = 6; + private static final int ATTRIBUTE_STATUS = 7; private ComponentClass componentClass; + private CertificateIdentifier certificateIdentifier; + private URIReference componentPlatformUri; + private AttributeStatus attributeStatus; /** @@ -201,30 +208,11 @@ public class ComponentIdentifierV2 extends ComponentIdentifier { return true; } - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - if (!super.equals(o)) { - return false; - } - ComponentIdentifierV2 that = (ComponentIdentifierV2) o; - return Objects.equals(componentClass, that.componentClass) - && Objects.equals(certificateIdentifier, that.certificateIdentifier) - && Objects.equals(componentPlatformUri, that.componentPlatformUri) - && attributeStatus == that.attributeStatus; - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), componentClass, - certificateIdentifier, componentPlatformUri, attributeStatus); - } - + /** + * Creates a string representation of the Component Identifier V2 object. + * + * @return a string representation of the Component Identifier V2 object. + */ @Override public String toString() { StringBuilder sb = new StringBuilder(); diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/PlatformConfigurationV2.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/PlatformConfigurationV2.java index 638542a0..58dd341d 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/PlatformConfigurationV2.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/PlatformConfigurationV2.java @@ -87,6 +87,11 @@ public class PlatformConfigurationV2 extends PlatformConfiguration { } } + /** + * Creates a string representation of the Platform Configuration V2 object. + * + * @return a string representation of the Platform Configuration V2 object. + */ @Override public String toString() { StringBuilder sb = new StringBuilder(); diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/PlatformPropertyV2.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/PlatformPropertyV2.java index cd6d3b7b..3a8146a4 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/PlatformPropertyV2.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/V2/PlatformPropertyV2.java @@ -17,10 +17,10 @@ import org.bouncycastle.asn1.ASN1UTF8String; * * */ +@Setter +@Getter public class PlatformPropertyV2 extends PlatformProperty { - @Getter - @Setter private AttributeStatus attributeStatus; /** @@ -83,6 +83,12 @@ public class PlatformPropertyV2 extends PlatformProperty { return getAttributeStatus() != AttributeStatus.REMOVED; } + + /** + * Creates a string representation of the PlatformPropertyV2 object. + * + * @return a string representation of the PlatformPropertyV2 object + */ @Override public String toString() { StringBuilder sb = new StringBuilder(); diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/ComponentInfo.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/ComponentInfo.java index 6e8901fb..aa98f282 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/ComponentInfo.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/ComponentInfo.java @@ -9,6 +9,7 @@ import jakarta.persistence.DiscriminatorType; import jakarta.persistence.Entity; import jakarta.xml.bind.annotation.XmlElement; import lombok.AccessLevel; +import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.extern.log4j.Log4j2; @@ -24,6 +25,7 @@ import java.util.Objects; @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) +@EqualsAndHashCode(callSuper = false) @DiscriminatorColumn(name = "componentTypeEnum", discriminatorType = DiscriminatorType.STRING) public class ComponentInfo extends ArchivableEntity { @@ -152,31 +154,6 @@ public class ComponentInfo extends ArchivableEntity { || StringUtils.isEmpty(componentModel)); } - /** - * Equals for the component info that just uses this classes attributes. - * - * @param object the object to compare - * @return the boolean result - */ - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object == null || getClass() != object.getClass()) { - return false; - } - - ComponentInfo that = (ComponentInfo) object; - return Objects.equals(deviceName, that.deviceName) - && Objects.equals(componentManufacturer, - that.componentManufacturer) - && Objects.equals(componentModel, that.componentModel) - && Objects.equals(componentSerial, that.componentSerial) - && Objects.equals(componentRevision, that.componentRevision) - && Objects.equals(componentClass, that.componentClass); - } - /** * Returns a hash code that is associated with common fields for components. * @@ -186,16 +163,4 @@ public class ComponentInfo extends ArchivableEntity { return Objects.hash(componentManufacturer, componentModel, componentSerial, componentRevision, componentClass); } - - /** - * Hash method for the attributes of this class. - * - * @return int value that represents this class - */ - @Override - public int hashCode() { - return Objects.hash(deviceName, componentManufacturer, - componentModel, componentSerial, componentRevision, - componentClass); - } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/TPMInfo.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/TPMInfo.java index 42c07892..099eecff 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/TPMInfo.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/TPMInfo.java @@ -79,7 +79,6 @@ public class TPMInfo implements Serializable { * @param tpmQuoteHash short representing the minor revision number for the TPM * @param tpmQuoteSignature byte array with the value of the identity certificate */ - @SuppressWarnings("parameternumber") public TPMInfo(final String tpmMake, final short tpmVersionMajor, final short tpmVersionMinor, final short tpmVersionRevMajor, final short tpmVersionRevMinor, @@ -110,7 +109,6 @@ public class TPMInfo implements Serializable { * @param tpmQuoteHash short representing the minor revision number for the TPM * @param tpmQuoteSignature byte array with the value of the identity certificate */ - @SuppressWarnings("parameternumber") public TPMInfo(final String tpmMake, final short tpmVersionMajor, final short tpmVersionMinor, final short tpmVersionRevMajor, final short tpmVersionRevMinor, final byte[] pcrValues, diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/BaseReferenceManifest.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/BaseReferenceManifest.java index 6c993795..4f7ba942 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/BaseReferenceManifest.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/BaseReferenceManifest.java @@ -42,7 +42,7 @@ import java.util.List; @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) -@EqualsAndHashCode +@EqualsAndHashCode(callSuper = true) @Entity public class BaseReferenceManifest extends ReferenceManifest { /** @@ -377,6 +377,11 @@ public class BaseReferenceManifest extends ReferenceManifest { return document; } + /** + * Creates a string representation of the Base Reference Manifest object. + * + * @return a string representation of the Base Reference Manifest object. + */ @Override public String toString() { return String.format("ReferenceManifest{swidName=%s," diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/EventLogMeasurements.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/EventLogMeasurements.java index 57607c72..3ed6f69e 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/EventLogMeasurements.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/EventLogMeasurements.java @@ -8,6 +8,7 @@ import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; import jakarta.persistence.Enumerated; +import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; import lombok.extern.log4j.Log4j2; @@ -26,6 +27,7 @@ import java.util.Collection; */ @Getter @Setter +@EqualsAndHashCode @Log4j2 @Entity public class EventLogMeasurements extends SupportReferenceManifest { @@ -105,22 +107,4 @@ public class EventLogMeasurements extends SupportReferenceManifest { return new ArrayList<>(); } - - @Override - public boolean equals(final Object object) { - if (this == object) { - return true; - } - if (object == null || getClass() != object.getClass()) { - return false; - } - EventLogMeasurements that = (EventLogMeasurements) object; - - return this.getHexDecHash().equals(that.getHexDecHash()); - } - - @Override - public int hashCode() { - return super.hashCode(); - } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/SupportReferenceManifest.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/SupportReferenceManifest.java index 9aef0d7e..2cde6cb1 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/SupportReferenceManifest.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/rim/SupportReferenceManifest.java @@ -6,6 +6,7 @@ import hirs.utils.tpm.eventlog.TCGEventLog; import hirs.utils.tpm.eventlog.TpmPcrEvent; import jakarta.persistence.Column; import jakarta.persistence.Entity; +import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; import lombok.extern.log4j.Log4j2; @@ -16,7 +17,6 @@ import java.security.cert.CertificateException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import java.util.Objects; /** * Sub class that will just focus on PCR Values and Events. @@ -24,12 +24,14 @@ import java.util.Objects; @Log4j2 @Getter @Setter +@EqualsAndHashCode(callSuper = true) @Entity public class SupportReferenceManifest extends ReferenceManifest { @Column @JsonIgnore private int pcrHash = 0; + @Column private boolean updated = false; @@ -79,12 +81,8 @@ public class SupportReferenceManifest extends ReferenceManifest { TCGEventLog logProcessor = new TCGEventLog(this.getRimBytes()); this.pcrHash = Arrays.hashCode(logProcessor.getExpectedPCRValues()); return logProcessor.getExpectedPCRValues(); - } catch (CertificateException cEx) { - log.error(cEx); - } catch (NoSuchAlgorithmException noSaEx) { - log.error(noSaEx); - } catch (IOException ioEx) { - log.error(ioEx); + } catch (CertificateException | NoSuchAlgorithmException | IOException exception) { + log.error(exception); } return new String[0]; @@ -100,12 +98,8 @@ public class SupportReferenceManifest extends ReferenceManifest { try { logProcessor = new TCGEventLog(this.getRimBytes()); return logProcessor.getEventList(); - } catch (CertificateException cEx) { - log.error(cEx); - } catch (NoSuchAlgorithmException noSaEx) { - log.error(noSaEx); - } catch (IOException ioEx) { - log.error(ioEx); + } catch (CertificateException | NoSuchAlgorithmException | IOException exception) { + log.error(exception); } return new ArrayList<>(); @@ -120,24 +114,4 @@ public class SupportReferenceManifest extends ReferenceManifest { public boolean isBaseSupport() { return !this.isSwidSupplemental() && !this.isSwidPatch(); } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - if (!super.equals(o)) { - return false; - } - SupportReferenceManifest that = (SupportReferenceManifest) o; - return pcrHash == that.pcrHash && updated == that.updated; - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), pcrHash, updated); - } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/HealthStatus.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/HealthStatus.java index c9bff06f..86a71142 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/HealthStatus.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/HealthStatus.java @@ -2,6 +2,7 @@ package hirs.attestationca.persist.enums; import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.ToString; import java.util.Arrays; import java.util.stream.Collectors; @@ -11,6 +12,7 @@ import java.util.stream.Collectors; */ @Getter @AllArgsConstructor +@ToString public enum HealthStatus { /** * The trusted state, no issues with the device. @@ -35,9 +37,4 @@ public enum HealthStatus { .collect(Collectors.toSet()) .contains(healthStatus); } - - @Override - public String toString() { - return getHealthStatus(); - } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/AbstractProcessor.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/AbstractProcessor.java index e28c3379..46ced0d9 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/AbstractProcessor.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/AbstractProcessor.java @@ -40,16 +40,16 @@ import java.util.Date; import java.util.LinkedList; import java.util.List; +@Getter @Log4j2 @NoArgsConstructor public class AbstractProcessor { - @Getter private int validDays; - @Getter + private PrivateKey privateKey; + @Setter - @Getter private PolicyRepository policyRepository; /** @@ -247,7 +247,8 @@ public class AbstractProcessor { final byte[] derEncodedAttestationCertificate, final EndorsementCredential endorsementCredential, final List platformCredentials, - final Device device, boolean isLDevID) { + final Device device, + final boolean isLDevID) { List issuedAc; boolean generateCertificate = true; PolicyRepository scp = getPolicyRepository(); @@ -269,9 +270,9 @@ public class AbstractProcessor { generateCertificate = isLDevID ? policySettings.isIssueDevIdCertificate() : policySettings.isIssueAttestationCertificate(); - if (issuedAc != null && issuedAc.size() > 0 && - (isLDevID ? policySettings.isDevIdExpirationFlag() - : policySettings.isGenerateOnExpiration())) { + if (issuedAc != null && issuedAc.size() > 0 + && (isLDevID ? policySettings.isDevIdExpirationFlag() + : policySettings.isGenerateOnExpiration())) { if (issuedAc.get(0).getEndValidity().after(currentDate)) { // so the issued AC is not expired // however are we within the threshold diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java index 549a9e6e..92de652e 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java @@ -97,7 +97,7 @@ public final class ProvisionUtils { private static final SecureRandom SECURE_RANDOM = new SecureRandom(); /** - * This private constructor was created to silence one of checkstyle errors + * This private constructor was created to silence one of checkstyle errors. */ private ProvisionUtils() { } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/SupplyChainValidationService.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/SupplyChainValidationService.java index 1b763368..a0a8f9d9 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/SupplyChainValidationService.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/SupplyChainValidationService.java @@ -72,7 +72,6 @@ public class SupplyChainValidationService { * @param referenceDigestValueRepository the even manager */ @Autowired - @SuppressWarnings("ParameterNumberCheck") public SupplyChainValidationService( final CACredentialRepository caCredentialRepository, final PolicyRepository policyRepository, diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/ValidationService.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/ValidationService.java index bf0661cb..8967244f 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/ValidationService.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/ValidationService.java @@ -169,16 +169,18 @@ public class ValidationService { } /** - * @param deviceInfoReport - * @param base - * @param deltaMapping - * @param certificateRepository - * @param componentResultRepository - * @param componentAttributeRepository - * @param componentInfos - * @param provisionSessionId - * @param ignoreRevisionAttribute - * @return + * Evaluates delta attributes status. + * + * @param deviceInfoReport device information report + * @param base base platform credential + * @param deltaMapping delta mapping + * @param certificateRepository certificate repository + * @param componentResultRepository component result repository + * @param componentAttributeRepository component attribute repository + * @param componentInfos list of component information + * @param provisionSessionId uuid representation of the provision session ID + * @param ignoreRevisionAttribute whether to ignore the revision attribute + * @return a supply chain validation */ public static SupplyChainValidation evaluateDeltaAttributesStatus( final DeviceInfoReport deviceInfoReport, @@ -221,12 +223,14 @@ public class ValidationService { } /** - * @param device - * @param policySettings - * @param rimRepo - * @param rdvRepo - * @param caRepo - * @return + * Evaluates the firmware status. + * + * @param device device + * @param policySettings policy settings + * @param rimRepo reference manifest repository + * @param rdvRepo reference digest value repository + * @param caRepo CA Credential repository + * @return a supply chain validation */ public static SupplyChainValidation evaluateFirmwareStatus( final Device device, @@ -338,6 +342,7 @@ public class ValidationService { * @param credential the credential whose CA chain should be retrieved * @param previouslyQueriedSubjects a list of organizations to refrain * from querying + * @param caCredentialRepository CA Credential repository * @return a Set containing all relevant CA credentials to the given * certificate's organization */ @@ -379,6 +384,14 @@ public class ValidationService { return caCreds; } + /** + * Creates a key store using the provided set of certificate authority credentials. + * + * @param certs set of certificate authority credentials + * @return a keystore + * @throws KeyStoreException if there is an issue creating a key store + * @throws IOException if there is an issue creating a key store + */ public static KeyStore caCertSetToKeystore(final Set certs) throws KeyStoreException, IOException { KeyStore keyStore = KeyStore.getInstance("JKS"); diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/AttestationCertificateAuthorityTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/AttestationCertificateAuthorityTest.java index a5e1c56f..c0deaec3 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/AttestationCertificateAuthorityTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/AttestationCertificateAuthorityTest.java @@ -130,8 +130,9 @@ public class AttestationCertificateAuthorityTest { public void setupTests() throws Exception { //BeforeSuite + final int keySize = 2048; KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); - keyPairGenerator.initialize(2048); + keyPairGenerator.initialize(keySize); keyPair = keyPairGenerator.generateKeyPair(); //BeforeTest @@ -257,8 +258,11 @@ public class AttestationCertificateAuthorityTest { SymmetricKey symmetricKey = ProvisionUtils.generateSymmetricKey(); // assert the symmetric algorithm, scheme, and key size are all set appropriately - assertTrue(symmetricKey.getAlgorithmId() == 6); - assertTrue(symmetricKey.getEncryptionScheme() == 255); + final int expectedAlgorithmId = 6; + final int expectedEncryptionScheme = 255; + + assertTrue(symmetricKey.getAlgorithmId() == expectedAlgorithmId); + assertTrue(symmetricKey.getEncryptionScheme() == expectedEncryptionScheme); assertTrue(symmetricKey.getKeySize() == symmetricKey.getKey().length); } @@ -337,8 +341,9 @@ public class AttestationCertificateAuthorityTest { assertNotNull(attestation); // validate the attestation algorithm + final int expectedAlgorithmId = 6; assertNotNull(attestation.getAlgorithm()); - assertTrue(attestation.getAlgorithm().getAlgorithmId() == 6); + assertTrue(attestation.getAlgorithm().getAlgorithmId() == expectedAlgorithmId); assertTrue(attestation.getAlgorithm().getEncryptionScheme() == 0x1); assertTrue(attestation.getAlgorithm().getSignatureScheme() == 0); assertTrue(attestation.getAlgorithm().getParamsSize() == 0); @@ -465,7 +470,8 @@ public class AttestationCertificateAuthorityTest { // assert that the exponent and the modulus are the same. the exponents should be the well // known prime, 101 - assertTrue(publicKey.getPublicExponent().equals(new BigInteger("010001", 16))); + final int radix = 16; + assertTrue(publicKey.getPublicExponent().equals(new BigInteger("010001", radix))); assertTrue(publicKey.getModulus().equals(modulus)); } @@ -486,7 +492,8 @@ public class AttestationCertificateAuthorityTest { // assert that the exponent and the modulus are the same. the exponents should be the well // known prime, 101. - assertTrue(publicKey.getPublicExponent().equals(new BigInteger("010001", 16))); + final int radix = 16; + assertTrue(publicKey.getPublicExponent().equals(new BigInteger("010001", radix))); assertTrue(publicKey.getModulus().equals(modulus)); } @@ -504,7 +511,8 @@ public class AttestationCertificateAuthorityTest { byte[] ekFile = Files.readAllBytes(ekPath); RSAPublicKey ek = ProvisionUtils.parsePublicKey(ekFile); - assertTrue(ek.getPublicExponent().equals(new BigInteger("010001", 16))); + final int radix = 16; + assertTrue(ek.getPublicExponent().equals(new BigInteger("010001", radix))); byte[] mod = ek.getModulus().toByteArray(); // big integer conversion is signed so it can add a 0 byte @@ -532,7 +540,8 @@ public class AttestationCertificateAuthorityTest { byte[] akFile = Files.readAllBytes(akPath); RSAPublicKey ak = ProvisionUtils.parsePublicKey(akFile); - assertTrue(ak.getPublicExponent().equals(new BigInteger("010001", 16))); + final int radix = 16; + assertTrue(ak.getPublicExponent().equals(new BigInteger("010001", radix))); byte[] mod = ak.getModulus().toByteArray(); // big integer conversion is signed so it can add a 0 byte @@ -598,7 +607,7 @@ public class AttestationCertificateAuthorityTest { RSAPublicKey akPub = ProvisionUtils.parsePublicKey(akPubFile); // prepare the nonce and wrap it with keys - byte[] nonce = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + final byte[] nonce = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; ByteString blob = ProvisionUtils.tpm20MakeCredential(ekPub, akPub, nonce); @@ -636,12 +645,12 @@ public class AttestationCertificateAuthorityTest { * Test helper method that encrypts a blob using a shared key and IV using the specified * transformation. * - * @param blob to be encrypted + * @param blob blob to be encrypted * @param key shared key * @param iv to encrypt with * @param transformation of the encryption cipher * @return encrypted blob - * @throws Exception + * @throws Exception if there are any issues while encrypting the blob */ private byte[] encryptBlob(final byte[] blob, final byte[] key, final byte[] iv, final String transformation) throws Exception { @@ -664,9 +673,9 @@ public class AttestationCertificateAuthorityTest { /** * Test helper method to decrypt blobs. * - * @param blob to be decrypted + * @param blob blob to be decrypted * @return decrypted blob - * @throws Exception + * @throws Exception if there are any issues while decrypting the blob */ private byte[] decryptBlob(final byte[] blob) throws Exception { // initialize a cipher using the specified transformation @@ -686,12 +695,12 @@ public class AttestationCertificateAuthorityTest { * Test helper method that decrypts a blob using a shared key and IV using the specified. * transformation. * - * @param blob to be decrypted + * @param blob blob to be decrypted * @param key shared key * @param iv to decrypt with * @param transformation of the decryption cipher * @return decrypted blob - * @throws Exception + * @throws Exception if there are any issues while decrypting the blob */ private byte[] decryptBlob(final byte[] blob, final byte[] key, final byte[] iv, final String transformation) throws Exception { diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/tpm/TPM2ProvisionerStateTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/tpm/TPM2ProvisionerStateTest.java index 2c50cc70..6ce900c9 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/tpm/TPM2ProvisionerStateTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/tpm/TPM2ProvisionerStateTest.java @@ -172,14 +172,20 @@ public class TPM2ProvisionerStateTest { RANDOM_GENERATOR.nextBytes(nonce); RANDOM_GENERATOR.nextBytes(identityClaim); - + DataInputStream dis = new DataInputStream(new ByteArrayInputStream(nonce)); Long index = dis.readLong(); dis.close(); + TPM2ProvisionerState value = new TPM2ProvisionerState(nonce, identityClaim); + when(tpm2ProvisionerStateRepository.findByFirstPartOfNonce(index)).thenReturn(value); + + final int nonce2Size = 7; TPM2ProvisionerState tpm2ProvisionerState = - TPM2ProvisionerState.getTPM2ProvisionerState(tpm2ProvisionerStateRepository, new byte[7]); + TPM2ProvisionerState.getTPM2ProvisionerState(tpm2ProvisionerStateRepository, + new byte[nonce2Size]); + assertNull(tpm2ProvisionerState); } } diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/AbstractUserdefinedEntityTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/AbstractUserdefinedEntityTest.java index 086d8e6c..bd4786fc 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/AbstractUserdefinedEntityTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/AbstractUserdefinedEntityTest.java @@ -40,18 +40,15 @@ public class AbstractUserdefinedEntityTest { * Location of a test (fake) SGI intermediate CA certificate. */ public static final String FAKE_SGI_INT_CA_FILE = "/certificates/fakeSGIIntermediateCA.cer"; - /** * Location of a test (fake) Intel intermediate CA certificate. */ public static final String FAKE_INTEL_INT_CA_FILE = "/certificates/fakeIntelIntermediateCA.cer"; - /** * Location of a test (fake) root CA certificate. */ public static final String FAKE_ROOT_CA_FILE = "/certificates/fakeRootCA.cer"; - /** * Hex-encoded subject key identifier for the FAKE_ROOT_CA_FILE. */ @@ -97,6 +94,12 @@ public class AbstractUserdefinedEntityTest { private static final String TEST_IDENTITY_CERT = "/tpm/sample_identity_cert.cer"; private static final Logger LOGGER = LogManager.getLogger(DeviceInfoReportTest.class); + /** + * This protected constructor was created to silence one of checkstyle errors. + */ + protected AbstractUserdefinedEntityTest() { + } + /** * Construct a test certificate from the given parameters. * @@ -121,13 +124,14 @@ public class AbstractUserdefinedEntityTest { * @param endorsementCredential the endorsement credentials (can be null) * @param platformCredentials the platform credentials (can be null) * @return the newly-constructed Certificate - * @throws IOException if there is a problem constructing the test certificate + * @throws IOException if there is a problem constructing the test certificate + * @throws IllegalArgumentException if there is a problem retrieving the certificate class simple name */ public static Certificate getTestCertificate( final Class certificateClass, final String filename, final EndorsementCredential endorsementCredential, final List platformCredentials) - throws IOException { + throws IOException, IllegalArgumentException { Path certPath; try { @@ -139,23 +143,17 @@ public class AbstractUserdefinedEntityTest { throw new IOException("Could not resolve path URI", e); } - switch (certificateClass.getSimpleName()) { - case "CertificateAuthorityCredential": - return new CertificateAuthorityCredential(certPath); - case "ConformanceCredential": - return new ConformanceCredential(certPath); - case "EndorsementCredential": - return new EndorsementCredential(certPath); - case "PlatformCredential": - return new PlatformCredential(certPath); - case "IssuedAttestationCertificate": - return new IssuedAttestationCertificate(certPath, - endorsementCredential, platformCredentials, false); - default: - throw new IllegalArgumentException( - String.format("Unknown certificate class %s", certificateClass.getName()) - ); - } + return switch (certificateClass.getSimpleName()) { + case "CertificateAuthorityCredential" -> new CertificateAuthorityCredential(certPath); + case "ConformanceCredential" -> new ConformanceCredential(certPath); + case "EndorsementCredential" -> new EndorsementCredential(certPath); + case "PlatformCredential" -> new PlatformCredential(certPath); + case "IssuedAttestationCertificate" -> new IssuedAttestationCertificate(certPath, + endorsementCredential, platformCredentials, false); + default -> throw new IllegalArgumentException( + String.format("Unknown certificate class %s", certificateClass.getName()) + ); + }; } /** @@ -192,8 +190,9 @@ public class AbstractUserdefinedEntityTest { public static NetworkInfo createTestNetworkInfo() { try { final String hostname = "test.hostname"; + final byte[] byteAddress = new byte[] {127, 0, 0, 1}; final InetAddress ipAddress = - InetAddress.getByAddress(new byte[] {127, 0, 0, 1}); + InetAddress.getByAddress(byteAddress); final byte[] macAddress = new byte[] {11, 22, 33, 44, 55, 66}; return new NetworkInfo(hostname, ipAddress, macAddress); diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/CertificateTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/CertificateTest.java index 38abacb1..49edfd87 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/CertificateTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/CertificateTest.java @@ -14,7 +14,6 @@ import java.net.URISyntaxException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.security.NoSuchProviderException; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; @@ -80,10 +79,12 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { private static final String RDN_COMMA_SEPARATED = "CN=STM TPM EK Intermediate CA 02, O=STMicroelectronics NV, C=CH"; + private static final String RDN_MULTIVALUE = "CN=Nuvoton TPM Root CA 2010+O=Nuvoton Technology Corporation+C=TW"; private static final String RDN_COMMA_SEPARATED_ORGANIZATION = "STMicroelectronics NV"; + private static final String RDN_MULTIVALUE_ORGANIZATION = "Nuvoton Technology Corporation"; private static final String EK_CERT_WITH_PADDED_BYTES = @@ -135,6 +136,7 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { FAKE_ROOT_CA_FILE)).toURI()) ) ); + assertEquals( "CN=Fake Root CA", certificate.getX509Certificate().getIssuerX500Principal().getName() @@ -144,12 +146,11 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { /** * Ensure that a Certificate cannot be created from a null byte array. * - * @throws IOException if the certificate could not be constructed properly - * @throws CertificateException if there is a problem de/serializing the certificate + * @throws IllegalArgumentException if there is a problem de/serializing the certificate */ @Test public void testConstructCertFromNullByteArray() - throws IOException, CertificateException { + throws IllegalArgumentException { assertThrows(IllegalArgumentException.class, () -> new CertificateAuthorityCredential((byte[]) null)); } @@ -157,12 +158,11 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { /** * Ensure that a Certificate cannot be created from an empty byte array. * - * @throws IOException if the certificate could not be constructed properly - * @throws CertificateException if there is a problem de/serializing the certificate + * @throws IllegalArgumentException if there is a problem de/serializing the certificate */ @Test public void testConstructCertFromEmptyByteArray() - throws IOException, CertificateException { + throws IllegalArgumentException { assertThrows(IllegalArgumentException.class, () -> new CertificateAuthorityCredential(new byte[] {})); } @@ -179,6 +179,7 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { Paths.get(Objects.requireNonNull(this.getClass().getResource( FAKE_ROOT_CA_FILE)).toURI()) ); + assertEquals( "CN=Fake Root CA", certificate.getX509Certificate().getIssuerX500Principal().getName() @@ -188,11 +189,10 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { /** * Tests that a certificate cannot be constructed from a null path. * - * @throws IOException if there is a problem reading the cert file at the given path - * @throws URISyntaxException if there is a problem constructing the URI + * @throws IllegalArgumentException if there is a problem constructing the URI */ @Test - public void testConstructCertFromNullPath() throws URISyntaxException, IOException { + public void testConstructCertFromNullPath() throws IllegalArgumentException { assertThrows(IllegalArgumentException.class, () -> new CertificateAuthorityCredential((Path) null)); } @@ -208,6 +208,7 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { assertEquals( Certificate.CertificateType.X509_CERTIFICATE, getTestCertificate(FAKE_ROOT_CA_FILE).getCertificateType()); + assertNotEquals( Certificate.CertificateType.ATTRIBUTE_CERTIFICATE, getTestCertificate(FAKE_ROOT_CA_FILE).getCertificateType()); @@ -222,7 +223,6 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { getTestCertificate( PlatformCredential.class, TEST_PLATFORM_CERT_3).getCertificateType()); - } /** @@ -256,7 +256,6 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { "GETY42100160", ((PlatformCredential) platformCredential).getPlatformSerial() ); - } /** @@ -289,6 +288,7 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { @Test public void testX509CertificateParsingExtended() throws IOException { Certificate rootCert = getTestCertificate(INTEL_INT_CA_FILE); + assertEquals( "https://trustedservices.intel.com/" + "content/TSC/certs/TSC_SS_RootCA_Certificate.cer\n", @@ -336,12 +336,11 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { * Tests that Certificate correctly parses out non-standard fields from an X509 attribute * certificate. * - * @throws IOException if there is a problem reading the cert file at the given path - * @throws URISyntaxException if there is a problem constructing the file's URI + * @throws IOException if there is a problem reading the cert file at the given path */ @Test public void testX509AttributeCertificateParsingExtended() - throws IOException, URISyntaxException { + throws IOException { Certificate platformCert = getTestCertificate( PlatformCredential.class, TEST_PLATFORM_CERT_6); @@ -362,7 +361,10 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { public void testCertificateTrim() throws IOException, URISyntaxException { byte[] rawFileBytes = Files.readAllBytes(Paths.get(Objects.requireNonNull(CertificateTest.class .getResource(EK_CERT_WITH_PADDED_BYTES)).toURI())); - byte[] expectedCertBytes = Arrays.copyOfRange(rawFileBytes, 0, 908); + + final int finalPosition = 908; + byte[] expectedCertBytes = Arrays.copyOfRange(rawFileBytes, 0, finalPosition); + Certificate ekCert = getTestCertificate(EndorsementCredential.class, EK_CERT_WITH_PADDED_BYTES); assertEquals(new BigInteger("16842032579184247954"), ekCert.getSerialNumber()); @@ -384,6 +386,7 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { URISyntaxException { byte[] rawFileBytes = Files.readAllBytes(Paths.get(Objects.requireNonNull(CertificateTest.class .getResource(EK_CERT_WITH_PADDED_BYTES)).toURI())); + assertThrows(IllegalArgumentException.class, () -> new EndorsementCredential(Arrays.copyOfRange(rawFileBytes, 0, 2)), ".* No certificate length field could be found\\."); @@ -401,8 +404,10 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { URISyntaxException { byte[] rawFileBytes = Files.readAllBytes(Paths.get(Objects.requireNonNull(CertificateTest.class .getResource(EK_CERT_WITH_PADDED_BYTES)).toURI())); + + final int finalPosition = 4; assertThrows(IllegalArgumentException.class, () -> - new EndorsementCredential(Arrays.copyOfRange(rawFileBytes, 0, 4)), + new EndorsementCredential(Arrays.copyOfRange(rawFileBytes, 0, finalPosition)), ".* Certificate is nothing more than ASN.1 Sequence\\\\."); } @@ -418,8 +423,10 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { URISyntaxException { byte[] rawFileBytes = Files.readAllBytes(Paths.get(Objects.requireNonNull(CertificateTest.class .getResource(EK_CERT_WITH_PADDED_BYTES)).toURI())); + + final int finalPosition = 42; assertThrows(IllegalArgumentException.class, () -> - new EndorsementCredential(Arrays.copyOfRange(rawFileBytes, 0, 42)), + new EndorsementCredential(Arrays.copyOfRange(rawFileBytes, 0, finalPosition)), ".* Value of certificate length field extends beyond" + " length of provided certificate\\."); } @@ -427,13 +434,11 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { /** * Tests that the equals method on {@link Certificate} works as expected. * - * @throws IOException if the certificate could not be constructed properly - * @throws CertificateException if there is a problem with the KeyStore or de/serializing the - * certificate - * @throws URISyntaxException if there is a problem constructing the path to the certificate + * @throws IOException if the certificate could not be constructed properly + * @throws URISyntaxException if there is a problem constructing the path to the certificate */ @Test - public void testEquals() throws CertificateException, IOException, URISyntaxException { + public void testEquals() throws IOException, URISyntaxException { assertEquals( getTestCertificate(FAKE_ROOT_CA_FILE), getTestCertificate(FAKE_ROOT_CA_FILE) @@ -471,15 +476,10 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { /** * Tests that the isIssuer method on {@link Certificate} works as expected. * - * @throws IOException if the certificate could not be constructed properly - * @throws CertificateException if there is a problem with the KeyStore or de/serializing the - * certificate - * @throws NoSuchProviderException if the Bouncy Castle security provider is unavailable - * @throws URISyntaxException if there is a problem constructing the path to the certificate + * @throws IOException if the certificate could not be constructed properly */ @Test - public void testIsIssuer() throws CertificateException, IOException, NoSuchProviderException, - URISyntaxException { + public void testIsIssuer() throws IOException { Certificate issuerCert = getTestCertificate(FAKE_ROOT_CA_FILE); Certificate cert = getTestCertificate(INT_CA_CERT02); @@ -490,13 +490,11 @@ public class CertificateTest extends AbstractUserdefinedEntityTest { /** * Tests that the hashCode method on {@link Certificate} works as expected. * - * @throws IOException if the certificate could not be constructed properly - * @throws CertificateException if there is a problem with the KeyStore or de/serializing the - * certificate - * @throws URISyntaxException if there is a problem constructing the path to the certificate + * @throws IOException if the certificate could not be constructed properly + * @throws URISyntaxException if there is a problem constructing the path to the certificate */ @Test - public void testHashCode() throws CertificateException, IOException, URISyntaxException { + public void testHashCode() throws IOException, URISyntaxException { assertEquals( getTestCertificate(FAKE_ROOT_CA_FILE).hashCode(), getTestCertificate(FAKE_ROOT_CA_FILE).hashCode() diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidationTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidationTest.java index f9f78195..f8353591 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidationTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidationTest.java @@ -20,7 +20,7 @@ class SupplyChainValidationTest extends AbstractUserdefinedEntityTest { * multiple test certificates. * * @return the test SupplyChainValidation - * @throws IOException if there si + * @throws IOException if there is a problem deserializing certificates */ public static SupplyChainValidation getTestSupplyChainValidation() throws IOException { return getTestSupplyChainValidation( @@ -52,10 +52,10 @@ class SupplyChainValidationTest extends AbstractUserdefinedEntityTest { /** * Test that a SupplyChainValidation can't be instantiated with a null validation type. * - * @throws IOException if there is a problem deserializing certificates + * @throws IllegalArgumentException if there is a problem deserializing certificates */ @Test - public void testNullValidationType() throws IOException { + public void testNullValidationType() throws IllegalArgumentException { assertThrows(IllegalArgumentException.class, () -> new SupplyChainValidation( null, @@ -68,10 +68,10 @@ class SupplyChainValidationTest extends AbstractUserdefinedEntityTest { /** * Test that a SupplyChainValidation can't be instantiated with a null certificate list. * - * @throws IOException if there is a problem deserializing certificates + * @throws IllegalArgumentException if there is a problem deserializing certificates */ @Test - public void testNullCertificates() throws IOException { + public void testNullCertificates() throws IllegalArgumentException { assertThrows(IllegalArgumentException.class, () -> new SupplyChainValidation( SupplyChainValidation.ValidationType.ENDORSEMENT_CREDENTIAL, diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/PlatformCredentialTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/PlatformCredentialTest.java index 045e716e..677a355c 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/PlatformCredentialTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/PlatformCredentialTest.java @@ -153,7 +153,7 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { try { new PlatformCredential(certPath); - //fail if it manage to parse the certificate + //fail if it manages to parse the certificate fail("Invalid certificate was parsed."); } catch (IOException ex) { if (ex == null || ex.getMessage().isEmpty()) { @@ -194,8 +194,7 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { Assertions.assertEquals(sigStr.toUpperCase(), EXPECTED_CERT_SIGNATURE_FOR_CERT_2); String issuer = Certificate.getAttributeCertificateIssuerNames( - credential.getAttributeCertificate().getAcinfo().getIssuer() - )[0].toString(); + credential.getAttributeCertificate().getAcinfo().getIssuer())[0].toString(); Assertions.assertEquals(credential.getManufacturer(), "Intel"); Assertions.assertEquals(credential.getModel(), "DE3815TYKH"); diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSecurityAssertionsTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSecurityAssertionsTest.java index 7bd3edf4..72b28673 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSecurityAssertionsTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TPMSecurityAssertionsTest.java @@ -19,14 +19,19 @@ public class TPMSecurityAssertionsTest { public void testEkGenTypeEnum() { assertEquals(TPMSecurityAssertions.EkGenerationType.values()[0], TPMSecurityAssertions.EkGenerationType.INTERNAL); + assertEquals(TPMSecurityAssertions.EkGenerationType.values()[1], TPMSecurityAssertions.EkGenerationType.INJECTED); + assertEquals(TPMSecurityAssertions.EkGenerationType.values()[2], TPMSecurityAssertions.EkGenerationType.INTERNAL_REVOCABLE); - assertEquals(TPMSecurityAssertions.EkGenerationType.values()[3], + + final int thirdPosition = 3; + assertEquals(TPMSecurityAssertions.EkGenerationType.values()[thirdPosition], TPMSecurityAssertions.EkGenerationType.INJECTED_REVOCABLE); try { - assertNull(TPMSecurityAssertions.EkGenerationType.values()[4]); + final int positionOutOfBounds = 4; + assertNull(TPMSecurityAssertions.EkGenerationType.values()[positionOutOfBounds]); fail(); } catch (ArrayIndexOutOfBoundsException e) { } @@ -40,12 +45,15 @@ public class TPMSecurityAssertionsTest { public void testGenLocationEnum() { assertEquals(TPMSecurityAssertions.EkGenerationLocation.values()[0], TPMSecurityAssertions.EkGenerationLocation.TPM_MANUFACTURER); + assertEquals(TPMSecurityAssertions.EkGenerationLocation.values()[1], TPMSecurityAssertions.EkGenerationLocation.PLATFORM_MANUFACTURER); + assertEquals(TPMSecurityAssertions.EkGenerationLocation.values()[2], TPMSecurityAssertions.EkGenerationLocation.EK_CERT_SIGNER); try { - assertNull(TPMSecurityAssertions.EkGenerationLocation.values()[3]); + final int positionOutOfBounds = 3; + assertNull(TPMSecurityAssertions.EkGenerationLocation.values()[positionOutOfBounds]); fail(); } catch (ArrayIndexOutOfBoundsException e) { } diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/info/TPMInfoTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/info/TPMInfoTest.java index 6c1ba152..41ba024a 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/info/TPMInfoTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/info/TPMInfoTest.java @@ -18,14 +18,19 @@ import static org.junit.jupiter.api.Assertions.assertThrows; public class TPMInfoTest extends AbstractUserdefinedEntityTest { private static final String TPM_MAKE = "test tpmMake"; - private static final String LONG_TPM_MAKE = StringUtils.rightPad("test tpmMake", 65); + + private static final int RIGHT_PADDING_SIZE = 65; + private static final String LONG_TPM_MAKE = StringUtils.rightPad("test tpmMake", RIGHT_PADDING_SIZE); private static final short VERSION_MAJOR = 1; + private static final short VERSION_MINOR = 2; + private static final short VERSION_REV_MAJOR = 3; + private static final short VERSION_REV_MINOR = 4; - private static final Logger LOGGER = LogManager - .getLogger(TPMInfoTest.class); + + private static final Logger LOGGER = LogManager.getLogger(TPMInfoTest.class); /** * Tests instantiation and getters of a TPMInfo object. @@ -59,9 +64,11 @@ public class TPMInfoTest extends AbstractUserdefinedEntityTest { /** * Tests that the TPM make information cannot be null. + * + * @throws IllegalArgumentException if one of the provided parameters is an illegal/invalid value */ @Test - public final void tpmMakeNullTest() { + public final void tpmMakeNullTest() throws IllegalArgumentException { assertThrows(IllegalArgumentException.class, () -> new TPMInfo(null, VERSION_MAJOR, VERSION_MINOR, VERSION_REV_MAJOR, VERSION_REV_MINOR, getTestIdentityCertificate())); @@ -69,9 +76,11 @@ public class TPMInfoTest extends AbstractUserdefinedEntityTest { /** * Tests that the TPM make information cannot be longer than 64 characters. + * + * @throws IllegalArgumentException if one of the provided parameters is an illegal/invalid value */ @Test - public final void tpmMakeLongTest() { + public final void tpmMakeLongTest() throws IllegalArgumentException { assertThrows(IllegalArgumentException.class, () -> new TPMInfo(LONG_TPM_MAKE, VERSION_MAJOR, VERSION_MINOR, VERSION_REV_MAJOR, VERSION_REV_MINOR, getTestIdentityCertificate())); @@ -80,9 +89,11 @@ public class TPMInfoTest extends AbstractUserdefinedEntityTest { /** * Tests that the version major number info cannot be set to negative * values. + * + * @throws IllegalArgumentException if one of the provided parameters is an illegal/invalid value */ @Test - public final void testTPMInfoInvalidVersionMajor() { + public final void testTPMInfoInvalidVersionMajor() throws IllegalArgumentException { assertThrows(IllegalArgumentException.class, () -> new TPMInfo(TPM_MAKE, (short) -1, VERSION_MINOR, VERSION_REV_MAJOR, VERSION_REV_MINOR, getTestIdentityCertificate())); @@ -91,9 +102,11 @@ public class TPMInfoTest extends AbstractUserdefinedEntityTest { /** * Tests that the version minor number info cannot be set to negative * values. + * + * @throws IllegalArgumentException if one of the provided parameters is an illegal/invalid value */ @Test - public final void testTPMInfoInvalidVersionMinor() { + public final void testTPMInfoInvalidVersionMinor() throws IllegalArgumentException { assertThrows(IllegalArgumentException.class, () -> new TPMInfo(TPM_MAKE, VERSION_MAJOR, (short) -1, VERSION_REV_MAJOR, VERSION_REV_MINOR, getTestIdentityCertificate())); @@ -102,9 +115,11 @@ public class TPMInfoTest extends AbstractUserdefinedEntityTest { /** * Tests that the version revision major numbers cannot be set to negative * values. + * + * @throws IllegalArgumentException if one of the provided parameters is an illegal/invalid value */ @Test - public final void testTPMInfoInvalidVersionRevMajor() { + public final void testTPMInfoInvalidVersionRevMajor() throws IllegalArgumentException { assertThrows(IllegalArgumentException.class, () -> new TPMInfo(TPM_MAKE, VERSION_MAJOR, VERSION_MINOR, (short) -1, VERSION_REV_MINOR, getTestIdentityCertificate())); @@ -113,9 +128,11 @@ public class TPMInfoTest extends AbstractUserdefinedEntityTest { /** * Tests that the version revision minor numbers cannot be set to negative * values. + * + * @throws IllegalArgumentException if one of the provided parameters is an illegal/invalid value */ @Test - public final void testTPMInfoInvalidVersionRevMinor() { + public final void testTPMInfoInvalidVersionRevMinor() throws IllegalArgumentException { assertThrows(IllegalArgumentException.class, () -> new TPMInfo(TPM_MAKE, VERSION_MAJOR, VERSION_MINOR, VERSION_REV_MAJOR, (short) -1, getTestIdentityCertificate())); diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidatorTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidatorTest.java index 2a002af3..254014b2 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidatorTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidatorTest.java @@ -99,70 +99,114 @@ public class SupplyChainCredentialValidatorTest { * SecureRandom instance. */ static final SecureRandom SECURE_RANDOM = new SecureRandom(); + private static final String JSON_FILE = "/config/component-class.json"; + private static final String SAMPLE_PACCOR_OUTPUT_TXT = "/hirs/validation/sample_paccor_output.txt"; + private static final String SAMPLE_PACCOR_OUTPUT_NOT_SPECIFIED_TXT = "/hirs/validation/sample_paccor_output_not_specified_values.txt"; + private static final String SAMPLE_TEST_PACCOR_CERT = "/validation/platform_credentials_2/paccor_platform_cert.crt"; + private static final String SAMPLE_PACCOR_OUTPUT_WITH_EXTRA_COMPONENT_TXT = "/hirs/validation/sample_paccor_output_with_extra_component.txt"; + private static final String TEST_SIGNING_KEY = "/validation/platform_credentials/ca.pub"; + private static final String TEST_PLATFORM_CRED = "/validation/platform_credentials/plat_cert1.pem"; + private static final String TEST_PLATFORM_CRED2 = "/validation/platform_credentials/pciids_plat_cert_2-0.pem"; + private static final String TEST_PLATFORM_CRED_BASE_CHASIS_COMBO = "/validation/platform_credentials/Intel_pc5.pem"; + private static final String TEST_BOARD_SERIAL_NUMBER = "GETY421001GV"; + private static final String TEST_CHASSIS_SERIAL_NUMBER = "G6YK42300C87"; + private static final String TEST_EK_CERT = "/certificates/nuc-2/tpmcert.pem"; + private static final String TEST_EK_CERT_2 = "/certificates/nuc-1/tpmcert.pem"; + private static final String TEST_COMPONENT_MANUFACTURER = "Intel"; + private static final String TEST_COMPONENT_MODEL = "platform2018"; + private static final String TEST_COMPONENT_REVISION = "1.0"; + private static final String BAD_SERIAL = "BAD_SERIAL"; + //-------Actual ST Micro Endorsement Credential Certificate Chain!-------------- private static final String EK_CERT = ""; + private static final String INT_CA_CERT02 = "/certificates/fakestmtpmekint02.pem"; + //-------Generated Intel Credential Certificate Chain-------------- private static final String INTEL_PLATFORM_CERT = "/validation/platform_credentials/plat_cert3.pem"; + private static final String INTEL_PLATFORM_CERT_2 = "/validation/platform_credentials/Intel_pc2.pem"; + private static final String INTEL_PLATFORM_CERT_3 = "/validation/platform_credentials/pciids_plat_cert_2-0.pem"; + private static final String INTEL_INT_CA = "/validation/platform_credentials/intel_chain/root/intermediate1.crt"; + private static final String FAKE_ROOT_CA = "/validation/platform_credentials/intel_chain/root/rootca.crt"; + private static final String PLATFORM_MANUFACTURER = "Intel"; + private static final String PLATFORM_MODEL = "S2600KP"; + private static final String PLATFORM_VERSION = "H76962-350"; + //-------Original Intel Credential Certificate Chain-------------- private static final String INTEL_PLATFORM_CERT_ORIG = "/certificates/fakeIntel_S2600KP_F00F00F00F00.pem"; + private static final String INTEL_ORIG_INT_CA_ORIG = "/certificates/fakeIntelIntermediateCA.pem"; + private static final String FAKE_ROOT_CA_ORIG = "/certificates/fakeCA.pem"; + //-------Fake SGI Credential Certificate Chain-------------- private static final String SGI_PLATFORM_CERT = "/certificates/fakeSGI_J2_F00F00F0.pem"; + private static final String SGI_INT_CA = "/certificates/fakeSGIIntermediateCA.pem"; + private static final String SGI_CRED_SERIAL_NUMBER = "F00F00F0"; + //-------Actual Intel NUC Platform -------------- + private static final String NUC_PLATFORM_CERT = "/certificates/Intel_nuc_pc.pem"; + private static final String NUC_PLATFORM_CERT_SERIAL_NUMBER = "GETY421001DY"; + private static final String NUC_PLATFORM_CERT2 = "/certificates/Intel_nuc_pc2.pem"; + private static final String NUC_PLATFORM_CERT_SERIAL_NUMBER2 = "GETY4210001M"; + private static final String INTEL_SIGNING_KEY = "/certificates/IntelSigningKey_20April2017.pem"; + private static final String NEW_NUC1 = "/validation/platform_credentials/Intel_pc3.cer"; + private static HardwareInfo hardwareInfo; + private static KeyStore keyStore; + private static KeyStore emptyKeyStore; + private final SupplyChainCredentialValidator supplyChainCredentialValidator = new SupplyChainCredentialValidator(); private final CredentialValidator credentialValidator = @@ -171,11 +215,14 @@ public class SupplyChainCredentialValidatorTest { /** * Sets up a KeyStore for testing. * - * @throws KeyStoreException if no Provider supports a KeyStoreSpi implementation for the specified type. - * @throws NoSuchAlgorithmException if the algorithm used to check the integrity of the keystore cannot be found + * @throws KeyStoreException if no Provider supports a KeyStoreSpi implementation for the + * specified type. + * @throws NoSuchAlgorithmException if the algorithm used to check the integrity of the keystore + * cannot be found * @throws CertificateException if any of the certificates in the keystore could not be loaded - * @throws IOException if there is an I/O or format problem with the keystore data, if a password is - * required but not given, or if the given password was incorrect + * @throws IOException if there is an I/O or format problem with the keystore data, + * if a password is required but not given, + * or if the given password was incorrect */ @BeforeAll public static void setUp() throws KeyStoreException, NoSuchAlgorithmException, @@ -362,7 +409,8 @@ public class SupplyChainCredentialValidatorTest { private static InetAddress getTestIpAddress() { try { - return InetAddress.getByAddress(new byte[] {127, 0, 0, 1}); + final byte[] byteAddress = new byte[] {127, 0, 0, 1}; + return InetAddress.getByAddress(byteAddress); } catch (UnknownHostException e) { return null; } diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml index 5d872646..d209e4bf 100644 --- a/config/checkstyle/checkstyle.xml +++ b/config/checkstyle/checkstyle.xml @@ -68,7 +68,9 @@ - + + + @@ -134,7 +136,7 @@ - + From 7959a16a56bff469240ff562a71f4c9c7b089214 Mon Sep 17 00:00:00 2001 From: TheSilentCoder <184309164+ThatSilentCoder@users.noreply.github.com> Date: Thu, 24 Oct 2024 11:45:08 -0400 Subject: [PATCH 08/22] issue_847: Fixed ALL checkstyle errors in CA test module. --- .../persist/entity/userdefined/Device.java | 5 + .../userdefined/SupplyChainValidation.java | 4 + .../attributes/PlatformProperty.java | 1 - .../attributes/TBBSecurityAssertion.java | 2 - .../record/TPMMeasurementRecord.java | 2 - .../provision/helper/ProvisionUtils.java | 8 +- .../service/SupplyChainValidationService.java | 1 + .../persist/service/ValidationService.java | 8 +- .../selector/ReferenceManifestSelector.java | 8 +- .../attestationca/persist/util/AcaPciIds.java | 8 ++ .../persist/util/CredentialHelper.java | 10 +- .../SupplyChainCredentialValidator.java | 11 ++- .../certificate/PlatformCredentialTest.java | 92 ++++++++++++++++--- .../entity/userdefined/info/TPMInfoTest.java | 6 +- .../SupplyChainCredentialValidatorTest.java | 5 - 15 files changed, 128 insertions(+), 43 deletions(-) diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/Device.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/Device.java index ed3d1ffc..66a6ed8f 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/Device.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/Device.java @@ -120,6 +120,11 @@ public class Device extends AbstractEntity { this.lastReportTimestamp = (Timestamp) lastReportTimestamp.clone(); } + /** + * Creates a string representation of the Device object. + * + * @return a string representation of the Device object. + */ @Override public String toString() { return String.format("Device Name: %s%nStatus: %s%nSummary: %s%n", diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidation.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidation.java index 4c8a4f2d..3d0d9711 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidation.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidation.java @@ -23,16 +23,20 @@ public class SupplyChainValidation extends ArchivableEntity { @Getter @Column private final ValidationType validationType; + @Getter @Column private final AppraisalStatus.Status validationResult; + @ManyToMany(fetch = FetchType.EAGER) @JoinTable(name = "CertificatesUsedToValidate", joinColumns = {@JoinColumn(name = "validation_id", nullable = false)}) private final List certificatesUsed; + @Getter @Column(length = RESULT_MESSAGE_LENGTH) private final String message; + @Getter @Column private String rimId; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformProperty.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformProperty.java index d36e5b8e..9f768c63 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformProperty.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/PlatformProperty.java @@ -27,7 +27,6 @@ public class PlatformProperty { * Number of identifiers for version 1. */ protected static final int IDENTIFIER_NUMBER = 2; - private static final String NOT_SPECIFIED = "Not Specified"; private ASN1UTF8String propertyName; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TBBSecurityAssertion.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TBBSecurityAssertion.java index 74d14a55..616d1503 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TBBSecurityAssertion.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/TBBSecurityAssertion.java @@ -33,9 +33,7 @@ import java.math.BigInteger; public class TBBSecurityAssertion { private static final int CCINFO = 0; - private static final int FIPSLEVEL = 1; - private static final int RTMTYPE = 2; private ASN1Integer version; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/record/TPMMeasurementRecord.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/record/TPMMeasurementRecord.java index 16dc27a6..5543bb75 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/record/TPMMeasurementRecord.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/record/TPMMeasurementRecord.java @@ -51,11 +51,9 @@ public final class TPMMeasurementRecord extends ExaminableRecord { */ public static final int SHA_256_BYTE_LENGTH = 64; - @Column(name = "pcr", nullable = false) @XmlAttribute(name = "PcrNumber", required = true) private final int pcrId; - @Embedded @XmlElement private final Digest hash; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java index 92de652e..5a1be57a 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java @@ -97,7 +97,7 @@ public final class ProvisionUtils { private static final SecureRandom SECURE_RANDOM = new SecureRandom(); /** - * This private constructor was created to silence one of checkstyle errors. + * This private constructor was created to silence checkstyle errors. */ private ProvisionUtils() { } @@ -109,7 +109,7 @@ public final class ProvisionUtils { * @param identityClaim byte array that should be converted to a Protobuf IdentityClaim * object * @return the Protobuf generated Identity Claim object - * @throws {@link IdentityProcessingException} if byte array could not be parsed + * @throws {@link InvalidProtocolBufferException} if byte array could not be parsed */ public static ProvisionerTpm2.IdentityClaim parseIdentityClaim(final byte[] identityClaim) { try { @@ -695,7 +695,7 @@ public final class ProvisionUtils { final int hoursInADay = 24; final int secondsInAnHour = 3600; final int millisecondsInASecond = 1000; - return (int) ((date2.getTime() - date1.getTime()) / - (millisecondsInASecond * secondsInAnHour * hoursInADay)); + return (int) ((date2.getTime() - date1.getTime()) + / (millisecondsInASecond * secondsInAnHour * hoursInADay)); } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/SupplyChainValidationService.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/SupplyChainValidationService.java index a0a8f9d9..61120b1a 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/SupplyChainValidationService.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/SupplyChainValidationService.java @@ -66,6 +66,7 @@ public class SupplyChainValidationService { * @param policyRepository the policy manager * @param certificateRepository the cert manager * @param componentResultRepository the comp result manager + * @param componentAttributeRepository component attribute repository * @param referenceManifestRepository the RIM manager * @param supplyChainValidationRepository the scv manager * @param supplyChainValidationSummaryRepository the summary manager diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/ValidationService.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/ValidationService.java index 8967244f..76efb8df 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/ValidationService.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/ValidationService.java @@ -40,7 +40,13 @@ import java.util.Set; import java.util.UUID; @Log4j2 -public class ValidationService { +public final class ValidationService { + + /** + * This private constructor was created to silence checkstyle errors. + */ + private ValidationService() { + } /** * Evaluates the provided endorsement credential status. diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/ReferenceManifestSelector.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/ReferenceManifestSelector.java index d8c1e307..2a0be756 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/ReferenceManifestSelector.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/ReferenceManifestSelector.java @@ -27,23 +27,28 @@ public abstract class ReferenceManifestSelector { * String representing the database field for the manufacturer. */ public static final String PLATFORM_MANUFACTURER = "platformManufacturer"; + /** * String representing the database field for the manufacturer id. */ public static final String PLATFORM_MANUFACTURER_ID = "platformManufacturerId"; + /** * String representing the database field for the model. */ public static final String PLATFORM_MODEL = "platformModel"; + /** * String representing the database field for the filename. */ public static final String RIM_FILENAME_FIELD = "fileName"; + private static final String RIM_TYPE_FIELD = "rimType"; private final Class referenceTypeClass; private final Map fieldValueSelections; + private boolean excludeArchivedRims; /** @@ -142,8 +147,9 @@ public abstract class ReferenceManifestSelector { /** * Construct the criterion that can be used to query for rims matching the - * configuration of this {@link ReferenceManifestSelector}. + * + * configuration of this {@link ReferenceManifestSelector}. * + * @param criteriaBuilder criteria builder * @return a Criterion that can be used to query for rims matching the * configuration of this instance */ diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/AcaPciIds.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/AcaPciIds.java index 6725b13d..73e90f12 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/AcaPciIds.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/AcaPciIds.java @@ -22,15 +22,23 @@ public final class AcaPciIds { * The Component Class TCG Registry OID. */ public static final String COMPCLASS_TCG_OID = "2.23.133.18.3.1"; + /** * The Component Class Value mask for NICs. */ public static final String COMPCLASS_TCG_CAT_NIC = "00090000"; + /** * The Component Class Value mask for GFX cards. */ public static final String COMPCLASS_TCG_CAT_GFX = "00050000"; + /** + * Private constructor created to silence checkstyle error. + */ + private AcaPciIds() { + } + /** * Iterate through all components and translate PCI hardware IDs as necessary. It will only * translate ComponentIdentifierV2+ objects as it relies on Component Class information. diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/CredentialHelper.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/CredentialHelper.java index bf336bbf..e051f956 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/CredentialHelper.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/CredentialHelper.java @@ -13,6 +13,12 @@ import java.util.ListIterator; @Log4j2 public final class CredentialHelper { + /** + * Private constructor was created to silence checkstyle. + */ + private CredentialHelper() { + } + /** * Small method to check if the certificate is a PEM. * @@ -25,7 +31,7 @@ public final class CredentialHelper { } /** - * Small method to check if there are multi pem files + * Small method to check if there are multi pem files. * * @param possiblePEM header information * @return true if it is. @@ -44,7 +50,7 @@ public final class CredentialHelper { } /** - * Method to remove header footer information from PEM + * Method to remove header footer information from PEM. * * @param pemFile string representation of the file * @return a cleaned up raw byte object diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidator.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidator.java index d1567f7f..914ac968 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidator.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidator.java @@ -4,7 +4,6 @@ import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import hirs.attestationca.persist.entity.userdefined.info.ComponentInfo; -import lombok.NoArgsConstructor; import lombok.extern.log4j.Log4j2; import org.apache.commons.lang3.StringUtils; import org.bouncycastle.asn1.x500.X500Name; @@ -35,7 +34,6 @@ import java.util.List; import java.util.Set; @Log4j2 -@NoArgsConstructor public class SupplyChainCredentialValidator { /** @@ -46,18 +44,15 @@ public class SupplyChainCredentialValidator { * AppraisalStatus message for a valid endorsement credential appraisal. */ public static final String ENDORSEMENT_VALID = "Endorsement credential validated"; - /** * AppraisalStatus message for a valid platform credential appraisal. */ public static final String PLATFORM_VALID = "Platform credential validated"; - /** * AppraisalStatus message for a valid platform credential attributes appraisal. */ public static final String PLATFORM_ATTRIBUTES_VALID = "Platform credential attributes validated"; - /** * AppraisalStatus message for a valid firmware appraisal. */ @@ -71,6 +66,12 @@ public class SupplyChainCredentialValidator { Security.addProvider(new BouncyCastleProvider()); } + /** + * Protected constructor was created to silence checkstyle. + */ + protected SupplyChainCredentialValidator() { + } + /** * Attempts to check if the certificate is validated by certificates in a cert chain. The cert * chain is expected to be stored in a non-ordered KeyStore (trust store). If the signing diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/PlatformCredentialTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/PlatformCredentialTest.java index 677a355c..355fa903 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/PlatformCredentialTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/PlatformCredentialTest.java @@ -179,12 +179,26 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { Path certPath = Paths.get(resource.toURI()); PlatformCredential credential = new PlatformCredential(certPath); + Calendar calendar = Calendar.getInstance(); calendar.setTimeZone(TimeZone.getTimeZone("UTC")); - calendar.set(2017, 2, 23, 22, 34, 33); + final int year1 = 2017; + final int month1 = 2; + final int day1 = 23; + final int hour1 = 22; + final int minute1 = 34; + final int second1 = 33; + calendar.set(year1, month1, day1, hour1, minute1, second1); calendar.set(Calendar.MILLISECOND, 0); Assertions.assertEquals(credential.getBeginValidity().getTime(), calendar.getTime().getTime()); - calendar.set(2030, 11, 31, 23, 59, 59); + + final int year2 = 2030; + final int month2 = 11; + final int day2 = 31; + final int hour2 = 23; + final int minute2 = 59; + final int second2 = 59; + calendar.set(year2, month2, day2, hour2, minute2, second2); Assertions.assertEquals(credential.getEndValidity().getTime(), calendar.getTime().getTime()); Assertions.assertNotNull(credential.getAttributeCertificate()); @@ -229,10 +243,23 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { PlatformCredential credential = new PlatformCredential(certPath); Calendar calendar = Calendar.getInstance(); calendar.setTimeZone(TimeZone.getTimeZone("UTC")); - calendar.set(2017, 2, 23, 22, 34, 33); + final int year1 = 2017; + final int month1 = 2; + final int day1 = 23; + final int hour1 = 22; + final int minute1 = 34; + final int second1 = 33; + calendar.set(year1, month1, day1, hour1, minute1, second1); calendar.set(Calendar.MILLISECOND, 0); Assertions.assertEquals(credential.getBeginValidity().getTime(), calendar.getTime().getTime()); - calendar.set(2030, 11, 31, 23, 59, 59); + + final int year2 = 2030; + final int month2 = 11; + final int day2 = 31; + final int hour2 = 23; + final int minute2 = 59; + final int second2 = 59; + calendar.set(year2, month2, day2, hour2, minute2, second2); Assertions.assertEquals(credential.getEndValidity().getTime(), calendar.getTime().getTime()); Assertions.assertNotNull(credential.getAttributeCertificate()); @@ -278,10 +305,23 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { Calendar calendar = Calendar.getInstance(); calendar.setTimeZone(TimeZone.getTimeZone("UTC")); - calendar.set(2017, 3, 21, 17, 5, 29); + final int year1 = 2017; + final int month1 = 3; + final int day1 = 21; + final int hour1 = 17; + final int minute1 = 5; + final int second1 = 29; + calendar.set(year1, month1, day1, hour1, minute1, second1); calendar.set(Calendar.MILLISECOND, 0); Assertions.assertEquals(credential.getBeginValidity().getTime(), calendar.getTime().getTime()); - calendar.set(2030, 11, 31, 23, 59, 59); + + final int year2 = 2030; + final int month2 = 11; + final int day2 = 31; + final int hour2 = 23; + final int minute2 = 59; + final int second2 = 59; + calendar.set(year2, month2, day2, hour2, minute2, second2); Assertions.assertEquals(credential.getEndValidity().getTime(), calendar.getTime().getTime()); Assertions.assertNotNull(credential.getAttributeCertificate()); @@ -323,10 +363,23 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { Calendar calendar = Calendar.getInstance(); calendar.setTimeZone(TimeZone.getTimeZone("UTC")); - calendar.set(2017, 3, 21, 17, 5, 30); + final int year1 = 2017; + final int month1 = 3; + final int day1 = 21; + final int hour1 = 17; + final int minute1 = 5; + final int second1 = 30; + calendar.set(year1, month1, day1, hour1, minute1, second1); calendar.set(Calendar.MILLISECOND, 0); Assertions.assertEquals(credential.getBeginValidity().getTime(), calendar.getTime().getTime()); - calendar.set(2030, 11, 31, 23, 59, 59); + + final int year2 = 2030; + final int month2 = 11; + final int day2 = 31; + final int hour2 = 23; + final int minute2 = 59; + final int second2 = 59; + calendar.set(year2, month2, day2, hour2, minute2, second2); Assertions.assertEquals(credential.getEndValidity().getTime(), calendar.getTime().getTime()); Assertions.assertNotNull(credential.getAttributeCertificate()); @@ -394,7 +447,8 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { Assertions.fail("Component Identifier is empty."); } - Assertions.assertEquals(allComponents.size(), 7); + final int expectedComponentsSize = 7; + Assertions.assertEquals(expectedComponentsSize, allComponents.size()); ComponentIdentifier component; //Check component #2 @@ -414,7 +468,8 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { Assertions.assertTrue(component.getFieldReplaceable().isTrue()); //Check component #5 - component = allComponents.get(4); + final int component5Position = 4; + component = allComponents.get(component5Position); Assertions.assertEquals("Ethernet Connection I219-LM", component.getComponentModel() .getString()); Assertions.assertEquals("8c:0f:6f:72:c6:c5", component.getComponentAddress().get(0) @@ -513,7 +568,8 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { Assertions.fail("Component Identifier is empty."); } - Assertions.assertEquals(allComponents.size(), 3); + final int expectedComponentsSize = 3; + Assertions.assertEquals(expectedComponentsSize, allComponents.size()); ComponentIdentifier component; //Check component #2 @@ -581,7 +637,8 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { Assertions.fail("Component Identifier is empty."); } - Assertions.assertEquals(allComponents.size(), 7); + final int expectedComponentsSize = 7; + Assertions.assertEquals(expectedComponentsSize, allComponents.size()); ComponentIdentifier component; //Check component #1 @@ -592,7 +649,8 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { .getString()); //Check component #7 - component = allComponents.get(6); + final int component7Position = 6; + component = allComponents.get(component7Position); Assertions.assertTrue(component.getComponentAddress().size() > 0); Assertions.assertEquals("8c:0f:6f:72:c6:c5", component.getComponentAddress().get(0) .getAddressValue() @@ -647,14 +705,18 @@ public class PlatformCredentialTest extends AbstractUserdefinedEntityTest { //Check component identifier List allComponents = platformConfig.getComponentIdentifier(); Assertions.assertFalse(allComponents.isEmpty()); - ComponentIdentifier component = allComponents.get(5); + + final int component6Position = 5; + ComponentIdentifier component = allComponents.get(component6Position); Assertions.assertTrue(component.isVersion2()); List platformProperties = platformConfig.getPlatformProperties(); if (platformProperties.isEmpty()) { Assertions.fail("Platform Properties is empty."); } - Assertions.assertEquals(platformProperties.size(), 3); + + final int platformPropSize = 3; + Assertions.assertEquals(platformPropSize, platformProperties.size()); PlatformProperty property; diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/info/TPMInfoTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/info/TPMInfoTest.java index 41ba024a..62494a31 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/info/TPMInfoTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/info/TPMInfoTest.java @@ -18,16 +18,12 @@ import static org.junit.jupiter.api.Assertions.assertThrows; public class TPMInfoTest extends AbstractUserdefinedEntityTest { private static final String TPM_MAKE = "test tpmMake"; - + private static final int RIGHT_PADDING_SIZE = 65; private static final String LONG_TPM_MAKE = StringUtils.rightPad("test tpmMake", RIGHT_PADDING_SIZE); - private static final short VERSION_MAJOR = 1; - private static final short VERSION_MINOR = 2; - private static final short VERSION_REV_MAJOR = 3; - private static final short VERSION_REV_MINOR = 4; private static final Logger LOGGER = LogManager.getLogger(TPMInfoTest.class); diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidatorTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidatorTest.java index 254014b2..7384e4b5 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidatorTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidatorTest.java @@ -207,11 +207,6 @@ public class SupplyChainCredentialValidatorTest { private static KeyStore emptyKeyStore; - private final SupplyChainCredentialValidator supplyChainCredentialValidator = - new SupplyChainCredentialValidator(); - private final CredentialValidator credentialValidator = - new CredentialValidator(); - /** * Sets up a KeyStore for testing. * From 6d770e9a638d4b2284c4785742ad3ecf75d58984 Mon Sep 17 00:00:00 2001 From: TheSilentCoder <184309164+ThatSilentCoder@users.noreply.github.com> Date: Fri, 25 Oct 2024 17:30:36 -0400 Subject: [PATCH 09/22] issue_847: Fixed ALL checkstyle and spotbug errors in CA module. Fixing spotbug and checkstyle issues in CA_PORT module now. --- HIRS_AttestationCA/build.gradle | 3 + .../userdefined/SupplyChainValidation.java | 9 ++- .../CertificateAuthorityCredential.java | 57 +++++++++++++++++-- .../certificate/CertificateVariables.java | 49 +++------------- .../certificate/EndorsementCredential.java | 21 ++++--- .../userdefined/report/DeviceInfoReport.java | 5 ++ .../persist/enums/HealthStatus.java | 6 ++ .../provision/helper/ProvisionUtils.java | 56 ++++++++++++------ .../persist/util/CredentialHelper.java | 14 +++-- .../CredentialManagementHelperTest.java | 24 +++++++- .../attestationca/portal/HIRSApplication.java | 3 +- .../portal/HIRSDbInitializer.java | 3 +- .../portal/PersistenceJPAConfig.java | 3 +- .../portal/datatables/DataTableResponse.java | 16 ++++-- .../portal/datatables/package-info.java | 1 + .../portal/listener/package-info.java | 1 + .../attestationca/portal/page/PageParams.java | 2 +- .../controllers/DevicePageController.java | 2 +- .../ReferenceManifestPageController.java | 10 ++-- .../portal/page/controllers/package-info.java | 1 + .../portal/page/package-info.java | 1 + .../portal/page/params/package-info.java | 2 +- .../portal/page/utils/package-info.java | 2 +- .../portal/page/PageControllerTest.java | 6 +- .../CertificateDetailsPageControllerTest.java | 2 +- .../controllers/DevicePageControllerTest.java | 4 +- ...PlatformCredentialsPageControllerTest.java | 6 +- .../controllers/PolicyPageControllerTest.java | 14 ++--- ...rustChainManagementPageControllerTest.java | 15 +++-- .../portal/page/controllers/package-info.java | 1 + .../portal/page/package-info.java | 1 + gradle.properties | 2 + 32 files changed, 214 insertions(+), 128 deletions(-) create mode 100644 HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/package-info.java create mode 100644 HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/listener/package-info.java create mode 100644 HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/package-info.java create mode 100644 HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/package-info.java create mode 100644 HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/package-info.java create mode 100644 HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/package-info.java diff --git a/HIRS_AttestationCA/build.gradle b/HIRS_AttestationCA/build.gradle index 55ce5538..ff0bf8e5 100644 --- a/HIRS_AttestationCA/build.gradle +++ b/HIRS_AttestationCA/build.gradle @@ -54,6 +54,9 @@ dependencies { testImplementation 'org.mockito:mockito-core:4.2.0' testImplementation 'org.springframework:spring-test:6.0.8' + compileOnly "com.github.spotbugs:spotbugs-annotations:${spotBugAnnotationVersion}" + annotationProcessor "com.github.spotbugs:spotbugs-annotations:${spotBugAnnotationVersion}" + // spring management compileOnly libs.lombok implementation libs.lombok diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidation.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidation.java index 3d0d9711..6485f46e 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidation.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/SupplyChainValidation.java @@ -9,6 +9,7 @@ import jakarta.persistence.FetchType; import jakarta.persistence.JoinColumn; import jakarta.persistence.JoinTable; import jakarta.persistence.ManyToMany; +import lombok.AccessLevel; import lombok.Getter; import java.util.ArrayList; @@ -18,26 +19,24 @@ import java.util.List; /** * Stores results of a single element of the supply chain validation process. */ +@Getter @Entity public class SupplyChainValidation extends ArchivableEntity { - @Getter @Column private final ValidationType validationType; - @Getter @Column private final AppraisalStatus.Status validationResult; + @Getter(AccessLevel.NONE) @ManyToMany(fetch = FetchType.EAGER) @JoinTable(name = "CertificatesUsedToValidate", joinColumns = {@JoinColumn(name = "validation_id", nullable = false)}) private final List certificatesUsed; - @Getter @Column(length = RESULT_MESSAGE_LENGTH) private final String message; - - @Getter + @Column private String rimId; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateAuthorityCredential.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateAuthorityCredential.java index f5356160..0f5e5421 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateAuthorityCredential.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateAuthorityCredential.java @@ -3,19 +3,20 @@ package hirs.attestationca.persist.entity.userdefined.certificate; import hirs.attestationca.persist.entity.userdefined.Certificate; import jakarta.persistence.Column; import jakarta.persistence.Entity; -import lombok.EqualsAndHashCode; +import lombok.AccessLevel; import lombok.Getter; import org.apache.commons.codec.binary.Hex; import java.io.IOException; import java.nio.file.Path; +import java.util.Arrays; /** * This class persists Certificate Authority credentials by extending the base Certificate * class with fields unique to CA credentials. */ +@Getter @Entity -@EqualsAndHashCode public class CertificateAuthorityCredential extends Certificate { /** @@ -30,6 +31,7 @@ public class CertificateAuthorityCredential extends Certificate { private static final int PREFIX_BYTE_SIZE = 4; + @Getter(AccessLevel.NONE) @Column private final byte[] subjectKeyIdentifier; @@ -37,11 +39,9 @@ public class CertificateAuthorityCredential extends Certificate { * this field is part of the TCG CA specification, but has not yet been found in * manufacturer-provided CAs, and is therefore not currently parsed. */ - @Getter @Column private final String credentialType = "TCPA Trusted Platform Module Endorsement"; - @Getter @Column private String subjectKeyIdString; @@ -112,10 +112,59 @@ public class CertificateAuthorityCredential extends Certificate { return null; } + /** + * Helper method that uses the provided certificate bytes and truncates a portion + * of the certificate bytes array. + * + * @param certificateBytes byte array representation of the certificate bytes + * @return a truncated certificate byte array + */ private byte[] truncatePrefixBytes(final byte[] certificateBytes) { byte[] temp = new byte[CA_BYTE_SIZE]; System.arraycopy(certificateBytes, PREFIX_BYTE_SIZE, temp, 0, CA_BYTE_SIZE); return temp; } + + /** + * Compares this Certificate Authority Credential object to another Certificate + * Authority Credential object. + * + * @param o object to compare + * @return true if both this and the provided Certificate Authority Credential objects are equal, + * false otherwise + */ + public boolean equals(final Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + if (!super.equals(o)) { + return false; + } + + CertificateAuthorityCredential that = (CertificateAuthorityCredential) o; + +// if (!Objects.equals(credentialType, that.credentialType)) { +// return false; +// } + + return Arrays.equals(subjectKeyIdentifier, that.subjectKeyIdentifier); + } + + /** + * Creates an integer hash code. + * + * @return an integer hash code + */ + @Override + public int hashCode() { + final int hashCodeConst = 31; + int result = super.hashCode(); + result = hashCodeConst * result + credentialType.hashCode(); + result = hashCodeConst * result + Arrays.hashCode(subjectKeyIdentifier); + return result; + } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateVariables.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateVariables.java index b4b53162..eff3b7a3 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateVariables.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/CertificateVariables.java @@ -1,214 +1,179 @@ package hirs.attestationca.persist.entity.userdefined.certificate; -public class CertificateVariables { +public final class CertificateVariables { /** * */ public static final String PEM_HEADER = "-----BEGIN CERTIFICATE-----"; - /** * */ public static final String PEM_FOOTER = "-----END CERTIFICATE-----"; - /** * */ public static final String PEM_ATTRIBUTE_HEADER = "-----BEGIN ATTRIBUTE CERTIFICATE-----"; - /** * */ public static final String PEM_ATTRIBUTE_FOOTER = "-----END ATTRIBUTE CERTIFICATE-----"; - /** * */ public static final String MALFORMED_CERT_MESSAGE = "Malformed certificate detected."; - /** * */ public static final int MAX_CERT_LENGTH_BYTES = 2048; - /** * */ public static final int MAX_NUMERIC_PRECISION = 49; - /** * Can store up to 160 bit values. */ public static final int MAX_PUB_KEY_MODULUS_HEX_LENGTH = 1024; - /** * */ public static final int KEY_USAGE_BIT0 = 0; - /** * */ public static final int KEY_USAGE_BIT1 = 1; - /** * */ public static final int KEY_USAGE_BIT2 = 2; - /** * */ public static final int KEY_USAGE_BIT3 = 3; - /** * */ public static final int KEY_USAGE_BIT4 = 4; - /** * */ public static final int KEY_USAGE_BIT5 = 5; - /** * */ public static final int KEY_USAGE_BIT6 = 6; - /** * */ public static final int KEY_USAGE_BIT7 = 7; - /** * */ public static final int KEY_USAGE_BIT8 = 8; - /** * */ public static final String KEY_USAGE_DS = "DIGITAL SIGNATURE"; - /** * */ public static final String KEY_USAGE_NR = "NON-REPUDIATION"; - /** * */ public static final String KEY_USAGE_KE = "KEY ENCIPHERMENT"; - /** * */ public static final String KEY_USAGE_DE = "DATA ENCIPHERMENT"; - /** * */ public static final String KEY_USAGE_KA = "KEY AGREEMENT"; - /** * */ public static final String KEY_USAGE_KC = "KEY CERT SIGN"; - /** * */ public static final String KEY_USAGE_CS = "CRL SIGN"; - /** * */ public static final String KEY_USAGE_EO = "ENCIPHER ONLY"; - /** * */ public static final String KEY_USAGE_DO = "DECIPHER ONLY"; - /** * */ public static final String ECDSA_OID = "1.2.840.10045.4.3.2"; - /** * */ public static final String ECDSA_SHA224_OID = "1.2.840.10045.4.1"; - /** * */ public static final String RSA256_OID = "1.2.840.113549.1.1.11"; - /** * */ public static final String RSA384_OID = "1.2.840.113549.1.1.12"; - /** * */ public static final String RSA512_OID = "1.2.840.113549.1.1.13"; - /** * */ public static final String RSA224_OID = "1.2.840.113549.1.1.14"; - /** * */ public static final String RSA512_224_OID = "1.2.840.113549.1.1.15"; - /** * */ public static final String RSA512_256_OID = "1.2.840.113549.1.1.16"; - /** * */ public static final String RSA256_STRING = "SHA256WithRSA"; - /** * */ public static final String RSA384_STRING = "SHA384WithRSA"; - /** * */ public static final String RSA224_STRING = "SHA224WithRSA"; - /** * */ public static final String RSA512_STRING = "SHA512WithRSA"; - /** * */ public static final String RSA512_224_STRING = "SHA512-224WithRSA"; - /** * */ public static final String RSA512_256_STRING = "SHA512-256WithRSA"; - /** * */ public static final String ECDSA_STRING = "SHA256WithECDSA"; - /** * */ public static final String ECDSA_SHA224_STRING = "SHA224WithECDSA"; + + /** + * Private constructor was created to silence checkstyle error. + */ + private CertificateVariables() { + } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/EndorsementCredential.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/EndorsementCredential.java index f8a8bf70..961e4423 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/EndorsementCredential.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/EndorsementCredential.java @@ -1,5 +1,6 @@ package hirs.attestationca.persist.entity.userdefined.certificate; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hirs.attestationca.persist.entity.userdefined.certificate.attributes.TPMSecurityAssertions; import hirs.attestationca.persist.entity.userdefined.certificate.attributes.TPMSpecification; import jakarta.persistence.Column; @@ -60,6 +61,9 @@ import java.util.Set; * trustedcomputinggroup.org/wp-content/uploads/Credential_Profiles_V1.2_Level2_Revision8.pdf */ @Log4j2 +@SuppressFBWarnings(value = "RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE", + justification = "property credentialType is guaranteed to always be non-null/initialized. Warning" + + "stems from auto-generated lombok equals and hashcode method doing redundant null checks.") @EqualsAndHashCode(callSuper = false) @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity @@ -115,7 +119,7 @@ public class EndorsementCredential extends DeviceAssociatedCertificate { * manufacturer-provided ECs, and is therefore not currently parsed. */ @Getter - @Column(nullable = true) + @Column private final String policyReference = null; // optional /** @@ -123,7 +127,7 @@ public class EndorsementCredential extends DeviceAssociatedCertificate { * manufacturer-provided ECs, and is therefore not currently parsed. */ @Getter - @Column(nullable = true) + @Column private final String revocationLocator = null; // optional @Getter @@ -265,13 +269,13 @@ public class EndorsementCredential extends DeviceAssociatedCertificate { value = entry.getValue(); if (oid.equals(TPM_MODEL)) { model = value.toString(); - log.debug("Found TPM Model: " + model); + log.debug("Found TPM Model: {}", model); } else if (oid.equals(TPM_VERSION)) { version = value.toString(); - log.debug("Found TPM Version: " + version); + log.debug("Found TPM Version: {}", version); } else if (oid.equals(TPM_MANUFACTURER)) { manufacturer = value.toString(); - log.debug("Found TPM Manufacturer: " + manufacturer); + log.debug("Found TPM Manufacturer: {}", manufacturer); } } } @@ -317,7 +321,7 @@ public class EndorsementCredential extends DeviceAssociatedCertificate { ASN1Integer revision = (ASN1Integer) seq.getObjectAt(ASN1_REV_INDEX); tpmSpecification = new TPMSpecification(family.getString(), level.getValue(), revision.getValue()); - log.debug("Found TPM Spec:" + tpmSpecification); + log.debug("Found TPM Spec:{}", tpmSpecification); } else if (addToMapping && key.equals(TPM_SECURITY_ASSERTIONS)) { // Parse TPM Security Assertions int seqPosition = 0; @@ -343,7 +347,7 @@ public class EndorsementCredential extends DeviceAssociatedCertificate { tpmSecurityAssertions = new TPMSecurityAssertions(ver.getValue(), fieldUpgradeable.isTrue()); - log.debug("Found TPM Assertions: " + tpmSecurityAssertions); + log.debug("Found TPM Assertions: {}", tpmSecurityAssertions); // Iterate through remaining fields to set optional attributes int tag; ASN1TaggedObject obj; @@ -401,7 +405,6 @@ public class EndorsementCredential extends DeviceAssociatedCertificate { * @param key if addToMapping is true, the key in the OID key/value pair * @throws IOException parsing of subcomponents in the tree failed. */ - @SuppressWarnings("checkstyle:methodlength") private void parseSingle(final ASN1Primitive component, final boolean addToMapping, final String key) throws IOException { // null check the key if addToMapping is true @@ -563,7 +566,7 @@ public class EndorsementCredential extends DeviceAssociatedCertificate { } else { // there are some deprecated types that we don't parse - log.error("Unparsed type: " + component.getClass()); + log.error("Unparsed type: {}", component.getClass()); } } } diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/report/DeviceInfoReport.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/report/DeviceInfoReport.java index a589dbbe..d6d66edb 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/report/DeviceInfoReport.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/report/DeviceInfoReport.java @@ -1,5 +1,6 @@ package hirs.attestationca.persist.entity.userdefined.report; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hirs.attestationca.persist.entity.AbstractEntity; import hirs.attestationca.persist.entity.userdefined.info.FirmwareInfo; import hirs.attestationca.persist.entity.userdefined.info.HardwareInfo; @@ -28,6 +29,10 @@ import java.net.InetAddress; * information about the device. This Report includes the network, * OS, and TPM information. */ +@SuppressFBWarnings(value = "RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE", + justification = "various class properties here are guaranteed to always be non-null/initialized." + + " Warning stems from auto-generated lombok equals and hashcode method doing redundant " + + "null checks.") @NoArgsConstructor @EqualsAndHashCode(callSuper = false) @Log4j2 diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/HealthStatus.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/HealthStatus.java index 86a71142..4ff0c457 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/HealthStatus.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/enums/HealthStatus.java @@ -31,6 +31,12 @@ public enum HealthStatus { private final String healthStatus; + /** + * Determines if the provided health status is a valid health status. + * + * @param healthStatus string representation of the healh status + * @return true if the health status is valid, otherwise false + */ public static boolean isValidStatus(final String healthStatus) { return Arrays.stream(HealthStatus.values()) .map(HealthStatus::name) diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java index 5a1be57a..d164c688 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java @@ -97,7 +97,7 @@ public final class ProvisionUtils { private static final SecureRandom SECURE_RANDOM = new SecureRandom(); /** - * This private constructor was created to silence checkstyle errors. + * This private constructor was created to silence checkstyle error. */ private ProvisionUtils() { } @@ -219,7 +219,8 @@ public final class ProvisionUtils { new PSource.PSpecified("".getBytes(StandardCharsets.UTF_8))); cipher.init(Cipher.PRIVATE_KEY, privateKey, spec); - } else {// initialize the cipher to decrypt using the ACA private key. + } else { + // initialize the cipher to decrypt using the ACA private key. cipher.init(Cipher.DECRYPT_MODE, privateKey); } @@ -532,15 +533,32 @@ public final class ProvisionUtils { credentialBlob[0] = topSize[1]; credentialBlob[1] = topSize[0]; credentialBlob[2] = 0x00; - credentialBlob[3] = 0x20; - System.arraycopy(integrityHmac, 0, credentialBlob, 4, 32); - for (int i = 0; i < 98; i++) { - credentialBlob[36 + i] = 0x00; + + final int credBlobPosition4 = 3; + final byte credBlobFourthPositionValue = 0x20; + credentialBlob[credBlobPosition4] = credBlobFourthPositionValue; + + final int credBlobPosition5 = 4; + final int credBlobSizeFromPosition5 = 32; + System.arraycopy(integrityHmac, 0, credentialBlob, credBlobPosition5, credBlobSizeFromPosition5); + + final int credBlobPosition99 = 98; + final int credBlobPosition37 = 36; + + for (int i = 0; i < credBlobPosition99; i++) { + credentialBlob[credBlobPosition37 + i] = 0x00; } - System.arraycopy(encryptedSecret, 0, credentialBlob, 36, encryptedSecret.length); - credentialBlob[134] = 0x00; - credentialBlob[135] = 0x01; - System.arraycopy(encryptedSeed, 0, credentialBlob, 136, 256); + System.arraycopy(encryptedSecret, 0, credentialBlob, credBlobPosition37, encryptedSecret.length); + + final int credBlobPosition135 = 134; + credentialBlob[credBlobPosition135] = 0x00; + + final int credBlobPosition136 = 135; + credentialBlob[credBlobPosition136] = 0x01; + + final int credBlobPosition137 = 136; + final int credBlobSizeFromPosition137 = 256; + System.arraycopy(encryptedSeed, 0, credentialBlob, credBlobPosition137, credBlobSizeFromPosition137); // return the result return credentialBlob; } @@ -583,7 +601,8 @@ public final class ProvisionUtils { public static byte[] cryptKDFa(final byte[] seed, final String label, final byte[] context, final int sizeInBytes) throws NoSuchAlgorithmException, InvalidKeyException { - ByteBuffer b = ByteBuffer.allocate(4); + final int capacity = 4; + ByteBuffer b = ByteBuffer.allocate(capacity); b.putInt(1); byte[] counter = b.array(); // get the label @@ -592,24 +611,27 @@ public final class ProvisionUtils { labelWithEnding = label + "\0"; } byte[] labelBytes = labelWithEnding.getBytes(StandardCharsets.UTF_8); - b = ByteBuffer.allocate(4); - b.putInt(sizeInBytes * 8); + final int byteOffset = 8; + b = ByteBuffer.allocate(capacity); + b.putInt(sizeInBytes * byteOffset); byte[] desiredSizeInBits = b.array(); - int sizeOfMessage = 8 + labelBytes.length; + int sizeOfMessage = byteOffset + labelBytes.length; if (context != null) { sizeOfMessage += context.length; } byte[] message = new byte[sizeOfMessage]; int marker = 0; - System.arraycopy(counter, 0, message, marker, 4); - marker += 4; + + final int markerLength = 4; + System.arraycopy(counter, 0, message, marker, markerLength); + marker += markerLength; System.arraycopy(labelBytes, 0, message, marker, labelBytes.length); marker += labelBytes.length; if (context != null) { System.arraycopy(context, 0, message, marker, context.length); marker += context.length; } - System.arraycopy(desiredSizeInBits, 0, message, marker, 4); + System.arraycopy(desiredSizeInBits, 0, message, marker, markerLength); Mac hmac; byte[] toReturn = new byte[sizeInBytes]; diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/CredentialHelper.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/CredentialHelper.java index e051f956..be6a08e5 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/CredentialHelper.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/util/CredentialHelper.java @@ -14,7 +14,7 @@ import java.util.ListIterator; public final class CredentialHelper { /** - * Private constructor was created to silence checkstyle. + * Private constructor was created to silence checkstyle error. */ private CredentialHelper() { } @@ -88,10 +88,13 @@ public final class CredentialHelper { // Look for first ASN.1 Sequence marked by the two bytes (0x30) and (0x82) // The check advances our position in the ByteBuffer by one byte int currentPosition = certificateByteBuffer.position(); - if (certificateByteBuffer.get() == (byte) 0x30 - && certificateByteBuffer.get(currentPosition + 1) == (byte) 0x82) { + final byte byte1 = (byte) 0x30; + final byte byte2 = (byte) 0x82; + if (certificateByteBuffer.get() == byte1 + && certificateByteBuffer.get(currentPosition + 1) == byte2) { // Check if we have anything more in the buffer than an ASN.1 Sequence header - if (certificateByteBuffer.remaining() <= 3) { + final int minByteBufferRemaining = 3; + if (certificateByteBuffer.remaining() <= minByteBufferRemaining) { throw new IllegalArgumentException(malformedCertStringBuilder .append(" Certificate is nothing more than ASN.1 Sequence.") .toString()); @@ -103,7 +106,8 @@ public final class CredentialHelper { certificateLength = Short.toUnsignedInt( certificateByteBuffer.getShort(currentPosition + 2)); // Add the 4 bytes that comprise the start of the ASN.1 Sequence and the length - certificateLength += 4; + final int startOfASN1Bytes = 4; + certificateLength += startOfASN1Bytes; break; } } diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/provision/helper/CredentialManagementHelperTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/provision/helper/CredentialManagementHelperTest.java index d51602c1..dfed1311 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/provision/helper/CredentialManagementHelperTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/provision/helper/CredentialManagementHelperTest.java @@ -3,6 +3,7 @@ package hirs.attestationca.persist.provision.helper; import hirs.attestationca.persist.entity.manager.CertificateRepository; import hirs.attestationca.persist.entity.userdefined.Certificate; import org.apache.commons.io.IOUtils; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; @@ -22,18 +23,37 @@ public class CredentialManagementHelperTest { private static final String EK_HEADER_TRUNCATED = "/certificates/nuc-1/ek_cert_7_byte_header_removed.cer"; + private static final String EK_UNTOUCHED = "/certificates/nuc-1/ek_cert_untouched.cer"; + @Mock private CertificateRepository certificateRepository; + /** + * Holds the AutoCloseable instance returned by openMocks. + */ + private AutoCloseable mocks; + /** * Setup mocks. */ @BeforeEach public void setUp() { //certificateRepository = mock(CertificateRepository.class); - MockitoAnnotations.initMocks(this); + mocks = MockitoAnnotations.openMocks(this); + } + + /** + * Tears down the mock instances. + * + * @throws Exception if there are any issues closing down mock instances + */ + @AfterEach + public void tearDown() throws Exception { + if (mocks != null) { + mocks.close(); + } } /** @@ -93,7 +113,7 @@ public class CredentialManagementHelperTest { } /** - * Tests processing a valid EK with the 7 byte header in tact. + * Tests processing a valid EK with the 7 byte header intact. * * @throws IOException if an IO error occurs */ diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSApplication.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSApplication.java index bbb35040..6b5cf3fa 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSApplication.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSApplication.java @@ -24,7 +24,8 @@ public class HIRSApplication {//extends SpringBootServletInitializer { public static void main(String[] args) { // SpringApplication springApplication = new SpringApplication(HIRSApplication.class); -// springApplication.setDefaultProperties(Collections.singletonMap("server.servlet.context-path", "/portal")); +// springApplication.setDefaultProperties(Collections.singletonMap("server.servlet.context-path", +// "/portal")); // springApplication.run(args); SpringApplication.run(HIRSApplication.class, args); } diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSDbInitializer.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSDbInitializer.java index ebd34350..6619df89 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSDbInitializer.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSDbInitializer.java @@ -27,7 +27,8 @@ public class HIRSDbInitializer extends AbstractAnnotationConfigDispatcherServlet } catch (NoSuchBeanDefinitionException nsbdEx) { if (log.isDebugEnabled()) { log.debug( - "Unable to locate MultipartResolver with name 'multipartResolver': no multipart request handling provided"); + "Unable to locate MultipartResolver with name 'multipartResolver': no multipart" + + " request handling provided"); } } catch (Exception ex) { log.error(ex.getMessage()); diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/PersistenceJPAConfig.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/PersistenceJPAConfig.java index dae778b7..c2cc0373 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/PersistenceJPAConfig.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/PersistenceJPAConfig.java @@ -251,7 +251,8 @@ public class PersistenceJPAConfig implements WebMvcConfigurer { // @Bean(name="default-settings") // public PolicySettings supplyChainSettings() { -// PolicySettings scSettings = new PolicySettings("Default", "Settings are configured for no validation flags set."); +// PolicySettings scSettings = new PolicySettings("Default", "Settings are configured for no +// validation flags set."); // // return scSettings; // } diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/DataTableResponse.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/DataTableResponse.java index f931d817..e5cc2ebb 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/DataTableResponse.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/DataTableResponse.java @@ -16,16 +16,20 @@ import java.util.List; * * @param the type of object that is being wrapped. */ +@Getter +@Setter @NoArgsConstructor(access = AccessLevel.PUBLIC) public final class DataTableResponse { - private List data = new LinkedList(); - @Getter - @Setter + @Getter(AccessLevel.NONE) + @Setter(AccessLevel.NONE) + private final List data = new LinkedList(); + private int draw; - @Getter - @Setter - private long recordsTotal, recordsFiltered; + + private long recordsTotal; + + private long recordsFiltered; /** * Builds a data table response using a FilteredRecordList. diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/package-info.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/package-info.java new file mode 100644 index 00000000..d7bdd760 --- /dev/null +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/package-info.java @@ -0,0 +1 @@ +package hirs.attestationca.portal.datatables; diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/listener/package-info.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/listener/package-info.java new file mode 100644 index 00000000..9f6fb6a5 --- /dev/null +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/listener/package-info.java @@ -0,0 +1 @@ +package hirs.attestationca.portal.listener; diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/PageParams.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/PageParams.java index c035fb26..0771facd 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/PageParams.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/PageParams.java @@ -14,4 +14,4 @@ public interface PageParams { */ LinkedHashMap asMap(); -} \ No newline at end of file +} diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/DevicePageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/DevicePageController.java index a783101f..7d8454bc 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/DevicePageController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/DevicePageController.java @@ -222,4 +222,4 @@ public class DevicePageController extends PageController { return deviceIds; } -} \ No newline at end of file +} diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestPageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestPageController.java index 9cc2faa9..ed6dfca7 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestPageController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestPageController.java @@ -115,7 +115,7 @@ public class ReferenceManifestPageController extends PageController records = new FilteredRecordsList<>(); int currentPage = input.getStart() / input.getLength(); @@ -281,10 +281,11 @@ public class ReferenceManifestPageController extends PageController Date: Mon, 28 Oct 2024 16:55:25 -0400 Subject: [PATCH 10/22] issue_847: Fixed the majority of the checkstyle errors in the CAPOrtal module. Need to fix 5 more and figure out why two tests are failing. Merged master into local branch. --- .../persist/provision/AbstractProcessor.java | 2 +- .../CertificateRequestProcessor.java | 24 +- .../provision/helper/ProvisionUtils.java | 26 + HIRS_AttestationCAPortal/build.gradle | 4 +- .../attestationca/portal/HIRSApplication.java | 8 +- .../portal/HIRSDbInitializer.java | 20 + .../portal/PersistenceJPAConfig.java | 21 + .../portal/datatables/Column.java | 15 +- .../portal/datatables/Order.java | 20 +- .../OrderedListQueryDataTableAdapter.java | 16 +- .../portal/datatables/Search.java | 13 +- .../AnnotationDrivenEndpointsListener.java | 7 +- .../CertificatePageController.java | 33 +- .../controllers/DevicePageController.java | 32 +- .../page/controllers/ErrorController.java | 9 +- .../controllers/LombokLoggingController.java | 5 + ...eferenceManifestDetailsPageController.java | 11 +- .../ReferenceManifestPageController.java | 48 +- .../ValidationReportsPageController.java | 23 +- .../params/CertificateDetailsPageParams.java | 11 +- .../ReferenceManifestDetailsPageParams.java | 13 +- .../utils/CertificateStringMapBuilder.java | 81 +- .../src/main/resources/application.properties | 10 +- .../main/resources/application.win.properties | 10 +- .../src/main/resources/banner.properties | 3 - .../src/main/resources/hibernate.properties | 10 +- .../src/main/resources/portal.properties | 21 +- .../lib/jquery.dataTables-1.10.13/Readme.md | 42 +- .../extensions/AutoFill/Readme.md | 25 +- .../extensions/Buttons/Readme.md | 27 +- .../extensions/ColReorder/Readme.md | 22 +- .../extensions/FixedColumns/Readme.md | 28 +- .../extensions/FixedHeader/Readme.md | 26 +- .../extensions/KeyTable/Readme.md | 25 +- .../extensions/Responsive/Readme.md | 26 +- .../extensions/RowReorder/Readme.md | 27 +- .../extensions/Scroller/Readme.md | 33 +- .../extensions/Select/Readme.md | 26 +- .../portal/page/PageControllerTest.java | 2 +- .../portal/page/PageTestConfiguration.java | 10 +- .../CertificateDetailsPageControllerTest.java | 6 +- ...PlatformCredentialsPageControllerTest.java | 1 + .../controllers/PolicyPageControllerTest.java | 29 +- ...rustChainManagementPageControllerTest.java | 7 +- .../resources/application-test.properties | 5 +- .../hirs/Resources/ProvisionerTpm2.proto | 4 +- .../hirs/src/provisioner/Provisioner.cs | 14 +- .../src/provisioner/ProvisionerTests.cs | 4 +- .../src/ProvisionerTpm2.proto | 4 +- .../src/main/java/hirs/utils/PciIds.java | 89 +- .../hirs/utils/tpm/eventlog/TCGEventLog.java | 24 +- .../hirs/utils/tpm/eventlog/TcgTpmtHa.java | 4 +- .../hirs/utils/tpm/eventlog/TpmPcrEvent.java | 35 +- .../hirs/utils/tpm/eventlog/TpmPcrEvent1.java | 10 +- .../hirs/utils/tpm/eventlog/TpmPcrEvent2.java | 38 +- .../eventlog/events/DeviceSecurityEvent.java | 52 +- .../events/DeviceSecurityEventData.java | 4 +- .../events/DeviceSecurityEventData2.java | 6 +- .../DeviceSecurityEventDataDeviceContext.java | 4 +- .../events/DeviceSecurityEventDataHeader.java | 16 +- .../DeviceSecurityEventDataHeader2.java | 22 +- .../DeviceSecurityEventDataPciContext.java | 53 +- .../DeviceSecurityEventDataSubHeader.java | 6 +- ...ceSecurityEventDataSubHeaderCertChain.java | 10 +- ...ventDataSubHeaderSpdmMeasurementBlock.java | 22 +- .../events/DeviceSecurityEventHeader.java | 48 +- .../events/EvEfiSpdmDeviceSecurityEvent.java | 31 +- .../utils/tpm/eventlog/events/EvNoAction.java | 31 +- .../events/NvIndexDynamicEventLogData.java | 19 +- .../events/NvIndexInstanceEventLogData.java | 21 +- .../eventlog/spdm/SpdmCertificateChain.java | 20 +- .../tpm/eventlog/spdm/SpdmMeasurement.java | 22 +- .../tpm/eventlog/uefi/UefiConstants.java | 6 +- .../utils/tpm/eventlog/uefi/UefiGuid.java | 10 +- HIRS_Utils/src/main/resources/pci.ids | 38412 ++++++++++++++++ tools/tcg_eventlog_tool/build.gradle | 2 + .../src/main/java/hirs/tcg_eventlog/Main.java | 21 +- 77 files changed, 39332 insertions(+), 595 deletions(-) create mode 100644 HIRS_Utils/src/main/resources/pci.ids diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/AbstractProcessor.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/AbstractProcessor.java index 46ced0d9..809e283d 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/AbstractProcessor.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/AbstractProcessor.java @@ -118,7 +118,7 @@ public class AbstractProcessor { + "Unable to issue certificates"); } - ContentSigner signer = new JcaContentSignerBuilder("SHA1WithRSA") + ContentSigner signer = new JcaContentSignerBuilder("SHA256WithRSA") .setProvider("BC").build(getPrivateKey()); X509CertificateHolder holder = builder.build(signer); return new JcaX509CertificateConverter() diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/CertificateRequestProcessor.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/CertificateRequestProcessor.java index 1dec628d..15d37795 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/CertificateRequestProcessor.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/CertificateRequestProcessor.java @@ -1,6 +1,5 @@ package hirs.attestationca.persist.provision; -import com.google.protobuf.ByteString; import com.google.protobuf.InvalidProtocolBufferException; import hirs.attestationca.configuration.provisionerTpm2.ProvisionerTpm2; import hirs.attestationca.persist.entity.manager.CertificateRepository; @@ -161,16 +160,14 @@ public class CertificateRequestProcessor extends AbstractProcessor { attestationCertificate); byte[] derEncodedLdevidCertificate = ProvisionUtils.getDerEncodedCertificate( ldevidCertificate); + String pemEncodedAttestationCertificate = ProvisionUtils.getPemEncodedCertificate( + attestationCertificate); + String pemEncodedLdevidCertificate = ProvisionUtils.getPemEncodedCertificate( + ldevidCertificate); // We validated the nonce and made use of the identity claim so state can be deleted tpm2ProvisionerStateRepository.delete(tpm2ProvisionerState); - // Package the signed certificates into a response - ByteString certificateBytes = ByteString - .copyFrom(derEncodedAttestationCertificate); - ByteString ldevidCertificateBytes = ByteString - .copyFrom(derEncodedLdevidCertificate); - boolean generateAtt = saveAttestationCertificate(certificateRepository, derEncodedAttestationCertificate, endorsementCredential, platformCredentials, device, false); @@ -181,10 +178,10 @@ public class CertificateRequestProcessor extends AbstractProcessor { ProvisionerTpm2.CertificateResponse.Builder builder = ProvisionerTpm2.CertificateResponse. newBuilder().setStatus(ProvisionerTpm2.ResponseStatus.PASS); if (generateAtt) { - builder = builder.setCertificate(certificateBytes); + builder = builder.setCertificate(pemEncodedAttestationCertificate); } if (generateLDevID) { - builder = builder.setLdevidCertificate(ldevidCertificateBytes); + builder = builder.setLdevidCertificate(pemEncodedLdevidCertificate); } ProvisionerTpm2.CertificateResponse response = builder.build(); @@ -192,13 +189,12 @@ public class CertificateRequestProcessor extends AbstractProcessor { } else { byte[] derEncodedAttestationCertificate = ProvisionUtils.getDerEncodedCertificate( attestationCertificate); - + String pemEncodedAttestationCertificate = ProvisionUtils.getPemEncodedCertificate( + attestationCertificate); + // We validated the nonce and made use of the identity claim so state can be deleted tpm2ProvisionerStateRepository.delete(tpm2ProvisionerState); - // Package the signed certificates into a response - ByteString certificateBytes = ByteString - .copyFrom(derEncodedAttestationCertificate); ProvisionerTpm2.CertificateResponse.Builder builder = ProvisionerTpm2.CertificateResponse. newBuilder().setStatus(ProvisionerTpm2.ResponseStatus.PASS); @@ -206,7 +202,7 @@ public class CertificateRequestProcessor extends AbstractProcessor { derEncodedAttestationCertificate, endorsementCredential, platformCredentials, device, false); if (generateAtt) { - builder = builder.setCertificate(certificateBytes); + builder = builder.setCertificate(pemEncodedAttestationCertificate); } ProvisionerTpm2.CertificateResponse response = builder.build(); diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java index d164c688..88c747fe 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/helper/ProvisionUtils.java @@ -16,6 +16,7 @@ import hirs.utils.HexUtils; import lombok.extern.log4j.Log4j2; import org.apache.commons.codec.binary.Hex; import org.apache.commons.lang3.ArrayUtils; +import org.bouncycastle.openssl.jcajce.JcaPEMWriter; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; @@ -26,6 +27,8 @@ import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.OAEPParameterSpec; import javax.crypto.spec.PSource; import javax.crypto.spec.SecretKeySpec; +import java.io.IOException; +import java.io.StringWriter; import java.math.BigInteger; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; @@ -138,6 +141,29 @@ public final class ProvisionUtils { } } + /** + * Helper method to extract a PEM encoded certificate from an X509 certificate. + * + * @param certificate the X509 certificate to be converted to PEM encoding + * @throws {@link UnexpectedServerException} if error occurs during encoding retrieval + * @return the string representing the PEM encoded certificate + */ + public static String getPemEncodedCertificate(final X509Certificate certificate) { + try { + final StringWriter stringWriter = new StringWriter(); + final JcaPEMWriter pemWriter = new JcaPEMWriter(stringWriter); + pemWriter.writeObject(certificate); + pemWriter.flush(); + pemWriter.close(); + return stringWriter.toString(); + } catch (IOException ioEx) { + log.error("Error converting certificate to PEM Encoding.", ioEx); + throw new UnexpectedServerException( + "Encountered error while converting X509 Certificate to PEM Encoding: " + + ioEx.getMessage(), ioEx); + } + } + /** * Parse public key from public data segment generated by TPM 2.0. * diff --git a/HIRS_AttestationCAPortal/build.gradle b/HIRS_AttestationCAPortal/build.gradle index cd03df12..310f0834 100644 --- a/HIRS_AttestationCAPortal/build.gradle +++ b/HIRS_AttestationCAPortal/build.gradle @@ -160,8 +160,9 @@ ospackage { requires('mariadb-server', '10.3', GREATER | EQUAL) requires('procps-ng', '3.3.15', GREATER | EQUAL) requires('alternatives', '1.19', GREATER | EQUAL) + requires('hwdata', '0.314', GREATER | EQUAL) // Post Trans stage (Occurs after required app and postInstall stage) - // Note postInstall wont wait forrequired apps + // Note postInstall wont wait for required apps postTrans 'update-alternatives --set java java-17-openjdk.x86_64' postTrans 'firewall-cmd --add-port=8443/tcp --permanent' postTrans 'firewall-cmd --reload' @@ -181,6 +182,7 @@ ospackage { requires('openjdk-17-jdk', '17.0', GREATER | EQUAL) requires('mariadb-server', '10.3', GREATER | EQUAL) requires('curl') + requires('hwdata', '0.314', GREATER | EQUAL) // Install after required packages postInstall 'bash /opt/hirs/aca/scripts/aca/aca_setup.sh -u' postInstall 'bash /opt/hirs/aca/scripts/systemd/aca_enable_service.sh' diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSApplication.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSApplication.java index 6b5cf3fa..06833945 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSApplication.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSApplication.java @@ -7,7 +7,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication //@EnableAutoConfiguration @Log4j2 -public class HIRSApplication {//extends SpringBootServletInitializer { +public class HIRSApplication { + //extends SpringBootServletInitializer { // private static final Logger LOGGER = LogManager.getLogger(HIRSApplication.class); // @Override // protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { @@ -22,7 +23,10 @@ public class HIRSApplication {//extends SpringBootServletInitializer { // appServlet.setLoadOnStartup(1); // } - public static void main(String[] args) { + /** + * @param args + */ + public static void main(final String[] args) { // SpringApplication springApplication = new SpringApplication(HIRSApplication.class); // springApplication.setDefaultProperties(Collections.singletonMap("server.servlet.context-path", // "/portal")); diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSDbInitializer.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSDbInitializer.java index 6619df89..3594a4c5 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSDbInitializer.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSDbInitializer.java @@ -14,6 +14,11 @@ import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatche public class HIRSDbInitializer extends AbstractAnnotationConfigDispatcherServletInitializer implements ServletContextListener { + /** + * Initialize context. + * + * @param servletContextEvent servlet context event. + */ @Override public void contextInitialized(final ServletContextEvent servletContextEvent) { AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(); @@ -35,6 +40,11 @@ public class HIRSDbInitializer extends AbstractAnnotationConfigDispatcherServlet } } + /** + * Retrieves root configuration classes. + * + * @return array of root configuration classes. + */ @Override protected Class[] getRootConfigClasses() { return new Class[] { @@ -42,11 +52,21 @@ public class HIRSDbInitializer extends AbstractAnnotationConfigDispatcherServlet }; } + /** + * Retrieves servlet configuration classes. + * + * @return null + */ @Override protected Class[] getServletConfigClasses() { return null; } + /** + * Retrieves servlet mappings. + * + * @return string array of servlet mappings. + */ @Override protected String[] getServletMappings() { return new String[] { diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/PersistenceJPAConfig.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/PersistenceJPAConfig.java index c2cc0373..ae02253e 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/PersistenceJPAConfig.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/PersistenceJPAConfig.java @@ -80,6 +80,11 @@ public class PersistenceJPAConfig implements WebMvcConfigurer { @Autowired private Environment environment; + /** + * Entity manager factory bean. + * + * @return a local container entity manager factory bean + */ @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory() { final LocalContainerEntityManagerFactoryBean entityManagerBean = @@ -94,6 +99,11 @@ public class PersistenceJPAConfig implements WebMvcConfigurer { return entityManagerBean; } + /** + * Data source bean. + * + * @return a data source + */ @Bean public DataSource dataSource() { final DriverManagerDataSource dataSource = new DriverManagerDataSource(); @@ -213,6 +223,9 @@ public class PersistenceJPAConfig implements WebMvcConfigurer { } } + /** + * @return + */ @Bean public PlatformTransactionManager transactionManager() { final JpaTransactionManager transactionManager = new JpaTransactionManager(); @@ -220,6 +233,9 @@ public class PersistenceJPAConfig implements WebMvcConfigurer { return transactionManager; } + /** + * @return + */ @Bean public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { return new PersistenceExceptionTranslationPostProcessor(); @@ -258,6 +274,11 @@ public class PersistenceJPAConfig implements WebMvcConfigurer { // } + /** + * Configures the default servlet handling. + * + * @param configurer default servlet handler configurer. + */ @Override public void configureDefaultServletHandling(final DefaultServletHandlerConfigurer configurer) { configurer.enable(); diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/Column.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/Column.java index 147fa274..2e8d465d 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/Column.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/Column.java @@ -3,11 +3,11 @@ package hirs.attestationca.portal.datatables; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; -import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import lombok.ToString; /** * Java representation of a jQuery DataTables Column. @@ -15,7 +15,8 @@ import lombok.Setter; @Getter @Setter @AllArgsConstructor -@NoArgsConstructor(access = AccessLevel.PUBLIC) +@NoArgsConstructor +@ToString public class Column { /** @@ -64,14 +65,4 @@ public class Column { this.search.setValue(searchValue); } - @Override - public String toString() { - return "Column{" - + "data='" + data + '\'' - + ", name='" + name + '\'' - + ", searchable=" + searchable - + ", orderable=" + orderable - + ", search=" + search - + '}'; - } } diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/Order.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/Order.java index 4b0a66fe..8aa4abcb 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/Order.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/Order.java @@ -3,19 +3,20 @@ package hirs.attestationca.portal.datatables; import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Pattern; -import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import lombok.ToString; /** - * Represents a column ordering with regards to a jQuery DataTable. + * Represents a column ordering in regard to a jQuery DataTable. */ @Getter @Setter @AllArgsConstructor -@NoArgsConstructor(access = AccessLevel.PUBLIC) +@NoArgsConstructor +@ToString public class Order { @@ -53,18 +54,7 @@ public class Order { * @return true if ascending order, false otherwise. */ public boolean isAscending() { - if (dir.equalsIgnoreCase("asc")) { - return true; - } - return false; - } - - @Override - public String toString() { - return "Order{" - + "column=" + column - + ", dir='" + dir + '\'' - + '}'; + return dir.equalsIgnoreCase("asc"); } } diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/OrderedListQueryDataTableAdapter.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/OrderedListQueryDataTableAdapter.java index dc2fec31..661397f1 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/OrderedListQueryDataTableAdapter.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/OrderedListQueryDataTableAdapter.java @@ -85,7 +85,8 @@ public final class OrderedListQueryDataTableAdapter { filteredRecordsList.setRecordsTotal(dbManager.count()); filteredRecordsList.addAll((Collection) dbManager.findAll()); - filteredRecordsList.setRecordsFiltered(10); + final int recordsFilteredConstant = 10; + filteredRecordsList.setRecordsFiltered(recordsFilteredConstant); return filteredRecordsList; @@ -95,6 +96,16 @@ public final class OrderedListQueryDataTableAdapter { // searchableColumnMap, criteriaModifier); } + /** + * Retrieves an ordered list of reference digest values. + * + * @param dbManager database manager. + * @param dataTableInput data table input. + * @param orderColumnName string representation of the order column name. + * @param criteriaModifier criteria modifier. + * @param entityManager entity manager. + * @return a filtered, ordered records list of the reference digest values + */ public static FilteredRecordsList getOrderedList( final JpaRepository dbManager, final DataTableInput dataTableInput, @@ -127,7 +138,8 @@ public final class OrderedListQueryDataTableAdapter { filteredRecordsList.setRecordsTotal(dbManager.count()); filteredRecordsList.addAll(dbManager.findAll()); - filteredRecordsList.setRecordsFiltered(10); + final int recordsFilteredConstant = 10; + filteredRecordsList.setRecordsFiltered(recordsFilteredConstant); return filteredRecordsList; diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/Search.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/Search.java index f6130bc7..6f961d48 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/Search.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/Search.java @@ -1,11 +1,11 @@ package hirs.attestationca.portal.datatables; import jakarta.validation.constraints.NotNull; -import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import lombok.ToString; /** * Represents a jQuery DataTables search parameter. @@ -13,7 +13,8 @@ import lombok.Setter; @Getter @Setter @AllArgsConstructor -@NoArgsConstructor(access = AccessLevel.PUBLIC) +@NoArgsConstructor +@ToString public class Search { /** @@ -38,13 +39,5 @@ public class Search { public Search(final String value) { this(value, false); } - - @Override - public String toString() { - return "Search{" - + "value='" + value + '\'' - + ", regex=" + regex - + '}'; - } } diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/listener/AnnotationDrivenEndpointsListener.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/listener/AnnotationDrivenEndpointsListener.java index 0a990bd4..57abcc06 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/listener/AnnotationDrivenEndpointsListener.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/listener/AnnotationDrivenEndpointsListener.java @@ -15,8 +15,13 @@ import java.util.Map; @Configuration public class AnnotationDrivenEndpointsListener { + /** + * Annotation Driven Endpoints event listener. + * + * @param event context refreshed event. + */ @EventListener - public void handleContextRefresh(ContextRefreshedEvent event) { + public void handleContextRefresh(final ContextRefreshedEvent event) { ApplicationContext applicationContext = event.getApplicationContext(); RequestMappingHandlerMapping requestMappingHandlerMapping = applicationContext .getBean("requestMappingHandlerMapping", RequestMappingHandlerMapping.class); diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/CertificatePageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/CertificatePageController.java index e4f80364..9db75259 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/CertificatePageController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/CertificatePageController.java @@ -110,6 +110,7 @@ public class CertificatePageController extends PageController { * @param endorsementCredentialRepository the endorsement credential manager * @param issuedCertificateRepository the issued certificate manager * @param caCredentialRepository the ca credential manager + * @param iDevIDCertificateRepository the IDevID certificate repository * @param acaCertificate the ACA's X509 certificate */ @Autowired @@ -255,11 +256,11 @@ public class CertificatePageController extends PageController { public DataTableResponse getTableData( @PathVariable("certificateType") final String certificateType, final DataTableInput input) { - log.debug("Handling list request: " + input); + log.debug("Handling list request: {}", input); // attempt to get the column property based on the order index. String orderColumnName = input.getOrderColumnName(); - log.debug("Ordering on column: " + orderColumnName); + log.debug("Ordering on column: {}", orderColumnName); // check that the alert is not archived and that it is in the specified report CriteriaModifier criteriaModifier = new CriteriaModifier() { @@ -275,9 +276,9 @@ public class CertificatePageController extends PageController { // for getting the device (e.g. device name). // use left join, since device may be null. Query will return all // Certs of this type, whether it has a Device or not (device field may be null) - if (hasDeviceTableToJoin(certificateType)) { -// criteria.createAlias("device", "device", JoinType.LEFT_OUTER_JOIN); - } + // if (hasDeviceTableToJoin(certificateType)) { + // criteria.createAlias("device", "device", JoinType.LEFT_OUTER_JOIN); + //} } }; @@ -305,7 +306,7 @@ public class CertificatePageController extends PageController { if (!records.isEmpty()) { // loop all the platform certificates for (int i = 0; i < records.size(); i++) { - PlatformCredential pc = (PlatformCredential) records.get(i); + PlatformCredential pc = records.get(i); // find the EC using the PC's "holder serial number" associatedEC = this.endorsementCredentialRepository .findBySerialNumber(pc.getHolderSerialNumber()); @@ -525,11 +526,10 @@ public class CertificatePageController extends PageController { // send a 404 error when invalid certificate response.sendError(HttpServletResponse.SC_NOT_FOUND); } else { - StringBuilder fileName = new StringBuilder("filename=\""); - fileName.append(getCertificateClass(certificateType).getSimpleName()); - fileName.append("_"); - fileName.append(certificate.getSerialNumber()); - fileName.append(".cer\""); + String fileName = "filename=\"" + getCertificateClass(certificateType).getSimpleName() + + "_" + + certificate.getSerialNumber() + + ".cer\""; // Set filename for download. response.setHeader("Content-Disposition", "attachment;" + fileName); @@ -727,11 +727,8 @@ public class CertificatePageController extends PageController { * table, false otherwise. */ private boolean hasDeviceTableToJoin(final String certificateType) { - boolean hasDevice = true; + boolean hasDevice = !certificateType.equals(TRUSTCHAIN); // Trust_Chain Credential do not contain the device table to join. - if (certificateType.equals(TRUSTCHAIN)) { - hasDevice = false; - } return hasDevice; } @@ -806,7 +803,7 @@ public class CertificatePageController extends PageController { final String certificateType, final MultipartFile file, final PageMessages messages) { - log.info("Received File of Size: " + file.getSize()); + log.info("Received File of Size: {}", file.getSize()); byte[] fileBytes; String fileName = file.getOriginalFilename(); @@ -936,7 +933,7 @@ public class CertificatePageController extends PageController { return; } } - } /**else { + } /*else { // this is a delta, check if the holder exists. PlatformCredential holderPC = PlatformCredential .select(certificateManager) @@ -953,7 +950,7 @@ public class CertificatePageController extends PageController { LOGGER.error(failMessage); return; } - }**/ + }*/ } this.certificateRepository.save(certificate); diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/DevicePageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/DevicePageController.java index 7d8454bc..56dd1982 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/DevicePageController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/DevicePageController.java @@ -23,8 +23,8 @@ import org.springframework.data.domain.Sort; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; @@ -49,6 +49,15 @@ public class DevicePageController extends PageController { private final EndorsementCredentialRepository endorsementCredentialRepository; private final IssuedCertificateRepository issuedCertificateRepository; + /** + * Device Page Controller constructor. + * + * @param deviceRepository device repository. + * @param certificateRepository certificate repository. + * @param platformCertificateRepository platform certificate repository. + * @param endorsementCredentialRepository endorsement credential repository. + * @param issuedCertificateRepository issued certificate repository. + */ @Autowired public DevicePageController(final DeviceRepository deviceRepository, final CertificateRepository certificateRepository, @@ -63,21 +72,34 @@ public class DevicePageController extends PageController { this.issuedCertificateRepository = issuedCertificateRepository; } + /** + * Initializes page. + * + * @param params The object to map url parameters into. + * @param model The data model for the request. Can contain data from + * redirect. + * @return model and view + */ @Override @RequestMapping public ModelAndView initPage(final NoPageParams params, final Model model) { return getBaseModelAndView(); } + /** + * GET request that retrieves table data using the provided data table input. + * + * @param input data table input. + * @return a data table response + */ @ResponseBody - @RequestMapping(value = "/list", - produces = MediaType.APPLICATION_JSON_VALUE, - method = RequestMethod.GET) + @GetMapping(value = "/list", + produces = MediaType.APPLICATION_JSON_VALUE) public DataTableResponse> getTableData( final DataTableInput input) { log.debug("Handling request for device list"); String orderColumnName = input.getOrderColumnName(); - log.info("Ordering on column: " + orderColumnName); + log.info("Ordering on column: {}", orderColumnName); // get all the devices FilteredRecordsList deviceList = new FilteredRecordsList<>(); diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ErrorController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ErrorController.java index 90391ffd..b3aab1e7 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ErrorController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ErrorController.java @@ -9,8 +9,15 @@ import org.springframework.web.servlet.ModelAndView; @Controller("error") public class ErrorController { + /** + * Handles exceptions based on the provided request and exception. + * + * @param request http servlet request. + * @param ex exception. + * @return model and view + */ @ExceptionHandler(Exception.class) - public ModelAndView handleException(HttpServletRequest request, Exception ex) { + public ModelAndView handleException(final HttpServletRequest request, final Exception ex) { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("exception", ex.getLocalizedMessage()); diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/LombokLoggingController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/LombokLoggingController.java index f1e9bbe8..c4b0b93f 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/LombokLoggingController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/LombokLoggingController.java @@ -8,6 +8,11 @@ import org.springframework.web.bind.annotation.RestController; @Log4j2 public class LombokLoggingController { + /** + * REST endpoint that logs various issues regarding Lombok. + * + * @return a message that indicates there are logs regarding Lombok that should be looked at + */ @RequestMapping("/HIRS_AttestationCAPortal/portal/lombok") public String index() { log.trace("A TRACE Message"); diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestDetailsPageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestDetailsPageController.java index 1c5ca868..0f5393fc 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestDetailsPageController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestDetailsPageController.java @@ -98,10 +98,13 @@ public class ReferenceManifestDetailsPageController * @throws CertificateException if a certificate doesn't parse. */ public static HashMap getRimDetailInfo(final UUID uuid, - final ReferenceManifestRepository referenceManifestRepository, - final ReferenceDigestValueRepository referenceDigestValueRepository, + final ReferenceManifestRepository + referenceManifestRepository, + final ReferenceDigestValueRepository + referenceDigestValueRepository, final CertificateRepository certificateRepository, - final CACredentialRepository caCertificateRepository) + final CACredentialRepository + caCertificateRepository) throws IOException, CertificateException, NoSuchAlgorithmException { HashMap data = new HashMap<>(); @@ -297,7 +300,7 @@ public class ReferenceManifestDetailsPageController * @return list of X509Certificates */ private static List convertCACsToX509Certificates( - Set set) + final Set set) throws IOException { ArrayList certs = new ArrayList<>(set.size()); for (CertificateAuthorityCredential cac : set) { diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestPageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestPageController.java index ed6dfca7..7e885720 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestPageController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestPageController.java @@ -76,8 +76,10 @@ public class ReferenceManifestPageController extends PageController getTableData( @Valid final DataTableInput input) { - log.debug("Handling request for summary list: " + input); + log.debug("Handling request for summary list: {}", input); String orderColumnName = input.getOrderColumnName(); - log.info("Ordering on column: " + orderColumnName); - log.info("Querying with the following dataTableInput: " + input); + log.info("Ordering on column: {}", orderColumnName); + log.info("Querying with the following dataTableInput: {}", input); FilteredRecordsList records = new FilteredRecordsList<>(); int currentPage = input.getStart() / input.getLength(); @@ -136,7 +138,7 @@ public class ReferenceManifestPageController extends PageController(records, input); } @@ -161,7 +163,7 @@ public class ReferenceManifestPageController extends PageController baseRims = new ArrayList<>(); List supportRims = new ArrayList<>(); - log.info(String.format("Processing %s uploaded files", files.length)); + log.info("Processing {} uploaded files", files.length); // loop through the files for (MultipartFile file : files) { @@ -177,20 +179,22 @@ public class ReferenceManifestPageController extends PageController { - log.info(String.format("Storing swidtag %s", rim.getFileName())); + + baseRims.forEach((rim) -> { + log.info("Storing swidtag {}", rim.getFileName()); this.referenceManifestRepository.save(rim); }); - supportRims.stream().forEach((rim) -> { - log.info(String.format("Storing event log %s", rim.getFileName())); + + supportRims.forEach((rim) -> { + log.info("Storing event log {}", rim.getFileName()); this.referenceManifestRepository.save(rim); }); @@ -225,7 +229,7 @@ public class ReferenceManifestPageController extends PageController model = new HashMap<>(); PageMessages messages = new PageMessages(); @@ -270,7 +274,7 @@ public class ReferenceManifestPageController extends PageController componentData : parsedComponents) { JsonObject component = new JsonObject(); component.addProperty("Component name", componentData.get(0)); component.addProperty("Component manufacturer", componentData.get(1)); component.addProperty("Component model", componentData.get(2)); - component.addProperty("Component SN", componentData.get(3)); - component.addProperty("Issuer", componentData.get(4)); - component.addProperty("Component status", componentData.get(5)); + component.addProperty("Component SN", componentData.get(componentDataPosition4)); + component.addProperty("Issuer", componentData.get(componentDataPosition5)); + component.addProperty("Component status", componentData.get(componentDataPosition6)); components.add(component); } systemData.add("Components", components); @@ -410,7 +413,7 @@ public class ValidationReportsPageController extends PageController issuerAndComponent : chainComponents) { ArrayList componentData = new ArrayList(); String issuer = (String) issuerAndComponent.get(0); diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/params/CertificateDetailsPageParams.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/params/CertificateDetailsPageParams.java index c4c07382..7f5a94cc 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/params/CertificateDetailsPageParams.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/params/CertificateDetailsPageParams.java @@ -4,6 +4,7 @@ import hirs.attestationca.portal.page.PageParams; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; +import lombok.ToString; import java.util.LinkedHashMap; @@ -13,6 +14,7 @@ import java.util.LinkedHashMap; @Getter @Setter @AllArgsConstructor +@ToString public class CertificateDetailsPageParams implements PageParams { private String id; @@ -47,13 +49,4 @@ public class CertificateDetailsPageParams implements PageParams { map.put("type", type); return map; } - - @Override - public String toString() { - return "CertificateDetailsPageParams{" - + "id:' " + id + "'," - + "type: " + type - + "}"; - } - } diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/params/ReferenceManifestDetailsPageParams.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/params/ReferenceManifestDetailsPageParams.java index c3cfced2..0acb4eb6 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/params/ReferenceManifestDetailsPageParams.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/params/ReferenceManifestDetailsPageParams.java @@ -5,18 +5,20 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import lombok.ToString; import java.util.LinkedHashMap; /** * URL parameters object for the Reference Manifest Details page and controller. */ +@Setter +@Getter @NoArgsConstructor @AllArgsConstructor +@ToString public class ReferenceManifestDetailsPageParams implements PageParams { - @Getter - @Setter private String id; /** @@ -30,11 +32,4 @@ public class ReferenceManifestDetailsPageParams implements PageParams { map.put("id", id); return map; } - - @Override - public String toString() { - return "ReferenceManifestDetailsPageParams{" - + "id:' " + id - + "}"; - } } diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/utils/CertificateStringMapBuilder.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/utils/CertificateStringMapBuilder.java index 49eefd5e..09ea707c 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/utils/CertificateStringMapBuilder.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/utils/CertificateStringMapBuilder.java @@ -42,8 +42,9 @@ public final class CertificateStringMapBuilder { /** * Returns the general information. * - * @param certificate certificate to get the general information. - * @param certificateRepository the certificate repository for retrieving certs. + * @param certificate certificate to get the general information. + * @param caCertificateRepository CA Certificate repository + * @param certificateRepository the certificate repository for retrieving certs. * @return a hash map with the general certificate information. */ public static HashMap getGeneralCertificateInfo( @@ -145,8 +146,9 @@ public final class CertificateStringMapBuilder { /** * Recursive function that check if all the certificate chain is present. * - * @param certificate certificate to get the issuer - * @param certificateRepository the certificate repository for retrieving certs. + * @param certificate certificate to get the issuer + * @param certificateRepository the certificate repository for retrieving certs. + * @param caCredentialRepository CA Certificate repository * @return a boolean indicating if it has the full chain or not. */ public static Certificate containsAllChain( @@ -163,8 +165,8 @@ public final class CertificateStringMapBuilder { skiCA = caCredentialRepository.findBySubjectKeyIdStringAndArchiveFlag( certificate.getAuthorityKeyIdentifier(), false); } else { - log.error(String.format("Certificate (%s) for %s has no authority key identifier.", - certificate.getClass().toString(), certificate.getSubject())); + log.error("Certificate ({}) for {} has no authority key identifier.", certificate.getClass(), + certificate.getSubject()); } if (skiCA == null) { @@ -207,12 +209,15 @@ public final class CertificateStringMapBuilder { * Returns the Certificate Authority information. * * @param uuid ID for the certificate. - * @param caCertificateRepository the certificate manager for retrieving certs. + * @param certificateRepository the certificate manager for retrieving certs. + * @param caCertificateRepository CA Certificate repository * @return a hash map with the endorsement certificate information. */ - public static HashMap getCertificateAuthorityInformation(final UUID uuid, - final CertificateRepository certificateRepository, - final CACredentialRepository caCertificateRepository) { + public static HashMap + getCertificateAuthorityInformation(final UUID uuid, + final CertificateRepository certificateRepository, + final CACredentialRepository caCertificateRepository) { + if (!caCertificateRepository.existsById(uuid)) { return new HashMap<>(); } @@ -265,13 +270,15 @@ public final class CertificateStringMapBuilder { /** * Returns the endorsement credential information. * - * @param uuid ID for the certificate. - * @param certificateRepository the certificate repository for retrieving certs. + * @param uuid ID for the certificate. + * @param certificateRepository the certificate repository for retrieving certs. + * @param caCertificateRepository CA Certificate repository * @return a hash map with the endorsement certificate information. */ - public static HashMap getEndorsementInformation(final UUID uuid, - final CertificateRepository certificateRepository, - final CACredentialRepository caCertificateRepository) { + public static HashMap getEndorsementInformation( + final UUID uuid, + final CertificateRepository certificateRepository, + final CACredentialRepository caCertificateRepository) { HashMap data = new HashMap<>(); EndorsementCredential certificate = (EndorsementCredential) certificateRepository.getCertificate(uuid); @@ -309,16 +316,21 @@ public final class CertificateStringMapBuilder { /** * Returns the Platform credential information. * - * @param uuid ID for the certificate. - * @param certificateRepository the certificate manager for retrieving certs. + * @param uuid ID for the certificate. + * @param certificateRepository the certificate manager for retrieving certs. + * @param componentResultRepository component result repository. + * @param caCertificateRepository CA credential repository. * @return a hash map with the endorsement certificate information. * @throws IOException when parsing the certificate * @throws IllegalArgumentException invalid argument on parsing the certificate */ public static HashMap getPlatformInformation(final UUID uuid, - final CertificateRepository certificateRepository, - final ComponentResultRepository componentResultRepository, - final CACredentialRepository caCertificateRepository) + final CertificateRepository + certificateRepository, + final ComponentResultRepository + componentResultRepository, + final CACredentialRepository + caCertificateRepository) throws IllegalArgumentException, IOException { HashMap data = new HashMap<>(); PlatformCredential certificate = (PlatformCredential) certificateRepository.getCertificate(uuid); @@ -470,13 +482,16 @@ public final class CertificateStringMapBuilder { /** * Returns the Issued Attestation Certificate information. * - * @param uuid ID for the certificate. - * @param certificateRepository the certificate manager for retrieving certs. + * @param uuid ID for the certificate. + * @param certificateRepository the certificate manager for retrieving certs. + * @param caCredentialRepository CA Credential repository. * @return a hash map with the endorsement certificate information. */ public static HashMap getIssuedInformation(final UUID uuid, - final CertificateRepository certificateRepository, - final CACredentialRepository caCredentialRepository) { + final CertificateRepository + certificateRepository, + final CACredentialRepository + caCredentialRepository) { HashMap data = new HashMap<>(); IssuedAttestationCertificate certificate = (IssuedAttestationCertificate) certificateRepository.getCertificate(uuid); @@ -544,13 +559,16 @@ public final class CertificateStringMapBuilder { /** * Returns the IDevID Certificate information. * - * @param uuid ID for the certificate. - * @param certificateRepository the certificate manager for retrieving certs. + * @param uuid ID for the certificate. + * @param certificateRepository the certificate manager for retrieving certs. + * @param caCredentialRepository CA Credential repository. * @return a hash map with the endorsement certificate information. */ public static HashMap getIdevidInformation(final UUID uuid, - final CertificateRepository certificateRepository, - final CACredentialRepository caCredentialRepository) { + final CertificateRepository + certificateRepository, + final CACredentialRepository + caCredentialRepository) { HashMap data = new HashMap<>(); IDevIDCertificate certificate = (IDevIDCertificate) certificateRepository.getCertificate(uuid); @@ -577,7 +595,8 @@ public final class CertificateStringMapBuilder { if (certificate.hasTCGOIDs()) { if (hwSerialStr.contains(":")) { String[] hwSerialArray = hwSerialStr.split(":"); - if (hwSerialArray.length >= 3) { + final int minArrayLength = 3; + if (hwSerialArray.length >= minArrayLength) { data.put("tcgTpmManufacturer", hwSerialArray[0]); data.put("ekAuthorityKeyIdentifier", hwSerialArray[1]); data.put("ekCertificateSerialNumber", hwSerialArray[2]); @@ -593,7 +612,9 @@ public final class CertificateStringMapBuilder { String hwSerialToAdd = hwSerialStr; // Check if hwSerialNum is a printable ASCII string; default to hex otherwise - if (hwSerialStr.chars().allMatch(c -> c > 0x20 && c <= 0x7F)) { + final int minMatchedNum = 0x20; + final int maxMatchedNum = 0x7F; + if (hwSerialStr.chars().allMatch(c -> c > minMatchedNum && c <= maxMatchedNum)) { data.put("hwSerialNum", hwSerialStr); } else { hwSerialToAdd = Hex.toHexString(certificate.getHwSerialNum()); diff --git a/HIRS_AttestationCAPortal/src/main/resources/application.properties b/HIRS_AttestationCAPortal/src/main/resources/application.properties index cab35cbb..6ea4a85e 100644 --- a/HIRS_AttestationCAPortal/src/main/resources/application.properties +++ b/HIRS_AttestationCAPortal/src/main/resources/application.properties @@ -5,26 +5,22 @@ logging.level.org.springframework.web=ERROR logging.level.org.hibernate=ERROR logging.file.path=/var/log/hirs logging.file.name=HIRS_AttestationCA_Portal.log - # Database Config spring.jpa.hibernate.ddl-auto=update -jakarta.persistence.sharedCache.mode = UNSPECIFIED +jakarta.persistence.sharedCache.mode=UNSPECIFIED spring.datasource.driver-class-name=org.mariadb.jdbc.Driver - # Tomcat Config server.tomcat.additional-tld-skip-patterns=jakarta.persistence-api*.jar, jakarta.xml.bind-api*.jar, txw2*.jar, *commons*.jar, *annotations*.jar, *checker*.jar, *lombok*.jar, *jsr*.jar, *guava*.jar, *access*.jar, *activation*.jar, *bcprov*.jar, *bcmail*.jar, *bcutil*.jar, *bcpkix*.jar, *json*.jar server.tomcat.basedir=/opt/embeddedtomcat server.servlet.register-default-servlet=true server.servlet.context-path=/ spring.mvc.servlet.path=/ - server.tomcat.accesslog.enabled=true server.tomcat.accesslog.directory=/var/log/hirs server.tomcat.accesslog.file-date-format=yyyy-MM-dd server.tomcat.accesslog.prefix=Tomcat_accesslog_ server.tomcat.accesslog.suffix=.log server.tomcat.accesslog.rotate=true - # Tomcat TLS support server.port=8443 server.ssl.enabled=true @@ -36,10 +32,8 @@ server.ssl.key-store=/etc/hirs/certificates/HIRS/KeyStore.jks server.ssl.key-alias=hirs_aca_tls_rsa_3k_sha384 server.ssl.enabled-protocols=TLSv1.2, TLSv1.3 server.ssl.ciphers=TLS_AES_256_GCM_SHA384, ECDHE-ECDSA-AES256-GCM-SHA384, ECDHE-RSA-AES256-GCM-SHA384, DHE-RSA-AES256-GCM-SHA384, AES256-GCM-SHA384 - # ACA specific default properties -aca.certificates.validity = 3652 - +aca.certificates.validity=3652 # Compression settings server.compression.enabled=true # Compression content types diff --git a/HIRS_AttestationCAPortal/src/main/resources/application.win.properties b/HIRS_AttestationCAPortal/src/main/resources/application.win.properties index 968ac61c..322228e1 100644 --- a/HIRS_AttestationCAPortal/src/main/resources/application.win.properties +++ b/HIRS_AttestationCAPortal/src/main/resources/application.win.properties @@ -1,4 +1,3 @@ - # Logging Config (tomcat may have further config) logging.level.org.springframework=ERROR logging.level.org.apache.catalina=ERROR @@ -8,25 +7,23 @@ logging.file.path=C:/ProgramData/hirs/log logging.file.name=hirs.spring.log # Database Config spring.jpa.hibernate.ddl-auto=update -jakarta.persistence.sharedCache.mode = UNSPECIFIED +jakarta.persistence.sharedCache.mode=UNSPECIFIED spring.datasource.driver-class-name=org.mariadb.jdbc.Driver #spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver #spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver -aca.certificates.validity = 3652 +aca.certificates.validity=3652 # Tomcat Config server.tomcat.additional-tld-skip-patterns=jakarta.persistence-api*.jar, jakarta.xml.bind-api*.jar, txw2*.jar, *commons*.jar, *annotations*.jar, *checker*.jar, *lombok*.jar, *jsr*.jar, *guava*.jar, *access*.jar, *activation*.jar, *bcprov*.jar, *bcmail*.jar, *bcutil*.jar, *bcpkix*.jar, *json*.jar server.tomcat.basedir=C:/ProgramData/hirs/embeddedtomcat server.servlet.register-default-servlet=true server.servlet.context-path=/ spring.mvc.servlet.path=/ - server.tomcat.accesslog.enabled=true server.tomcat.accesslog.directory=C:/ProgramData/hirs/log server.tomcat.accesslog.file-date-format=yyyy-MM-dd server.tomcat.accesslog.prefix=Tomcat_accesslog_ server.tomcat.accesslog.suffix=.log server.tomcat.accesslog.rotate=true - # Tomcat TLS support server.port=8443 server.ssl.enabled=true @@ -38,10 +35,8 @@ server.ssl.key-store=C:/ProgramData/hirs/certificates/HIRS/KeyStore.jks server.ssl.key-alias=hirs_aca_tls_rsa_3k_sha384 server.ssl.enabled-protocols=TLSv1.2, TLSv1.3 server.ssl.ciphers=TLS_AES_256_GCM_SHA384, ECDHE-ECDSA-AES256-GCM-SHA384, ECDHE-RSA-AES256-GCM-SHA384, DHE-RSA-AES256-GCM-SHA384, AES256-GCM-SHA384 - #--server.ssl.key-store-password=123456 #--server.ssl.trust-store-password=123456 - #jdbc.driverClassName = com.mysql.cj.jdbc.Driver #jdbc.url = jdbc:mysql://localhost:3306/hirs_db?autoReconnect=true&useSSL=false #jdbc.username = root @@ -49,6 +44,5 @@ server.ssl.ciphers=TLS_AES_256_GCM_SHA384, ECDHE-ECDSA-AES256-GCM-SHA384, ECDHE- #entitymanager.packagesToScan: hirs.attestationca.portal.page.controllers #spring.jpa.hibernate.ddl-auto=update #spring.jpa.show-sql=true - # DB dfault password. #spring.datasource.password=hirs_db diff --git a/HIRS_AttestationCAPortal/src/main/resources/banner.properties b/HIRS_AttestationCAPortal/src/main/resources/banner.properties index 14023f06..173d6e3c 100644 --- a/HIRS_AttestationCAPortal/src/main/resources/banner.properties +++ b/HIRS_AttestationCAPortal/src/main/resources/banner.properties @@ -4,14 +4,11 @@ # color: Indicate the color of the banner # string: String that will be display on the banner # dynamic: Dynamic string to display on the banner - banner.color= banner.string= banner.dynamic= - # Extra content that will be placed at the bottom of the page either on the left or right # side of the page - left.content.1= left.content.2= left.content.3= diff --git a/HIRS_AttestationCAPortal/src/main/resources/hibernate.properties b/HIRS_AttestationCAPortal/src/main/resources/hibernate.properties index e19198d2..4e55fcd2 100644 --- a/HIRS_AttestationCAPortal/src/main/resources/hibernate.properties +++ b/HIRS_AttestationCAPortal/src/main/resources/hibernate.properties @@ -2,9 +2,9 @@ hibernate.connection.url=jdbc:mariadb://localhost:3306/hirs_db?autoReconnect=tru #hibernate.connection.username=hirs_db #hibernate.connection.password=hirs_db hibernate.connection.driver_class=org.mariadb.jdbc.Driver -hibernate.dialect = org.hibernate.dialect.MariaDBDialect -hibernate.show_sql = false -hibernate.format_sql = true -hibernate.hbm2ddl.auto = update +hibernate.dialect=org.hibernate.dialect.MariaDBDialect +hibernate.show_sql=false +hibernate.format_sql=true +hibernate.hbm2ddl.auto=update #https://github.com/spring-projects/spring-data-jpa/issues/2717 -jakarta.persistence.sharedCache.mode = UNSPECIFIED \ No newline at end of file +jakarta.persistence.sharedCache.mode=UNSPECIFIED \ No newline at end of file diff --git a/HIRS_AttestationCAPortal/src/main/resources/portal.properties b/HIRS_AttestationCAPortal/src/main/resources/portal.properties index 3ec20bbe..5fe22171 100644 --- a/HIRS_AttestationCAPortal/src/main/resources/portal.properties +++ b/HIRS_AttestationCAPortal/src/main/resources/portal.properties @@ -10,28 +10,25 @@ # ACA Directories # root: the root directory of ACA related files # certificates: the directory for ACA certificate files -aca.directories.root = /etc/hirs/aca -aca.directories.certificates = ${aca.directories.root}/certificates - +aca.directories.root=/etc/hirs/aca +aca.directories.certificates=${aca.directories.root}/certificates # ACA certificate related properties. These are generic properties that apply to the creation of # any certificate that the ACA is responsible for creating. # validity: the number of days that credentials generated by the ACA are valid. -aca.certificates.validity = 3652 - +aca.certificates.validity=3652 # ACA key store properties # alias: the alias to reference the ACA key and certificate by # location: the absolute path to the ACA key store. # password: key store password -aca.keyStore.alias = HIRS_ACA_KEY -aca.keyStore.location = ${aca.directories.certificates}/keyStore.jks -aca.keyStore.password = - +aca.keyStore.alias=HIRS_ACA_KEY +aca.keyStore.location=${aca.directories.certificates}/keyStore.jks +aca.keyStore.password= # ACA setup/initialization properties. These properties are used exclusively by the ACA # initialization process. Generally these properties do not need to be modified # # keySize: the default key size of the ACA key pair stored within the trust store # subjectName: the CN of the generate X509 certificate # expiration: the number of days that the generated X509 certificate will expire -aca.setup.keyStore.keySize = 2048 -aca.setup.keyStore.subjectName = HIRS_AttestationCA_Endorsement -aca.setup.keyStore.expiration = ${aca.certificates.validity} \ No newline at end of file +aca.setup.keyStore.keySize=2048 +aca.setup.keyStore.subjectName=HIRS_AttestationCA_Endorsement +aca.setup.keyStore.expiration=${aca.certificates.validity} \ No newline at end of file diff --git a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/Readme.md b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/Readme.md index 09c8c8f7..250b83d8 100644 --- a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/Readme.md +++ b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/Readme.md @@ -1,26 +1,35 @@ # DataTables plug-in for jQuery -DataTables is a table enhancing plug-in for the [jQuery](//jquery.com) Javascript library, adding sorting, paging and filtering abilities to plain HTML tables with minimal effort. The stated goal of DataTables is: +DataTables is a table enhancing plug-in for the [jQuery](//jquery.com) Javascript library, adding sorting, paging and +filtering abilities to plain HTML tables with minimal effort. The stated goal of DataTables is: > To enhance the accessibility of data in HTML tables. To meet this goal, DataTables is developed with two distinct groups of users in mind: -* You the developers using DataTables. For developers DataTables provides a wide array of options for how data should be obtained, displayed and acted upon, along with an extensive API for accessing and manipulating the table. - -* End users. For those using the interface DataTables presents, actions to get the most from the information contained in tables, such as sorting and filtering, along with paging and scrolling of the data in table, are easy to use, intuitive and fast. +* You the developers using DataTables. For developers DataTables provides a wide array of options for how data should be + obtained, displayed and acted upon, along with an extensive API for accessing and manipulating the table. +* End users. For those using the interface DataTables presents, actions to get the most from the information contained + in tables, such as sorting and filtering, along with paging and scrolling of the data in table, are easy to use, + intuitive and fast. ## Installing DataTables -To use DataTables, the primary way to obtain the software is to use the [DataTables downloader](//datatables.net/download). You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See the [documentation](//datatables.net/manual/installation) for full details. +To use DataTables, the primary way to obtain the software is to use +the [DataTables downloader](//datatables.net/download). You can also include the individual files from +the [DataTables CDN](//cdn.datatables.net). See the [documentation](//datatables.net/manual/installation) for full +details. ### NPM and Bower -If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built from this repository under the name `datatables.net`. Styling packages for Bootstrap, Foundation and other styling libraries are also available by adding a suffix to the package name. - -Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has details on how to use package managers with DataTables. +If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built +from this repository under the name `datatables.net`. Styling packages for Bootstrap, Foundation and other styling +libraries are also available by adding a suffix to the package name. +Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation +pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has +details on how to use package managers with DataTables. ## Usage @@ -30,7 +39,9 @@ In its simplest case, DataTables can be initialised with a single line of Javasc $('table').dataTable(); ``` -where the jQuery selector is used to obtain a reference to the table you want to enhance with DataTables. Optional configuration parameters can be passed in to DataTables to have it perform certain actions by using a configuration object as the parameter passed in to the DataTables constructor. For example: +where the jQuery selector is used to obtain a reference to the table you want to enhance with DataTables. Optional +configuration parameters can be passed in to DataTables to have it perform certain actions by using a configuration +object as the parameter passed in to the DataTables constructor. For example: ```js $('table').dataTable( { @@ -43,17 +54,18 @@ will disable paging and enable scrolling. A full list of the options available for DataTables are available in the [documentation](//datatables.net). - ## Documentation -Full documentation of the DataTables options, API and plug-in interface are available on the [DataTables web-site](//datatables.net). The site also contains information on the wide variety of plug-ins that are available for DataTables, which can be used to enhance and customise your table even further. - +Full documentation of the DataTables options, API and plug-in interface are available on +the [DataTables web-site](//datatables.net). The site also contains information on the wide variety of plug-ins that are +available for DataTables, which can be used to enhance and customise your table even further. ## Support -Support for DataTables is available through the [DataTables forums](//datatables.net/forums) and [commercial support options](//datatables.net/support) are available. - +Support for DataTables is available through the [DataTables forums](//datatables.net/forums) +and [commercial support options](//datatables.net/support) are available. ## License -DataTables is release under the [MIT license](//datatables.net/license). You are free to use, modify and distribute this software, as long as the copyright header is left intact (specifically the comment block which starts with `/*!`. +DataTables is release under the [MIT license](//datatables.net/license). You are free to use, modify and distribute this +software, as long as the copyright header is left intact (specifically the comment block which starts with `/*!`. diff --git a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/AutoFill/Readme.md b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/AutoFill/Readme.md index d5f8110a..80461694 100644 --- a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/AutoFill/Readme.md +++ b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/AutoFill/Readme.md @@ -1,22 +1,28 @@ # AutoFill -AutoFill adds an Excel data fill like option to a DataTable to click and drag over multiple cells, filling in information over the selected cells and incrementing numbers as needed. - +AutoFill adds an Excel data fill like option to a DataTable to click and drag over multiple cells, filling in +information over the selected cells and incrementing numbers as needed. # Installation -To use AutoFill the best way to obtain the software is to use the [DataTables downloader](//datatables.net/download). You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/autofill/) for full details. +To use AutoFill the best way to obtain the software is to use the [DataTables downloader](//datatables.net/download). +You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See +the [documentation](http://datatables.net/extensions/autofill/) for full details. ## NPM and Bower -If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built from this repository under the name `datatables.net-autofill`. Styling packages for Bootstrap, Foundation and other styling libraries are also available by adding a suffix to the package name. - -Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has details on how to use package managers with DataTables. +If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built +from this repository under the name `datatables.net-autofill`. Styling packages for Bootstrap, Foundation and other +styling libraries are also available by adding a suffix to the package name. +Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation +pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has +details on how to use package managers with DataTables. # Basic usage -AutoFill is initialised using the `autoFill` option in the DataTables constructor. Further options can be specified using this option as an object - see the documentation for details. For example: +AutoFill is initialised using the `autoFill` option in the DataTables constructor. Further options can be specified +using this option as an object - see the documentation for details. For example: ```js $(document).ready( function () { @@ -26,14 +32,13 @@ $(document).ready( function () { } ); ``` - # Documentation / support * [Documentation](https://datatables.net/extensions/autofill/) * [DataTables support forums](http://datatables.net/forums) - # GitHub -If you fancy getting involved with the development of AutoFill and help make it better, please refer to its [GitHub repo](https://github.com/DataTables/AutoFill) +If you fancy getting involved with the development of AutoFill and help make it better, please refer to +its [GitHub repo](https://github.com/DataTables/AutoFill) diff --git a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/Buttons/Readme.md b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/Buttons/Readme.md index e418a2c8..8b0918f8 100644 --- a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/Buttons/Readme.md +++ b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/Buttons/Readme.md @@ -1,22 +1,30 @@ # Buttons -The Buttons extension for DataTables provides a common set of options, API methods and styling to display buttons on a page that will interact with a DataTable. Modules are also provided for data export, printing and column visibility control. - +The Buttons extension for DataTables provides a common set of options, API methods and styling to display buttons on a +page that will interact with a DataTable. Modules are also provided for data export, printing and column visibility +control. # Installation -To use Buttons the primary way to obtain the software is to use the [DataTables downloader](//datatables.net/download). You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/buttons/) for full details. +To use Buttons the primary way to obtain the software is to use the [DataTables downloader](//datatables.net/download). +You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See +the [documentation](http://datatables.net/extensions/buttons/) for full details. ## NPM and Bower -If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built from this repository under the name `datatables.net-buttons`. Styling packages for Bootstrap, Foundation and other styling libraries are also available by adding a suffix to the package name. - -Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has details on how to use package managers with DataTables. +If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built +from this repository under the name `datatables.net-buttons`. Styling packages for Bootstrap, Foundation and other +styling libraries are also available by adding a suffix to the package name. +Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation +pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has +details on how to use package managers with DataTables. # Basic usage -Buttons is initialised using the `buttons` option in the DataTables constructor, giving an array of the buttons that should be shown. Further options can be specified using this option as an object - see the documentation for details. For example: +Buttons is initialised using the `buttons` option in the DataTables constructor, giving an array of the buttons that +should be shown. Further options can be specified using this option as an object - see the documentation for details. +For example: ```js $(document).ready( function () { @@ -26,14 +34,13 @@ $(document).ready( function () { } ); ``` - # Documentation / support * [Documentation](https://datatables.net/extensions/buttons/) * [DataTables support forums](http://datatables.net/forums) - # GitHub -If you fancy getting involved with the development of Buttons and help make it better, please refer to its [GitHub repo](https://github.com/DataTables/Buttons) +If you fancy getting involved with the development of Buttons and help make it better, please refer to +its [GitHub repo](https://github.com/DataTables/Buttons) diff --git a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/ColReorder/Readme.md b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/ColReorder/Readme.md index f99171aa..02d9a4bf 100644 --- a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/ColReorder/Readme.md +++ b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/ColReorder/Readme.md @@ -1,22 +1,29 @@ # ColReorder -ColReorder adds the ability for the end user to click and drag column headers to reorder a table as they see fit, to DataTables. See the [documentation](http://datatables.net/extensions/colreorder/) for full details. - +ColReorder adds the ability for the end user to click and drag column headers to reorder a table as they see fit, to +DataTables. See the [documentation](http://datatables.net/extensions/colreorder/) for full details. # Installation -To use ColReorder the primary way to obtain the software is to use the [DataTables downloader](//datatables.net/download). You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/colreorder/) for full details. +To use ColReorder the primary way to obtain the software is to use +the [DataTables downloader](//datatables.net/download). You can also include the individual files from +the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/colreorder/) for +full details. ## NPM and Bower -If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built from this repository under the name `datatables.net-colreorder`. Styling packages for Bootstrap, Foundation and other styling libraries are also available by adding a suffix to the package name. - -Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has details on how to use package managers with DataTables. +If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built +from this repository under the name `datatables.net-colreorder`. Styling packages for Bootstrap, Foundation and other +styling libraries are also available by adding a suffix to the package name. +Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation +pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has +details on how to use package managers with DataTables. # Basic usage -ColReorder is initialised using the `colReorder` option in the DataTables constructor - a simple boolean `true` will enable the feature. Further options can be specified using this option as an object - see the documentation for details. +ColReorder is initialised using the `colReorder` option in the DataTables constructor - a simple boolean `true` will +enable the feature. Further options can be specified using this option as an object - see the documentation for details. Example: @@ -28,7 +35,6 @@ $(document).ready( function () { } ); ``` - # Documentation / support * [Documentation](https://datatables.net/extensions/colreorder/) diff --git a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/FixedColumns/Readme.md b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/FixedColumns/Readme.md index d51f7eb3..6015f253 100644 --- a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/FixedColumns/Readme.md +++ b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/FixedColumns/Readme.md @@ -1,22 +1,31 @@ # FixedColumns -When making use of DataTables' x-axis scrolling feature (`scrollX`), you may wish to fix the left or right most columns in place. This extension for DataTables provides exactly this option (for non-scrolling tables, please use the FixedHeader extension, which can fix the header and footer). - +When making use of DataTables' x-axis scrolling feature (`scrollX`), you may wish to fix the left or right most columns +in place. This extension for DataTables provides exactly this option (for non-scrolling tables, please use the +FixedHeader extension, which can fix the header and footer). # Installation -To use FixedColumns the primary way to obtain the software is to use the [DataTables downloader](//datatables.net/download). You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/fixedcolumns/) for full details. +To use FixedColumns the primary way to obtain the software is to use +the [DataTables downloader](//datatables.net/download). You can also include the individual files from +the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/fixedcolumns/) for +full details. ## NPM and Bower -If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built from this repository under the name `datatables.net-fixedcolumns`. Styling packages for Bootstrap, Foundation and other styling libraries are also available by adding a suffix to the package name. - -Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has details on how to use package managers with DataTables. +If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built +from this repository under the name `datatables.net-fixedcolumns`. Styling packages for Bootstrap, Foundation and other +styling libraries are also available by adding a suffix to the package name. +Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation +pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has +details on how to use package managers with DataTables. # Basic usage -FixedColumns is initialised using the `fixedColumns` option in the DataTables constructor - a simple boolean `true` will enable the feature. Further options can be specified using this option as an object - see the documentation for details. DataTables' scrolling options should also be enabled to use this feature. +FixedColumns is initialised using the `fixedColumns` option in the DataTables constructor - a simple boolean `true` will +enable the feature. Further options can be specified using this option as an object - see the documentation for details. +DataTables' scrolling options should also be enabled to use this feature. Example: @@ -32,13 +41,12 @@ $(document).ready(function() { } ); ``` - # Documentation / support * [Documentation](https://datatables.net/extensions/fixedcolumns/) * [DataTables support forums](http://datatables.net/forums) - # GitHub -If you fancy getting involved with the development of FixedColumns and help make it better, please refer to its [GitHub repo](https://github.com/DataTables/FixedColumns). +If you fancy getting involved with the development of FixedColumns and help make it better, please refer to +its [GitHub repo](https://github.com/DataTables/FixedColumns). diff --git a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/FixedHeader/Readme.md b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/FixedHeader/Readme.md index 28dbd752..0ba7b85c 100644 --- a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/FixedHeader/Readme.md +++ b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/FixedHeader/Readme.md @@ -1,22 +1,29 @@ # FixedHeader -The FixedHeader plug-in will freeze in place the header, footer and left and/or right most columns in a DataTable, ensuring that title information will remain always visible. - +The FixedHeader plug-in will freeze in place the header, footer and left and/or right most columns in a DataTable, +ensuring that title information will remain always visible. # Installation -To use FixedHeader the primary way to obtain the software is to use the [DataTables downloader](//datatables.net/download). You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/fixedheader/) for full details. +To use FixedHeader the primary way to obtain the software is to use +the [DataTables downloader](//datatables.net/download). You can also include the individual files from +the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/fixedheader/) for +full details. ## NPM and Bower -If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built from this repository under the name `datatables.net-fixedheader`. Styling packages for Bootstrap, Foundation and other styling libraries are also available by adding a suffix to the package name. - -Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has details on how to use package managers with DataTables. +If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built +from this repository under the name `datatables.net-fixedheader`. Styling packages for Bootstrap, Foundation and other +styling libraries are also available by adding a suffix to the package name. +Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation +pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has +details on how to use package managers with DataTables. # Basic usage -FixedHeader is initialised using the `fixedHeader` option in the DataTables constructor - a simple boolean `true` will enable the feature. Further options can be specified using this option as an object - see the documentation for details. +FixedHeader is initialised using the `fixedHeader` option in the DataTables constructor - a simple boolean `true` will +enable the feature. Further options can be specified using this option as an object - see the documentation for details. Example: @@ -28,14 +35,13 @@ $(document).ready( function () { } ); ``` - # Documentation / support * [Documentation](https://datatables.net/extensions/fixedheader/) * [DataTables support forums](http://datatables.net/forums) - # GitHub -If you fancy getting involved with the development of FixedHeader and help make it better, please refer to its [GitHub repo](https://github.com/DataTables/FixedHeader). +If you fancy getting involved with the development of FixedHeader and help make it better, please refer to +its [GitHub repo](https://github.com/DataTables/FixedHeader). diff --git a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/KeyTable/Readme.md b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/KeyTable/Readme.md index ca9a26c5..79243e3b 100644 --- a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/KeyTable/Readme.md +++ b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/KeyTable/Readme.md @@ -1,22 +1,28 @@ # KeyTable -KeyTable provides Excel like cell navigation on any table. Events (focus, blur, action etc) can be assigned to individual cells, columns, rows or all cells. - +KeyTable provides Excel like cell navigation on any table. Events (focus, blur, action etc) can be assigned to +individual cells, columns, rows or all cells. # Installation -To use KeyTable the primary way to obtain the software is to use the [DataTables downloader](//datatables.net/download). You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/keytable/) for full details. +To use KeyTable the primary way to obtain the software is to use the [DataTables downloader](//datatables.net/download). +You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See +the [documentation](http://datatables.net/extensions/keytable/) for full details. ## NPM and Bower -If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built from this repository under the name `datatables.net-keytable`. Styling packages for Bootstrap, Foundation and other styling libraries are also available by adding a suffix to the package name. - -Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has details on how to use package managers with DataTables. +If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built +from this repository under the name `datatables.net-keytable`. Styling packages for Bootstrap, Foundation and other +styling libraries are also available by adding a suffix to the package name. +Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation +pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has +details on how to use package managers with DataTables. # Basic usage -KeyTable is initialised using the `keys` option in the DataTables constructor - a simple boolean `true` will enable the feature. Further options can be specified using this option as an object - see the documentation for details. +KeyTable is initialised using the `keys` option in the DataTables constructor - a simple boolean `true` will enable the +feature. Further options can be specified using this option as an object - see the documentation for details. ```js $(document).ready( function () { @@ -26,14 +32,13 @@ $(document).ready( function () { } ); ``` - # Documentation / support * [Documentation](https://datatables.net/extensions/keytable/) * [DataTables support forums](http://datatables.net/forums) - # GitHub -If you fancy getting involved with the development of KeyTable and help make it better, please refer to its [GitHub repo](https://github.com/DataTables/KeyTable). +If you fancy getting involved with the development of KeyTable and help make it better, please refer to +its [GitHub repo](https://github.com/DataTables/KeyTable). diff --git a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/Responsive/Readme.md b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/Responsive/Readme.md index 4bf8ee94..fb29bfb9 100644 --- a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/Responsive/Readme.md +++ b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/Responsive/Readme.md @@ -1,22 +1,29 @@ # Responsive -Responsive will automatically optimise the table's layout for different screen sizes through the dynamic column visibility control, making your tables useful on desktop and mobile screens. - +Responsive will automatically optimise the table's layout for different screen sizes through the dynamic column +visibility control, making your tables useful on desktop and mobile screens. # Installation -To use Responsive the primary way to obtain the software is to use the [DataTables downloader](//datatables.net/download). You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/responsive/) for full details. +To use Responsive the primary way to obtain the software is to use +the [DataTables downloader](//datatables.net/download). You can also include the individual files from +the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/responsive/) for +full details. ## NPM and Bower -If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built from this repository under the name `datatables.net-responsive`. Styling packages for Bootstrap, Foundation and other styling libraries are also available by adding a suffix to the package name. - -Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has details on how to use package managers with DataTables. +If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built +from this repository under the name `datatables.net-responsive`. Styling packages for Bootstrap, Foundation and other +styling libraries are also available by adding a suffix to the package name. +Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation +pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has +details on how to use package managers with DataTables. # Basic usage -Responsive is initialised using the `responsive` option in the DataTables constructor - a simple boolean `true` will enable the feature. Further options can be specified using this option as an object - see the documentation for details. +Responsive is initialised using the `responsive` option in the DataTables constructor - a simple boolean `true` will +enable the feature. Further options can be specified using this option as an object - see the documentation for details. Example: @@ -28,14 +35,13 @@ $(document).ready( function () { } ); ``` - # Documentation / support * [Documentation](https://datatables.net/extensions/responsive/) * [DataTables support forums](http://datatables.net/forums) - # GitHub -If you fancy getting involved with the development of Responsive and help make it better, please refer to its [GitHub repo](https://github.com/DataTables/Responsive). +If you fancy getting involved with the development of Responsive and help make it better, please refer to +its [GitHub repo](https://github.com/DataTables/Responsive). diff --git a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/RowReorder/Readme.md b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/RowReorder/Readme.md index 8ffa0e6f..734d5d6c 100644 --- a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/RowReorder/Readme.md +++ b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/RowReorder/Readme.md @@ -1,22 +1,30 @@ # RowReorder -RowReorder adds the ability for rows in a DataTable to be reordered through user interaction with the table (click and drag / touch and drag). Integration with Editor's multi-row editing feature is also available to update rows immediately. - +RowReorder adds the ability for rows in a DataTable to be reordered through user interaction with the table (click and +drag / touch and drag). Integration with Editor's multi-row editing feature is also available to update rows +immediately. # Installation -To use RowReorder the primary way to obtain the software is to use the [DataTables downloader](//datatables.net/download). You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/rowreorder/) for full details. +To use RowReorder the primary way to obtain the software is to use +the [DataTables downloader](//datatables.net/download). You can also include the individual files from +the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/rowreorder/) for +full details. ## NPM and Bower -If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built from this repository under the name `datatables.net-rowreorder`. Styling packages for Bootstrap, Foundation and other styling libraries are also available by adding a suffix to the package name. - -Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has details on how to use package managers with DataTables. +If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built +from this repository under the name `datatables.net-rowreorder`. Styling packages for Bootstrap, Foundation and other +styling libraries are also available by adding a suffix to the package name. +Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation +pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has +details on how to use package managers with DataTables. # Basic usage -RowReorder is initialised using the `rowReorder` option in the DataTables constructor - a simple boolean `true` will enable the feature. Further options can be specified using this option as an object - see the documentation for details. +RowReorder is initialised using the `rowReorder` option in the DataTables constructor - a simple boolean `true` will +enable the feature. Further options can be specified using this option as an object - see the documentation for details. Example: @@ -28,14 +36,13 @@ $(document).ready( function () { } ); ``` - # Documentation / support * [Documentation](https://datatables.net/extensions/rowreorder/) * [DataTables support forums](http://datatables.net/forums) - # GitHub -If you fancy getting involved with the development of RowReorder and help make it better, please refer to its [GitHub repo](https://github.com/DataTables/RowReorder). +If you fancy getting involved with the development of RowReorder and help make it better, please refer to +its [GitHub repo](https://github.com/DataTables/RowReorder). diff --git a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/Scroller/Readme.md b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/Scroller/Readme.md index 828c73de..25859e67 100644 --- a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/Scroller/Readme.md +++ b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/Scroller/Readme.md @@ -1,6 +1,11 @@ # Scroller -Scroller is a virtual rendering plug-in for DataTables which allows large datasets to be drawn on screen every quickly. What the virtual rendering means is that only the visible portion of the table (and a bit to either side to make the scrolling smooth) is drawn, while the scrolling container gives the visual impression that the whole table is visible. This is done by making use of the pagination abilities of DataTables and moving the table around in the scrolling container DataTables adds to the page. The scrolling container is forced to the height it would be for the full table display using an extra element. +Scroller is a virtual rendering plug-in for DataTables which allows large datasets to be drawn on screen every quickly. +What the virtual rendering means is that only the visible portion of the table (and a bit to either side to make the +scrolling smooth) is drawn, while the scrolling container gives the visual impression that the whole table is visible. +This is done by making use of the pagination abilities of DataTables and moving the table around in the scrolling +container DataTables adds to the page. The scrolling container is forced to the height it would be for the full table +display using an extra element. Key features include: @@ -10,21 +15,26 @@ Key features include: * Support for scrolling with millions of rows * Easy to use - # Installation -To use Scroller the primary way to obtain the software is to use the [DataTables downloader](//datatables.net/download). You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/scroller/) for full details. +To use Scroller the primary way to obtain the software is to use the [DataTables downloader](//datatables.net/download). +You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See +the [documentation](http://datatables.net/extensions/scroller/) for full details. ## NPM and Bower -If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built from this repository under the name `datatables.net-scroller`. Styling packages for Bootstrap, Foundation and other styling libraries are also available by adding a suffix to the package name. - -Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has details on how to use package managers with DataTables. +If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built +from this repository under the name `datatables.net-scroller`. Styling packages for Bootstrap, Foundation and other +styling libraries are also available by adding a suffix to the package name. +Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation +pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has +details on how to use package managers with DataTables. # Basic usage -Scroller is initialised using the `scroller` option in the DataTables constructor - a simple boolean `true` will enable the feature. Further options can be specified using this option as an object - see the documentation for details. +Scroller is initialised using the `scroller` option in the DataTables constructor - a simple boolean `true` will enable +the feature. Further options can be specified using this option as an object - see the documentation for details. ```js $(document).ready( function () { @@ -34,16 +44,17 @@ $(document).ready( function () { } ); ``` -Note that rows in the table must all be the same height. Information in a cell which expands on to multiple lines will cause some odd behaviour in the scrolling. Additionally, the table's `cellspacing` parameter must be set to 0, again to ensure the information display is correct. - +Note that rows in the table must all be the same height. Information in a cell which expands on to multiple lines will +cause some odd behaviour in the scrolling. Additionally, the table's `cellspacing` parameter must be set to 0, again to +ensure the information display is correct. # Documentation / support * [Documentation](https://datatables.net/extensions/scroller/) * [DataTables support forums](http://datatables.net/forums) - # GitHub -If you fancy getting involved with the development of Scroller and help make it better, please refer to its [GitHub repo](https://github.com/DataTables/Scroller) +If you fancy getting involved with the development of Scroller and help make it better, please refer to +its [GitHub repo](https://github.com/DataTables/Scroller) diff --git a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/Select/Readme.md b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/Select/Readme.md index 4d690da9..6a9f0767 100644 --- a/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/Select/Readme.md +++ b/HIRS_AttestationCAPortal/src/main/webapp/lib/jquery.dataTables-1.10.13/extensions/Select/Readme.md @@ -1,22 +1,29 @@ # Select -Select adds item selection capabilities to a DataTable. Items can be rows, columns or cells, which can be selected independently, or together. Item selection can be particularly useful in interactive tables where users can perform some action on the table such as editing. - +Select adds item selection capabilities to a DataTable. Items can be rows, columns or cells, which can be selected +independently, or together. Item selection can be particularly useful in interactive tables where users can perform some +action on the table such as editing. # Installation -To use Select the primary way to obtain the software is to use the [DataTables downloader](//datatables.net/download). You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/select/) for full details. +To use Select the primary way to obtain the software is to use the [DataTables downloader](//datatables.net/download). +You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See +the [documentation](http://datatables.net/extensions/select/) for full details. ## NPM and Bower -If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built from this repository under the name `datatables.net-select`. Styling packages for Bootstrap, Foundation and other styling libraries are also available by adding a suffix to the package name. - -Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has details on how to use package managers with DataTables. +If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built +from this repository under the name `datatables.net-select`. Styling packages for Bootstrap, Foundation and other +styling libraries are also available by adding a suffix to the package name. +Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation +pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has +details on how to use package managers with DataTables. # Basic usage -Select is initialised using the `select` option in the DataTables constructor - a simple boolean `true` will enable the feature. Further options can be specified using this option as an object - see the documentation for details. +Select is initialised using the `select` option in the DataTables constructor - a simple boolean `true` will enable the +feature. Further options can be specified using this option as an object - see the documentation for details. Example: @@ -28,14 +35,13 @@ $(document).ready( function () { } ); ``` - # Documentation / support * [Documentation](https://datatables.net/extensions/select/) * [DataTables support forums](http://datatables.net/forums) - # GitHub -If you fancy getting involved with the development of Select and help make it better, please refer to its [GitHub repo](https://github.com/DataTables/Select). +If you fancy getting involved with the development of Select and help make it better, please refer to +its [GitHub repo](https://github.com/DataTables/Select). diff --git a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/PageControllerTest.java b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/PageControllerTest.java index 84da755e..b320cc74 100644 --- a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/PageControllerTest.java +++ b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/PageControllerTest.java @@ -182,7 +182,7 @@ public abstract class PageControllerTest { /** * Create page path (add pre-prefix and prefix path). * - * @return + * @return the page path */ public String getPagePath() { String pagePath = PRE_PREFIX_PATH + page.getPrefixPath() + page.getViewName(); diff --git a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/PageTestConfiguration.java b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/PageTestConfiguration.java index 20c6a009..46bb3900 100644 --- a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/PageTestConfiguration.java +++ b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/PageTestConfiguration.java @@ -125,8 +125,8 @@ public class PageTestConfiguration { public PrivateKey privateKey() { try { KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance("RSA"); - PrivateKey dummy_privKey = keyGenerator.generateKeyPair().getPrivate(); - return dummy_privKey; + PrivateKey dummyPrivKey = keyGenerator.generateKeyPair().getPrivate(); + return dummyPrivKey; } catch (GeneralSecurityException e) { throw new AssertionError(e); } @@ -140,10 +140,10 @@ public class PageTestConfiguration { public KeyStore keyStore() { // attempt to create the key store. if that fails, print a message before failing. try { - KeyStore dummy_keyStore = KeyStore.getInstance("JKS"); - dummy_keyStore.load(null); + KeyStore dummyKeyStore = KeyStore.getInstance("JKS"); + dummyKeyStore.load(null); - return dummy_keyStore; + return dummyKeyStore; } catch (Exception ex) { System.out.println("\nEncountered error while creating a fake (blank) key store for testing"); throw new BeanInitializationException(ex.getMessage(), ex); diff --git a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/CertificateDetailsPageControllerTest.java b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/CertificateDetailsPageControllerTest.java index 88c84551..57e290a5 100644 --- a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/CertificateDetailsPageControllerTest.java +++ b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/CertificateDetailsPageControllerTest.java @@ -299,7 +299,8 @@ public class CertificateDetailsPageControllerTest extends PageControllerTest { // Check component identifier assertNotNull(initialData.get("componentsIdentifier")); List obj = (List) initialData.get("componentsIdentifier"); - assertEquals(7, obj.size()); + final int expectedSize = 7; + assertEquals(expectedSize, obj.size()); // Check platform properties assertNotNull(initialData.get("platformProperties")); @@ -338,7 +339,8 @@ public class CertificateDetailsPageControllerTest extends PageControllerTest { // Check component identifier assertNotNull(initialData.get("componentsIdentifier")); List obj = (List) initialData.get("componentsIdentifier"); - assertEquals(14, obj.size()); + final int expectedSize = 14; + assertEquals(expectedSize, obj.size()); // Check platform properties assertNotNull(initialData.get("platformProperties")); diff --git a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/PlatformCredentialsPageControllerTest.java b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/PlatformCredentialsPageControllerTest.java index 751c4380..a48e0ea1 100644 --- a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/PlatformCredentialsPageControllerTest.java +++ b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/PlatformCredentialsPageControllerTest.java @@ -129,6 +129,7 @@ public class PlatformCredentialsPageControllerTest extends PageControllerTest { /** * Archives test cert that is in db by setting the archive flag. * + * @param cert certificate. * @throws Exception if an exception occurs */ private void archiveTestCert(final Certificate cert) throws Exception { diff --git a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/PolicyPageControllerTest.java b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/PolicyPageControllerTest.java index 3b5a0978..2033a3b9 100644 --- a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/PolicyPageControllerTest.java +++ b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/PolicyPageControllerTest.java @@ -33,7 +33,8 @@ public class PolicyPageControllerTest extends PageControllerTest { @Autowired private PolicyRepository policyRepository; - // Policy refers to the settings such as whether to validate endorsement credentials, platform credentials, etc + // Policy refers to the settings such as whether to validate endorsement credentials, platform credentials + // , etc private PolicySettings policy; /** @@ -102,7 +103,7 @@ public class PolicyPageControllerTest extends PageControllerTest { ResultActions actions; //init the database - setPolicy_AllFalse(); + setPolicyAllToFalse(); policyRepository.save(policy); // perform the mock request @@ -133,7 +134,7 @@ public class PolicyPageControllerTest extends PageControllerTest { ResultActions actions; //init the database - setPolicy_AllFalse(); + setPolicyAllToFalse(); policy.setEcValidationEnabled(true); policyRepository.save(policy); @@ -188,7 +189,7 @@ public class PolicyPageControllerTest extends PageControllerTest { ResultActions actions; //init the database - setPolicy_AllFalse(); + setPolicyAllToFalse(); policy.setEcValidationEnabled(true); policyRepository.save(policy); @@ -243,8 +244,8 @@ public class PolicyPageControllerTest extends PageControllerTest { ResultActions actions; //init the database - setPolicy_AllFalse(); - setPolicy_PcToTrue(); + setPolicyAllToFalse(); + setPolicyPcToTrue(); policyRepository.save(policy); // perform the mock request @@ -298,8 +299,8 @@ public class PolicyPageControllerTest extends PageControllerTest { ResultActions actions; //init the database - setPolicy_AllFalse(); - setPolicy_PcToTrue(); + setPolicyAllToFalse(); + setPolicyPcToTrue(); policyRepository.save(policy); // perform the mock request @@ -352,8 +353,8 @@ public class PolicyPageControllerTest extends PageControllerTest { ResultActions actions; - setPolicy_AllFalse(); - setPolicy_PcAttributeToTrue(); + setPolicyAllToFalse(); + setPolicyPcAttributeToTrue(); policyRepository.save(policy); // perform the mock request @@ -377,7 +378,7 @@ public class PolicyPageControllerTest extends PageControllerTest { * Helper function to set policy member variable back to all false. * After this function, can set specific values to true and then need to save policy. */ - private void setPolicy_AllFalse() { + private void setPolicyAllToFalse() { policy.setEcValidationEnabled(false); policy.setPcValidationEnabled(false); policy.setPcAttributeValidationEnabled(false); @@ -388,7 +389,7 @@ public class PolicyPageControllerTest extends PageControllerTest { * Helper function to set policy member variable - PC Validation to True * Note: to set PC Validation to true, EC Validation must also be true. */ - private void setPolicy_PcToTrue() { + private void setPolicyPcToTrue() { policy.setEcValidationEnabled(true); policy.setPcValidationEnabled(true); } @@ -397,8 +398,8 @@ public class PolicyPageControllerTest extends PageControllerTest { * Helper function to set policy member variable - PC Attribute Validation to True * Note: to set PC Attribute Validation to true, PC Validation must also be true. */ - private void setPolicy_PcAttributeToTrue() { - setPolicy_PcToTrue(); + private void setPolicyPcAttributeToTrue() { + setPolicyPcToTrue(); policy.setPcAttributeValidationEnabled(true); } } diff --git a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/TrustChainManagementPageControllerTest.java b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/TrustChainManagementPageControllerTest.java index 89c949e0..b16f08c5 100644 --- a/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/TrustChainManagementPageControllerTest.java +++ b/HIRS_AttestationCAPortal/src/test/java/hirs/attestationca/portal/page/controllers/TrustChainManagementPageControllerTest.java @@ -129,9 +129,9 @@ public class TrustChainManagementPageControllerTest extends PageControllerTest { Certificate cert = uploadTestCert(); - String fileName = "attachment;filename=\"" + "CertificateAuthorityCredential_" + - cert.getSerialNumber() + - ".cer\""; + String fileName = "attachment;filename=\"" + "CertificateAuthorityCredential_" + + cert.getSerialNumber() + + ".cer\""; // verify cert file attachment and content getMockMvc() @@ -202,6 +202,7 @@ public class TrustChainManagementPageControllerTest extends PageControllerTest { /** * Archives test cert that is in db by setting the archive flag. * + * @param cert certificate. * @throws Exception if an exception occurs */ private void archiveTestCert(final Certificate cert) throws Exception { diff --git a/HIRS_AttestationCAPortal/src/test/resources/application-test.properties b/HIRS_AttestationCAPortal/src/test/resources/application-test.properties index 9b1aa18d..de82685e 100644 --- a/HIRS_AttestationCAPortal/src/test/resources/application-test.properties +++ b/HIRS_AttestationCAPortal/src/test/resources/application-test.properties @@ -1,6 +1,5 @@ # need to override beans in PersistenceJPAConfig spring.main.allow-bean-definition-overriding=true - # need to override properties in application.properties and hibernate.properties -hibernate.dialect = org.hibernate.dialect.HSQLDialect -hibernate.hbm2ddl.auto = create \ No newline at end of file +hibernate.dialect=org.hibernate.dialect.HSQLDialect +hibernate.hbm2ddl.auto=create \ No newline at end of file diff --git a/HIRS_Provisioner.NET/hirs/Resources/ProvisionerTpm2.proto b/HIRS_Provisioner.NET/hirs/Resources/ProvisionerTpm2.proto index 53e12525..7e11e11d 100644 --- a/HIRS_Provisioner.NET/hirs/Resources/ProvisionerTpm2.proto +++ b/HIRS_Provisioner.NET/hirs/Resources/ProvisionerTpm2.proto @@ -95,8 +95,8 @@ message CertificateRequest { } message CertificateResponse { - optional bytes certificate = 1; + optional string certificate = 1; optional ResponseStatus status = 2 [default = FAIL]; - optional bytes ldevidCertificate = 3; + optional string ldevidCertificate = 3; } diff --git a/HIRS_Provisioner.NET/hirs/src/provisioner/Provisioner.cs b/HIRS_Provisioner.NET/hirs/src/provisioner/Provisioner.cs index 065244e7..1aba17d8 100644 --- a/HIRS_Provisioner.NET/hirs/src/provisioner/Provisioner.cs +++ b/HIRS_Provisioner.NET/hirs/src/provisioner/Provisioner.cs @@ -297,7 +297,7 @@ namespace hirs { tpm.GetQuote(CommandTpm.DefaultAkHandle, Tpm2Lib.TpmAlgId.Sha256, recoveredSecret, out CommandTpmQuoteResponse ctqr, selectPcrs); Log.Information("----> Nonce successfully decrypted. Sending attestation certificate request"); CertificateRequest akCertReq = acaClient.CreateAkCertificateRequest(recoveredSecret, ctqr); - byte[] certificate; + string certificate; Log.Debug("Communicate certificate request to the ACA."); CertificateResponse cr = await acaClient.PostCertificateRequest(akCertReq); Log.Debug("Response received from the ACA regarding the certificate request."); @@ -311,34 +311,34 @@ namespace hirs { } } if (cr.HasCertificate) { - certificate = cr.Certificate.ToByteArray(); // contains certificate + certificate = cr.Certificate.ToString(); // contains certificate String certificateDirPath = settings.certificate_output_directory; if (certificateDirPath != null) { String certificateFilePath = FormatCertificatePath(dv, certificateDirPath, DefaultAKCertFileName); try { - File.WriteAllBytes(certificateFilePath, certificate); + File.WriteAllText(certificateFilePath, certificate); Log.Debug("Attestation key certificate written to local file system: {0}", certificateFilePath); } catch (Exception) { Log.Debug("Failed to write attestation key certificate to local file system."); } } - Log.Debug("Printing attestation key certificate: " + BitConverter.ToString(certificate)); + Log.Debug("Printing attestation key certificate: " + certificate); } if (cr.HasLdevidCertificate) { - certificate = cr.LdevidCertificate.ToByteArray(); // contains certificate + certificate = cr.LdevidCertificate.ToString(); // contains certificate String certificateDirPath = settings.certificate_output_directory; if (certificateDirPath != null) { String certificateFilePath = FormatCertificatePath(dv, certificateDirPath, DefaultLDevIDCertFileName); try { - File.WriteAllBytes(certificateFilePath, certificate); + File.WriteAllText(certificateFilePath, certificate); Log.Debug("LDevID certificate written to local file system: {0}", certificateFilePath); } catch (Exception) { Log.Debug("Failed to write LDevID certificate to local file system."); } } - Log.Debug("Printing LDevID certificate: " + BitConverter.ToString(certificate)); + Log.Debug("Printing LDevID certificate: " + certificate); } } else { result = ClientExitCodes.MAKE_CREDENTIAL_BLOB_MALFORMED; diff --git a/HIRS_Provisioner.NET/hirsTest/src/provisioner/ProvisionerTests.cs b/HIRS_Provisioner.NET/hirsTest/src/provisioner/ProvisionerTests.cs index ca44e6b5..41f5a6ac 100644 --- a/HIRS_Provisioner.NET/hirsTest/src/provisioner/ProvisionerTests.cs +++ b/HIRS_Provisioner.NET/hirsTest/src/provisioner/ProvisionerTests.cs @@ -14,7 +14,7 @@ namespace hirsTest { const string address = "https://127.0.0.1:8443/"; byte[] ekCert = Encoding.UTF8.GetBytes("EK CERTIFICATE"); byte[] secret = Encoding.UTF8.GetBytes("AuthCredential Secret"); - byte[] acaIssuedCert = Encoding.UTF8.GetBytes("ACA ISSUED CERTIFICATE"); + string acaIssuedCert = "ACA ISSUED CERTIFICATE"; byte[] integrityHMAC = Convert.FromBase64String("VAtedc1RlNA1w0XfrtwmhE0ILBlILP6163Tur5HRIo0="); byte[] encIdentity = Convert.FromBase64String("6e2oGBsK3H9Vzbj667ZsjnVOtvpSpQ=="); byte[] encryptedSecret = Convert.FromBase64String("NekvnOX8RPRdyd0/cxBI4FTCuNkiu0KAnS28yT7yYJUL5Lwfcv5ctEK6zQA0fq0IsX5TlAYSidGKxrAilOSwALJmJ+m7sMiXwMKrZn1cd4gzXObZEQimQoWgSEQbPO7rfpUn1UfI8K5SzmUFUTxc5X3D8zFonaEBp6QCjtdLegKGgioCDcQFdz20Y0PFAa1Itug7YbZdCFpfit570eQQinmqdVryiNyn6CLQdMgIejuBxoEpoTSWszB5eFKEdn5g/+8wcvhp6RpNBQ0hikF+6688TOVK/j8n3JDwKVltJ/WNHjVO+lxa2aLIMJRgs5ZRuzuz6OSMf10KqJjSWZE04w=="); @@ -34,7 +34,7 @@ namespace hirsTest { idClaimResp.CredentialBlob = Google.Protobuf.ByteString.CopyFrom(credentialBlob); CertificateResponse certResp = new(); certResp.Status = ResponseStatus.Pass; - certResp.Certificate = Google.Protobuf.ByteString.CopyFrom(acaIssuedCert); + certResp.Certificate = acaIssuedCert; IHirsAcaTpm tpm = A.Fake(); byte[] name = null, qualifiedName = null; diff --git a/HIRS_ProvisionerTPM2/src/ProvisionerTpm2.proto b/HIRS_ProvisionerTPM2/src/ProvisionerTpm2.proto index aa432b9e..d84ba52f 100644 --- a/HIRS_ProvisionerTPM2/src/ProvisionerTpm2.proto +++ b/HIRS_ProvisionerTPM2/src/ProvisionerTpm2.proto @@ -95,8 +95,8 @@ message CertificateRequest { } message CertificateResponse { - optional bytes certificate = 1; + optional string certificate = 1; optional ResponseStatus status = 2 [default = FAIL]; - optional bytes ldevidCertificate = 3; + optional string ldevidCertificate = 3; } diff --git a/HIRS_Utils/src/main/java/hirs/utils/PciIds.java b/HIRS_Utils/src/main/java/hirs/utils/PciIds.java index 394008a7..a5c394ae 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/PciIds.java +++ b/HIRS_Utils/src/main/java/hirs/utils/PciIds.java @@ -7,6 +7,8 @@ import com.github.marandus.pciid.model.ProgramInterface; import com.github.marandus.pciid.model.Vendor; import com.github.marandus.pciid.service.PciIdsDatabase; import com.google.common.base.Strings; +import hirs.utils.tpm.eventlog.uefi.UefiConstants; +import lombok.Getter; import lombok.extern.log4j.Log4j2; import org.bouncycastle.asn1.ASN1UTF8String; import org.bouncycastle.asn1.DERUTF8String; @@ -25,30 +27,46 @@ import java.util.List; @Log4j2 public final class PciIds { + /** + * Track status of pciids file. + */ + @Getter + private static String pciidsFileStatus = UefiConstants.FILESTATUS_NOT_ACCESSIBLE; + + /** + * Name of pciids file in code. + */ + private static final String PCIIDS_FILENAME = "/pci.ids"; + /** * This pci ids file can be in different places on different distributions. + * Fedora/RHEL/Rocky/CentOS: /usr/share/hwdata/pci.ids + * Debian/Ubuntu: /usr/share/misc/pci.ids + * If the file is not found on the system (such as with Windows systems), + * the file will have to be accessed from code. */ public static final List PCI_IDS_PATH = Collections.unmodifiableList(new ArrayList<>() { private static final long serialVersionUID = 1L; - { add("/usr/share/hwdata/pci.ids"); add("/usr/share/misc/pci.ids"); add("/tmp/pci.ids"); } }); + /** * The PCI IDs Database object. - *

* This only needs to be loaded one time. - *

* The pci ids library protects the data inside the object by making it immutable. */ public static final PciIdsDatabase DB = new PciIdsDatabase(); + //Configure the PCI IDs Database object. static { if (!DB.isReady()) { + + // if pciids file is found on the system, then process using this file String dbFile = null; for (final String path : PCI_IDS_PATH) { if ((new File(path)).exists()) { @@ -57,11 +75,13 @@ public final class PciIds { break; } } + if (dbFile != null) { InputStream is = null; try { is = new FileInputStream(dbFile); DB.loadStream(is); + pciidsFileStatus = UefiConstants.FILESTATUS_FROM_FILESYSTEM; } catch (IOException e) { // DB will not be ready, hardware IDs will not be translated dbFile = null; @@ -75,14 +95,36 @@ public final class PciIds { } } } + + // if pciids file is not found on the system or not accessible, then attempt to grab it from code + if (pciidsFileStatus == UefiConstants.FILESTATUS_NOT_ACCESSIBLE) { + InputStream isFromCode = PciIds.class.getResourceAsStream(PCIIDS_FILENAME); + if (isFromCode != null) { + try { + DB.loadStream(isFromCode); + pciidsFileStatus = UefiConstants.FILESTATUS_FROM_CODE; + } catch (IOException e) { + // DB will not be ready, hardware IDs will not be translated + } finally { + try { + isFromCode.close(); + } catch (IOException e) { + } + } + } + } + + // if pciids file is not accessible on system or from within code, then log error + if (pciidsFileStatus == UefiConstants.FILESTATUS_NOT_ACCESSIBLE) { + log.info("PCI IDs file was NOT accessible from within the system or within the code"); + } } } /** * Default private constructor so checkstyles doesn't complain. */ - private PciIds() { - } + private PciIds() { } /** * Look up the vendor name from the PCI IDs list, if the input string contains an ID. @@ -93,7 +135,9 @@ public final class PciIds { */ public static ASN1UTF8String translateVendor(final ASN1UTF8String refManufacturer) { ASN1UTF8String manufacturer = refManufacturer; - if (manufacturer != null && manufacturer.getString().trim().matches("^[0-9A-Fa-f]{4}$")) { + if (!pciidsFileStatus.equals(UefiConstants.FILESTATUS_NOT_ACCESSIBLE) + && manufacturer != null + && manufacturer.getString().trim().matches("^[0-9A-Fa-f]{4}$")) { Vendor ven = DB.findVendor(manufacturer.getString().toLowerCase()); if (ven != null && !Strings.isNullOrEmpty(ven.getName())) { manufacturer = new DERUTF8String(ven.getName()); @@ -111,7 +155,9 @@ public final class PciIds { */ public static String translateVendor(final String refManufacturer) { String manufacturer = refManufacturer; - if (manufacturer != null && manufacturer.trim().matches("^[0-9A-Fa-f]{4}$")) { + if (!pciidsFileStatus.equals(UefiConstants.FILESTATUS_NOT_ACCESSIBLE) + && manufacturer != null + && manufacturer.trim().matches("^[0-9A-Fa-f]{4}$")) { Vendor ven = DB.findVendor(manufacturer.toLowerCase()); if (ven != null && !Strings.isNullOrEmpty(ven.getName())) { manufacturer = ven.getName(); @@ -126,14 +172,15 @@ public final class PciIds { * If any part of this fails, return the original model value. * * @param refManufacturer ASN1UTF8String, likely from a ComponentIdentifier - * @param refModel ASN1UTF8String, likely from a ComponentIdentifier + * @param refModel ASN1UTF8String, likely from a ComponentIdentifier * @return ASN1UTF8String with the discovered device name, or the original model value. */ public static ASN1UTF8String translateDevice(final ASN1UTF8String refManufacturer, final ASN1UTF8String refModel) { ASN1UTF8String manufacturer = refManufacturer; ASN1UTF8String model = refModel; - if (manufacturer != null + if (!pciidsFileStatus.equals(UefiConstants.FILESTATUS_NOT_ACCESSIBLE) + && manufacturer != null && model != null && manufacturer.getString().trim().matches("^[0-9A-Fa-f]{4}$") && model.getString().trim().matches("^[0-9A-Fa-f]{4}$")) { @@ -152,13 +199,14 @@ public final class PciIds { * If any part of this fails, return the original model value. * * @param refManufacturer String, likely from a ComponentResult - * @param refModel String, likely from a ComponentResult + * @param refModel String, likely from a ComponentResult * @return String with the discovered device name, or the original model value. */ public static String translateDevice(final String refManufacturer, final String refModel) { String model = refModel; - if (refManufacturer != null + if (!pciidsFileStatus.equals(UefiConstants.FILESTATUS_NOT_ACCESSIBLE) + && refManufacturer != null && model != null && refManufacturer.trim().matches("^[0-9A-Fa-f]{4}$") && model.trim().matches("^[0-9A-Fa-f]{4}$")) { @@ -176,20 +224,23 @@ public final class PciIds { * If any part of this fails, return the original manufacturer value. * * @param refClassCode String, formatted as 2 characters (1 byte) for each of the 3 categories - * Example "010802": - * Class: "01" - * Subclass: "08" - * Programming Interface: "02" + * . Example "010802": + * . Class: "01" + * . Subclass: "08" + * . Programming Interface: "02" * @return List 3-element list with the class code - * 1st element: human-readable description of Class - * 2nd element: human-readable description of Subclass - * 3rd element: human-readable description of Programming Interface + * . 1st element: human-readable description of Class + * . 2nd element: human-readable description of Subclass + * . 3rd element: human-readable description of Programming Interface */ public static List translateDeviceClass(final String refClassCode) { List translatedClassCode = new ArrayList<>(); String classCode = refClassCode; - if (classCode != null && classCode.trim().matches("^[0-9A-Fa-f]{6}$")) { + if (!pciidsFileStatus.equals(UefiConstants.FILESTATUS_NOT_ACCESSIBLE) + && classCode != null + && classCode.trim().matches("^[0-9A-Fa-f]{6}$")) { + final int startIndexOfDeviceClass = 0; final int endIndexOfDeviceClass = 2; String deviceClass = diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TCGEventLog.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TCGEventLog.java index 3d6c58fe..5cee1b93 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TCGEventLog.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TCGEventLog.java @@ -20,9 +20,6 @@ import java.security.cert.CertificateException; import java.util.Collection; import java.util.LinkedHashMap; -import static hirs.utils.tpm.eventlog.uefi.UefiConstants.FILESTATUS_FROM_FILESYSTEM; -import static hirs.utils.tpm.eventlog.uefi.UefiConstants.FILESTATUS_NOT_ACCESSIBLE; - /** * Class for handling different formats of TCG Event logs. */ @@ -88,7 +85,16 @@ public final class TCGEventLog { * and if that event causes a different status. */ @Getter - private String vendorTableFileStatus = FILESTATUS_FROM_FILESYSTEM; + private String vendorTableFileStatus = UefiConstants.FILESTATUS_FROM_FILESYSTEM; + /** + * Track status of pci.ids + * This is only used if there is an event that uses functions from the pciids class. + * Default is normal status (normal status is from-filesystem). + * Status will only change IF there is an event that uses pciids file, and the file + * causes a different status. + */ + @Getter + private String pciidsFileStatus = UefiConstants.FILESTATUS_FROM_FILESYSTEM; /** * Default blank object constructor. @@ -169,11 +175,17 @@ public final class TCGEventLog { // the if statement is executed // [new event file status = eventList.get(eventNumber-1).getVendorTableFileStatus()] // (ie. if the new file status is not-accessible or from-code, then want to update) - if ((vendorTableFileStatus != FILESTATUS_NOT_ACCESSIBLE) + if ((vendorTableFileStatus != UefiConstants.FILESTATUS_NOT_ACCESSIBLE) && (eventList.get(eventNumber - 1).getVendorTableFileStatus() - != FILESTATUS_FROM_FILESYSTEM)) { + != UefiConstants.FILESTATUS_FROM_FILESYSTEM)) { vendorTableFileStatus = eventList.get(eventNumber - 1).getVendorTableFileStatus(); } + //similar to above with vendor-table.json file, but here with pci.ids file + if ((pciidsFileStatus != UefiConstants.FILESTATUS_NOT_ACCESSIBLE) + && (eventList.get(eventNumber - 1).getPciidsFileStatus() + != UefiConstants.FILESTATUS_FROM_FILESYSTEM)) { + pciidsFileStatus = eventList.get(eventNumber - 1).getPciidsFileStatus(); + } } calculatePcrValues(); } diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TcgTpmtHa.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TcgTpmtHa.java index 7488318a..b079a977 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TcgTpmtHa.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TcgTpmtHa.java @@ -12,8 +12,8 @@ import java.math.BigInteger; * Class to for the TCG defined TPMT_HA structure used to support the Crypto Agile Log format. *

* typedef struct { - * TPMI_ALG_HASH hashAlg; - * TPMU_HA digest; + * . TPMI_ALG_HASH hashAlg; + * . TPMU_HA digest; * } TPMT_HA; */ public class TcgTpmtHa { diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TpmPcrEvent.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TpmPcrEvent.java index 29705a62..4bd620fc 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TpmPcrEvent.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TpmPcrEvent.java @@ -39,16 +39,16 @@ import static hirs.utils.tpm.eventlog.uefi.UefiConstants.FILESTATUS_FROM_FILESYS * TCG_PCR_EVENT is used when the Event log uses the SHA1 Format as described in the * TCG Platform Firmware Profile (PFP) specification. * typedef struct { - * TCG_PCRINDEX PCRIndex; //PCR Index value that either - * //matches the PCRIndex of a - * //previous extend operation or - * //indicates that this Event Log - * //entry is not associated with - * //an extend operation - * TCG_EVENTTYPE EventType; //See Log event types defined in toStrng() - * TCG_DIGEST digest; //The hash of the event data - * UINT32 EventSize; //Size of the event data - * UINT8 Event[EventSize]; //The event data + * . TCG_PCRINDEX PCRIndex; //PCR Index value that either + * . //matches the PCRIndex of a + * . //previous extend operation or + * . //indicates that this Event Log + * . //entry is not associated with + * . //an extend operation + * . TCG_EVENTTYPE EventType; //See Log event types defined in toStrng() + * . TCG_DIGEST digest; //The hash of the event data + * . UINT32 EventSize; //Size of the event data + * . UINT8 Event[EventSize]; //The event data * } TCG_PCR_EVENT; */ @Log4j2 @@ -127,6 +127,16 @@ public class TpmPcrEvent { @Getter private String vendorTableFileStatus = FILESTATUS_FROM_FILESYSTEM; + /** + * Track status of pci.ids + * This is only used for events that access the pci.ids file. + * Default is normal status (normal status is from-filesystem). + * Status will only change IF this is an event that uses this file, + * and if that event causes a different status. + */ + @Getter + private String pciidsFileStatus = FILESTATUS_FROM_FILESYSTEM; + /** * Constructor. * @@ -438,6 +448,7 @@ public class TpmPcrEvent { specVersion = noAction.getSpecVersion(); specErrataVersion = noAction.getSpecErrataVersion(); } + pciidsFileStatus = noAction.getPciidsFileStatus(); break; case EvConstants.EV_SEPARATOR: if (EvPostCode.isAscii(content)) { @@ -523,7 +534,9 @@ public class TpmPcrEvent { break; case EvConstants.EV_EFI_SPDM_FIRMWARE_BLOB: case EvConstants.EV_EFI_SPDM_FIRMWARE_CONFIG: - description += "Event Content:\n" + new EvEfiSpdmDeviceSecurityEvent(content).toString(); + EvEfiSpdmDeviceSecurityEvent efiSpdmDse = new EvEfiSpdmDeviceSecurityEvent(content); + description += "Event Content:\n" + efiSpdmDse.toString(); + pciidsFileStatus = efiSpdmDse.getPciidsFileStatus(); break; default: description += " Unknown Event found" + "\n"; diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TpmPcrEvent1.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TpmPcrEvent1.java index dd6ffe6b..002dce5d 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TpmPcrEvent1.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TpmPcrEvent1.java @@ -15,11 +15,11 @@ import java.security.cert.CertificateException; * TCG Platform Firmware Profile specification. * typedef struct { * UINT32 PCRIndex; //PCR Index value that either - * //matches the PCRIndex of a - * //previous extend operation or - * //indicates that this Event Log - * //entry is not associated with - * //an extend operation + * . //matches the PCRIndex of a + * . //previous extend operation or + * . //indicates that this Event Log + * . //entry is not associated with + * . //an extend operation * UINT32 EventType; //See Log event types * BYTE digest[20]; //The SHA1 hash of the event data * UINT32 EventSize; //Size of the event data diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TpmPcrEvent2.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TpmPcrEvent2.java index be7f4949..0c015b69 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TpmPcrEvent2.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TpmPcrEvent2.java @@ -16,30 +16,30 @@ import java.util.ArrayList; * TCG Platform Firmware Profile specification. * This class will only process SHA-256 digests. * typedef struct { - * UINT32 PCRIndex; //PCR Index value that either - * //matches the PCRIndex of a - * //previous extend operation or - * //indicates that this Event Log - * //entry is not associated with - * //an extend operation - * UINT32 EventType; //See Log event types - * TPML_DIGEST_VALUES digest; //The hash of the event data - * UINT32 EventSize; //Size of the event data - * BYTE Event[1]; //The event data - * } TCG_PCR_EVENT2; //The event data structure to be added + * . UINT32 PCRIndex; //PCR Index value that either + * . //matches the PCRIndex of a + * . //previous extend operation or + * . //indicates that this Event Log + * . //entry is not associated with + * . //an extend operation + * . UINT32 EventType; //See Log event types + * . TPML_DIGEST_VALUES digest; //The hash of the event data + * . UINT32 EventSize; //Size of the event data + * . BYTE Event[1]; //The event data + * } TCG_PCR_EVENT2; //The event data structure to be added * typedef struct { - * UINT32 count; - * TPMT_HA digests[HASH_COUNT]; + * . UINT32 count; + * . TPMT_HA digests[HASH_COUNT]; * } TPML_DIGEST_VALUES; * typedef struct { - * TPMI_ALG_HASH hashAlg; - * TPMU_HA digest; + * . TPMI_ALG_HASH hashAlg; + * . TPMU_HA digest; * } TPMT_HA; * typedef union { - * BYTE sha1[SHA1_DIGEST_SIZE]; - * BYTE sha256[SHA256_DIGEST_SIZE]; - * BYTE sha384[SHA384_DIGEST_SIZE]; - * BYTE sha512[SHA512_DIGEST_SIZE]; + * . BYTE sha1[SHA1_DIGEST_SIZE]; + * . BYTE sha256[SHA256_DIGEST_SIZE]; + * . BYTE sha384[SHA384_DIGEST_SIZE]; + * . BYTE sha512[SHA512_DIGEST_SIZE]; * } TPMU_HA; * define SHA1_DIGEST_SIZE 20 * define SHA256_DIGEST_SIZE 32 diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEvent.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEvent.java index 400d9236..3d9a05c0 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEvent.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEvent.java @@ -1,5 +1,6 @@ package hirs.utils.tpm.eventlog.events; +import hirs.utils.tpm.eventlog.uefi.UefiConstants; import lombok.Getter; import lombok.Setter; @@ -7,34 +8,34 @@ import lombok.Setter; * Abstract base class to process the DEVICE_SECURITY_EVENT_DATA or ..DATA2 event. * Parses event data per PFP v1.06 Rev52 Tables 20 and 26. * The event data comes in 2 forms: - * 1) DEVICE_SECURITY_EVENT_DATA or - * 2) DEVICE_SECURITY_EVENT_DATA2 + * . 1) DEVICE_SECURITY_EVENT_DATA or + * . 2) DEVICE_SECURITY_EVENT_DATA2 * The first 2 fields of the respective headers are the same in both ..DATA and ..DATA2. * Field 1: - * The first 16 bytes of the event data header MUST be a String based identifier (Signature), - * per PFP. The only currently defined Signatures are "SPDM Device Sec" and "SPDM Device Sec2", - * which implies the data is a DEVICE_SECURITY_EVENT_DATA or ..DATA2, respectively. + * . The first 16 bytes of the event data header MUST be a String based identifier (Signature), + * . per PFP. The only currently defined Signatures are "SPDM Device Sec" and "SPDM Device Sec2", + * . which implies the data is a DEVICE_SECURITY_EVENT_DATA or ..DATA2, respectively. * Field 2: - * The Version field also indicates whether the Device Security Event is ..DATA or ..DATA2. + * . The Version field also indicates whether the Device Security Event is ..DATA or ..DATA2. * * DEVICE SECURITY EVENT structures defined by PFP v1.06 Rev 52: *

* typedef struct tdDEVICE_SECURITY_EVENT_DATA { - * DEVICE_SECURITY_EVENT_DATA_HEADER EventDataHeader; - * DEVICE_SECURITY_EVENT_DATA_DEVICE_CONTEXT DeviceContext; + * . DEVICE_SECURITY_EVENT_DATA_HEADER EventDataHeader; + * . DEVICE_SECURITY_EVENT_DATA_DEVICE_CONTEXT DeviceContext; * } DEVICE_SECURITY_EVENT_DATA; *

* typedef struct tdDEVICE_SECURITY_EVENT_DATA2 { - * DEVICE_SECURITY_EVENT_DATA_HEADER2 EventDataHeader; - * DEVICE_SECURITY_EVENT_DATA_SUB_HEADER EventDataSubHeader; - * DEVICE_SECURITY_EVENT_DATA_DEVICE_CONTEXT DeviceContext; + * . DEVICE_SECURITY_EVENT_DATA_HEADER2 EventDataHeader; + * . DEVICE_SECURITY_EVENT_DATA_SUB_HEADER EventDataSubHeader; + * . DEVICE_SECURITY_EVENT_DATA_DEVICE_CONTEXT DeviceContext; * } DEVICE_SECURITY_EVENT_DATA2; *

* typedef struct tdDEVICE_SECURITY_EVENT_DATA_HEADER or HEADER2 { - * UINT8 Signature[16]; - * UINT16 Version; - * ... ... - * (The rest of the components are different for HEADER vs HEADER2) + * . UINT8 Signature[16]; + * . UINT16 Version; + * . ... ... + * . (The rest of the components are different for HEADER vs HEADER2) * } *

*/ @@ -44,7 +45,7 @@ public abstract class DeviceSecurityEvent { * DeviceSecurityEventDataContext Object. */ @Getter - private DeviceSecurityEventDataDeviceContext dsedDevContext = null; + private DeviceSecurityEventDataPciContext dsedPciContext = null; /** * Device type. @@ -60,6 +61,18 @@ public abstract class DeviceSecurityEvent { @Getter private String deviceContextInfo = ""; + /** + * Track status of pci.ids + * This is only used for events that access the pci.ids file. + * (In this class, this is only needed if DeviceSecurityEvent includes + * a DeviceSecurityEventDataPciContext) + * Default is normal status (normal status is from-filesystem). + * Status will only change IF this is an event that uses this file, + * and if that event causes a different status. + */ + @Getter + private String pciidsFileStatus = UefiConstants.FILESTATUS_FROM_FILESYSTEM; + /** * DeviceSecurityEventData Default Constructor. * @@ -82,8 +95,11 @@ public abstract class DeviceSecurityEvent { if (deviceType == DeviceSecurityEventDataDeviceContext.DEVICE_TYPE_NONE) { deviceContextInfo = "\n No Device Context (indicated by device type value of 0)"; } else if (deviceType == DeviceSecurityEventDataDeviceContext.DEVICE_TYPE_PCI) { - dsedDevContext = new DeviceSecurityEventDataPciContext(dsedDeviceContextBytes); - deviceContextInfo = dsedDevContext.toString(); + dsedPciContext = new DeviceSecurityEventDataPciContext(dsedDeviceContextBytes); + deviceContextInfo = dsedPciContext.toString(); + // getPciidsFileStatus() must be called after DeviceSecurityEventDataPciContext.toString(), + // because the toString function is where the pciids db gets set up and used + pciidsFileStatus = dsedPciContext.getPciidsFileStatus(); } else if (deviceType == DeviceSecurityEventDataDeviceContext.DEVICE_TYPE_USB) { deviceContextInfo = " Device Type: USB - To be implemented"; } else { diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventData.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventData.java index 9a3e2429..2fe95474 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventData.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventData.java @@ -7,8 +7,8 @@ import lombok.Getter; * Parses event data per PFP v1.06 Rev52 Table 20. *

* typedef struct tdDEVICE_SECURITY_EVENT_DATA { - * DEVICE_SECURITY_EVENT_DATA_HEADER EventDataHeader; - * DEVICE_SECURITY_EVENT_DATA_DEVICE_CONTEXT DeviceContext; + * . DEVICE_SECURITY_EVENT_DATA_HEADER EventDataHeader; + * . DEVICE_SECURITY_EVENT_DATA_DEVICE_CONTEXT DeviceContext; * } DEVICE_SECURITY_EVENT_DATA; *

*/ diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventData2.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventData2.java index 6416ad93..bc3813b4 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventData2.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventData2.java @@ -7,9 +7,9 @@ import lombok.Getter; * Parses event data per PFP v1.06 Rev52 Table 26. *

* typedef struct tdDEVICE_SECURITY_EVENT_DATA2 { - * DEVICE_SECURITY_EVENT_DATA_HEADER2 EventDataHeader; - * DEVICE_SECURITY_EVENT_DATA_SUB_HEADER EventDataSubHeader; - * DEVICE_SECURITY_EVENT_DATA_DEVICE_CONTEXT DeviceContext; + * . DEVICE_SECURITY_EVENT_DATA_HEADER2 EventDataHeader; + * . DEVICE_SECURITY_EVENT_DATA_SUB_HEADER EventDataSubHeader; + * . DEVICE_SECURITY_EVENT_DATA_DEVICE_CONTEXT DeviceContext; * } DEVICE_SECURITY_EVENT_DATA2; *

*/ diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataDeviceContext.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataDeviceContext.java index 5a480251..b9e5c982 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataDeviceContext.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataDeviceContext.java @@ -10,8 +10,8 @@ import lombok.Getter; * or USB connection. *

* typedef union tdDEVICE_SECURITY_EVENT_DATA_DEVICE_CONTEXT { - * DEVICE_SECURITY_EVENT_DATA_PCI_CONTEXT PciContext; - * DEVICE_SECURITY_EVENT_DATA_USB_CONTEXT UsbContext; + * . DEVICE_SECURITY_EVENT_DATA_PCI_CONTEXT PciContext; + * . DEVICE_SECURITY_EVENT_DATA_USB_CONTEXT UsbContext; * } DEVICE_SECURITY_EVENT_DATA_DEVICE_CONTEXT; *

*/ diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataHeader.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataHeader.java index 587b963e..e3d3b531 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataHeader.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataHeader.java @@ -17,14 +17,14 @@ import java.io.IOException; * HEADERS defined by PFP v1.06 Rev 52: *

* typedef struct tdDEVICE_SECURITY_EVENT_DATA_HEADER { - * UINT8 Signature[16]; - * UINT16 Version; - * UINT16 Length; - * UINT32 SpdmHashAlg; - * UINT32 DeviceType; - * SPDM_MEASUREMENT_BLOCK SpdmMeasurementBlock; - * UINT64 DevicePathLength; - * UNIT8 DevicePath[DevicePathLength] + * . UINT8 Signature[16]; + * . UINT16 Version; + * . UINT16 Length; + * . UINT32 SpdmHashAlg; + * . UINT32 DeviceType; + * . SPDM_MEASUREMENT_BLOCK SpdmMeasurementBlock; + * . UINT64 DevicePathLength; + * . UNIT8 DevicePath[DevicePathLength] * } DEVICE_SECURITY_EVENT_DATA_HEADER; *

* Assumption: there is only 1 SpdmMeasurementBlock per event. Need more test patterns to verify. diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataHeader2.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataHeader2.java index 55ec9c06..ecacfdbf 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataHeader2.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataHeader2.java @@ -11,17 +11,17 @@ import lombok.Getter; * HEADERS defined by PFP v1.06 Rev 52: *

* typedef struct tdDEVICE_SECURITY_EVENT_DATA_HEADER2 { - * UINT8 Signature[16]; - * UINT16 Version; - * UINT8 AuthState; - * UINT8 Reserved - * UINT32 Length; - * UINT32 DeviceType; - * UINT32 SubHeaderType; - * UINT32 SubHeaderLength; - * UINT64 SubHeaderUID; - * UINT64 DevicePathLength; - * UNIT8 DevicePath[DevicePathLength] + * . UINT8 Signature[16]; + * . UINT16 Version; + * . UINT8 AuthState; + * . UINT8 Reserved + * . UINT32 Length; + * . UINT32 DeviceType; + * . UINT32 SubHeaderType; + * . UINT32 SubHeaderLength; + * . UINT64 SubHeaderUID; + * . UINT64 DevicePathLength; + * . UNIT8 DevicePath[DevicePathLength] * } DEVICE_SECURITY_EVENT_DATA_HEADER2; *

*/ diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataPciContext.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataPciContext.java index 05073d41..62c1118a 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataPciContext.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataPciContext.java @@ -1,6 +1,8 @@ package hirs.utils.tpm.eventlog.events; import hirs.utils.HexUtils; +import hirs.utils.PciIds; +import hirs.utils.tpm.eventlog.uefi.UefiConstants; import lombok.Getter; import java.util.List; @@ -13,28 +15,28 @@ import static hirs.utils.PciIds.translateVendor; * Class to process the DEVICE_SECURITY_EVENT_DATA_PCI_CONTEXT event per PFP. *

* typedef struct tdDEVICE_SECURITY_EVENT_DATA_PCI_CONTEXT { - * UINT16 Version; - * UINT16 Length; - * UINT16 VendorId; - * UINT16 DeviceId; - * UINT16 RevisionId; - * UINT16 ClassCode[3]; - * UINT16 SubsystemVendorId; - * UINT16 SubsystemId; + * . UINT16 Version; + * . UINT16 Length; + * . UINT16 VendorId; + * . UINT16 DeviceId; + * . UINT16 RevisionId; + * . UINT16 ClassCode[3]; + * . UINT16 SubsystemVendorId; + * . UINT16 SubsystemId; *

* The following fields are defined by the PCI Express Base Specification rev4.0 v1.0. - * VendorId - * DeviceId - * RevisionId - * ClassCode - * SubsystemVendorId - * SubsystemId + * . VendorId + * . DeviceId + * . RevisionId + * . ClassCode + * . SubsystemVendorId + * . SubsystemId * Vendor id and device id are registered to specific manufacturers. - * https://admin.pci-ids.ucw.cz/read/PC/ - * Ex. vendor id 8086 and device id 0b60: https://admin.pci-ids.ucw.cz/read/PC/8086/0b60 + * . https://admin.pci-ids.ucw.cz/read/PC/ + * . Ex. vendor id 8086 and device id 0b60: https://admin.pci-ids.ucw.cz/read/PC/8086/0b60 * Class code can be looked up on the web. - * https://admin.pci-ids.ucw.cz/read/PD/ - * The revision ID is controlled by the vendor and cannot be looked up. + * . https://admin.pci-ids.ucw.cz/read/PD/ + * . The revision ID is controlled by the vendor and cannot be looked up. */ public class DeviceSecurityEventDataPciContext extends DeviceSecurityEventDataDeviceContext { @@ -69,6 +71,12 @@ public class DeviceSecurityEventDataPciContext extends DeviceSecurityEventDataDe @Getter private String subsystemId = ""; + /** + * Track status of pci.ids file. + */ + @Getter + private String pciidsFileStatus = UefiConstants.FILESTATUS_NOT_ACCESSIBLE; + /** * DeviceSecurityEventDataPciContext Constructor. * @@ -122,6 +130,13 @@ public class DeviceSecurityEventDataPciContext extends DeviceSecurityEventDataDe dSEDpciContextInfo += super.toString(); dSEDpciContextInfo += " Device Type = PCI\n"; dSEDpciContextInfo += " Vendor = " + translateVendor(vendorId) + "\n"; + + // the above call to translateVendor() is the first location in this class where + // a function in pciids class is called + // thus, if pciids db has not previously been set up, this call will trigger that setup + // the setup will look for the pciids file; need to check and store the status of that file + pciidsFileStatus = PciIds.getPciidsFileStatus(); + dSEDpciContextInfo += " Device = " + translateDevice(vendorId, deviceId) + "\n"; dSEDpciContextInfo += " RevisionID = " + revisionId + "\n"; @@ -133,7 +148,7 @@ public class DeviceSecurityEventDataPciContext extends DeviceSecurityEventDataDe dSEDpciContextInfo += " Subclass = " + classCodeList.get(1) + "\n"; dSEDpciContextInfo += " Programming Interface = " + classCodeList.get(2) + "\n"; } else { - dSEDpciContextInfo += " ** Class code could not be determined **"; + dSEDpciContextInfo += " (Class code could not be determined)\n"; } dSEDpciContextInfo += " SubsystemVendor = " + translateVendor(subsystemVendorId) + "\n"; dSEDpciContextInfo += " Subsystem = " + translateDevice(subsystemVendorId, subsystemId) + "\n"; diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataSubHeader.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataSubHeader.java index 5bc149e7..09b617d1 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataSubHeader.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataSubHeader.java @@ -5,9 +5,9 @@ package hirs.utils.tpm.eventlog.events; * *

* typedef union tdDEVICE_SECURITY_EVENT_DATA_SUB_HEADER { - * DEVICE_SECURITY_EVENT_DATA_SUB_HEADER_SPDM_MEASUREMENT_BLOCK SpdmMeasurementBlock; - * DEVICE_SECURITY_EVENT_DATA_SUB_HEADER_SPDM_CERT_CHAIN SpdmCertChain; - * DEVICE_SECURITY_EVENT_DATA_SUB_HEADER_OEM_MEASUREMENT OemMeasurement; + * . DEVICE_SECURITY_EVENT_DATA_SUB_HEADER_SPDM_MEASUREMENT_BLOCK SpdmMeasurementBlock; + * . DEVICE_SECURITY_EVENT_DATA_SUB_HEADER_SPDM_CERT_CHAIN SpdmCertChain; + * . DEVICE_SECURITY_EVENT_DATA_SUB_HEADER_OEM_MEASUREMENT OemMeasurement; * } DEVICE_SECURITY_EVENT_DATA_SUB_HEADER; *

*/ diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataSubHeaderCertChain.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataSubHeaderCertChain.java index a6c752e9..abc717d7 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataSubHeaderCertChain.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataSubHeaderCertChain.java @@ -9,11 +9,11 @@ import hirs.utils.tpm.eventlog.spdm.SpdmHa; * *

* typedef union tdDEVICE_SECURITY_EVENT_DATA_SUB_HEADER_SPDM_CERT_CHAIN { - * UINT16 SpdmVersion; - * UINT8 SpdmSlotId; - * UINT8 Reserved; - * UINT32 SpdmBaseHashAlgo; - * SPDM_CERT_CHAIN SpdmCertChain; + * . UINT16 SpdmVersion; + * . UINT8 SpdmSlotId; + * . UINT8 Reserved; + * . UINT32 SpdmBaseHashAlgo; + * . SPDM_CERT_CHAIN SpdmCertChain; * } DEVICE_SECURITY_EVENT_DATA_SUB_HEADER_SPDM_CERT_CHAIN; *

* SpdmVersion: SpdmBaseHashAlgo diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataSubHeaderSpdmMeasurementBlock.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataSubHeaderSpdmMeasurementBlock.java index c4cf4659..348a26c7 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataSubHeaderSpdmMeasurementBlock.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventDataSubHeaderSpdmMeasurementBlock.java @@ -15,21 +15,21 @@ import java.util.List; * *

* typedef union tdDEVICE_SECURITY_EVENT_DATA_SUB_HEADER_SPDM_MEASUREMENT_BLOCK { - * UINT16 SpdmVersion; - * UINT8 SpdmMeasurementBlockCount; - * UINT8 Reserved; - * UINT32 SpdmMeasurementHashAlgo; - * SPDM_MEASUREMENT_BLOCK SpdmMeasurementBlock[SpdmMeasurementBlockCount]; + * . UINT16 SpdmVersion; + * . UINT8 SpdmMeasurementBlockCount; + * . UINT8 Reserved; + * . UINT32 SpdmMeasurementHashAlgo; + * . SPDM_MEASUREMENT_BLOCK SpdmMeasurementBlock[SpdmMeasurementBlockCount]; * } DEVICE_SECURITY_EVENT_DATA_SUB_HEADER_SPDM_MEASUREMENT_BLOCK; *

*

* SpdmMeasurementBlock is an array of SPDM_MEASUREMENT_BLOCKs - * The size of each block is the same and can be found by either: - * 1) 4 + SpdmMeasurementBlock MeasurementSize - * OR - * 2) 4 + hash length of the hash algorithm found in - * DEVICE_SECURITY_EVENT_DATA_SUB_HEADER_SPDM_MEASUREMENT_BLOCK SpdmMeasurementHashAlgo - * where 4 is the size of the SpdmMeasurementBlock header + * . The size of each block is the same and can be found by either: + * . 1) 4 + SpdmMeasurementBlock MeasurementSize + * . OR + * . 2) 4 + hash length of the hash algorithm found in + * . DEVICE_SECURITY_EVENT_DATA_SUB_HEADER_SPDM_MEASUREMENT_BLOCK SpdmMeasurementHashAlgo + * . where 4 is the size of the SpdmMeasurementBlock header */ public class DeviceSecurityEventDataSubHeaderSpdmMeasurementBlock extends DeviceSecurityEventDataSubHeader { diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventHeader.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventHeader.java index 68d6ea98..2b676021 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventHeader.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/DeviceSecurityEventHeader.java @@ -17,36 +17,36 @@ import java.nio.charset.StandardCharsets; * Certain fields are common to both ..HEADER and ..HEADER2, and are noted below the structures. *

* typedef struct tdDEVICE_SECURITY_EVENT_DATA_HEADER { - * UINT8 Signature[16]; - * UINT16 Version; - * UINT16 Length; - * UINT32 SpdmHashAlg; - * UINT32 DeviceType; - * SPDM_MEASUREMENT_BLOCK SpdmMeasurementBlock; - * UINT64 DevicePathLength; - * UNIT8 DevicePath[DevicePathLength] + * . UINT8 Signature[16]; + * . UINT16 Version; + * . UINT16 Length; + * . UINT32 SpdmHashAlg; + * . UINT32 DeviceType; + * . SPDM_MEASUREMENT_BLOCK SpdmMeasurementBlock; + * . UINT64 DevicePathLength; + * . UNIT8 DevicePath[DevicePathLength] * } DEVICE_SECURITY_EVENT_DATA_HEADER; *

* typedef struct tdDEVICE_SECURITY_EVENT_DATA_HEADER2 { - NOT IMPLEMENTED YET - * UINT8 Signature[16]; - * UINT16 Version; - * UINT8 AuthState; - * UINT8 Reserved; - * UINT32 Length; - * UINT32 DeviceType; - * UINT32 SubHeaderType; - * UINT32 SubHeaderLength; - * UINT32 SubHeaderUID; - * UINT64 DevicePathLength; - * UNIT8 DevicePath[DevicePathLength] + * . UINT8 Signature[16]; + * . UINT16 Version; + * . UINT8 AuthState; + * . UINT8 Reserved; + * . UINT32 Length; + * . UINT32 DeviceType; + * . UINT32 SubHeaderType; + * . UINT32 SubHeaderLength; + * . UINT32 SubHeaderUID; + * . UINT64 DevicePathLength; + * . UNIT8 DevicePath[DevicePathLength] * } DEVICE_SECURITY_EVENT_DATA_HEADER2; *

* Fields common to both ..HEADER and ..HEADER2: - * Signature - * Version - * DeviceType - * DevicePathLength - * DevicePath + * . Signature + * . Version + * . DeviceType + * . DevicePathLength + * . DevicePath *

*/ public abstract class DeviceSecurityEventHeader { diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/EvEfiSpdmDeviceSecurityEvent.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/EvEfiSpdmDeviceSecurityEvent.java index 8f879311..bfde0c24 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/EvEfiSpdmDeviceSecurityEvent.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/EvEfiSpdmDeviceSecurityEvent.java @@ -2,23 +2,24 @@ package hirs.utils.tpm.eventlog.events; import hirs.utils.HexUtils; import hirs.utils.tpm.eventlog.uefi.UefiConstants; +import lombok.Getter; import java.nio.charset.StandardCharsets; /** * Abstract class to process any SPDM event that is solely a DEVICE_SECURITY_EVENT_DATA or * DEVICE_SECURITY_EVENT_DATA2. The event field MUST be a - * 1) DEVICE_SECURITY_EVENT_DATA or - * 2) DEVICE_SECURITY_EVENT_DATA2 + * . 1) DEVICE_SECURITY_EVENT_DATA or + * . 2) DEVICE_SECURITY_EVENT_DATA2 * DEVICE_SECURITY_EVENT_DATA has 2 structures: - * 1) DEVICE_SECURITY_EVENT_DATA_HEADER - * 2) DEVICE_SECURITY_EVENT_DATA_DEVICE_CONTEXT, which has 2 structures - * a) DEVICE_SECURITY_EVENT_DATA_PCI_CONTEXT - * b) DEVICE_SECURITY_EVENT_DATA_USB_CONTEXT + * . 1) DEVICE_SECURITY_EVENT_DATA_HEADER + * . 2) DEVICE_SECURITY_EVENT_DATA_DEVICE_CONTEXT, which has 2 structures + * . a) DEVICE_SECURITY_EVENT_DATA_PCI_CONTEXT + * . b) DEVICE_SECURITY_EVENT_DATA_USB_CONTEXT * DEVICE_SECURITY_EVENT_DATA2 has 3 structures: - * 1) DEVICE_SECURITY_EVENT_DATA_HEADER2 - * 2) DEVICE_SECURITY_EVENT_DATA_SUB_HEADER - * 3) DEVICE_SECURITY_EVENT_DATA_DEVICE_CONTEXT, which has 2 structures (see above) + * . 1) DEVICE_SECURITY_EVENT_DATA_HEADER2 + * . 2) DEVICE_SECURITY_EVENT_DATA_SUB_HEADER + * . 3) DEVICE_SECURITY_EVENT_DATA_DEVICE_CONTEXT, which has 2 structures (see above) * The first 16 bytes of the event data header MUST be a String based identifier (Signature), * NUL-terminated, per PFP. The only currently defined Signature is "SPDM Device Sec", * which implies the data is a DEVICE_SECURITY_EVENT_DATA or ..DATA2. @@ -45,6 +46,16 @@ public class EvEfiSpdmDeviceSecurityEvent { */ private String spdmInfo = ""; + /** + * Track status of pci.ids + * This is only used for events that access the pci.ids file. + * Default is normal status (normal status is from-filesystem). + * Status will only change IF this is an event that uses this file, + * and if that event causes a different status. + */ + @Getter + private String pciidsFileStatus = UefiConstants.FILESTATUS_FROM_FILESYSTEM; + /** * EvEfiSpdmFirmwareBlob constructor. * @@ -72,6 +83,7 @@ public class EvEfiSpdmDeviceSecurityEvent { if (dsedVersion.equals("0200")) { dsed = new DeviceSecurityEventData2(eventData); spdmInfo += dsed.toString(); + pciidsFileStatus = dsed.getPciidsFileStatus(); } else { spdmInfo += " Incompatible version for DeviceSecurityEventData2: " + dsedVersion + "\n"; } @@ -82,6 +94,7 @@ public class EvEfiSpdmDeviceSecurityEvent { if (dsedVersion.equals("0100")) { dsed = new DeviceSecurityEventData(eventData); spdmInfo += dsed.toString(); + pciidsFileStatus = dsed.getPciidsFileStatus(); } else { spdmInfo += " Incompatible version for DeviceSecurityEventData: " + dsedVersion + "\n"; } diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/EvNoAction.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/EvNoAction.java index 983e2f44..d0eac383 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/EvNoAction.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/EvNoAction.java @@ -11,16 +11,16 @@ import java.nio.charset.StandardCharsets; * Class to process the EV_NO_ACTION event. * The first 16 bytes of the event data MUST be a String based identifier (Signature). * Currently defined Signatures are - * "Spec ID Event03" - * - implies the data is a TCG_EfiSpecIDEvent - * - TCG_EfiSpecIDEvent is the first event in a TPM Event Log and is used to determine - * if the format of the Log (SHA1 vs Crypto Agile). - * "StartupLocality" - * - implies the data represents locality info (use lookup to interpret) - * "NvIndexInstance" - * - implies the data is a NV_INDEX_INSTANCE_EVENT_LOG_DATA - * "NvIndexDynamic" - * - implies the data is a NV_INDEX_DYNAMIC_EVENT_LOG_DATA + * . "Spec ID Event03" + * . - implies the data is a TCG_EfiSpecIDEvent + * . - TCG_EfiSpecIDEvent is the first event in a TPM Event Log and is used to determine + * . if the format of the Log (SHA1 vs Crypto Agile). + * . "StartupLocality" + * . - implies the data represents locality info (use lookup to interpret) + * . "NvIndexInstance" + * . - implies the data is a NV_INDEX_INSTANCE_EVENT_LOG_DATA + * . "NvIndexDynamic" + * . - implies the data is a NV_INDEX_DYNAMIC_EVENT_LOG_DATA *

* Notes: * 1. First 16 bytes of the structure is an ASCII with a fixed Length of 16 @@ -53,6 +53,16 @@ public class EvNoAction { @Getter private String noActionInfo = ""; + /** + * Track status of pci.ids + * This is only used for events that access the pci.ids file. + * Default is normal status (normal status is from-filesystem). + * Status will only change IF this is an event that uses this file, + * and if that event causes a different status. + */ + @Getter + private String pciidsFileStatus = UefiConstants.FILESTATUS_FROM_FILESYSTEM; + /** * EvNoAction constructor. * @@ -78,6 +88,7 @@ public class EvNoAction { } else if (signature.contains("NvIndexInstance")) { NvIndexInstanceEventLogData nvIndexInstanceEvent = new NvIndexInstanceEventLogData(eventData); noActionInfo += nvIndexInstanceEvent.toString(); + pciidsFileStatus = nvIndexInstanceEvent.getPciidsFileStatus(); } else if (signature.contains("NvIndexDynamic")) { NvIndexDynamicEventLogData nvIndexDynamicEvent = new NvIndexDynamicEventLogData(eventData); noActionInfo += nvIndexDynamicEvent.toString(); diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/NvIndexDynamicEventLogData.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/NvIndexDynamicEventLogData.java index 44e55233..c18866e8 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/NvIndexDynamicEventLogData.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/NvIndexDynamicEventLogData.java @@ -8,19 +8,19 @@ import java.nio.charset.StandardCharsets; * Class to process the NV_INDEX_DYNAMIC_EVENT_LOG_DATA per PFP. * Per PFP, the first 16 bytes of the structure are a String based identifier (Signature), * which are a NULL-terminated ASCII string "NvIndexDynamic". - *

+ * * HEADERS defined by PFP v1.06 Rev 52. * Certain fields are common to both ..HEADER and ..HEADER2, and are noted below the structures. *

* typedef struct tdNV_INDEX_DYNAMIC_EVENT_LOG_DATA { - * BYTE Signature[16]; - * UINT16 Version; - * UINT8[6] Reserved; - * UINT64 UID; - * UINT16 DescriptionSize; - * UINT8 Description[DescriptionSize]; - * UINT16 DataSize; - * DEVICE_SECURITY_EVENT_DATA2 Data[DataSize]; + * . BYTE Signature[16]; + * . UINT16 Version; + * . UINT8[6] Reserved; + * . UINT64 UID; + * . UINT16 DescriptionSize; + * . UINT8 Description[DescriptionSize]; + * . UINT16 DataSize; + * . UINT8 Data[DataSize]; * } NV_INDEX_DYNAMIC_EVENT_LOG_DATA; *

*/ @@ -61,6 +61,7 @@ public class NvIndexDynamicEventLogData { nvIndexDynamicInfo += " Nv Index Dynamic Version = " + nvIndexVersion + "\n"; // 6 bytes of Reserved data + final int uidBytesSize = 8; final int eventDataSrcIndex2 = 24; byte[] uidBytes = new byte[uidBytesSize]; diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/NvIndexInstanceEventLogData.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/NvIndexInstanceEventLogData.java index af573ead..63bbbf8a 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/NvIndexInstanceEventLogData.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/events/NvIndexInstanceEventLogData.java @@ -1,6 +1,8 @@ package hirs.utils.tpm.eventlog.events; import hirs.utils.HexUtils; +import hirs.utils.tpm.eventlog.uefi.UefiConstants; +import lombok.Getter; import java.nio.charset.StandardCharsets; @@ -13,10 +15,10 @@ import java.nio.charset.StandardCharsets; * Certain fields are common to both ..HEADER and ..HEADER2, and are noted below the structures. *

* typedef struct tdNV_INDEX_INSTANCE_EVENT_LOG_DATA { - * BYTE Signature[16]; - * UINT16 Version; - * UINT8[6] Reserved; - * DEVICE_SECURITY_EVENT_DATA2 Data; + * . BYTE Signature[16]; + * . UINT16 Version; + * . UINT8[6] Reserved; + * . DEVICE_SECURITY_EVENT_DATA2 Data; * } NV_INDEX_INSTANCE_EVENT_LOG_DATA; *

*/ @@ -38,6 +40,16 @@ public class NvIndexInstanceEventLogData { */ private String nvIndexInstanceInfo = ""; + /** + * Track status of pci.ids + * This is only used for events that access the pci.ids file. + * Default is normal status (normal status is from-filesystem). + * Status will only change IF this is an event that uses this file, + * and if that event causes a different status. + */ + @Getter + private String pciidsFileStatus = UefiConstants.FILESTATUS_FROM_FILESYSTEM; + /** * NvIndexInstanceEventLogData constructor. * @@ -89,6 +101,7 @@ public class NvIndexInstanceEventLogData { if (dsedVersion.equals("0200")) { dsed = new DeviceSecurityEventData2(dsedEventData); nvIndexInstanceInfo += dsed.toString(); + pciidsFileStatus = dsed.getPciidsFileStatus(); } else { nvIndexInstanceInfo += " Incompatible version for DeviceSecurityEventData2: " + dsedVersion + "\n"; diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/spdm/SpdmCertificateChain.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/spdm/SpdmCertificateChain.java index 7ec8b8ea..1d89495c 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/spdm/SpdmCertificateChain.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/spdm/SpdmCertificateChain.java @@ -15,22 +15,22 @@ import java.util.ArrayList; *

* Certificate chain format, defined by SPDM v1.03, Sect 10.6.1, Table 33: * Certificate chain format { - * Length 2 bytes; - * Reserved 2 bytes; - * RootHash bytes; - * Certificates - (4 + ) bytes; + * . Length 2 bytes; + * . Reserved 2 bytes; + * . RootHash bytes; + * . Certificates - (4 + ) bytes; * } *

* Length: total length of cert chain including all fields in this block * H: the output size of the hash algorithm selected by the most recent ALGORITHMS response - * this field shall be in hash byte order - * hash algorithm is included in the DEVICE_SECURITY_EVENT_DATA_SUB_HEADER_SPDM_CERT_CHAIN - * structure as the member "SpdmBaseHashAlg" + * . this field shall be in hash byte order + * . hash algorithm is included in the DEVICE_SECURITY_EVENT_DATA_SUB_HEADER_SPDM_CERT_CHAIN + * . structure as the member "SpdmBaseHashAlg" * RootHash: the digest of the Root Certificate. - * size is determined by hash algorithm selected by the most recent SPDM ALGORITHMS response; - * the hash algorithm is the DEVICE_SECURITY_EVENT_DATA_SUB_HEADER_SPDM_CERT_CHAIN SpdmBaseHashAlgo + * . size is determined by hash algorithm selected by the most recent SPDM ALGORITHMS response; + * . the hash algorithm is the DEVICE_SECURITY_EVENT_DATA_SUB_HEADER_SPDM_CERT_CHAIN SpdmBaseHashAlgo * Certificates: Complete cert chain consisting of 1 or more ASN.1 DER-encoded X.509 v3 certs - * this field shall be in Encoded ASN.1 byte order + * . this field shall be in Encoded ASN.1 byte order */ public class SpdmCertificateChain { diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/spdm/SpdmMeasurement.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/spdm/SpdmMeasurement.java index 9ef63e94..9c056a27 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/spdm/SpdmMeasurement.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/spdm/SpdmMeasurement.java @@ -8,21 +8,21 @@ import lombok.Getter; *

* Measurement, defined by SPDM v1.03, Sect 10.11.1, Table 54: * DMTF measurement spec format { - * DMTFSpecMeasurementValueType 1 byte; - * DMTFSpecMeasurementValueSize 2 bytes; - * DMTFSpecMeasurementValue bytes; + * . DMTFSpecMeasurementValueType 1 byte; + * . DMTFSpecMeasurementValueSize 2 bytes; + * . DMTFSpecMeasurementValue bytes; * } *

* DMTFSpecMeasurementValueType[7] - * Indicates how bits [0:6] are represented - * Bit = 0: Digest - * Bit = 1: Raw bit stream + * . Indicates how bits [0:6] are represented + * . Bit = 0: Digest + * . Bit = 1: Raw bit stream * DMTFSpecMeasurementValueType[6:0] (see SPDM Spec, Table 55 "DMTFSpecMeasurementValueType[6:0]") - * Immutable ROM 0x0 - * Mutable firmware 0x1 - * Hardware configuration 0x2 - * Firmware configuration 0x3 - * etc. + * . Immutable ROM 0x0 + * . Mutable firmware 0x1 + * . Hardware configuration 0x2 + * . Firmware configuration 0x3 + * . etc. *

*/ public class SpdmMeasurement { diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/uefi/UefiConstants.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/uefi/UefiConstants.java index 71e94243..4844c4f1 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/uefi/UefiConstants.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/uefi/UefiConstants.java @@ -273,9 +273,9 @@ public final class UefiConstants { public static final String FILESTATUS_FROM_FILESYSTEM = "fileFromFilesystem"; /** * file status, where file was not found on local machine, so file from code was used. - * For instance, if vendor-table.json is not found in filesystem at location - * /etc/hirs/aca/default-properties/, it will be grabbed from code at - * HIRS_AttestationCA/src/main/resources/. + * . For instance, if vendor-table.json is not found in filesystem at location + * . /etc/hirs/aca/default-properties/, it will be grabbed from code at + * . HIRS_AttestationCA/src/main/resources/. */ public static final String FILESTATUS_FROM_CODE = "fileFromCode"; /** diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/uefi/UefiGuid.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/uefi/UefiGuid.java index fd103f62..944446a5 100644 --- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/uefi/UefiGuid.java +++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/uefi/UefiGuid.java @@ -10,10 +10,6 @@ import java.nio.file.FileSystems; import java.nio.file.Path; import java.util.UUID; -import static hirs.utils.tpm.eventlog.uefi.UefiConstants.FILESTATUS_FROM_CODE; -import static hirs.utils.tpm.eventlog.uefi.UefiConstants.FILESTATUS_FROM_FILESYSTEM; -import static hirs.utils.tpm.eventlog.uefi.UefiConstants.FILESTATUS_NOT_ACCESSIBLE; - /** * Class to process GUID per the UEFI specification * GUIDs are essentially UUID as defined by RFC-1422, however Microsoft refers to GUIDS. @@ -44,7 +40,7 @@ public class UefiGuid { * Track status of vendor-table.json. */ @Getter - private String vendorTableFileStatus = FILESTATUS_NOT_ACCESSIBLE; + private String vendorTableFileStatus = UefiConstants.FILESTATUS_NOT_ACCESSIBLE; /** * guid byte array. @@ -78,12 +74,12 @@ public class UefiGuid { "VendorTable"); if (!isVendorTableReferenceHandleEmpty()) { - vendorTableFileStatus = FILESTATUS_FROM_FILESYSTEM; + vendorTableFileStatus = UefiConstants.FILESTATUS_FROM_FILESYSTEM; } else { // could not access vendor-table.json from filesystem, so attempt to access from code uefiVendorRef = JsonUtils.getSpecificJsonObject(JSON_FILENAME, "VendorTable"); if (!isVendorTableReferenceHandleEmpty()) { - vendorTableFileStatus = FILESTATUS_FROM_CODE; + vendorTableFileStatus = UefiConstants.FILESTATUS_FROM_CODE; } } } diff --git a/HIRS_Utils/src/main/resources/pci.ids b/HIRS_Utils/src/main/resources/pci.ids new file mode 100644 index 00000000..f1686789 --- /dev/null +++ b/HIRS_Utils/src/main/resources/pci.ids @@ -0,0 +1,38412 @@ +# +# List of PCI ID's +# +# Version: 2024.06.23 +# Date: 2024-06-23 03:15:02 +# +# Maintained by Albert Pool, Martin Mares, and other volunteers from +# the PCI ID Project at https://pci-ids.ucw.cz/. +# +# New data are always welcome, especially if they are accurate. If you have +# anything to contribute, please follow the instructions at the web site. +# +# This file can be distributed under either the GNU General Public License +# (version 2 or higher) or the 3-clause BSD License. +# +# The database is a compilation of factual data, and as such the copyright +# only covers the aggregation and formatting. The copyright is held by +# Martin Mares and Albert Pool. +# + +# Vendors, devices and subsystems. Please keep sorted. + +# Syntax: +# vendor vendor_name +# device device_name <-- single tab +# subvendor subdevice subsystem_name <-- two tabs + +0001 SafeNet (wrong ID) +0010 Allied Telesis, Inc (Wrong ID) +# This is a relabelled RTL-8139 + 8139 AT-2500TX V3 Ethernet +0014 Loongson Technology LLC + 7a00 Hyper Transport Bridge Controller + 7a02 APB (Advanced Peripheral Bus) Controller + 7a03 Gigabit Ethernet Controller + 7a04 OTG USB Controller + 7a05 Vivante GPU (Graphics Processing Unit) + 7a06 DC (Display Controller) + 7a07 HDA (High Definition Audio) Controller + 7a08 SATA AHCI Controller + 7a09 PCI-to-PCI Bridge + 7a0b SPI Controller + 7a0c LPC Controller + 7a0f DMA (Direct Memory Access) Controller +# Found on some boards with two sockets + 7a10 Hyper Transport Bridge Controller + 7a14 EHCI USB Controller + 7a15 Vivante GPU (Graphics Processing Unit) + 7a19 PCI-to-PCI Bridge + 7a24 OHCI USB Controller +# Found on 7A2000 PCH + 7a25 LG100 GPU + 7a29 PCI-to-PCI Bridge +# Found on 7A2000 PCH + 7a36 Display Controller +0018 Fn-Link Technology Limited + 6252 6252CPUB 802.11ax PCIe Wireless Network Adapter +001c PEAK-System Technik GmbH + 0001 PCAN-PCI CAN-Bus controller + 001c 0004 2 Channel CAN Bus SJC1000 + 001c 0005 2 Channel CAN Bus SJC1000 (Optically Isolated) +003d Lockheed Martin-Marietta Corp +# Real TJN ID is e159, but they got it wrong several times --mj +0059 Tiger Jet Network Inc. (Wrong ID) +0070 Hauppauge computer works Inc. + 7801 WinTV HVR-1800 MCE +0071 Nebula Electronics Ltd. +0095 Silicon Image, Inc. (Wrong ID) + 0680 Ultra ATA/133 IDE RAID CONTROLLER CARD +# Wrong ID used in subsystem ID of the TELES.S0/PCI 2.x ISDN adapter +00a7 Teles AG (Wrong ID) +0100 nCipher Security +0123 General Dynamics +0128 Dell (wrong ID) +# 018a is not LevelOne but there is a board misprogrammed +018a LevelOne + 0106 FPC-0106TX misprogrammed [RTL81xx] +01de Oxide Computer Company + 0000 Propolis NVMe Controller + 0001 Propolis xHCI Controller + 0002 Propolis PCI-PCI Bridge +# probably misprogrammed Intel Atom C2338 on Dell 0K8Y0N board +0200 Dell (wrong ID) +# 021b is not Compaq but there is a board misprogrammed +021b Compaq Computer Corporation + 8139 HNE-300 (RealTek RTL8139c) [iPaq Networking] +025e Solidigm + 0b60 NVMe DC SSD [Sentinel Rock Plus controller] + 025e 8008 NVMe DC SSD U.2 15mm [D7-P5510] + 025e 8208 NVMe DC SSD U.2 15mm [D7-P5810] + 025e 8d1d NVMe DC SSD E1.L 9.5mm [D5-P5316] + 025e 9008 NVMe DC SSD U.2 15mm [D7-P5520] + 025e 900c NVMe DC SSD E1.S 9.5mm [D7-P5520] + 025e 900d NVMe DC SSD E1.S 15mm [D7-P5520] + 025e 901c NVMe DC SSD E1.L 9.5mm [D7-P5520] + 025e 9108 NVMe DC SSD U.2 15mm [D7-P5620] + 025e c008 NVMe DC SSD U.2 15mm [D5-P5530] + 025e d408 NVMe DC SSD U.2 15mm [D5-P5430] + 025e d40c NVMe DC SSD E1.S 9.5mm [D5-P5430] + 025e d419 NVMe DC SSD E3.S 7.5mm [D5-P5430] + 025e d808 NVMe DC SSD U.2 15mm [D5-P5336] + 025e d819 NVMe DC SSD E3.S 7.5mm [D5-P5336] + 025e d81c NVMe DC SSD E1.L 18mm [D5-P5336] + 025e d81d NVMe DC SSD E1.L 9.5mm [D5-P5336] + 0b70 NVMe DC SSD [Yorktown controller] + 2b59 NVMe DC SSD [Atomos Prime] + 025e 0008 NVMe DC SSD U.2-SFF 15mm [D7-PS1010] + 025e 0019 NVMe DC SSD E3.S-1T 7.5mm [D7-PS1010] + 025e 0108 NVMe DC SSD U.2-SFF 15mm [D7-PS1030] + 025e 0119 NVMe DC SSD E3.S-1T 7.5mm [D7-PS1030] + 108e 48a0 NVMe DC SSD U.2-SFF 15mm 3.84TB [D7-PS1010 Custom] + 108e 48a1 NVMe DC SSD U.2-SFF 15mm 7.68TB [D7-PS1010 Custom] + 108e 48a2 NVMe DC SSD U.2-SFF 15mm 15.36TB [D7-PS1010 Custom] + 108e 48a3 NVMe DC SSD Add-In-Card [D7-PS1030 Custom] + 108e 48a4 NVMe DC SSD E3.S-1T 7.5mm 3.84TB [D7-PS1010 Custom] + 108e 48a5 NVMe DC SSD E3.S-1T 7.5mm 7.68TB [D7-PS1010 Custom] + 108e 48a6 NVMe DC SSD E3.S-1T 7.5mm 15.36TB [D7-PS1010 Custom] + f1ab P41 Plus NVMe SSD (DRAM-less) [Echo Harbor] + f1ac P44 Pro NVMe SSD [Hollywood Beach] +0270 Hauppauge computer works Inc. (Wrong ID) +0291 Davicom Semiconductor, Inc. (Wrong ID) +# SpeedStream is Efficient Networks, Inc, a Siemens Company +02ac SpeedStream + 1012 1012 PCMCIA 10/100 Ethernet Card [RTL81xx] +02e0 XFX Pine Group Inc. (Wrong ID) +0303 Hewlett-Packard Company (Wrong ID) +0308 ZyXEL Communications Corporation (Wrong ID) +0315 SK-Electronics Co., Ltd. +0357 TTTech Computertechnik AG (Wrong ID) + 000a TTP-Monitoring Card V2.0 +0432 SCM Microsystems, Inc. + 0001 Pluto2 DVB-T Receiver for PCMCIA [EasyWatch MobilSet] +0497 Dell Inc. (wrong ID) +060e Lightelligence + 0001 Hummingbird ES +0675 Dynalink + 1700 IS64PH ISDN Adapter + 1702 IS64PH ISDN Adapter + 1703 ISDN Adapter (PCI Bus, DV, W) + 1704 ISDN Adapter (PCI Bus, D, C) +0721 Sapphire, Inc. +0731 Jingjia Microelectronics Co Ltd + 7200 JM7200 Series GPU + 0731 7201 JM7201 + 0731 7202 JM7202 + 0731 7208 JM7200 + 0731 7212 JM7200 + 0731 7214 JM7500 + 0731 7215 JM7200 + 9100 JM9100 + 0731 9101 JM9100 + 0731 9102 JM9100-I + 0731 9103 JM9100M + 910a JH910 + 0731 910a JH910 + 0731 910b JH910-I + 0731 910c JH910-M + 9200 JM9200 + 920a JH920 + 0731 920a JH920 + 0731 920b JH920-I + 0731 920c JH920-M + 920b JH920-I + 920c JH920-M + 9210 JM9210 + 0731 9210 JM9210 + 0731 9211 JM9210-I + 9211 JM9210-I + 9230 JM9230 + 0731 9230 JM9230 + 0731 9231 JM9230-I + 9231 JM9231-I + 9250 JM9250 + 0731 9250 JM9250 + 930a JH930-I + 0731 930a JH930-I + 0731 930b JH930-M + 0731 930c JH930 + 930b JH930-M +0777 Ubiquiti Networks, Inc. +0795 Wired Inc. + 6663 Butane II (MPEG2 encoder board) + 6666 MediaPress (MPEG2 encoder board) +07d1 D-Link System Inc +0824 T1042 [Freescale] +0925 VIA Technologies, Inc. (Wrong ID) +0a89 BREA Technologies Inc +0b0b Rhino Equipment Corp. + 0105 R1T1 + 0205 R4FXO + 0206 RCB4FXO 4-channel FXO analog telephony card + 0305 R4T1 + 0405 R8FXX + 0406 RCB8FXX 8-channel modular analog telephony card + 0505 R24FXX + 0506 RCB24FXS 24-Channel FXS analog telephony card + 0605 R2T1 + 0705 R24FXS + 0706 RCB24FXO 24-Channel FXO analog telephony card + 0905 R1T3 Single T3 Digital Telephony Card + 0906 RCB24FXX 24-channel modular analog telephony card + 0a06 RCB672FXX 672-channel modular analog telephony card +0bae Bachmann electronic GmbH +0ccd Preferred Networks, Inc. + 0110 MN-Core + 0120 MN-Core 2 + 0ccd 0000 MN-Core 2 16GB + 0ccd 0010 MN-Core 2 32GB + 0200 MN-Core Direct Connect + 0201 MN-Core 2 Middle-plane +0e11 Compaq Computer Corporation + 0001 PCI to EISA Bridge + 0002 PCI to ISA Bridge + 0046 Smart Array 64xx + 0e11 4091 Smart Array 6i + 0e11 409a Smart Array 641 + 0e11 409b Smart Array 642 + 0e11 409c Smart Array 6400 + 0e11 409d Smart Array 6400 EM + 0049 NC7132 Gigabit Upgrade Module + 004a NC6136 Gigabit Server Adapter + 005a Remote Insight II board - Lights-Out + 007c NC7770 1000BaseTX + 007d NC6770 1000BaseTX + 0085 NC7780 1000BaseTX + 00b1 Remote Insight II board - PCI device + 00bb NC7760 + 00ca NC7771 + 00cb NC7781 + 00cf NC7772 + 00d0 NC7782 + 00d1 NC7783 + 00e3 NC7761 + 0508 Netelligent 4/16 Token Ring + 1000 Triflex/Pentium Bridge, Model 1000 + 2000 Triflex/Pentium Bridge, Model 2000 + 3032 QVision 1280/p + 3033 QVision 1280/p + 3034 QVision 1280/p + 4000 4000 [Triflex] + 4040 Integrated Array + 4048 Compaq Raid LC2 + 4050 Smart Array 4200 + 4051 Smart Array 4250ES + 4058 Smart Array 431 + 4070 Smart Array 5300 + 4080 Smart Array 5i + 4082 Smart Array 532 + 4083 Smart Array 5312 + 4091 Smart Array 6i + 409a Smart Array 641 + 409b Smart Array 642 + 409c Smart Array 6400 + 409d Smart Array 6400 EM + 6010 HotPlug PCI Bridge 6010 + 7020 USB Controller + a0ec Fibre Channel Host Controller + a0f0 Advanced System Management Controller + 0e11 b0f3 ProLiant DL360 + a0f3 Triflex PCI to ISA Bridge + a0f7 PCI Hotplug Controller + 8086 002a PCI Hotplug Controller A + 8086 002b PCI Hotplug Controller B + a0f8 ZFMicro Chipset USB + a0fc FibreChannel HBA Tachyon + ae10 Smart-2/P RAID Controller + 0e11 4030 Smart-2/P Array Controller + 0e11 4031 Smart-2SL Array Controller + 0e11 4032 Smart Array 3200 Controller + 0e11 4033 Smart Array 3100ES Controller + 0e11 4034 Smart Array 221 Controller + ae29 MIS-L + ae2a MPC + ae2b MIS-E + ae31 System Management Controller + ae32 Netelligent 10/100 TX PCI UTP + ae33 Triflex Dual EIDE Controller + ae34 Netelligent 10 T PCI UTP + ae35 Integrated NetFlex-3/P + ae40 Netelligent Dual 10/100 TX PCI UTP + ae43 Netelligent Integrated 10/100 TX UTP + ae69 CETUS-L + ae6c Northstar + ae6d NorthStar CPU to PCI Bridge + b011 Netelligent 10/100 TX Embedded UTP + b012 Netelligent 10 T/2 PCI UTP/Coax + b01e NC3120 Fast Ethernet NIC + b01f NC3122 Fast Ethernet NIC + b02f NC1120 Ethernet NIC + b030 Netelligent 10/100 TX UTP + b04a 10/100 TX PCI Intel WOL UTP Controller + b060 Smart Array 5300 Controller + b0c6 NC3161 Fast Ethernet NIC + b0c7 NC3160 Fast Ethernet NIC + b0d7 NC3121 Fast Ethernet NIC + b0dd NC3131 Fast Ethernet NIC + b0de NC3132 Fast Ethernet Module + b0df NC6132 Gigabit Module + b0e0 NC6133 Gigabit Module + b0e1 NC3133 Fast Ethernet Module + b123 NC6134 Gigabit NIC + b134 NC3163 Fast Ethernet NIC + b13c NC3162 Fast Ethernet NIC + b144 NC3123 Fast Ethernet NIC + b163 NC3134 Fast Ethernet NIC + b164 NC3165 Fast Ethernet Upgrade Module + b178 Smart Array 5i/532 + 0e11 4080 Smart Array 5i + 0e11 4082 Smart Array 532 + 0e11 4083 Smart Array 5312 + b1a4 NC7131 Gigabit Server Adapter + b200 Memory Hot-Plug Controller + b203 Integrated Lights Out Controller + 103c 3305 iLO2 + b204 Integrated Lights Out Processor + 103c 3305 iLO2 + c000 Remote Insight Lights-Out Edition + f130 NetFlex-3/P ThunderLAN 1.0 + f150 NetFlex-3/P ThunderLAN 2.3 +0e55 HaSoTec GmbH +0eac SHF Communication Technologies AG + 0008 Ethernet Powerlink Managing Node 01 +0f62 Acrox Technologies Co., Ltd. +1000 Broadcom / LSI + 0001 53c810 + 1000 1000 LSI53C810AE PCI to SCSI I/O Processor + 0002 53c820 + 0003 53c825 + 1000 1000 LSI53C825AE PCI to SCSI I/O Processor (Ultra Wide) + 0004 53c815 + 0005 53c810AP + 0006 53c860 + 1000 1000 LSI53C860E PCI to Ultra SCSI I/O Processor + 000a 53c1510 + 0e11 b143 Integrated Dual Channel Wide Ultra2 SCSI Controller + 1000 1000 LSI53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Nonintelligent mode) + 000b 53C896/897 + 0e11 6004 EOB003 Series SCSI host adapter + 1000 1000 LSI53C896/7 PCI to Dual Channel Ultra2 SCSI Multifunction Controller + 1000 1010 LSI22910 PCI to Dual Channel Ultra2 SCSI host adapter + 1000 1020 LSI21002 PCI to Dual Channel Ultra2 SCSI host adapter + 13e9 1000 6221L-4U (Dual U2W SCSI, dual 10/100TX, graphics) + 000c 53c895 + 1000 1010 LSI8951U PCI to Ultra2 SCSI host adapter + 1000 1020 LSI8952U PCI to Ultra2 SCSI host adapter + 1de1 3906 DC-390U2B SCSI adapter + 1de1 3907 DC-390U2W + 000d 53c885 + 000f 53c875 + 0e11 7004 Embedded Ultra Wide SCSI Controller + 1000 1000 LSI53C876/E PCI to Dual Channel SCSI Controller + 1000 1010 LSI22801 PCI to Dual Channel Ultra SCSI host adapter + 1000 1020 LSI22802 PCI to Dual Channel Ultra SCSI host adapter + 1092 8760 FirePort 40 Dual SCSI Controller + 1775 10d0 V5D Single Board Computer Wide Ultra SCSI + 1775 10d1 V5D Single Board Computer Ultra SCSI + 1de1 3904 DC390F/U Ultra Wide SCSI Adapter + 4c53 1000 CC7/CR7/CP7/VC7/VP7/VR7 mainboard + 4c53 1050 CT7 mainboard + 0010 53C1510 + 0e11 4040 Integrated Smart Array Controller + 0e11 4048 RAID LC2 Controller + 1000 1000 53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Intelligent mode) + 0012 53c895a + 1000 1000 LSI53C895A PCI to Ultra2 SCSI Controller + 0013 53c875a + 1000 1000 LSI53C875A PCI to Ultra SCSI Controller + 0014 MegaRAID Tri-Mode SAS3516 + 1000 9460 MegaRAID 9460-16i + 1000 9480 MegaRAID 9480-8i8e + 1000 9481 MegaRAID 9480-8e + 1028 1f3a PERC H745 Adapter + 1028 1f3b PERC H745 Front + 1028 1fd4 PERC H745P MX + 1137 020e UCSC-RAID-M5 12G Modular RAID Controller + 1d49 0602 ThinkSystem RAID 930-16i 4GB Flash PCIe 12Gb Adapter + 1d49 0604 ThinkSystem RAID 930-8e 4GB Flash PCIe 12Gb Adapter + 1d49 0607 ThinkSystem RAID 930-16i 8GB Flash PCIe 12Gb Adapter + 8086 352d Integrated RAID Module RMSP3AD160F + 8086 9460 RAID Controller RSP3TD160F + 8086 9480 RAID Controller RSP3MD088F + 0015 MegaRAID Tri-Mode SAS3416 + 1000 9441 MegaRAID 9440-16i + 1028 1f3c PERC H345 Adapter + 1028 1f3d PERC H345 Front + 1d49 0503 ThinkSystem RAID 530-16i PCIe 12Gb Adapter + 0016 MegaRAID Tri-Mode SAS3508 + 1000 9461 MegaRAID 9460-8i + 1000 9462 MegaRAID 9460-4i + 1000 9463 MegaRAID 9365-28i + 1000 9464 MegaRAID 9365-24i + 1028 1fc9 PERC H840 Adapter + 1028 1fcb PERC H740P Adapter + 1028 1fcd PERC H740P Mini + 1028 1fcf PERC H740P Mini + 1d49 0601 ThinkSystem RAID 930-8i 2GB Flash PCIe 12Gb Adapter + 1d49 0603 ThinkSystem RAID 930-24i 4GB Flash PCIe 12Gb Adapter + 8086 352e Integrated RAID Module RMSP3CD080F + 8086 352f Integrated RAID Module RMSP3HD080E + 8086 9461 RAID Controller RSP3DD080F + 0017 MegaRAID Tri-Mode SAS3408 + 1000 9440 MegaRAID 9440-8i + 1000 9442 MegaRAID 9440-4i + 1d49 0500 ThinkSystem RAID 530-8i PCIe 12Gb Adapter + 1d49 0502 ThinkSystem RAID 530-8i Dense Adapter + 8086 3528 Integrated RAID RMSP3LD060 + 8086 3529 Integrated RAID RMSP3LD060 + 8086 9441 RAID Controller RSP3WD080E + 001b MegaRAID Tri-Mode SAS3504 + 1d49 0605 ThinkSystem RAID 930-4i 2GB Flash Flex Adapter + 001c MegaRAID Tri-Mode SAS3404 + 1d49 0501 ThinkSystem RAID 530-4i Flex Adapter + 0020 53c1010 Ultra3 SCSI Adapter + 1000 1000 LSI53C1010-33 PCI to Dual Channel Ultra160 SCSI Controller + 107b 1040 Server Onboard 53C1010-33 + 1de1 1020 DC-390U3W + 0021 53c1010 66MHz Ultra3 SCSI Adapter + 1000 1000 LSI53C1000/1000R/1010R/1010-66 PCI to Ultra160 SCSI Controller + 1000 1010 Asus TR-DLS onboard 53C1010-66 + 103c 1300 Ultra160 SCSI [AB306A] + 103c 1310 Ultra160 SCSI [A9918A] + 103c 1330 Ultra160 SCSI [A7059A] + 103c 1340 Ultra160 SCSI [A7060A] + 124b 1070 PMC-USCSI3 + 4c53 1080 CT8 mainboard + 4c53 1300 P017 mezzanine (32-bit PMC) + 4c53 1310 P017 mezzanine (64-bit PMC) + 002f MegaRAID SAS 2208 IOV [Thunderbolt] + 1028 1f39 SPERC8-e + 1028 1f3e SPERC 8 + 0030 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI + 0e11 00da ProLiant ML 350 + 1028 0123 LSI Logic 1020/1030 + 1028 014a LSI Logic 1020/1030 + 1028 016c PowerEdge 1850 MPT Fusion SCSI/RAID (Perc 4) + 1028 0183 LSI Logic 1020/1030 + 1028 018a PERC 4/IM + 1028 1010 LSI U320 SCSI Controller + 103c 12c5 Ultra320 SCSI [A7173A] + 103c 1323 Core I/O LAN/SCSI Combo [AB314A] + 103c 3108 Single Channel Ultra320 SCSI HBA G2 + 103c 322a SC11Xe Ultra320 Single Channel PCIe x4 SCSI Host Bus Adapter (412911-B21) + 124b 1170 PMC-USCSI320 + 15ad 1976 LSI Logic Parallel SCSI Controller (emulated) + 1734 1052 PRIMERGY BX/RX/TX S2 series onboard SCSI(IME) + 0031 53c1030ZC PCI-X Fusion-MPT Dual Ultra320 SCSI + 0032 53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI + 1000 1000 LSI53C1020/1030 PCI-X to Ultra320 SCSI Controller + 0033 1030ZC_53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI + 0040 53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI + 1000 0033 MegaRAID SCSI 320-2XR + 1000 0066 MegaRAID SCSI 320-2XRWS + 0041 53C1035ZC PCI-X Fusion-MPT Dual Ultra320 SCSI + 0050 SAS1064 PCI-X Fusion-MPT SAS + 1028 1f04 SAS 5/E + 1028 1f09 SAS 5i/R + 0052 MegaRAID SAS-3 3216/3224 [Cutlass] + 0053 MegaRAID SAS-3 3216/3224 [Cutlass] + 1000 9350 MegaRAID SAS 9341-16i + 1000 9351 MegaRAID SAS 9341-24i + 0054 SAS1068 PCI-X Fusion-MPT SAS + 1028 1f04 SAS 5/E Adapter Controller + 1028 1f05 SAS 5/i Adapter Controller + 1028 1f06 SAS 5/i Integrated Controller + 1028 1f07 SAS 5/iR Integrated RAID Controller + 1028 1f08 SAS 5/iR Integrated RAID Controller + 1028 1f09 SAS 5/iR Adapter RAID Controller + 103c 3228 SAS3080X-HP 8-port PCI-X 133MHz Host Bus Adapter with 2xSFF-8484 + 15ad 1976 SAS Controller + 0055 SAS1068 PCI-X Fusion-MPT SAS + 1033 8336 SAS1068 + 0056 SAS1064ET PCI-Express Fusion-MPT SAS + 1014 03bb ServeRAID BR10il SAS/SATA Controller v2 + 8086 34dc AXX4SASMOD RAID Controller + 0057 M1064E MegaRAID SAS + 8086 346c Embedded Software RAID Technology II (ESTRII) + 0058 SAS1068E PCI-Express Fusion-MPT SAS + 1000 3140 SAS3081E-R 8-Port SAS/SATA Host Bus Adapter + 1028 021d SAS 6/iR Integrated Workstations RAID Controller + 1028 1f0e SAS 6/iR Adapter RAID Controller + 1028 1f0f SAS 6/iR Integrated Blades RAID Controller + 1028 1f10 SAS 6/iR Integrated RAID Controller + 103c 3229 SC44Ge Host Bus Adapter + 0059 MegaRAID SAS 8208ELP/8208ELP + 005a SAS1066E PCI-Express Fusion-MPT SAS + 005b MegaRAID SAS 2208 [Thunderbolt] + 1000 9265 MegaRAID SAS 9265-8i + 1000 9266 MegaRAID SAS 9266-8i + 1000 9267 MegaRAID SAS 9267-8i + 1000 9268 MegaRAID SAS 9265CV-8i / 9270CV-8i + 1000 9269 MegaRAID SAS 9266-4i + 1000 9270 MegaRAID SAS 9270-8i + 1000 9271 MegaRAID SAS 9271-8i + 1000 9272 MegaRAID SAS 9272-8i + 1000 9273 MegaRAID SAS 9270CV-8i + 1000 9274 MegaRAID SAS 9270-4i + 1000 9275 MegaRAID SAS 9271-8iCC + 1000 9276 MegaRAID SAS 9271-4i + 1000 9285 MegaRAID SAS 9285-8e + 1000 9288 MegaRAID SAS 9285CV-8e + 1000 9290 MegaRAID SAS 9286-8e + 1000 9291 MegaRAID SAS 9286CV-8e + 1000 9295 MegaRAID SAS 9286CV-8eCC + 1014 040b ServeRAID M5110 SAS/SATA Controller + 1014 040c ServeRAID M5120 SAS/SATA Controller + 1014 0412 ServeRAID M5110e SAS/SATA Controller + 1028 1f2d PERC H810 Adapter + 1028 1f30 PERC H710 Embedded + 1028 1f31 PERC H710P Adapter + 1028 1f33 PERC H710P Mini (for blades) + 1028 1f34 PERC H710P Mini (for monolithics) + 1028 1f35 PERC H710 Adapter + 1028 1f37 PERC H710 Mini (for blades) + 1028 1f38 PERC H710 Mini (for monolithics) + 15d9 0690 LSI MegaRAID ROMB + 8086 3510 RMS25PB080 RAID Controller + 8086 3511 RMS25PB040 RAID Controller + 8086 3512 RMT3PB080 RAID Controller + 8086 3513 Integrated RAID Module RMS25CB080 + 8086 3514 RMS25CB040 RAID Controller + 8086 351c RMS25PB080N RAID Controller + 8086 351d RMS25CB080N RAID Controller + 8086 9265 RS25DB080 RAID Controller + 8086 9268 RS25AB080 RAID Controller + 8086 9285 RS25NB008 RAID Controller + 8086 9288 RS25SB008 RAID Controller + 005c SAS1064A PCI-X Fusion-MPT SAS + 005d MegaRAID SAS-3 3108 [Invader] + 1000 9361 MegaRAID SAS 9361-8i + 1000 9363 MegaRAID SAS 9361-4i + 1000 9364 MegaRAID SAS 9364-8i + 1000 936a MegaRAID SAS 9364-8i + 1000 9380 MegaRAID SAS 9380-8e + 1028 1f41 PERC H830 Adapter + 1028 1f42 PERC H730P Adapter + 1028 1f43 PERC H730 Adapter + 1028 1f47 PERC H730P Mini + 1028 1f48 PERC H730P Mini (for blades) + 1028 1f49 PERC H730 Mini + 1028 1f4a PERC H730 Mini (for blades) + 1028 1f4d PERC FD33xS + 1028 1f4f PERC H730P Slim + 1028 1f54 PERC FD33xD + 1028 1fd1 PERC H730P MX + 1734 11f6 PRAID EP400i + 17aa 1052 ThinkServer RAID 720i + 17aa 1053 ThinkServer RAID 720ix + 1bd4 0014 12G SAS3108 2G + 1bd4 0015 12G SAS3108 4G + 1d49 0600 ThinkSystem RAID 730-8i 1GB Cache PCIe 12Gb Adapter + 1d49 0608 ThinkSystem RAID 730-8i 2GB Flash PCIe 12Gb Adapter + 1d49 0609 ThinkSystem RAID 730-8i 4GB Flash PCIe 12Gb Adapter + 8086 351e RMS3CC080 RAID Controller + 8086 351f RMS3CC040 RAID Controller + 8086 9360 RS3DC080 RAID Controller + 8086 9362 RS3DC040 RAID Controller + 8086 9380 RS3SC008 RAID Controller + 8086 9381 RS3MC044 RAID Controller + 005e SAS1066 PCI-X Fusion-MPT SAS + 005f MegaRAID SAS-3 3008 [Fury] + 1028 1f44 PERC H330 Adapter + 1028 1f4b PERC H330 Mini + 1028 1f4c PERC H330 Mini (for blades) + 1028 1f4d PERC H330 Embedded (for monolithic) + 1054 306a SAS 3004 iMR ROMB + 1734 1211 PRAID CP400i [D3307-A12] + 1d49 04db ServeRAID M1210 SAS/SATA Controller + 1d49 0504 ThinkSystem RAID 520-8i PCIe 12Gb Adapter + 0060 MegaRAID SAS 1078 + 1000 1006 MegaRAID SAS 8888ELP + 1000 100a MegaRAID SAS 8708ELP + 1000 100e MegaRAID SAS 8884E + 1000 100f MegaRAID SAS 8708E + 1000 1010 MegaRAID SATA 350-8ELP + 1000 1011 MegaRAID SATA 350-4ELP + 1000 1012 MegaRAID SAS 8704ELP + 1000 1016 MegaRAID SAS 8880EM2 + 1014 0363 MegaRAID SAS PCI Express ROMB + 1014 0364 SystemX MegaRAID SAS 8808E + 1014 0365 SystemX MegaRAID SAS 8884E + 1014 0379 SystemX MegaRAID SAS 8880EM2 + 1028 1f0a PERC 6/E Adapter RAID Controller + 1028 1f0b PERC 6/i Adapter RAID Controller + 1028 1f0c PERC 6/i Integrated RAID Controller + 1028 1f0d PERC 6/i Integrated RAID Controller + 1028 1f11 CERC 6/i Integrated RAID Controller + 1033 835a MegaRAID SAS PCI Express ROMB + 1043 824d MegaRAID SAS PCI Express ROMB + 1170 002f MegaRAID SAS PCI Express ROMB + 1170 0036 MegaRAID SAS PCI Express ROMB + 15d9 c080 MegaRAID SAS PCI Express ROMB + 17aa 6b7c MegaRAID SAS PCI Express ROMB + 18a1 0003 LSI MegaRAID SAS PCI Express ROMB + 8086 1006 RAID Controller SRCSAS28EP + 8086 100a RAID Controller SRCSAS28EV + 8086 1010 RAID Controller SRCSATA28E + 8086 34cc Integrated RAID Controller SROMBSAS28E + 8086 34cd Integrated RAID Controller SROMBSAS28E + 8086 3505 Integrated RAID Controller SROMBSASMP2 + 0062 SAS1078 PCI-Express Fusion-MPT SAS + 1000 0062 SAS1078 PCI-Express Fusion-MPT SAS + 0064 SAS2116 PCI-Express Fusion-MPT SAS-2 [Meteor] + 1000 3030 9200-16e 6Gb/s SAS/SATA PCIe x8 External HBA + 1000 30c0 SAS 9201-16i + 1000 30d0 9201-16e 6Gb/s SAS/SATA PCIe x8 External HBA + 0065 SAS2116 PCI-Express Fusion-MPT SAS-2 [Meteor] + 006e SAS2308 PCI-Express Fusion-MPT SAS-2 + 0070 SAS2004 PCI-Express Fusion-MPT SAS-2 [Spitfire] + 1000 3010 SAS9211-4i + 1014 040e ServeRAID H1110 + 0071 MR SAS HBA 2004 + 0072 SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] + 1000 3020 9211-8i + 1000 3040 9210-8i + 1000 3080 9200-8e [LSI SAS 6Gb/s SAS/SATA PCIe x8 External HBA] + 1000 30b0 9200-8e [LSI SAS 6Gb/s SAS/SATA PCIe x8 External HBA] + 1014 03ca IBM 6Gb SAS HBA [9212-4i4e] + 1028 1f1c 6Gbps SAS HBA Adapter + 1028 1f1d PERC H200 Adapter + 1028 1f1e PERC H200 Integrated + 1028 1f1f PERC H200 Modular + 1028 1f20 PERC H200 Embedded + 1028 1f22 PERC H200 Internal Tape Adapter +# Fujitsu D2607 SAS2008 HBA controller + 1734 1177 HBA Ctrl SAS 6G 0/1 [D2607] + 1bd4 000d 6G SAS2008IT + 1bd4 000e 6G SAS2008IR + 1bd4 000f 6G SAS2008IT SA5248 + 1bd4 0010 6G SAS2008IR SA5248 + 4c52 96c8 LRSA96C8 8-Port SATA3(6Gb/s)Exchange Adapter (with Raid) + 8086 350f RMS2LL040 RAID Controller + 8086 3700 SSD 910 Series + 0073 MegaRAID SAS 2008 [Falcon] + 1000 9240 MegaRAID SAS 9240-8i + 1000 9241 MegaRAID SAS 9240-4i + 1000 92a0 MegaRAID SAS 9220-8i + 1014 03b1 ServeRAID M1015 SAS/SATA Controller + 1014 040d ServeRAID M1115 SAS/SATA Controller + 1028 1f4e PERC H310 Adapter + 1028 1f4f PERC H310 Integrated + 1028 1f50 PERC H310 Mini Blades + 1028 1f51 PERC H310 Mini Monolithics + 1028 1f52 PERC H310 Embedded1 + 1028 1f53 PERC H310 Embedded2 + 1028 1f54 PERC H310 Reserved + 1028 1f78 PERC H310 + 1054 3035 LSI MegaRAID SAS 9240-8i + 1137 0072 2004 iMR ROMB + 1137 0073 2008 ROMB + 1137 00b0 UCSC RAID SAS 2008M-8i + 1137 00b1 UCSC RAID SAS 2008M-8i + 1137 00c2 UCS E-Series Double Wide + 1137 00c3 UCS E-Series Single Wide + 15d9 0400 Supermicro SMC2008-iMR + 1734 1177 RAID Ctrl SAS 6G 0/1 (D2607) + 17aa 1051 ThinkServer RAID 510i + 8086 350d RMS2AF040 RAID Controller + 8086 9240 RAID Controller RS2WC080 + 8086 9241 RAID Controller RS2WC040 + 0074 SAS2108 PCI-Express Fusion-MPT SAS-2 [Liberator] + 0076 SAS2108 PCI-Express Fusion-MPT SAS-2 [Liberator] + 0077 SAS2108 PCI-Express Fusion-MPT SAS-2 [Liberator] + 0079 MegaRAID SAS 2108 [Liberator] + 1000 9251 MegaRAID SAS 9260-4ix + 1000 9256 MegaRAID SAS 9260-8ix + 1000 9260 MegaRAID SAS 9260-4i + 1000 9261 MegaRAID SAS 9260-8i + 1000 9262 MegaRAID SAS 9262-8i + 1000 9263 MegaRAID SAS 9261-8i + 1000 9264 MegaRAID SAS 9264-8i + 1000 9267 MegaRAID SAS 9260CV-4i + 1000 9268 MegaRAID SAS 9260CV-8i + 1000 9275 MegaRAID SAS 9280-8ex + 1000 9276 MR9260-16i + 1000 9280 MegaRAID SAS 9280-8e + 1000 9281 MegaRAID SAS 9281-8E + 1000 9282 MegaRAID SAS 9280-4i4e + 1000 9290 MegaRAID SAS 9280DE-24i4e + 1014 03b2 ServeRAID M5015 SAS/SATA Controller + 1014 03b3 ServeRAID M5025 SAS/SATA Controller + 1028 1f15 PERC H800 Adapter + 1028 1f16 PERC H700 Adapter + 1028 1f17 PERC H700 Integrated + 1028 1f18 PERC H700 Modular + 1028 1f1a PERC H800 Proto Adapter + 1028 1f1b PERC H700 Integrated + 1043 8480 PIKE-2108 16PD + 1734 1176 RAID Ctrl SAS 6G 5/6 512MB (D2616) + 1734 1177 RAID Ctrl SAS 6G 0/1 (D2607) + 8086 350b RMS2MH080 RAID Controller + 8086 9256 MegaRAID SAS 9260DE-8i RS2BL080DE + 8086 9260 RAID Controller RS2BL040 + 8086 9261 RAID Controller RS2BL080 + 8086 9264 RAID Controller RT3WB080 Warm Beach (Caster Lite) + 8086 9267 RAID Controller RS2VB040 + 8086 9268 RAID Controller RS2VB080 + 8086 9275 RAID Controller RS2PI008DE + 8086 9276 RAID Controller RS2WG160 + 8086 9280 RAID Controller RS2PI008 + 8086 9282 RAID Controller RS2MB044 + 8086 9290 RAID Controller RS2SG244 + 007c MegaRAID SAS 1078DE + 1014 0395 ServeRAID-AR10is SAS/SATA Controller + 007e SSS6200 PCI-Express Flash SSD + 1000 0504 Nytro NWD-BLP4-800 + 1000 0507 Nytro NWD-BLP4-1600 + 1000 0581 Nytro NWD-BLP4-400 + 1000 100d Nytro NWD-BFH6-1200 + 1000 100e Nytro NWD-BFH8-1600 + 1000 107e Nytro NWD-BFH8-3200 + 1000 1310 Nytro XP6302-8B1536 + 1000 1311 Nytro XP6302-8B2048 + 1000 1314 Nytro XP6302-8B4096 + 1000 150c Nytro XP6210-4A2048 + 1000 150f Nytro XP6210-4B2048 + 1000 160b Nytro XP6209-4A1024 + 1000 1613 Nytro XP6209-4B2048 + 108e 050a Nytro ELP4x200_4d_n + 108e 0581 Nytro ELP4x100_4d_n + 0080 SAS2208 PCI-Express Fusion-MPT SAS-2 + 0081 SAS2208 PCI-Express Fusion-MPT SAS-2 + 0082 SAS2208 PCI-Express Fusion-MPT SAS-2 + 0083 SAS2208 PCI-Express Fusion-MPT SAS-2 + 0084 SAS2208 PCI-Express Fusion-MPT SAS-2 + 0085 SAS2208 PCI-Express Fusion-MPT SAS-2 + 0086 SAS2308 PCI-Express Fusion-MPT SAS-2 + 15d9 0690 Onboard MegaRAID SAS2208 [Thunderbolt] + 15d9 0691 Onboard SAS2308 PCI-Express Fusion-MPT SAS-2 + 0087 SAS2308 PCI-Express Fusion-MPT SAS-2 + 1000 3020 9207-8i SAS2.1 HBA + 1000 3030 SAS9207-4i4e + 1000 3040 9207-8e SAS2.1 HBA + 1000 3050 SAS9217-8i + 1000 3060 SAS9217-4i4e + 1014 0472 N2125 External Host Bus Adapter + 1014 047a N2115 Internal Host Bus Adapter + 1590 0041 H220i + 1590 0042 H221 / 9207-8e + 1590 0044 H220i + 1bd4 0009 6G SAS2308IR + 1bd4 000a 6G SAS2308IT + 8086 3000 RS25GB008 RAID Controller + 8086 3060 RS25FB044 RAID Controller + 8086 3516 RMS25JB080 RAID Controller + 8086 3517 RMS25JB040 RAID Controller + 8086 3518 RMS25KB080 RAID Controller + 8086 3519 RMS25KB040 RAID Controller + 8086 351a RMS25LB040 RAID Controller + 8086 351b RMS25LB080 RAID Controller + 008f 53c875J + 1092 8000 FirePort 40 SCSI Controller + 1092 8760 FirePort 40 Dual SCSI Host Adapter + 0090 SAS3108 PCI-Express Fusion-MPT SAS-3 + 0091 SAS3108 PCI-Express Fusion-MPT SAS-3 + 0094 SAS3108 PCI-Express Fusion-MPT SAS-3 + 0095 SAS3108 PCI-Express Fusion-MPT SAS-3 + 0096 SAS3004 PCI-Express Fusion-MPT SAS-3 + 0097 SAS3008 PCI-Express Fusion-MPT SAS-3 + 1000 3090 SAS9311-8i + 1000 30a0 SAS9300-8e + 1000 30e0 SAS9300-8i + 1000 3130 SAS 9300-16i + 1028 1f45 HBA330 Adapter + 1028 1f46 12Gbps HBA + 1028 1f53 HBA330 Mini + 1028 1fd2 HBA330 MX + 1028 1fd3 HBA330 MMZ +# Supermicro AOC-S3008L-L8e uses 0808 for their SAS3008 SAS controller + 15d9 0808 AOC-S3008L-L8e + 1bd4 0008 12G SAS3008IMR Onboard + 1bd4 000b 12G SAS3008IR + 1bd4 000c 12G SAS3008IT + 1bd4 0011 Inspur 12Gb 8i-3008 IT SAS HBA + 1bd4 0012 12Gb SAS3008IR UDM + 1bd4 001f 12G SAS3008IR Onboard + 1bd4 0020 12G SAS3008IT Onboard + 1bd4 0026 12G SAS3008IT RACK + 1bd4 0027 12G SAS3008IMR RACK + 1bd4 0028 12G SAS3008IR RACK + 00a5 Fusion-MPT 24GSAS/PCIe SAS40xx/41xx + 1000 4600 MegaRAID 9670W-16i Tri-Mode Storage Adapter + 1000 4610 MegaRAID 9670-24i Tri-Mode Storage Adapter + 1000 4620 MegaRAID 9660-16i Tri-Mode Storage Adapter + 1000 4630 MegaRAID 9660-8i8e Tri-Mode Storage Adapter + 1000 4640 eHBA 9600W-16i Tri-Mode Storage Adapter + 1000 4650 eHBA 9600W-16e Tri-Mode Storage Adapter + 1000 4660 eHBA 9600-24i Tri-Mode Storage Adapter + 1000 4670 eHBA 9600-16i Tri-Mode Storage Adapter + 1000 4680 eHBA 9600-16e Tri-Mode Storage Adapter + 1000 4690 MegaRAID 9620-16i Tri-Mode Storage Adapter + 1000 46a0 MegaRAID 9660-24i Tri-Mode Storage Adapter + 1000 46c0 eHBA 9680W-16e Tri-Mode Storage Adapter + 1000 46d0 eHBA 9600-8i8e Tri-Mode Storage Adapter +# eHBA 9602W-16e Tri-Mode Storage Adapter + 1000 46e0 eHBA 9602W-16e Tri-Mode Storage Adapter + 1028 2114 PERC H965i Adapter + 1028 2115 PERC H965i Front + 1028 2117 PERC H965i MX + 1028 213a PERC H965e Adapter + 1028 213b PERC H765i Adapter + 1028 213c PERC H765i Front + 1028 213d PERC H765N Front + 1028 213e PERC H765i MX + 1028 213f PERC H365i Adapter + 1028 2140 PERC H365i Front + 1028 2142 HBA465e Adapter + 1028 2209 HBA465i Adapter + 1028 220a HBA465i Front + 1028 22cb PERC H365i Front + 1028 22cc PERC H965i Front + 1028 22cd HBA465i Front + 15d9 1d03 AOC-S4116L-H16IR (16DD/96DD) RAID Adapter + 15d9 1d07 AOC-S4016L-L16IT Storage Adapter + 15d9 1d08 AOC-S4016L-L16IR Storage Adapter + 1d49 020a ThinkSystem 450W-16e SAS/SATA PCIe Gen4 24Gb HBA + 00ab SAS3516 Fusion-MPT Tri-Mode RAID On Chip (ROC) +# 8 Internal and 8 External port channel 9400 HBA + 1000 3040 HBA 9400-8i8e + 8086 3530 Integrated RAID Module RMSP3JD160J + 00ac SAS3416 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) +# Channel 16 internal port HBA + 1000 3000 HBA 9400-16i +# Channel 16 external port HBA + 1000 3020 HBA 9400-16e + 1028 1fe3 HBA345 Adapter + 1028 1fe4 HBA345 Front + 1d49 0201 ThinkSystem 430-16i SAS/SATA 12Gb HBA + 1d49 0203 ThinkSystem 430-16e SAS/SATA 12Gb HBA + 8086 3000 RAID Controller RSP3QD160J + 8086 3020 RAID Controller RSP3GD016J + 00ae SAS3508 Fusion-MPT Tri-Mode RAID On Chip (ROC) + 00af SAS3408 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) + 1000 3010 HBA 9400-8i +# 9400 Channel 8 external port HBA + 1000 3030 HBA 9400-8e + 1d49 0200 ThinkSystem 430-8i SAS/SATA 12Gb HBA + 1d49 0202 ThinkSystem 430-8e SAS/SATA 12Gb HBA + 1d49 0204 ThinkSystem 430-8i SAS/SATA 12Gb Dense HBA + 00b2 PCIe Switch management endpoint + 1d49 0003 ThinkSystem 1611-8P PCIe Gen4 NVMe Switch Adapter +# 24G SAS/PCIe storage adapter chip + 00b3 Fusion-MPT 24G SAS/PCIe SAS50xx/SAS51xx +# 9760W 32 internal port RAID controller + 1000 5000 MegaRAID 9760W-32i 24G SAS/PCIe Storage Adapter +# 9760W 16 internal port RAID controller + 1000 5001 MegaRAID 9760W-16i 24G SAS/PCIe Storage Adapter +# 9760W 16 internal and 16 external port RAID controller + 1000 5010 MegaRAID 9760W-16i16e 24G SAS/PCIe Storage Adapter +# 9700W 32 internal port Storage controller + 1000 5020 eHBA 9700W-32i 24G SAS/PCIe Storage Adapter +# 9700W 16 internal port Storage controller + 1000 5021 eHBA 9700W-16i 24G SAS/PCIe Storage Adapter +# 9700 16 external port Storage controller + 1000 5030 eHBA 9700-16e 24G SAS/PCIe Storage Adapter + 1028 22d2 PERC H975i Front + 1028 22d3 PERC H975i Adapter + 1d49 020b ThinkSystem 460-16e SAS/SATA PCIe Gen5 24Gb HBA + 00b5 Fusion-MPT 24G SAS/PCIe SAS50xx/SAS51xx +# 9760W 32 internal port RAID controller + 1000 5000 MegaRAID 9760W-32i 24G SAS/PCIe Storage Adapter +# 9760W 16 internal port RAID controller + 1000 5001 MegaRAID 9760W-16i 24G SAS/PCIe Storage Adapter +# 9760W 16 internal and 16 external port RAID controller + 1000 5010 MegaRAID 9760W-16i16e 24G SAS/PCIe Storage Adapter +# 9700W 32 internal port Storage controller + 1000 5020 eHBA 9700W-32i 24G SAS/PCIe Storage Adapter +# 9700W 16 internal port Storage controller + 1000 5021 eHBA 9700W-16i 24G SAS/PCIe Storage Adapter +# 9700 16 external port Storage controller + 1000 5030 eHBA 9700-16e 24G SAS/PCIe Storage Adapter +# Broadcom next-gen MPT PCIe switch + 00b8 Fusion-MPT Switch SAS50xx/SAS51xx + 00be SAS3504 Fusion-MPT Tri-Mode RAID On Chip (ROC) + 00bf SAS3404 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) + 00c0 SAS3324 PCI-Express Fusion-MPT SAS-3 + 00c1 SAS3324 PCI-Express Fusion-MPT SAS-3 + 00c2 SAS3324 PCI-Express Fusion-MPT SAS-3 + 00c3 SAS3324 PCI-Express Fusion-MPT SAS-3 + 00c4 SAS3224 PCI-Express Fusion-MPT SAS-3 +# SAS 9305 16 internal port HBA + 1000 3190 SAS9305-16i +# SAS 9305 24 internal port HBA + 1000 31a0 SAS9305-24i + 1170 0002 SAS3224 PCI Express to 12Gb HBA MEZZ CARD + 00c5 SAS3316 PCI-Express Fusion-MPT SAS-3 + 00c6 SAS3316 PCI-Express Fusion-MPT SAS-3 + 00c7 SAS3316 PCI-Express Fusion-MPT SAS-3 + 00c8 SAS3316 PCI-Express Fusion-MPT SAS-3 + 00c9 SAS3216 PCI-Express Fusion-MPT SAS-3 +# 9305 16 external port SAS HBA + 1000 3180 SAS9305-16e + 00ce MegaRAID SAS-3 3316 [Intruder] + 1000 9371 MegaRAID SAS 9361-16i + 1000 9390 MegaRAID SAS 9380-8i8e + 00cf MegaRAID SAS-3 3324 [Intruder] + 1000 9370 MegaRAID SAS 9361-24i + 00d0 SAS3716 Fusion-MPT Tri-Mode RAID Controller Chip (ROC) +# 9405W 16 internal port channel HBA + 1000 3050 HBA 9405W-16i +# 9405W 8 internal and 8 external port channel HBA + 1000 3070 HBA 9405W-8i8e + 00d1 SAS3616 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) +# 9405W 16 external port Channel HBA + 1000 3080 HBA 9405W-16e +# 9405W 16 internal port Channel HBA + 1000 3090 HBA 9405W-16i + 00d3 MegaRAID Tri-Mode SAS3716W + 00e0 Fusion-MPT 12GSAS/PCIe Unsupported SAS39xx + 00e1 Fusion-MPT 12GSAS/PCIe SAS39xx + 00e2 Fusion-MPT 12GSAS/PCIe Secure SAS39xx + 00e3 Fusion-MPT 12GSAS/PCIe Unsupported SAS39xx + 00e4 Fusion-MPT 12GSAS/PCIe Unsupported SAS38xx +# Invalid part + 1028 200b HBA355i Adapter Invalid +# Invalid part + 1028 200c HBA355i Front Invalid +# Invalid part + 1028 200d HBA355e Adapter Invalid +# Invalid part + 1028 200e HBA350i MX Invalid +# Soft Secure + 00e5 Fusion-MPT 12GSAS/PCIe SAS38xx +# Soft Secure + 1028 200b HBA355i Adapter +# Soft Secure + 1028 200c HBA355i Front +# Soft Secure + 1028 200d HBA355e Adapter +# Soft Secure + 1028 200e HBA350i MX + 1d49 0205 ThinkSystem 440-16i SAS/SATA PCIe Gen4 12Gb Internal HBA + 1d49 0206 ThinkSystem 440-16e SAS/SATA PCIe Gen4 12Gb HBA + 00e6 Fusion-MPT 12GSAS/PCIe Secure SAS38xx + 1000 4050 9500-16i Tri-Mode HBA + 1000 4060 9500-8i Tri-Mode HBA + 1000 4070 9500-16e Tri-Mode HBA + 1000 4080 9500-8e Tri-Mode HBA + 1028 200b HBA355i Adapter + 1028 200c HBA355i Front + 1028 200d HBA355e Adapter + 1028 200e HBA350i MX + 1028 2170 HBA350i MM + 1028 2175 HBA350i Adapter + 1028 2197 HBA350i MM LP + 1028 2212 HBA355e-s Adapter + 15d9 1b64 SCC-B8SB80-B1 (NI22) Storage Controller Card + 15d9 1b65 AOC-S3816L-L16iT (NI22) Storage Adapter + 15d9 1b99 AOC-S3808L-L8iT Storage Adapter + 1d49 0205 ThinkSystem 440-16i SAS/SATA PCIe Gen4 12Gb Internal HBA + 1d49 0206 ThinkSystem 440-16e SAS/SATA PCIe Gen4 12Gb HBA + 1d49 0207 ThinkSystem 440-8i SAS/SATA PCIe Gen4 12Gb HBA + 1d49 0208 ThinkSystem 440-16i SAS/SATA PCIe Gen4 12Gb HBA + 1d49 0209 ThinkSystem 440-8e SAS/SATA PCIe Gen4 12Gb HBA + 8086 4050 Storage Controller RS3P4QF160J + 8086 4070 Storage Controller RS3P4GF016J + 00e7 Fusion-MPT 12GSAS/PCIe Unsupported SAS38xx +# Tampered part + 1028 200b HBA355i Adapter Tampered +# Tampered part + 1028 200c HBA355i Front Tampered +# Tampered part + 1028 200d HBA355e Adapter Tampered +# Tampered part + 1028 200e HBA350i MX Tampered + 02b0 Virtual Endpoint on PCIe Switch + 1d49 0001 ThinkSystem 1610-4P NVMe Switch Adapter + 1d49 0002 ThinkSystem 810-4P NVMe Switch Adapter + 02b1 Virtual Endpoint on PCIe Switch (9749) + 1d49 0004 ThinkSystem 1610-8P NVMe Switch Adapter +# Virtual endpoint used in Broadcom synthetic PCIe switches for resource reservation + 02b2 Virtual PCIe Placeholder Endpoint + 0407 MegaRAID + 1000 0530 MegaRAID 530 SCSI 320-0X RAID Controller + 1000 0531 MegaRAID 531 SCSI 320-4X RAID Controller + 1000 0532 MegaRAID 532 SCSI 320-2X RAID Controller + 1028 0531 PowerEdge Expandable RAID Controller 4/QC + 1028 0533 PowerEdge Expandable RAID Controller 4/QC + 8086 0530 MegaRAID Intel RAID Controller SRCZCRX + 8086 0532 MegaRAID Intel RAID Controller SRCU42X + 0408 MegaRAID + 1000 0001 MegaRAID SCSI 320-1E RAID Controller + 1000 0002 MegaRAID SCSI 320-2E RAID Controller + 1025 004d MegaRAID ACER ROMB-2E RAID Controller + 1028 0001 PowerEdge RAID Controller PERC4e/SC + 1028 0002 PowerEdge RAID Controller PERC4e/DC + 1028 0012 PowerEdge RAID Controller RAC4 + 1028 0015 PowerEdge RAID Controller PERC5 + 1028 1f03 PowerEdge RAID Controller PERC5 + 1734 1065 FSC MegaRAID PCI Express ROMB + 8086 0002 MegaRAID Intel RAID Controller SRCU42E + 8086 3449 MegaRAID Intel RAID Controller SROMBU + 0409 MegaRAID + 1000 3004 MegaRAID SATA 300-4X RAID Controller + 1000 3008 MegaRAID SATA 300-8X RAID Controller + 8086 3008 MegaRAID RAID Controller SRCS28X + 8086 3431 MegaRAID RAID Controller Alief SROMBU42E + 8086 3499 MegaRAID RAID Controller Harwich SROMBU42E + 0411 MegaRAID SAS 1068 + 1000 1001 MegaRAID SAS 8408E + 1000 1002 MegaRAID SAS 8480E + 1000 1003 MegaRAID SAS 8344ELP + 1000 1004 MegaRAID SAS 8308ELP + 1000 1008 MegaRAID SAS 84016E + 1000 100c MegaRAID SATA 300-12E + 1000 100d MegaRAID SATA 300-16E + 1000 2004 MegaRAID SATA 300-8ELP + 1000 2005 MegaRAID SATA 300-4ELP + 1033 8287 MegaRAID SAS PCI Express ROMB + 1054 3016 MegaRAID SAS RoMB Server + 1734 1081 MegaRAID SAS PCI Express ROMB + 1734 10a3 MegaRAID SAS PCI Express ROMB + 8086 1001 RAID Controller SRCSAS18E + 8086 1003 RAID Controller SRCSAS144E + 8086 3500 SROMBSAS18E RAID Controller + 8086 3501 SROMBSAS18E RAID Controller + 8086 3504 SROMBSAS18E RAID Controller + 0413 MegaRAID SAS 1068 [Verde ZCR] + 1000 1005 MegaRAID SAS 8300XLP + 0621 FC909 Fibre Channel Adapter + 0622 FC929 Fibre Channel Adapter + 1000 1020 44929 O Dual Fibre Channel card + 0623 FC929 LAN + 0624 FC919 Fibre Channel Adapter + 0625 FC919 LAN + 0626 FC929X Fibre Channel Adapter + 1000 1010 7202-XP-LC Dual Fibre Channel card + 0627 FC929X LAN + 0628 FC919X Fibre Channel Adapter + 0629 FC919X LAN + 0640 FC949X Fibre Channel Adapter + 0642 FC939X Fibre Channel Adapter + 0646 FC949ES Fibre Channel Adapter + 0701 83C885 NT50 DigitalScape Fast Ethernet + 0702 Yellowfin G-NIC gigabit ethernet + 1318 0000 PEI100X + 0804 SA2010 + 0805 SA2010ZC + 0806 SA2020 + 0807 SA2020ZC + 0901 61C102 + 1000 63C815 + 10e0 MegaRAID 12GSAS/PCIe Unsupported SAS39xx + 1028 1ae0 PERC H755 Adapter - Invalid Device + 1028 1ae1 PERC H755 Front - Invalid Device + 1028 1ae2 PERC H755N Front - Invalid Device + 1028 1ae3 PERC H755 MX - Invalid Device + 10e1 MegaRAID 12GSAS/PCIe SAS39xx + 1028 1ae0 PERC H755 Adapter + 1028 1ae1 PERC H755 Front + 1028 1ae2 PERC H755N Front + 1028 1ae3 PERC H755 MX + 1d49 060a ThinkSystem RAID 940-8i 4GB Flash PCIe Gen4 12Gb Adapter + 1d49 060b ThinkSystem RAID 940-8i 8GB Flash PCIe Gen4 12Gb Adapter + 1d49 060c ThinkSystem RAID 940-16i 8GB Flash PCIe Gen4 12Gb Adapter + 1d49 060d ThinkSystem RAID 940-16i 8GB Flash PCIe Gen4 12Gb Internal Adapter + 1d49 060e ThinkSystem RAID 940-32i 8GB Flash PCIe Gen4 12Gb Adapter + 1d49 060f ThinkSystem RAID 940-8e 4GB Flash PCIe Gen4 12Gb Adapter + 10e2 MegaRAID 12GSAS/PCIe Secure SAS39xx +# 9560 16 internal port RAID controller + 1000 4000 MegaRAID 9560-16i +# 9561 16 internal port RAID controller + 1000 4002 MegaRAID 9561-16i +# 9560 8 internal port RAID controller + 1000 4010 MegaRAID 9560-8i +# 9550 8 internal port RAID controller + 1000 4015 MegaRAID 9550-8i +# 9580 8 internal & 8 external port RAID controller + 1000 4020 MegaRAID 9580-8i8e +# MegaRAID 9562-16i 9562 16 internal port RAID controller + 1000 40b0 MegaRAID 9562-16i + 1028 1ae0 PERC H755 Adapter + 1028 1ae1 PERC H755 Front + 1028 1ae2 PERC H755N Front + 1028 1ae3 PERC H755 MX + 1028 2171 PERC H750 Mini + 1028 2176 PERC H750 Adapter + 15d9 1b66 AOC-S3908L-H8iR RAID Adapter + 15d9 1b67 AOC-S3916L-H16iR RAID Adapter + 15d9 1c06 AOC-S3916L-H16iR-32DD+ RAID Adapter + 1d49 060a ThinkSystem RAID 940-8i 4GB Flash PCIe Gen4 12Gb Adapter + 1d49 060b ThinkSystem RAID 940-8i 8GB Flash PCIe Gen4 12Gb Adapter + 1d49 060c ThinkSystem RAID 940-16i 8GB Flash PCIe Gen4 12Gb Adapter + 1d49 060d ThinkSystem RAID 940-16i 8GB Flash PCIe Gen4 12Gb Internal Adapter + 1d49 060e ThinkSystem RAID 940-32i 8GB Flash PCIe Gen4 12Gb Adapter + 1d49 060f ThinkSystem RAID 940-8e 4GB Flash PCIe Gen4 12Gb Adapter + 1d49 0610 ThinkSystem RAID 940-16i 4GB Flash PCIe Gen4 12Gb Adapter + 8086 4000 RAID Controller RS3P4TF160F + 8086 4020 RAID Controller RS3P4MF088F + 10e3 MegaRAID 12GSAS/PCIe Unsupported SAS39xx + 1028 1ae0 PERC H755 Adapter - Tampered Device + 1028 1ae1 PERC H755 Front - Tampered Device + 1028 1ae2 PERC H755N Front - Tampered Device + 1028 1ae3 PERC H755 MX - Tampered Device + 10e4 MegaRAID 12GSAS/PCIe Unsupported SAS38xx + 10e5 MegaRAID 12GSAS/PCIe SAS38xx + 10e6 MegaRAID 12GSAS/PCIe Secure SAS38xx + 1000 04d9 3808N iMR ROMB + 1000 04da 3808N iMR ROMB + 1000 04db 3808N iMR ROMB + 1000 04dc 3808N iMR ROMB + 1000 04dd 3808N iMR ROMB + 1000 40d8 MegaRAID 9524-8i + 1000 40e0 MegaRAID 9540-2M2 + 1028 2172 PERC H355 Adapter + 1028 2173 PERC H355 Front + 1028 2174 PERC H350 Mini + 1028 2177 PERC H350 Adapter + 1028 2199 PERC H350 Mini LP + 15d9 1b9d AOC-S3816L-L16IR Storage Adapter + 15d9 1b9f AOC-S3816L-L8IR Storage Adapter + 15d9 1c6d AOC-S3808L-L8IR Storage Adapter + 15d9 1c6e AOC-SLG4-2H8M2 Storage Adapter + 1d49 0505 ThinkSystem RAID 540-8i PCIe Gen4 12Gb Adapter + 1d49 0506 ThinkSystem RAID 540-16i PCIe Gen4 12Gb Adapter + 1d49 0507 ThinkSystem RAID 545-8i PCIe Gen4 12Gb Adapter + 1d49 0700 ThinkSystem M.2 RAID B540i-2i SATA/NVMe Enablement Kit + 1d49 0701 ThinkSystem 7mm RAID B540p-2HS SATA/NVMe Enablement Kit + 1d49 0702 ThinkSystem M.2 RAID B540p-2HS SATA/NVMe Enablement Kit + 1d49 0703 ThinkSystem M.2 RAID B540d-2HS SATA/NVMe Enablement Kit + 1d49 0704 ThinkSystem M.2 RAID B545i-2i SATA/NVMe Enablement Kit + 10e7 MegaRAID 12GSAS/PCIe Unsupported SAS38xx + 1960 MegaRAID + 1000 0518 MegaRAID 518 SCSI 320-2 Controller + 1000 0520 MegaRAID 520 SCSI 320-1 Controller + 1000 0522 MegaRAID 522 i4 133 RAID Controller + 1000 0523 MegaRAID SATA 150-6 RAID Controller + 1000 4523 MegaRAID SATA 150-4 RAID Controller + 1000 a520 MegaRAID ZCR SCSI 320-0 Controller + 1028 0518 MegaRAID 518 DELL PERC 4/DC RAID Controller + 1028 0520 MegaRAID 520 DELL PERC 4/SC RAID Controller + 1028 0531 PowerEdge Expandable RAID Controller 4/QC + 1028 0533 PowerEdge Expandable RAID Controller 4/QC + 8086 0520 MegaRAID RAID Controller SRCU41L + 8086 0523 MegaRAID RAID Controller SRCS16 + 3050 SAS2008 PCI-Express Fusion-MPT SAS-2 + 3150 1068e + 6001 DX1 Multiformat Broadcast HD/SD Encoder/Decoder + c010 PEX880xx PCIe Gen 4 Switch + 1000 100b PEX88000 PCIe Gen 4 Virtual Upstream/Downstream Port + 1000 2004 PEX88000 Virtual PCIe TWC/NT2 Endpoint + 1000 2005 PEX88000 Virtual PCIe gDMA Endpoint + 1000 a024 PEX88024 24 lane/port PCIe Gen 4.0 Switch + 1000 a032 PEX88032 32 lane/port PCIe Gen 4 Switch + 1000 a048 PEX88048 50 lane/port PCIe Gen 4.0 Switch + 1000 a064 PEX88064 64 lane/port PCIe Gen 4 Switch + 1000 a080 PEX88080 80 lane/port PCIe Gen 4 Switch + 1000 a096 PEX88096 98 lane/port PCIe Gen 4.0 Switch + 4c52 9f48 LRNV9F48 4-port Built-in 8654 NVMe Switching Adapter + c012 PEX880xx PCIe Gen 4 Switch +# Virtual endpoint used in Broadcom synthetic PCIe switches for resource reservation + 1000 100b PEX88000 PCIe Gen 4 Virtual Upstream/Downstream Port +# For secure part version of this chip + 1000 2004 PEX88000 Virtual PCIe TWC/NT2 Endpoint +# For secure part version of this chip + 1000 2005 PEX88000 Virtual PCIe gDMA Endpoint +# For secure part version of this chip + 1000 a024 PEX88024 24 lane/port PCIe Gen 4.0 Switch +# For secure part version of this chip + 1000 a032 PEX88032 32 lane/port PCIe Gen 4.0 Switch +# For secure part version of this chip + 1000 a048 PEX88048 48 lane/port PCIe Gen 4.0 Switch + 1000 a064 PEX88064 64 lane/port PCIe Gen 4.0 Switch +# For secure part version of this chip + 1000 a080 PEX88080 80 lane/port PCIe Gen 4.0 Switch +# For secure part version of this chip + 1000 a096 PEX88096 96 lane/port PCIe Gen 4.0 Switch + 1d49 0003 ThinkSystem 1611-8P PCIe Gen4 NVMe Switch Adapter + c030 PEX890xx PCIe Gen 5 Switch + 1000 0024 PEX89024 PCIe Gen 5 24 port/lane Switch Upstream/Downstream Port + 1000 0032 PEX89032 PCIe Gen 5 32 port/lane Switch Upstream/Downstream Port + 1000 0048 PEX89048 PCIe Gen 5 48 port/lane Switch Upstream/Downstream Port + 1000 0072 PEX89072 PCIe Gen 5 36 port/72 lane Switch Upstream/Downstream Port + 1000 0088 PEX89088 PCIe Gen 5 44 port/88 lane Switch Upstream/Downstream Port + 1000 0104 PEX89104 PCIe Gen 5 52 port/104 lane Switch Upstream/Downstream Port + 1000 0144 PEX89144 PCIe Gen 5 72 port/144 lane Switch Upstream/Downstream Port + 1000 100b PEX89000 PCIe Gen 5 Virtual Upstream/Downstream Port + 1000 2004 PEX89000 Virtual PCIe TWC/NT 2.0 Endpoint + 1000 2005 PEX89000 Virtual PCIe gDMA Endpoint +# Lower lane count PEX89000 switch + c034 PEX890xx PCIe Gen 5 Switch +# Lower lane count PEX89000 switch + 1000 0024 PEX89024 PCIe Gen 5 24 port/lane Switch Upstream/Downstream Port + 1000 0032 PEX89032 PCIe Gen 5 32 port/lane Switch Upstream/Downstream Port +# Lower lane count PEX89000 switch + 1000 0048 PEX89048 PCIe Gen 5 48 port/lane Switch Upstream/Downstream Port +# Lower lane count PEX89000 switch + 1000 100b PEX89000 PCIe Gen 5 Virtual Upstream/Downstream Port +# Lower lane count PEX89000 switch + 1000 2004 PEX89000 Virtual PCIe TWC/NT 2.0 Endpoint +# Lower lane count PEX89000 switch + 1000 2005 PEX89000 Virtual PCIe gDMA Endpoint +1001 Kolter Electronic + 0010 PCI 1616 Measurement card with 32 digital I/O lines + 0011 OPTO-PCI Opto-Isolated digital I/O board + 0012 PCI-AD/DA Analogue I/O board + 0013 PCI-OPTO-RELAIS Digital I/O board with relay outputs + 0014 PCI-Counter/Timer Counter Timer board + 0015 PCI-DAC416 Analogue output board + 0016 PCI-MFB Analogue I/O board + 0017 PROTO-3 PCI Prototyping board + 9100 INI-9100/9100W SCSI Host +# nee ATI Technologies, Inc. +1002 Advanced Micro Devices, Inc. [AMD/ATI] + 1304 Kaveri + 1305 Kaveri + 1306 Kaveri + 1307 Kaveri + 1308 Kaveri HDMI/DP Audio Controller + 17aa 3988 Z50-75 + 1309 Kaveri [Radeon R6/R7 Graphics] + 17aa 3830 Z50-75 + 130a Kaveri [Radeon R6 Graphics] + 130b Kaveri [Radeon R4 Graphics] + 130c Kaveri [Radeon R7 Graphics] + 130d Kaveri [Radeon R6 Graphics] + 130e Kaveri [Radeon R5 Graphics] + 130f Kaveri [Radeon R7 Graphics] + 1310 Kaveri + 1311 Kaveri + 1312 Kaveri + 1313 Kaveri [Radeon R7 Graphics] + 1314 Wrestler HDMI Audio + 174b 1001 PURE Fusion Mini + 1315 Kaveri [Radeon R5 Graphics] + 1316 Kaveri [Radeon R5 Graphics] + 1317 Kaveri + 1318 Kaveri [Radeon R5 Graphics] + 131b Kaveri [Radeon R4 Graphics] + 131c Kaveri [Radeon R7 Graphics] + 131d Kaveri [Radeon R6 Graphics] + 13e9 Ariel/Navi10Lite + 13f9 Oberon/Navi12Lite + 13fe Cyan Skillfish [BC-250] +# Used in the Steam Deck OLED + 1435 Sephiroth [AMD Custom GPU 0405] + 145a Dummy Function (absent graphics controller) + 1478 Navi 10 XL Upstream Port of PCI Express Switch + 1479 Navi 10 XL Downstream Port of PCI Express Switch + 1506 Mendocino + 154c Kryptos [Radeon RX 350] + 1462 7c28 MS-7C28 Motherboard + 154e Garfield + 1551 Arlene + 1552 Pooky + 1561 Anubis + 15bf Phoenix1 + 15c8 Phoenix2 + 15d8 Picasso/Raven 2 [Radeon Vega Series / Radeon Vega Mobile Series] + 103c 8615 Pavilion Laptop 15-cw1xxx + 17aa 3181 ThinkCentre M75n IoT + 17aa 5124 ThinkPad E595 + 1dc2 2209 Avita Pura 14 Notebook + ea50 cc10 RXi2-BP + 15dd Raven Ridge [Radeon Vega Series / Radeon Vega Mobile Series] + 103c 83c6 Radeon Vega 8 Mobile + 1043 876b PRIME Motherboard + 1458 d000 Radeon RX Vega 11 + ea50 cc10 RXi2-BP + 15de Raven/Raven2/Fenghuang HDMI/DP Audio Controller + 103c 8615 Pavilion Laptop 15-cw1xxx + 1043 876b PRIME B450M-A Motherboard + 17aa 5124 ThinkPad E595 + ea50 cc10 RXi2-BP + 15df Raven/Raven2/Fenghuang/Renoir Cryptographic Coprocessor + 103c 8615 Pavilion Laptop 15-cw1xxx + ea50 ce19 mCOM10-L1900 + 15e7 Barcelo + 103c 8b17 ProBook 445 G9/455 G9 [Ryzen 7 Integrated Radeon GPU] + 15ff Fenghuang [Zhongshan Subor Z+] + 1607 Arden + 1636 Renoir [Radeon Vega Series / Radeon Vega Mobile Series] + 1637 Renoir Radeon High Definition Audio Controller + 1638 Cezanne [Radeon Vega Series / Radeon Vega Mobile Series] + 1043 16c2 Radeon Vega 8 +# Used in the Steam Deck LCD + 163f VanGogh [AMD Custom GPU 0405] + 1640 Rembrandt Radeon High Definition Audio Controller + 164c Lucienne + 164d Rembrandt + 164e Raphael + 164f Phoenix + 1681 Rembrandt [Radeon 680M] + 1714 BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series] + 103c 168b ProBook 4535s + 1900 Phoenix3 + 1901 Phoenix4 + 3150 RV380/M24 [Mobility Radeon X600] + 103c 0934 nx8220 + 3151 RV380 GL [FireMV 2400] + 3152 RV370/M22 [Mobility Radeon X300] + 3154 RV380/M24 GL [Mobility FireGL V3200] + 3155 RV380 GL [FireMV 2400] + 3171 RV380 GL [FireMV 2400] (Secondary) + 3e50 RV380 [Radeon X550/X600] + 3e54 RV380 GL [FireGL V3200] + 3e70 RV380 [Radeon X550/X600] (Secondary) + 4136 RS100 [Mobility IGP 320M] + 4137 RS200 [Radeon IGP 340] + 4144 R300 [Radeon 9500] + 4146 R300 [Radeon 9700 PRO] + 4147 R300 GL [FireGL Z1] + 4148 R350 [Radeon 9800/9800 SE] + 4150 RV350 [Radeon 9550/9600/X1050 Series] + 1002 0002 R9600 Pro primary (Asus OEM for HP) + 1002 0003 R9600 Pro secondary (Asus OEM for HP) + 1002 4722 All-in-Wonder 2006 AGP Edition + 1458 4024 GV-R96128D + 148c 2064 R96A-C3N + 148c 2066 R96A-C3N + 174b 7c19 Atlantis Radeon 9600 Pro + 174b 7c29 GC-R9600PRO + 17ee 2002 Radeon 9600 256Mb Primary + 18bc 0101 GC-R9600PRO (Primary) + 4151 RV350 [Radeon 9600 Series] + 1043 c004 A9600SE + 174b 7c37 Radeon 9600SE 128M DDR V/D/VO + 4152 RV360 [Radeon 9600/X1050 Series] + 1002 0002 Radeon 9600XT + 1002 4772 All-in-Wonder 9600 XT + 1043 c002 Radeon 9600 XT TVD + 1043 c01a A9600XT/TD + 1462 9510 RX9600XT (MS-8951) + 174b 7c29 Radeon 9600XT + 1787 4002 Radeon 9600 XT + 4153 RV350 [Radeon 9550] + 1043 010c A9550GE/TD + 1462 932c RX9550SE-TD128 (MS-8932) + 4154 RV350 GL [FireGL T2] + 4155 RV350 [Radeon 9600] + 4157 RV350 GL [FireGL T2] + 4158 68800AX [Graphics Ultra Pro PCI] + 4164 R300 [Radeon 9500 PRO] (Secondary) + 4165 R300 [Radeon 9700 PRO] (Secondary) + 4166 R300 [Radeon 9700 PRO] (Secondary) + 4168 RV350 [Radeon 9800 SE] (Secondary) + 4170 RV350 [Radeon 9550/9600/X1050 Series] (Secondary) + 1002 0003 R9600 Pro secondary (Asus OEM for HP) + 1002 4723 All-in-Wonder 2006 AGP Edition (Secondary) + 1458 4025 GV-R96128D (Secondary) + 148c 2067 R96A-C3N (Secondary) + 174b 7c28 GC-R9600PRO (Secondary) + 17ee 2003 Radeon 9600 256Mb (Secondary) + 18bc 0100 GC-R9600PRO (Secondary) + 4171 RV350 [Radeon 9600] (Secondary) + 1043 c005 A9600SE (Secondary) + 174b 7c36 Radeon 9600SE 128M DDR V/D/VO (secondary) + 4172 RV350 [Radeon 9600/X1050 Series] (Secondary) + 1002 0003 Radeon 9600XT (Secondary) + 1002 4773 All-in-Wonder 9600 XT (Secondary) + 1043 c003 A9600XT (Secondary) + 1043 c01b A9600XT/TD (Secondary) + 174b 7c28 Radeon 9600XT (Secondary) + 1787 4003 Radeon 9600 XT (Secondary) + 4173 RV350 [Radeon 9550] (Secondary) + 1043 010d A9550GE/TD (Secondary) + 4242 R200 [All-In-Wonder Radeon 8500 DV] + 1002 02aa Radeon 8500 AIW DV Edition + 4243 R200 PCI Bridge [All-in-Wonder Radeon 8500DV] + 4336 RS100 [Radeon IGP 320M] + 1002 4336 Pavilion ze4300 ATI Radeon Mobility U1 (IGP 320 M) + 103c 0024 Pavilion ze4400 builtin Video + 161f 2029 eMachines M5312 builtin Video + 4337 RS200M [Radeon IGP 330M/340M/345M/350M] + 1014 053a ThinkPad R40e + 103c 0850 Radeon IGP 345M + 4341 SB200 AC97 Audio Controller + 4342 SB200 PCI to PCI Bridge + 4345 SB200 EHCI USB Controller + 4346 Crayola 6 [XENOS Parent Die (XBOX 360)] + 4347 SB200 OHCI USB Controller #1 + 4348 SB200 OHCI USB Controller #2 + 4349 SB200 IDE Controller + 434c SB200 PCI to LPC Bridge + 434d SB200 AC97 Modem Controller + 4353 SB200 SMBus Controller + 4354 215CT [Mach64 CT PCI] + 4358 Mach64 CX [Graphics Xpression] + 4361 SB300 AC'97 Audio Controller + 4362 SB300 PCI to PCI Bridge + 4363 SB300 SMBus Controller + 4365 SB300 USB Controller (EHCI) + 4367 SB300 USB Controller (EHCI) + 4368 SB300 USB Controller (EHCI) + 4369 SB300 IDE Controller + 436c SB300 PCI to LPC Bridge + 436d SB300 AC97 Modem Controller + 436e SB300 Serial ATA Controller + 4370 IXP SB400 AC'97 Audio Controller + 1025 0079 Aspire 5024WLMMi + 1025 0091 Aspire 5032WXMi + 103c 2a05 Pavilion t3030.de Desktop PC + 103c 308b MX6125 + 105b 0c81 Realtek ALC 653 + 107b 0300 MX6421 + 1462 0131 MS-1013 Notebook + 4371 IXP SB4x0 PCI-PCI Bridge + 103c 308b MX6125 + 1462 7217 Aspire L250 + 4372 IXP SB4x0 SMBus Controller + 1025 0080 Aspire 5024WLMMi + 103c 2a20 Pavilion t3030.de Desktop PC + 103c 308b MX6125 + 1462 0131 MS-1013 Notebook + 1462 7217 Aspire L250 + 4373 IXP SB4x0 USB2 Host Controller + 1025 0080 Aspire 5024WLMMi + 103c 2a20 Pavilion t3030.de Desktop PC + 103c 308b MX6125 + 1462 7217 Aspire L250 + 4374 IXP SB4x0 USB Host Controller + 103c 2a20 Pavilion t3030.de Desktop PC + 103c 308b MX6125 + 1462 7217 Aspire L250 + 4375 IXP SB4x0 USB Host Controller + 1025 0080 Aspire 5024WLMMi + 103c 2a20 Pavilion t3030.de Desktop PC + 103c 308b MX6125 + 1462 7217 Aspire L250 + 4376 IXP SB4x0 IDE Controller + 1025 0080 Aspire 5024WLMMi + 103c 2a20 Pavilion t3030.de Desktop PC + 103c 308b MX6125 + 1462 0131 MS-1013 Notebook + 1462 7217 Aspire L250 + 4377 IXP SB4x0 PCI-ISA Bridge + 1025 0080 Aspire 5024WLMi + 103c 2a20 Pavilion t3030.de Desktop PC + 103c 308b MX6125 + 1462 7217 Aspire L250 + 4378 IXP SB400 AC'97 Modem Controller + 1025 0080 Aspire 5024WLMMi + 103c 308b MX6125 + 1462 0131 MS-1013 Notebook + 4379 IXP SB4x0 Serial ATA Controller + 1462 7141 Aspire L250 + 437a IXP SB400 Serial ATA Controller + 1002 4379 4379 Serial ATA Controller + 1002 437a 437A Serial ATA Controller + 1462 7141 Aspire L250 + 14f1 8800 Leadtek WinFast TV2000XP Expert + 437b IXP SB4x0 High Definition Audio Controller + 1002 437b IXP SB4x0 High Definition Audio Controller + 10cf 1326 Fujitsu Lifebook A3040 + 1734 10b8 Realtek High Definition Audio + 4380 SB600 Non-Raid-5 SATA + 103c 2813 DC5750 Microtower + 1179 ff50 Satellite P305D-S8995E + 1458 b003 GA-MA790FX-DS5 (rev. 1.0) + 1458 b005 Gigabyte GA-MA69G-S3H Motherboard + 1462 7327 K9AG Neo2 + 17f2 5999 KI690-AM2 Motherboard + 4381 SB600 SATA Controller (RAID 5 mode) + 4382 SB600 AC97 Audio + 4383 SBx00 Azalia (Intel HDA) + 1019 2120 A785GM-M + 103c 1611 Pavilion dm1z-3000 + 103c 280a DC5750 Microtower + 1043 8230 M3A78-EH Motherboard + 1043 836c M4A785TD Motherboard + 1043 8410 M4A89GTD PRO/USB3 Motherboard + 1043 841b M5A88-V EVO + 1043 8445 M5A78L LE + 105b 0e13 N15235/A74MX mainboard / AMD SB700 + 1179 ff1e Satellite C660D-113 + 1179 ff50 Satellite P305D-S8995E + 1458 a022 GA-770/78-series motherboard + 1458 a102 GA-880GMA-USB3 + 1462 7596 760GM-E51(MS-7596) Motherboard + 17f2 5000 KI690-AM2 Motherboard + 4384 SBx00 PCI to PCI Bridge + 4385 SBx00 SMBus Controller + 1019 2120 A785GM-M + 103c 1611 Pavilion DM1Z-3000 + 103c 280a DC5750 Microtower + 1043 82ef M3A78-EH Motherboard + 1043 8389 M4A785TD Motherboard + 105b 0e13 N15235/A74MX mainboard / AMD SB700 + 1179 ff50 Satellite P305D-S8995E + 1458 4385 GA-770/78-series motherboard + 1462 7368 K9AG Neo2 + 1462 7596 760GM-E51(MS-7596) Motherboard + 15d9 a811 H8DGU + 174b 1001 PURE Fusion Mini + 17f2 5000 KI690-AM2 Motherboard + 4386 SB600 USB Controller (EHCI) + 103c 280a DC5750 Microtower + 1179 ff50 Satellite P305D-S8995E + 1462 7368 K9AG Neo2 + 17f2 5000 KI690-AM2 Motherboard + 4387 SB600 USB (OHCI0) + 103c 280a DC5750 Microtower + 1179 ff50 Satellite P305D-S8995E + 1462 7368 K9AG Neo2 + 17f2 5000 KI690-AM2 Motherboard + 4388 SB600 USB (OHCI1) + 103c 280a DC5750 Microtower + 1179 ff50 Satellite P305D-S8995E + 1462 7368 K9AG Neo2 + 17f2 5000 KI690-AM2 Motherboard + 4389 SB600 USB (OHCI2) + 103c 280a DC5750 Microtower + 1179 ff50 Satellite P305D-S8995E + 1462 7368 K9AG Neo2 + 17f2 5000 KI690-AM2 Motherboard + 438a SB600 USB (OHCI3) + 103c 280a DC5750 Microtower + 1179 ff50 Satellite P305D-S8995E + 1462 7368 K9AG Neo2 + 17f2 5000 KI690-AM2 Motherboard + 438b SB600 USB (OHCI4) + 103c 280a DC5750 Microtower + 1179 ff50 Satellite P305D-S8995E + 1462 7368 K9AG Neo2 + 17f2 5000 KI690-AM2 Motherboard + 438c SB600 IDE + 103c 280a DC5750 Microtower + 1179 ff50 Satellite P305D-S8995E + 1458 5002 Gigabyte GA-MA69G-S3H Motherboard + 1462 7368 K9AG Neo2 + 17f2 5000 KI690-AM2 Motherboard + 438d SB600 PCI to LPC Bridge + 103c 280a DC5750 Microtower + 1179 ff50 Satellite P305D-S8995E + 1462 7368 K9AG Neo2 + 17f2 5000 KI690-AM2 Motherboard + 438e SB600 AC97 Modem + 4390 SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode] + 1043 82ef M3A78-EH Motherboard + 1043 8389 M4A785TD Motherboard + 105b 0e13 N15235/A74MX mainboard / AMD SB700 + 1458 b002 GA-MA770-DS3rev2.0 Motherboard + 1462 7596 760GM-E51(MS-7596) Motherboard + 1849 4390 Motherboard (one of many) + 4391 SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] + 103c 1609 ProLiant MicroServer N36L + 103c 1611 Pavilion DM1Z-3000 + 1043 82ef M3A78-EH Motherboard + 1043 8443 M5A88-V EVO + 1043 84dd M5A99X EVO (R1.0) SB950 + 105b 0e13 N15235/A74MX mainboard / AMD SB700 + 1458 b002 GA-78/880-series motherboard + 174b 1001 PURE Fusion Mini + 4392 SB7x0/SB8x0/SB9x0 SATA Controller [Non-RAID5 mode] + 105b 0e13 N15235/A74MX mainboard / AMD SB700 + 4393 SB7x0/SB8x0/SB9x0 SATA Controller [RAID5 mode] + 4394 SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] + 4395 SB8x0/SB9x0 SATA Controller [Storage mode] + 4396 SB7x0/SB8x0/SB9x0 USB EHCI Controller + 1019 2120 A785GM-M + 103c 1609 ProLiant MicroServer N36L + 103c 1611 Pavilion DM1Z-3000 + 1043 82ef M3A78-EH Motherboard + 1043 8443 M5A88-V EVO + 105b 0e13 N15235/A74MX mainboard / AMD SB700 + 1458 5004 GA-78/880-series motherboard + 1462 7596 760GM-E51(MS-7596) Motherboard + 15d9 a811 H8DGU + 174b 1001 PURE Fusion Mini + 4397 SB7x0/SB8x0/SB9x0 USB OHCI0 Controller + 1019 2120 A785GM-M + 103c 1609 ProLiant MicroServer N36L + 103c 1611 Pavilion DM1Z-3000 + 1043 82ef M3A78-EH Motherboard + 1043 8443 M5A88-V EVO + 105b 0e13 N15235/A74MX mainboard / AMD SB700 + 1458 5004 GA-78/880-series motherboard + 1462 7596 760GM-E51(MS-7596) Motherboard + 15d9 a811 H8DGU + 174b 1001 PURE Fusion Mini + 4398 SB7x0 USB OHCI1 Controller + 1019 2120 A785GM-M + 1043 82ef M3A78-EH Motherboard + 105b 0e13 N15235/A74MX mainboard / AMD SB700 + 1458 5004 GA-MA78GM-S2H motherboard + 1462 7596 760GM-E51(MS-7596) Motherboard + 15d9 a811 H8DGU + 4399 SB7x0/SB8x0/SB9x0 USB OHCI2 Controller + 1019 2120 A785GM-M + 1043 82ef M3A78-EH Motherboard + 1043 8443 M5A88-V EVO + 105b 0e13 N15235/A74MX mainboard / AMD SB700 + 1458 5004 GA-78/880-series motherboard + 1462 7596 760GM-E51(MS-7596) Motherboard + 174b 1001 PURE Fusion Mini + 439c SB7x0/SB8x0/SB9x0 IDE Controller + 1002 4392 MSI MS-7713 motherboard + 1019 2120 A785GM-M + 103c 1609 ProLiant MicroServer N36L + 1043 82ef M3A78-EH Motherboard + 105b 0e13 N15235/A74MX mainboard / AMD SB700 + 1458 5002 GA-MA78GM-S2H motherboard + 1462 7596 760GM-E51(MS-7596) Motherboard + 439d SB7x0/SB8x0/SB9x0 LPC host controller + 1019 2120 A785GM-M + 103c 1609 ProLiant MicroServer N36L + 103c 1611 Pavilion DM1Z-3000 + 1043 82ef M3A78-EH Motherboard + 1043 8443 M5A88-V EVO + 105b 0e13 N15235/A74MX mainboard / AMD SB700 + 1462 7596 760GM-E51(MS-7596) Motherboard + 174b 1001 PURE Fusion Mini + 43a0 SB700/SB800/SB900 PCI to PCI bridge (PCIE port 0) + 43a1 SB700/SB800/SB900 PCI to PCI bridge (PCIE port 1) + 43a2 SB900 PCI to PCI bridge (PCIE port 2) + 43a3 SB900 PCI to PCI bridge (PCIE port 3) + 4437 RS250 [Mobility Radeon 7000 IGP] + 4554 210888ET [Mach64 ET] + 4630 XENOS Parent Die (XBOX 360) + 4631 XENOS Daughter Die (XBOX 360) + 4654 Mach64 VT + 4742 Rage 3 [3D Rage PRO AGP 2X] + 1002 0040 Rage Pro Turbo AGP 2X + 1002 0044 Rage Pro Turbo AGP 2X + 1002 0061 Rage Pro AIW AGP 2X + 1002 0062 Rage Pro AIW AGP 2X + 1002 0063 Rage Pro AIW AGP 2X + 1002 0080 Rage Pro Turbo AGP 2X + 1002 0084 Rage Pro Turbo AGP 2X + 1002 4742 Rage Pro Turbo AGP 2X + 1002 8001 Rage Pro Turbo AGP 2X + 1028 0082 Rage Pro Turbo AGP 2X + 1028 4082 Optiplex GX1 Onboard Display Adapter + 1028 8082 Rage Pro Turbo AGP 2X + 1028 c082 Rage Pro Turbo AGP 2X + 8086 4152 Xpert 98D AGP 2X + 8086 464a Rage Pro Turbo AGP 2X + 4744 Rage 3 [3D Rage PRO AGP 1X] + 1002 4744 Rage Pro Turbo AGP + 8086 4d55 Rage 3D Pro AGP 1X [Intel MU440EX] + 4749 3D Rage PRO PCI + 1002 0061 Rage Pro AIW + 1002 0062 Rage Pro AIW + 474d Rage XL AGP 2X + 1002 0004 Xpert 98 RXL AGP 2X + 1002 0008 Xpert 98 RXL AGP 2X + 1002 0080 Rage XL AGP 2X + 1002 0084 Xpert 98 AGP 2X + 1002 474d Rage XL AGP + 1033 806a Rage XL AGP + 474e Rage XC AGP + 1002 474e Rage XC AGP + 474f Rage XL + 1002 0008 Rage XL + 1002 474f Rage XL + 4750 3D Rage Pro PCI + 1002 0040 Rage Pro Turbo + 1002 0044 Rage Pro Turbo + 1002 0080 Rage Pro Turbo + 1002 0084 Rage Pro Turbo + 1002 4750 Rage Pro Turbo + 4752 Rage 3 [Rage XL PCI] + 0e11 001e Proliant Rage XL + 1002 0008 Rage XL + 1002 4752 Proliant Rage XL + 1002 8008 Rage XL + 1014 0240 eServer xSeries server mainboard + 1028 00ce PowerEdge 1400 + 1028 00d1 PowerEdge 2550 + 1028 00d9 PowerEdge 2500 + 1028 0134 PowerEdge 600SC + 1028 014a PowerEdge 1750 + 1028 0165 PowerEdge 750 + 103c 10e1 NetServer Rage XL + 103c 3208 ProLiant DL140 G2 + 107b 6400 6400 Server + 1734 007a PRIMERGY RX/TX series onboard VGA + 1734 1073 Primergy Econel 200 D2020 mainboard + 8086 3411 SDS2 Mainboard + 8086 3427 S875WP1-E mainboard + 8086 5744 S845WD1-E mainboard + 4753 Rage XC + 1002 4753 Rage XC + 4754 Mach64 GT/GT-B [3D Rage I/II] + 4755 Mach64 GT-B [3D Rage II+ DVD] + 4756 Rage 2 [3D Rage IIC PCI] + 1002 4756 Rage IIC + 4757 Rage 2 [3D Rage IIC AGP] + 1002 4757 Rage IIC AGP + 1028 0089 Rage 3D IIC + 1028 008e PowerEdge 1300 onboard video + 1028 4082 Rage 3D IIC + 1028 8082 Rage 3D IIC + 1028 c082 Rage 3D IIC + 4758 Mach64 GX [WinTurbo] + 4759 Rage 3 [3D Rage IIC PCI] + 475a 3D Rage IIC AGP + 1002 0084 Rage 3D Pro AGP 2x XPERT 98 + 1002 0087 Rage 3D IIC + 1002 475a Rage IIC AGP + 4845 Xilleon 220 HBIU for HDTV2 + 4846 Xilleon 220 IDE for HDTV2 + 4847 Xilleon 220 USB for HDTV2 + 4848 Xilleon 220 DAIO-0 for HDTV2 + 4849 Xilleon 220 DAIO-1 for HDTV2 + 484a Xilleon 220 LPC for HDTV2 + 4850 Xilleon 215 HBIU for X215 + 4851 Xilleon 215 IDE for X215 + 4852 Xilleon 215 USB for X215 + 4853 Xilleon 215 DAIO-0 for X215 + 4854 Xilleon 215 DAIO-1 for X215 + 4855 Xilleon 225 HBIU for X225 + 4856 Xilleon 225 IDE for X225 + 4857 Xilleon 225 USB for X225 + 4858 Xilleon 225 DAIO-0 for X225 + 4859 Xilleon 225 DAIO-1 for X225 + 4860 Xilleon 210 HBIU for X210 + 4861 Xilleon 210 IDE for X210 + 4862 Xilleon 210 USB for X210 + 4863 Xilleon 210 DAIO-0 for X210 + 4864 Xilleon 210 DAIO-1 for X210 + 4865 Xilleon 226 HBIU for X226 + 4866 Xilleon 226 IDE for X226 + 4867 Xilleon 226 USB for X226 + 4868 Xilleon 226 DAIO-0 for X226 + 4869 Xilleon 226 DAIO-1 for X226 + 486a Xilleon 240S HBIU for X240S + 486b Xilleon 240H HBIU for X240H + 486c Xilleon 240S USB for X240S + 486d Xilleon 240H USB for X240H + 486e Xilleon 250 USB 1.1 for X250 + 486f Xilleon 260 USB 1.1 for X260 + 4870 Xilleon 250 HBIU for X250 + 4871 Xilleon 250 IDE for X250 + 4872 Xilleon 234/235 HBIU for X234/X235 + 4873 Xilleon 244/245 HBIU for X244/X245 + 4874 Xilleon 234/235 USB 1.1 for X234/X235 + 4875 Xilleon 260 HBIU for X260 + 4876 Xilleon 260 IDE for X260 + 4877 Xilleon 244/245 USB 1.1 for X244/X245 + 4878 Xilleon 270 HBIU for X270 + 487b Xilleon 242 HBIU for X242 + 487d Xilleon 242 USB 1.1 for X242 + 4880 Xilleon 254 HBIU for X254 + 4881 Xilleon 254 USB 1.1 for X254 + 4882 Xilleon 255 HBIU for X255 + 4883 Xilleon 255 USB 1.1 for X255 + 4884 Xilleon 243 HBIU for X243 + 4885 Xilleon 243 USB 1.1 for X243 + 4886 Xilleon 233 HBIU for X233 + 4887 Xilleon 233 USB 1.1 for X233 + 4888 Xilleon 143 HBIU for X143 + 4889 Xilleon 143 HBIU for X143L + 488a Xilleon 143 HBIU for X143S + 4966 RV250 [Radeon 9000 Series] + 10f1 0002 RV250 If [Tachyon G9000 PRO] + 148c 2039 RV250 If [Radeon 9000 Pro "Evil Commando"] + 1509 9a00 RV250 If [Radeon 9000 "AT009"] + 1681 0040 RV250 If [3D prophet 9000] + 174b 7176 Radeon 9000 Pro + 174b 7192 RV250 If [Radeon 9000 "Atlantis"] + 17af 2005 RV250 If [Excalibur Radeon 9000 Pro] + 17af 2006 RV250 If [Excalibur Radeon 9000] + 496e RV250 [Radeon 9000] (Secondary) + 4a49 R420 [Radeon X800 PRO/GTO AGP] + 174b 2620 R420 [Radeon X800 GTO AGP] + 4a4a R420 [Radeon X800 GT AGP] + 4a4b R420 [Radeon X800 AGP Series] + 4a4d R420 GL [FireGL X3-256] + 4a4e RV420/M18 [Mobility Radeon 9800] + 4a4f R420 [Radeon X850 AGP] + 4a50 R420 [Radeon X800 XT Platinum Edition AGP] + 4a54 R420 [Radeon X800 VE AGP] + 1002 4422 All-In-Wonder X800 VE AGP + 4a69 R420 [Radeon X800 PRO/GTO] (Secondary) + 4a6a R420 [Radeon X800] (Secondary) + 4a6b R420 [Radeon X800 XT AGP] (Secondary) + 4a70 R420 [Radeon X800 XT Platinum Edition AGP] (Secondary) + 4a74 R420 [Radeon X800 VE] (Secondary) + 4b49 R481 [Radeon X850 XT AGP] + 4b4b R481 [Radeon X850 PRO AGP] + 4b4c R481 [Radeon X850 XT Platinum Edition AGP] + 4b69 R481 [Radeon X850 XT AGP] (Secondary) + 4b6b R481 [Radeon X850 PRO AGP] (Secondary) + 4b6c R481 [Radeon X850 XT Platinum Edition AGP] (Secondary) + 4c42 Mach64 LT [3D Rage LT PRO AGP] + 0e11 b0e7 Rage LT Pro (Compaq Presario 5240) + 0e11 b0e8 Rage 3D LT Pro + 0e11 b10e 3D Rage LT Pro (Compaq Armada 1750) + 1002 0040 Rage LT Pro AGP 2X + 1002 0044 Rage LT Pro AGP 2X + 1002 4c42 Rage LT Pro AGP 2X + 1002 8001 Rage LT Pro AGP 2X + 1028 0085 Rage 3D LT Pro + 4c46 Rage Mobility 128 AGP 2X/Mobility M3 + 1002 0155 IBM Thinkpad A22p + 1014 0155 Thinkpad A22p + 1028 00b1 Latitude C600 + 4c47 3D Rage IIC PCI / Mobility Radeon 7500/7500C + 4c49 3D Rage LT PRO PCI + 1002 0004 Rage LT Pro + 1002 0040 Rage LT Pro + 1002 0044 Rage LT Pro + 1002 4c49 Rage LT Pro + 4c4d Rage Mobility AGP 2x Series + 0e11 b111 Armada M700 + 0e11 b160 Armada E500 + 1002 0084 Xpert 98 AGP 2X (Mobility) + 1014 0154 ThinkPad A20m/A21m + 1028 00aa Latitude CPt + 1028 00bb Latitude CPx + 1179 ff00 Satellite 1715XCDS laptop + 13bd 1019 PC-AR10 + 4c4e Rage Mobility L AGP 2x + 4c50 Rage 3 LT [3D Rage LT PRO PCI] + 1002 4c50 Rage LT Pro + 4c52 M1 [Rage Mobility-M1 PCI] + 1033 8112 Versa Note VXi + 4c54 264LT [Mach64 LT] + 4c57 RV200/M7 [Mobility Radeon 7500] + 1014 0517 ThinkPad T30 + 1014 0530 ThinkPad T4x Series + 1028 00e6 Radeon Mobility M7 LW (Dell Inspiron 8100) + 1028 012a Latitude C640 + 1043 1622 Mobility Radeon M7 (L3C/S) + 144d c006 Radeon Mobility M7 LW in vpr Matrix 170B4 + 4c58 RV200/M7 GL [Mobility FireGL 7800] + 4c59 RV100/M6 [Rage/Radeon Mobility Series] + 0e11 b111 Evo N600c + 1014 0235 ThinkPad A30/A30p (2652/2653) + 1014 0239 ThinkPad X22/X23/X24 + 103c 0025 XE4500 Notebook + 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + 104d 8140 PCG-Z1SP laptop + 1509 1930 Medion MD9703 + 4c66 RV250/M9 GL [Mobility FireGL 9000/Radeon 9000] + 1014 054d ThinkPad T41 + 4c6e RV250/M9 [Mobility Radeon 9000] (Secondary) + 4d46 Rage Mobility 128 AGP 4X/Mobility M4 + 4d52 Theater 550 PRO PCI [ATI TV Wonder 550] + 4d53 Theater 550 PRO PCIe + 4e44 R300 [Radeon 9700/9700 PRO] + 1002 515e Radeon ES1000 + 1002 5965 Radeon ES1000 + 4e45 R300 [Radeon 9500 PRO/9700] + 1002 0002 Radeon R300 NE [Radeon 9500 Pro] + 1681 0002 Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] + 4e46 R300 [Radeon 9600 TX] + 4e47 R300 GL [FireGL X1] + 4e48 R350 [Radeon 9800 Series] + 4e49 R350 [Radeon 9800] + 4e4a R360 [Radeon 9800 XXL/XT] + 1002 4e4a R360 [Radeon 9800 XT] + 4e4b R350 GL [FireGL X2 AGP Pro] + 4e50 RV350/M10 / RV360/M11 [Mobility Radeon 9600 (PRO) / 9700] + 1025 005a TravelMate 290 + 1025 0064 Extensa 3000 series laptop: ATI RV360/M11 [Mobility Radeon 9700] + 103c 088c NC8000 laptop + 103c 0890 NC6000 laptop + 144d c00c P35 notebook + 1462 0311 MSI M510A + 1734 1055 Amilo M1420W + 4e51 RV350 [Radeon 9550/9600/X1050 Series] + 4e52 RV350/M10 [Mobility Radeon 9500/9700 SE] + 144d c00c P35 notebook + 4e54 RV350/M10 GL [Mobility FireGL T2] + 4e56 RV360/M12 [Mobility Radeon 9550] + 4e64 R300 [Radeon 9700 PRO] (Secondary) + 4e65 R300 [Radeon 9500 PRO] (Secondary) + 1002 0003 Radeon R300 NE [Radeon 9500 Pro] + 1681 0003 Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] (Secondary) + 4e66 RV350 [Radeon 9600] (Secondary) + 4e67 R300 GL [FireGL X1] (Secondary) + 4e68 R350 [Radeon 9800 PRO] (Secondary) + 4e69 R350 [Radeon 9800] (Secondary) + 4e6a RV350 [Radeon 9800 XT] (Secondary) + 1002 4e6a R360 [Radeon 9800 XT] (Secondary) + 1002 4e71 M10 NQ [Radeon Mobility 9600] + 4e71 RV350/M10 [Mobility Radeon 9600] (Secondary) + 4f72 RV250 [Radeon 9000 Series] + 4f73 RV250 [Radeon 9000 Series] (Secondary) + 5044 All-In-Wonder 128 PCI + 1002 0028 Rage 128 AIW + 1002 0029 Rage 128 AIW + 5046 Rage 4 [Rage 128 PRO AGP 4X] + 1002 0004 Rage Fury Pro + 1002 0008 Rage Fury Pro/Xpert 2000 Pro + 1002 0014 Rage Fury Pro + 1002 0018 Rage Fury Pro/Xpert 2000 Pro + 1002 0028 Rage 128 Pro AIW AGP + 1002 002a Rage 128 Pro AIW AGP + 1002 0048 Rage Fury Pro + 1002 2000 Rage Fury MAXX AGP 4x (TMDS) (VGA device) + 1002 2001 Rage Fury MAXX AGP 4x (TMDS) (Extra device?!) + 5050 Rage 4 [Rage 128 PRO PCI / Xpert 128 PCI] + 1002 0008 Xpert 128 + 5052 Rage 4 [Rage 128 PRO AGP 4X] + 5144 R100 [Radeon 7200 / All-In-Wonder Radeon] + 1002 0008 Radeon 7000/Radeon VE + 1002 0009 Radeon 7000/Radeon + 1002 000a Radeon 7000/Radeon + 1002 001a Radeon 7000/Radeon + 1002 0029 Radeon AIW + 1002 0038 Radeon 7000/Radeon + 1002 0039 Radeon 7000/Radeon + 1002 008a Radeon 7000/Radeon + 1002 00ba Radeon 7000/Radeon + 1002 0139 Radeon 7000/Radeon + 1002 028a Radeon 7000/Radeon + 1002 02aa Radeon AIW + 1002 053a Radeon 7000/Radeon + 5148 R200 GL [FireGL 8800] + 1002 010a FireGL 8800 64Mb + 1002 0152 FireGL 8800 128Mb + 1002 0162 FireGL 8700 32Mb + 1002 0172 FireGL 8700 64Mb + 514c R200 [Radeon 8500/8500 LE] + 1002 003a Radeon R200 QL [Radeon 8500 LE] + 1002 013a Radeon 8500 + 148c 2026 R200 QL [Radeon 8500 Evil Master II Multi Display Edition] + 1681 0010 Radeon 8500 [3D Prophet 8500 128Mb] + 174b 7149 Radeon 8500 LE + 1787 0f08 Radeon R200 QL [PowerMagic Radeon 8500] + 514d R200 [Radeon 9100] + 5157 RV200 [Radeon 7500/7500 LE] + 1002 013a Radeon 7500 + 1002 0f2b ALL-IN-WONDER VE PCI + 1002 103a Dell Optiplex GX260 + 1458 4000 RV200 QW [RADEON 7500 PRO MAYA AR] + 148c 2024 RV200 QW [Radeon 7500LE Dual Display] + 148c 2025 RV200 QW [Radeon 7500 Evil Master Multi Display Edition] + 148c 2036 RV200 QW [Radeon 7500 PCI Dual Display] + 174b 7146 RV200 QW [Radeon 7500 LE] + 174b 7147 Radeon 7500 LE + 174b 7161 Radeon RV200 QW [Radeon 7500 LE] + 17af 0202 RV200 QW [Excalibur Radeon 7500LE] + 5159 RV100 [Radeon 7000 / Radeon VE] + 1002 000a Radeon 7000/Radeon VE + 1002 000b Radeon 7000 + 1002 0038 Radeon 7000/Radeon VE + 1002 003a Radeon 7000/Radeon VE + 1002 00ba Radeon 7000/Radeon VE + 1002 013a Radeon 7000/Radeon VE + 1002 0908 XVR-100 (supplied by Sun) +# The IBM card doubles as an ATI PCI video adapter + 1014 029a Remote Supervisor Adapter II (RSA2) + 1014 02c8 eServer xSeries server mainboard + 1028 016c PowerEdge 1850 Embedded Radeon 7000/VE + 1028 016d PowerEdge 2850 Embedded Radeon 7000-M + 1028 0170 PowerEdge 6850 Embedded Radeon 7000/VE + 1028 019a PowerEdge SC1425 + 103c 1292 Radeon 7000 + 1043 c00a A7000/T/64M + 1458 4002 RV100 QY [RADEON 7000 PRO MAYA AV Series] + 148c 2003 RV100 QY [Radeon 7000 Multi-Display Edition] + 148c 2023 RV100 QY [Radeon 7000 Evil Master Multi-Display] + 148c 2081 RV6DE + 174b 0280 Radeon RV100 QY [Radeon 7000/VE] + 174b 7112 Radeon VE 7000 + 174b 7c28 Radeon VE 7000 DDR + 1787 0202 RV100 QY [Excalibur Radeon 7000] + 17ee 1001 Radeon 7000 64MB DDR + DVI + 515e ES1000 + 1028 01bb PowerEdge 1955 Embedded ATI ES1000 + 1028 01df PowerEdge SC440 + 1028 01e6 PowerEdge 860 + 1028 01f0 PowerEdge R900 Embedded ATI ES1000 + 1028 0205 PowerEdge 2970 Embedded ATI ES1000 + 1028 020b PowerEdge T605 Embedded ATI ES1000 + 1028 020f PowerEdge R300 Embedded ATI ES1000 + 1028 0210 PowerEdge T300 Embedded ATI ES1000 + 1028 0221 PowerEdge R805 Embedded ATI ES1000 + 1028 0223 PowerEdge R905 Embedded ATI ES1000 + 1028 0225 PowerEdge T105 Embedded ATI ES1000 + 1028 023c PowerEdge R200 Embedded ATI ES1000 + 103c 1304 Integrity iLO2 Advanced KVM VGA [AD307A] + 103c 31fb ProLiant DL360 G5 + 15d9 8680 X7DVL-E-O motherboard + 15d9 9680 X7DBN Motherboard + 8086 3476 S5000PSLSATA Server Board + 5245 Rage 128 GL PCI + 1002 0008 Xpert 128 + 1002 0028 Rage 128 AIW + 1002 0029 Rage 128 AIW + 1002 0068 Rage 128 AIW + 5246 Rage 128 (Rage 4) series + 1002 0004 Magnum/Xpert 128/Xpert 99 + 1002 0008 Rage 128 AGP 2x + 1002 0028 Rage 128 AIW AGP + 1002 0044 Rage Fury/Xpert 128/Xpert 2000 + 1002 0068 Rage 128 AIW AGP + 1002 0448 Rage Fury + 524b Rage 128 VR PCI + 524c Rage 128 VR AGP + 1002 0008 Xpert 99/Xpert 2000 + 1002 0088 Xpert 99 + 534d Rage 128 4X AGP 4x + 1002 0008 Xpert 99/Xpert 2000 + 1002 0018 Xpert 2000 + 5354 Mach 64 VT + 1002 5654 Mach 64 reference + 5446 Rage 128 PRO Ultra AGP 4x + 1002 0004 Rage Fury Pro + 1002 0008 Rage Fury Pro/Xpert 2000 Pro + 1002 0018 Rage Fury Pro/Xpert 2000 Pro + 1002 0028 Rage 128 AIW Pro AGP + 1002 0029 Rage 128 AIW + 1002 002a Rage 128 AIW Pro AGP + 1002 002b Rage 128 AIW + 1002 0048 Xpert 2000 Pro + 5452 Rage 128 PRO Ultra4XL VR-R AGP + 1002 001c Rage 128 Pro 4XL + 103c 1279 Rage 128 Pro 4XL + 5460 RV370/M22 [Mobility Radeon X300] + 1775 1100 CR11/VR11 Single Board Computer + 5461 RV370/M22 [Mobility Radeon X300] + 5462 RV380/M24C [Mobility Radeon X600 SE] + 5464 RV370/M22 GL [Mobility FireGL V3100] + 5549 R423 [Radeon X800 GTO] + 554a R423 [Radeon X800 XT Platinum Edition] + 554b R423 [Radeon X800 GT/SE] + 1002 0302 Radeon X800 SE + 554d R480 [Radeon X800 GTO2/XL] + 1002 0322 All-In-Wonder X800 XL + 1458 2124 GV-R80L256V-B (AGP) + 554e R430 [All-In-Wonder X800 GT] + 554f R430 [Radeon X800] + 5550 R423 GL [FireGL V7100] + 5551 R423 GL [FireGL V5100] + 5569 R423 [Radeon X800 PRO] (Secondary) + 556b R423 [Radeon X800 GT] (Secondary) + 556d R480 [Radeon X800 GTO2/XL] (Secondary) + 1458 2125 GV-R80L256V-B (AGP) + 556f R430 [Radeon X800] (Secondary) + 5571 R423 GL [FireGL V5100] (Secondary) + 564b RV410/M26 GL [Mobility FireGL V5000] + 564f RV410/M26 [Mobility Radeon X700 XL] + 5652 RV410/M26 [Mobility Radeon X700] + 5653 RV410/M26 [Mobility Radeon X700] + 1025 0080 Aspire 5024WLMi + 103c 0940 Compaq NW8240 Mobile Workstation + 5654 Mach64 VT [Video Xpression] + 1002 5654 Mach64VT Reference + 5655 264VT3 [Mach64 VT3] + 5656 Mach64 VT4 [Video Xpression+] + 5657 RV410 [Radeon X550 XTX / X700] + 5830 RS300 Host Bridge + 5831 RS300 Host Bridge + 5832 RS300 Host Bridge + 5833 RS300 Host Bridge + 5834 RS300 [Radeon 9100 IGP] + 5835 RS300M [Mobility Radeon 9100 IGP] + 5838 RS300 AGP Bridge + 5854 RS480 [Radeon Xpress 200 Series] (Secondary) + 5874 RS480 [Radeon Xpress 1150] (Secondary) + 5940 RV280 [Radeon 9200 PRO] (Secondary) + 17af 2021 Excalibur Radeon 9250 (Secondary) + 5941 RV280 [Radeon 9200] (Secondary) + 1458 4019 Radeon 9200 + 174b 7c12 Radeon 9200 + 17af 200d Excalibur Radeon 9200 + 18bc 0050 GC-R9200-C3 (Secondary) + 5944 RV280 [Radeon 9200 SE PCI] + 5950 RS480/RS482/RS485 Host Bridge + 1025 0080 Aspire 5024WLMMi + 103c 280a DC5750 Microtower + 103c 2a20 Pavilion t3030.de Desktop PC + 103c 308b MX6125 + 1462 0131 MS-1013 Notebook + 1462 7217 Aspire L250 + 5951 RX480/RX482 Host Bridge + 5952 RD580 Host Bridge + 5954 RS480 [Radeon Xpress 200 Series] + 1002 5954 RV370 [Radeon Xpress 200G Series] + 5955 RS480M [Mobility Radeon Xpress 200] + 1002 5955 RS480 0x5955 [Radeon XPRESS 200M 5955 (PCIE)] + 103c 308b MX6125 + 1462 0131 MS-1013 Notebook + 5956 RD790 Host Bridge + 5957 RX780/RX790 Host Bridge + 1849 5957 A770CrossFire Motherboard + 5958 RD780 Host Bridge + 5960 RV280 [Radeon 9200 PRO / 9250] + 17af 2020 Excalibur Radeon 9250 + 5961 RV280 [Radeon 9200] + 1002 2f72 All-in-Wonder 9200 Series + 1019 4c30 Radeon 9200 VIVO + 12ab 5961 YUAN SMARTVGA Radeon 9200 + 1458 4018 Radeon 9200 + 174b 7c13 Radeon 9200 + 17af 200c Excalibur Radeon 9200 + 18bc 0050 Radeon 9200 Game Buster + 18bc 0051 GC-R9200-C3 + 18bc 0053 Radeon 9200 Game Buster VIVO + 5962 RV280 [Radeon 9200] + 5964 RV280 [Radeon 9200 SE] + 1002 5964 Radeon 9200 SE, 64-bit 128MB DDR, 200/166MHz + 1043 c006 Radeon 9200 SE / TD / 128M + 1458 4018 R92S128T [Radeon 9200 SE 128MB] + 1458 4032 Radeon 9200 SE 128MB + 147b 6191 R9200SE-DT + 148c 2073 CN-AG92E + 174b 7c13 Radeon 9200 SE + 1787 5964 Excalibur 9200SE VIVO 128M + 17af 2012 Radeon 9200 SE Excalibur + 18bc 0170 Sapphire Radeon 9200 SE 128MB Game Buster + 18bc 0173 GC-R9200L(SE)-C3H [Radeon 9200 Game Buster] + 5965 RV280 GL [FireMV 2200 PCI] + 5974 RS482/RS485 [Radeon Xpress 1100/1150] + 103c 280a DC5750 Microtower + 1462 7141 Aspire L250 + 5975 RS482M [Mobility Radeon Xpress 200] + 5978 RX780/RD790 PCI to PCI bridge (external gfx0 port A) + 1849 5957 A770CrossFire Motherboard + 5979 RD790 PCI to PCI bridge (external gfx0 port B) + 597a RD790 PCI to PCI bridge (PCI express gpp port A) + 597b RX780/RD790 PCI to PCI bridge (PCI express gpp port B) + 597c RD790 PCI to PCI bridge (PCI express gpp port C) + 597d RX780/RD790 PCI to PCI bridge (PCI express gpp port D) + 597e RD790 PCI to PCI bridge (PCI express gpp port E) + 1849 5957 A770CrossFire Motherboard + 597f RD790 PCI to PCI bridge (PCI express gpp port F) + 1849 5957 A770CrossFire Motherboard + 5980 RD790 PCI to PCI bridge (external gfx1 port A) + 5981 RD790 PCI to PCI bridge (external gfx1 port B) + 5982 RD790 PCI to PCI bridge (NB-SB link) + 5a10 RD890 Northbridge only dual slot (2x16) PCI-e GFX Hydra part + 5a11 RD890 Northbridge only single slot PCI-e GFX Hydra part + 5a12 RD890 Northbridge only dual slot (2x8) PCI-e GFX Hydra part + 15d9 a811 H8DGU + 5a13 RD890S/SR5650 Host Bridge + 5a14 RD9x0/RX980 Host Bridge + 5a15 RD890 PCI to PCI bridge (PCI express gpp port A) + 5a16 RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GFX port 0) + 5a17 RD890/RD9x0 PCI to PCI bridge (PCI Express GFX port 1) + 5a18 RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 0) + 15d9 a811 H8DGU + 5a19 RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 1) + 5a1a RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 2) + 5a1b RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 3) + 5a1c RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 4) + 5a1d RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 5) + 5a1e RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP2 Port 0) + 5a1f RD890/RD990 PCI to PCI bridge (PCI Express GFX2 port 0) + 15d9 a811 H8DGU + 5a20 RD890/RD990 PCI to PCI bridge (PCI Express GFX2 port 1) + 5a23 RD890S/RD990 I/O Memory Management Unit (IOMMU) + 5a31 RC410 Host Bridge + 5a33 RS400 Host Bridge + 5a34 RS4xx PCI Express Port [ext gfx] + 5a36 RC4xx/RS4xx PCI Express Port 1 + 5a37 RC4xx/RS4xx PCI Express Port 2 + 5a38 RC4xx/RS4xx PCI Express Port 3 + 5a39 RC4xx/RS4xx PCI Express Port 4 + 5a3f RC4xx/RS4xx PCI Bridge [int gfx] + 1462 7217 Aspire L250 + 5a41 RS400 [Radeon Xpress 200] + 5a42 RS400M [Radeon Xpress 200M] + 5a61 RC410 [Radeon Xpress 200/1100] + 5a62 RC410M [Mobility Radeon Xpress 200M] + 5b60 RV370 [Radeon X300] + 1043 002a Extreme AX300SE-X + 1043 032e Extreme AX300/TD + 1458 2102 GV-RX30S128D (X300SE) + 1462 0400 RX300SE-TD128E (MS-8940 REV:200) + 1462 0402 RX300SE-TD128E (MS-8940) + 174b 0500 Radeon X300 (PCIE) + 196d 1086 X300SE HM + 5b62 RV370 [Radeon X600/X600 SE] + 5b63 RV370 [Radeon X300/X550/X1050 Series] + 5b64 RV370 GL [FireGL V3100] + 5b65 RV370 GL [FireMV 2200] + 5b66 RV370X + 5b70 RV370 [Radeon X300 SE] +# RX300SE-TD128E + 1462 0403 Radeon X300 SE 128MB DDR + 174b 0501 Radeon X300 SE + 196d 1087 Radeon X300 SE HyperMemory + 5b72 RV380 [Radeon X300/X550/X1050 Series] (Secondary) + 5b73 RV370 [Radeon X300/X550/X1050 Series] (Secondary) + 5b74 RV370 GL [FireGL V3100] (Secondary) + 5b75 RV370 GL [FireMV 2200] (Secondary) + 5c61 RV280/M9+ [Mobility Radeon 9200 AGP] + 5c63 RV280/M9+ [Mobility Radeon 9200 AGP] + 1002 5c63 Apple iBook G4 2004 + 144d c00c P30 notebook + 5d44 RV280 [Radeon 9200 SE] (Secondary) + 1458 4019 R92S128T (Radeon 9200 SE 128MB Secondary) + 1458 4032 Radeon 9200 SE 128MB + 147b 6190 R9200SE-DT (Secondary) + 174b 7c12 Radeon 9200 SE (Secondary) + 1787 5965 Excalibur 9200SE VIVO 128M (Secondary) + 17af 2013 Radeon 9200 SE Excalibur (Secondary) + 18bc 0171 Radeon 9200 SE 128MB Game Buster (Secondary) + 18bc 0172 GC-R9200L(SE)-C3H [Radeon 9200 Game Buster] + 5d45 RV280 GL [FireMV 2200 PCI] (Secondary) + 5d48 R423/M28 [Mobility Radeon X800 XT] + 5d49 R423/M28 GL [Mobility FireGL V5100] + 5d4a R423/M28 [Mobility Radeon X800] + 5d4d R480 [Radeon X850 XT Platinum Edition] + 5d4e R480 [Radeon X850 SE] + 5d4f R480 [Radeon X800 GTO] + 5d50 R480 GL [FireGL V7200] + 5d52 R480 [Radeon X850 XT] + 1002 0b12 PowerColor X850XT PCIe (Primary) + 5d57 R423 [Radeon X800 XT] + 5d6d R480 [Radeon X850 XT Platinum Edition] (Secondary) + 5d6f R480 [Radeon X800 GTO] (Secondary) + 5d72 R480 [Radeon X850 XT] (Secondary) + 1002 0b13 PowerColor X850XT PCIe (Secondary) + 5d77 R423 [Radeon X800 XT] (Secondary) + 5e48 RV410 GL [FireGL V5000] + 5e49 RV410 [Radeon X700 Series] + 5e4a RV410 [Radeon X700 XT] + 5e4b RV410 [Radeon X700 PRO] + 5e4c RV410 [Radeon X700 SE] + 5e4d RV410 [Radeon X700] + 148c 2116 Bravo X700 + 5e4f RV410 [Radeon X700] + 1569 1e4f Radeon X550 XT + 5e6b RV410 [Radeon X700 PRO] (Secondary) + 5e6d RV410 [Radeon X700] (Secondary) + 148c 2117 Bravo X700 (Secondary) + 5f57 R423 [Radeon X800 XT] + 6600 Mars [Radeon HD 8670A/8670M/8750M / R7 M370] + 103c 1952 ProBook 455 G1 + 6601 Mars [Radeon HD 8730M] + 103c 2100 FirePro M4100 + 6604 Opal XT [Radeon R7 M265/M365X/M465] + 1025 0776 Aspire V5 Radeon R7 M265 + 103c 8006 FirePro M4170 + 103c 814f Litho XT [Radeon R7 M365X] + 103c 82aa Litho XT [Radeon R7 M465] + 17aa 3643 Radeon R7 A360 + 6605 Opal PRO [Radeon R7 M260X] + 103c 2259 FirePro M4150 + 6606 Mars XTX [Radeon HD 8790M] + 1028 0684 FirePro W4170M + 6607 Mars LE [Radeon HD 8530M / R5 M240] + 6608 Oland GL [FirePro W2100] + 13cc 3d28 MXRT-2600 + 6609 Oland GL [FirePro W2100 / Barco MXRT 2600] + 6610 Oland XT [Radeon HD 8670 / R5 340X OEM / R7 250/350/350X OEM] + 1019 0030 Radeon HD 8670 + 1028 0081 Radeon R7 350X OEM + 1028 0083 Radeon R5 340X OEM + 1028 2120 Radeon R7 250 + 1028 2322 Radeon R7 250 + 1462 2910 Radeon HD 8670 + 1462 2911 Radeon HD 8670 + 148c 7350 Radeon R7 350 + 1642 3c81 Radeon HD 8670 + 1642 3c91 Radeon HD 8670 + 1642 3f09 Radeon R7 350 + 6611 Oland [Radeon HD 8570 / R5 430 OEM / R7 240/340 / Radeon 520 OEM] + 1028 1001 Radeon R5 430 OEM (1024 MByte) + 1028 1002 Radeon R5 430 OEM (2048 MByte) +# The 'AMD Radeon R5 430' instead of 240/340 is NOT a typo! It's actually correct. + 1028 1711 R5 430 OEM (2048 MByte) + 1028 210b Radeon R5 240 OEM +# OEM-card for Dell; verified through AMD's own drivers (*.inf) and a TPU BIOS in database + 1028 2121 Radeon HD 8570 OEM +# OEM-card from Fujitsu; verified through AMD's own drivers (*.inf) + 10cf 1889 Radeon HD 8570 OEM + 1642 1869 Radeon 520 OEM + 174b 4248 Radeon R7 240 OEM + 174b a240 Radeon R7 240 OEM + 174b d340 Radeon R7 340 OEM + 1b0a 90d3 Radeon R7 240 OEM + 6613 Oland PRO [Radeon R7 240/340 / Radeon 520] + 148c 7340 Radeon R7 340 + 1682 7240 R7 240 2048 MB + 1dcf 3000 Oland PRO [Radeon R7 240/340 / Radeon 520] + 6617 Oland LE [Radeon R7 240] + 6631 Oland + 6640 Saturn XT [FirePro M6100] + 106b 014b Tropo XT [Radeon R9 M380 Mac Edition] + 6641 Saturn PRO [Radeon HD 8930M] + 6646 Bonaire XT [Radeon R9 M280X / FirePro W6150M] + 6647 Saturn PRO/XT [Radeon R9 M270X/M280X] + 1043 223d N551ZU laptop Radeon R9 M280X + 6649 Bonaire [FirePro W5100] + 1002 0b0c FirePro W4300 + 103c 0b0c Bonaire [FirePro W4300] + 103c 230c FirePro W5100 + 13cc 3d2a MXRT-5600 + 664d Bonaire [FirePro W5100 / Barco MXRT-5600] + 6650 Bonaire + 6651 Bonaire + 6658 Bonaire XTX [Radeon R7 260X/360] + 1043 048f R7260X-DC2OC-2GD5 + 1043 04d3 AMD Radeon R7 260X +# GV-R726XOC-1GD + 1458 227b Radeon R7 260X + 148c 0907 Radeon R7 360 + 1682 0907 Radeon R7 360 + 1682 7360 Radeon R7 360 + 665c Bonaire XT [Radeon HD 7790/8770 / R7 360 / R9 260/360 OEM] + 1043 0452 Radeon HD 7790 DirectCU II OC +# R7790-1GD5/OC + 1462 2930 Radeon HD 7790 OC + 1462 2932 Radeon HD 8770 + 1462 2934 Radeon R9 260 OEM + 1462 2938 Radeon R9 360 OEM + 148c 0907 Radeon R7 360 + 148c 9260 Radeon R9 260 OEM + 148c 9360 Radeon R9 360 OEM + 1682 0907 Radeon R7 360 +# FX-779A-CDB4 / FX-779A-CDBC + 1682 3310 Radeon HD 7790 Black Edition 2 GB +# 100356OCL / 11210-01-20G + 174b e253 Radeon HD 7790 Dual-X OC + 1787 2329 Radeon HD 7790 TurboDuo + 665d Bonaire [Radeon R7 200 Series] + 665f Tobago PRO [Radeon R7 360 / R9 360 OEM] + 1028 0b04 Radeon R9 360 OEM + 1462 2938 Radeon R9 360 OEM + 1462 3271 Radeon R9 360 OEM + 1682 7360 Radeon R7 360 + 6660 Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330 / M430 / Radeon 520 Mobile] + 1028 05ea Radeon HD 8670M + 1028 06bf Radeon R5 M335 + 103c 1970 Radeon HD 8670M + 103c 80be Radeon R5 M330 + 103c 8136 Radeon R5 M330 + 103c 8329 Radeon R7 M520 + 17aa 3633 Radeon R5 A330 + 17aa 3804 Radeon R5 M330 + 17aa 3809 Radeon R5 M330 + 17aa 381a Radeon R5 M430 + 17aa 390c Radeon R5 M330 + 6663 Sun PRO [Radeon HD 8570A/8570M] + 1025 0846 Radeon HD 8570A + 17aa 3805 Radeon HD 8570M + 6664 Jet XT [Radeon R5 M240] + 6665 Jet PRO [Radeon R5 M230 / R7 M260DX / Radeon 520/610 Mobile] + 17aa 1309 Z50-75 Radeon R7 M260DX + 17aa 368f Radeon R5 A230 + 6667 Jet ULT [Radeon R5 M230] + 666f Sun LE [Radeon HD 8550M / R5 M230] + 66a0 Vega 20 [Radeon Pro/Radeon Instinct] + 66a1 Vega 20 [Radeon Pro VII/Radeon Instinct MI50 32GB] + 66a2 Vega 20 + 66a3 Vega 20 [Radeon Pro Vega II/Radeon Pro Vega II Duo] + 66a7 Vega 20 [Radeon Pro Vega 20] + 66af Vega 20 [Radeon VII] + 6704 Cayman PRO GL [FirePro V7900] + 6707 Cayman LE GL [FirePro V5900] + 6718 Cayman XT [Radeon HD 6970] + 6719 Cayman PRO [Radeon HD 6950] + 671c Antilles [Radeon HD 6990] + 671d Antilles [Radeon HD 6990] + 671f Cayman CE [Radeon HD 6930] + 6720 Blackcomb [Radeon HD 6970M/6990M] + 1028 048f Radeon HD 6990M + 1028 0490 Alienware M17x R3 Radeon HD 6970M + 1028 04a4 FirePro M8900 + 1028 04ba Radeon HD 6990M + 1028 053f FirePro M8900 + 106b 0b00 Radeon HD 6970M + 1558 5102 Radeon HD 6970M + 1558 5104 Radeon HD 6990M + 1558 7201 Radeon HD 6990M + 174b e188 Radeon HD 6970M + 6738 Barts XT [Radeon HD 6870] +# HD-687A-ZDFC + 1682 3103 Radeon HD 8670 + 1787 201a Barts XT [Radeon HD 6870 X2] + 1787 201b Barts XT [Radeon HD 6870 X2] + 6739 Barts PRO [Radeon HD 6850] + 1043 03b4 EAH6850 [Radeon HD 6850] + 673e Barts LE [Radeon HD 6790] + 148c 7720 Radeon HD 7720 OEM + 6740 Whistler [Radeon HD 6730M/6770M/7690M XT] + 1019 238c Radeon HD 6730M + 1019 238e Radeon HD 6730M + 1019 2391 Radeon HD 6730M + 1019 2392 Radeon HD 6770M + 1028 04a3 Precision M4600 + 1028 053e FirePro M5950 + 103c 1630 FirePro M5950 + 103c 1631 FirePro M5950 + 103c 164b Radeon HD 6730M + 103c 164e Radeon HD 6730M + 103c 1657 Radeon HD 6770M + 103c 1658 Radeon HD 6770M + 103c 165a Radeon HD 6770M + 103c 165b Radeon HD 6770M + 103c 1688 Radeon HD 6770M + 103c 1689 Radeon HD 6770M + 103c 168a Radeon HD 6770M + 103c 185e Radeon HD 7690M XT + 103c 3388 Radeon HD 6770M + 103c 3389 Radeon HD 6770M + 103c 3582 Radeon HD 6770M + 103c 366c Radeon HD 6730M + 1043 1d02 Radeon HD 6730M + 1043 1d12 Radeon HD 6730M + 104d 9084 Radeon HD 6730M + 104d 9085 Radeon HD 6730M + 144d b074 Radeon HD 6730M + 144d b077 Radeon HD 6730M + 144d b084 Radeon HD 6730M + 144d b088 Radeon HD 6730M + 17aa 3982 Radeon HD 6730M + 6741 Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] + 1019 238e Radeon HD 6650M + 1019 238f Radeon HD 6650M + 1025 0379 Radeon HD 6650M + 1025 037b Radeon HD 6650M + 1025 037e Radeon HD 6650M + 1025 0382 Radeon HD 6650M + 1025 0384 Radeon HD 6650M + 1025 0385 Radeon HD 6650M + 1025 0386 Radeon HD 6650M + 1025 0387 Radeon HD 6650M + 1025 0388 Radeon HD 6650M + 1025 0442 Radeon HD 6650M + 1025 0451 Radeon HD 6650M + 1025 0489 Radeon HD 6650M + 1025 048b Radeon HD 6650M + 1025 048c Radeon HD 6650M + 1025 050a Radeon HD 6650M + 1025 050b Radeon HD 6650M + 1025 050c Radeon HD 6650M + 1025 050e Radeon HD 6650M + 1025 050f Radeon HD 6650M + 1025 0513 Radeon HD 6650M + 1025 0514 Radeon HD 6650M + 1025 0515 Radeon HD 6650M + 1025 0516 Radeon HD 6650M + 1025 051e Radeon HD 6650M + 1025 051f Radeon HD 6650M + 1025 0520 Radeon HD 6650M + 1025 0521 Radeon HD 6650M + 1025 052a Radeon HD 6650M + 1025 0555 Radeon HD 6650M + 1025 0556 Radeon HD 6650M + 1025 055d Radeon HD 6650M + 1025 055e Radeon HD 6650M + 1025 056d Radeon HD 6650M + 1025 059a Radeon HD 6650M + 1025 059b Radeon HD 6650M + 1025 059e Radeon HD 6650M + 1025 059f Radeon HD 6650M + 1025 0600 Radeon HD 6650M + 1025 0605 Radeon HD 6650M + 1025 0606 Radeon HD 6650M + 1025 0619 Radeon HD 6650M + 1028 04c1 Radeon HD 6630M + 1028 04c5 Radeon HD 6630M + 1028 04cd Radeon HD 6630M + 1028 04d7 Radeon HD 6630M + 1028 04d9 Radeon HD 6630M + 1028 052d Radeon HD 6630M + 103c 1617 Radeon HD 6650M + 103c 1646 Radeon HD 6750M + 103c 1647 Radeon HD 6650M + 103c 164b Radeon HD 6650M + 103c 164e Radeon HD 6650M + 103c 1688 Radeon HD 6750M + 103c 1689 Radeon HD 6750M + 103c 168a Radeon HD 6750M + 103c 1860 Radeon HD 7690M + 103c 3385 Radeon HD 6630M + 103c 3560 Radeon HD 6750M + 103c 358d Radeon HD 6750M + 103c 3590 Radeon HD 6750M + 103c 3593 Radeon HD 6750M + 103c 366c Radeon HD 6650M + 1043 1cd2 Radeon HD 6650M + 1043 2121 Radeon HD 6650M + 1043 2122 Radeon HD 6650M + 1043 2123 Radeon HD 6650M + 1043 2125 Radeon HD 7670M + 1043 2127 Radeon HD 7670M + 104d 907b Radeon HD 6630M + 104d 9080 Radeon HD 6630M + 104d 9081 Radeon HD 6630M + 106b 00e2 MacBookPro8,2 [Core i7, 15", Late 2011] + 1179 fd63 Radeon HD 6630M + 1179 fd65 Radeon HD 6630M + 144d c093 Radeon HD 6650M + 144d c0ac Radeon HD 6650M + 144d c0b3 Radeon HD 6750M + 144d c539 Radeon HD 6630M + 144d c609 Radeon HD 6630M + 152d 0914 Radeon HD 6650M + 17aa 21e1 Radeon HD 6630M + 17aa 3970 Radeon HD 6650M + 17aa 3976 Radeon HD 6650M + 1854 0907 Radeon HD 6650M + 6742 Whistler LE [Radeon HD 6610M/7610M] + 1002 6570 Turks [Radeon HD 6570] + 1019 2393 Radeon HD 6610M + 1043 1d82 K53SK Laptop Radeon HD 7610M + 1179 fb22 Radeon HD 7610M + 1179 fb23 Radeon HD 7610M + 1179 fb27 Radeon HD 7610M + 1179 fb2a Radeon HD 7610M + 1179 fb2c Radeon HD 7610M + 1179 fb30 Radeon HD 7610M + 1179 fb31 Radeon HD 7610M + 1179 fb32 Radeon HD 7610M + 1179 fb38 Radeon HD 7610M + 1179 fb39 Radeon HD 7610M + 1179 fb3a Radeon HD 7610M + 1179 fb3b Radeon HD 7610M + 1179 fb40 Radeon HD 7610M + 1179 fb41 Radeon HD 7610M + 1179 fb47 Radeon HD 7610M + 1179 fb48 Radeon HD 7610M + 1179 fb49 Radeon HD 7610M + 1179 fb51 Radeon HD 7610M + 1179 fb52 Radeon HD 7610M + 1179 fb53 Radeon HD 7610M + 1179 fb56 Radeon HD 7610M + 1179 fb81 Radeon HD 7610M + 1179 fb82 Radeon HD 7610M + 1179 fb83 Radeon HD 7610M + 1179 fc56 Radeon HD 7610M + 1179 fcd4 Radeon HD 7610M + 1179 fcee Radeon HD 7610M + 1458 6570 Turks [Radeon HD 6570] + 1462 6570 Turks [Radeon HD 6570] + 148c 6570 Turks [Radeon HD 6570] + 1682 6570 Turks [Radeon HD 6570] + 174b 5570 Turks [Radeon HD 5570] + 174b 6570 Turks [Radeon HD 6570] + 174b 7570 Turks [Radeon HD 7570] + 174b 8510 Turks [Radeon HD 8510] + 174b 8570 Turks [Radeon HD 8570] + 1787 6570 Turks [Radeon HD 6570] + 17af 6570 Turks [Radeon HD 6570] + 8086 2111 Radeon HD 6625M + 6743 Whistler [Radeon E6760] + 6749 Turks GL [FirePro V4900] + 15c3 2b06 MED-X4900 (EIZO) + 674a Turks GL [FirePro V3900] + 13cc 3d22 MXRT-2500 + 15c3 0106 MED-X3900 + 6750 Onega [Radeon HD 6650A/7650A] + 1462 2670 Radeon HD 6670A + 17aa 3079 Radeon HD 7650A + 17aa 307a Radeon HD 6650A + 17aa 3087 Radeon HD 7650A + 17aa 3618 Radeon HD 6650A + 17aa 3623 Radeon HD 6650A + 17aa 3627 Radeon HD 6650A + 6751 Turks [Radeon HD 7650A/7670A] + 1028 0548 Radeon HD 7650A + 1462 2671 Radeon HD 7670A + 1462 2672 Radeon HD 7670A + 1462 2680 Radeon HD 7650A + 1462 2681 Radeon HD 7650A + 17aa 3087 Radeon HD 7650A + 6758 Turks XT [Radeon HD 6670/7670] + 1028 0b0e Radeon HD 6670 + 103c 6882 Radeon HD 6670 + 1462 250a Radeon HD 7670 + 148c 7670 Radeon HD 7670 + 1545 7670 Radeon HD 7670 + 1682 3300 Radeon HD 7670 + 174b 7670 Radeon HD 7670 + 174b e181 Radeon HD 6670 + 1787 2309 Radeon HD 6670 + 6759 Turks PRO [Radeon HD 6570/7570/8550 / R5 230] + 103c 3130 Radeon HD 6570 + 1043 0403 Radeon HD 6570 + 1462 2500 Radeon HD 6570 + 1462 2509 Radeon HD 7570 + 148c 7570 Radeon HD 7570 + 1642 3a67 Radeon HD 6570 + 1682 3280 Radeon HD 7570 + 1682 3530 Radeon HD 8550 + 1682 5230 Radeon R5 230 series + 1682 6450 Radeon HD 6450 series + 174b 7570 Radeon HD 7570 + 174b 8550 Radeon HD8550 OEM + 174b 8570 Radeon HD8550 OEM + 174b e142 Radeon HD 6570 + 174b e181 Radeon HD 6570 + 1787 a230 Radeon R5 230 series + 1787 a450 Radeon HD 6450 series + 1b0a 908f Radeon HD 6570 + 1b0a 9090 Radeon HD 6570 + 1b0a 9091 Radeon HD 6570 + 1b0a 9092 Radeon HD 6570 + 1b0a 909e Radeon HD 6570 + 1b0a 90b5 Radeon HD 7570 + 1b0a 90b6 Radeon HD 7570 + 675b Turks [Radeon HD 7600 Series] + 675d Turks PRO [Radeon HD 7570] + 675f Turks LE [Radeon HD 5570/6510/7510/8510] + 148c 6510 Radeon HD 6510 + 148c 6530 Radeon HD 6530 + 148c 7510 Radeon HD 7510 + 1545 7570 Radeon HD 7570 + 174b 6510 Radeon HD 6510 + 174b 7510 Radeon HD 7510 + 174b 8510 Radeon HD 8510 + 1787 2012 Radeon HD 5570 2GB GDDR3 + 1787 2314 Radeon HD 5570 1GB DDR2/GDDR3 + 6760 Seymour [Radeon HD 6400M/7400M Series] + 1002 0124 Radeon HD 6470M + 1002 0134 Radeon HD 6470M + 1019 238b Radeon HD 6470M + 1019 238e Radeon HD 6470M + 1019 2390 Radeon HD 6470M + 1019 9985 Radeon HD 6470M + 1028 04c1 Radeon HD 6470M + 1028 04c3 Radeon HD 6470M + 1028 04ca Radeon HD 6470M + 1028 04cb Radeon HD 6470M + 1028 04cc Vostro 3350 + 1028 04d1 Radeon HD 6470M + 1028 04d3 Radeon HD 6470M + 1028 04d7 Radeon HD 6470M + 1028 0502 Radeon HD 6470M + 1028 0503 Radeon HD 6470M + 1028 0506 Radeon HD 6470M + 1028 0507 Radeon HD 6470M + 1028 0514 Radeon HD 6470M + 1028 051c Radeon HD 6450M / 7430M + 1028 051d Radeon HD 6450M / 7430M + 103c 161a Radeon HD 6470M + 103c 161b Radeon HD 6470M + 103c 161e Radeon HD 6470M + 103c 161f Radeon HD 6470M + 103c 1622 Radeon HD 6450M + 103c 1623 Radeon HD 6450M + 103c 164a Radeon HD 6470M + 103c 164d Radeon HD 6470M + 103c 1651 Radeon HD 6470M + 103c 1656 Radeon HD 6490M + 103c 1658 Radeon HD 6490M + 103c 1659 Radeon HD 6490M + 103c 165b Radeon HD 6490M + 103c 165d Radeon HD 6470M + 103c 165f Radeon HD 6470M + 103c 1661 Radeon HD 6470M + 103c 1663 Radeon HD 6470M + 103c 1665 Radeon HD 6470M + 103c 1667 Radeon HD 6470M + 103c 1669 Radeon HD 6470M + 103c 166b Radeon HD 6470M + 103c 166c Radeon HD 6470M + 103c 166e Radeon HD 6470M + 103c 1670 Radeon HD 6470M + 103c 1672 Radeon HD 6470M + 103c 167a Radeon HD 6470M + 103c 167b Radeon HD 6470M + 103c 167d Radeon HD 6490M + 103c 167f Radeon HD 6490M + 103c 168c Radeon HD 6470M + 103c 168f Radeon HD 6470M + 103c 1694 Radeon HD 6470M + 103c 1696 Radeon HD 6470M + 103c 1698 Radeon HD 6470M + 103c 169a Radeon HD 6470M + 103c 169c Radeon HD 6490M + 103c 1855 Radeon HD 7450M + 103c 1859 Radeon HD 7450M + 103c 185c Radeon HD 7450M + 103c 185d Radeon HD 7470M + 103c 185f Radeon HD 7470M + 103c 1863 Radeon HD 7450M + 103c 355c Radeon HD 6490M + 103c 355f Radeon HD 6490M + 103c 3563 Radeon HD 6470M + 103c 3565 Radeon HD 6470M + 103c 3567 Radeon HD 6470M + 103c 3569 Radeon HD 6470M + 103c 3581 Radeon HD 6490M + 103c 3584 Radeon HD 6470M + 103c 358c Radeon HD 6490M + 103c 358f Radeon HD 6490M + 103c 3592 Radeon HD 6490M + 103c 3596 Radeon HD 6490M + 103c 366b Radeon HD 6470M + 103c 3671 FirePro M3900 + 103c 3673 Radeon HD 6470M + 1043 100a Radeon HD 7470M + 1043 100c Radeon HD 6470M + 1043 101b Radeon HD 6470M + 1043 101c Radeon HD 6470M + 1043 102a Radeon HD 7450M + 1043 102c Radeon HD 6470M + 1043 104b Radeon HD 7470M + 1043 105d Radeon HD 7470M + 1043 106b Radeon HD 7470M + 1043 106d Radeon HD 7470M + 1043 107d Radeon HD 7470M + 1043 1cb2 Radeon HD 6470M + 1043 1d22 Radeon HD 6470M + 1043 1d32 Radeon HD 6470M + 1043 2001 Radeon HD 6470M + 1043 2002 Radeon HD 7470M + 1043 2107 Radeon HD 7470M + 1043 2108 Radeon HD 7470M + 1043 2109 Radeon HD 7470M + 1043 84a0 Radeon HD 6470M + 1043 84e9 Radeon HD 6470M + 1043 8515 Radeon HD 7470M + 1043 8517 Radeon HD 7470M + 1043 855a Radeon HD 7470M + 104d 907b Radeon HD 6470M + 104d 9081 Radeon HD 6470M + 104d 9084 Radeon HD 6470M + 104d 9085 Radeon HD 6470M + 1179 0001 Radeon HD 6450M + 1179 0003 Radeon HD 6450M + 1179 0004 Radeon HD 6450M + 1179 fb22 Radeon HD 7470M + 1179 fb23 Radeon HD 7470M + 1179 fb2c Radeon HD 7470M + 1179 fb31 Radeon HD 7470M + 1179 fb32 Radeon HD 7470M + 1179 fb33 Radeon HD 7470M + 1179 fb38 Radeon HD 7470M + 1179 fb39 Radeon HD 7470M + 1179 fb3a Radeon HD 7470M + 1179 fb40 Radeon HD 7470M + 1179 fb41 Radeon HD 7470M + 1179 fb42 Radeon HD 7470M + 1179 fb47 Radeon HD 7470M + 1179 fb48 Radeon HD 7470M + 1179 fb51 Radeon HD 7470M + 1179 fb52 Radeon HD 7470M + 1179 fb53 Radeon HD 7470M + 1179 fb81 Radeon HD 7470M + 1179 fb82 Radeon HD 7470M + 1179 fb83 Radeon HD 7470M + 1179 fc51 Radeon HD 6470M + 1179 fc52 Radeon HD 7470M + 1179 fc56 Radeon HD 7470M + 1179 fcd3 Radeon HD 7470M + 1179 fcd4 Radeon HD 7470M + 1179 fcee Radeon HD 7470M + 1179 fdee Radeon HD 7470M + 144d b074 Radeon HD 6470M + 144d b084 Radeon HD 6470M + 144d c095 Radeon HD 6470M + 144d c0b3 Radeon HD 6490M + 144d c538 Radeon HD 6470M + 144d c581 Radeon HD 6470M + 144d c589 Radeon HD 6470M + 144d c609 Radeon HD 7470M + 144d c625 Radeon HD 7470M + 144d c636 Radeon HD 7450M + 1462 10ac Radeon HD 6470M + 152d 0916 Radeon HD 6470M + 17aa 21e5 Radeon HD 6470M + 17aa 3900 Radeon HD 7450M + 17aa 3902 Radeon HD 7450M + 17aa 3969 Radeon HD 6470M + 17aa 3970 Radeon HD 7450M + 17aa 3976 Radeon HD 6470M + 17aa 397b Radeon HD 6470M + 17aa 397d Radeon HD 6470M + 17aa 5101 Radeon HD 7470M + 17aa 5102 Radeon HD 7450M + 17aa 5103 Radeon HD 7450M + 17aa 5106 Radeon HD 7450M + 1854 0897 Radeon HD 6470M + 1854 0900 Radeon HD 6470M + 1854 0908 Radeon HD 6470M + 1854 2015 Radeon HD 6470M + 6761 Seymour LP [Radeon HD 6430M] + 6763 Seymour [Radeon E6460] + 6764 Seymour [Radeon HD 6400M Series] + 6765 Seymour [Radeon HD 6400M Series] + 6766 Caicos + 6767 Caicos + 6768 Caicos + 6770 Caicos [Radeon HD 6450A/7450A] + 17aa 308d Radeon HD 7450A + 17aa 3623 Radeon HD 6450A + 17aa 3627 Radeon HD 6450A + 17aa 3629 Radeon HD 6450A + 17aa 363c Radeon HD 6450A + 17aa 3658 Radeon HD 7470A + 6771 Caicos XTX [Radeon HD 8490 / R5 235X OEM] + 6772 Caicos [Radeon HD 7450A] + 6778 Caicos XT [Radeon HD 7470/8470 / R5 235/310 OEM] + 1019 0024 Radeon HD 7470 + 1019 0027 Radeon HD 8470 + 1028 2120 Radeon HD 7470 + 1462 b491 Radeon HD 8470 + 1462 b492 Radeon HD 8470 + 1462 b493 Radeon HD 8470 OEM + 1462 b499 Radeon R5 235 OEM + 1642 3c65 Radeon HD 8470 + 1642 3c75 Radeon HD 8470 + 174b 8145 Radeon HD 8470 + 174b d145 Radeon R5 235 OEM + 174b d335 Radeon R5 310 OEM + 174b e145 Radeon HD 7470 + 17aa 3694 Radeon R5 A220 + 6779 Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] + 1019 0016 Radeon HD 6450 + 1019 0017 Radeon HD 6450 + 1019 0018 Radeon HD 6450 + 1028 2120 Radeon HD 6450 + 103c 2128 Radeon HD 6450 + 103c 2aee Radeon HD 7450A + 1043 047b EAH6450 SILENT/DI/1GD3(LP) + 1092 6450 Radeon HD 6450 + 1462 2125 Radeon HD 6450 + 1462 2346 Radeon HD 7450 + 1462 2490 Radeon HD 6450 + 1462 2494 Radeon HD 6450 + 1462 2496 Radeon HD 7450 + 148c 7450 Radeon HD 7450 + 148c 8450 Radeon HD 8450 OEM + 1545 7470 Radeon HD 7470 + 1642 3a65 Radeon HD 6450 + 1642 3a66 Radeon HD 7450 + 1642 3a75 Radeon HD 6450 + 1642 3a76 Radeon HD 7450 + 1682 3200 Radeon HD 7450 + 174b 7450 Radeon HD 7450 + 174b e127 Radeon HD 6450 + 174b e153 Radeon HD 6450 + 174b e164 Radeon HD 6450 1 GB DDR3 + 174b e180 Radeon HD 6450 + 174b e201 Radeon HD 6450 + 1787 2311 Radeon HD 6450 + 17af 8450 Radeon HD 8450 OEM + 1b0a 9096 Radeon HD 6450 + 1b0a 9097 Radeon HD 6450 + 1b0a 90a8 Radeon HD 6450A + 1b0a 90b1 Radeon HD 6450 + 1b0a 90b3 Radeon HD 7450A + 1b0a 90bb Radeon HD 7450A + 677b Caicos PRO [Radeon HD 7450] + 6780 Tahiti XT GL [FirePro W9000] + 6784 Tahiti [FirePro Series Graphics Adapter] + 6788 Tahiti [FirePro Series Graphics Adapter] + 678a Tahiti PRO GL [FirePro Series] + 1002 030c FirePro W8000 + 1002 0310 FirePro S9000 + 1002 0420 Radeon Sky 700 + 1002 0422 Radeon Sky 900 + 1002 0710 FirePro S9050 + 1002 0b0e FirePro S10000 Passive + 1002 0b2a FirePro S10000 + 1028 030c FirePro W8000 + 1028 0710 FirePro S9000 + 6798 Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] + 1002 3000 Tahiti XT2 [Radeon HD 7970 GHz Edition] + 1002 3001 Tahiti XTL [Radeon R9 280X] + 1002 4000 Radeon HD 8970 OEM + 1043 041c HD 7970 DirectCU II + 1043 0420 HD 7970 DirectCU II TOP + 1043 0444 HD 7970 DirectCU II TOP + 1043 0448 HD 7970 DirectCU II TOP + 1043 044a Tahiti XT2 [Matrix HD 7970] + 1043 044c Tahiti XT2 [Matrix HD 7970 Platinum] + 1043 3001 Tahiti XTL [ROG Matrix R9 280X] + 1043 3006 Tahiti XTL [Radeon R9 280X DirectCU II TOP] + 1043 9999 ARES II + 106b 0127 FirePro D700 + 106b 0128 FirePro D700 + 1092 3000 Tahiti XT2 [Radeon HD 7970 GHz Edition] + 1458 2261 Tahiti XT2 [Radeon HD 7970 GHz Edition OC] +# GV-R928XOC-3GD + 1458 3001 Tahiti XTL [Radeon R9 280X OC] + 1462 2774 HD 7970 TwinFrozr III Boost Edition OC + 1682 3001 Tahiti XTL [Radeon R9 280X] + 1682 3211 Double D HD 7970 Black Edition +# FX-797A-TNBC + 1682 3213 HD 7970 Black Edition + 1682 3214 Double D HD 7970 + 1787 201c HD 7970 IceQ X² +# Radeon HD 7970 X2 + 1787 2317 Radeon HD 7990 + 1787 3000 Tahiti XT2 [Radeon HD 7970 GHz Edition] + 679a Tahiti PRO [Radeon HD 7950/8950 OEM / R9 280] + 1002 0b01 Radeon HD 8950 OEM + 1002 3000 Tahiti PRO2 [Radeon HD 7950 Boost] + 1462 3000 Radeon HD 8950 OEM + 174b a003 Radeon R9 280 + 679b Malta [Radeon HD 7990/8990 OEM] + 1002 0b28 Radeon HD 8990 OEM + 1002 0b2a Radeon HD 7990 + 1462 8036 Radeon HD 8990 OEM + 148c 8990 Radeon HD 8990 OEM + 679e Tahiti LE [Radeon HD 7870 XT] + 106b 0125 FirePro D500 + 106b 0126 FirePro D500 + 1787 2328 Radeon HD 7870 Black Edition 2 GB GDDR5 [2GBD5-2DHV3E] + 679f Tahiti + 67a0 Hawaii XT GL [FirePro W9100] + 1002 0335 FirePro S9150 + 1002 0735 FirePro S9170 + 1028 031f FirePro W9100 + 1028 0335 FirePro S9150 + 67a1 Hawaii PRO GL [FirePro W8100] + 1002 0335 FirePro S9100 + 1028 0335 FirePro S9100 + 67a2 Hawaii GL + 67a8 Hawaii + 67a9 Hawaii + 67aa Hawaii + 67b0 Hawaii XT / Grenada XT [Radeon R9 290X/390X] + 1028 0b00 Grenada XT [Radeon R9 390X] + 103c 6566 Radeon R9 390X + 1043 046a R9 290X DirectCU II + 1043 046c R9 290X DirectCU II OC + 1043 0474 Matrix R9 290X Platinum + 1043 0476 ARES III + 1043 04d7 Radeon R9 390X + 1043 04db Radeon R9 390X + 1043 04df Radeon R9 390X + 1043 04e9 Radeon R9 390X + 1458 227c R9 290X WindForce 3X OC + 1458 2281 R9 290X WindForce 3X OC + 1458 228c R9 290X WindForce 3X + 1458 228d R9 290X WindForce 3X OC + 1458 2290 R9 290X WindForce 3X + 1458 22bc Radeon R9 390X + 1458 22c1 Grenada PRO [Radeon R9 390] + 1462 2015 Radeon R9 390X + 1462 3070 R9 290X Lightning + 1462 3071 R9 290X Lightning + 1462 3072 R9 290X Lightning LE + 1462 3080 R9 290X Gaming + 1462 3082 R9 290X Gaming OC + 148c 2347 Devil 13 Dual Core R9 290X + 148c 2357 Grenada XT [Radeon R9 390X] + 1682 9290 Double Dissipation R9 290X + 1682 9395 Grenada XT [Radeon R9 390X] + 174b 0e34 Radeon R9 390X + 174b e282 Vapor-X R9 290X Tri-X OC + 174b e285 R9 290X Tri-X OC + 174b e324 Grenada XT2 [Radeon R9 390X] + 1787 2020 R9 290X IceQ X² Turbo + 1787 2357 Grenada XT [Radeon R9 390X] + 67b1 Hawaii PRO [Radeon R9 290/390] + 1043 04dd STRIX R9 390 + 148c 2358 Radeon R9 390 + 174b e324 Sapphire Nitro R9 390 + 67b8 Hawaii XT [Radeon R9 290X Engineering Sample] + 67b9 Vesuvius [Radeon R9 295X2] + 67be Hawaii LE + 67c0 Ellesmere [Radeon Pro WX 7100 Mobile] + 67c2 Ellesmere [Radeon Pro V7300X / V7350x2] + 67c4 Ellesmere [Radeon Pro WX 7100] + 1002 0336 Radeon Pro Duo + 1002 1336 Radeon Pro Duo + 67c7 Ellesmere [Radeon Pro WX 5100] + 67ca Ellesmere [Polaris10] + 67cc Ellesmere [Polaris10] + 67cf Ellesmere [Polaris10] + 67d0 Ellesmere [Radeon Pro V7300X / V7350x2] + 67d4 Ellesmere [Radeon Pro WX 7100 / Barco MXRT-8700] + 67d7 Ellesmere [Radeon Pro WX 5100 / Barco MXRT-6700] + 67df Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] + 1002 0b37 Radeon RX 480 + 1028 1722 Radeon RX 570X + 1028 1723 Radeon RX 580X + 103c 840e Radeon RX 580 4GB + 1043 04a8 Radeon RX 480 + 1043 04b0 Radeon RX 470 + 1043 04fb Radeon RX 480 + 1043 04fd Radeon RX 480 8GB + 1043 056a Radeon RX 590 + 106b 0161 Radeon Pro 580 + 106b 0162 Radeon Pro 575 + 106b 0163 Radeon Pro 570 + 1458 22f0 Radeon RX 570 + 1458 22f7 Radeon RX 570 Gaming 4G + 1462 3411 Radeon RX 470 + 1462 3413 Radeon RX 480 Gaming X 8GB + 1462 3416 Radeon RX 570 + 1462 3418 Radeon RX 580 ARMOR 8G OC + 1462 341b Radeon RX 570 Armor 8G OC + 1462 341e Radeon RX 570 Armor 4G OC + 1462 809e Radeon RX 480 4GB + 1462 8a92 Radeon RX 580 + 148c 2372 Radeon RX 480 [Red Dragon] + 148c 2373 Radeon RX 470 + 148c 2377 Red Devil RX 580 8G Golden + 148c 2378 Radeon RX 580 + 148c 2379 Radeon RX 570 4G [Red Dragon] + 148c 2391 Radeon RX 590 [Red Devil] + 1682 9470 Radeon RX 470 + 1682 9480 Radeon RX 480 + 1682 9587 Radeon RX 590 FATBOY 8GB + 1682 9588 Radeon RX 580 XTR + 1682 c570 Radeon RX 570 + 1682 c580 Radeon RX 580 + 174b e347 Radeon RX 470/480 + 174b e349 Radeon RX 470 + 1787 a470 Radeon RX 470 + 1787 a480 Radeon RX 480 + 1849 5001 Phantom Gaming X RX 580 OC + 1849 5030 Phantom Gaming D Radeon RX580 8G OC + 1da2 e343 Radeon RX 570 Pulse ITX 4GB + 1da2 e353 Radeon RX 570 Pulse 4GB + 1da2 e366 Nitro+ Radeon RX 570/580/590 + 1da2 e387 Radeon RX 580 Pulse 4GB + 67e0 Baffin [Radeon Pro WX 4170] + 103c 8270 Radeon Pro WX 4170 + 103c 8272 Radeon Pro WX 4170 + 67e1 Baffin [Polaris11] + 67e3 Baffin [Radeon Pro WX 4100] + 67e8 Baffin [Radeon Pro WX 4130/4150] + 1028 075d Radeon Pro WX 4150 + 1028 07b0 Radeon Pro WX 4130/4150 + 1028 07b1 Radeon Pro WX 4130 + 1028 175d Radeon Pro WX 4150 + 1028 17b0 Radeon Pro WX 4130/4150 + 1028 17b1 Radeon Pro WX 4130 + 103c 8275 Radeon Pro WX 4150 + 103c 8277 Radeon Pro WX 4150 + 67e9 Baffin [Polaris11] + 67eb Baffin [Radeon Pro V5300X] + 67ef Baffin [Radeon RX 460/560D / Pro 450/455/460/555/555X/560/560X] + 1025 1367 RX560X 4GB + 1028 1703 RX 560D OEM OC 2 GB + 103c 3421 Radeon RX 460 + 1043 0561 AREZ Radeon RX 560 + 106b 0160 Radeon Pro 460 + 106b 0166 Radeon Pro 455 + 106b 0167 Radeon Pro 450 + 106b 0179 Radeon Pro 560 + 106b 017a Radeon Pro 555 + 106b 018f Radeon Pro 560X + 106b 0190 Radeon Pro 555X + 1642 1727 Polaris 21 XL [Radeon RX 560D] + 1682 956d Polaris 21 XL [Radeon RX 560D] + 67ff Baffin [Radeon RX 550 640SP / RX 560/560X] + 1002 0b04 Radeon RX 560 + 1028 1721 Radeon RX 560X + 1028 1726 Radeon RX 560DX + 103c 8479 Radeon RX 560X Mobile + 1043 04bc Radeon RX 560 + 1043 052f Radeon RX 560 + 1458 22ed Radeon RX 560 + 148c 2381 Radeon RX 560 + 1682 9560 Radeon RX 560 + 1da2 e348 Radeon RX 560 + 1da2 e367 Radeon RX 550 640SP + 6800 Wimbledon XT [Radeon HD 7970M] + 1002 0124 Radeon HD 7970M + 8086 2110 Radeon HD 7970M + 8086 2111 Radeon HD 7970M + 6801 Neptune XT [Radeon HD 8970M] + 1002 0124 Radeon HD 8970M + 1462 1117 Radeon R9 M290X + 8086 2110 Radeon HD 8970M + 8086 2111 Radeon HD 8970M + 6802 Wimbledon + 6806 Neptune + 6808 Pitcairn XT GL [FirePro W7000] + 1002 0310 FirePro S7000 + 1002 0420 Radeon Sky 500 + 103c 030c MED-X7000 + 13cc 3d25 MXRT-7500 + 15c3 030c MED-X7000 + 6809 Pitcairn LE GL [FirePro W5000] + 13cc 3d23 MXRT-5500 + 13cc 3d24 MXRT-5550 + 15c3 0b06 MED-X5000 + 6810 Curacao XT / Trinidad XT [Radeon R7 370 / R9 270X/370X] + 106b 012a FirePro D300 + 106b 012b FirePro D300 + 148c 0908 Radeon R9 370 OEM + 1682 7370 Radeon R7 370 + 6811 Curacao PRO [Radeon R7 370 / R9 270/370 OEM] + 1028 0b00 Trinidad PRO [Radeon R9 370 OEM] + 1043 2016 Trinidad PRO [Radeon R9 370 OEM] + 1458 2016 Trinidad PRO [Radeon R9 370 OEM] + 1462 2016 Trinidad PRO [Radeon R9 370 OEM] + 1462 3050 R9 270 Gaming OC + 148c 2016 Trinidad PRO [Radeon R9 370 OEM] + 1682 2015 Trinidad PRO [Radeon R7 370] + 174b 2015 NITRO Radeon R7 370 + 174b 2016 Trinidad PRO [Radeon R9 370 OEM] + 1787 2016 Trinidad PRO [Radeon R9 370 OEM] + 6816 Pitcairn + 6817 Pitcairn + 6818 Pitcairn XT [Radeon HD 7870 GHz Edition] + 1002 0b05 Radeon HD 8870 OEM + 174b 8b04 Radeon HD 8860 + 6819 Pitcairn PRO [Radeon HD 7850 / R7 265 / R9 270 1024SP] + 1043 042c Radeon HD 7850 + 1682 7269 Radeon R9 270 1024SP + 1682 9278 Radeon R9 270 1024SP + 174b a008 Radeon R9 270 1024SP + 174b e221 Radeon HD 7850 2GB GDDR5 DVI-I/DVI-D/HDMI/DP + 6820 Venus XTX [Radeon HD 8890M / R9 M275X/M375X] + 103c 1851 Radeon HD 7750M + 17aa 3643 Radeon R9 A375 + 17aa 3801 Radeon R9 M275 + 17aa 3824 Radeon R9 M375 + 1da2 e26a Radeon R7 250 + 6821 Venus XT [Radeon HD 8870M / R9 M270X/M370X] + 1002 031e FirePro SX4000 + 1028 05cc FirePro M5100 + 1028 15cc FirePro M5100 + 106b 0149 Radeon R9 M370X Mac Edition + 6822 Venus PRO [Radeon E8860] + 6823 Venus PRO [Radeon HD 8850M / R9 M265X] + 6825 Heathrow XT [Radeon HD 7870M] + 1028 053f FirePro M6000 + 1028 05cd FirePro M6000 + 1028 15cd FirePro M6000 + 103c 176c FirePro M6000 + 8086 2111 Chelsea PRO + 6826 Chelsea LP [Radeon HD 7700M Series] + 6827 Heathrow PRO [Radeon HD 7850M/8850M] + 6828 Cape Verde PRO [FirePro W600] + 15c3 2b1e MED-X6000 + 6829 Cape Verde + 682a Venus PRO + 682b Cape Verde PRO / Venus LE / Tropo PRO-L [Radeon HD 8830M / R7 250 / R7 M465X] + 0128 079c Radeon R7 465X + 1462 3012 Radeon R7 250 + 682c Cape Verde GL [FirePro W4100] + 682d Chelsea XT GL [FirePro M4000] + 682f Chelsea LP [Radeon HD 7730M] + 103c 1851 Radeon HD 7750M + 6835 Cape Verde PRX [Radeon R9 255 OEM] + 6837 Cape Verde LE [Radeon HD 7730/8730] + 1462 2796 Radeon HD 8730 + 1462 8092 Radeon HD 8730 + 148c 8730 Radeon HD 8730 + 1787 3000 Radeon HD 6570 + 683d Cape Verde XT [Radeon HD 7770/8760 / R7 250X] + 1002 0030 Radeon HD 8760 OEM + 1019 0030 Radeon HD 8760 OEM + 103c 6890 Radeon HD 8760 OEM + 1043 8760 Radeon HD 8760 OEM + 1462 2710 R7770-PMD1GD5 + 174b 8304 Radeon HD 8760 OEM + 683f Cape Verde PRO [Radeon HD 7750/8740 / R7 250E] + 1462 2790 Radeon HD 8740 + 1462 2791 Radeon HD 8740 + 1642 3b97 Radeon HD 8740 + 6840 Thames [Radeon HD 7500M/7600M Series] + 1025 050e Radeon HD 7670M + 1025 050f Radeon HD 7670M + 1025 0513 Radeon HD 7670M + 1025 0514 Radeon HD 7670M + 1025 056d Radeon HD 7670M + 1025 059a Radeon HD 7670M + 1025 059b Radeon HD 7670M + 1025 059e Radeon HD 7670M + 1025 0600 Radeon HD 7670M + 1025 0606 Radeon HD 7670M + 1025 0696 Radeon HD 7650M + 1025 0697 Radeon HD 7650M + 1025 0698 Radeon HD 7650M + 1025 0699 Radeon HD 7650M + 1025 0757 Radeon HD 7670M + 1028 056a Radeon HD 7670M + 1028 056e Radeon HD 7670M + 1028 0598 Radeon HD 7670M + 1028 059d Radeon HD 7670M + 1028 05a3 Radeon HD 7670M + 1028 05b9 Radeon HD 7670M + 1028 05bb Radeon HD 7670M + 103c 1789 FirePro M2000 + 103c 17f1 Radeon HD 7570M + 103c 17f4 Radeon HD 7650M + 103c 1813 Radeon HD 7590M + 103c 182f Radeon HD 7670M + 103c 1830 Radeon HD 7670M + 103c 1835 Radeon HD 7670M + 103c 183a Radeon HD 7670M + 103c 183c Radeon HD 7670M + 103c 183e Radeon HD 7670M + 103c 1840 Radeon HD 7670M + 103c 1842 Radeon HD 7670M + 103c 1844 Radeon HD 7670M + 103c 1848 Radeon HD 7670M + 103c 184a Radeon HD 7670M + 103c 184c Radeon HD 7670M + 103c 1895 Radeon HD 7670M + 103c 1897 Radeon HD 7670M + 103c 18a5 Radeon HD 7670M + 103c 18a7 Radeon HD 7670M + 103c 18f4 Radeon HD 7670M + 1043 100a Radeon HD 7670M + 1043 104b Radeon HD 7670M + 1043 10dc Radeon HD 7670M + 1043 2121 Radeon HD 7670M + 1043 2122 Radeon HD 7670M + 1043 2123 Radeon HD 7670M + 1043 2125 Radeon HD 7670M + 1043 2127 Radeon HD 7670M + 1179 fb11 Radeon HD 7670M + 1179 fb22 Radeon HD 7670M + 1179 fb23 Radeon HD 7670M + 1179 fb2c Radeon HD 7670M + 1179 fb31 Radeon HD 7670M + 1179 fb32 Radeon HD 7670M + 1179 fb38 Radeon HD 7670M + 1179 fb39 Radeon HD 7670M + 1179 fb3a Radeon HD 7670M + 1179 fb40 Radeon HD 7670M + 1179 fb41 Radeon HD 7670M + 1179 fb47 Radeon HD 7670M + 1179 fb48 Radeon HD 7670M + 1179 fb51 Radeon HD 7670M + 1179 fb52 Radeon HD 7670M + 1179 fb53 Radeon HD 7670M + 1179 fb81 Radeon HD 7670M + 1179 fb82 Radeon HD 7670M + 1179 fb83 Radeon HD 7670M + 1179 fc56 Radeon HD 7670M + 1179 fcd4 Radeon HD 7670M + 1179 fcee Radeon HD 7670M + 144d c0c5 Radeon HD 7690M + 144d c0ce Radeon HD 7670M + 144d c0da Radeon HD 7670M + 17aa 3970 Radeon HD 7670M + 17aa 397b Radeon HD 7670M + 17aa 5101 Radeon HD 7670M + 17aa 5102 Radeon HD 7670M + 17aa 5103 Radeon HD 7670M + 6841 Thames [Radeon HD 7550M/7570M/7650M] + 1028 0561 Radeon HD 7650M + 1028 056c Radeon HD 7650M + 1028 057f Radeon HD 7570M + 103c 17f1 Radeon HD 7570M + 103c 17f4 Radeon HD 7650M + 103c 1813 Radeon HD 7570M + 103c 183a Radeon HD 7650M + 103c 183c Radeon HD 7650M + 103c 183e Radeon HD 7650M + 103c 1840 Radeon HD 7650M + 103c 1842 Radeon HD 7650M + 103c 1844 Radeon HD 7650M + 1043 100a Radeon HD 7650M + 1043 104b Radeon HD 7650M + 1043 10dc Radeon HD 7650M + 1043 2134 Radeon HD 7650M + 1179 0001 Radeon HD 7570M + 1179 0002 Radeon HD 7570M + 1179 fb43 Radeon HD 7550M + 1179 fb91 Radeon HD 7550M + 1179 fb92 Radeon HD 7550M + 1179 fb93 Radeon HD 7550M + 1179 fba2 Radeon HD 7550M + 1179 fba3 Radeon HD 7550M + 144d c0c7 Radeon HD 7550M + 6842 Thames LE [Radeon HD 7000M Series] + 6843 Thames [Radeon HD 7670M] + 6860 Vega 10 [Instinct MI25/MI25x2/V340/V320] + 1002 0c35 Radeon PRO V320 + 1002 6c75 Radeon PRO V320 + 106b 017c Radeon Pro Vega 64 + 6861 Vega 10 XT [Radeon PRO WX 9100] + 6862 Vega 10 XT [Radeon PRO SSG] + 6863 Vega 10 XTX [Radeon Vega Frontier Edition] + 6864 Vega 10 [Radeon Pro V340/Instinct MI25x2] + 6867 Vega 10 XL [Radeon Pro Vega 56] + 6868 Vega 10 [Radeon PRO WX 8100/8200] + 6869 Vega 10 XGA [Radeon Pro Vega 48] + 686a Vega 10 LEA + 686b Vega 10 XTXA [Radeon Pro Vega 64X] + 686c Vega 10 [Instinct MI25 MxGPU/MI25x2 MxGPU/V340 MxGPU/V340L MxGPU] + 686d Vega 10 GLXTA + 686e Vega 10 GLXLA + 687f Vega 10 XL/XT [Radeon RX Vega 56/64] + 1002 0b36 RX Vega64 + 1002 6b76 AMD Radeon RX Vega 56 8GB +# ROG-STRIX-RXVEGA64-O8G-GAMING + 1043 04c4 Radeon RX Vega 64 + 1458 230c Radeon RX VEGA 56 GAMING OC 8G + 1da2 e376 Radeon RX VEGA 56 Pulse 8GB OC HBM2 + 6880 Lexington [Radeon HD 6550M] + 103c 163c Pavilion dv6 Radeon HD 6550M + 6888 Cypress XT [FirePro V8800] + 6889 Cypress PRO [FirePro V7800] + 1002 0301 FirePro V7800P + 13cc 3d1f MXRT-7400 + 688a Cypress XT [FirePro V9800] + 1002 030c FirePro V9800P + 688c Cypress XT GL [FireStream 9370] + 688d Cypress PRO GL [FireStream 9350] + 6898 Cypress XT [Radeon HD 5870] + 1002 0b00 Radeon HD 5870 Eyefinity Edition + 106b 00d0 Radeon HD 5870 Mac Edition +# R5870-PM2D1G + 1462 8032 Radeon HD 5870 1 GB GDDR5 + 174b 6870 Radeon HD 6870 1600SP Edition + 6899 Cypress PRO [Radeon HD 5850] +# EAH5850 + 1043 0330 Radeon HD 5850 + 174b 237b Radeon HD 5850 X2 + 174b 6850 Radeon HD 6850 1440SP Edition + 689b Cypress PRO [Radeon HD 6800 Series] + 689c Hemlock [Radeon HD 5970] + 1043 0352 ARES + 689d Hemlock [Radeon HD 5970] + 689e Cypress LE [Radeon HD 5830] + 68a0 Broadway XT [Mobility Radeon HD 5870] + 1028 12ef FirePro M7820 + 103c 1520 FirePro M7820 + 68a1 Broadway PRO [Mobility Radeon HD 5850] + 106b 00cc iMac MC511 Mobility Radeon HD 5850 MXM Module + 68a8 Granville [Radeon HD 6850M/6870M] + 1025 0442 Radeon HD 6850M + 1025 0451 Radeon HD 6850M + 1025 050a Radeon HD 6850M + 1025 050b Radeon HD 6850M + 1025 050c Radeon HD 6850M + 1025 050e Radeon HD 6850M + 1025 050f Radeon HD 6850M + 1025 0513 Radeon HD 6850M + 1025 0514 Radeon HD 6850M + 1025 0515 Radeon HD 6850M + 1025 0516 Radeon HD 6850M + 1025 0525 Radeon HD 6850M + 1025 0526 Radeon HD 6850M + 1025 056d Radeon HD 6850M + 1028 048f Radeon HD 6870M + 1028 0490 Radeon HD 6870M + 1028 04b9 Radeon HD 6870M + 1028 04ba Radeon HD 6870M + 103c 159b Radeon HD 6850M + 144d c0ad Radeon HD 6850M + 68a9 Juniper XT [FirePro V5800] + 13cc 3d1e MXRT-5400 + 13cc 3d20 MXRT-5450 + 68b8 Juniper XT [Radeon HD 5770] + 106b 00cf MacPro5,1 [Mac Pro 2.8GHz DDR3] + 68b9 Juniper LE [Radeon HD 5670 640SP Edition] + 68ba Juniper XT [Radeon HD 6770] + 68be Juniper PRO [Radeon HD 5750] + 148c 3000 Radeon HD 6750 + 68bf Juniper PRO [Radeon HD 6750] + 174b 6750 Radeon HD 6750 + 68c0 Madison [Mobility Radeon HD 5730 / 6570M] + 1019 2383 Mobility Radeon HD 5730 + 1028 02a2 Mobility Radeon HD 5730 + 1028 02fe Mobility Radeon HD 5730 + 1028 0419 Mobility Radeon HD 5730 + 103c 147d Mobility Radeon HD 5730 + 103c 1521 Madison XT [FirePro M5800] + 103c 1593 Mobility Radeon HD 6570 + 103c 1596 Mobility Radeon HD 6570 + 103c 1599 Mobility Radeon HD 6570 + 1043 1c22 Mobility Radeon HD 5730 + 17aa 3927 Mobility Radeon HD 5730 + 17aa 3952 Mobility Radeon HD 5730 + 17aa 3978 Radeon HD 6570M + 68c1 Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] + 1025 0205 Mobility Radeon HD 5650 + 1025 0293 Mobility Radeon HD 5650 + 1025 0294 Mobility Radeon HD 5650 + 1025 0296 Mobility Radeon HD 5650 + 1025 0308 Mobility Radeon HD 5650 + 1025 030a Mobility Radeon HD 5650 + 1025 0311 Mobility Radeon HD 5650 + 1025 0312 Mobility Radeon HD 5650 + 1025 031c Mobility Radeon HD 5650 + 1025 031d Mobility Radeon HD 5650 + 1025 033d Mobility Radeon HD 5650 + 1025 033e Mobility Radeon HD 5650 + 1025 033f Mobility Radeon HD 5650 + 1025 0346 Mobility Radeon HD 5650 + 1025 0347 Aspire 7740G + 1025 0348 Mobility Radeon HD 5650 + 1025 0356 Mobility Radeon HD 5650 + 1025 0357 Mobility Radeon HD 5650 + 1025 0358 Mobility Radeon HD 5650 + 1025 0359 Mobility Radeon HD 5650 + 1025 035a Mobility Radeon HD 5650 + 1025 035b Mobility Radeon HD 5650 + 1025 035c Mobility Radeon HD 5650 + 1025 035d Mobility Radeon HD 5650 + 1025 035e Mobility Radeon HD 5650 + 1025 0360 Mobility Radeon HD 5650 + 1025 0362 Mobility Radeon HD 5650 + 1025 0364 Mobility Radeon HD 5650 + 1025 0365 Mobility Radeon HD 5650 + 1025 0366 Mobility Radeon HD 5650 + 1025 0367 Mobility Radeon HD 5650 + 1025 0368 Mobility Radeon HD 5650 + 1025 036c Mobility Radeon HD 5650 + 1025 036d Mobility Radeon HD 5650 + 1025 036e Mobility Radeon HD 5650 + 1025 036f Mobility Radeon HD 5650 + 1025 0372 Mobility Radeon HD 5650 + 1025 0373 Mobility Radeon HD 5650 + 1025 0377 Mobility Radeon HD 5650 + 1025 0378 Mobility Radeon HD 5650 + 1025 0379 Mobility Radeon HD 5650 + 1025 037a Mobility Radeon HD 5650 + 1025 037b Mobility Radeon HD 5650 + 1025 037e Mobility Radeon HD 5650 + 1025 037f Mobility Radeon HD 5650 + 1025 0382 Mobility Radeon HD 5650 + 1025 0383 Mobility Radeon HD 5650 + 1025 0384 Mobility Radeon HD 5650 + 1025 0385 Mobility Radeon HD 5650 + 1025 0386 Mobility Radeon HD 5650 + 1025 0387 Mobility Radeon HD 5650 + 1025 0388 Mobility Radeon HD 5650 + 1025 038b Mobility Radeon HD 5650 + 1025 038c Mobility Radeon HD 5650 + 1025 039a Mobility Radeon HD 5650 + 1025 0411 Mobility Radeon HD 5650 + 1025 0412 Mobility Radeon HD 5650 + 1025 0418 Mobility Radeon HD 5650 + 1025 0419 Mobility Radeon HD 5650 + 1025 0420 Mobility Radeon HD 5650 + 1025 0421 Mobility Radeon HD 5650 + 1025 0425 Mobility Radeon HD 5650 + 1025 042a Mobility Radeon HD 5650 + 1025 042e Mobility Radeon HD 5650 + 1025 042f Mobility Radeon HD 5650 + 1025 0432 Mobility Radeon HD 5650 + 1025 0433 Mobility Radeon HD 5650 + 1025 0442 Mobility Radeon HD 5650 + 1025 044c Mobility Radeon HD 5650 + 1025 044e Mobility Radeon HD 5650 + 1025 0451 Mobility Radeon HD 5650 + 1025 0454 Mobility Radeon HD 5650 + 1025 0455 Mobility Radeon HD 5650 + 1025 0475 Mobility Radeon HD 5650 + 1025 0476 Mobility Radeon HD 5650 + 1025 0487 Mobility Radeon HD 5650 + 1025 0489 Mobility Radeon HD 5650 + 1025 0498 Mobility Radeon HD 5650 + 1025 0517 Radeon HD 6550M + 1025 051a Radeon HD 6550M + 1025 051b Radeon HD 6550M + 1025 051c Radeon HD 6550M + 1025 051d Radeon HD 6550M + 1025 0525 Radeon HD 6550M + 1025 0526 Radeon HD 6550M + 1025 052b Radeon HD 6550M + 1025 052c Radeon HD 6550M + 1025 053c Radeon HD 6550M + 1025 053d Radeon HD 6550M + 1025 053e Radeon HD 6550M + 1025 053f Radeon HD 6550M + 1025 0607 Radeon HD 6550M + 1028 041b Mobility Radeon HD 5650 + 1028 0447 Mobility Radeon HD 5650 + 1028 0448 Mobility Radeon HD 5650 + 1028 0456 Mobility Radeon HD 5650 + 1028 0457 Mobility Radeon HD 5650 + 103c 1436 Mobility Radeon HD 5650 + 103c 1437 Mobility Radeon HD 5650 + 103c 1440 Mobility Radeon HD 5650 + 103c 1448 Mobility Radeon HD 5650 + 103c 1449 Mobility Radeon HD 5650 + 103c 144a Mobility Radeon HD 5650 + 103c 144b Mobility Radeon HD 5650 + 103c 147b Mobility Radeon HD 5650 + 103c 149c Mobility Radeon HD 5650 + 103c 149e Mobility Radeon HD 5650 + 103c 1521 Madison Pro [FirePro M5800] + 1043 1bc2 Mobility Radeon HD 5650 + 104d 9071 Mobility Radeon HD 5650 + 104d 9077 Mobility Radeon HD 5650 + 104d 9081 Mobility Radeon HD 5650 + 1179 fd00 Mobility Radeon HD 5650 + 1179 fd12 Mobility Radeon HD 5650 + 1179 fd1a Mobility Radeon HD 5650 + 1179 fd30 Mobility Radeon HD 5650 + 1179 fd31 Mobility Radeon HD 5650 + 1179 fd50 Mobility Radeon HD 5650 + 1179 fd52 Radeon HD 6530M + 1179 fd63 Radeon HD 6530M + 1179 fd65 Radeon HD 6530M + 1179 fdd0 Mobility Radeon HD 5650 + 1179 fdd2 Radeon HD 6530M + 144d c07e Mobility Radeon HD 5650 + 144d c085 Mobility Radeon HD 5650 + 14c0 0043 Mobility Radeon HD 5650 + 14c0 004d Mobility Radeon HD 5650 + 17aa 3928 Mobility Radeon HD 5650 + 17aa 3951 Mobility Radeon HD 5650 + 17aa 3977 Radeon HD 6550M + 68c7 Pinewood [Mobility Radeon HD 5570/6550A] + 1462 2241 Mobility Radeon HD 5570 + 1462 2243 Mobility Radeon HD 5570 + 1462 2244 Mobility Radeon HD 5570 + 1462 2245 Radeon HD 6550A + 1462 2246 Radeon HD 6550A + 68c8 Redwood XT GL [FirePro V4800] + 68c9 Redwood PRO GL [FirePro V3800] + 13cc 3d1d MXRT-2400 + 68d8 Redwood XT [Radeon HD 5670/5690/5730] + 1028 68e0 Radeon HD 5670 + 174b 5690 Radeon HD 5690 + 174b 5730 Radeon HD 5730 + 174b e151 Radeon HD 5670 + 1787 3000 Radeon HD 5730 + 17af 3010 Radeon HD 5730 + 17af 3011 Radeon HD 5690 + 68d9 Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] + 103c 6870 Radeon HD 5570 + 103c 6872 Radeon HD 5570 + 1043 03ce Radeon HD 5550 + 1462 2151 Radeon HD 5570 + 1462 2240 Radeon HD 5570 + 148c 3000 Radeon HD 6510 + 148c 3001 Radeon HD 6610 + 1545 5550 Radeon HD 5550 + 1545 7570 Radeon HD 7570 + 1642 3985 Radeon HD 5570 + 1642 3996 Radeon HD 5570 + 174b 3000 Radeon HD 6510 + 174b 6510 Radeon HD 6510 + 174b 6610 Radeon HD 6610 + 174b e142 Radeon HD 5570 + 1787 3000 Radeon HD 6510 + 17af 3000 Radeon HD 6510 + 17af 3010 Radeon HD 5630 + 68da Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570] + 1462 8071 VR5550-MD1G (Radeon HD 5550) + 148c 3000 Radeon HD 6390 + 148c 3001 Radeon HD 6490 + 1545 7570 Radeon HD 7570 + 174b 3000 Radeon HD 6390 + 174b 5570 Radeon HD 5570 + 174b 5630 Radeon HD 5630 + 174b 6490 Radeon HD 6490 + 1787 3000 Radeon HD 5630 + 17af 3000 Radeon HD 6390 + 17af 3010 Radeon HD 5630 + 68de Redwood + 68e0 Park [Mobility Radeon HD 5430/5450/5470] + 1028 0404 Mobility Radeon HD 5450 + 1028 0414 Mobility Radeon HD 5450 + 1028 0434 Mobility Radeon HD 5450 + 103c 1433 Mobility Radeon HD 5450 + 103c 1434 Mobility Radeon HD 5450 + 103c 1469 Mobility Radeon HD 5450 + 103c 146b Mobility Radeon HD 5450 + 103c 1486 TouchSmart tm2-2050er discrete GPU (Mobility Radeon HD 5450) + 103c 1622 Mobility Radeon HD 5450 + 103c 1623 Mobility Radeon HD 5450 + 103c eeee Mobility Radeon HD 5450 + 104d 9076 Mobility Radeon HD 5450 + 1682 304e Caicos [Radeon HD 5450] + 1682 6000 Caicos [Radeon HD 5450] + 17aa 9e52 FirePro M3800 + 17aa 9e53 FirePro M3800 + 68e1 Park [Mobility Radeon HD 5430] + 1043 041f Caicos [Radeon HD 7350] + 1043 3000 Caicos [Radeon HD 5450] + 148c 3000 Caicos [Radeon HD 5450] + 148c 3001 Caicos [Radeon HD 6230] + 148c 3002 Caicos [Radeon HD 6250] + 148c 3003 Caicos [Radeon HD 6350] + 148c 7350 Caicos [Radeon HD 7350] + 148c 8350 Caicos [Radeon HD 8350] + 1545 5450 Caicos [Radeon HD 5450] + 1545 7350 Caicos [Radeon HD 7350] + 1682 3000 Caicos [Radeon HD 5450] + 1682 6000 Caicos [Radeon HD 5450] + 1682 7350 Caicos [Radeon HD 7350] + 174b 3000 Caicos [Radeon HD 5450] + 174b 5470 Caicos [Radeon HD 5470] + 174b 6000 Caicos [Radeon HD 5450] + 174b 6230 Caicos [Radeon HD 6230] + 174b 6350 Caicos [Radeon HD 6350] + 174b 7350 Caicos [Radeon HD 7350] + 1787 3000 Caicos [Radeon HD 5450] + 17af 3000 Caicos [Radeon HD 5450] + 17af 3001 Caicos [Radeon HD 6230] + 17af 3014 Caicos [Radeon HD 6350] + 17af 3015 Caicos [Radeon HD 7350] + 17af 8350 Caicos [Radeon HD 8350 OEM] + 68e4 Robson CE [Radeon HD 6370M/7370M] + 1019 2386 Radeon HD 6350M + 1019 2387 Radeon HD 6350M + 1019 238d Radeon HD 6370M + 1019 238e Radeon HD 6370M + 1025 0382 Radeon HD 6370M + 1025 0489 Radeon HD 6370M + 1025 048a Radeon HD 6370M + 1025 048b Radeon HD 6370M + 1025 048c Radeon HD 6370M + 1028 04c1 Radeon HD 6370M + 1028 04ca Radeon HD 6370M + 1028 04cc Radeon HD 6370M + 1028 04cd Radeon HD 6370M + 1028 04d7 Radeon HD 6370M + 103c 1411 Radeon HD 6370M + 103c 1421 Radeon HD 6370M + 103c 1426 Radeon HD 6370M + 103c 1428 Radeon HD 6370M + 103c 142a Radeon HD 6370M + 103c 142b Radeon HD 6370M + 103c 143a Radeon HD 6370M + 103c 143c Radeon HD 6370M + 103c 1445 Radeon HD 6370M + 103c 162c Radeon HD 6370M + 103c 162d Radeon HD 6370M + 103c 162e Radeon HD 6370M + 103c 162f Radeon HD 6370M + 103c 1639 Radeon HD 6370M + 103c 163a Radeon HD 6370M + 103c 163b Radeon HD 6370M + 103c 163c Radeon HD 6370M + 103c 163d Radeon HD 6370M + 103c 163e Radeon HD 6370M + 103c 163f Radeon HD 6370M + 103c 1641 Radeon HD 6370M + 103c 1643 Radeon HD 6370M + 103c 3578 Radeon HD 6370M + 103c 357a Radeon HD 6370M + 103c 3673 Radeon HD 6370M + 103c 3675 Radeon HD 6370M + 1043 1c92 Radeon HD 6370M + 1043 84a1 Radeon HD 6370M + 1043 84ad Radeon HD 6370M + 104d 9081 Radeon HD 6370M + 1545 7350 Cedar [Radeon HD 7350] + 1558 4510 Radeon HD 6370M + 1558 5505 Radeon HD 6370M + 174b 5450 Cedar [Radeon HD 5450] + 17aa 21dd Radeon HD 6370M + 17aa 21e9 Radeon HD 6370M + 17aa 3971 Radeon HD 6370M + 17aa 3972 Radeon HD 7370M + 17aa 397a Radeon HD 6370M/7370M + 17aa 397b Radeon HD 6370M/7370M + 17aa 397f Radeon HD 7370M + 68e5 Robson LE [Radeon HD 6330M] + 1179 fd3c Radeon HD 6330M + 1179 fd50 Radeon HD 6330M + 1179 fd52 Radeon HD 6330M + 1179 fd63 Radeon HD 6330M + 1179 fd65 Radeon HD 6330M + 1179 fd73 Radeon HD 6330M + 1179 fd75 Radeon HD 6330M + 1179 fdd0 Radeon HD 6330M + 1179 fdd2 Radeon HD 6330M + 1179 fdea Radeon HD 6330M + 1179 fdf8 Radeon HD 6330M + 148c 5450 Cedar [Radeon HD 5450] + 148c 6350 Cedar [Radeon HD 6350] + 148c 7350 Cedar [Radeon HD 7350] + 148c 8350 Cedar [Radeon HD 8350] + 1545 7350 Cedar [Radeon HD 7350] + 68e8 Cedar + 68e9 Cedar [ATI FirePro (FireGL) Graphics Adapter] + 68f1 Cedar GL [FirePro 2460] + 68f2 Cedar GL [FirePro 2270] + 68f8 Cedar [Radeon HD 7300 Series] + 68f9 Cedar [Radeon HD 5000/6000/7350/8350 Series] + 1019 0001 Radeon HD 5450 + 1019 0002 Radeon HD 5450 + 1019 0019 Radeon HD 6350 + 1025 0518 Radeon HD 5450 + 1025 0519 Radeon HD 5450 + 1028 010e XPS 8300 + 1028 2126 Radeon HD 6350 + 103c 2126 Radeon HD 6350 + 103c 2aac Radeon HD 5450 + 103c 2aae Radeon HD 5450 + 103c 3580 Radeon HD 5450 + 1043 0386 Radeon HD 5450 + 1043 03c2 EAH5450 SILENT/DI/512MD2 (LP) +# GV-R545SC-1GI + 1458 21d8 Radeon HD 5450 1GB DDR3 Silent + 1462 2130 Radeon HD 5450 + 1462 2131 Radeon HD 5450 + 1462 2133 Radeon HD 6350 + 1462 2180 Radeon HD 5450 + 1462 2181 Radeon HD 5450 + 1462 2182 Radeon HD 6350 + 1462 2183 Radeon HD 6350 + 1462 2230 Radeon HD 5450 + 1462 2231 Radeon HD 5450 + 1462 2495 Radeon HD 6350 + 148c 3001 Radeon HD 5530/6250 + 148c 3002 Radeon HD 6290 + 148c 3003 Radeon HD 6230 + 148c 3004 Radeon HD 6350 + 148c 7350 Radeon HD 7350 + 148c 8350 Radeon HD 8350 + 1545 7350 Radeon HD 7350 + 1642 3983 Radeon HD 5450 + 1642 3984 Radeon HD 6350 + 1642 3987 Radeon HD 6350 + 1642 3997 Radeon HD 5450 + 1642 3a05 Radeon HD 5450 + 1642 3b31 Radeon HD 6350A + 1682 3270 Radeon HD 7350 + 174b 3000 Radeon HD 6230 + 174b 3987 Radeon HD 6350 + 174b 5470 Radeon HD 5470 + 174b 5490 Radeon HD 5490 + 174b 5530 Radeon HD 5530 + 174b 6230 Radeon HD 6230 + 174b 6250 Radeon HD 6250 + 174b 6290 Radeon HD 6290 + 174b 6350 Radeon HD 6350 + 174b 7350 Radeon HD 7350 + 174b 8350 Radeon HD 8350 + 174b e127 Radeon HD 5450 + 174b e145 Radeon HD 5450 + 174b e153 Radeon HD 5450 + 1787 3000 Radeon HD 5470 + 1787 3001 Radeon HD 5530 + 1787 3002 Radeon HD 5490 + 17aa 3602 Radeon HD 5450 + 17aa 3603 Radeon HD 5450 + 17aa 360f Radeon HD 5450 + 17aa 3619 Radeon HD 5450 + 17af 3000 Radeon HD 6250 + 17af 3001 Radeon HD 6230 + 17af 3002 Radeon HD 6290 + 17af 3011 Radeon HD 5470 + 17af 3012 Radeon HD 5490 + 17af 3013 Radeon HD 5470 + 17af 3014 Radeon HD 6350 + 68fa Cedar [Radeon HD 7350/8350 / R5 220] + 1019 0019 Radeon HD 7350 + 1019 0021 Radeon HD 7350 + 1019 0022 Radeon HD 7350 + 1019 0026 Radeon HD 8350 + 103c 2adf Radeon HD 7350A + 103c 2ae8 Radeon HD 7350A + 1043 8350 Radeon HD 8350 + 1462 2128 Radeon HD 7350 + 1462 2184 Radeon HD 7350 + 1462 2186 Radeon HD 7350 + 1462 2495 Radeon HD 7350 + 1462 b490 Radeon HD 7350 + 1642 3985 Radeon HD 7350 + 174b 3510 Radeon HD 8350 + 174b 3521 Radeon R5 220 + 174b 3522 Radeon R5 220 + 174b 7350 Radeon HD 7350 + 174b 8153 Radeon HD 8350 + 174b e127 Radeon HD 7350 + 174b e153 Radeon HD 7350 + 174b e180 Radeon HD 7350 + 17af 3015 Radeon HD 7350 + 68fe Cedar LE + 6900 Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445 / 530/535 / 620/625 Mobile] + 1025 1056 Radeon R7 M360 / R8 M365DX + 1028 0640 Radeon R7 M260/M265 + 1028 0643 Radeon R7 M260/M265 + 1028 067f Radeon R7 M260 + 1028 0767 Radeon R7 M445 + 1028 0810 Radeon 530 + 1028 130a Radeon R7 M260 + 103c 2263 Radeon R7 M260 + 103c 2269 Radeon R7 M260 + 103c 22c6 Radeon R7 M260 + 103c 22c8 Radeon R7 M260 + 103c 2b45 Radeon R7 A360 + 103c 808c Radeon R7 M260 + 103c 8099 Radeon R7 M360 + 103c 80b5 Radeon R7 M360 + 103c 80b9 Radeon R7 M360 + 103c 811c Radeon R7 M340 + 103c 8226 Radeon R7 M440 + 10cf 1906 Radeon R7 M260 + 1170 9979 Radeon R7 M360 + 1179 f903 Radeon R7 M260 + 1179 f922 Radeon R7 M260 + 1179 f923 Radeon R7 M260 + 1179 f934 Radeon R7 M260 + 17aa 3822 Radeon R7 M360 + 17aa 3824 Radeon R7 M360 + 17aa 5021 Radeon R7 M260 + 6901 Topaz PRO [Radeon R5 M255] + 103c 1318 Radeon R6 M255DX + 6907 Meso XT [Radeon R5 M315] + 6920 Amethyst [Radeon R9 M395/ M395X Mac Edition] + 6921 Amethyst XT [Radeon R9 M295X / M390X] + 6929 Tonga XT GL [FirePro S7150] + 692b Tonga PRO GL [FirePro W7100] + 13cc 3d2b MXRT-7600 + 692f Tonga XTV GL [FirePro S7150V] + 6930 Tonga PRO [Radeon R9 380 4GB] + 6938 Tonga XT / Amethyst XT [Radeon R9 380X / R9 M295X] + 1043 04f5 Radeon R9 380X + 1043 04f7 Radeon R9 380X + 106b 013a Radeon R9 M295X Mac Edition + 1458 22c8 Radeon R9 380X + 148c 2350 Radeon R9 380X + 1682 9385 Radeon R9 380X + 174b e308 Radeon R9 380X Nitro 4G D5 + 17af 2006 Radeon R9 380X + 6939 Tonga PRO [Radeon R9 285/380] + 1462 2015 Radeon R9 380 Gaming 4G + 148c 9380 Radeon R9 380 + 174b e308 Radeon R9 380 Nitro 4G D5 + 174b e315 Radeon R9 285 + 693b Tonga PRO GL [FirePro W7100 / Barco MXRT-7600] + 694c Polaris 22 XT [Radeon RX Vega M GH] + 694e Polaris 22 XL [Radeon RX Vega M GL] + 694f Polaris 22 MGL XL [Radeon Pro WX Vega M GL] + 6980 Polaris12 + 6981 Lexa XT [Radeon PRO WX 3200] + 6985 Lexa XT [Radeon PRO WX 3100] + 103c 83b5 Radeon PRO WX 3100 + 6986 Polaris12 + 6987 Lexa [Radeon 540X/550X/630 / RX 640 / E9171 MCM] + 698f Lexa XT [Radeon PRO WX 3100 / Barco MXRT 4700] + 6995 Lexa XT [Radeon PRO WX 2100] + 699f Lexa PRO [Radeon 540/540X/550/550X / RX 540X/550/550X] + 1028 1720 Radeon RX 550X + 148c 2380 Lexa XL [Radeon RX 550] + 17aa 5069 Thinkpad E480/E580 + 1da2 e367 Lexa PRO [Radeon RX 550] + 69a0 Vega 12 + 69a1 Vega 12 + 69a2 Vega 12 + 69a3 Vega 12 + 69af Vega 12 [Radeon Pro Vega 20] + 6fdf Polaris 20 XL [Radeon RX 580 2048SP] + 700f RS100 AGP Bridge + 7010 RS200/RS250 AGP Bridge + 7100 R520 [Radeon X1800 XT] + 7101 R520/M58 [Mobility Radeon X1800 XT] + 7102 R520/M58 [Mobility Radeon X1800] + 7104 R520 GL [FireGL V7200 / Barco MXTR-5100] + 13cc 3d0a MXRT-5100 + 7109 R520 [Radeon X1800 XL] + 1002 0322 All-in-Wonder X1800XL + 1002 0d02 Radeon X1800 CrossFire Edition + 710a R520 [Radeon X1800 GTO] + 1002 0b12 Radeon X1800 GTO² + 710b R520 [Radeon X1800 GTO] + 710e R520 GL [FireGL V7300] + 13cc 3d0c MXRT-5150 + 710f R520 GL [FireGL V7350] + 13cc 3d0e MXRT-7100 + 7120 R520 [Radeon X1800] (Secondary) + 7124 R520 GL [FireGL V7200] (Secondary) + 13cc 3d0b MXRT-5100 (Secondary) + 7129 R520 [Radeon X1800] (Secondary) + 1002 0323 All-In-Wonder X1800 XL (Secondary) + 1002 0d03 Radeon X1800 CrossFire Edition (Secondary) + 712e R520 GL [FireGL V7300] (Secondary) + 13cc 3d0d MXRT-5150 (Secondary) + 712f R520 GL [FireGL V7350] (Secondary) + 13cc 3d0f MXRT-7100 (Secondary) + 7140 RV515 [Radeon X1300/X1550/X1600 Series] + 7142 RV515 PRO [Radeon X1300/X1550 Series] + 1002 0322 All-in-Wonder 2006 PCI-E Edition + 1043 0142 EAX1300PRO/TD/256M + 7143 RV505 [Radeon X1300/X1550 Series] + 7145 RV515/M54 [Mobility Radeon X1400] + 17aa 2006 Thinkpad T60 model 2007 + 7146 RV515 [Radeon X1300/X1550] + 1002 0322 All-in-Wonder 2006 PCI-E Edition + 1545 1996 Radeon X1300 512MB PCI-e + 7147 RV505 [Radeon X1550 64-bit] + 7149 RV515/M52 [Mobility Radeon X1300] + 714a RV515/M52 [Mobility Radeon X1300] + 7152 RV515 GL [FireGL V3300] + 7153 RV515 GL [FireGL V3350] + 715f RV505 CE [Radeon X1550 64-bit] + 7162 RV515 PRO [Radeon X1300/X1550 Series] (Secondary) + 1002 0323 All-in-Wonder 2006 PCI-E Edition (Secondary) + 7163 RV505 [Radeon X1550 Series] (Secondary) + 7166 RV515 [Radeon X1300/X1550 Series] (Secondary) + 1002 0323 All-in-Wonder 2006 PCI-E Edition (Secondary) + 1545 1997 Radeon X1300 512MB PCI-e (Secondary) + 7167 RV515 [Radeon X1550 64-bit] (Secondary) + 7172 RV515 GL [FireGL V3300] (Secondary) + 7173 RV515 GL [FireGL V3350] (Secondary) + 7181 RV516 [Radeon X1600/X1650 Series] + 7183 RV516 [Radeon X1300/X1550 Series] + 7186 RV516/M64 [Mobility Radeon X1450] + 7187 RV516 [Radeon X1300/X1550 Series] + 7188 RV516/M64-S [Mobility Radeon X2300] + 103c 30c1 6910p + 718a RV516/M64 [Mobility Radeon X2300] + 718b RV516/M62 [Mobility Radeon X1350] + 1071 8209 Medion MIM 2240 Notebook PC [MD98100] + 718c RV516/M62-CSP64 [Mobility Radeon X1350] + 718d RV516/M64-CSP128 [Mobility Radeon X1450] + 7193 RV516 [Radeon X1550 Series] + 7196 RV516/M62-S [Mobility Radeon X1350] + 719b RV516 GL [FireMV 2250] + 13cc 3d12 MXRT-1150 + 13cc 3d14 MXRT-2150 + 719f RV516 [Radeon X1550 Series] + 71a0 RV516 [Radeon X1300/X1550 Series] (Secondary) + 71a1 RV516 [Radeon X1600/X1650 Series] (Secondary) + 71a3 RV516 [Radeon X1300/X1550 Series] (Secondary) + 71a7 RV516 [Radeon X1300/X1550 Series] (Secondary) + 71bb RV516 GL [FireMV 2250] (Secondary) + 13cc 3d13 MXRT-1150 (Secondary) + 13cc 3d15 MXRT-2150 (Secondary) + 71c0 RV530 [Radeon X1600 XT/X1650 GTO] + 1002 e160 Radeon X1650 GTO + 174b e160 Radeon X1650 GTO + 71c1 RV535 [Radeon X1650 PRO] + 174b 0880 Radeon X1700 FSC + 71c2 RV530 [Radeon X1600 PRO] + 71c3 RV530 [Radeon X1600 PRO] + 71c4 RV530/M56 GL [Mobility FireGL V5200] + 17aa 2007 ThinkPad T60p + 71c5 RV530/M56-P [Mobility Radeon X1600] + 103c 309f Compaq nx9420 Notebook + 103c 30a3 Compaq NW8440 + 1043 10b2 A6J-Q008 + 106b 0080 MacBook Pro + 71c6 RV530LE [Radeon X1600/X1650 PRO] + 71c7 RV535 [Radeon X1650 PRO] + 1787 3000 PowerColor X1650 PRO AGP + 71ce RV530 [Radeon X1300 XT/X1600 PRO] + 71d2 RV530 GL [FireGL V3400] + 13cc 3d08 MXRT-2100 + 71d4 RV530/M66 GL [Mobility FireGL V5250] + 71d5 RV530/M66-P [Mobility Radeon X1700] + 71d6 RV530/M66-XT [Mobility Radeon X1700] + 71de RV530/M66 [Mobility Radeon X1700/X2500] + 71e0 RV530 [Radeon X1600] (Secondary) + 174b e161 Radeon X1600 GTO (Secondary) + 71e1 RV535 [Radeon X1650 PRO] (Secondary) + 174b 0881 Radeon X1700 FSC (Secondary) + 71e2 RV530 [Radeon X1600] (Secondary) + 71e6 RV530 [Radeon X1650] (Secondary) + 71e7 RV535 [Radeon X1650 PRO] (Secondary) + 1787 3001 Radeon X1650 PRO AGP + 71f2 RV530 GL [FireGL V3400] (Secondary) + 13cc 3d09 MXRT-2100 (Secondary) + 7210 RV550/M71 [Mobility Radeon HD 2300] + 7211 RV550/M71 [Mobility Radeon X2300 HD] + 7240 R580+ [Radeon X1950 XTX] + 1002 0d02 Radeon X1950 CrossFire Edition + 7244 R580+ [Radeon X1950 XT] + 7248 R580 [Radeon X1950] + 7249 R580 [Radeon X1900 XT] + 1002 0412 All-In-Wonder X1900 + 1002 0b12 Radeon X1900 XT/XTX + 1002 0d02 Radeon X1900 CrossFire Edition + 1043 0160 Radeon X1900 XTX 512 MB GDDR3 + 724b R580 [Radeon X1900 GT] + 1002 0b12 Radeon X1900 (Primary) + 1002 0b13 Radeon X1900 (Secondary) + 724e R580 GL [FireGL V7350] + 7269 R580 [Radeon X1900 XT] (Secondary) + 726b R580 [Radeon X1900 GT] (Secondary) + 726e R580 [AMD Stream Processor] (Secondary) + 7280 RV570 [Radeon X1950 PRO] + 7288 RV570 [Radeon X1950 GT] + 7291 RV560 [Radeon X1650 XT] + 1462 0810 Radeon X1700 SE + 7293 RV560 [Radeon X1650 GT] + 72a0 RV570 [Radeon X1950 PRO] (Secondary) + 72a8 RV570 [Radeon X1950 GT] (Secondary) + 72b1 RV560 [Radeon X1650 XT] (Secondary) + 72b3 RV560 [Radeon X1650 GT] (Secondary) + 7300 Fiji [Radeon R9 FURY / NANO Series] + 1002 0b35 FirePro S9300 X2 + 1002 0b36 Radeon R9 FURY X / NANO + 1002 1b36 Radeon Pro Duo + 1043 049e Radeon R9 FURY + 1043 04a0 Radeon R9 FURY X + 174b e329 Radeon R9 FURY + 7310 Navi 10 [Radeon Pro W5700X] + 7312 Navi 10 [Radeon Pro W5700] + 7314 Navi 10 USB + 7319 Navi 10 [Radeon Pro 5700 XT] + 731b Navi 10 [Radeon Pro 5700] + 731e TDC-150 + 731f Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT] + 1002 0b36 Reference RX 5700 XT + 1458 2313 Radeon RX 5700 XT Gaming OC + 1458 231d Radeon RX 5600 XT/REV 2.0 [Windforce 6GB OC] + 148c 2398 AXRX 5700 XT 8GBD6-3DHE/OC [PowerColor Red Devil Radeon RX 5700 XT] + 1682 5701 RX 5700 XT RAW II + 1849 5120 Radeon RX 5600 XT + 1da2 e409 Sapphire Technology Limited Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT] + 1da2 e410 Sapphire NITRO+ RX 5700 XT + 1da2 e411 Radeon RX 5600 XT + 7340 Navi 14 [Radeon RX 5500/5500M / Pro 5500M] + 7341 Navi 14 [Radeon Pro W5500] + 7347 Navi 14 [Radeon Pro W5500M] + 734f Navi 14 [Radeon Pro W5300M] + 7360 Navi 12 [Radeon Pro 5600M/V520/BC-160] + 7362 Navi 12 [Radeon Pro V520/V540] + 7388 Arcturus GL-XL + 738c Arcturus GL-XL [Instinct MI100] + 738e Arcturus GL-XL [Instinct MI100] + 73a1 Navi 21 [Radeon Pro V620] + 73a2 Navi 21 Pro-XTA [Radeon Pro W6900X] + 73a3 Navi 21 GL-XL [Radeon PRO W6800] + 73a4 Navi 21 USB + 73a5 Navi 21 [Radeon RX 6950 XT] +# Reference + 1002 0e3a Radeon RX 6950 XT + 1849 5230 Navi 21 [ASRock OC Forumla Radeon RX 6950XT] + 1da2 441d Navi 21 [Sapphire Nitro+ Radeon RX 6950 XT] + 1eae 6950 Navi 21 [XFX Speedster MERC319 Radeon RX 6950 XT] + 73ab Navi 21 Pro-XLA [Radeon Pro W6800X/Radeon Pro W6800X Duo] + 73ae Navi 21 [Radeon Pro V620 MxGPU] + 73af Navi 21 [Radeon RX 6900 XT] + 148c 2414 Navi 21 XTXH [PowerColor Red Devil RX 6900 XT Ultimate] + 73bf Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] + 1002 0e3a Radeon RX 6900 XT + 148c 2408 Red Devil AMD Radeon RX 6900 XT + 1da2 438e NITRO+ Radeon RX 6800 XT + 1da2 440f TOXIC RX 6900 XT + 1da2 e437 Pulse Radeon RX 6800 + 1eae 6701 Speedster MERC 319 AMD Radeon RX 6800 XT Black + 1eae 6901 Speedster MERC 319 AMD Radeon RX 6900 XT Black + 73c3 Navi 22 + 73c4 Navi 22 USB + 73ce Navi 22-XL SRIOV MxGPU + 73df Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M/6850M XT] + 1043 16c2 Radeon RX 6800M + 1458 2408 Radeon RX 6750 XT GAMING OC 12G + 1462 3980 Radeon RX 6700 XT Mech 2X 12G [MSI] + 148c 2409 Red Devil RX 6700 XT +# Dual fan version + 1849 5210 Radeon RX 6700 XT Challenger D + 1849 5219 Radeon RX 6700 XT Challenger D + 1849 5222 RX 6700 XT Challenger D OC +# Gaming 1440/QHD Overclock edition with 12 Gb GDDR6 and PCIe 4.0 of Radeon RX 6700 XT by Sapphire PULSE manufactured on autumn 2022 / C1 reviseion + 1da2 445e Radeon RX 6700 XT GAMING OC 12G [Sapphire PULSE] + 1da2 465e Radeon RX 6750 XT PULSE OC + 1da2 e445 Sapphire Radeon RX 6700 + 1eae 6601 Speedster QICK 319 RX 6700 XT + 1eae 661a Radeon RX 6700 [SPEEDSTER SWFT 309] + 73e0 Navi 23 + 73e1 Navi 23 WKS-XM [Radeon PRO W6600M] + 73e3 Navi 23 WKS-XL [Radeon PRO W6600] + 73e4 Navi 23 USB + 73ef Navi 23 [Radeon RX 6650 XT / 6700S / 6800S] + 1458 2405 Navi 23 [Radeon RX 6650 XT] + 1849 5236 RX 6650 XT Challenger D OC + 73f0 Navi 33 [Radeon RX 7600M XT] + 73ff Navi 23 [Radeon RX 6600/6600 XT/6600M] + 1462 5021 MSI RX 6600XT MECH 2X + 1462 5022 RX 6600 MECH 2X + 148c 2412 PowerColor Red Devil RX 6600 XT + 1849 5218 Radeon RX 6600 Challenger ITX 8GB + 1da2 448e Radeon RX 6600 XT Pulse + 7408 Aldebaran/MI200 [Instinct MI250X] + 740c Aldebaran/MI200 [Instinct MI250X/MI250] + 740f Aldebaran/MI200 [Instinct MI210] + 7421 Navi 24 [Radeon PRO W6500M] + 7422 Navi 24 [Radeon PRO W6400] + 7423 Navi 24 [Radeon PRO W6300/W6300M] + 7424 Navi 24 [Radeon RX 6300] + 743f Navi 24 [Radeon RX 6400/6500 XT/6500M] + 1da2 e457 PULSE AMD Radeon RX 6500 XT + 7446 Navi 31 USB + 7448 Navi 31 [Radeon Pro W7900] + 744c Navi 31 [Radeon RX 7900 XT/7900 XTX/7900M] + 1002 0e3b RX 7900 GRE [XFX] + 1043 0506 TUF Gaming Radeon RX 7900 XTX OC + 1849 5304 Radeon RX 7900 XTX + 1da2 471e PULSE RX 7900 XTX + 1da2 475e PULSE RX 7900 GRE + 1da2 e471 NITRO+ RX 7900 XTX Vapor-X + 1eae 7901 RX-79XMERCB9 [SPEEDSTER MERC 310 RX 7900 XTX] + 745e Navi 31 [Radeon Pro W7800] + 7460 7460 Navi32 GL-XL [AMD Radeon PRO V710] + 7470 Navi 32 [Radeon PRO W7700] + 747e Navi 32 [Radeon RX 7700 XT / 7800 XT] + 7480 Navi 33 [Radeon RX 7600/7600 XT/7600M XT/7600S/7700S / PRO W7600] + 1849 5313 RX 7600 Challenger OC + 7483 Navi 33 [Radeon RX 7600M/7600M XT] + 7489 Navi 33 [Radeon Pro W7500] + 74a0 Aqua Vanjaram [Instinct MI300A] + 74a1 Aqua Vanjaram [Instinct MI300X] + 7833 RS350 Host Bridge + 7834 RS350 [Radeon 9100 PRO/XT IGP] + 7835 RS350M [Mobility Radeon 9000 IGP] + 7838 RS350 AGP Bridge + 7910 RS690 Host Bridge + 1179 ff50 Satellite P305D-S8995E + 17f2 5000 KI690-AM2 Motherboard + 7911 RS690/RS740 Host Bridge + 1002 7910 RS690/RS740 Host Bridge + 7912 RS690/RS740 PCI to PCI Bridge (Internal gfx) + 7913 RS690 PCI to PCI Bridge (PCI Express Graphics Port 0) + 7915 RS690 PCI to PCI Bridge (PCI Express Port 1) + 7916 RS690 PCI to PCI Bridge (PCI Express Port 2) + 7917 RS690 PCI to PCI Bridge (PCI Express Port 3) + 1002 7910 RS690 PCI to PCI Bridge + 7919 RS690 HDMI Audio [Radeon Xpress 1200 Series] + 1179 7919 Satellite P305D-S8995E + 17f2 5000 KI690-AM2 Motherboard + 791e RS690 [Radeon X1200] + 1462 7327 K9AG Neo2 + 17f2 5000 KI690-AM2 Motherboard + 791f RS690M [Radeon Xpress 1200/1250/1270] + 1179 ff50 Satellite P305D-S8995E + 7930 RS600 Host Bridge + 7932 RS600 PCI to PCI Bridge (Internal gfx) + 7933 RS600 PCI to PCI Bridge (PCI Express Graphics Port 0) + 7935 RS600 PCI to PCI Bridge (PCI Express Port 1) + 7936 RS600 PCI to PCI Bridge (PCI Express Port 2) + 7937 RS690 PCI to PCI Bridge (PCI Express Port 3) + 793b RS600 HDMI Audio [Radeon Xpress 1250] + 793f RS690M [Radeon Xpress 1200/1250/1270] (Secondary) + 7941 RS600 [Radeon Xpress 1250] + 7942 RS600M [Radeon Xpress 1250] + 796e RS740 [Radeon 2100] + 105b 0e13 N15235/A74MX mainboard + 9400 R600 [Radeon HD 2900 PRO/XT] + 1002 2552 Radeon HD 2900 XT + 1002 3000 Radeon HD 2900 PRO + 1002 3142 HIS Radeon HD 2900XT 512MB GDDR3 VIVO PCIe + 9401 R600 [Radeon HD 2900 XT] + 9403 R600 [Radeon HD 2900 PRO] + 9405 R600 [Radeon HD 2900 GT] + 940a R600 GL [FireGL V8650] + 13cc 3d16 MXRT-7200 + 940b R600 GL [FireGL V8600] + 940f R600 GL [FireGL V7600] + 9440 RV770 [Radeon HD 4870] + 9441 R700 [Radeon HD 4870 X2] + 9442 RV770 [Radeon HD 4850] + 1002 0502 MSI Radeon HD 4850 512MB GDDR3 + 174b e810 Radeon HD 4850 512MB GDDR3 + 9443 R700 [Radeon HD 4850 X2] + 9444 RV770 GL [FirePro V8750] + 9446 RV770 GL [FirePro V7760] + 944a RV770/M98L [Mobility Radeon HD 4850] + 944b RV770/M98 [Mobility Radeon HD 4850 X2] + 944c RV770 LE [Radeon HD 4830] + 944e RV770 CE [Radeon HD 4710] + 174b 3261 Radeon HD 4810 + 9450 RV770 GL [FireStream 9270] + 9452 RV770 GL [FireStream 9250] + 9456 RV770 GL [FirePro V8700] + 945a RV770/M98-XT [Mobility Radeon HD 4870] + 9460 RV790 [Radeon HD 4890] + 9462 RV790 [Radeon HD 4860] + 946a RV770 GL [FirePro M7750] + 9480 RV730/M96 [Mobility Radeon HD 4650/5165] + 103c 3628 Mobility Radeon HD 4650 [dv6-1190en] + 9488 RV730/M96-XT [Mobility Radeon HD 4670] + 9489 RV730/M96 GL [Mobility FireGL V5725] + 9490 RV730 XT [Radeon HD 4670] + 174b e880 Radeon HD 4670 512MB GDDR3 Dual DVI-I/TVO + 9491 RV730/M96-CSP [Radeon E4690] + 9495 RV730 [Radeon HD 4600 AGP Series] + 1002 0028 Radeon HD 4650/4670 AGP + 1092 0028 Radeon HD 4670 AGP 512MB DDR2 + 1458 0028 Radeon HD 4650 AGP + 1682 0028 Radeon HD 4650 AGP + 174b 0028 Radeon HD 4650 AGP DDR2 + 9498 RV730 PRO [Radeon HD 4650] + 949c RV730 GL [FirePro V7750] + 13cc 3d1b MXRT-7300 + 949e RV730 GL [FirePro V5700] + 949f RV730 GL [FirePro V3750] + 94a0 RV740/M97 [Mobility Radeon HD 4830] + 94a1 RV740/M97-XT [Mobility Radeon HD 4860] + 94a3 RV740/M97 GL [FirePro M7740] + 94b3 RV740 PRO [Radeon HD 4770] + 94b4 RV740 PRO [Radeon HD 4750] + 94c1 RV610 [Radeon HD 2400 PRO/XT] + 1028 0211 Optiplex 755 + 1028 0d02 Optiplex 755 + 94c3 RV610 [Radeon HD 2400 PRO] + 1028 0302 Radeon HD 2400 Pro + 174b e400 Radeon HD 2400 PRO + 18bc 3550 Radeon HD 2400 PRO + 94c4 RV610 LE [Radeon HD 2400 PRO AGP] + 94c5 RV610 [Radeon HD 2400 LE] + 94c7 RV610 [Radeon HD 2350] + 94c8 RV610/M74 [Mobility Radeon HD 2400 XT] + 94c9 RV610/M72-S [Mobility Radeon HD 2400] + 1002 94c9 Radeon HD2400 + 94cb RV610 [Radeon E2400] + 94cc RV610 LE [Radeon HD 2400 PRO PCI] + 9500 RV670 [Radeon HD 3850 X2] + 9501 RV670 [Radeon HD 3870] + 174b e620 Radeon HD 3870 + 9504 RV670/M88 [Mobility Radeon HD 3850] + 9505 RV670 [Radeon HD 3690/3850] + 148c 3000 Radeon HD 3850 + 174b 3000 Radeon HD 3690/3850 + 1787 3000 Radeon HD 3690 + 9506 RV670/M88 [Mobility Radeon HD 3850 X2] + 9507 RV670 [Radeon HD 3830] + 9508 RV670/M88-XT [Mobility Radeon HD 3870] + 9509 RV670/M88 [Mobility Radeon HD 3870 X2] + 950f R680 [Radeon HD 3870 X2] + 9511 RV670 GL [FireGL V7700] + 9513 RV670 [Radeon HD 3850 X2] + 9515 RV670 PRO [Radeon HD 3850 AGP] + 9519 RV670 GL [FireStream 9170] + 9540 RV710 [Radeon HD 4550] + 954f RV710 [Radeon HD 4350/4550] + 1462 1618 R4350 MD512H (MS-V161) + 9552 RV710/M92 [Mobility Radeon HD 4330/4350/4550] + 1028 1103 M92 [Mobility Radeon HD 4330] +# GV-R435OC-512I/FF1 + 1458 21ac Radeon HD 4350 +# GV-R455HM-512I/F41 + 1458 21ed Radeon HD 4550 +# 113-100928-J01 + 148c 3000 Radeon HD 4350 Go! Green 512MB GDDR3 +# 113-2E172001-003 + 174b 3000 Radeon HD 4350/4550 HyperMemory DDR2 + 9553 RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] + 1025 015e Mobility Radeon HD 4570 + 1025 017d Mobility Radeon HD 4570 + 1025 0205 Mobility Radeon HD 4570 / 545v + 1025 0206 Mobility Radeon HD 4570 + 1025 0237 Mobility Radeon HD 4570 + 1028 02be Mobility Radeon HD 4570 / 545v + 1028 02e8 Mobility Radeon HD 4530 + 103c 143c Mobility Radeon HD 545v + 103c 1446 Mobility Radeon HD 545v + 103c 3624 Mobility Radeon HD 4530 + 103c 3628 Mobility Radeon HD 4530 + 103c 3636 Mobility Radeon HD 4530 + 1043 1b32 Mobility Radeon HD 4570 + 1043 1b42 Mobility Radeon HD 4570 + 104d 9056 Mobility Radeon HD 4570 + 1179 ff82 Satellite L505-13T GPU (Mobility Radeon HD 5145) + 144d c07f Mobility Radeon HD 545v + 144d c571 Mobility Radeon HD 545v + 1462 1006 Mobility Radeon HD 545v + 17aa 2129 Mobility Radeon HD 545v + 17aa 215b Mobility Radeon HD 545v + 17aa 21bb Mobility Radeon HD 545v + 9555 RV711/M93 [Mobility Radeon HD 4350/4550/530v/540v/545v / FirePro RG220] + 103c 1411 ProBook 4720s GPU (Mobility Radeon HD 4350) + 9557 RV711/M93 GL [FirePro RG220] + 955f RV710/M92 [Mobility Radeon HD 4330] + 9580 RV630 [Radeon HD 2600 PRO] + 9581 RV630/M76 [Mobility Radeon HD 2600] + 9583 RV630/M76 [Mobility Radeon HD 2600 XT/2700] + 106b 0083 iMac 7,1 + 1734 1107 Mobility Radeon HD 2700 + 9586 RV630 XT [Radeon HD 2600 XT AGP] + 9587 RV630 PRO [Radeon HD 2600 PRO AGP] + 9588 RV630 XT [Radeon HD 2600 XT] + 1458 216c Radeon HD 2600 XT, 256MB GDDR3, 2x DVI, TV-out, PCIe (GV-RX26T256H) + 9589 RV630 PRO [Radeon HD 2600 PRO] + 1787 3000 Radeon HD 3610 + 958a RV630 [Radeon HD 2600 X2] + 958b RV630/M76 [Mobility Radeon HD 2600 XT] + 958c RV630 GL [FireGL V5600] + 13cc 3d18 MXRT-5200 + 958d RV630 GL [FireGL V3600] + 9591 RV635/M86 [Mobility Radeon HD 3650] + 1002 9591 Mobility Radeon HD 3650 + 9593 RV635/M86 [Mobility Radeon HD 3670] + 9595 RV635/M86 GL [Mobility FireGL V5700] + 9596 RV635 PRO [Radeon HD 3650 AGP] + 1043 0028 EAH3650 SILENT/HTDI/512M/A + 9597 RV635 PRO [Radeon HD 3650 AGP] + 9598 RV635 [Radeon HD 3650/3750/4570/4580] + 1002 9598 Mobility Radeon HD 3600 + 1043 01d6 EAH3650 Silent + 1043 3001 Radeon HD 4570 + 174b 3001 Radeon HD 3750 + 174b 4580 RV635 PRO [Radeon HD 4580] + 17af 3011 RV635 PRO [Radeon HD 4580] + 9599 RV635 PRO [Radeon HD 3650 AGP] + 95c0 RV620 PRO [Radeon HD 3470] + 1002 95c0 Mobility Radeon HD 3470 + 1028 3243 C120D + 95c2 RV620/M82 [Mobility Radeon HD 3410/3430] + 95c4 RV620/M82 [Mobility Radeon HD 3450/3470] + 1002 95c4 Mobility Radeon HD 3400 + 95c5 RV620 LE [Radeon HD 3450] + 1028 0342 Radeon HD 3450 DMS-59 + 95c6 RV620 LE [Radeon HD 3450 AGP] + 95c9 RV620 LE [Radeon HD 3450 PCI] + 95cc RV620 GL [FirePro V3700] + 95cd RV620 GL [FirePro 2450] + 95cf RV620 GL [FirePro 2260] + 960f RS780 HDMI Audio [Radeon 3000/3100 / HD 3200/3300] + 1462 7596 760GM-E51(MS-7596) Motherboard + 9610 RS780 [Radeon HD 3200] + 1458 d000 GA-MA78GM-S2H Motherboard + 9611 RS780C [Radeon 3100] + 9612 RS780M [Mobility Radeon HD 3200] + 9613 RS780MC [Mobility Radeon HD 3100] + 9614 RS780D [Radeon HD 3300] + 9615 RS780E [Radeon HD 3200] + 9616 RS780L [Radeon 3000] +# ID is probably a copy-paste error by a MSI developer from another mainboard, since all other ID numbers on this mainboard including the sub-device of this device has used subsystem ID 1462:7596 + 1462 7501 760GM-E51(MS-7596) Motherboard + 9640 Sumo [Radeon HD 6550D] + 9641 Sumo [Radeon HD 6620G] + 9642 SuperSumo [Radeon HD 6370D] + 9643 SuperSumo [Radeon HD 6380G] + 9644 SuperSumo [Radeon HD 6410D] + 9645 SuperSumo [Radeon HD 6410D] + 9647 Sumo [Radeon HD 6520G] + 9648 Sumo [Radeon HD 6480G] + 9649 SuperSumo [Radeon HD 6480G] + 964a Sumo [Radeon HD 6530D] + 964b Sumo + 964c Sumo + 964e Sumo + 964f Sumo + 970f RS880 HDMI Audio [Radeon HD 4200 Series] + 1019 2120 A785GM-M + 1043 83a2 M4A785TD Motherboard + 1043 843e M5A88-V EVO + 9710 RS880 [Radeon HD 4200] + 1019 2120 A785GM-M + 1043 83a2 M4A785TD Motherboard + 9712 RS880M [Mobility Radeon HD 4225/4250] + 103c 1609 ProLiant MicroServer N36L + 9713 RS880M [Mobility Radeon HD 4100] + 9714 RS880 [Radeon HD 4290] + 9715 RS880 [Radeon HD 4250] + 1043 843e M5A88-V EVO +# Radeon HD 6250 too? + 9802 Wrestler [Radeon HD 6310] + 174b 1001 PURE Fusion Mini + 9803 Wrestler [Radeon HD 6310] + 9804 Wrestler [Radeon HD 6250] + 9805 Wrestler [Radeon HD 6250] + 9806 Wrestler [Radeon HD 6320] + 9807 Wrestler [Radeon HD 6290] + 9808 Wrestler [Radeon HD 7340] + 9809 Wrestler [Radeon HD 7310] + 980a Wrestler [Radeon HD 7290] + 9830 Kabini [Radeon HD 8400 / R3 Series] + 1043 8623 AM1I-A Motherboard + 9831 Kabini [Radeon HD 8400E] + 9832 Kabini [Radeon HD 8330] + 1849 9832 QC5000-ITX/PH + 9833 Kabini [Radeon HD 8330E] + 9834 Kabini [Radeon HD 8210] + 9835 Kabini [Radeon HD 8310E] + 9836 Kabini [Radeon HD 8280 / R3 Series] + 9837 Kabini [Radeon HD 8280E] + 9838 Kabini [Radeon HD 8240 / R3 Series] + 9839 Kabini [Radeon HD 8180] + 983d Temash [Radeon HD 8250/8280G] + 9840 Kabini HDMI/DP Audio + 1043 8623 AM1I-A Motherboard + 1849 9840 QC5000-ITX/PH + 9850 Mullins [Radeon R3 Graphics] + 9851 Mullins [Radeon R4/R5 Graphics] + 1179 f928 Beema [Radeon R5 Graphics] + 9852 Mullins [Radeon R2 Graphics] + 9853 Mullins [Radeon R2 Graphics] + 9854 Mullins [Radeon R3E Graphics] + 9855 Mullins [Radeon R6 Graphics] + 9856 Mullins [Radeon R1E/R2E Graphics] + 9857 Mullins [Radeon APU XX-2200M with R2 Graphics] + 9858 Mullins + 9859 Mullins + 985a Mullins + 985b Mullins + 985c Mullins + 985d Mullins + 985e Mullins + 985f Mullins + 9874 Wani [Radeon R5/R6/R7 Graphics] + 1002 1871 Radeon R5 Graphics + 1002 1e20 Radeon R7 Graphics + 1028 06bd Radeon R6 Graphics + 103c 2b44 Radeon R6 Graphics + 103c 8221 Radeon R5 Graphics + 103c 8223 Radeon R5 Graphics + 103c 8238 Radeon R7 Graphics + 103c 8353 Radeon R7 Graphics + 1458 d000 Radeon R7 Graphics + 17aa 5113 Radeon R6 Graphics + 17aa 5116 Radeon R6 Graphics + 17aa 5118 Radeon R5 Graphics + 9890 Amur + 98c0 Nolan + 98e4 Stoney [Radeon R2/R3/R4/R5 Graphics] + 9900 Trinity [Radeon HD 7660G] + 103c 1985 Pavilion 17-e163sg Notebook PC +# AMD A10-5800K CPU + 9901 Trinity [Radeon HD 7660D] + 9902 Trinity HDMI Audio Controller + 103c 194e ProBook 455 G1 Notebook + 103c 1985 Pavilion 17-e163sg Notebook PC + 9903 Trinity [Radeon HD 7640G] + 103c 194e ProBook 455 G1 Notebook + 103c 1952 ProBook 455 G1 Notebook + 9904 Trinity [Radeon HD 7560D] + 9905 Trinity GL [FirePro A300] + 9906 Trinity GL [FirePro A320] + 9907 Trinity [Radeon HD 7620G] + 9908 Trinity [Radeon HD 7600G] + 9909 Trinity [Radeon HD 7500G] + 990a Trinity [Radeon HD 7500G] + 990b Richland [Radeon HD 8650G] + 990c Richland [Radeon HD 8670D] + 990d Richland [Radeon HD 8550G] + 990e Richland [Radeon HD 8570D] + 990f Richland [Radeon HD 8610G] + 9910 Trinity [Radeon HD 7660G] + 9913 Trinity [Radeon HD 7640G] + 9917 Trinity [Radeon HD 7620G] + 9918 Trinity [Radeon HD 7600G] + 9919 Trinity [Radeon HD 7500G] + 991e Bishop [Xbox One S APU] + 9920 Liverpool [Playstation 4 APU] + 9921 Liverpool HDMI/DP Audio Controller + 9922 Starshp + 9923 Starsha2 [Kingston/Clayton] + 9924 Gladius + 9925 Kingston/Clayton/Jupiter/Gladius/Montego HDMI Controller + 9926 Jupiter + 9990 Trinity 2 [Radeon HD 7520G] + 9991 Trinity 2 [Radeon HD 7540D] + 9992 Trinity 2 [Radeon HD 7420G] + 9993 Trinity 2 [Radeon HD 7480D] + 9994 Trinity 2 [Radeon HD 7400G] + 9995 Richland [Radeon HD 8450G] + 9996 Richland [Radeon HD 8470D] + 9997 Richland [Radeon HD 8350G] + 9998 Richland [Radeon HD 8370D] + 9999 Richland [Radeon HD 8510G] + 999a Richland [Radeon HD 8410G] + 999b Richland [Radeon HD 8310G] + 999c Richland [Radeon HD 8650D] +# AMD Quad-Core A8-Series APU A8-6500T with Radeon HD 8550D + 999d Richland [Radeon HD 8550D] + 99a0 Trinity 2 [Radeon HD 7520G] + 99a2 Trinity 2 [Radeon HD 7420G] + 99a4 Trinity 2 [Radeon HD 7400G] + aa00 R600 HDMI Audio [Radeon HD 2900 GT/PRO/XT] + aa01 RV635 HDMI Audio [Radeon HD 3650/3730/3750] + aa08 RV630 HDMI Audio [Radeon HD 2600 PRO/XT / HD 3610] + aa10 RV610 HDMI Audio [Radeon HD 2350 PRO / 2400 PRO/XT / HD 3410] + 174b aa10 Radeon HD 2400 PRO + 18bc aa10 Radeon HD 2400 PRO + aa18 RV670/680 HDMI Audio [Radeon HD 3690/3800 Series] + aa20 RV635 HDMI Audio [Radeon HD 3650/3730/3750] + aa28 RV620 HDMI Audio [Radeon HD 3450/3470/3550/3570] + aa30 RV770 HDMI Audio [Radeon HD 4850/4870] + 174b aa30 Radeon HD 4850 512MB GDDR3 PCI-E Dual Slot Fansink + aa38 RV710/730 HDMI Audio [Radeon HD 4000 series] + 103c 3628 dv6-1190en + aa50 Cypress HDMI Audio [Radeon HD 5830/5850/5870 / 6850/6870 Rebrand] + aa58 Juniper HDMI Audio [Radeon HD 5700 Series] +# 5500, 5600 and mobile 5700 series + aa60 Redwood HDMI Audio [Radeon HD 5000 Series] + 1025 033d Mobility Radeon HD 5650 + 1025 0347 Aspire 7740G + aa68 Cedar HDMI Audio [Radeon HD 5400/6300/7300 Series] + 1028 aa68 XPS 8300 + aa80 Cayman/Antilles HDMI Audio [Radeon HD 6930/6950/6970/6990] + aa88 Barts HDMI Audio [Radeon HD 6790/6850/6870 / 7720 OEM] + aa90 Turks HDMI Audio [Radeon HD 6500/6600 / 6700M Series] + 1028 04a3 Precision M4600 + aa98 Caicos HDMI Audio [Radeon HD 6450 / 7450/8450/8490 OEM / R5 230/235/235X OEM] + 1043 aa98 EAH6450 SILENT/DI/1GD3(LP) + 174b aa98 Radeon HD 6450 1GB DDR3 + aaa0 Tahiti HDMI Audio [Radeon HD 7870 XT / 7950/7970] + aab0 Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000 Series] + aab8 Tiran HDMI Audio + aac0 Tobago HDMI Audio [Radeon R7 360 / R9 360 OEM] + 1043 aac0 R7260X-DC2OC-2GD5 + aac8 Hawaii HDMI Audio [Radeon R9 290/290X / 390/390X] + aad8 Tonga HDMI Audio [Radeon R9 285/380] + 174b aad8 Radeon R9 285/380 HDMI Audio + aae0 Baffin HDMI/DP Audio [Radeon RX 550 640SP / RX 560/560X] + aae8 Fiji HDMI/DP Audio [Radeon R9 Nano / FURY/FURY X] + aaf0 Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] + aaf8 Vega 10 HDMI Audio [Radeon Vega 56/64] + ab00 Baffin HDMI/DP Audio [Radeon RX 550 640SP / RX 560/560X] + ab08 Polaris 22 HDMI Audio + ab10 Lexa HDMI Audio + ab18 Vega 12 HDMI Audio + ab20 Vega 20 HDMI Audio [Radeon VII] + ab28 Navi 21/23 HDMI/DP Audio Controller + ab30 Navi 31 HDMI/DP Audio + ab38 Navi 10 HDMI Audio + ac00 Theater 506 World-Wide Analog Decoder + ac01 Theater 506 World-Wide Analog Decoder + ac02 TV Wonder HD 600 PCIe + ac03 Theater 506 PCIe + ac04 Theater 506 USB + ac05 Theater 506 USB + ac06 Theater 506 External USB + ac07 Theater 506 External USB + ac08 Theater 506A World-Wide Analog Decoder + Demodulator + ac09 Theater 506A World-Wide Analog Decoder + Demodulator + ac0a Theater 506A PCIe + ac0b Theater 506A PCIe + ac0c Theater 506A USB + ac0d Theater 506A USB + ac0e Theater 506A External USB + ac0f Theater 506A External USB + ac12 Theater HD T507 (DVB-T) TV tuner/capture device + cab0 RS100 Host Bridge + cab2 RS200 Host Bridge + cab3 RS250 Host Bridge + cbb2 RS200 Host Bridge +1003 ULSI Systems + 0201 US201 +1004 VLSI Technology Inc + 0005 82C592-FC1 + 0006 82C593-FC1 + 0007 82C594-AFC2 + 0008 82C596/7 [Wildcat] + 0009 82C597-AFC2 + 000c 82C541 [Lynx] + 000d 82C543 [Lynx] + 0101 82C532 + 0102 82C534 [Eagle] + 0103 82C538 + 0104 82C535 + 0105 82C147 + 0200 82C975 + 0280 82C925 + 0304 QSound ThunderBird PCI Audio + 1004 0304 QSound ThunderBird PCI Audio + 122d 1206 DSP368 Audio + 1483 5020 XWave Thunder 3D Audio + 0305 QSound ThunderBird PCI Audio Gameport + 1004 0305 QSound ThunderBird PCI Audio Gameport + 122d 1207 DSP368 Audio Gameport + 1483 5021 XWave Thunder 3D Audio Gameport + 0306 QSound ThunderBird PCI Audio Support Registers + 1004 0306 QSound ThunderBird PCI Audio Support Registers + 122d 1208 DSP368 Audio Support Registers + 1483 5022 XWave Thunder 3D Audio Support Registers + 0307 SAA7785 ThunderBird PCI Audio + 1004 0703 Philips Rhythmic Edge PSC703 + 1004 0705 Philips Seismic Edge PSC705 + 1004 0706 Philips Acoustic Edge PSC706 + 0308 SAA7785 ThunderBird PCI Audio Gameport + 0702 VAS96011 [Golden Gate II] + 0703 Tollgate +1005 Avance Logic Inc. [ALI] + 2064 ALG2032/2064 + 2128 ALG2364A + 2301 ALG2301 + 2302 ALG2302 + 2364 ALG2364 + 2464 ALG2364A + 2501 ALG2564A/25128A +1006 Reply Group +1007 NetFrame Systems Inc +1008 Epson +100a Phoenix Technologies +100b National Semiconductor Corporation + 0001 DP83810 + 0002 87415/87560 IDE + 000e 87560 Legacy I/O + 000f FireWire Controller + 0011 NS87560 National PCI System I/O + 0012 USB Controller + 0020 DP83815 (MacPhyter) Ethernet Controller + 103c 0024 Pavilion ze4400 builtin Network + 12d9 000c Aculab E1/T1 PMXc cPCI carrier card + 1385 f311 FA311 / FA312 (FA311 with WoL HW) + 1385 f312 FA312 (rev. A1) Fast Ethernet PCI Adapter + 0021 PC87200 PCI to ISA Bridge + 0022 DP83820 10/100/1000 Ethernet Controller + 1186 4900 DGE-500T + 1385 621a GA621 + 1385 622a GA622T + 0028 Geode GX2 Host Bridge + 002a CS5535 South Bridge + 002b CS5535 ISA bridge + 002d CS5535 IDE + 002e CS5535 Audio + 002f CS5535 USB + 0030 Geode GX2 Graphics Processor + 0035 DP83065 [Saturn] 10/100/1000 Ethernet Controller + 0500 SCx200 Bridge + 0501 SCx200 SMI + 0502 SCx200, SC1100 IDE controller + 100b 0502 IDE Controller + 0503 SCx200, SC1100 Audio Controller + 100b 0503 XpressAudio controller + 0504 SCx200 Video + 0505 SCx200 XBus + 0510 SC1100 Bridge + 100b 0500 GPIO and LPC support bridge + 0511 SC1100 SMI & ACPI + 100b 0501 SC1100 SMI & ACPI bridge + 0515 SC1100 XBus + 100b 0505 SC1100 PCI to XBus bridge + d001 87410 IDE +100c Tseng Labs Inc + 3202 ET4000/W32p rev A + 3205 ET4000/W32p rev B + 3206 ET4000/W32p rev C + 3207 ET4000/W32p rev D + 3208 ET6000 + 4702 ET6300 +100d AST Research Inc +100e Weitek + 9000 P9000 Viper + 9001 P9000 Viper + 9002 P9000 Viper + 9100 P9100 Viper Pro/SE +1010 Video Logic, Ltd. +1011 Digital Equipment Corporation + 0001 DECchip 21050 + 0002 DECchip 21040 [Tulip] + 0004 DECchip 21030 [TGA] + 0007 NVRAM [Zephyr NVRAM] + 0008 KZPSA [KZPSA] + 0009 DECchip 21140 [FasterNet] + 1025 0310 21140 Fast Ethernet + 10b8 2001 SMC9332BDT EtherPower 10/100 + 10b8 2002 SMC9332BVT EtherPower T4 10/100 + 10b8 2003 SMC9334BDT EtherPower 10/100 (1-port) + 1109 2400 ANA-6944A/TX Fast Ethernet + 1112 2300 RNS2300 Fast Ethernet + 1112 2320 RNS2320 Fast Ethernet + 1112 2340 RNS2340 Fast Ethernet + 1113 1207 EN-1207-TX Fast Ethernet + 1186 1100 DFE-500TX Fast Ethernet + 1186 1112 DFE-570TX Fast Ethernet + 1186 1140 DFE-660 Cardbus Ethernet 10/100 + 1186 1142 DFE-660 Cardbus Ethernet 10/100 + 11f6 0503 Freedomline Fast Ethernet + 1282 9100 AEF-380TXD Fast Ethernet + 1385 1100 FA310TX Fast Ethernet + 2646 0001 KNE100TX Fast Ethernet + 000a 21230 Video Codec + 000d PBXGB [TGA2] + 000f PCI-to-PDQ Interface Chip [PFI] FDDI (DEFPA) + 1011 def1 FDDIcontroller/PCI (DEFPA) + 103c def1 FDDIcontroller/PCI (3X-DEFPA) + 0014 DECchip 21041 [Tulip Pass 3] + 1186 0100 DE-530+ + 0016 ATMworks 350 Adapter [OPPO] (DGLPB) + 0017 PV-PCI Graphics Controller (ZLXp-L) + 0018 Memory Channel interface + 0019 DECchip 21142/43 + 1011 500a DE500A Fast Ethernet + 1011 500b DE500B Fast Ethernet + 1014 0001 10/100 EtherJet Cardbus + 1025 0315 ALN315 Fast Ethernet + 1033 800c PC-9821-CS01 100BASE-TX Interface Card + 1033 800d PC-9821NR-B06 100BASE-TX Interface Card + 103c 125a 10/100Base-TX (PCI) [A5506B] + 108d 0016 Rapidfire 2327 10/100 Ethernet + 108d 0017 GoCard 2250 Ethernet 10/100 Cardbus + 10b8 2005 SMC8032DT Extreme Ethernet 10/100 + 10b8 8034 SMC8034 Extreme Ethernet 10/100 + 10ef 8169 Cardbus Fast Ethernet + 1109 2a00 ANA-6911A/TX Fast Ethernet + 1109 2b00 ANA-6911A/TXC Fast Ethernet + 1109 3000 ANA-6922/TX Fast Ethernet + 1113 1207 Cheetah Fast Ethernet + 1113 2220 Cardbus Fast Ethernet + 115d 0002 Cardbus Ethernet 10/100 + 1179 0203 Fast Ethernet + 1179 0204 Cardbus Fast Ethernet + 1186 1100 DFE-500TX Fast Ethernet + 1186 1101 DFE-500TX Fast Ethernet + 1186 1102 DFE-500TX Fast Ethernet + 1186 1112 DFE-570TX Quad Fast Ethernet + 11f0 4235 21143 [FASTLine-II UTP 10/100] + 1259 2800 AT-2800Tx Fast Ethernet + 1266 0004 Eagle Fast EtherMAX + 12af 0019 NetFlyer Cardbus Fast Ethernet + 1374 0001 Cardbus Ethernet Card 10/100 + 1374 0002 Cardbus Ethernet Card 10/100 + 1374 0007 Cardbus Ethernet Card 10/100 + 1374 0008 Cardbus Ethernet Card 10/100 + 1385 2100 FA510 + 1395 0001 10/100 Ethernet CardBus PC Card + 13d1 ab01 EtherFast 10/100 Cardbus (PCMPC200) + 1498 000a TPMC880-10 10/100Base-T and 10Base2 PMC Ethernet Adapter + 1498 000b TPMC880-11 Single 10/100Base-T PMC Ethernet Adapter + 1498 000c TPMC880-12 Single 10Base2 PMC Ethernet Adapter + 14cb 0100 LNDL-100N 100Base-TX Ethernet PC Card + 1668 2000 FastNet Pro (PE2000) + 2646 0001 KNE100TX + 2646 0002 KNE-CB4TX + 8086 0001 EtherExpress PRO/100 Mobile CardBus 32 + 001a Farallon PN9000SX Gigabit Ethernet + 0021 DECchip 21052 + 0022 DECchip 21150 + 0023 DECchip 21150 + 0024 DECchip 21152 + 0025 DECchip 21153 + 0026 DECchip 21154 + 0034 56k Modem Cardbus + 1374 0003 56k Modem Cardbus + 0045 DECchip 21553 + 0046 DECchip 21554 + 0e11 4050 Smart Array 4200 Controller + 0e11 4051 Smart Array 4250ES Controller + 0e11 4058 Smart Array 431 Controller + 103c 10c2 NetRAID-4M + 12d9 000a IP Telephony card + 4c53 1050 CT7 mainboard + 4c53 1051 CE7 mainboard + 9005 0364 5400S (Mustang) + 9005 0365 5400S (Mustang) + 9005 1364 Dell PowerEdge RAID Controller 2 + 9005 1365 Dell PowerEdge RAID Controller 2 + e4bf 1000 CC8-1-BLUES + 1065 StrongARM DC21285 + 1069 0020 DAC960P / DAC1164P +1012 Micronics Computers Inc +1013 Cirrus Logic + 0038 GD 7548 + 0040 GD 7555 Flat Panel GUI Accelerator + 004c GD 7556 Video/Graphics LCD/CRT Ctrlr + 00a0 GD 5430/40 [Alpine] + 00a2 GD 5432 [Alpine] + 00a4 GD 5434-4 [Alpine] + 00a8 GD 5434-8 [Alpine] + 00ac GD 5436 [Alpine] + 00b0 GD 5440 + 00b8 GD 5446 + 1af4 1100 QEMU Virtual Machine + 00bc GD 5480 + 1013 00bc CL-GD5480 + 00d0 GD 5462 + 00d2 GD 5462 [Laguna I] + 00d4 GD 5464 [Laguna] + 00d5 GD 5464 BD [Laguna] + 00d6 GD 5465 [Laguna] + 13ce 8031 Barco Metheus 2 Megapixel, Dual Head + 13cf 8031 Barco Metheus 2 Megapixel, Dual Head + 00e8 GD 5436U + 1100 CL 6729 + 1110 PD 6832 PCMCIA/CardBus Ctrlr + 1112 PD 6834 PCMCIA/CardBus Ctrlr + 1113 PD 6833 PCMCIA/CardBus Ctrlr + 1200 GD 7542 [Nordic] + 1202 GD 7543 [Viking] + 1204 GD 7541 [Nordic Light] + 4000 MD 5620 [CLM Data Fax Voice] + 4400 CD 4400 + 6001 CS 4610/11 [CrystalClear SoundFusion Audio Accelerator] + 1014 1010 CS4610 SoundFusion Audio Accelerator + 6003 CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator] + 1013 4280 Crystal SoundFusion PCI Audio Accelerator + 1014 0153 ThinkPad 600X/A20m + 153b 112e DMX XFire 1024 + 153b 1136 SiXPack 5.1+ + 1681 0050 Game Theater XP + 1681 a010 Gamesurround Fortissimo II + 1681 a011 Gamesurround Fortissimo III 7.1 + 5053 3357 Santa Cruz + 6004 CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator] + 6005 Crystal CS4281 PCI Audio + 1013 4281 Crystal CS4281 PCI Audio + 10cf 10a8 Crystal CS4281 PCI Audio + 10cf 10a9 Crystal CS4281 PCI Audio + 10cf 10aa Crystal CS4281 PCI Audio + 10cf 10ab Crystal CS4281 PCI Audio + 10cf 10ac Crystal CS4281 PCI Audio + 10cf 10ad Crystal CS4281 PCI Audio + 10cf 10b4 Crystal CS4281 PCI Audio + 1179 0001 Crystal CS4281 PCI Audio + 14c0 000c Crystal CS4281 PCI Audio +1014 IBM + 0002 PCI to MCA Bridge + 0005 Processor to I/O Controller [Alta Lite] + 0007 Processor to I/O Controller [Alta MP] + 000a PCI to ISA Bridge (IBM27-82376) [Fire Coral] + 0017 CPU to PCI Bridge + 0018 TR Auto LANstreamer + 001b GXT-150P + 001c Carrera + 001d SCSI-2 FAST PCI Adapter (82G2675) + 0020 GXT1000 Graphics Adapter + 0022 PCI to PCI Bridge (IBM27-82351) + 002d Processor to I/O Controller [Python] + 002e SCSI RAID Adapter [ServeRAID] + 1014 002e ServeRAID-3x + 1014 022e ServeRAID-4H + 0031 2 Port Serial Adapter +# AS400 iSeries PCI sync serial card + 1014 0031 2721 WAN IOA - 2 Port Sync Serial Adapter + 0036 PCI to 32-bit LocalBus Bridge [Miami] + 0037 PowerPC to PCI Bridge (IBM27-82660) + 003a CPU to PCI Bridge + 003c GXT250P/GXT255P Graphics Adapter + 003e 16/4 Token ring UTP/STP controller + 1014 003e Token-Ring Adapter + 1014 00cd Token-Ring Adapter + Wake-On-LAN + 1014 00ce 16/4 Token-Ring Adapter 2 + 1014 00cf 16/4 Token-Ring Adapter Special + 1014 00e4 High-Speed 100/16/4 Token-Ring Adapter + 1014 00e5 16/4 Token-Ring Adapter 2 + Wake-On-LAN + 1014 016d iSeries 2744 Card + 0045 SSA Adapter + 0046 MPIC interrupt controller + 0047 PCI to PCI Bridge + 0048 PCI to PCI Bridge + 0049 Warhead SCSI Controller + 004e ATM Controller (14104e00) + 004f ATM Controller (14104f00) + 0050 ATM Controller (14105000) + 0053 25 MBit ATM Controller + 0054 GXT500P/GXT550P Graphics Adapter + 0057 MPEG PCI Bridge + 0058 SSA Adapter [Advanced SerialRAID/X] + 005e GXT800P Graphics Adapter + 007c ATM Controller (14107c00) + 007d 3780IDSP [MWave] + 008b EADS PCI to PCI Bridge + 008e GXT3000P Graphics Adapter + 0090 GXT 3000P + 1014 008e GXT-3000P + 0091 SSA Adapter + 0095 20H2999 PCI Docking Bridge + 0096 Chukar chipset SCSI controller + 1014 0097 iSeries 2778 DASD IOA + 1014 0098 iSeries 2763 DASD IOA + 1014 0099 iSeries 2748 DASD IOA + 009f PCI 4758 Cryptographic Accelerator + 00a5 ATM Controller (1410a500) + 00a6 ATM 155MBPS MM Controller (1410a600) + 00b7 GXT2000P Graphics Adapter + 1092 00b8 FireGL1 AGP 32Mb + 00b8 GXT2000P Graphics Adapter + 00be ATM 622MBPS Controller (1410be00) + 00dc Advanced Systems Management Adapter (ASMA) + 00fc CPC710 Dual Bridge and Memory Controller (PCI-64) + 0105 CPC710 Dual Bridge and Memory Controller (PCI-32) + 010f Remote Supervisor Adapter (RSA) + 0142 Yotta Video Compositor Input + 1014 0143 Yotta Input Controller (ytin) + 0144 Yotta Video Compositor Output + 1014 0145 Yotta Output Controller (ytout) + 0156 405GP PLB to PCI Bridge + 015e 622Mbps ATM PCI Adapter + 0160 64bit/66MHz PCI ATM 155 MMF + 016e GXT4000P Graphics Adapter + 0170 GXT6000P Graphics Adapter + 1092 0172 Fire GL2 + 1092 0173 Fire GL3 + 1092 0174 Fire GL4 + 1092 0184 Fire GL4s + 017d GXT300P Graphics Adapter + 0180 Snipe chipset SCSI controller + 1014 0241 iSeries 2757 DASD IOA + 1014 0264 Quad Channel PCI-X U320 SCSI RAID Adapter (2780) + 0188 EADS-X PCI-X to PCI-X Bridge + 01a7 PCI-X to PCI-X Bridge + 01bd ServeRAID Controller + 1014 01bd ServeRAID 4Lx + 1014 01be ServeRAID-4M + 1014 01bf ServeRAID-4L + 1014 0208 ServeRAID-4Mx + 1014 020e ServeRAID-4Lx + 1014 022e ServeRAID-4H + 1014 0258 ServeRAID-5i + 1014 0259 ServeRAID-5i + 01c1 64bit/66MHz PCI ATM 155 UTP + 01e6 Cryptographic Accelerator + 01ef PowerPC 440GP PCI Bridge + 1734 102b PCEAS PCI-X Dual Port ESCON Adapter + 1734 10f8 PCEAT PCI-Express Dual Port ESCON Adapter + 01ff 10/100 Mbps Ethernet + 0219 Multiport Serial Adapter + 1014 021a Dual RVX + 1014 0251 Internal Modem/RVX + 1014 0252 Quad Internal Modem + 021b GXT6500P Graphics Adapter + 021c GXT4500P Graphics Adapter + 0233 GXT135P Graphics Adapter +# Internal debugging card for CELL based systems + 025a Drone card + 028c Citrine chipset SCSI controller + 1014 028d Dual Channel PCI-X DDR SAS RAID Adapter (572E) + 1014 02be Dual Channel PCI-X DDR U320 SCSI RAID Adapter (571B) + 1014 02c0 Dual Channel PCI-X DDR U320 SCSI Adapter (571A) + 1014 030d PCI-X DDR Auxiliary Cache Adapter (575B) + 02a1 Calgary PCI-X Host Bridge + 02bd Obsidian chipset SCSI controller + 1014 02c1 PCI-X DDR 3Gb SAS Adapter (572A/572C) + 1014 02c2 PCI-X DDR 3Gb SAS RAID Adapter (572B/571D) + 1014 0338 PCI-X DDR Auxiliary Cache Adapter (575C) + 0302 Winnipeg PCI-X Host Bridge + 0308 CalIOC2 PCI-E Root Port + 0311 FC 5740/1954 4-Port 10/100/1000 Base-TX PCI-X Adapter for POWER + 0314 ZISC 036 Neural accelerator card + 032d Axon - Cell Companion Chip + 1014 03a1 PCIe PowerXCell 8i Cell Accelerator Board + 0339 Obsidian-E PCI-E SCSI controller + 1014 030a PCIe 3Gb SAS RAID Adapter (574E) + 1014 033a PCIe 3Gb SAS Adapter (57B3) + 1014 035c PCIe x8 Internal 3Gb SAS adapter (57CC) + 1014 0360 PCI-E Auxiliary Cache Adapter (57B7) + 033d PCI-E IPR SAS Adapter (FPGA) + 1014 033c PCIe2 1.8GB Cache 6Gb SAS RAID Adapter Tri-port (57B5) + 1014 0353 PCIe2 3.1GB Cache 6Gb SAS RAID Enclosure (57C3) + 1014 0354 PCIe2 6Gb SAS Adapter Dual-port (57C4) + 1014 0356 PCIe2 1.8GB Cache 6Gb SAS RAID & SSD Adapter (574D) + 1014 035f PCIe2 6Gb SAS Adapter Quad-port (57B2) + 034a PCI-E IPR SAS Adapter (ASIC) + 1014 033b PCIe2 6Gb SAS RAID Adapter Quad-port (57B4) + 1014 0355 PCIe2 3.6GB Cache 6Gb SAS RAID Adapter Quad-port (57B1) + 1014 0357 PCIe2 6Gb SAS Adapter Quad-port (57C6) + 1014 035d PCIe3 1.8GB Cache RAID SAS Adapter Quad-port 6GB (57C8) + 1014 035e PCIe2 3.6GB Cache 6Gb SAS RAID Adapter Quad-port (57CE) + 1014 03fb PCIe3 28GB Cache RAID SAS Enclosure 6Gb x 16 (57D5) + 1014 03fe PCIe3 x8 Cache SAS RAID Internal Adapter 6Gb (57D8) + 1014 03ff PCIe3 x8 SAS RAID Internal Adapter 6Gb (57D7) + 1014 0474 PCIe3 x16 Cache SAS RAID Internal Adapter 6Gb (57EB) + 1014 0475 PCIe3 x16 SAS RAID Internal Adapter 6Gb (57EC) + 1014 0499 PCIe3 x16 Cache SAS RAID Internal Adapter 6Gb (57ED) + 1014 049a PCIe3 x16 SAS RAID Internal Adapter 6Gb (57EE) + 1014 04c7 PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCA) + 1014 04c8 PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CD2) + 1014 04c9 PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCD) + 03dc POWER8 Host Bridge (PHB3) + 044b GenWQE Accelerator Adapter + 04aa Flash Adapter 90 (PCIe2 0.9TB) + 04c1 POWER9 Host Bridge (PHB4) + 04da PCI-E IPR SAS+ Adapter (ASIC) + 1014 04fb PCIe3 x16 20GB Cache 12Gb Quad SAS RAID+ Adapter(580B) + 1014 04fc PCIe3 x8 12Gb Quad SAS RAID+ Adapter(580A) + 04ed Internal Shared Memory (ISM) virtual PCI device + 0611 4769 Cryptographic Adapter + 3022 QLA3022 Network Adapter + 4022 QLA3022 Network Adapter + ffff MPIC-2 interrupt controller +1015 LSI Logic Corp of Canada +1016 ICL Personal Systems +1017 SPEA Software AG + 5343 SPEA 3D Accelerator +1018 Unisys Systems +1019 Elitegroup Computer Systems + 9602 RS780/RS880 PCI to PCI bridge (int gfx) +101a AT&T GIS (NCR) + 0005 100VG ethernet + 0007 BYNET BIC4G/2C/2G + 101a 0019 BYNET BIC2C + 101a 001c BYNET BIC2G + 101a 001f BYNET BIC4G + 0009 PQS Memory Controller + 000a BYNET BPCI Adapter + 000b BYNET 4 Port BYA Switch (BYA4P) + 000c BYNET 4 Port BYA Switch (BYA4G) + 0010 NCR AMC Memory Controller + 1dc1 BYNET BIC2M/BIC4M/BYA4M + 101a 0019 BIC2M + 101a 001f BIC4M + 101a 0ece BYA4M + 1fa8 BYNET Multi-port BIC Adapter (XBIC Based) + 101a 00c3 BYNET BIC2SE +101b Vitesse Semiconductor +# Maxim VSC452 Super BMC Controller with Video + 0452 VSC452 [SuperBMC] +101c Western Digital + 0193 33C193A + 0196 33C196A + 0197 33C197A + 0296 33C296A + 3193 7193 + 3197 7197 + 3296 33C296A + 4296 34C296 + 9710 Pipeline 9710 + 9712 Pipeline 9712 + c24a 90C +# ID for Newly Acquired Storage Products from Vitesse +101d Maxim Integrated Products +101e American Megatrends Inc. + 0009 MegaRAID 428 Ultra RAID Controller (rev 03) + 1960 MegaRAID + 101e 0471 MegaRAID 471 Enterprise 1600 RAID Controller + 101e 0475 MegaRAID 475 Express 500/500LC RAID Controller + 101e 0477 MegaRAID 477 Elite 3100 RAID Controller + 101e 0493 MegaRAID 493 Elite 1600 RAID Controller + 101e 0494 MegaRAID 494 Elite 1650 RAID Controller + 101e 0503 MegaRAID 503 Enterprise 1650 RAID Controller + 101e 0511 MegaRAID 511 i4 IDE RAID Controller + 101e 0522 MegaRAID 522 i4133 RAID Controller + 1028 0471 PowerEdge RAID Controller 3/QC + 1028 0475 PowerEdge RAID Controller 3/SC + 1028 0493 PowerEdge RAID Controller 3/DC + 1028 0511 PowerEdge Cost Effective RAID Controller ATA100/4Ch + 103c 60e7 NetRAID-1M + 103c 60e8 NetRaid 2M [AMI MegaRaid 493] + 9010 MegaRAID 428 Ultra RAID Controller + 9030 EIDE Controller + 9031 EIDE Controller + 9032 EIDE & SCSI Controller + 9033 SCSI Controller + 9040 Multimedia card + 9060 MegaRAID 434 Ultra GT RAID Controller + 9063 MegaRAC + 101e 0767 Dell Remote Assistant Card 2 +101f PictureTel +1020 Hitachi Computer Products +1021 OKI Electric Industry Co. Ltd. +1022 Advanced Micro Devices, Inc. [AMD] + 1100 K8 [Athlon64/Opteron] HyperTransport Technology Configuration + 1101 K8 [Athlon64/Opteron] Address Map + 1102 K8 [Athlon64/Opteron] DRAM Controller + 1103 K8 [Athlon64/Opteron] Miscellaneous Control + 1200 Family 10h Processor HyperTransport Configuration + 1201 Family 10h Processor Address Map + 1202 Family 10h Processor DRAM Controller + 1203 Family 10h Processor Miscellaneous Control + 1204 Family 10h Processor Link Control + 1300 Family 11h Processor HyperTransport Configuration + 1301 Family 11h Processor Address Map + 1302 Family 11h Processor DRAM Controller + 1303 Family 11h Processor Miscellaneous Control + 1304 Family 11h Processor Link Control + 1305 Griffin Function 5 + 1306 Griffin Function 6 + 1307 Griffin Function 7 + 1308 Kaveri Audio Controller + 1314 Wrestler/Bheem/Ontario/Krishna Audio Controller + 13e0 Ariel Root Complex + 13e1 Ariel IOMMU + 13e2 Ariel PCIe Dummy Host Bridge + 13e3 Ariel PCIe GPP Bridge + 13e4 Ariel PCIe Dummy Host Bridge + 13e5 Ariel Internal PCIe GPP Bridge 0 to Bus A + 13e6 Ariel Internal PCIe GPP Bridge 0 to Bus B + 13e7 Ariel SMBus Controller + 13e8 Ariel LPC Bridge + 13e9 Ariel Internal GPU + 13ea Ariel HD Audio Controller + 13eb Ariel HD Audio Coprocessor + 13ec Ariel Cryptographic Coprocessor + 13ed Ariel USB 3.1 Type C: Gen2 x 1port + DP Alt Mode + 13ee Ariel USB 3.1 Type A: Gen2 x 2 ports + 13ef Ariel ZCN/MP4 + 13f0 Ariel Device 24: Function 0 + 13f1 Ariel Device 24: Function 1 + 13f2 Ariel Device 24: Function 2 + 13f3 Ariel Device 24: Function 3 + 13f4 Ariel Device 24: Function 4 + 13f5 Ariel Device 24: Function 5 + 13f6 Ariel Device 24: Function 6 + 13f7 Ariel Device 24: Function 7 + 1400 Family 15h (Models 10h-1fh) Processor Function 0 + 1401 Family 15h (Models 10h-1fh) Processor Function 1 + 1402 Family 15h (Models 10h-1fh) Processor Function 2 + 1403 Family 15h (Models 10h-1fh) Processor Function 3 + 1404 Family 15h (Models 10h-1fh) Processor Function 4 + 1405 Family 15h (Models 10h-1fh) Processor Function 5 + 1410 Family 15h (Models 10h-1fh) Processor Root Complex + 103c 1985 Pavilion 17-e163sg Notebook PC + 1412 Family 15h (Models 10h-1fh) Processor Root Port + 1022 1234 Trinity A-series APU + 1413 Family 15h (Models 10h-1fh) Processor Root Port + 1414 Family 15h (Models 10h-1fh) Processor Root Port + 1022 1234 Trinity A-series APU + 1415 Family 15h (Models 10h-1fh) Processor Root Port + 1416 Family 15h (Models 10h-1fh) Processor Root Port + 1417 Family 15h (Models 10h-1fh) Processor Root Port + 1418 Family 15h (Models 10h-1fh) Processor Root Port + 1419 Family 15h (Models 10h-1fh) I/O Memory Management Unit + 141a Family 15h (Models 30h-3fh) Processor Function 0 + 141b Family 15h (Models 30h-3fh) Processor Function 1 + 141c Family 15h (Models 30h-3fh) Processor Function 2 + 141d Family 15h (Models 30h-3fh) Processor Function 3 + 141e Family 15h (Models 30h-3fh) Processor Function 4 + 141f Family 15h (Models 30h-3fh) Processor Function 5 + 1422 Family 15h (Models 30h-3fh) Processor Root Complex + 1423 Family 15h (Models 30h-3fh) I/O Memory Management Unit + 1424 Family 15h (Models 30h-3fh) Processor Root Port + 1425 Kaveri P2P Bridge for GFX PCIe Port [1:0] + 1426 Family 15h (Models 30h-3fh) Processor Root Port + 142e Liverpool Processor HT configuration + 142f Liverpool Processor Address Maps + 1430 Liverpool Processor DRAM configuration + 1431 Liverpool Processor Misc configuration + 1432 Liverpool Processor PM configuration + 1433 Liverpool Processor NB Performance Monitor + 1434 Liverpool Processor SPLL Configuration + 1436 Liverpool Processor Root Complex + 1437 Liverpool I/O Memory Management Unit + 1438 Liverpool UMI PCIe Dummy Host Bridge + 1439 Family 16h Processor Functions 5:1 + 143a Kingston/Clayton/Gladius/Montego Root Complex + 143b Kingston/Clayton/Gladius/Montego P2P Bridge for UMI Link + 1440 Matisse/Vermeer Data Fabric: Device 18h; Function 0 + 1441 Matisse/Vermeer Data Fabric: Device 18h; Function 1 + 1442 Matisse/Vermeer Data Fabric: Device 18h; Function 2 + 1443 Matisse/Vermeer Data Fabric: Device 18h; Function 3 + 1444 Matisse/Vermeer Data Fabric: Device 18h; Function 4 + 1445 Matisse/Vermeer Data Fabric: Device 18h; Function 5 + 1446 Matisse/Vermeer Data Fabric: Device 18h; Function 6 + 1447 Matisse/Vermeer Data Fabric: Device 18h; Function 7 + 1448 Renoir Device 24: Function 0 + 1449 Renoir Device 24: Function 1 + 144a Renoir Device 24: Function 2 + 144b Renoir Device 24: Function 3 + 144c Renoir Device 24: Function 4 + 144d Renoir Device 24: Function 5 + 144e Renoir Device 24: Function 6 + 144f Renoir Device 24: Function 7 + 1450 Family 17h (Models 00h-0fh) Root Complex + 1451 Family 17h (Models 00h-0fh) I/O Memory Management Unit + 1452 Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge + ea50 ce19 mCOM10-L1900 + 1453 Family 17h (Models 00h-0fh) PCIe GPP Bridge + 1454 Family 17h (Models 00h-0fh) Internal PCIe GPP Bridge 0 to Bus B + 1455 Zeppelin/Renoir PCIe Dummy Function + 1456 Family 17h (Models 00h-0fh) Platform Security Processor (PSP) 3.0 Device + 1457 Family 17h (Models 00h-0fh) HD Audio Controller + 1458 XGMAC 10GbE Controller + 1459 XGMAC 10GbE Controller + 145a Zeppelin/Raven/Raven2 PCIe Dummy Function + 145b Zeppelin Non-Transparent Bridge + 145c Family 17h (Models 00h-0fh) USB 3.0 Host Controller + 145d Zeppelin Switch Upstream (PCIE SW.US) + 145e Zeppelin Switch Downstream (PCIE SW.DS) + 145f Zeppelin USB 3.0 xHCI Compliant Host Controller + 1460 Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 0 + 1461 Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 1 + 1462 Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 2 + 1463 Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 3 + 1464 Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 4 + 1465 Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 5 + 1466 Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 6 + 1467 Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 7 + 1468 Zeppelin Cryptographic Coprocessor NTBCCP + 1470 Vega 10 PCIe Bridge + 1471 Vega 10 PCIe Bridge + 1480 Starship/Matisse Root Complex + 1462 7c37 X570-A PRO motherboard + 15d9 1b95 H12SSL-i + 1481 Starship/Matisse IOMMU + 1482 Starship/Matisse PCIe Dummy Host Bridge + 1483 Starship/Matisse GPP Bridge + 01de fff9 Gimlet Baseboard + 1484 Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B] + 1485 Starship/Matisse Reserved SPP + 1486 Starship/Matisse Cryptographic Coprocessor PSPCPP + 1487 Starship/Matisse HD Audio Controller + 1462 9c37 X570-A PRO motherboard + 1488 Starship Reserved SSP + 1489 Starship Reserved SSP + 148a Starship/Matisse PCIe Dummy Function + 148b Starship/Matisse Non-Transparent Bridge + 148c Starship USB 3.0 Host Controller + 15d9 145c H12SSL-i + 148d Starship/Matisse Switch Upstream (PCIE SW.US) + 148e Starship/Matisse Switch Downstream (PCIE SW.DS) + 148f Starship Reserved SSP + 1490 Starship Device 24; Function 0 + 1491 Starship Device 24; Function 1 + 1492 Starship Device 24; Function 2 + 1493 Starship Device 24; Function 3 + 1494 Starship Device 24; Function 4 + 1495 Starship Device 24; Function 5 + 1496 Starship Device 24; Function 6 + 1497 Starship Device 24; Function 7 + 1498 Starship/Matisse PTDMA + 1499 Starship/Matisse NVMe + 149a Starship PCIe GPP Bridge [1:0] + 149b Starship Reserved SSP + 149c Matisse USB 3.0 Host Controller + 1462 7c37 X570-A PRO motherboard + 149d Vangogh CVIP + 14b5 Family 17h-19h PCIe Root Complex + 14b6 Family 17h-19h IOMMU + 14b7 Family 17h-19h PCIe Dummy Host Bridge + 14b8 Family 17h-19h PCIe GPP Bridge + 14b9 Family 17h-19h Internal PCIe GPP Bridge + 14ba Family 17h-19h PCIe GPP Bridge +# Server device + 14ca Genoa CCP/PSP 4.0 Device + 14cd Family 19h USB4/Thunderbolt PCIe tunnel + 14de Phoenix PCIe Dummy Function + 14ef Family 19h USB4/Thunderbolt PCIe tunnel + 1502 AMD IPU Device + 1510 Family 14h Processor Root Complex + 174b 1001 PURE Fusion Mini + 1512 Family 14h Processor Root Port + 1513 Family 14h Processor Root Port + 1514 Family 14h Processor Root Port + 1515 Family 14h Processor Root Port + 1516 Family 14h Processor Root Port + 1530 Family 16h Processor Function 0 + 1531 Family 16h Processor Function 1 + 1532 Family 16h Processor Function 2 + 1533 Family 16h Processor Function 3 + 1534 Family 16h Processor Function 4 + 1535 Family 16h Processor Function 5 + 1536 Family 16h Processor Root Complex + 1043 8623 AM1I-A Motherboard + 1849 1536 QC5000-ITX/PH + 1537 Kabini/Mullins PSP-Platform Security Processor + 1538 Family 16h Processor Function 0 + 1539 Kabini P2P Bridge for PCIe Ports[4:0] + 1540 Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky HT Configuration + 1541 Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky Address Maps + 1542 Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky DRAM Configuration + 1543 Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky Miscellaneous Configuration + 1544 Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky PM Configuration + 1545 Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky NB Performance Monitor + 1546 Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky Root Complex + 1547 Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky IOMMU + 1548 Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky UMI PCIe Dummy Host Bridge + 1549 Kryptos/Cato/Garfield/Garfield+ P2P Bridge for PCIe Port [3:0] + 154a Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky Audio Processor + 154b Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky Security Processor + 154d Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky/Anubis HDMI Controller + 154f Anubis Audio Processor + 1550 Garfield+/Arlene/Pooky/Anubis SPLL Configuration + 1553 Arlene/Pooky P2P Bridge for PCIE (3:0) + 155b Anubis Root Complex + 155c Anubis IOMMU + 155d Anubis UMI PCIe Dummy Bridge + 155e Anubis P2P Bridge for PCIe Ports [4:0] + 1560 Anubis Security Processor + 1566 Family 16h (Models 30h-3fh) Processor Root Complex + 1567 Mullins IOMMU + 156b Family 16h (Models 30h-3fh) Host Bridge + 1570 Family 15h (Models 60h-6fh) Processor Function 0 + 1571 Family 15h (Models 60h-6fh) Processor Function 1 + 1572 Family 15h (Models 60h-6fh) Processor Function 2 + 1573 Family 15h (Models 60h-6fh) Processor Function 3 + 1574 Family 15h (Models 60h-6fh) Processor Function 4 + 1575 Family 15h (Models 60h-6fh) Processor Function 5 + 1576 Family 15h (Models 60h-6fh) Processor Root Complex + 1577 Family 15h (Models 60h-6fh) I/O Memory Management Unit + 1578 Carrizo Platform Security Processor + 1579 Carrizo Audio Processor + 157a Family 15h (Models 60h-6fh) Audio Controller + 157b Family 15h (Models 60h-6fh) Host Bridge + 157c Family 15h (Models 60h-6fh) Processor Root Port + 157d Carrizo Audio Dummy Host Bridge + 157e Carrizo Audio Controller + 1580 Family 16h (Models 30h-3fh) Processor Function 0 + 1581 Family 16h (Models 30h-3fh) Processor Function 1 + 1582 Family 16h (Models 30h-3fh) Processor Function 2 + 1583 Family 16h (Models 30h-3fh) Processor Function 3 + 1584 Family 16h (Models 30h-3fh) Processor Function 4 + 1585 Family 16h (Models 30h-3fh) Processor Function 5 + 1590 Amur/Nolan HT Configuration + 1591 Amur/Nolan Address Maps + 1592 Amur/Nolan DRAM Configuration + 1593 Amur/Nolan Miscellaneous Configuration + 1594 Amur/Nolan PM Configuration + 1595 Amur/Nolan NB Performance Monitor + 1596 Amur/Nolan Root Complex + 1597 Amur/Nolan IOMMU + 1598 Amur/Nolan Platform Security Processor + 1599 Amur/Nolan PCIe Dummy Host Bridge + 159d Amur Function 6: Gasket + 15b0 Stoney HT Configuration + 15b1 Stoney Address Maps + 15b2 Stoney DRAM Configuration + 15b3 Stoney Miscellaneous Configuration + 15b4 Stoney PM Configuration + 15b5 Stoney NB Performance Monitor + 15bc Stoney PCIe [GFX,GPP] Bridge [4:0] + 15be Stoney Audio Processor + 15c4 Phoenix USB4/Thunderbolt NHI controller #1 + 15c5 Phoenix USB4/Thunderbolt NHI controller #2 + 15c7 Family 19h (Model 74h) CCP/PSP 3.0 Device + 15d0 Raven/Raven2 Root Complex + 103c 8615 Pavilion Laptop 15-cw1xxx + 1043 876b PRIME B450M-A Motherboard + ea50 ce19 mCOM10-L1900 + 15d1 Raven/Raven2 IOMMU + 103c 8615 Pavilion Laptop 15-cw1xxx + 1043 876b PRIME B450M-A Motherboard + ea50 ce19 mCOM10-L1900 + 15d2 Raven/Raven2 PCIe Dummy Host Bridge + 15d3 Raven/Raven2 PCIe GPP Bridge [6:0] + ea50 ce19 mCOM10-L1900 + 15d4 FireFlight USB 3.1 + 15d5 FireFlight USB 3.1 + 15d6 Rembrandt USB4 XHCI controller #5 + 15d7 Rembrandt USB4 XHCI controller #6 + 15da Raven/Raven2 PCIe Dummy Host Bridge + 15db Raven/Raven2 Internal PCIe GPP Bridge 0 to Bus A + ea50 ce19 mCOM10-L1900 + 15dc Raven/Raven2 Internal PCIe GPP Bridge 0 to Bus B + ea50 ce19 mCOM10-L1900 + 15de Raven/Raven2/FireFlight HD Audio Controller + 15df Family 17h (Models 10h-1fh) Platform Security Processor + 1043 876b PRIME Motherboard + 17aa 5124 ThinkPad E595 + ea50 ce19 mCOM10-L1900 + 15e0 Raven USB 3.1 + 103c 8615 Pavilion Laptop 15-cw1xxx + 1043 876b PRIME Motherboard + 17aa 5124 ThinkPad E595 + ea50 ce19 mCOM10-L1900 + 15e1 Raven USB 3.1 + 103c 8615 Pavilion Laptop 15-cw1xxx + 1043 876b PRIME Motherboard + 17aa 5124 ThinkPad E595 + ea50 ce19 mCOM10-L1900 + 15e2 ACP/ACP3X/ACP6x Audio Coprocessor + 17aa 5124 ThinkPad E595 + ea50 ce19 mCOM10-L1900 + 15e3 Family 17h/19h HD Audio Controller + 103c 8615 Pavilion Laptop 15-cw1xxx + 103c 8b17 ProBook 445 G9/455 G9 + 1043 86c7 PRIME B450M-A Motherboard + 17aa 5124 ThinkPad E595 + 15e4 Sensor Fusion Hub + 15e5 Raven2 USB 3.1 + ea50 ce19 mCOM10-L1900 + 15e6 Raven/Raven2/Renoir Non-Sensor Fusion Hub KMDF driver + 1022 15e4 Raven/Raven2/Renoir Sensor Fusion Hub + ea50 ce19 mCOM10-L1900 + 15e8 Raven/Raven2 Device 24: Function 0 + 15e9 Raven/Raven2 Device 24: Function 1 + 15ea Raven/Raven2 Device 24: Function 2 + 15eb Raven/Raven2 Device 24: Function 3 + 15ec Raven/Raven2 Device 24: Function 4 + 15ed Raven/Raven2 Device 24: Function 5 + 15ee Raven/Raven2 Device 24: Function 6 + 15ef Raven/Raven2 Device 24: Function 7 + 15f0 FireFlight Device 24: Function 0 + 15f1 FireFlight Device 24: Function 1 + 15f2 FireFlight Device 24: Function 2 + 15f3 FireFlight Device 24: Function 3 + 15f4 FireFlight Device 24: Function 4 + 15f5 FireFlight Device 24: Function 5 + 15f6 FireFlight Device 24: Function 6 + 15f7 FireFlight Device 24: Function 7 + 15f8 FireFlight Root Complex + 15f9 FireFlight IOMMU + 15fa FireFlight PCIe Dummy Host Bridge + 15fb FireFlight PCIe GPP Bride 3:0 + 15fc FireFlight PCIe Dummy Host Bridge + 15fd FireFlight Internal PCIe GPP Bridge 0 to Bus A + 15fe FireFlight Internal PCIe GPP Bridge 0 to Bus B + 15ff FireFlight Bus A; Device 0: Function 0: Internal GPU + 1600 Family 15h Processor Function 0 + 1601 Family 15h Processor Function 1 + 1602 Family 15h Processor Function 2 + 1603 Family 15h Processor Function 3 + 1604 Family 15h Processor Function 4 + 1605 Family 15h Processor Function 5 + 1606 Arden Security Processor + 1608 Arden Device 18h: Function 0 + 1609 Arden Device 18h: Function 1 + 160a Arden Device 18h: Function 2 + 160b Arden Device 18h: Function 3 + 160c Arden Device 18h: Function 4 + 160d Arden Device 18h: Function 5 + 160e Arden Device 18h: Function 6 + 160f Arden Device 18h: Function 7 + 161a Rembrandt USB4 XHCI controller #1 + 161b Rembrandt USB4 XHCI controller #2 + 161c Rembrandt USB4 XHCI controller #7 + 161d Rembrandt USB4 XHCI controller #3 + 161e Rembrandt USB4 XHCI controller #4 + 161f Rembrandt USB4 XHCI controller #8 + 1620 Anubis HT Configuration + 1621 Anubis Address Maps + 1622 Anubis DRAM Configuration + 1623 Anubis Miscellaneous Configuration + 1624 Anubis PM Configuration + 1625 Anubis NB Performance Monitor + 1626 Arden Root Complex + 1627 Arden IOMMU + 1628 Arden PCIe Dummy Host Bridge + 1629 Arden PCIe GPP Bridge + 162a Arden Internal PCIe GPP Bridge 0 to bus X + 162b Arden PCIe Non-Transparent Bridge + 162c VanGogh USB2 + 162e Rembrandt USB4/Thunderbolt NHI controller #1 + 162f Rembrandt USB4/Thunderbolt NHI controller #2 + 1630 Renoir/Cezanne Root Complex + 1631 Renoir/Cezanne IOMMU + 1632 Renoir PCIe Dummy Host Bridge + 1633 Renoir PCIe GPP Bridge + 1634 Renoir/Cezanne PCIe GPP Bridge + 1635 Renoir Internal PCIe GPP Bridge to Bus + 1637 Renoir HD Audio Controller + 1639 Renoir/Cezanne USB 3.1 + 163a VanGogh USB0 + 163b VanGogh USB1 + 163c VanGogh SecUSB + 163d VanGogh SecureFunction + 163e VanGogh HSP + 1641 Renoir 10GbE Controller Port 0 (XGBE0/1) + 1642 Renoir WLAN + 1643 Renoir BT + 1644 Renoir I2S + 1645 VanGogh Root Complex + 1646 VanGogh IOMMU + 1647 VanGogh PCIe GPP Bridge + 1648 VanGogh Internal PCIe GPP Bridge to Bus + 1649 Family 19h PSP/CCP + 164f Milan IOMMU + 1650 Milan Data Fabric; Function 0 + 1651 Milan Data Fabric; Function 1 + 1652 Milan Data Fabric; Function 2 + 1653 Milan Data Fabric; Function 3 + 1654 Milan Data Fabric; Function 4 + 1655 Milan Data Fabric; Function 5 + 1656 Milan Data Fabric; Function 6 + 1657 Milan Data Fabric; Function 7 + 1660 VanGogh Data Fabric; Function 0 + 1661 VanGogh Data Fabric; Function 1 + 1662 VanGogh Data Fabric; Function 2 + 1663 VanGogh Data Fabric; Function 3 + 1664 VanGogh Data Fabric; Function 4 + 1665 VanGogh Data Fabric; Function 5 + 1666 VanGogh Data Fabric; Function 6 + 1667 VanGogh Data Fabric; Function 7 + 1668 Pink Sardine USB4/Thunderbolt NHI controller #1 + 1669 Pink Sardine USB4/Thunderbolt NHI controller #2 + 166a Cezanne Data Fabric; Function 0 + 166b Cezanne Data Fabric; Function 1 + 166c Cezanne Data Fabric; Function 2 + 166d Cezanne Data Fabric; Function 3 + 166e Cezanne Data Fabric; Function 4 + 166f Cezanne Data Fabric; Function 5 + 1670 Cezanne Data Fabric; Function 6 + 1671 Cezanne Data Fabric; Function 7 + 1679 Rembrandt Data Fabric: Device 18h; Function 0 + 167a Rembrandt Data Fabric: Device 18h; Function 1 + 167b Rembrandt Data Fabric: Device 18h; Function 2 + 167c Rembrandt Data Fabric: Device 18h; Function 3 + 167d Rembrandt Data Fabric: Device 18h; Function 4 + 167e Rembrandt Data Fabric: Device 18h; Function 5 + 167f Rembrandt Data Fabric: Device 18h; Function 6 + 1680 Rembrandt Data Fabric: Device 18h; Function 7 + 1700 Family 12h/14h Processor Function 0 + 1701 Family 12h/14h Processor Function 1 + 1702 Family 12h/14h Processor Function 2 + 1703 Family 12h/14h Processor Function 3 + 1704 Family 12h/14h Processor Function 4 + 1705 Family 12h Processor Root Complex + 1706 Llano P2P Bridge to external GPU + 1707 Family 12h Processor Root Port + 1708 Family 12h Processor Root Port + 1709 Family 12h Processor Root Port + 170a Family 12h Processor Root Port + 170b Family 12h Processor Root Port + 170c Family 12h Processor Root Port + 170d Family 12h Processor Root Port + 1716 Family 12h/14h Processor Function 5 + 1718 Family 12h/14h Processor Function 6 + 1719 Family 12h/14h Processor Function 7 + 2000 79C97x [PCnet32 LANCE] + 1014 2000 NetFinity 10/100 Fast Ethernet + 1022 2000 PCnet - Fast 79C971 + 103c 104c Ethernet with LAN remote power Adapter + 103c 1064 Ethernet with LAN remote power Adapter + 103c 1065 Ethernet with LAN remote power Adapter + 103c 106c Ethernet with LAN remote power Adapter + 103c 106e Ethernet with LAN remote power Adapter + 103c 10ea Ethernet with LAN remote power Adapter + 1113 1220 EN1220 10/100 Fast Ethernet + 1259 2450 AT-2450 10/100 Fast Ethernet + 1259 2454 AT-2450v4 10Mb Ethernet Adapter + 1259 2700 AT-2700TX 10/100 Fast Ethernet + 1259 2701 AT-2700FX 100Mb Ethernet + 1259 2702 AT-2700FTX (AM79C976KD [PCnet-PRO] chipset) 10/100 Mb Fiber/Copper Fast Ethernet + 1259 2703 AT-2701FX + 1259 2704 AT-2701FTX 10/100 Mb Fiber/Copper Fast Ethernet + 4c53 1000 CC7/CR7/CP7/VC7/VP7/VR7 mainboard + 4c53 1010 CP5/CR6 mainboard + 4c53 1020 VR6 mainboard + 4c53 1030 PC5 mainboard + 4c53 1040 CL7 mainboard + 4c53 1060 PC7 mainboard +# Via AMD's own technical reference on their Am79C978 NICs; https://www.amd.com/system/files/TechDocs/22206.pdf + 2001 Am79C978 PCnet Home (HomePNA) 1/10 PCI Ethernet Adapter [Am79C971 PHY] + 1092 0a78 Multimedia Home Network Adapter + 1668 0299 ActionLink Home Network Adapter + 2003 Am 1771 MBW [Alchemy] + 2020 AM53/79C974 [PC-SCSI] + 1af4 1100 QEMU Virtual Machine + 2040 79c974 + 2080 CS5536 [Geode companion] Host Bridge + 2081 Geode LX Video + 2082 Geode LX AES Security Block + 208f CS5536 GeodeLink PCI South Bridge + 2090 CS5536 [Geode companion] ISA + 2091 CS5536 [Geode companion] FLASH + 2093 CS5536 [Geode companion] Audio + 2094 CS5536 [Geode companion] OHC + 2095 CS5536 [Geode companion] EHC + 2096 CS5536 [Geode companion] UDC + 2097 CS5536 [Geode companion] UOC + 209a CS5536 [Geode companion] IDE + 2625 Am79C973 [Lance/PCI PCNet/32] + 2627 Am79C975 [Lance/PCI PCNet/32] + 3000 ELanSC520 Microcontroller + 43a0 Hudson PCI to PCI bridge (PCIE port 0) + 43a1 Hudson PCI to PCI bridge (PCIE port 1) + 43a2 Hudson PCI to PCI bridge (PCIE port 2) + 43a3 Hudson PCI to PCI bridge (PCIE port 3) + 43b0 X370 Series Chipset PCIe Upstream Port + 1849 43c6 Fatal1ty X370 Professional Gaming + 43b1 X399 Series Chipset PCIe Bridge + 43b4 300 Series Chipset PCIe Port + 43b5 X370 Series Chipset SATA Controller + 1849 43c8 Fatal1ty X370 Professional Gaming + 43b6 X399 Series Chipset SATA Controller + 43b7 300 Series Chipset SATA Controller + 43b8 A320 Chipset SATA Controller [AHCI mode] + 43b9 X370 Series Chipset USB 3.1 xHCI Controller + 1849 43d0 Fatal1ty X370 Professional Gaming + 43ba X399 Series Chipset USB 3.1 xHCI Controller + 43bb 300 Series Chipset USB 3.1 xHCI Controller + 43bc A320 USB 3.1 XHCI Host Controller + 43c6 400 Series Chipset PCIe Bridge + 43c7 400 Series Chipset PCIe Port + 43c8 400 Series Chipset SATA Controller + 43d5 400 Series Chipset USB 3.1 xHCI Compliant Host Controller + 43e9 500 Series Chipset Switch Upstream Port + 43eb 500 Series Chipset SATA Controller +# or ASM106X Serial ATA Controller + 1b21 1062 ASM1062 Serial ATA Controller + 43ee 500 Series Chipset USB 3.1 XHCI Controller +# maybe + 1b21 1142 ASM1042A USB 3.0 Host Controller + 43f4 600 Series Chipset PCIe Switch Upstream Port + 43f5 600 Series Chipset PCIe Switch Downstream Port + 43f6 600 Series Chipset SATA Controller + 43f7 600 Series Chipset USB 3.2 Controller + 57a3 Matisse PCIe GPP Bridge + 57a4 Matisse PCIe GPP Bridge + 57ad Matisse Switch Upstream + 7006 AMD-751 [Irongate] System Controller + 7007 AMD-751 [Irongate] AGP Bridge + 700a AMD-IGR4 AGP Host to PCI Bridge + 700b AMD-IGR4 PCI to PCI Bridge + 700c AMD-760 MP [IGD4-2P] System Controller + 700d AMD-760 MP [IGD4-2P] AGP Bridge + 700e AMD-760 [IGD4-1P] System Controller + 700f AMD-760 [IGD4-1P] AGP Bridge + 7400 AMD-755 [Cobra] ISA + 7401 AMD-755 [Cobra] IDE + 7403 AMD-755 [Cobra] ACPI + 7404 AMD-755 [Cobra] USB + 7408 AMD-756 [Viper] ISA + 7409 AMD-756 [Viper] IDE + 740b AMD-756 [Viper] ACPI + 740c AMD-756 [Viper] USB + 7410 AMD-766 [ViperPlus] ISA + 7411 AMD-766 [ViperPlus] IDE + 7413 AMD-766 [ViperPlus] ACPI + 7414 AMD-766 [ViperPlus] USB + 7440 AMD-768 [Opus] ISA + 1043 8044 A7M-D Mainboard + 7441 AMD-768 [Opus] IDE + 7443 AMD-768 [Opus] ACPI + 1043 8044 A7M-D Mainboard + 7445 AMD-768 [Opus] Audio + 7446 AMD-768 [Opus] MC97 Modem + 7448 AMD-768 [Opus] PCI + 7449 AMD-768 [Opus] USB + 7450 AMD-8131 PCI-X Bridge + 7451 AMD-8131 PCI-X IOAPIC + 7454 AMD-8151 System Controller + 7455 AMD-8151 AGP Bridge + 7458 AMD-8132 PCI-X Bridge + 7459 AMD-8132 PCI-X IOAPIC + 7460 AMD-8111 PCI + 161f 3017 HDAMB + 7461 AMD-8111 USB + 7462 AMD-8111 Ethernet + 7463 AMD-8111 USB EHCI + 7464 AMD-8111 USB OHCI + 161f 3017 HDAMB + 7468 AMD-8111 LPC + 161f 3017 HDAMB + 7469 AMD-8111 IDE + 1022 2b80 AMD-8111 IDE [Quartet] + 161f 3017 HDAMB + 746a AMD-8111 SMBus 2.0 + 746b AMD-8111 ACPI + 161f 3017 HDAMB + 746d AMD-8111 AC97 Audio + 161f 3017 HDAMB + 746e AMD-8111 MC97 Modem + 756b AMD-8111 ACPI + 7800 FCH SATA Controller [IDE mode] + 7801 FCH SATA Controller [AHCI mode] + 103c 168b ProBook 4535s Notebook + 103c 194e ProBook 455 G1 Notebook + 1043 8623 AM1I-A Motherboard + 17aa 3988 Z50-75 + 1849 7801 QC5000-ITX/PH + 7802 FCH SATA Controller [RAID mode] + 7803 FCH SATA Controller [RAID mode] + 7804 FCH SATA Controller [AHCI mode] + 103c 1985 Pavilion 17-e163sg Notebook PC + 7805 FCH SATA Controller [RAID mode] + 7806 FCH SD Flash Controller + 7807 FCH USB OHCI Controller + 103c 194e ProBook 455 G1 Notebook + 103c 1985 Pavilion 17-e163sg Notebook PC + 1043 8623 AM1I-A Motherboard + 17aa 3988 Z50-75 + 1849 7807 QC5000-ITX/PH + 7808 FCH USB EHCI Controller + 103c 194e ProBook 455 G1 Notebook + 103c 1985 Pavilion 17-e163sg Notebook PC + 1043 8623 AM1I-A Motherboard + 17aa 3988 Z50-75 + 1849 7808 QC5000-ITX/PH + 7809 FCH USB OHCI Controller + 103c 194e ProBook 455 G1 Notebook + 17aa 3988 Z50-75 + 780a Kabini/Mullins SATA Raid/AHCI Mode (DotHill driver) + 780b FCH SMBus Controller + 103c 194e ProBook 455 G1 Notebook + 103c 1985 Pavilion 17-e163sg Notebook PC + 1043 8623 AM1I-A Motherboard + 17aa 3988 Z50-75 + 1849 780b QC5000-ITX/PH + 780c FCH IDE Controller + 780d FCH Azalia Controller + 103c 194e ProBook 455 G1 Notebook + 103c 1985 Pavilion 17-e163sg Notebook PC + 1043 8444 F2A85-M Series + 1043 8576 AM1I-A Motherboard + 17aa 3988 Z50-75 + 1849 8892 QC5000-ITX/PH + 780e FCH LPC Bridge + 103c 194e ProBook 455 G1 Notebook + 103c 1985 Pavilion 17-e163sg Notebook PC + 1043 8623 AM1I-A Motherboard + 17aa 3988 Z50-75 + 1849 780e QC5000-ITX/PH + 780f FCH PCI Bridge + 7812 FCH USB XHCI Controller + 7813 FCH SD Flash Controller + 7814 FCH USB XHCI Controller + 103c 194e ProBook 455 G1 Notebook + 103c 1985 Pavilion 17-e163sg Notebook PC + 1043 8623 AM1I-A Motherboard + 17aa 3988 Z50-75 + 1849 7814 QC5000-ITX/PH + 7900 FCH SATA Controller [IDE mode] + 7901 FCH SATA Controller [AHCI mode] + 103c 8615 Pavilion Laptop 15-cw1xxx + 1043 876b PRIME Motherboard + 1462 7c37 X570-A PRO motherboard + 15d9 7901 H12SSL-i + ea50 ce19 mCOM10-L1900 + 7902 FCH SATA Controller [RAID mode] + 7903 FCH SATA Controller [RAID mode] + 7904 FCH SATA Controller [AHCI mode] + 7906 FCH SD Flash Controller + 7908 FCH USB EHCI Controller + 790b FCH SMBus Controller + 103c 8615 Pavilion Laptop 15-cw1xxx + 103c 8b17 ProBook 445 G9/455 G9 + 1043 876b PRIME Motherboard + 1462 7c37 X570-A PRO motherboard + 15d9 790b H12SSL-i + 17aa 5124 ThinkPad E595 + ea50 ce19 mCOM10-L1900 + 790e FCH LPC Bridge + 103c 8615 Pavilion Laptop 15-cw1xxx + 1043 876b PRIME B450M-A Motherboard + 1462 7c37 X570-A PRO motherboard + 15d9 790e H12SSL-i + 17aa 5124 ThinkPad E595 + ea50 ce19 mCOM10-L1900 + 790f FCH PCI Bridge + 7914 FCH USB XHCI Controller + 9600 RS780 Host Bridge + 1043 82ee M378A-CM Motherboard + 1043 82f1 M3A78-EH Motherboard + 9601 RS880 Host Bridge + 1019 2120 A785GM-M + 1028 0433 Optiplex 580 + 103c 1609 ProLiant MicroServer N36L + 1043 83a2 M4A785-M Mainboard + 1043 843e M5A88-V EVO + 9602 RS780/RS880 PCI to PCI bridge (int gfx) + 9603 RS780 PCI to PCI bridge (ext gfx port 0) + 1028 0433 Optiplex 580 + 103c 1609 ProLiant MicroServer N36L + 9604 RS780/RS880 PCI to PCI bridge (PCIE port 0) + 1028 0433 OptiPlex 580 + 9605 RS780/RS880 PCI to PCI bridge (PCIE port 1) + 9606 RS780 PCI to PCI bridge (PCIE port 2) + 103c 1609 ProLiant MicroServer N36L + 9607 RS780/RS880 PCI to PCI bridge (PCIE port 3) + 9608 RS780/RS880 PCI to PCI bridge (PCIE port 4) + 1028 0433 OptiPlex 580 + 9609 RS780/RS880 PCI to PCI bridge (PCIE port 5) + 960a RS780 PCI to PCI bridge (NB-SB link) + 960b RS780 PCI to PCI bridge (ext gfx port 1) +# Takes over NVMe PCI ID when RAID is enabled + b000 RAID Bottom Device +1023 Trident Microsystems + 0194 82C194 + 2000 4DWave DX + 2001 4DWave NX + 122d 1400 Trident PCI288-Q3DII (NX) + 2100 CyberBlade XP4m32 + 2200 XGI Volari XP5 + 8400 CyberBlade/i7 + 1023 8400 CyberBlade i7 AGP + 8420 CyberBlade/i7d + 0e11 b15a CyberBlade i7 AGP + 8500 CyberBlade/i1 + 8520 CyberBlade i1 + 0e11 b16e CyberBlade i1 AGP + 1023 8520 CyberBlade i1 AGP + 8620 CyberBlade/i1 + 1014 0502 ThinkPad R30/T30 + 1014 1025 Travelmate 352TE + 8820 CyberBlade XPAi1 + 9320 TGUI 9320 + 9350 GUI Accelerator + 9360 Flat panel GUI Accelerator + 9382 Cyber 9382 [Reference design] + 9383 Cyber 9383 [Reference design] + 9385 Cyber 9385 [Reference design] + 9386 Cyber 9386 + 9388 Cyber 9388 + 9397 Cyber 9397 + 939a Cyber 9397DVD + 9420 TGUI 9420 + 9430 TGUI 9430 + 9440 TGUI 9440 + 9460 TGUI 9460 + 9470 TGUI 9470 + 9520 Cyber 9520 + 9525 Cyber 9525 + 9540 Cyber 9540 + 9660 TGUI 9660/938x/968x + 9680 TGUI 9680 + 9682 TGUI 9682 + 9683 TGUI 9683 + 9685 ProVIDIA 9685 + 9750 3DImage 9750 + 1014 9750 3DImage 9750 + 1023 9750 3DImage 9750 + 9753 TGUI 9753 + 9754 TGUI 9754 + 9759 TGUI 975 + 9783 TGUI 9783 + 9785 TGUI 9785 + 9850 3DImage 9850 + 9880 Blade 3D PCI/AGP + 1023 9880 Blade 3D + 9910 CyberBlade/XP + 9930 CyberBlade/XPm + 9960 CyberBlade XP2 +1024 Beijing Dajia Internet Information Technology Co. + 0101 StreamLake 200 AI-VPU + 1024 0201 SL200-NP + 1024 0301 SL200-P +1025 Acer Incorporated [ALI] + 1435 M1435 + 1445 M1445 + 1449 M1449 + 1451 M1451 + 1461 M1461 + 1489 M1489 + 1511 M1511 + 1512 ALI M1512 Aladdin + 1513 M1513 + 1521 ALI M1521 Aladdin III CPU Bridge + 10b9 1521 ALI M1521 Aladdin III CPU Bridge + 1523 ALI M1523 ISA Bridge + 10b9 1523 ALI M1523 ISA Bridge + 1531 M1531 Northbridge [Aladdin IV/IV+] + 1533 M1533 PCI-to-ISA Bridge + 10b9 1533 ALI M1533 Aladdin IV/V ISA South Bridge + 1535 M1535 PCI Bridge + Super I/O + FIR + 1541 M1541 Northbridge [Aladdin V] + 10b9 1541 ALI M1541 Aladdin V/V+ AGP+PCI North Bridge + 1542 M1542 Northbridge [Aladdin V] + 1543 M1543 PCI-to-ISA Bridge + Super I/O + FIR + 1561 M1561 Northbridge [Aladdin 7] + 1621 M1621 Northbridge [Aladdin-Pro II] + 1631 M1631 Northbridge+3D Graphics [Aladdin TNT2] + 1641 M1641 Northbridge [Aladdin-Pro IV] + 1647 M1647 [MaGiK1] PCI North Bridge + 1671 M1671 Northbridge [ALADDiN-P4] + 1672 Northbridge [CyberALADDiN-P4] + 3141 M3141 + 3143 M3143 + 3145 M3145 + 3147 M3147 + 3149 M3149 + 3151 M3151 + 3307 M3307 MPEG-I Video Controller + 3309 M3309 MPEG-II Video w/ Software Audio Decoder + 3321 M3321 MPEG-II Audio/Video Decoder + 5212 M4803 + 5215 ALI PCI EIDE Controller + 5217 M5217H + 5219 M5219 + 5225 M5225 + 5229 M5229 + 5235 M5235 + 5237 M5237 PCI USB Host Controller + 5240 EIDE Controller + 5241 PCMCIA Bridge + 5242 General Purpose Controller + 5243 PCI to PCI Bridge Controller + 5244 Floppy Disk Controller + 5247 M1541 PCI to PCI Bridge + 5251 M5251 P1394 Controller + 5427 PCI to AGP Bridge + 5451 M5451 PCI AC-Link Controller Audio Device + 5453 M5453 PCI AC-Link Controller Modem Device + 7101 M7101 PCI PMU Power Management Controller + 10b9 7101 M7101 PCI PMU Power Management Controller +# should be 1022:9602 + 9602 AMD RS780/RS880 PCI to PCI bridge (int gfx) +1028 Dell + 0001 PowerEdge Expandable RAID Controller 2/Si + 1028 0001 PowerEdge 2400 + 0002 PowerEdge Expandable RAID Controller 3/Di + 1028 0002 PowerEdge 4400 + 1028 00d1 PERC 3/DiV [Viper] + 1028 00d9 PERC 3/DiL [Lexus] + 0003 PowerEdge Expandable RAID Controller 3/Si + 1028 0003 PowerEdge 2450 +# PowerEdge Codename Iguana + 0004 PowerEdge Expandable RAID Controller 3/Di [Iguana] + 1028 0004 PERC 3/DiF [Iguana] + 0006 PowerEdge Expandable RAID Controller 3/Di + 0007 Remote Access Card III + 0008 Remote Access Card III + 0009 Remote Access Card III: BMC/SMIC device not present + 000a PowerEdge Expandable RAID Controller 3/Di + 1028 0106 PERC 3/DiJ [Jaguar] + 1028 011b PERC 3/DiD [Dagger] + 1028 0121 PERC 3/DiB [Boxster] + 000c Embedded Remote Access or ERA/O + 000d Embedded Remote Access: BMC/SMIC device + 000e PowerEdge Expandable RAID controller 4/Di + 000f PowerEdge Expandable RAID controller 4/Di + 1028 014a PowerEdge 1750 + 0010 Remote Access Card 4 + 0011 Remote Access Card 4 Daughter Card + 0012 Remote Access Card 4 Daughter Card Virtual UART + 0013 PowerEdge Expandable RAID controller 4 + 1028 016c PowerEdge Expandable RAID Controller 4e/Si + 1028 016d PowerEdge Expandable RAID Controller 4e/Di + 1028 016e PowerEdge Expandable RAID Controller 4e/Di + 1028 016f PowerEdge Expandable RAID Controller 4e/Di + 1028 0170 PowerEdge Expandable RAID Controller 4e/Di + 0014 Remote Access Card 4 Daughter Card SMIC interface + 0015 PowerEdge Expandable RAID controller 5 + 1028 1f01 PERC 5/E Adapter RAID Controller + 1028 1f02 PERC 5/i Adapter RAID Controller + 1028 1f03 PERC 5/i Integrated RAID Controller + 0016 PowerEdge Expandable RAID controller S300 + 1028 1f24 PERC S300 Controller +# NV-RAM Adapter used in Dell DR appliances + 0073 NV-RAM Adapter + 1028 PCIe Bridge riser + 2600 ENT NVMe RT1 + 1028 215e ENT NVMe RT1 RI 3.84TB + 1028 215f ENT NVMe RT1 RI 7.68TB + 1028 2160 ENT NVMe RT1 FIPS RI 3.84TB + 1028 2161 ENT NVMe RT1 FIPS RI 7.68TB + 9602 RS780/RS880 PCI to PCI bridge (int gfx) +1029 Siemens Nixdorf IS +102a LSI Logic + 0000 HYDRA + 0010 ASPEN + 001f AHA-2940U2/U2W /7890/7891 SCSI Controllers + 9005 000f 2940U2W SCSI Controller + 9005 0106 2940U2W SCSI Controller + 9005 a180 2940U2W SCSI Controller + 00c5 AIC-7899 U160/m SCSI Controller + 1028 00c5 PowerEdge 2550/2650/4600 + 00cf AIC-7899P U160/m + 1028 0106 PowerEdge 4600 + 1028 0121 PowerEdge 2650 +102b Matrox Electronics Systems Ltd. +# DJ: I've a suspicion that 0010 is a duplicate of 0d10. + 0010 MGA-I [Impression?] + 0100 MGA 1064SG [Mystique] + 0518 MGA-II [Athena] + 0519 MGA 2064W [Millennium] + 051a MGA 1064SG [Mystique] + 102b 0100 MGA-1064SG Mystique + 102b 051a MGA-1164SG Mystique 220 + 102b 1100 MGA-1084SG Mystique + 102b 1200 MGA-1084SG Mystique + 1100 102b MGA-1084SG Mystique + 110a 0018 Scenic Pro C5 (D1025) + 051b MGA 2164W [Millennium II] + 102b 051b MGA-2164W Millennium II + 102b 1100 MGA-2164W Millennium II + 102b 1200 MGA-2164W Millennium II + 102b 2100 MGA-2164W Millennium II + 051e MGA 1064SG [Mystique] AGP + 051f MGA 2164W [Millennium II] AGP + 102b 2100 MGA-2164WA [Millennium II A] + 0520 MGA G200 + 102b dbc2 G200 Multi-Monitor + 102b dbc8 G200 Multi-Monitor + 102b dbe2 G200 Multi-Monitor + 102b dbe8 G200 Multi-Monitor + 102b ff03 Millennium G200 SD + 102b ff04 Marvel G200 + 0521 MGA G200 AGP + 1014 ff03 Millennium G200 AGP + 102b 48e9 Mystique G200 AGP + 102b 48f8 Millennium G200 SD AGP + 102b 4a60 Millennium G200 LE AGP + 102b 4a64 Millennium G200 AGP + 102b c93c Millennium G200 AGP + 102b c9b0 Millennium G200 AGP + 102b c9bc Millennium G200 AGP + 102b ca60 Millennium G250 LE AGP + 102b ca6c Millennium G250 AGP + 102b dbbc Millennium G200 AGP + 102b dbc2 Millennium G200 MMS (Dual G200) + 102b dbc3 G200 Multi-Monitor + 102b dbc8 Millennium G200 MMS (Dual G200) + 102b dbd2 G200 Multi-Monitor + 102b dbd3 G200 Multi-Monitor + 102b dbd4 G200 Multi-Monitor + 102b dbd5 G200 Multi-Monitor + 102b dbd8 G200 Multi-Monitor + 102b dbd9 G200 Multi-Monitor + 102b dbe2 Millennium G200 MMS (Quad G200) + 102b dbe3 G200 Multi-Monitor + 102b dbe8 Millennium G200 MMS (Quad G200) + 102b dbf2 G200 Multi-Monitor + 102b dbf3 G200 Multi-Monitor + 102b dbf4 G200 Multi-Monitor + 102b dbf5 G200 Multi-Monitor + 102b dbf8 G200 Multi-Monitor + 102b dbf9 G200 Multi-Monitor + 102b f806 Mystique G200 Video AGP + 102b ff00 MGA-G200 AGP + 102b ff02 Mystique G200 AGP + 102b ff03 Millennium G200A AGP + 102b ff04 Marvel G200 AGP + 110a 0032 MGA-G200 AGP + 0522 MGA G200e [Pilot] ServerEngines (SEP1) + 103c 31fa ProLiant DL140 G3 + 0525 MGA G400/G450 + 0e11 b16f MGA-G400 AGP + 102b 0328 Millennium G400 16Mb SDRAM + 102b 0338 Millennium G400 16Mb SDRAM + 102b 0378 Millennium G400 32Mb SDRAM + 102b 0541 Millennium G450 Dual Head + 102b 0542 Millennium G450 Dual Head LX + 102b 0543 Millennium G450 Single Head LX + 102b 0641 Millennium G450 32Mb SDRAM Dual Head + 102b 0642 Millennium G450 32Mb SDRAM Dual Head LX + 102b 0643 Millennium G450 32Mb SDRAM Single Head LX + 102b 07c0 Millennium G450 Dual Head LE + 102b 07c1 Millennium G450 SDR Dual Head LE + 102b 0d41 Millennium G450 Dual Head PCI + 102b 0d42 Millennium G450 Dual Head LX PCI + 102b 0d43 Millennium G450 32Mb Dual Head PCI + 102b 0e00 Marvel G450 eTV + 102b 0e01 Marvel G450 eTV + 102b 0e02 Marvel G450 eTV + 102b 0e03 Marvel G450 eTV + 102b 0f80 Millennium G450 Low Profile + 102b 0f81 Millennium G450 Low Profile + 102b 0f82 Millennium G450 Low Profile DVI + 102b 0f83 Millennium G450 Low Profile DVI + 102b 19d8 Millennium G400 16Mb SGRAM + 102b 19f8 Millennium G400 32Mb SGRAM + 102b 2159 Millennium G400 Dual Head 16Mb + 102b 2179 Millennium G400 MAX/Dual Head 32Mb + 102b 217d Millennium G400 Dual Head Max + 102b 23c0 Millennium G450 + 102b 23c1 Millennium G450 + 102b 23c2 Millennium G450 DVI + 102b 23c3 Millennium G450 DVI + 102b 2f58 Millennium G400 + 102b 2f78 Millennium G400 + 102b 3693 Marvel G400 AGP + 102b 5dd0 4Sight II + 102b 5f50 4Sight II + 102b 5f51 4Sight II + 102b 5f52 4Sight II + 102b 9010 Millennium G400 Dual Head + 1458 0400 GA-G400 + 1705 0001 Millennium G450 32MB SGRAM + 1705 0002 Millennium G450 16MB SGRAM + 1705 0003 Millennium G450 32MB + 1705 0004 Millennium G450 16MB + 0527 Parhelia + 102b 0840 Parhelia 128Mb + 102b 0850 Parhelia 256MB + 102b 0870 MED2mp-DVI + 102b 0880 P-256 Edge Overlap Controller + 0528 Parhelia + 102b 1020 Parhelia 128MB + 102b 1030 Parhelia 256 MB Dual DVI + 102b 1040 MED2mp-DVI + 102b 1050 Sono S20 + 102b 1060 PJ-30L + 102b 1070 PJ-40L + 102b 1421 MED5mp + 102b 1431 MED3mp-DVI + 102b 1451 MED5mp-DVI + 102b 1491 MED2mp-DVI + 102b 14b1 MED3mp-DVI + 102b 14c1 MED5mp-DVI + 102b 14e1 Parhelia PCI 256MB + 102b 14f1 Parhelia Precision SGT + 102b 1501 ATC-4MP + 102b 1511 ATC-4MP + 102b 1521 TheatreVUE T30 + 102b 1531 TheatreVUE T20 + 102b 1541 MED2mp-DVI + 102b 1551 MED3mp-DVI + 102b 1561 MED5mp-DVI + 102b 1571 Parhelia DL256 PCI + 102b 1591 Parhelia Precision SDT + 102b 15a1 MED4mp-DVI + 102b 2011 Parhelia HR256 + 102b 2021 QID Pro + 102b 2061 PJ-40LP + 102b 2081 EWS Quad + 102b 2411 PPX-OUT8 + 102b 2421 VPX-OUT8 + 102b 2441 PPX-OUT4 + 102b 2451 VPX-OUT4 + 102b 2491 LPX-OUT4 + 0530 MGA G200EV + 0532 MGA G200eW WPCM450 + 1028 0235 PowerEdge R710 MGA G200eW WPCM450 + 1028 0236 PowerEdge R610 MGA G200eW WPCM450 + 1028 0237 PowerEdge T610 MGA G200eW WPCM450 + 1028 0287 PowerEdge M610 MGA G200eW WPCM450 + 1028 028c PowerEdge R410 MGA G200eW WPCM450 + 1028 028d PowerEdge T410 MGA G200eW WPCM450 + 1028 029c PowerEdge M710 MGA G200eW WPCM450 + 1028 02a4 PowerEdge T310 MGA G200eW WPCM450 + 15d9 0605 X8SIL + 15d9 0624 X9SCM-F Motherboard + 15d9 066b X9SRL-F + 15d9 a811 H8DGU + 0533 MGA G200EH + 103c 3381 iLO4 + 0534 G200eR2 + 1028 04f7 PowerEdge R320 server + 0536 Integrated Matrox G200eW3 Graphics Controller + 0538 MGA G200eH3 + 1590 00e4 iLO5 VGA + 0540 M91XX + 102b 2080 M9140 LP PCIe x16 + 102b 20c0 Xenia + 102b 20c1 Xenia Pro + 102b 2100 M9120 PCIe x16 + 102b 2140 M9125 PCIe x16 + 102b 2180 M9120 Plus LP PCIe x16 + 102b 21c0 M9120 Plus LP PCIe x1 + 102b 2200 VDA1164 Output Board + 102b 2240 M9148 LP PCIe x16 + 102b 2241 M9138 LP PCIe x16 + 102b 2280 M9188 ATX PCIe x16 + 102b 22c0 M9128 LP PCIe x16 + 0550 SV2 + 102b 00c0 MURA-IPX-I4EF + 102b 00c1 MURA-IPX-I4DF + 102b 00c3 MURA-IPX-I4DHF + 102b 00c5 MURA-IPX-I4EHF + 0d10 MGA Ultima/Impression + 1000 MGA G100 [Productiva] + 102b ff01 Productiva G100 + 102b ff05 Productiva G100 Multi-Monitor + 1001 MGA G100 [Productiva] AGP + 102b 1001 MGA-G100 AGP + 102b ff00 MGA-G100 AGP + 102b ff01 MGA-G100 Productiva AGP + 102b ff03 Millennium G100 AGP + 102b ff04 MGA-G100 AGP + 102b ff05 MGA-G100 Productiva AGP Multi-Monitor + 110a 001e MGA-G100 AGP + 2007 MGA Mistral + 2527 Millennium G550 + 102b 0f42 Matrox G550 Low Profile PCI + 102b 0f83 Millennium G550 + 102b 0f84 Millennium G550 Dual Head DDR 32Mb + 102b 1e41 Millennium G550 + 102b 22c0 G550 PCIe + 102b 2300 Millennium G550 LP PCIE + 2537 Millennium P650/P750 + 102b 1820 Millennium P750 64MB + 102b 1830 Millennium P650 64MB + 102b 1850 RAD2mp + 102b 1860 RAD3mp + 102b 1880 Sono S10 + 102b 1c10 QID 128MB + 102b 2811 Millennium P650 Low-profile PCI 64MB + 102b 2821 Millennium P650 Low-profile PCI + 102b 2841 RAD PCI + 102b 2851 Spectrum PCI + 102b 2871 EpicA TC2 + 102b 2c11 QID Low-profile PCI + 102b 2c21 QID LP PCI LW + 102b 2c31 QID LP PCI + 102b 2c41 EpicA TC4 + 102b 3001 Extio F1400 + 102b 3011 Extio F1220 + 102b 3041 RG-200DL + 102b 3051 RG-400SL + 102b 3061 Extio F1420 + 102b 3081 Extio F1240 + 2538 Millennium P650 PCIe + 102b 0847 RAD PCIe + 102b 08c7 Millennium P650 PCIe 128MB + 102b 0907 Millennium P650 PCIe 64MB + 102b 0947 Parhelia APVe + 102b 0987 ATC PCIe 4MP + 102b 1047 Millennium P650 LP PCIe 128MB + 102b 1087 Millennium P650 LP PCIe 64MB + 102b 1801 Millennium P650 PCIe x1 + 102b 2538 Parhelia APVe + 102b 3007 QID Low-profile PCIe + 102b 3087 Aurora VX3mp + 102b 30c7 QID LP PCIe + 2539 Millennium P690 + 102b 0040 Millennium P690 PCIe x16 + 102b 0042 ONYX + 102b 0043 SPECTRA + 102b 0080 Millennium P690 Plus LP PCIe x16 + 102b 0081 Millennium P690 LP PCIe x16 + 102b 0082 RAD LPX PCIe x16 + 102b 00c0 Millennium P690 Plus LP PCI + 102b 00c2 Millennium P690 LP PCI + 102b 00c3 RAD LPX PCI + 102b 0101 Millennium P690 PCI + 102b 0140 Millennium P690 LP PCIe x1 + 102b 0180 Display Wall IP Decode 128 MB + 4164 Morphis QxT frame grabber + 43b4 Morphis Qxt encoding engine + 4510 Morphis COM port + 4536 VIA Framegrabber + 4686 Concord GX (customized Intel 82541) + 475b Solios eCL/XCL-B frame grabber + 475d Vio frame grabber family + 102b 4b90 Vio Duo frame grabber (single channel) + 102b 4b91 Vio Duo frame grabber + 102b 4b92 Vio Analog frame grabber + 102b 4b93 Vio SDI Frame Grabber + 102b 4b94 Vio DVI-A frame grabber + 475f Solios (single-Full) CL frame grabber + 102b 475f Solios eCL/XCL-F frame grabber + 102b 4d5f Solios eV-CL (single-Full) frame grabber + 102b 4e5f Solios eM-CL (single-Full) frame grabber + 47a1 Solios eA/XA frame grabber + 102b 4be0 Solios eA/XA (single) frame grabber + 102b 4be1 Solios eA/XA (dual) frame grabber + 102b 4be2 Solios eA/XA (quad) frame grabber + 47a2 Solios COM port + 47c1 Solios (dual-Base/single-Medium) CL frame grabber + 102b 0000 Solios frame grabber + 102b 4b80 Solios eCL/XCL (single-Medium) frame grabber + 102b 4b81 Solios eCL/XCL (dual-Base) frame grabber + 102b 4d80 Solios eV-CL (single-Medium) frame grabber + 102b 4d81 Solios eV-CL (dual-Base) frame grabber + 102b 4e80 Solios eM-CL (single-Medium) frame grabber + 102b 4e81 Solios eM-CL (dual-Base) frame grabber + 47c2 Solios COM port + 4949 Radient frame grabber family + 102b 0010 Radient eCL (Single-full) frame grabber + 102b 0011 Radient eCLV (Single-full) frame grabber + 102b 0020 Radient eCL (Dual-base) frame grabber + 102b 0030 Radient eCL (Dual-full) frame grabber + 102b 0040 Radient eCL (Quad-base) frame grabber + 102b 0050 Radient eCL (Golden) frame grabber + 102b 1010 Radient eV-CXP (quad CXP-6) frame grabber + 102b 1015 Radient eV-CXP (dual CXP-6) frame grabber + 102b 1020 Radient eV-CXP (quad CXP-3) frame grabber + 102b 1050 Radient eV-CXP (Golden) frame grabber + 4cdc Morphis JPEG2000 accelerator + 4f54 Morphis (e)Quad frame grabber + 4fc5 Morphis (e)Dual frame grabber + 5e10 Morphis aux I/O + 6573 Shark 10/100 Multiport SwitchNIC +102c Chips and Technologies + 00b8 F64310 + 00c0 F69000 HiQVideo + 102c 00c0 F69000 HiQVideo + 4c53 1000 CC7/CR7/CP7/VC7/VP7/VR7 mainboard + 4c53 1010 CP5/CR6 mainboard + 4c53 1020 VR6 mainboard + 4c53 1030 PC5 mainboard + 4c53 1050 CT7 mainboard + 4c53 1051 CE7 mainboard + 00d0 F65545 + 00d8 F65545 + 00dc F65548 + 00e0 F65550 + 00e4 F65554 + 00e5 F65555 HiQVPro + 0e11 b049 Armada 1700 Laptop Display Controller + 1179 0001 Satellite Pro/Satellite + 00f0 F68554 + 00f4 F68554 HiQVision + 00f5 F68555 + 0c30 F69030 + 4c53 1000 CC7/CR7/CP7/VC7/VP7/VR7 mainboard + 4c53 1050 CT7 mainboard + 4c53 1051 CE7 mainboard + 4c53 1080 CT8 mainboard +102d Wyse Technology Inc. + 50dc 3328 Audio +102e Olivetti Advanced Technology +102f Toshiba America + 0009 r4x00 + 000a TX3927 MIPS RISC PCI Controller + 0020 ATM Meteor 155 + 102f 00f8 ATM Meteor 155 + 0030 TC35815CF PCI 10/100 Mbit Ethernet Controller + 0031 TC35815CF PCI 10/100 Mbit Ethernet Controller with WOL + 0032 TC35815CF PCI 10/100 Mbit Ethernet Controller on TX4939 + 0105 TC86C001 [goku-s] IDE + 0106 TC86C001 [goku-s] USB 1.1 Host + 0107 TC86C001 [goku-s] USB Device Controller + 0108 TC86C001 [goku-s] I2C/SIO/GPIO Controller + 0180 TX4927/38 MIPS RISC PCI Controller + 0181 TX4925 MIPS RISC PCI Controller + 0182 TX4937 MIPS RISC PCI Controller + 01b4 Celleb platform IDE interface + 01b5 SCC USB 2.0 EHCI controller + 01b6 SCC USB 1.1 OHCI controller +1030 TMC Research +1031 Miro Computer Products AG + 5601 DC20 ASIC + 5607 Video I/O & motion JPEG compressor + 5631 Media 3D + 6057 MiroVideo DC10/DC30+ +1032 Compaq +1033 NEC Corporation + 0000 Vr4181A USB Host or Function Control Unit + 0001 PCI to 486-like bus Bridge + 0002 PCI to VL98 Bridge + 0003 ATM Controller + 0004 R4000 PCI Bridge + 0005 PCI to 486-like bus Bridge + 0006 PC-9800 Graphic Accelerator + 0007 PCI to UX-Bus Bridge + 0008 PC-9800 Graphic Accelerator + 0009 PCI to PC9800 Core-Graph Bridge + 0016 PCI to VL Bridge + 001a [Nile II] + 0021 Vrc4373 [Nile I] + 0029 PowerVR PCX1 + 002a PowerVR 3D + 002c Star Alpha 2 + 002d PCI to C-bus Bridge + 0035 OHCI USB Controller + 1033 0035 USB Controller + 103c 1293 USB add-in card + 103c 1294 USB 2.0 add-in card + 1179 0001 USB + 1186 0035 DUB-C2 USB 2.0 2-port 32-bit cardbus controller + 12ee 7000 Root Hub + 14c2 0105 PTI-205N USB 2.0 Host Controller + 1799 0001 Root Hub + 1931 000a GlobeTrotter Fusion Quad Lite (PPP data) + 1931 000b GlobeTrotter Fusion Quad Lite (GSM data) + 807d 0035 PCI-USB2 (OHCI subsystem) + 8086 4d44 D850EMV2 motherboard + 003b PCI to C-bus Bridge + 003e NAPCCARD Cardbus Controller + 0046 PowerVR PCX2 [midas] + 005a Vrc5074 [Nile 4] + 0063 uPD72862 [Firewarden] IEEE1394 OHCI 1.0 Link Controller + 0067 PowerVR Neon 250 Chipset + 1010 0020 PowerVR Neon 250 AGP 32Mb + 1010 0080 PowerVR Neon 250 AGP 16Mb + 1010 0088 PowerVR Neon 250 16Mb + 1010 0090 PowerVR Neon 250 AGP 16Mb + 1010 0098 PowerVR Neon 250 16Mb + 1010 00a0 PowerVR Neon 250 AGP 32Mb + 1010 00a8 PowerVR Neon 250 32Mb + 1010 0120 PowerVR Neon 250 AGP 32Mb + 0072 uPD72874 IEEE1394 OHCI 1.1 3-port PHY-Link Ctrlr + 0074 56k Voice Modem + 1033 8014 RCV56ACF 56k Voice Modem + 009b Vrc5476 + 00a5 VRC4173 + 00a6 VRC5477 AC97 + 00cd uPD72870 [Firewarden] IEEE1394a OHCI 1.0 Link/3-port PHY Controller + 12ee 8011 Root hub + 00ce uPD72871 [Firewarden] IEEE1394a OHCI 1.0 Link/1-port PHY Controller + 00df Vr4131 + 00e0 uPD72010x USB 2.0 Controller + 1186 f100 DUB-C2 USB 2.0 2-port 32-bit cardbus controller + 12ee 7001 Root hub + 14c2 0205 PTI-205N USB 2.0 Host Controller + 1799 0002 Root Hub + 807d 1043 PCI-USB2 (EHCI subsystem) + 8086 4d44 D850EMV2 motherboard + 00e7 uPD72873 [Firewarden] IEEE1394a OHCI 1.1 Link/2-port PHY Controller + 00f2 uPD72874 [Firewarden] IEEE1394a OHCI 1.1 Link/3-port PHY Controller + 00f3 uPD6113x Multimedia Decoder/Processor [EMMA2] + 010c VR7701 + 0125 uPD720400 PCI Express - PCI/PCI-X Bridge + 013a Dual Tuner/MPEG Encoder + 0194 uPD720200 USB 3.0 Host Controller + 1028 04a3 Precision M4600 + 1028 04b2 Vostro 3350 + 1028 04da Vostro 3750 + 1043 8413 P8P67 Deluxe Motherboard + 104d 907a Vaio VPCF1 + 1af4 1100 QEMU Virtual Machine + 1b96 0001 USB 3.0 PCIe Card + 01e7 uPD72873 [Firewarden] IEEE1394a OHCI 1.1 Link/2-port PHY Controller + 01f2 uPD72874 [Firewarden] IEEE1394a OHCI 1.1 Link/3-port PHY Controller +1034 Framatome Connectors USA Inc. +1035 Comp. & Comm. Research Lab +1036 Future Domain Corp. + 0000 TMC-18C30 [36C70] +1037 Hitachi Micro Systems +1038 AMP, Inc +1039 Silicon Integrated Systems [SiS] + 0001 AGP Port (virtual PCI-to-PCI bridge) + 0002 AGP Port (virtual PCI-to-PCI bridge) + 0003 AGP Port (virtual PCI-to-PCI bridge) + 0004 PCI-to-PCI bridge + 1039 0000 PCIe x16 port + 0006 85C501/2/3 + 0008 SiS85C503/5513 (LPC Bridge) + 0009 5595 Power Management Controller + 000a PCI-to-PCI bridge + 1039 0000 PCIe x1 port + 0016 SiS961/2/3 SMBus controller + 0018 SiS85C503/5513 (LPC Bridge) + 0163 163 802.11b/g Wireless LAN Adapter + 0180 RAID bus controller 180 SATA/PATA [SiS] + 0181 SATA + 0182 182 SATA/RAID Controller + 1734 1095 D2030-A1 + 0186 AHCI Controller (0106) + 0190 190 Ethernet Adapter + 0191 191 Gigabit Ethernet Adapter + 1043 8139 P5SD2-FM/S mainboard + 0200 5597/5598/6326 VGA + 1039 0000 SiS5597 SVGA (Shared RAM) + 0204 82C204 + 0205 SG86C205 + 0300 300/305 PCI/AGP VGA Display Adapter + 107d 2720 Leadtek WinFast VR300 + 0310 315H PCI/AGP VGA Display Adapter + 0315 315 PCI/AGP VGA Display Adapter + 0325 315PRO PCI/AGP VGA Display Adapter + 0330 330 [Xabre] PCI/AGP VGA Display Adapter + 0406 85C501/2 + 0496 SiS85C496 PCI & CPU Memory Controller (PCM) + 0530 530 Host + 0540 540 Host + 0550 550 Host + 0597 5513C + 0601 85C601 + 0620 620 Host + 0630 630 Host + 0633 633 Host + 0635 635 Host + 0645 SiS645 Host & Memory & AGP Controller + 0646 SiS645DX Host & Memory & AGP Controller + 0648 645xx + 0649 SiS649 Host + 0650 650/M650 Host + 0651 651 Host + 0655 655 Host + 0660 660 Host + 0661 661FX/M661FX/M661MX Host + 0662 662 Host + 0671 671MX + 0730 730 Host + 0733 733 Host + 0735 735 Host + 0740 740 Host + 0741 741/741GX/M741 Host + 1849 0741 K7S41/K7S41GX motherboard + 0745 745 Host + 0746 746 Host + 0755 755 Host + 0760 760/M760 Host + 0761 761/M761 Host + 1734 1099 D2030-A1 Motherboard + 0900 SiS900 PCI Fast Ethernet + 1019 0a14 K7S5A motherboard + 1039 0900 SiS900 10/100 Ethernet Adapter onboard + 1043 8035 CUSI-FX motherboard + 1043 80a7 Motherboard P4S800D-X + 1462 0900 MS-6701 motherboard + 0961 SiS961 [MuTIOL Media IO] + 0962 SiS962 [MuTIOL Media IO] LPC Controller + 0963 SiS963 [MuTIOL Media IO] LPC Controller + 0964 SiS964 [MuTIOL Media IO] LPC Controller + 0965 SiS965 [MuTIOL Media IO] + 0966 SiS966 [MuTIOL Media IO] + 0968 SiS968 [MuTIOL Media IO] + 1180 SATA Controller / IDE mode + 1182 SATA Controller / RAID mode + 1039 0180 SiS 966 4-port SATA controller + 1183 SATA Controller / IDE mode + 1039 0180 SiS 966 4-port SATA controller + 1184 AHCI Controller / RAID mode + 1185 AHCI IDE Controller (0106) + 3602 83C602 + 5107 5107 + 5300 SiS540 PCI Display Adapter + 5315 550 PCI/AGP VGA Display Adapter + 5401 486 PCI Chipset + 5511 5511/5512 + 5513 5513 IDE Controller + 1019 0970 P6STP-FL motherboard + 1039 5513 SiS5513 EIDE Controller (A,B step) + 1043 8035 CUSI-FX motherboard + 1462 7010 MS-6701 motherboard + 1631 5513 GA-8SIML Rev1.0 Motherboard + 1734 1095 D2030-A1 Motherboard + 5517 5517 + 5571 5571 + 5581 5581 Pentium Chipset + 5582 5582 + 5591 5591/5592 Host + 5596 5596 Pentium Chipset + 5597 5597 [SiS5582] + 5600 5600 Host + 6204 Video decoder & MPEG interface + 6205 VGA Controller + 6236 6236 3D-AGP + 6300 630/730 PCI/AGP VGA Display Adapter + 1019 0970 P6STP-FL motherboard + 1043 8035 CUSI-FX motherboard + 104d 80e2 VAIO PCV-J200 + 6306 530/620 PCI/AGP VGA Display Adapter + 6325 65x/M650/740 PCI/AGP VGA Display Adapter + 1039 6325 SiS 651 onboard [Asus P4SC-EA] + 1631 1004 SiS 651C onboard [Gigabyte GA-8SIML Rev1.0] + 6326 86C326 5598/6326 + 1039 6326 SiS6326 GUI Accelerator + 1092 0a50 SpeedStar A50 + 1092 0a70 SpeedStar A70 + 1092 4910 SpeedStar A70 + 1092 4920 SpeedStar A70 + 10b0 6326 S6110-B (AGP) + 1569 6326 SiS6326 GUI Accelerator + 6330 661/741/760 PCI/AGP or 662/761Gx PCIE VGA Display Adapter + 1039 6330 [M]661xX/[M]741[GX]/[M]760 PCI/AGP VGA Adapter + 1043 8113 SiS Real 256E (ASUS P5S800-VM motherboard) + 1458 d000 SiS661FX GUI 2D/3D Accelerator + 1734 1099 D2030-A1 + 6350 770/670 PCIE VGA Display Adapter + 6351 771/671 PCIE VGA Display Adapter + 7001 USB 1.1 Controller + 1019 0a14 K7S5A motherboard + 1039 7000 Onboard USB Controller + 1462 5470 ECS K7SOM+ motherboard + 1462 7010 MS-6701 motherboard + 1734 1095 D2030-A1 Motherboard + 7002 USB 2.0 Controller + 1462 5470 K7SOM+ 5.2C Motherboard + 1462 7010 MS-6701 motherboard + 1509 7002 Onboard USB Controller + 1734 1095 D2030-A1 + 7007 FireWire Controller + 1462 701d MS-6701 + 7012 SiS7012 AC'97 Sound Controller + 1019 0f05 A928 (i-Buddie) + 1039 7012 SiS 7012 onboard [Asus P4SC-EA] AC'97 Sound Controller + 1043 818f A8S-X Motherboard + 13f6 0300 CMI9739(A) on ECS K7S series motherboard + 1462 5850 MSI 648 Max (MS-6585) + 1462 7010 MS-6701 motherboard + 15bd 1001 DFI 661FX motherboard + 1734 109f D2030-A1 Motherboard + 1849 7012 K7S41GX motherboard +# There are may be different modem codecs here (Intel537 compatible and incompatible) + 7013 AC'97 Modem Controller + 7016 SiS7016 PCI Fast Ethernet Adapter + 1039 7016 SiS7016 10/100 Ethernet Adapter + 7018 SiS PCI Audio Accelerator + 1014 01b6 SiS PCI Audio Accelerator + 1014 01b7 SiS PCI Audio Accelerator + 1019 7018 SiS PCI Audio Accelerator + 1025 000e SiS PCI Audio Accelerator + 1025 0018 SiS PCI Audio Accelerator + 1039 7018 SiS PCI Audio Accelerator + 1043 1453 SiS PCI Audio Accelerator + 1043 800b SiS PCI Audio Accelerator + 104d 80e2 VAIO PCV-J200 + 1054 7018 SiS PCI Audio Accelerator + 107d 5330 SiS PCI Audio Accelerator + 107d 5350 SiS PCI Audio Accelerator + 1170 3209 SiS PCI Audio Accelerator + 1462 400a SiS PCI Audio Accelerator + 14a4 2089 SiS PCI Audio Accelerator + 14cd 2194 SiS PCI Audio Accelerator + 14ff 1100 SiS PCI Audio Accelerator + 152d 8808 SiS PCI Audio Accelerator + 1558 1103 SiS PCI Audio Accelerator + 1558 2200 SiS PCI Audio Accelerator + 1563 7018 SiS PCI Audio Accelerator + 15c5 0111 SiS PCI Audio Accelerator + 270f a171 SiS PCI Audio Accelerator + a0a0 0022 SiS PCI Audio Accelerator + 7019 SiS7019 Audio Accelerator + 7502 Azalia Audio Controller + 1043 81a1 P5SD2-FM/S mainboard +103a Seiko Epson Corporation +103b Tatung Corp. Of America +103c Hewlett-Packard Company + 1005 A4977A Visualize EG + 1008 Visualize FX + 1020 548XX Scope Interface + 1028 Tach TL Fibre Channel Host Adapter + 1029 Tach XL2 Fibre Channel Host Adapter + 107e 000f Interphase 5560 Fibre Channel Adapter + 9004 9210 1Gb/2Gb Family Fibre Channel Controller + 9004 9211 1Gb/2Gb Family Fibre Channel Controller + 102a Tach TS Fibre Channel Host Adapter + 107e 000e Interphase 5540/5541 Fibre Channel Adapter + 9004 9110 1Gb/2Gb Family Fibre Channel Controller + 9004 9111 1Gb/2Gb Family Fibre Channel Controller + 1030 J2585A DeskDirect 10/100VG NIC + 1031 J2585B HP 10/100VG PCI LAN Adapter + 103c 1040 J2973A DeskDirect 10BaseT NIC + 103c 1041 J2585B DeskDirect 10/100VG NIC + 103c 1042 J2970A DeskDirect 10BaseT/2 NIC + 1040 J2973A DeskDirect 10BaseT NIC + 1041 J2585B DeskDirect 10/100 NIC + 1042 J2970A DeskDirect 10BaseT/2 NIC + 1048 Diva Serial [GSP] Multiport UART + 103c 1049 Tosca Console + 103c 104a Tosca Secondary + 103c 104b Maestro SP2 + 103c 1223 Superdome Console + 103c 1226 Keystone SP2 + 103c 1227 Powerbar SP2 + 103c 1282 Everest SP2 + 103c 1301 Diva RMP3 + 1054 PCI Local Bus Adapter + 1064 79C970 PCnet Ethernet Controller + 108b Visualize FXe + 10c1 NetServer Smart IRQ Router + 10ed TopTools Remote Control + 10f0 rio System Bus Adapter + 10f1 rio I/O Controller + 1219 NetServer PCI Hot-Plug Controller + 121a NetServer SMIC Controller + 121b NetServer Legacy COM Port Decoder + 121c NetServer PCI COM Port Decoder + 1229 zx1 System Bus Adapter + 122a zx1 I/O Controller + 122e PCI-X Local Bus Adapter + 127b sx1000 System Bus Adapter + 127c sx1000 I/O Controller + 128d Diva [GSP] Management Board + 1290 Auxiliary Diva Serial Port + 103c 1291 Diva SP2 + 1291 Auxiliary Diva Serial Port + 12b4 zx1 QuickSilver AGP8x Local Bus Adapter + 12eb sx2000 System Bus Adapter + 12ec sx2000 I/O Controller + 12ee PCI-X 2.0 Local Bus Adapter + 1302 RMP-3 Shared Memory Driver + 1303 RMP-3 (Remote Management Processor) + 22f6 iLO5 Virtual USB Controller + 1590 00e4 iLO5 Standard Virtual USB Controller + 2910 E2910A PCIBus Exerciser + 2925 E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer + 3206 Adaptec Embedded Serial ATA HostRAID + 3220 Smart Array P600 + 103c 3225 3 Gb/s SAS RAID + 3230 Smart Array Controller + 103c 3223 Smart Array P800 + 103c 3234 P400 SAS Controller + 103c 3235 P400i SAS Controller + 103c 3237 E500 SAS Controller + 103c 323d P700m SAS Controller + 3238 Smart Array E200i (SAS Controller) + 103c 3211 Smart Array E200i + 103c 3212 Smart Array E200 + 3239 Smart Array Gen9 Controllers + 103c 21bd P244br + 103c 21be P741m + 103c 21bf H240ar + 103c 21c0 P440ar + 103c 21c1 P840ar + 103c 21c2 P440 + 103c 21c3 P441 + 103c 21c4 Smart Array + 103c 21c5 P841 + 103c 21c6 H244br + 103c 21c7 H240 + 103c 21c8 H241 + 103c 21c9 Smart Array + 103c 21ca P246br + 103c 21cb P840 + 103c 21cc Smart Array + 103c 21cd P240nr + 103c 21ce H240nr + 323a Smart Array G6 controllers + 103c 3241 Smart Array P212 + 103c 3243 Smart Array P410 + 103c 3245 Smart Array P410i + 103c 3247 Smart Array P411 + 103c 3249 Smart Array P812 + 103c 324a Smart Array 712m (Mezzanine RAID controller) + 103c 324b Smart Array P711m (Mezzanine RAID controller) + 323b Smart Array Gen8 Controllers + 103c 3350 P222 + 103c 3351 P420 + 103c 3352 P421 + 103c 3354 P420i + 103c 3355 P220i + 323c Smart Array Gen8+ Controllers + 103c 1920 P430i + 103c 1921 P830i + 103c 1922 P430 + 103c 1923 P431 + 103c 1924 P830 + 103c 1925 Smart Array + 103c 1926 P731m + 103c 1928 P230i + 3300 Integrated Lights-Out Standard Virtual USB Controller + 103c 3304 iLO2 + 103c 3305 iLO2 + 103c 3309 iLO2 GXL/iLO3 GXE + 103c 330e iLO3 + 103c 3381 iLO4 + 3301 Integrated Lights-Out Standard Serial Port + 103c 3304 iLO2 + 103c 3305 iLO2 + 103c 330e iLO3 + 103c 3381 iLO4 +# Virtual serial port which is presented on a Java applet + 3302 Integrated Lights-Out Standard KCS Interface + 103c 3304 iLO2 + 103c 3305 iLO2 + 103c 330e iLO3 + 103c 3381 iLO4 + 3305 Integrated Lights-Out (iLO2) Controller + 3306 Integrated Lights-Out Standard Slave Instrumentation & System Support + 103c 330e iLO3 + 103c 3381 iLO4 + 1590 00e4 iLO5 + 3307 Integrated Lights-Out Standard Management Processor Support and Messaging +# HP DL380 G6 + 103c 3309 iLO 2 + 103c 330e iLO3 + 103c 3381 iLO4 + 3308 Integrated Lights-Out Standard MS Watchdog Timer + 103c 330e iLO3 + 103c 3381 iLO4 + 4030 zx2 System Bus Adapter + 4031 zx2 I/O Controller + 4037 PCIe Local Bus Adapter + 9602 AMD RS780/RS880 PCI to PCI bridge (int gfx) + 103c 1609 ProLiant MicroServer N36L +103e Solliday Engineering +103f Synopsys/Logic Modeling Group +1040 Accelgraphics Inc. +1041 Computrend +1042 Micron + 1000 PC Tech RZ1000 + 1001 PC Tech RZ1001 + 3000 Samurai_0 + 3010 Samurai_1 + 3020 Samurai_IDE +1043 ASUSTeK Computer Inc. + 0675 ISDNLink P-IN100-ST-D + 0675 1704 ISDN Adapter (PCI Bus, D, C) + 0675 1707 ISDN Adapter (PCI Bus, DV, W) + 10cf 105e ISDN Adapter (PCI Bus, DV, W) +# Should be 1022:9602 + 9602 AMD RS780/RS880 PCI to PCI bridge (int gfx) + 1043 83a2 M4A785TD Motherboard +1044 Adaptec (formerly DPT) + 1012 Domino RAID Engine + a400 SmartCache/Raid I-IV Controller + a500 PCI Bridge + a501 SmartRAID V Controller + 1044 c001 PM1554U2 Ultra2 Single Channel + 1044 c002 PM1654U2 Ultra2 Single Channel + 1044 c003 PM1564U3 Ultra3 Single Channel + 1044 c004 PM1564U3 Ultra3 Dual Channel + 1044 c005 PM1554U2 Ultra2 Single Channel (NON ACPI) + 1044 c00a PM2554U2 Ultra2 Single Channel + 1044 c00b PM2654U2 Ultra2 Single Channel + 1044 c00c PM2664U3 Ultra3 Single Channel + 1044 c00d PM2664U3 Ultra3 Dual Channel + 1044 c00e PM2554U2 Ultra2 Single Channel (NON ACPI) + 1044 c00f PM2654U2 Ultra2 Single Channel (NON ACPI) + 1044 c014 PM3754U2 Ultra2 Single Channel (NON ACPI) + 1044 c015 PM3755U2B Ultra2 Single Channel (NON ACPI) + 1044 c016 PM3755F Fibre Channel (NON ACPI) + 1044 c01e PM3757U2 Ultra2 Single Channel + 1044 c01f PM3757U2 Ultra2 Dual Channel + 1044 c020 PM3767U3 Ultra3 Dual Channel + 1044 c021 PM3767U3 Ultra3 Quad Channel + 1044 c028 PM2865U3 Ultra3 Single Channel + 1044 c029 PM2865U3 Ultra3 Dual Channel + 1044 c02a PM2865F Fibre Channel + 1044 c03c 2000S Ultra3 Single Channel + 1044 c03d 2000S Ultra3 Dual Channel + 1044 c03e 2000F Fibre Channel + 1044 c046 3000S Ultra3 Single Channel + 1044 c047 3000S Ultra3 Dual Channel + 1044 c048 3000F Fibre Channel + 1044 c050 5000S Ultra3 Single Channel + 1044 c051 5000S Ultra3 Dual Channel + 1044 c052 5000F Fibre Channel + 1044 c05a 2400A UDMA Four Channel + 1044 c05b 2400A UDMA Four Channel DAC + 1044 c064 3010S Ultra3 Dual Channel + 1044 c065 3410S Ultra160 Four Channel + 1044 c066 3010S Fibre Channel + a511 SmartRAID V Controller + 1044 c032 ASR-2005S I2O Zero Channel + 1044 c035 ASR-2010S I2O Zero Channel + c066 3010S Ultra3 Dual Channel +1045 OPTi Inc. + a0f8 82C750 [Vendetta] USB Controller + c101 92C264 + c178 92C178 + c556 82X556 [Viper] + c557 82C557 [Viper-M] + c558 82C558 [Viper-M ISA+IDE] + c567 82C750 [Vendetta], device 0 + c568 82C750 [Vendetta], device 1 + c569 82C579 [Viper XPress+ Chipset] + c621 82C621 [Viper-M/N+] + c700 82C700 [FireStar] + c701 82C701 [FireStar Plus] + c814 82C814 [Firebridge 1] + c822 82C822 + c824 82C824 + c825 82C825 [Firebridge 2] + c832 82C832 + c861 82C861 OHCI USB Host + c881 82C881 [FireLink] 1394 OHCI Link Controller + c895 82C895 + c935 EV1935 ECTIVA MachOne PCIAudio + d568 82C825 [Firebridge 2] + d721 IDE [FireStar] +1046 IPC Corporation, Ltd. +1047 Genoa Systems Corp +1048 Elsa AG + 0c60 Gladiac MX + 0d22 Quadro4 900XGL [ELSA GLoria4 900XGL] + 1000 QuickStep 1000 + 3000 QuickStep 3000 + 8901 Gloria XL + 1048 0935 GLoria XL (Virge) +1049 Fountain Technologies, Inc. +# nee SGS Thomson Microelectronics +104a STMicroelectronics + 0000 STLS2F Host Bridge + 0008 STG 2000X + 0009 STG 1764X + 0010 STG4000 [3D Prophet Kyro Series] + 104a 4018 ST PowerVR Kyro (64MB AGP TVO) + 1681 0010 PowerVR Kyro II [3D Prophet 4500] + 1681 0028 3D Prophet 4000XT + 1681 c010 3D Prophet 4500 TV-Out + 1681 c069 3D Prophet 4000XT + 0201 STPC Vega Northbridge + 0209 STPC Consumer/Industrial North- and Southbridge + 020a STPC Atlas/ConsumerS/Consumer IIA Northbridge + 020b STPC Consumer II ISA Bridge + 0210 STPC Atlas ISA Bridge + 021a STPC Consumer S Southbridge + 021b STPC Consumer IIA Southbridge + 0220 STPC Industrial PCI to PCCard bridge + 0228 STPC Atlas IDE + 0229 STPC Vega IDE + 0230 STPC Atlas/Vega OHCI USB Controller + 0238 STPC Vega LAN + 0500 ST70137 [Unicorn] ADSL DMT Transceiver + 104a 0500 BeWAN ADSL PCI st + 0564 STPC Client Northbridge + 0981 21x4x DEC-Tulip compatible 10/100 Ethernet + 1746 STG 1764X + 2774 21x4x DEC-Tulip compatible 10/100 Ethernet + 3520 MPEG-II decoder card + 55cc STPC Client Southbridge +104b BusLogic + 0140 BT-946C (old) [multimaster 01] + 1040 BT-946C (BA80C30) [MultiMaster 10] + 8130 Flashpoint LT +104c Texas Instruments + 0500 100 MBit LAN Controller + 0508 TMS380C2X Compressor Interface + 1000 Eagle i/f AS + 104c PCI1510 PC card Cardbus Controller + 3d04 TVP4010 [Permedia] + 3d07 TVP4020 [Permedia 2] + 1011 4d10 Comet + 1040 000f AccelStar II + 1040 0011 AccelStar II + 1048 0a31 WINNER 2000 + 1048 0a32 GLoria Synergy + 1048 0a34 GLoria Synergy + 1048 0a35 GLoria Synergy + 1048 0a36 GLoria Synergy + 1048 0a43 GLoria Synergy + 1048 0a44 GLoria Synergy + 107d 2633 WinFast 3D L2300 + 1092 0126 FIRE GL 1000 PRO + 1092 0127 FIRE GL 1000 PRO + 1092 0136 FIRE GL 1000 PRO + 1092 0141 FIRE GL 1000 PRO + 1092 0146 FIRE GL 1000 PRO + 1092 0148 FIRE GL 1000 PRO + 1092 0149 FIRE GL 1000 PRO + 1092 0152 FIRE GL 1000 PRO + 1092 0154 FIRE GL 1000 PRO + 1092 0155 FIRE GL 1000 PRO + 1092 0156 FIRE GL 1000 PRO + 1092 0157 FIRE GL 1000 PRO + 1097 3d01 Jeronimo Pro + 1102 100f Graphics Blaster Extreme + 3d3d 0100 Reference Permedia 2 3D + 8000 PCILynx/PCILynx2 IEEE 1394 Link Layer Controller + 105e 8003 FireBoard200 + 1443 8003 FireBoard200 + 1443 8005 FireBoard400 + 1443 8006 FireBoard400 + e4bf 1010 CF1-1-SNARE + e4bf 1020 CF1-2-SNARE + e4bf 1040 FireCompact400 + 8009 TSB12LV22 IEEE-1394 Controller + 104d 8032 8032 OHCI i.LINK (IEEE 1394) Controller + 1443 8010 FireBoard400-OHCI + 8017 PCI4410 FireWire Controller + 8019 TSB12LV23 IEEE-1394 Controller + 11bd 000a Studio DV500-1394 + 11bd 000e Studio DV + 1443 8010 FireBoard400-OHCI + e4bf 1010 CF2-1-CYMBAL + 8020 TSB12LV26 IEEE-1394 Controller (Link) + 1028 00d8 Precision 530 + 104d 80e2 VAIO PCV-J200 + 11bd 000f Studio DV500-1394 + 11bd 001c Excalibur 4.1 + 1443 8010 FireBoard400-OHCI + 8021 TSB43AA22 IEEE-1394 Controller (PHY/Link Integrated) + 104d 80df Vaio PCG-FX403 + 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + 8022 TSB43AB22 IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] + 104c 8023 TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link) + 8023 TSB43AB22A IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] + 1028 0168 Precision Workstation 670 Mainboard + 103c 088c NC8000 laptop + 1043 808b K8N4/A8N Series Mainboard + 1043 815b P5W DH Deluxe Motherboard + 1443 8023 FireCard400 + 8086 5044 Desktop Board DP35DP + 8024 TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link) + 107d 6620 Winfast DV2000 FireWire Controller + 1443 8024 FireBoard Blue + 1458 1000 Motherboard + 8025 TSB82AA2 IEEE-1394b Link Layer Controller + 1043 813c P5P series mainboard + 1443 8025 FireBoard800 + 1458 1000 GA-K8N Ultra-9 Mainboard + 1546 8025 FWB-PCI01 + 17fc 8025 GIC3800 + 8026 TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link) + 1025 0035 TravelMate 660 + 1025 003c Aspire 2001WLCi (Compaq CL50 motherboard) + 103c 0025 XE4500 Notebook + 103c 006a NX9500 + 1043 808d A7V333 mainboard. + 8027 PCI4451 IEEE-1394 Controller + 1028 00e5 Latitude C810 + 1028 00e6 PCI4451 IEEE-1394 Controller (Dell Inspiron 8100) + 8029 PCI4510 IEEE-1394 Controller + 1028 0163 Latitude D505 + 1028 0196 Inspiron 5160 + 1071 8160 MIM2900 + 802b PCI7410,7510,7610 OHCI-Lynx Controller + 1028 0139 Latitude D400 + 1028 014e PCI7410,7510,7610 OHCI-Lynx Controller (Latitude D800) + 802e PCI7x20 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller + 1028 018d Inspiron 700m/710m + 8031 PCIxx21/PCIxx11/PCIx515 PC Card Controller + 1025 0064 Extensa 3000 series laptop + 1025 0080 Aspire 5024WLMi + 103c 0934 Compaq nw8240/nx8220 + 103c 0944 Compaq nc6220 Notebook PC + 103c 099c NX6110/NC6120 + 103c 308b MX6125 + 8032 OHCI Compliant IEEE 1394 Host Controller + 1025 0064 Extensa 3000 series laptop + 1025 0080 Aspire 5024WLMi + 103c 0934 Compaq nw8240/nx8220 + 103c 099c NX6110/NC6120 + 103c 308b MX6125 + 8033 PCIxx21/PCIxx11 Flash Media Controller + 1025 0064 Extensa 3000 series laptop + 1025 0080 Aspire 5024WLMi + 103c 0934 Compaq nw8240/nx8220 + 103c 0944 Compaq nc6220 Notebook PC + 103c 099c NX6110/NC6120 + 103c 308b MX6125 + 8034 PCIxx21/PCIxx11 SD Host Controller + 1025 0080 Aspire 5024WLMi + 103c 0934 Compaq nw8240/nx8220 + 103c 0944 Compaq nc6220 Notebook PC + 103c 099c NX6110/NC6120 + 103c 308b MX6125 + 8035 PCIxx21/PCIxx11 Smart Card Controller + 103c 0934 Compaq nw8240/nx8220 + 103c 0944 Compaq nc6220 Notebook PC + 103c 099c NX6110/NC6120 + 8036 PCI6515 Cardbus Controller + 8038 PCI6515 SmartCard Controller + 8039 PCIxx12 Cardbus Controller + 103c 309f Compaq nx9420 Notebook + 103c 30a1 NC2400 + 103c 30a3 Compaq nw8440 + 104d 902d VAIO VGN-NR120E + 803a PCIxx12 OHCI Compliant IEEE 1394 Host Controller + 103c 309f nx9420 + 103c 30a1 NC2400 + 103c 30a3 Compaq nw8440 + 104d 902d VAIO VGN-NR120E + 803b PCIxx12 Flash Media Controller + 103c 309f nx9420 + 103c 30a3 Compaq nw8440 + 104d 8212 VAIO VGN-N21E + 104d 902d VAIO VGN-NR120E + 803c PCIxx12 SDA Standard Compliant SD Host Controller + 103c 309f nx9420 + 103c 30a3 Compaq nw8440 + 803d PCIxx12 GemCore based SmartCard controller + 103c 309f Compaq nx9420 Notebook + 103c 30a1 NC2400 + 103c 30a3 nc8430 + 103c 30aa nc6310 + 8101 TSB43DB42 IEEE-1394a-2000 Controller (PHY/Link) + 8201 PCI1620 Firmware Loading Function + 8204 PCI7410/7510/7610 PCI Firmware Loading Function + 1028 0139 Latitude D400 + 1028 014e Latitude D800 + 8231 XIO2000(A)/XIO2200A PCI Express-to-PCI Bridge + 5678 1234 DC-1394 PCIe + 8232 XIO3130 PCI Express Switch (Upstream) + 8233 XIO3130 PCI Express Switch (Downstream) + 8235 XIO2200A IEEE-1394a-2000 Controller (PHY/Link) + 5678 1234 DC-1394 PCIe + 823e XIO2213A/B/XIO2221 PCI Express to PCI Bridge [Cheetah Express] + 823f XIO2213A/B/XIO2221 IEEE-1394b OHCI Controller [Cheetah Express] + 1546 803c FWB-PCIE1X11B + 8240 XIO2001 PCI Express-to-PCI Bridge + 8241 TUSB73x0 SuperSpeed USB 3.0 xHCI Host Controller + 1014 04b2 S824 (8286-42A) + 8400 ACX 100 22Mbps Wireless Interface + 1186 3b00 DWL-650+ PC Card cardbus 22Mbs Wireless Adapter [AirPlus] + 1186 3b01 DWL-520+ 22Mbps PCI Wireless Adapter + 1395 2201 WL22-PC + 16ab 8501 WL-8305 IEEE802.11b+ Wireless LAN PCI Adapter + 8401 ACX 100 22Mbps Wireless Interface + 8888 Multicore DSP+ARM KeyStone II SOC + 9000 Wireless Interface (of unknown type) + 9065 TMS320DM642 + 9066 ACX 111 54Mbps Wireless Interface + 0308 3404 G-102 v1 802.11g Wireless Cardbus Adapter + 0308 3406 G-162 v2 802.11g Wireless Cardbus Adapter + 104c 9066 WL212 Sitecom Wireless Network PCI-Card 100M (Version 1) +# Found in Philips ADSL ANNEX A WLAN Router SNA6500/18 sold by Belgacom + 104c 9067 TNETW1130GVF + 104c 9096 Trendnet TEW-412PC Wireless PCI Adapter (Version A) + 1186 3b04 DWL-G520+ Wireless PCI Adapter + 1186 3b05 DWL-G650+ AirPlusG+ CardBus Wireless LAN + 1186 3b08 AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.B1) + 1385 4c00 WG311v2 802.11g Wireless PCI Adapter + 13d1 aba0 SWLMP-54108 108Mbps Wireless mini PCI card 802.11g+ + 14ea ab07 GW-NS54GM Wireless Cardbus Adapter + 16ec 010d USR5416 802.11g Wireless Turbo PCI Adapter + 16ec 010e USR5410 802.11g Wireless Cardbus Adapter + 1737 0033 WPC54G v2 802.11g Wireless-G Notebook Adapter + 17cf 0032 G-162 v1 802.11g Wireless Cardbus Adapter + 17cf 0033 Z-Com XG650 Wireless miniPCI 802.11b/g + 187e 340b G-302 v2 802.11g Wireless PCI Adapter + 187e 340c G-360 v2 802.11g Wireless PCI Adapter + a001 TDC1570 + a100 TDC1561 + a102 TNETA1575 HyperSAR Plus w/PCI Host i/f & UTOPIA i/f + a106 TMS320C6414 TMS320C6415 TMS320C6416 + 175c 5000 ASI50xx Audio Adapter + 175c 6400 ASI6400 Cobranet series + 175c 8700 ASI87xx Radio Tuner card + ac10 PCI1050 + ac11 PCI1053 + ac12 PCI1130 + ac13 PCI1031 + ac15 PCI1131 + ac16 PCI1250 + 1014 0092 ThinkPad 600 + ac17 PCI1220 + ac18 PCI1260 + ac19 PCI1221 + ac1a PCI1210 + ac1b PCI1450 + 0e11 b113 Armada M700 + 1014 0130 ThinkPad 600X/A21m/T20/T22 + ac1c PCI1225 + 0e11 b121 Armada E500 + 1028 0088 Latitude CPi A400XT + ac1d PCI1251A + ac1e PCI1211 + ac1f PCI1251B + ac20 TI 2030 + ac21 PCI2031 + ac22 PCI2032 PCI Docking Bridge + ac23 PCI2250 PCI-to-PCI Bridge + ac28 PCI2050 PCI-to-PCI Bridge + ac2c PCI2060 PCI-to-PCI Bridge + ac30 PCI1260 PC card Cardbus Controller + ac40 PCI4450 PC card Cardbus Controller + ac41 PCI4410 PC card Cardbus Controller + ac42 PCI4451 PC card Cardbus Controller + 1028 00e6 PCI4451 PC card CardBus Controller (Inspiron 8100) + ac44 PCI4510 PC card Cardbus Controller + 1028 0149 Inspiron 5100 + 1028 0163 Latitude D505 + 1028 0196 Inspiron 5160 + 1071 8160 MIM2000 + ac46 PCI4520 PC card Cardbus Controller + 1014 0552 ThinkPad + ac47 PCI7510 PC card Cardbus Controller + 1028 0139 Latitude D400 + 1028 013f Precision M60 + 1028 014e Latitude D800 + ac48 PCI7610 PC Card Cardbus Controller + ac49 PCI7410 PC Card Cardbus Controller + ac4a PCI7510/7610 CardBus Bridge + 1028 0139 Latitude D400 + 1028 014e Latitude D800 + ac4b PCI7610 SD/MMC controller + ac4c PCI7610 Memory Stick controller + ac50 PCI1410 PC card Cardbus Controller + ac51 PCI1420 PC card Cardbus Controller + 0e11 004e Evo N600c + 1014 0148 ThinkPad A20m + 1014 023b ThinkPad T23 + 1028 00b1 Latitude C600 + 1028 012a Latitude C640 + 1033 80cd Versa Note VXi + 10cf 1095 Lifebook S-4510/C6155 + e4bf 1000 CP2-2-HIPHOP + ac52 PCI1451 PC card Cardbus Controller + ac53 PCI1421 PC card Cardbus Controller + ac54 PCI1620 PC Card Controller + 103c 08b0 tc1100 tablet + ac55 PCI1520 PC card Cardbus Controller + 1014 0512 ThinkPad T30/T40 + 103c 0025 XE4500 Notebook + ac56 PCI1510 PC card Cardbus Controller + 1014 0512 ThinkPad R50e + 1014 0528 ThinkPad R40e + 17aa 2012 ThinkPad T60/R60 series + ac60 PCI2040 PCI to DSP Bridge Controller + 175c 5100 ASI51xx Audio Adapter + 175c 6100 ASI61xx Audio Adapter + 175c 6200 ASI62xx Audio Adapter + 175c 8800 ASI88xx Audio Adapter + 186f 3001 WR-G303 PCI radio receiver + 186f 3005 WR-G305 PCI radio receiver + 186f 3101 WR-G313 PCI radio receiver + 186f 3105 WR-G315 PCI radio receiver + ac8d PCI 7620 + ac8e PCI7420 CardBus Controller + 1028 018d Inspiron 700m/710m + ac8f PCI7420/7620 SD/MS-Pro Controller + 1028 018d Inspiron 700m/710m + b001 TMS320C6424 + fe00 FireWire Host Controller + fe03 12C01A FireWire Host Controller +104d Sony Corporation + 8004 DTL-H2500 [Playstation development board] + 8009 CXD1947Q i.LINK Controller + 800c DTL-H800 [PS1 sound development board] + 8039 CXD3222 i.LINK Controller + 8047 PS2 TOOL MRP + 8056 Rockwell HCF 56K modem + 808a Memory Stick Controller + 80ff PS2 Performance Analyzer + 814a PS2 Performance Analyzer + 8183 ATHENS [PS3 prototype developer interface card] + 81b0 BM-1 [PSP TOOL Board Management Device] + 81c3 VO-4 [PSP TOOL Video Output Device] + 81ce SxS Pro memory card + 81ff PS3 TOOL MRP + 8200 PS3 TOOL RSX Tracing FPGA + 820e CXD9208GP [PS3 PS2 emulation subsystem adapter] +# 2nd ID + 905c SxS Pro memory card +# 2nd ID + 907f SxS Pro+ memory card + 908f Aeolia ACPI + 909e Aeolia Ethernet Controller (Marvell Yukon 2 Family) + 909f Aeolia SATA AHCI Controller + 90a0 Aeolia SD/MMC Host Controller + 90a1 Aeolia PCI Express Glue and Miscellaneous Devices + 90a2 Aeolia DMA Controller + 90a3 Aeolia Memory (DDR3/SPM) + 90a4 Aeolia USB 3.0 xHCI Host Controller + 90bc SxS Pro+ memory card + 90c0 PCIe x8 XAVC Codec Board + 90c8 Belize ACPI + 90c9 Belize Ethernet Controller + 90ca Belize SATA AHCI Controller + 90cb Belize SD/MMC Host Controller + 90cc Belize PCI Express Glue and Miscellaneous Devices + 90cd Belize DMA Controller + 90ce Belize Memory (DDR3/SPM) + 90cf Belize USB 3.0 xHCI Host Controller + 90d7 Baikal ACPI + 90d8 Baikal Ethernet Controller + 90d9 Baikal SATA AHCI Controller + 90da Baikal SD/MMC Host Controller + 90db Baikal PCI Express Glue and Miscellaneous Devices + 90dc Baikal DMA Controller + 90dd Baikal Memory (DDR3/SPM) + 90de Baikal USB 3.0 xHCI Host Controller + 90eb CXD90062GG + 9121 Nextorage NEM-PA NVMe SSD for PlayStation +104e Oak Technology, Inc + 0017 OTI-64017 + 0107 OTI-107 [Spitfire] + 0109 Video Adapter + 0111 OTI-64111 [Spitfire] + 0217 OTI-64217 + 0317 OTI-64317 +104f Co-time Computer Ltd +1050 Winbond Electronics Corp + 0000 NE2000 + 0001 W83769F + 0033 W89C33D 802.11 a/b/g BB/MAC + 0105 W82C105 + 0840 W89C840 + 1050 0001 W89C840 Ethernet Adapter + 1050 0840 W89C840 Ethernet Adapter + 0940 W89C940 + 5a5a W89C940F + 6692 W6692 + 1043 1702 ISDN Adapter (PCI Bus, D, W) + 1043 1703 ISDN Adapter (PCI Bus, DV, W) + 1043 1707 ISDN Adapter (PCI Bus, DV, W) + 144f 1702 ISDN Adapter (PCI Bus, D, W) + 144f 1703 ISDN Adapter (PCI Bus, DV, W) + 144f 1707 ISDN Adapter (PCI Bus, DV, W) + 9921 W99200F MPEG-1 Video Encoder + 9922 W99200F/W9922PF MPEG-1/2 Video Encoder + 9970 W9970CF +1051 Anigma, Inc. +1052 ?Young Micro Systems +1053 Young Micro Systems +1054 Hitachi, Ltd + 3009 2Gbps Fibre Channel to PCI HBA 3009 + 300a 4Gbps Fibre Channel to PCI-X HBA 300a + 300b 4Gbps Fibre Channel to PCI-X HBA 300b + 300f ColdFusion 3 Chipset Processor to I/O Controller + 3010 ColdFusion 3 Chipset Memory Controller Hub + 3011 ColdFusion 3e Chipset Processor to I/O Controller + 3012 ColdFusion 3e Chipset Memory Controller Hub + 3017 Unassigned Hitachi Shared FC Device 3017 + 301b Virtual VGA Device + 301d PCIe-to-PCIe Bridge with Virtualization IO Assist Feature + 3020 FIVE-EX based Fibre Channel to PCIe HBA + 302c M001 PCI Express Switch Upstream Port + 302d M001 PCI Express Switch Downstream Port + 3070 Hitachi FIVE-FX Fibre Channel to PCIe HBA + 3505 SH7751 PCI Controller (PCIC) + 350e SH7751R PCI Controller (PCIC) +1055 Microchip Technology / SMSC + 7430 LAN7430 + 7431 LAN7431 + 9130 SLC90E66 [Victory66] IDE + 9460 SLC90E66 [Victory66] ISA + 9462 SLC90E66 [Victory66] USB + 9463 SLC90E66 [Victory66] ACPI + e420 LAN9420/LAN9420i +1056 ICL +# Motorola made a mistake and used 1507 instead of 1057 in some chips. Please look at the 1507 entry as well when updating this. +1057 Motorola + 0001 MPC105 [Eagle] + 0002 MPC106 [Grackle] + 0003 MPC8240 [Kahlua] + 0004 MPC107 + 0006 MPC8245 [Unity] + 0008 MPC8540 + 0009 MPC8560 + 0012 MPC8548 [PowerQUICC III] + 0100 MC145575 [HFC-PCI] + 0431 KTI829c 100VG + 1073 Nokia N770 + 1219 Nokia N800 + 1801 DSP56301 Digital Signal Processor + 14fb 0101 Transas Radar Imitator Board [RIM] + 14fb 0102 Transas Radar Imitator Board [RIM-2] + 14fb 0202 Transas Radar Integrator Board [RIB-2] + 14fb 0611 1 channel CAN bus Controller [CanPci-1] + 14fb 0612 2 channels CAN bus Controller [CanPci-2] + 14fb 0613 3 channels CAN bus Controller [CanPci-3] + 14fb 0614 4 channels CAN bus Controller [CanPci-4] + 14fb 0621 1 channel CAN bus Controller [CanPci2-1] + 14fb 0622 2 channels CAN bus Controller [CanPci2-2] + 14fb 0810 Transas VTS Radar Integrator Board [RIB-4] + 175c 4200 ASI4215 Audio Adapter + 175c 4300 ASI43xx Audio Adapter + 175c 4400 ASI4401 Audio Adapter + ecc0 0010 Darla + ecc0 0020 Gina + ecc0 0030 Layla rev.0 + ecc0 0031 Layla rev.1 + ecc0 0040 Darla24 rev.0 + ecc0 0041 Darla24 rev.1 + ecc0 0050 Gina24 rev.0 + ecc0 0051 Gina24 rev.1 + ecc0 0070 Mona rev.0 + ecc0 0071 Mona rev.1 + ecc0 0072 Mona rev.2 + 18c0 MPC8265A/8266/8272 + 18c1 MPC8271/MPC8272 + 3052 SM56 Data Fax Modem + 3410 DSP56361 Digital Signal Processor + ecc0 0050 Gina24 rev.0 + ecc0 0051 Gina24 rev.1 + ecc0 0060 Layla24 + ecc0 0070 Mona rev.0 + ecc0 0071 Mona rev.1 + ecc0 0072 Mona rev.2 + ecc0 0080 Mia rev.0 + ecc0 0081 Mia rev.1 + ecc0 0090 Indigo + ecc0 00a0 Indigo IO + ecc0 00b0 Indigo DJ + ecc0 0100 3G + 4801 Raven + 4802 Falcon + 4803 Hawk + 4806 CPX8216 +# MPC7410 PowerPC microprocessor and PCI host bridge + 480b MPC7410 + 4d68 20268 + 5600 SM56 PCI Modem + 1057 0300 SM56 PCI Speakerphone Modem + 1057 0301 SM56 PCI Voice Modem + 1057 0302 SM56 PCI Fax Modem + 1057 5600 SM56 PCI Voice modem + 13d2 0300 SM56 PCI Speakerphone Modem + 13d2 0301 SM56 PCI Voice modem + 13d2 0302 SM56 PCI Fax Modem + 1436 0300 SM56 PCI Speakerphone Modem + 1436 0301 SM56 PCI Voice modem + 1436 0302 SM56 PCI Fax Modem + 144f 100c SM56 PCI Fax Modem + 1494 0300 SM56 PCI Speakerphone Modem + 1494 0301 SM56 PCI Voice modem + 14c8 0300 SM56 PCI Speakerphone Modem + 14c8 0302 SM56 PCI Fax Modem + 1668 0300 SM56 PCI Speakerphone Modem + 1668 0302 SM56 PCI Fax Modem + 5608 Wildcard X100P + 5803 MPC5200 + 5806 MCF54 Coldfire + 5808 MPC8220 + 5809 MPC5200B + 6400 MPC190 Security Processor (S1 family, encryption) + 6405 MPC184 Security Processor (S1 family) +1058 Electronics & Telecommunications RSH +1059 Kontron + 0004 FPGA M.2 (K20058) + 1059 0000 FPGA M.2 (K20058) +105a Promise Technology, Inc. + 0d30 PDC20265 (FastTrak100 Lite/Ultra100) + 1043 8042 AV7266-E South Bridge Promise RAID + 105a 4d33 Ultra100 + 0d38 20263 + 105a 4d39 Fasttrak66 + 1275 20275 + 3318 PDC20318 (SATA150 TX4) + 3319 PDC20319 (FastTrak S150 TX4) + 105a 3319 FastTrak S150 TX4 4 port SATA PCI board + 8086 3427 S875WP1-E mainboard + 3371 PDC20371 (FastTrak S150 TX2plus) + 3373 PDC20378 (FastTrak 378/SATA 378) + 1043 80f5 K8V Deluxe/PC-DL Deluxe motherboard + 1462 590d KT6 Delta-FIS2R (MS-6590) + 1462 702e K8T NEO FIS2R motherboard + 3375 PDC20375 (SATA150 TX2plus) + 3376 PDC20376 (FastTrak 376) + 1043 809e A7V8X motherboard + 3515 PDC40719 [FastTrak TX4300/TX4310] + 3519 PDC40519 (FastTrak TX4200) + 3570 PDC20771 [FastTrak TX2300] + 3571 PDC20571 (FastTrak TX2200) + 3574 PDC20579 SATAII 150 IDE Controller + 3577 PDC40779 (SATA 300 779) + 3d17 PDC40718 (SATA 300 TX4) + 3d18 PDC20518/PDC40518 (SATAII 150 TX4) + 3d73 PDC40775 (SATA 300 TX2plus) + 3d75 PDC20575 (SATAII150 TX2plus) + 3f20 PDC42819 [FastTrak TX2650/TX4650] + 4302 80333 [SuperTrak EX4350] + 4d30 PDC20267 (FastTrak100/Ultra100) + 105a 4d33 Ultra100 + 105a 4d39 FastTrak100 + 8086 5744 S845WD1-E mainboard + 4d33 20246 + 105a 4d33 20246 IDE Controller + 4d38 PDC20262 (FastTrak66/Ultra66) + 105a 4d30 Ultra Device on SuperTrak + 105a 4d33 Ultra66 + 105a 4d39 FastTrak66 + 4d68 PDC20268 [Ultra100 TX2] + 105a 4d68 Ultra100 TX2 + 4d69 20269 + 105a 4d68 Ultra133TX2 + 5275 PDC20276 (MBFastTrak133 Lite) + 1043 807e A7V333 motherboard. + 105a 0275 SuperTrak SX6000 IDE + 105a 1275 MBFastTrak133 Lite (tm) Controller (RAID mode) + 1458 b001 MBUltra 133 + 5300 DC5300 + 6268 PDC20270 (FastTrak100 LP/TX2/TX4) + 105a 4d68 FastTrak100 TX2 + 6269 PDC20271 (FastTrak TX2000) + 105a 6269 FastTrak TX2/TX2000 + 6300 PDC81731 [FastTrak SX8300] + 6621 PDC20621 (FastTrak S150 SX4/FastTrak SX4000 lite) + 6622 PDC20621 [SATA150 SX4] 4 Channel IDE RAID Controller + 6624 PDC20621 [FastTrak SX4100] + 6626 PDC20618 (Ultra 618) + 6629 PDC20619 (FastTrak TX4000) + 7275 PDC20277 (SBFastTrak133 Lite) + 8002 SATAII150 SX8 + 8350 80333 [SuperTrak EX8350/EX16350], 80331 [SuperTrak EX8300/EX16300] + 8650 81384 [SuperTrak EX SAS and SATA RAID Controller] + 105a 4600 SuperTrak EX4650A + 105a 4601 SuperTrak EX4650 + 105a 4610 SuperTrak EX4650EL + 105a 8600 SuperTrak EX8650EL + 105a 8601 SuperTrak EX8650A + 105a 8602 SuperTrak EX8654 + 105a 8603 SuperTrak EX8658 + 105a 8604 SuperTrak EX8650 + 105a 8610 SuperTrak EX8650M + 105a a600 SuperTrak EX12650 + 105a b600 SuperTrak EX16650 + 105a b601 SuperTrak EX16654 + 105a b602 SuperTrak EX16658 + 8760 PM8010 [SuperTrak EX SAS and SATA 6G RAID Controller] + c350 80333 [SuperTrak EX12350] + e350 80333 [SuperTrak EX24350] +105b Foxconn International, Inc. + 9602 RS780/RS880 PCI to PCI bridge (int gfx) + e0c3 T99W175 5G Modem [Snapdragon X55] +105c Wipro Infotech Limited +105d Number 9 Computer Company + 2309 Imagine 128 + 2339 Imagine 128-II + 105d 0000 Imagine 128 series 2 4Mb VRAM + 105d 0001 Imagine 128 series 2 4Mb VRAM + 105d 0002 Imagine 128 series 2 4Mb VRAM + 105d 0003 Imagine 128 series 2 4Mb VRAM + 105d 0004 Imagine 128 series 2 4Mb VRAM + 105d 0005 Imagine 128 series 2 4Mb VRAM + 105d 0006 Imagine 128 series 2 4Mb VRAM + 105d 0007 Imagine 128 series 2 4Mb VRAM + 105d 0008 Imagine 128 series 2e 4Mb DRAM + 105d 0009 Imagine 128 series 2e 4Mb DRAM + 105d 000a Imagine 128 series 2 8Mb VRAM + 105d 000b Imagine 128 series 2 8Mb H-VRAM + 11a4 000a Metheus 5 Megapixel + 13cc 0000 Metheus 5 Megapixel + 13cc 0004 Metheus 5 Megapixel + 13cc 0005 Metheus 5 Megapixel + 13cc 0006 Metheus 5 Megapixel + 13cc 0008 Metheus 5 Megapixel + 13cc 0009 Metheus 5 Megapixel + 13cc 000a Metheus 5 Megapixel + 13cc 000c Metheus 5 Megapixel + 493d Imagine 128 T2R [Ticket to Ride] + 11a4 000a Metheus 5 Megapixel, Dual Head + 11a4 000b Metheus 5 Megapixel, Dual Head + 13cc 0002 Metheus 4 Megapixel, Dual Head + 13cc 0003 Metheus 5 Megapixel, Dual Head + 13cc 0007 Metheus 5 Megapixel, Dual Head + 13cc 0008 Metheus 5 Megapixel, Dual Head + 13cc 0009 Metheus 5 Megapixel, Dual Head + 13cc 000a Metheus 5 Megapixel, Dual Head + 5348 Revolution 4 + 105d 0037 Revolution IV-FP AGP (For SGI 1600SW) + 11a4 0028 PVS5600M + 11a4 0038 PVS5600D +105e Vtech Computers Ltd +105f Infotronic America Inc +1060 United Microelectronics [UMC] + 0001 UM82C881 + 0002 UM82C886 + 0101 UM8673F + 0881 UM8881 + 0886 UM8886F + 0891 UM8891A + 1001 UM886A + 673a UM8886BF + 673b EIDE Master/DMA + 8710 UM8710 + 886a UM8886A + 8881 UM8881F + 8886 UM8886F + 888a UM8886A + 8891 UM8891A + 9017 UM9017F + 9018 UM9018 + 9026 UM9026 + e881 UM8881N + e886 UM8886N + e88a UM8886N + e891 UM8891N +1061 I.I.T. + 0001 AGX016 + 0002 IIT3204/3501 +1062 Maspar Computer Corp +1063 Ocean Office Automation +1064 Alcatel + 1102 Dynamite 2840 (ADSL PCI modem) +1065 Texas Microsystems +1066 PicoPower Technology + 0000 PT80C826 + 0001 PT86C521 [Vesuvius v1] Host Bridge + 0002 PT86C523 [Vesuvius v3] PCI-ISA Bridge Master + 0003 PT86C524 [Nile] PCI-to-PCI Bridge + 0004 PT86C525 [Nile-II] PCI-to-PCI Bridge + 0005 National PC87550 System Controller + 8002 PT86C523 [Vesuvius v3] PCI-ISA Bridge Slave +1067 Mitsubishi Electric + 0301 AccelGraphics AccelECLIPSE + 0304 AccelGALAXY A2100 [OEM Evans & Sutherland] + 0308 Tornado 3000 [OEM Evans & Sutherland] + 1002 VG500 [VolumePro Volume Rendering Accelerator] +1068 Diversified Technology +1069 Mylex Corporation + 0001 DAC960P + 0002 DAC960PD + 0010 DAC960PG + 0020 DAC960LA + 0050 AcceleRAID 352/170/160 support Device + 1069 0050 AcceleRAID 352 support Device + 1069 0052 AcceleRAID 170 support Device + 1069 0054 AcceleRAID 160 support Device + b166 AcceleRAID 600/500/400/Sapphire support Device + 1014 0242 iSeries 2872 DASD IOA + 1014 0266 Dual Channel PCI-X U320 SCSI Adapter + 1014 0278 Dual Channel PCI-X U320 SCSI RAID Adapter + 1014 02d3 Dual Channel PCI-X U320 SCSI Adapter + 1014 02d4 Dual Channel PCI-X U320 SCSI RAID Adapter + 1069 0200 AcceleRAID 400, Single Channel, PCI-X, U320, SCSI RAID + 1069 0202 AcceleRAID Sapphire, Dual Channel, PCI-X, U320, SCSI RAID + 1069 0204 AcceleRAID 500, Dual Channel, Low-Profile, PCI-X, U320, SCSI RAID + 1069 0206 AcceleRAID 600, Dual Channel, PCI-X, U320, SCSI RAID + ba55 eXtremeRAID 1100 support Device + ba56 eXtremeRAID 2000/3000 support Device + 1069 0030 eXtremeRAID 3000 support Device + 1069 0040 eXtremeRAID 2000 support Device + ba57 eXtremeRAID 4000/5000 support Device + 1069 0072 eXtremeRAID 5000 support Device +106a Aten Research Inc +106b Apple Inc. + 0001 Bandit PowerPC host bridge + 0002 Grand Central I/O + 0003 Control Video + 0004 PlanB Video-In + 0007 O'Hare I/O + 000b Apple Camera + 000c DOS on Mac + 000e Hydra Mac I/O + 0010 Heathrow Mac I/O + 0017 Paddington Mac I/O + 0018 UniNorth FireWire + 0019 KeyLargo USB + 001e UniNorth Internal PCI + 001f UniNorth PCI + 0020 UniNorth AGP + 0021 UniNorth GMAC (Sun GEM) + 0022 KeyLargo Mac I/O + 0024 UniNorth/Pangea GMAC (Sun GEM) + 0025 KeyLargo/Pangea Mac I/O + 0026 KeyLargo/Pangea USB + 0027 UniNorth/Pangea AGP + 0028 UniNorth/Pangea PCI + 0029 UniNorth/Pangea Internal PCI + 002d UniNorth 1.5 AGP + 002e UniNorth 1.5 PCI + 002f UniNorth 1.5 Internal PCI + 0030 UniNorth/Pangea FireWire + 0031 UniNorth 2 FireWire + 106b 5811 iBook G4 2004 + 0032 UniNorth 2 GMAC (Sun GEM) + 0033 UniNorth 2 ATA/100 + 0034 UniNorth 2 AGP + 0035 UniNorth 2 PCI + 0036 UniNorth 2 Internal PCI + 003b UniNorth/Intrepid ATA/100 + 003e KeyLargo/Intrepid Mac I/O + 003f KeyLargo/Intrepid USB + 1af4 1100 QEMU Virtual Machine + 0040 K2 KeyLargo USB + 0041 K2 KeyLargo Mac/IO + 0042 K2 FireWire + 0043 K2 ATA/100 + 0045 K2 HT-PCI Bridge + 0046 K2 HT-PCI Bridge + 0047 K2 HT-PCI Bridge + 0048 K2 HT-PCI Bridge + 0049 K2 HT-PCI Bridge + 004a CPC945 HT Bridge + 004b U3 AGP + 004c K2 GMAC (Sun GEM) + 004f Shasta Mac I/O + 0050 Shasta IDE + 0051 Shasta (Sun GEM) + 0052 Shasta Firewire + 0053 Shasta PCI Bridge + 0054 Shasta PCI Bridge + 0055 Shasta PCI Bridge + 0056 U4 PCIe + 0057 U3 HT Bridge + 0058 U3L AGP Bridge + 0059 U3H AGP Bridge + 005b CPC945 PCIe Bridge + 0066 Intrepid2 AGP Bridge + 0067 Intrepid2 PCI Bridge + 0068 Intrepid2 PCI Bridge + 0069 Intrepid2 ATA/100 + 006a Intrepid2 Firewire + 006b Intrepid2 GMAC (Sun GEM) + 0074 U4 HT Bridge + 100c Apple Silicon PCI Express Root Port + 1010 Apple Silicon USB4/Thunderbolt PCI Express Root Port +# should be 14e4:1645 + 1645 Broadcom NetXtreme BCM5701 Gigabit Ethernet + 1801 T2 Bridge Controller + 1802 T2 Secure Enclave Processor + 1803 Apple Audio Device + 2001 S1X NVMe Controller + 2002 S3ELab NVMe Controller + 2003 S3X NVMe Controller + 2005 ANS2 NVMe Controller +106c Hynix Semiconductor + 8139 8139c 100BaseTX Ethernet Controller + 8801 Dual Pentium ISA/PCI Motherboard + 8802 PowerPC ISA/PCI Motherboard + 8803 Dual Window Graphics Accelerator + 8804 LAN Controller + 8805 100-BaseT LAN +106d Sequent Computer Systems +106e DFI, Inc +106f City Gate Development Ltd +1070 Daewoo Telecom Ltd +1071 Mitac + 8160 Mitac 8060B Mobile Platform +1072 GIT Co Ltd +1073 Yamaha Corporation + 0001 3D GUI Accelerator + 0002 YGV615 [RPA3 3D-Graphics Controller] + 0003 YMF-740 + 0004 YMF-724 + 1073 0004 YMF724-Based PCI Audio Adapter + 0005 DS1 Audio + 1073 0005 DS-XG PCI Audio CODEC + 0006 DS1 Audio + 0008 DS1 Audio + 1073 0008 DS-XG PCI Audio CODEC + 000a DS1L Audio + 1073 0004 DS-XG PCI Audio CODEC + 1073 000a DS-XG PCI Audio CODEC + 8086 4d55 DS-XG PCI Audio CODEC [Intel MU440EX] + 000c YMF-740C [DS-1L Audio Controller] + 107a 000c DS-XG PCI Audio CODEC + 000d YMF-724F [DS-1 Audio Controller] + 1073 000d DS-XG PCI Audio CODEC + 0010 YMF-744B [DS-1S Audio Controller] + 1073 0006 DS-XG PCI Audio CODEC + 1073 0010 DS-XG PCI Audio CODEC + 0012 YMF-754 [DS-1E Audio Controller] + 1073 0012 DS-XG PCI Audio Codec + 0020 DS-1 Audio + 1000 SW1000XG [XG Factory] + 2000 DS2416 Digital Mixing Card + 1073 2000 DS2416 Digital Mixing Card +1074 NexGen Microsystems + 4e78 82c500/1 +1075 Advanced Integrations Research +1076 Chaintech Computer Co. Ltd +1077 QLogic Corp. + 1016 ISP10160 Single Channel Ultra3 SCSI Processor + 1020 ISP1020/1040 Fast-wide SCSI + 1022 ISP1022 Fast-wide SCSI + 1080 ISP1080 SCSI Host Adapter + 1216 ISP12160 Dual Channel Ultra3 SCSI Processor + 101e 8471 QLA12160 on AMI MegaRAID + 101e 8493 QLA12160 on AMI MegaRAID + 1240 ISP1240 SCSI Host Adapter + 1280 ISP1280 SCSI Host Adapter + 1634 FastLinQ QL45000 Series 40GbE Controller + 1077 e4f1 FastLinQ QL45212H 40GbE Adapter + 1077 e4f2 FastLinQ QL45211H 40GbE Adapter + 1077 e4f3 FastLinQ QL45412H 40GbE Adapter + 1077 e4f4 FastLinQ QL45411H 40GbE Adapter + 1644 FastLinQ QL45000 Series 100GbE Controller + 1077 e4f8 FastLinQ QL45611H 100GbE Adapter + 1654 FastLinQ QL45000 Series 50GbE Controller + 1077 0032 QL45212 Flex 50Gb 2-port Ethernet Adapter + 1590 0223 Synergy 6810C 25/50Gb Ethernet Adapter + 1590 0287 Synergy 6820C 25/50Gb CNA + 1656 FastLinQ QL45000 Series 25GbE Controller + 1077 0033 QL45214 Flex 25Gb 4-port Ethernet Adapter + 1077 02a7 QL45212-DE 25GbE Adapter + 1077 e4f6 FastLinQ QL45211H 25GbE Adapter + 1077 e4f7 FastLinQ QL45212H 25GbE Adapter + 1590 0245 10/20/25GbE 2P 4820c CNA + 165c FastLinQ QL45000 Series 10/25/40/50GbE Controller (FCoE) + 1077 0034 QL45262 Flex 50Gb 2-port Ethernet Adapter w/ iSCSI/FCoE + 1077 e4f1 FastLinQ QL45462H 40GbE FCoE Adapter + 1077 e4f2 FastLinQ QL45461H 40GbE FCoE Adapter + 1590 0245 10/20/25GbE 2P 4820c CNA FCoE + 165e FastLinQ QL45000 Series 10/25/40/50GbE Controller (iSCSI) + 1077 0034 QL45262 Flex 50Gb 2-port Ethernet Adapter w/ iSCSI/FCoE + 1077 e4f1 FastLinQ QL45462H 40GbE iSCSI Adapter + 1077 e4f2 FastLinQ QL45461H 40GbE iSCSI Adapter + 1590 0245 10/20/25GbE 2P 4820c CNA iSCSI + 1664 FastLinQ QL45000 Series Gigabit Ethernet Controller (SR-IOV VF) + 1077 e4f1 FastLinQ QL45462H 40GbE Adapter (SR-IOV VF) + 1077 e4f2 FastLinQ QL45461H 40GbE Adapter (SR-IOV VF) + 1077 e4f3 FastLinQ QL45412H 40GbE Adapter (SR-IOV VF) + 1077 e4f4 FastLinQ QL45411H 40GbE Adapter (SR-IOV VF) + 1077 e4f6 FastLinQ QL45211H 25GbE Adapter (SR-IOV VF) + 1077 e4f7 FastLinQ QL45212H 25GbE Adapter (SR-IOV VF) + 1077 e4f8 FastLinQ QL45611H 100GbE Adapter (SR-IOV VF) + 1590 0245 10/20/25GbE 2P 4820c CNA SRIOV + 2020 ISP2020A Fast!SCSI Basic Adapter + 2031 ISP8324-based 16Gb Fibre Channel to PCI Express Adapter + 103c 17e7 SN1000Q 16Gb Single Port Fibre Channel Adapter + 103c 17e8 SN1000Q 16Gb Dual Port Fibre Channel Adapter + 103c 1939 QMH2672 16Gb Dual Port Fibre Channel Adapter + 103c 8002 3830C 16G Fibre Channel Host Bus Adapter + 1077 0241 QLE2670 16Gb Single Port Fibre Channel Adapter + 2071 ISP2714-based 16/32Gb Fibre Channel to PCIe Adapter + 1077 0283 QLE2764 Quad Port 32Gb Fibre Channel to PCIe Adapter + 1077 029e QLE2694 Quad Port 16Gb Fibre Channel to PCIe Adapter + 1077 02a2 QLE2694L Quad Port 16Gb Fibre Channel to PCIe Adapter + 1077 02ad QLE2694U Quad Port 16/32Gb Fibre Channel to PCIe Adapter + 2081 ISP2814-based 64/32G Fibre Channel to PCIe Controller + 1077 02e1 QLE2874 Quad Port 64GFC PCIe Gen4 x16 Adapter + 1077 02e3 QLE2774 Quad Port 32GFC PCIe Gen4 x16 Adapter + 2089 ISP2854-based 64/32G Fibre Channel to PCIe Controller with StorCryption + 1077 02e8 QLE2884 Quad Port 64GFC PCIe Gen4 x16 Adapter with StorCryption + 1077 02ea QLE2784 Quad Port 32GFC PCIe Gen4 x16 Adapter with StorCryption + 2100 QLA2100 64-bit Fibre Channel Adapter + 1077 0001 QLA2100 64-bit Fibre Channel Adapter + 2200 QLA2200 64-bit Fibre Channel Adapter + 1077 0002 QLA2200 + 2261 ISP2722-based 16/32Gb Fibre Channel to PCIe Adapter + 1077 0299 QLE2740 Single Port 32Gb Fibre Channel to PCIe Adapter + 1077 029a QLE2742 Dual Port 32Gb Fibre Channel to PCIe Adapter + 1077 029b QLE2690 Single Port 16Gb Fibre Channel to PCIe Adapter + 1077 029c QLE2692 Dual Port 16Gb Fibre Channel to PCIe Adapter + 1077 02a7 QLE2690 Single Port 16Gb FC to PCIe Gen3 x8 Adapter + 1077 02a8 QLE2692 Dual Port 16Gb FC to PCIe Gen3 x8 Adapter + 1077 02ab QLE2740 Single Port 32Gb FC to PCIe Gen3 x8 Adapter + 1077 02ac QLE2742 Dual Port 32Gb FC to PCIe Gen3 x8 Adapter + 1077 02b8 2x16Gb QME2692 FC HBA + 1077 02b9 2x32Gb QME2742 FC HBA + 1590 00f9 StoreFabric SN1100Q 16Gb Single Port Fibre Channel Host Bus Adapter + 1590 00fa StoreFabric SN1100Q 16Gb Dual Port Fibre Channel Host Bus Adapter + 1590 0203 StoreFabric SN1600Q 32Gb Single Port Fibre Channel Host Bus Adapter + 1590 0204 StoreFabric SN1600Q 32Gb Dual Port Fibre Channel Host Bus Adapter + 1590 022d 5830C 32Gb Dual Port Fibre Channel Adapter + 193d 100d NIC-FC680i-Mb-2x16G + 2281 ISP2812-based 64/32G Fibre Channel to PCIe Controller + 1077 02e2 QLE2872 Dual Port 64GFC PCIe Gen4 x8 Adapter + 1077 02e4 QLE2772 Dual Port 32GFC PCIe Gen4 x8 Adapter + 1077 02ee QLE2870 Single Port 64GFC PCIe Gen4 x8 Adapter + 1077 02f0 QLE2770 Single Port 32GFC PCIe Gen4 x8 Adapter + 1077 02f2 QLogic 1x32Gb QLE2770 FC HBA + 1077 02f3 QLogic 2x32Gb QLE2772 FC HBA + 1590 02d3 SN1610Q - 1P Enhanced 32GFC Single Port Fibre Channel Host Bus Adapter + 1590 02d4 SN1610Q - 2P Enhanced 32GFC Dual Port Fibre Channel Host Bus Adapter + 2289 ISP2852-based 64/32G Fibre Channel to PCIe Controller with StorCryption + 1077 02e9 QLE2882 Dual Port 64GFC PCIe Gen4 x8 Adapter with StorCryption + 1077 02eb QLE2782 Dual Port 32GFC PCIe Gen4 x8 Adapter with StorCryption + 1077 02ef QLE2880 Single Port 64GFC PCIe Gen4 x8 Adapter with StorCryption + 1077 02f1 QLE2780 Single Port 32GFC PCIe Gen4 x8 Adapter with StorCryption + 2300 QLA2300 64-bit Fibre Channel Adapter + 2312 ISP2312-based 2Gb Fibre Channel to PCI-X HBA + 103c 0131 2Gb Fibre Channel - Single port [A7538A] + 103c 12ba 2Gb Fibre Channel - Dual port [A6826A] + 2322 ISP2322-based 2Gb Fibre Channel to PCI-X HBA + 2422 ISP2422-based 4Gb Fibre Channel to PCI-X HBA + 103c 12d7 4Gb Fibre Channel [AB379A] + 103c 12dd 4Gb Fibre Channel [AB429A] + 2432 ISP2432-based 4Gb Fibre Channel to PCI Express HBA + 103c 7040 FC1142SR 4Gb 1-port PCIe Fibre Channel Host Bus Adapter [HPAE311A] + 1077 0137 QLE2460 Single-Port 4Gbps FC-to-PCI-X/PCIe Host Bus Adapter + 1077 0138 QLE2462 Dual-Port 4Gbps FC-to-PCI-X/PCIe Host Bus Adapter + 2532 ISP2532-based 8Gb Fibre Channel to PCI Express HBA + 1014 041e FC EN0Y/EN12 PCIe2 LP 8 Gb 4-port Fibre Channel Adapter for POWER + 103c 3262 StorageWorks 81Q + 103c 3263 StorageWorks 82Q + 1077 015c QLE2560 PCI Express to 8Gb FC Single Channel + 1077 015d QLE2562 PCI Express to 8Gb FC Dual Channel + 1077 015e QLE2564 PCI Express to 8Gb FC Quad Channel + 1077 0167 QME2572 Dual Port FC8 HBA Mezzanine + 1590 00fc StoreFabric 84Q 8Gb Quad Port Fibre Channel Host Bus Adapter + 2971 ISP2684 + 3022 ISP4022-based Ethernet NIC + 3032 ISP4032-based Ethernet IPv6 NIC + 4010 ISP4010-based iSCSI TOE HBA + 4022 ISP4022-based iSCSI TOE HBA + 4032 ISP4032-based iSCSI TOE IPv6 HBA + 5432 SP232-based 4Gb Fibre Channel to PCI Express HBA + 6312 SP202-based 2Gb Fibre Channel to PCI-X HBA + 6322 SP212-based 2Gb Fibre Channel to PCI-X HBA + 7220 IBA7220 InfiniBand HCA + 7322 IBA7322 QDR InfiniBand HCA + 8000 10GbE Converged Network Adapter (TCP/IP Networking) + 8001 10GbE Converged Network Adapter (FCoE) + 1014 03af FC 5708/5270 10 Gb FCoE PCIe Dual Port Adapter for POWER + 8020 cLOM8214 1/10GbE Controller + 1028 1f64 QMD8262-k 10G DP bNDC KR + 103c 3346 CN1000Q Dual Port Converged Network Adapter + 103c 3733 NC523SFP 10Gb 2-port Server Adapter + 1077 0203 8200 Series Single Port 10GbE Converged Network Adapter (TCP/IP Networking) + 1077 0207 8200 Series Dual Port 10GbE Converged Network Adapter (TCP/IP Networking) + 1077 020b 3200 Series Dual Port 10Gb Intelligent Ethernet Adapter + 1077 020c 3200 Series Quad Port 1Gb Intelligent Ethernet Adapter + 1077 020f 3200 Series Single Port 10Gb Intelligent Ethernet Adapter + 1077 0210 QME8242-k 10GbE Dual Port Mezzanine Card + 1077 0233 QME8262-k 10GbE Dual Port Mezzanine Card + 8021 8200 Series 10GbE Converged Network Adapter (FCoE) + 103c 3348 CN1000Q Dual Port Converged Network Adapter + 1077 0211 QME8242-k 10GbE Dual Port Mezzanine Card, FCoE + 8022 8200 Series 10GbE Converged Network Adapter (iSCSI) + 103c 3347 CN1000Q Dual Port Converged Network Adapter + 1077 0212 QME8242-k 10GbE Dual Port Mezzanine Card, iSCSI + 8030 ISP8324 1/10GbE Converged Network Controller + 1077 0243 8300 Series Single Port 10GbE Converged Network Adapter (TCP/IP Networking) + 1077 0246 8300 Series Dual Port 10GbE Converged Network Adapter (TCP/IP Networking) + 8031 8300 Series 10GbE Converged Network Adapter (FCoE) + 8032 8300 Series 10GbE Converged Network Adapter (iSCSI) + 8070 FastLinQ QL41000 Series 10/25/40/50GbE Controller + 1077 0001 10GE 2P QL41162HxRJ-DE Adapter + 1077 0002 10GE 2P QL41112HxCU-DE Adapter + 1077 0004 4x10GE QL41164HFCU CNA + 1077 0005 QLogic 4x10GE QL41164HMRJ CNA + 1077 0006 QLogic 4x10GE QL41164HMCU CNA + 1077 0007 QLogic 2x1GE+2x10GE QL41264HMCU CNA + 1077 0009 QLogic 2x1GE+2x10GE QL41162HMRJ CNA + 1077 000b 25GE 2P QL41262HxCU-DE Adapter + 1077 000f 2x25GE QL41262HMKR CNA + 1077 0010 2x25GE QL41232HMKR NIC + 1077 0011 FastLinQ QL41212HLCU 25GbE Adapter + 1077 0012 FastLinQ QL41112H 10GbE Adapter + 1077 0019 QL41232HOCU - Dual Port 25/10GbE SFP28 OCP Adapter + 1077 0039 QLogic QL41262 PCIe 25Gb 2-Port SFP28 Ethernet Adapter + 1077 0053 QLogic 2x25GE QL41232HQCU NIC + 1077 0054 2x10GE QL41132HQRJ NIC + 1077 0055 QLogic 2x10GE QL41132HQCU NIC + 1077 0056 2x10GE QL41132HxRJ NIC + 1077 0057 2x25GE QL41232HxCU NIC + 1077 0065 QLogic 4x10GE QL41154HQRJ CNA + 1077 0066 QLogic 4x10GE QL41154HQCU CNA + 1077 0068 10GbE 2p SFP+ QL41132HLCU-HC Adapter + 1077 0069 10GbE 2p BASE-T QL41132HQRJ-HC OCP3 Adapter + 1077 0070 10GbE 2p BASE-T QL41132HLRJ-HC Adapter + 1077 0071 10GbE 2p SFP+ QL41132HQCU-HC OCP3 Adapter + 1077 0072 10GbE 4p SFP+ QL41134HLCU-HC Adapter + 1077 0073 10/25GbE 2p SFP28 QL41232HQCU-HC OCP3 Adapter + 1077 0074 10/25GbE 2p SFP28 QL41232HLCU-HC Adapter + 1590 021a 10GbE 2P QL41162HLRJ-HP Adapter + 1590 021b 10GbE 2P QL41162HLRJ-HP Adapter + 1590 021d 10/25GbE 2P QL41222HLCU-HP Adapter + 1590 021e 10/25GbE 2P QL41162HMRJ-HP Adapter + 1590 021f 10/25GbE 2P QL41262HMCU-HP Adapter + 1590 0220 10/25GbE 2P QL41122HLRJ-HP Adapter + 1590 02bd 10Gb 2P 524SFP+ NIC + 193d 1030 NIC-ETH681i-Mb-2x25G + 193d 1032 NIC-ETH682i-Mb-2x25G + 8080 FastLinQ QL41000 Series 10/25/40/50GbE Controller (FCoE) + 1077 0001 10GE 2P QL41162HxRJ-DE Adapter + 1077 0002 10GE 2P QL41112HxCU-DE Adapter + 1077 0004 4x10GE QL41164HFCU CNA + 1077 0005 QLogic 4x10GE QL41164HMRJ CNA + 1077 0006 QLogic 4x10GE QL41164HMCU CNA + 1077 0007 QLogic 2x1GE+2x10GE QL41264HMCU CNA + 1077 0009 QLogic 2x1GE+2x10GE QL41162HMRJ CNA + 1077 000b 25GE 2P QL41262HxCU-DE Adapter + 1077 000c QLogic 2x25GE QL41262HMCU CNA + 1077 000d FastLinQ QL41262H 25GbE FCoE Adapter + 1077 000e FastLinQ QL41162H 10GbE FCoE Adapter + 1077 000f 2x25GE QL41262HMKR CNA + 1590 021a 10GbE 2P QL41162HLRJ-HP Adapter + 1590 021b 10GbE 2P QL41162HLRJ-HP Adapter + 8084 FastLinQ QL41000 Series 10/25/40/50GbE Controller (iSCSI) + 1077 0001 10GE 2P QL41162HxRJ-DE Adapter + 1077 0002 10GE 2P QL41112HxCU-DE Adapter + 1077 0003 4x10GE QL41164HxRJ CNA + 1077 0004 4x10GE QL41164HFCU CNA + 1077 0005 QLogic 4x10GE QL41164HMRJ CNA + 1077 0006 QLogic 4x10GE QL41164HMCU CNA + 1077 0007 QLogic 2x25GE QL41262HMCU CNA + 1077 0009 QLogic 2x1GE+2x10GE QL41162HMRJ CNA + 1077 000b 25GE 2P QL41262HxCU-DE Adapter + 1077 000c QLogic 2x25GE QL41262HMCU CNA + 1077 000d FastLinQ QL41262H 25GbE iSCSI Adapter + 1077 000e FastLinQ QL41162H 10GbE iSCSI Adapter + 1077 000f 2x25GE QL41262HMKR CNA + 1077 0065 QLogic 4x10GE QL41154HQRJ CNA + 1077 0066 QLogic 4x10GE QL41154HQCU CNA + 1590 021a 10GbE 2P QL41162HLRJ-HP Adapter + 1590 021b 10GbE 2P QL41162HLRJ-HP Adapter + 8090 FastLinQ QL41000 Series Gigabit Ethernet Controller (SR-IOV VF) + 1077 0001 25GE 2P QL41262HxCU-DE Adapter + 1077 0002 10GE 2P QL41112HxCU-DE Adapter + 1077 0003 4x10GE QL41164HxRJ CNA + 1077 0004 4x10GE QL41164HFCU CNA + 1077 0005 QLogic 4x10GE QL41164HMRJ CNA + 1077 0006 QLogic 4x10GE QL41164HMCU CNA + 1077 0007 QLogic 2x1GE+2x10GE QL41264HMCU CNA + 1077 0009 QLogic 2x1GE+2x10GE QL41162HMRJ CNA + 1077 000b 25GE 2P QL41262HxCU-DE Adapter + 1077 000c QLogic 2x25GE QL41262HMCU CNA + 1077 000d FastLinQ QL41262H 25GbE FCoE Adapter (SR-IOV VF) + 1077 000e FastLinQ QL41162H 10GbE iSCSI Adapter (SR-IOV VF) + 1077 000f 2x25GE QL41262HMKR CNA + 1077 0010 2x25GE QL41232HMKR NIC + 1077 0011 FastLinQ QL41212H 25GbE Adapter (SR-IOV VF) + 1077 0012 FastLinQ QL41112H 10GbE Adapter (SR-IOV VF) + 1077 0053 QLogic 2x25GE QL41232HQCU NIC + 1077 0054 QLogic 2x10GE QL41132HQRJ NIC + 1077 0055 QLogic 2x10GE QL41132HQCU NIC + 1077 0056 2x10GE QL41132HxRJ NIC + 1077 0057 2x25GE QL41232HxCU NIC + 1077 0065 QLogic 4x10GE QL41154HQRJ CNA + 1077 0066 QLogic 4x10GE QL41154HQCU CNA + 1590 021a 10GbE 2P QL41162HLRJ-HP Adapter + 1590 021b 10GbE 2P QL41162HLRJ-HP Adapter + 1590 021e 10/25GbE 2P QL41162HMRJ-HP Adapter + 1590 021f 10/25GbE 2P QL41262HMCU-HP Adapter + 1590 02bd 10Gb 2P 524SFP+ NIC + 8430 ISP8324 1/10GbE Converged Network Controller (NIC VF) + 8431 8300 Series 10GbE Converged Network Adapter (FCoE VF) + 8432 ISP2432M-based 10GbE Converged Network Adapter (CNA) +1078 Cyrix Corporation + 0000 5510 [Grappa] + 0001 PCI Master + 0002 5520 [Cognac] + 0100 5530 Legacy [Kahlua] + 0101 5530 SMI [Kahlua] + 0102 5530 IDE [Kahlua] + 0103 5530 Audio [Kahlua] + 0104 5530 Video [Kahlua] + 0400 ZFMicro PCI Bridge + 0401 ZFMicro Chipset SMI + 0402 ZFMicro Chipset IDE + 0403 ZFMicro Expansion Bus +1079 I-Bus +107a NetWorth +# formerly Gateway 2000 / acquired by Acer Inc. +107b Gateway, Inc. +107c LG Electronics [Lucky Goldstar Co. Ltd] +107d LeadTek Research Inc. + 0000 P86C850 +107e Interphase Corporation + 0001 5515 ATM Adapter [Flipper] + 0002 100 VG AnyLan Controller + 0004 5526 Fibre Channel Host Adapter + 0005 x526 Fibre Channel Host Adapter + 0008 5525/5575 ATM Adapter (155 Mbit) [Atlantic] + 9003 5535-4P-BRI-ST + 9007 5535-4P-BRI-U + 9008 5535-1P-SR + 900c 5535-1P-SR-ST + 900e 5535-1P-SR-U + 9011 5535-1P-PRI + 9013 5535-2P-PRI + 9023 5536-4P-BRI-ST + 9027 5536-4P-BRI-U + 9031 5536-1P-PRI + 9033 5536-2P-PRI +107f Data Technology Corporation + 0802 SL82C105 +1080 Contaq Microsystems + 0600 82C599 + c691 Cypress CY82C691 + c693 82c693 +1081 Supermac Technology + 0d47 Radius PCI to NuBUS Bridge +1082 EFA Corporation of America +1083 Forex Computer Corporation + 0001 FR710 +1084 Parador +1086 J. Bond Computer Systems +1087 Cache Computer +1088 Microcomputer Systems (M) Son +1089 Data General Corporation +# Formerly Bit3 Computer Corp. +108a SBS Technologies + 0001 VME Bridge Model 617 + 0010 VME Bridge Model 618 + 0040 dataBLIZZARD + 3000 VME Bridge Model 2706 +108c Oakleigh Systems Inc. +108d Olicom + 0001 Token-Ring 16/4 PCI Adapter (3136/3137) + 0002 16/4 Token Ring + 0004 RapidFire OC-3139/3140 Token-Ring 16/4 PCI Adapter + 108d 0004 OC-3139/3140 RapidFire Token-Ring 16/4 Adapter + 0005 GoCard 3250 Token-Ring 16/4 CardBus PC Card + 0006 OC-3530 RapidFire Token-Ring 100 + 0007 RapidFire 3141 Token-Ring 16/4 PCI Fiber Adapter + 108d 0007 OC-3141 RapidFire Token-Ring 16/4 Adapter + 0008 RapidFire 3540 HSTR 100/16/4 PCI Adapter + 108d 0008 OC-3540 RapidFire HSTR 100/16/4 Adapter + 0011 OC-2315 + 0012 OC-2325 + 0013 OC-2183/2185 + 0014 OC-2326 + 0019 OC-2327/2250 10/100 Ethernet Adapter + 108d 0016 OC-2327 Rapidfire 10/100 Ethernet Adapter + 108d 0017 OC-2250 GoCard 10/100 Ethernet Adapter + 0021 OC-6151/6152 [RapidFire ATM 155] + 0022 ATM Adapter +108e Oracle/SUN + 0001 EBUS + 1000 STP2003QFP [PCIO] EBUS + 1001 Happy Meal 10/100 Ethernet [hme] + 1100 RIO EBUS + 108e 1100 RIO EBUS on Blade 100 motherboard + 1101 RIO 10/100 Ethernet [eri] + 108e 1101 RIO GEM on Blade 100 motherboard + 1102 RIO 1394 + 108e 1102 RIO 1394 on Blade 100 motherboard + 1103 RIO USB + 108e 1103 RIO USB on Blade 100 motherboard + 1647 Broadcom 570x 10/100/1000 Ethernet [bge] + 1648 Broadcom 570x 10/100/1000 Ethernet [bge] + 16a7 Broadcom 570x 10/100/1000 Ethernet [bge] + 16a8 Broadcom 570x 10/100/1000 Ethernet [bge] + 2bad GEM 10/100/1000 Ethernet [ge] + 5000 Simba Advanced PCI Bridge + 108e 5000 Netra AX1105-500 + 5043 SunPCI Co-processor + 5ca0 Crypto Accelerator 6000 [mca] + 6300 Intel 21554 PCI-PCI bus bridge [db21554] + 6301 Intel 21554 PCI-PCI bus bridge [db21554] + 6302 Intel 21554 PCI-PCI bus bridge [db21554] + 6303 Intel 21554 PCI-PCI bus bridge [db21554] + 6310 Intel 21554 PCI-PCI bus bridge [db21554] + 6311 Intel 21554 PCI-PCI bus bridge [db21554] + 6312 Intel 21554 PCI-PCI bus bridge [db21554] + 6313 Intel 21554 PCI-PCI bus bridge [db21554] + 6320 Intel 21554 PCI-PCI bus bridge [db21554] + 6323 Intel 21554 PCI-PCI bus bridge [db21554] + 6330 Intel 21554 PCI-PCI bus bridge [db21554] + 6331 Intel 21554 PCI-PCI bus bridge [db21554] + 6332 Intel 21554 PCI-PCI bus bridge [db21554] + 6333 Intel 21554 PCI-PCI bus bridge [db21554] + 6340 Intel 21554 PCI-PCI bus bridge [db21554] + 6343 Intel 21554 PCI-PCI bus bridge [db21554] + 6350 Intel 21554 PCI-PCI bus bridge [db21554] + 6353 Intel 21554 PCI-PCI bus bridge [db21554] + 6722 Intel 21554 PCI-PCI bus bridge [db21554] + 676e SunPCiIII + 7063 SunPCiII / SunPCiIIpro + 8000 Psycho PCI Bus Module + 8001 Schizo PCI Bus Module + 8002 Schizo+ PCI Bus Module + 80f0 PCIe switch [px] + 80f8 PCIe switch [px] + 9010 PCIe/PCI bridge switch [pxb_plx] + 9020 PCIe/PCI bridge switch [pxb_plx] + 9102 Davicom Fast Ethernet driver for Davicom DM9102A [dmfe] + a000 Psycho UPA-PCI Bus Module [pcipsy] + a001 Psycho UPA-PCI Bus Module [pcipsy] + 108e a001 Ultra IIe on Blade 100 motherboard + a801 Schizo Fireplane-PCI bus bridge module [pcisch] + aaaa Multithreaded Shared 10GbE Ethernet Network Controller + abba Cassini 10/100/1000 + abcd Multithreaded 10-Gigabit Ethernet Network Controller + c416 Sun Fire System/System Controller Interface chip [sbbc] +108f Systemsoft +1090 Compro Computer Services, Inc. + 4610 PCI RTOM + 4620 GPIO HSD +1091 Intergraph Corporation + 0020 3D graphics processor + 0021 3D graphics processor w/Texturing + 0040 3D graphics frame buffer + 0041 3D graphics frame buffer + 0060 Proprietary bus bridge + 00e4 Powerstorm 4D50T + 0720 Motion JPEG codec + 0780 Intense3D Wildcat 3410 (MSMT496) + 07a0 Sun Expert3D-Lite Graphics Accelerator + 1091 Sun Expert3D Graphics Accelerator +1092 Diamond Multimedia Systems + 0028 Viper V770 + 1092 4a00 Viper V770 32MB + 00a0 Speedstar Pro SE + 00a8 Speedstar 64 + 0550 Viper V550 + 08d4 Supra 2260 Modem + 094c SupraExpress 56i Pro + 1001 Video Crunch It 1001 capture card + 1092 Viper V330 + 6120 Maximum DVD + 8810 Stealth SE + 8811 Stealth 64/SE + 8880 Stealth + 8881 Stealth + 88b0 Stealth 64 + 88b1 Stealth 64 + 88c0 Stealth 64 + 88c1 Stealth 64 + 88d0 Stealth 64 + 88d1 Stealth 64 + 88f0 Stealth 64 + 88f1 Stealth 64 + 9999 DMD-I0928-1 "Monster sound" sound chip +1093 National Instruments + 0160 PCI-DIO-96 + 0162 PCI-MIO-16XE-50 + 0fe1 PXI-8320 + 1150 PCI-6533 (PCI-DIO-32HS) + 1170 PCI-MIO-16XE-10 + 1180 PCI-MIO-16E-1 + 1190 PCI-MIO-16E-4 + 11b0 PXI-6070E + 11c0 PXI-6040E + 11d0 PXI-6030E + 1270 PCI-6032E + 1290 PCI-6704 + 12b0 PCI-6534 + 1310 PCI-6602 + 1320 PXI-6533 + 1330 PCI-6031E + 1340 PCI-6033E + 1350 PCI-6071E + 1360 PXI-6602 + 13c0 PXI-6508 + 1490 PXI-6534 + 14e0 PCI-6110 + 14f0 PCI-6111 + 1580 PXI-6031E + 15b0 PXI-6071E + 1710 PXI-6509 + 17c0 PXI-5690 + 17d0 PCI-6503 + 1870 PCI-6713 + 1880 PCI-6711 + 18b0 PCI-6052E + 18c0 PXI-6052E + 1920 PXI-6704 + 1930 PCI-6040E + 19c0 PCI-4472 + 1aa0 PXI-4110 + 1ad0 PCI-6133 + 1ae0 PXI-6133 + 1e30 PCI-6624 + 1e40 PXI-6624 + 1e50 PXI-5404 + 2410 PCI-6733 + 2420 PXI-6733 + 2430 PCI-6731 + 2470 PCI-4474 + 24a0 PCI-4065 + 24b0 PXI-4200 + 24f0 PXI-4472 + 2510 PCI-4472 + 2520 PCI-4474 + 27a0 PCI-6123 + 27b0 PXI-6123 + 2880 DAQCard-6601 + 2890 PCI-6036E + 28a0 PXI-4461 + 28b0 PCI-6013 + 28c0 PCI-6014 + 28d0 PCI-5122 + 28e0 PXI-5122 + 29f0 PXI-7334 + 2a00 PXI-7344 + 2a60 PCI-6023E + 2a70 PCI-6024E + 2a80 PCI-6025E + 2ab0 PXI-6025E + 2b10 PXI-6527 + 2b20 PCI-6527 + 2b80 PXI-6713 + 2b90 PXI-6711 + 2c60 PCI-6601 + 2c70 PXI-6601 + 2c80 PCI-6035E + 2c90 PCI-6703 + 2ca0 PCI-6034E + 2cb0 PCI-7344 + 2cc0 PXI-6608 + 2d20 PXI-5600 + 2db0 PCI-6608 + 2dc0 PCI-4070 + 2dd0 PXI-4070 + 2eb0 PXI-4472 + 2ec0 PXI-6115 + 2ed0 PCI-6115 + 2ee0 PXI-6120 + 2ef0 PCI-6120 + 2fd1 PCI-7334 + 2fd2 PCI-7350 + 2fd3 PCI-7342 + 2fd5 PXI-7350 + 2fd6 PXI-7342 + 7003 PCI-6551 + 7004 PXI-6551 + 700b PXI-5421 + 700c PCI-5421 + 701a VXIpc-87xB + 701b VXIpc-770 + 7023 PXI-2593 + 7027 PCI-MXI-2 Universal + 702c PXI-7831R + 702d PCI-7831R + 702e PXI-7811R + 702f PCI-7811R + 7030 PCI-CAN (Series 2) + 7031 PCI-CAN/2 (Series 2) + 7032 PCI-CAN/LS (Series 2) + 7033 PCI-CAN/LS2 (Series 2) + 7034 PCI-CAN/DS (Series 2) + 7035 PXI-8460 (Series 2, 1 port) + 7036 PXI-8460 (Series 2, 2 ports) + 7037 PXI-8461 (Series 2, 1 port) + 7038 PXI-8461 (Series 2, 2 ports) + 7039 PXI-8462 (Series 2) + 703f PXI-2566 + 7040 PXI-2567 + 7044 MXI-4 Connection Monitor + 7047 PXI-6653 + 704c PXI-2530 + 704f PXI-4220 + 7050 PXI-4204 + 7055 PXI-7830R + 7056 PCI-7830R + 705a PCI-CAN/XS (Series 2) + 705b PCI-CAN/XS2 (Series 2) + 705c PXI-8464 (Series 2, 1 port) + 705d PXI-8464 (Series 2, 2 ports) + 705e cRIO-9102 + 7060 PXI-5610 + 7064 PXI-1045 Trigger Routing Module + 7065 PXI-6652 + 7066 PXI-6651 + 7067 PXI-2529 + 7068 PCI-CAN/SW (Series 2) + 7069 PCI-CAN/SW2 (Series 2) + 706a PXI-8463 (Series 2, 1 port) + 706b PXI-8463 (Series 2, 2 ports) + 7073 PCI-6723 + 7074 PXI-7833R + 7075 PXI-6552 + 7076 PCI-6552 + 707c PXI-1428 + 707e PXI-4462 + 7080 PXI-8430/2 (RS-232) Interface + 7081 PXI-8431/2 (RS-485) Interface + 7083 PCI-7833R + 7085 PCI-6509 + 7086 PXI-6528 + 7087 PCI-6515 + 7088 PCI-6514 + 708c PXI-2568 + 708d PXI-2569 + 70a9 PCI-6528 + 70aa PCI-6229 + 70ab PCI-6259 + 70ac PCI-6289 + 70ad PXI-6251 + 70ae PXI-6220 + 70af PCI-6221 + 70b0 PCI-6220 + 70b1 PXI-6229 + 70b2 PXI-6259 + 70b3 PXI-6289 + 70b4 PCI-6250 + 70b5 PXI-6221 + 70b6 PCI-6280 + 70b7 PCI-6254 + 70b8 PCI-6251 + 70b9 PXI-6250 + 70ba PXI-6254 + 70bb PXI-6280 + 70bc PCI-6284 + 70bd PCI-6281 + 70be PXI-6284 + 70bf PXI-6281 + 70c0 PCI-6143 + 70c3 PCI-6511 + 70c4 PXI-7330 + 70c5 PXI-7340 + 70c6 PCI-7330 + 70c7 PCI-7340 + 70c8 PCI-6513 + 70c9 PXI-6515 + 70ca PCI-1405 + 70cc PCI-6512 + 70cd PXI-6514 + 70ce PXI-1405 + 70cf PCIe-GPIB + 70d0 PXI-2570 + 70d1 PXI-6513 + 70d2 PXI-6512 + 70d3 PXI-6511 + 70d4 PCI-6722 + 70d6 PXI-4072 + 70d7 PXI-6541 + 70d8 PXI-6542 + 70d9 PCI-6541 + 70da PCI-6542 + 70db PCI-8430/2 (RS-232) Interface + 70dc PCI-8431/2 (RS-485) Interface + 70dd PXI-8430/4 (RS-232) Interface + 70de PXI-8431/4 (RS-485) Interface + 70df PCI-8430/4 (RS-232) Interface + 70e0 PCI-8431/4 (RS-485) Interface + 70e1 PXI-2532 + 70e2 PXI-8430/8 (RS-232) Interface + 70e3 PXI-8431/8 (RS-485) Interface + 70e4 PCI-8430/8 (RS-232) Interface + 70e5 PCI-8431/8 (RS-485) Interface + 70e6 PXI-8430/16 (RS-232) Interface + 70e7 PCI-8430/16 (RS-232) Interface + 70e8 PXI-8432/2 (Isolated RS-232) Interface + 70e9 PXI-8433/2 (Isolated RS-485) Interface + 70ea PCI-8432/2 (Isolated RS-232) Interface + 70eb PCI-8433/2 (Isolated RS-485) Interface + 70ec PXI-8432/4 (Isolated RS-232) Interface + 70ed PXI-8433/4 (Isolated RS-485) Interface + 70ee PCI-8432/4 (Isolated RS-232) Interface + 70ef PCI-8433/4 (Isolated RS-485) Interface + 70f0 PXI-5922 + 70f1 PCI-5922 + 70f2 PCI-6224 + 70f3 PXI-6224 + 70f6 cRIO-9101 + 70f7 cRIO-9103 + 70f8 cRIO-9104 + 70ff PXI-6723 + 7100 PXI-6722 + 7104 PCIx-1429 + 7105 PCIe-1429 + 710a PXI-4071 + 710d PXI-6143 + 710e PCIe-GPIB + 710f PXI-5422 + 7110 PCI-5422 + 7111 PXI-5441 + 7119 PXI-6561 + 711a PXI-6562 + 711b PCI-6561 + 711c PCI-6562 + 7120 PCI-7390 + 7121 PXI-5122EX + 7122 PCI-5122EX + 7123 PXIe-5653 + 7124 PCI-6510 + 7125 PCI-6516 + 7126 PCI-6517 + 7127 PCI-6518 + 7128 PCI-6519 + 7137 PXI-2575 + 713c PXI-2585 + 713d PXI-2586 + 7142 PXI-4224 + 7144 PXI-5124 + 7145 PCI-5124 + 7146 PCI-6132 + 7147 PXI-6132 + 7148 PCI-6122 + 7149 PXI-6122 + 714c PXI-5114 + 714d PCI-5114 + 7150 PXI-2564 + 7152 PCI-5640R + 7156 PXI-1044 Trigger Routing Module + 715d PCI-1426 + 7167 PXI-5412 + 7168 PCI-5412 + 716b PCI-6230 + 716c PCI-6225 + 716d PXI-6225 + 716f PCI-4461 + 7170 PCI-4462 + 7171 PCI-6010 + 7174 PXI-8360 + 7177 PXI-6230 + 717d PCIe-6251 + 717f PCIe-6259 + 7187 PCI-1410 + 718b PCI-6521 + 718c PXI-6521 + 7191 PCI-6154 + 7193 PXI-7813R + 7194 PCI-7813R + 7195 PCI-8254R + 7197 PXI-5402 + 7198 PCI-5402 + 719f PCIe-6535 + 71a0 PCIe-6536 + 71a3 PXI-5650 + 71a4 PXI-5652 + 71a5 PXI-2594 + 71a7 PXI-2595 + 71a9 PXI-2596 + 71aa PXI-2597 + 71ab PXI-2598 + 71ac PXI-2599 + 71ad PCI-GPIB+ + 71ae PCIe-1430 + 71b7 PXI-1056 Trigger Routing Module + 71b8 PXI-1045 Trigger Routing Module + 71b9 PXI-1044 Trigger Routing Module + 71bb PXI-2584 + 71bc PCI-6221 (37-pin) + 71bf PCIe-1427 + 71c5 PCI-6520 + 71c6 PXI-2576 + 71c7 cRIO-9072 + 71dc PCI-1588 + 71e0 PCI-6255 + 71e1 PXI-6255 + 71e2 PXI-5406 + 71e3 PCI-5406 + 71fc PXI-4022 + 7209 PCI-6233 + 720a PXI-6233 + 720b PCI-6238 + 720c PXI-6238 + 7260 PXI-5142 + 7261 PCI-5142 + 726d PXI-5651 + 7273 PXI-4461 + 7274 PXI-4462 + 7279 PCI-6232 + 727a PXI-6232 + 727b PCI-6239 + 727c PXI-6239 + 727e SMBus Controller + 1093 75ac PXIe-8388 + 1093 75ad PXIe-8389 + 1093 7650 PXIe-8381 + 1093 8360 PXIe-8360 + 1093 8370 PXIe-8370 + 1093 8375 PXIe-8375 + 7281 PCI-6236 + 7282 PXI-6236 + 7283 PXI-2554 + 7288 PXIe-5611 + 7293 PCIe-8255R + 729d cRIO-9074 + 72a4 PCIe-4065 + 72a7 PCIe-6537 + 72a8 PXI-5152 + 72a9 PCI-5152 + 72aa PXI-5105 + 72ab PCI-5105 + 72b8 PXI-6682 + 72d0 PXI-2545 + 72d1 PXI-2546 + 72d2 PXI-2547 + 72d3 PXI-2548 + 72d4 PXI-2549 + 72d5 PXI-2555 + 72d6 PXI-2556 + 72d7 PXI-2557 + 72d8 PXI-2558 + 72d9 PXI-2559 + 72e8 PXIe-6251 + 72e9 PXIe-6259 + 72ef PXI-4498 + 72f0 PXI-4496 + 72fb PXIe-6672 + 730e PXI-4130 + 730f PXI-5922EX + 7310 PCI-5922EX + 731c PXI-2535 + 731d PXI-2536 + 7322 PXIe-6124 + 7327 PXI-6529 + 732c VXI-8360T + 7331 PXIe-5602 + 7332 PXIe-5601 + 7333 PXI-5900 + 7335 PXI-2533 + 7336 PXI-2534 + 7342 PXI-4461 + 7349 PXI-5154 + 734a PCI-5154 + 7357 PXI-4065 + 7359 PXI-4495 + 7370 PXI-4461 + 7373 sbRIO-9601 + 7374 IOtech-9601 + 7375 sbRIO-9602 + 7378 sbRIO-9641 + 737d PXI-5124EX + 7384 PXI-7851R + 7385 PXI-7852R + 7386 PCIe-7851R + 7387 PCIe-7852R + 7390 PXI-7841R + 7391 PXI-7842R + 7392 PXI-7853R + 7393 PCIe-7841R + 7394 PCIe-7842R + 7397 sbRIO-9611 + 7398 sbRIO-9612 + 7399 sbRIO-9631 + 739a sbRIO-9632 + 739b sbRIO-9642 + 73a1 PXIe-4498 + 73a2 PXIe-4496 + 73a5 PXIe-5641R + 73a7 PXI-8250 Chassis Monitor Module + 73a8 PXI-8511 CAN/LS + 73a9 PXI-8511 CAN/LS + 73aa PXI-8512 CAN/HS + 73ab PXI-8512 CAN/HS + 73ac PXI-8513 CAN/XS + 73ad PXI-8513 CAN/XS + 73af PXI-8516 LIN + 73b1 PXI-8517 FlexRay + 73b2 PXI-8531 CANopen + 73b3 PXI-8531 CANopen + 73b4 PXI-8532 DeviceNet + 73b5 PXI-8532 DeviceNet + 73b6 PCI-8511 CAN/LS + 73b7 PCI-8511 CAN/LS + 73b8 PCI-8512 CAN/HS + 73b9 PCI-8512 CAN/HS + 73ba PCI-8513 CAN/XS + 73bb PCI-8513 CAN/XS + 73bd PCI-8516 LIN + 73bf PCI-8517 FlexRay + 73c0 PCI-8531 CANopen + 73c1 PCI-8531 CANopen + 73c2 PCI-8532 DeviceNet + 73c3 PCI-8532 DeviceNet + 73c5 PXIe-2527 + 73c6 PXIe-2529 + 73c8 PXIe-2530 + 73c9 PXIe-2532 + 73ca PXIe-2569 + 73cb PXIe-2575 + 73cc PXIe-2593 + 73d5 PXI-7951R + 73d6 PXI-7952R + 73d7 PXI-7953R + 73e1 PXI-7854R + 73ec PXI-7954R + 73ed cRIO-9073 + 73f0 PXI-5153 + 73f1 PCI-5153 + 73f4 PXI-2515 + 73f6 cRIO-9111 + 73f7 cRIO-9112 + 73f8 cRIO-9113 + 73f9 cRIO-9114 + 73fa cRIO-9116 + 73fb cRIO-9118 + 7404 PXI-4132 + 7405 PXIe-6674T + 7406 PXIe-6674 + 740e PCIe-8430/16 (RS-232) Interface + 740f PCIe-8430/8 (RS-232) Interface + 7410 PCIe-8431/16 (RS-485) Interface + 7411 PCIe-8431/8 (RS-485) Interface + 7414 PCIe-GPIB+ + 741c PXI-5691 + 741d PXI-5695 + 743c CSC-3059 + 7448 PXI-2510 + 7454 PXI-2512 + 7455 PXI-2514 + 7456 PXIe-2512 + 7457 PXIe-2514 + 745a PXI-6682H + 745e PXI-5153EX + 745f PCI-5153EX + 7460 PXI-5154EX + 7461 PCI-5154EX + 746d PXIe-5650 + 746e PXIe-5651 + 746f PXIe-5652 + 7472 PXI-2800 + 7495 PXIe-5603 + 7497 PXIe-5605 + 74ae PXIe-2515 + 74b4 PXI-2531 + 74b5 PXIe-2531 + 74c1 PXIe-8430/16 (RS-232) Interface + 74c2 PXIe-8430/8 (RS-232) Interface + 74c3 PXIe-8431/16 (RS-485) Interface + 74c4 PXIe-8431/8 (RS-485) Interface + 74d5 PXIe-5630 + 74d9 PCIe-8432/2 (Isolated RS-232) Interface + 74da PCIe-8433/2 (Isolated RS-485) Interface + 74db PCIe-8432/4 (Isolated RS-232) Interface + 74dc PCIe-8433/4 (Isolated RS-485) Interface + 74e8 NI 9148 + 7515 PCIe-8430/2 (RS-232) Interface + 7516 PCIe-8430/4 (RS-232) Interface + 7517 PCIe-8431/2 (RS-485) Interface + 7518 PCIe-8431/4 (RS-485) Interface + 751b cRIO-9081 + 751c cRIO-9082 + 7528 PXIe-4497 + 7529 PXIe-4499 + 752a PXIe-4492 + 7539 NI 9157 + 753a NI 9159 + 7598 PXI-2571 + 75a4 PXI-4131A + 75b1 PCIe-7854R + 75ba PXI-2543 + 75bb PXIe-2543 + 75e5 PXI-6683 + 75e6 PXI-6683H + 75ef PXIe-5632 + 761c VXI-8360LT + 761f PXI-2540 + 7620 PXIe-2540 + 7621 PXI-2541 + 7622 PXIe-2541 + 7626 NI 9154 + 7627 NI 9155 + 7638 PXI-2720 + 7639 PXI-2722 + 763a PXIe-2725 + 763b PXIe-2727 + 763c PXI-4465 + 764b PXIe-2790 + 764c PXI-2520 + 764d PXI-2521 + 764e PXI-2522 + 764f PXI-2523 + 7652 PXIe-4080 + 7654 PXI-2796 + 7655 PXI-2797 + 7656 PXI-2798 + 7657 PXI-2799 + 765d PXI-2542 + 765e PXIe-2542 + 765f PXI-2544 + 7660 PXIe-2544 + 766d PCIe-6535B + 766e PCIe-6536B + 766f PCIe-6537B + 76a3 PXIe-6535B + 76a4 PXIe-6536B + 76a5 PXIe-6537B + 76d8 PXIe-4081 + 76d9 PXIe-4082 + 77a8 PXIe-6375 + 783e PXI-8368 + 7882 PXIe-6376 + 7883 PXIe-6378 + 799e PXIe-6386 + 799f PXIe-6396 + 9020 PXI-2501 + 9030 PXI-2503 + 9040 PXI-2527 + 9050 PXI-2565 + 9060 PXI-2590 + 9070 PXI-2591 + 9080 PXI-2580 + 9090 PCI-4021 + 90a0 PXI-4021 + a001 PCI-MXI-2 + b001 PCI-1408 + b011 PXI-1408 + b021 PCI-1424 + b022 PXI-1424 + b031 PCI-1413 + b041 PCI-1407 + b051 PXI-1407 + b061 PCI-1411 + b071 PCI-1422 + b081 PXI-1422 + b091 PXI-1411 + b0b1 PCI-1409 + b0c1 PXI-1409 + b0e1 PCI-1428 + c4c4 PXIe/PCIe Device + 1093 728a PXIe-5421 + 1093 728b PXIe-5442 + 1093 728d PXIe-5451 + 1093 72a2 PXIe-5122 + 1093 72da PXIe-5422 + 1093 72f7 PXIe-6535 + 1093 72f8 PXIe-6536 + 1093 72f9 PXIe-6537 + 1093 7326 PCIe-6509 + 1093 736c PXIe-4140 + 1093 738b PXIe-5622 + 1093 73c4 PXIe-5450 + 1093 73c7 PXIe-6545 + 1093 73d4 PXIe-6544 + 1093 7425 PCIe-6320 + 1093 7427 PCIe-6321 + 1093 7428 PXIe-6323 + 1093 7429 PCIe-6323 + 1093 742a PXIe-6341 + 1093 742b PCIe-6341 + 1093 742c PXIe-6343 + 1093 742d PCIe-6343 + 1093 742f PCIe-6351 + 1093 7431 PCIe-6353 + 1093 7432 PXIe-6361 + 1093 7433 PCIe-6361 + 1093 7434 PXIe-6363 + 1093 7435 PCIe-6363 + 1093 7436 PXIe-6356 + 1093 7437 PXIe-6358 + 1093 7438 PXIe-6366 + 1093 7439 PXIe-6368 + 1093 7468 PXIe-5185 + 1093 7469 PXIe-5186 + 1093 7492 PXIe-4300 + 1093 7498 PXIe-6548 + 1093 7499 PXIe-6547 + 1093 74a8 PXIe-4330 + 1093 74a9 PXIe-4331 + 1093 74b1 PXIe-4154 + 1093 74b2 PXIe-4353 + 1093 74b6 PCIe-1433 + 1093 74cd PXIe-5643R + 1093 74d0 PXIe-7961R + 1093 74dd PXIe-6376 + 1093 74de PXIe-6378 + 1093 74e2 PXIe-7962R + 1093 74e3 PXIe-7965R + 1093 74e5 PXIe-4844 + 1093 74f3 PCIe-5140 + 1093 753c PXIe-1435 + 1093 7548 PXIe-5622 (25MHz DDC) + 1093 754d PCIe-5155 + 1093 7551 PXIe-6556 + 1093 7553 PCIe-1473R + 1093 7570 PCIe-1474R + 1093 7571 PXIe-1475R + 1093 7572 PXIe-1476R + 1093 75a2 PXIe-5693 + 1093 75a3 PXIe-5694 + 1093 75a5 PXIe-4141 + 1093 75ce PXIe-7966R + 1093 75cf PXIe-4357 + 1093 75d2 PXIe-RevB-5643R + 1093 75d3 PXIe-5644R + 1093 75ee PXIe-5645R + 1093 7613 PXIe-6555 + 1093 7619 PXIe-5185 + 1093 761a PXIe-5186 + 1093 7629 PXIe-4142 + 1093 762a PXIe-4143 + 1093 762b PXIe-4138 + 1093 762c PXIe-4144 + 1093 762d PXIe-4145 + 1093 762e PXIe-5606 + 1093 7644 PXIe-4841 + 1093 764a PCIe-8237R-S + 1093 7658 PXIe-5162 (4CH) + 1093 76ab PXIe-4322 + 1093 76ad PXIe-4112 + 1093 76ae PXIe-4113 + 1093 76b5 PXIe-7971R + 1093 76b6 PXIe-7972R + 1093 76b7 PXIe-7975R + 1093 76b8 PXIe-5696 + 1093 76b9 PXIe-5654 + 1093 76c8 PXIe-6614 + 1093 76c9 PXIe-6612 + 1093 76cb PXIe-5646R + 1093 76cc PXIe-5162 (2CH) + 1093 76ce CVS-1459 + 1093 76d0 PXIe-5160 (2CH) + 1093 76d1 PXIe-5160 (4CH) + 1093 76dc PXIe-4610 + 1093 76ec PXIe-2524 + 1093 76ed PXIe-2525 + 1093 76ee PXIe-2526 + 1093 76ef PXIe-2737 + 1093 76f0 PXIe-2738 + 1093 76f1 PXIe-2739 + 1093 76fb PCIe-1473R-LX110 + 1093 76fc PXIe-5105 + 1093 76fd PXIe-5114 + 1093 76fe PXIe-5644R + 1093 76ff PXIe-5644R + 1093 7700 PXIe-5644R + 1093 7701 PXIe-5645R + 1093 7702 PXIe-5645R + 1093 7703 PXIe-5645R + 1093 770c PXIe-4139 + 1093 7711 PXIe-4464 + 1093 7712 PXIe-4463 + 1093 7716 PCIe-6612 + 1093 771d Unconfigured CA4 Switch + 1093 771e PXIe-4339 + 1093 7735 cRIO-9033 + 1093 773e PXIe-5624R + 1093 774b cRIO-9031 + 1093 774d cRIO-9034 + 1093 7755 cRIO-9030 + 1093 7768 PXIe-2747 + 1093 7769 PXIe-2748 + 1093 776a PXIe-2746 + 1093 7777 PXIe-7976R + 1093 7782 PXIe-5646R + 1093 7783 PXIe-5646R + 1093 7784 PXIe-5646R + 1093 7790 PXIe-5170R (4CH) + 1093 7791 PXIe-5170R (8CH) + 1093 7793 PXIe-5171R (8CH) + 1093 77a5 PXIe-6345 + 1093 77a6 PXIe-6355 + 1093 77a7 PXIe-6365 + 1093 77a8 PXIe-6375 + 1093 77aa CVS-1458 + 1093 77ad IC-3173 + 1093 77b4 PXIe-7820R + 1093 77b5 PXIe-7821R + 1093 77b6 PXIe-7822R + 1093 77b9 cRIO-9038 + 1093 77ba PXIe-4136 + 1093 77bb PXIe-4137 + 1093 77c0 PXIe-5624R + 1093 77c1 PXIe-5624R + 1093 77c2 PXIe-5624R + 1093 77ca PXIe-6738 + 1093 77cb PXIe-6739 + 1093 77db cRIO-9035 + 1093 77dc cRIO-9036 + 1093 77dd cRIO-9039 + 1093 7802 PXIe-4302 + 1093 7803 PXIe-4303 + 1093 7805 PXIe-4305 + 1093 786f PXIe-4163 + 1093 788e PXIe-4304 + 1093 78f8 NI FlexRIO Module (KU035) + 1093 78f9 NI FlexRIO Module (KU040) + 1093 78fa NI FlexRIO Module (KU060) + 1093 78ff PXIe-4162 + 1093 7995 PXIe-7911R + 1093 7996 PXIe-7912R + 1093 7997 PXIe-7915R + 1093 79d3 NI FlexRIO PCIe Module (KU035) + 1093 79d4 NI FlexRIO PCIe Module (KU040) + 1093 79d5 NI FlexRIO PCIe Module (KU060) + c801 PCI-GPIB + c811 PCI-GPIB+ + c821 PXI-GPIB + c831 PMC-GPIB + c840 PCI-GPIB + d130 PCI-232/2 Interface + d140 PCI-232/4 Interface + d150 PCI-232/8 Interface + d160 PCI-485/2 Interface + d170 PCI-485/4 Interface + d190 PXI-8422/2 (Isolated RS-232) Interface + d1a0 PXI-8422/4 (Isolated RS-232) Interface + d1b0 PXI-8423/2 (Isolated RS-485) Interface + d1c0 PXI-8423/4 (Isolated RS-485) Interface + d1d0 PXI-8420/2 (RS-232) Interface + d1e0 PXI-8420/4 (RS-232) Interface + d1f0 PXI-8420/8 (RS-232) Interface + d1f1 PXI-8420/16 (RS-232) Interface + d230 PXI-8421/2 (RS-485) Interface + d240 PXI-8421/4 (RS-485) Interface + d250 PCI-232/2 (Isolated) Interface + d260 PCI-485/2 (Isolated) Interface + d270 PCI-232/4 (Isolated) Interface + d280 PCI-485/4 (Isolated) Interface + d290 PCI-485/8 Interface + d2a0 PXI-8421/8 (RS-485) Interface + d2b0 PCI-232/16 Interface + e111 PCI-CAN + e131 PXI-8461 (1 port) + e141 PCI-CAN/LS + e151 PXI-8460 (1 port) + e211 PCI-CAN/2 + e231 PXI-8461 (2 ports) + e241 PCI-CAN/LS2 + e251 PXI-8460 (2 ports) + e261 PCI-CAN/DS + e271 PXI-8462 + f110 VMEpc-650 + f120 VXIpc-650 + fe00 VXIpc-87x + fe41 VXIpc-860 + fe51 VXIpc-74x + fe61 VXIpc-850 + fe70 VXIpc-880 +1094 First International Computers [FIC] +# nee CMD Technology Inc +1095 Silicon Image, Inc. + 0240 Adaptec AAR-1210SA SATA HostRAID Controller + 0242 AAR-1220SA SATA RAID Controller + 0640 PCI0640 + 0643 PCI0643 + 0646 PCI0646 + 0647 PCI0647 + 0648 PCI0648 + 1043 8025 CUBX motherboard + 0649 SiI 0649 Ultra ATA/100 PCI to ATA Host Controller + 0e11 005d Integrated Ultra ATA-100 Dual Channel Controller + 0e11 007e Integrated Ultra ATA-100 IDE RAID Controller + 101e 0649 AMI MegaRAID IDE 100 Controller + 0650 PBC0650A + 0670 USB0670 + 1095 0670 USB0670 + 0673 USB0673 + 0680 PCI0680 Ultra ATA-133 Host Controller + 1095 0680 SiI 0680 ATA/133 Controller + 1095 3680 Winic W-680 (Silicon Image 680 based) + 3112 SiI 3112 [SATALink/SATARaid] Serial ATA Controller + 1095 3112 SiI 3112 SATALink Controller + 1095 6112 SiI 3112 SATARaid Controller + 9005 0250 SATAConnect 1205SA Host Controller + 3114 SiI 3114 [SATALink/SATARaid] Serial ATA Controller + 1043 8167 A8N-SLI Deluxe/Premium Mainboard + 1095 3114 SiI 3114 SATALink Controller + 1095 6114 SiI 3114 SATARaid Controller + 3124 SiI 3124 PCI-X Serial ATA Controller + 1095 3124 SiI 3124 PCI-X Serial ATA Controller + 3132 SiI 3132 Serial ATA Raid II Controller + 3512 SiI 3512 [SATALink/SATARaid] Serial ATA Controller + 1095 3512 SiI 3512 SATALink Controller + 1095 6512 SiI 3512 SATARaid Controller + 3531 SiI 3531 [SATALink/SATARaid] Serial ATA Controller + 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] +1096 Alacron +1097 Appian Technology +1098 Quantum Designs (H.K.) Ltd + 0001 QD-8500 + 0002 QD-8580 +1099 Samsung Electronics Co., Ltd +109a Packard Bell +109b Gemlight Computer Ltd. +109c Megachips Corporation +109d Zida Technologies Ltd. +109e Brooktree Corporation + 0310 Bt848 Video Capture + 032e Bt878 Video Capture + 0350 Bt848 Video Capture + 0351 Bt849A Video capture + 0369 Bt878 Video Capture + 1002 0001 TV-Wonder + 1002 0003 TV-Wonder/VE + 036c Bt879(??) Video Capture + 13e9 0070 Win/TV (Video Section) + 036e Bt878 Video Capture + 0000 0001 Euresys Picolo PCIe + 0000 0002 Euresys PICOLO Pro 2 + 0000 0004 Euresys PICOLO Pro 3E + 0070 13eb WinTV Series + 0070 ff01 Viewcast Osprey 200 + 0071 0101 DigiTV PCI + 107d 6606 WinFast TV 2000 + 11bd 0012 PCTV pro (TV + FM stereo receiver) + 11bd 001c PCTV Sat (DBC receiver) + 127a 0001 Bt878 Mediastream Controller NTSC + 127a 0002 Bt878 Mediastream Controller PAL BG + 127a 0003 Bt878a Mediastream Controller PAL BG + 127a 0048 Bt878/832 Mediastream Controller + 144f 3000 MagicTView CPH060 - Video + 1461 0002 TV98 Series (TV/No FM/Remote) + 1461 0003 AverMedia UltraTV PCI 350 + 1461 0004 AVerTV WDM Video Capture + 1461 0761 AverTV DVB-T + 1461 0771 AverMedia AVerTV DVB-T 771 + 14f1 0001 Bt878 Mediastream Controller NTSC + 14f1 0002 Bt878 Mediastream Controller PAL BG + 14f1 0003 Bt878a Mediastream Controller PAL BG + 14f1 0048 Bt878/832 Mediastream Controller + 1805 0101 Euresys PICOLO Tetra + 1805 0102 Euresys PICOLO Tetra + 1805 0103 Euresys PICOLO Tetra + 1805 0104 Euresys PICOLO Tetra + 1805 0105 Euresys PICOLO Tetra + 1805 0106 Euresys PICOLO Tetra + 1805 0107 Euresys PICOLO Tetra + 1805 0108 Euresys PICOLO Tetra + 1805 0201 Euresys PICOLO Tetra-X + 1805 0202 Euresys PICOLO Tetra-X + 1805 0203 Euresys PICOLO Tetra-X + 1805 0204 Euresys PICOLO Tetra-X + 1805 0401 Euresys PICOLO Tymo + 1805 0402 Euresys PICOLO Tymo + 1805 0403 Euresys PICOLO Tymo + 1805 0404 Euresys PICOLO Tymo + 1805 1001 Euresys PICOLO Junior 4 + 1822 0001 VisionPlus DVB card + 1851 1850 FlyVideo'98 - Video + 1851 1851 FlyVideo II + 1852 1852 FlyVideo'98 - Video (with FM Tuner) + 18ac d500 DViCO FusionHDTV5 Lite + 270f fc00 Digitop DTT-1000 +# Vendor/ID appear to be randomly chosen + aa00 1460 Spectra8 CardA Input0 +# Vendor/ID appear to be randomly chosen + aa01 1461 Spectra8 CardA Input1 +# Vendor/ID appear to be randomly chosen + aa02 1462 Spectra8 CardA Input2 +# Vendor/ID appear to be randomly chosen + aa03 1463 Spectra8 CardA Input3 +# Vendor/ID appear to be randomly chosen + aa04 1464 Spectra8 CardB Input0 +# Vendor/ID appear to be randomly chosen + aa05 1465 Spectra8 CardB Input1 +# Vendor/ID appear to be randomly chosen + aa06 1466 Spectra8 CardB Input2 +# Vendor/ID appear to be randomly chosen + aa07 1467 Spectra8 CardB Input3 +# Vendor/ID appear to be randomly chosen + aa08 1468 Spectra8 CardC Input0 +# Vendor/ID appear to be randomly chosen + aa09 1469 Spectra8 CardC Input1 +# Vendor/ID appear to be randomly chosen + aa0a 146a Spectra8 CardC Input2 +# Vendor/ID appear to be randomly chosen + aa0b 146b Spectra8 CardC Input3 +# Vendor/ID appear to be randomly chosen + aa0c 146c Spectra8 CardD Input0 +# Vendor/ID appear to be randomly chosen + aa0d 146d Spectra8 CardD Input1 +# Vendor/ID appear to be randomly chosen + aa0e 146e Spectra8 CardD Input2 +# Vendor/ID appear to be randomly chosen + aa0f 146f Spectra8 CardD Input3 + bd11 1200 PCTV pro (TV + FM stereo receiver) + 036f Bt879 Video Capture + 127a 0044 Bt879 Video Capture NTSC + 127a 0122 Bt879 Video Capture PAL I + 127a 0144 Bt879 Video Capture NTSC + 127a 0222 Bt879 Video Capture PAL BG + 127a 0244 Bt879a Video Capture NTSC + 127a 0322 Bt879 Video Capture NTSC + 127a 0422 Bt879 Video Capture NTSC + 127a 1122 Bt879 Video Capture PAL I + 127a 1222 Bt879 Video Capture PAL BG + 127a 1322 Bt879 Video Capture NTSC + 127a 1522 Bt879a Video Capture PAL I + 127a 1622 Bt879a Video Capture PAL BG + 127a 1722 Bt879a Video Capture NTSC + 14f1 0044 Bt879 Video Capture NTSC + 14f1 0122 Bt879 Video Capture PAL I + 14f1 0144 Bt879 Video Capture NTSC + 14f1 0222 Bt879 Video Capture PAL BG + 14f1 0244 Bt879a Video Capture NTSC + 14f1 0322 Bt879 Video Capture NTSC + 14f1 0422 Bt879 Video Capture NTSC + 14f1 1122 Bt879 Video Capture PAL I + 14f1 1222 Bt879 Video Capture PAL BG + 14f1 1322 Bt879 Video Capture NTSC + 14f1 1522 Bt879a Video Capture PAL I + 14f1 1622 Bt879a Video Capture PAL BG + 14f1 1722 Bt879a Video Capture NTSC + 1851 1850 FlyVideo'98 - Video + 1851 1851 FlyVideo II + 1852 1852 FlyVideo'98 - Video (with FM Tuner) + 0370 Bt880 Video Capture + 1851 1850 FlyVideo'98 + 1851 1851 FlyVideo'98 EZ - video + 1852 1852 FlyVideo'98 (with FM Tuner) + 0878 Bt878 Audio Capture + 0000 0001 Euresys Picolo PCIe + 0000 0002 Euresys PICOLO Pro 2 (Audio Section) + 0000 0004 Euresys PICOLO Pro 3E (Audio Section) + 0070 13eb WinTV Series + 0070 ff01 Viewcast Osprey 200 + 0071 0101 DigiTV PCI + 1002 0001 TV-Wonder + 1002 0003 TV-Wonder/VE + 11bd 0012 PCTV pro (TV + FM stereo receiver, audio section) + 11bd 001c PCTV Sat (DBC receiver) + 127a 0001 Bt878 Video Capture (Audio Section) + 127a 0002 Bt878 Video Capture (Audio Section) + 127a 0003 Bt878 Video Capture (Audio Section) + 127a 0048 Bt878 Video Capture (Audio Section) + 13e9 0070 Win/TV (Audio Section) + 144f 3000 MagicTView CPH060 - Audio + 1461 0002 Avermedia PCTV98 Audio Capture + 1461 0003 UltraTV PCI 350 + 1461 0004 AVerTV WDM Audio Capture + 1461 0761 AVerTV DVB-T + 1461 0771 AverMedia AVerTV DVB-T 771 + 14f1 0001 Bt878 Video Capture (Audio Section) + 14f1 0002 Bt878 Video Capture (Audio Section) + 14f1 0003 Bt878 Video Capture (Audio Section) + 14f1 0048 Bt878 Video Capture (Audio Section) + 1805 0101 Euresys PICOLO Tetra (Audio Section) + 1805 0102 Euresys PICOLO Tetra (Audio Section) + 1805 0103 Euresys PICOLO Tetra (Audio Section) + 1805 0104 Euresys PICOLO Tetra (Audio Section) + 1805 0105 Euresys PICOLO Tetra (Audio Section) + 1805 0106 Euresys PICOLO Tetra (Audio Section) + 1805 0107 Euresys PICOLO Tetra (Audio Section) + 1805 0108 Euresys PICOLO Tetra (Audio Section) + 1805 0201 Euresys PICOLO Tetra-X (Audio Section) + 1805 0202 Euresys PICOLO Tetra-X (Audio Section) + 1805 0203 Euresys PICOLO Tetra-X (Audio Section) + 1805 0204 Euresys PICOLO Tetra-X (Audio Section) + 1805 0401 Euresys PICOLO Tymo (Audio Section) + 1805 0402 Euresys PICOLO Tymo (Audio Section) + 1805 0403 Euresys PICOLO Tymo (Audio Section) + 1805 0404 Euresys PICOLO Tymo (Audio Section) + 1805 1001 Euresys PICOLO Junior 4 (Audio Section) + 1822 0001 VisionPlus DVB Card + 18ac d500 DViCO FusionHDTV5 Lite + 270f fc00 Digitop DTT-1000 + bd11 1200 PCTV pro (TV + FM stereo receiver, audio section) + 0879 Bt879 Audio Capture + 127a 0044 Bt879 Video Capture (Audio Section) + 127a 0122 Bt879 Video Capture (Audio Section) + 127a 0144 Bt879 Video Capture (Audio Section) + 127a 0222 Bt879 Video Capture (Audio Section) + 127a 0244 Bt879 Video Capture (Audio Section) + 127a 0322 Bt879 Video Capture (Audio Section) + 127a 0422 Bt879 Video Capture (Audio Section) + 127a 1122 Bt879 Video Capture (Audio Section) + 127a 1222 Bt879 Video Capture (Audio Section) + 127a 1322 Bt879 Video Capture (Audio Section) + 127a 1522 Bt879 Video Capture (Audio Section) + 127a 1622 Bt879 Video Capture (Audio Section) + 127a 1722 Bt879 Video Capture (Audio Section) + 14f1 0044 Bt879 Video Capture (Audio Section) + 14f1 0122 Bt879 Video Capture (Audio Section) + 14f1 0144 Bt879 Video Capture (Audio Section) + 14f1 0222 Bt879 Video Capture (Audio Section) + 14f1 0244 Bt879 Video Capture (Audio Section) + 14f1 0322 Bt879 Video Capture (Audio Section) + 14f1 0422 Bt879 Video Capture (Audio Section) + 14f1 1122 Bt879 Video Capture (Audio Section) + 14f1 1222 Bt879 Video Capture (Audio Section) + 14f1 1322 Bt879 Video Capture (Audio Section) + 14f1 1522 Bt879 Video Capture (Audio Section) + 14f1 1622 Bt879 Video Capture (Audio Section) + 14f1 1722 Bt879 Video Capture (Audio Section) + 0880 Bt880 Audio Capture + 2115 BtV 2115 Mediastream controller + 2125 BtV 2125 Mediastream controller + 2164 BtV 2164 + 2165 BtV 2165 + 8230 Bt8230 ATM Segment/Reassembly Ctrlr (SRC) + 8472 Bt8472 + 8474 Bt8474 +109f Trigem Computer Inc. +10a0 Meidensha Corporation +10a1 Juko Electronics Ind. Co. Ltd +10a2 Quantum Corporation +10a3 Everex Systems Inc +10a4 Globe Manufacturing Sales +10a5 Smart Link Ltd. + 3052 SmartPCI562 56K Modem + 5449 SmartPCI561 modem +10a6 Informtech Industrial Ltd. +10a7 Benchmarq Microelectronics +10a8 Sierra Semiconductor + 0000 STB Horizon 64 +10a9 Silicon Graphics Intl. Corp. + 0001 Crosstalk to PCI Bridge + 0002 Linc I/O controller + 0003 IOC3 I/O controller + 0004 O2 MACE + 0005 RAD Audio + 0006 HPCEX + 0007 RPCEX + 0008 DiVO VIP + 0009 AceNIC Gigabit Ethernet + 10a9 8002 AceNIC Gigabit Ethernet + 0010 AMP Video I/O + 0011 GRIP + 0012 SGH PSHAC GSN + 0208 SSIM1 SAS Adapter + 1001 Magic Carpet + 1002 Lithium + 1003 Dual JPEG 1 + 1004 Dual JPEG 2 + 1005 Dual JPEG 3 + 1006 Dual JPEG 4 + 1007 Dual JPEG 5 + 1008 Cesium + 100a IOC4 I/O controller + 1504 SSIM1 Fibre Channel Adapter + 2001 Fibre Channel + 2002 ASDE + 4001 TIO-CE PCI Express Bridge + 4002 TIO-CE PCI Express Port + 8001 O2 1394 + 8002 G-net NT +# PCIe x1 Low Profile + 802b REACT external interrupt controller +10aa ACC Microelectronics + 0000 ACCM 2188 + 2051 2051 CPU bridge + 5842 2051 ISA bridge +10ab Digicom +10ac Honeywell IAC +10ad Symphony Labs + 0001 W83769F + 0003 SL82C103 + 0005 SL82C105 + 0103 SL82c103 + 0105 SL82c105 + 0565 W83C553F/W83C554F +10ae Cornerstone Technology +10af Micro Computer Systems Inc +10b0 CardExpert Technology +10b1 Cabletron Systems Inc +10b2 Raytheon Company +10b3 Databook Inc + 3106 DB87144 + b106 DB87144 +10b4 STB Systems Inc + 1b1d Velocity 128 3D + 10b4 237e Velocity 4400 +10b5 PLX Technology, Inc. + 0001 i960 PCI bus interface + 0557 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + 10b5 9030 Digium Tormenta 2 T400P-SS7 or E400P-SS7 Quad T1 or E1 PCI card + 1000 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + 10b5 9030 ATCOM AT400P Quad T1 PCI card + 1024 Acromag, Inc. IndustryPack Carrier Card + 1042 Brandywine / jxi2, Inc. - PMC-SyncClock32, IRIG A & B, Nasa 36 + 106a Dual OX16C952 4 port serial adapter [Megawolf Romulus/4] + 1076 VScom 800 8 port serial adaptor + 1077 VScom 400 4 port serial adaptor + 1078 VScom 210 2 port serial and 1 port parallel adaptor + 1103 VScom 200 2 port serial adaptor + 1146 VScom 010 1 port parallel adaptor + 1147 VScom 020 2 port parallel adaptor + 2000 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + 10b5 9030 ATCOM AE400P Quad E1 PCI card + 2300 Euresys DOMINO Gamma + 2374 Euresys DOMINO Alpha + 2491 Euresys GRABLINK Value + 2493 Euresys GRABLINK Expert + 2540 IXXAT CAN-Interface PC-I 04/PCI + 2724 Thales PCSM Security Card + 3376 Cosateq 4 Port CAN Card + 4000 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + 10b5 9030 Tormenta 3 Varion V400P/ATCOM TE400P Quad E1/T1/J1 PCI card + 4001 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + 10b5 9030 ATCOM A400PE Quad E1 PCI card + 4002 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + 10b5 9030 ATCOM A400PT Quad T1 PCI card + 6140 PCI6140 32-bit 33MHz PCI-to-PCI Bridge + 6150 PCI6150 32-bit 33MHz PCI-to-PCI Bridge + 6152 PCI6152 32-bit 66MHz PCI-to-PCI Bridge + 6154 PCI6154 64-bit 66MHz PCI-to-PCI Bridge + 6254 PCI6254 64-bit 66MHz PCI-to-PCI Bridge + 6466 PCI6466 64-bit 66MHz PCI-to-PCI Bridge + 6520 PCI6520 64-bit 133MHz PCI-X-to-PCI-X Bridge + 6540 PCI6540 64-bit 133MHz PCI-X-to-PCI-X Bridge + 1775 1100 CR11 Single Board Computer + 4c53 10e0 PSL09 PrPMC + 6541 PCI6540/6466 PCI-PCI bridge (non-transparent mode, primary side) + 1775 1100 CR11 Single Board Computer + 4c53 10e0 PSL09 PrPMC + 6542 PCI6540/6466 PCI-PCI bridge (non-transparent mode, secondary side) + 1775 1100 CR11 Single Board Computer + 4c53 10e0 PSL09 PrPMC + 8111 PEX 8111 PCI Express-to-PCI Bridge + 8112 PEX8112 x1 Lane PCI Express-to-PCI Bridge + 8114 PEX 8114 PCI Express-to-PCI/PCI-X Bridge + 8311 PEX8311 x1 Lane PCI Express-to-Generic Local Bus Bridge + 8505 PEX 8505 5-lane, 5-port PCI Express Switch + 8508 PEX 8508 8-lane, 5-port PCI Express Switch + 8509 PEX 8509 8-lane, 8-port PCI Express Switch + 8512 PEX 8512 12-lane, 5-port PCI Express Switch + 8516 PEX 8516 Versatile PCI Express Switch + 8517 PEX 8517 16-lane, 5-port PCI Express Switch + 8518 PEX 8518 16-lane, 5-port PCI Express Switch + 8524 PEX 8524 24-lane, 6-port PCI Express Switch + 8525 PEX 8525 24-lane, 5-port PCI Express Switch + 8532 PEX 8532 Versatile PCI Express Switch + 8533 PEX 8533 32-lane, 6-port PCI Express Switch + 8547 PEX 8547 48-lane, 3-port PCI Express Switch + 8548 PEX 8548 48-lane, 9-port PCI Express Switch + 8603 PEX 8603 3-lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch + 8604 PEX 8604 4-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch + 8605 PEX 8605 PCI Express 4-port Gen2 Switch + 8606 PEX 8606 6 Lane, 6 Port PCI Express Gen 2 (5.0 GT/s) Switch + 8608 PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch + 8609 PEX 8609 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA + 8612 PEX 8612 12-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch + 8613 PEX 8613 12-lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch + 8614 PEX 8614 12-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch + 8615 PEX 8615 12-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA + 8616 PEX 8616 16-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch + 8617 PEX 8617 16-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch with P2P + 8618 PEX 8618 16-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch + 8619 PEX 8619 16-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA + 8624 PEX 8624 24-lane, 6-Port PCI Express Gen 2 (5.0 GT/s) Switch [ExpressLane] + 13a3 1845 DX1845 Acceleration Card + 8625 PEX 8625 24-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Switch + 8632 PEX 8632 32-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch + 8636 PEX 8636 36-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Switch + 8647 PEX 8647 48-Lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch + 8648 PEX 8648 48-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch + 8649 PEX 8649 48-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch + 8664 PEX 8664 64-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch + 8680 PEX 8680 80-lane, 20-Port PCI Express Gen 2 (5.0 GT/s) Multi-Root Switch + 8696 PEX 8696 96-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Multi-Root Switch + 8717 PEX 8717 16-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch with DMA + 8718 PEX 8718 16-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch + 8724 PEX 8724 24-Lane, 6-Port PCI Express Gen 3 (8 GT/s) Switch, 19 x 19mm FCBGA + 4c52 9234 LRNV9324 2-port Built-in 8643 NVMe Exchange Adapter + 4c52 9524 LRNV9524 2-port M.2 NVMe SSD Exchange Adapter + 8725 PEX 8725 24-Lane, 10-Port PCI Express Gen 3 (8.0 GT/s) Multi-Root Switch with DMA + 8732 PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch + 8734 PEX 8734 32-lane, 8-Port PCI Express Gen 3 (8.0GT/s) Switch + 8747 PEX 8747 48-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch + 4c52 9347 LRNV9347L 2-port Built-in 8643 NVMe Switching Adapter + 4c52 9547 LRNV9547 4-port M.2 NVMe SSD Exchange Adapter + 8748 PEX 8748 48-Lane, 12-Port PCI Express Gen 3 (8 GT/s) Switch, 27 x 27mm FCBGA + 8749 PEX 8749 48-Lane, 18-Port PCI Express Gen 3 (8.0 GT/s) Multi-Root Switch with DMA + 4c52 9349 LRNV9349 8-port SFF-8643 NVMe SSD Exchange Adapter + 87a0 PEX PCI Express Switch NT0 Port Link Interface + 87a1 PEX PCI Express Switch NT1 Port Link Interface + 87b0 PEX PCI Express Switch NT0 Port Virtual Interface + 1093 7761 PXIe-8830mc + 87b1 PEX PCI Express Switch NT1 Port Virtual Interface + 87d0 PEX PCI Express Switch DMA interface + 9016 PLX 9016 8-port serial controller + 9030 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + 10b5 1205 Becker & Hickl MSA-1000 + 10b5 2695 Hilscher CIF50-PB/DPS Profibus + 10b5 2862 Alpermann+Velte PCL PCI LV (3V/5V): Timecode Reader Board + 10b5 2906 Alpermann+Velte PCI TS (3V/5V): Time Synchronisation Board + 10b5 2940 Alpermann+Velte PCL PCI D (3V/5V): Timecode Reader Board + 10b5 2977 IXXAT iPC-I XC16/PCI CAN Board + 10b5 2978 SH ARC-PCIu/SH ARC-PCI104/SH ARC-PCIe SOHARD ARCNET card + 10b5 3025 Alpermann+Velte PCL PCI L (3V/5V): Timecode Reader Board + 10b5 3068 Alpermann+Velte PCL PCI HD (3V/5V): Timecode Reader Board + 10b5 3463 Alpermann+Velte PCL PCI D (v2) (3V/5V): Timecode Reader Board + 10b5 3591 PLURA PCL PCI L (v2) (3.3V/5V): Time Code Reader Board + 12fe 0111 CPCI-ASIO4 (ESD 4-port Serial Interface Board) + 1369 9c01 VX222v2 + 1369 9d01 VX222-Mic + 1369 9d02 VX222-Mic + 1369 9e01 PCX924v2 + 1369 9f01 PCX924-Mic + 1369 9f02 PCX924-Mic + 1369 a001 PCX22v2 + 1369 a701 LCM220v2 + 1369 a801 LCM200 + 1397 3136 4xS0-ISDN PCI Adapter + 1397 3137 S2M-E1-ISDN PCI Adapter + 1518 0200 ThinkIO-C + 15ed 1002 MCCS 8-port Serial Hot Swap + 15ed 1003 MCCS 16-port Serial Hot Swap +# MIL-STD-1553B Board + e1c5 0001 TE1-PCI + e1c5 0005 TA1-PCI + e1c5 0006 TA1-PCI4 + 9036 9036 + 9050 PCI <-> IOBus Bridge + 103c 10b0 82350 PCI GPIB + 10b5 1067 IXXAT CAN i165 + 10b5 114e Wasco WITIO PCI168extended + 10b5 1169 Wasco OPTOIO32standard 32 digital in, 32 digital out + 10b5 1171 Becker & Hickl PMS-400 + 10b5 1172 IK220 (Heidenhain) + 10b5 1201 Becker & Hickl SPC-6x0 + 10b5 1202 Becker & Hickl SPC-7x0 + 10b5 1203 Becker & Hickl MSA-300 + 10b5 1206 Becker & Hickl DCC-100 + 10b5 120a Becker & Hickl STP-340 + 10b5 2036 SatPak GPS + 10b5 2221 Alpermann+Velte PCL PCI LV: Timecode Reader Board + 10b5 2273 SH ARC-PCI SOHARD ARCNET card + 10b5 2431 Alpermann+Velte PCL PCI D: Timecode Reader Board + 10b5 2905 Alpermann+Velte PCI TS: Time Synchronisation Board + 10b5 3196 Goramo PLX200SYN sync serial card + 10b5 9050 PCI-I04 PCI Passive PC/CAN Interface + 11a9 5334 PDS4 + 12fe 0001 CAN-PCI/331 CAN bus controller + 1369 8901 PCX11+ PCI + 1369 8f01 VX222 + 1369 9401 PCX924 + 1369 9501 PCX22 + 1498 0362 TPMC866 8 Channel Serial Card + 1522 0001 RockForce 4 Port V.90 Data/Fax/Voice Modem + 1522 0002 RockForce 2 Port V.90 Data/Fax/Voice Modem + 1522 0003 RockForce 6 Port V.90 Data/Fax/Voice Modem + 1522 0004 RockForce 8 Port V.90 Data/Fax/Voice Modem + 1522 0010 RockForce2000 4 Port V.90 Data/Fax/Voice Modem + 1522 0020 RockForce2000 2 Port V.90 Data/Fax/Voice Modem + 15ed 1000 Macrolink MCCS 8-port Serial + 15ed 1001 Macrolink MCCS 16-port Serial + 15ed 1002 Macrolink MCCS 8-port Serial Hot Swap + 15ed 1003 Macrolink MCCS 16-port Serial Hot Swap + 5654 2036 OpenSwitch 6 Telephony card + 5654 3132 OpenSwitch 12 Telephony card + 5654 5634 OpenLine4 Telephony Card + d531 c002 PCIntelliCAN 2xSJA1000 CAN bus + d84d 4006 EX-4006 1P + d84d 4008 EX-4008 1P EPP/ECP + d84d 4014 EX-4014 2P + d84d 4018 EX-4018 3P EPP/ECP + d84d 4025 EX-4025 1S(16C550) RS-232 + d84d 4027 EX-4027 1S(16C650) RS-232 + d84d 4028 EX-4028 1S(16C850) RS-232 + d84d 4036 EX-4036 2S(16C650) RS-232 + d84d 4037 EX-4037 2S(16C650) RS-232 + d84d 4038 EX-4038 2S(16C850) RS-232 + d84d 4052 EX-4052 1S(16C550) RS-422/485 + d84d 4053 EX-4053 2S(16C550) RS-422/485 + d84d 4055 EX-4055 4S(16C550) RS-232 + d84d 4058 EX-4055 4S(16C650) RS-232 + d84d 4065 EX-4065 8S(16C550) RS-232 + d84d 4068 EX-4068 8S(16C650) RS-232 + d84d 4078 EX-4078 2S(16C552) RS-232+1P + 9052 PCI9052 PCI <-> IOBus Bridge + 9054 PCI9054 32-bit 33MHz PCI <-> IOBus Bridge + 10b5 1171 Becker & Hickl PMS-400A + 10b5 1208 Becker & Hickl SPC-830 + 10b5 120e Becker & Hickl SPC-930 + 10b5 120f Becker & Hickl SPC-150 + 10b5 1210 Becker & Hickl DPC-230 + 10b5 2455 Wessex Techology PHIL-PCI + 10b5 2696 Innes Corp AM Radcap card + 10b5 2717 Innes Corp Auricon card + 10b5 2844 Innes Corp TVS Encoder card + 12c7 4001 Intel Dialogic DM/V960-4T1 PCI + 12d9 0002 PCI Prosody Card rev 1.5 + 14b4 d100 Dektec DTA-100 + 14b4 d114 Dektec DTA-120 + 16df 0011 PIKA PrimeNet MM PCI + 16df 0012 PIKA PrimeNet MM cPCI 8 + 16df 0013 PIKA PrimeNet MM cPCI 8 (without CAS Signaling) + 16df 0014 PIKA PrimeNet MM cPCI 4 + 16df 0015 PIKA Daytona MM + 16df 0016 PIKA InLine MM + 9056 PCI9056 32-bit 66MHz PCI <-> IOBus Bridge + 10b5 2979 CellinkBlade 11 - CPCI board VoATM AAL1 + 10b5 3268 IXXAT iPC-I XC16/PCIe CAN Board + 10b5 3334 Cambridge Pixel HPx Radar Input Card + 10b5 3352 Alpermann+Velte PCL PCIe HD: Timecode Reader Board + 10b5 3353 Alpermann+Velte PCL PCIe D: Timecode Reader Board + 10b5 3354 Plura PCL PCIe LV: Timecode Reader Board + 10b5 3355 Plura PCL PCIe L: Timecode Reader Board + 10b5 3415 Plura PCIe TS: Time Synchronisation Board + 10b5 3493 Plura PCL PCIe 3G: Timecode Reader Board + 10b5 3565 Cambridge Pixel HPx Radar Output Card + 1369 c001 LX6464ES + 1369 c201 LX1616ES + 14b4 d10a DekTec DTA-110T + 14b4 d128 Dektec DTA-140 + 14b4 d140 Dektec DTA-140 + 1a0e 006f Dektec DTA-111 + 9060 PCI9060 32-bit 33MHz PCI <-> IOBus Bridge + 906d 9060SD + 125c 0640 Aries 16000P + 906e 9060ES + 9080 PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge + 103c 10eb (Agilent) E2777B 83K Series Optical Communication Interface + 103c 10ec (Agilent) E6978-66442 PCI CIC + 10b5 1123 Sectra KK631 encryption board + 10b5 9080 9080 [real subsystem ID not set] + 12d9 0002 PCI Prosody Card + 12df 4422 4422PCI ["Do-All" Telemetry Data Acquisition System] + 1369 9601 PCX822np + 1369 a102 PCX822v2 + 1369 a201 PCX442 + 1369 a301 LCM440v2 + 1369 a401 VX822 + 1369 a402 VX822v2 + 1369 a901 LCM420 + 1369 aa01 VX820v2 + 1517 000b ECSG-1R3ADC-PMC Clock synthesizer + 9656 PCI9656 PCI <-> IOBus Bridge + 1517 000f ECDR-GC314-PMC Receiver + 1885 0700 Tsunami FPGA PMC with Altera Stratix S40 + 1885 0701 Tsunami FPGA PMC with Altera Stratix S30 + 9733 PEX 9733 33-lane, 9-port PCI Express Gen 3 (8.0 GT/s) Switch + 1d49 0001 ThinkSystem 1610-4P NVMe Switch Adapter + 1d49 0002 ThinkSystem 810-4P NVMe Switch Adapter + 9749 PEX 9749 49-lane, 13-port PCI Express Gen 3 (8.0 GT/s) Switch + 1d49 0004 ThinkSystem 1610-8P NVMe Switch Adapter + a100 Blackmagic Design DeckLink + bb04 B&B 3PCIOSD1A Isolated PCI Serial + c001 CronyxOmega-PCI (8-port RS232) + d00d PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + 10b5 9030 Digium Tormenta 2 T400P or E400P Quad T1 or E1 PCI card + d33d PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + 10b5 9030 Tormenta 3 Varion V401PT Quad T1/J1 PCI card + d44d PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + 10b5 17f6 Allo CP100P/E 1-port E1/T1/J1 PCI/PCIe card + 10b5 17f7 Allo CP400P/E 4-port E1/T1/J1 PCI/PCIe card + 10b5 17f8 Allo CP200P/E 2-port E1/T1/J1 PCI/PCIe card + 10b5 9030 Tormenta 3 Varion V401PE Quad E1 PCI card +10b6 Madge Networks + 0001 Smart 16/4 PCI Ringnode + 0002 Smart 16/4 PCI Ringnode Mk2 + 10b6 0002 Smart 16/4 PCI Ringnode Mk2 + 10b6 0006 16/4 CardBus Adapter + 0003 Smart 16/4 PCI Ringnode Mk3 + 0e11 b0fd Compaq NC4621 PCI, 4/16, WOL + 10b6 0003 Smart 16/4 PCI Ringnode Mk3 + 10b6 0007 Presto PCI Plus Adapter + 0004 Smart 16/4 PCI Ringnode Mk1 + 0006 16/4 Cardbus Adapter + 10b6 0006 16/4 CardBus Adapter + 0007 Presto PCI Adapter + 10b6 0007 Presto PCI + 0009 Smart 100/16/4 PCI-HS Ringnode + 10b6 0009 Smart 100/16/4 PCI-HS Ringnode + 000a Token Ring 100/16/4 Ringnode/Ringrunner + 10b6 000a Token Ring 100/16/4 Ringnode/Ringrunner + 000b 16/4 CardBus Adapter Mk2 + 10b6 0008 16/4 CardBus Adapter Mk2 + 10b6 000b 16/4 Cardbus Adapter Mk2 + 000c RapidFire 3140V2 16/4 TR Adapter + 10b6 000c RapidFire 3140V2 16/4 TR Adapter + 1000 Collage 25/155 ATM Client Adapter + 1001 Collage 155 ATM Server Adapter +10b7 3Com Corporation + 0001 3c985 1000BaseSX (SX/TX) +# wrong ID? + 9850 0001 3c985B-SX + 0013 AR5212 802.11abg NIC (3CRDAG675) + 10b7 2031 3CRDAG675 11a/b/g Wireless PCI Adapter + 0910 3C910-A01 + 1006 MINI PCI type 3B Data Fax Modem + 1007 Mini PCI 56k Winmodem + 10b7 615b Mini PCI 56K Modem + 10b7 615c Mini PCI 56K Modem + 1201 3c982-TXM 10/100baseTX Dual Port A [Hydra] + 1202 3c982-TXM 10/100baseTX Dual Port B [Hydra] + 1700 3c940 10/100/1000Base-T [Marvell] + 1043 80eb A7V600/P4P800/K8V motherboard + 10b7 0010 3C940 Gigabit LOM Ethernet Adapter + 10b7 0020 3C941 Gigabit LOM Ethernet Adapter + 147b 1407 KV8-MAX3 motherboard + 3390 3c339 TokenLink Velocity + 3590 3c359 TokenLink Velocity XL + 10b7 3590 TokenLink Velocity XL Adapter (3C359/359B) + 4500 3c450 HomePNA [Tornado] + 5055 3c555 Laptop Hurricane + 5057 3c575 Megahertz 10/100 LAN CardBus [Boomerang] + 10b7 5a57 3C575 Megahertz 10/100 LAN Cardbus PC Card + 5157 3cCFE575BT Megahertz 10/100 LAN CardBus [Cyclone] + 10b7 5b57 3C575 Megahertz 10/100 LAN Cardbus PC Card + 5257 3cCFE575CT CardBus [Cyclone] + 10b7 5c57 FE575C-3Com 10/100 LAN CardBus-Fast Ethernet + 5900 3c590 10BaseT [Vortex] + 5920 3c592 EISA 10mbps Demon/Vortex + 5950 3c595 100BaseTX [Vortex] + 5951 3c595 100BaseT4 [Vortex] + 5952 3c595 100Base-MII [Vortex] + 5970 3c597 EISA Fast Demon/Vortex + 5b57 3c595 Megahertz 10/100 LAN CardBus [Boomerang] + 10b7 5b57 3C575 Megahertz 10/100 LAN Cardbus PC Card + 6000 3CRSHPW796 [OfficeConnect Wireless CardBus] + 6001 3com 3CRWE154G72 [Office Connect Wireless LAN Adapter] + 6055 3c556 Hurricane CardBus [Cyclone] + 6056 3c556B CardBus [Tornado] + 10b7 6556 10/100 Mini PCI Ethernet Adapter + 6560 3cCFE656 CardBus [Cyclone] + 10b7 656a 3CCFEM656 10/100 LAN+56K Modem CardBus + 6561 3cCFEM656 10/100 LAN+56K Modem CardBus + 10b7 656b 3CCFEM656 10/100 LAN+56K Modem CardBus + 6562 3cCFEM656B 10/100 LAN+Winmodem CardBus [Cyclone] + 10b7 656b 3CCFEM656B 10/100 LAN+56K Modem CardBus + 6563 3cCFEM656B 10/100 LAN+56K Modem CardBus + 10b7 656b 3CCFEM656 10/100 LAN+56K Modem CardBus + 6564 3cXFEM656C 10/100 LAN+Winmodem CardBus [Tornado] + 7646 3cSOHO100-TX Hurricane + 7770 3CRWE777 PCI Wireless Adapter [Airconnect] + 7940 3c803 FDDILink UTP Controller + 7980 3c804 FDDILink SAS Controller + 7990 3c805 FDDILink DAS Controller + 80eb 3c940B 10/100/1000Base-T + 8811 Token ring + 9000 3c900 10BaseT [Boomerang] + 9001 3c900 10Mbps Combo [Boomerang] + 9004 3c900B-TPO Etherlink XL [Cyclone] + 10b7 9004 3C900B-TPO Etherlink XL TPO 10Mb + 9005 3c900B-Combo Etherlink XL [Cyclone] + 10b7 9005 3C900B-Combo Etherlink XL Combo + 9006 3c900B-TPC Etherlink XL [Cyclone] + 900a 3c900B-FL 10base-FL [Cyclone] + 9050 3c905 100BaseTX [Boomerang] + 9051 3c905 100BaseT4 [Boomerang] + 9054 3C905B-TX Fast Etherlink XL PCI + 10b7 9054 3C905B-TX Fast Etherlink XL PCI + 9055 3c905B 100BaseTX [Cyclone] + 1028 0080 3C905B Fast Etherlink XL 10/100 + 1028 0081 3C905B Fast Etherlink XL 10/100 + 1028 0082 3C905B Fast Etherlink XL 10/100 + 1028 0083 3C905B Fast Etherlink XL 10/100 + 1028 0084 3C905B Fast Etherlink XL 10/100 + 1028 0085 3C905B Fast Etherlink XL 10/100 + 1028 0086 3C905B Fast Etherlink XL 10/100 + 1028 0087 3C905B Fast Etherlink XL 10/100 + 1028 0088 3C905B Fast Etherlink XL 10/100 + 1028 0089 3C905B Fast Etherlink XL 10/100 + 1028 0090 3C905B Fast Etherlink XL 10/100 + 1028 0091 3C905B Fast Etherlink XL 10/100 + 1028 0092 3C905B Fast Etherlink XL 10/100 + 1028 0093 3C905B Fast Etherlink XL 10/100 + 1028 0094 3C905B Fast Etherlink XL 10/100 + 1028 0095 3C905B Fast Etherlink XL 10/100 + 1028 0096 3C905B Fast Etherlink XL 10/100 + 1028 0097 3C905B Fast Etherlink XL 10/100 + 1028 0098 3C905B Fast Etherlink XL 10/100 + 1028 0099 3C905B Fast Etherlink XL 10/100 + 10b7 9055 3C905B Fast Etherlink XL 10/100 + 9056 3c905B-T4 Fast EtherLink XL [Cyclone] + 9058 3c905B Deluxe Etherlink 10/100/BNC [Cyclone] + 905a 3c905B-FX Fast Etherlink XL FX 100baseFx [Cyclone] + 9200 3c905C-TX/TX-M [Tornado] + 1028 0095 3C920 Integrated Fast Ethernet Controller + 1028 0097 3C920 Integrated Fast Ethernet Controller + 1028 00b4 OptiPlex GX110 + 1028 00d8 Precision 530 + 1028 00fe Optiplex GX240 + 1028 012a 3C920 Integrated Fast Ethernet Controller [Latitude C640] + 10b7 1000 3C905CX-TX/TX-M Fast Etherlink for PC Management NIC + 10b7 7000 10/100 Mini PCI Ethernet Adapter + 10f1 2466 Tiger MPX S2466 (3C920 Integrated Fast Ethernet Controller) + 144d c005 X10 Laptop + 9201 3C920B-EMB Integrated Fast Ethernet Controller [Tornado] + 1043 80ab A7N8X Deluxe onboard 3C920B-EMB Integrated Fast Ethernet Controller + 9202 3Com 3C920B-EMB-WNM Integrated Fast Ethernet Controller + 9210 3C920B-EMB-WNM Integrated Fast Ethernet Controller + 9300 3CSOHO100B-TX 910-A01 [tulip] + 9800 3c980-TX Fast Etherlink XL Server Adapter [Cyclone] + 10b7 9800 3c980-TX Fast Etherlink XL Server Adapter + 9805 3c980-C 10/100baseTX NIC [Python-T] + 10b7 1201 EtherLink Server 10/100 Dual Port A + 10b7 1202 EtherLink Server 10/100 Dual Port B + 10b7 9805 3c980 10/100baseTX NIC [Python-T] + 10f1 2462 Thunder K7 S2462 + 9900 3C990-TX [Typhoon] + 9902 3CR990-TX-95 [Typhoon 56-bit] + 9903 3CR990-TX-97 [Typhoon 168-bit] + 9904 3C990B-TX-M/3C990BSVR [Typhoon2] + 10b7 1000 3CR990B-TX-M [Typhoon2] + 10b7 2000 3CR990BSVR [Typhoon2 Server] + 9905 3CR990-FX-95/97/95 [Typhon Fiber] + 10b7 1101 3CR990-FX-95 [Typhoon Fiber 56-bit] + 10b7 1102 3CR990-FX-97 [Typhoon Fiber 168-bit] + 10b7 2101 3CR990-FX-95 Server [Typhoon Fiber 56-bit] + 10b7 2102 3CR990-FX-97 Server [Typhoon Fiber 168-bit] + 9908 3CR990SVR95 [Typhoon Server 56-bit] + 9909 3CR990SVR97 [Typhoon Server 168-bit] + 990a 3C990SVR [Typhoon Server] + 990b 3C990SVR [Typhoon Server] +10b8 Standard Microsystems Corp [SMC] + 0005 83c170 EPIC/100 Fast Ethernet Adapter + 1055 e000 LANEPIC 10/100 [EVB171Q-PCI] + 1055 e002 LANEPIC 10/100 [EVB171G-PCI] + 10b8 a011 EtherPower II 10/100 + 10b8 a014 EtherPower II 10/100 + 10b8 a015 EtherPower II 10/100 + 10b8 a016 EtherPower II 10/100 + 10b8 a017 EtherPower II 10/100 + 0006 83c175 EPIC/100 Fast Ethernet Adapter + 1055 e100 LANEPIC Cardbus Fast Ethernet Adapter + 1055 e102 LANEPIC Cardbus Fast Ethernet Adapter + 1055 e300 LANEPIC Cardbus Fast Ethernet Adapter + 1055 e302 LANEPIC Cardbus Fast Ethernet Adapter + 10b8 a012 LANEPIC Cardbus Fast Ethernet Adapter + 13a2 8002 LANEPIC Cardbus Fast Ethernet Adapter + 13a2 8006 LANEPIC Cardbus Fast Ethernet Adapter + 1000 FDC 37c665 + 1001 FDC 37C922 + a011 83C170QF + b106 SMC34C90 +# Split off ALi Corporation in 2003 +10b9 ULi Electronics Inc. + 0101 CMI8338/C3DX PCI Audio Device + 0111 C-Media CMI8738/C3DX Audio Device (OEM) + 10b9 0111 C-Media CMI8738/C3DX Audio Device (OEM) + 0780 Multi-IO Card + 0782 Multi-IO Card + 1435 M1435 + 1445 M1445 + 1449 M1449 + 1451 M1451 + 1461 M1461 + 1489 M1489 Cache-Memory PCI Controller (CMP) [FinALi 486] CPU to PCI bridge + 1511 M1511 [Aladdin] + 1512 M1512 [Aladdin] + 1513 M1513 [Aladdin] + 1521 M1521 [Aladdin III] + 10b9 1521 ALI M1521 Aladdin III CPU Bridge + 1523 M1523 + 10b9 1523 ALI M1523 ISA Bridge + 1531 M1531 [Aladdin IV] + 1533 M1533/M1535/M1543 PCI to ISA Bridge [Aladdin IV/V/V+] + 1014 053b ThinkPad R40e + 10b9 1533 ALi M1533 Aladdin IV/V ISA Bridge + 1541 M1541 + 10b9 1541 ALI M1541 Aladdin V/V+ AGP System Controller + 1543 M1543 + 1563 M1563 HyperTransport South Bridge + 10b9 1563 ASRock 939Dual-SATA2 Motherboard + 1849 1563 ASRock 939Dual-SATA2 Motherboard + 1573 PCI to LPC Controller + 1575 M1575 South Bridge + 1621 M1621 + 1631 ALI M1631 PCI North Bridge Aladdin Pro III + 1632 M1632M Northbridge+Trident + 1641 ALI M1641 PCI North Bridge Aladdin Pro IV + 1644 M1644/M1644T Northbridge+Trident + 1646 M1646 Northbridge+Trident + 1647 M1647 Northbridge [MAGiK 1 / MobileMAGiK 1] + 1651 M1651/M1651T Northbridge [Aladdin-Pro 5/5M,Aladdin-Pro 5T/5TM] + 1671 M1671 Super P4 Northbridge [AGP4X,PCI and SDR/DDR] + 1672 M1672 Northbridge [CyberALADDiN-P4] + 1681 M1681 P4 Northbridge [AGP8X,HyperTransport and SDR/DDR] + 1687 M1687 K8 Northbridge [AGP8X and HyperTransport] + 1689 M1689 K8 Northbridge [Super K8 Single Chip] + 1695 M1695 Host Bridge + 1697 M1697 HTT Host Bridge + 3141 M3141 + 3143 M3143 + 3145 M3145 + 3147 M3147 + 3149 M3149 + 3151 M3151 + 3307 M3307 + 3309 M3309 + 3323 M3325 Video/Audio Decoder + 5212 M4803 + 5215 MS4803 + 5217 M5217H + 5219 M5219 + 5225 M5225 + 5228 M5228 ALi ATA/RAID Controller + 5229 M5229 IDE + 1014 050f ThinkPad R30 + 1014 053d ThinkPad R40e + 103c 0024 Pavilion ze4400 builtin IDE + 103c 0025 XE4500 Notebook + 1043 8053 A7A266 Motherboard IDE + 1849 5229 ASRock 939Dual-SATA2 Motherboard IDE (PATA) + 5235 M5225 + 5237 USB 1.1 Controller + 1014 0540 ThinkPad R40e + 103c 0024 Pavilion ze4400 builtin USB + 103c 0025 XE4500 Notebook + 104d 810f VAIO PCG-U1 USB/OHCI Revision 1.0 + 10b9 5237 M5273 USB OHCI PCI adapter + 1849 5237 ASRock 939Dual-SATA2 Motherboard + 5239 USB 2.0 Controller + 10b9 5239 M5273 USB PCI adapter + 1849 5239 ASRock 939Dual-SATA2 Motherboard + 5243 M1541 PCI to AGP Controller + 5246 AGP8X Controller + 5247 PCI to AGP Controller + 5249 M5249 HTT to PCI Bridge + 524b PCI Express Root Port + 524c PCI Express Root Port + 524d PCI Express Root Port + 524e PCI Express Root Port + 5251 M5251 P1394 OHCI 1.0 Controller + 5253 M5253 P1394 OHCI 1.1 Controller + 5261 M5261 Ethernet Controller + 5263 ULi 1689,1573 integrated ethernet. + 5281 ALi M5281 Serial ATA / RAID Host Controller + 5287 ULi 5287 SATA + 5288 ULi M5288 SATA + 1043 8056 A8R-MVP Mainboard + 5289 ULi 5289 SATA + 5450 Lucent Technologies Soft Modem AMR + 5451 M5451 PCI AC-Link Controller Audio Device + 1014 0506 ThinkPad R30 + 1014 053e ThinkPad R40e + 103c 0024 Pavilion ze4400 builtin Audio + 103c 0025 XE4500 Notebook + 5453 M5453 PCI AC-Link Controller Modem Device + 5455 M5455 PCI AC-Link Controller Audio Device + 10b9 5455 ASRock 939Dual-SATA2 Motherboard + 1849 0850 ASRock 939Dual-SATA2 Motherboard + 5457 M5457 AC'97 Modem Controller + 1014 0535 ThinkPad R40e + 103c 0024 Pavilion ze4400 builtin Modem Device + 103c 0025 XE4500 Notebook + 5459 SmartLink SmartPCI561 56K Modem + 545a SmartLink SmartPCI563 56K Modem + 5461 HD Audio Controller + 5471 M5471 Memory Stick Controller + 5473 M5473 SD-MMC Controller + 7101 M7101 Power Management Controller [PMU] + 1014 0510 ThinkPad R30 + 1014 053c ThinkPad R40e + 103c 0024 Pavilion ze4400 + 103c 0025 XE4500 Notebook + 1849 7101 ASRock 939Dual-SATA2 Motherboard +10ba Mitsubishi Electric Corp. + 0301 AccelGraphics AccelECLIPSE + 0304 AccelGALAXY A2100 [OEM Evans & Sutherland] + 0308 Tornado 3000 [OEM Evans & Sutherland] + 10dd 0024 Tornado 3000 + 1002 VG500 [VolumePro Volume Rendering Accelerator] +10bb Dapha Electronics Corporation +10bc Advanced Logic Research +10bd Surecom Technology + 0e34 NE-34 +10be Tseng Labs International Co. +10bf Most Inc +10c0 Boca Research Inc. + 9135 iX3D Ultimate Rez +10c1 ICM Co., Ltd. +10c2 Auspex Systems Inc. +10c3 Samsung Semiconductors, Inc. +10c4 Award Software International Inc. +10c5 Xerox Corporation +10c6 Rambus Inc. +10c7 Media Vision +10c8 Neomagic Corporation + 0001 NM2070 [MagicGraph 128] + 0002 NM2090 [MagicGraph 128V] + 0003 NM2093 [MagicGraph 128ZV] + 0004 NM2160 [MagicGraph 128XD] + 1014 00ba MagicGraph 128XD + 1025 1007 MagicGraph 128XD + 1028 0074 MagicGraph 128XD + 1028 0075 MagicGraph 128XD + 1028 007d MagicGraph 128XD + 1028 007e MagicGraph 128XD + 1033 802f MagicGraph 128XD + 104d 801b MagicGraph 128XD + 104d 802f MagicGraph 128XD + 104d 830b MagicGraph 128XD + 10ba 0e00 MagicGraph 128XD + 10c8 0004 MagicGraph 128XD + 10cf 1029 MagicGraph 128XD + 10f7 8308 MagicGraph 128XD + 10f7 8309 MagicGraph 128XD + 10f7 830b MagicGraph 128XD + 10f7 830d MagicGraph 128XD + 10f7 8312 MagicGraph 128XD + 0005 NM2200 [MagicGraph 256AV] + 1014 00dd ThinkPad 570 + 1028 0088 Latitude CPi A + 0006 NM2360 [MagicMedia 256ZX] + 1014 0152 ThinkPad 600X + 0016 NM2380 [MagicMedia 256XL+] + 10c8 0016 MagicMedia 256XL+ + 0025 NM2230 [MagicGraph 256AV+] + 0083 NM2093 [MagicGraph 128ZV+] + 8005 NM2200 [MagicMedia 256AV Audio] + 0e11 b0d1 MagicMedia 256AV Audio Device on Discovery + 0e11 b126 MagicMedia 256AV Audio Device on Durango + 1014 00dd ThinkPad 390/i1720/i1721 + 1025 1003 MagicMedia 256AV Audio Device on TravelMate 720 + 1028 0088 Latitude CPi A + 1028 008f MagicMedia 256AV Audio Device on Colorado Inspiron + 103c 0007 MagicMedia 256AV Audio Device on Voyager II + 103c 0008 MagicMedia 256AV Audio Device on Voyager III + 103c 000d MagicMedia 256AV Audio Device on Omnibook 900 + 10c8 8005 MagicMedia 256AV Audio Device on FireAnt + 110a 8005 MagicMedia 256AV Audio Device + 14c0 0004 MagicMedia 256AV Audio Device + 8006 NM2360 [MagicMedia 256ZX Audio] + 8016 NM2380 [MagicMedia 256XL+ Audio] +10c9 Dataexpert Corporation +10ca Fujitsu Microelectr., Inc. +10cb Omron Corporation +# nee Mentor ARC Inc +10cc Mai Logic Incorporated + 0660 Articia S Host Bridge + 0661 Articia S PCI Bridge +10cd Advanced System Products, Inc + 1100 ASC1100 + 1200 ASC1200 [(abp940) Fast SCSI-II] + 1300 ASC1300 / ASC3030 [ABP940-U / ABP960-U / ABP3925] + 10cd 1310 ASC1300/3030 SCSI adapter + 1195 1320 Ultra-SCSI CardBus PC Card REX CB31 + 2300 ABP940-UW + 2500 ABP940-U2W + 2700 ABP3950-U3W +10ce Radius +# nee Citicorp TTI +10cf Fujitsu Limited. + 01ef PCEA4 PCI-Express Dual Port ESCON Adapter + 1414 On-board USB 1.1 companion controller + 1415 On-board USB 2.0 EHCI controller + 1422 E8410 nVidia graphics adapter + 142d HD audio (Realtek ALC262) + 1430 82566MM Intel 1Gb copper LAN interface + 1623 PCEA4 PCI-Express Dual Port ESCON Adapter + 2001 mb86605 + 200c MB86613L IEEE1394 OHCI 1.0 Controller + 2010 MB86613S IEEE1394 OHCI 1.1 Controller + 2019 MB86295S [CORAL P] + 201e MB86296S [CORAL PA] + 202b MB86297A [Carmine Graphics Controller] +10d1 FuturePlus Systems Corp. +10d2 Molex Incorporated +10d3 Jabil Circuit Inc +10d4 Hualon Microelectronics +10d5 Autologic Inc. +10d6 Cetia +10d7 BCM Advanced Research +10d8 Advanced Peripherals Labs +10d9 Macronix, Inc. [MXIC] + 0431 MX98715 + 0512 MX98713 + 0531 MX987x5 + 1186 1200 DFE-540TX ProFAST 10/100 Adapter + 8625 MX86250 + 8626 Macronix MX86251 + 3Dfx Voodoo Rush + 8888 MX86200 +10da Compaq IPG-Austin + 0508 TC4048 Token Ring 4/16 + 3390 Tl3c3x9 +10db Rohm LSI Systems, Inc. +10dc CERN/ECP/EDU + 0001 STAR/RD24 SCI-PCI (PMC) + 0002 TAR/RD24 SCI-PCI (PMC) + 0021 HIPPI destination + 0022 HIPPI source + 10dc ATT2C15-3 FPGA +10dd Evans & Sutherland + 0100 Lightning 1200 + 10dd 0023 Lightning 1200 15+16M +10de NVIDIA Corporation + 0008 NV1 [STG2000X-B Series] + 0009 NV1 [NV1 Series] + 0018 NV3 [Riva 128] + 0019 NV3 [Riva 128ZX] + 0020 NV4 [Riva TNT] + 1043 0200 V3400 TNT + 1048 0c18 Erazor II SGRAM + 1048 0c19 Erazor II + 1048 0c1b Erazor II + 1048 0c1c Erazor II + 1092 0550 Viper V550 + 1092 0552 Viper V550 + 1092 4804 Viper V550 + 1092 4808 Viper V550 + 1092 4810 Viper V550 + 1092 4812 Viper V550 + 1092 4815 Viper V550 + 1092 4820 Viper V550 with TV out + 1092 4822 Viper V550 + 1092 4904 Viper V550 + 1092 4914 Viper V550 + 1092 8225 Viper V550 + 10b4 273d Velocity 4400 + 10b4 273e Velocity 4400 + 10b4 2740 Velocity 4400 + 10de 0020 Riva TNT + 1102 1015 Graphics Blaster CT6710 + 1102 1016 Graphics Blaster RIVA TNT + 0028 NV5 [Riva TNT2 / TNT2 Pro] + 1043 0200 AGP-V3800 SGRAM + 1043 0201 AGP-V3800 SDRAM + 1043 0205 PCI-V3800 + 1043 4000 AGP-V3800PRO + 1048 0c21 Synergy II + 1048 0c28 Erazor III + 1048 0c29 Erazor III + 1048 0c2a Erazor III + 1048 0c2b Erazor III + 1048 0c31 Erazor III Pro + 1048 0c32 Erazor III Pro + 1048 0c33 Erazor III Pro + 1048 0c34 Erazor III Pro + 107d 2134 WinFast 3D S320 II + TV-Out + 1092 4804 Viper V770 + 1092 4a00 Viper V770 + 1092 4a02 Viper V770 Ultra + 1092 5a00 RIVA TNT2/TNT2 Pro + 1092 5a40 Viper V770D AGP + 1092 6a02 Viper V770 Ultra + 1092 7a02 Viper V770 Ultra + 10de 0005 RIVA TNT2 Pro + 10de 000f Compaq NVIDIA TNT2 Pro + 1102 1020 3D Blaster RIVA TNT2 + 1102 1026 3D Blaster RIVA TNT2 Digital + 1462 8806 MS-8806 AGPhantom Graphics Card + 14af 5810 Maxi Gamer Xentor + 0029 NV5 [Riva TNT2 Ultra] + 1043 0200 AGP-V3800 Deluxe + 1043 0201 AGP-V3800 Ultra SDRAM + 1043 0205 PCI-V3800 Ultra + 1048 0c2e Erazor III Ultra + 1048 0c2f Erazor III Ultra + 1048 0c30 Erazor III Ultra + 1102 1021 3D Blaster RIVA TNT2 Ultra + 1102 1029 3D Blaster RIVA TNT2 Ultra + 1102 102f 3D Blaster RIVA TNT2 Ultra + 14af 5820 Maxi Gamer Xentor 32 + 4843 4f34 Dynamite + 002a NV5 [Riva TNT2] + 002b NV5 [Riva TNT2] + 002c NV5 [Vanta / Vanta LT] + 1043 0200 AGP-V3800 Combat SDRAM + 1043 0201 AGP-V3800 Combat + 1048 0c20 TNT2 Vanta + 1048 0c21 TNT2 Vanta + 1048 0c25 TNT2 Vanta 16MB + 1092 6820 Viper V730 + 1102 1031 CT6938 VANTA 8MB + 1102 1034 CT6894 VANTA 16MB + 14af 5008 Maxi Gamer Phoenix 2 + 002d NV5 [Riva TNT2 Model 64 / Model 64 Pro] + 1043 0200 AGP-V3800M + 1043 0201 AGP-V3800M + 1048 0c3a Erazor III LT + 1048 0c3b Erazor III LT + 107d 2137 WinFast 3D S325 + 10de 0006 RIVA TNT2 Model 64/Model 64 Pro + 10de 001e M64 AGP4x + 1102 1023 CT6892 RIVA TNT2 Value + 1102 1024 CT6932 RIVA TNT2 Value 32Mb + 1102 102c CT6931 RIVA TNT2 Value [Jumper] + 1102 1030 CT6931 RIVA TNT2 Value +# S26361-D1243-V116 + 110a 006f GM1000-16 +# S26361-D1243-V216 + 110a 0081 GM1000-16 + 1462 8808 MSI-8808 + 14af 5620 Gamer Cougar Video Edition + 1554 1041 Pixelview RIVA TNT2 M64 + 1569 002d Palit Microsystems Daytona TNT2 M64 + 0034 MCP04 SMBus + 0035 MCP04 IDE + 0036 MCP04 Serial ATA Controller + 0037 MCP04 Ethernet Controller + 0038 MCP04 Ethernet Controller + 003a MCP04 AC'97 Audio Controller + 003b MCP04 USB Controller + 003c MCP04 USB Controller + 003d MCP04 PCI Bridge + 003e MCP04 Serial ATA Controller + 0040 NV40 [GeForce 6800 Ultra] + 0041 NV40 [GeForce 6800] + 1043 817b V9999 Gamer Edition + 107d 2992 WinFast A400 + 1458 310f Geforce 6800 GV-N6812 + 0042 NV40 [GeForce 6800 LE] + 107d 299b WinFast A400 LE + 0043 NV40 [GeForce 6800 XE] + 0044 NV40 [GeForce 6800 XT] + 0045 NV40 [GeForce 6800 GT] + 1043 817d V9999GT + 1458 3140 GV-N68T256D + 0047 NV40 [GeForce 6800 GS] + 1682 2109 GeForce 6800 GS + 0048 NV40 [GeForce 6800 XT] + 004e NV40GL [Quadro FX 4000] + 0050 CK804 ISA Bridge + 1043 815a K8N4/A8N Series Mainboard + 10f1 2865 Tomcat K8E (S2865) + 1458 0c11 GA-K8N Ultra-9 Mainboard + 1462 7100 MSI K8N Diamond + 1462 7125 K8N Neo4-F mainboard + 147b 1c1a KN8-Ultra Mainboard + 1565 3402 NF4 AM2L Mainboard + 0051 CK804 ISA Bridge + 1028 0225 PowerEdge T105 ISA Bridge + 0052 CK804 SMBus + 1028 0225 PowerEdge T105 SMBus + 1043 815a K8N4/A8N Series Mainboard + 10f1 2865 Tomcat K8E (S2865) + 1458 0c11 GA-K8N Ultra-9 Mainboard + 1462 7100 MSI K8N Diamond + 1462 7125 K8N Neo4-F mainboard + 147b 1c1a KN8-Ultra Mainboard + 1565 3402 NF4 AM2L Mainboard + 0053 CK804 IDE + 1043 815a K8N4/A8N Series Mainboard + 10f1 2865 Tomcat K8E (S2865) + 1458 5002 GA-K8N Ultra-9 Mainboard + 1462 7100 MSI K8N Diamond + 1462 7125 K8N Neo4-F mainboard + 147b 1c1a KN8-Ultra Mainboard + 1565 3402 NF4 AM2L Mainboard + 0054 CK804 Serial ATA Controller + 1028 0225 PowerEdge T105 Serial ATA + 1043 815a A8N Series Mainboard + 10f1 2865 Tomcat K8E (S2865) + 1458 b003 GA-K8N Ultra-9 Mainboard + 1462 7100 MSI K8N Diamond + 1462 7125 K8N Neo4-F mainboard + 147b 1c1a KN8-Ultra Mainboard + 1565 5401 NF4 AM2L Mainboard + 0055 CK804 Serial ATA Controller + 1028 0225 PowerEdge T105 Serial ATA + 1043 815a K8N4/A8N Series Mainboard + 10f1 2865 Tomcat K8E (S2865) + 1458 b003 GA-K8N Ultra-9 Mainboard + 1462 7125 K8N Neo4-F mainboard + 147b 1c1a KN8-Ultra Mainboard + 1565 5401 NF4 AM2L Mainboard + 0056 CK804 Ethernet Controller + 0057 CK804 Ethernet Controller + 1043 8141 K8N4/A8N Series Mainboard + 10de cb84 NF4 Lanparty + 10f1 2865 Tomcat K8E (S2865) + 1458 e000 GA-K8N Ultra-9 Mainboard + 1462 7100 MSI K8N Diamond + 1462 7125 K8N Neo4-F mainboard + 147b 1c1a KN8-Ultra Mainboard + 1565 2501 NF4 AM2L Mainboard + 0058 CK804 AC'97 Modem + 0059 CK804 AC'97 Audio Controller + 1043 812a K8N4/A8N Series Mainboard + 10f1 2865 Tomcat K8E (S2865) + 1462 7585 K8N Neo4-F mainboard + 147b 1c1a KN8-Ultra Mainboard + 1565 8211 NF4 AM2L Mainboard + 005a CK804 USB Controller + 1028 0225 PowerEdge T105 onboard USB + 1043 815a K8N4/A8N Series Mainboard + 10f1 2865 Tomcat K8E (S2865) + 1458 5004 GA-K8N Ultra-9 Mainboard + 1462 7100 MSI K8N Diamond + 1462 7125 K8N Neo4-F mainboard + 147b 1c1a KN8-Ultra Mainboard + 1565 3402 NF4 AM2L Mainboard + 005b CK804 USB Controller + 1028 0225 PowerEdge T105 onboard USB + 1043 815a K8N4/A8N Series Mainboard + 10f1 2865 Tomcat K8E (S2865) + 1458 5004 GA-K8N Ultra-9 Mainboard + 1462 7100 MSI K8N Diamond + 1462 7125 K8N Neo4-F mainboard + 147b 1c1a KN8-Ultra Mainboard + 1565 3402 NF4 AM2L Mainboard + 005c CK804 PCI Bridge + 005d CK804 PCIE Bridge + 005e CK804 Memory Controller + 1028 0225 PowerEdge T105 Memory Controller + 1043 815a A8N Series Mainboard + 10de 005e ECS Elitegroup NFORCE3-A939 motherboard. + 10f1 2865 Tomcat K8E (S2865) + 10f1 2891 Thunder K8SRE Mainboard + 1458 5000 GA-K8N Ultra-9 Mainboard + 1462 7100 K8N Diamond Mainboard + 1462 7125 K8N Neo4-F Mainboard + 147b 1c1a KN8-Ultra Mainboard + 1565 3402 NF4 AM2L Mainboard + 005f CK804 Memory Controller + 0060 nForce2 ISA Bridge + 1043 80ad A7N8X Mainboard + 147b 1c02 NF7-S/NF7 (nVidia-nForce2) 2.X + a0a0 03ba UK79G-1394 motherboard + 0064 nForce2 SMBus (MCP) + 147b 1c02 NF7-S/NF7 (nVidia-nForce2) 2.X + a0a0 03bb UK79G-1394 motherboard + 0065 nForce2 IDE + 10de 0c11 nForce 2 EIDE Controller + a0a0 03b2 UK79G-1394 motherboard + 0066 nForce2 Ethernet Controller + 1043 80a7 A7N8X Mainboard onboard nForce2 Ethernet + 10de 0c11 nForce MCP-T Networking Adapter + a0a0 03b3 UK79G-1394 motherboard + 0067 nForce2 USB Controller + 1043 0c11 A7N8X Mainboard + a0a0 03b4 UK79G-1394 motherboard + 0068 nForce2 USB Controller + 1043 0c11 A7N8X Mainboard + a0a0 03b4 UK79G-1394 motherboard + 006a nForce2 AC97 Audio Controler (MCP) + 1043 8095 nForce2 AC97 Audio Controller (MCP) + a0a0 0304 UK79G-1394 motherboard + 006b nForce Audio Processing Unit + 10de 006b nForce2 MCP Audio Processing Unit + a0a0 0304 UK79G-1394 motherboard + 006c nForce2 External PCI Bridge + 006d nForce2 PCI Bridge + 006e nForce2 FireWire (IEEE 1394) Controller + a0a0 0306 UK79G-1394 motherboard + 0080 MCP2A ISA bridge + 147b 1c09 NV7 Motherboard + 0084 MCP2A SMBus + 147b 1c09 NV7 Motherboard + 0085 MCP2A IDE + 147b 1c09 NV7 Motherboard + 0086 MCP2A Ethernet Controller + 0087 MCP2A USB Controller + 147b 1c09 NV7 Motherboard + 0088 MCP2A USB Controller + 147b 1c09 NV7 Motherboard + 008a MCP2S AC'97 Audio Controller + 147b 1c09 NV7 Motherboard + 008b MCP2A PCI Bridge + 008c MCP2A Ethernet Controller + 008e nForce2 Serial ATA Controller + 0090 G70 [GeForce 7800 GTX] + 0091 G70 [GeForce 7800 GTX] + 0092 G70 [GeForce 7800 GT] + 0093 G70 [GeForce 7800 GS] + 0094 High Definition Audio + 0095 G70 [GeForce 7800 SLI] + 0097 G70 [GeForce GTS 250] + 0098 G70M [GeForce Go 7800] + 0099 G70M [GeForce Go 7800 GTX] + 009d G70GL [Quadro FX 4500] + 00a0 NV0A [Aladdin TNT2 IGP] + 14af 5810 Maxi Gamer Xentor + 00c0 NV41 [GeForce 6800 GS] + 00c1 NV41 [GeForce 6800] + 00c2 NV41 [GeForce 6800 LE] + 00c3 NV41 [GeForce 6800 XT] + 00c5 NV41 + 00c6 NV41 + 00c7 NV41 + 00c8 NV41M [GeForce Go 6800] + 00c9 NV41M [GeForce Go 6800 Ultra] + 00cc NV41GLM [Quadro FX Go1400] + 00cd NV42GL [Quadro FX 3450/4000 SDI] + 10de 029b Quadro FX 3450 + 00ce NV41GL [Quadro FX 1400] + 00cf NV41 + 00d0 nForce3 LPC Bridge + 00d1 nForce3 Host Bridge + 00d2 nForce3 AGP Bridge + 00d3 CK804 Memory Controller + 00d4 nForce3 SMBus + 00d5 nForce3 IDE + 00d6 nForce3 Ethernet + 00d7 nForce3 USB 1.1 + 00d8 nForce3 USB 2.0 + 00d9 nForce3 Audio + 00da nForce3 Audio + 00dd nForce3 PCI Bridge + 00df CK8S Ethernet Controller + 1043 80a7 K8N-E + 105b 0c43 Winfast NF3250K8AA + 147b 1c0b NF8 Mainboard + 00e0 nForce3 250Gb LPC Bridge + 1043 813f K8N-E + 10de 0c11 Winfast NF3250K8AA + 1462 7030 K8N Neo-FSR v2.0 + 147b 1c0b NF8 Mainboard + 1849 00e0 Motherboard (one of many) + 00e1 nForce3 250Gb Host Bridge + 1043 813f K8N-E + 1462 7030 K8N Neo-FSR v2.0 + 147b 1c0b NF8 Mainboard + 1849 00e1 Motherboard (one of many) + 00e2 nForce3 250Gb AGP Host to PCI Bridge + 00e3 nForce3 Serial ATA Controller + 1043 813f K8N-E + 105b 0c43 Winfast NF3250K8AA + 147b 1c0b NF8 Mainboard + 1849 00e3 Motherboard (one of many) + 00e4 nForce 250Gb PCI System Management + 1043 813f K8N-E + 105b 0c43 Winfast NF3250K8AA + 1462 7030 K8N Neo-FSR v2.0 + 147b 1c0b NF8 Mainboard + 1849 00e4 Motherboard (one of many) + 00e5 CK8S Parallel ATA Controller (v2.5) + 1043 813f K8N-E + 105b 0c43 Winfast NF3250K8AA + 1462 7030 K8N Neo-FSR v2.0 + 147b 1c0b NF8 Mainboard + 1849 00e5 Motherboard (one of many) + f849 00e5 Motherboard (one of many) + 00e6 CK8S Ethernet Controller + 00e7 CK8S USB Controller + 1043 813f K8N-E + 105b 0c43 Winfast NF3250K8AA + 1462 7030 K8N Neo-FSR v2.0 + 147b 1c0b NF8 Mainboard + 1849 00e7 Motherboard (one of many) + 00e8 nForce3 EHCI USB 2.0 Controller + 1043 813f K8N-E + 105b 0c43 Winfast NF3250K8AA + 1462 7030 K8N Neo-FSR v2.0 + 147b 1c0b NF8 Mainboard + 1849 00e8 Motherboard (one of many) + 00ea nForce3 250Gb AC'97 Audio Controller + 1043 819d K8N-E + 105b 0c43 Winfast NF3250K8AA + 1462 b010 K8N Neo-FSR v2.0 + 147b 1c0b NF8 Mainboard + 00ed nForce3 250Gb PCI-to-PCI Bridge + 00ee nForce3 Serial ATA Controller 2 + 00f1 NV43 [GeForce 6600 GT] + 1043 81a6 N6600GT TD 128M AGP + 1043 81c6 N6600GT TD 128M AGP + 1458 3150 GV-N66T128VP + 1554 1191 PixelView PV-N43UA (128KD) + 1682 2119 GeForce 6600 GT AGP + 00f2 NV43 [GeForce 6600] + 1554 1194 PixelView PV-N43AT (256KD) + 1682 211c GeForce 6600 256MB DDR DUAL DVI TV + 00f3 NV43 [GeForce 6200] + 00f4 NV43 [GeForce 6600 LE] + 00f5 G70/G71 [GeForce 7800 GS AGP] + 00f6 NV43 [GeForce 6800 GS/XT] + 1682 217e XFX GeForce 6800 XTreme 256MB DDR3 AGP + 00f8 NV45GL [Quadro FX 3400/4400] + 00f9 NV40 [GeForce 6800 GT/GTO/Ultra] + 10de 00f9 NV40 [GeForce 6800 GT] + 1682 2120 GEFORCE 6800 GT PCI-E + 00fa NV39 [GeForce PCX 5750] + 00fb NV35 [GeForce PCX 5900] + 00fc NV37GL [Quadro FX 330/GeForce PCX 5300] + 00fd NV37GL [Quadro PCI-E Series] + 00fe NV38GL [Quadro FX 1300] + 00ff NV19 [GeForce PCX 4300] + 0100 NV10 [GeForce 256 SDR] + 1043 0200 AGP-V6600 SGRAM + 1043 0201 AGP-V6600 SDRAM + 1043 4008 AGP-V6600 SGRAM + 1043 4009 AGP-V6600 SDRAM + 1048 0c41 Erazor X + 1048 0c43 ERAZOR X PCI + 1048 0c48 Synergy Force + 1102 102d CT6941 GeForce 256 + 14af 5022 3D Prophet SE + 0101 NV10 [GeForce 256 DDR] + 1043 0202 AGP-V6800 DDR + 1043 400a AGP-V6800 DDR SGRAM + 1043 400b AGP-V6800 DDR SDRAM + 1048 0c42 Erazor X + 107d 2822 WinFast GeForce 256 + 1102 102e CT6970/CT6971 + 14af 5021 3D Prophet DDR-DVI + 0103 NV10GL [Quadro] + 1048 0c40 GLoria II-64 + 1048 0c44 GLoria II + 1048 0c45 GLoria II + 1048 0c4a GLoria II-64 Pro + 1048 0c4b GLoria II-64 Pro DVII + 10a9 9002 VPro VR3 + 0110 NV11 [GeForce2 MX/MX 400] + 1043 4015 AGP-V7100 Pro + 1043 4021 V7100 Deluxe Combo + 1043 4031 V7100 Pro with TV output + 1048 0c60 Gladiac MX + 1048 0c61 Gladiac 511PCI + 1048 0c63 Gladiac 511TV-OUT 32MB + 1048 0c64 Gladiac 511TV-OUT 64MB + 1048 0c65 Gladiac 511TWIN + 1048 0c66 Gladiac 311 + 10b0 0001 GeForce2 MX Jumbo TV + 10de 0091 Dell OEM GeForce 2 MX 400 + 10de 00a1 Apple OEM GeForce2 MX + 1462 8523 MS-8852 + 1462 8817 MSI GeForce2 MX400 Pro32S [MS-8817] + 14af 7102 3D Prophet II MX + 14af 7103 3D Prophet II MX Dual-Display + 1545 0023 Xtasy Rev. B2 + 1554 1081 MVGA-NVG11AM(400) + 0111 NV11 [GeForce2 MX200] + 0112 NV11M [GeForce2 Go] + 0113 NV11GL [Quadro2 MXR/EX/Go] + 1028 00e5 Quadro2 Go + 0140 NV43 [GeForce 6600 GT] + 1458 3125 GV-NX66T128D + 1458 3126 GV-NX66T256DE + 1462 8939 MS-8983 + 0141 NV43 [GeForce 6600] + 1043 81b0 EN6600 Silencer + 107d 593a LR2A22 128MB TV OUT + 107d 597b WINFAST PX6600 + 1458 3124 GV-NX66128DP Turbo Force Edition + 0142 NV43 [GeForce 6600 LE] + 0143 NV43 [GeForce 6600 VE] + 0144 NV43M [GeForce Go 6600] + 0145 NV43 [GeForce 6610 XL] + 0146 NV43M [GeForce Go6200 TE / 6600 TE] + 0147 NV43 [GeForce 6700 XL] + 0148 NV43M [GeForce Go 6600] + 0149 NV43M [GeForce Go 6600 GT] + 014a NV43 [Quadro NVS 440] + 014b NV43 + 014d NV43GL [Quadro FX 550] + 014e NV43GL [Quadro FX 540] + 014f NV43 [GeForce 6200] + 0150 NV15 [GeForce2 GTS/Pro] + 1043 4016 V7700 AGP Video Card + 1043 402a AGP-V7700 + 1048 0c50 Gladiac + 1048 0c52 Gladiac-64 + 107d 2840 WinFast GeForce2 GTS with TV output + 107d 2842 WinFast GeForce 2 Pro + 10de 002e GeForce2 GTS + 1462 815a MS-8815 + 1462 8831 Creative GeForce2 Pro + 0151 NV15 [GeForce2 Ti] + 1043 405f V7700Ti + 1462 5506 Creative 3D Blaster GeForce2 Titanium + 1462 8364 MS-8836 + 0152 NV15 [GeForce2 Ultra] + 1048 0c56 GLADIAC Ultra + 0153 NV15GL [Quadro2 Pro] + 0160 NV44 [GeForce 6500] + 0161 NV44 [GeForce 6200 TurboCache] + 0162 NV44 [GeForce 6200 SE TurboCache] + 0163 NV44 [GeForce 6200 LE] + 0164 NV44M [GeForce Go 6200] + 0165 NV44 [Quadro NVS 285] + 0166 NV44M [GeForce Go 6400] + 0167 NV44M [GeForce Go 6200] + 0168 NV44M [GeForce Go 6400] + 0169 NV44 [GeForce 6250] + 016a NV44 [GeForce 7100 GS] + 016d NV44 + 016e NV44 + 016f NV44 + 0170 NV17 [GeForce4 MX 460] + 1462 8630 MS-8863 + 0171 NV17 [GeForce4 MX 440] + 10b0 0002 Gainward Pro/600 TV + 10de 0008 Apple OEM GeForce4 MX 440 + 1462 8661 G4MX440-VTP + 1462 8730 MX440SES-T (MS-8873) + 1462 8743 MS-8874 + 1462 8852 GeForce4 MX440 PCI + 147b 8f00 Abit Siluro GeForce4MX440 + 0172 NV17 [GeForce4 MX 420] + 1462 8730 MS-8873 + 1462 8784 MS-8878 + 0173 NV17 [GeForce4 MX 440-SE] + 0174 NV17M [GeForce4 440 Go] + 0175 NV17M [GeForce4 420 Go] + 0176 NV17M [GeForce4 420 Go 32M] + 103c 08b0 tc1100 tablet + 144d c005 X10 Laptop + 4c53 1090 Cx9 / Vx9 mainboard + 0177 NV17M [GeForce4 460 Go] + 0178 NV17GL [Quadro4 550 XGL] + 0179 NV17M [GeForce4 440 Go 64M] + 10de 0179 GeForce4 MX (Mac) + 017a NV17GL [Quadro NVS] + 017b NV17GL [Quadro4 550 XGL] + 017c NV17GL [Quadro4 500 GoGL] + 017f NV17 + 0181 NV18 [GeForce4 MX 440 AGP 8x] + 1043 8063 GeForce4 MX 440 AGP 8X + 1043 806f V9180 Magic + 1462 8880 MS-StarForce GeForce4 MX 440 with AGP8X + 1462 8900 MS-8890 GeForce 4 MX440 AGP8X + 1462 9350 MSI GeForce4 MX T8X with AGP8X + 147b 8f0d Siluro GF4 MX-8X + 1554 1111 PixelView MVGA-NVG18A + 0182 NV18 [GeForce4 MX 440SE AGP 8x] + 0183 NV18 [GeForce4 MX 420 AGP 8x] + 0184 NV18 [GeForce4 MX] + 0185 NV18 [GeForce4 MX 4000] + 0186 NV18M [GeForce4 448 Go] + 0187 NV18M [GeForce4 488 Go] + 0188 NV18GL [Quadro4 580 XGL] + 0189 NV18 [GeForce4 MX with AGP8X (Mac)] + 018a NV18GL [Quadro NVS 280 SD] + 018b NV18GL [Quadro4 380 XGL] + 018c NV18GL [Quadro NVS 50 PCI] + 018d NV18M [GeForce4 448 Go] + 0190 G80 [GeForce 8800 GTS / 8800 GTX] + 0191 G80 [GeForce 8800 GTX] + 0192 G80 [GeForce 8800 GTS] + 0193 G80 [GeForce 8800 GTS] + 107d 20bd WinFast PX 8800 GTS TDH + 0194 G80 [GeForce 8800 Ultra] + 0197 G80GL [Tesla C870] + 019d G80GL [Quadro FX 5600] + 019e G80GL [Quadro FX 4600] + 01a0 nForce 220/420 NV1A [GeForce2 MX] + 01a4 nForce CPU bridge + 01ab nForce 420 Memory Controller (DDR) + 01ac nForce 220/420 Memory Controller + 01ad nForce 220/420 Memory Controller + 01b0 nForce Audio Processing Unit + 01b1 nForce AC'97 Audio Controller + 01b2 nForce ISA Bridge + 01b4 nForce PCI System Management + 01b7 nForce AGP to PCI Bridge + 01b8 nForce PCI-to-PCI bridge + 01bc nForce IDE + 01c1 nForce AC'97 Modem Controller + 01c2 nForce USB Controller + 01c3 nForce Ethernet Controller + 01d0 G72 [GeForce 7350 LE] + 01d1 G72 [GeForce 7300 LE] + 107d 5efa WinFast PX7300LE-TD128 + 107d 5efb WinFast PX7300LE-TD256 + 1462 0345 7300LE PCI Express Graphics Adapter + 01d2 G72 [GeForce 7550 LE] + 01d3 G72 [GeForce 7200 GS / 7300 SE] + 1043 8203 EN7300SE + 1043 8250 EN7200GS + 01d5 G72 + 01d6 G72M [GeForce Go 7200] + 01d7 G72M [Quadro NVS 110M/GeForce Go 7300] + 01d8 G72M [GeForce Go 7400] + 1028 01d7 XPS M1210 + 01d9 G72M [GeForce Go 7450] + 01da G72M [Quadro NVS 110M] + 01db G72M [Quadro NVS 120M] + 01dc G72GLM [Quadro FX 350M] + 01dd G72 [GeForce 7500 LE] + 01de G72GL [Quadro FX 350] + 10de 01dc Quadro FX Go350M + 01df G72 [GeForce 7300 GS] + 01e0 nForce2 IGP2 + 147b 1c09 NV7 Motherboard + 01e8 nForce2 AGP + 01ea nForce2 Memory Controller 0 + a0a0 03b9 UK79G-1394 motherboard + 01eb nForce2 Memory Controller 1 + a0a0 03b9 UK79G-1394 motherboard + 01ec nForce2 Memory Controller 2 + a0a0 03b9 UK79G-1394 motherboard + 01ed nForce2 Memory Controller 3 + a0a0 03b9 UK79G-1394 motherboard + 01ee nForce2 Memory Controller 4 + 10de 01ee MSI Delta-L nForce2 memory controller + a0a0 03b9 UK79G-1394 motherboard + 01ef nForce2 Memory Controller 5 + a0a0 03b9 UK79G-1394 motherboard + 01f0 NV1F C17 [GeForce4 MX IGP] + a0a0 03b5 UK79G-1394 motherboard + 0200 NV20 [GeForce3] + 1043 402f AGP-V8200 DDR + 1048 0c70 GLADIAC 920 + 0201 NV20 [GeForce3 Ti 200] + 1462 8503 G3Ti200 Pro VT128 + 0202 NV20 [GeForce3 Ti 500] + 1043 405b V8200 T5 + 1545 002f Xtasy 6964 + 0203 NV20GL [Quadro DCC] + 0211 NV48 [GeForce 6800] + 0212 NV48 [GeForce 6800 LE] + 0215 NV48 [GeForce 6800 GT] + 0218 NV48 [GeForce 6800 XT] + 0221 NV44A [GeForce 6200] + 1043 81e1 N6200/TD/256M/A + 3842 a341 256A8N341DX + 0222 NV44 [GeForce 6200 A-LE] + 0224 NV44 + 0240 C51PV [GeForce 6150] + 1043 81cd A8N-VM CSM + 1462 7207 K8NGM2 series + 0241 C51 [GeForce 6150 LE] + 0242 C51G [GeForce 6100] + 105b 0cad Winfast 6100K8MB + 0243 C51 PCI Express Bridge + 0244 C51 [GeForce Go 6150] + 103c 30b5 Presario V3242AU + 103c 30b7 Presario V6133CL + 10de 0244 GeForce Go 6150 + 0245 C51 [Quadro NVS 210S/GeForce 6150LE] + 0246 C51 PCI Express Bridge + 0247 C51 [GeForce Go 6100] + 1043 1382 MCP51 PCI-X GeForce Go 6100 + 0248 C51 PCI Express Bridge + 0249 C51 PCI Express Bridge + 024a C51 PCI Express Bridge + 024b C51 PCI Express Bridge + 024c C51 PCI Express Bridge + 024d C51 PCI Express Bridge + 024e C51 PCI Express Bridge + 024f C51 PCI Express Bridge + 0250 NV25 [GeForce4 Ti 4600] + 0251 NV25 [GeForce4 Ti 4400] + 1043 8023 v8440 GeForce 4 Ti4400 + 10de 0251 PNY GeForce4 Ti 4400 + 1462 8710 PNY GeForce4 Ti 4400 + 0252 NV25 [GeForce4 Ti] + 0253 NV25 [GeForce4 Ti 4200] + 107d 2896 WinFast A250 LE TD (Dual VGA/TV-out/DVI) + 147b 8f09 Siluro (Dual VGA/TV-out/DVI) + 0258 NV25GL [Quadro4 900 XGL] + 0259 NV25GL [Quadro4 750 XGL] + 025b NV25GL [Quadro4 700 XGL] + 0260 MCP51 LPC Bridge + 103c 2a34 Pavilion a1677c + 103c 30b7 Presario V6133CL + 1043 81bc A8N-VM CSM Mainboard + 1458 5001 GA-M55plus-S3G + 1462 7207 K8NGM2 series + 0261 MCP51 LPC Bridge + 105b 0cad Winfast 6100K8MB + 0262 MCP51 LPC Bridge + 0263 MCP51 LPC Bridge + 0264 MCP51 SMBus + 103c 2a34 Pavilion a1677c + 103c 30b7 Presario V6133CL + 1043 81bc A8N-VM CSM Mainboard + 105b 0cad Winfast 6100K8MB + 1462 7207 K8NGM2 series + 0265 MCP51 IDE + 103c 2a34 Pavilion a1677c + 103c 30b7 Presario V6133CL + 1043 81bc A8N-VM CSM Mainboard + 1462 7207 K8NGM2 series +# Foxconn has used a wrong vendor ID for this one + f05b 0cad Winfast 6100K8MB + 0266 MCP51 Serial ATA Controller + 103c 2a34 Pavilion a1677c + 103c 30b7 Presario V6133CL + 1043 81bc A8N-VM CSM Mainboard + 1462 7207 K8NGM2 series + 0267 MCP51 Serial ATA Controller + 103c 2a34 Pavilion a1677c + 1043 81bc A8N-VM CSM Mainboard + 1462 7207 K8NGM2 series + 0268 MCP51 Ethernet Controller + 0269 MCP51 Ethernet Controller + 103c 2a34 Pavilion a1677c + 103c 30b7 Presario V6133CL + 1043 8141 A8N-VM CSM Mainboard + 1462 7207 K8NGM2 series + 026a MCP51 MCI + 026b MCP51 AC97 Audio Controller + 105b 0cad Winfast 6100K8MB + 026c MCP51 High Definition Audio + 103c 2a34 Pavilion a1677c + 103c 30b5 Presario V3242AU + 103c 30b7 Presario V6133CL + 10de cb84 ASUSTeK Computer Inc. A8N-VM CSM Mainboard + 1462 7207 K8NGM2 series + 026d MCP51 USB Controller + 103c 2a34 Pavilion a1677c + 103c 30b7 Presario V6133CL + 1043 81bc A8N-VM CSM Mainboard + 105b 0cad Winfast 6100K8MB + 1462 7207 K8NGM2 series + 026e MCP51 USB Controller + 103c 2a34 Pavilion a1677c + 103c 30b7 Presario V6133CL + 1043 81bc A8N-VM CSM Mainboard + 105b 0cad Winfast 6100K8MB + 1462 7207 K8NGM2 series + 026f MCP51 PCI Bridge + 103c 30b7 Presario V6133CL + 0270 MCP51 Host Bridge + 103c 2a34 Pavilion a1677c + 103c 30b7 Presario V6133CL + 1043 81bc A8N-VM CSM Mainboard + 105b 0cad Winfast 6100K8MB + 1458 5001 GA-M55plus-S3G + 1462 7207 K8NGM2 series + 0271 MCP51 PMU + 103c 30b5 Presario V3242AU + 103c 30b7 Presario V6133CL + 0272 MCP51 Memory Controller 0 + 103c 2a34 Pavilion a1677c + 105b 0cad Winfast 6100K8MB + 027e C51 Memory Controller 2 + 103c 2a34 Pavilion a1677c + 103c 30b7 Presario V6133CL + 1043 81cd A8N-VM CSM Mainboard + 1458 5000 GA-M55plus-S3G + 1462 7207 K8NGM2 series + 027f C51 Memory Controller 3 + 103c 2a34 Pavilion a1677c + 103c 30b7 Presario V6133CL + 1043 81cd A8N-VM CSM Mainboard + 1458 5000 GA-M55plus-S3G + 1462 7207 K8NGM2 series + 0280 NV28 [GeForce4 Ti 4800] + 0281 NV28 [GeForce4 Ti 4200 AGP 8x] + 0282 NV28 [GeForce4 Ti 4800 SE] + 0286 NV28M [GeForce4 Ti 4200 Go AGP 8x] + 0288 NV28GL [Quadro4 980 XGL] + 0289 NV28GL [Quadro4 780 XGL] + 028c NV28GLM [Quadro4 Go700] + 0290 G71 [GeForce 7900 GTX] + 0291 G71 [GeForce 7900 GT/GTO] + 10de 042b NX7900GTO-T2D512E [7900 GTO] + 0292 G71 [GeForce 7900 GS] + 0293 G71 [GeForce 7900 GX2] + 0294 G71 [GeForce 7950 GX2] + 0295 G71 [GeForce 7950 GT] + 1043 8225 GeForce 7950 GT + 107d 2a68 WinFast PX7950GT TDH + 1462 0663 NX7950GT-VT2D512EZ-HD + 0297 G71M [GeForce Go 7950 GTX] + 0298 G71M [GeForce Go 7900 GS] + 0299 G71M [GeForce Go 7900 GTX] + 029a G71GLM [Quadro FX 2500M] + 029b G71GLM [Quadro FX 1500M] + 029c G71GL [Quadro FX 5500] + 029d G71GL [Quadro FX 3500] + 1028 019b G71GLM [Quadro FX 3500M] + 029e G71GL [Quadro FX 1500] + 029f G71GL [Quadro FX 4500 X2] +# Xbox Graphics Processing Unit (Integrated). GeForce3 derivative (NV20 < NV2A < NV25). + 02a0 NV2A [XGPU] + 02a5 MCPX CPU Bridge + 02a6 MCPX Memory Controller + 02e0 G73 [GeForce 7600 GT AGP] + 02e0 2249 GF 7600GT 560M 256MB DDR3 DUAL DVI TV + 02e1 G73 [GeForce 7600 GS AGP] + 1682 222b PV-T73K-UAL3 (256MB) + 1682 2247 GF 7600GS 512MB DDR2 + 02e2 G73 [GeForce 7300 GT AGP] + 02e3 G71 [GeForce 7900 GS AGP] + 02e4 G71 [GeForce 7950 GT AGP] + 1682 2271 PV-T71A-YDF7 (512MB) + 02e5 G71 [GeForce 7600 GS AGP] + 02f0 C51 Host Bridge + 103c 2a34 Pavilion a1677c + 103c 30b7 Presario V6133CL + 1043 81cd A8N-VM CSM Mainboard + 1462 7207 K8NGM2 series + 02f1 C51 Host Bridge + 1458 5000 GA-M55plus-S3G + 02f2 C51 Host Bridge + 02f3 C51 Host Bridge + 02f4 C51 Host Bridge + 02f5 C51 Host Bridge + 02f6 C51 Host Bridge + 02f7 C51 Host Bridge + 02f8 C51 Memory Controller 5 + 103c 2a34 Pavilion a1677c + 103c 30b7 Presario V6133CL + 1043 81cd A8N-VM CSM Mainboard + 1458 5000 GA-M55plus-S3G + 1462 7207 K8NGM2 series + 02f9 C51 Memory Controller 4 + 103c 2a34 Pavilion a1677c + 103c 30b7 Presario V6133CL + 1043 81cd A8N-VM CSM Mainboard + 1458 5000 GA-M55plus-S3G + 1462 7207 K8NGM2 series + 02fa C51 Memory Controller 0 + 103c 2a34 Pavilion a1677c + 103c 30b7 Presario V6133CL + 1043 81cd A8N-VM CSM Mainboard + 1458 5000 GA-M55plus-S3G + 1462 7207 K8NGM2 series + 02fb C51 PCI Express Bridge + 02fc C51 PCI Express Bridge + 103c 30b7 Presario V6133CL + 02fd C51 PCI Express Bridge + 103c 30b7 Presario V6133CL + 02fe C51 Memory Controller 1 + 103c 2a34 Pavilion a1677c + 103c 30b7 Presario V6133CL + 1043 81cd A8N-VM CSM Mainboard + 1458 5000 GA-M55plus-S3G + 1462 7207 K8NGM2 series + 02ff C51 Host Bridge + 103c 2a34 Pavilion a1677c + 103c 30b7 Presario V6133CL + 1043 81cd A8N-VM CSM Mainboard + 1458 5000 GA-M55plus-S3G + 1462 7207 K8NGM2 series + 0300 NV30 [GeForce FX] + 0301 NV30 [GeForce FX 5800 Ultra] + 0302 NV30 [GeForce FX 5800] + 0308 NV30GL [Quadro FX 2000] + 0309 NV30GL [Quadro FX 1000] + 0311 NV31 [GeForce FX 5600 Ultra] + 0312 NV31 [GeForce FX 5600] + 0314 NV31 [GeForce FX 5600XT] + 1043 814a V9560XT/TD + 0316 NV31M + 0318 NV31GL + 031a NV31M [GeForce FX Go5600] + 031b NV31M [GeForce FX Go5650] + 031c NV31GLM [Quadro FX Go700] + 0320 NV34 [GeForce FX 5200] + 0321 NV34 [GeForce FX 5200 Ultra] + 0322 NV34 [GeForce FX 5200] + 1043 02fb V9250 Magic + 1043 8180 V9520-X/TD/128M + 107d 2967 WinFast A340T 128MB + 1462 9110 MS-8911 (FX5200-TD128) + 1462 9171 MS-8917 (FX5200-T128) + 1462 9360 MS-8936 (FX5200-T128) + 1682 1351 GeForce FX 5200 + 0323 NV34 [GeForce FX 5200LE] + 0324 NV34M [GeForce FX Go5200 64M] + 1028 0196 Inspiron 5160 + 103c 006a Pavilion ZD7000 laptop + 1071 8160 MIM2000 + 0325 NV34M [GeForce FX Go5250] + 0326 NV34 [GeForce FX 5500] + 1458 310d GeForce FX 5500 128 MB + 1682 2034 GeForce 5500 256 MB + 0327 NV34 [GeForce FX 5100] + 0328 NV34M [GeForce FX Go5200 32M/64M] + 0329 NV34M [GeForce FX Go5200] + 10de 0010 Powerbook G4 + 032a NV34GL [Quadro NVS 280 PCI] + 032b NV34GL [Quadro FX 500/600 PCI] + 032c NV34M [GeForce FX Go5300 / Go5350] + 032d NV34M [GeForce FX Go5100] + 032e NV34 + 032f NV34 [GeForce FX 5200] + 0330 NV35 [GeForce FX 5900 Ultra] + 1043 8137 V9950 Ultra / 256 MB + 0331 NV35 [GeForce FX 5900] + 1043 8145 V9950GE + 0332 NV35 [GeForce FX 5900XT] + 0333 NV38 [GeForce FX 5950 Ultra] + 0334 NV35 [GeForce FX 5900ZT] + 1462 9373 FX5900ZT-VTD128 (MS-8937) + 0338 NV35GL [Quadro FX 3000] + 033f NV35GL [Quadro FX 700] + 0341 NV36 [GeForce FX 5700 Ultra] + 1462 9380 MS-8938 (FX5700U-TD128) + 0342 NV36 [GeForce FX 5700] + 0343 NV36 [GeForce FX 5700LE] + 0344 NV36 [GeForce FX 5700VE] + 0347 NV36M [GeForce FX Go5700] + 103c 006a NX9500 + 0348 NV36M [GeForce FX Go5700] + 034c NV36 [Quadro FX Go1000] + 034d NV36 + 034e NV36GL [Quadro FX 1100] + 0360 MCP55 LPC Bridge + 0361 MCP55 LPC Bridge + 1028 0221 PowerEdge R805 MCP55 LPC Bridge + 0362 MCP55 LPC Bridge + 147b 1c24 KN9 series mainboard + 0363 MCP55 LPC Bridge + 0364 MCP55 LPC Bridge + 1028 0221 PowerEdge R805 MCP55 LPC Bridge + 0365 MCP55 LPC Bridge + 0366 MCP55 LPC Bridge + 0367 MCP55 LPC Bridge + 0368 MCP55 SMBus Controller + 1028 020c PowerEdge M605 MCP55 SMBus + 1028 0221 PowerEdge R805 MCP55 SMBus + 147b 1c24 KN9 series mainboard + 0369 MCP55 Memory Controller + 147b 1c24 KN9 series mainboard + 036a MCP55 Memory Controller + 036b MCP55 SMU + 036c MCP55 USB Controller + 1028 020c PowerEdge M605 MCP55 USB Controller + 1028 0221 PowerEdge R805 MCP55 USB Controller + 147b 1c24 KN9 series mainboard + 036d MCP55 USB Controller + 1028 020c PowerEdge M605 MCP55 USB Controller + 1028 0221 PowerEdge R805 MCP55 USB Controller + 147b 1c24 KN9 series mainboard + 036e MCP55 IDE + 147b 1c24 KN9 series mainboard + 0370 MCP55 PCI bridge + 0371 MCP55 High Definition Audio + 147b 1c24 KN9 series mainboard + 0372 MCP55 Ethernet + 0373 MCP55 Ethernet + 147b 1c24 KN9 series mainboard + 0374 MCP55 PCI Express bridge + 0375 MCP55 PCI Express bridge + 0376 MCP55 PCI Express bridge + 0377 MCP55 PCI Express bridge + 0378 MCP55 PCI Express bridge + 037a MCP55 Memory Controller + 037e MCP55 SATA Controller + 037f MCP55 SATA Controller + 1028 0221 PowerEdge R805 MCP55 SATA Controller + 147b 1c24 KN9 series mainboard + 038b G73 [GeForce 7650 GS] + 0390 G73 [GeForce 7650 GS] + 0391 G73 [GeForce 7600 GT] + 1458 3427 GV-NX76T128D-RH + 1462 0452 NX7600GT-VT2D256E + 0392 G73 [GeForce 7600 GS] + 1462 0622 NX7600GS-T2D256EH + 0393 G73 [GeForce 7300 GT] + 10de 0412 NX7300GT-TD256EH + 1462 0412 NX7300GT-TD256EH + 0394 G73 [GeForce 7600 LE] + 0395 G73 [GeForce 7300 GT] + 0396 G73 + 0397 G73M [GeForce Go 7700] + 0398 G73M [GeForce Go 7600] + 1025 006c Aspire 9814WKMi + 0399 G73M [GeForce Go 7600 GT] + 039a G73M [Quadro NVS 300M] + 039b G73M [GeForce Go 7900 SE] + 039c G73GLM [Quadro FX 550M] + 10de 039c Quadro FX 560M + 039d G73 + 039e G73GL [Quadro FX 560] + 039f G73 + 03a0 C55 Host Bridge + 03a1 C55 Host Bridge + 03a2 C55 Host Bridge + 03a3 C55 Host Bridge + 03a4 C55 Host Bridge + 03a5 C55 Host Bridge + 03a6 C55 Host Bridge + 03a7 C55 Host Bridge + 03a8 C55 Memory Controller + 03a9 C55 Memory Controller + 03aa C55 Memory Controller + 03ab C55 Memory Controller + 03ac C55 Memory Controller + 03ad C55 Memory Controller + 03ae C55 Memory Controller + 03af C55 Memory Controller + 03b0 C55 Memory Controller + 03b1 C55 Memory Controller + 03b2 C55 Memory Controller + 03b3 C55 Memory Controller + 03b4 C55 Memory Controller + 03b5 C55 Memory Controller + 03b6 C55 Memory Controller + 03b7 C55 PCI Express bridge + 03b8 C55 PCI Express bridge + 03b9 C55 PCI Express bridge + 03ba C55 Memory Controller + 03bb C55 PCI Express bridge + 03bc C55 Memory Controller + 03d0 C61 [GeForce 6150SE nForce 430] + 1028 020e Inspiron 531 + 03d1 C61 [GeForce 6100 nForce 405] + 03d2 C61 [GeForce 6100 nForce 400] + 03d5 C61 [GeForce 6100 nForce 420] + 03d6 C61 [GeForce 7025 / nForce 630a] + 03e0 MCP61 LPC Bridge + 1028 020e Inspiron 531 + 1849 03e0 939NF6G-VSTA Board + 03e1 MCP61 LPC Bridge + 1043 83a4 M4N68T series motherboard + 03e2 MCP61 Host Bridge + 1043 83a4 M4N68T series motherboard + 03e3 MCP61 LPC Bridge + 03e4 MCP61 High Definition Audio + 03e5 MCP61 Ethernet + 03e6 MCP61 Ethernet + 03e7 MCP61 SATA Controller + 03e8 MCP61 PCI Express bridge + 1028 020e Inspiron 531 + 1849 03e8 939NF6G-VSTA Board + 03e9 MCP61 PCI Express bridge + 1028 020e Inspiron 531 + 1849 03e9 939NF6G-VSTA Board + 03ea MCP61 Memory Controller + 1028 020e Inspiron 531 + 1849 03ea 939NF6G-VSTA Board + 03eb MCP61 SMBus + 1028 020e Inspiron 531 + 1043 83a4 M4N68T series motherboard + 1849 03eb 939NF6G-VSTA Board + 03ec MCP61 IDE + 1025 0392 ET1350 + 1028 020e Inspiron 531 + 1043 83a4 M4N68T series motherboard + 1849 03ec 939NF6G-VSTA Board + 03ee MCP61 Ethernet + 03ef MCP61 Ethernet + 1025 8000 ET1350 + 1028 020e Inspiron 531 + 1043 83a4 M4N68T series motherboard + 1849 03ef 939NF6G-VSTA Board + 03f0 MCP61 High Definition Audio + 1028 020e Inspiron 531 + 1043 8415 M4N68T series motherboard + 1849 0888 939NF6G-VSTA Board + 03f1 MCP61 USB 1.1 Controller + 1028 020e Inspiron 531 + 1043 83a4 M4N68T series motherboard + 1849 03f1 939NF6G-VSTA Board + 03f2 MCP61 USB 2.0 Controller + 1028 020e Inspiron 531 + 1043 83a4 M4N68T series motherboard + 1849 03f2 939NF6G-VSTA Board + 03f3 MCP61 PCI bridge + 1028 020e Inspiron 531 + 1849 03f3 939NF6G-VSTA Board + 03f4 MCP61 SMU + 03f5 MCP61 Memory Controller + 1028 020e Inspiron 531 + 1043 83a4 M4N68T series motherboard + 1849 03eb 939NF6G-VSTA Board + 03f6 MCP61 SATA Controller + 1028 020e Inspiron 531 + 1043 83a4 M4N68T series motherboard + 1849 03f6 939NF6G-VSTA Board + 03f7 MCP61 SATA Controller + 0400 G84 [GeForce 8600 GTS] + 1043 8241 EN8600GTS + 0401 G84 [GeForce 8600 GT] + 0402 G84 [GeForce 8600 GT] + 1458 3455 GV-NX86T512H + 1462 0910 NX8600GT-T2D256EZ + 0403 G84 [GeForce 8600 GS] + 0404 G84 [GeForce 8400 GS] + 1462 1230 NX8400GS-TD256E + 0405 G84M [GeForce 9500M GS] + 0406 G84 [GeForce 8300 GS] + 0407 G84M [GeForce 8600M GT] + 0408 G84M [GeForce 9650M GS] + 0409 G84M [GeForce 8700M GT] + 040a G84GL [Quadro FX 370] + 040b G84GLM [Quadro NVS 320M] + 040c G84GLM [Quadro FX 570M] + 17aa 20d9 ThinkPad T61p + 040d G84GLM [Quadro FX 1600M] + 040e G84GL [Quadro FX 570] + 040f G84GL [Quadro FX 1700] + 0410 G92 [GeForce GT 330] + 0414 G92 [GeForce 9800 GT] + 0418 G92 [GeForce GT 330 OEM] + 0420 G86 [GeForce 8400 SE] + 0421 G86 [GeForce 8500 GT] + 1462 0960 NX8500GT-TD512EH/M2 + 0422 G86 [GeForce 8400 GS] + 0423 G86 [GeForce 8300 GS] + 0424 G86 [GeForce 8400 GS] + 0425 G86M [GeForce 8600M GS] + 1025 0121 Aspire 5920G + 1043 1514 F3SV + 0426 G86M [GeForce 8400M GT] + 0427 G86M [GeForce 8400M GS] + 103c 30cc Pavilion dv6700 + 103c 30cf Pavilion dv9668eg Laptop + 0428 G86M [GeForce 8400M G] + 0429 G86M [Quadro NVS 140M] + 17aa 20d8 ThinkPad T61 + 042a G86M [Quadro NVS 130M] + 042b G86M [Quadro NVS 135M] + 042c G86 [GeForce 9400 GT] + 042d G86GLM [Quadro FX 360M] + 042e G86M [GeForce 9300M G] + 042f G86 [Quadro NVS 290] + 0440 MCP65 LPC Bridge + 0441 MCP65 LPC Bridge + 0442 MCP65 LPC Bridge + 103c 30cf Pavilion dv9668eg Laptop + 0443 MCP65 LPC Bridge + 0444 MCP65 Memory Controller + 103c 30cf Pavilion dv9668eg Laptop + 0445 MCP65 Memory Controller + 0446 MCP65 SMBus + 103c 30cf Pavilion dv9668eg Laptop + 0447 MCP65 SMU + 103c 30cf Pavilion dv9500/9600/9700 series + 0448 MCP65 IDE + 103c 30cf Pavilion dv9668eg Laptop + 0449 MCP65 PCI bridge + 10de cb84 HP Pavilion dv9668eg Laptop + 044a MCP65 High Definition Audio + 103c 30cf Pavilion dv9668eg Laptop + 044b MCP65 High Definition Audio + 044c MCP65 AHCI Controller + 044d MCP65 AHCI Controller + 044e MCP65 AHCI Controller + 044f MCP65 AHCI Controller + 0450 MCP65 Ethernet + 103c 30cf Pavilion dv9668eg Laptop + 0451 MCP65 Ethernet + 0452 MCP65 Ethernet + 0453 MCP65 Ethernet + 0454 MCP65 USB 1.1 OHCI Controller + 103c 30cf Pavilion dv9668eg Laptop + 0455 MCP65 USB 2.0 EHCI Controller + 103c 30cf Pavilion dv9668eg Laptop + 0456 MCP65 USB Controller + 0457 MCP65 USB Controller + 0458 MCP65 PCI Express bridge + 10de 0000 MCP65 PCI Express bridge + 0459 MCP65 PCI Express bridge + 10de 0000 MCP65 PCI Express bridge + 045a MCP65 PCI Express bridge + 10de 0000 MCP65 PCI Express bridge + 045b MCP65 PCI Express bridge + 10de 0000 MCP65 PCI Express bridge + 045c MCP65 SATA Controller + 045d MCP65 SATA Controller + 103c 30cf Pavilion dv9668eg Laptop + 045e MCP65 SATA Controller + 045f MCP65 SATA Controller + 0531 C67 [GeForce 7150M / nForce 630M] + 0533 C67 [GeForce 7000M / nForce 610M] + 053a C68 [GeForce 7050 PV / nForce 630a] + 053b C68 [GeForce 7050 PV / nForce 630a] + 1043 8308 M2N68-AM Motherboard + 053e C68 [GeForce 7025 / nForce 630a] + 0541 MCP67 Memory Controller + 0542 MCP67 SMBus + 1043 8308 M2N68-AM Motherboard + 0543 MCP67 Co-processor + 0547 MCP67 Memory Controller + 1043 8308 M2N68-AM Motherboard + 1849 0547 ALiveNF7G-HDready + 0548 MCP67 ISA Bridge + 1043 8308 M2N68-AM Motherboard + 054c MCP67 Ethernet + 1043 8308 M2N68-AM Motherboard + 1849 054c ALiveNF7G-HDready, MCP67 Gigabit Ethernet + 054d MCP67 Ethernet + 054e MCP67 Ethernet + 054f MCP67 Ethernet + 0550 MCP67 AHCI Controller + 1043 8308 M2N68-AM Motherboard + 0554 MCP67 AHCI Controller + 1043 8308 M2N68-AM Motherboard + 0555 MCP67 SATA Controller + 1043 8308 M2N68-AM Motherboard + 055c MCP67 High Definition Audio + 1043 8290 M2N68-AM Motherboard + 055d MCP67 High Definition Audio + 055e MCP67 OHCI USB 1.1 Controller + 1043 8308 M2N68-AM Motherboard + 055f MCP67 EHCI USB 2.0 Controller + 1043 8308 M2N68-AM Motherboard + 0560 MCP67 IDE Controller + f043 8308 M2N68-AM Motherboard + 0561 MCP67 PCI Bridge + 0562 MCP67 PCI Express Bridge + 1849 0562 ALiveNF7G-HDready + 0563 MCP67 PCI Express Bridge + 0568 MCP78S [GeForce 8200] Memory Controller + 103c 2a9e Pavilion p6310f + 1043 82e8 M3N72-D + 1462 7508 K9N2GM-FIH + 1849 0568 K10N78FullHD-hSLI R3.0 Memory Controller + 0569 MCP78S [GeForce 8200] PCI Express Bridge + 103c 2a9e Pavilion p6310f + 1043 82e8 M3N72-D + 1462 7508 K9N2GM-FIH + 1849 0569 K10N78FullHD-hSLI R3.0 PCI Express Bridge + 056a MCP73 [nForce 630i] USB 2.0 Controller (EHCI) + 1019 297a MCP73PVT-SM + 147b 1c3e I-N73V motherboard + 056c MCP73 IDE Controller + 1019 297a MCP73PVT-SM + 147b 1c3e I-N73V motherboard + 1afa 7150 JW-IN7150-HD + 056d MCP73 PCI Express bridge + 1019 297a MCP73PVT-SM + 10de cb73 MCP73 PCI Bridge + 056e MCP73 PCI Express bridge + 1019 297a MCP73PVT-SM + 10de 0000 MCP73 PCIe x16 port + 056f MCP73 PCI Express bridge + 1019 297a MCP73PVT-SM + 10de 0000 MCP73 PCIe x1 port + 05b1 NF200 PCIe 2.0 switch + 05b8 NF200 PCIe 2.0 switch for GTX 295 + 05be NF200 PCIe 2.0 switch for Quadro Plex S4 / Tesla S870 / Tesla S1070 / Tesla S2050 + 05e0 GT200b [GeForce GTX 295] + 05e1 GT200 [GeForce GTX 280] + 05e2 GT200 [GeForce GTX 260] + 05e3 GT200b [GeForce GTX 285] + 1682 2490 GX-285N-ZDF + 05e6 GT200b [GeForce GTX 275] + 05e7 GT200GL [Tesla C1060 / M1060] + 10de 0595 Tesla T10 Processor + 10de 068f Tesla T10 Processor + 10de 0697 Tesla M1060 + 10de 0714 Tesla M1060 + 10de 0743 Tesla M1060 + 05ea GT200 [GeForce GTX 260] + 05eb GT200 [GeForce GTX 295] + 05ed GT200GL [Quadro Plex 2200 D2] + 05f1 GT200 [GeForce GTX 280] + 05f2 GT200 [GeForce GTX 260] + 05f8 GT200GL [Quadro Plex 2200 S4] + 05f9 GT200GL [Quadro CX] + 05fd GT200GL [Quadro FX 5800] + 05fe GT200GL [Quadro FX 4800] + 05ff GT200GL [Quadro FX 3800] + 0600 G92 [GeForce 8800 GTS 512] + 0601 G92 [GeForce 9800 GT] + 0602 G92 [GeForce 8800 GT] + 0603 G92 [GeForce GT 230 OEM] + 0604 G92 [GeForce 9800 GX2] + 0605 G92 [GeForce 9800 GT] + 0606 G92 [GeForce 8800 GS] + 0607 G92 [GeForce GTS 240] + 0608 G92M [GeForce 9800M GTX] + 0609 G92M [GeForce 8800M GTS] + 106b 00a7 GeForce 8800 GS + 060a G92M [GeForce GTX 280M] + 060b G92M [GeForce 9800M GT] + 060c G92M [GeForce 8800M GTX] + 060d G92 [GeForce 8800 GS] + 060f G92M [GeForce GTX 285M] + 0610 G92 [GeForce 9600 GSO] + 1682 2385 GeForce 9600 GSO 768mb + 0611 G92 [GeForce 8800 GT] + 107d 2ab0 Winfast PX8800 GT PCI-E + 1462 1170 NX8800GT series model V117 2xDVI+TV + 19da 1040 ZT-88TES2P-FSP + 0612 G92 [GeForce 9800 GTX / 9800 GTX+] + 0613 G92 [GeForce 9800 GTX+] + 0614 G92 [GeForce 9800 GT] + 107d 2ab3 WinFast PX9800 GT (S-Fanpipe) + 0615 G92 [GeForce GTS 250] + 3842 1150 GeForce GTS 250 P/N 512-P3-1150-TR +# Overclocked + 3842 1151 GeForce GTS 250 P/N 512-P3-1151-TR + 3842 1155 GeForce GTS 250 P/N 01G-P3-1155-TR +# Overclocked + 3842 1156 GeForce GTS 250 P/N 01G-P3-1156-TR + 0617 G92M [GeForce 9800M GTX] + 0618 G92M [GeForce GTX 260M] + 0619 G92GL [Quadro FX 4700 X2] + 061a G92GL [Quadro FX 3700] + 061b G92GL [Quadro VX 200] + 061c G92GLM [Quadro FX 3600M] + 061d G92GLM [Quadro FX 2800M] + 061e G92GLM [Quadro FX 3700M] + 061f G92GLM [Quadro FX 3800M] + 0620 G94 [GeForce 9800 GT] + 0621 G94 [GeForce GT 230] + 0622 G94 [GeForce 9600 GT] + 107d 2ac1 WinFast PX9600GT 1024MB + 1458 3481 GV-NX96T512HP + 0623 G94 [GeForce 9600 GS] + 0624 G94 [GeForce 9600 GT Green Edition] + 0625 G94 [GeForce 9600 GSO 512] + 0626 G94 [GeForce GT 130] + 0627 G94 [GeForce GT 140] + 0628 G94M [GeForce 9800M GTS] + 062a G94M [GeForce 9700M GTS] + 062b G94M [GeForce 9800M GS] + 062c G94M [GeForce 9800M GTS] + 062d G94 [GeForce 9600 GT] + 062e G94 [GeForce 9600 GT] + 106b 0605 GeForce GT 130 + 062f G94 [GeForce 9800 S] + 0630 G94 [GeForce 9600 GT] + 0631 G94M [GeForce GTS 160M] + 0632 G94M [GeForce GTS 150M] + 0633 G94 [GeForce GT 220] + 0635 G94 [GeForce 9600 GSO] + 0637 G94 [GeForce 9600 GT] + 0638 G94GL [Quadro FX 1800] + 063a G94GLM [Quadro FX 2700M] + 063f G94 [GeForce 9600 GE] + 0640 G96C [GeForce 9500 GT] + 0641 G96C [GeForce 9400 GT] + 1682 4009 PV-T94G-ZAFG + 0642 G96 [D9M-10] + 0643 G96 [GeForce 9500 GT] + 0644 G96 [GeForce 9500 GS] + 174b 9600 Geforce 9500GS 512M DDR2 V/D/HDMI + 0645 G96C [GeForce 9500 GS] + 0646 G96C [GeForce GT 120] + 0647 G96CM [GeForce 9600M GT] + 0648 G96CM [GeForce 9600M GS] + 0649 G96CM [GeForce 9600M GT] + 1043 202d GeForce GT 220M + 064a G96M [GeForce 9700M GT] + 064b G96M [GeForce 9500M G] + 064c G96CM [GeForce 9650M GT] + 064e G96C [GeForce 9600 GSO / 9800 GT] + 0651 G96CM [GeForce G 110M] + 0652 G96CM [GeForce GT 130M] + 152d 0850 GeForce GT 240M LE + 0653 G96CM [GeForce GT 120M] + 0654 G96CM [GeForce GT 220M] + 1043 14a2 GeForce GT 320M + 1043 14d2 GeForce GT 320M + 0655 G96 [GeForce GT 120 Mac Edition] + 0656 G96 [GeForce GT 120 Mac Edition] + 0658 G96GL [Quadro FX 380] + 0659 G96CGL [Quadro FX 580] + 065a G96GLM [Quadro FX 1700M] + 065b G96C [GeForce 9400 GT] + 065c G96GLM [Quadro FX 770M] + 065d G96 [GeForce 9500 GA / 9600 GT / GTS 250] + 065f G96C [GeForce G210] + 06c0 GF100 [GeForce GTX 480] + 06c4 GF100 [GeForce GTX 465] + 06ca GF100M [GeForce GTX 480M] + 06cb GF100 [GeForce GTX 480] + 06cd GF100 [GeForce GTX 470] + 06d0 GF100GL + 06d1 GF100GL [Tesla C2050 / C2070] + 10de 0771 Tesla C2050 + 10de 0772 Tesla C2070 + 06d2 GF100GL [Tesla M2070] + 10de 0774 Tesla M2070 + 10de 0830 Tesla M2070 + 10de 0842 Tesla M2070 + 10de 088f Tesla X2070 + 10de 0908 Tesla M2070 + 06d8 GF100GL [Quadro 6000] + 06d9 GF100GL [Quadro 5000] + 06da GF100GLM [Quadro 5000M] + 06dc GF100GL [Quadro 6000] + 06dd GF100GL [Quadro 4000] + 06de GF100GL [Tesla T20 Processor] + 10de 0773 Tesla S2050 + 10de 082f Tesla M2050 + 10de 0840 Tesla X2070 + 10de 0842 Tesla M2050 + 10de 0846 Tesla M2050 + 10de 0866 Tesla M2050 + 10de 0907 Tesla M2050 + 10de 091e Tesla M2050 + 06df GF100GL [Tesla M2070-Q] + 10de 084d Tesla M2070-Q + 10de 087f Tesla M2070-Q + 06e0 G98 [GeForce 9300 GE] + 107d 5a96 Geforce 9300GE + 06e1 G98 [GeForce 9300 GS] + 06e2 G98 [GeForce 8400] + 06e3 G98 [GeForce 8300 GS] + 06e4 G98 [GeForce 8400 GS Rev. 2] + 1458 3475 GV-NX84S256HE [GeForce 8400 GS] + 06e5 G98M [GeForce 9300M GS] + 06e6 G98 [GeForce G 100] + 06e7 G98 [GeForce 9300 SE] + 06e8 G98M [GeForce 9200M GS] + 103c 360b GeForce 9200M GE + 06e9 G98M [GeForce 9300M GS] + 1043 19b2 U6V laptop + 06ea G98M [Quadro NVS 150M] + 06eb G98M [Quadro NVS 160M] + 06ec G98M [GeForce G 105M] + 06ed G98 [GeForce 9600 GT / 9800 GT] + 06ee G98 [GeForce 9600 GT / 9800 GT / GT 240] + 06ef G98M [GeForce G 103M] + 06f1 G98M [GeForce G 105M] + 06f8 G98 [Quadro NVS 420] + 06f9 G98GL [Quadro FX 370 LP] + 06fa G98 [Quadro NVS 450] + 06fb G98GLM [Quadro FX 370M] + 06fd G98 [Quadro NVS 295] + 06ff G98 [HICx16 + Graphics] + 10de 0711 HICx8 + Graphics + 0751 MCP78S [GeForce 8200] Memory Controller + 103c 2a9e Pavilion p6310f + 1043 82e8 M3N72-D + 1462 7508 K9N2GM-FIH + 1849 0751 K10N78FullHD-hSLI R3.0 Memory Controller + 0752 MCP78S [GeForce 8200] SMBus + 103c 2a9e Pavilion p6310f + 1043 82e8 M3N72-D + 1462 7508 K9N2GM-FIH + 1849 0752 K10N78FullHD-hSLI R3.0 SMBus + 0753 MCP78S [GeForce 8200] Co-Processor + 103c 2a9e Pavilion p6310f + 1043 82e8 M3N72-D + 1462 7508 K9N2GM-FIH + 1849 0753 K10N78FullHD-hSLI R3.0 Co-Processor + 0754 MCP78S [GeForce 8200] Memory Controller + 103c 2a9e Pavilion p6310f + 1043 82e8 M3N72-D + 1462 7508 K9N2GM-FIH + 1849 0754 K10N78FullHD-hSLI R3.0 Memory Controller + 0759 MCP78S [GeForce 8200] IDE + 1043 82e8 M3N72-D + 1462 7508 K9N2GM-FIH + 1849 0759 K10N78FullHD-hSLI R3.0 IDE + 075a MCP78S [GeForce 8200] PCI Bridge + 103c 2a9e Pavilion p6310f + 1043 82e8 M3N72-D + 1849 075a K10N78FullHD-hSLI R3.0 PCI Bridge + 075b MCP78S [GeForce 8200] PCI Express Bridge + 103c 2a9e Pavilion p6310f + 1043 82e8 M3N72-D + 1462 7508 K9N2GM-FIH + 1849 075b K10N78FullHD-hSLI R3.0 PCI Express Bridge + 075c MCP78S [GeForce 8200] LPC Bridge + 103c 2a9e Pavilion p6310f + 1462 7508 K9N2GM-FIH + 1849 075c K10N78FullHD-hSLI R3.0 LPC Bridge + 075d MCP78S [GeForce 8200] LPC Bridge + 1043 82e8 M3N72-D + 0760 MCP77 Ethernet + 103c 2a9e Pavilion p6310f + 1043 82e8 M3N72-D + 1462 7508 K9N2GM-FIH + 1849 0760 K10N78FullHD-hSLI R3.0 Ethernet + 0761 MCP77 Ethernet + 0762 MCP77 Ethernet + 0763 MCP77 Ethernet + 0774 MCP72XE/MCP72P/MCP78U/MCP78S High Definition Audio + 103c 2a9e Pavilion p6310f +# has a Realtek ALC1200 HDAudio Codec + 1043 82fe M3N72-D + 1462 7508 K9N2GM-FIH + 1849 3662 K10N78FullHD-hSLI R3.0 High Definition Audio + 0778 MCP78S [GeForce 8200] PCI Express Bridge + 103c 2a9e Pavilion p6310f + 1043 82e8 M3N72-D + 1462 7508 K9N2GM-FIH + 1849 0778 K10N78FullHD-hSLI R3.0 PCI Express Bridge + 077a MCP78S [GeForce 8200] PCI Bridge + 103c 2a9e Pavilion p6310f + 1043 82e8 M3N72-D + 1462 7508 K9N2GM-FIH + 1849 077a K10N78FullHD-hSLI R3.0 PCI Bridge + 077b MCP78S [GeForce 8200] OHCI USB 1.1 Controller + 103c 2a9e Pavilion p6310f + 1043 82e8 M3N72-D + 1462 7508 K9N2GM-FIH + 1849 077b K10N78FullHD-hSLI R3.0 OHCI USB 1.1 Controller + 077c MCP78S [GeForce 8200] EHCI USB 2.0 Controller + 103c 2a9e Pavilion p6310f + 1043 82e8 M3N72-D + 1462 7508 K9N2GM-FIH + 1849 077c K10N78FullHD-hSLI R3.0 EHCI USB 2.0 Controller + 077d MCP78S [GeForce 8200] OHCI USB 1.1 Controller + 103c 2a9e Pavilion p6310f + 1043 82e8 M3N72-D + 1462 7508 K9N2GM-FIH + 1849 077d K10N78FullHD-hSLI R3.0 OHCI USB 1.1 Controller + 077e MCP78S [GeForce 8200] EHCI USB 2.0 Controller + 103c 2a9e Pavilion p6310f + 1043 82e8 M3N72-D + 1462 7508 K9N2GM-FIH + 1849 077e K10N78FullHD-hSLI R3.0 EHCI USB 2.0 Controller + 07c0 MCP73 Host Bridge + 1afa 7150 JW-IN7150-HD + 07c1 MCP73 Host Bridge + 1019 297a MCP73PVT-SM + 07c2 MCP73 Host Bridge + 07c3 MCP73 Host Bridge + 147b 1c3e I-N73V motherboard + 07c5 MCP73 Host Bridge + 07c8 MCP73 Memory Controller + 1019 297a MCP73PVT-SM + 147b 1c3e I-N73V motherboard + 1afa 7150 JW-IN7150-HD + 07cb nForce 610i/630i memory controller + 1019 297a MCP73PVT-SM + 147b 1c3e I-N73V motherboard + 1afa 7150 JW-IN7150-HD + 07cd nForce 610i/630i memory controller + 1019 297a MCP73PVT-SM + 147b 1c3e I-N73V motherboard + 1afa 7150 JW-IN7150-HD + 07ce nForce 610i/630i memory controller + 1019 297a MCP73PVT-SM + 147b 1c3e I-N73V motherboard + 1afa 7150 JW-IN7150-HD + 07cf nForce 610i/630i memory controller + 1019 297a MCP73PVT-SM + 147b 1c3e I-N73V motherboard + 1afa 7150 JW-IN7150-HD + 07d0 nForce 610i/630i memory controller + 1019 297a MCP73PVT-SM + 147b 1c3e I-N73V motherboard + 1afa 7150 JW-IN7150-HD + 07d1 nForce 610i/630i memory controller + 1019 297a MCP73PVT-SM + 147b 1c3e I-N73V motherboard + 1afa 7150 JW-IN7150-HD + 07d2 nForce 610i/630i memory controller + 1019 297a MCP73PVT-SM + 147b 1c3e I-N73V motherboard + 1afa 7150 JW-IN7150-HD + 07d3 nForce 610i/630i memory controller + 1019 297a MCP73PVT-SM + 147b 1c3e I-N73V motherboard + 1afa 7150 JW-IN7150-HD + 07d6 nForce 610i/630i memory controller + 1019 297a MCP73PVT-SM + 147b 1c3e I-N73V motherboard + 1afa 7150 JW-IN7150-HD + 07d7 MCP73 LPC Bridge + 1019 297a MCP73PVT-SM + 147b 1c3e I-N73V motherboard + 1afa 7150 JW-IN7150-HD + 07d8 MCP73 SMBus + 1019 297a MCP73PVT-SM + 147b 1c3e I-N73V motherboard + 1afa 7150 JW-IN7150-HD + 07d9 MCP73 Memory Controller + 1019 297a MCP73PVT-SM + 147b 1c3e I-N73V motherboard + 1afa 7150 JW-IN7150-HD + 07da MCP73 Co-processor + 1afa 7150 JW-IN7150-HD + 07dc MCP73 Ethernet + 147b 1c3e I-N73V motherboard + 07dd MCP73 Ethernet + 07de MCP73 Ethernet + 07df MCP73 Ethernet + 07e0 C73 [GeForce 7150 / nForce 630i] + 1afa 7150 JW-IN7150-HD + 07e1 C73 [GeForce 7100 / nForce 630i] + 1019 297a MCP73PVT-SM + 07e2 C73 [GeForce 7050 / nForce 630i] + 07e3 C73 [GeForce 7050 / nForce 610i] + 147b 1c3e I-N73V motherboard + 07e5 C73 [GeForce 7100 / nForce 620i] + 07f0 MCP73 SATA Controller (IDE mode) + 147b 1c3e I-N73V motherboard + 07f4 GeForce 7100/nForce 630i SATA + 1019 297a MCP73PVT-SM + 147b 1c3e I-N73V motherboard + 07f8 MCP73 SATA RAID Controller + 147b 1c3e I-N73V motherboard + 07fc MCP73 High Definition Audio + 1019 297a MCP73PVT-SM + 10de 07fc MCP73 High Definition Audio + 147b 1c3e I-N73V motherboard + 07fe MCP73 OHCI USB 1.1 Controller + 1019 297a MCP73PVT-SM + 147b 1c3e I-N73V motherboard + 1afa 7150 JW-IN7150-HD + 0840 C77 [GeForce 8200M] + 0844 C77 [GeForce 9100M G] + 0845 C77 [GeForce 8200M G] + 0846 C77 [GeForce 9200] + 0847 C78 [GeForce 9100] + 103c 2a9e Pavilion p6310f + 0848 C77 [GeForce 8300] + 0849 C77 [GeForce 8200] + 1462 7508 K9N2GM-FIH + 1849 0849 K10N78FullHD-hSLI R3.0 GeForce 8200 + 084a C77 [nForce 730a] + 084b C77 [GeForce 8200] + 084c C77 [nForce 780a/980a SLI] + 084d C77 [nForce 750a SLI] + 1043 82e8 M3N72-D mGPU + 084f C77 [GeForce 8100 / nForce 720a] + 0860 C79 [GeForce 9300] + 0861 C79 [GeForce 9400] + 0862 C79 [GeForce 9400M G] + 0863 C79 [GeForce 9400M] + 106b 00aa MacBook5,1 + 0864 C79 [GeForce 9300] + 0865 C79 [GeForce 9300 / ION] + 0866 C79 [GeForce 9400M G] + 106b 00b1 GeForce 9400M + 0867 C79 [GeForce 9400] + 106b 00ad iMac 9,1 + 0868 C79 [nForce 760i SLI] + 0869 MCP7A [GeForce 9400] + 086a C79 [GeForce 9400] + 086c C79 [GeForce 9300 / nForce 730i] + 086d C79 [GeForce 9200] + 086e C79 [GeForce 9100M G] + 086f MCP79 [GeForce 8200M G] + 1043 16b2 F5GL Notebook + 0870 C79 [GeForce 9400M] + 0871 C79 [GeForce 9200] + 0872 C79 [GeForce G102M] + 1043 19b4 GeForce G102M + 1043 1aa2 GeForce G102M + 1043 1c02 GeForce G102M + 1043 1c42 GeForce G205M + 0873 C79 [GeForce G102M] + 1043 19b4 GeForce G102M + 1043 1c12 GeForce G102M + 1043 1c52 GeForce G205M + 0874 C79 [ION] + 0876 C79 [GeForce 9400M / ION] + 087a C79 [GeForce 9400] + 087d C79 [ION] + 19da a123 IONITX-F-E + 087e C79 [ION LE] + 087f C79 [ION LE] + 08a0 MCP89 [GeForce 320M] + 08a2 MCP89 [GeForce 320M] + 08a3 MCP89 [GeForce 320M] + 08a4 MCP89 [GeForce 320M] + 08a5 MCP89 [GeForce 320M] + 0a20 GT216 [GeForce GT 220] + 1043 8311 ENGT220/DI/1GD3(LP)/V2 + 0a21 GT216M [GeForce GT 330M] + 0a22 GT216 [GeForce 315] + 0a23 GT216 [GeForce 210] + 0a24 GT216 [GeForce 405] + 0a26 GT216 [GeForce 405] + 0a27 GT216 [GeForce 405] + 0a28 GT216M [GeForce GT 230M] + 0a29 GT216M [GeForce GT 330M] + 0a2a GT216M [GeForce GT 230M] + 0a2b GT216M [GeForce GT 330M] + 0a2c GT216M [NVS 5100M] + 0a2d GT216M [GeForce GT 320M] + 0a30 GT216 [GeForce 505] + 0a32 GT216 [GeForce GT 415] + 0a34 GT216M [GeForce GT 240M] + 0a35 GT216M [GeForce GT 325M] + 0a38 GT216GL [Quadro 400] + 0a3c GT216GLM [Quadro FX 880M] + 0a60 GT218 [GeForce G210] + 0a62 GT218 [GeForce 205] + 0a63 GT218 [GeForce 310] + 0a64 GT218 [ION] + 0a65 GT218 [GeForce 210] + 1043 8334 EN210 SILENT + 1458 36a9 GV-N210D3-1GI (rev. 6.0/6.1) + 1462 8094 N210 [Geforce 210] PCIe graphics adapter + 19da 7222 GeForce 210 1GB [Synergy Edition] + 0a66 GT218 [GeForce 310] + 0a67 GT218 [GeForce 315] + 0a68 GT218M [GeForce G 105M] + 0a69 GT218M [GeForce G 105M] + 0a6a GT218M [NVS 2100M] + 0a6c GT218M [NVS 3100M] + 1028 040b Latitude E6510 + 17aa 2142 ThinkPad T410 + 0a6e GT218M [GeForce 305M] + 0a6f GT218M [ION] + 0a70 GT218M [GeForce 310M] + 0a71 GT218M [GeForce 305M] + 0a72 GT218M [GeForce 310M] + 0a73 GT218M [GeForce 305M] + 0a74 GT218M [GeForce G210M] + 1b0a 903a GeForce G210 + 0a75 GT218M [GeForce 310M] + 0a76 GT218M [ION 2] + 0a78 GT218GL [Quadro FX 380 LP] + 0a7a GT218M [GeForce 315M] + 104d 907e GeForce 315M + 1179 fc50 GeForce 315M + 1179 fc61 GeForce 315M + 1179 fc71 GeForce 315M + 1179 fc90 GeForce 315M + 1179 fcc0 GeForce 315M + 1179 fcd0 GeForce 315M + 1179 fce2 GeForce 315M + 1179 fcf2 GeForce 315M + 1179 fd16 GeForce 315M + 1179 fd40 GeForce 315M + 1179 fd50 GeForce 315M + 1179 fd52 GeForce 315M + 1179 fd61 GeForce 315M + 1179 fd71 GeForce 315M + 1179 fd92 GeForce 315M + 1179 fd96 GeForce 315M + 1179 fdd0 GeForce 315M + 1179 fdd2 GeForce 315M + 1179 fdfe GeForce 315M + 144d c0a2 GeForce 315M + 144d c0b2 GeForce 315M + 144d c581 GeForce 315M + 144d c587 GeForce 315M + 144d c588 GeForce 315M + 144d c597 GeForce 315M + 144d c606 GeForce 315M + 1462 aa51 GeForce 405 + 1462 aa58 GeForce 405 + 1462 ac71 GeForce 405 + 1462 ac81 GeForce 315M + 1462 ac82 GeForce 405 + 1462 ae33 GeForce 405 + 1642 3980 GeForce 405 + 17aa 3950 GeForce 405M + 17aa 397d GeForce 405M + 1b0a 2091 GeForce 315M + 1b0a 90b4 GeForce 405 + 1bfd 0003 GeForce 405 + 1bfd 8006 GeForce 405 + 1bfd 8007 GeForce 315M + 0a7b GT218 [GeForce 505] + 0a7c GT218GLM [Quadro FX 380M] + 0a80 MCP79 Host Bridge + 0a81 MCP79 Host Bridge + 0a82 MCP79 Host Bridge + 0a83 MCP79 Host Bridge + 0a84 MCP79 Host Bridge + 0a85 MCP79 Host Bridge + 0a86 MCP79 Host Bridge + 0a87 MCP79 Host Bridge + 0a88 MCP79 Memory Controller + 0a89 MCP79 Memory Controller + 0a98 MCP79 Memory Controller + 1043 1a87 F5GL Notebook + 10de cb79 iMac 9,1 + 0aa0 MCP79 PCI Express Bridge + 1043 1a87 F5GL Notebook + 10de cb79 Apple iMac 9,1 + 0aa2 MCP79 SMBus + 1043 1a87 F5GL Notebook + 10de cb79 Apple iMac 9,1 + 19da a123 IONITX-F-E + 0aa3 MCP79 Co-processor + 1043 1a87 F5GL Notebook + 10de cb79 Apple iMac 9,1 + 19da a123 IONITX-F-E + 0aa4 MCP79 Memory Controller + 1043 1a87 F5GL Notebook + 19da a123 IONITX-F-E + 0aa5 MCP79 OHCI USB 1.1 Controller + 1043 1a87 F5GL Notebook + 10de cb79 Apple iMac 9,1 + 19da a123 IONITX-F-E + 0aa6 MCP79 EHCI USB 2.0 Controller + 1043 1a87 F5GL Notebook + 10de cb79 Apple iMac 9,1 + 19da a123 IONITX-F-E + 0aa7 MCP79 OHCI USB 1.1 Controller + 10de cb79 Apple iMac 9,1 + 19da a123 IONITX-F-E + 0aa8 MCP79 OHCI USB 1.1 Controller + 0aa9 MCP79 EHCI USB 2.0 Controller + 10de cb79 Apple iMac 9,1 + 19da a123 IONITX-F-E + 0aaa MCP79 EHCI USB 2.0 Controller + 0aab MCP79 PCI Bridge + 1043 1a87 F5GL Notebook + 10de cb79 Apple iMac 9,1 + 0aac MCP79 LPC Bridge + 0aad MCP79 LPC Bridge + 19da a123 IONITX-F-E + 0aae MCP79 LPC Bridge + 1043 1a87 F5GL Notebook + 10de cb79 Apple iMac 9,1 + 0aaf MCP79 LPC Bridge + 0ab0 MCP79 Ethernet + 1043 1215 F5GL Notebook + 10de cb79 Apple iMac 9,1 + 19da a123 IONITX-F-E + 0ab1 MCP79 Ethernet + 0ab2 MCP79 Ethernet + 0ab3 MCP79 Ethernet + 0ab4 MCP79 SATA Controller + 19da a123 IONITX-F-E + 0ab5 MCP79 SATA Controller + 0ab6 MCP79 SATA Controller + 0ab7 MCP79 SATA Controller + 0ab8 MCP79 AHCI Controller + 1043 1a87 F5GL Notebook + 0ab9 MCP79 AHCI Controller + 10de cb79 Apple iMac 9,1 + 0aba MCP79 AHCI Controller + 0abb MCP79 AHCI Controller + 0abc MCP79 RAID Controller + 0abd MCP79 RAID Controller + 0abe MCP79 RAID Controller + 0abf MCP79 RAID Controller + 0ac0 MCP79 High Definition Audio + 1043 1903 F5GL Notebook + 10de cb79 Apple iMac 9,1 + 0ac1 MCP79 High Definition Audio + 0ac2 MCP79 High Definition Audio + 0ac3 MCP79 High Definition Audio + 0ac4 MCP79 PCI Express Bridge + 10de cb79 Apple iMac 9,1 + 0ac5 MCP79 PCI Express Bridge + 0ac6 MCP79 PCI Express Bridge + 1043 1a87 F5GL Notebook + 10de cb79 Apple iMac 9,1 + 0ac7 MCP79 PCI Express Bridge + 1043 1a87 F5GL Notebook + 10de cb79 Apple iMac 9,1 + 0ac8 MCP79 PCI Express Bridge + 0ad0 MCP78S [GeForce 8200] SATA Controller (non-AHCI mode) + 1462 7508 K9N2GM-FIH + 1849 0ad0 K10N78FullHD-hSLI R3.0 IDE + 0ad4 MCP78S [GeForce 8200] AHCI Controller + 103c 2a9e Pavilion p6310f + 1043 82e8 M3N72-D + 1849 0ad4 K10N78FullHD-hSLI R3.0 AHCI Controller + 0ad8 MCP78S [GeForce 8200] SATA Controller (RAID mode) + 0be2 GT216 HDMI Audio Controller + 1043 8311 ENGT220/DI/1GD3(LP)/V2 + 0be3 High Definition Audio Controller + 1028 040b Latitude E6510 + 10de 066d G98 [GeForce 8400GS] + 1462 8094 N210 [Geforce 210] PCIe graphics adapter + 0be4 High Definition Audio Controller + 0be5 GF100 High Definition Audio Controller + 0be9 GF106 High Definition Audio Controller + 1558 8687 CLEVO/KAPOK W860CU + 3842 1452 GeForce GTS 450 + 0bea GF108 High Definition Audio Controller + 3842 1430 GeForce GT 430 + 0beb GF104 High Definition Audio Controller + 1462 2322 N460GTX Cyclone 1GD5/OC + 0bee GF116 High Definition Audio Controller + 0bf0 Tegra2 PCIe x4 Bridge + 0bf1 Tegra2 PCIe x2 Bridge + 0ca0 GT215 [GeForce GT 330] + 0ca2 GT215 [GeForce GT 320] + 0ca3 GT215 [GeForce GT 240] + 0ca4 GT215 [GeForce GT 340] + 0ca5 GT215 [GeForce GT 220] + 0ca7 GT215 [GeForce GT 330] + 0ca8 GT215M [GeForce GTS 260M] + 0ca9 GT215M [GeForce GTS 250M] + 0cac GT215 [GeForce GT 220/315] + 0caf GT215M [GeForce GT 335M] + 0cb0 GT215M [GeForce GTS 350M] + 0cb1 GT215M [GeForce GTS 360M] + 0cbc GT215GLM [Quadro FX 1800M] + 0d60 MCP89 HOST Bridge + 0d68 MCP89 Memory Controller + 0d69 MCP89 Memory Controller + 0d76 MCP89 PCI Express Bridge + 0d79 MCP89 SMBus + 0d7a MCP89 Co-Processor + 0d7b MCP89 Memory Controller + 0d7d MCP89 Ethernet + 0d80 MCP89 LPC Bridge + 0d85 MCP89 SATA Controller + 0d88 MCP89 SATA Controller (AHCI mode) + 0d89 MCP89 SATA Controller (AHCI mode) + 0d8d MCP89 SATA Controller (RAID mode) + 0d94 MCP89 High Definition Audio + 0d9c MCP89 OHCI USB 1.1 Controller + 0d9d MCP89 EHCI USB 2.0 Controller + 0dc0 GF106 [GeForce GT 440] + 0dc4 GF106 [GeForce GTS 450] + 0dc5 GF106 [GeForce GTS 450 OEM] + 0dc6 GF106 [GeForce GTS 450 OEM] + 0dcd GF106M [GeForce GT 555M] + 0dce GF106M [GeForce GT 555M] + 0dd1 GF106M [GeForce GTX 460M] + 1558 8687 CLEVO/KAPOK W860CU + 0dd2 GF106M [GeForce GT 445M] + 0dd3 GF106M [GeForce GT 435M] + 0dd6 GF106M [GeForce GT 550M] + 0dd8 GF106GL [Quadro 2000] + 10de 0914 Quadro 2000D + 0dda GF106GLM [Quadro 2000M] + 0de0 GF108 [GeForce GT 440] + 0de1 GF108 [GeForce GT 430] + 3842 1430 GeForce GT 430 + 0de2 GF108 [GeForce GT 420] + 0de3 GF108M [GeForce GT 635M] + 0de4 GF108 [GeForce GT 520] + 0de5 GF108 [GeForce GT 530] + 0de7 GF108 [GeForce GT 610] + 0de8 GF108M [GeForce GT 620M] + 0de9 GF108M [GeForce GT 620M/630M/635M/640M LE] + 1025 0692 GeForce GT 620M + 1025 0725 GeForce GT 620M + 1025 0728 GeForce GT 620M + 1025 072b GeForce GT 620M + 1025 072e GeForce GT 620M + 1025 0753 GeForce GT 620M + 1025 0754 GeForce GT 620M + 17aa 3977 GeForce GT 640M LE + 1b0a 20c6 GeForce GT 630M + 1b0a 2210 GeForce GT 635M + 0dea GF108M [GeForce 610M] + 17aa 365a GeForce 615 + 17aa 365b GeForce 615 + 17aa 365e GeForce 615 + 17aa 3660 GeForce 615 + 17aa 366c GeForce 615 + 0deb GF108M [GeForce GT 555M] + 0dec GF108M [GeForce GT 525M] + 0ded GF108M [GeForce GT 520M] + 0dee GF108M [GeForce GT 415M] + 0def GF108M [NVS 5400M] + 0df0 GF108M [GeForce GT 425M] + 0df1 GF108M [GeForce GT 420M] + 0df2 GF108M [GeForce GT 435M] + 0df3 GF108M [GeForce GT 420M] + 0df4 GF108M [GeForce GT 540M] + 152d 0952 GeForce GT 630M + 152d 0953 GeForce GT 630M + 0df5 GF108M [GeForce GT 525M] + 0df6 GF108M [GeForce GT 550M] + 0df7 GF108M [GeForce GT 520M] + 0df8 GF108GL [Quadro 600] + 0df9 GF108GLM [Quadro 500M] + 0dfa GF108GLM [Quadro 1000M] + 0dfc GF108GLM [NVS 5200M] + 0e08 GF119 HDMI Audio Controller + 1043 83a0 ENGT520 SILENT +# 1024MB with passive cooling (heatsink) + 10b0 104a Gainward GeForce GT 610 + 0e09 GF110 High Definition Audio Controller + 0e0a GK104 HDMI Audio Controller + 0e0b GK106 HDMI Audio Controller + 0e0c GF114 HDMI Audio Controller + 0e0f GK208 HDMI/DP Audio Controller + 0e12 TegraK1 PCIe x4 Bridge + 0e13 TegraK1 PCIe x1 Bridge + 0e1a GK110 High Definition Audio Controller + 0e1b GK107 HDMI Audio Controller + 103c 197b ZBook 15 + 1043 8428 GTX650-DC-1GD5 + 0e1c Tegra3+ PCIe x4 Bridge + 0e1d Tegra3+ PCIe x2 Bridge + 0e22 GF104 [GeForce GTX 460] + 1462 2322 N460GTX Cyclone 1GD5/OC + 0e23 GF104 [GeForce GTX 460 SE] + 0e24 GF104 [GeForce GTX 460 OEM] + 0e30 GF104M [GeForce GTX 470M] + 0e31 GF104M [GeForce GTX 485M] + 0e3a GF104GLM [Quadro 3000M] + 0e3b GF104GLM [Quadro 4000M] + 0f00 GF108 [GeForce GT 630] + 0f01 GF108 [GeForce GT 620] + 0f02 GF108 [GeForce GT 730] + 0f03 GF108 [GeForce GT 610] + 0f06 GF108 [GeForce GT 730] + 0fa0 GK11x [GK11x_FPGA] + 0fa5 GK11x + 0fa7 GK11x [Tegra on x86 (PEATRANS)] + 0fb0 GM200 High Definition Audio + 0fb8 GP108 High Definition Audio Controller + 0fb9 GP107GL High Definition Audio Controller + 0fba GM206 High Definition Audio Controller + 0fbb GM204 High Definition Audio Controller + 0fbc GM107 High Definition Audio Controller [GeForce 940MX] + 0fc0 GK107 [GeForce GT 640 OEM] + 0fc1 GK107 [GeForce GT 640] + 0fc2 GK107 [GeForce GT 630 OEM] + 0fc4 GK107 [D14P1-15] + 0fc5 GK107 [GeForce GT 1030] + 0fc6 GK107 [GeForce GTX 650] + 1043 8428 GTX650-DC-1GD5 + 0fc8 GK107 [GeForce GT 740] + 0fc9 GK107 [GeForce GT 730] + 0fcb GK107 [EXK107] + 0fcc GK107 [GeForce GT 720] + 0fcd GK107M [GeForce GT 755M] + 0fce GK107M [GeForce GT 640M LE] + 0fcf GK107 [GEN3 ESI] + 0fd0 GK107 [NB1G] + 0fd1 GK107M [GeForce GT 650M] + 1043 1597 GeForce GT 650M + 1043 15a7 GeForce GT 650M + 1043 2103 N56VZ + 1043 2105 GeForce GT 650M + 1043 2141 GeForce GT 650M + 0fd2 GK107M [GeForce GT 640M] + 1028 054f GeForce GT 640M + 1028 055f GeForce GT 640M + 1028 0595 GeForce GT 640M LE + 1028 05b2 GeForce GT 640M LE + 0fd3 GK107M [GeForce GT 640M LE] + 0fd4 GK107M [GeForce GTX 660M] + 0fd5 GK107M [GeForce GT 650M Mac Edition] + 0fd6 GK107M [N13P-GS-W] + 0fd7 GK107 [GK107-GTX] + 0fd8 GK107M [GeForce GT 640M Mac Edition] + 0fd9 GK107M [GeForce GT 645M] + 0fda GK107 [GK107-ES-A1] + 0fdb GK107 [GK107-ESP-A1] + 0fdc GK107 [GK107-INT22-A1] + 0fdd GK107 [GK107-INT11-A1] + 0fde GK107 [GK107-ES-KA-E1] + 0fdf GK107M [GeForce GT 740M] + 0fe0 GK107M [GeForce GTX 660M Mac Edition] + 0fe1 GK107M [GeForce GT 730M] + 0fe2 GK107M [GeForce GT 745M] + 0fe3 GK107M [GeForce GT 745M] + 103c 2b16 GeForce GT 745A + 17aa 3675 GeForce GT 745A + 0fe4 GK107M [GeForce GT 750M] + 0fe5 GK107 [GeForce K340 USM] + 0fe6 GK107 [GRID K1 NVS USM] +# GRID K1 USM + 0fe7 GK107GL [GRID K100 vGPU] + 10de 101e GRID K100 + 0fe8 GK107M [N14P-GS] + 0fe9 GK107M [GeForce GT 750M Mac Edition] + 0fea GK107M [GeForce GT 755M Mac Edition] + 0fec GK107M [GeForce 710A] + 0fed GK107M [GeForce 820M] + 0fee GK107M [GeForce 810M] + 0fef GK107GL [GRID K340] + 0ff0 GK107 [NB1Q] + 0ff1 GK107 [NVS 1000] + 0ff2 GK107GL [GRID K1] + 0ff3 GK107GL [Quadro K420] + 0ff5 GK107GL [GRID K1 Tesla USM] + 0ff6 GK107GLM [Quadro K1100M] + 103c 197b ZBook 15 +# GRID K1 Quadro USM + 0ff7 GK107GL [GRID K140Q vGPU] + 10de 1037 GRID K140Q + 0ff8 GK107GLM [Quadro K500M] + 0ff9 GK107GL [Quadro K2000D] + 0ffa GK107GL [Quadro K600] + 0ffb GK107GLM [Quadro K2000M] + 0ffc GK107GLM [Quadro K1000M] + 0ffd GK107 [NVS 510] + 0ffe GK107GL [Quadro K2000] + 0fff GK107GL [Quadro 410] + 1001 GK110B [GeForce GTX TITAN Z] + 1003 GK110 [GeForce GTX Titan LE] + 1004 GK110 [GeForce GTX 780] + 3842 0784 GK110B [GeForce GTX 780 SC w/ ACX Cooler] + 3842 1784 GK110B [GeForce GTX 780 Dual FTW w/ ACX Cooler] + 3842 1788 GK110B [GeForce GTX 780 Dual Classified w/ ACX Cooler] + 1005 GK110 [GeForce GTX TITAN] + 1043 8451 GTXTITAN-6GD5 +# Reference Model + 10de 1035 GeForce GTX Titan +# 06G-P4-2790-KR + 3842 2790 GeForce GTX Titan +# 06G-P4-2791-KR + 3842 2791 GeForce GTX Titan SC +# 06G-P4-2793-KR + 3842 2793 GeForce GTX Titan SC Signature +# 06G-P4-2794-KR + 3842 2794 GeForce GTX Titan SC Hydro Copper +# 06G-P4-2795-KR + 3842 2795 GeForce GTX Titan SC Hydro Copper Signature + 1007 GK110 [GeForce GTX 780 Rev. 2] + 1008 GK110 [GeForce GTX 780 Ti 6GB] + 100a GK110B [GeForce GTX 780 Ti] + 100c GK110B [GeForce GTX TITAN Black] + 101e GK110GL [Tesla K20X] + 101f GK110GL [Tesla K20] + 1020 GK110GL [Tesla K20X] + 1021 GK110GL [Tesla K20Xm] + 1022 GK110GL [Tesla K20c] + 1023 GK110BGL [Tesla K40m] + 10de 097e 12GB Computational Accelerator + 1024 GK180GL [Tesla K40c] + 1026 GK110GL [Tesla K20s] + 1027 GK110BGL [Tesla K40st] + 1028 GK110GL [Tesla K20m] + 1029 GK110BGL [Tesla K40s] + 102a GK110BGL [Tesla K40t] + 102d GK210GL [Tesla K80] + 102e GK110BGL [Tesla K40d] + 102f GK110BGL [Tesla Stella Solo] + 103a GK110GL [Quadro K6000] + 103c GK110GL [Quadro K5200] + 103f GK110BGL [Tesla Stella SXM] + 1040 GF119 [GeForce GT 520] + 1043 83a0 ENGT520 SILENT + 1042 GF119 [GeForce 510] + 1045 GF119 + 1048 GF119 [GeForce 605] + 1049 GF119 [GeForce GT 620 OEM] + 104a GF119 [GeForce GT 610] +# 1024MB with passive cooling (heatsink) + 10b0 104a Gainward GeForce GT 610 + 104b GF119 [GeForce GT 625 OEM] + 104c GF119 [GeForce GT 705] + 104d GF119 [GeForce GT 710] + 1050 GF119M [GeForce GT 520M] + 1051 GF119M [GeForce GT 520MX] + 1052 GF119M [GeForce GT 520M] + 1054 GF119M [GeForce 410M] + 1055 GF119M [GeForce 410M] + 1056 GF119M [NVS 4200M] + 1057 GF119M [Quadro NVS 4200M] + 1058 GF119M [GeForce 610M] + 103c 2aed GeForce 610 + 103c 2af1 GeForce 610 + 1043 10ac GeForce GT 610M + 1043 10bc GeForce GT 610M + 1043 1652 GeForce GT 610M + 17aa 367a GeForce 610M + 17aa 3682 GeForce 800A + 17aa 3687 GeForce 800A + 17aa 3692 GeForce 705A + 17aa 3695 GeForce 800A + 17aa a117 GeForce 610M + 1059 GF119M [GeForce 610M] + 105a GF119M [GeForce 610M] + 1043 2111 GeForce GT 610M + 1043 2112 GeForce GT 610M + 105b GF119M [GeForce 705M] + 103c 2afb GeForce 705A + 17aa 309d GeForce 705A + 17aa 30b1 GeForce 800A + 17aa 30f3 GeForce 705A + 17aa 36a1 GeForce 800A + 107c GF119 [NVS 315] + 107d GF119 [NVS 310] + 1080 GF110 [GeForce GTX 580] + 1081 GF110 [GeForce GTX 570] + 10de 087e Leadtek WinFast GTX 570 + 1082 GF110 [GeForce GTX 560 Ti OEM] + 1084 GF110 [GeForce GTX 560 OEM] + 1086 GF110 [GeForce GTX 570 Rev. 2] + 1087 GF110 [GeForce GTX 560 Ti 448 Cores] + 1088 GF110 [GeForce GTX 590] + 1089 GF110 [GeForce GTX 580 Rev. 2] + 108b GF110 [GeForce GTX 580] + 108e GF110GL [Tesla C2090] + 1091 GF110GL [Tesla M2090] + 10de 088e Tesla X2090 + 10de 0891 Tesla X2090 + 10de 0974 Tesla X2090 + 10de 098d Tesla X2090 + 1094 GF110GL [Tesla M2075] + 10de 0888 Tesla M2075 + 1096 GF110GL [Tesla C2050 / C2075] + 10de 0910 Tesla C2075 + 10de 0911 Tesla C2050 + 109a GF100GLM [Quadro 5010M] + 109b GF100GL [Quadro 7000] + 10de 0918 Quadro 7000 + 10c0 GT218 [GeForce 9300 GS Rev. 2] + 10c3 GT218 [GeForce 8400 GS Rev. 3] + 10c5 GT218 [GeForce 405] + 10d8 GT218 [NVS 300] + 10ef GP102 HDMI Audio Controller + 10f0 GP104 High Definition Audio Controller + 10f1 GP106 High Definition Audio Controller + 1043 85b6 DUAL-GTX1060-O6G [GeForce GTX 1060 6GB Dual] + 10f7 TU102 High Definition Audio Controller + 10f8 TU104 HD Audio Controller + 10f9 TU106 High Definition Audio Controller + 1043 8673 TURBO-RTX2070-8G + 1140 GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] + 1019 0799 GeForce 820M + 1019 999f GeForce GT 720M + 1025 0600 GeForce GT 620M + 1025 0606 GeForce GT 620M + 1025 064a GeForce GT 620M + 1025 064c GeForce GT 620M + 1025 067a GeForce GT 620M + 1025 0680 GeForce GT 620M + 1025 0686 GeForce 710M + 1025 0689 GeForce 710M + 1025 068b GeForce 710M + 1025 068d GeForce 710M + 1025 068e GeForce 710M + 1025 0691 GeForce 710M + 1025 0692 GeForce GT 620M + 1025 0694 GeForce GT 620M + 1025 0702 GeForce GT 620M + 1025 0719 GeForce GT 620M + 1025 0725 GeForce GT 620M + 1025 0728 GeForce GT 620M + 1025 072b GeForce GT 620M + 1025 072e GeForce GT 620M + 1025 0732 GeForce GT 620M + 1025 0763 GeForce GT 720M + 1025 0773 GeForce 710M + 1025 0774 GeForce 710M + 1025 0776 GeForce GT 720M + 1025 077a GeForce 710M + 1025 077b GeForce 710M + 1025 077c GeForce 710M + 1025 077d GeForce 710M + 1025 077e GeForce 710M + 1025 077f GeForce 710M + 1025 0781 GeForce GT 720M + 1025 0798 GeForce GT 720M + 1025 0799 GeForce GT 720M + 1025 079b GeForce GT 720M + 1025 079c GeForce GT 720M + 1025 0807 GeForce GT 720M + 1025 0821 GeForce GT 720M + 1025 0823 GeForce GT 720M + 1025 0830 GeForce GT 720M + 1025 0833 GeForce GT 720M + 1025 0837 GeForce GT 720M + 1025 083e GeForce 820M + 1025 0841 GeForce 710M + 1025 0854 GeForce 820M + 1025 0855 GeForce 820M + 1025 0856 GeForce 820M + 1025 0857 GeForce 820M + 1025 0858 GeForce 820M + 1025 0863 GeForce 820M + 1025 0868 GeForce 820M + 1025 0869 GeForce 810M + 1025 0873 GeForce 820M + 1025 0878 GeForce 820M + 1025 087b GeForce 820M + 1025 087c GeForce 810M + 1025 0881 GeForce 820M + 1025 088a GeForce 820M + 1025 089b GeForce 820M + 1025 090f GeForce 820M + 1025 0921 GeForce 820M + 1025 092e GeForce 810M + 1025 092f GeForce 820M + 1025 0932 GeForce 820M + 1025 093a GeForce 820M + 1025 093c GeForce 820M + 1025 093f GeForce 820M + 1025 0941 GeForce 820M + 1025 0945 GeForce 820M + 1025 0954 GeForce 820M + 1025 0965 GeForce 820M + 1028 054d GeForce GT 630M + 1028 054e GeForce GT 630M + 1028 0554 GeForce GT 620M + 1028 0557 GeForce GT 620M + 1028 0562 GeForce GT 625M + 1028 0565 GeForce GT 630M + 1028 0568 GeForce GT 630M + 1028 0590 GeForce GT 630M + 1028 0592 GeForce GT 625M + 1028 0594 GeForce GT 625M + 1028 0595 GeForce GT 625M + 1028 05a2 GeForce GT 625M + 1028 05b1 GeForce GT 625M + 1028 05b3 GeForce GT 625M + 1028 05da GeForce GT 630M + 1028 05de GeForce GT 720M + 1028 05e0 GeForce GT 720M + 1028 05e8 GeForce GT 630M + 1028 05f4 GeForce GT 720M + 1028 060f GeForce GT 720M + 1028 064e GeForce 820M + 1028 0652 GeForce 820M + 1028 0653 GeForce 820M + 1028 0655 GeForce 820M + 1028 065e GeForce 820M + 1028 0662 GeForce 820M + 1028 068d GeForce 820M + 1028 06ad GeForce 820M + 1028 06ae GeForce 820M + 1028 06af GeForce 820M + 1028 06b0 GeForce 820M + 1028 06c0 GeForce 820M + 1028 06c1 GeForce 820M + 103c 18ef GeForce GT 630M + 103c 18f9 GeForce GT 630M + 103c 18fb GeForce GT 630M + 103c 18fd GeForce GT 630M + 103c 18ff GeForce GT 630M + 103c 218a GeForce 820M + 103c 21bb GeForce 820M + 103c 21bc GeForce 820M + 103c 220e GeForce 820M + 103c 2210 GeForce 820M + 103c 2212 GeForce 820M + 103c 2214 GeForce 820M + 103c 2218 GeForce 820M + 103c 225b GeForce 820M + 103c 225d GeForce 820M + 103c 226d GeForce 820M + 103c 226f GeForce 820M + 103c 22d2 GeForce 820M + 103c 22d9 GeForce 820M + 103c 2335 GeForce 820M + 103c 2337 GeForce 820M + 103c 2aef GeForce GT 720A + 103c 2af9 GeForce 710A + 1043 10dd NVS 5200M + 1043 10ed NVS 5200M + 1043 11fd GeForce GT 720M + 1043 124d GeForce GT 720M + 1043 126d GeForce GT 720M + 1043 131d GeForce GT 720M + 1043 13fd GeForce GT 720M + 1043 14c7 GeForce GT 720M + 1043 1507 GeForce GT 620M + 1043 15ad GeForce 820M + 1043 15ed GeForce 820M + 1043 160d GeForce 820M + 1043 163d GeForce 820M + 1043 166d GeForce 820M + 1043 16cd GeForce 820M + 1043 16dd GeForce 820M + 1043 170d GeForce 820M + 1043 176d GeForce 820M + 1043 178d GeForce 820M + 1043 179d GeForce 820M + 1043 17dd GeForce 820M + 1043 2132 GeForce GT 620M + 1043 2136 NVS 5200M + 1043 21ba GeForce GT 720M + 1043 21fa GeForce GT 720M + 1043 220a GeForce GT 720M + 1043 221a GeForce GT 720M + 1043 223a GeForce GT 710M + 1043 224a GeForce GT 710M + 1043 227a GeForce 820M + 1043 228a GeForce 820M + 1043 232a GeForce 820M + 1043 233a GeForce 820M + 1043 235a GeForce 820M + 1043 236a GeForce 820M + 1043 238a GeForce 820M + 1043 8595 GeForce GT 720M + 1043 85ea GeForce GT 720M + 1043 85eb GeForce 820M + 1043 85ec GeForce 820M + 1043 85ee GeForce GT 720M + 1043 85f3 GeForce 820M + 1043 860e GeForce 820M + 1043 861a GeForce 820M + 1043 861b GeForce 820M + 1043 8628 GeForce 820M + 1043 8643 GeForce 820M + 1043 864c GeForce 820M + 1043 8652 GeForce 820M + 1043 8660 GeForce 820M + 1043 8661 GeForce 820M + 105b 0dac GeForce GT 720M + 105b 0dad GeForce GT 720M + 105b 0ef3 GeForce GT 720M + 1072 152d GeForce GT 720M + 10cf 17f5 GeForce GT 720M + 1179 fa01 GeForce 710M + 1179 fa02 GeForce 710M + 1179 fa03 GeForce 710M + 1179 fa05 GeForce 710M + 1179 fa11 GeForce 710M + 1179 fa13 GeForce 710M + 1179 fa18 GeForce 710M + 1179 fa19 GeForce 710M + 1179 fa21 GeForce 710M + 1179 fa23 GeForce 710M + 1179 fa2a GeForce 710M + 1179 fa32 GeForce 710M + 1179 fa33 GeForce 710M + 1179 fa36 GeForce 710M + 1179 fa38 GeForce 710M + 1179 fa42 GeForce 710M + 1179 fa43 GeForce 710M + 1179 fa45 GeForce 710M + 1179 fa47 GeForce 710M + 1179 fa49 GeForce 710M + 1179 fa58 GeForce 710M + 1179 fa59 GeForce 710M + 1179 fa88 GeForce 710M + 1179 fa89 GeForce 710M + 144d b092 GeForce GT 620M + 144d c0d5 GeForce GT 630M + 144d c0d7 GeForce GT 620M + 144d c0e2 NVS 5200M + 144d c0e3 NVS 5200M + 144d c0e4 NVS 5200M + 144d c10d GeForce 820M + 144d c652 GeForce GT 620M on NP300E5C series laptop + 144d c709 GeForce 710M + 144d c711 GeForce 710M + 144d c736 GeForce 710M + 144d c737 GeForce 710M + 144d c745 GeForce 820M + 144d c750 GeForce 820M + 1462 10b8 GeForce GT 710M + 1462 10e9 GeForce GT 720M + 1462 1116 GeForce 820M + 1462 aa33 GeForce 720M + 1462 aaa2 GeForce GT 720M + 1462 aaa3 GeForce 820M + 1462 acb2 GeForce GT 720M + 1462 acc1 GeForce GT 720M + 1462 ae61 GeForce 720M + 1462 ae65 GeForce GT 720M + 1462 ae6a GeForce 820M + 1462 ae71 GeForce GT 720M + 14c0 0083 GeForce 820M + 152d 0926 GeForce 620M + 152d 0982 GeForce GT 630M + 152d 0983 GeForce GT 630M + 152d 1005 GeForce GT 820M + 152d 1012 GeForce 710M + 152d 1019 GeForce 820M + 152d 1030 GeForce GT 630M + 152d 1055 GeForce 710M + 152d 1067 GeForce GT 720M + 152d 1072 GeForce GT 720M + 152d 1086 GeForce 820M + 152d 1092 GeForce 820M + 17aa 2200 NVS 5200M + 17aa 2213 GeForce GT 720M + 17aa 2220 GeForce GT 720M + 17aa 309c GeForce GT 720A + 17aa 30b4 GeForce 820A + 17aa 30b7 GeForce 720A + 17aa 30e4 GeForce 820A + 17aa 361b GeForce 820A + 17aa 361c GeForce 820A + 17aa 361d GeForce 820A + 17aa 3656 GeForce GT 620M + 17aa 365a GeForce 705M + 17aa 365e GeForce 800M + 17aa 3661 GeForce 820A + 17aa 366c GeForce 800M + 17aa 3685 GeForce 800M + 17aa 3686 GeForce 800M + 17aa 3687 GeForce 705A + 17aa 3696 GeForce 820A + 17aa 369b GeForce 820A + 17aa 369c GeForce 820A + 17aa 369d GeForce 820A + 17aa 369e GeForce 820A + 17aa 36a9 GeForce 820A + 17aa 36af GeForce 820A + 17aa 36b0 GeForce 820A + 17aa 36b6 GeForce 820A + 17aa 3800 GeForce GT 720M + 17aa 3801 GeForce GT 720M + 17aa 3802 GeForce GT 720M + 17aa 3803 GeForce GT 720M + 17aa 3804 GeForce GT 720M + 17aa 3806 GeForce GT 720M + 17aa 3808 GeForce GT 720M + 17aa 380d GeForce 820M + 17aa 380e GeForce 820M + 17aa 380f GeForce 820M + 17aa 3811 GeForce 820M + 17aa 3812 GeForce 820M + 17aa 3813 GeForce 820M + 17aa 3816 GeForce 820M + 17aa 3818 GeForce 820M + 17aa 381a GeForce 820M + 17aa 381c GeForce 820M + 17aa 3901 GeForce 610M / GT 620M + 17aa 3902 GeForce 710M + 17aa 3903 GeForce 610M/710M + 17aa 3904 GeForce GT 620M/625M + 17aa 3905 GeForce GT 720M + 17aa 3907 GeForce 820M + 17aa 3910 GeForce 720M + 17aa 3912 GeForce 720M + 17aa 3913 GeForce 820M + 17aa 3915 GeForce 820M + 17aa 3977 GeForce GT 720M + 17aa 3983 GeForce 610M + 17aa 5001 GeForce 610M + 17aa 5003 GeForce GT 720M + 17aa 5005 GeForce 705M + 17aa 500d GeForce GT 620M + 17aa 5014 GeForce 710M + 17aa 5017 GeForce 710M + 17aa 5019 GeForce 710M + 17aa 501a GeForce 710M + 17aa 501f GeForce GT 720M + 17aa 5025 GeForce 710M + 17aa 5027 GeForce 710M + 17aa 502a GeForce 710M + 17aa 502b GeForce GT 720M + 17aa 502d GeForce 710M + 17aa 502e GeForce GT 720M + 17aa 502f GeForce GT 720M + 17aa 5030 GeForce 705M + 17aa 5031 GeForce 705M + 17aa 5032 GeForce 820M + 17aa 5033 GeForce 820M + 17aa 503e GeForce 710M + 17aa 503f GeForce 820M + 17aa 5040 GeForce 820M + 1854 0177 GeForce 710M + 1854 0180 GeForce 710M + 1854 0190 GeForce GT 720M + 1854 0192 GeForce GT 720M + 1854 0224 GeForce 820M + 1b0a 01c0 GeForce 820M + 1b0a 20dd GeForce GT 620M + 1b0a 20df GeForce GT 620M + 1b0a 210e GeForce 820M + 1b0a 2202 GeForce GT 720M + 1b0a 90d7 GeForce 820M + 1b0a 90dd GeForce 820M + 1b50 5530 GeForce 820M + 1b6c 5531 GeForce GT 720M + 1bab 0106 GeForce 820M + 1d05 1013 GeForce 810M + 1180 GK104 [GeForce GTX 680] + 1043 83f1 GTX680-DC2-2GD5 + 3842 3682 GeForce GTX 680 Mac Edition + 1182 GK104 [GeForce GTX 760 Ti] + 1183 GK104 [GeForce GTX 660 Ti] + 1184 GK104 [GeForce GTX 770] + 1185 GK104 [GeForce GTX 660 OEM] + 10de 106f GK104 [GeForce GTX 760 OEM] + 1186 GK104 [GeForce GTX 660 Ti] + 1187 GK104 [GeForce GTX 760] + 1188 GK104 [GeForce GTX 690] + 1189 GK104 [GeForce GTX 670] + 10de 1074 GK104 [GeForce GTX 760 Ti OEM] + 118a GK104GL [GRID K520] + 118b GK104GL [GRID K2 GeForce USM] + 118c GK104 [GRID K2 NVS USM] +# GRID K2 USM + 118d GK104GL [GRID K200 vGPU] + 10de 101d GRID K200 + 118e GK104 [GeForce GTX 760 OEM] + 118f GK104GL [Tesla K10] + 1191 GK104 [GeForce GTX 760 Rev. 2] + 1193 GK104 [GeForce GTX 760 Ti OEM] + 1194 GK104GL [Tesla K8] + 1195 GK104 [GeForce GTX 660 Rev. 2] + 1198 GK104M [GeForce GTX 880M] + 1199 GK104M [GeForce GTX 870M] + 119a GK104M [GeForce GTX 860M] + 119d GK104M [GeForce GTX 775M Mac Edition] + 119e GK104M [GeForce GTX 780M Mac Edition] + 119f GK104M [GeForce GTX 780M] + 11a0 GK104M [GeForce GTX 680M] + 11a1 GK104M [GeForce GTX 670MX] + 11a2 GK104M [GeForce GTX 675MX Mac Edition] + 11a3 GK104M [GeForce GTX 680MX] + 106b 010d iMac 13,2 + 11a4 GK104 [GK104-ESA] + 11a5 GK104 [GK104-ESA] + 11a7 GK104M [GeForce GTX 675MX] + 11a8 GK104GLM [Quadro K5100M] + 11a9 GK104M [GeForce GTX 870M] + 11aa GK104 [GK104-INT] + 11ac GK104 [GK104-CS] + 11af GK104GLM [GRID IceCube] + 11b0 GK104GL [GRID K240Q / K260Q vGPU] + 10de 101a GRID K240Q + 10de 101b GRID K260Q + 11b1 GK104GL [GRID K2 Tesla USM] + 11b4 GK104GL [Quadro K4200] + 11b6 GK104GLM [Quadro K3100M] + 11b7 GK104GLM [Quadro K4100M] + 11b8 GK104GLM [Quadro K5100M] + 11b9 GK104GLM + 11ba GK104GL [Quadro K5000] + 11bb GK104GL [Quadro 4100] + 11bc GK104GLM [Quadro K5000M] + 11bd GK104GLM [Quadro K4000M] + 11be GK104GLM [Quadro K3000M] + 11bf GK104GL [GRID K2] + 11c0 GK106 [GeForce GTX 660] + 11c1 GK106 [D14P2-30] + 11c2 GK106 [GeForce GTX 650 Ti Boost] + 1043 845b GeForce GTX 650 Ti Boost DirectCU II OC + 1462 2874 GeForce GTX 650 Ti Boost TwinFrozr II OC + 1569 11c2 GeForce GTX 650 Ti Boost OC + 19da 1281 GeForce GTX 650 Ti Boost OC + 3842 3657 GeForce GTX 650 Ti Boost + 3842 3658 GeForce GTX 650 Ti Boost Superclocked + 11c3 GK106 [GeForce GTX 650 Ti OEM] + 10de 1030 GeForce GTX 650 Ti OEM + 11c4 GK106 [GeForce GTX 645 OEM] + 11c5 GK106 [GeForce GT 740] + 11c6 GK106 [GeForce GTX 650 Ti] + 11c7 GK106 [GeForce GTX 750 Ti] + 11c8 GK106 [GeForce GTX 650 OEM] + 11cb GK106 [GeForce GT 740] + 11d0 GK106 [GK106-INT353] + 11d1 GK106 [GK106-INT343] + 11d2 GK106 [GK106-INT232] + 11d3 GK106 [GK106-ES] + 11e0 GK106M [GeForce GTX 770M] + 11e1 GK106M [GeForce GTX 765M] + 11e2 GK106M [GeForce GTX 765M] + 11e3 GK106M [GeForce GTX 760M] + 17aa 3683 GeForce GTX 760A + 11e7 GK106M + 11fa GK106GL [Quadro K4000] + 11fc GK106GLM [Quadro K2100M] + 11ff GK106 [NB1Q] + 1200 GF114 [GeForce GTX 560 Ti] + 1201 GF114 [GeForce GTX 560] + 1202 GF114 [GeForce GTX 560 Ti OEM] + 1203 GF114 [GeForce GTX 460 SE v2] + 1205 GF114 [GeForce GTX 460 v2] + 1206 GF114 [GeForce GTX 555] + 1207 GF114 [GeForce GT 645 OEM] + 1208 GF114 [GeForce GTX 560 SE] + 1210 GF114M [GeForce GTX 570M] + 1211 GF114M [GeForce GTX 580M] + 1212 GF114M [GeForce GTX 675M] + 1213 GF114M [GeForce GTX 670M] + 1241 GF116 [GeForce GT 545 OEM] + 1243 GF116 [GeForce GT 545] + 1244 GF116 [GeForce GTX 550 Ti] + 1245 GF116 [GeForce GTS 450 Rev. 2] + 1246 GF116M [GeForce GT 550M] + 1247 GF116M [GeForce GT 555M/635M] + 1043 1752 GeForce GT 555M + 1043 2050 GeForce GT 555M + 1043 2051 GeForce GT 555M + 1043 212a GeForce GT 635M + 1043 212b GeForce GT 635M + 1043 212c GeForce GT 635M + 152d 0930 GeForce GT 635M + 1248 GF116M [GeForce GT 555M/635M] + 152d 0930 GeForce GT 635M + 17c0 10e7 GeForce GT 555M + 17c0 10e8 GeForce GT 555M + 17c0 10ea GeForce GT 555M + 1854 0890 GeForce GT 555M + 1854 0891 GeForce GT 555M + 1854 1795 GeForce GT 555M + 1854 1796 GeForce GT 555M + 1854 3005 GeForce GT 555M + 1249 GF116 [GeForce GTS 450 Rev. 3] + 124b GF116 [GeForce GT 640 OEM] + 124d GF116M [GeForce GT 555M/635M] + 1028 0491 GeForce GT 555M + 1028 0570 GeForce GT 555M + 1028 0571 GeForce GT 555M + 1462 108d GeForce GT 555M + 1462 10cc GeForce GT 635M + 1251 GF116M [GeForce GT 560M] + 1280 GK208 [GeForce GT 635] + 1281 GK208 [GeForce GT 710] + 1282 GK208 [GeForce GT 640 Rev. 2] + 1283 GK208 [D15M2-10] + 1284 GK208 [GeForce GT 630 Rev. 2] + 1285 GK208 [GK208-100] + 1286 GK208 [GeForce GT 720] + 1287 GK208B [GeForce GT 730] + 1288 GK208B [GeForce GT 720] + 1289 GK208 [GeForce GT 710] + 128a GK208B + 128b GK208B [GeForce GT 710] + 1043 85f7 GT710-SL-1GD5 + 1043 8770 GT710-4H-SL-2GD5 + 128c GK208B + 1290 GK208M [GeForce GT 730M] + 103c 2afa GeForce GT 730A + 103c 2b04 GeForce GT 730A + 1043 13ad GeForce GT 730M + 1043 13cd GeForce GT 730M + 1291 GK208M [GeForce GT 735M] + 1292 GK208M [GeForce GT 740M] + 17aa 3675 GeForce GT 740A + 17aa 367c GeForce GT 740A + 17aa 3684 GeForce GT 740A + 1293 GK208M [GeForce GT 730M] + 1294 GK208M [GeForce GT 740M] + 1295 GK208M [GeForce 710M] + 103c 2b0d GeForce 710A + 103c 2b0f GeForce 710A + 103c 2b11 GeForce 710A + 103c 2b20 GeForce 810A + 103c 2b21 GeForce 810A + 103c 2b22 GeForce 810A + 17aa 367a GeForce 805A + 17aa 367c GeForce 710A + 1296 GK208M [GeForce 825M] + 1298 GK208M [GeForce GT 720M] + 1299 GK208BM [GeForce 920M] + 17aa 30bb GeForce 920A + 17aa 30df GeForce 920A + 17aa 36a7 GeForce 920A + 17aa 36af GeForce 920M + 129a GK208BM [GeForce 910M] + 12a0 GK208 + 12ad GK208 [GK208-ES] + 12ae GK208 [GK208-CS1-C] + 12af GK208 [GK208-INT] + 12b0 GK208 [GK208-CS-Q] + 12b1 GK208 [GK208 INT] + 12b9 GK208GLM [Quadro K610M] + 12ba GK208GLM [Quadro K510M] + 130b GK110 [Q12U-1] + 1340 GM108M [GeForce 830M] + 103c 2b2b GeForce 830A + 1341 GM108M [GeForce 840M] + 17aa 3697 GeForce 840A + 17aa 3699 GeForce 840A + 17aa 369c GeForce 840A + 1344 GM108M [GeForce 845M] + 1346 GM108M [GeForce 930M] + 1347 GM108M [GeForce 940M] + 1348 GM108M [GeForce 945M / 945A] + 1349 GM108M [GeForce 930M] + 134b GM108M [GeForce 940MX] + 134d GM108M [GeForce 940MX] + 17aa 2248 ThinkPad T570 + 134e GM108M [GeForce 930MX] + 134f GM108M [GeForce 920MX] + 137a GM108GLM [Quadro K620M / Quadro M500M] + 17aa 505a Quadro M500M + 137b GM108GLM [Quadro M520 Mobile] + 137d GM108M [GeForce 940A] + 1380 GM107 [GeForce GTX 750 Ti] + 1381 GM107 [GeForce GTX 750] + 1382 GM107 [GeForce GTX 745] + 1389 GM107GL [GRID M30] + 1390 GM107M [GeForce 845M] + 1391 GM107M [GeForce GTX 850M] + 17aa 3697 GeForce GTX 850A + 17aa a125 GeForce GTX 850A + 1392 GM107M [GeForce GTX 860M] + 1393 GM107M [GeForce 840M] + 1398 GM107M [GeForce 845M] + 1399 GM107M [GeForce 945M] + 139a GM107M [GeForce GTX 950M] + 17aa 362c GeForce GTX 950A + 17aa 362f GeForce GTX 950A + 17aa 363f GeForce GTX 950A + 17aa 3640 GeForce GTX 950A + 17aa 3647 GeForce GTX 950A + 17aa 36b9 GeForce GTX 950A + 139b GM107M [GeForce GTX 960M] + 1028 06e4 XPS 15 9550 + 103c 2b4c GeForce GTX 960A + 139c GM107M [GeForce 940M] + 139d GM107M [GeForce GTX 750 Ti] + 13ad GM204 [GM107 INT52] + 13ae GM204 [GM107 CS1] + 13b0 GM107GLM [Quadro M2000M] + 13b1 GM107GLM [Quadro M1000M] + 13b2 GM107GLM [Quadro M600M] + 13b3 GM107GLM [Quadro K2200M] + 13b4 GM107GLM [Quadro M620 Mobile] + 13b6 GM107GLM [Quadro M1200 Mobile] + 13b9 GM107GL [NVS 810] + 13ba GM107GL [Quadro K2200] + 13bb GM107GL [Quadro K620] + 13bc GM107GL [Quadro K1200] + 13bd GM107GL [Tesla M10] + 10de 110a GRID M40 + 10de 1160 Tesla M10 + 10de 11d2 GRID M10-8Q + 13be GM204 [GM107 CS1] + 13bf GM204 [GM107 INT52] + 13c0 GM204 [GeForce GTX 980] + 1043 8504 GTX980-4GD5 + 13c1 GM204 + 13c2 GM204 [GeForce GTX 970] + 13c3 GM204 + 13c4 GM204 [D17U-20] + 13d7 GM204M [GeForce GTX 980M] + 13d8 GM204M [GeForce GTX 960 OEM / 970M] + 13d9 GM204M [GeForce GTX 965M] + 13da GM204M [GeForce GTX 980 Mobile] + 13e4 GM204 [Graphics Device ES-A] + 13e7 GM204GL [GeForce GTX 980 Engineering Sample] + 13f0 GM204GL [Quadro M5000] + 13f1 GM204GL [Quadro M4000] + 13f2 GM204GL [Tesla M60] + 10de 114d GRID M60-1Q + 10de 114e GRID M60-2Q + 10de 1150 GRID M60-8Q + 10de 11b0 GRID M60-4A + 13f3 GM204GL [Tesla M6] + 10de 1184 GRID M6-8Q + 13f8 GM204GLM [Quadro M5000M / M5000 SE] + 13f9 GM204GLM [Quadro M4000M] + 13fa GM204GLM [Quadro M3000M] + 10de 11c9 Quadro M3000 SE + 13fb GM204GLM [Quadro M5500] + 1401 GM206 [GeForce GTX 960] + 1402 GM206 [GeForce GTX 950] + 1404 GM206 [GeForce GTX 960 FAKE] + 1406 GM206 [GeForce GTX 960 OEM] + 1407 GM206 [GeForce GTX 750 v2] + 1427 GM206M [GeForce GTX 965M] + 103c 825b OMEN-17-w001nv + 1430 GM206GL [Quadro M2000] + 1431 GM206GL [Tesla M4] + 1436 GM206GLM [Quadro M2200 Mobile] + 15c2 GP100 [CMP 100-100] + 15f0 GP100GL [Quadro GP100] + 15f1 GP100GL + 15f7 GP100GL [Tesla P100 PCIe 12GB] + 15f8 GP100GL [Tesla P100 PCIe 16GB] + 15f9 GP100GL [Tesla P100 SXM2 16GB] + 15fa GP100GL [DGX Station / PH402 SKU 200] + 15fb GP100GL [GP100 SKU 200] + 15fc GP100GL [Tesla P100-DGXS-16GB] + 15ff GP100GL [GP100 SKU 15ff] + 1617 GM204M [GeForce GTX 980M] + 1618 GM204M [GeForce GTX 970M] + 1619 GM204M [GeForce GTX 965M] + 161a GM204M [GeForce GTX 980 Mobile] + 1667 GM204M [GeForce GTX 965M] + 1725 GP100 + 172e GP100 + 172f GP100 + 174d GM108M [GeForce MX130] + 174e GM108M [GeForce MX110] + 1789 GM107GL [GRID M3-3020] + 179c GM107 [GeForce 940MX] + 1025 1094 Acer Aspire E5-575G + 17c2 GM200 [GeForce GTX TITAN X] + 17c8 GM200 [GeForce GTX 980 Ti] + 17f0 GM200GL [Quadro M6000] + 10de 1141 VCA 6000 + 17f1 GM200GL [Quadro M6000 24GB] + 17fd GM200GL [Tesla M40] + 1ad0 Tegra PCIe x8 Endpoint + 1ad1 Tegra PCIe x4/x8 Endpoint/Root Complex + 1ad2 Tegra PCIe x1 Root Complex + 1ad3 Xavier SATA Controller + 1ad6 TU102 USB 3.1 Host Controller + 1ad7 TU102 USB Type-C UCSI Controller + 1ad8 TU104 USB 3.1 Host Controller + 1ad9 TU104 USB Type-C UCSI Controller + 1ada TU106 USB 3.1 Host Controller + 1043 8673 TURBO-RTX2070-8G + 1adb TU106 USB Type-C UCSI Controller + 1043 8673 TURBO-RTX2070-8G + 1aeb TU116 High Definition Audio Controller + 1aec TU116 USB 3.1 Host Controller + 1aed TU116 USB Type-C UCSI Controller + 1aef GA102 High Definition Audio Controller + 1af1 GA100 [A100 NVSwitch] + 1b00 GP102 [TITAN X] + 1b01 GP102 [GeForce GTX 1080 Ti 10GB] + 1b02 GP102 [TITAN Xp] + 1b04 GP102 + 1b06 GP102 [GeForce GTX 1080 Ti] + 1b07 GP102 [P102-100] + 1b30 GP102GL [Quadro P6000] + 1b38 GP102GL [Tesla P40] + 1b39 GP102GL [Tesla P10] + 1b70 GP102GL + 1b78 GP102GL + 1b80 GP104 [GeForce GTX 1080] + 1b81 GP104 [GeForce GTX 1070] + 1b82 GP104 [GeForce GTX 1070 Ti] + 1b83 GP104 [GeForce GTX 1060 6GB] + 1b84 GP104 [GeForce GTX 1060 3GB] + 1b87 GP104 [P104-100] + 1ba0 GP104M [GeForce GTX 1080 Mobile] + 1ba1 GP104M [GeForce GTX 1070 Mobile] + 1458 1651 GeForce GTX 1070 Max-Q + 1462 11e8 GeForce GTX 1070 Max-Q + 1462 11e9 GeForce GTX 1070 Max-Q + 1558 9501 GeForce GTX 1070 Max-Q + 1ba2 GP104M [GeForce GTX 1070 Mobile] + 1ba9 GP104M + 1baa GP104M + 1bad GP104 [GeForce GTX 1070 Engineering Sample] + 1bb0 GP104GL [Quadro P5000] + 1bb1 GP104GL [Quadro P4000] + 1bb3 GP104GL [Tesla P4] + 1bb4 GP104GL [Tesla P6] + 1bb5 GP104GLM [Quadro P5200 Mobile] + 103c 842f P5200 [Zbook 17 G5 mobile workstation] + 1bb6 GP104GLM [Quadro P5000 Mobile] + 1bb7 GP104GLM [Quadro P4000 Mobile] + 1462 11e9 Quadro P4000 Max-Q + 1bb8 GP104GLM [Quadro P3000 Mobile] + 1bb9 GP104GLM [Quadro P4200 Mobile] + 103c 842f P4200 [Zbook 17 G5 mobile workstation] + 1bbb GP104GLM [Quadro P3200 Mobile] + 103c 842f P3200 [Zbook 17 G5 moble workstation] + 1bc7 GP104 [P104-101] + 1be0 GP104BM [GeForce GTX 1080 Mobile] + 1028 07c0 GeForce GTX 1080 Max-Q + 1458 355b GeForce GTX 1080 Max-Q + 1be1 GP104BM [GeForce GTX 1070 Mobile] + 1c00 GP106 + 1c01 GP106 + 1c02 GP106 [GeForce GTX 1060 3GB] + 1c03 GP106 [GeForce GTX 1060 6GB] + 1043 85b6 DUAL-GTX1060-O6G [GeForce GTX 1060 6GB Dual] + 1c04 GP106 [GeForce GTX 1060 5GB] + 1c06 GP106 [GeForce GTX 1060 6GB Rev. 2] + 1c07 GP106 [P106-100] + 1c09 GP106 [P106-090] + 1c20 GP106M [GeForce GTX 1060 Mobile] + 17aa 39b9 GeForce GTX 1060 Max-Q 3GB + 1c21 GP106M [GeForce GTX 1050 Ti Mobile] + 1c22 GP106M [GeForce GTX 1050 Mobile] + 1c23 GP106M [GeForce GTX 1060 Mobile Rev. 2] + 1414 0020 GTX 1060 Mobile + 1c2d GP106M + 1c30 GP106GL [Quadro P2000] + 1c31 GP106GL [Quadro P2200] + 1c35 GP106M [Quadro P2000 Mobile / DRIVE PX 2 AutoChauffeur] + 1c36 GP106 [P106M] + 1c60 GP106BM [GeForce GTX 1060 Mobile 6GB] + 103c 8390 GeForce GTX 1060 Max-Q 6GB + 1c61 GP106BM [GeForce GTX 1050 Ti Mobile] + 1c62 GP106BM [GeForce GTX 1050 Mobile] + 1c70 GP106GL + 1c81 GP107 [GeForce GTX 1050] + 1c82 GP107 [GeForce GTX 1050 Ti] + 1043 8613 PH-GTX1050TI-4G + 1458 3763 GV-N105TOC-4GD + 1c83 GP107 [GeForce GTX 1050 3GB] + 1c8c GP107M [GeForce GTX 1050 Ti Mobile] + 1c8d GP107M [GeForce GTX 1050 Mobile] + 1c8e GP107M + 1c8f GP107M [GeForce GTX 1050 Ti Max-Q] + 1c90 GP107M [GeForce MX150] + 1c91 GP107M [GeForce GTX 1050 3 GB Max-Q] + 1c92 GP107M [GeForce GTX 1050 Mobile] + 1c94 GP107M [GeForce MX350] + 1c96 GP107M [GeForce MX350] + 1ca7 GP107GL + 1ca8 GP107GL + 1caa GP107GL + 1cb1 GP107GL [Quadro P1000] + 1cb2 GP107GL [Quadro P600] + 1cb3 GP107GL [Quadro P400] + 1cb6 GP107GL [Quadro P620] + 1cba GP107GLM [Quadro P2000 Mobile] + 103c 842c P2000 [Zbook 15 G5 mobile workstation] + 103c 842f P2000 [Zbook 17 G5 mobile workstation] + 1cbb GP107GLM [Quadro P1000 Mobile] + 103c 8429 P1000 [Zbook Studio G5 mobile workstation] + 103c 842c P1000 [Zbook 15 G5 mobile workstation] + 103c 842f P1000 [Zbook 17 G5 mobile workstation] + 103c 8451 P1000 [Zbook Studio x360 G5 mobile workstation] + 1cbc GP107GLM [Quadro P600 Mobile] + 1cbd GP107GLM [Quadro P620] + 1ccc GP107BM [GeForce GTX 1050 Ti Mobile] + 1ccd GP107BM [GeForce GTX 1050 Mobile] + 1cfa GP107GL [Quadro P2000] + 1cfb GP107GL [Quadro P1000] + 1d01 GP108 [GeForce GT 1030] + 1d02 GP108 [GeForce GT 1010] + 1d10 GP108M [GeForce MX150] + 17aa 225e ThinkPad T480 + 1d11 GP108M [GeForce MX230] + 1d12 GP108M [GeForce MX150] + 1d72 1701 Mi Notebook Pro [GeForce MX150] + 1d13 GP108M [GeForce MX250] + 1d16 GP108M [GeForce MX330] + 1d33 GP108GLM [Quadro P500 Mobile] + 1d34 GP108GLM [Quadro P520] + 1d52 GP108BM [GeForce MX250] + 1d56 GP108BM [GeForce MX330] + 1d81 GV100 [TITAN V] + 1d83 GV100 [CMP 100-200] + 1d84 GV100 [CMP 100-210] + 1db0 GV100GL [Tesla GV100 SXM2-16GB SKU 890] + 1db1 GV100GL [Tesla V100 SXM2 16GB] + 1db2 GV100GL [Tesla V100 DGXS 16GB] + 1db3 GV100GL [Tesla V100 FHHL 16GB] + 1db4 GV100GL [Tesla V100 PCIe 16GB] + 1db5 GV100GL [Tesla V100 SXM2 32GB] + 1db6 GV100GL [Tesla V100 PCIe 32GB] + 1db7 GV100GL [Tesla V100 DGXS 32GB] + 1db8 GV100GL [Tesla V100 SXM3 32GB] + 10de 131d Tesla V100-SXM3-32GB-H + 1dba GV100GL [Quadro GV100] + 10de 12eb TITAN V CEO Edition + 1dbd GV100GL [Tesla GV100 DGX1-V] + 1dbe GV100 Engineering Sample + 1dc1 GV100 [CMP 100-200] + 1df0 GV100GL [Tesla PG500-216] + 1df2 GV100GL [Tesla PG503-216] + 1df4 GV100 [CMP 100-210] + 1df5 GV100GL [Tesla V100 SXM2 16GB] + 1df6 GV100GL [Tesla V100S PCIe 32GB] + 1e02 TU102 [TITAN RTX] + 1e03 TU102 [GeForce RTX 2080 Ti 12GB] + 1e04 TU102 [GeForce RTX 2080 Ti] + 1e07 TU102 [GeForce RTX 2080 Ti Rev. A] + 1462 3715 RTX 2080 Ti GAMING X TRIO + 1e09 TU102 [CMP 50HX] + 1e2d TU102 [GeForce RTX 2080 Ti Engineering Sample] + 1e2e TU102 [GeForce RTX 2080 Ti 12GB Engineering Sample] + 1e30 TU102GL [Quadro RTX 6000/8000] + 10de 129e Quadro RTX 8000 + 10de 12ba Quadro RTX 6000 + 1e35 TU102GL [Tesla T10] + 1e36 TU102GL [Quadro RTX 6000] + 1e37 TU102GL [Tesla T10 16GB / GRID RTX T10-2/T10-4/T10-8] + 10de 1304 Tesla T10 16GB + 10de 1347 GRID RTX T10-8 + 10de 1348 GRID RTX T10-4 + 10de 1349 GRID RTX T10-2 + 10de 1370 Tesla T10 16GB + 10de 13a5 GRID RTX T10-8 + 1e38 TU102GL [Tesla T40 24GB] + 1e3c TU102GL + 1e3d TU102GL + 1e3e TU102GL + 1e78 TU102GL [Quadro RTX 6000/8000] + 10de 13d8 Quadro RTX 8000 + 10de 13d9 Quadro RTX 6000 + 1e81 TU104 [GeForce RTX 2080 SUPER] + 1e82 TU104 [GeForce RTX 2080] + 1e84 TU104 [GeForce RTX 2070 SUPER] + 1e87 TU104 [GeForce RTX 2080 Rev. A] + 1e89 TU104 [GeForce RTX 2060] + 1e90 TU104M [GeForce RTX 2080 Mobile] + 1e91 TU104M [GeForce RTX 2070 SUPER Mobile / Max-Q] + 1e93 TU104M [GeForce RTX 2080 SUPER Mobile / Max-Q] + 1eab TU104M + 1eae TU104M [GeForce GTX 2080 Engineering Sample] + 1eb0 TU104GL [Quadro RTX 5000] + 1eb1 TU104GL [Quadro RTX 4000] + 1eb4 TU104GL [T4G] + 1eb5 TU104GLM [Quadro RTX 5000 Mobile / Max-Q] + 1eb6 TU104GLM [Quadro RTX 4000 Mobile / Max-Q] + 1eb8 TU104GL [Tesla T4] + 1eb9 TU104GL + 1eba TU104GL [PG189 SKU600] + 1ebe TU104GL + 1ec2 TU104 [GeForce RTX 2070 SUPER] + 1ec7 TU104 [GeForce RTX 2070 SUPER] + 1ed0 TU104BM [GeForce RTX 2080 Mobile] + 1ed1 TU104BM [GeForce RTX 2070 SUPER Mobile / Max-Q] + 1ed3 TU104BM [GeForce RTX 2080 SUPER Mobile / Max-Q] + 1ef5 TU104GLM [Quadro RTX 5000 Mobile Refresh] + 1f02 TU106 [GeForce RTX 2070] + 1043 8673 TURBO RTX 2070 + 1f03 TU106 [GeForce RTX 2060 12GB] + 1f04 TU106 + 1f06 TU106 [GeForce RTX 2060 SUPER] + 1f07 TU106 [GeForce RTX 2070 Rev. A] + 1f08 TU106 [GeForce RTX 2060 Rev. A] + 1f09 TU106 [GeForce GTX 1660 SUPER] + 1f0a TU106 [GeForce GTX 1650] + 1f0b TU106 [CMP 40HX] + 1f10 TU106M [GeForce RTX 2070 Mobile] + 1f11 TU106M [GeForce RTX 2060 Mobile] + 1f12 TU106M [GeForce RTX 2060 Max-Q] + 1f14 TU106M [GeForce RTX 2070 Mobile / Max-Q Refresh] + 1f15 TU106M [GeForce RTX 2060 Mobile] + 1f2e TU106M + 1f36 TU106GLM [Quadro RTX 3000 Mobile / Max-Q] + 1f42 TU106 [GeForce RTX 2060 SUPER] + 1f47 TU106 [GeForce RTX 2060 SUPER] + 1f50 TU106BM [GeForce RTX 2070 Mobile / Max-Q] + 1f51 TU106BM [GeForce RTX 2060 Mobile] + 1f54 TU106BM [GeForce RTX 2070 Mobile] + 1f55 TU106BM [GeForce RTX 2060 Mobile] + 1f76 TU106GLM [Quadro RTX 3000 Mobile Refresh] + 1f81 TU117 + 1f82 TU117 [GeForce GTX 1650] + 1f83 TU117 [GeForce GTX 1630] + 1f91 TU117M [GeForce GTX 1650 Mobile / Max-Q] + 1f92 TU117M [GeForce GTX 1650 Mobile] + 1f94 TU117M [GeForce GTX 1650 Mobile] + 1f95 TU117M [GeForce GTX 1650 Ti Mobile] + 1f96 TU117M [GeForce GTX 1650 Mobile / Max-Q] + 1f97 TU117M [GeForce MX450] + 1f98 TU117M [GeForce MX450] + 1f99 TU117M [GeForce GTX 1650 Mobile / Max-Q] + 1f9c TU117M [GeForce MX450] + 1f9d TU117M [GeForce GTX 1650 Mobile / Max-Q] +# via Lenovo 496.90 + 1f9f TU117M [GeForce MX550] + 1fa0 TU117M [GeForce MX550] + 1fa1 TU117M + 1fae TU117GL + 1fb0 TU117GLM [Quadro T1000 Mobile] + 1fb1 TU117GL [T600] + 1fb2 TU117GLM [Quadro T400 Mobile] + 1fb6 TU117GLM [T600 Laptop GPU] + 1028 0b10 Precision 3571 + 1fb7 TU117GLM [T550 Laptop GPU] + 1fb8 TU117GLM [Quadro T2000 Mobile / Max-Q] + 1fb9 TU117GLM [Quadro T1000 Mobile] + 1fba TU117GLM [T600 Mobile] + 1fbb TU117GLM [Quadro T500 Mobile] + 1fbc TU117GLM [T1200 Laptop GPU] + 1fbf TU117GL + 1fd9 TU117BM [GeForce GTX 1650 Mobile Refresh] + 1fdd TU117BM [GeForce GTX 1650 Mobile Refresh] + 1ff0 TU117GL [T1000 8GB] + 1ff2 TU117GL [T400 4GB / T400E] + 1ff9 TU117GLM [Quadro T1000 Mobile] + 2080 GA100 + 2081 GA100 + 2082 GA100 [CMP 170HX] + 20b0 GA100 [A100 SXM4 40GB] + 20b1 GA100 [A100 PCIe 40GB] + 20b2 GA100 [A100 SXM4 80GB] + 20b3 GA100 [A100-SXM-64GB] + 20b4 GA100 + 20b5 GA100 [A100 PCIe 80GB] + 20b6 GA100GL [PG506-232] + 20b7 GA100GL [A30 PCIe] + 20b8 GA100 [A100X] + 20b9 GA100 [A30X] + 20bb GA100 [DRIVE A100 PROD] + 20bd GA100 [A800 SXM4 40GB] + 20be GA100 [GRID A100A] + 20bf GA100 [GRID A100B] + 20c0 GA100 [Initial DevID] + 20c2 GA100 [CMP 170HX] + 20f0 GA100 [A100-PG506-207] + 20f1 GA100 [A100 PCIe 40GB] + 20f2 GA100 [A100-PG506-217] + 20f3 GA100 [A800-SXM4-80GB] + 20f5 GA100 [A800 80GB PCIe] + 20f6 GA100 [A800 40GB PCIe] + 20fd GA100 [AX800 Converged Accelerator] + 20fe GA100 [INT SKU] + 20ff GA100 + 2182 TU116 [GeForce GTX 1660 Ti] + 2183 TU116 + 2184 TU116 [GeForce GTX 1660] + 2187 TU116 [GeForce GTX 1650 SUPER] + 2188 TU116 [GeForce GTX 1650] + 2189 TU116 [CMP 30HX] + 2191 TU116M [GeForce GTX 1660 Ti Mobile] + 2192 TU116M [GeForce GTX 1650 Ti Mobile] + 21ae TU116GL + 21bf TU116GL + 21c2 TU116 + 21c3 TU116 + 21c4 TU116 [GeForce GTX 1660 SUPER] + 21d1 TU116BM [GeForce GTX 1660 Ti Mobile] + 2200 GA102 + 2203 GA102 [GeForce RTX 3090 Ti] + 2204 GA102 [GeForce RTX 3090] + 147d 10de NVIDIA Geforce RTX 3090 Founders Edition + 2205 GA102 [GeForce RTX 3080 Ti 20GB] + 2206 GA102 [GeForce RTX 3080] + 10de 1467 GA102 [GeForce RTX 3080] + 10de 146d GA102 [GeForce RTX 3080 20GB] + 1462 3892 RTX 3080 10GB GAMING X TRIO + 2207 GA102 [GeForce RTX 3070 Ti] + 2208 GA102 [GeForce RTX 3080 Ti] + 220a GA102 [GeForce RTX 3080 12GB] + 220d GA102 [CMP 90HX] + 2216 GA102 [GeForce RTX 3080 Lite Hash Rate] + 222b GA102 [GeForce RTX 3090 Engineering Sample] + 222f GA102 [GeForce RTX 3080 11GB / 12GB Engineering Sample] + 2230 GA102GL [RTX A6000] + 2231 GA102GL [RTX A5000] + 2232 GA102GL [RTX A4500] + 2233 GA102GL [RTX A5500] + 2235 GA102GL [A40] + 2236 GA102GL [A10] + 2237 GA102GL [A10G] + 2238 GA102GL [A10M] + 223f GA102GL + 228b GA104 High Definition Audio Controller + 228e GA106 High Definition Audio Controller + 2296 Tegra PCIe Endpoint Virtual Network + 22a3 GH100 [H100 NVSwitch] + 22ba AD102 High Definition Audio Controller + 22bc AD104 High Definition Audio Controller + 22bd AD106M High Definition Audio Controller + 2302 GH100 + 2313 GH100 [H100 CNX] + 2321 GH100 [H100L 94GB] + 2322 GH100 [H800 PCIe] + 2324 GH100 [H800] + 2329 GH100 [H20] + 2330 GH100 [H100 SXM5 80GB] + 2331 GH100 [H100 PCIe] + 2335 GH100 [H200 SXM 141GB] + 2336 GH100 [H100] + 2337 GH100 [H100 SXM5 64GB] + 2338 GH100 [H100 SXM5 96GB] + 2339 GH100 [H100 SXM5 94GB] + 233a GH100 [H800L 94GB] + 233d GH100 [H100 96GB] + 2342 GH100 [GH200 120GB / 480GB] + 2343 GH100 + 2345 GH100 [GH100-88K-A1] + 237f GH100 [Skinny Joe] + 23b0 GH100 + 23f0 GH100 + 2414 GA103 [GeForce RTX 3060 Ti] + 2420 GA103M [GeForce RTX 3080 Ti Mobile] + 2438 GA103GLM [RTX A5500 Laptop GPU] + 2460 GA103M [GeForce RTX 3080 Ti Laptop GPU] + 2480 GA104 [Reserved Dev ID A] + 2482 GA104 [GeForce RTX 3070 Ti] + 2483 GA104 + 2484 GA104 [GeForce RTX 3070] + 10de 146b GA104 [GeForce RTX 3070] + 10de 14ae GA104 [GeForce RTX 3070 16GB] + 2486 GA104 [GeForce RTX 3060 Ti] + 19da 6630 ZT-A30610H-10M [RTX 3060 Ti Twin Edge OC] + 2487 GA104 [GeForce RTX 3060] + 2488 GA104 [GeForce RTX 3070 Lite Hash Rate] + 2489 GA104 [GeForce RTX 3060 Ti Lite Hash Rate] + 248a GA104 [CMP 70HX] + 248c GA104 [GeForce RTX 3070 Ti] + 248d GA104 [GeForce RTX 3070] + 248e GA104 [GeForce RTX 3060 Ti] + 249c GA104M [GeForce RTX 3080 Mobile / Max-Q 8GB/16GB] + 249d GA104M [GeForce RTX 3070 Mobile / Max-Q] + 249f GA104M + 24a0 GA104 [Geforce RTX 3070 Ti Laptop GPU] + 24a4 GA104M + 24ac GA104 [GeForce RTX 30x0 Engineering Sample] + 24ad GA104 [GeForce RTX 3060 Engineering Sample] + 24af GA104 [GeForce RTX 3070 Engineering Sample] + 24b0 GA104GL [RTX A4000] + 24b1 GA104GL [RTX A4000H] + 24b6 GA104GLM [RTX A5000 Mobile] + 24b7 GA104GLM [RTX A4000 Mobile] + 24b8 GA104GLM [RTX A3000 Mobile] + 24b9 GA104GLM [RTX A3000 12GB Laptop GPU] + 24ba GA104GLM [RTX A4500 Laptop GPU] + 24bb GA104GLM [RTX A3000 Laptop GPU] + 24bf GA104 [GeForce RTX 3070 Engineering Sample] + 24c0 GA104 [Initial Dev ID B] + 24c7 GA104 [GeForce RTX 3060 8GB] + 24c8 GA104 [GeForce RTX 3070 GDDR6X] + 24c9 GA104 [GeForce RTX 3060 Ti GDDR6X] + 24dc GA104M [GeForce RTX 3080 Mobile / Max-Q 8GB/16GB] + 24dd GA104M [GeForce RTX 3070 Mobile / Max-Q] + 24df GA104M + 24e0 GA104M [Geforce RTX 3070 Ti Laptop GPU] + 24fa GA104 [RTX A4500 Embedded GPU ] + 2501 GA106 [GeForce RTX 3060] + 2503 GA106 [GeForce RTX 3060] + 2504 GA106 [GeForce RTX 3060 Lite Hash Rate] + 2505 GA106 + 2507 GA106 [Geforce RTX 3050] + 2508 GA106 [GeForce RTX 3050 OEM] + 2509 GA106 [GeForce RTX 3060 12GB Rev. 2] + 2520 GA106M [GeForce RTX 3060 Mobile / Max-Q] + 2521 GA106M [GeForce RTX 3060 Laptop GPU] + 2523 GA106M [GeForce RTX 3050 Ti Mobile / Max-Q] + 252f GA106 [GeForce RTX 3060 Engineering Sample] + 2531 GA106 [RTX A2000] + 2544 GA106 [GeForce RTX 3060] + 2560 GA106M [GeForce RTX 3060 Mobile / Max-Q] + 2561 GA106M [GeForce RTX 3060 Laptop GPU] + 2563 GA106M [GeForce RTX 3050 Ti Mobile / Max-Q] + 2571 GA106 [RTX A2000 12GB] + 2582 GA107 [GeForce RTX 3050 8GB] + 2583 GA107 [GeForce RTX 3050 4GB] + 2584 GA107 [GeForce RTX 3050 6GB] + 25a0 GA107M [GeForce RTX 3050 Ti Mobile] + 25a2 GA107M [GeForce RTX 3050 Mobile] + 25a3 GA107 + 25a4 GA107 + 25a5 GA107M [GeForce RTX 3050 Mobile] + 25a6 GA107M [GeForce MX570] + 25a7 GA107M [GeForce MX570] + 25a9 GA107M [GeForce RTX 2050] + 25aa GA107M [GeForce MX570 A] + 25ab GA107M [GeForce RTX 3050 4GB Laptop GPU] + 25ac GN20-P0-R-K2 [GeForce RTX 3050 6GB Laptop GPU] + 25ad GA107 [GeForce RTX 2050] + 25af GA107 [GeForce RTX 3050 Engineering Sample] + 25b0 GA107GL [RTX A1000] + 25b2 GA107GL [RTX A400] + 25b5 GA107GLM [RTX A4 Mobile] +# A16 - 25B6 10DE 14A9 / A2 - 25B6 10DE 157E + 25b6 GA107GL [A2 / A16] + 25b8 GA107GLM [RTX A2000 Mobile] + 25b9 GA107GLM [RTX A1000 Laptop GPU] + 25ba GA107GLM [RTX A2000 8GB Laptop GPU] + 25bb GA107GLM [RTX A500 Laptop GPU] + 25bc GA107GLM [RTX A1000 6GB Laptop GPU] + 25bd GA107GLM [RTX A500 Laptop GPU] + 25e0 GA107BM [GeForce RTX 3050 Ti Mobile] + 25e2 GA107BM [GeForce RTX 3050 Mobile] + 25e5 GA107BM [GeForce RTX 3050 Mobile] + 25ec GN20-P0-R-K2 [GeForce RTX 3050 6GB Laptop GPU] + 25ed GA107 [GeForce RTX 2050] + 25f9 GA107 [RTX A1000 Embedded GPU ] + 25fa GA107 [RTX A2000 Embedded GPU] + 25fb GA107 [RTX A500 Embedded GPU] + 2681 AD102 [RTX TITAN Ada] + 2684 AD102 [GeForce RTX 4090] + 2685 AD102 [GeForce RTX 4090 D] + 2689 AD102 [GeForce RTX 4070 Ti SUPER] + 26b1 AD102GL [RTX 6000 Ada Generation] + 26b2 AD102GL [RTX 5000 Ada Generation] + 26b3 AD102GL [RTX 5880 Ada Generation] + 26b5 AD102GL [L40] + 26b7 AD102GL [L20] + 26b8 AD102GL [L40G] + 26b9 AD102GL [L40S] + 26ba AD102GL [L20] + 26f5 AD102GL [L40 CNX] + 2702 AD103 [GeForce RTX 4080 SUPER] + 2703 AD103 [GeForce RTX 4080 SUPER] + 2704 AD103 [GeForce RTX 4080] + 2705 AD103 [GeForce RTX 4070 Ti SUPER] + 2709 AD103 [GeForce RTX 4070] + 2717 GN21-X11 [GeForce RTX 4090 Laptop GPU] + 2730 AD103GLM [RTX 5000 Ada Generation Laptop GPU] + 2757 GN21-X11 + 2770 AD103GLM [RTX 5000 Ada Generation Embedded GPU] + 2782 AD104 [GeForce RTX 4070 Ti] + 2783 AD104 [GeForce RTX 4070 SUPER] + 2785 AD104 [AC AD104 20GB] + 2786 AD104 [GeForce RTX 4070] + 2788 AD104 [GeForce RTX 4060 Ti] + 27a0 AD104M [GeForce RTX 4080 Max-Q / Mobile] + 27b0 AD104GL [RTX 4000 SFF Ada Generation] + 27b1 AD104GL [RTX 4500 Ada Generation] + 27b2 AD104GL [RTX 4000 Ada Generation] + 27b6 AD104GL [L2] + 27b7 AD104GL [L16] + 27b8 AD104GL [L4] + 27ba AD104GLM [RTX 4000 Ada Generation Laptop GPU] + 27bb AD104GLM [RTX 3500 Ada Generation Laptop GPU] + 27e0 AD104M [GeForce RTX 4080 Max-Q / Mobile] + 27fa AD104GLM [RTX 4000 Ada Generation Embedded GPU] + 27fb AD104GLM [RTX 3500 Ada Generation Embedded GPU] + 2803 AD106 [GeForce RTX 4060 Ti] + 2805 AD106 [GeForce RTX 4060 Ti 16GB] + 2808 AD106 [GeForce RTX 4060] + 2820 AD106M [GeForce RTX 4070 Max-Q / Mobile] + 2838 AD106GLM [RTX 3000 Ada Generation Laptop GPU] + 2860 AD106M [GeForce RTX 4070 Max-Q / Mobile] + 2878 AD106GLM [RTX 3000 Ada Generation Embedded GPU] + 2882 AD107 [GeForce RTX 4060] + 28a0 AD107M [GeForce RTX 4060 Max-Q / Mobile] + 28a1 AD107M [GeForce RTX 4050 Max-Q / Mobile] + 28b0 AD107GL [RTX 2000 / 2000E Ada Generation] + 28b8 AD107GLM [RTX 2000 Ada Generation Laptop GPU] + 28b9 AD107GLM [RTX 1000 Ada Generation Laptop GPU] + 28ba AD107GLM [RTX 500 Ada Generation Laptop GPU] + 28bb AD107GLM [RTX 500 Ada Generation Laptop GPU] + 28e0 AD107M [GeForce RTX 4060 Max-Q / Mobile] + 28e1 AD107M [GeForce RTX 4050 Max-Q / Mobile] + 28f8 AD107GLM [RTX 2000 Ada Generation Embedded GPU] +10df Emulex Corporation + 0720 OneConnect NIC (Skyhawk) + 103c 1934 FlexFabric 20Gb 2-port 650M Adapter + 103c 1935 FlexFabric 20Gb 2-port 650FLB Adapter + 103c 21d4 StoreFabric CN1200E 10Gb Converged Network Adapter + 103c 220a FlexFabric 10Gb 2-port 556FLR-SFP+ Adapter + 103c 803f Ethernet 10Gb 2-port 557SFP+ Adapter + 103c 8144 FlexFabric 10GB 2-port 556FLR-T Adapter + 17aa 1056 ThinkServer OCm14102-UX-L AnyFabric + 17aa 1057 ThinkServer OCm14104-UX-L AnyFabric + 17aa 1059 ThinkServer OCm14104-UT-L AnyFabric + 17aa 4014 ThinkServer OCm14102-NX-L AnyFabric + 0722 OneConnect iSCSI Initiator (Skyhawk) + 0723 OneConnect iSCSI Initiator + Target (Skyhawk) + 0724 OneConnect FCoE Initiator (Skyhawk) + 0728 OneConnect NIC (Skyhawk-VF) + 072a OneConnect iSCSI Initiator (Skyhawk-VF) + 072b OneConnect iSCSI Initiator + Target (Skyhawk-VF) + 072c OneConnect FCoE Initiator (Skyhawk-VF) + 1ae5 LP6000 Fibre Channel Host Adapter + e100 Proteus-X: LightPulse IOV Fibre Channel Host Adapter + e131 LightPulse 8Gb/s PCIe Shared I/O Fibre Channel Adapter + e180 Proteus-X: LightPulse IOV Fibre Channel Host Adapter + e200 LPe15000/LPe16000 Series 8Gb/16Gb Fibre Channel Adapter + 1014 03f1 PCIe2 2-Port 16Gb Fibre Channel Adapter for POWER (FC EL5B; CCIN 577F) + 1014 04e3 PCIe3 4-Port 10GbE SR Adapter for POWER (FC EN15/EN16; CCIN 2CE3) + 1014 04e4 PCIe3 4-Port 10GbE SFP+ Adapter for POWER (FC EN18; CCIN 2CE4) + 10df e280 LPe16002B-M6 2-Port 16Gb Fibre Channel Adapter + 10df e281 LPe16000B-M6 1-Port 16Gb Fibre Channel Adapter + 10df e282 Flex System FC5054 4-port 16Gb FC Adapter + e208 LightPulse 16Gb Fibre Channel Host Adapter (Lancer-VF) + e220 OneConnect NIC (Lancer) + 17aa 1054 ThinkServer LPm16002B-M6-L AnyFabric + 17aa 1055 ThinkServer LPm16004B-M8-L AnyFabric + e240 OneConnect iSCSI Initiator (Lancer) + e260 OneConnect FCoE Initiator (Lancer) + e268 OneConnect 10Gb FCoE Converged Network Adapter (Lancer-VF) + e300 LPe31000/LPe32000 Series 16Gb/32Gb Fibre Channel Adapter + 1014 0614 PCIe3 4-Port 16Gb Fibre Channel Adapter for POWER (FC EN1C/EN1D; CCIN 578E) + 1014 0615 PCIe3 2-Port 32Gb Fibre Channel Adapter for POWER (FC EN1A/EN1B; CCIN 578F) + 1014 06a0 PCIe3 2-Port 16Gb Fibre Channel Adapter for POWER (FC EN1L/EN1M; CCIN 2CFC) + 10df e300 LPe32002-M2 2-Port 32Gb Fibre Channel Adapter + 10df e301 LPe32000-M2 1-Port 32Gb Fibre Channel Adapter + 10df e310 LPe31002-M6 2-Port 16Gb Fibre Channel Adapter + 10df e311 LPe31000-M6 1-Port 16Gb Fibre Channel Adapter + 10df e312 LPe31004-M6 4-Port 16Gb Fibre Channel Adapter + 10df e320 LPe32002-M2-D 2-Port 32Gb Fibre Channel Adapter + 10df e321 LPe32000-M2-D 1-Port 32Gb Fibre Channel Adapter + 10df e322 LPe31002-M6-D 2-Port 16Gb Fibre Channel Adapter + 10df e323 LPe31000-M6-D 1-Port 16Gb Fibre Channel Adapter + 10df e324 LPm32002-D 2-Port 32Gb Fibre Channel Mezz Card + 10df e325 LPm31002-D 2-Port 16Gb Fibre Channel Mezz Card + 10df e330 LPe32002-M2-L 2-Port 32Gb PCIe Fibre Channel Adapter + 10df e331 LPe32000-M2-L 1-Port 32Gb PCIe Fibre Channel Adapter + 10df e332 LPe31002-M6-L 2-Port 16Gb PCIe Fibre Channel Adapter + 10df e333 LPe31000-M6-L 1-Port 16Gb PCIe Fibre Channel Adapter + 1590 0201 StoreFabric SN1600E 1-Port 32Gb Fibre Channel Adapter + 1590 0202 StoreFabric SN1600E 2-Port 32Gb Fibre Channel Adapter + 1590 0213 StoreFabric SN1200E 1-Port 16Gb Fibre Channel Adapter + 1590 0214 StoreFabric SN1200E 2-Port 16Gb Fibre Channel Adapter + 1590 022e Synergy 5330C 2-Port 32Gb Fibre Channel Mezz Card + 193d 1060 NIC-FC730i-Mb-2P + f011 Saturn: LightPulse Fibre Channel Host Adapter + f015 Saturn: LightPulse Fibre Channel Host Adapter + f085 LP850 Fibre Channel Host Adapter + f095 LP952 Fibre Channel Host Adapter + f098 LP982 Fibre Channel Host Adapter + f0a1 Thor LightPulse Fibre Channel Host Adapter + f0a5 Thor LightPulse Fibre Channel Host Adapter + f0b5 Viper LightPulse Fibre Channel Host Adapter + f0d1 Helios LightPulse Fibre Channel Host Adapter + f0d5 Helios LightPulse Fibre Channel Host Adapter + f0e1 Zephyr LightPulse Fibre Channel Host Adapter + f0e5 Zephyr LightPulse Fibre Channel Host Adapter + f0f5 Neptune LightPulse Fibre Channel Host Adapter + f100 LPe12000 Series 8Gb Fibre Channel Adapter + 1014 038a 8Gb PCI Express Dual Port FC Adapter for POWER + 103c 3282 8Gb Dual-port PCI-e FC HBA + 10df f140 LPe12000-M8-L 1-Port 8Gb PCIe Fibre Channel Adapter + 10df f141 LPe12002-M8-L 2-Port 8Gb PCIe Fibre Channel Adapter + f111 Saturn-X LightPulse Fibre Channel Host Adapter + f112 Saturn-X LightPulse Fibre Channel Host Adapter + f180 LPSe12002 EmulexSecure Fibre Channel Adapter + f400 LPe35000/LPe36000 Series 32Gb/64Gb Fibre Channel Adapter + 10df f401 LPe35000-M2 1-Port 32Gb Fibre Channel Adapter + 10df f402 LPe35002-M2 2-Port 32Gb Fibre Channel Adapter + 10df f403 LPe36000-M64 1-Port 64Gb Fibre Channel Adapter + 10df f404 LPe36002-M64 2-Port 64Gb Fibre Channel Adapter + 10df f405 LPe35004-M2 4-Port 32Gb Fibre Channel Adapter + 10df f406 LPe35004-X6 4-Port Fibre Channel Adapter + 10df f410 LPe35002-M2-D 2-Port 32Gb Fibre Channel Adapter + 10df f411 LPe35000-M2-D 1-Port 32Gb Fibre Channel Adapter + 10df f418 LPe35000-M2-L 1-Port 32Gb PCIe Fibre Channel Adapter + 10df f419 LPe35002-M2-L 2-Port 32Gb PCIe Fibre Channel Adapter + 10df f421 LPe36002-M2-L 2-Port 64Gb PCIe Fibre Channel Adapter + 10df f422 LPe36002-M64-D 2-Port 64Gb Fibre Channel Adapter + 1590 02d5 StoreFabric SN1610E 1-Port 32Gb Fibre Channel Adapter + 1590 02d6 StoreFabric SN1610E 2-Port 32Gb Fibre Channel Adapter + f500 LPe37000/LPe38000 Series 32Gb/64Gb Fibre Channel Adapter + 1014 06c1 PCIe4 4-Port 32Gb Fibre Channel Adapter for POWER (FC EN1L/EN1M; CCIN 2CFC) + 1014 06c2 PCIe4 2-Port 64Gb Fibre Channel Adapter for POWER (FC EN1N/EN1P; CCIN 2CFD) + f700 LP7000 Fibre Channel Host Adapter + f701 LP7000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) + f800 LP8000 Fibre Channel Host Adapter + f801 LP8000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) + f900 LP9000 Fibre Channel Host Adapter + f901 LP9000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) + f980 LP9802 Fibre Channel Host Adapter + f981 LP9802 Fibre Channel Host Adapter Alternate ID + f982 LP9802 Fibre Channel Host Adapter Alternate ID + fa00 Thor-X LightPulse Fibre Channel Host Adapter + fb00 Viper LightPulse Fibre Channel Host Adapter + fc00 Thor-X LightPulse Fibre Channel Host Adapter + 10df fc00 LP10000 LightPulse Fibre Channel Host Adapter + fc10 Helios-X LightPulse Fibre Channel Host Adapter + fc20 Zephyr-X LightPulse Fibre Channel Host Adapter + fc40 Saturn-X: LightPulse Fibre Channel Host Adapter + fc50 Proteus-X: LightPulse IOV Fibre Channel Host Adapter + fd00 Helios-X LightPulse Fibre Channel Host Adapter +# Also IBM FC 5759 / FC 1910 for POWER + 10df fd02 LightPulse LP11002 Dual-port 4Gigabit PCI Fibre Channel Adapter + fd11 Helios-X LightPulse Fibre Channel Host Adapter + fd12 Helios-X LightPulse Fibre Channel Host Adapter + fe00 Zephyr-X LightPulse Fibre Channel Host Adapter + fe05 Zephyr-X: LightPulse FCoE Adapter + fe11 Zephyr-X LightPulse Fibre Channel Host Adapter + fe12 Zephyr-X LightPulse FCoE Adapter + ff00 Neptune LightPulse Fibre Channel Host Adapter +10e0 Integrated Micro Solutions Inc. + 5026 IMS5026/27/28 + 5027 IMS5027 + 5028 IMS5028 + 8849 IMS8849 + 8853 IMS8853 + 9128 IMS9128 [Twin turbo 128] +10e1 Tekram Technology Co.,Ltd. + 0391 TRM-S1040 + 10e1 0391 DC-315U SCSI-3 Host Adapter + 690c DC-690c + dc29 DC-290 +10e2 Aptix Corporation +10e3 Tundra Semiconductor Corp. + 0000 CA91C042 [Universe] + 0108 Tsi108 Host Bridge for Single PowerPC + 0148 Tsi148 [Tempe] + 1775 1100 VR11 Single Board Computer + 0860 CA91C860 [QSpan] + 0862 CA91C862A [QSpan-II] + 8111 Tsi381 PCIe to PCI Bridge + 8260 CA91L8200B [Dual PCI PowerSpan II] + 8261 CA91L8260B [Single PCI PowerSpan II] + a108 Tsi109 Host Bridge for Dual PowerPC +10e4 Tandem Computers + 8029 Realtek 8029 Network Card +10e5 Micro Industries Corporation +10e6 Gainbery Computer Products Inc. +10e7 Vadem +10e8 Applied Micro Circuits Corp. + 1072 INES GPIB-PCI (AMCC5920 based) + 2011 Q-Motion Video Capture/Edit board + 4750 S5930 [Matchmaker] + 5920 S5920 + 801d Roper Scientific PCI TAXI interface + 8043 LANai4.x [Myrinet LANai interface chip] + 8062 S5933_PARASTATION + 807d S5933 [Matchmaker] + 8081 GPIB interface card [IOtech Inc. PCI488] + 8088 Kongsberg Spacetec Format Synchronizer + 8089 Kongsberg Spacetec Serial Output Board + 809c S5933_HEPC3 + 80b9 Harmonix Hi-Card P8 (4x active ISDN BRI) + 80d7 PCI-9112 + 80d8 PCI-7200 + 80d9 PCI-9118 + 80da PCI-9812 + 80fc APCI1500 Signal processing controller (16 dig. inputs + 16 dig. outputs) + 811a PCI-IEEE1355-DS-DE Interface + 814c Fastcom ESCC-PCI (Commtech, Inc.) + 8170 S5933 [Matchmaker] (Chipset Development Tool) + 81e6 Multimedia video controller + 828d APCI3001 Signal processing controller (up to 16 analog inputs) + 8291 Fastcom 232/8-PCI (Commtech, Inc.) + 82c4 Fastcom 422/4-PCI (Commtech, Inc.) + 82c5 Fastcom 422/2-PCI (Commtech, Inc.) + 82c6 Fastcom IG422/1-PCI (Commtech, Inc.) + 82c7 Fastcom IG232/2-PCI (Commtech, Inc.) + 82ca Fastcom 232/4-PCI (Commtech, Inc.) + 82db AJA HDNTV HD SDI Framestore + 82e2 Fastcom DIO24H-PCI (Commtech, Inc.) + 8406 PCIcanx/PCIcan CAN interface [Kvaser AB] + 8407 PCIcan II CAN interface (A1021, PCB-07, PCB-08) [Kvaser AB] + 8851 S5933 on Innes Corp FM Radio Capture card + e004 X-Gene PCIe bridge +10e9 Alps Electric Co., Ltd. +10ea Integraphics + 1680 IGA-1680 + 1682 IGA-1682 + 1683 IGA-1683 + 2000 CyberPro 2000 + 2010 CyberPro 2000A + 5000 CyberPro 5000 + 5050 CyberPro 5050 + 5202 CyberPro 5202 +# CyberPro5202 Audio Function + 5252 CyberPro5252 +10eb Artists Graphics + 0101 3GA + 8111 Twist3 Frame Grabber +10ec Realtek Semiconductor Co., Ltd. + 0139 RTL-8139/8139C/8139C+ Ethernet Controller + 2600 Killer E2600 GbE Controller + 3000 Killer E3000 2.5GbE Controller + 4321 RTL8852BE 802.11ax PCIe Wireless Network Adapter + 5208 RTS5208 PCI Express Card Reader + 5209 RTS5209 PCI Express Card Reader + 5227 RTS5227 PCI Express Card Reader + 17aa 220e ThinkPad T440p + 17aa 2214 ThinkPad X240 + 5229 RTS5229 PCI Express Card Reader + 1025 0813 Aspire R7-571 + 103c 194e ProBook 455 G1 Notebook + 103c 1985 Pavilion 17-e163sg Notebook PC + 17aa 3832 Yoga 520 + 522a RTS522A PCI Express Card Reader + 103c 8079 EliteBook 840 G3 + 103c 825b OMEN-17-w001nv + 17aa 5124 ThinkPad E595 + 5249 RTS5249 PCI Express Card Reader + 103c 1909 ZBook 15 + 524a RTS524A PCI Express Card Reader + 5250 RTS5250 PCI Express Card Reader + 525a RTS525A PCI Express Card Reader + 1028 06d6 Latitude 7275 tablet + 1028 06dc Latitude E7470 + 1028 06e4 XPS 15 9550 + 1028 06e6 Latitude 11 5175 2-in-1 + 1028 09be Latitude 7410 + 1028 0b10 Precision 3571 + 1028 0c06 Precision 3580 + 17aa 224f ThinkPad X1 Carbon 5th Gen + 5260 RTS5260 PCI Express Card Reader + 5261 RTS5261 PCI Express Card Reader + 5286 RTS5286 PCI Express Card Reader + 5287 RTL8411B PCI Express Card Reader + 1025 1094 Acer Aspire E5-575G + 5288 RTS5288 PCI Express Card Reader + 5289 RTL8411 PCI Express Card Reader + 1043 1457 K55A Laptop + 5760 RTS5763DL x2 NVMe SSD Controller + 5762 RTS5762 NVMe SSD Controller + 5763 RTS5763DL NVMe SSD Controller (DRAM-less) + 5765 RTS5765DL NVMe SSD Controller (DRAM-less) + 5770 RTS5770DL NVMe SSD Controller (DRAM-less) + 5772 RTS5772DL NVMe SSD Controller (DRAM-less) + 8029 RTL-8029(AS) + 10b8 2011 EZ-Card (SMC1208) + 10ec 8029 RTL-8029(AS) + 1113 1208 EN1208 + 1186 0300 DE-528 + 1259 2400 AT-2400 + 1af4 1100 QEMU Virtual Machine + 8125 RTL8125 2.5GbE Controller + 4c52 2022 LRES2022PT Single-port 2.5Gb Ethernet Network Adapter + 8129 RTL-8129 + 10ec 8129 RT8129 Fast Ethernet Adapter + 11ec 8129 RTL8111/8168 PCIe Gigabit Ethernet (misconfigured) + 8136 RTL810xE PCI Express Fast Ethernet controller + 103c 1985 RTL8106E on Pavilion 17-e163sg Notebook PC + 103c 2a8c Compaq 500B Microtower + 103c 2ab1 Pavilion p6774 + 103c 30cc Pavilion dv6700 + 1179 ff64 RTL8102E PCI-E Fast Ethernet NIC + 17c0 1053 RTL8101e Medion WIM 2210 Notebook PC [MD96850] + 8137 RTL8104E PCIe Fast Ethernet Controller + 8138 RT8139 (B/C) Cardbus Fast Ethernet Adapter + 10ec 8138 RT8139 (B/C) Fast Ethernet Adapter + 8139 RTL-8100/8101L/8139 PCI Fast Ethernet Adapter + 0357 000a TTP-Monitoring Card V2.0 + 1025 005a TravelMate 290 + 1025 8920 ALN-325 + 1025 8921 ALN-325 + 103c 006a NX9500 + 103c 2a20 Pavilion t3030.de Desktop PC + 103c 30d9 Presario C700 + 1043 1045 L8400B, L3C/S, X58LE notebook + 1043 8109 P5P800-MX Mainboard + 1071 8160 MIM2000 + 10bd 0320 EP-320X-R + 10ec 8139 RTL-8100/8101L/8139 PCI Fast Ethernet Adapter + 10f7 8338 Panasonic CF-Y5 laptop + 1113 ec01 LevelOne FNC-0107TX/FNC-0109TX + 1186 1104 DFE-520TX Fast Ethernet PCI Adapter (rev. D1) + 1186 1300 DFE-538TX + 1186 1320 SN5200 + 1186 8139 DRN-32TX + 11f6 8139 FN22-3(A) LinxPRO Ethernet Adapter + 1259 2500 AT-2500TX + 1259 2503 AT-2500TX/ACPI + 1385 f31d FA311 v2 + 1395 2100 AMB2100 + 1429 d010 ND010/ND012 + 1432 9130 EN-9130TX + 1436 8139 RT8139 + 144d c00c P30/P35 notebook + 1458 e000 GA-7VM400M/7VT600 Motherboard + 1462 0131 MS-1013 Notebook + 1462 217c Aspire L250 + 1462 788c 865PE Neo2-V Mainboard + 146c 1439 FE-1439TX + 1489 6001 GF100TXRII + 1489 6002 GF100TXRA + 149c 139a LFE-8139ATX + 149c 8139 LFE-8139TX + 14cb 0200 LNR-100 Family 10/100 Base-TX Ethernet + 1565 2300 P4TSV Onboard LAN (RTL8100B) + 1631 7003 Onboard RTL8111 on GA-8SIML Rev1.0 Mainboard + 1695 9001 Onboard RTL8101L 10/100 MBit + 16ec 00ff USR997900A + 1799 5000 F5D5000 PCI Card/Desktop Network PCI Card + 1799 5010 F5D5010 CardBus Notebook Network Card + 187e 3303 FN312 + 1904 8139 RTL8139D Fast Ethernet Adapter + 1af4 1100 QEMU Virtual Machine + 2646 0001 KNE120TX + 8e2e 7000 KF-230TX + 8e2e 7100 KF-230TX/2 + a0a0 0007 ALN-325C + 8161 RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller + 10ec 8168 TP-Link TG-3468 v4.0 Gigabit PCI Express Network Adapter + 8167 RTL-8110SC/8169SC Gigabit Ethernet + 105b 0e10 RTL-8110SC-GR on a N15235/A74MX mainboard + 1458 e000 GA-MA69G-S3H Motherboard + 1462 235c P965 Neo MS-7235 mainboard + 1462 236c 945P Neo3-F motherboard + 8168 RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet Controller + 1019 8168 RTL8111/8168 PCI Express Gigabit Ethernet controller + 1025 1094 Acer Aspire E5-575G + 1028 0283 Vostro 220 + 1028 04b2 Vostro 3350 + 1028 04da Vostro 3750 + 1028 05d7 Alienware X51 R2 + 1028 06f2 Latitude 3470 + 1028 06f3 Latitude 3570 + 1028 0869 Vostro 3470 + 103c 1611 Pavilion DM1Z-3000 + 103c 1950 ProBook 450/455 + 103c 2a6f Asus IPIBL-LB Motherboard + 103c 825b OMEN-17-w001nv + 103c 8615 Pavilion Laptop 15-cw1xxx + 103c 86d4 Pavilion Laptop 15-ec0xxx +# Rev 29, uses r8169 Driver on Linux + 103c 8882 HP ProDesk 405 G8 Desktop Mini PC + 103c 8b17 ProBook 445 G9/455 G9 [RTL8111HSH-CG GbE Controller] + 1043 11f5 Notebook motherboard (one of many models) + 1043 16d5 U6V/U31J laptop + 1043 81aa P5B + 1043 82c6 M3A78 Series Motherboard + 1043 83a3 M4A785/P7P55 Motherboard + 1043 8432 P8P67 and other motherboards + 1043 8505 P8 series motherboard + 1043 8554 H81M-C Motherboard + 1043 859e AM1I-A Motherboard + 1043 8677 Onboard RTL8111H Ethernet + 105b 0d7c D270S/D250S Motherboard + 10ec 8168 RTL8111/8168 PCI Express Gigabit Ethernet controller + 144d c652 RTL8168 on a NP300E5C series laptop + 1458 e000 Onboard Ethernet + 1462 238c Onboard RTL8111b on MSI P965 Platinum Mainboard + 1462 345c RTL8111B on MS-7345 Motherboard + 1462 368c K9AG Neo2 + 1462 4180 Wind PC MS-7418 + 1462 7522 X58 Pro-E + 1462 7c37 X570-A PRO motherboard + 1734 11c0 RTL8211DN on Esprimo P510 D3171 motherboard + 1775 11cc CC11/CL11 + 17aa 3098 ThinkCentre E73 + 17aa 3814 Z50-75 + 17aa 3823 Lenovo V130-15IGM Laptop - Type 81HL + 17aa 5068 Thinkpad E480/E580 + 17aa 5124 ThinkPad E595 + 1849 8168 Motherboard (one of many) + 7470 3468 TG-3468 Gigabit PCI Express Network Adapter + 8086 2055 NUC Kit DN2820FYKH + 8086 d615 Desktop Board D510MO/D525MW + ea50 ce19 mCOM10-L1900 + 8169 RTL8169 PCI Gigabit Ethernet Controller + 1025 0079 Aspire 5024WLMi + 10bd 3202 EP-320G-TX1 32-bit PCI Gigabit Ethernet Adapter + 10ec 8169 RTL8169/8110 Family PCI Gigabit Ethernet NIC + 1259 c107 CG-LAPCIGT + 1371 434e ProG-2000L + 1385 311a GA311 + 1385 5200 GA511 Gigabit PC Card + 1458 e000 GA-8I915ME-G Mainboard + 1462 030c K8N Neo-FSR v2.0 mainboard + 1462 065c Hetis 865GV-E (MS-7065) + 1462 702c K8T NEO 2 motherboard + 1462 7094 K8T Neo2-F V2.0 + 16ec 011f USR997903 + 1734 1091 D2030-A1 + a0a0 0449 AK86-L motherboard + 816a RTL8111xP UART #1 + ea50 ce19 mCOM10-L1900 + 816b RTL8111xP UART #2 + ea50 ce19 mCOM10-L1900 + 816c RTL8111xP IPMI interface + ea50 ce19 mCOM10-L1900 + 816d RTL811x EHCI host controller + ea50 ce19 mCOM10-L1900 + 816e Realtek RealManage BMC + 8171 RTL8191SEvA Wireless LAN Controller + 8172 RTL8191SEvB Wireless LAN Controller + 8173 RTL8192SE Wireless LAN Controller + 8174 RTL8192SE Wireless LAN Controller + 8176 RTL8188CE 802.11b/g/n WiFi Adapter + 1043 84b5 PCE-N10 + 1a3b 1139 AW-NE139H Half-size Mini PCIe Card + 8177 RTL8191CE PCIe Wireless Network Adapter + 8178 RTL8192CE PCIe Wireless Network Adapter + 8179 RTL8188EE Wireless Network Adapter + 103c 197d RTL8188EE mini-PCIe card + 8180 RTL8180L 802.11b MAC + 1385 4700 MA521 802.11b Wireless PC Card + 1737 0019 WPC11v4 802.11b Wireless-B Notebook Adapter + 8185 RTL-8185 IEEE 802.11a/b/g Wireless LAN Controller + 818b RTL8192EE PCIe Wireless Network Adapter + 8190 RTL8190 802.11n PCI Wireless Network Adapter + 8191 RTL8192CE PCIe Wireless Network Adapter + 8192 RTL8192E/RTL8192SE Wireless LAN Controller + 8193 RTL8192DE Wireless LAN Controller + 8196 RTL8196 Integrated PCI-e Bridge + 8197 SmartLAN56 56K Modem + 8199 RTL8187SE Wireless LAN Controller + 1462 6894 MN54G2 / MS-6894 Wireless Mini PCIe Card + 8723 RTL8723AE PCIe Wireless Network Adapter + 8812 RTL8812AE 802.11ac PCIe Wireless Network Adapter + 8813 RTL8813AE 802.11ac PCIe Wireless Network Adapter + 8821 RTL8821AE 802.11ac PCIe Wireless Network Adapter + 8852 RTL8852AE 802.11ax PCIe Wireless Network Adapter + a85a RTL8852AE WiFi 6 802.11ax PCIe Adapter + b723 RTL8723BE PCIe Wireless Network Adapter + 10ec 8739 Dell Wireless 1801 + 17aa b736 Z50-75 + b821 RTL8821CE PCIe 802.11ac Wireless Network Controller + b822 RTL8822BE 802.11a/b/g/n/ac WiFi adapter + 103c 831b Realtek RTL8822BE 802.11ac 2x2 Wi-Fi + Bluetooth 4.2 Combo Adapter (MU-MIMO supported) + 17aa 5124 ThinkPad E595 + 17aa b023 ThinkPad E595 + b852 RTL8852BE PCIe 802.11ax Wireless Network Controller + b85b RTL8852BE PCIe 802.11ax Wireless Network Controller [1T1R] + c821 RTL8821CE 802.11ac PCIe Wireless Network Adapter + c822 RTL8822CE 802.11ac PCIe Wireless Network Adapter + c82f RTL8822CE 802.11ac PCIe Wireless Network Adapter + c852 RTL8852CE PCIe 802.11ax Wireless Network Controller + d723 RTL8723DE 802.11b/g/n PCIe Adapter +10ed Ascii Corporation + 7310 V7310 +10ee Xilinx Corporation + 0001 EUROCOM for PCI (ECOMP) + 0002 Octal E1/T1 for PCI ETP Card + 0007 Default PCIe endpoint ID + 0205 Wildcard TE205P + 0210 Wildcard TE210P + 0300 Spartan 3 Designs (Xilinx IP) + 0314 Wildcard TE405P/TE410P (1st Gen) + 0405 Wildcard TE405P (2nd Gen) + 0410 Wildcard TE410P (2nd Gen) + 0600 Xilinx 6 Designs (Xilinx IP) + 3fc0 RME Digi96 + 3fc1 RME Digi96/8 + 3fc2 RME Digi96/8 Pro + 3fc3 RME Digi96/8 Pad + 3fc4 RME Digi9652 (Hammerfall) + 3fc5 RME Hammerfall DSP + 3fc6 RME Hammerfall DSP MADI + 5000 Alveo U200 XDMA Platform + 5004 Alveo U250 XDMA Platform + 5005 Alveo U250 + 500c Alveo U280 XDMA Platform + 5020 Alveo U50 XMDA Platform + 505c Alveo U55C + 5074 Alveo X3522, Quad Port, 10/25GbE Adaptable Accelerator Card + 5084 Alveo X3522, Quad Port, 10/25GbE Low Latency Network Adapter + 6987 SmartSSD + 6988 SmartSSD + 7011 7-Series FPGA Hard PCIe block (AXI/debug) + 7038 FPGA Card XC7VX690T + 17aa 402f FPGA XC7VX690T-3FFG1157E + 8019 Memory controller + 1eec 0201 VSEC10232X Dual-port 100Gb/s Etherent PCIe + 8380 Ellips ProfiXpress Profibus Master + 8381 Ellips Santos Frame Grabber + 9134 SmartSSD + 9234 SmartSSD + 9434 SmartSSD + d000 Alveo U200 Golden Image + d004 Alveo U250 Golden Image + d00c Alveo U280 Golden Image + d020 Alveo U50 Golden Image + d154 Copley Controls CAN card (PCI-CAN-02) +# SED is assigned Xilinx PCI device IDs ebf0 through ebff + ebf0 SED Systems Modulator/Demodulator + ebf1 SED Systems Audio Interface Card + ebf2 SED Systems Common PCI Interface + ebf3 SED Systems PCIe-AXI Bridge +10ef Racore Computer Products, Inc. + 8154 M815x Token Ring Adapter +10f0 Peritek Corporation +10f1 Tyan Computer + 2865 Tyan Thunder K8E S2865 + 5300 Tyan S5380 Mainboard +10f2 Achme Computer, Inc. +10f3 Alaris, Inc. +10f4 S-MOS Systems, Inc. +10f5 NKK Corporation + a001 NDR4000 [NR4600 Bridge] +10f6 Creative Electronic Systems SA +10f7 Matsushita Electric Industrial Co., Ltd. +10f8 Altos India Ltd +10f9 PC Direct +10fa Truevision + 000c TARGA 1000 +10fb Thesys Gesellschaft fuer Mikroelektronik mbH + 186f TH 6255 +10fc I-O Data Device, Inc. +# What's in the cardbus end of a Sony ACR-A01 card, comes with newer Vaio CD-RW drives + 0003 Cardbus IDE Controller + 0005 Cardbus SCSI CBSC II +10fd Soyo Computer, Inc +10fe Fast Multimedia AG +10ff NCube +1100 Jazz Multimedia +1101 Initio Corporation + 0002 INI-920 Ultra SCSI Adapter + 1060 INI-A100U2W + 1622 INI-1623 PCI SATA-II Controller + 9100 INI-9100/9100W + 9400 INI-940 Fast Wide SCSI Adapter + 9401 INI-935 Fast Wide SCSI Adapter + 9500 INI-950 SCSI Adapter + 9502 INI-950P Ultra Wide SCSI Adapter +1102 Creative Labs + 0002 EMU10k1 [Sound Blaster Live! Series] + 100a 1102 SB Live! 5.1 Digital OEM SB0220 EMU10K1-JFF + 1102 0020 CT4670/4850 SBLive! Value + 1102 0021 CT4620 SBLive! + 1102 002f M002/M003 Integrated SBLive! + 1102 100a SB0220/0229 SBLive! 5.1 Digital OEM + 1102 4001 E-mu APS + 1102 8022 CT4780 SBLive! Value + 1102 8023 CT4790 SoundBlaster PCI512 + 1102 8024 CT4760 SBLive! + 1102 8025 CT1140/SB0040 Integrated SBLive! + 1102 8026 CT4830 SBLive! Value + 1102 8027 CT4832 SBLive! Value + 1102 8028 CT4870 SBLive! Value + 1102 8029 CT4872 SBLive! Value + 1102 802a CT4890 SoundBlaster PCI256 + 1102 802b CT4891 SoundBlaster PCI256 + 1102 8031 CT4831 SBLive! Value + 1102 8032 CT4871 SBLive! Value + 1102 8033 CT4893 SoundBlaster PCI256 + 1102 8035 CT0060 SBLive! + 1102 8040 CT4760 SBLive! + 1102 8050 CT4750 SoundBlaster PCI512 + 1102 8051 CT4850 SBLive! Value + 1102 8061 SB060 SBLive! Player 5.1 + 1102 8062 SB0100 SBLive! 5.1 + 1102 8063 DXW Integrated SBLive! 5.1 + 1102 8064 SB0100/SB0102 SBLive! 5.1 + 1102 8065 SB0220/0222 SBLive! 5.1 Digital + 1102 8066 SB0228 SBLive! 5.1 Digital + 1102 8067 SB0220 SBLive! 5.1 + 1102 8068 CT0061 SBLive! + 1102 8069 SB0101 SBLive! 5.1 Value + 1102 806a SB0103 SBLive! 5.1 + 1102 806b SB0105 SBLive! 5.1 + 1102 806c SB0221 SBLive! 5.1 + 1102 8071 SB0150 SoundBlaster PCI512 +# EMU8008 PCI version of emu8000 chip + 0003 SB AWE64(D) + 1102 0010 CT4600 AWE64D + 1102 0030 CT4650 AWE64D + 1102 0031 CT4655 AWE64D + 0004 EMU10k2/CA0100/CA0102/CA10200 [Sound Blaster Audigy Series] + 1102 0040 SB0090 Audigy Player +# Probably an early engineering sample + 1102 0041 CT4820 SBLive!2 + 1102 0042 CT0070 Audigy + 1102 0043 CT0072 Audigy + 1102 0051 SB0090 Audigy Player/Platinum (EX) + 1102 0052 SB0162 Audigy ES + 1102 0053 CT0090/SB0092 Audigy Player/OEM + 1102 0054 SB0161 Audigy ES + 1102 0055 SB0192 Audigy + 1102 0056 SB0191 Audigy + 1102 0057 SB0091 Audigy + 1102 0058 SB0095 Audigy Player/OEM + 1102 0059 SB0230 Audigy + 1102 005a SB0231 Audigy + 1102 005b SB0232 Audigy + 1102 005c SB0238 Audigy + 1102 1002 SB0240 Audigy 2 Platinum 6.1 + 1102 1003 SB0350 Audigy 2 / SB0243 Audigy 2 OEM + 1102 1004 SB0242 Audigy 2 + 1102 1005 SB0280 Audigy 2 Platinum Ex + 1102 1006 SB0245 Audigy 2 OEM + 1102 1007 SB0240/SB0244 Audigy 2 Platinum + 1102 1008 SB0320 Audigy 2 + 1102 1009 SB0249 Audigy 2 OEM + 1102 100a SB0246 Audigy 2 + 1102 2001 SB0360 Audigy 2 ZS Platinum Pro + 1102 2002 SB0350 Audigy 2 ZS + 1102 2003 SB0352 Audigy 2 ZS + 1102 2004 SB0355 Audigy 2 ZS + 1102 2005 SB0359 Audigy 2 ZS + 1102 2006 SB035x Audigy 2 OEM + 1102 2007 SB0380 Audigy 4 Pro + 1102 4001 E-MU 1010 [MAEM8810] + 1102 4002 E-MU 0404 + 1102 4003 E-MU 1010 + 0005 EMU20k1 [Sound Blaster X-Fi Series] + 1102 0021 X-Fi Platinum + 1102 002c X-Fi XtremeGamer FATAL1TY PRO + 1102 1003 X-Fi XtremeMusic +# This chip is also known as CA0103 on Sound Blaster 5.1 SB0680 card. + 0006 EMU10k1X / CA0103 [SB Live! OEM / SB 5.1 / Ectiva 5.1] + 1102 1001 SB0680 Sound Blaster 5.1 + 1102 1003 SB0203 SB Live! 5.1 (Dell) + 1102 1004 TP0033 Ectiva Audio 5.1 + 0007 CA0106/CA0111 [SB Live!/Audigy/X-Fi Series] + 1102 0007 SBLive! 24bit + 1102 1001 SB0310 Audigy LS + 1102 1002 SB0312 Audigy LS + 1102 1006 SB0410 SBLive! 24-bit + 1102 100a SB0570 [SB Audigy SE] + 1102 1012 SB0790 X-Fi XA + 1102 1013 Soundblaster X-Fi Xtreme Audio + 1462 1009 K8N Diamond + 0008 CA0108/CA10300 [Sound Blaster Audigy Series] + 1102 0008 EMU0404 Digital Audio System + 1102 1001 SB0400 Audigy 2 Value + 1102 1021 SB0610 Audigy 4 Value + 1102 1022 SBxxx Audigy 2/4 Value + 1102 1023 SB0612 Audigy 2 LS + 1102 1024 SB1550 Audigy 5/Rx + 1102 1101 SBxxxx Audigy 2 SA + 1102 2001 SB0530 Audigy 2 ZS Notebook + 1102 2021 SBxxxx Audigy 4 Notebook + 1102 4002 E-MU 0404 + 1102 4003 E-MU 1010 + 1102 4004 EMU1010 Digital Audio System [MAEM8960] + 1102 4005 E-MU 0404 [MAEM8984] + 1102 4007 E-MU 1010 [MAEM8982] + 1102 4201 E-MU 0202 [MAEM8950] + 0009 CA0110 [Sound Blaster X-Fi Xtreme Audio] + 1102 0010 MB0820 Integrated + 1102 0018 SB1040 PCI Express + 000b EMU20k2 [Sound Blaster X-Fi Titanium Series] + 1102 0041 SB0880 [SoundBlaster X-Fi Titanium PCI-e] + 1102 0062 SB1270 [SoundBlaster X-Fi Titanium HD] + 0012 CA0132 Sound Core3D [Sound Blaster Recon3D / Z-Series / Sound BlasterX AE-5 Plus] + 1102 0010 SB1570 SB Audigy Fx + 1102 0191 CA0132 Sound Core3D - CA0113 [ Sound BlasterX AE-5 Plus] + 4001 SB Audigy FireWire Port + 1102 0010 SB Audigy FireWire Port + 7002 SB Live! Game Port + 1102 0020 Gameport Joystick + 7003 SB Audigy Game Port + 1102 0040 SB Audigy Game Port + 1102 0060 SB Audigy2 MIDI/Game Port + 7004 [SB Live! Value] Input device controller + 7005 SB Audigy LS Game Port + 1102 1001 SB0310 Audigy LS MIDI/Game port + 1102 1002 SB0312 Audigy LS MIDI/Game port + 7006 [SB X-Fi Xtreme Audio] CA0110-IBG PCIe to PCI Bridge + 8938 Ectiva EV1938 + 1033 80e5 SlimTower-Jim (NEC) + 1071 7150 Mitac 7150 + 110a 5938 Siemens Scenic Mobile 510PIII + 13bd 100c Ceres-C (Sharp, Intel BX) + 13bd 100d Sharp, Intel Banister + 13bd 100e TwinHead P09S/P09S3 (Sharp) + 13bd f6f1 Marlin (Sharp) + 14ff 0e70 P88TE (TWINHEAD INTERNATIONAL Corp) + 14ff c401 Notebook 9100/9200/2000 (TWINHEAD INTERNATIONAL Corp) + 156d b400 G400 - Geo (AlphaTop (Taiwan)) + 156d b550 G560 (AlphaTop (Taiwan)) + 156d b560 G560 (AlphaTop (Taiwan)) + 156d b700 G700/U700 (AlphaTop (Taiwan)) + 156d b795 G795 (AlphaTop (Taiwan)) + 156d b797 G797 (AlphaTop (Taiwan)) +# nee Triones Technologies, Inc. +1103 HighPoint Technologies, Inc. + 0003 HPT343/345/346/363 + 0004 HPT366/368/370/370A/372/372N + 1103 0001 HPT370A + 1103 0004 HPT366 UDMA66 (r1) / HPT368 UDMA66 (r2) / HPT370 UDMA100 (r3) / HPT370 UDMA100 RAID (r4) + 1103 0005 HPT370 UDMA100 + 1103 0006 HPT302/302N + 0005 HPT372A/372N + 0006 HPT302/302N + 0007 HPT371/371N + 0008 HPT374 + 0009 HPT372N + 0620 RocketRAID 620 2 Port SATA-III Controller + 0622 RocketRAID 622 2 Port SATA-III Controller + 0640 RocketRAID 640 4 Port SATA-III Controller + 0641 RocketRAID 640L 4 Port SATA-III Controller + 0642 RocketRAID 642L SATA-III Controller (2 eSATA ports + 2 internal SATA ports) + 0644 RocketRAID 644 4 Port SATA-III Controller (eSATA) + 0645 RocketRAID 644L 4 Port SATA-III Controller (eSATA) + 0646 RocketRAID 644LS SATA-III Controller (4 eSATA devices connected by 1 SAS cable) + 0750 Rocket 750 PCIe Gen2 SATA III Controller + 0840 RocketRAID 840 PCIe Gen3 SATA III Controller + 1720 RocketRAID 1720 (2x SATA II RAID Controller) + 1740 RocketRAID 1740 + 1742 RocketRAID 1742 + 2210 RocketRAID 2210 SATA-II Controller + 11ab 11ab 88SX6042 + 2300 RocketRAID 230x 4 Port SATA-II Controller + 2310 RocketRAID 2310 4 Port SATA-II Controller + 2320 RocketRAID 2320 SATA-II Controller + 2322 RocketRAID 2322 SATA-II Controller + 2340 RocketRAID 2340 16 Port SATA-II Controller + 2640 RocketRAID 2640 SAS/SATA Controller + 2720 RocketRAID 2720 PCIe Gen2 6Gb/s SAS/SATA Controller + 2722 RocketRAID 2722 +# SFF-8087 Mini-SAS 16 port internal + 2740 RocketRAID 2740 +# SFF-8088 Mini-SAS 16 port external + 2744 RocketRaid 2744 +# SFF-8088 8 port external / SFF-8087 24 port internal + 2782 RocketRAID 2782 + 2840 RocketRAID 2840 PCIe Gen3 6Gb/s SAS/SATA Controller + 3120 RocketRAID 3120 + 3220 RocketRAID 3220 + 3320 RocketRAID 3320 + 3520 RocketRAID 3520 PCIe Gen1 8-Port SATA II Controller + 3530 RocketRAID 3530 PCIe Gen1 12-Port SATA II Controller + 3740 RocketRAID 3740 PCIe Gen3 12Gb/s SAS/SATA Controller + 4310 RocketRaid 4310 + 4320 RocketRAID 4320 SAS Controller + 7103 SSD7103 PCIe Gen3 x16 4-Port M.2 NVMe RAID Controller + 7105 SSD7105 PCIe Gen3 x16 4-Port M.2 NVMe RAID Controller + 7110 SSD7110 PCIe Gen3 x16 NVMe RAID Controller + 7505 SSD7505 PCIe Gen4 x16 4-Port M.2 NVMe RAID Controller + 7540 SSD7540 PCIe Gen4 x16 8-Port M.2 NVMe RAID Controller + 7580 SSD7580 PCIe Gen4 x16 8-Port M.2 NVMe RAID Controller +1104 RasterOps Corp. +1105 Sigma Designs, Inc. + 1105 REALmagic Xcard MPEG 1/2/3/4 DVD Decoder + 8300 REALmagic Hollywood Plus DVD Decoder + 8400 EM840x REALmagic DVD/MPEG-2 Audio/Video Decoder + 8401 EM8401 REALmagic DVD/MPEG-2 A/V Decoder + 8470 EM8470 REALmagic DVD/MPEG-4 A/V Decoder + 8471 EM8471 REALmagic DVD/MPEG-4 A/V Decoder + 8475 EM8475 REALmagic DVD/MPEG-4 A/V Decoder + 1105 0001 REALmagic X-Card + 8476 EM8476 REALmagic DVD/MPEG-4 A/V Decoder + 127d 0000 CineView II + 8485 EM8485 REALmagic DVD/MPEG-4 A/V Decoder + 8486 EM8486 REALmagic DVD/MPEG-4 A/V Decoder +# Found in Cisco DMP-4305G + c621 EM8621L Digital Media Processor + c622 EM8622L MPEG-4.10 (H.264) and SMPTE 421M (VC-1) A/V Decoder +1106 VIA Technologies, Inc. + 0102 Embedded VIA Ethernet Controller + 0130 VT6305 1394.A Controller + 0198 P4X600 Host Bridge + 0204 K8M800 Host Bridge + 0208 PT890 Host Bridge + 0238 K8T890 Host Bridge + 0258 PT880 Host Bridge + 0259 CN333/CN400/PM880 Host Bridge + 0269 KT880 Host Bridge + 0282 K8T800Pro Host Bridge + 1043 80a3 A8V Deluxe + 0290 K8M890 Host Bridge + 0293 PM896 Host Bridge + 0296 P4M800 Host Bridge + 0305 VT8363/8365 [KT133/KM133] + 1019 0987 K7VZA Mainboard + 1043 8033 A7V Mainboard + 1043 803e A7V-E Mainboard + 1043 8042 A7V133/A7V133-C Mainboard + 147b a401 KT7/KT7-RAID/KT7A/KT7A-RAID Mainboard + 0308 PT880 Ultra/PT894 Host Bridge + 1043 8199 P4V800D-X Mainboard + 1849 0308 Motherboard + 0314 CN700/VN800/P4M800CE/Pro Host Bridge + 0324 CX700/VX700 Host Bridge + 0327 P4M890 Host Bridge + 0336 K8M890CE Host Bridge + 0340 PT900 Host Bridge + 0351 K8T890CF Host Bridge + 0353 VX800/820-Series Chipset Host-Bridge Controller + 0364 CN896/VN896/P4M900 Host Bridge + 1043 81ce P5VD2-VM mothervoard + 0391 VT8371 [KX133] + 0409 VX855/VX875 Host Bridge: Host Control + 0410 VX900 Series Host Bridge: Host Control + 0415 VT6415 PATA IDE Host Controller + 1043 838f Motherboard + 0501 VT8501 [Apollo MVP4] + 0505 VT82C505 +# Shares chip with :0576. The VT82C576M has :1571 instead of :0561. + 0561 VT82C576MV + 0571 VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE + 1019 0985 P6VXA Motherboard + 1019 0a81 L7VTA v1.0 Motherboard (KT400-8235) + 1043 8052 VT8233A Bus Master ATA100/66/33 IDE + 1043 808c A7V8X / A7V333 motherboard + 1043 80a1 A7V8X-X motherboard rev. 1.01 + 1043 80ed A7V600/K8V-X/A8V Deluxe motherboard + 1106 0571 VT82C586/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE + 1179 0001 Magnia Z310 + 1297 f641 FX41 motherboard + 1458 5002 GA-7VAX Mainboard + 1462 5901 KT6 Delta-FIS2R (MS-6590) + 1462 7020 K8T NEO 2 motherboard + 1462 7094 K8T Neo2-F V2.0 + 1462 7120 KT4AV motherboard + 1462 7181 K8MM3-V mainboard + 147b 1407 KV8-MAX3 motherboard +# probably all K7VT2/4*/6 + 1849 0571 K7VT series Motherboards + 0576 VT82C576 3V [Apollo Master] + 0581 CX700/VX700/VX800/820-Series Serial ATA RAID-Controller +# Upgrade bios to get correct ID: 5324 instead of 0581 + 1106 0581 Wrong IDE ID + 0585 VT82C585VP [Apollo VP1/VPX] + 0586 VT82C586/A/B PCI-to-ISA [Apollo VP] + 1106 0000 MVP3 ISA Bridge + 0591 VT8237A SATA 2-Port Controller + 0595 VT82C595 [Apollo VP2] + 0596 VT82C596 ISA [Mobile South] + 1106 0000 VT82C596/A/B PCI to ISA Bridge + 1458 0596 VT82C596/A/B PCI to ISA Bridge + 0597 VT82C597 [Apollo VP3] + 0598 VT82C598 [Apollo MVP3] + 0601 VT8601 [Apollo ProMedia] + 0605 VT8605 [ProSavage PM133] + 103c 1254 D9840-60001 [Brio BA410 Motherboard] + 1043 802c CUV4X mainboard + 0680 VT82C680 [Apollo P6] + 0686 VT82C686 [Apollo Super South] + 1019 0985 P6VXA Motherboard + 103c 1256 D9840-60001 [Brio BA410 Motherboard] + 1043 802c CUV4X mainboard + 1043 8033 A7V Mainboard + 1043 803e A7V-E Mainboard + 1043 8040 A7M266 Mainboard + 1043 8042 A7V133/A7V133-C Mainboard + 1106 0000 VT82C686/A PCI to ISA Bridge + 1106 0686 VT82C686/A PCI to ISA Bridge + 1179 0001 Magnia Z310 + 147b a702 KG7-Lite Mainboard + 0691 VT82C693A/694x [Apollo PRO133x] + 1019 0985 P6VXA Motherboard + 1179 0001 Magnia Z310 + 1458 0691 VT82C691 Apollo Pro System Controller + 0693 VT82C693 [Apollo Pro Plus] + 0698 VT82C693A [Apollo Pro133 AGP] + 0709 VX11 Standard Host Bridge + 070a VX11 PCI Express Root Port + 070b VX11 PCI Express Root Port + 070c VX11 PCI Express Root Port + 070d VX11 PCI Express Root Port + 070e VX11 PCI Express Root Port + 0926 VT82C926 [Amazon] + 1000 VT82C570MV + 1106 VT82C570MV + 1122 VX800/VX820 Chrome 9 HC3 Integrated Graphics + 1204 K8M800 Host Bridge + 1208 PT890 Host Bridge + 1238 K8T890 Host Bridge + 1258 PT880 Host Bridge + 1259 CN333/CN400/PM880 Host Bridge + 1269 KT880 Host Bridge + 1282 K8T800Pro Host Bridge + 1290 K8M890 Host Bridge + 1293 PM896 Host Bridge + 1296 P4M800 Host Bridge + 1308 PT894 Host Bridge + 1314 CN700/VN800/P4M800CE/Pro Host Bridge + 1324 CX700/VX700-Series Error Reporting + 1327 P4M890 Host Bridge + 1336 K8M890CE Host Bridge + 1340 PT900 Host Bridge + 1351 VT3351 Host Bridge + 1353 VX800/VX820 Error Reporting + 1364 CN896/VN896/P4M900 Host Bridge + 1409 VX855/VX875 Error Reporting + 1410 VX900 Series Error Reporting + 1571 VT82C576M/VT82C586 + 1595 VT82C595/97 [Apollo VP2/97] + 1732 VT1732 [Envy24 II] PCI Multi-Channel Audio Controller + 2106 VIA Rhine Family Fast Ethernet Adapter (VT6105) + 2204 K8M800 Host Bridge + 2208 PT890 Host Bridge + 2238 K8T890 Host Bridge + 2258 PT880 Host Bridge + 2259 CN333/CN400/PM880 CPU Host Bridge + 2269 KT880 Host Bridge + 2282 K8T800Pro Host Bridge + 2290 K8M890 Host Bridge + 2293 PM896 Host Bridge + 2296 P4M800 Host Bridge + 2308 PT894 Host Bridge + 2314 CN700/VN800/P4M800CE/Pro Host Bridge + 2324 CX700/VX700-Series Host Interface Control + 2327 P4M890 Host Bridge + 2336 K8M890CE Host Bridge + 2340 PT900 Host Bridge + 2351 VT3351 Host Bridge + 2353 VX800/VX820 Host Bus Control + 2364 CN896/VN896/P4M900 Host Bridge + 2409 VX855/VX875 Host Bus Control + 2410 VX900 Series CPU Bus Controller + 287a VT8251 PCI to PCI Bridge + 287b VT8251 Host Bridge + 287c VT8251 PCIE Root Port + 287d VT8251 PCIE Root Port + 287e VT8237/8251 Ultra VLINK Controller + 3022 CLE266 + 3038 VT82xx/62xx/VX700/8x0/900 UHCI USB 1.1 Controller + 0925 1234 onboard UHCI USB 1.1 Controller + 1019 0985 P6VXA Motherboard + 1019 0a81 L7VTA v1.0 Motherboard (KT400-8235) + 1043 8080 A7V333 motherboard + 1043 808c VT62xx USB1.1 4 port controller + 1043 80a1 A7V8X-X motherboard + 1043 80ed A7V600/K8V-X/A8V Deluxe motherboard + 1106 3038 USB 1.1 UHCI controller + 1179 0001 Magnia Z310 + 1234 0925 MVP3 USB Controller + 1458 5004 GA-7VAX Mainboard + 1462 5901 KT6 Delta-FIS2R (MS-6590) + 1462 7020 K8T NEO 2 motherboard + 1462 7094 K8T Neo2-F V2.0 + 1462 7120 KT4AV motherboard + 1462 7181 K8MM3-V mainboard + 147b 1407 KV8-MAX3 motherboard + 182d 201d CN-029 USB2.0 4 port PCI Card +# probably all K7VT2/4*/6 + 1849 3038 K7VT series Motherboards + 19da a179 ZBOX nano VD01 + 1af4 1100 QEMU Virtual Machine + 3040 VT82C586B ACPI + 3043 VT86C100A [Rhine] + 10bd 0000 VT86C100A Fast Ethernet Adapter + 1106 0100 VT86C100A Fast Ethernet Adapter + 1186 1400 DFE-530TX PCI Fast Ethernet Adapter (rev. A) + 3044 VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller + 0010 0001 IEEE 1394 4port DCST 1394-3+1B + 1025 005a TravelMate 290 + 103c 2a20 Pavilion t3030.de Desktop PC + 103c 2a3b Media Center PC m7590n + 1043 808a A8V/A8N/P4P800/P5SD2 series motherboard + 1043 81fe Motherboard + 1458 1000 GA-7VT600-1394 Motherboard + 1462 207d K8NGM2 series motherboard + 1462 217d Aspire L250 + 1462 590d KT6 Delta-FIS2R (MS-6590) + 1462 702d K8T NEO 2 motherboard + 1462 971d MS-6917 + 153b 1146 Cameo DV Firewire controller + 3050 VT82C596 Power Management + 3051 VT82C596 Power Management + 3053 VT6105M [Rhine-III] + 1186 1404 DFE-530TX PCI Fast Ethernet Adapter (rev. D) + 3057 VT82C686 [Apollo Super ACPI] + 1019 0985 P6VXA Motherboard + 1019 0987 K7VZA Motherboard + 1043 8033 A7V Mainboard + 1043 803e A7V-E Mainboard + 1043 8040 A7M266 Mainboard + 1043 8042 A7V133/A7V133-C Mainboard + 1179 0001 Magnia Z310 + 3058 VT82C686 AC97 Audio Controller + 0e11 0097 SoundMax Digital Integrated Audio + 0e11 b194 Soundmax integrated digital audio + 1019 0985 P6VXA Motherboard + 1019 0987 K7VZA Motherboard + 103c 1251 D9840-60001 [Brio BA410 Motherboard] + 1043 1106 A7V133/A7V133-C Mainboard + 1106 4511 Onboard Audio on EP7KXA + 1106 aa03 VT1612A AC'97 Audio Controller + 11d4 5348 AD1881A audio + 1458 7600 Onboard Audio + 1462 3091 MS-6309 Onboard Audio + 1462 3092 MS-6309 v2.x Mainboard (VIA VT1611A codec) + 1462 3300 MS-6330 Onboard Audio + 1462 3400 MS-6340 (VT8363) motherboard + 15dd 7609 Onboard Audio + 3059 VT8233/A/8235/8237 AC97 Audio Controller + 1019 0a81 L7VTA v1.0 Motherboard (KT400-8235) + 1019 1841 M811 (VT8367/VT8235/VT6103) [KT333] motherboard + 1019 1877 K8M800-M2 (V2.0) onboard audio + 1043 8095 A7V8X Motherboard (Realtek ALC650 codec) + 1043 80a1 A7V8X-X Motherboard + 1043 80b0 A7V600/K8V-X/K8V Deluxe motherboard (ADI AD1980 codec [SoundMAX]) + 1043 80f3 SK8V motherboard + 1043 810d P5VD1-X (AD1888 codec [SoundMax]) + 1043 812a A8V Deluxe motherboard (Realtek ALC850 codec) + 10ec 8168 High Definition Audio + 1106 3059 L7VMM2 Motherboard + 1106 4161 K7VT2 motherboard + 1106 4170 PCPartner P4M800-8237R Motherboard + 1106 4552 Soyo KT-600 Dragon Plus (Realtek ALC 650) + 1297 c160 FX41 motherboard (Realtek ALC650 codec) + 1413 147b KV8 Pro motherboard onboard audio + 1458 a002 GA-7VAX Onboard Audio (Realtek ALC650) + 1462 0080 K8T NEO 2 motherboard + 1462 3800 KT266 onboard audio + 1462 5901 KT6 Delta-FIS2R (MS-6590) + 1462 7181 K8MM3-V mainboard + 147b 1407 KV8-MAX3 motherboard + 1695 300c Realtek ALC655 audio on EP-8KRA series mainboard + 16f3 4170 J7F2 motherboard + 1734 1078 Amilo L7300T notebook + 1849 0850 ASRock 775Dual-880 Pro onboard audio (Realtek ALC850) + 1849 9739 P4VT8 Mainboard (C-Media CMI9739A codec) +# probably all K7VT2/4*/6 + 1849 9761 K7VT series Motherboards + 4005 4710 MSI K7T266 Pro2-RU (MSI-6380 v2) onboard audio (Realtek/ALC 200/200P) + a0a0 01b6 AK77-8XN onboard audio + a0a0 0342 AK86-L motherboard + 3065 VT6102/VT6103 [Rhine-II] + 1043 80a1 A7V8X-X Motherboard + 1043 80ed A7V600-X Motherboard + 1106 0102 VT6102/6103 [Rhine II] Ethernet Controller + 1186 1400 DFE-530TX PCI Fast Ethernet Adapter (rev. A) + 1186 1401 DFE-530TX PCI Fast Ethernet Adapter (rev. B) + 1186 1402 DFE-530TX PCI Fast Ethernet Adapter (rev. B) + 13b9 1421 LD-10/100AL PCI Fast Ethernet Adapter (rev.B) + 1462 7061 MS-7061 + 1462 7181 K8MM3-V mainboard + 147b 1c09 NV7 Motherboard + 1695 3005 VT6103 +# probably all K7VT2/4*/6 + 1849 3065 K7VT series Motherboards +# This hosts more than just the Intel 537 codec, it also hosts PCtel (SIL33) and SmartLink (SIL34) codecs + 3068 AC'97 Modem Controller + 1462 309e MS-6309 Saturn Motherboard + 3074 VT8233 PCI to ISA Bridge + 1043 8052 VT8233A + 3091 VT8633 [Apollo Pro266] + 3099 VT8366/A/7 [Apollo KT266/A/333] + 1019 1841 M811 (VT8367/VT8235/VT6103) [KT333] motherboard + 1043 8064 A7V266-E Mainboard + 1043 807f A7V333 Mainboard + 1849 3099 K7VT2 motherboard + 3101 VT8653 Host Bridge + 3102 VT8662 Host Bridge + 3103 VT8615 Host Bridge + 3104 USB 2.0 EHCI-Compliant Host-Controller + 0925 1234 onboard EHCI USB 2.0 Controller + 1019 0a81 L7VTA v1.0 Motherboard (KT400-8235) + 1043 808c A7V8X motherboard + 1043 80a1 A7V8X-X motherboard rev 1.01 + 1043 80ed A7V600/K8V-X/A8V Deluxe motherboard + 1106 3104 USB 2.0 EHCI controller + 1297 f641 FX41 motherboard + 1458 5004 GA-7VAX Mainboard + 1462 5901 KT6 Delta-FIS2R (MS-6590) + 1462 7020 K8T NEO 2 motherboard + 1462 7094 K8T Neo2-F V2.0 + 1462 7120 KT4AV motherboard + 1462 7181 K8MM3-V mainboard + 147b 1407 KV8-MAX3 motherboard + 182d 201d CN-029 USB 2.0 4 port PCI Card +# probably all K7VT2/4*/6 + 1849 3104 K7VT series Motherboards + 19da a179 ZBOX nano VD01 + 3106 VT6105/VT6106S [Rhine-III] + 1106 0105 VT6106S [Rhine-III] + 1186 1403 DFE-530TX PCI Fast Ethernet Adapter (rev. C) + 1186 1405 DFE-520TX Fast Ethernet PCI Adapter + 1186 1406 DFE-530TX+ rev F2 + 1186 1407 DFE-538TX + 3108 K8M800/K8N800/K8N800A [S3 UniChrome Pro] + 3109 VT8233C PCI to ISA Bridge + 3112 VT8361 [KLE133] Host Bridge + 3113 VPX/VPX2 PCI to PCI Bridge Controller + 3116 VT8375 [KM266/KL266] Host Bridge + 1297 f641 FX41 motherboard + 3118 CN400/PM800/PM880/PN800/PN880 [S3 UniChrome Pro] + 3119 VT6120/VT6121/VT6122 Gigabit Ethernet Adapter + 3122 VT8623 [Apollo CLE266] integrated CastleRock graphics + 3123 VT8623 [Apollo CLE266] + 3128 VT8753 [P4X266 AGP] + 3133 VT3133 Host Bridge + 3142 VT6651 WiFi Adapter, 802.11b + 3147 VT8233A ISA Bridge + 1043 808c A7V333 motherboard + 3148 P4M266 Host Bridge + 3149 VIA VT6420 SATA RAID Controller + 1043 80ed A7V600/K8V Deluxe/K8V-X/A8V Deluxe motherboard + 1458 b003 GA-7VM400AM(F) Motherboard + 1462 5901 KT6 Delta-FIS2R (MS-6590) + 1462 7020 K8T Neo 2 Motherboard + 1462 7094 K8T Neo2-F V2.0 + 1462 7181 K8MM3-V mainboard + 147b 1407 KV8-MAX3 motherboard + 147b 1408 KV7 + 1849 3149 K7VT6 motherboard + a0a0 04ad AK86-L motherboard + 3156 P/KN266 Host Bridge + 3157 CX700/VX700 [S3 UniChrome Pro] + 3164 VT6410 ATA133 RAID controller + 1043 80f4 P4P800 Mainboard Deluxe ATX + 1462 7028 915P/G Neo2 + 3168 P4X333/P4X400/PT800 AGP Bridge + 1849 3168 P4VT8 Mainboard + 3177 VT8235 ISA Bridge + 1019 0a81 L7VTA v1.0 Motherboard (KT400-8235) + 1019 1841 M811 (VT8367/VT8235/VT6103) [KT333] motherboard + 1043 808c A7V8X motherboard + 1043 80a1 A7V8X-X motherboard + 1106 0000 KT4AV motherboard + 1297 f641 FX41 motherboard + 1458 5001 GA-7VAX Mainboard +# probably all K7VT2/4*/6 + 1849 3177 K7VT series Motherboards + 3178 ProSavageDDR P4N333 Host Bridge + 3188 VT8385 [K8T800 AGP] Host Bridge + 1043 80a3 K8V Deluxe/K8V-X motherboard + 147b 1407 KV8-MAX3 motherboard + 3189 VT8377 [KT400/KT600 AGP] Host Bridge + 1043 807f A7V8X motherboard + 1106 0000 KT4AV motherboard (KT400A) + 1458 5000 GA-7VAX Mainboard +# probably all K7VT2/4*/6 + 1849 3189 K7VT series Motherboards + 31b0 VX11 Standard Host Bridge + 31b1 VX11 Standard Host Bridge + 31b2 VX11 DRAM Controller + 31b3 VX11 Power Management Controller + 31b4 VX11 I/O APIC + 31b5 VX11 Scratch Device + 31b7 VX11 Standard Host Bridge + 31b8 VX11 PCI to PCI Bridge + 3204 K8M800 Host Bridge + 3205 VT8378 [KM400/A] Chipset Host Bridge + 1458 5000 GA-7VM400M Motherboard + 3208 PT890 Host Bridge + 3213 VPX/VPX2 PCI to PCI Bridge Controller + 3218 K8T800M Host Bridge + 3227 VT8237 ISA bridge [KT600/K8T800/K8T890/CN700 South] + 1043 80ed A7V600/K8V-X/A8V Deluxe motherboard + 1106 3227 VT8237 ISA bridge + 1458 5001 GA-7VT600 Motherboard + 147b 1407 KV8-MAX3 motherboard + 1849 3227 K7VT4 motherboard + 3230 K8M890CE/K8N890CE [Chrome 9] + 3238 K8T890 Host Bridge + 3249 VT6421 IDE/SATA Controller + 1106 3249 VT6421 IDE/SATA Controller + 324a CX700/VX700 PCI to PCI Bridge + 324b CX700/VX700 Host Bridge + 324e CX700/VX700 Internal Module Bus + 3253 VT6655 WiFi Adapter, 802.11a/b/g + 3258 PT880 Host Bridge + 3259 CN333/CN400/PM880 Host Bridge + 3260 VIA Chrome9 HC IGP + 3269 KT880 Host Bridge + 3282 K8T800Pro Host Bridge + 3287 VT8251 PCI to ISA Bridge + 3288 VX900/VT8xxx High Definition Audio Controller + 19da a179 ZBOX VD01 + 3290 K8M890 Host Bridge + 3296 P4M800 Host Bridge + 3324 CX700/VX700-Series DRAM Bus Control + 3327 P4M890 Host Bridge + 3336 K8M890CE Host Bridge + 3337 VT8237A PCI to ISA Bridge + 3340 PT900 Host Bridge + 3343 P4M890 [S3 UniChrome Pro] + 3344 CN700/P4M800 Pro/P4M800 CE/VN800 Graphics [S3 UniChrome Pro] + 3349 VT8251 AHCI/SATA 4-Port Controller + 3351 VT3351 Host Bridge + 3353 VX800/820 PCI to PCI Bridge + 3364 CN896/VN896/P4M900 Host Bridge + 3365 VT630x IEEE 1394 Host Controller [Fire II/M] + 3371 CN896/VN896/P4M900 [Chrome 9 HC] + 3372 VT8237S PCI to ISA Bridge + 337a VT8237A PCI to PCI Bridge + 337b VT8237A Host Bridge + 3403 VT6315 Series Firewire Controller + 1043 8374 M5A88-V EVO + 1043 8384 P8P67 Deluxe Motherboard + 3409 VX855/VX875 DRAM Bus Control + 3410 VX900 Series DRAM Bus Control + 19da a179 ZBOX nano VD01 + 3432 VL800/801 xHCI USB 3.0 Controller + 3456 VX11 Standard Host Bridge + 345b VX11 Miscellaneous Bus + 3483 VL805/806 xHCI USB 3.0 Controller + 3a01 VX11 Graphics [Chrome 645/640] + 4149 VIA VT6420 (ATA133) Controller + 4204 K8M800 Host Bridge + 4208 PT890 Host Bridge + 4238 K8T890 Host Bridge + 4258 PT880 Host Bridge + 4259 CN333/CN400/PM880 Host Bridge + 4269 KT880 Host Bridge + 4282 K8T800Pro Host Bridge + 4290 K8M890 Host Bridge + 4293 PM896 Host Bridge + 4296 P4M800 Host Bridge + 4308 PT894 Host Bridge + 4314 CN700/VN800/P4M800CE/Pro Host Bridge + 4324 CX700/VX700-Series Power Management and Testing Control + 4327 P4M890 Host Bridge + 4336 K8M890CE Host Bridge + 4340 PT900 Host Bridge + 4351 VT3351 Host Bridge + 4353 VX800/VX820 Power Management Control + 4364 CN896/VN896/P4M900 Host Bridge + 4409 VX855/VX875 Power Management Control + 4410 VX900 Series Power Management and Chip Testing Control + 19da a179 ZBOX nano VD01 + 5030 VT82C596 ACPI [Apollo PRO] + 5122 VX855/VX875 Chrome 9 HCM Integrated Graphics + 5208 PT890 I/O APIC Interrupt Controller + 5238 K8T890 I/O APIC Interrupt Controller + 5287 VT8251 Serial ATA Controller + 5290 K8M890 I/O APIC Interrupt Controller + 5308 PT894 I/O APIC Interrupt Controller + 5324 CX700M2/VX700/VX800/820-Series Serial ATA & EIDE-Controller + 5327 P4M890 I/O APIC Interrupt Controller + 5336 K8M890CE I/O APIC Interrupt Controller + 5340 PT900 I/O APIC Interrupt Controller + 5351 VT3351 I/O APIC Interrupt Controller + 5353 VX800/VX820 APIC and Central Traffic Control + 5364 CN896/VN896/P4M900 I/O APIC Interrupt Controller + 5372 VT8237/8251 Serial ATA Controller + 5409 VX855/VX875 APIC and Central Traffic Control + 5410 VX900 Series APIC and Central Traffic Control + 6100 VT85C100A [Rhine II] + 6122 VN1000 Graphics [Chrome 520 IGP] + 6287 SATA RAID Controller + 6290 K8M890CE Host Bridge + 6327 P4M890 Security Device + 6353 VX800/VX820 Scratch Registers + 6364 CN896/VN896/P4M900 Security Device + 6409 VX855/VX875 Scratch Registers + 6410 VX900 Series Scratch Registers + 19da a179 ZBOX nano VD01 + 7122 VX900 Graphics [Chrome9 HD] + 7204 K8M800 Host Bridge + 7205 KM400/KN400/P4M800 [S3 UniChrome] + 1458 d000 Gigabyte GA-7VM400(A)M(F) Motherboard + 1462 7061 MS-7061 + 7208 PT890 Host Bridge + 7238 K8T890 Host Bridge + 7258 PT880 Host Bridge + 7259 CN333/CN400/PM880 Host Bridge + 7269 KT880 Host Bridge + 7282 K8T800Pro Host Bridge + 7290 K8M890 Host Bridge + 7293 PM896 Host Bridge + 7296 P4M800 Host Bridge + 7308 PT894 Host Bridge + 7314 CN700/VN800/P4M800CE/Pro Host Bridge + 7324 CX700/VX700-Series North-South Module Interface Control + 7327 P4M890 Host Bridge + 7336 K8M890CE Host Bridge + 7340 PT900 Host Bridge + 7351 VT3351 Host Bridge + 7353 VX800/VX820 North-South Module Interface Control + 7364 CN896/VN896/P4M900 Host Bridge + 7409 VX855/VX875 North-South Module Interface Control + 7410 VX900 Series North-South Module Interface Control + 19da a179 ZBOX nano VD01 + 8231 VT8231 [PCI-to-ISA Bridge] + 8235 VT8235 ACPI + 8305 VT8363/8365 [KT133/KM133 AGP] + 8324 CX700/VX700-Series Bus Control and Power Management + 8353 VX800/VX820 Bus Control and Power Management + 8391 VT8371 [KX133 AGP] + 8400 MVP4 + 8409 VX855/VX875 Bus Control and Power Management + 8410 VX900 Series Bus Control and Power Management + 19da a179 ZBOX VD01 + 8500 KLE133/PLE133/PLE133T + 8501 VT8501 [Apollo MVP4 AGP] + 8596 VT82C596 [Apollo PRO AGP] + 8597 VT82C597 [Apollo VP3 AGP] + 8598 VT82C598/694x [Apollo MVP3/Pro133x AGP] + 1019 0985 P6VXA Motherboard + 8601 VT8601 [Apollo ProMedia AGP] + 8605 VT8605 [PM133 AGP] + 8691 VT82C691 [Apollo Pro] + 8693 VT82C693 [Apollo Pro Plus] PCI Bridge + 8a25 PL133/PL133T [S3 ProSavage] + 8a26 KL133/KL133A/KM133/KM133A [S3 ProSavage] + 8d01 PN133/PN133T [S3 Twister] + 8d04 KM266/P4M266/P4M266A/P4N266 [S3 ProSavageDDR] + 9001 VX900 Series Serial-ATA Controller + 9082 Standard AHCI 1.0 SATA Controller + 9140 HDMI Audio Device + 9201 USB3.0 Controller + 9380 Ncore Coprocessor for Centaur CNS + 9530 VX800/820/900 Series Secure Digital Memory Card Controller + 95d0 VX800/820/900 Series SDIO Host Controller + a208 PT890 PCI to PCI Bridge Controller + a238 K8T890 PCI to PCI Bridge Controller + a327 P4M890 PCI to PCI Bridge Controller + a353 VX8xx/900 Series South-North Module Interface Control + a364 CN896/VN896/P4M900 PCI to PCI Bridge Controller + a409 VX855/VX875/VX900 Series USB Device Controller + a410 VX900 Series PCI Express Root Port 0 + b091 VT8633 [Apollo Pro266 AGP] + b099 VT8366/A/7 [Apollo KT266/A/333 AGP] + b101 VT8653 AGP Bridge + b102 VT8362 AGP Bridge + b103 VT8615 AGP Bridge + b112 VT8361 [KLE133] AGP Bridge + b113 VPX/VPX2 I/O APIC Interrupt Controller + b115 VT8363/8365 [KT133/KM133] PCI Bridge + b168 VT8235 PCI Bridge + b188 VT8237/8251 PCI bridge [K8M890/K8T800/K8T890 South] + 147b 1407 KV8-MAX3 motherboard + b198 VT8237/CX700/VX700-Series PCI to PCI Bridge + b213 VPX/VPX2 I/O APIC Interrupt Controller + b353 VX855/VX875/VX900 PCI to PCI Bridge + b410 VX900 Series PCI Express Root Port 1 + b999 [K8T890 North / VT8237 South] PCI Bridge + c208 PT890 PCI to PCI Bridge Controller + c238 K8T890 PCI to PCI Bridge Controller + c327 P4M890 PCI to PCI Bridge Controller + c340 PT900 PCI to PCI Bridge Controller + c353 VX800/820-Series PCI-Express Root (PCI-to-PCI Virtual Bridge) + c364 CN896/VN896/P4M900 PCI to PCI Bridge Controller + c409 VX855/VX875 EIDE Controller + c410 VX900 Series PCI Express Root Port 2 + d104 VT8237R USB UDCI Controller + d208 PT890 PCI to PCI Bridge Controller + d213 VPX/VPX2 PCI to PCI Bridge Controller + d238 K8T890 PCI to PCI Bridge Controller + d340 PT900 PCI to PCI Bridge Controller + d410 VX900 Series PCI Express Root Port 3 + e208 PT890 PCI to PCI Bridge Controller + e238 K8T890 PCI to PCI Bridge Controller + e340 PT900 PCI to PCI Bridge Controller + e353 VX800/820-Series PCI-Express Root Port 0 + e410 VX900 Series PCI Express Physical Layer Electrical Sub-block + f208 PT890 PCI to PCI Bridge Controller + f238 K8T890 PCI to PCI Bridge Controller + f340 PT900 PCI to PCI Bridge Controller + f353 VX800/820-Series PCI-Express Root Port 1 + f410 VX900 Series PCI UART Port 0-3 +1107 Stratus Computers + 0576 VIA VT82C570MV [Apollo] (Wrong vendor ID!) +1108 Proteon, Inc. + 0100 p1690plus_AA + 0101 p1690plus_AB + 0105 P1690Plus + 0108 P1690Plus + 0138 P1690Plus + 0139 P1690Plus + 013c P1690Plus + 013d P1690Plus +1109 Cogent Data Technologies, Inc. + 1400 EM110TX [EX110TX] +110a Siemens AG + 0002 Pirahna 2-port + 0005 Tulip controller, power management, switch extender + 0006 FSC PINC (I/O-APIC) + 0015 FSC Multiprocessor Interrupt Controller + 001d FSC Copernicus Management Controller + 007b FSC Remote Service Controller, mailbox device + 007c FSC Remote Service Controller, shared memory device + 007d FSC Remote Service Controller, SMIC device + 2101 HST SAPHIR V Primary PCI (ISDN/PMx) +# Superfastcom-PCI (Commtech, Inc.) or DSCC4 WAN Adapter + 2102 DSCC4 PEB/PEF 20534 DMA Supported Serial Communication Controller with 4 Channels + 2104 Eicon Diva 2.02 compatible passive ISDN card +# S30807-Q5474 + 3101 HiPath 4000 PCI card + 3141 SIMATIC NET CP 5611 / 5621 + 3142 SIMATIC NET CP 5613 / 5614 + 3143 SIMATIC NET CP 1613 + 4021 SIMATIC NET CP 5512 (Profibus and MPI Cardbus Adapter) + 4029 SIMATIC NET CP 5613 A2 + 110a 4029 SIMATIC NET CP 5613 A2 + 110a c029 SIMATIC NET CP 5614 A2 + 4035 SIMATIC NET CP 1613 A2 + 4036 SIMATIC NET CP 1616 + 4038 SIMATIC NET CP 1604 + 4069 SIMATIC NET CP 5623 + 110a 4069 SIMATIC NET CP 5623 + 110a c069 SIMATIC NET CP 5624 + 407c SIMATIC NET CP 5612 + 407d SIMATIC NET CP 5613 A3 + 407e SIMATIC NET CP 5622 + 4083 SIMATIC NET CP 5614 A3 + 4084 SIMATIC NET CP 1626 + 4942 FPGA I-Bus Tracer for MBD + 6120 SZB6120 +110b Chromatic Research Inc. + 0001 Mpact Media Processor + 0004 Mpact 2 +110c Mini-Max Technology, Inc. +110d Znyx Advanced Systems +110e CPU Technology +110f Ross Technology +1110 Powerhouse Systems + 6037 Firepower Powerized SMP I/O ASIC + 6073 Firepower Powerized SMP I/O ASIC +1111 Santa Cruz Operation +# Also claimed to be RNS or Rockwell International, current PCISIG records list Osicom +1112 Osicom Technologies Inc + 2200 FDDI Adapter + 2300 Fast Ethernet Adapter + 2340 4 Port Fast Ethernet Adapter + 2400 ATM Adapter +1113 Accton Technology Corporation + 1211 SMC2-1211TX + 103c 1207 EN-1207D Fast Ethernet Adapter + 1113 1211 EN-1207D Fast Ethernet Adapter + 1216 EN-1216 Ethernet Adapter + 1113 1216 EN1207F series PCI Fast Ethernet Adapter + 1113 2220 EN2220A Cardbus Fast Ethernet Adapter + 1113 2242 EN2242 10/100 Ethernet Mini-PCI Card + 111a 1020 SpeedStream 1020 PCI 10/100 Ethernet Adaptor [EN-1207F-TX ?] + 1217 EN-1217 Ethernet Adapter + 5105 10Mbps Network card + 9211 EN-1207D Fast Ethernet Adapter + 1113 9211 EN-1207D Fast Ethernet Adapter + 9511 21x4x DEC-Tulip compatible Fast Ethernet + d301 CPWNA100 (Philips wireless PCMCIA) + ec02 SMC 1244TX v3 + ee23 SMCWPCIT-G 108Mbps Wireless PCI adapter +1114 Atmel Corporation + 0506 at76c506 802.11b Wireless Network Adaptor +1115 3D Labs +1116 Data Translation + 0022 DT3001 + 0023 DT3002 + 0024 DT3003 + 0025 DT3004 + 0026 DT3005 + 0027 DT3001-PGL + 0028 DT3003-PGL + 0051 DT322 + 0060 DT340 + 0069 DT332 + 80c2 DT3162 +1117 Datacube, Inc + 9500 Max-1C SVGA card + 9501 Max-1C image processing +1118 Berg Electronics +1119 ICP Vortex Computersysteme GmbH + 0000 GDT 6000/6020/6050 + 0001 GDT 6000B/6010 + 0002 GDT 6110/6510 + 0003 GDT 6120/6520 + 0004 GDT 6530 + 0005 GDT 6550 + 0006 GDT 6117/6517 + 0007 GDT 6127/6527 + 0008 GDT 6537 + 0009 GDT 6557/6557-ECC + 000a GDT 6115/6515 + 000b GDT 6125/6525 + 000c GDT 6535 + 000d GDT 6555/6555-ECC + 0100 GDT 6117RP/6517RP + 0101 GDT 6127RP/6527RP + 0102 GDT 6537RP + 0103 GDT 6557RP + 0104 GDT 6111RP/6511RP + 0105 GDT 6121RP/6521RP + 0110 GDT 6117RD/6517RD + 0111 GDT 6127RD/6527RD + 0112 GDT 6537RD + 0113 GDT 6557RD + 0114 GDT 6111RD/6511RD + 0115 GDT 6121RD/6521RD + 0118 GDT 6118RD/6518RD/6618RD + 0119 GDT 6128RD/6528RD/6628RD + 011a GDT 6538RD/6638RD + 011b GDT 6558RD/6658RD + 0120 GDT 6117RP2/6517RP2 + 0121 GDT 6127RP2/6527RP2 + 0122 GDT 6537RP2 + 0123 GDT 6557RP2 + 0124 GDT 6111RP2/6511RP2 + 0125 GDT 6121RP2/6521RP2 + 0136 GDT 6113RS/6513RS + 0137 GDT 6123RS/6523RS + 0138 GDT 6118RS/6518RS/6618RS + 0139 GDT 6128RS/6528RS/6628RS + 013a GDT 6538RS/6638RS + 013b GDT 6558RS/6658RS + 013c GDT 6533RS/6633RS + 013d GDT 6543RS/6643RS + 013e GDT 6553RS/6653RS + 013f GDT 6563RS/6663RS + 0166 GDT 7113RN/7513RN/7613RN + 0167 GDT 7123RN/7523RN/7623RN + 0168 GDT 7118RN/7518RN/7518RN + 0169 GDT 7128RN/7528RN/7628RN + 016a GDT 7538RN/7638RN + 016b GDT 7558RN/7658RN + 016c GDT 7533RN/7633RN + 016d GDT 7543RN/7643RN + 016e GDT 7553RN/7653RN + 016f GDT 7563RN/7663RN + 01d6 GDT 4x13RZ + 01d7 GDT 4x23RZ + 01f6 GDT 8x13RZ + 01f7 GDT 8x23RZ + 01fc GDT 8x33RZ + 01fd GDT 8x43RZ + 01fe GDT 8x53RZ + 01ff GDT 8x63RZ + 0210 GDT 6519RD/6619RD + 0211 GDT 6529RD/6629RD + 0260 GDT 7519RN/7619RN + 0261 GDT 7529RN/7629RN + 02ff GDT MAXRP + 0300 GDT NEWRX + 0301 GDT NEWRX2 +111a Efficient Networks, Inc + 0000 155P-MF1 (FPGA) + 0002 155P-MF1 (ASIC) + 0003 ENI-25P ATM + 111a 0000 ENI-25p Miniport ATM Adapter + 0005 SpeedStream (LANAI) + 111a 0001 ENI-3010 ATM + 111a 0009 ENI-3060 ADSL (VPI=0) + 111a 0101 ENI-3010 ATM + 111a 0109 ENI-3060CO ADSL (VPI=0) + 111a 0809 ENI-3060 ADSL (VPI=0 or 8) + 111a 0909 ENI-3060CO ADSL (VPI=0 or 8) + 111a 0a09 ENI-3060 ADSL (VPI=<0..15>) + 0007 SpeedStream ADSL + 111a 1001 ENI-3061 ADSL [ASIC] + 1020 SpeedStream PCI 10/100 Network Card + 1203 SpeedStream 1023 Wireless PCI Adapter +111b Teledyne Electronic Systems +111c Tricord Systems Inc. + 0001 Powerbis Bridge +# now owned by Microchip Technology +111d Microsemi / PMC / IDT + 0001 IDT77201/77211 155Mbps ATM SAR Controller [NICStAR] + 0003 IDT77222/77252 155Mbps ATM MICRO ABR SAR Controller + 0004 IDT77V252 155Mbps ATM MICRO ABR SAR Controller + 0005 IDT77V222 155Mbps ATM MICRO ABR SAR Controller + 8018 PES12N3A 12-lane 3-Port PCI Express Switch + 801c PES24N3A PCI Express Switch + 8028 PES4T4 PCI Express Switch + 802b PES8T5A PCI Express Switch + 802c PES16T4 PCI Express Switch + 802d PES16T7 PCI Express Switch + 802e PES24T6 PCI Express Switch + 802f PES32T8 PCI Express Switch + 8032 PES48T12 PCI Express Switch + 8034 PES16/22/34H16 PCI Express Switch + 8035 PES32H8 PCI Express Switch + 8036 PES48H12 PCI Express Switch + 8037 PES64H16 PCI Express Switch + 8039 PES3T3 PCI Express Switch + 803a PES4T4 PCI Express Switch + 803c PES5T5 PCI Express Switch + 803d PES6T5 PCI Express Switch + 8048 PES8NT2 PCI Express Switch + 8049 PES8NT2 PCI Express Switch + 804a PES8NT2 PCI Express Internal NTB + 804b PES8NT2 PCI Express External NTB + 804c PES16NT2 PCI Express Switch + 804d PES16NT2 PCI Express Switch + 804e PES16NT2 PCI Express Internal NTB + 804f PES16NT2 PCI Express External NTB + 8058 PES12NT3 PCI Express Switch + 8059 PES12NT3 PCI Express Switch + 805a PES12NT3 PCI Express Internal NTB + 805b PES12NT3 PCI Express External NTB + 805c PES24NT3 PCI Express Switch + 805d PES24NT3 PCI Express Switch + 805e PES24NT3 PCI Express Internal NTB + 805f PES24NT3 PCI Express External NTB + 8060 PES16T4G2 PCI Express Gen2 Switch + 8061 PES12T3G2 PCI Express Gen2 Switch + 8068 PES6T6G2 PCI Express Gen2 Switch + 806a PES24T3G2 PCI Express Gen2 Switch + 14c1 000c 10G-PCIE2-8B2 + 806c PES16T4A/4T4G2 PCI Express Gen2 Switch + 806e PES24T6G2 PCI Express Gen2 Switch + 806f HIO524G2 PCI Express Gen2 Switch + 8077 89HPES64H16G2 64-Lane 16-Port PCIe Gen2 System Interconnect Switch + 8088 PES32NT8BG2 PCI Express Switch + 1093 752f PXIe-8383mc Device + 1093 7543 PXIe-8383mc System Host + 1093 755c PXIe-8364 + 1093 755d PXIe-8374 + 1093 75ff PXIe-8383mc DMA + 1093 7600 PXIe-8383mc DMA + 1093 7602 PXIe-8384 +# 32-lanes 24-ports Gen.2 + 808a 89HPES32NT24BG2 PCI Express Switch +# 32-lanes 24-ports Gen.2 + 808c 89HPES32NT24AG2 PCI Express Switch + 808e PES24NT24G2 PCI Express Switch + 808f 89HPES32NT8AG2 32-Lane 8-Port PCIe Gen2 System Interconnect Switch with Non-Transparent Bridging + 8090 89HPES16NT16G2 16-Lane 16-Port PCIe Gen2 System Interconnect Switch + 8092 89HPES12NT12G2 12-Lane 12-Port PCIe Gen2 System Interconnect Switch + 80cf F32P08xG3 [PCIe boot mode] + 80d2 F32P08xG3 NVMe controller +111e Eldec +111f Precision Digital Images + 4a47 Precision MX Video engine interface + 5243 Frame capture bus interface +# formerly EMC Corporation +1120 Dell EMC + 2306 Unity Fibre Channel Controller + 2501 Unity Ethernet Controller + 2505 Unity Fibre Channel Controller +1121 Zilog +1122 Multi-tech Systems, Inc. +1123 Excellent Design, Inc. +1124 Leutron Vision AG + 2581 Picport Monochrome +1125 Eurocore +1126 Vigra +1127 FORE Systems Inc + 0200 ForeRunner PCA-200 ATM + 0210 PCA-200PC + 0250 ATM + 0300 ForeRunner PCA-200EPC ATM + 0310 ATM + 0400 ForeRunnerHE ATM Adapter + 1127 0400 ForeRunnerHE ATM +1129 Firmworks +112a Hermes Electronics Company, Ltd. +# nee Linotype - Hell AG +112b Heidelberger Druckmaschinen AG + 0001 SCU5 +112c Zenith Data Systems +112d Ravicad +112e Infomedia Microelectronics Inc. +112f Dalsa Inc. + 0000 MVC IC-PCI + 0001 MVC IM-PCI Video frame grabber/processor + 0004 PCDig Digital Image Capture + 0008 PC-CamLink PCI framegrabber +1130 Computervision +1131 Philips Semiconductors + 1561 USB 1.1 Host Controller + 1775 c200 C2K onboard USB 1.1 host controller + 1562 USB 2.0 Host Controller + 1775 c200 C2K onboard USB 2.0 host controller + 3400 SmartPCI56(UCB1500) 56K Modem + 5400 TriMedia TM1000/1100 + 12ca 0000 BlueICE + 5402 TriMedia TM1300 + 1244 0f00 Fritz!Card DSL + 15eb 1300 DT1300 + 15eb 1302 DT1302 + 15eb 1304 DT1304 + 15eb 1305 DT1305 + 15eb 1306 PMCDT1306 + 15eb 1308 DT1308 + 15eb 1331 DT1301 with SAA7121 + 15eb 1337 DT1301 with SAA7127 + 15eb 2d3d X3D + 15eb 7022 PTM1300 + 5405 TriMedia TM1500 + 1136 0005 LCP-1500 + 5406 TriMedia TM1700 + 540b PNX1005 Media Processor + 1131 0020 PNXLite PCI Demo Board + 7130 SAA7130 Video Broadcast Decoder + 0000 4016 Behold TV 401 + 0000 4051 Behold TV 405 FM + 0000 5051 Behold TV 505 RDS + 0000 505b Behold TV 505 RDS + 102b 48d0 Matrox CronosPlus + 1048 226b ELSA EX-VISION 300TV + 107d 6655 WinFast DTV1000S + 1131 0000 SAA7130-based TV tuner card + 1131 2001 10MOONS PCI TV CAPTURE CARD + 1131 2005 Techcom (India) TV Tuner Card (SSD-TV-670) + 1458 9006 GT-PS700 DVB-S tuner + 1461 050c Nagase Sangyo TransGear 3000TV + 1461 10ff AVerMedia DVD EZMaker + 1461 2108 AverMedia AverTV/305 + 1461 2115 AverMedia AverTV Studio 305 + 153b 1152 Terratec Cinergy 200 TV + 185b c100 Compro VideoMate TV PVR/FM + 185b c901 Videomate DVB-T200 + 5168 0138 LifeView FlyVIDEO2000 + 5ace 5010 Behold TV 501 + 5ace 5050 Behold TV 505 FM + 7133 SAA7131/SAA7133/SAA7135 Video Broadcast Decoder + 0000 4091 Beholder BeholdTV 409 FM + 0000 5071 Behold TV 507 RDS + 0000 507b Behold TV 507 RDS + 0000 5201 Behold TV Columbus + 0070 6701 WinTV HVR-1110 + 1019 4cb5 Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM) + 1043 0210 FlyTV mini Asus Digimatrix + 1043 4843 TV-FM 7133 + 1043 4845 TV-FM 7135 + 1043 4862 P7131 Dual + 1043 4876 My Cinema-P7131 Hybrid + 1131 0000 SAA713x-based TV tuner card + 1131 2001 Proteus Pro [philips reference design] + 1131 2018 Tiger reference design + 1131 4ee9 MonsterTV Mobile + 1131 7133 Pinnacle PCTV 301i + 11bd 002b PCTV Stereo + 11bd 002e PCTV 110i (saa7133) + 12ab 0800 PURPLE TV + 13c2 2804 Technotrend Budget T-3000 Hybrid + 1421 0335 Instant TV DVB-T Cardbus + 1421 1370 Instant TV (saa7135) + 1435 7330 VFG7330 + 1435 7350 VFG7350 + 1458 9001 GC-PTV-TAF Hybrid TV card + 1458 9002 GT-PTV-TAF-RH DVB-T/Analog TV/FM tuner + 1458 9003 GT-PTV-AF-RH Analog TV/FM tuner + 1458 9004 GT-P8000 DVB-T/Analog TV/FM tuner + 1458 9005 GT-P6000 Analog TV/FM tuner + 1458 9008 GT-P5100 Analog TV tuner + 1461 1044 AVerTVHD MCE A180 + 1461 4836 M10D Hybrid DVBT + 1461 861e M105 PAL/SECAM/NTSC/FM Tuner + 1461 a14b AVerTV Studio 509 + 1461 a836 M115 DVB-T, PAL/SECAM/NTSC Tuner + 1461 f01d DVB-T Super 007 + 1461 f31f Avermedia AVerTV GO 007 FM + 1461 f936 Hybrid+FM PCI (rev A16D) + 1462 6231 TV@nywhere Plus + 1489 0214 LifeView FlyTV Platinum FM + 14c0 1212 LifeView FlyTV Platinum Mini2 + 153b 1160 Cinergy 250 PCI TV + 153b 1162 Terratec Cinergy 400 mobile + 17de 7256 PlusTV All In One PI610 card + 17de 7350 ATSC 110 Digital / Analog HDTV Tuner + 17de 7352 ATSC 115 Digital / Analog HDTV Tuner + 185b c100 VideoMate TV + 185b c900 VideoMate T750 + 5168 0306 LifeView FlyDVB-T DUO + 5168 0319 LifeView FlyDVB Trio + 5168 0502 LifeView FlyDVB-T Duo CardBus + 5168 0520 LifeView FlyDVB Trio CardBus + 5168 1502 LifeView FlyTV CardBus + 5168 2502 LifeView FlyDVB-T CardBus + 5168 2520 LifeView FlyDVB-S Duo CardBus + 5168 3502 LifeView FlyDVB-T Hybrid CardBus + 5168 3520 LifeView FlyDVB Trio N CardBus + 5ace 5030 Behold TV 503 FM + 5ace 5090 Behold TV 509 FM + 5ace 6090 Behold TV 609 FM + 5ace 6091 Behold TV 609 FM + 5ace 6092 Behold TV 609 RDS + 5ace 6093 Behold TV 609 RDS + 5ace 6190 Behold TV M6 + 5ace 6191 Behold TV M63 + 5ace 6193 Behold TV M6 Extra + 5ace 6290 Behold TV H6 + 5ace 7090 Behold TV A7 + 5ace 7150 Behold TV H75 + 5ace 7151 Behold TV H75 + 5ace 7190 Behold TV H7 + 5ace 7191 Behold TV H7 + 5ace 7290 Behold TV T7 + 5ace 7591 Behold TV X7 + 5ace 7595 Behold TV X7 + 7134 SAA7134/SAA7135HL Video Broadcast Decoder + 0000 4036 Behold TV 403 + 0000 4037 Behold TV 403 FM + 0000 4071 Behold TV 407 FM + 1019 4cb4 Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) + 1043 0210 Digimatrix TV + 1043 4840 TV-FM 7134 + 1043 4842 TV-FM 7134 + 1131 0000 SAA713x-based TV tuner card + 1131 2004 EUROPA V3 reference design + 1131 4e85 SKNet Monster TV + 1131 6752 EMPRESS + 11bd 002b PCTV Stereo + 11bd 002d PCTV 300i DVB-T + PAL + 1461 2c00 AverTV Hybrid+FM PCI + 1461 9715 AVerTV Studio 307 + 1461 a70a Avermedia AVerTV 307 + 1461 a70b AverMedia M156 / Medion 2819 + 1461 d6ee Cardbus TV/Radio (E500) + 1471 b7e9 AVerTV Cardbus plus + 153b 1142 Terratec Cinergy 400 TV + 153b 1143 Terratec Cinergy 600 TV + 153b 1158 Terratec Cinergy 600 TV MK3 + 1540 9524 ProVideo PV952 + 16be 0003 Medion 7134 + 185b c200 Compro VideoMate Gold+ Pal + 185b c900 Videomate DVB-T300 + 1894 a006 KNC One TV-Station DVR + 1894 fe01 KNC One TV-Station RDS / Typhoon TV Tuner RDS + 5168 0138 FLY TV PRIME 34FM + 5168 0300 FlyDVB-S + 5ace 5070 Behold TV 507 FM + 5ace 6070 Behold TV 607 FM + 5ace 6071 Behold TV 607 FM + 5ace 6072 Behold TV 607 RDS + 5ace 6073 Behold TV 607 RDS + 7145 SAA7145 + 7146 SAA7146 + 110a 0000 Fujitsu/Siemens DVB-C card rev1.5 + 110a ffff Fujitsu/Siemens DVB-C card rev1.5 + 1124 2581 Leutron Vision PicPort + 1131 4f56 KNC1 DVB-S Budget + 1131 4f60 Fujitsu-Siemens Activy DVB-S Budget Rev AL + 1131 4f61 Activy DVB-S Budget Rev GR + 1131 5f61 Activy DVB-T Budget + 114b 2003 DVRaptor Video Edit/Capture Card + 1159 0040 MuTech M-Vision 500 (MV-500 rev. E) + 1159 0050 MuTech M-Vision 500 (MV-500 rev. F) + 11bd 0006 DV500 Overlay + 11bd 000a DV500 Overlay + 11bd 000f DV500 Overlay + 13c2 0000 Siemens/Technotrend/Hauppauge DVB card rev1.3 or rev1.5 + 13c2 0001 Technotrend/Hauppauge DVB card rev1.3 or rev1.6 + 13c2 0002 Technotrend/Hauppauge DVB card rev2.1 + 13c2 0003 Technotrend/Hauppauge DVB card rev2.1 + 13c2 0004 Technotrend/Hauppauge DVB card rev2.1 + 13c2 0006 Technotrend/Hauppauge DVB card rev1.3 or rev1.6 + 13c2 0008 Technotrend/Hauppauge DVB-T + 13c2 000a Octal/Technotrend DVB-C for iTV + 13c2 000e Technotrend/Hauppauge DVB card rev2.3 + 13c2 1003 Technotrend-Budget/Hauppauge WinTV-NOVA-S DVB card + 13c2 1004 Technotrend-Budget/Hauppauge WinTV-NOVA-C DVB card + 13c2 1005 Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card + 13c2 100c Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card + 13c2 100f Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card + 13c2 1010 DVB C-1500 + 13c2 1011 Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card + 13c2 1012 DVB T-1500 + 13c2 1013 SATELCO Multimedia DVB + 13c2 1016 WinTV-NOVA-SE DVB card + 13c2 1018 DVB S-1401 + 13c2 1019 S2-3200 + 13c2 1102 Technotrend/Hauppauge DVB card rev2.1 + 153b 1155 Cinergy 1200 DVB-S + 153b 1156 Cinergy 1200 DVB-C + 153b 1157 Cinergy 1200 DVB-T + 153b 1176 Cinergy 1200 DVB-C (MK3) + 1894 0020 KNC One DVB-C V1.0 + 1894 0023 TV-Station DVB-C plus + 1894 0054 TV-Station DVB-S + 7160 SAA7160 + 1458 9009 E8000 DVB-T/Analog TV/FM tuner + 1461 1455 AVerTV Hybrid Speedy PCI-E (H788) + 7162 SAA7162 + 11bd 0101 Pinnacle PCTV 7010iX TV Card + 7164 SAA7164 + 0070 8800 WinTV HVR-2250 + 0070 8810 WinTV HVR-2250 + 0070 8851 WinTV HVR-2250 + 0070 8853 WinTV HVR-2250 + 0070 8880 WinTV HVR-2250 + 0070 8891 WinTV HVR-2250 + 0070 88a0 WinTV HVR-2250 + 0070 88a1 WinTV HVR-2250 + 0070 8900 WinTV HVR-2200 + 0070 8901 WinTV HVR-2200 + 0070 8940 WinTV HVR-2200 (submodel 89619) + 0070 8951 WinTV HVR-2200 + 0070 8953 WinTV HVR-2200 + 0070 8980 WinTV HVR-2200 + 0070 8991 WinTV HVR-2200 + 0070 8993 WinTV HVR-2200 + 0070 89a0 WinTV HVR-2200 + 0070 89a1 WinTV HVR-2200 + 0070 f120 WinTV HVR-2205 + 0070 f123 WinTV HVR-2215 + 7231 SAA7231 + 5ace 8000 Behold TV H8 + 5ace 8001 Behold TV H8 + 5ace 8050 Behold TV H85 + 5ace 8051 Behold TV H85 + 5ace 8100 Behold TV A8 + 5ace 8101 Behold TV A8 + 5ace 8150 Behold TV A85 + 5ace 8151 Behold TV A85 + 5ace 8201 Behold TV T8 + 9730 SAA9730 Integrated Multimedia and Peripheral Controller + 1131 0000 Integrated Multimedia and Peripheral Controller +1132 Mitel Corp. +1133 Dialogic Corporation + 7701 Eiconcard C90 + 7711 Eiconcard C91 + 7901 EiconCard S90 + 7902 EiconCard S90 + 7911 EiconCard S91 + 7912 EiconCard S91 + 7921 Eiconcard S92 + 7941 EiconCard S94 + 7942 EiconCard S94 + 7943 EiconCard S94 + 7944 EiconCard S94 + 7945 Eiconcard S94 + 7948 Eiconcard S94 64bit/66MHz + 9711 Eiconcard S91 V2 + 9911 Eiconcard S91 V2 + 9941 Eiconcard S94 V2 + 9a41 Eiconcard S94 PCIe + b921 EiconCard P92 + b922 EiconCard P92 + b923 EiconCard P92 + e001 Diva Pro 2.0 S/T + e002 Diva 2.0 S/T PCI + e003 Diva Pro 2.0 U + e004 Diva 2.0 U PCI + e005 Diva 2.01 S/T PCI + e006 Diva CT S/T PCI + e007 Diva CT U PCI + e008 Diva CT Lite S/T PCI + e009 Diva CT Lite U PCI + e00a Diva ISDN+V.90 PCI + e00b Diva ISDN PCI 2.02 + e00c Diva 2.02 PCI U + e00d Diva Pro 3.0 PCI + e00e Diva ISDN+CT S/T PCI Rev 2 + e010 Diva Server BRI-2M PCI + 110a 0021 Fujitsu Siemens ISDN S0 + e011 Diva Server BRI S/T Rev 2 + e012 Diva Server 4BRI-8M PCI + e013 4BRI + 1133 1300 Diva V-4BRI-8 PCI v2 + 1133 e013 Diva 4BRI-8 PCI v2 + e014 Diva Server PRI-30M PCI + e015 Diva PRI PCI v2 + e016 Diva Server Voice 4BRI PCI + e017 Diva Server Voice 4BRI Rev 2 + 1133 e017 Diva Server Voice 4BRI-8M 2.0 PCI + e018 BRI + 1133 1800 Diva V-BRI-2 PCI v2 + 1133 e018 Diva BRI-2 PCI v2 + e019 Diva Server Voice PRI Rev 2 + 1133 e019 Diva Server Voice PRI 2.0 PCI + e01a Diva BRI-2FX PCI v2 + e01b Diva Server Voice BRI-2M 2.0 PCI + 1133 e01b Diva Server Voice BRI-2M 2.0 PCI + e01c PRI + 1133 1c01 Diva PRI/E1/T1-8 PCI v3 + 1133 1c02 Diva PRI/T1-24 PCI(e) v3 + 1133 1c03 Diva PRI/E1-30 PCI(e) v3 + 1133 1c04 Diva PRI/E1/T1-CTI PCI(e) v3 + 1133 1c05 Diva V-PRI/T1-24 PCI(e) v3 + 1133 1c06 Diva V-PRI/E1-30 PCI(e) v3 + 1133 1c07 Diva Server PRI/E1/T1-8 Cornet NQ + 1133 1c08 Diva Server PRI/T1-24 Cornet NQ + 1133 1c09 Diva Server PRI/E1-30 Cornet NQ + 1133 1c0a Diva Server PRI/E1/T1 Cornet NQ + 1133 1c0b Diva Server V-PRI/T1-24 Cornet NQ + 1133 1c0c Diva Server V-PRI/E1-30 Cornet NQ + e01e 2PRI + 1133 1e01 Diva 2PRI/E1/T1-60 PCI v1 + 1133 e01e Diva V-2PRI/E1/T1-60 PCI v1 + e020 4PRI + 1133 2001 Diva 4PRI/E1/T1-120 PCI v1 + 1133 e020 Diva V-4PRI/E1/T1-120 PCI v1 + e022 Analog-2 + 1133 2200 Diva V-Analog-2 PCI v1 + 1133 e022 Diva Analog-2 PCI v1 + e024 Analog-4 + 1133 2400 Diva V-Analog-4 PCI v1 + 1133 e024 Diva Analog-4 PCI v1 + e028 Analog-8 + 1133 2800 Diva V-Analog-8 PCI v1 + 1133 e028 Diva Analog-8 PCI v1 + e02a Diva IPM-300 PCI v1 + e02c Diva IPM-600 PCI v1 + e02e 4BRI + 1133 2e01 Diva V-4BRI-8 PCIe v2 + 1133 e02e Diva 4BRI-8 PCIe v2 + e032 BRI + 1133 3201 Diva V-BRI-2 PCIe v2 + 1133 e032 Diva BRI-2 PCIe v2 + e034 Diva BRI-CTI PCI v2 +1134 Mercury Computer Systems + 0001 Raceway Bridge + 0002 Dual PCI to RapidIO Bridge + 000b POET Serial RapidIO Bridge + 000d POET PSDMS Device +1135 FUJIFILM Business Innovation Corp. + 0001 Printer controller +1136 Momentum Data Systems + 0002 PCI-JTAG +1137 Cisco Systems Inc + 0023 VIC 81 PCIe Upstream Port + 0040 VIC PCIe Upstream Port + 1137 004f VIC 1280 Dual 40Gb Mezzanine + 1137 0084 VIC 1240 Dual 40Gb MLOM + 1137 0085 VIC 1225 Dual 10Gb SFP+ PCIe + 1137 00cd VIC 1285 Dual 40Gb QSFP+ PCIe + 1137 00ce VIC 1225T Dual 10GBaseT PCIe + 1137 012a VIC M4308 Dual 40Gb + 1137 012c VIC 1340 Dual 40Gb MLOM + 1137 012e VIC 1227 Dual 10Gb SFP+ PCIe + 1137 0137 VIC 1380 Dual 40Gb Mezzanine + 1137 014d VIC 1385 Dual 40Gb PCIe + 0041 VIC PCIe Downstream Port + 0042 VIC Management Controller + 1137 0047 VIC P81E PCIe Management Controller + 1137 0085 VIC 1225 PCIe Management Controller + 1137 00cd VIC 1285 PCIe Management Controller + 1137 00ce VIC 1225T PCIe Management Controller + 1137 012e VIC 1227 PCIe Management Controller + 1137 014d VIC 1385 PCIe Management Controller + 1137 0217 VIC 1455 PCIe Management Controller + 1137 0218 VIC 1457 PCIe Management Controller + 0043 VIC Ethernet NIC + 1137 0047 VIC P81E PCIe Ethernet NIC + 1137 0048 VIC M81KR Mezzanine Ethernet NIC + 1137 004f VIC 1280 Mezzanine Ethernet NIC + 1137 0084 VIC 1240 MLOM Ethernet NIC + 1137 0085 VIC 1225 PCIe Ethernet NIC + 1137 00cd VIC 1285 PCIe Ethernet NIC + 1137 00ce VIC 1225T PCIe Ethernet NIC + 1137 012a VIC M4308 Ethernet NIC + 1137 012c VIC 1340 MLOM Ethernet NIC + 1137 012e VIC 1227 PCIe Ethernet NIC + 1137 0137 VIC 1380 Mezzanine Ethernet NIC + 1137 014d VIC 1385 PCIe Ethernet NIC + 1137 015d VIC 1387 MLOM Ethernet NIC + 1137 0215 VIC 1440 Mezzanine Ethernet NIC + 1137 0216 VIC 1480 MLOM Ethernet NIC + 1137 0217 VIC 1455 PCIe Ethernet NIC + 1137 0218 VIC 1457 MLOM Ethernet NIC + 1137 0219 VIC 1485 PCIe Ethernet NIC + 1137 021a VIC 1487 MLOM Ethernet NIC + 1137 024a VIC 1495 PCIe Ethernet NIC + 1137 024b VIC 1497 MLOM Ethernet NIC + 0044 VIC Ethernet NIC Dynamic + 1137 0047 VIC P81E PCIe Ethernet NIC Dynamic + 1137 0048 VIC M81KR Mezzanine Ethernet NIC Dynamic + 1137 004f VIC 1280 Mezzanine Ethernet NIC Dynamic + 1137 0084 VIC 1240 MLOM Ethernet NIC Dynamic + 1137 0085 VIC 1225 PCIe Ethernet NIC Dynamic + 1137 00cd VIC 1285 PCIe Ethernet NIC Dynamic + 1137 00ce VIC 1225T PCIe Ethernet NIC Dynamic + 1137 012a VIC M4308 Ethernet NIC Dynamic + 1137 012c VIC 1340 MLOM Ethernet NIC Dynamic + 1137 012e VIC 1227 PCIe Ethernet NIC Dynamic + 1137 0137 VIC 1380 Mezzanine Ethernet NIC Dynamic + 1137 014d VIC 1385 PCIe Ethernet NIC Dynamic + 0045 VIC FCoE HBA + 1137 0047 VIC P81E PCIe FCoE HBA + 1137 0048 VIC M81KR Mezzanine FCoE HBA + 1137 004f VIC 1280 Mezzanine FCoE HBA + 1137 0084 VIC 1240 MLOM FCoE HBA + 1137 0085 VIC 1225 PCIe FCoE HBA + 1137 00cd VIC 1285 PCIe FCoE HBA + 1137 00ce VIC 1225T PCIe FCoE HBA + 1137 012a VIC M4308 FCoE HBA + 1137 012c VIC 1340 MLOM FCoE HBA + 1137 012e VIC 1227 PCIe FCoE HBA + 1137 0137 VIC 1380 Mezzanine FCoE HBA + 1137 014d VIC 1385 PCIe FCoE HBA + 0046 VIC SCSI Controller + 1137 012a VIC M4308 SCSI Controller + 004e VIC 82 PCIe Upstream Port + 0071 VIC SR-IOV VF + 007a VIC 1300 PCIe Upstream Port + 1137 012a VIC M4308 Dual 40Gb + 1137 012c VIC 1340 Dual 40Gb MLOM + 1137 0137 VIC 1380 Dual 40Gb Mezzanine + 1137 014d VIC 1385 Dual 40Gb PCIe + 00cf VIC Userspace NIC + 1137 004f VIC 1280 Mezzanine Userspace NIC + 1137 0084 VIC 1240 MLOM Userspace NIC + 1137 0085 VIC 1225 PCIe Userspace NIC + 1137 00cd VIC 1285 PCIe Userspace NIC + 1137 00ce VIC 1225T PCIe Userspace NIC + 1137 012a VIC M4308 Userspace NIC + 1137 012c VIC 1340 MLOM Userspace NIC + 1137 012e VIC 1227 PCIe Userspace NIC + 1137 0137 VIC 1380 Mezzanine Userspace NIC + 023e 1GigE I350 LOM +1138 Ziatech Corporation + 8905 8905 [STD 32 Bridge] +1139 Dynamic Pictures, Inc + 0001 VGA Compatible 3D Graphics +113a FWB Inc +113b Network Computing Devices +113c Cyclone Microsystems, Inc. + 0000 PCI-9060 i960 Bridge + 0001 PCI-SDK [PCI i960 Evaluation Platform] + 0911 PCI-911 [i960Jx-based Intelligent I/O Controller] + 0912 PCI-912 [i960CF-based Intelligent I/O Controller] + 0913 PCI-913 + 0914 PCI-914 [I/O Controller w/ secondary PCI bus] +113d Leading Edge Products Inc +113e Sanyo Electric Co - Computer Engineering Dept +113f Equinox Systems, Inc. + 0808 SST-64P Adapter + 1010 SST-128P Adapter + 80c0 SST-16P DB Adapter + 80c4 SST-16P RJ Adapter + 80c8 SST-16P Adapter + 8888 SST-4P Adapter + 9090 SST-8P Adapter +1140 Intervoice Inc +1141 Crest Microsystem Inc +1142 Alliance Semiconductor Corporation + 3210 AP6410 + 6422 ProVideo 6422 + 6424 ProVideo 6424 + 6425 ProMotion AT25 + 643d ProMotion AT3D +1143 NetPower, Inc +1144 Cincinnati Milacron + 0001 Noservo controller +1145 Workbit Corporation + 8007 NinjaSCSI-32 Workbit + f007 NinjaSCSI-32 KME + f010 NinjaSCSI-32 Workbit + f012 NinjaSCSI-32 Logitec + f013 NinjaSCSI-32 Logitec + f015 NinjaSCSI-32 Melco + f020 NinjaSCSI-32 Sony PCGA-DVD51 + f021 NinjaPATA-32 Delkin Cardbus UDMA + f024 NinjaPATA-32 Delkin Cardbus UDMA + f103 NinjaPATA-32 Delkin Cardbus UDMA +1146 Force Computers +1147 Interface Corp +# Nee Schneider & Koch +1148 SysKonnect + 4000 FDDI Adapter + 0e11 b03b Netelligent 100 FDDI DAS Fibre SC + 0e11 b03c Netelligent 100 FDDI SAS Fibre SC + 0e11 b03d Netelligent 100 FDDI DAS UTP + 0e11 b03e Netelligent 100 FDDI SAS UTP + 0e11 b03f Netelligent 100 FDDI SAS Fibre MIC + 1148 5521 FDDI SK-5521 (SK-NET FDDI-UP) + 1148 5522 FDDI SK-5522 (SK-NET FDDI-UP DAS) + 1148 5541 FDDI SK-5541 (SK-NET FDDI-FP) + 1148 5543 FDDI SK-5543 (SK-NET FDDI-LP) + 1148 5544 FDDI SK-5544 (SK-NET FDDI-LP DAS) + 1148 5821 FDDI SK-5821 (SK-NET FDDI-UP64) + 1148 5822 FDDI SK-5822 (SK-NET FDDI-UP64 DAS) + 1148 5841 FDDI SK-5841 (SK-NET FDDI-FP64) + 1148 5843 FDDI SK-5843 (SK-NET FDDI-LP64) + 1148 5844 FDDI SK-5844 (SK-NET FDDI-LP64 DAS) + 4200 Token Ring adapter + 4300 SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) + 1148 9821 SK-9821 Gigabit Ethernet Server Adapter (SK-NET GE-T) + 1148 9822 SK-9822 Gigabit Ethernet Server Adapter (SK-NET GE-T dual link) + 1148 9841 SK-9841 Gigabit Ethernet Server Adapter (SK-NET GE-LX) + 1148 9842 SK-9842 Gigabit Ethernet Server Adapter (SK-NET GE-LX dual link) + 1148 9843 SK-9843 Gigabit Ethernet Server Adapter (SK-NET GE-SX) + 1148 9844 SK-9844 Gigabit Ethernet Server Adapter (SK-NET GE-SX dual link) + 1148 9861 SK-9861 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition) + 1148 9862 SK-9862 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition dual link) + 1148 9871 SK-9871 Gigabit Ethernet Server Adapter (SK-NET GE-ZX) + 1148 9872 SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) + 1259 2970 AT-2970SX Gigabit Ethernet Adapter + 1259 2971 AT-2970LX Gigabit Ethernet Adapter + 1259 2972 AT-2970TX Gigabit Ethernet Adapter + 1259 2973 AT-2971SX Gigabit Ethernet Adapter + 1259 2974 AT-2971T Gigabit Ethernet Adapter + 1259 2975 AT-2970SX/2SC Gigabit Ethernet Adapter + 1259 2976 AT-2970LX/2SC Gigabit Ethernet Adapter + 1259 2977 AT-2970TX/2TX Gigabit Ethernet Adapter + 4320 SK-98xx V2.0 Gigabit Ethernet Adapter [Marvell 88E8001] + 1148 0121 Marvell RDK-8001 Adapter + 1148 0221 Marvell RDK-8002 Adapter + 1148 0321 Marvell RDK-8003 Adapter + 1148 0421 Marvell RDK-8004 Adapter + 1148 0621 Marvell RDK-8006 Adapter + 1148 0721 Marvell RDK-8007 Adapter + 1148 0821 Marvell RDK-8008 Adapter + 1148 0921 Marvell RDK-8009 Adapter + 1148 1121 Marvell RDK-8011 Adapter + 1148 1221 Marvell RDK-8012 Adapter + 1148 3221 SK-9521 V2.0 10/100/1000Base-T Adapter + 1148 5021 SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter + 1148 5041 SK-9841 V2.0 Gigabit Ethernet 1000Base-LX Adapter + 1148 5043 SK-9843 V2.0 Gigabit Ethernet 1000Base-SX Adapter + 1148 5051 SK-9851 V2.0 Gigabit Ethernet 1000Base-SX Adapter + 1148 5061 SK-9861 V2.0 Gigabit Ethernet 1000Base-SX Adapter + 1148 5071 SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter + 1148 9521 SK-9521 10/100/1000Base-T Adapter + 1259 2916 AT-2916T + 4400 SK-9Dxx Gigabit Ethernet Adapter + 4500 SK-9Mxx Gigabit Ethernet Adapter + 9000 SK-9Sxx Gigabit Ethernet Server Adapter PCI-X [Marvell 88E8022] + 1148 2100 SK-9S21 10/100/1000Base-T Server Adapter, PCI-X, Copper RJ-45 + 1148 2200 SK-9S22 10/100/1000Base-T Dual Port Server Adapter, PCI-X, 2 Copper RJ-45 + 1148 2210 SK-9P22 10/100/1000 Base-T Dual Port PMC card + 1148 2220 TPMC-GBE-CO + 1148 8100 SK-9S81 1000Base-SX Server Adapter,PCI-X, Fiber SX/LC + 1148 8200 SK-9S82 1000Base-SX Dual Port Server Adapter, PCI-X, 2 Fiber SX/LC + 1148 8210 SK-9P82 1000 Base-SX Dual Port PMC card + 1148 8220 TPMC-GBE-FI + 1148 9100 SK-9S91 1000Base-LX Server Adapter,PCI-X, Fiber LX/LC + 1148 9200 SK-9S92 1000Base-LX Dual Port Server Adapter, PCI-X, 2 Fiber LX/LC + 1259 2973 AT-2971SX v2 Gigabit Adapter + 1259 2974 AT-2971T v2 Gigabit Adapter + 1259 2978 AT-2971LX Gigabit Adapter + 9843 [Fujitsu] Gigabit Ethernet + 9e00 SK-9E21D 10/100/1000Base-T Adapter, Copper RJ-45 + 1148 2100 SK-9E21 Server Adapter + 1148 21d0 SK-9E21D 10/100/1000Base-T Adapter + 1148 2200 SK-9E22 Server Adapter + 1148 8100 SK-9E81 Server Adapter + 1148 8200 SK-9E82 Server Adapter + 1148 9100 SK-9E91 Server Adapter + 1148 9200 SK-9E92 Server Adapter + 9e01 SK-9E21M 10/100/1000Base-T Adapter +1149 Win System Corporation +114a VMIC + 5565 GE-IP PCI5565,PMC5565 Reflective Memory Node + 5579 VMIPCI-5579 (Reflective Memory Card) + 5587 VMIPCI-5587 (Reflective Memory Card) + 6504 VMIC PCI 7755 FPGA + 7587 VMIVME-7587 +114b Canopus Co., Ltd +114c Annabooks +114d IC Corporation +114e Nikon Systems Inc +114f Digi International + 0002 AccelePort EPC + 0003 RightSwitch SE-6 + 0004 AccelePort Xem + 0005 AccelePort Xr + 0006 AccelePort Xr,C/X + 0009 AccelePort Xr/J + 000a AccelePort EPC/J + 000c DataFirePRIme T1 (1-port) + 000d SyncPort 2-Port (x.25/FR) + 0011 AccelePort 8r EIA-232 (IBM) + 0012 AccelePort 8r EIA-422 + 0013 AccelePort Xr + 0014 AccelePort 8r EIA-422 + 0015 AccelePort Xem + 0016 AccelePort EPC/X + 0017 AccelePort C/X + 001a DataFirePRIme E1 (1-port) + 001b AccelePort C/X (IBM) + 001c AccelePort Xr (SAIP) + 001d DataFire RAS T1/E1/PRI + 114f 0050 DataFire RAS E1 Adapter + 114f 0051 DataFire RAS Dual E1 Adapter + 114f 0052 DataFire RAS T1 Adapter + 114f 0053 DataFire RAS Dual T1 Adapter + 0023 AccelePort RAS + 0024 DataFire RAS B4 ST/U + 114f 0030 DataFire RAS BRI U Adapter + 114f 0031 DataFire RAS BRI S/T Adapter + 0026 AccelePort 4r 920 + 0027 AccelePort Xr 920 + 0028 ClassicBoard 4 + 0029 ClassicBoard 8 + 0034 AccelePort 2r 920 + 0035 DataFire DSP T1/E1/PRI cPCI + 0040 AccelePort Xp + 114f 0042 AccelePort 2p PCI + 114f 0043 AccelePort 4p PCI + 114f 0044 AccelePort 8p PCI + 114f 0045 AccelePort 16p PCI + 114f 004e AccelePort 32p PCI + 0042 AccelePort 2p + 0043 AccelePort 4p + 0044 AccelePort 8p + 0045 AccelePort 16p + 004e AccelePort 32p + 0070 Datafire Micro V IOM2 (Europe) + 0071 Datafire Micro V (Europe) + 0072 Datafire Micro V IOM2 (North America) + 0073 Datafire Micro V (North America) + 00b0 Digi Neo 4 + 00b1 Digi Neo 8 + 00c8 Digi Neo 2 DB9 + 00c9 Digi Neo 2 DB9 PRI + 00ca Digi Neo 2 RJ45 + 00cb Digi Neo 2 RJ45 PRI + 00cc Digi Neo 1 422 + 00cd Digi Neo 1 422 485 + 00ce Digi Neo 2 422 485 + 00d0 ClassicBoard 4 422 + 00d1 ClassicBoard 8 422 + 00f1 Digi Neo PCI-E 4 port + 00f4 Digi Neo 4 (IBM version) + 6001 Avanstar +1150 Thinking Machines Corp +1151 JAE Electronics Inc. +1152 Megatek +1153 Land Win Electronic Corp +1154 Melco Inc +1155 Pine Technology Ltd +1156 Periscope Engineering +1157 Avsys Corporation +1158 Voarx R & D Inc + 3011 Tokenet/vg 1001/10m anylan + 9050 Lanfleet/Truevalue + 9051 Lanfleet/Truevalue +1159 MuTech Corporation + 0001 MV-1000 + 0002 MV-1500 +115a Harlequin Ltd +115b Parallax Graphics +115c Photron Ltd. +115d Xircom + 0003 Cardbus Ethernet 10/100 + 1014 0181 10/100 EtherJet Cardbus Adapter + 1014 1181 10/100 EtherJet Cardbus Adapter + 1014 8181 10/100 EtherJet Cardbus Adapter + 1014 9181 10/100 EtherJet Cardbus Adapter + 115d 0181 Cardbus Ethernet 10/100 + 115d 0182 RealPort2 CardBus Ethernet 10/100 (R2BE-100) + 115d 1181 Cardbus Ethernet 10/100 + 1179 0181 Cardbus Ethernet 10/100 + 8086 8181 EtherExpress PRO/100 Mobile CardBus 32 Adapter + 8086 9181 EtherExpress PRO/100 Mobile CardBus 32 Adapter + 0005 Cardbus Ethernet 10/100 + 1014 0182 10/100 EtherJet Cardbus Adapter + 1014 1182 10/100 EtherJet Cardbus Adapter + 115d 0182 Cardbus Ethernet 10/100 + 115d 1182 Cardbus Ethernet 10/100 + 0007 Cardbus Ethernet 10/100 + 1014 0182 10/100 EtherJet Cardbus Adapter + 1014 1182 10/100 EtherJet Cardbus Adapter + 115d 0182 Cardbus Ethernet 10/100 + 115d 1182 Cardbus Ethernet 10/100 + 000b Cardbus Ethernet 10/100 + 1014 0183 10/100 EtherJet Cardbus Adapter + 115d 0183 Cardbus Ethernet 10/100 + 000c Mini-PCI V.90 56k Modem + 000f Cardbus Ethernet 10/100 + 1014 0183 10/100 EtherJet Cardbus Adapter + 115d 0183 Cardbus Ethernet 10/100 + 00d4 Mini-PCI K56Flex Modem + 0101 Cardbus 56k modem + 115d 1081 Cardbus 56k Modem + 0103 Cardbus Ethernet + 56k Modem + 1014 9181 Cardbus 56k Modem + 1115 1181 Cardbus Ethernet 100 + 56k Modem + 115d 1181 CBEM56G-100 Ethernet + 56k Modem + 8086 9181 PRO/100 LAN + Modem56 CardBus +115e Peer Protocols Inc +115f Maxtor Corporation +1160 Megasoft Inc +1161 PFU Limited +1162 OA Laboratory Co Ltd +1163 Rendition + 0001 Verite 1000 + 2000 Verite V2000/V2100/V2200 + 1092 2000 Stealth II S220 +1164 Advanced Peripherals Technologies +1165 Imagraph Corporation + 0001 Motion TPEG Recorder/Player with audio +# nee ServerWorks +1166 Broadcom + 0000 CMIC-LE + 0005 CNB20-LE Host Bridge + 0006 CNB20HE Host Bridge + 0007 CNB20-LE Host Bridge + 0008 CNB20HE Host Bridge + 0009 CNB20LE Host Bridge + 0010 CIOB30 + 0011 CMIC-HE + 0012 CMIC-WS Host Bridge (GC-LE chipset) + 0013 CNB20-HE Host Bridge + 0014 CMIC-LE Host Bridge (GC-LE chipset) + 0015 CMIC-GC Host Bridge + 0016 CMIC-GC Host Bridge + 0017 GCNB-LE Host Bridge + 0031 HT1100 HPX0 HT Host Bridge + 0036 BCM5785 [HT1000] PCI/PCI-X Bridge + 0101 CIOB-X2 PCI-X I/O Bridge + 0103 EPB PCI-Express to PCI-X Bridge + 0104 BCM5785 [HT1000] PCI/PCI-X Bridge + 0110 CIOB-E I/O Bridge with Gigabit Ethernet + 0130 BCM5780 [HT2000] PCI-X bridge + 0132 BCM5780 [HT2000] PCI-Express Bridge + 1166 0132 HT2000 PCI-Express bridge + 0140 HT2100 PCI-Express Bridge + 0141 HT2100 PCI-Express Bridge + 0142 HT2100 PCI-Express Bridge + 0144 HT2100 PCI-Express Bridge + 0200 OSB4 South Bridge + 0201 CSB5 South Bridge + 4c53 1080 CT8 mainboard + 0203 CSB6 South Bridge + 1734 1012 PRIMERGY RX/TX series + 0205 BCM5785 [HT1000] Legacy South Bridge + 0211 OSB4 IDE Controller + 0212 CSB5 IDE Controller + 1028 014a PowerEdge 1750 + 1028 810b PowerEdge 1650/2550 + 4c53 1080 CT8 mainboard + 0213 CSB6 RAID/IDE Controller + 1028 4134 PowerEdge 600SC + 1028 c134 Poweredge SC600 + 1734 1012 PRIMERGY RX/TX series onboard IDE + 0214 BCM5785 [HT1000] IDE + 1028 0205 PowerEdge 2970 HT1000 IDE + 0217 CSB6 IDE Controller + 1028 4134 Poweredge SC600 + 021b HT1100 HD Audio + 0220 OSB4/CSB5 OHCI USB Controller + 4c53 1080 CT8 mainboard + 0221 CSB6 OHCI USB Controller + 1734 1012 PRIMERGY RX/TX series onboard OHCI + 0223 BCM5785 [HT1000] USB + 1028 0205 PowerEdge 2970 HT1000 USB Controller + 1028 020b PowerEdge T605 HT1000 USB Controller + 0225 CSB5 LPC bridge + 0227 GCLE-2 Host Bridge + 1734 1012 PRIMERGY RX/TX series + 0230 CSB5 LPC bridge + 4c53 1080 CT8 mainboard + 0234 BCM5785 [HT1000] LPC + 1028 0205 PowerEdge 2970 HT1000 LPC + 1028 020b PowerEdge T605 HT1000 LPC + 0235 BCM5785 [HT1000] XIOAPIC0-2 + 0238 BCM5785 [HT1000] WDTimer + 0240 K2 SATA + 0241 RAIDCore RC4000 + 0242 RAIDCore BC4000 + 024a BCM5785 [HT1000] SATA (Native SATA Mode) + 1028 020b PowerEdge T605 onboard SATA Controller +# The device starts as 024A, and changes to 024B if set to PATA mode in BIOS + 024b BCM5785 [HT1000] SATA (PATA/IDE Mode) + 1028 0205 PowerEdge 2970 HT1000 SATA controller + 0406 HT1100 PCI-X Bridge + 0408 HT1100 Legacy Device + 040a HT1100 ISA-LPC Bridge + 1028 0223 PowerEdge R905 HT1100 ISA-LPC Bridge + 0410 HT1100 SATA Controller (Native SATA Mode) + 0411 HT1100 SATA Controller (PATA / IDE Mode) + 0412 HT1100 USB OHCI Controller + 0414 HT1100 USB EHCI Controller + 0416 HT1100 USB EHCI Controller (with Debug Port) + 0420 HT1100 PCI-Express Bridge + 0421 HT1100 SAS/SATA Controller + 0422 HT1100 PCI-Express Bridge +1167 Mutoh Industries Inc +1168 Thine Electronics Inc +1169 Centre for Development of Advanced Computing +# nee Polaris Communications +116a Luminex Software, Inc. + 6100 Bus/Tag Channel + 6800 Escon Channel + 7100 Bus/Tag Channel + 7800 Escon Channel +116b Connectware Inc +116c Intelligent Resources Integrated Systems +116d Martin-Marietta +116e Electronics for Imaging +116f Workstation Technology +1170 Inventec Corporation +1171 Loughborough Sound Images Plc +1172 Altera Corporation + 00a7 Stratix V + 0530 Stratix IV + 646c KT-500/KT-521 board +1173 Adobe Systems, Inc +1174 Bridgeport Machines +1175 Mitron Computer Inc. +1176 SBE Incorporated +1177 Silicon Engineering +1178 Alfa, Inc. + afa1 Fast Ethernet Adapter +1179 Toshiba Corporation + 0102 Extended IDE Controller + 0103 EX-IDE Type-B + 010e PXP04 NVMe SSD + 010f XG3 NVMe SSD Controller + 0110 Cx5 NVMe SSD Controller + 1028 1ffb Express Flash NVMe 960G (RI) U.2 (CD5) + 1028 1ffc Express Flash NVMe 1.92T (RI) U.2 (CD5) + 1028 1ffd Express Flash NVMe 3.84T (RI) U.2 (CD5) + 1028 1ffe Express Flash NVMe 7.68T (RI) U.2 (CD5) + 1179 0001 KIOXIA CM5-R series SSD + 1179 0021 KIOXIA CD5 series SSD + 1d49 4039 Thinksystem U.2 CM5 NVMe SSD + 1d49 403a Thinksystem AIC CM5 NVMe SSD + 0113 BG3 x2 NVMe SSD Controller (DRAM-less) + 1179 0001 Toshiba KBG30ZMS128G 128GB NVMe SSD + 0115 XG4 NVMe SSD Controller + 0116 XG5 NVMe SSD Controller + 1179 0001 XG5 NVMe SSD Controller + 011a XG6 NVMe SSD Controller + 0404 DVD Decoder card + 0406 Tecra Video Capture device + 0407 DVD Decoder card (Version 2) + 0601 CPU to PCI bridge + 1179 0001 Satellite Pro + 0602 PCI to ISA bridge + 0603 ToPIC95 PCI to CardBus Bridge for Notebooks + 0604 PCI-Docking Host bridge + 060a ToPIC95 + 1179 0001 Satellite Pro + 060f ToPIC97 + 1179 0001 Satellite 4010 + 0617 ToPIC100 PCI to Cardbus Bridge with ZV Support + 0618 CPU to PCI and PCI to ISA bridge + 0701 FIR Port Type-O + 0803 TC6371AF SD Host Controller + 0804 TC6371AF SmartMedia Controller + 0805 SD TypA Controller + 0d01 FIR Port Type-DO + 1179 0001 FIR Port Type-DO + 9602 RS780/RS880 PCI to PCI bridge (int gfx) +117a A-Trend Technology +117b L G Electronics, Inc. +117c ATTO Technology, Inc. + 002c ExpressSAS R380 + 002d ExpressSAS R348 + 0030 Ultra320 SCSI Host Adapter + 117c 8013 ExpressPCI UL4D + 117c 8014 ExpressPCI UL4S + 117c 8027 ExpressPCI UL5D + 117c 802f ExpressPCI UL5D Low Profile + 0033 SAS Adapter + 0041 ExpressSAS R30F + 0042 ExpressSAS 6Gb/s SAS/SATA HBA + 117c 0042 ExpressSAS H680 + 117c 0043 ExpressSAS H608 + 117c 0044 ExpressSAS H60F + 117c 0045 ExpressSAS H6F0 + 117c 0046 ExpressSAS H644 + 117c 004f ExpressSAS M608 + 117c 0057 ExpressSAS M680 + 117c 0058 ExpressSAS M644 + 117c 0059 ExpressSAS W608 + 117c 005a ExpressSAS W680 + 117c 005b ExpressSAS W644 + 0049 ExpressSAS 6Gb SAS/SATA RAID Adapter + 117c 0049 ExpressSAS R680 + 117c 004a ExpressSAS R608 + 117c 004b ExpressSAS R60F + 117c 004c ExpressSAS R6F0 + 117c 004d ExpressSAS R644 + 117c 004e ExpressSAS R648 + 0064 Celerity FC 16Gb/s Gen 5 Fibre Channel HBA + 117c 0063 Celerity FC-161E + 117c 0064 Celerity FC-162E + 117c 0065 Celerity FC-164E + 0094 Celerity FC 16/32Gb/s Gen 6 Fibre Channel HBA + 117c 0094 Celerity FC-162P + 117c 00a0 Celerity FC-161P + 117c 00a1 Celerity FC-164P + 117c 00a2 Celerity FC-321E + 117c 00a3 Celerity FC-322E + 117c 00ac Celerity FC-324E + 00bb Celerity FC 32/64Gb/s Gen 7 Fibre Channel HBA + 117c 00bc Celerity FC-321P + 117c 00bd Celerity FC-322P + 117c 00be Celerity FC-324P + 117c 00c9 Celerity FC-641E + 117c 00ca Celerity FC-642E + 00c5 ExpressNVM PCIe Gen4 Switch + 117c 00c6 ExpressNVM S48F PCIe Gen4 + 117c 00c7 ExpressNVM S468 PCIe Gen4 + 00e6 ExpressSAS GT 12Gb/s SAS/SATA HBA + 117c 00c0 ExpressSAS H1280 GT + 117c 00c1 ExpressSAS H1208 GT + 117c 00c2 ExpressSAS H1244 GT + 117c 00c3 ExpressSAS H12F0 GT + 117c 00c4 ExpressSAS H120F GT + 8013 ExpressPCI UL4D + 8014 ExpressPCI UL4S + 8027 ExpressPCI UL5D + 8070 ExpressSAS 12Gb/s SAS/SATA HBA + 117c 0070 ExpressSAS H1280 + 117c 0071 ExpressSAS H1208 + 117c 0080 ExpressSAS H1244 + 8072 ExpressSAS 12Gb/s SAS/SATA HBA + 117c 0072 ExpressSAS H12F0 + 117c 0073 ExpressSAS H120F + 117c 0082 ExpressSAS H1288 +117d Becton & Dickinson +117e T/R Systems +117f Integrated Circuit Systems +1180 Ricoh Co Ltd + 0465 RL5c465 + 0466 RL5c466 + 0475 RL5c475 + 144d c006 vpr Matrix 170B4 CardBus bridge + 0476 RL5c476 II + 1014 0185 ThinkPad A/T/X Series + 1014 0555 ThinkPad X41 + 1014 056c ThinkPad Z60t + 1028 014f Latitude X300 laptop + 1028 0188 Inspiron 6000 laptop + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 1043 1017 X58LE + 1043 1237 A6J-Q008 + 1043 1967 V6800V + 1043 1987 A4K and Z81K notebooks, possibly others ( mid-2005 machines ) + 104d 80df Vaio PCG-FX403 + 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + 104d 814e VAIO GRZ390Z + 10f7 8338 Panasonic CF-Y5 laptop + 144d c005 X10 Laptop + 144d c00c P30/P35 notebook + 14ef 0220 PCD-RP-220S + 17aa 201c ThinkPad X60/X60s + 17aa 20c4 ThinkPad T61/R61 + 17aa 20c6 ThinkPad R61/T400 + 0477 RL5c477 + 0478 RL5c478 + 1014 0184 ThinkPad A30p + 0511 R5C511 + 0522 R5C522 IEEE 1394 Controller + 1014 01cf ThinkPad A30p + 1043 1967 V6800V + 0551 R5C551 IEEE 1394 Controller + 144d c006 vpr Matrix 170B4 + 0552 R5C552 IEEE 1394 Controller + 1014 0511 ThinkPad A/T/X Series + 1028 014f Latitude X300 laptop + 1028 0188 Inspiron 6000 laptop + 1043 1237 A6J-Q008 + 1043 1757 M2400N laptop + 144d c005 X10 Laptop + 144d c00c P30/P35 notebook + 17aa 201e ThinkPad X60/X60s + 0554 R5C554 + 0575 R5C575 SD Bus Host Adapter + 0576 R5C576 SD Bus Host Adapter + 0592 R5C592 Memory Stick Bus Host Adapter + 1025 0121 Aspire 5920G + 1028 01d7 XPS M1210 + 1028 01f3 Inspiron 1420 + 1028 022f Inspiron 1525 + 103c 1521 HP EliteBook 8540w + 103c 30b5 Presario V3242AU + 103c 30b7 Presario V6133CL + 103c 30cc Pavilion dv6700 + 103c 30cf Pavilion dv95xx/96xx/97xx/98xx series + 1043 1017 X58LE + 1043 1237 A6J-Q008 + 1043 1967 V6800V + 104d 9035 VAIO VGN-FW11ZRU + 144d c018 X20 IV + 17aa 20ca ThinkPad T61/T400 + 0811 R5C811 + 0822 R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter + 1014 0556 ThinkPad X40 / X41 / X60s / Z60t + 1014 0598 ThinkPad Z60m + 1025 0121 Aspire 5920G + 1028 0188 Inspiron 6000 laptop + 1028 01a2 Inspiron 9200 + 1028 01d7 XPS M1210 + 1028 01f3 Inspiron 1420 + 1028 022f Inspiron 1525 + 103c 03b5 Presario V3242AU + 103c 30b7 Presario V6133CL + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 103c 30cf Pavilion dv9668eg Laptop + 1043 1017 X58LE + 1043 1237 A6J-Q008 + 1043 1967 V6800V + 10f7 8338 Panasonic CF-Y5 laptop + 144d c018 X20 IV + 17aa 201d ThinkPad X60/X60s + 17aa 20c7 ThinkPad T61 + 17aa 20c8 ThinkPad T400/W500 + 0832 R5C832 IEEE 1394 Controller + 1025 0121 Aspire 5920G + 1028 01d7 XPS M1210 + 1028 01f3 Inspiron 1420 + 1028 022f Inspiron 1525 + 1028 024d Latitude E4300 + 103c 30b5 Presario V3242AU + 103c 30b7 Presario V6133CL + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 103c 30cf Pavilion dv9668eg Laptop + 17aa 20c5 ThinkPad R61 + 17aa 20c7 ThinkPad R61 + 0841 R5C841 CardBus/SD/SDIO/MMC/MS/MSPro/xD/IEEE1394 + 0843 R5C843 MMC Host Controller + 1025 0121 Aspire 5920G + 1028 01d7 XPS M1210 + 1028 01f3 Inspiron 1420 + 1028 01f5 Inspiron 1501 + 1028 024f Latitude e6500 + 103c 03b5 Presario V3242AU + 103c 1521 HP EliteBook 8540w + 103c 30b7 Presario V6133CL + 103c 30cf Pavilion dv9500/9600/9700 series + 1043 1017 X58LE + 1183 0843 Alienware Aurora m9700 + 0852 xD-Picture Card Controller + 1025 0121 Aspire 5920G + 1028 01f3 Inspiron 1420 + 1028 022f Inspiron 1525 + 103c 30b5 Presario V3242AU + 103c 30b7 Presario V6133CL + 103c 30cc Pavilion dv6700 + 103c 30cf Pavilion dv9668eg Laptop + 1043 1967 V6800V + 1180 0852 Pavilion 2410us + 1324 10cf P7120 + 17aa 20cb ThinkPad T400 + e230 R5U2xx (R5U230 / R5U231 / R5U241) [Memory Stick Host Controller] + e476 CardBus bridge + 1028 040a Latitude E6410 + 1028 040b Latitude E6510 + e822 MMC/SD Host Controller + 1028 040a Latitude E6410 + 1028 040b Latitude E6510 + 17aa 21cf ThinkPad T520 + e823 PCIe SDXC/MMC Host Controller + 17aa 21cf ThinkPad T520 + e832 R5C832 PCIe IEEE 1394 Controller + 1028 040a Latitude E6410 + 1028 040b Latitude E6510 + 17aa 21cf ThinkPad T520 + e852 PCIe xD-Picture Card Controller +1181 Telmatics International +1183 Fujikura Ltd +1184 Forks Inc +1185 Dataworld International Ltd +1186 D-Link System Inc + 1002 DL10050 Sundance Ethernet + 1186 1002 DFE-550TX/FX + 1186 1012 DFE-580TX + 1025 AirPlus Xtreme G DWL-G650 Adapter + 1026 AirXpert DWL-AG650 Wireless Cardbus Adapter + 1043 AirXpert DWL-AG650 Wireless Cardbus Adapter + 1300 RTL8139 Ethernet + 1186 1300 DFE-538TX 10/100 Ethernet Adapter + 1186 1301 DFE-530TX+ 10/100 Ethernet Adapter + 1186 1303 DFE-528TX 10/100 Fast Ethernet PCI Adapter + 1340 DFE-690TXD CardBus PC Card + 1540 DFE-680TX + 1541 DFE-680TXD CardBus PC Card + 1561 DRP-32TXD Cardbus PC Card + 3300 DWL-510 / DWL-610 802.11b [Realtek RTL8180L] + 1186 3300 DWL-610 Wireless Cardbus Adapter + 1186 3301 DWL-510 Wireless PCI Adapter + 3a10 AirXpert DWL-AG650 Wireless Cardbus Adapter(rev.B) + 3a11 AirXpert DWL-AG520 Wireless PCI Adapter(rev.B) + 4000 DL2000-based Gigabit Ethernet + 4001 DGE-550SX PCI-X Gigabit Ethernet Adapter + 4200 DFE-520TX Fast Ethernet PCI Adapter + 1186 1103 DFE-520TX Fast Ethernet PCI Adapter (rev. C1) + 4300 DGE-528T Gigabit Ethernet Adapter + 1186 4300 DGE-528T PCI Gigabit Ethernet Adapter +# rev. B1; RealTek RTL8168E. + 1186 4b10 DGE-560T PCI Express (x1) Gigabit Ethernet Adapter + 4302 DGE-530T Gigabit Ethernet Adapter (rev.C1) [Realtek RTL8169] + 4b00 DGE-560T PCI Express Gigabit Ethernet Adapter + 4b01 DGE-530T Gigabit Ethernet Adapter (rev 11) + 4b02 DGE-560SX PCI Express Gigabit Ethernet Adapter + 4b03 DGE-550T Gigabit Ethernet Adapter V.B1 + 4c00 Gigabit Ethernet Adapter + 1186 4c00 DGE-530T Gigabit Ethernet Adapter + 8400 D-Link DWL-650+ CardBus PC Card +1187 Advanced Technology Laboratories, Inc. +1188 Shima Seiki Manufacturing Ltd. +1189 Matsushita Electronics Co Ltd +118a Hilevel Technology +118b Hypertec Pty Limited +118c Corollary, Inc + 0014 PCIB [C-bus II to PCI bus host bridge chip] + 1117 Intel 8-way XEON Profusion Chipset [Cache Coherency Filter] +118d BitFlow Inc + 0001 Raptor-PCI framegrabber + 0012 Model 12 Road Runner Frame Grabber + 0014 Model 14 Road Runner Frame Grabber + 0024 Model 24 Road Runner Frame Grabber + 0044 Model 44 Road Runner Frame Grabber + 0112 Model 12 Road Runner Frame Grabber + 0114 Model 14 Road Runner Frame Grabber + 0124 Model 24 Road Runner Frame Grabber + 0144 Model 44 Road Runner Frame Grabber + 0212 Model 12 Road Runner Frame Grabber + 0214 Model 14 Road Runner Frame Grabber + 0224 Model 24 Road Runner Frame Grabber + 0244 Model 44 Road Runner Frame Grabber + 0312 Model 12 Road Runner Frame Grabber + 0314 Model 14 Road Runner Frame Grabber + 0324 Model 24 Road Runner Frame Grabber + 0344 Model 44 Road Runner Frame Grabber + b04e Claxon CXP4 CoaXPress frame grabber +118e Hermstedt GmbH +118f Green Logic +1190 Tripace + c731 TP-910/920/940 PCI Ultra(Wide) SCSI Adapter +1191 Artop Electronic Corp + 0003 SCSI Cache Host Adapter + 0004 ATP8400 + 0005 ATP850UF + 0006 ATP860 NO-BIOS + 0007 ATP860 + 0008 ATP865 NO-ROM + 0009 ATP865 + 000a ATP867-A + 000b ATP867-B + 000d ATP8620 + 000e ATP8620 + 0011 ATP865-B + 1191 0011 ACARD AEC-6280 + 8002 AEC6710 SCSI-2 Host Adapter + 8010 AEC6712UW SCSI + 8020 AEC6712U SCSI + 8030 AEC6712S SCSI + 8040 AEC6712D SCSI + 8050 AEC6712SUW SCSI + 8060 AEC6712 SCSI + 8080 AEC67160 SCSI + 8081 AEC67160S SCSI + 808a AEC67162 2-ch. LVD SCSI +1192 Densan Company Ltd +1193 Zeitnet Inc. + 0001 1221 + 0002 1225 +1194 Toucan Technology +1195 Ratoc System Inc +1196 Hytec Electronics Ltd +1197 Gage Applied Sciences, Inc. + 010c CompuScope 82G 8bit 2GS/s Analog Input Card +1198 Lambda Systems Inc +1199 Attachmate Corporation + 0101 Advanced ISCA/PCI Adapter +119a Mind Share, Inc. +119b Omega Micro Inc. + 1221 82C092G +119c Information Technology Inst. +119d Bug, Inc. Sapporo Japan +119e Fujitsu Microelectronics Ltd. + 0001 FireStream 155 + 0003 FireStream 50 +119f Bull HN Information Systems + 1081 BXI Host Channel Adapter +# BXI stands for Bull eXascale Interconnect + 1101 BXI Host Channel Adapter v1.2 +# BXI stands for Bull eXascale Interconnect + 1121 BXI Host Channel Adapter v1.3 +11a0 Convex Computer Corporation +11a1 Hamamatsu Photonics K.K. +11a2 Sierra Research and Technology +11a3 Deuretzbacher GmbH & Co. Eng. KG +11a4 Barco Graphics NV +11a5 Microunity Systems Eng. Inc +11a6 Pure Data Ltd. +11a7 Power Computing Corp. +11a8 Systech Corp. +11a9 InnoSys Inc. + 4240 AMCC S933Q Intelligent Serial Card +11aa Actel +# Nee Galileo Technology, Inc. +11ab Marvell Technology Group Ltd. + 0100 88F3700 [Armada 3700 Family] ARM SoC + 0110 88F60x0/88F70x0/88F80x0/CN913x ARM SoC + 0146 GT-64010/64010A System Controller + 0f53 88E6318 Link Street network controller + 11ab MV88SE614x SATA II PCI-E controller + 138f W8300 802.11 Adapter (rev 07) + 1fa6 Marvell W8300 802.11 Adapter + 1186 3b08 AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.A1) + 1fa7 88W8310 and 88W8000G [Libertas] 802.11g client chipset + 1faa 88w8335 [Libertas] 802.11b/g Wireless + 1385 4e00 WG511v2 54 Mbps Wireless PC Card + 1385 6b00 WG311v3 802.11g Wireless PCI Adapter + 1737 0040 WPC54G v5 802.11g Wireless-G Notebook Adapter + 2211 88SB2211 PCI Express to PCI Bridge + 2a01 88W8335 [Libertas] 802.11b/g Wireless + 2a02 88W8361 [TopDog] 802.11n Wireless + 07d1 3b02 DIR-615 rev. A1 Mini PCI Wireless Module + 1385 7c00 WN511T RangeMax Next 300 Mbps Wireless PC Card + 1385 7c01 WN511T RangeMax Next 300 Mbps Wireless Notebook Adapter + 1385 7e00 WN311T RangeMax Next 300 Mbps Wireless PCI Adapter + 1799 801b F5D8011 v2 802.11n N1 Wireless Notebook Card + 2a08 88W8362e [TopDog] 802.11a/b/g/n Wireless + 2a0a 88W8363 [TopDog] 802.11n Wireless + 2a0c 88W8363 [TopDog] 802.11n Wireless + 2a24 88W8363 [TopDog] 802.11n Wireless + 2a2b 88W8687 [TopDog] 802.11b/g Wireless + 2a30 88W8687 [TopDog] 802.11b/g Wireless + 2a40 88W8366 [TopDog] 802.11n Wireless + 2a41 88W8366 [TopDog] 802.11n Wireless + 2a42 88W8366 [TopDog] 802.11n Wireless + 2a43 88W8366 [TopDog] 802.11n Wireless + 2a55 88W8864 [Avastar] 802.11ac Wireless + 2b36 88W8764 [Avastar] 802.11n Wireless + 2b38 88W8897 [AVASTAR] 802.11ac Wireless + 2b40 88W8964 [Avastar] 802.11ac Wireless + 4101 OLPC Cafe Controller Secure Digital Controller + 4146 GT-64111 System Controller + 4320 88E8001 Gigabit Ethernet Controller + 1019 0f38 Marvell 88E8001 Gigabit Ethernet Controller (ECS) + 1019 8001 Marvell 88E8001 Gigabit Ethernet Controller (ECS) + 1043 173c Marvell 88E8001 Gigabit Ethernet Controller (Asus) + 1043 811a Marvell 88E8001 Gigabit Ethernet Controller (Asus) + 105b 0c19 Marvell 88E8001 Gigabit Ethernet Controller (Foxconn) + 10b8 b452 EZ Card 1000 (SMC9452TXV.2) + 11ab 0121 Marvell RDK-8001 + 11ab 0321 Marvell RDK-8003 + 11ab 1021 Marvell RDK-8010 + 11ab 4320 Marvell Yukon Gigabit Ethernet 10/100/1000Baset-T Constroller (Asus) + 11ab 5021 Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (64 bit) + 11ab 9521 Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (32 bit) + 1458 e000 Marvell 88E8001 Gigabit Ethernet Controller (Gigabyte) + 147b 1406 Marvell 88E8001 Gigabit Ethernet Controller (Abit) + 15d4 0047 Marvell 88E8001 Gigabit Ethernet Controller (Iwill) + 1695 9025 Marvell 88E8001 Gigabit Ethernet Controller (Epox) + 17f2 1c03 Marvell 88E8001 Gigabit Ethernet Controller (Albatron) + 270f 2803 Marvell 88E8001 Gigabit Ethernet Controller (Chaintech) + 4340 88E8021 PCI-X IPMI Gigabit Ethernet Controller + 4341 88E8022 PCI-X IPMI Gigabit Ethernet Controller + 4342 88E8061 PCI-E IPMI Gigabit Ethernet Controller + 4343 88E8062 PCI-E IPMI Gigabit Ethernet Controller + 4344 88E8021 PCI-X IPMI Gigabit Ethernet Controller + 4345 88E8022 PCI-X IPMI Gigabit Ethernet Controller + 4346 88E8061 PCI-E IPMI Gigabit Ethernet Controller + 4347 88E8062 PCI-E IPMI Gigabit Ethernet Controller + 4c53 10d0 Telum ASLP10 PrAMC Gigabit Ethernet + 4350 88E8035 PCI-E Fast Ethernet Controller + 1179 0001 Marvell 88E8035 Fast Ethernet Controller (Toshiba) + 11ab 3521 Marvell RDK-8035 + 1854 000d Marvell 88E8035 Fast Ethernet Controller (LGE) + 1854 000e Marvell 88E8035 Fast Ethernet Controller (LGE) + 1854 000f Marvell 88E8035 Fast Ethernet Controller (LGE) + 1854 0011 Marvell 88E8035 Fast Ethernet Controller (LGE) + 1854 0012 Marvell 88E8035 Fast Ethernet Controller (LGE) + 1854 0016 Marvell 88E8035 Fast Ethernet Controller (LGE) + 1854 0017 Marvell 88E8035 Fast Ethernet Controller (LGE) + 1854 0018 Marvell 88E8035 Fast Ethernet Controller (LGE) + 1854 0019 Marvell 88E8035 Fast Ethernet Controller (LGE) + 1854 001c Marvell 88E8035 Fast Ethernet Controller (LGE) + 1854 001e Marvell 88E8035 Fast Ethernet Controller (LGE) + 1854 0020 Marvell 88E8035 Fast Ethernet Controller (LGE) + 4351 88E8036 PCI-E Fast Ethernet Controller + 107b 4009 Marvell 88E8036 Fast Ethernet Controller (Wistron) + 10f7 8338 Marvell 88E8036 Fast Ethernet Controller (Panasonic) + 1179 0001 Marvell 88E8036 Fast Ethernet Controller (Toshiba) + 1179 ff00 Marvell 88E8036 Fast Ethernet Controller (Compal) + 1179 ff10 Marvell 88E8036 Fast Ethernet Controller (Inventec) + 11ab 3621 Marvell RDK-8036 + 13d1 ac12 Abocom EFE3K - 10/100 Ethernet Expresscard + 161f 203d Marvell 88E8036 Fast Ethernet Controller (Arima) + 1854 000d Marvell 88E8036 Fast Ethernet Controller (LGE) + 1854 000e Marvell 88E8036 Fast Ethernet Controller (LGE) + 1854 000f Marvell 88E8036 Fast Ethernet Controller (LGE) + 1854 0011 Marvell 88E8036 Fast Ethernet Controller (LGE) + 1854 0012 Marvell 88E8036 Fast Ethernet Controller (LGE) + 1854 0016 Marvell 88E8036 Fast Ethernet Controller (LGE) + 1854 0017 Marvell 88E8036 Fast Ethernet Controller (LGE) + 1854 0018 Marvell 88E8036 Fast Ethernet Controller (LGE) + 1854 0019 Marvell 88E8036 Fast Ethernet Controller (LGE) + 1854 001c Marvell 88E8036 Fast Ethernet Controller (LGE) + 1854 001e Marvell 88E8036 Fast Ethernet Controller (LGE) + 1854 0020 Marvell 88E8036 Fast Ethernet Controller (LGE) + 4352 88E8038 PCI-E Fast Ethernet Controller + 4353 88E8039 PCI-E Fast Ethernet Controller + 104d 902d VAIO VGN-NR120E + 4354 88E8040 PCI-E Fast Ethernet Controller + 1028 022f Inspiron 1525 + 144d c06a R730 Laptop + 144d c072 Notebook N150P + 4355 88E8040T PCI-E Fast Ethernet Controller + 1179 ff50 Satellite P305D-S8995E + 4356 88EC033 PCI-E Fast Ethernet Controller + 4357 88E8042 PCI-E Fast Ethernet Controller + 435a 88E8048 PCI-E Fast Ethernet Controller + 4360 88E8052 PCI-E ASF Gigabit Ethernet Controller + 1043 8134 Marvell 88E8052 Gigabit Ethernet Controller (Asus) + 107b 4009 Marvell 88E8052 Gigabit Ethernet Controller (Wistron) + 11ab 5221 Marvell RDK-8052 + 1458 e000 Marvell 88E8052 Gigabit Ethernet Controller (Gigabyte) + 1462 052c Marvell 88E8052 Gigabit Ethernet Controller (MSI) + 1849 8052 Marvell 88E8052 Gigabit Ethernet Controller (ASRock) + a0a0 0509 Marvell 88E8052 Gigabit Ethernet Controller (Aopen) + 4361 88E8050 PCI-E ASF Gigabit Ethernet Controller + 107b 3015 Marvell 88E8050 Gigabit Ethernet Controller (Gateway) + 11ab 5021 Marvell 88E8050 Gigabit Ethernet Controller (Intel) + 8086 3063 D925XCVLK mainboard + 8086 3439 Marvell 88E8050 Gigabit Ethernet Controller (Intel) + 4362 88E8053 PCI-E Gigabit Ethernet Controller + 103c 2a0d Marvell 88E8053 Gigabit Ethernet Controller (Asus) + 1043 8142 Marvell 88E8053 Gigabit Ethernet controller PCIe (Asus) + 109f 3197 Marvell 88E8053 Gigabit Ethernet Controller (Trigem) + 10f7 8338 Marvell 88E8053 Gigabit Ethernet Controller (Panasonic) + 10fd a430 Marvell 88E8053 Gigabit Ethernet Controller (SOYO) + 1179 0001 Marvell 88E8053 Gigabit Ethernet Controller (Toshiba) + 1179 ff00 Marvell 88E8053 Gigabit Ethernet Controller (Compal) + 1179 ff10 Marvell 88E8053 Gigabit Ethernet Controller (Inventec) + 11ab 5321 Marvell RDK-8053 + 1297 c240 Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) + 1297 c241 Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) + 1297 c242 Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) + 1297 c243 Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) + 1297 c244 Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) + 13d1 ac11 EGE5K - Giga Ethernet Expresscard + 1458 e000 Marvell 88E8053 Gigabit Ethernet Controller (Gigabyte) + 1462 058c Marvell 88E8053 Gigabit Ethernet Controller (MSI) + 14c0 0012 Marvell 88E8053 Gigabit Ethernet Controller (Compal) + 1558 04a0 Marvell 88E8053 Gigabit Ethernet Controller (Clevo) + 15bd 1003 Marvell 88E8053 Gigabit Ethernet Controller (DFI) + 161f 203c Marvell 88E8053 Gigabit Ethernet Controller (Arima) + 161f 203d Marvell 88E8053 Gigabit Ethernet Controller (Arima) + 1695 9029 Marvell 88E8053 Gigabit Ethernet Controller (Epox) + 17f2 2c08 Marvell 88E8053 Gigabit Ethernet Controller (Albatron) + 17ff 0585 Marvell 88E8053 Gigabit Ethernet Controller (Quanta) + 1849 8053 Marvell 88E8053 Gigabit Ethernet Controller (ASRock) + 1854 000b Marvell 88E8053 Gigabit Ethernet Controller (LGE) + 1854 000c Marvell 88E8053 Gigabit Ethernet Controller (LGE) + 1854 0010 Marvell 88E8053 Gigabit Ethernet Controller (LGE) + 1854 0013 Marvell 88E8053 Gigabit Ethernet Controller (LGE) + 1854 0014 Marvell 88E8053 Gigabit Ethernet Controller (LGE) + 1854 0015 Marvell 88E8053 Gigabit Ethernet Controller (LGE) + 1854 001a Marvell 88E8053 Gigabit Ethernet Controller (LGE) + 1854 001b Marvell 88E8053 Gigabit Ethernet Controller (LGE) + 1854 001d Marvell 88E8053 Gigabit Ethernet Controller (LGE) + 1854 001f Marvell 88E8053 Gigabit Ethernet Controller (LGE) + 1854 0021 Marvell 88E8053 Gigabit Ethernet Controller (LGE) + 1854 0022 Marvell 88E8053 Gigabit Ethernet Controller (LGE) + 270f 2801 Marvell 88E8053 Gigabit Ethernet Controller (Chaintech) + a0a0 0506 Marvell 88E8053 Gigabit Ethernet Controller (Aopen) + 4363 88E8055 PCI-E Gigabit Ethernet Controller + 4364 88E8056 PCI-E Gigabit Ethernet Controller + 1043 81f8 Motherboard + 11ba 00ba 8056 Gigabit Ethernet Controller + 4365 88E8070 based Ethernet Controller + 4366 88EC036 PCI-E Gigabit Ethernet Controller + 4367 88EC032 Ethernet Controller + 4368 88EC034 Ethernet Controller + 4369 88EC042 Ethernet Controller + 436a 88E8058 PCI-E Gigabit Ethernet Controller + 11ab 00ba Imac 8,1 Wired Ethernet Adapter + 436b 88E8071 PCI-E Gigabit Ethernet Controller + 436c 88E8072 PCI-E Gigabit Ethernet Controller + 436d 88E8055 PCI-E Gigabit Ethernet Controller + 4370 88E8075 PCI-E Gigabit Ethernet Controller + 4380 88E8057 PCI-E Gigabit Ethernet Controller +# AVB = "Audio Video Bridging" + 4381 Yukon Optima 88E8059 [PCIe Gigabit Ethernet Controller with AVB] + 1259 2803 AT-2814FX + 1259 2804 AT-2874xx + 4611 GT-64115 System Controller + 4620 GT-64120/64120A/64121A System Controller + 4801 GT-48001 + 5005 Belkin F5D5005 Gigabit Desktop Network PCI Card + 5040 MV88SX5040 4-port SATA I PCI-X Controller + 5041 MV88SX5041 4-port SATA I PCI-X Controller + 5080 MV88SX5080 8-port SATA I PCI-X Controller + 5081 MV88SX5081 8-port SATA I PCI-X Controller + 5181 88f5181 [Orion-1] ARM SoC + 5182 88f5182 [Orion-NAS] ARM SoC + 5281 88f5281 [Orion-2] ARM SoC + 6041 MV88SX6041 4-port SATA II PCI-X Controller + 6042 88SX6042 PCI-X 4-Port SATA-II + 6081 MV88SX6081 8-port SATA II PCI-X Controller + 6101 88SE6101/6102 single-port PATA133 interface + 1043 82e0 P5K PRO Motherboard + 6121 88SE6111/6121 SATA II / PATA Controller +# 6111: 1 SATA port; 6121: 2 SATA ports + 11ab 6121 88SE6111/6121 1/2 port SATA II + 1 port PATA Controller + 6141 88SE614x SATA II PCI-E controller + 6145 88SE6145 SATA II PCI-E controller + 6180 88F6180 [Kirkwood] ARM SoC + 6192 88F6190/6192 [Kirkwood] ARM SoC + 6281 88F6281 [Kirkwood] ARM SoC +# This device ID was used for earlier chips. + 6381 MV78xx0 [Discovery Innovation] ARM SoC + 6440 88SE63x0 x1, 88SE6440 x4 PCIe SAS/SATA 3Gb/s RAID controller + 6450 64560 System Controller + 6460 MV64360/64361/64362 System Controller + 6480 MV64460/64461/64462 System Controller + 1775 c200 C2K CompactPCI single board computer + 6485 MV64460/64461/64462 System Controller, Revision B + 6560 88F6560 [Avanta] ARM SoC + 6710 88F6710 [Armada 370] ARM SoC + 6820 88F6820 [Armada 385] ARM SoC + 6828 88F6828 [Armada 388] ARM SoC + 6920 88F6920 [Armada 390] ARM SoC + 7042 88SX7042 PCIe 4-port SATA-II controller + 16b8 434b Tempo SATA E4P + 7810 MV78100 [Discovery Innovation] ARM SoC + 7820 MV78200 [Discovery Innovation] ARM SoC + 7823 MV78230 [Armada XP] ARM SoC + 7846 MV78460 [Armada XP] ARM SoC + d40f Bobcat3 Ethernet Switch + f003 GT-64010 Primary Image Piranha Image Generator +11ac Canon Information Systems Research Aust. +11ad Lite-On Communications Inc + 0002 LNE100TX + 11ad 0002 LNE100TX + 11ad 0003 LNE100TX + 11ad f003 LNE100TX + 11ad ffff LNE100TX + 1385 f004 FA310/TX LAN 10/100 PCI Ethernet Adapter + 2646 f002 KNE110TX EtheRx Fast Ethernet + c115 LNE100TX [Linksys EtherFast 10/100] + 11ad c001 LNE100TX [ver 2.0] + 2646 000b KNE111TX +11ae Aztech System Ltd +11af Avid Technology Inc. + 0001 Cinema + ee21 Digidesign DSP Farm + ee40 Digidesign Audiomedia III + ee60 Digidesign SampleCell II / II Plus +11b0 V3 Semiconductor Inc. + 0002 V300PSC + 0292 V292PBC [Am29030/40 Bridge] + 0960 V96xPBC + 880a Deltacast Delta-HD-22 + c960 V96DPC +11b1 Apricot Computers +11b2 Eastman Kodak +11b3 Barr Systems Inc. +11b4 Leitch Technology International +11b5 Radstone Technology Plc +11b6 United Video Corp +11b7 Motorola +11b8 XPoint Technologies, Inc + 0001 Quad PeerMaster +11b9 Pathlight Technology Inc. + c0ed SSA Controller +11ba Videotron Corp +11bb Pyramid Technology +11bc Network Peripherals Inc + 0001 NP-PCI +11bd Pinnacle Systems Inc. + 002e PCTV 40i + 0040 Royal TS Function 1 + 11bd 0044 PCTV 2000i Dual DVB-T Pro PCI Tuner 1 + 11bd 0045 PCTV Dual Sat Pro PCI 4000i Tuner 1 + 0041 RoyalTS Function 2 + 11bd 0044 PCTV 2000i Dual DVB-T Pro PCI Tuner 2 + 11bd 0045 PCTV Dual Sat Pro PCI 4000i Tuner 2 + 0042 Royal TS Function 3 + 11bd 0044 PCTV 2000i Dual DVB-T Pro PCI Common + 11bd 0045 PCTV Dual Sat Pro PCI 4000i Common + 0051 PCTV HD 800i + bede AV/DV Studio Capture Card +11be International Microcircuits Inc +11bf Astrodesign, Inc. +11c0 Hewlett Packard +# nee Agere Systems nee Lucent Microelectronics +11c1 LSI Corporation + 0440 56k WinModem + 1033 8015 LT WinModem 56k Data+Fax+Voice+Dsvd + 1033 8047 LT WinModem 56k Data+Fax+Voice+Dsvd + 1033 804f LT WinModem 56k Data+Fax+Voice+Dsvd + 10cf 102c LB LT Modem V.90 56k + 10cf 104a BIBLO LT Modem 56k + 10cf 105f LB2 LT Modem V.90 56k + 1179 0001 Internal V.90 Modem + 11c1 0440 LT WinModem 56k Data+Fax+Voice+Dsvd + 122d 4101 MDP7800-U Modem + 122d 4102 MDP7800SP-U Modem + 13e0 0040 LT WinModem 56k Data+Fax+Voice+Dsvd + 13e0 0440 LT WinModem 56k Data+Fax+Voice+Dsvd + 13e0 0441 LT WinModem 56k Data+Fax+Voice+Dsvd + 13e0 0450 LT WinModem 56k Data+Fax+Voice+Dsvd + 13e0 f100 LT WinModem 56k Data+Fax+Voice+Dsvd + 13e0 f101 LT WinModem 56k Data+Fax+Voice+Dsvd + 144d 2101 LT56PV Modem + 149f 0440 LT WinModem 56k Data+Fax+Voice+Dsvd + 0441 56k WinModem + 1033 804d LT WinModem 56k Data+Fax + 1033 8065 LT WinModem 56k Data+Fax + 1092 0440 Supra 56i + 1179 0001 Internal V.90 Modem + 11c1 0440 LT WinModem 56k Data+Fax + 11c1 0441 LT WinModem 56k Data+Fax + 122d 4100 MDP7800-U Modem + 13e0 0040 LT WinModem 56k Data+Fax + 13e0 0100 LT WinModem 56k Data+Fax + 13e0 0410 LT WinModem 56k Data+Fax + 13e0 0420 TelePath Internet 56k WinModem + 13e0 0440 LT WinModem 56k Data+Fax + 13e0 0443 LT WinModem 56k Data+Fax + 13e0 f102 LT WinModem 56k Data+Fax + 1416 9804 CommWave 56k Modem + 141d 0440 LT WinModem 56k Data+Fax + 144f 0441 Lucent 56k V.90 DF Modem + 144f 0449 Lucent 56k V.90 DF Modem + 144f 110d Lucent Win Modem + 1468 0441 Presario 56k V.90 DF Modem + 1668 0440 Lucent Win Modem + 0442 56k WinModem + 11c1 0440 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + 11c1 0442 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + 13e0 0412 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + 13e0 0442 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + 13fc 2471 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + 144d 2104 LT56PT Modem + 144f 1104 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + 149f 0440 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + 1668 0440 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + 0443 LT WinModem + 0444 LT WinModem + 0445 LT WinModem + 8086 2203 PRO/100+ MiniPCI (probably an Ambit U98.003.C.00 combo card) + 8086 2204 PRO/100+ MiniPCI on Armada E500 + 0446 LT WinModem + 0447 LT WinModem + 0448 WinModem 56k + 1014 0131 Lucent Win Modem + 1033 8066 LT WinModem 56k Data+Fax+Voice+Dsvd + 13e0 0030 56k Voice Modem + 13e0 0040 LT WinModem 56k Data+Fax+Voice+Dsvd +# Actiontech eth+modem card as used by Dell &c. + 1668 2400 LT WinModem 56k (MiniPCI Ethernet+Modem) + 0449 L56xM+S [Mars-2] WinModem 56k + 0e11 b14d 56k V.90 Modem + 1014 018c ThinkPad 600X + 13e0 0020 LT WinModem 56k Data+Fax + 13e0 0041 TelePath Internet 56k WinModem + 1436 0440 Lucent Win Modem + 144f 0449 Lucent 56k V.90 DFi Modem + 1468 0410 IBM ThinkPad T23 + 1468 0440 Lucent Win Modem + 1468 0449 Presario 56k V.90 DFi Modem + 044a F-1156IV WinModem (V90, 56KFlex) + 10cf 1072 LB Global LT Modem + 13e0 0012 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + 13e0 0042 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + 144f 1005 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + 044b LT WinModem + 044c LT WinModem + 044d LT WinModem + 044e LT WinModem + 044f V90 WildWire Modem + 0450 LT WinModem + 1033 80a8 Versa Note Vxi + 144f 4005 Magnia SG20 + 1468 0450 Evo N600c + 0451 LT WinModem + 0452 LT WinModem + 0453 LT WinModem + 0454 LT WinModem + 0455 LT WinModem + 0456 LT WinModem + 0457 LT WinModem + 0458 LT WinModem + 0459 LT WinModem + 045a LT WinModem + 045c LT WinModem + 0461 V90 WildWire Modem + 0462 V90 WildWire Modem + 0480 Venus Modem (V90, 56KFlex) + 048c V.92 56K WinModem +# InPorte Home Internal 56k Modem/fax/answering machine/SMS Features + 048f V.92 56k WinModem + 0620 Lucent V.92 Data/Fax Modem + 2600 StarPro26XX family (SP2601, SP2603, SP2612) DSP + 5400 OR3TP12 FPSC + 5656 Venus Modem + 5801 USB + 5802 USS-312 USB Controller + 5803 USS-344S USB Controller + 5811 FW322/323 [TrueFire] 1394a Controller + 103c 2a34 Pavilion a1677c + 103c 2a6f Asus IPIBL-LB Motherboard + 103c 2a9e Pavilion p6310f + 1043 8294 LSI FW322/323 IEEE 1394a FireWire Controller + 11bd 000e LSI FW323 + 8086 524c D865PERL mainboard + 9005 0033 Adaptec AFW-2100 (HP) 2102900-R + dead 0800 FireWire Host Bus Adapter + 5901 FW643 [TrueFire] PCIe 1394b Controller + 11c1 5900 FW643 [TrueFire] PCIe 1394b Controller + 1443 0643 FireBoard800-e V.2 + 1546 0643 FWB-PCIE1X2x + 5903 FW533 [TrueFire] PCIe 1394a Controller + 8110 T8110 H.100/H.110 TDM switch + 12d9 000c E1/T1 PMXc cPCI carrier card + ab10 WL60010 Wireless LAN MAC + ab11 WL60040 Multimode Wireles LAN MAC + 11c1 ab12 WaveLAN 11abg Cardbus card (Model 1102) + 11c1 ab13 WaveLAN 11abg MiniPCI card (Model 0512) + 11c1 ab15 WaveLAN 11abg Cardbus card (Model 1106) + 11c1 ab16 WaveLAN 11abg MiniPCI card (Model 0516) + ab20 ORiNOCO PCI Adapter + ab21 Agere Wireless PCI Adapter + ab30 Hermes2 Mini-PCI WaveLAN a/b/g + 14cd 2012 Hermes2 Mini-PCI WaveLAN a/b/g + ed00 ET-131x PCI-E Ethernet Controller + ed01 ET-131x PCI-E Ethernet Controller +11c2 Sand Microelectronics +11c3 NEC Corporation +11c4 Document Technologies, Inc +11c5 Shiva Corporation +11c6 Dainippon Screen Mfg. Co. Ltd +11c7 D.C.M. Data Systems +11c8 Dolphin Interconnect Solutions AS + 0658 PSB32 SCI-Adapter D31x + d665 PSB64 SCI-Adapter D32x + d667 PSB66 SCI-Adapter D33x +11c9 Magma + 0010 16-line serial port w/- DMA + 0011 4-line serial port w/- DMA +11ca LSI Systems, Inc +11cb Specialix Research Ltd. + 2000 PCI_9050 + 11cb 0200 SX + 11cb b008 I/O8+ + 4000 SUPI_1 + 8000 T225 +11cc Michels & Kleberhoff Computer GmbH +11cd HAL Computer Systems, Inc. +11ce Netaccess +11cf Pioneer Electronic Corporation +11d0 Lockheed Martin Federal Systems-Manassas +11d1 Auravision + 01f7 VxP524 + 01f9 VxP951 +11d2 Intercom Inc. +11d3 Trancell Systems Inc +11d4 Analog Devices + 1535 Blackfin BF535 processor + 1805 SM56 PCI modem +11d5 Ikon Corporation + 0115 10115 + 0117 10117 +11d6 Tekelec Telecom +11d7 Trenton Technology, Inc. +11d8 Image Technologies Development +11d9 TEC Corporation +11da Novell +11db Sega Enterprises Ltd +11dc Questra Corporation +11dd Crosfield Electronics Limited +11de Zoran Corporation + 6017 miroVIDEO DC30 + 6057 ZR36057PQC Video cutting chipset + 1031 7efe DC10 Plus + 1031 fc00 MiroVIDEO DC50, Motion JPEG Capture/CODEC Board + 12f8 8a02 Tekram Video Kit + 13ca 4231 JPEG/TV Card + 6120 ZR36120 + 1328 f001 Cinemaster C DVD Decoder + 13c2 0000 MediaFocus Satellite TV Card + 1de1 9fff Video Kit C210 +11df New Wave PDG +11e0 Cray Communications A/S +11e1 GEC Plessey Semi Inc. +11e2 Samsung Information Systems America +11e3 Quicklogic Corporation + 0001 COM-ON-AIR Dosch&Amand DECT + 0010 QL5032 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM + 0011 QL5032 (PBGA256) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM + 0012 QL5232 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM + 11e3 1204 Becker & Hickl SPC-130 + 11e3 1207 Becker & Hickl DDG-200 + 11e3 1209 Becker & Hickl SHM-180 + 11e3 120c Becker & Hickl PMM-428 + 0013 QL5232 (PBGA456) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM + 0014 QL5030 (TQFP144) [QuickPCI] 33 MHz/32-bit PCI Target with Embedded Programmable Logic and Dual Port SRAM + 0015 QL5130 (TQFP144) [QuickPCI] 33 MHz/32-bit PCI Target with Embedded Programmable Logic and Dual Port SRAM + 0016 QL5130 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Target with Embedded Programmable Logic and Dual Port SRAM + 11e3 120b Becker & Hickl DEL-350 + 0017 QL5130 (PBGA256) [QuickPCI] 33 MHz/32-bit PCI Target with Embedded Programmable Logic and Dual Port SRAM + 0019 QL5332 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM + 001a QL5332 (PBGA256) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM + 001b QL5432 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM + 11e3 120d Becker & Hickl SPC-140 + 11e3 1211 Becker & Hickl GVD-120 + 11e3 1212 Becker & Hickl DDG-210 + 001c QL5432 (PBGA456) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM + 001d QL5632 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM + 001e QL5632 (PBGA280) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM + 001f QL5632 (PBGA484) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM + 0020 QL5632 (PBGA516) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM + 0021 QL5732 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM + 0022 QL5732 (PBGA280) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM + 0023 QL5732 (PBGA484) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM + 0024 QL5732 (PBGA516) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM + 002d QL5022 (TQFP144) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM + 002e QL5022 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM + 002f QL5020 (TQFP144) [QuickPCI] 33 MHz/32-bit PCI Target with Embedded Programmable Logic and Dual Port SRAM + 0030 QL5020 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Target with Embedded Programmable Logic and Dual Port SRAM + 0560 QL5064 Companion Design Demo Board + 5030 PC Watchdog + 8417 QL5064 [QuickPCI] PCI v2.2 bridge for SMT417 Dual TMS320C6416T PMC Module +11e4 Second Wave Inc +11e5 IIX Consulting +11e6 Mitsui-Zosen System Research +11e7 Toshiba America, Elec. Company +11e8 Digital Processing Systems Inc. +11e9 Highwater Designs Ltd. +11ea Elsag Bailey +11eb Formation Inc. +11ec Coreco Inc + 000d Oculus-F/64P + 1800 Cobra/C6 +11ed Mediamatics +11ee Dome Imaging Systems Inc +11ef Nicolet Technologies B.V. +11f0 Compu-Shack + 4231 FDDI + 4232 FASTline UTP Quattro + 4233 FASTline FO + 4234 FASTline UTP + 4235 FASTline-II UTP + 4236 FASTline-II FO + 4731 GIGAline +11f1 Symbios Logic Inc +11f2 Picture Tel Japan K.K. +11f3 Keithley Metrabyte + 0011 KPCI-PIO24 +11f4 Kinetic Systems Corporation + 2915 CAMAC controller +11f5 Computing Devices International +11f6 Compex + 0112 ENet100VG4 + 0113 FreedomLine 100 + 1401 ReadyLink 2000 + 2011 RL100-ATX 10/100 + 11f6 2011 RL100-ATX + 2201 ReadyLink 100TX (Winbond W89C840) + 11f6 2011 ReadyLink 100TX + 9881 RL100TX Fast Ethernet +11f7 Scientific Atlanta +11f8 PMC-Sierra Inc. + 5220 BR522x [PMC-Sierra maxRAID SAS Controller] + 7364 PM7364 [FREEDM - 32 Frame Engine & Datalink Mgr] + 7375 PM7375 [LASAR-155 ATM SAR] + 7384 PM7384 [FREEDM - 84P672 Frm Engine & Datalink Mgr] + 8000 PM8000 [SPC - SAS Protocol Controller] + 8009 PM8009 SPCve 8x6G + 8018 PM8018 Adaptec SAS Adaptor ASA-70165H PCIe Gen3 x8 6 Gbps 16-lane 4x SFF-8644 + 8032 PM8032 Tachyon QE8 + 117c 003a Celerity FC-81EN Fibre Channel Adapter + 117c 003b Celerity FC-82EN Fibre Channel Adapter + 117c 003c Celerity FC-84EN Fibre Channel Adapter + 117c 403b ThunderLink FC 1082 Fibre Channel Adapter + 8053 PM8053 SXP 12G 24-port SAS/SATA expander + 8054 PM8054 SXP 12G 36-port SAS/SATA expander + 8055 PM8055 SXP 12G 48-port SAS/SATA expander + 8056 PM8056 SXP 12G 68-port SAS/SATA expander + 8060 PM8060 SRCv 12G eight-port SAS/SATA RoC + 8063 PM8063 SRCv 12G 16-port SAS/SATA RoC + 8070 PM8070 Tachyon SPCv 12G eight-port SAS/SATA controller + 8071 PM8071 Tachyon SPCve 12G eight-port SAS/SATA controller + 8072 PM8072 Tachyon SPCv 12G 16-port SAS/SATA controller + 8073 PM8073 Tachyon SPCve 12G 16-port SAS/SATA controller + 8531 PM8531 PFX 24xG3 PCIe Fanout Switch + 8532 PM8532 PFX 32xG3 PCIe Fanout Switch + 8533 PM8533 PFX 48xG3 PCIe Fanout Switch + 8534 PM8534 PFX 64xG3 PCIe Fanout Switch + 8535 PM8535 PFX 80xG3 PCIe Fanout Switch + 8536 PM8536 PFX 96xG3 PCIe Fanout Switch + 1bd4 0081 PM8536 PFX 96xG3 PCIe Fanout Switch + 8546 PM8546 B-FEIP PSX 96xG3 PCIe Storage Switch + 8562 PM8562 Switchtec PFX-L 32xG3 Fanout-Lite PCIe Gen3 Switch +11f9 I-Cube Inc +11fa Kasan Electronics Company, Ltd. +11fb Datel Inc +11fc Silicon Magic +11fd High Street Consultants +# nee Comtrol, Inc. +11fe Pepperl+Fuchs + 0001 RocketPort PCI 32-port w/external I/F + 0002 RocketPort PCI 8-port w/external I/F + 0003 RocketPort PCI 16-port w/external I/F + 0004 RocketPort PCI 4-port w/Quad Cable + 0005 RocketPort PCI 8-port w/Octa Cable + 0006 RocketPort PCI 8-port w/RJ11 connectors + 0007 RocketPort PCI 4-port w/RJ45 connectors + 0008 RocketPort PCI 8-port w/DB78 SNI connector (Siemens) + 0009 RocketPort PCI 16-port w/DB78 SNI connector (Siemens) + 000a RocketPort PCI Plus 4-port w/Quad Cable + 000b RocketPort PCI Plus 8-port w/Octa Cable + 000c RocketModem II 6-port + 000d RocketModem 4-port + 000e RocketPort PCI Plus 2-port RS-232 w/DB9 connectors + 000f RocketPort PCI Plus 2-port SMPTE w/DB9 connectors + 0040 RocketPort INFINITY 8-port w/Octa Cable RJ45 + 0041 RocketPort INFINITY 32-port w/external I/F + 0042 RocketPort INFINITY 8-port w/external I/F + 0043 RocketPort INFINITY 16-port w/external I/F + 0044 RocketPort INFINITY 4-port w/Quad Cable DB + 0045 RocketPort INFINITY 8-port w/Octa Cable DB + 0046 RocketPort INFINITY 4-port w/external I/F + 0047 RocketPort INFINITY 4J (4-port) w/RJ45 connectors + 0048 RocketPort INFINITY 4J (4-port) w/RJ45 connectors + 004a RocketPort INFINITY Plus 4-port + 004b RocketPort INFINITY Plus 8-port + 004c RocketModem INFINITY III 8-port + 004d RocketModem INFINITY III 4-port + 004e RocketPort INFINITY Plus 2-port + 004f RocketPort INFINITY 2-port SMPTE w/DB9 connectors + 0050 RocketPort INFINITY Plus 4-port RJ45 + 0051 RocketPort INFINITY Plus 8-port RJ11 + 0052 RocketPort INFINITY 8-port SMPTE w/DB9 Connectors + 0060 RocketPort EXPRESS 8-port w/Octa Cable + 0061 RocketPort EXPRESS 32-port w/external I/F + 0062 RocketPort EXPRESS 8-Port w/external I/F + 0063 RocketPort EXPRESS 16-port w/external I/F + 0064 RocketPort EXPRESS 4-port w/Quad Cable + 0065 RocketPort EXPRESS 8-port w/Octa Cable + 0066 RocketPort EXPRESS 4-port w/external I/F + 0067 RocketPort EXPRESS 4J (4-port) w/RJ45 connectors + 0068 RocketPort EXPRESS 8J (8-port) w/RJ11 connectors + 006f RocketPort EXPRESS SMPTE 2-port + 0072 RocketPort EXPRESS SMPTE 8-port w/external I/F + 0801 RocketPort uPCI 32-port w/external I/F + 0802 RocketPort uPCI 8-port w/external I/F + 0803 RocketPort uPCI 16-port w/external I/F + 0805 RocketPort uPCI 8-port w/Octa Cable + 080b RocketPort Plus uPCI 8-port w/Octa Cable + 080c RocketModem III 8-port + 080d RocketModem III 4-port + 080e RocketPort uPCI 2-port RS232 w/DB9 connectors + 080f RocketPort uPCI SMPTE 2-port + 0810 RocketPort Plus uPCI 4J (4-port) w/RJ45 connectors + 0811 RocketPort Plus uPCI 8J (8-port) w/RJ11 connectors + 0812 RocketPort Plus uPCI 422 8-port + 0813 RocketModem IV uPCI 8-port + 0814 RocketModem IV uPCI 4-port + 0903 RocketPort Compact PCI 16 port w/external I/F +# 16954 UART + 8015 RocketPort 550 4-port + 8805 RocketPort uPCI 4-port w/Quad Cable + 880b RocketPort Plus uPCI 4-port w/Quad Cable + 8812 RocketPort Plus uPCI 4-port RS422 w/Quad Cable +11ff Scion Corporation + 0003 AG-5 +1200 CSS Corporation +1201 Vista Controls Corp +1202 Network General Corp. + 4300 Gigabit Ethernet Adapter + 1202 9841 SK-9841 LX + 1202 9842 SK-9841 LX dual link + 1202 9843 SK-9843 SX + 1202 9844 SK-9843 SX dual link +1203 Bayer Corporation, Agfa Division +1204 Lattice Semiconductor Corporation + 1965 SB6501 802.11ad Wireless Network Adapter +1205 Array Corporation +1206 Amdahl Corporation +1208 Parsytec GmbH + 4853 HS-Link Device +1209 SCI Systems Inc +120a Synaptel +120b Adaptive Solutions +120c Technical Corp. +120d Compression Labs, Inc. +120e Cyclades Corporation + 0100 Cyclom-Y below first megabyte + 0101 Cyclom-Y above first megabyte + 0102 Cyclom-4Y below first megabyte + 0103 Cyclom-4Y above first megabyte + 0104 Cyclom-8Y below first megabyte + 0105 Cyclom-8Y above first megabyte + 0200 Cyclades-Z below first megabyte + 0201 Cyclades-Z above first megabyte + 0300 PC300/RSV or /X21 (2 ports) + 0301 PC300/RSV or /X21 (1 port) + 0310 PC300/TE (2 ports) + 0311 PC300/TE (1 port) + 0320 PC300/TE-M (2 ports) + 0321 PC300/TE-M (1 port) + 0400 PC400 +120f Essential Communications + 0001 Roadrunner serial HIPPI +1210 Hyperparallel Technologies +1211 Braintech Inc +1213 Applied Intelligent Systems, Inc. +1214 Performance Technologies, Inc. +1215 Interware Co., Ltd +1216 Purup Prepress A/S +1217 O2 Micro, Inc. + 00f7 Firewire (IEEE 1394) + 1071 8209 Medion MIM 2240 Notebook PC [MD98100] + 1179 ff50 Satellite P305D-S8995E + 10f7 1394 OHCI Compliant Host Controller + 11f7 OZ600 1394a-2000 Controller + 1028 04a3 Precision M4600 + 13f7 1394 OHCI Compliant Host Controller + 6729 OZ6729 + 673a OZ6730 + 6832 OZ6832/6833 CardBus Controller [Saturn] + 6836 OZ6836/6860 CardBus Controller [Mercury] + 6872 OZ6812 CardBus Controller [Challenger] + 6925 OZ6922 CardBus Controller + 6933 OZ6933/711E1 CardBus/SmartCardBus Controller + 1025 1016 Travelmate 612 TX + 6972 OZ601/6912/711E0 CardBus/SmartCardBus Controller + 1014 020c ThinkPad R30 + 1028 0152 Latitude D500 + 1179 0001 Magnia Z310 + 7110 OZ711Mx 4-in-1 MemoryCardBus Accelerator + 103c 088c NC8000 laptop + 103c 0890 NC6000 laptop + 1734 106c Amilo A1645 + 7112 OZ711EC1/M1 SmartCardBus/MemoryCardBus Controller + 7113 OZ711EC1 SmartCardBus Controller + 1025 0035 TravelMate 660 + 7114 OZ711M1/MC1 4-in-1 MemoryCardBus Controller + 7120 Integrated MMC/SD Controller + 1071 8209 Medion MIM 2240 Notebook PC [MD98100] + 1179 ff50 Satellite P305D-S8995E + 7130 Integrated MS/xD Controller + 1071 8209 Medion MIM 2240 Notebook PC [MD98100] + 1179 ff50 Satellite P305D-S8995E + 7134 OZ711MP1/MS1 MemoryCardBus Controller + 7135 Cardbus bridge + 7136 OZ711SP1 Memory CardBus Controller + 71e2 OZ711E2 SmartCardBus Controller + 7212 OZ711M2 4-in-1 MemoryCardBus Controller + 7213 OZ6933E CardBus Controller + 7223 OZ711M3/MC3 4-in-1 MemoryCardBus Controller + 103c 088c NC8000 laptop + 103c 0890 NC6000 laptop + 10cf 11c4 Lifebook P5020D Laptop + 7233 OZ711MP3/MS3 4-in-1 MemoryCardBus Controller + 8120 Integrated MMC/SD Controller + 8130 Integrated MS/MSPRO/xD Controller + 8220 OZ600FJ1/OZ900FJ1 SD/MMC Card Reader Controller + 8221 OZ600FJ0/OZ900FJ0/OZ600FJS SD/MMC Card Reader Controller + 8320 OZ600RJ1/OZ900RJ1 SD/MMC Card Reader Controller + 1028 04a3 Precision M4600 + 8321 OZ600RJ0/OZ900RJ0/OZ600RJS SD/MMC Card Reader Controller + 8330 OZ600 MS/xD Controller + 1028 04a3 Precision M4600 + 8331 O2 Flash Memory Card + 8520 SD/MMC Card Reader Controller + 8621 SD/MMC Card Reader Controller + 17aa 5068 Thinkpad E480/E580 + 8760 FORESEE E2M2 NVMe SSD +1218 Hybricon Corp. +1219 First Virtual Corporation +121a 3Dfx Interactive, Inc. + 0001 Voodoo + 0002 Voodoo 2 + 0003 Voodoo Banshee + 1092 0003 Monster Fusion + 1092 4000 Monster Fusion + 1092 4002 Monster Fusion + 1092 4801 Monster Fusion AGP + 1092 4803 Monster Fusion AGP + 1092 8030 Monster Fusion + 1092 8035 Monster Fusion AGP + 10b0 0001 Dragon 4000 + 1102 1017 3D Blaster Banshee PCI (CT6760) + 1102 1018 3D Blaster Banshee VE + 121a 0001 Voodoo Banshee AGP + 121a 0003 Voodoo Banshee AGP SGRAM + 121a 0004 Voodoo Banshee + 139c 0016 Raven + 139c 0017 Raven + 14af 0002 Maxi Gamer Phoenix + 0004 Voodoo Banshee [Velocity 100] + 0005 Voodoo 3 + 121a 0004 Voodoo3 AGP + 121a 0030 Voodoo3 AGP + 121a 0031 Voodoo3 AGP + 121a 0034 Voodoo3 AGP + 121a 0036 Voodoo3 2000 PCI + 121a 0037 Voodoo3 AGP + 121a 0038 Voodoo3 AGP + 121a 003a Voodoo3 AGP + 121a 0044 Voodoo3 + 121a 004b Velocity 100 + 121a 004c Velocity 200 + 121a 004d Voodoo3 AGP + 121a 004e Voodoo3 AGP + 121a 0051 Voodoo3 AGP + 121a 0052 Voodoo3 AGP + 121a 0057 Voodoo3 3000 PCI + 121a 0060 Voodoo3 3500 TV (NTSC) + 121a 0061 Voodoo3 3500 TV (PAL) + 121a 0062 Voodoo3 3500 TV (SECAM) + 0009 Voodoo 4 / Voodoo 5 + 121a 0003 Voodoo5 PCI 5500 + 121a 0009 Voodoo5 AGP 5500/6000 + 0057 Voodoo 3/3000 [Avenger] +121b Advanced Telecommunications Modules +121c Nippon Texaco., Ltd +121d LiPPERT ADLINK Technology GmbH +121e CSPI + 0201 Myrinet 2000 Scalable Cluster Interconnect +121f Arcus Technology, Inc. +1220 Ariel Corporation + 1220 AMCC 5933 TMS320C80 DSP/Imaging board +1221 Contec Co., Ltd + 9172 PO-64L(PCI)H [Isolated Digital Output Board for PCI] + 91a2 PO-32L(PCI)H [Isolated Digital Output Board for PCI] + 91c3 DA16-16(LPCI)L [Un-insulated highly precise analog output board for Low Profile PCI] + b152 DIO-96D2-LPCI + c103 ADA16-32/2(PCI)F [High-Speed Analog I/O Board for PCI] +1222 Ancor Communications, Inc. +1223 Artesyn Communication Products + 0003 PM/Link + 0004 PM/T1 + 0005 PM/E1 + 0008 PM/SLS + 0009 BajaSpan Resource Target + 000a BajaSpan Section 0 + 000b BajaSpan Section 1 + 000c BajaSpan Section 2 + 000d BajaSpan Section 3 + 000e PM/PPC +1224 Interactive Images +1225 Power I/O, Inc. +1227 EIZO Rugged Solutions + 0006 Raptor GFX 8P + 0023 Raptor GFX [1100T] + 0045 Raptor 4000-L [Linux version] + 004a Raptor 4000-LR-L [Linux version] +1228 Norsk Elektro Optikk A/S +1229 Data Kinesis Inc. +122a Integrated Telecom +122b LG Industrial Systems Co., Ltd +122c Sican GmbH +122d Aztech System Ltd + 1206 368DSP + 1400 Trident PCI288-Q3DII (NX) + 50dc 3328 Audio + 122d 0001 3328 Audio + 80da 3328 Audio + 122d 0001 3328 Audio +122e Xyratex + 7722 Napatech XL1 + 7724 Napatech XL2/XA + 7729 Napatech XD +122f Andrew Corporation +1230 Fishcamp Engineering +1231 Woodward McCoach, Inc. + 04e1 Desktop PCI Telephony 4 + 05e1 Desktop PCI Telephony 5/6 + 0d00 LightParser + 0d02 LightParser 2 + 0d13 Desktop PCI L1/L3 Telephony +1232 GPT Limited +1233 Bus-Tech, Inc. +# nee Risq Modular Systems, Inc. +1235 SMART Modular Technologies +1236 Sigma Designs Corporation + 0000 RealMagic64/GX + 6401 REALmagic 64/GX (SD 6425) +1237 Alta Technology Corporation +1238 Adtran +1239 3DO Company +123a Visicom Laboratories, Inc. +123b Seeq Technology, Inc. +123c Century Systems, Inc. +123d Engineering Design Team, Inc. + 0000 EasyConnect 8/32 + 0002 EasyConnect 8/64 + 0003 EasyIO + 0047 PCIe4 CDa + 004b PCIe4 CDa 16 + 009d VisionLink F1 + 00a0 PCIe8g3 S5 (10G/40G) + 00a3 VisionLink F4 + 00a9 VisionLink CLS + 00ab PCIe8g3 A5 10G + 00b5 PCIe8 RFx SDR +123e Simutech, Inc. +# nee C-Cube Microsystems / acquired by Magnum Semiconductor +123f LSI Logic + 00e4 MPEG + 8120 DVxplore Codec + 10de 01e1 NVTV PAL + 10de 01e2 NVTV NTSC + 10de 01e3 NVTV PAL + 10de 0248 NVTV NTSC + 10de 0249 NVTV PAL + 11bd 0006 DV500 E4 + 11bd 000a DV500 E4 + 11bd 000f DV500 E4 + 1809 0016 Emuzed MAUI-III PCI PVR FM TV + 8888 Cinemaster C 3.0 DVD Decoder + 1002 0001 Cinemaster C 3.0 DVD Decoder + 1002 0002 Cinemaster C 3.0 DVD Decoder + 1328 0001 Cinemaster C 3.0 DVD Decoder +1240 Marathon Technologies Corp. +1241 DSC Communications +# Formerly Jaycor Networks, Inc. +1242 JNI Corporation + 1560 JNIC-1560 PCI-X Fibre Channel Controller + 1242 6562 FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter + 1242 656a FCX-6562 PCI-X Fibre Channel Adapter + 4643 FCI-1063 Fibre Channel Adapter + 6562 FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter + 656a FCX-6562 PCI-X Fibre Channel Adapter +1243 Delphax +# Audio-Visuelles Marketing und Computersysteme +1244 AVM GmbH + 0700 B1 ISDN + 0800 C4 ISDN + 0a00 A1 ISDN [Fritz] + 1244 0a00 FRITZ!Card ISDN Controller + 0e00 Fritz!Card PCI v2.0 ISDN + 0e80 Fritz!Card PCI v2.1 ISDN + 1244 0e00 PSB 3100F (AVM KAFKA) [Fritz!Card PCI v2.1] + 1100 C2 ISDN + 1200 T1 ISDN + 2700 Fritz!Card DSL SL + 2900 Fritz!Card DSL v2.0 +1245 A.P.D., S.A. +1246 Dipix Technologies, Inc. +1247 Xylon Research, Inc. +1248 Central Data Corporation +1249 Samsung Electronics Co., Ltd. +124a AEG Electrocom GmbH +124b SBS/Greenspring Modular I/O + 0040 PCI-40A or cPCI-200 Quad IndustryPack carrier + 124b 9080 PCI9080 Bridge +124c Solitron Technologies, Inc. +124d Stallion Technologies, Inc. + 0000 EasyConnection 8/32 + 0002 EasyConnection 8/64 + 0003 EasyIO + 0004 EasyConnection/RA +124e Cylink +124f Infortrend Technology, Inc. + 0041 IFT-2000 Series RAID Controller +1250 Hitachi Microcomputer System Ltd +1251 VLSI Solutions Oy +1253 Guzik Technical Enterprises +1254 Linear Systems Ltd. + 0065 DVB Master FD + 007c DVB Master Quad/o +1255 Optibase Ltd + 1110 MPEG Forge + 1210 MPEG Fusion + 2110 VideoPlex + 2120 VideoPlex CC + 2130 VideoQuest +1256 Perceptive Solutions, Inc. + 4201 PCI-2220I + 4401 PCI-2240I + 5201 PCI-2000 +1257 Vertex Networks, Inc. +1258 Gilbarco, Inc. +# nee Allied Telesyn International +1259 Allied Telesis + 2560 AT-2560 Fast Ethernet Adapter (i82557B) + 2801 AT-2801FX (RTL-8139) + a117 RTL81xx Fast Ethernet + a11e RTL81xx Fast Ethernet + a120 21x4x DEC-Tulip compatible 10/100 Ethernet +125a ABB Power Systems +125b Asix Electronics Corporation + 1400 AX88141 Fast Ethernet Controller + 1186 1100 AX8814X Based PCI Fast Ethernet Adapter + 9100 AX99100 PCIe to Multi I/O Controller + a000 1000 Serial Port + a000 2000 Parallel Port + a000 6000 SPI + a000 7000 Local Bus + ea50 1c10 RXi2-BP +125c Aurora Technologies, Inc. + 0101 Saturn 4520P + 0640 Aries 16000P +125d ESS Technology + 0000 ES336H Fax Modem (Early Model) + 1948 ES1948 Maestro-1 + 1968 ES1968 Maestro 2 + 1028 0085 ES1968 Maestro-2 PCI + 1033 8051 ES1968 Maestro-2 Audiodrive + 1969 ES1938/ES1946/ES1969 Solo-1 Audiodrive + 1014 0166 ES1969 SOLO-1 AudioDrive on IBM Aptiva Mainboard + 125d 8888 Solo-1 Audio Adapter + 125d 8898 ES1938S TTSOLO1-SL [TerraTec 128i PCI] + 153b 111b Terratec 128i PCI + 1978 ES1978 Maestro 2E + 0e11 b112 Armada M700/E500 + 1033 803c ES1978 Maestro-2E Audiodrive + 1033 8058 ES1978 Maestro-2E Audiodrive + 1092 4000 Monster Sound MX400 + 1179 0001 ES1978 Maestro-2E Audiodrive + 1988 ES1988 Allegro-1 + 0e11 0098 Evo N600c + 1092 4100 Sonic Impact S100 + 125d 0431 Allegro AudioDrive + 125d 1988 ESS Allegro-1 Audiodrive + 125d 1998 Allegro AudioDrive + 125d 1999 Allegro-1 AudioDrive + 1989 ESS Modem + 125d 1989 ESS Modem + 1998 ES1983S Maestro-3i PCI Audio Accelerator + 1028 00b1 Latitude C600 + 1028 00e5 Latitude C810 + 1028 00e6 ES1983S Maestro-3i (Dell Inspiron 8100) + 1999 ES1983S Maestro-3i PCI Modem Accelerator + 199a ES1983S Maestro-3i PCI Audio Accelerator + 199b ES1983S Maestro-3i PCI Modem Accelerator + 2808 ES336H Fax Modem (Later Model) + 2838 ES2838/2839 SuperLink Modem + 2898 ES2898 Modem + 125d 0424 ES56-PI Data Fax Modem + 125d 0425 ES56T-PI Data Fax Modem + 125d 0426 ES56V-PI Data Fax Modem + 125d 0427 VW-PI Data Fax Modem + 125d 0428 ES56ST-PI Data Fax Modem + 125d 0429 ES56SV-PI Data Fax Modem + 147a c001 ES56-PI Data Fax Modem + 148d 1030 HCF WV-PI56 [ESS ES56-PI Data Fax Modem] + 14fe 0428 ES56-PI Data Fax Modem + 14fe 0429 ES56-PI Data Fax Modem +125e Specialvideo Engineering SRL +125f Concurrent Technologies, Inc. +# 4x serial ports, 2x printer ports + 2071 CC PMC/232 +# 4x serial ports, 2x printer ports + 2084 CC PMC/23P +# 4x serial ports, RS422 + 2091 CC PMC/422 +1260 Intersil Corporation + 3872 ISL3872 [Prism 3] + 1468 0202 LAN-Express IEEE 802.11b Wireless LAN + 3873 ISL3874 [Prism 2.5]/ISL3872 [Prism 3] + 10cf 1169 MBH7WM01-8734 802.11b Wireless Mini PCI Card [ISL3874] + 1186 3501 DWL-520 Wireless PCI Adapter (rev A or B) [ISL3874] + 1186 3700 DWL-520 Wireless PCI Adapter (rev E1) [ISL3872] + 1385 4105 MA311 802.11b wireless adapter [ISL3874] + 1668 0414 HWP01170-01 802.11b PCI Wireless Adapter + 16a5 1601 AIR.mate PC-400 PCI Wireless LAN Adapter + 1737 3874 WMP11 v1 802.11b Wireless-B PCI Adapter [ISL3874] + 4033 7033 PCW200 802.11b Wireless PCI Adapter [ISL3874] + 8086 2510 M3AWEB Wireless 802.11b MiniPCI Adapter + 8086 2513 Wireless 802.11b MiniPCI Adapter + 3877 ISL3877 [Prism Indigo] + 3886 ISL3886 [Prism Javelin/Prism Xbow] + 17cf 0037 XG-901 and clones Wireless Adapter + 3890 ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] + 10b8 2802 SMC2802W V1 Wireless PCI Adapter [ISL3890] + 10b8 2835 SMC2835W Wireless Cardbus Adapter + 10b8 a835 SMC2835W V2 Wireless Cardbus Adapter + 1113 4203 WN4201B + 1113 8201 T-Com T-Sinus 154pcicard Wireless PCI Adapter + 1113 b301 T-Sinus 154card Cardbus + 1113 ee03 SMC2802W V2 Wireless PCI Adapter [ISL3886] + 1113 ee08 SMC2835W V3 EU Wireless Cardbus Adapter + 1186 3202 DWL-G650 A1 Wireless Adapter + 1259 c104 CG-WLCB54GT Wireless Adapter + 1260 0000 WG511 v1 54 Mbps Wireless PC Card + 1385 4800 WG511 v2/v3 54 Mbps Wireless PC Card + 16a5 1605 ALLNET ALL0271 Wireless PCI Adapter + 17cf 0014 XG-600 and clones Wireless Adapter + 17cf 0020 XG-900 and clones Wireless Adapter + 187e 3403 G-110 802.11g Wireless Cardbus Adapter + 8130 HMP8130 NTSC/PAL Video Decoder + 8131 HMP8131 NTSC/PAL Video Decoder +# This is probably more likely a HW fault, but I am keeping it for now --mj + ffff ISL3886IK + 1260 0000 Senao 3054MP+ (J) mini-PCI WLAN 802.11g adapter +1261 Matsushita-Kotobuki Electronics Industries, Ltd. +1262 ES Computer Company, Ltd. +1263 Sonic Solutions +1264 Aval Nagasaki Corporation +1265 Casio Computer Co., Ltd. +1266 Microdyne Corporation + 0001 NE10/100 Adapter (i82557B) + 1910 NE2000Plus (RT8029) Ethernet Adapter + 1266 1910 NE2000Plus Ethernet Adapter +1267 S. A. Telecommunications + 5352 PCR2101 + 5a4b Telsat Turbo +1268 Tektronix +# nee Thomson-CSF/TTM +1269 Thales +# MBIM on top of MHI + 00b3 5G Data Card [Cinterion MV31-W] +126a Lexmark International, Inc. +126b Adax, Inc. +126c Northern Telecom + 1211 10/100BaseTX [RTL81xx] + 126c 802.11b Wireless Ethernet Adapter +126d Splash Technology, Inc. +126e Sumitomo Metal Industries, Ltd. +126f Silicon Motion, Inc. + 0501 SM501 VoyagerGX Rev. AA + 0510 SM501 VoyagerGX Rev. B + 0710 SM710 LynxEM + 0712 SM712 LynxEM+ + 0718 SM718 LynxSE+ + 0720 SM720 Lynx3DM + 0730 SM731 Cougar3DR + 0750 SM750 + 0768 SM768 + 0810 SM810 LynxE + 0811 SM811 LynxE + 0820 SM820 Lynx3D + 0910 SM910 + 2260 SM2260 NVMe SSD Controller + 2261 SM2261XT x2 NVMe SSD Controller (DRAM-less) + 2262 SM2262/SM2262EN SSD Controller + 2263 SM2263EN/SM2263XT (DRAM-less) NVMe SSD Controllers + 2269 SM2269XT (DRAM-less) NVMe SSD Controller + 8366 SM8366 NVMe SSD Controller [MonTitan] +1270 Olympus Optical Co., Ltd. +1271 GW Instruments +1272 Telematics International +1273 Hughes Network Systems + 0002 DirecPC +1274 Ensoniq + 1171 ES1373 / Creative Labs CT5803 [AudioPCI] + 1371 ES1371/ES1373 / Creative Labs CT2518 + 0e11 0024 AudioPCI on Motherboard Compaq Deskpro + 0e11 b1a7 ES1371, ES1373 AudioPCI + 1033 80ac ES1371, ES1373 AudioPCI + 1042 1854 Tazer + 107b 8054 Tabor2 + 1274 1371 Audio PCI 64V/128/5200 / Creative CT4810/CT5803/CT5806 [Sound Blaster PCI] + 1274 8001 CT4751 board + 1462 6470 ES1371, ES1373 AudioPCI On Motherboard MS-6147 1.1A + 1462 6560 ES1371, ES1373 AudioPCI On Motherboard MS-6156 1.10 + 1462 6630 ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 1.0A + 1462 6631 ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 1.0A + 1462 6632 ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 2.0A + 1462 6633 ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 2.0A + 1462 6820 ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00 + 1462 6822 ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00A + 1462 6830 ES1371, ES1373 AudioPCI On Motherboard MS-6183 1.00 + 1462 6880 ES1371, ES1373 AudioPCI On Motherboard MS-6188 1.00 + 1462 6900 ES1371, ES1373 AudioPCI On Motherboard MS-6190 1.00 + 1462 6910 ES1371, ES1373 AudioPCI On Motherboard MS-6191 + 1462 6930 ES1371, ES1373 AudioPCI On Motherboard MS-6193 + 1462 6990 ES1371, ES1373 AudioPCI On Motherboard MS-6199BX 2.0A + 1462 6991 ES1371, ES1373 AudioPCI On Motherboard MS-6199VIA 2.0A + 14a4 2077 ES1371, ES1373 AudioPCI On Motherboard KR639 + 14a4 2105 ES1371, ES1373 AudioPCI On Motherboard MR800 + 14a4 2107 ES1371, ES1373 AudioPCI On Motherboard MR801 + 14a4 2172 ES1371, ES1373 AudioPCI On Motherboard DR739 + 1509 9902 ES1371, ES1373 AudioPCI On Motherboard KW11 + 1509 9903 ES1371, ES1373 AudioPCI On Motherboard KW31 + 1509 9904 ES1371, ES1373 AudioPCI On Motherboard KA11 + 1509 9905 ES1371, ES1373 AudioPCI On Motherboard KC13 + 152d 8801 ES1371, ES1373 AudioPCI On Motherboard CP810E + 152d 8802 ES1371, ES1373 AudioPCI On Motherboard CP810 + 152d 8803 ES1371, ES1373 AudioPCI On Motherboard P3810E + 152d 8804 ES1371, ES1373 AudioPCI On Motherboard P3810-S + 152d 8805 ES1371, ES1373 AudioPCI On Motherboard P3820-S + 270f 2001 ES1371, ES1373 AudioPCI On Motherboard 6CTR + 270f 2200 ES1371, ES1373 AudioPCI On Motherboard 6WTX + 270f 3000 ES1371, ES1373 AudioPCI On Motherboard 6WSV + 270f 3100 ES1371, ES1373 AudioPCI On Motherboard 6WIV2 + 270f 3102 ES1371, ES1373 AudioPCI On Motherboard 6WIV + 270f 7060 ES1371, ES1373 AudioPCI On Motherboard 6ASA2 + 8086 4249 ES1371, ES1373 AudioPCI On Motherboard BI440ZX + 8086 424c ES1371, ES1373 AudioPCI On Motherboard BL440ZX + 8086 425a ES1371, ES1373 AudioPCI On Motherboard BZ440ZX + 8086 4341 ES1371, ES1373 AudioPCI On Motherboard Cayman + 8086 4343 ES1371, ES1373 AudioPCI On Motherboard Cape Cod + 8086 4541 D815EEA Motherboard + 8086 4649 ES1371, ES1373 AudioPCI On Motherboard Fire Island + 8086 464a ES1371, ES1373 AudioPCI On Motherboard FJ440ZX + 8086 4d4f ES1371, ES1373 AudioPCI On Motherboard Montreal + 8086 4f43 ES1371, ES1373 AudioPCI On Motherboard OC440LX + 8086 5243 ES1371, ES1373 AudioPCI On Motherboard RC440BX + 8086 5352 ES1371, ES1373 AudioPCI On Motherboard SunRiver + 8086 5643 ES1371, ES1373 AudioPCI On Motherboard Vancouver + 8086 5753 ES1371, ES1373 AudioPCI On Motherboard WS440BX + 5000 ES1370 [AudioPCI] + 5880 5880B / Creative Labs CT5880 + 1274 2000 Creative CT4810 [Sound Blaster AudioPCI 128] + 1274 2003 Creative SoundBlaster AudioPCI 128 + 1274 5880 Creative CT4750 [Sound Blaster PCI 128] + 1274 8001 Creative CT4750 [Sound Blaster 16 PCI/PCI 128/4.1 Digital] + 1458 a000 5880 AudioPCI On Motherboard 6OXET + 1462 6880 5880 AudioPCI On Motherboard MS-6188 1.00 + 270f 2001 5880 AudioPCI On Motherboard 6CTR + 270f 2200 5880 AudioPCI On Motherboard 6WTX + 270f 7040 5880 AudioPCI On Motherboard 6ATA4 + 8001 CT5880 [AudioPCI] + 8002 5880A [AudioPCI] +1275 Network Appliance Corporation +1276 Switched Network Technologies, Inc. +1277 Comstream +1278 Transtech Parallel Systems Ltd. + 0701 TPE3/TM3 PowerPC Node + 0710 TPE5 PowerPC PCI board + 1100 PMC-FPGA02 + 1101 TS-C43 card with 4 ADSP-TS101 processors +1279 Transmeta Corporation + 0060 TM8000 Northbridge + 0061 TM8000 AGP bridge + 0295 Northbridge + 0395 LongRun Northbridge + 0396 SDRAM controller + 0397 BIOS scratchpad +127a Rockwell International + 1002 HCF 56k Data/Fax Modem + 1092 094c SupraExpress 56i PRO [Diamond SUP2380] + 122d 4002 HPG / MDP3858-U + 122d 4005 MDP3858-E + 122d 4007 MDP3858-A/-NZ + 122d 4012 MDP3858-SA + 122d 4017 MDP3858-W + 122d 4018 MDP3858-W + 127a 1002 Rockwell 56K D/F HCF Modem + 1003 HCF 56k Data/Fax Modem + 0e11 b0bc 229-DF Zephyr + 0e11 b114 229-DF Cheetah + 1033 802b 229-DF + 13df 1003 PCI56RX Modem + 13e0 0117 IBM + 13e0 0147 IBM F-1156IV+/R3 Spain V.90 Modem + 13e0 0197 IBM + 13e0 01c7 IBM F-1156IV+/R3 WW V.90 Modem + 13e0 01f7 IBM + 1436 1003 IBM + 1436 1103 IBM 5614PM3G V.90 Modem + 1436 1602 Compaq 229-DF Ducati + 1004 HCF 56k Data/Fax/Voice Modem + 1048 1500 MicroLink 56k Modem + 10cf 1059 Fujitsu 229-DFRT + 1005 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem + 1005 127a AOpen FM56-P + 1033 8029 229-DFSV + 1033 8054 Modem + 10cf 103c Fujitsu + 10cf 1055 Fujitsu 229-DFSV + 10cf 1056 Fujitsu 229-DFSV + 122d 4003 MDP3858SP-U + 122d 4006 Packard Bell MDP3858V-E + 122d 4008 MDP3858SP-A/SP-NZ + 122d 4009 MDP3858SP-E + 122d 4010 MDP3858V-U + 122d 4011 MDP3858SP-SA + 122d 4013 MDP3858V-A/V-NZ + 122d 4015 MDP3858SP-W + 122d 4016 MDP3858V-W + 122d 4019 MDP3858V-SA + 13df 1005 PCI56RVP Modem + 13e0 0187 IBM + 13e0 01a7 IBM + 13e0 01b7 IBM DF-1156IV+/R3 Spain V.90 Modem + 13e0 01d7 IBM DF-1156IV+/R3 WW V.90 Modem + 1436 1005 IBM + 1436 1105 IBM + 1437 1105 IBM 5614PS3G V.90 Modem + 1022 HCF 56k Modem + 1436 1303 M3-5614PM3G V.90 Modem + 1023 HCF 56k Data/Fax Modem + 122d 4020 Packard Bell MDP3858-WE + 122d 4023 MDP3858-UE + 13e0 0247 IBM F-1156IV+/R6 Spain V.90 Modem + 13e0 0297 IBM + 13e0 02c7 IBM F-1156IV+/R6 WW V.90 Modem + 1436 1203 IBM + 1436 1303 IBM + 1024 HCF 56k Data/Fax/Voice Modem + 1025 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem + 10cf 106a Fujitsu 235-DFSV + 122d 4021 Packard Bell MDP3858V-WE + 122d 4022 MDP3858SP-WE + 122d 4024 MDP3858V-UE + 122d 4025 MDP3858SP-UE + 1026 HCF 56k PCI Speakerphone Modem + 1032 HCF 56k Modem + 1033 HCF 56k Modem + 1034 HCF 56k Modem + 1035 HCF 56k PCI Speakerphone Modem + 1036 HCF 56k Modem + 1085 HCF 56k Volcano PCI Modem + 2004 HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem + 2005 HCF 56k Data/Fax Modem + 104d 8044 229-DFSV + 104d 8045 229-DFSV + 104d 8055 PBE/Aztech 235W-DFSV + 104d 8056 235-DFSV + 104d 805a Modem + 104d 805f Modem + 104d 8074 Modem + 2013 HSF 56k Data/Fax Modem + 1179 0001 Modem + 1179 ff00 Modem + 2014 HSF 56k Data/Fax/Voice Modem + 10cf 1057 Fujitsu Citicorp III + 122d 4050 MSP3880-U + 122d 4055 MSP3880-W + 2015 HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem + 10cf 1063 Fujitsu + 10cf 1064 Fujitsu + 1468 2015 Fujitsu + 2016 HSF 56k Data/Fax/Voice/Spkp Modem + 122d 4051 MSP3880V-W + 122d 4052 MSP3880SP-W + 122d 4054 MSP3880V-U + 122d 4056 MSP3880SP-U + 122d 4057 MSP3880SP-A + 4311 Riptide HSF 56k PCI Modem + 127a 4311 Ring Modular? Riptide HSF RT HP Dom + 13e0 0210 HP-GVC + 4320 Riptide PCI Audio Controller + 1235 4320 Riptide PCI Audio Controller + 4321 Riptide HCF 56k PCI Modem + 1235 4321 Hewlett Packard DF + 1235 4324 Hewlett Packard DF + 13e0 0210 Hewlett Packard DF + 144d 2321 Riptide + 4322 Riptide PCI Game Controller + 1235 4322 Riptide PCI Game Controller + 8234 RapidFire 616X ATM155 Adapter + 108d 0022 RapidFire 616X ATM155 Adapter + 108d 0027 RapidFire 616X ATM155 Adapter +127b Pixera Corporation +127c Crosspoint Solutions, Inc. +127d Vela Research +127e Winnov, L.P. + 0010 Videum 1000 Plus +127f Fujifilm +1280 Photoscript Group Ltd. +1281 Yokogawa Electric Corporation +1282 Davicom Semiconductor, Inc. + 6585 DM562P V90 Modem + 9009 DM9009 Ethernet Controller + 9100 21x4x DEC-Tulip compatible 10/100 Ethernet + 9102 DM9102 Fast Ethernet Controller +# Subsystem ID is main ID reveresed. + 0291 8212 DM9102A (DM9102AE, SM9102AF) Ethernet 100/10 MBit + 9132 Ethernet 100/10 MBit +1283 Integrated Technology Express, Inc. + 673a IT8330G + 8152 IT8152F/G Advanced RISC-to-PCI Companion Chip + 8211 ITE 8211F Single Channel UDMA 133 + 1043 8138 P5GD1-VW Mainboard + 8212 IT8212 Dual channel ATA RAID controller + 1283 0001 IT/ITE8212 Dual channel ATA RAID controller + 8213 IT8213 IDE Controller + 1458 b000 GA-EG45M-DS2H Mainboard + 8330 IT8330G + 8872 IT887xF PCI to ISA I/O chip with SMB, GPIO, Serial or Parallel Port + 8888 IT8888F/G PCI to ISA Bridge with SMB [Golden Gate] + 8889 IT8889F PCI to ISA Bridge + 8892 IT8892E PCIe to PCI Bridge + 8086 200d DH61CR motherboard + 8893 IT8893E PCIe to PCI Bridge + e886 IT8330G +1284 Sahara Networks, Inc. +1285 Platform Technologies, Inc. + 0100 AGOGO sound chip (aka ESS Maestro 1) +1286 Mazet GmbH +1287 M-Pact, Inc. + 001e LS220D DVD Decoder + 001f LS220C DVD Decoder +1288 Timestep Corporation +1289 AVC Technology, Inc. +128a Asante Technologies, Inc. +128b Transwitch Corporation +128c Retix Corporation +128d G2 Networks, Inc. + 0021 ATM155 Adapter +128e Hoontech Corporation/Samho Multi Tech Ltd. + 0008 ST128 WSS/SB + 0009 ST128 SAM9407 + 000a ST128 Game Port + 000b ST128 MPU Port + 000c ST128 Ctrl Port +128f Tateno Dennou, Inc. +1290 Sord Computer Corporation +1291 NCS Computer Italia +1292 Tritech Microelectronics Inc + fc02 Pyramid3D TR25202 +1293 Media Reality Technology +1294 Rhetorex, Inc. +1295 Imagenation Corporation + 0800 PXR800 + 1000 PXD1000 +1296 Kofax Image Products +1297 Holco Enterprise Co, Ltd/Shuttle Computer + 9602 RS780/RS880 PCI to PCI bridge (int gfx) +1298 Spellcaster Telecommunications Inc. +1299 Knowledge Technology Lab. +129a VMetro, inc. + 0615 PBT-615 PCI-X Bus Analyzer + 0715 cPCI Bus Analyzer + 1100 PMC-FPGA05 + 1106 XMC-FPGA05F, PCI interface + 1107 XMC-FPGA05F, PCIe interface + 1108 XMC-FPGA05D, PCI interface + 1109 XMC-FPGA05D, PCIe interface +129b Image Access +129c Jaycor +129d Compcore Multimedia, Inc. +129e Victor Company of Japan, Ltd. +129f OEC Medical Systems, Inc. +12a0 Allen-Bradley Company +12a1 Simpact Associates, Inc. +12a2 Newgen Systems Corporation +12a3 Lucent Technologies + 8105 T8105 H100 Digital Switch +12a4 NTT Innovative Devices Corporation +12a5 Vision Dynamics Ltd. +12a6 Scalable Networks, Inc. +12a7 AMO GmbH +12a8 News Datacom +12a9 Xiotech Corporation +12aa SDL Communications, Inc. +12ab YUAN High-Tech Development Co., Ltd. + 0000 MPG160/Kuroutoshikou ITVC15-STVLP + 0002 AU8830 [Vortex2] Based Sound Card With A3D Support + 0003 T507 (DVB-T) TV tuner/capture device + 2300 Club-3D Zap TV2100 + 3000 MPG-200C PCI DVD Decoder Card + 4789 MPC788 MiniPCI Hybrid TV Tuner + fff3 MPG600/Kuroutoshikou ITVC16-STVLP + ffff MPG600/Kuroutoshikou ITVC16-STVLP +12ac Measurex Corporation +12ad Multidata GmbH +12ae Alteon Networks Inc. + 0001 AceNIC Gigabit Ethernet + 1014 0104 Gigabit Ethernet-SX PCI Adapter + 12ae 0001 Gigabit Ethernet-SX (Universal) + 0002 AceNIC Gigabit Ethernet (Copper) + 10a9 8002 Acenic Gigabit Ethernet + 12ae 0002 Gigabit Ethernet-T (3C986-T) + 00fa Farallon PN9100-T Gigabit Ethernet +12af TDK Corporation + 5831 GBDriver GX1 x2 NVMe SSD Controller (DRAM-less) +12b0 Jorge Scientific Corp +12b1 GammaLink +12b2 General Signal Networks +12b3 Inter-Face Co Ltd +12b4 FutureTel Inc +12b5 Granite Systems Inc. +12b6 Natural Microsystems +12b7 Cognex Corporation +12b8 Korg +# Nee US Robotics +12b9 3Com Corp, Modem Division + 1006 WinModem + 12b9 005c USR 56k Internal Voice WinModem (Model 3472) + 12b9 005e USR 56k Internal WinModem (Models 662975) + 12b9 0062 USR 56k Internal Voice WinModem (Model 662978) + 12b9 0068 USR 56k Internal Voice WinModem (Model 5690) + 12b9 007a USR 56k Internal Voice WinModem (Model 662974) + 12b9 007f USR 56k Internal WinModem (Models 5698, 5699) + 12b9 0080 USR 56k Internal WinModem (Models 2975, 3528) + 12b9 0081 USR 56k Internal Voice WinModem (Models 2974, 3529) + 12b9 0091 USR 56k Internal Voice WinModem (Model 2978) + 1007 USR 56k Internal WinModem + 12b9 00a3 USR 56k Internal WinModem (Model 3595) + 12b9 00c4 U.S. Robotics V.92 Voice Faxmodem (2884A/B/C) + 1008 56K FaxModem Model 5610 + 12b9 00a2 USR 56k Internal FAX Modem (Model 2977) + 12b9 00aa USR 56k Internal Voice Modem (Model 2976) + 12b9 00ab USR 56k Internal Voice Modem (Model 5609) + 12b9 00ac USR 56k Internal Voice Modem (Model 3298) + 12b9 00ad USR 56k Internal FAX Modem (Model 5610) + 12b9 00d3 USR 56K Internal V92 FAX Modem (Model 5610) + 12b9 baba USR 56K Internal Voice Modem 3CP3298-DEL (Model 5601) [Hawk] +12ba BittWare, Inc. +12bb Nippon Unisoft Corporation +12bc Array Microsystems +12bd Computerm Corp. +12be Anchor Chips Inc. + 3041 AN3041Q CO-MEM + 3042 AN3042Q CO-MEM Lite + 12be 3042 Anchor Chips Lite Evaluation Board +12bf Fujifilm Microdevices +12c0 Infimed +12c1 GMM Research Corp +12c2 Mentec Limited +12c3 Holtek Microelectronics Inc + 0058 PCI NE2K Ethernet + 5598 PCI NE2K Ethernet +12c4 Connect Tech Inc + 0001 Blue HEAT/PCI 8 (RS232/CL/RJ11) + 0002 Blue HEAT/PCI 4 (RS232) + 0003 Blue HEAT/PCI 2 (RS232) + 0004 Blue HEAT/PCI 8 (UNIV, RS485) + 0005 Blue HEAT/PCI 4+4/6+2 (UNIV, RS232/485) + 0006 Blue HEAT/PCI 4 (OPTO, RS485) + 0007 Blue HEAT/PCI 2+2 (RS232/485) + 0008 Blue HEAT/PCI 2 (OPTO, Tx, RS485) + 0009 Blue HEAT/PCI 2+6 (RS232/485) + 000a Blue HEAT/PCI 8 (Tx, RS485) + 000b Blue HEAT/PCI 4 (Tx, RS485) + 000c Blue HEAT/PCI 2 (20 MHz, RS485) + 000d Blue HEAT/PCI 2 PTM + 0100 NT960/PCI + 0201 cPCI Titan - 2 Port + 0202 cPCI Titan - 4 Port + 0300 CTI PCI UART 2 (RS232) + 0301 CTI PCI UART 4 (RS232) + 0302 CTI PCI UART 8 (RS232) + 0310 CTI PCI UART 1+1 (RS232/485) + 0311 CTI PCI UART 2+2 (RS232/485) + 0312 CTI PCI UART 4+4 (RS232/485) + 0320 CTI PCI UART 2 + 0321 CTI PCI UART 4 + 0322 CTI PCI UART 8 + 0330 CTI PCI UART 2 (RS485) + 0331 CTI PCI UART 4 (RS485) + 0332 CTI PCI UART 8 (RS485) +12c5 Picture Elements Incorporated + 007e Imaging/Scanning Subsystem Engine + 007f Imaging/Scanning Subsystem Engine + 0081 PCIVST [Grayscale Thresholding Engine] + 0085 Video Simulator/Sender + 0086 THR2 Multi-scale Thresholder +12c6 Mitani Corporation +12c7 Dialogic Corp +# 12 Line, 6 port, CT-BUS/SC-BUS, loopstart FXO adaptor. + 0546 Springware D/120JCT-LS +# 24 Channel, 1 Port, CT-BUS/SC-BUS, T1/PRI adaptor. + 0647 Springware D/240JCT-T1 +# 4 Line, 4 port, CT-BUS/SC-BUS, loopstart FXO adaptor. Revision 01 + 0676 Springware D/41JCT-LS +# 48 Channel, 2 Port, CT-BUS/SC-BUS, T1/PRI adaptor. + 0685 Springware D/480JCT-2T1 +12c8 G Force Co, Ltd +12c9 Gigi Operations +12ca Integrated Computing Engines +12cb Antex Electronics Corporation + 0027 SC4 (StudioCard) + 002e StudioCard 2000 +12cc Pluto Technologies International +12cd Aims Lab +12ce Netspeed Inc. +12cf Prophet Systems, Inc. +12d0 GDE Systems, Inc. +12d1 PSITech +12d2 NVidia / SGS Thomson (Joint Venture) + 0008 NV1 + 0009 DAC64 + 0018 Riva128 + 1048 0c10 VICTORY Erazor + 1048 0c15 VICTORY Erazor LT-8 + 107b 8030 STB Velocity 128 + 1092 0350 Viper V330 + 1092 1092 Viper V330 + 10b4 1b1b STB Velocity 128 + 10b4 1b1d STB Velocity 128 + 10b4 1b1e STB Velocity 128, PAL TV-Out + 10b4 1b20 STB Velocity 128 Sapphire + 10b4 1b21 STB Velocity 128 + 10b4 1b22 STB Velocity 128 AGP, NTSC TV-Out + 10b4 1b23 STB Velocity 128 AGP, PAL TV-Out + 10b4 1b27 STB Velocity 128 DVD + 10b4 1b88 MVP Pro 128 + 10b4 222a STB Velocity 128 AGP + 10b4 2230 STB Velocity 128 + 10b4 2232 STB Velocity 128 + 10b4 2235 STB Velocity 128 AGP + 2a15 54a3 3DVision-SAGP / 3DexPlorer 3000 + 0019 Riva128ZX + 0020 TNT + 0028 TNT2 + 0029 UTNT2 + 002c VTNT2 + 00a0 ITNT2 +12d3 Vingmed Sound A/S +12d4 Ulticom (Formerly DGM&S) + 0200 T1 Card +12d5 Equator Technologies Inc + 0003 BSP16 + 1000 BSP15 +12d6 Analogic Corp +12d7 Biotronic SRL +# acquired by Diodes Inc. +12d8 Pericom Semiconductor + 01a7 7C21P100 2-port PCI-X to PCI-X Bridge +# 3Port-3Lane PCI Express Switch GreenPacket Family + 0303 PCI Express Switch 3-3 +# PI7C9X20508GP 5Port-8Lane PCI Express Switch GreenPacket Family + 0508 PI7C9X20508GP PCI Express Switch 5Port-8Lane + 2304 PI7C9X2G304 EL/SL PCIe2 3-Port/4-Lane Packet Switch + 2308 PI7C9X2G308GP 3-Ports/8-lane PCIe 2.0 Switch + 2404 PI7C9X2G404 EL/SL PCIe2 4-Port/4-Lane Packet Switch + 2608 PI7C9X2G608GP PCIe2 6-Port/8-Lane Packet Switch + ea50 cc10 RXi2-BP + 400a PI7C9X442SL PCIe Bridge Port + 400c PI7C9X440SL PCIe Bridge Port + 400e PI7C9X440SL/PI7C9X442SL USB OHCI Controller + 400f PI7C9X440SL/PI7C9X442SL USB EHCI Controller + 71e2 PI7C7300A/PI7C7300D PCI-to-PCI Bridge + 71e3 PI7C7300A/PI7C7300D PCI-to-PCI Bridge (Secondary Bus 2) + 8140 PI7C8140A PCI-to-PCI Bridge + 8148 PI7C8148A/PI7C8148B PCI-to-PCI Bridge + 8150 PCI to PCI Bridge + 8152 PI7C8152A/PI7C8152B/PI7C8152BI PCI-to-PCI Bridge + 8154 PI7C8154A/PI7C8154B/PI7C8154BI PCI-to-PCI Bridge + 8619 PI7C9X2G1616PR PCIe2 16-Port/16-Lane Packet Switch + b404 PI7C9X2G404 EV/SV PCIe2 4-Port/4-Lane Packet Switch + e110 PI7C9X110 PCIe- to-PCI bridge + 1775 11cc CC11/CL11 CompactPCI Bridge + e111 PI7C9X111SL PCIe-to-PCI Reversible Bridge + e112 PI7C9X112SL PCIe-to-PCI Bridge + e113 PI7C9X113SL/PI7C9X118SL PCIe-to-PCI Bridge + e130 PCI Express to PCI-XPI7C9X130 PCI-X Bridge +12d9 Aculab PLC + 0002 PCI Prosody + 0004 cPCI Prosody + 0005 Aculab E1/T1 PCI card + 1078 Prosody X class e1000 device + 12d9 000d Prosody X PCI + 12d9 000e Prosody X cPCI +12da True Time Inc. +12db Annapolis Micro Systems, Inc +12dc Symicron Computer Communication Ltd. +12dd Management Graphics +12de Rainbow Technologies + 0200 CryptoSwift CS200 +12df SBS Technologies Inc +12e0 Chase Research + 0010 ST16C654 Quad UART + 0020 ST16C654 Quad UART + 0030 ST16C654 Quad UART +12e1 Nintendo Co, Ltd +12e2 Datum Inc. Bancomm-Timing Division +12e3 Imation Corp - Medical Imaging Systems +12e4 Brooktrout Technology Inc +12e5 Apex Semiconductor Inc +12e6 Cirel Systems +12e7 Sunsgroup Corporation +12e8 Crisc Corp +12e9 GE Spacenet +12ea Zuken +12eb Aureal Semiconductor + 0001 Vortex 1 + 0000 0300 Terasound A3D PCI + 104d 8036 AU8820 Vortex Digital Audio Processor + 1092 2000 Sonic Impact A3D + 1092 2100 Sonic Impact A3D + 1092 2110 Sonic Impact A3D + 1092 2200 Sonic Impact A3D + 122d 1002 SC 338-A3D + 12eb 0001 AU8820 Vortex Digital Audio Processor + 5053 3355 Montego + 50b2 1111 XLerate + 0002 Vortex 2 + 104d 8049 AU8830 Vortex 3D Digital Audio Processor + 104d 807b AU8830 Vortex 3D Digital Audio Processor + 1092 3000 Monster Sound II + 1092 3001 Monster Sound II + 1092 3002 Monster Sound II + 1092 3003 Monster Sound II + 1092 3004 Monster Sound II + 12eb 0002 AU8830 Vortex 3D Digital Audio Processor + 12eb 0088 AU8830 Vortex 3D Digital Audio Processor + 144d 3510 AU8830 Vortex 3D Digital Audio Processor + 5053 3356 Montego II + 0003 AU8810 Vortex Digital Audio Processor + 104d 8049 AU8810 Vortex Digital Audio Processor + 104d 8077 AU8810 Vortex Digital Audio Processor + 109f 1000 AU8810 Vortex Digital Audio Processor + 12eb 0003 AU8810 Vortex Digital Audio Processor + 1462 6780 AU8810 Vortex Digital Audio Processor + 14a4 2073 AU8810 Vortex Digital Audio Processor + 14a4 2091 AU8810 Vortex Digital Audio Processor + 14a4 2104 AU8810 Vortex Digital Audio Processor + 14a4 2106 AU8810 Vortex Digital Audio Processor + 8803 Vortex 56k Software Modem + 12eb 8803 Vortex 56k Software Modem +12ec 3A International, Inc. +12ed Optivision Inc. +12ee Orange Micro +12ef Vienna Systems +12f0 Pentek +12f1 Sorenson Vision Inc +12f2 Gammagraphx, Inc. +12f3 Radstone Technology +12f4 Megatel +12f5 Forks +12f6 Dawson France +12f7 Cognex +12f8 Electronic Design GmbH + 0002 VideoMaker +12f9 Four Fold Ltd +12fb Spectrum Signal Processing + 0001 PMC-MAI + 00f5 F5 Dakar + 02ad PMC-2MAI + 2adc ePMC-2ADC + 3100 PRO-3100 + 3500 PRO-3500 + 4d4f Modena + 8120 ePMC-8120 + da62 Daytona C6201 PCI (Hurricane) + db62 Ingliston XBIF + dc62 Ingliston PLX9054 + dd62 Ingliston JTAG/ISP + eddc ePMC-MSDDC + fa01 ePMC-FPGA +12fc Capital Equipment Corp +12fd I2S +12fe ESD Electronic System Design GmbH +12ff Lexicon +1300 Harman International Industries Inc +1302 Computer Sciences Corp +1303 Innovative Integration + 0030 X3-SDF 4-channel XMC acquisition board +1304 Juniper Networks +1305 Netphone, Inc +1306 Duet Technologies +# Nee ComputerBoards +1307 Measurement Computing + 0001 PCI-DAS1602/16 + 000b PCI-DIO48H + 000c PCI-PDISO8 + 000d PCI-PDISO16 + 000f PCI-DAS1200 + 0010 PCI-DAS1602/12 + 0014 PCI-DIO24H + 0015 PCI-DIO24H/CTR3 + 0016 PCI-DIO48H/CTR15 + 0017 PCI-DIO96H + 0018 PCI-CTR05 + 0019 PCI-DAS1200/JR + 001a PCI-DAS1001 + 001b PCI-DAS1002 + 001c PCI-DAS1602JR/16 + 001d PCI-DAS6402/16 + 001e PCI-DAS6402/12 + 001f PCI-DAS16/M1 + 0020 PCI-DDA02/12 + 0021 PCI-DDA04/12 + 0022 PCI-DDA08/12 + 0023 PCI-DDA02/16 + 0024 PCI-DDA04/16 + 0025 PCI-DDA08/16 + 0026 PCI-DAC04/12-HS + 0027 PCI-DAC04/16-HS + 0028 PCI-DIO24 + 0029 PCI-DAS08 + 002c PCI-INT32 + 0033 PCI-DUAL-AC5 + 0034 PCI-DAS-TC + 0035 PCI-DAS64/M1/16 + 0036 PCI-DAS64/M2/16 + 0037 PCI-DAS64/M3/16 + 004b PCI-MDB64 + 004c PCI-DAS1000 + 004d PCI-QUAD04 + 0052 PCI-DAS4020/12 + 0053 PCIM-DDA06/16 + 0054 PCI-DIO96 + 0055 CPCI-DIO24H + 0056 PCIM-DAS1602/16 + 0057 PCI-DAS3202/16 + 0059 PCI-QUAD-AC5 + 005a CPCI-DIO96H + 005b CPCI-DIO48H + 005d PCI-DAS6023 + 005e PCI-DAS6025 + 005f PCI-DAS6030 + 0060 PCI-DAS6031 + 0061 PCI-DAS6032 + 0062 PCI-DAS6033 + 0063 PCI-DAS6034 + 0064 PCI-DAS6035 + 0065 PCI-DAS6040 + 0066 PCI-DAS6052 + 0067 PCI-DAS6070 + 0068 PCI-DAS6071 + 006e PCI-CTR10 + 006f PCI-DAS6036 + 0070 PCI-DAC6702 + 0071 PCI-DAC6703 + 0074 PCI-CTR20HD + 0077 PCI-DIO24/LP + 0078 PCI-DAS6013 + 0079 PCI-DAS6014 + 007b PCIM-DAS16JR/16 + 007e PCI-DIO24/S + 00a5 PCI-2511 + 00a6 PCI-2513 + 00a7 PCI-2515 + 00a8 PCI-2517 + 00be PCI-QUAD05 + 00da PCIe-DIO96H + 00db PCIe-DIO24 + 0115 PCIe-DAS1602/16 +1308 Jato Technologies Inc. + 0001 NetCelerator Adapter + 1308 0001 NetCelerator Adapter +1309 AB Semiconductor Ltd +130a Mitsubishi Electric Microcomputer +130b Colorgraphic Communications Corp +130c Ambex Technologies, Inc +130d Accelerix Inc +130e Yamatake-Honeywell Co. Ltd +130f Advanet Inc +1310 Gespac +1311 Videoserver, Inc +1312 Acuity Imaging, Inc +1313 Yaskawa Electric Co. +1315 Wavesat +1316 Teradyne Inc +1317 ADMtek + 0981 21x4x DEC-Tulip compatible 10/100 Ethernet + 0985 NC100 Network Everywhere Fast Ethernet 10/100 + 1734 100c Scenic N300 ADMtek AN983 10/100 Mbps PCI Adapter + 1985 21x4x DEC-Tulip compatible 10/100 Ethernet + 1385 511a FA511 + 1395 2103 CB100-EZ (4-LED version) + 2850 HSP MicroModem 56 + 5120 ADM5120 OpenGate System-on-Chip + 8201 ADM8211 802.11b Wireless Interface + 10b8 2635 SMC2635W v1 802.11b Wireless Cardbus Adapter + 1317 8201 SMC2635W v2 802.11b Wireless Cardbus Adapter + 8211 ADM8211 802.11b Wireless Interface + 9511 21x4x DEC-Tulip compatible 10/100 Ethernet +1318 Packet Engines Inc. + 0911 GNIC-II PCI Gigabit Ethernet [Hamachi] +1319 Fortemedia, Inc + 0801 Xwave QS3000A [FM801] + 1319 1319 FM801 PCI Audio + 0802 Xwave QS3000A [FM801 game port] + 1319 1319 FM801 PCI Joystick + 1000 FM801 PCI Audio + 1001 FM801 PCI Joystick +131a Finisar Corp. +131c Nippon Electro-Sensory Devices Corp +131d Sysmic, Inc. +131e Xinex Networks Inc +131f Siig Inc + 1000 CyberSerial (1-port) 16550 + 1001 CyberSerial (1-port) 16650 + 1002 CyberSerial (1-port) 16850 + 1010 Duet 1S(16550)+1P + 1011 Duet 1S(16650)+1P + 1012 Duet 1S(16850)+1P + 1020 CyberParallel (1-port) + 1021 CyberParallel (2-port) + 1030 CyberSerial (2-port) 16550 + 1031 CyberSerial (2-port) 16650 + 1032 CyberSerial (2-port) 16850 + 1034 Trio 2S(16550)+1P + 1035 Trio 2S(16650)+1P + 1036 Trio 2S(16850)+1P + 1050 CyberSerial (4-port) 16550 + 1051 CyberSerial (4-port) 16650 + 1052 CyberSerial (4-port) 16850 + 2000 CyberSerial (1-port) 16550 + 2001 CyberSerial (1-port) 16650 + 2002 CyberSerial (1-port) 16850 + 2010 Duet 1S(16550)+1P + 2011 Duet 1S(16650)+1P + 2012 Duet 1S(16850)+1P + 2020 CyberParallel (1-port) + 2021 CyberParallel (2-port) + 2030 CyberSerial (2-port) 16550 + 131f 2030 PCI Serial Card + 2031 CyberSerial (2-port) 16650 + 2032 CyberSerial (2-port) 16850 + 2040 Trio 1S(16550)+2P + 2041 Trio 1S(16650)+2P + 2042 Trio 1S(16850)+2P + 2050 CyberSerial (4-port) 16550 + 2051 CyberSerial (4-port) 16650 + 2052 CyberSerial (4-port) 16850 + 2060 Trio 2S(16550)+1P + 2061 Trio 2S(16650)+1P + 2062 Trio 2S(16850)+1P + 2081 CyberSerial (8-port) ST16654 +1320 Crypto AG +1321 Arcobel Graphics BV +1322 MTT Co., Ltd +1323 Dome Inc +1324 Sphere Communications +1325 Salix Technologies, Inc +1326 Seachange international +1327 Voss scientific +1328 quadrant international +1329 Productivity Enhancement +132a Microcom Inc. +132b Broadband Technologies +132c Micrel Inc +132d Integrated Silicon Solution, Inc. +1330 MMC Networks +1331 RadiSys Corporation + 0030 ENP-2611 + 8200 82600 Host Bridge + 8201 82600 IDE + 8202 82600 USB + 8210 82600 PCI Bridge +1332 Micro Memory + 5415 MM-5415CN PCI Memory Module with Battery Backup + 5425 MM-5425CN PCI 64/66 Memory Module with Battery Backup + 6140 MM-6140D +1334 Redcreek Communications, Inc +1335 Videomail, Inc +1337 Third Planet Publishing +1338 BT Electronics +133a Vtel Corp +133b Softcom Microsystems +133c Holontech Corp +133d SS Technologies +133e Virtual Computer Corp +133f SCM Microsystems +1340 Atalla Corp +1341 Kyoto Microcomputer Co +1342 Promax Systems Inc +1343 Phylon Communications Inc +# nee Crucial Technology +1344 Micron Technology Inc + 5150 RealSSD P320h + 5151 RealSSD P320m + 5152 RealSSD P320s + 5153 RealSSD P325m + 5160 RealSSD P420h + 5161 RealSSD P420m + 5163 RealSSD P425m + 5180 9100 PRO NVMe SSD + 5181 9100 MAX NVMe SSD + 5188 7100 ECO NVMe SSD + 5189 7100 MAX NVMe SSD + 5190 9200 ECO NVMe SSD + 5191 9200 PRO NVMe SSD + 5192 9200 MAX NVMe SSD + 5196 9400 PRO NVMe SSD + 5197 9400 MAX NVMe SSD + 51a2 7300 PRO NVMe SSD + 1344 2000 960GB U.2 + 1344 3000 1920GB U.2 + 1344 4000 3480GB U.2 + 1344 5000 7680GB U.2 + 51a3 7300 MAX NVMe SSD + 1344 1100 400GB M.2 + 1344 2000 800GB U.2 + 1344 2100 800GB M.2 + 1344 3000 1600GB U.2 + 1344 4000 3200GB U.2 + 1344 5000 6400GB U.2 + 51b1 9300 PRO NVMe SSD + 1344 4000 3.84TB U.2 + 1344 5000 7.68TB U.2 + 1344 6000 15.36TB U.2 + 51b2 9300 MAX NVMe SSD + 1344 4000 3.2TB U.2 + 1344 5000 6.4 TB U.2 + 1344 6000 12.8TB U.2 + 51b7 7500 PRO NVMe SSD + 1028 22e7 DC NVMe 7500 U.2 SED RI 15.36TB + 1028 22e8 DC NVMe 7500 U.2 SED RI 7.68TB + 1028 22e9 DC NVMe 7500 U.2 SED RI 3.84TB + 1028 22ea DC NVMe 7500 U.2 SED RI 1.92TB + 1028 22eb DC NVMe 7500 U.2 SED RI 960GB + 1028 22ec DC NVMe 7500 U.2 ISE RI 15.36TB + 1028 22ed DC NVMe 7500 U.2 ISE RI 7.68TB + 1028 22ee DC NVMe 7500 U.2 ISE RI 3.84TB + 1028 22ef DC NVMe 7500 U.2 ISE RI 1.92TB + 1028 22f0 DC NVMe 7500 U.2 ISE RI 960GB + 51b8 7500 MAX NVMe SSD + 1028 22f1 DC NVMe 7500 U.2 ISE MU 12.8TB + 1028 22f2 DC NVMe 7500 U.2 ISE MU 6.4TB + 1028 22f3 DC NVMe 7500 U.2 ISE MU 3.2TB + 1028 22f4 DC NVMe 7500 U.2 ISE MU 1.6TB + 1028 22f5 DC NVMe 7500 U.2 ISE MU 800GB + 51b9 6500 ION NVMe SSD + 1028 22e6 Ent NVMe 6500 RI 30.72TB + 1028 22f6 Ent NVMe 6500 RI FIPS 30.72TB + 51c0 7400 PRO NVMe SSD + 1028 2162 EC NVMe OPAL 7400 RI M.2 480GB + 1028 2163 EC NVMe OPAL 7400 RI M.2 960GB + 1028 2164 EC NVMe ISE 7400 RI M.2 480GB + 1028 2165 EC NVMe ISE 7400 RI M.2 960GB + 1028 216c EC NVMe ISE 7400 RI M.2 110 1.92TB + 1028 216d EC NVMe ISE 7400 RI M.2 110 3.84TB + 1028 216e EC NVMe OPAL 7400 RI M.2 110 1.92TB + 1028 216f EC NVMe OPAL 7400 RI M.2 110 3.84TB + 1028 2197 EC NVMe OPAL 7400 RI M.2 110 960GB + 1028 224d EC NVMe ISE 7400 RI M.2 110 960GB + 1344 1100 M.2 480GB + 1344 2000 U.3 960GB + 1344 2100 M.2 960GB + 1344 2600 E1.S 960GB + 1344 2b00 M.2 1920GB + 1344 2d00 E1.2 1920GB + 1344 3000 U.3 1920GB + 1344 3e00 M.2 3840GB + 1344 3f00 E1.S 3840GB + 1344 4000 U.3 3840GB + 1344 5000 U.3 7680GB + 51c1 7400 MAX NVMe SSD + 1028 216a EC NVMe ISE 7400 MU M.2 80 800GB + 1028 216b EC NVMe OPAL 7400 MU M.2 80 800GB + 1344 1100 M.2 400GB + 1344 2000 U.3 800GB + 1344 2100 M.2 800GB + 1344 2600 E1.S 800GB + 1344 2b00 M.2 1600GB + 1344 2d00 E1.S 1600GB + 1344 3000 U.3 1600GB + 1344 3e00 M.2 3200GB + 1344 3f00 E1.S 3200GB + 1344 4000 U.3 3200GB + 1344 5000 U.3 6400GB + 51c3 7450 PRO NVMe SSD + 1028 226b EC NVMe FIPS 7450 RI M.2 110 960GB + 1028 226c EC NVMe ISE 7450 RI M.2 80 480GB + 1028 226d EC NVMe ISE 7450 RI M.2 80 960GB + 1028 226e EC NVMe SED 7450 RI M.2 80 480GB + 1028 226f EC NVMe SED 7450 RI M.2 80 960GB + 1028 2270 EC NVMe FIPS 7450 RI M.2 80 480GB + 1028 2271 EC NVMe FIPS 7450 RI M.2 80 960GB + 1028 2273 EC NVMe ISE 7450 RI M.2 110 960GB + 1028 2274 EC NVMe ISE 7450 RI M.2 110 1920GB + 1028 2275 EC NVMe ISE 7450 RI M.2 110 3840GB + 1028 2278 DC NVMe ISE 7450 RI U.2 960GB + 1028 2279 DC NVMe ISE 7450 RI U.2 1.92TB + 1028 227a DC NVMe ISE 7450 RI U.2 3.84TB + 1028 227b DC NVMe ISE 7450 RI U.2 7.68TB + 1028 227c DC NVMe ISE 7450 RI U.2 15.36TB + 1028 227d DC NVMe SED 7450 RI U.2 960GB + 1028 227e DC NVMe SED 7450 RI U.2 1.92TB + 1028 227f DC NVMe SED 7450 RI U.2 3.84TB + 1028 2280 DC NVMe SED 7450 RI U.2 7.68TB + 1028 2281 DC NVMe SED 7450 RI U.2 15.36TB + 51c4 7450 MAX NVMe SSD + 1028 2272 EC NVMe ISE 7450 MU M.2 80 800GB + 1028 228b DC NVMe SED 7450 MU U.2 800GB + 1028 228c DC NVMe ISE 7450 MU U.2 800GB + 1028 228d DC NVMe SED 7450 MU U.2 1.6TB + 1028 228e DC NVMe ISE 7450 MU U.2 1.6TB + 1028 228f DC NVMe SED 7450 MU U.2 3.2TB + 1028 2290 DC NVMe ISE 7450 MU U.2 3.2TB + 1028 2291 DC NVMe SED 7450 MU U.2 6.4TB + 1028 2292 DC NVMe ISE 7450 MU U.2 6.4TB + 1028 2293 DC NVMe SED 7450 MU U.2 12.8TB + 1028 2294 DC NVMe ISE 7450 MU U.2 12.8TB + 1344 3000 U.3 1600GB [MTFDKCB1T6TFS/MTFDKCC1T6TFS] + 5404 2210 NVMe SSD [Cobain] + 5405 2300 NVMe SSD [Santana] + 5407 3400 NVMe SSD [Hendrix] + 5410 2200S NVMe SSD [Cassandra] + 5411 2450 NVMe SSD [HendrixV] (DRAM-less) + 5413 2400 NVMe SSD (DRAM-less) + 5414 3460 NVMe SSD + 5415 3500 NVMe SSD + 5416 2550 NVMe SSD (DRAM-less) + 6001 2100AI NVMe SSD [Nitro] +1345 Arescom Inc +1347 Odetics +1349 Sumitomo Electric Industries, Ltd. +134a DTC Technology Corp. + 0001 Domex 536 + 0002 Domex DMX3194UP SCSI Adapter +134b ARK Research Corp. +134c Chori Joho System Co. Ltd +134d PCTel Inc + 2189 HSP56 MicroModem + 2486 2304WT V.92 MDC Modem + 7890 HSP MicroModem 56 + 134d 0001 PCT789 adapter + 7891 HSP MicroModem 56 + 134d 0001 HSP MicroModem 56 + 7892 HSP MicroModem 56 + 7893 HSP MicroModem 56 + 7894 HSP MicroModem 56 + 7895 HSP MicroModem 56 + 7896 HSP MicroModem 56 + 7897 HSP MicroModem 56 +134e CSTI +134f Algo System Co Ltd +1350 Systec Co. Ltd +1351 Sonix Inc +# nee Vierling Communication SAS, nee Thales Idatys +1353 dbeeSet Technology + 0002 Proserver + 0003 PCI-FUT + 0004 PCI-S0 + 0005 PCI-FUT-S0 + 0006 OTDU-1U (FPGA Zynq-7000) + 0007 OTDU-EX +1354 Dwave System Inc +1355 Kratos Analytical Ltd +1356 The Logical Co +1359 Prisa Networks +135a Brainboxes Ltd + 0841 UC-268 4 port RS-232 card + 0861 UC-257 2 port RS-232 + LPT card + 0862 UC-257 2 port RS-232 + LPT card + 0863 UC-257 2 port RS-232 + LPT card + 0881 UC-279 8 port RS-232 card + 08a1 UC-313 2 port RS-422/485 card + 08a2 UC-313 2 port RS-422/485 card + 08a3 UC-313 2 port RS-422/485 card + 08c1 UC-310 2 port RS-422/485 Opto Isolated card + 08e1 UC-302 2 port RS-232 card + 08e2 UC-302 2 port RS-232 card + 08e3 UC-302 2 port RS-232 card + 0901 UC-431 3 port RS-232 card + 0921 UC-420 3 + 1 port RS-232 card + 0981 UC-475 1 + 1 port RS-232 + LPT card + 0982 UC-475 1 + 1 port RS-232 + LPT card + 09a1 UC-607 2 port RS-232 card + 09a2 UC-607 2 port RS-232 card + 09a3 UC-607 2 port RS-232 card + 0a61 UC-324 1 port RS-422/485 card + 0a81 UC-357 1 port RS-232 + 1 port RS-422/485 card + 0a82 UC-357 1 port RS-232 + 1 port RS-422/485 card + 0a83 UC-357 1 port RS-232 + 1 port RS-422/485 card + 0aa1 UC-246 1 port RS-232 card + 0aa2 UC-246 1 port RS-232 card + 0ac1 UP-189 Powered 2 port RS-232 card + 0ac2 UP-189 Powered 2 port RS-232 card + 0ac3 UP-189 Powered 2 port RS-232 card + 0b01 UC-346 4 port RS-422/485 card + 0b02 UC-346 4 port RS-422/485 card + 0b21 UP-200 Powered 2 port RS-232 card + 0b22 UP-200 Powered 2 port RS-232 card + 0b23 UP-200 Powered 2 port RS-232 card + 0ba1 UC-101 1 + 1 port RS-232 card + 0bc1 UC-203 1 + 1 port RS-232 + LPT card + 0bc2 UC-203 1 + 1 port RS-232 + LPT card + 0be1 UC-146 LPT card + 0be2 UC-146 LPT card + 0c01 UP-869 Powered 2 port RS-232 card + 0c02 UP-869 Powered 2 port RS-232 card + 0c03 UP-869 Powered 2 port RS-232 card + 0c21 UP-880 Powered 2 port RS-232 card + 0c22 UP-880 Powered 2 port RS-232 card + 0c23 UP-880 Powered 2 port RS-232 card + 0c41 UC-368 4 port RS-422/485 Opto Isolated card + 0ca1 UC-253 2 port RS-232 card + 0d21 UC-260 4 port RS-232 card + 0d41 UC-836 4 port RS-232 card + 0d60 IS-100 1 port RS-232 card + 0d80 IS-200 2 port RS-232 card + 0da0 IS-300 1 port RS-232 + LPT card + 0dc0 IS-400 4 port RS-232 card + 0de0 IS-500 LPT card + 0e41 PX-279 8 port RS-232 card + 0e61 UC-414 3 + 1 port RS-232 + LPT card + 4000 PX-420 3 + 1 port RS-232 card + 4001 PX-431 3 port RS-232 card + 4002 PX-820 Powered 3 + 1 port RS-232 card + 4003 PX-831 Powered 3 port RS-232 card + 4004 PX-235 1 port RS-232 card + 4005 PX-101 1 + 1 port RS-232 card + 4006 PX-257 1 + 1 port RS-232 + LPT card (Serial port) + 4007 PX-257 1 + 1 port RS-232 + LPT card (LPT port) + 4008 PX-835 Powered 1 port RS-232 card + 4009 PX-857 Powered 2 port RS-232 card + 400a PX-260 4 port RS-232 card + 400b PX-320 1 port RS-422/485 card + 400c PX-313 2 port RS-422/485 card + 400e PX-310 2 port RS-422/485 Opto Isolated card + 400f PX-346 4 port RS-422/485 card + 4010 PX-368 4 port RS-422/485 Opto Isolated card + 4011 PX-420 3 + 1 port RS-232 card + 4012 PX-431 3 port RS-232 card + 4013 PX-820 Powered 3 + 1 port RS-232 card + 4014 PX-831 Powered 3 port RS-232 card + 4015 PX-257 2 port RS-232 card + 4016 PX-235 1 port RS-232 card + 4017 PX-835 Powered 1 port RS-232 card + 4018 PX-857 Powered 2 port RS-232 card + 4019 PX-101 1 + 1 port RS-232 card + 401c PX-146 LPT card + 401d PX-475 1 port RS-232 + LPT card (Serial port) + 401e PX-803 Powered 1 + 1 port RS-232 card + 401f PX-475 1 port RS-232 + LPT card (LPT port) + 4027 IX-100 1 port RS-232 card + 4028 IX-200 2 port RS-232 card + 4029 IX-400 4 port RS-232 card + 402a IX-500 LPT card + 402c PX-263 4 port RS-232 + LPT card + 4100 PX-272 4 + 1 port RS-232 + LPT card +135b Giganet Inc +135c Quatech Inc + 0010 QSC-100 + 0020 DSC-100 + 0030 DSC-200/300 + 0040 QSC-200/300 + 0050 ESC-100D + 0060 ESC-100M + 00f0 MPAC-100 Synchronous Serial Card (Zilog 85230) + 0120 QSCP-100 + 0130 DSCP-100 + 0140 QSCP-200/300 + 0150 DSCP-200/300 + 0170 QSCLP-100 + 0180 DSCLP-100 + 0181 DSC-100 + 0190 SSCLP-100 + 01a0 QSCLP-200/300 + 01b0 DSCLP-200/300 + 01b1 DSC-200/300 + 01c0 SSCLP-200/300 + 01e0 ESC(LP)-100 + 0258 DSPSX-200/300 +135d ABB Network Partner AB +135e Sealevel Systems Inc + 5101 Route 56.PCI - Multi-Protocol Serial Interface (Zilog Z16C32) + 7101 Single Port RS-232/422/485/530 + 7201 Dual Port RS-232/422/485 Interface + 7202 Dual Port RS-232 Interface + 7401 Four Port RS-232 Interface + 7402 Four Port RS-422/485 Interface + 7801 Eight Port RS-232 Interface + 7804 Eight Port RS-232/422/485 Interface + 8001 8001 Digital I/O Adapter +135f I-Data International A-S +1360 Meinberg Funkuhren + 0101 PCI32 DCF77 Radio Clock + 0102 PCI509 DCF77 Radio Clock + 0103 PCI510 DCF77 Radio Clock + 0104 PCI511 DCF77 Radio Clock + 0105 PEX511 DCF77 Radio Clock (PCI Express) + 0106 PZF180PEX High Precision DCF77 Radio Clock (PCI Express) + 0201 GPS167PCI GPS Receiver + 0202 GPS168PCI GPS Receiver + 0203 GPS169PCI GPS Receiver + 0204 GPS170PCI GPS Receiver + 0205 GPS170PEX GPS Receiver (PCI Express) + 0206 GPS180PEX GPS Receiver (PCI Express) + 0207 GLN180PEX GPS/GLONASS receiver (PCI Express) + 0208 GPS180AMC GPS Receiver (PCI Express / MicroTCA / AdvancedMC) + 0209 GNS181PEX GPS/Galileo/GLONASS/BEIDOU receiver (PCI Express) + 0301 TCR510PCI IRIG Timecode Reader + 0302 TCR167PCI IRIG Timecode Reader + 0303 TCR511PCI IRIG Timecode Reader + 0304 TCR511PEX IRIG Timecode Reader (PCI Express) + 0305 TCR170PEX IRIG Timecode Reader (PCI Express) + 0306 TCR180PEX IRIG Timecode Reader (PCI Express) + 0501 PTP270PEX PTP/IEEE1588 slave card (PCI Express) + 0601 FRC511PEX Free Running Clock (PCI Express) +1361 Soliton Systems K.K. +1362 Fujifacom Corporation +1363 Phoenix Technology Ltd +1364 ATM Communications Inc +1365 Hypercope GmbH +1366 Teijin Seiki Co. Ltd +1367 Hitachi Zosen Corporation +1368 Skyware Corporation +1369 Digigram +136a High Soft Tech + 0004 HST Saphir VII mini PCI + 0007 HST Saphir III E MultiLink 4 + 0008 HST Saphir III E MultiLink 8 + 000a HST Saphir III E MultiLink 2 +136b Kawasaki Steel Corporation + ff01 KL5A72002 Motion JPEG +136c Adtek System Science Co Ltd +136d Gigalabs Inc +136f Applied Magic Inc +1370 ATL Products +1371 CNet Technology Inc + 434e GigaCard Network Adapter + 1371 434e N-Way PCI-Bus Giga-Card 1000/100/10Mbps(L) +1373 Silicon Vision Inc +1374 Silicom Ltd. + 0024 Silicom Dual port Giga Ethernet BGE Bypass Server Adapter + 0025 Silicom Quad port Giga Ethernet BGE Bypass Server Adapter + 0026 Silicom Dual port Fiber Giga Ethernet 546 Bypass Server Adapter + 0027 Silicom Dual port Fiber LX Giga Ethernet 546 Bypass Server Adapter + 0029 Silicom Dual port Copper Giga Ethernet 546GB Bypass Server Adapter + 002a Silicom Dual port Fiber Giga Ethernet 546 TAP/Bypass Server Adapter + 002b Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter (PXE2TBI) + 002c Silicom Quad port Copper Giga Ethernet 546GB Bypass Server Adapter (PXG4BPI) + 002d Silicom Quad port Fiber-SX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI) + 002e Silicom Quad port Fiber-LX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI-LX) + 002f Silicom Dual port Fiber-SX Giga Ethernet 546GB Low profile Bypass Server Adapter (PXG2BPFIL) + 0030 Silicom Dual port Fiber-LX Giga Ethernet 546GB Low profile Bypass Server Adapter + 0031 Silicom Quad port Copper Giga Ethernet PCI-E Bypass Server Adapter + 0032 Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter + 0034 Silicom Dual port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter + 0035 Silicom Quad port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter + 0036 Silicom Dual port Fiber Giga Ethernet PCI-E BGE Bypass Server Adapter + 0037 Silicom Dual port Copper Ethernet PCI-E Intel based Bypass Server Adapter + 0038 Silicom Quad port Copper Ethernet PCI-E Intel based Bypass Server Adapter + 0039 Silicom Dual port Fiber-SX Ethernet PCI-E Intel based Bypass Server Adapter + 003a Silicom Dual port Fiber-LX Ethernet PCI-E Intel based Bypass Server Adapter + 003b Silicom Dual port Fiber Ethernet PMC Intel based Bypass Server Adapter (PMCX2BPFI) + 003c Silicom Dual port Copper Ethernet PCI-X BGE based Bypass Server Adapter (PXG2BPRB) + 003d 2-port Copper GBE Bypass with Caviume 1010 PCI-X + 003e Silicom Dual port Fiber Giga Ethernet PCI-E 571 TAP/Bypass Server Adapter (PEG2TBFI) + 003f Silicom Dual port Copper Giga Ethernet PCI-X 546 TAP/Bypass Server Adapter (PXG2TBI) + 0040 Silicom Quad port Fiber-SX Giga Ethernet 571 Bypass Server Adapter (PEG4BPFI) + 0042 4-port Copper GBE PMC-X Bypass + 0043 Silicom Quad port Fiber-SX Giga Ethernet 546 Bypass Server Adapter (PXG4BPFID) + 0045 Silicom 6 port Copper Giga Ethernet 546 Bypass Server Adapter (PXG6BPI) + 0046 4-port bypass PCI-E w disconnect low profile + 0047 Silicom Dual port Fiber-SX Giga Ethernet 571 Bypass Disconnect Server Adapter (PEG2BPFID) + 004a Silicom Quad port Fiber-LX Giga Ethernet 571 Bypass Server Adapter (PEG4BPFI-LX) + 004d Dual port Copper Giga Ethernet PCI-E Bypass Server Adapter + 0401 Gigabit Ethernet ExpressModule Bypass Server Adapter + 0420 Gigabit Ethernet ExpressModule Bypass Server Adapter + 0460 Gigabit Ethernet Express Module Bypass Server Adapter + 0461 Gigabit Ethernet ExpressModule Bypass Server Adapter + 0462 Gigabit Ethernet ExpressModule Bypass Server Adapter + 0470 Octal-port Copper Gigabit Ethernet Express Module Bypass Server Adapter + 0482 Dual-port Fiber (SR) 10 Gigabit Ethernet ExpressModule Bypass Server Adapter + 0483 Dual-port Fiber (LR) 10 Gigabit Ethernet ExpressModule Bypass Server Adapter +1375 Argosystems Inc +1376 LMC +1377 Electronic Equipment Production & Distribution GmbH +1378 Telemann Co. Ltd +1379 Asahi Kasei Microsystems Co Ltd +137a Mark of the Unicorn Inc + 0001 PCI-324 Audiowire Interface +137b PPT Vision +137c Iwatsu Electric Co Ltd +137d Dynachip Corporation +137e Patriot Scientific Corporation +137f Japan Satellite Systems Inc +1380 Sanritz Automation Co Ltd +1381 Brains Co. Ltd +1382 Marian - Electronic & Software + 0001 ARC88 audio recording card + 2008 Prodif 96 Pro sound system + 2048 Prodif Plus sound system + 2088 Marc 8 Midi sound system + 20c8 Marc A sound system + 4008 Marc 2 sound system + 4010 Marc 2 Pro sound system + 4048 Marc 4 MIDI sound system + 4088 Marc 4 Digi sound system + 4248 Marc X sound system + 4424 TRACE D4 Sound System +1383 Controlnet Inc +1384 Reality Simulation Systems Inc +1385 Netgear + 006b WA301 802.11b Wireless PCI Adapter + 4100 MA301 802.11b Wireless PCI Adapter + 4601 WAG511 802.11a/b/g Dual Band Wireless PC Card + 620a GA620 Gigabit Ethernet + 630a GA630 Gigabit Ethernet +1386 Video Domain Technologies +1387 Systran Corp +1388 Hitachi Information Technology Co Ltd +1389 Applicom International + 0001 PCI1500PFB [Intelligent fieldbus adaptor] +138a Fusion Micromedia Corp + 003d VFS491 Validity Sensor +138b Tokimec Inc +138c Silicon Reality +138d Future Techno Designs pte Ltd +138e Basler GmbH +138f Patapsco Designs Inc +1390 Concept Development Inc +1391 Development Concepts Inc +1392 Medialight Inc +1393 Moxa Technologies Co Ltd + 0001 UC7000 Serial + 1020 CP-102 (2-port RS-232 PCI) + 1021 CP-102UL (2-port RS-232 Universal PCI) + 1022 CP-102U (2-port RS-232 Universal PCI) + 1023 CP-102UF + 1024 CP-102E (2-port RS-232 Smart PCI Express Serial Board) + 1025 CP-102EL (2-port RS-232 Smart PCI Express Serial Board) + 1040 Smartio C104H/PCI + 1041 CP104U (4-port RS-232 Universal PCI) + 1042 CP104JU (4-port RS-232 Universal PCI) + 1043 CP104EL (4-port RS-232 Smart PCI Express) + 1044 POS104UL (4-port RS-232 Universal PCI) + 1045 CP-104EL-A (4-port RS-232 PCI Express Serial Board) + 1080 CB108 (8-port RS-232 PC/104-plus Module) + 1140 CT-114 series + 1141 Industrio CP-114 + 1142 CB114 (4-port RS-232/422/485 PC/104-plus Module) + 1143 CP-114UL (4-port RS-232/422/485 Smart Universal PCI Serial Board) + 1144 CP-114EL (4-port RS-232/422/485 Smart PCI Express Serial Board) + 1180 CP118U (8-port RS-232/422/485 Smart Universal PCI) + 1181 CP118EL (8-port RS-232/422/485 Smart PCI Express) + 1182 CP-118EL-A (8-port RS-232/422/485 PCI Express Serial Board) + 1320 CP132 (2-port RS-422/485 PCI) + 1321 CP132U (2-Port RS-422/485 Universal PCI) + 1322 CP-132EL (2-port RS-422/485 Smart PCI Express Serial Board) + 1340 CP134U (4-Port RS-422/485 Universal PCI) + 1341 CB134I (4-port RS-422/485 PC/104-plus Module) + 1380 CP138U (8-port RS-232/422/485 Smart Universal PCI) + 1680 Smartio C168H/PCI + 1681 CP-168U V2 Smart Serial Board (8-port RS-232) + 1682 CP-168EL (8-port RS-232 Smart PCI Express) + 1683 CP-168EL-A (8-port RS-232 PCI Express Serial Board) + 2040 Intellio CP-204J + 2180 Intellio C218 Turbo PCI + 3200 Intellio C320 Turbo PCI +1394 Level One Communications + 0001 LXT1001 Gigabit Ethernet + 1186 4800 DGE-500SX + 1394 0001 NetCelerator Adapter +1395 Ambicom Inc +1396 Cipher Systems Inc +1397 Cologne Chip Designs GmbH + 08b4 ISDN network Controller [HFC-4S] + 1397 08b4 HFC-4S [Cologne Chip HFC-4S Eval. Board] + 1397 b51a HFC-4S [Allo.com BRI card] + 1397 b520 HFC-4S [IOB4ST] + 1397 b540 HFC-4S [Swyx SX2 QuadBri] + 1397 b550 HFC-4S [Junghanns.NET quadBRI] + 1397 b556 HFC-4S [Junghanns.NET duoBRI] + 1397 b559 HFC-4S [Junghanns.NET duoBRI miniPCI] + 1397 b560 HFC-4S [BeroNet BN4S0] + 1397 b566 HFC-4S [BeroNet BN2S0] + 1397 b567 HFC-4S [BeroNet BN1S0 miniPCI] + 1397 b568 HFC-4S [BeroNet BN4S0 miniPCI] + 1397 b569 HFC-4S [BeroNet BN2S0 miniPCI] + 1397 b620 HFC-4S + 1397 b752 HFC-4S [Junghanns.NET quadBRI PCIe] + 1397 b761 HFC-4S [BeroNet BN2S0 PCIe] + 1397 b762 HFC-4S [BeroNet BN4S0 PCIe] + 1397 e884 HFC-4S [OpenVox B200P] + 1397 e888 HFC-4S [OpenVox B200P / B400P] + 16b8 ISDN network Controller [HFC-8S] + 1397 16b8 HFC-8S [Cologne Chip HFC-8S Eval. Board] + 1397 b521 HFC-8S [IOB4ST Recording] + 1397 b522 HFC-8S [IOB8ST] + 1397 b552 HFC-8S [Junghanns.NET octoBRI] + 1397 b55b HFC-8S [Junghanns.NET octoBRI] + 1397 b562 HFC-8S [BeroNet BN8S0] + 1397 b56b HFC-8S [BeroNet BN8S0+] + 1397 b622 HFC-8S + 1397 e998 HFC-8S [OpenVox B800P] + 2bd0 ISDN network controller [HFC-PCI] + 0675 1704 ISDN Adapter (PCI Bus, D, C) + 0675 1708 ISDN Adapter (PCI Bus, D, C, ACPI) + 1397 2bd0 ISDN Board + e4bf 1000 CI1-1-Harp + 30b1 ISDN network Controller [HFC-E1] + 1397 30b1 HFC-E1 [Cologne Chip HFC-E1 Eval. Board] + 1397 b523 HFC-E1 [IOB1E1] + 1397 b543 HFC-E1 [Swyx SX2 SinglePRI V2] + 1397 b544 HFC-E1 [Swyx SX2 DualPRI V2] + 1397 b553 HFC-E1 [Junghanns.NET singleE1] + 1397 b554 HFC-E1 [Junghanns.NET doubleE1] + 1397 b555 HFC-E1 [Junghanns.NET doubleE1 2.0] + 1397 b55a HFC-E1 [Junghanns.NET singleE1 miniPCI] + 1397 b563 HFC-E1 [beroNet BN1E1] + 1397 b564 HFC-E1 [beroNet BN2E1] + 1397 b565 HFC-E1 [beroNet BN2E1+] + 1397 b56a HFC-E1 [beroNet BN1E1 miniPCI] + b700 ISDN network controller PrimuX S0 [HFC-PCI] + f001 GSM Network Controller [HFC-4GSM] +1398 Clarion co. Ltd +1399 Rios systems Co Ltd +139a Alacritech Inc + 0001 Quad Port 10/100 Server Accelerator + 0003 Single Port 10/100 Server Accelerator + 0005 Single Port Gigabit Server Accelerator +139b Mediasonic Multimedia Systems Ltd +139c Quantum 3d Inc +139d EPL limited +139e Media4 +139f Aethra s.r.l. +13a0 Crystal Group Inc +13a1 Kawasaki Heavy Industries Ltd +13a2 Ositech Communications Inc +13a3 Hifn Inc. + 0005 7751 Security Processor + 0006 6500 Public Key Processor + 0007 7811 Security Processor + 0012 7951 Security Processor + 0014 78XX Security Processor + 0016 8065 Security Processor + 0017 8165 Security Processor + 0018 8154 Security Processor + 001d 7956 Security Processor + 001f 7855 Security Processor + 0020 7955 Security Processor + 0026 8155 Security Processor + 002e 9630 Compression Processor + 002f 9725 Compression and Security Processor + 13a3 1600 DR1600 Acceleration Card + 13a3 1605 DR1605 Acceleration Card + 13a3 1610 DR1610 Acceleration Card + 13a3 1615 DR1615 Acceleration Card + 13a3 1620 DR1620 Acceleration Card + 13a3 1625 DR1625 Acceleration Card + 0033 8201 Acceleration Processor + 13a3 0036 DX1710 Acceleration Card + 0034 8202 Acceleration Processor + 13a3 0036 DX1720 Acceleration Card + 0035 8203 Acceleration Processor + 13a3 0036 DX1730 Acceleration Card + 0037 8204 Acceleration Processor + 13a3 0036 DX1740 Acceleration Card + 9240 XR9240 Compression and Security Coprocessor [Panther II] + 13a3 9200 DX2040 Compression and Security Acceleration Card [Panther II] +13a4 Rascom Inc +13a5 Audio Digital Imaging Inc +13a6 Videonics Inc +13a7 Teles AG +13a8 Exar Corp. + 0152 XR17C/D152 Dual PCI UART + 0154 XR17C154 Quad UART + 0158 XR17C158 Octal UART + 0252 XR17V252 Dual UART PCI controller + 0254 XR17V254 Quad UART PCI controller + 0258 XR17V258 Octal UART PCI controller + 0352 XR17V3521 Dual PCIe UART +13a9 Siemens Medical Systems, Ultrasound Group +13aa Broadband Networks Inc +13ab Arcom Control Systems Ltd +13ac Motion Media Technology Ltd +13ad Nexus Inc +13ae ALD Technology Ltd +13af T.Sqware +13b0 Maxspeed Corp +13b1 Tamura corporation +13b2 Techno Chips Co. Ltd +13b3 Lanart Corporation +13b4 Wellbean Co Inc +13b5 ARM +13b6 Dlog GmbH +13b7 Logic Devices Inc +13b8 Nokia Telecommunications oy +13b9 Elecom Co Ltd +13ba Oxford Instruments +13bb Sanyo Technosound Co Ltd +13bc Bitran Corporation +13bd Sharp corporation +13be Miroku Jyoho Service Co. Ltd +13bf Sharewave Inc +13c0 Microgate Corporation + 0010 SyncLink Adapter v1 + 0020 SyncLink SCC Adapter + 0030 SyncLink Multiport Adapter + 0070 SyncLink GT Adapter + 0080 SyncLink GT4 Adapter + 00a0 SyncLink GT2 Adapter + 0210 SyncLink Adapter v2 +13c1 3ware Inc + 1000 5xxx/6xxx-series PATA-RAID + 1001 7xxx/8xxx-series PATA/SATA-RAID + 13c1 1001 7xxx/8xxx-series PATA/SATA-RAID + 1002 9xxx-series SATA-RAID + 1003 9550SX SATA-II RAID PCI-X + 1004 9650SE SATA-II RAID PCIe + 1005 9690SA SAS/SATA-II RAID PCIe + 1010 9750 SAS2/SATA-II RAID PCIe +13c2 Technotrend Systemtechnik GmbH + 000e Technotrend/Hauppauge DVB card rev2.3 + 1019 TTechnoTrend-budget DVB S2-3200 +13c3 Janz Computer AG +13c4 Phase Metrics +13c5 Alphi Technology Corp +13c6 Condor Engineering Inc + 0520 CEI-520 A429 Card + 0620 CEI-620 A429 Card + 0820 CEI-820 A429 Card + 0830 CEI-830 A429 Card + 1004 P-SER Multi-channel PMC to RS-485/422/232 adapter +13c7 Blue Chip Technology Ltd + 0adc PCI-ADC + 0b10 PCI-PIO + 0d10 PCI-DIO + 524c PCI-RLY + 5744 PCI-WDT +13c8 Apptech Inc +13c9 Eaton Corporation +13ca Iomega Corporation +13cb Yano Electric Co Ltd +13cc BARCO +13cd Compatible Systems Corporation +13ce Cocom A/S +13cf Studio Audio & Video Ltd +13d0 Techsan Electronics Co Ltd + 2103 B2C2 FlexCopII DVB chip / Technisat SkyStar2 DVB card + 2104 B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card (rev 01) + 2200 B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card +13d1 Abocom Systems Inc + ab02 ADMtek Centaur-C rev 17 [D-Link DFE-680TX] CardBus Fast Ethernet Adapter + ab03 21x4x DEC-Tulip compatible 10/100 Ethernet + ab06 RTL8139 [FE2000VX] CardBus Fast Ethernet Attached Port Adapter + ab08 21x4x DEC-Tulip compatible 10/100 Ethernet +13d2 Shark Multimedia Inc +13d4 Graphics Microsystems Inc +13d5 Media 100 Inc +13d6 K.I. Technology Co Ltd +13d7 Toshiba Engineering Corporation +13d8 Phobos corporation +13d9 Apex PC Solutions Inc +13da Intresource Systems pte Ltd +13db Janich & Klass Computertechnik GmbH +13dc Netboost Corporation +13dd Multimedia Bundle Inc +13de ABB Robotics Products AB +13df E-Tech Inc + 0001 PCI56RVP Modem + 13df 0001 PCI56RVP Modem +13e0 GVC Corporation +13e1 Silicom Multimedia Systems Inc +13e2 Dynamics Research Corporation +13e3 Nest Inc +13e4 Calculex Inc +13e5 Telesoft Design Ltd +13e6 Argosy research Inc +13e7 NAC Incorporated +13e8 Chip Express Corporation +13e9 Intraserver Technology Inc +13ea Dallas Semiconductor +13eb Hauppauge Computer Works Inc +13ec Zydacron Inc + 000a NPC-RC01 Remote control receiver +13ed Raytheion E-Systems +13ee Hayes Microcomputer Products Inc +13ef Coppercom Inc +13f0 Sundance Technology Inc / IC Plus Corp + 0200 IC Plus IP100A Integrated 10/100 Ethernet MAC + PHY + 1043 8213 NX1001 + 0201 ST201 Sundance Ethernet + 1021 TC902x Gigabit Ethernet + 1023 IP1000 Family Gigabit Ethernet + 1043 8180 NX1101 +13f1 Oce' - Technologies B.V. +13f2 Ford Microelectronics Inc +13f3 Brocade Communications Systems, Inc. +13f4 Troika Networks, Inc. + 1401 Zentai Fibre Channel Adapter +13f5 Kansai Electric Co. Ltd +13f6 C-Media Electronics Inc + 0011 CMI8738 + 0100 CM8338A + 13f6 ffff CMI8338/C3DX PCI Audio Device + 0101 CM8338B + 13f6 0101 CMI8338-031 PCI Audio Device + 0111 CMI8738/CMI8768 PCI Audio + 1019 0970 P6STP-FL motherboard + 1043 8035 CUSI-FX motherboard + 1043 8077 CMI8738 6-channel audio controller + 1043 80e2 CMI8738 6ch-MX + 13f6 0111 CMI8738/C3DX PCI Audio Device + 13f6 9761 Theatron Agrippa + 153b 1144 Aureon 5.1 + 153b 1170 Aureon 7.1 + 1681 a000 Gamesurround MUSE XL + 17ab 0604 PSC604 Dynamic Edge + 17ab 0605 PSC605 Sonic Edge + 17ab 7777 PSC605 Sonic Edge + 270f 1103 CT-7NJS Ultra motherboard + 270f f462 7NJL1 motherboard + 584d 3731 Digital X-Mystique + 584d 3741 X-Plosion 7.1 + 584d 3751 X-Raider 7.1 + 584d 3761 X-Mystique 7.1 LP + 584d 3771 X-Mystique 7.1 LP Value + 7284 8384 Striker 7.1 + 0211 CM8738 + 5011 CM8888 [Oxygen Express] + 13f6 5011 HDA Controller + 8788 CMI8788 [Oxygen HD Audio] + 1043 8269 Virtuoso 200 (Xonar D2) + 1043 8275 Virtuoso 100 (Xonar DX) + 1043 82b7 Virtuoso 200 (Xonar D2X) + 1043 8314 Virtuoso 200 (Xonar HDAV1.3) + 1043 8327 Virtuoso 100 (Xonar DX) + 1043 834f Virtuoso 100 (Xonar D1) + 1043 835c Virtuoso 100 (Xonar Essence STX) + 1043 835d Virtuoso 100 (Xonar ST) + 1043 835e Virtuoso 200 (Xonar HDAV1.3 Slim) + 1043 838e Virtuoso 66 (Xonar DS) + 1043 8428 Virtuoso 100 (Xonar Xense) + 1043 8467 CMI8786 (Xonar DG) + 1043 8521 CMI8786 (Xonar DGX) + 1043 8522 Xonar DSX + 1043 85f4 Virtuoso 100 (Xonar Essence STX II) + 13f6 8782 PCI 2.0 HD Audio + 13f6 ffff CMI8787-HG2PCI + 14c3 1710 HiFier Fantasia + 14c3 1711 HiFier Serenade + 14c3 1713 HiFier Serenade III + 1a58 0910 Barracuda AC-1 + 415a 5431 X-Meridian 7.1 + 5431 017a X-Meridian 7.1 2G + 584d 3781 HDA X-Purity 7.1 Platinum + 7284 9761 CLARO + 7284 9781 CLARO halo + 7284 9783 eCLARO + 7284 9787 CLARO II +13f7 Wildfire Communications +13f8 Ad Lib Multimedia Inc +13f9 NTT Advanced Technology Corp. +13fa Pentland Systems Ltd +13fb Aydin Corp +13fc Computer Peripherals International +13fd Micro Science Inc +13fe Advantech Co. Ltd + 0071 PCIE-1761H, 8-ch Relay and 8-ch Isolated Digital Input Card + 1240 PCI-1240 4-channel stepper motor controller card + 1600 PCI-16xx series PCI multiport serial board (function 0) +# This board has two PCI functions, appears as two PCI devices + 1601 0002 PCI-1601 2-port unisolated RS-422/485 +# This board has two PCI functions, appears as two PCI devices + 1602 0002 PCI-1602 2-port isolated RS-422/485 + 1612 0004 PCI-1612 4-port RS-232/422/485 + 1603 PCI-1603 2-port isolated RS-232/current loop + 1604 PCI-1604 2-port RS-232 + 1680 PCI-1680 Rev.A1 2-port CAN-bus with isolation protection + 16ff PCI-16xx series PCI multiport serial board (function 1: RX/TX steering CPLD) + 1601 0000 PCI-1601 2-port unisolated RS-422/485 PCI communications card + 1602 0000 PCI-1602 2-port isolated RS-422/485 + 1612 0000 PCI-1612 4-port RS-232/422/485 + 1711 PCI-1711 16-channel data acquisition card 12-bit, 100kS/s + 1713 PCI-1713 32-channel isolated analog input card + 1733 PCI-1733 32-channel isolated digital input card + 1734 PCI-1734 32-channel isolated digital output card + 1752 PCI-1752 64-channel Isolated Digital Output Card + 1754 PCI-1754 64-channel Isolated Digital Input Card + 1756 PCI-1756 64-ch Isolated Digital I/O PCI Card + a004 PCI-1612 4-port RS-232/422/485 +# FPGA bridge to two SJA1000 + c302 MIOe-3680 2-Port CAN-Bus MIOe Module with Isolation Protection +13ff Silicon Spice Inc +1400 Artx Inc + 1401 9432 TX +1401 CR-Systems A/S +1402 Meilhaus Electronic GmbH + 0630 ME-630 + 0940 ME-94 + 0950 ME-95 + 0960 ME-96 + 1000 ME-1000 + 100a ME-1000 + 100b ME-1000 + 1400 ME-1400 + 140a ME-1400A + 140b ME-1400B + 140c ME-1400C + 140d ME-1400D + 140e ME-1400E + 14ea ME-1400EA + 14eb ME-1400EB + 1604 ME-1600/4U + 1608 ME-1600/8U + 160c ME-1600/12U + 160f ME-1600/16U + 168f ME-1600/16U8I + 4610 ME-4610 + 4650 ME-4650 + 4660 ME-4660 + 4661 ME-4660I + 4662 ME-4660 + 4663 ME-4660I + 4670 ME-4670 + 4671 ME-4670I + 4672 ME-4670S + 4673 ME-4670IS + 4680 ME-4680 + 4681 ME-4680I + 4682 ME-4680S + 4683 ME-4680IS + 6004 ME-6000/4 + 6008 ME-6000/8 + 600f ME-6000/16 + 6014 ME-6000I/4 + 6018 ME-6000I/8 + 601f ME-6000I/16 + 6034 ME-6000ISLE/4 + 6038 ME-6000ISLE/8 + 603f ME-6000ISLE/16 + 6044 ME-6000/4/DIO + 6048 ME-6000/8/DIO + 604f ME-6000/16/DIO + 6054 ME-6000I/4/DIO + 6058 ME-6000I/8/DIO + 605f ME-6000I/16/DIO + 6074 ME-6000ISLE/4/DIO + 6078 ME-6000ISLE/8/DIO + 607f ME-6000ISLE/16/DIO + 6104 ME-6100/4 + 6108 ME-6100/8 + 610f ME-6100/16 + 6114 ME-6100I/4 + 6118 ME-6100I/8 + 611f ME-6100I/16 + 6134 ME-6100ISLE/4 + 6138 ME-6100ISLE/8 + 613f ME-6100ISLE/16 + 6144 ME-6100/4/DIO + 6148 ME-6100/8/DIO + 614f ME-6100/16/DIO + 6154 ME-6100I/4/DIO + 6158 ME-6100I/8/DIO + 615f ME-6100I/16/DIO + 6174 ME-6100ISLE/4/DIO + 6178 ME-6100ISLE/8/DIO + 617f ME-6100ISLE/16/DIO + 6259 ME-6200I/9/DIO + 6359 ME-6300I/9/DIO + 810a ME-8100A + 810b ME-8100B + 820a ME-8200A + 820b ME-8200B +1403 Ascor Inc +1404 Fundamental Software Inc +1405 Excalibur Systems Inc +1406 Oce' Printing Systems GmbH +1407 Lava Computer mfg Inc + 0100 Lava Dual Serial + 0101 Lava Quatro A + 0102 Lava Quatro B + 0110 Lava DSerial-PCI Port A + 0111 Lava DSerial-PCI Port B + 0120 Quattro-PCI A + 0121 Quattro-PCI B + 0180 Lava Octo A + 0181 Lava Octo B + 0200 Lava Port Plus + 0201 Lava Quad A + 0202 Lava Quad B + 0220 Lava Quattro PCI Ports A/B + 0221 Lava Quattro PCI Ports C/D + 0400 Lava 8255-PIO-PCI + 0500 Lava Single Serial + 0520 Lava RS422-SS-PCI + 0600 Lava Port 650 + 8000 Lava Parallel + 8001 Dual parallel port controller A + 8002 Lava Dual Parallel port A + 8003 Lava Dual Parallel port B + 8800 BOCA Research IOPPAR +1408 Aloka Co. Ltd +1409 Timedia Technology Co Ltd + 7168 PCI2S550 (Dual 16550 UART) + 1409 0002 SER4036A3V (2x RS232 port) + 1409 4027 SER4027A (1x RS232 port) + 1409 4037 SER4037A(L) [SUNIX SUN1889] (2x RS232 port) +# Single DC-37 connector + 1409 4056 SER4056A (4x RS232) + 1409 5027 SER4027D + 1409 5037 SER4037D (2x RS232 port) +# Single DC-62 connector + 1409 5066 SER4066R (8x RS232) +# 4x 8p8c connectors + 1409 6056 SER4056D (4x RS232 port) + 7268 SUN1888 (Dual IEEE1284 parallel port) + 1409 0103 PAR4008A + 1409 0104 PAR4018A +140a DSP Research Inc +# Formerly RAMiX, GE Fanuc, GE Intelligent Platforms +140b Abaco Systems, Inc. +140c Elmic Systems Inc +140d Matsushita Electric Works Ltd +140e Goepel Electronic GmbH +140f Salient Systems Corp +1410 Midas lab Inc +1411 Ikos Systems Inc +# Nee IC Ensemble Inc. +1412 VIA Technologies Inc. + 1712 ICE1712 [Envy24] PCI Multi-Channel I/O Controller + 1412 1712 Hoontech ST Audio DSP 24 + 1412 d630 M-Audio Delta 1010 + 1412 d631 M-Audio Delta DiO + 1412 d632 M-Audio Delta 66 + 1412 d633 M-Audio Delta 44 + 1412 d634 M-Audio Delta Audiophile 2496 + 1412 d635 M-Audio Delta TDIF + 1412 d637 M-Audio Delta RBUS + 1412 d638 M-Audio Delta 410 + 1412 d63b M-Audio Delta 1010LT + 1412 d63c Digigram VX442 + 1416 1712 Hoontech ST Audio DSP 24 Media 7.1 + 153b 1115 EWS88 MT + 153b 1125 EWS88 MT (Master) + 153b 112b EWS88 D + 153b 112c EWS88 D (Master) + 153b 1130 EWX 24/96 + 153b 1138 DMX 6fire 24/96 + 153b 1151 PHASE88 + 16ce 1040 Edirol DA-2496 + 1724 VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller + 10b0 0200 Hollywood@Home 7.1 + 1412 1724 Albatron PX865PE 7.1 + 1412 3630 M-Audio Revolution 7.1 + 1412 3631 M-Audio Revolution 5.1 + 1412 3632 M-Audio Audiophile 192 + 153b 1145 Aureon 7.1 Space + 153b 1147 Aureon 5.1 Sky + 153b 1150 PHASE 22 + 153b 1153 Aureon 7.1 Universe + 17ab 1906 PSC 724 [Ultimate Edge] + 270f f641 ZNF3-150 + 270f f645 ZNF3-250 + 3130 4154 MAYA 44 MKII +1413 Addonics +1414 Microsoft Corporation + 0001 MN-120 (ADMtek Centaur-C based) + 0002 MN-130 (ADMtek Centaur-P based) +# Virtual Video Card Device for Windows Remote Desktop (RDP) + 008c Basic Render Driver + 008e Basic Render Driver + 5353 Hyper-V virtual VGA + 5801 XMA Decoder (Xenon) + 5802 SATA Controller - CdRom (Xenon) + 5803 SATA Controller - Disk (Xenon) + 5804 OHCI Controller 0 (Xenon) + 5805 EHCI Controller 0 (Xenon) + 5806 OHCI Controller 1 (Xenon) + 5807 EHCI Controller 1 (Xenon) + 580a Fast Ethernet Adapter (Xenon) + 580b Secure Flash Controller (Xenon) + 580d System Management Controller (Xenon) + 5811 Xenos GPU (Xenon) + 5821 Xenos GPU (Zephyr/Falcon) + 5831 Xenos GPU (Jasper) + 5841 Xenos GPU (Slim) +1415 Oxford Semiconductor Ltd + 8401 OX9162 Mode 1 (8-bit bus) + 8403 OX9162 Mode 0 (parallel port) + 9500 OX16PCI954 (Quad 16950 UART) function 0 (Disabled) + 9501 OX16PCI954 (Quad 16950 UART) function 0 (Uart) + 12c4 0201 Titan/cPCI (2 port) + 12c4 0202 Titan/cPCI (4 port) + 12c4 0203 Titan/cPCI (8 port) + 12c4 0210 Titan/104-Plus (8 port, p1-4) + 131f 2050 CyberPro (4-port) +# Model IO1085, Part No: JJ-P46012 + 131f 2051 CyberSerial 4S Plus + 15ed 2000 MCCR Serial p0-3 of 8 + 15ed 2001 MCCR Serial p0-3 of 16 + 9505 OXuPCI952 (Dual 16C950 UART) + 950a EXSYS EX-41092 Dual 16950 Serial adapter + 950b OXCB950 Cardbus 16950 UART + 9510 OX16PCI954 (Quad 16950 UART) function 1 (Disabled) + 12c4 0200 Titan/cPCI (Unused) + 9511 OX16PCI954 (Quad 16950 UART) function 1 (8bit bus) + 12c4 0211 Titan/104-Plus (8 port, p5-8) + 15ed 2000 MCCR Serial p4-7 of 8 + 15ed 2001 MCCR Serial p4-15 of 16 + 9512 OX16PCI954 (Quad 16950 UART) function 1 (32bit bus) + 9513 OX16PCI954 (Quad 16950 UART) function 1 (parallel port) + 9521 OX16PCI952 (Dual 16950 UART) + 9523 OX16PCI952 Integrated Parallel Port +# Multifunction device with 3 function bits in ID + c000 OXPCIe840 Parallel Port + c004 OXPCIe840 Parallel Port + c006 OXPCIe840 GPIO +# Multifunction device with reset straps and function bits in ID + c100 OXPCIe952 Parallel Port + c101 OXPCIe952 Legacy 950 UART + c104 OXPCIe952 Parallel Port + c105 OXPCIe952 Legacy 950 UART + c106 OXPCIe952 GPIO + c108 OXPCIe952 Parallel Port + c109 OXPCIe952 Legacy 950 UART + c10c OXPCIe952 Parallel Port + c10d OXPCIe952 Legacy 950 UART + c10e OXPCIe952 GPIO + c110 OXPCIe952 Parallel Port + c114 OXPCIe952 Parallel Port + c118 OXPCIe952 Parallel Port + c11b OXPCIe952 Native 950 UART + c11c OXPCIe952 Parallel Port + c11e OXPCIe952 GPIO + c11f OXPCIe952 Native 950 UART + c120 OXPCIe952 Legacy 950 UART + c124 OXPCIe952 Legacy 950 UART + c126 OXPCIe952 GPIO + c128 OXPCIe952 Legacy 950 UART + c12c OXPCIe952 Legacy 950 UART + c12e OXPCIe952 GPIO + c134 OXPCIe952 GPIO + c138 OXPCIe952 Native 950 UART + c13c OXPCIe952 GPIO + c13d OXPCIe952 Native 950 UART + c140 OXPCIe952 Legacy 950 UART #1 + c141 OXPCIe952 Legacy 950 UART #2 + c144 OXPCIe952 Legacy 950 UART #1 + c145 OXPCIe952 Legacy 950 UART #2 + c146 OXPCIe952 GPIO + c148 OXPCIe952 Legacy 950 UART #1 + c149 OXPCIe952 Legacy 950 UART #2 + c14c OXPCIe952 Legacy 950 UART #1 + c14d OXPCIe952 Legacy 950 UART #2 + c14e OXPCIe952 GPIO + c154 OXPCIe952 GPIO + c158 OXPCIe952 Dual Native 950 UART + e4bf c504 CP4-SCAT Wireless Technologies Carrier Board + e4bf d551 DU1-MUSTANG Dual-Port RS-485 Interface + c15c OXPCIe952 GPIO + c15d OXPCIe952 Dual Native 950 UART +# Multifunction device with 4 function bits in ID + c204 OXPCIe954 GPIO + c208 OXPCIe954 Quad Native 950 UART + c20c OXPCIe954 GPIO + c20d OXPCIe954 Quad Native 950 UART +# Multifunction device with 4 function bits in ID + c304 OXPCIe958 GPIO + c308 OXPCIe958 Quad Native 950 UART + c30c OXPCIe958 GPIO + c30d OXPCIe958 Quad Native 950 UART +# Multifunction device with 8 function bits in ID + c530 OXPCIe200 Dual OHCI USB Controller (ULPI/R-ULPI) + c531 OXPCIe200 Dual EHCI USB Controller (ULPI/R-ULPI) + c534 OXPCIe200 Dual OHCI USB Controller (ULPI/R-ULPI) + c535 OXPCIe200 Dual EHCI USB Controller (ULPI/R-ULPI) + c536 OXPCIe200 GPIO + c538 OXPCIe200 Dual OHCI USB Controller (ULPI/R-ULPI) + c539 OXPCIe200 Dual EHCI USB Controller (ULPI/R-ULPI) + c53b OXPCIe200 Native 950 UART + c53c OXPCIe200 Dual OHCI USB Controller (ULPI/R-ULPI) + c53d OXPCIe200 Dual EHCI USB Controller (ULPI/R-ULPI) + c53e OXPCIe200 GPIO + c53f OXPCIe200 Native 950 UART + c540 OXPCIe200 Dual OHCI USB Controller (R-ULPI) + c541 OXPCIe200 Dual EHCI USB Controller (R-ULPI) + c544 OXPCIe200 Dual OHCI USB Controller (R-ULPI) + c545 OXPCIe200 Dual EHCI USB Controller (R-ULPI) + c546 OXPCIe200 GPIO + c548 OXPCIe200 Dual OHCI USB Controller (R-ULPI) + c549 OXPCIe200 Dual EHCI USB Controller (R-ULPI) + c54b OXPCIe200 Native 950 UART + c54c OXPCIe200 Dual OHCI USB Controller (R-ULPI) + c54d OXPCIe200 Dual EHCI USB Controller (R-ULPI) + c54e OXPCIe200 Dual GPIO + c54f OXPCIe200 Native 950 UART + c560 OXPCIe200 Dual OHCI USB Controller (ULPI/analog) + c561 OXPCIe200 EHCI USB Controller (ULPI) + c564 OXPCIe200 Dual OHCI USB Controller (ULPI/analog) + c565 OXPCIe200 EHCI USB Controller (ULPI) + c566 OXPCIe200 GPIO + c568 OXPCIe200 Dual OHCI USB Controller (ULPI/analog) + c569 OXPCIe200 EHCI USB Controller (ULPI) + c56b OXPCIe200 Native 950 UART + c56c OXPCIe200 Dual OHCI USB Controller (ULPI/analog) + c56d OXPCIe200 EHCI USB Controller (ULPI) + c56e OXPCIe200 GPIO + c56f OXPCIe200 Native 950 UART + c570 OXPCIe200 Dual OHCI USB Controller (R-ULPI/analog) + c571 OXPCIe200 EHCI USB Controller (R-ULPI) + c574 OXPCIe200 Dual OHCI USB Controller (R-ULPI/analog) + c575 OXPCIe200 EHCI USB Controller (R-ULPI) + c576 OXPCIe200 GPIO + c578 OXPCIe200 Dual OHCI USB Controller (R-ULPI/analog) + c579 OXPCIe200 EHCI USB Controller (R-ULPI) + c57b OXPCIe200 Native 950 UART + c57c OXPCIe200 Dual OHCI USB Controller (R-ULPI/analog) + c57d OXPCIe200 EHCI USB Controller (R-ULPI) + c57e OXPCIe200 GPIO + c57f OXPCIe200 Native 950 UART + c5a0 OXPCIe200 OHCI USB Controller (ULPI) + c5a1 OXPCIe200 EHCI USB Controller (ULPI) + c5a2 OXPCIe200 Programmable Memory Interface + c5a4 OXPCIe200 OHCI USB Controller (ULPI) + c5a5 OXPCIe200 EHCI USB Controller (ULPI) + c5a6 OXPCIe200 Programmable Memory Interface & GPIO + c5a8 OXPCIe200 OHCI USB Controller (ULPI) + c5a9 OXPCIe200 EHCI USB Controller (ULPI) + c5aa OXPCIe200 Programmable Memory Interface + c5ab OXPCIe200 Native 950 UART + c5ac OXPCIe200 OHCI USB Controller (ULPI) + c5ad OXPCIe200 EHCI USB Controller (ULPI) + c5ae OXPCIe200 Programmable Memory Interface & GPIO + c5af OXPCIe200 Native 950 UART + c5b0 OXPCIe200 OHCI USB Controller (R-ULPI) + c5b1 OXPCIe200 EHCI USB Controller (R-ULPI) + c5b2 OXPCIe200 Programmable Memory Interface + c5b4 OXPCIe200 OHCI USB Controller (R-ULPI) + c5b5 OXPCIe200 EHCI USB Controller (R-ULPI) + c5b6 OXPCIe200 Programmable Memory Interface & GPIO + c5b8 OXPCIe200 OHCI USB Controller (R-ULPI) + c5b9 OXPCIe200 EHCI USB Controller (R-ULPI) + c5ba OXPCIe200 Programmable Memory Interface + c5bb OXPCIe200 Native 950 UART + c5bc OXPCIe200 OHCI USB Controller (R-ULPI) + c5bd OXPCIe200 EHCI USB Controller (R-ULPI) + c5be OXPCIe200 Programmable Memory Interface & GPIO + c5bf OXPCIe200 Native 950 UART + c5c0 OXPCIe200 OHCI USB Controller (analog) + c5c2 OXPCIe200 Programmable Memory Interface + c5c4 OXPCIe200 OHCI USB Controller (analog) + c5c6 OXPCIe200 Programmable Memory Interface & GPIO + c5c8 OXPCIe200 OHCI USB Controller (analog) + c5ca OXPCIe200 Programmable Memory Interface + c5cb OXPCIe200 Native 950 UART + c5cc OXPCIe200 OHCI USB Controller (analog) + c5ce OXPCIe200 Programmable Memory Interface & GPIO + c5cf OXPCIe200 Native 950 UART +1416 Multiwave Innovation pte Ltd +1417 Convergenet Technologies Inc +1418 Kyushu electronics systems Inc +1419 Excel Switching Corp +141a Apache Micro Peripherals Inc +141b Zoom Telephonics Inc +141d Digitan Systems Inc +141e Fanuc Ltd +141f Visiontech Ltd +1420 Psion Dacom plc + 8002 Gold Card NetGlobal 56k+10/100Mb CardBus (Ethernet part) + 8003 Gold Card NetGlobal 56k+10/100Mb CardBus (Modem part) +1421 Ads Technologies Inc +1422 Ygrec Systems Co Ltd +1423 Custom Technology Corp. +1424 Videoserver Connections +1425 Chelsio Communications Inc + 000b T210 Protocol Engine + 000c T204 Protocol Engine + 0022 10GbE Ethernet Adapter + 0030 T310 10GbE Single Port Adapter + 103c 705e PCIe 10GBase-SR [AD386A] + 0031 T320 10GbE Dual Port Adapter + 0032 T302 1GbE Dual Port Adapter + 0033 T304 1GbE Quad Port Adapter + 0034 B320 10GbE Dual Port Adapter + 0035 S310-CR 10GbE Single Port Adapter + 0036 S320-LP-CR 10GbE Dual Port Adapter + 0037 N320-G2-CR 10GbE Dual Port Adapter + 4001 T420-CR Unified Wire Ethernet Controller + 4002 T422-CR Unified Wire Ethernet Controller + 4003 T440-CR Unified Wire Ethernet Controller + 4004 T420-BCH Unified Wire Ethernet Controller + 4005 T440-BCH Unified Wire Ethernet Controller + 4006 T440-CH Unified Wire Ethernet Controller + 4007 T420-SO Unified Wire Ethernet Controller + 4008 T420-CX Unified Wire Ethernet Controller + 4009 T420-BT Unified Wire Ethernet Controller + 400a T404-BT Unified Wire Ethernet Controller + 400b B420-SR Unified Wire Ethernet Controller + 400c B404-BT Unified Wire Ethernet Controller + 400d T480 Unified Wire Ethernet Controller + 400e T440-LP-CR Unified Wire Ethernet Controller + 400f T440 [Amsterdam] Unified Wire Ethernet Controller + 4080 T480-4080 T480 Unified Wire Ethernet Controller + 4081 T440F-4081 T440-FCoE Unified Wire Ethernet Controller + 4082 T420-4082 Unified Wire Ethernet Controller + 4083 T420X-4083 Unified Wire Ethernet Controller + 4084 T440-4084 Unified Wire Ethernet Controller + 4085 T420-4085 SFP+ Unified Wire Ethernet Controller + 4086 T440-4086 10Gbase-T Unified Wire Ethernet Controller + 4087 T440T-4087 Unified Wire Ethernet Controller + 4088 T440-4088 Unified Wire Ethernet Controller + 4401 T420-CR Unified Wire Ethernet Controller + 4402 T422-CR Unified Wire Ethernet Controller + 4403 T440-CR Unified Wire Ethernet Controller + 4404 T420-BCH Unified Wire Ethernet Controller + 4405 T440-BCH Unified Wire Ethernet Controller + 4406 T440-CH Unified Wire Ethernet Controller + 4407 T420-SO Unified Wire Ethernet Controller + 4408 T420-CX Unified Wire Ethernet Controller + 4409 T420-BT Unified Wire Ethernet Controller + 440a T404-BT Unified Wire Ethernet Controller + 440b B420-SR Unified Wire Ethernet Controller + 440c B404-BT Unified Wire Ethernet Controller + 440d T480 Unified Wire Ethernet Controller + 440e T440-LP-CR Unified Wire Ethernet Controller + 440f T440 [Amsterdam] Unified Wire Ethernet Controller + 4480 T480-4080 T480 Unified Wire Ethernet Controller + 4481 T440F-4081 T440-FCoE Unified Wire Ethernet Controller + 4482 T420-4082 Unified Wire Ethernet Controller + 4483 T420X-4083 Unified Wire Ethernet Controller + 4484 T440-4084 Unified Wire Ethernet Controller + 4485 T420-4085 SFP+ Unified Wire Ethernet Controller + 4486 T440-4086 10Gbase-T Unified Wire Ethernet Controller + 4487 T440T-4087 Unified Wire Ethernet Controller + 4488 T440-4088 Unified Wire Ethernet Controller + 4501 T420-CR Unified Wire Storage Controller + 4502 T422-CR Unified Wire Storage Controller + 4503 T440-CR Unified Wire Storage Controller + 4504 T420-BCH Unified Wire Storage Controller + 4505 T440-BCH Unified Wire Storage Controller + 4506 T440-CH Unified Wire Storage Controller + 4507 T420-SO Unified Wire Storage Controller + 4508 T420-CX Unified Wire Storage Controller + 4509 T420-BT Unified Wire Storage Controller + 450a T404-BT Unified Wire Storage Controller + 450b B420-SR Unified Wire Storage Controller + 450c B404-BT Unified Wire Storage Controller + 450d T480 Unified Wire Storage Controller + 450e T440-LP-CR Unified Wire Storage Controller + 450f T440 [Amsterdam] Unified Wire Storage Controller + 4580 T480-4080 T480 Unified Wire Storage Controller + 4581 T440F-4081 T440-FCoE Unified Wire Storage Controller + 4582 T420-4082 Unified Wire Storage Controller + 4583 T420X-4083 Unified Wire Storage Controller + 4584 T440-4084 Unified Wire Storage Controller + 4585 T420-4085 SFP+ Unified Wire Storage Controller + 4586 T440-4086 10Gbase-T Unified Wire Storage Controller + 4587 T440T-4087 Unified Wire Storage Controller + 4588 T440-4088 Unified Wire Storage Controller + 4601 T420-CR Unified Wire Storage Controller + 4602 T422-CR Unified Wire Storage Controller + 4603 T440-CR Unified Wire Storage Controller + 4604 T420-BCH Unified Wire Storage Controller + 4605 T440-BCH Unified Wire Storage Controller + 4606 T440-CH Unified Wire Storage Controller + 4607 T420-SO Unified Wire Storage Controller + 4608 T420-CX Unified Wire Storage Controller + 4609 T420-BT Unified Wire Storage Controller + 460a T404-BT Unified Wire Storage Controller + 460b B420-SR Unified Wire Storage Controller + 460c B404-BT Unified Wire Storage Controller + 460d T480 Unified Wire Storage Controller + 460e T440-LP-CR Unified Wire Storage Controller + 460f T440 [Amsterdam] Unified Wire Storage Controller + 4680 T480-4080 T480 Unified Wire Storage Controller + 4681 T440F-4081 T440-FCoE Unified Wire Storage Controller + 4682 T420-4082 Unified Wire Storage Controller + 4683 T420X-4083 Unified Wire Storage Controller + 4684 T440-4084 Unified Wire Storage Controller + 4685 T420-4085 SFP+ Unified Wire Storage Controller + 4686 T440-4086 10Gbase-T Unified Wire Storage Controller + 4687 T440T-4087 Unified Wire Storage Controller + 4688 T440-4088 Unified Wire Storage Controller + 4701 T420-CR Unified Wire Ethernet Controller + 4702 T422-CR Unified Wire Ethernet Controller + 4703 T440-CR Unified Wire Ethernet Controller + 4704 T420-BCH Unified Wire Ethernet Controller + 4705 T440-BCH Unified Wire Ethernet Controller + 4706 T440-CH Unified Wire Ethernet Controller + 4707 T420-SO Unified Wire Ethernet Controller + 4708 T420-CX Unified Wire Ethernet Controller + 4709 T420-BT Unified Wire Ethernet Controller + 470a T404-BT Unified Wire Ethernet Controller + 470b B420-SR Unified Wire Ethernet Controller + 470c B404-BT Unified Wire Ethernet Controller + 470d T480 Unified Wire Ethernet Controller + 470e T440-LP-CR Unified Wire Ethernet Controller + 470f T440 [Amsterdam] Unified Wire Ethernet Controller + 4780 T480-4080 T480 Unified Wire Ethernet Controller + 4781 T440F-4081 T440-FCoE Unified Wire Ethernet Controller + 4782 T420-4082 Unified Wire Ethernet Controller + 4783 T420X-4083 Unified Wire Ethernet Controller + 4784 T440-4084 Unified Wire Ethernet Controller + 4785 T420-4085 SFP+ Unified Wire Ethernet Controller + 4786 T440-4086 10Gbase-T Unified Wire Ethernet Controller + 4787 T440T-4087 Unified Wire Ethernet Controller + 4788 T440-4088 Unified Wire Ethernet Controller + 4801 T420-CR Unified Wire Ethernet Controller [VF] + 4802 T422-CR Unified Wire Ethernet Controller [VF] + 4803 T440-CR Unified Wire Ethernet Controller [VF] + 4804 T420-BCH Unified Wire Ethernet Controller [VF] + 4805 T440-BCH Unified Wire Ethernet Controller [VF] + 4806 T440-CH Unified Wire Ethernet Controller [VF] + 4807 T420-SO Unified Wire Ethernet Controller [VF] + 4808 T420-CX Unified Wire Ethernet Controller [VF] + 4809 T420-BT Unified Wire Ethernet Controller [VF] + 480a T404-BT Unified Wire Ethernet Controller [VF] + 480b B420-SR Unified Wire Ethernet Controller [VF] + 480c B404-BT Unified Wire Ethernet Controller [VF] + 480d T480 Unified Wire Ethernet Controller [VF] + 480e T440-LP-CR Unified Wire Ethernet Controller [VF] + 480f T440 [Amsterdam] Unified Wire Ethernet Controller [VF] + 4880 T480-4080 T480 Unified Wire Ethernet Controller [VF] + 4881 T440F-4081 T440-FCoE Unified Wire Ethernet Controller [VF] + 4882 T420-4082 Unified Wire Ethernet Controller [VF] + 4883 T420X-4083 Unified Wire Ethernet Controller [VF] + 4884 T440-4084 Unified Wire Ethernet Controller [VF] + 4885 T420-4085 SFP+ Unified Wire Ethernet Controller [VF] + 4886 T440-4086 10Gbase-T Unified Wire Ethernet Controller [VF] + 4887 T440T-4087 Unified Wire Ethernet Controller [VF] + 4888 T440-4088 Unified Wire Ethernet Controller [VF] + 5001 T520-CR Unified Wire Ethernet Controller + 193d 1001 510F-B + 5002 T522-CR Unified Wire Ethernet Controller + 5003 T540-CR Unified Wire Ethernet Controller + 5004 T520-BCH Unified Wire Ethernet Controller + 5005 T540-BCH Unified Wire Ethernet Controller + 5006 T540-CH Unified Wire Ethernet Controller + 5007 T520-SO Unified Wire Ethernet Controller + 5008 T520-CX Unified Wire Ethernet Controller + 5009 T520-BT Unified Wire Ethernet Controller + 500a T504-BT Unified Wire Ethernet Controller + 500b B520-SR Unified Wire Ethernet Controller + 500c B504-BT Unified Wire Ethernet Controller + 500d T580-CR Unified Wire Ethernet Controller + 500e T540-LP-CR Unified Wire Ethernet Controller + 500f T540 [Amsterdam] Unified Wire Ethernet Controller + 5010 T580-LP-CR Unified Wire Ethernet Controller + 5011 T520-LL-CR Unified Wire Ethernet Controller + 5012 T560-CR Unified Wire Ethernet Controller + 5013 T580-CHR Unified Wire Ethernet Controller + 5014 T580-SO-CR Unified Wire Ethernet Controller + 5015 T502-BT Unified Wire Ethernet Controller + 5016 T580-OCP-SO Unified Wire Ethernet Controller + 5017 T520-OCP-SO Unified Wire Ethernet Controller + 5018 T540-BT Unified Wire Ethernet Controller + 5019 T540-LP-BT Unified Wire Ethernet Controller + 501a T540-SO-BT Unified Wire Ethernet Controller + 501b T540-SO-CR Unified Wire Ethernet Controller + 5080 T540-5080 Unified Wire Ethernet Controller + 5081 T540-5081 Unified Wire Ethernet Controller + 5082 T504-5082 Unified Wire Ethernet Controller + 5083 T540-5083 Unified Wire Ethernet Controller + 5084 T540-5084 Unified Wire Ethernet Controller + 5085 T580-5085 Unified Wire Ethernet Controller + 5086 T580-5086 Unified Wire Ethernet Controller + 5087 T580-5087 Unified Wire Ethernet Controller + 5088 T570-5088 Unified Wire Ethernet Controller + 5089 T520-5089 Unified Wire Ethernet Controller + 5090 T540-5090 Unified Wire Ethernet Controller + 5091 T522-5091 Unified Wire Ethernet Controller + 5092 T520-5092 Unified Wire Ethernet Controller + 5093 T580-5093 Unified Wire Ethernet Controller + 5094 T540-5094 Unified Wire Ethernet Controller + 5095 T540-5095 Unified Wire Ethernet Controller + 5096 T580-5096 Unified Wire Ethernet Controller + 5097 T520-5097 Unified Wire Ethernet Controller + 5098 T580-5098 Unified Wire Ethernet Controller + 5099 T580-5099 Unified Wire Ethernet Controller + 509a T520-509A Unified Wire Ethernet Controller + 509b T540-509B Unified Wire Ethernet Controller + 509c T520-509C Unified Wire Ethernet Controller + 509d T540-509D Unified Wire Ethernet Controller + 509e T520-509E Unified Wire Ethernet Controller + 509f T540-509F Unified Wire Ethernet Controller + 50a0 T540-50A0 Unified Wire Ethernet Controller + 50a1 T540-50A1 Unified Wire Ethernet Controller + 50a2 T580-50A2 Unified Wire Ethernet Controller + 50a3 T580-50A3 Unified Wire Ethernet Controller + 50a4 T540-50A4 Unified Wire Ethernet Controller + 50a5 T522-50A5 Unified Wire Ethernet Controller + 50a6 T522-50A6 Unified Wire Ethernet Controller + 50a7 T580-50A7 Unified Wire Ethernet Controller + 50a8 T580-50A8 Unified Wire Ethernet Controller + 50a9 T580-50A9 Unified Wire Ethernet Controller + 50aa T580-50AA Unified Wire Ethernet Controller + 50ab T520-50AB Unified Wire Ethernet Controller + 50ac T540-50AC Unified Wire Ethernet Controller + 50ad T520-50AD Unified Wire Ethernet Controller + 50ae T540-50AE Unified Wire Ethernet Controller + 50af T580-50AF Unified Wire Ethernet Controller + 50b0 T520-50B0 Unified Wire Ethernet Controller + 5401 T520-CR Unified Wire Ethernet Controller + 5402 T522-CR Unified Wire Ethernet Controller + 5403 T540-CR Unified Wire Ethernet Controller + 5404 T520-BCH Unified Wire Ethernet Controller + 5405 T540-BCH Unified Wire Ethernet Controller + 5406 T540-CH Unified Wire Ethernet Controller + 5407 T520-SO Unified Wire Ethernet Controller + 5408 T520-CX Unified Wire Ethernet Controller + 5409 T520-BT Unified Wire Ethernet Controller + 540a T504-BT Unified Wire Ethernet Controller + 540b B520-SR Unified Wire Ethernet Controller + 540c B504-BT Unified Wire Ethernet Controller + 540d T580-CR Unified Wire Ethernet Controller + 540e T540-LP-CR Unified Wire Ethernet Controller + 540f T540 [Amsterdam] Unified Wire Ethernet Controller + 5410 T580-LP-CR Unified Wire Ethernet Controller + 5411 T520-LL-CR Unified Wire Ethernet Controller + 5412 T560-CR Unified Wire Ethernet Controller + 5413 T580-CHR Unified Wire Ethernet Controller + 5414 T580-SO-CR Unified Wire Ethernet Controller + 5415 T502-BT Unified Wire Ethernet Controller + 5416 T580-OCP-SO Unified Wire Ethernet Controller + 5417 T520-OCP-SO Unified Wire Ethernet Controller + 5418 T540-BT Unified Wire Ethernet Controller + 5419 T540-LP-BT Unified Wire Ethernet Controller + 541a T540-SO-BT Unified Wire Ethernet Controller + 541b T540-SO-CR Unified Wire Ethernet Controller + 5480 T540-5080 Unified Wire Ethernet Controller + 5481 T540-5081 Unified Wire Ethernet Controller + 5482 T504-5082 Unified Wire Ethernet Controller + 5483 T540-5083 Unified Wire Ethernet Controller + 5484 T540-5084 Unified Wire Ethernet Controller + 5485 T580-5085 Unified Wire Ethernet Controller + 5486 T580-5086 Unified Wire Ethernet Controller + 5487 T580-5087 Unified Wire Ethernet Controller + 5488 T570-5088 Unified Wire Ethernet Controller + 5489 T520-5089 Unified Wire Ethernet Controller + 5490 T540-5090 Unified Wire Ethernet Controller + 5491 T522-5091 Unified Wire Ethernet Controller + 5492 T520-5092 Unified Wire Ethernet Controller + 5493 T580-5093 Unified Wire Ethernet Controller + 5494 T540-5094 Unified Wire Ethernet Controller + 5495 T540-5095 Unified Wire Ethernet Controller + 5496 T580-5096 Unified Wire Ethernet Controller + 5497 T520-5097 Unified Wire Ethernet Controller + 5498 T580-5098 Unified Wire Ethernet Controller + 5499 T580-5099 Unified Wire Ethernet Controller + 549a T520-509A Unified Wire Ethernet Controller + 549b T540-509B Unified Wire Ethernet Controller + 549c T520-509C Unified Wire Ethernet Controller + 549d T540-509D Unified Wire Ethernet Controller + 549e T520-509E Unified Wire Ethernet Controller + 549f T540-509F Unified Wire Ethernet Controller + 54a0 T540-50A0 Unified Wire Ethernet Controller + 54a1 T540-50A1 Unified Wire Ethernet Controller + 54a2 T580-50A2 Unified Wire Ethernet Controller + 54a3 T580-50A3 Unified Wire Ethernet Controller + 54a4 T540-50A4 Unified Wire Ethernet Controller + 54a5 T522-50A5 Unified Wire Ethernet Controller + 54a6 T522-50A6 Unified Wire Ethernet Controller + 54a7 T580-50A7 Unified Wire Ethernet Controller + 54a8 T580-50A8 Unified Wire Ethernet Controller + 54a9 T580-50A9 Unified Wire Ethernet Controller + 54aa T580-50AA Unified Wire Ethernet Controller + 54ab T520-50AB Unified Wire Ethernet Controller + 54ac T540-50AC Unified Wire Ethernet Controller + 54ad T520-50AD Unified Wire Ethernet Controller + 54ae T540-50AE Unified Wire Ethernet Controller + 54af T580-50AF Unified Wire Ethernet Controller + 54b0 T520-50B0 Unified Wire Ethernet Controller + 5501 T520-CR Unified Wire Storage Controller + 5502 T522-CR Unified Wire Storage Controller + 5503 T540-CR Unified Wire Storage Controller + 5504 T520-BCH Unified Wire Storage Controller + 5505 T540-BCH Unified Wire Storage Controller + 5506 T540-CH Unified Wire Storage Controller + 5507 T520-SO Unified Wire Storage Controller + 5508 T520-CX Unified Wire Storage Controller + 5509 T520-BT Unified Wire Storage Controller + 550a T504-BT Unified Wire Storage Controller + 550b B520-SR Unified Wire Storage Controller + 550c B504-BT Unified Wire Storage Controller + 550d T580-CR Unified Wire Storage Controller + 550e T540-LP-CR Unified Wire Storage Controller + 550f T540 [Amsterdam] Unified Wire Storage Controller + 5510 T580-LP-CR Unified Wire Storage Controller + 5511 T520-LL-CR Unified Wire Storage Controller + 5512 T560-CR Unified Wire Storage Controller + 5513 T580-CHR Unified Wire Storage Controller + 5514 T580-SO-CR Unified Wire Storage Controller + 5515 T502-BT Unified Wire Storage Controller + 5516 T580-OCP-SO Unified Wire Storage Controller + 5517 T520-OCP-SO Unified Wire Storage Controller + 5518 T540-BT Unified Wire Storage Controller + 5519 T540-LP-BT Unified Wire Storage Controller + 551a T540-SO-BT Unified Wire Storage Controller + 551b T540-SO-CR Unified Wire Storage Controller + 5580 T540-5080 Unified Wire Storage Controller + 5581 T540-5081 Unified Wire Storage Controller + 5582 T504-5082 Unified Wire Storage Controller + 5583 T540-5083 Unified Wire Storage Controller + 5584 T540-5084 Unified Wire Storage Controller + 5585 T580-5085 Unified Wire Storage Controller + 5586 T580-5086 Unified Wire Storage Controller + 5587 T580-5087 Unified Wire Storage Controller + 5588 T570-5088 Unified Wire Storage Controller + 5589 T520-5089 Unified Wire Storage Controller + 5590 T540-5090 Unified Wire Storage Controller + 5591 T522-5091 Unified Wire Storage Controller + 5592 T520-5092 Unified Wire Storage Controller + 5593 T580-5093 Unified Wire Storage Controller + 5594 T540-5094 Unified Wire Storage Controller + 5595 T540-5095 Unified Wire Storage Controller + 5596 T580-5096 Unified Wire Storage Controller + 5597 T520-5097 Unified Wire Storage Controller + 5598 T580-5098 Unified Wire Storage Controller + 5599 T580-5099 Unified Wire Storage Controller + 559a T520-509A Unified Wire Storage Controller + 559b T540-509B Unified Wire Storage Controller + 559c T520-509C Unified Wire Storage Controller + 559d T540-509D Unified Wire Storage Controller + 559e T520-509E Unified Wire Storage Controller + 559f T540-509F Unified Wire Storage Controller + 55a0 T540-50A0 Unified Wire Storage Controller + 55a1 T540-50A1 Unified Wire Storage Controller + 55a2 T580-50A2 Unified Wire Storage Controller + 55a3 T580-50A3 Unified Wire Storage Controller + 55a4 T540-50A4 Unified Wire Storage Controller + 55a5 T522-50A5 Unified Wire Storage Controller + 55a6 T522-50A6 Unified Wire Storage Controller + 55a7 T580-50A7 Unified Wire Storage Controller + 55a8 T580-50A8 Unified Wire Storage Controller + 55a9 T580-50A9 Unified Wire Storage Controller + 55aa T580-50AA Unified Wire Storage Controller + 55ab T520-50AB Unified Wire Storage Controller + 55ac T540-50AC Unified Wire Storage Controller + 55ad T520-50AD Unified Wire Storage Controller + 55ae T540-50AE Unified Wire Storage Controller + 55af T580-50AF Unified Wire Storage Controller + 55b0 T520-50B0 Unified Wire Storage Controller + 5601 T520-CR Unified Wire Storage Controller + 5602 T522-CR Unified Wire Storage Controller + 5603 T540-CR Unified Wire Storage Controller + 5604 T520-BCH Unified Wire Storage Controller + 5605 T540-BCH Unified Wire Storage Controller + 5606 T540-CH Unified Wire Storage Controller + 5607 T520-SO Unified Wire Storage Controller + 5608 T520-CX Unified Wire Storage Controller + 5609 T520-BT Unified Wire Storage Controller + 560a T504-BT Unified Wire Storage Controller + 560b B520-SR Unified Wire Storage Controller + 560c B504-BT Unified Wire Storage Controller + 560d T580-CR Unified Wire Storage Controller + 560e T540-LP-CR Unified Wire Storage Controller + 560f T540 [Amsterdam] Unified Wire Storage Controller + 5610 T580-LP-CR Unified Wire Storage Controller + 5611 T520-LL-CR Unified Wire Storage Controller + 5612 T560-CR Unified Wire Storage Controller + 5613 T580-CHR Unified Wire Storage Controller + 5614 T580-SO-CR Unified Wire Storage Controller + 5615 T502-BT Unified Wire Storage Controller + 5616 T580-OCP-SO Unified Wire Storage Controller + 5617 T520-OCP-SO Unified Wire Storage Controller + 5618 T540-BT Unified Wire Storage Controller + 5619 T540-LP-BT Unified Wire Storage Controller + 561a T540-SO-BT Unified Wire Storage Controller + 561b T540-SO-CR Unified Wire Storage Controller + 5680 T540-5080 Unified Wire Storage Controller + 5681 T540-5081 Unified Wire Storage Controller + 5682 T504-5082 Unified Wire Storage Controller + 5683 T540-5083 Unified Wire Storage Controller + 5684 T540-5084 Unified Wire Storage Controller + 5685 T580-5085 Unified Wire Storage Controller + 5686 T580-5086 Unified Wire Storage Controller + 5687 T580-5087 Unified Wire Storage Controller + 5688 T570-5088 Unified Wire Storage Controller + 5689 T520-5089 Unified Wire Storage Controller + 5690 T540-5090 Unified Wire Storage Controller + 5691 T522-5091 Unified Wire Storage Controller + 5692 T520-5092 Unified Wire Storage Controller + 5693 T580-5093 Unified Wire Storage Controller + 5694 T540-5094 Unified Wire Storage Controller + 5695 T540-5095 Unified Wire Storage Controller + 5696 T580-5096 Unified Wire Storage Controller + 5697 T520-5097 Unified Wire Storage Controller + 5698 T580-5098 Unified Wire Storage Controller + 5699 T580-5099 Unified Wire Storage Controller + 569a T520-509A Unified Wire Storage Controller + 569b T540-509B Unified Wire Storage Controller + 569c T520-509C Unified Wire Storage Controller + 569d T540-509D Unified Wire Storage Controller + 569e T520-509E Unified Wire Storage Controller + 569f T540-509F Unified Wire Storage Controller + 56a0 T540-50A0 Unified Wire Storage Controller + 56a1 T540-50A1 Unified Wire Storage Controller + 56a2 T580-50A2 Unified Wire Storage Controller + 56a3 T580-50A3 Unified Wire Storage Controller + 56a4 T540-50A4 Unified Wire Storage Controller + 56a5 T522-50A5 Unified Wire Storage Controller + 56a6 T522-50A6 Unified Wire Storage Controller + 56a7 T580-50A7 Unified Wire Storage Controller + 56a8 T580-50A8 Unified Wire Storage Controller + 56a9 T580-50A9 Unified Wire Storage Controller + 56aa T580-50AA Unified Wire Storage Controller + 56ab T520-50AB Unified Wire Storage Controller + 56ac T540-50AC Unified Wire Storage Controller + 56ad T520-50AD Unified Wire Storage Controller + 56ae T540-50AE Unified Wire Storage Controller + 56af T580-50AF Unified Wire Storage Controller + 56b0 T520-50B0 Unified Wire Storage Controller + 5701 T520-CR Unified Wire Ethernet Controller + 5702 T522-CR Unified Wire Ethernet Controller + 5703 T540-CR Unified Wire Ethernet Controller + 5704 T520-BCH Unified Wire Ethernet Controller + 5705 T540-BCH Unified Wire Ethernet Controller + 5706 T540-CH Unified Wire Ethernet Controller + 5707 T520-SO Unified Wire Ethernet Controller + 5708 T520-CX Unified Wire Ethernet Controller + 5709 T520-BT Unified Wire Ethernet Controller + 570a T504-BT Unified Wire Ethernet Controller + 570b B520-SR Unified Wire Ethernet Controller + 570c B504-BT Unified Wire Ethernet Controller + 570d T580-CR Unified Wire Ethernet Controller + 570e T540-LP-CR Unified Wire Ethernet Controller + 570f T540 [Amsterdam] Unified Wire Ethernet Controller + 5710 T580-LP-CR Unified Wire Ethernet Controller + 5711 T520-LL-CR Unified Wire Ethernet Controller + 5712 T560-CR Unified Wire Ethernet Controller + 5713 T580-CR Unified Wire Ethernet Controller + 5714 T580-SO-CR Unified Wire Ethernet Controller + 5715 T502-BT Unified Wire Ethernet Controller + 5780 T540-5080 Unified Wire Ethernet Controller + 5781 T540-5081 Unified Wire Ethernet Controller + 5782 T504-5082 Unified Wire Ethernet Controller + 5783 T540-5083 Unified Wire Ethernet Controller + 5784 T580-5084 Unified Wire Ethernet Controller + 5785 T580-5085 Unified Wire Ethernet Controller + 5786 T580-5086 Unified Wire Ethernet Controller + 5787 T580-5087 Unified Wire Ethernet Controller + 5788 T570-5088 Unified Wire Ethernet Controller + 5789 T520-5089 Unified Wire Ethernet Controller + 5790 T540-5090 Unified Wire Ethernet Controller + 5791 T522-5091 Unified Wire Ethernet Controller + 5792 T520-5092 Unified Wire Ethernet Controller + 5793 T580-5093 Unified Wire Ethernet Controller + 5794 T540-5094 Unified Wire Ethernet Controller + 5795 T540-5095 Unified Wire Ethernet Controller + 5796 T580-5096 Unified Wire Ethernet Controller + 5797 T520-5097 Unified Wire Ethernet Controller + 5801 T520-CR Unified Wire Ethernet Controller [VF] + 5802 T522-CR Unified Wire Ethernet Controller [VF] + 5803 T540-CR Unified Wire Ethernet Controller [VF] + 5804 T520-BCH Unified Wire Ethernet Controller [VF] + 5805 T540-BCH Unified Wire Ethernet Controller [VF] + 5806 T540-CH Unified Wire Ethernet Controller [VF] + 5807 T520-SO Unified Wire Ethernet Controller [VF] + 5808 T520-CX Unified Wire Ethernet Controller [VF] + 5809 T520-BT Unified Wire Ethernet Controller [VF] + 580a T504-BT Unified Wire Ethernet Controller [VF] + 580b B520-SR Unified Wire Ethernet Controller [VF] + 580c B504-BT Unified Wire Ethernet Controller [VF] + 580d T580-CR Unified Wire Ethernet Controller [VF] + 580e T540-LP-CR Unified Wire Ethernet Controller [VF] + 580f T540 [Amsterdam] Unified Wire Ethernet Controller [VF] + 5810 T580-LP-CR Unified Wire Ethernet Controller [VF] + 5811 T520-LL-CR Unified Wire Ethernet Controller [VF] + 5812 T560-CR Unified Wire Ethernet Controller [VF] + 5813 T580-CHR Unified Wire Ethernet Controller [VF] + 5814 T580-SO-CR Unified Wire Ethernet Controller [VF] + 5815 T502-BT Unified Wire Ethernet Controller [VF] + 5816 T580-OCP-SO Unified Wire Ethernet Controller [VF] + 5817 T520-OCP-SO Unified Wire Ethernet Controller [VF] + 5818 T540-BT Unified Wire Ethernet Controller [VF] + 5819 T540-LP-BT Unified Wire Ethernet Controller [VF] + 581a T540-SO-BT Unified Wire Ethernet Controller [VF] + 581b T540-SO-CR Unified Wire Ethernet Controller [VF] + 5880 T540-5080 Unified Wire Ethernet Controller [VF] + 5881 T540-5081 Unified Wire Ethernet Controller [VF] + 5882 T504-5082 Unified Wire Ethernet Controller [VF] + 5883 T540-5083 Unified Wire Ethernet Controller [VF] + 5884 T540-5084 Unified Wire Ethernet Controller [VF] + 5885 T580-5085 Unified Wire Ethernet Controller [VF] + 5886 T580-5086 Unified Wire Ethernet Controller [VF] + 5887 T580-5087 Unified Wire Ethernet Controller [VF] + 5888 T570-5088 Unified Wire Ethernet Controller [VF] + 5889 T520-5089 Unified Wire Ethernet Controller [VF] + 5890 T540-5090 Unified Wire Ethernet Controller [VF] + 5891 T522-5091 Unified Wire Ethernet Controller [VF] + 5892 T520-5092 Unified Wire Ethernet Controller [VF] + 5893 T580-5093 Unified Wire Ethernet Controller [VF] + 5894 T540-5094 Unified Wire Ethernet Controller [VF] + 5895 T540-5095 Unified Wire Ethernet Controller [VF] + 5896 T580-5096 Unified Wire Ethernet Controller [VF] + 5897 T520-5097 Unified Wire Ethernet Controller [VF] + 5898 T580-5098 Unified Wire Ethernet Controller [VF] + 5899 T580-5099 Unified Wire Ethernet Controller [VF] + 589a T520-509A Unified Wire Ethernet Controller [VF] + 589b T540-509B Unified Wire Ethernet Controller [VF] + 589c T520-509C Unified Wire Ethernet Controller [VF] + 589d T540-509D Unified Wire Ethernet Controller [VF] + 589e T520-509E Unified Wire Ethernet Controller [VF] + 589f T540-509F Unified Wire Ethernet Controller [VF] + 58a0 T540-50A0 Unified Wire Ethernet Controller [VF] + 58a1 T540-50A1 Unified Wire Ethernet Controller [VF] + 58a2 T580-50A2 Unified Wire Ethernet Controller [VF] + 58a3 T580-50A3 Unified Wire Ethernet Controller [VF] + 58a4 T540-50A4 Unified Wire Ethernet Controller [VF] + 58a5 T522-50A5 Unified Wire Ethernet Controller [VF] + 58a6 T522-50A6 Unified Wire Ethernet Controller [VF] + 58a7 T580-50A7 Unified Wire Ethernet Controller [VF] + 58a8 T580-50A8 Unified Wire Ethernet Controller [VF] + 58a9 T580-50A9 Unified Wire Ethernet Controller [VF] + 58aa T580-50AA Unified Wire Ethernet Controller [VF] + 58ab T520-50AB Unified Wire Ethernet Controller [VF] + 58ac T540-50AC Unified Wire Ethernet Controller [VF] + 58ad T520-50AD Unified Wire Ethernet Controller [VF] + 58ae T540-50AE Unified Wire Ethernet Controller [VF] + 58af T580-50AF Unified Wire Ethernet Controller [VF] + 58b0 T520-50B0 Unified Wire Ethernet Controller [VF] + 6001 T6225-CR Unified Wire Ethernet Controller + 6002 T6225-SO-CR Unified Wire Ethernet Controller + 6003 T6425-CR Unified Wire Ethernet Controller + 6004 T6425-SO-CR Unified Wire Ethernet Controller + 6005 T6225-SO-OCP3 Unified Wire Ethernet Controller + 6006 T6225-OCP3 Unified Wire Ethernet Controller + 6007 T62100-LP-CR Unified Wire Ethernet Controller + 6008 T62100-SO-CR Unified Wire Ethernet Controller + 6009 T6210-BT Unified Wire Ethernet Controller + 600d T62100-CR Unified Wire Ethernet Controller + 6011 T6225-LL-CR Unified Wire Ethernet Controller + 6014 T62100-SO-OCP3 Unified Wire Ethernet Controller + 6015 T6201-BT Unified Wire Ethernet Controller + 6080 T6225-6080 Unified Wire Ethernet Controller + 6081 T62100-6081 Unified Wire Ethernet Controller + 6082 T6225-6082 Unified Wire Ethernet Controller + 6083 T62100-6083 Unified Wire Ethernet Controller + 6084 T64100-6084 Unified Wire Ethernet Controller + 6085 T6240-6085 Unified Wire Ethernet Controller + 6086 T6225-6086 Unified Wire Ethernet Controller + 6087 T6225-6087 Unified Wire Ethernet Controller + 6088 T62100-6088 Unified Wire Ethernet Controller + 6089 T62100-6089 Unified Wire Ethernet Controller + 608a T62100-608a Unified Wire Ethernet Controller + 6092 T62100-KR Unified Wire Ethernet Controller + 01de fff9 Gimlet Baseboard + 6401 T6225-CR Unified Wire Ethernet Controller + 6402 T6225-SO-CR Unified Wire Ethernet Controller + 6403 T6425-CR Unified Wire Ethernet Controller + 6404 T6425-SO-CR Unified Wire Ethernet Controller + 6405 T6225-SO-OCP3 Unified Wire Ethernet Controller + 6406 T6225-OCP3 Unified Wire Ethernet Controller + 6407 T62100-LP-CR Unified Wire Ethernet Controller + 6408 T62100-SO-CR Unified Wire Ethernet Controller + 6409 T6210-BT Unified Wire Ethernet Controller + 640d T62100-CR Unified Wire Ethernet Controller + 6411 T6225-LL-CR Unified Wire Ethernet Controller + 6414 T62100-SO-OCP3 Unified Wire Ethernet Controller + 6415 T6201-BT Unified Wire Ethernet Controller + 6480 T6225-6080 Unified Wire Ethernet Controller + 6481 T62100-6081 Unified Wire Ethernet Controller + 6482 T6225-6082 Unified Wire Ethernet Controller + 6483 T62100-6083 Unified Wire Ethernet Controller + 6484 T64100-6084 Unified Wire Ethernet Controller + 6485 T6240-6085 Unified Wire Ethernet Controller + 6486 T6225-6086 Unified Wire Ethernet Controller + 6487 T6225-6087 Unified Wire Ethernet Controller + 6488 T62100-6088 Unified Wire Ethernet Controller + 6489 T62100-6089 Unified Wire Ethernet Controller + 648a T62100-608a Unified Wire Ethernet Controller + 6492 T62100-KR Unified Wire Ethernet Controller + 01de fff9 Gimlet Baseboard + 6501 T6225-CR Unified Wire Storage Controller + 6502 T6225-SO-CR Unified Wire Storage Controller + 6503 T6425-CR Unified Wire Storage Controller + 6504 T6425-SO-CR Unified Wire Storage Controller + 6505 T6225-SO-OCP3 Unified Wire Storage Controller + 6506 T6225-OCP3 Unified Wire Storage Controller + 6507 T62100-LP-CR Unified Wire Storage Controller + 6508 T62100-SO-CR Unified Wire Storage Controller + 6509 T6210-BT Unified Wire Storage Controller + 650d T62100-CR Unified Wire Storage Controller + 6511 T6225-LL-CR Unified Wire Storage Controller + 6514 T62100-SO-OCP3 Unified Wire Storage Controller + 6515 T6201-BT Unified Wire Storage Controller + 6580 T6225-6080 Unified Wire Storage Controller + 6581 T62100-6081 Unified Wire Storage Controller + 6582 T6225-6082 Unified Wire Storage Controller + 6583 T62100-6083 Unified Wire Storage Controller + 6584 T64100-6084 Unified Wire Storage Controller + 6585 T6240-6085 Unified Wire Storage Controller + 6586 T6225-6086 Unified Wire Storage Controller + 6587 T6225-6087 Unified Wire Storage Controller + 6588 T62100-6088 Unified Wire Storage Controller + 6589 T62100-6089 Unified Wire Storage Controller + 658a T62100-608a Unified Wire Storage Controller + 6592 T62100-KR Unified Wire Storage Controller + 6601 T6225-CR Unified Wire Storage Controller + 6602 T6225-SO-CR Unified Wire Storage Controller + 6603 T6425-CR Unified Wire Storage Controller + 6604 T6425-SO-CR Unified Wire Storage Controller + 6605 T6225-SO-OCP3 Unified Wire Storage Controller + 6606 T6225-OCP3 Unified Wire Storage Controller + 6607 T62100-LP-CR Unified Wire Storage Controller + 6608 T62100-SO-CR Unified Wire Storage Controller + 6609 T6210-BT Unified Wire Storage Controller + 660d T62100-CR Unified Wire Storage Controller + 6611 T6225-LL-CR Unified Wire Storage Controller + 6614 T62100-SO-OCP3 Unified Wire Storage Controller + 6615 T6201-BT Unified Wire Storage Controller + 6680 T6225-6080 Unified Wire Storage Controller + 6681 T62100-6081 Unified Wire Storage Controller + 6682 T6225-6082 Unified Wire Storage Controller + 6683 T62100-6083 Unified Wire Storage Controller + 6684 T64100-6084 Unified Wire Storage Controller + 6685 T6240-6085 Unified Wire Storage Controller + 6686 T6225-6086 Unified Wire Storage Controller + 6687 T6225-6087 Unified Wire Storage Controller + 6688 T62100-6088 Unified Wire Storage Controller + 6689 T62100-6089 Unified Wire Storage Controller + 668a T62100-608a Unified Wire Storage Controller + 6692 T62100-KR Unified Wire Storage Controller + 6801 T6225-CR Unified Wire Ethernet Controller [VF] + 6802 T6225-SO-CR Unified Wire Ethernet Controller [VF] + 6803 T6425-CR Unified Wire Ethernet Controller [VF] + 6804 T6425-SO-CR Unified Wire Ethernet Controller [VF] + 6805 T6225-SO-OCP3 Unified Wire Ethernet Controller [VF] + 6806 T6225-OCP3 Unified Wire Ethernet Controller [VF] + 6807 T62100-LP-CR Unified Wire Ethernet Controller [VF] + 6808 T62100-SO-CR Unified Wire Ethernet Controller [VF] + 6809 T6210-BT Unified Wire Ethernet Controller [VF] + 680d T62100-CR Unified Wire Ethernet Controller [VF] + 6811 T6225-LL-CR Unified Wire Ethernet Controller [VF] + 6814 T62100-SO-OCP3 Unified Wire Ethernet Controller [VF] + 6815 T6201-BT Unified Wire Ethernet Controller [VF] + 6880 T6225-6080 Unified Wire Ethernet Controller [VF] + 6881 T62100-6081 Unified Wire Ethernet Controller [VF] + 6882 T6225-6082 Unified Wire Ethernet Controller [VF] + 6883 T62100-6083 Unified Wire Ethernet Controller [VF] + 6884 T64100-6084 Unified Wire Ethernet Controller [VF] + 6885 T6240-6085 Unified Wire Ethernet Controller [VF] + 6886 T6225-6086 Unified Wire Ethernet Controller [VF] + 6887 T6225-6087 Unified Wire Ethernet Controller [VF] + 6888 T62100-6088 Unified Wire Ethernet Controller [VF] + 6889 T62100-6089 Unified Wire Ethernet Controller [VF] + 688a T62100-608a Unified Wire Ethernet Controller [VF] + a000 PE10K Unified Wire Ethernet Controller +1426 Storage Technology Corp. +1427 Better On-Line Solutions +1428 Edec Co Ltd +1429 Unex Technology Corp. +142a Kingmax Technology Inc +142b Radiolan +142c Minton Optic Industry Co Ltd +142d Pix stream Inc +142e Vitec Multimedia + 4020 VM2-2 [Video Maker 2] MPEG1/2 Encoder + 4337 VM2-2-C7 [Video Maker 2 rev. C7] MPEG1/2 Encoder +142f Radicom Research Inc +1430 ITT Aerospace/Communications Division +1431 Gilat Satellite Networks +1432 Edimax Computer Co. + 9130 RTL81xx Fast Ethernet +1433 Eltec Elektronik GmbH +# Nee Real Time Devices US Inc. +1435 RTD Embedded Technologies, Inc. + 4520 PCI4520 + 6020 SPM6020 + 6030 SPM6030 + 6420 SPM186420 + 6430 SPM176430 + 6431 SPM176431 + 7520 DM7520 + 7540 SDM7540 + 7820 DM7820 +1436 CIS Technology Inc +1437 Nissin Inc Co +1438 Atmel-dream +1439 Outsource Engineering & Mfg. Inc +143a Stargate Solutions Inc +143b Canon Research Center, America +143c Amlogic Inc +143d Tamarack Microelectronics Inc +143e Jones Futurex Inc +143f Lightwell Co Ltd - Zax Division +1440 ALGOL Corp. +1441 AGIE Ltd +1442 Phoenix Contact GmbH & Co. +1443 Unibrain S.A. +1444 TRW +1445 Logical DO Ltd +1446 Graphin Co Ltd +1447 AIM GmBH +1448 Alesis Studio Electronics +1449 TUT Systems Inc +144a Adlink Technology + 6208 PCI-6208V + 7250 PCI-7250 + 7296 PCI-7296 + 7432 PCI-7432 + 7433 PCI-7433 + 7434 PCI-7434 + 7841 PCI-7841 + 8133 PCI-8133 + 8164 PCI-8164 + 8554 PCI-8554 + 9111 PCI-9111 + 9113 PCI-9113 + 9114 PCI-9114 +# 2-16 MB SRAM, 4x UART, I2C, misc I/O + a001 ADi-BSEC +# nee Loronix Information Systems Inc. +144b Verint Systems Inc. +144c Catalina Research Inc +144d Samsung Electronics Co Ltd + 1600 S4LN053X01 AHCI SSD Controller(Apple slot) + 9602 RS780/RS880 PCI to PCI bridge (int gfx) + a544 Exynos 8890 PCIe Root Complex + a575 Exynos 7420 PCIe Root Complex + a5e3 Exynos 5433 PCIe Root Complex + a800 XP941 PCIe SSD + a801 S4LN058A01[SSUBX] AHCI SSD Controller (Apple slot) + a802 NVMe SSD Controller SM951/PM951 + 144d a801 PM963 2.5" NVMe PCIe SSD + a804 NVMe SSD Controller SM961/PM961/SM963 + 144d a801 SM963 2.5" NVMe PCIe SSD + a806 NVMe SSD SM0032L + a808 NVMe SSD Controller SM981/PM981/PM983 +# Used by different variants of SSD 970 EVO and PRO + 144d a801 SSD 970 EVO/PRO + 1d49 403b Thinksystem U.2 PM983 NVMe SSD + a809 NVMe SSD Controller 980 (DRAM-less) + a80a NVMe SSD Controller PM9A1/PM9A3/980PRO + 0128 215a DC NVMe PM9A3 RI U.2 960GB + 0128 215b DC NVMe PM9A3 RI U.2 1.92TB + 0128 215c DC NVMe PM9A3 RI U.2 3.84TB + 0128 215d DC NVMe PM9A3 RI U.2 7.68TB + 0128 2166 DC NVMe PM9A3 RI 110M.2 960GB + 0128 2167 DC NVMe PM9A3 RI 110M.2 1.92TB + 0128 2168 DC NVMe PM9A3 RI 80M.2 480GB + 0128 2169 DC NVMe PM9A3 RI 80M.2 960GB + 1028 215a DC NVMe PM9A3 RI U.2 960GB + 1028 215b DC NVMe PM9A3 RI U.2 1.92TB + 1028 215c DC NVMe PM9A3 RI U.2 3.84TB + 1028 2166 DC NVMe PM9A3 RI 110M.2 960GB + 1028 2167 DC NVMe PM9A3 RI 110M.2 1.92TB + 1028 2168 DC NVMe PM9A3 RI 80M.2 480GB + 1028 2169 DC NVMe PM9A3 RI 80M.2 960GB + 1028 2276 DC NVMe PM9A3 RI 110M.2 960GB + 1028 2277 DC NVMe PM9A3 RI 110M.2 1.92TB + 1028 512d DC NVMe PM9A3 RI U.2 7.68TB + 144d a801 SSD 980 PRO + 144d a813 General DC NVMe PM9A3 +# Actually 88SS1322 according to techpowerup + a80b NVMe SSD Controller PM9B1 (DRAM-less) + a80c NVMe SSD Controller S4LV008[Pascal] + a80d NVMe SSD Controller PM9C1a (DRAM-less) + a820 NVMe SSD Controller 171X + 1028 1f95 Express Flash NVMe XS1715 SSD 400GB + 1028 1f96 Express Flash NVMe XS1715 SSD 800GB + 1028 1f97 Express Flash NVMe XS1715 SSD 1600GB + 1028 1fa4 Express Flash NVMe SM1715 3.2TB SFF + 1028 1fa6 Express Flash NVMe SM1715 3.2TB AIC + 1028 1fba Express Flash NVMe SM1715 800GB SFF + 1028 1fbb Express Flash NVMe SM1715 1.6TB SFF + 1028 1fbc Express Flash NVMe SM1715 1.6TB AIC + a821 NVMe SSD Controller 172X + 1028 1fb7 Express Flash NVMe PM1725 3.2TB SFF + 1028 1fb8 Express Flash NVMe PM1725 3.2TB AIC + 1028 1fb9 Express Flash NVMe PM1725 6.4TB AIC + 1028 1fc1 Express Flash NVMe PM1725 800GB SFF + 1028 1fc2 Express Flash NVMe PM1725 1.6TB SFF + 1028 1fc4 Express Flash NVMe PM1725 1.6TB AIC + a822 NVMe SSD Controller 172Xa/172Xb + 1014 0621 PCIe3 1.6TB NVMe Flash Adapter II x8 + 1014 0622 PCIe3 3.2TB NVMe Flash Adapter II x8 + 1014 0629 PCIe3 6.4TB NVMe Flash Adapter II x8 + 1014 064a PCIe3 1.6TB NVMe Flash Adapter III x8 + 1014 064b PCIe3 3.2TB NVMe Flash Adapter III x8 + 1014 064c PCIe3 6.4TB NVMe Flash Adapter III x8 + 1028 1fd9 Express Flash PM1725a 800GB SFF + 1028 1fda Express Flash PM1725a 1.6TB SFF + 1028 1fdb Express Flash PM1725a 3.2TB SFF + 1028 1fdc Express Flash PM1725a 6.4TB SFF + 1028 1fdd Express Flash PM1725a 1.6TB AIC + 1028 1fde Express Flash PM1725a 3.2TB AIC + 1028 1fdf Express Flash PM1725a 6.4TB AIC + 1028 1ff3 Express Flash PM1725b 1.6TB SFF + 1028 1ff4 Express Flash PM1725b 3.2TB SFF + 1028 1ff5 Express Flash PM1725b 6.4TB SFF + 1028 1ff6 Express Flash PM1725b 12.8TB SFF + 1028 1ff7 Express Flash PM1725b 1.6TB AIC + 1028 1ff8 Express Flash PM1725b 3.2TB AIC + 1028 1ff9 Express Flash PM1725b 6.4TB AIC + 1028 1ffa Express Flash PM1725b 12.8TB AIC + a824 NVMe SSD Controller PM173X + 1028 2040 EMC PowerEdge Express Flash Ent NVMe AGN MU U.2 Gen4 1.6TB + 1028 2041 EMC PowerEdge Express Flash Ent NVMe AGN MU U.2 Gen4 3.2TB + 1028 2042 EMC PowerEdge Express Flash Ent NVMe AGN MU U.2 Gen4 6.4TB + 1028 2043 EMC PowerEdge Express Flash Ent NVMe AGN MU U.2 Gen4 12.8TB + 1028 2044 EMC PowerEdge Express Flash Ent NVMe AGN MU AIC Gen4 1.6TB + 1028 2045 EMC PowerEdge Express Flash Ent NVMe AGN MU AIC Gen4 3.2TB + 1028 2046 EMC PowerEdge Express Flash Ent NVMe AGN MU AIC Gen4 6.4TB + 1028 2070 EMC PowerEdge Express Flash Ent NVMe AGN RI U.2 Gen4 1.92TB + 1028 2071 EMC PowerEdge Express Flash Ent NVMe AGN RI U.2 Gen4 3.84TB + 1028 2072 EMC PowerEdge Express Flash Ent NVMe AGN RI U.2 Gen4 7.68TB + 1028 2073 EMC PowerEdge Express Flash Ent NVMe AGN RI U.2 Gen4 15.36TB + 1028 2074 EMC PowerEdge Express Flash Ent NVMe AGN RI AIC Gen4 1.92TB + 1028 2075 EMC PowerEdge Express Flash Ent NVMe AGN RI AIC Gen4 3.84TB + 1028 2076 EMC PowerEdge Express Flash Ent NVMe AGN RI AIC Gen4 7.68TB + 1028 2090 EMC PowerEdge Express Flash Ent NVMe AGN SED MU U.2 Gen4 1.6TB + 1028 2091 EMC PowerEdge Express Flash Ent NVMe AGN SED MU U.2 Gen4 3.2TB + 1028 2092 EMC PowerEdge Express Flash Ent NVMe AGN SED MU U.2 Gen4 6.4TB + 1028 2093 EMC PowerEdge Express Flash Ent NVMe AGN SED MU U.2 Gen4 12.8TB + 1028 2094 EMC PowerEdge Express Flash Ent NVMe AGN SED MU AIC Gen4 1.6TB + 1028 2095 EMC PowerEdge Express Flash Ent NVMe AGN SED MU AIC Gen4 3.2TB + 1028 2096 EMC PowerEdge Express Flash Ent NVMe AGN SED MU AIC Gen4 6.4TB + 1028 2097 EMC PowerEdge Express Flash Ent NVMe AGN SED RI U.2 Gen4 1.92TB + 1028 2098 EMC PowerEdge Express Flash Ent NVMe AGN SED RI U.2 Gen4 3.84TB + 1028 2099 EMC PowerEdge Express Flash Ent NVMe AGN SED RI U.2 Gen4 7.68TB + 1028 2118 Ent NVMe v2 AGN FIPS MU U.2 1.6TB + 1028 2119 Ent NVMe v2 AGN MU U.2 1.6TB + 1028 2120 Ent NVMe v2 AGN FIPS MU U.2 3.2T + 1028 2121 Ent NVMe v2 AGN MU U.2 3.2TB + 1028 2122 Ent NVMe v2 AGN FIPS MU U.2 6.4TB + 1028 2123 Ent NVMe v2 AGN MU U.2 6.4TB + 1028 2124 Ent NVMe v2 AGN FIPS MU U.2 6.4TB + 1028 2125 Ent NVMe v2 AGN MU U.2 12.8TB + 1028 2126 Ent NVMe v2 AGN FIPS RI U.2 1.92TB + 1028 2127 Ent NVMe v2 AGN RI U.2 1.92TB + 1028 2128 Ent NVMe v2 AGN FIPS RI U.2 3.84TB + 1028 2129 Ent NVMe v2 AGN RI U.2 3.84TB + 1028 2130 Ent NVMe v2 AGN FIPS RI U.2 7.68TB + 1028 2131 Ent NVMe v2 AGN RI U.2 7.68TB + 1028 2132 Ent NVMe v2 AGN FIPS RI U.2 15.36TB + 1028 2133 Ent NVMe v2 AGN RI U.2 15.36TB + a825 NVMe SSD Controller PM173Xa + 1028 2178 Ent NVMe FIPS PM1733a RI 1.92TB + 1028 2179 Ent NVMe PM1733a RI 1.92TB + 1028 217a Ent NVMe FIPS PM1733a RI 3.84TB + 1028 217b Ent NVMe PM1733a RI 3.84TB + 1028 217c Ent NVMe FIPS PM1733a RI 7.68TB + 1028 217d Ent NVMe PM1733a RI 7.68TB + 1028 217e Ent NVMe FIPS PM1733a RI 15.36TB + 1028 217f Ent NVMe PM1733a RI 15.36TB + 1028 2180 Ent NVMe FIPS PM1735a MU 1.6TB + 1028 2181 Ent NVMe PM1735a MU 1.6TB + 1028 2182 Ent NVMe FIPS PM1735a MU 3.2TB + 1028 2183 Ent NVMe PM1735a MU 3.2TB + 1028 2184 Ent NVMe FIPS PM1735a MU 6.4TB + 1028 2185 Ent NVMe PM1735a MU 6.4TB + 1028 2186 Ent NVMe FIPS PM1735a MU 12.8TB + 1028 2187 Ent NVMe PM1735a MU 12.8TB + 1028 226a Ent NVMe FIPS PM1733a RI 30.72TB + a826 NVMe SSD Controller PM174X + 1028 2214 NVMe PM1743 RI E3.S 1.92TB + 1028 2216 NVMe PM1743 RI E3.S 3.84TB + 1028 2218 NVMe PM1743 RI E3.S 7.68TB + 1028 221a NVMe PM1743 RI E3.S 15.36TB + 1028 221c NVMe PM1745 MU E3.S 1.6TB + 1028 221e NVMe PM1745 MU E3.S 3.2TB + 1028 2220 NVMe PM1745 MU E3.S 6.4TB + 1028 2222 NVMe PM1745 MU E3.S 12.8TB + 1028 224e NVMe FIPS PM1743 RI U.2 1.92TB + 1028 224f NVMe PM1743 RI U.2 1.92TB + 1028 2250 NVMe FIPS PM1743 RI U.2 3.84TB + 1028 2251 NVMe PM1743 RI U.2 3.84TB + 1028 2252 NVMe FIPS PM1743 RI U.2 7.68TB + 1028 2253 NVMe PM1743 RI U.2 7.68TB + 1028 2254 NVMe FIPS PM1743 RI U.2 15.36TB + 1028 2255 NVMe PM1743 RI U.2 15.36TB + 1028 2258 NVMe FIPS PM1745 MU U.2 1.6TB + 1028 2259 NVMe PM1745 MU U.2 1.6TB + 1028 225a NVMe FIPS PM1745 MU U.2 3.2TB + 1028 225b NVMe PM1745 MU U.2 3.2TB + 1028 225c NVMe FIPS PM1745 MU U.2 6.4TB + 1028 225d NVMe PM1745 MU U.2 6.4TB + 1028 225e NVMe FIPS PM1745 MU U.2 12.8TB + 1028 225f NVMe PM1745 MU U.2 12.8TB + a900 NVMe SSD Controller PM9DXa + ecec Exynos 8895 PCIe Root Complex +144e OLITEC +144f Askey Computer Corp. +1450 Octave Communications Ind. +1451 SP3D Chip Design GmBH +1453 MYCOM Inc +1454 Altiga Networks +1455 Logic Plus Plus Inc +1456 Advanced Hardware Architectures +1457 Nuera Communications Inc +1458 Gigabyte Technology Co., Ltd + 1002 Aourus Radeon RX6900XT Xtreme Waterforce WB 16G + 22e8 Ellesmere [Radeon RX 480] + 3483 USB 3.0 Controller (VIA VL80x-based xHCI Controller) +1459 DOOIN Electronics +145a Escalate Networks Inc +145b PRAIM SRL +145c Cryptek +145d Gallant Computer Inc +145e Aashima Technology B.V. +145f Baldor Electric Company + 0001 NextMove PCI +1460 DYNARC INC +1461 Avermedia Technologies Inc + a3ce M179 + a3cf M179 + a836 M115 DVB-T, PAL/SECAM/NTSC Tuner + e836 M115S Hybrid Analog/DVB PAL/SECAM/NTSC Tuner + f436 AVerTV Hybrid+FM +1462 Micro-Star International Co., Ltd. [MSI] + 3483 MSI USB 3.0 (VIA VL80x-based xHCI USB Controller) + 7c56 Realtek Ethernet controller RTL8111H + aaf0 Radeon RX 580 Gaming X 8G +1463 Fast Corporation +1464 Interactive Circuits & Systems Ltd +1465 GN NETTEST Telecom DIV. +1466 Designpro Inc. +1467 DIGICOM SPA +1468 AMBIT Microsystem Corp. +1469 Cleveland Motion Controls +# formerly IFR. +146a Aeroflex +# 1.5 GHz to 3.0 GHz x 1Hz + 3010 3010 RF Synthesizer + 3a11 3011A PXI RF Synthesizer +146b Parascan Technologies Ltd +146c Ruby Tech Corp. + 1430 FE-1430TX Fast Ethernet PCI Adapter +146d Tachyon, INC. +146e Williams Electronics Games, Inc. +146f Multi Dimensional Consulting Inc +1470 Bay Networks +1471 Integrated Telecom Express Inc +1472 DAIKIN Industries, Ltd +1473 ZAPEX Technologies Inc +1474 Doug Carson & Associates +1475 PICAZO Communications +1476 MORTARA Instrument Inc +1477 Net Insight +1478 DIATREND Corporation +1479 TORAY Industries Inc +147a FORMOSA Industrial Computing +147b ABIT Computer Corp. + 1084 IP35 [Dark Raider] +147c AWARE, Inc. +147d Interworks Computer Products +147e Matsushita Graphic Communication Systems, Inc. +147f NIHON UNISYS, Ltd. +1480 SCII Telecom +1481 BIOPAC Systems Inc +1482 ISYTEC - Integrierte Systemtechnik GmBH + 0001 PCI-16 Host Interface for ITC-16 +1483 LABWAY Corporation +1484 Logic Corporation +1485 ERMA - Electronic GmBH +1486 L3 Communications Telemetry & Instrumentation +1487 MARQUETTE Medical Systems +1489 KYE Systems Corporation +148a OPTO +148b INNOMEDIALOGIC Inc. +148c Tul Corporation / PowerColor + 2391 Radeon RX 590 [Red Devil] + 2398 AXRX 5700 XT 8GBD6-3DHE/OC [PowerColor Red Devil Radeon RX 5700 XT] +148d DIGICOM Systems, Inc. + 1003 HCF 56k Data/Fax Modem +148e OSI Plus Corporation +148f Plant Equipment, Inc. +1490 Stone Microsystems PTY Ltd. +1491 ZEAL Corporation +1492 Time Logic Corporation +1493 MAKER Communications +1494 WINTOP Technology, Inc. +1495 TOKAI Communications Industry Co. Ltd +1496 JOYTECH Computer Co., Ltd. +1497 SMA Regelsysteme GmBH + 1497 SMA Technologie AG +1498 TEWS Technologies GmbH + 0330 TPMC816 2 Channel CAN bus controller. + 035d TPMC861 4-Channel Isolated Serial Interface RS422/RS485 + 0385 TPMC901 Extended CAN bus with 2/4/6 CAN controller + 21cc TCP460 CompactPCI 16 Channel Serial Interface RS232/RS422 + 21cd TCP461 CompactPCI 8 Channel Serial Interface RS232/RS422 + 3064 TPCI100 (2 Slot IndustryPack PCI Carrier) + 30c8 TPCI200 4 Slot IndustryPack PCI Carrier + 70c8 TPCE200 4 Slot IndustryPack PCIe Carrier + 9177 TXMC375 8 channel RS232/RS422/RS485 programmable serial interface +1499 EMTEC CO., Ltd +149a ANDOR Technology Ltd +149b SEIKO Instruments Inc +149c OVISLINK Corp. +149d NEWTEK Inc + 0001 Video Toaster for PC +149e Mapletree Networks Inc. +149f LECTRON Co Ltd +14a0 SOFTING GmBH +14a1 Systembase Co Ltd + 4d02 SB16C1052PCI [Multi-2/PCIe RS232] +14a2 Millennium Engineering Inc +14a3 Maverick Networks +14a4 Lite-On Technology Corporation + 2100 CA1-8D128 NVMe SSD + 2200 CX2-8B256, CX2-8B512 NVMe SSD + 22a0 EP2-KB960 NVMe SSD + 22f1 M8Pe Series NVMe SSD + 2300 CA3-8D256, CA3-8D512 NVMe SSD + 23f1 M9PeG, M9PeGN, M9PeY NVMe SSD + 2f00 CAZ-82512 NVMe SSD + 3500 CA5-8D512 NVMe SSD +# Wrong vendor ID used + 4318 Broadcom BCM4318 [AirForce One 54g] 802.11g WLAN Controller + 5100 CB1-SD256, CB1-SD512 NVMe SSD + 9100 CL1-3D256, CL1-8D512 NVMe SSD (DRAM-less) +14a5 XIONICS Document Technologies Inc +14a6 INOVA Computers GmBH & Co KG +14a7 MYTHOS Systems Inc +14a8 FEATRON Technologies Corporation +14a9 HIVERTEC Inc +14aa Advanced MOS Technology Inc +# nee Mentor Graphics Corp. +14ab Siemens Industry Software Inc. +14ac Novaweb Technologies Inc +14ad Time Space Radio AB +14ae CTI, Inc +14af Guillemot Corporation + 7102 3D Prophet II MX +14b0 BST Communication Technology Ltd +14b1 Nextcom K.K. +14b2 ENNOVATE Networks Inc +14b3 XPEED Inc + 0000 DSL NIC +14b4 PHILIPS Business Electronics B.V. +14b5 Creamware GmBH + 0200 Scope + 0300 Pulsar + 0400 PulsarSRB + 0600 Pulsar2 + 0800 DSP-Board + 0900 DSP-Board + 0a00 DSP-Board + 0b00 DSP-Board +14b6 Quantum Data Corp. +14b7 PROXIM Inc + 0001 Symphony 4110 +14b8 Techsoft Technology Co Ltd +14b9 Cisco Aironet Wireless Communications + 0001 PC4800 + 0340 PC4800 + 0350 350 series 802.11b Wireless LAN Adapter + 4500 PC4500 + 4800 Cisco Aironet 340 802.11b Wireless LAN Adapter/Aironet PC4800 + a504 Cisco Aironet Wireless 802.11b + a505 Cisco Aironet CB20a 802.11a Wireless LAN Adapter + a506 Cisco Aironet Mini PCI b/g +14ba INTERNIX Inc. +# ARCNET interface card based on SMSC COM20022 chip and manufactured for SMSC Japan + 0600 ARC-PCI/22 +14bb SEMTECH Corporation +14bc Globespan Semiconductor Inc. + d002 Pulsar [PCI ADSL Card] + d00f Pulsar [PCI ADSL Card] +14bd CARDIO Control N.V. +14be L3 Communications +14bf SPIDER Communications Inc. +14c0 COMPAL Electronics Inc + 1201 X550 10Gb 2P RJ45 OCP Mezz +# now owned by CSP, Inc. +14c1 MYRICOM Inc. + 0008 Myri-10G Dual-Protocol NIC + 14c1 0008 10G-PCIE-8A + 14c1 0009 10G-PCIE-8A (MSI-X firmware) + 14c1 000a 10G-PCIE-8B + 8043 Myrinet 2000 Scalable Cluster Interconnect + 103c 1240 Myrinet M2L-PCI64/2-3.0 LANai 7.4 (HP OEM) +14c2 DTK Computer +14c3 MEDIATEK Corp. + 0608 MT7921K (RZ608) Wi-Fi 6E 80MHz + 0616 MT7922 802.11ax PCI Express Wireless Network Adapter + 7603 MT7603E 802.11bgn PCI Express Wireless Network Adapter + 7612 MT7612E 802.11acbgn PCI Express Wireless Network Adapter + 7615 MT7615E 802.11ac PCI Express Wireless Network Adapter + 7630 MT7630e 802.11bgn Wireless Network Adapter + 7650 MT7650 802.11ac +# MT7612E too? + 7662 MT7662E 802.11ac PCI Express Wireless Network Adapter + 7915 MT7915E 802.11ax PCI Express Wireless Network Adapter + 7916 MT7905D/MT7975 +# WiFi 6E capable + 7922 MT7922 802.11ax PCI Express Wireless Network Adapter + 1a3b 5300 ASUS PCE-AXE59BT + 7961 MT7921 802.11ax PCI Express Wireless Network Adapter + 8650 MT7650 Bluetooth +14c4 IWASAKI Information Systems Co Ltd +14c5 Automation Products AB +14c6 Data Race Inc +14c7 Modular Technology Holdings Ltd +14c8 Turbocomm Tech. Inc. +14c9 ODIN Telesystems Inc +14ca PE Logic Corp. +14cb Billionton Systems Inc +14cc NAKAYO Telecommunications Inc +14cd Universal Global Scientific Industrial Co.,Ltd + 0001 USI-1514-1GbaseT [OCP1] + 0002 USI-4227-SFP [OCP2] + 0003 USI-X557-10GbaseT [OCP3] +14ce Whistle Communications +14cf TEK Microsystems Inc. +14d0 Ericsson Axe R & D +14d1 Computer Hi-Tech Co Ltd +14d2 Titan Electronics Inc + 8001 VScom 010L 1 port parallel adaptor + 8002 VScom 020L 2 port parallel adaptor + 8010 VScom 100L 1 port serial adaptor + 8011 VScom 110L 1 port serial and 1 port parallel adaptor + 8020 VScom 200L 1 or 2 port serial adaptor + 8021 VScom 210L 2 port serial and 1 port parallel adaptor + 8028 VScom 200I/200I-SI 2-port serial adapter + 8040 VScom 400L 4 port serial adaptor + 8043 VScom 430L 4-port serial and 3-port parallel adapter + 8048 VScom 400I 4-port serial adapter + 8080 VScom 800L 8 port serial adaptor + 8088 VScom 800I 8-port serial adapter + a000 VScom 010H 1 port parallel adaptor + a001 VScom 100H 1 port serial adaptor + a003 VScom 400H 4 port serial adaptor + a004 VScom 400HF1 4 port serial adaptor + a005 VScom 200H 2 port serial adaptor + a007 VScom PCI800EH (PCIe) 8-port serial adapter Port 1-4 + a008 VScom PCI800EH (PCIe) 8-port serial adapter Port 5-8 + a009 VScom PCI400EH (PCIe) 4-port serial adapter + e001 VScom 010HV2 1 port parallel adaptor + e010 VScom 100HV2 1 port serial adaptor + e020 VScom 200HV2 2 port serial adaptor +14d3 CIRTECH (UK) Ltd + 0002 DTL-T14000 Rev. 1 [PS2 TOOL CD/DVD Emulator] + 0003 DTL-T14000 Rev. 2 [PS2 TOOL CD/DVD Emulator] + 0004 DTL-T14000 Rev. 3 [PS2 TOOL CD/DVD Emulator] +14d4 Panacom Technology Corp +14d5 Nitsuko Corporation +14d6 Accusys Inc + 6101 ACS-61xxx, PCIe to SAS/SATA RAID HBA + 6201 ACS-62xxx, External PCIe to SAS/SATA RAID controller +14d7 Hirakawa Hewtech Corp +14d8 HOPF Elektronik GmBH +# Formerly SiPackets, Inc., formerly API NetWorks, Inc., formerly Alpha Processor, Inc. +14d9 Alliance Semiconductor Corporation + 0010 AP1011/SP1011 HyperTransport-PCI Bridge [Sturgeon] + 9000 AS90L10204/10208 HyperTransport to PCI-X Bridge +14da National Aerospace Laboratories +14db AFAVLAB Technology Inc + 2120 TK9902 + 2182 AFAVLAB Technology Inc. 8-port serial card +14dc Amplicon Liveline Ltd + 0000 PCI230 + 0001 PCI242 + 0002 PCI244 + 0003 PCI247 + 0004 PCI248 + 0005 PCI249 + 0006 PCI260 + 0007 PCI224 + 0008 PCI234 + 0009 PCI236 + 000a PCI272 + 000b PCI215 +14dd Boulder Design Labs Inc +14de Applied Integration Corporation +14df ASIC Communications Corp +14e1 INVERTEX +14e2 INFOLIBRIA +14e3 AMTELCO +14e4 Broadcom Inc. and subsidiaries + 0576 BCM43224 802.11a/b/g/n + 0800 Sentry5 Chipcommon I/O Controller + 0804 Sentry5 PCI Bridge + 0805 Sentry5 MIPS32 CPU + 0806 Sentry5 Ethernet Controller + 080b Sentry5 Crypto Accelerator + 080f Sentry5 DDR/SDR RAM Controller + 0811 Sentry5 External Interface Core + 0816 BCM3302 Sentry5 MIPS32 CPU + 1570 720p FaceTime HD Camera + 1600 NetXtreme BCM5752 Gigabit Ethernet PCI Express + 1028 01c1 Precision 490 + 1028 01c2 Latitude D620 + 103c 3015 PCIe LAN on Motherboard + 107b 5048 E4500 Onboard + 1259 2705 AT-2711FX + 1601 NetXtreme BCM5752M Gigabit Ethernet PCI Express + 1604 BCM5745X NetXtreme-E Ethernet Partition + 1605 BCM5745X NetXtreme-E RDMA Partition + 1606 BCM5745X NetXtreme-E RDMA Virtual Function + 1609 BCM5745X NetXtreme-E Ethernet Virtual Function + 1612 BCM70012 Video Decoder [Crystal HD] + 1614 BCM57454 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb Ethernet + 14e4 d140 NetXtreme-E Quad-port 10GBASE-T Ethernet PCIe Adapter (BCM957454-P410SDBT) + 14e4 d340 NetXtreme-E Quad-port 10GBASE-T Ethernet OCP 3.0 Adapter (BCM957454-N410SDBT) + 1615 BCM70015 Video Decoder [Crystal HD] + 1639 NetXtreme II BCM5709 Gigabit Ethernet + 1028 0235 PowerEdge R710 BCM5709 Gigabit Ethernet + 1028 0236 PowerEdge R610 BCM5709 Gigabit Ethernet + 1028 0237 PowerEdge T610 BCM5709 Gigabit Ethernet + 103c 7055 NC382i Integrated Multi-port PCI Express Gigabit Server Adapter + 103c 7059 NC382T PCIe Dual Port Multifunction Gigabit Server Adapter + 10a9 8027 Quad port Gigabit Ethernet Controller + 163a NetXtreme II BCM5709S Gigabit Ethernet + 1028 027b PowerEdge M805 Broadcom NetXtreme II BCM5709S + 1028 029c PowerEdge M710 BCM5709S Gigabit Ethernet + 103c 171d NC382m Dual Port 1GbE Multifunction BL-c Adapter + 103c 7056 NC382i Integrated Quad Port PCI Express Gigabit Server Adapter + 1259 2984 AT-2973SX + 163b NetXtreme II BCM5716 Gigabit Ethernet + 1028 028c PowerEdge R410 BCM5716 Gigabit Ethernet + 1028 028d PowerEdge T410 BCM5716 Gigabit Ethernet + 1028 02f1 PowerEdge R510 BCM5716 Gigabit Ethernet + 163c NetXtreme II BCM5716S Gigabit Ethernet + 163d NetXtreme II BCM57811 10-Gigabit Ethernet + 1043 858a PEB-10G/57811-1S + 163e NetXtreme II BCM57811 10 Gigabit Ethernet Multi Function + 163f NetXtreme II BCM57811 10-Gigabit Ethernet Virtual Function + 1641 NetXtreme BCM57787 Gigabit Ethernet PCIe + 1642 NetXtreme BCM57764 Gigabit Ethernet PCIe + 1643 NetXtreme BCM5725 Gigabit Ethernet PCIe + 1644 NetXtreme BCM5700 Gigabit Ethernet + 1014 0277 Broadcom Vigil B5700 1000Base-T + 1028 00d1 Broadcom BCM5700 + 1028 0106 Broadcom BCM5700 + 1028 0109 Broadcom BCM5700 1000Base-T + 1028 010a Broadcom BCM5700 1000BaseTX + 10b7 1000 3C996-T 1000Base-T + 10b7 1001 3C996B-T 1000Base-T + 10b7 1002 3C996C-T 1000Base-T + 10b7 1003 3C997-T 1000Base-T Dual Port + 10b7 1004 3C996-SX 1000Base-SX + 10b7 1005 3C997-SX 1000Base-SX Dual Port + 10b7 1008 3C942 Gigabit LOM (31X31) + 14e4 0002 NetXtreme 1000Base-SX + 14e4 0003 NetXtreme 1000Base-SX + 14e4 0004 NetXtreme 1000Base-T + 14e4 1028 NetXtreme 1000BaseTX + 14e4 1644 BCM5700 1000Base-T + 1645 NetXtreme BCM5701 Gigabit Ethernet + 0e11 007c NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T) + 0e11 007d NC6770 Gigabit Server Adapter (PCI-X, 1000-SX) + 0e11 0085 NC7780 Gigabit Server Adapter (embedded, WOL) + 0e11 0099 NC7780 Gigabit Server Adapter (embedded, WOL) + 0e11 009a NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T) + 0e11 00c1 NC6770 Gigabit Server Adapter (PCI-X, 1000-SX) + 1028 0121 Broadcom BCM5701 1000Base-T + 103c 128a BCM5701 1000Base-T (HP, OEM 3COM) + 103c 128b 1000Base-SX (PCI) [A7073A] + 103c 12a4 Core Lan 1000Base-T + 103c 12c1 IOX Core Lan 1000Base-T [A7109AX] + 103c 1300 Core LAN/SCSI Combo [A6794A] + 10a9 8010 IO9/IO10 Gigabit Ethernet (Copper) + 10a9 8011 Gigabit Ethernet (Copper) + 10a9 8012 Gigabit Ethernet (Fiber) + 10b7 1004 3C996-SX 1000Base-SX + 10b7 1006 3C996B-T 1000Base-T + 10b7 1007 3C1000-T 1000Base-T + 10b7 1008 3C940-BR01 1000Base-T + 14e4 0001 BCM5701 1000Base-T + 14e4 0005 BCM5701 1000Base-T + 14e4 0006 BCM5701 1000Base-T + 14e4 0007 BCM5701 1000Base-SX + 14e4 0008 BCM5701 1000Base-T + 14e4 1645 NetXtreme BCM5701 Gigabit Ethernet + 14e4 8008 BCM5701 1000Base-T + 1646 NetXtreme BCM5702 Gigabit Ethernet + 0e11 00bb NC7760 1000BaseTX + 1028 0126 Broadcom BCM5702 1000BaseTX + 14e4 8009 BCM5702 1000BaseTX + 1647 NetXtreme BCM5703 Gigabit Ethernet + 0e11 0099 NC7780 1000BaseTX + 0e11 009a NC7770 1000BaseTX + 10a9 8010 IO9 Gigabit Ethernet (Copper) + 14e4 0009 BCM5703 1000BaseTX + 14e4 000a BCM5703 1000BaseSX + 14e4 000b BCM5703 1000BaseTX + 14e4 8009 BCM5703 1000BaseTX + 14e4 800a BCM5703 1000BaseTX + 1648 NetXtreme BCM5704 Gigabit Ethernet + 0e11 00cf NC7772 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + 0e11 00d0 NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + 0e11 00d1 NC7783 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + 1028 014a PowerEdge 1750 + 1028 0170 PowerEdge 6850 Broadcom NetXtreme BCM5704 + 103c 310f NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + 10a9 8013 Dual Port Gigabit Ethernet (PCI-X,Copper) + 10a9 8018 Dual Port Gigabit Ethernet (A330) + 10a9 801a Dual Port Gigabit Ethernet (IA-blade) + 10a9 801b Quad Port Gigabit Ethernet (PCI-E,Copper) + 10b7 2000 3C998-T Dual Port 10/100/1000 PCI-X + 10b7 3000 3C999-T Quad Port 10/100/1000 PCI-X + 1166 1648 NetXtreme CIOB-E 1000Base-T + 1734 100b PRIMERGY RX/TX series onboard LAN + 1649 NetXtreme BCM5704S_2 Gigabit Ethernet + 164a NetXtreme II BCM5706 Gigabit Ethernet + 103c 1709 NC371i Integrated PCI-X Multifunction Gigabit Server Adapter + 103c 3070 NC380T PCI Express Dual Port Multifunction Gigabit Server Adapter + 103c 3101 NC370T MultifuNCtion Gigabit Server Adapter + 103c 3106 NC370i Multifunction Gigabit Server Adapter + 164c NetXtreme II BCM5708 Gigabit Ethernet + 1028 01f0 PowerEdge R900 Broadcom NetXtreme II BCM5708 + 1028 0205 PowerEdge 2970 Broadcom NetXtreme II BCM5708 + 1028 020b PowerEdge T605 Broadcom NetXtreme II BCM5708 + 1028 0221 PowerEdge R805 Broadcom NetXtreme II BCM5708 + 1028 0223 PowerEdge R905 Broadcom NetXtreme II BCM5708 + 1028 1f12 PowerEdge R805/R905 Broadcom NetXtreme II BCM5708 + 103c 7037 NC373T PCI Express Multifunction Gigabit Server Adapter + 103c 7038 NC373i Integrated Multifunction Gigabit Server Adapter + 103c 7045 NC374m PCI Express Dual Port Multifunction Gigabit Server Adapter + 164d NetXtreme BCM5702FE Gigabit Ethernet + 164e NetXtreme II BCM57710 10-Gigabit PCIe [Everest] + 103c 171c NC532m Dual Port 10GbE Multifunction BL-C Adapter + 103c 7058 NC532i Dual Port 10GbE Multifunction BL-C Adapter + 164f NetXtreme II BCM57711 10-Gigabit PCIe + 1650 NetXtreme II BCM57711E 10-Gigabit PCIe + 103c 171c NC532m Dual Port 10GbE Multifunction BL-C Adapter + 103c 7058 NC532i Dual Port 10GbE Multifunction BL-C Adapter + 1653 NetXtreme BCM5705 Gigabit Ethernet + 0e11 00e3 NC7761 Gigabit Server Adapter + 1734 1073 Primergy Econel 200 D2020 mainboard + 1654 NetXtreme BCM5705_2 Gigabit Ethernet + 0e11 00e3 NC7761 Gigabit Server Adapter + 103c 3100 NC1020 ProLiant Gigabit Server Adapter 32 PCI + 103c 3226 NC150T 4-port Gigabit Combo Switch & Adapter + 1655 NetXtreme BCM5717 Gigabit Ethernet PCIe + 1656 NetXtreme BCM5718 Gigabit Ethernet PCIe + 1657 NetXtreme BCM5719 Gigabit Ethernet PCIe + 1014 0420 FC 5260/5899 4-port 1 GbE Adapter for Power + 103c 169d Ethernet 1Gb 4-port 331FLR Adapter + 103c 22be Ethernet 1Gb 4-port 331i Adapter + 103c 3383 Ethernet 1Gb 4-port 331T Adapter + 14e4 1904 4-port 1Gb Ethernet Adapter + 14e4 1909 Broadcom NetXtreme 5719 Quad Port Gigabit NIC + 14e4 d166 BCM95719-P41 4x1GBT Ethernet NIC + 14e4 d366 BCM95719-N41 4x1GBT Ethernet NIC + 193d 1025 NIC-ETH330T-LP-4P +# NIC-ETH330T-3S-4P 4xGE 1000Base-T for OCP3.0 + 193d 1086 NIC-ETH330T-3S-4P + 1659 NetXtreme BCM5721 Gigabit Ethernet PCI Express + 1014 02c6 eServer xSeries server mainboard + 1028 01e6 PowerEdge 860 + 1028 023c PowerEdge R200 Broadcom NetXtreme BCM5721 + 103c 170b NC320m PCI Express Dual Port Gigabit Server Adapter + 103c 7031 NC320T PCIe Gigabit Server Adapter + 103c 7032 NC320i PCIe Gigabit Server Adapter + 1734 1061 PRIMERGY RX/TX S2 series onboard LAN + 165a NetXtreme BCM5722 Gigabit Ethernet PCI Express +# Dual NIC server + 1014 0378 System x3350 (Machine type 4192) + 1028 020f PowerEdge R300 Broadcom NetXtreme 5722 + 1028 0210 PowerEdge T300 Broadcom NetXtreme 5722 + 1028 0225 PowerEdge T105 Broadcom NetXtreme 5722 + 103c 7051 NC105i PCIe Gigabit Server Adapter + 103c 7052 NC105T PCIe Gigabit Server Adapter + 165b NetXtreme BCM5723 Gigabit Ethernet PCIe + 103c 705d NC107i Integrated PCI Express Gigabit Server Adapter + 165c NetXtreme BCM5724 Gigabit Ethernet PCIe + 165d NetXtreme BCM5705M Gigabit Ethernet + 1028 865d Latitude D400 + 14e4 165d Dell Latitude D600 + 165e NetXtreme BCM5705M_2 Gigabit Ethernet + 103c 088c NC8000 laptop + 103c 0890 NC6000 laptop + 103c 099c NX6110/NC6120 + 10cf 1279 LifeBook E8010D + 165f NetXtreme BCM5720 Gigabit Ethernet PCIe + 1028 04f7 PowerEdge R320 server + 1028 08fd PowerEdge R6515/R7515 LOM + 1028 08ff PowerEdge Rx5xx LOM Board + 1028 0900 PowerEdge C6525 LOM +# Dell 5720 LOM + 1028 0917 PowerEdge C6520 LOM + 103c 1786 NC332T Adapter + 103c 193d NC332i Adapter + 103c 2133 NC332i Adapter + 103c 22e8 NC332i Adapter + 103c 22eb NC332i Adapter + 15d9 165f H12SSL-i + 1662 NetXtreme II BCM57712 10 Gigabit Ethernet + 1663 NetXtreme II BCM57712 10 Gigabit Ethernet Multi Function + 1665 NetXtreme BCM5717 Gigabit Ethernet PCIe + 1668 NetXtreme BCM5714 Gigabit Ethernet + 103c 7039 NC324i PCIe Dual Port Gigabit Server Adapter + 1669 NetXtreme 5714S Gigabit Ethernet + 166a NetXtreme BCM5780 Gigabit Ethernet + 103c 7035 NC325i Integrated Dual port PCIe Express Gigabit Server Adapter + 166b NetXtreme BCM5780S Gigabit Ethernet + 166e 570x 10/100 Integrated Controller + 166f NetXtreme II BCM57712 10 Gigabit Ethernet Virtual Function + 1672 NetXtreme BCM5754M Gigabit Ethernet PCI Express + 1673 NetXtreme BCM5755M Gigabit Ethernet PCI Express + 1674 NetXtreme BCM5756ME Gigabit Ethernet PCI Express + 1677 NetXtreme BCM5751 Gigabit Ethernet PCI Express + 1028 0176 Dimension XPS Gen 4 + 1028 0177 Dimension 8400 + 1028 0179 Optiplex GX280 + 1028 0182 Latitude D610 + 1028 0187 Precision M70 + 1028 01a3 Latitude X1 + 1028 01a8 Precision 380 + 1028 01ad OptiPlex GX620 + 103c 3006 DC7100 SFF(DX878AV) + 1462 028c 915P/G Neo2 + 1734 105d Scenic W620 + 1678 NetXtreme BCM5715 Gigabit Ethernet + 103c 703e NC326i PCIe Dual Port Gigabit Server Adapter + 1679 NetXtreme BCM5715S Gigabit Ethernet + 103c 1707 NC326m PCIe Dual Port Adapter + 103c 170c NC325m PCIe Quad Port Adapter + 103c 703c NC326i PCIe Dual Port Gigabit Server Adapter + 167a NetXtreme BCM5754 Gigabit Ethernet PCI Express + 1028 01da OptiPlex 745 + 1028 01de Precision 390 + 1028 01df PowerEdge SC440 + 1028 0214 Precision T3400 + 1028 021e Precision T5400 + 167b NetXtreme BCM5755 Gigabit Ethernet PCI Express + 103c 280a DC5750 Microtower + 167d NetXtreme BCM5751M Gigabit Ethernet PCI Express + 1014 0577 ThinkPad X41 / Z60t + 103c 0934 nx8220 + 103c 0940 Compaq nw8240 Mobile Workstation + 103c 0944 Compaq nc6220 Notebook PC + 17aa 2081 ThinkPad R60e + 167e NetXtreme BCM5751F Fast Ethernet PCI Express + 167f NetLink BCM5787F Fast Ethernet PCI Express + 1680 NetXtreme BCM5761e Gigabit Ethernet PCIe + 1681 NetXtreme BCM5761 Gigabit Ethernet PCIe +# Integrated on the motherboard + 1028 0433 OptiPlex 580 + 1682 NetXtreme BCM57762 Gigabit Ethernet PCIe + 106b 00f6 Thunderbolt to Gigabit Ethernet Adapter + 1683 NetXtreme BCM57767 Gigabit Ethernet PCIe + 1684 NetXtreme BCM5764M Gigabit Ethernet PCIe + 1685 NetXtreme II BCM57500S Gigabit Ethernet + 1686 NetXtreme BCM57766 Gigabit Ethernet PCIe + 1687 NetXtreme BCM5762 Gigabit Ethernet PCIe + 1688 NetXtreme BCM5761 10/100/1000BASE-T Ethernet + 1259 2708 AT-2712 FX +# The Broadcom 57800 device has two 1Gig ports and two 10Gig ports. The subsystem information can be used to differentiate. + 168a NetXtreme II BCM57800 1/10 Gigabit Ethernet +# SFP+ ports + 1014 0493 PCIe2 LP 4-Port (10Gb+1GbE) SR+RJ45 Adapter (FC EN0T; CCIN 2CC3) +# RJ-45 ports + 1014 0494 PCIe2 LP 4-Port (10Gb+1GbE) SR+RJ45 Adapter (FC EN0T; CCIN 2CC3) + 1028 1f5c BCM57800 10-Gigabit Ethernet + 1028 1f5d BCM57800 10-Gigabit Ethernet + 1028 1f67 BCM57800 1-Gigabit Ethernet + 1028 1f68 BCM57800 1-Gigabit Ethernet + 168d NetXtreme II BCM57840 10/20 Gigabit Ethernet + 168e NetXtreme II BCM57810 10 Gigabit Ethernet + 1014 0492 PCIe2 2-port 10 GbE BaseT RJ45 Adapter (FC EN0W; CCIN 2CC4) + 103c 1798 Flex-10 10Gb 2-port 530FLB Adapter [Meru] + 103c 17a5 Flex-10 10Gb 2-port 530M Adapter + 103c 18d3 Ethernet 10Gb 2-port 530T Adapter + 103c 1930 FlexFabric 10Gb 2-port 534FLR-SFP+ Adapter + 103c 1931 StoreFabric CN1100R Dual Port Converged Network Adapter + 103c 1932 FlexFabric 10Gb 2-port 534FLB Adapter + 103c 1933 FlexFabric 10Gb 2-port 534M Adapter + 103c 193a FlexFabric 10Gb 2-port 533FLR-T Adapter + 103c 3382 Ethernet 10Gb 2-port 530FLR-SFP+ Adapter + 103c 339d Ethernet 10Gb 2-port 530SFP+ Adapter + 193d 1003 530F-B + 193d 1006 530F-L + 193d 100f NIC-ETH522i-Mb-2x10G + 4c52 9812 LREC9812AF Dual-port 10Gb Ethernet Server Adapter + 1690 NetXtreme BCM57760 Gigabit Ethernet PCIe + 1691 NetLink BCM57788 Gigabit Ethernet PCIe + 1028 04aa XPS 8300 + 1692 NetLink BCM57780 Gigabit Ethernet PCIe + 1025 033d Aspire 7740G + 1693 NetLink BCM5787M Gigabit Ethernet PCI Express + 1025 0121 Aspire 5920G + 103c 30c0 6710b + 17aa 20d5 ThinkPad R61 + 1694 NetLink BCM57790 Gigabit Ethernet PCIe + 1696 NetXtreme BCM5782 Gigabit Ethernet + 103c 12bc d530 CMT (DG746A) + 14e4 000d NetXtreme BCM5782 1000Base-T + 1698 NetLink BCM5784M Gigabit Ethernet PCIe + 1699 NetLink BCM5785 Gigabit Ethernet + 169a NetLink BCM5786 Gigabit Ethernet PCI Express + 169b NetLink BCM5787 Gigabit Ethernet PCI Express + 169c NetXtreme BCM5788 Gigabit Ethernet + 103c 308b MX6125 + 103c 30a1 NC2400 + 144d c018 X20 + 1462 590c KT6 Delta-FIS2R (MS-6590) + 169d NetLink BCM5789 Gigabit Ethernet PCI Express + 16a0 NetLink BCM5785 Fast Ethernet + 16a1 BCM57840 NetXtreme II 10 Gigabit Ethernet + 1043 866e PEB-10G/57840-2T 10GBase-T Network Adapter + 193d 100b NIC-ETH521i-Mb-4x10G + 4c52 9814 LREC9814AF Quad-port 10Gb Ethernet Server Adapter + 16a2 BCM57840 NetXtreme II 10/20-Gigabit Ethernet + 103c 1916 FlexFabric 20Gb 2-port 630FLB Adapter + 103c 1917 FlexFabric 20Gb 2-port 630M Adapter + 103c 2231 3820C 10/20Gb Converged Network Adapter + 103c 22fa FlexFabric 10Gb 2-port 536FLB Adapter + 16a3 NetXtreme BCM57786 Gigabit Ethernet PCIe + 16a4 BCM57840 NetXtreme II Ethernet Multi Function + 103c 1916 NPAR 20Gb 2-port 630FLB Adapter + 103c 1917 NPAR 20Gb 2-port 630M Adapter + 103c 2231 3820C 10/20Gb Converged Network Adapter (NPAR 1.5) + 103c 22fa FlexFabric 10Gb 2-port 536FLB Adapter (NPAR 1.5) +# The Broadcom 57800 device has two 1Gig ports and two 10Gig ports. The subsystem information can be used to differentiate. + 16a5 NetXtreme II BCM57800 1/10 Gigabit Ethernet Multi Function + 1028 1f5c NetXtreme II BCM57800 10-Gigabit Ethernet Multi Function + 1028 1f5d NetXtreme II BCM57800 10-Gigabit Ethernet Multi Function + 1028 1f67 NetXtreme II BCM57800 1-Gigabit Ethernet Multi Function + 1028 1f68 NetXtreme II BCM57800 1-Gigabit Ethernet Multi Function + 16a6 NetXtreme BCM5702X Gigabit Ethernet + 0e11 00bb NC7760 Gigabit Server Adapter (PCI-X, 10/100/1000-T) + 1028 0126 BCM5702 1000Base-T + 14e4 000c BCM5702 1000Base-T + 14e4 8009 BCM5702 1000Base-T + 16a7 NetXtreme BCM5703X Gigabit Ethernet + 0e11 00ca NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + 0e11 00cb NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + 1014 026f eServer xSeries server mainboard + 14e4 0009 NetXtreme BCM5703 1000Base-T + 14e4 000a NetXtreme BCM5703 1000Base-SX + 14e4 000b NetXtreme BCM5703 1000Base-T + 14e4 800a NetXtreme BCM5703 1000Base-T + 16a8 NetXtreme BCM5704S Gigabit Ethernet + 103c 132b PCI-X 1000Mbps Dual-port Built-in + 10a9 8014 Dual Port Gigabit Ethernet (PCI-X,Fiber) + 10a9 801c Quad Port Gigabit Ethernet (PCI-E,Fiber) + 10b7 2001 3C998-SX Dual Port 1000-SX PCI-X +# The Broadcom 57800 device has two 1Gig ports and two 10Gig ports. The subsystem information can be used to differentiate. + 16a9 NetXtreme II BCM57800 1/10 Gigabit Ethernet Virtual Function + 1028 1f5c NetXtreme II BCM57800 10-Gigabit Ethernet Virtual Function + 1028 1f5d NetXtreme II BCM57800 10-Gigabit Ethernet Virtual Function + 1028 1f67 NetXtreme II BCM57800 1-Gigabit Ethernet Virtual Function + 1028 1f68 NetXtreme II BCM57800 1-Gigabit Ethernet Virtual Function + 16aa NetXtreme II BCM5706S Gigabit Ethernet + 103c 3102 NC370F MultifuNCtion Gigabit Server Adapter + 103c 310c NC370i Multifunction Gigabit Server Adapter + 16ab NetXtreme II BCM57840 10/20 Gigabit Ethernet Multi Function + 16ac NetXtreme II BCM5708S Gigabit Ethernet + 1014 0304 NetXtreme II BCM5708S Gigabit Ethernet + 1028 01bb PowerEdge 1955 Broadcom NetXtreme II BCM5708S + 1028 020c PowerEdge M605 Broadcom NetXtreme II BCM5708S + 103c 1706 NC373m Multifunction Gigabit Server Adapter + 103c 7038 NC373i PCI Express Multifunction Gigabit Server Adapter + 103c 703b NC373i Integrated Multifunction Gigabit Server Adapter + 103c 703d NC373F PCI Express Multifunction Gigabit Server Adapter + 16ad NetXtreme II BCM57840 10/20 Gigabit Ethernet Virtual Function + 103c 1916 FlexFabric 20Gb 2-port 630FLB Adapter + 103c 1917 FlexFabric 20Gb 2-port 630M Adapter + 103c 2231 3820C 10/20Gb Converged Network Adapter (SR-IOV VF) + 103c 22fa FlexFabric 10Gb 2-port 536FLB Adapter (SR-IOV VF) + 16ae NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function + 103c 1798 NPAR 10Gb 2-port 530FLB Adapter + 103c 17a5 NPAR 10Gb 2-port 530M Adapter + 103c 18d3 NPAR 10Gb 2-port 530T Adapter + 103c 1930 NPAR 10Gb 2-port 534FLR-SFP+ Adapter + 103c 1931 NPAR CN1100R Dual Port Converged Network Adapter + 103c 1932 NPAR 10Gb 2-port 534FLB Adapter + 103c 1933 NPAR 10Gb 2-port 534M Adapter + 103c 193a NPAR 10Gb 2-port 533FLR-T Adapter + 103c 3382 NPAR 10Gb 2-port 530FLR-SFP+ Adapter + 103c 339d NPAR 10Gb 2-port 530SFP+ Adapter + 16af NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function + 103c 1798 Flex-10 10Gb 2-port 530FLB Adapter + 103c 17a5 Flex-10 10Gb 2-port 530M Adapter + 103c 18d3 Ethernet 10Gb 2-port 530T Adapter + 103c 1930 FlexFabric 10Gb 2-port 534FLR-SFP+ Adapter + 103c 1931 StoreFabric CN1100R Dual Port Converged Network Adapter + 103c 1932 FlexFabric 10Gb 2-port 534FLB Adapter + 103c 1933 FlexFabric 10Gb 2-port 534M Adapter + 103c 193a FlexFabric 10Gb 2-port 533FLR-T Adapter + 103c 3382 Ethernet 10Gb 2-port 530FLR-SFP+ Adapter + 103c 339d Ethernet 10Gb 2-port 530SFP+ Adapter + 16b0 NetXtreme BCM57761 Gigabit Ethernet PCIe + 16b1 NetLink BCM57781 Gigabit Ethernet PCIe + 1849 96b1 Z77 Extreme4 motherboard + 16b2 NetLink BCM57791 Gigabit Ethernet PCIe + 16b3 NetXtreme BCM57786 Gigabit Ethernet PCIe + 16b4 NetXtreme BCM57765 Gigabit Ethernet PCIe + 16b5 NetLink BCM57785 Gigabit Ethernet PCIe + 16b6 NetLink BCM57795 Gigabit Ethernet PCIe + 16b7 NetXtreme BCM57782 Gigabit Ethernet PCIe + 16bc BCM57765/57785 SDXC/MMC Card Reader + 16be BCM57765/57785 MS Card Reader + 16bf BCM57765/57785 xD-Picture Card Reader + 16c1 NetXtreme-E RDMA Virtual Function + 16c6 NetXtreme BCM5702A3 Gigabit Ethernet + 10b7 1100 3C1000B-T 10/100/1000 PCI + 14e4 000c BCM5702 1000Base-T + 14e4 8009 BCM5702 1000Base-T + 16c7 NetXtreme BCM5703 Gigabit Ethernet + 0e11 00ca NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + 0e11 00cb NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + 103c 12c3 Combo FC/GigE-SX [A9782A] + 103c 12ca Combo FC/GigE-T [A9784A] + 103c 1321 Core I/O LAN/SCSI Combo [AB314A] + 14e4 0009 NetXtreme BCM5703 1000Base-T + 14e4 000a NetXtreme BCM5703 1000Base-SX + 16c8 BCM57301 NetXtreme-C 10Gb Ethernet Controller + 16c9 BCM57302 NetXtreme-C 10Gb/25Gb Ethernet Controller + 16ca BCM57304 NetXtreme-C 10Gb/25Gb/40Gb/50Gb Ethernet Controller + 16cb NetXtreme-C Ethernet Virtual Function + 16cc BCM57417 NetXtreme-E Ethernet Partition + 16ce BCM57311 NetXtreme-C 10Gb RDMA Ethernet Controller + 16cf BCM57312 NetXtreme-C 10Gb/25Gb RDMA Ethernet Controller + 16d0 BCM57402 NetXtreme-E 10Gb Ethernet Controller + 16d1 BCM57404 NetXtreme-E 10Gb/25Gb Ethernet Controller + 16d2 BCM57406 NetXtreme-E 10GBASE-T Ethernet Controller + 16d3 NetXtreme-E Ethernet Virtual Function + 16d4 BCM57402 NetXtreme-E Ethernet Partition + 16d5 BCM57407 NetXtreme-E 10GBase-T Ethernet Controller + 16d6 BCM57412 NetXtreme-E 10Gb RDMA Ethernet Controller + 117c 00cd FastFrame N4S2 Dual-port 10Gb Ethernet Adapter + 14e4 1202 BCM957412M4122C OCP 1x25G Type1 wRoCE + 14e4 4120 NetXtreme E-Series Advanced Dual-port 10Gb SFP+ Ethernet Network Daughter Card + 14e4 4126 NetXtreme-E Dual-port 10G SFP+ Ethernet OCP 3.0 Adapter (BCM957412N4120C) + 152d 8b20 BCM57412 NetXtreme-E 10Gb RDMA Ethernet Controller + 152d 8b22 BCM57412 NetXtreme-E 25Gb RDMA Ethernet Controller +# NIC-ETH531F-LP-2P BCM57412 2 x 10G SFP+ Ethernet PCIe Card + 193d 1024 NIC-ETH531F-LP-2P +# NIC-ETH531F-3S-2P 2x10GbE SFP+ Adapter for OCP3.0 + 193d 1087 NIC-ETH531F-3S-2P + 16d7 BCM57414 NetXtreme-E 10Gb/25Gb RDMA Ethernet Controller + 117c 00cc FastFrame N422 Dual-port 25Gb Ethernet Adapter + 14e4 1402 BCM957414A4142CC 10Gb/25Gb Ethernet PCIe + 14e4 1404 BCM957414M4142C OCP 2x25G Type1 wRoCE + 14e4 4140 NetXtreme E-Series Advanced Dual-port 25Gb SFP28 Network Daughter Card +# BCM957414M4143C + 14e4 4143 NetXtreme-E Single-port 40Gb/50Gb Ethernet OCP 2.0 Adapter (BCM957414M4143C) + 14e4 4146 NetXtreme-E Dual-port 25G SFP28 Ethernet OCP 3.0 Adapter (BCM957414N4140C) + 1590 020e Ethernet 25Gb 2-port 631SFP28 Adapter + 1590 0211 Ethernet 25Gb 2-port 631FLR-SFP28 Adapter +# NIC-ETH630F-LP-2P SFP28 2x25GbE PCIe Network Adapter + 193d 1033 NIC-ETH630F-LP-2P + 1bd4 008e ENFB2251-SP2 + 1bd4 008f ENPB2251-SP2 +# VSE-225-31S Dual-port 10Gb/25Gb Ethernet PCIe + 1eec 0101 VSE-225-31S Dual-port 10Gb/25Gb Ethernet PCIe + 16d8 BCM57416 NetXtreme-E Dual-Media 10G RDMA Ethernet Controller + 1028 1feb NetXtreme-E 10Gb SFP+ Adapter + 117c 00ce FastFrame N4T2 Dual-port 10GBASE-T Ethernet Adapter + 14e4 4163 NetXtreme-E Dual-port 10GBASE-T Ethernet OCP 2.0 Adapter (BCM957416M4163C) + 14e4 4166 NetXtreme-E Dual-port 10GBASE-T Ethernet OCP 3.0 Adapter (BCM957416N4160C) + 14e4 d140 BCM957416-P410 4x10GBT Ethernet NIC + 14e4 d340 BCM957416-N410 4x10GBT Ethernet NIC + 1590 020c Ethernet 10Gb 2-port 535T Adapter + 1590 0212 Ethernet 10Gb 2-port 535FLR-T Adapter + 16d9 BCM57417 NetXtreme-E 10GBASE-T RDMA Ethernet Controller + 108e 4866 Dual Port 10GBase-T Ethernet Controller + 16dc NetXtreme-E Ethernet Virtual Function + 16dd NetLink BCM5781 Gigabit Ethernet PCI Express + 16de BCM57412 NetXtreme-E Ethernet Partition + 16df BCM57314 NetXtreme-C 10Gb/25Gb/40Gb/50Gb RDMA Ethernet Controller + 16e1 NetXtreme-C Ethernet Virtual Function + 16e2 BCM57417 NetXtreme-E 10Gb/25Gb RDMA Ethernet Controller + 108e 4866 Dual Port 10Gb/25Gb SFP28 Ethernet Controller + 16e3 BCM57416 NetXtreme-E 10Gb RDMA Ethernet Controller + 16e5 NetXtreme-C RDMA Virtual Function + 16e7 BCM57404 NetXtreme-E Ethernet Partition + 16e8 BCM57406 NetXtreme-E Ethernet Partition + 16e9 BCM57407 NetXtreme-E 25Gb Ethernet Controller + 16eb BCM57412 NetXtreme-E RDMA Partition + 16ec BCM57414 NetXtreme-E Ethernet Partition + 16ed BCM57414 NetXtreme-E RDMA Partition + 16ee BCM57416 NetXtreme-E Ethernet Partition + 16ef BCM57416 NetXtreme-E RDMA Partition + 16f1 BCM57452 NetXtreme-E 10Gb/25Gb/40Gb/50Gb Ethernet + 16f3 NetXtreme BCM5727 Gigabit Ethernet PCIe + 16f7 NetXtreme BCM5753 Gigabit Ethernet PCI Express + 16fd NetXtreme BCM5753M Gigabit Ethernet PCI Express + 103c 309f Compaq nx9420 Notebook + 103c 30a3 Compaq nw8440 + 16fe NetXtreme BCM5753F Fast Ethernet PCI Express + 170c BCM4401-B0 100Base-TX + 1028 0188 Inspiron 6000 laptop + 1028 018d Inspiron 700m/710m + 1028 0196 Inspiron 5160 + 1028 01af Inspiron 6400 + 1028 01cd Inspiron 9400 Laptop + 1028 01d7 XPS M1210 + 1028 01d8 Inspiron E1405 + 103c 099c NX6110/NC6120 + 103c 30a2 NX7300 laptop + 14e4 170c HP Compaq 6720t Mobile Thin Client + 170d NetXtreme BCM5901 100Base-TX + 1014 0545 ThinkPad R40e + 170e NetXtreme BCM5901 100Base-TX + 1712 NetLink BCM5906 Fast Ethernet PCI Express + 1713 NetLink BCM5906M Fast Ethernet PCI Express + 1028 01f3 Inspiron 1420 + 1028 0209 XPS M1330 + 103c 30c0 Compaq 6710b + 17aa 3a23 IdeaPad S10e + 1750 BCM57508 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb/200Gb Ethernet + 117c 00cf FastFrame N412 Dual-port 100Gb Ethernet Adapter + 14e4 2100 NetXtreme-E Dual-port 100G QSFP56 Ethernet PCIe4.0 x16 Adapter (BCM957508-P2100G) + 14e4 5208 NetXtreme-E Dual-port 100G QSFP56 Ethernet OCP 3.0 Adapter (BCM957508-N2100G) + 14e4 520a NetXtreme-E Dual-port 100G DSFP Ethernet OCP 3.0 Adapter (BCM957508-N2100GD) + 14e4 d124 NetXtreme-E P2100D BCM57508 2x100G QSFP PCIE + 14e4 d324 NetXtreme-E N2100D BCM57508 2x100G QSFP OCP3.0 Ethernet + 14e4 df24 NetXtreme-E NGM2100D BCM57508 2x100G KR Mezz Ethernet + 1751 BCM57504 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb/200Gb Ethernet + 1028 09d4 PowerEdge XR11/XR12 LOM + 1028 0b1b PowerEdge XR5610 LOM + 14e4 4250 NetXtreme-E Quad-port 25G SFP28 Ethernet PCIe4.0 x16 Adapter (BCM957504-P425G) + 14e4 5045 NetXtreme-E BCM57504 4x25G OCP3.0 + 14e4 5100 NetXtreme-E Single-port 100G QSFP56 Ethernet OCP 3.0 Adapter (BCM957504-N1100G) + 14e4 5105 NetXtreme-E Single-port 100G DSFP Ethernet OCP 3.0 Adapter (BCM957504-N1100GD) + 14e4 5250 NetXtreme-E BCM57504 4x25G KR Mezz + 14e4 5425 NetXtreme-E Quad-port 25G SFP28 Ethernet OCP 3.0 Adapter (BCM957504-N425G) + 14e4 d142 NetXtreme-E P425D BCM57504 4x25G SFP28 PCIE + 1590 0420 HPE Ethernet 25/50Gb 2-port 6310C Adapter + 1752 BCM57502 NetXtreme-E 10Gb/25Gb/40Gb/50Gb Ethernet + 1760 BCM57608 10Gb/25Gb/50Gb/100Gb/200Gb/400Gb Ethernet + 14e4 d125 BCM57608 2x200G PCIe Ethernet NIC + 1800 BCM57502 NetXtreme-E Ethernet Partition + 1801 BCM57504 NetXtreme-E Ethernet Partition + 1802 BCM57508 NetXtreme-E Ethernet Partition + 14e4 df24 BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz Ethernet Partition + 1803 BCM57502 NetXtreme-E RDMA Partition + 1804 BCM57504 NetXtreme-E RDMA Partition + 1805 BCM57508 NetXtreme-E RDMA Partition + 14e4 df24 NetXtreme-E NGM2100D BCM57508 2x100G KR Mezz RDMA Partition + 1806 BCM5750X NetXtreme-E Ethernet Virtual Function + 14e4 df24 BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz Ethernet Virtual Function + 1807 BCM5750X NetXtreme-E RDMA Virtual Function + 14e4 df24 BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz RDMA Virtual Function + 1808 BCM5750X NetXtreme-E Ethernet Virtual Function + 14e4 df24 BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz Ethernet Virtual Function + 1809 BCM5750X NetXtreme-E RDMA Virtual Function + 14e4 df24 BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz RDMA Virtual Function + 2711 BCM2711 PCIe Bridge + 2712 BCM2712 PCIe Bridge + 3352 BCM3352 + 3360 BCM3360 + 4210 BCM4210 iLine10 HomePNA 2.0 + 4211 BCM4211 iLine10 HomePNA 2.0 + V.90 56k modem + 4212 BCM4212 v.90 56k modem + 4220 802-11b/g Wireless PCI controller, packaged as a Linksys WPC54G ver 1.2 PCMCIA card + 4222 NetXtreme BCM5753M Gigabit Ethernet PCI Express + 4301 BCM4301 802.11b Wireless LAN Controller + 1028 0407 TrueMobile 1180 Onboard WLAN + 1043 0120 WL-103b Wireless LAN PC Card + 16a5 1602 B-300 802.11b Wireless CardBus Adapter + 1737 4301 WMP11 v2.7 802.11b Wireless-B PCI Adapter + 4305 BCM4307 V.90 56k Modem + 4306 BCM4306 802.11bg Wireless LAN controller + 4307 BCM4306 802.11bg Wireless LAN Controller + 4310 BCM4310 Chipcommon I/OController + 4311 BCM4311 802.11b/g WLAN + 1028 0007 Wireless 1390 WLAN Mini-Card + 1028 0008 Wireless 1390 WLAN ExpressCard + 103c 1363 BCM4311 802.11b/g Wireless LAN Controller + 103c 1364 BCM4311 802.11b/g Wireless LAN Controller + 103c 1365 BCM4311 802.11b/g Wireless LAN Controller + 103c 1374 BCM4311 802.11b/g Wireless LAN Controller + 103c 1375 BCM4311 802.11b/g Wireless LAN Controller + 103c 1376 BCM4311 802.11b/g Wireless LAN Controller + 103c 1377 BCM4311 802.11b/g Wireless LAN Controller + 103c 137f BCM4322 802.11a/b/g/n Wireless LAN Controller + 103c 1380 BCM4322 802.11a/b/g/n Wireless LAN Controller + 14e4 4311 BCM94311MCG + 4312 BCM4311 802.11a/b/g + 1028 0007 Wireless 1490 Dual Band WLAN Mini-Card + 1028 0008 Wireless 1490 Dual Band WLAN ExpressCard + 103c 135a Broadcom 802.11a/b/g WLAN + 103c 135f Broadcom 802.11a/b/g WLAN + 103c 1360 Broadcom 802.11a/b/g WLAN + 103c 1361 Broadcom 802.11a/b/g WLAN + 103c 1362 Broadcom 802.11a/b/g WLAN + 103c 1370 Broadcom 802.11a/b/g WLAN + 103c 1371 Broadcom 802.11a/b/g WLAN + 103c 1372 Broadcom 802.11a/b/g WLAN + 103c 1373 Broadcom 802.11a/b/g WLAN + 103c 30b5 Presario V3242AU + 106b 0089 AirPort Extreme + 1371 103c Broadcom 802.11 Multiband-netwerkadapter(6715s) + 4313 BCM4311 802.11a + 4315 BCM4312 802.11b/g LP-PHY + 1028 000b Wireless 1395 WLAN Mini-Card + 1028 000c Wireless 1397 WLAN Mini-Card + 103c 137c BCM4312 802.11b/g Wireless LAN Controller + 103c 137d BCM4312 802.11b/g Wireless LAN Controller + 103c 1507 U98Z049.00 Wireless Mini PCIe Card + 105b e003 T77H030.00 Wireless Mini PCIe Card + 105b e01b T77H106.00 Wireless Half-size Mini PCIe Card + 4318 BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller + 1028 0005 Wireless 1370 WLAN Mini-PCI Card + 1028 0006 Wireless 1370 WLAN PC Card + 103c 1355 Broadcom 802.11b/g WLAN + 103c 1356 Broadcom 802.11b/g WLAN + 103c 1357 Broadcom 802.11b/g WLAN + 1043 100f WL-138G v2 / WL-138gE / WL-100gE + 1043 120f A6U notebook embedded card + 1154 0355 Buffalo WLI2-PCI-G54S High Speed Mode Wireless Adapter + 1468 0311 Aspire 3022WLMi, 5024WLMi, 5020 + 1468 0312 TravelMate 2410 + 14e4 0449 Gateway 7510GX + 16ec 0119 U.S.Robotics Wireless MAXg PC Card + 1737 0042 WMP54GS v1.1 802.11g Wireless-G PCI Adapter with SpeedBooster + 1737 0048 WPC54G v3 802.11g Wireless-G Notebook Adapter + 1737 0049 WPC54GS v2 802.11g Wireless-G Notebook Adapter with SpeedBooster + 1799 7000 F5D7000 v4000 Wireless G Desktop Card + 1799 7001 F5D7001 v2000 Wireless G Plus Desktop Card + 1799 7010 F5D7010 v4000 Wireless G Notebook Card + 1799 7011 F5D7011 v2000 High-Speed Mode Wireless G Notebook Card + 4319 BCM4318 [AirForce 54g] 802.11a/b/g PCI Express Transceiver + 1028 0005 Wireless 1470 Dual Band WLAN Mini-PCI Card + 1028 0006 Wireless 1470 Dual Band WLAN PC Card + 103c 1358 Broadcom 802.11a/b/g WLAN + 103c 1359 Broadcom 802.11a/b/g WLAN + 103c 135a Broadcom 802.11a/b/g WLAN + 4320 BCM4306 802.11b/g Wireless LAN Controller + 1028 0001 TrueMobile 1300 WLAN Mini-PCI Card + 1028 0002 TrueMobile 1300 WLAN PC Card + 1028 0003 Wireless 1350 WLAN Mini-PCI Card + 1028 0004 Wireless 1350 WLAN PC Card + 103c 12f4 Broadcom 802.11b/g WLAN + 103c 12f8 Broadcom 802.11b/g WLAN + 103c 12fa Broadcom 802.11b/g WLAN + 103c 12fb Broadcom 802.11b/g WLAN + 1043 100f WL-100G + 1057 7025 WN825G + 106b 004e AirPort Extreme + 1154 0330 Buffalo WLI2-PCI-G54S High Speed Mode Wireless Desktop Adapter + 144f 7050 eMachines M6805 802.11g Built-in Wireless + 144f 7051 Sonnet Aria Extreme PCI + 1737 0013 WMP54G v1 802.11g PCI Adapter + 1737 0014 WMP54G v2 802.11g PCI Adapter + 1737 0015 WMP54GS v1.0 802.11g Wireless-G PCI Adapter with SpeedBooster + 1737 4320 WPC54G v1 / WPC54GS v1 802.11g Wireless-G Notebook Adapter + 1799 7000 F5D7000 v1000 Wireless G Desktop Card + 1799 7001 F5D7001 v1000 Wireless G Plus Desktop Card + 1799 7010 F5D7010 v1000 Wireless G Notebook Card + 1799 7011 F5D7011 v1000 High-Speed Mode Wireless G Notebook Card + 185f 1220 TravelMate 290E WLAN Mini-PCI Card + 4321 BCM4321 802.11a Wireless Network Controller + 4322 BCM4322 802.11bgn Wireless Network Controller + 4324 BCM4309 802.11abg Wireless Network Controller + 1028 0001 Truemobile 1400 + 1028 0002 TrueMobile 1400 Dual Band WLAN PC Card + 1028 0003 Truemobile 1450 MiniPCI + 1028 0004 Wireless 1450 Dual Band WLAN PC Card + 103c 12f9 Broadcom 802.11a/b/g WLAN + 103c 12fc Broadcom 802.11a/b/g WLAN + 4325 BCM4306 802.11bg Wireless Network Controller + 1414 0003 Wireless Notebook Adapter MN-720 + 1414 0004 Wireless PCI Adapter MN-730 + 4326 BCM4307 Chipcommon I/O Controller? + 4328 BCM4321 802.11a/b/g/n + 1028 0009 Wireless 1500 Draft 802.11n WLAN Mini-Card + 1028 000a Wireless 1500 Draft 802.11n WLAN Mini-card + 103c 1366 BCM4321 802.11a/b/g/n Wireless LAN Controller + 103c 1367 BCM4321 802.11a/b/g/n Wireless LAN Controller + 103c 1368 BCM4321 802.11a/b/g/n Wireless LAN Controller + 103c 1369 BCM4321 802.11a/b/g/n Wireless LAN Controller + 106b 0087 AirPort Extreme + 106b 0088 AirPort Extreme + 106b 008b AirPort Extreme + 106b 008c AirPort Extreme + 106b 0090 AirPort Extreme + 14e4 4328 BCM4328 802.11a/b/g/n + 1737 0066 WPC600N v1 802.11a/b/g/n Wireless-N CardBus Adapter + 1737 0068 WEC600N v1 802.11a/b/g/n Wireless-N ExpressCard + 4329 BCM4321 802.11b/g/n + 1385 7b00 WN511B RangeMax NEXT Wireless Notebook Adapter + 1385 7d00 WN311B RangeMax Next 270 Mbps Wireless PCI Adapter + 1737 0058 WPC300N v1 Wireless-N Notebook Adapter + 432a BCM4321 802.11an Wireless Network Controller + 432b BCM4322 802.11a/b/g/n Wireless LAN Controller + 1028 000d Wireless 1510 Wireless-N WLAN Mini-Card + 106b 008d AirPort Extreme + 106b 008e AirPort Extreme + 432c BCM4322 802.11b/g/n + 1799 d311 Dynex DX-NNBX 802.11n WLAN Cardbus Card + 432d BCM4322 802.11an Wireless Network Controller + 4331 BCM4331 802.11a/b/g/n + 106b 00d6 AirPort Extreme + 106b 00e4 AirPort Extreme + 106b 00ef AirPort Extreme + 106b 00f4 AirPort Extreme + 106b 00f5 AirPort Extreme + 106b 010e AirPort Extreme + 106b 010f AirPort Extreme + 4333 Serial (EDGE/GPRS modem part of Option GT Combo Edge) + 4344 EDGE/GPRS data and 802.11b/g combo cardbus [GC89] + 4350 BCM43222 Wireless Network Adapter + 4351 BCM43222 802.11abgn Wireless Network Adapter + 4353 BCM43224 802.11a/b/g/n + 1028 000e Wireless 1520 Half-size Mini PCIe Card + 103c 1509 WMIB-275N Half-size Mini PCIe Card + 106b 0093 AirPort Extreme + 106b 00d1 AirPort Extreme + 106b 00e9 AirPort Extreme + 14e4 04d8 Pegatron UPWL6024 + 4357 BCM43225 802.11b/g/n + 105b e021 T77H103.00 Wireless Half-size Mini PCIe Card + 4358 BCM43227 802.11b/g/n + 4359 BCM43228 802.11a/b/g/n + 1028 0011 Wireless 1530 Half-size Mini PCIe Card + 103c 182c BCM943228HM4L 802.11a/b/g/n 2x2 Wi-Fi Adapter + 4360 BCM4360 802.11ac Wireless Network Adapter + 4365 BCM43142 802.11b/g/n + 1028 0016 Wireless 1704 802.11n + BT 4.0 + 43a0 BCM4360 802.11ac Dual Band Wireless Network Adapter + 43a1 BCM4360 802.11ac 2,4G Wireless Network Adapter + 43a2 BCM4360 802.11ac 5G Wireless Network Adapter + 43a3 BCM4350 802.11ac Wireless Network Adapter +# Manufactured by Foxconn for Lenovo + 17aa 075a 00JT494 + 43a9 BCM43217 802.11b/g/n + 43aa BCM43131 802.11b/g/n + 43ae BCM43162 802.11ac Wireless Network Adapter + 43b1 BCM4352 802.11ac Dual Band Wireless Network Adapter + 1043 85ba PCE-AC56 Dual-Band Wireless PCI-E Adapter + 43ba BCM43602 802.11ac Wireless LAN SoC + 43bb BCM43602 802.11ac Wireless LAN SoC + 43bc BCM43602 802.11ac Wireless LAN SoC + 43d3 BCM43567 802.11ac Wireless Network Adapter + 43d9 BCM43570 802.11ac Wireless Network Adapter + 43dc BCM4355 802.11ac Wireless LAN SoC + 43df BCM4354 802.11ac Wireless LAN SoC + 43e9 BCM4358 802.11ac Wireless LAN SoC + 43ec BCM4356 802.11ac Wireless Network Adapter + 4401 BCM4401 100Base-T + 1025 0035 TravelMate 660 + 1025 0064 Extensa 3000 series laptop + 1028 8127 Dimension 2400 + 103c 08b0 tc1100 tablet + 1043 80a8 A7V8X motherboard + 4402 BCM4402 Integrated 10/100BaseT + 4403 BCM4402 V.90 56k Modem + 4410 BCM4413 iLine32 HomePNA 2.0 + 4411 BCM4413 V.90 56k modem + 4412 BCM4412 10/100BaseT + 4415 BCM4359 802.11ac Dual-Band Wireless Network Controller + 441f BCM4361 802.11ac Dual-Band Wireless Network Controller + 4420 BCM4361 802.11ac 2.4 GHz Wireless Network Controller + 4421 BCM4361 802.11ac 5 GHz Wireless Network Controller + 4425 BCM4378 802.11ax Dual Band Wireless Network Adapter + 4430 BCM44xx CardBus iLine32 HomePNA 2.0 + 4432 BCM4432 CardBus 10/100BaseT + 4433 BCM4387 802.11ax Dual Band Wireless LAN Controller + 4464 BCM4364 802.11ac Wireless Network Adapter +# brcmfmac reports it as BCM4377/4 but macOS drivers call it BCM4377b + 4488 BCM4377b Wireless Network Adapter + 449d BCM43752 802.11ax Dual Band Wireless LAN Controller + 4610 BCM4610 Sentry5 PCI to SB Bridge + 4611 BCM4610 Sentry5 iLine32 HomePNA 1.0 + 4612 BCM4610 Sentry5 V.90 56k Modem + 4613 BCM4610 Sentry5 Ethernet Controller + 4614 BCM4610 Sentry5 External Interface + 4615 BCM4610 Sentry5 USB Controller + 4704 BCM4704 PCI to SB Bridge + 4705 BCM4704 Sentry5 802.11b Wireless LAN Controller + 4706 BCM4704 Sentry5 Ethernet Controller + 4707 BCM4704 Sentry5 USB Controller + 4708 BCM4704 Crypto Accelerator + 4710 BCM4710 Sentry5 PCI to SB Bridge + 4711 BCM47xx Sentry5 iLine32 HomePNA 2.0 + 4712 BCM47xx V.92 56k modem + 4713 Sentry5 Ethernet Controller + 4714 BCM47xx Sentry5 External Interface + 4715 BCM47xx Sentry5 USB / Ethernet Controller + 4716 BCM47xx Sentry5 USB Host Controller + 4717 BCM47xx Sentry5 USB Device Controller + 4718 Sentry5 Crypto Accelerator + 4719 BCM47xx/53xx RoboSwitch Core + 4720 BCM4712 MIPS CPU + 4727 BCM4313 802.11bgn Wireless Network Adapter + 1028 0010 Inspiron M5010 / XPS 8300 + 5365 BCM5365P Sentry5 Host Bridge + 5600 BCM5600 StrataSwitch 24+2 Ethernet Switch Controller + 5605 BCM5605 StrataSwitch 24+2 Ethernet Switch Controller + 5615 BCM5615 StrataSwitch 24+2 Ethernet Switch Controller + 5625 BCM5625 StrataSwitch 24+2 Ethernet Switch Controller + 5645 BCM5645 StrataSwitch 24+2 Ethernet Switch Controller + 5670 BCM5670 8-Port 10GE Ethernet Switch Fabric + 5680 BCM5680 G-Switch 8 Port Gigabit Ethernet Switch Controller + 5690 BCM5690 12-port Multi-Layer Gigabit Ethernet Switch + 5691 BCM5691 GE/10GE 8+2 Gigabit Ethernet Switch Controller + 5692 BCM5692 12-port Multi-Layer Gigabit Ethernet Switch + 5695 BCM5695 12-port + HiGig Multi-Layer Gigabit Ethernet Switch + 5698 BCM5698 12-port Multi-Layer Gigabit Ethernet Switch + 5820 BCM5820 Crypto Accelerator + 5821 BCM5821 Crypto Accelerator + 5822 BCM5822 Crypto Accelerator + 5823 BCM5823 Crypto Accelerator + 5824 BCM5824 Crypto Accelerator + 5840 BCM5840 Crypto Accelerator + 5841 BCM5841 Crypto Accelerator + 5850 BCM5850 Crypto Accelerator + 5e87 Valkyrie offload engine + 5e88 Viper Offload Engine +# Bluetooth PCI function of the BRCM4378 Wireless Network Adapter + 5f69 BRCM4378 Bluetooth Controller +# Bluetooth PCI function of the BRCM4387 Wireless Network Adapter + 5f71 BRCM4387 Bluetooth Controller +# Bluetooth PCI function of the BRCM4377 Wireless Network Adapter + 5fa0 BRCM4377 Bluetooth Controller + 8602 BCM7400/BCM7405 Serial ATA Controller + 9026 CN99xx [ThunderX2] Integrated USB 3.0 xHCI Host Controller + 9027 CN99xx [ThunderX2] Integrated AHCI/SATA 3 Host Controller + a8d8 BCM43224/5 Wireless Network Adapter + aa52 BCM43602 802.11ac Wireless LAN SoC + b080 BCM56080 Firelight2 Switch ASIC + b302 BCM56302 StrataXGS 24x1GE 2x10GE Switch Controller + b334 BCM56334 StrataXGS 24x1GE 4x10GE Switch Controller + b370 BCM56370 Switch ASIC + b371 BCM56371 Switch ASIC + b372 BCM56372 Switch ASIC + b375 BCM56375 Switch ASIC + b376 BCM56376 Switch ASIC + b377 BCM56377 Switch ASIC + b379 Broadcom BCM56379 Switch ASIC + b470 BCM56470 SWITCH ASIC + b471 BCM56471 SWITCH ASIC + b472 BCM56472 SWITCH ASIC + b800 BCM56800 StrataXGS 10GE Switch Controller + b842 BCM56842 Trident 10GE Switch Controller + b850 BCM56850 Switch ASIC [Trident2] + b880 BCM56880 Switch ASIC + b960 BCM56960 Switch ASIC [Tomahawk] + b990 BCM56990 Switch ASIC [Tomahawk4] +# Switch ASIC + b991 Tomahawk4 + b992 BCM56992 [Tomahawk4] + b993 BCM56993 Switch ASIC [Tomahawk4] + b995 BCM56995 Switch ASIC [Tomahawk4] + b996 BCM56996 106G Switch ASIC [Tomahawk4G] + b998 BCM56998 106G Switch ASIC [Tomahawk4GT] + b999 BCM56999 106G Switch ASIC [Tomahawk4D] + c909 BCM78909 Switch ASIC + d802 BCM58802 Stingray 50Gb Ethernet SoC + 14e4 8021 Stingray Dual-Port 25Gb Ethernet PCIe SmartNIC w16GB DRAM (Part No BCM958802A8046C) + 14e4 8023 PS410T-H04 NetXtreme-S 4x10G 10GBaseT PCIe SmartNIC + 14e4 8024 Stingray Dual-Port 25Gb Ethernet PCIe SmartNIC w4GB DRAM (Part No BCM958802A8044C) + 14e4 8028 Stingray Dual-Port 25Gb Ethernet PCIe SmartNIC w8GB DRAM (Part No BCM958802A8048C) + 1bb0 0021 HPE SimpliVity Accelerator + d804 BCM58804 Stingray 100Gb Ethernet SoC + f800 BCM78800 Switch ASIC [Trident5-X12] + f900 BCM78900 Switch ASIC [Tomahawk5] + f902 BCM78902 Switch ASIC [Tomahawk5T] + f903 BCM78903 Switch ASIC [Tomahawk5] + f905 BCM78905 Switch ASIC [Tomahawk5+] + f910 BCM78910 Switch ASIC [Tomahawk6] + f914 BCM78914 Switch ASIC [Tomahawk6] + f917 BCM78917 Switch ASIC [Tomahawk6] +14e5 Pixelfusion Ltd +14e6 SHINING Technology Inc +14e7 3CX +14e8 RAYCER Inc +14e9 GARNETS System CO Ltd +14ea Planex Communications, Inc + ab06 FNW-3603-TX CardBus Fast Ethernet + ab07 RTL81xx RealTek Ethernet + ab08 FNW-3602-TX CardBus Fast Ethernet +14eb SEIKO EPSON Corp +# nee ACQIRIS +14ec Agilent Technologies + 0000 Aciris Digitizer (malformed ID) +14ed DATAKINETICS Ltd +14ee MASPRO KENKOH Corp +14ef CARRY Computer ENG. CO Ltd +14f0 CANON RESEACH CENTRE FRANCE +14f1 Conexant Systems, Inc. + 1002 HCF 56k Modem + 1003 HCF 56k Modem + 1004 HCF 56k Modem + 1005 HCF 56k Modem + 1006 HCF 56k Modem + 1022 HCF 56k Modem + 1023 HCF 56k Modem + 1024 HCF 56k Modem + 1025 HCF 56k Modem + 1026 HCF 56k Modem + 1032 HCF 56k Modem + 1033 HCF 56k Data/Fax Modem + 1033 8077 NEC + 122d 4027 Dell Zeus - MDP3880-W(B) Data Fax Modem + 122d 4030 Dell Mercury - MDP3880-U(B) Data Fax Modem + 122d 4034 Dell Thor - MDP3880-W(U) Data Fax Modem + 13e0 020d Dell Copper + 13e0 020e Dell Silver + 13e0 0261 IBM + 13e0 0290 Compaq Goldwing + 13e0 02a0 IBM + 13e0 02b0 IBM + 13e0 02c0 Compaq Scooter + 13e0 02d0 IBM + 144f 1500 IBM P85-DF (1) + 144f 1501 IBM P85-DF (2) + 144f 150a IBM P85-DF (3) + 144f 150b IBM P85-DF Low Profile (1) + 144f 1510 IBM P85-DF Low Profile (2) + 1034 HCF 56k Data/Fax/Voice Modem + 1035 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem + 10cf 1098 Fujitsu P85-DFSV + 1036 HCF 56k Data/Fax/Voice/Spkp Modem + 104d 8067 HCF 56k Modem + 122d 4029 MDP3880SP-W + 122d 4031 MDP3880SP-U + 13e0 0209 Dell Titanium + 13e0 020a Dell Graphite + 13e0 0260 Gateway Red Owl + 13e0 0270 Gateway White Horse + 1052 HCF 56k Data/Fax Modem (Worldwide) + 1053 HCF 56k Data/Fax Modem (Worldwide) + 1054 HCF 56k Data/Fax/Voice Modem (Worldwide) + 1055 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Worldwide) + 1056 HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide) + 122d 4035 MDP3900V-W + 1057 HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide) + 1059 HCF 56k Data/Fax/Voice Modem (Worldwide) + 1063 HCF 56k Data/Fax Modem + 1064 HCF 56k Data/Fax/Voice Modem + 1065 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem + 1066 HCF 56k Data/Fax/Voice/Spkp Modem + 122d 4033 Dell Athena - MDP3900V-U + 1085 HCF V90 56k Data/Fax/Voice/Spkp PCI Modem + 10b6 CX06834-11 HCF V.92 56k Data/Fax/Voice/Spkp Modem + 1433 HCF 56k Data/Fax Modem + 1434 HCF 56k Data/Fax/Voice Modem + 1435 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem + 1436 HCF 56k Data/Fax Modem + 1453 HCF 56k Data/Fax Modem + 13e0 0240 IBM + 13e0 0250 IBM + 144f 1502 IBM P95-DF (1) + 144f 1503 IBM P95-DF (2) + 1454 HCF 56k Data/Fax/Voice Modem + 1455 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem + 1456 HCF 56k Data/Fax/Voice/Spkp Modem + 122d 4035 Dell Europa - MDP3900V-W + 122d 4302 Dell MP3930V-W(C) MiniPCI + 1610 ADSL AccessRunner PCI Arbitration Device + 1611 AccessRunner PCI ADSL Interface Device + 1620 AccessRunner V2 PCI ADSL Arbitration Device + 1621 AccessRunner V2 PCI ADSL Interface Device + 1622 AccessRunner V2 PCI ADSL Yukon WAN Adapter + 1803 HCF 56k Modem + 0e11 0023 623-LAN Grizzly + 0e11 0043 623-LAN Yogi + 1811 MiniPCI Network Adapter + 1815 HCF 56k Modem + 0e11 0022 Grizzly + 0e11 0042 Yogi +# Integrated in CX86111/CX86113 processors + 1830 CX861xx Integrated Host Bridge + 2003 HSF 56k Data/Fax Modem + 2004 HSF 56k Data/Fax/Voice Modem + 2005 HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem + 2006 HSF 56k Data/Fax/Voice/Spkp Modem + 2013 HSF 56k Data/Fax Modem + 0e11 b195 Bear + 0e11 b196 Seminole 1 + 0e11 b1be Seminole 2 + 1025 8013 Acer + 1033 809d NEC + 1033 80bc NEC + 155d 6793 HP + 155d 8850 E Machines + 2014 HSF 56k Data/Fax/Voice Modem + 2015 HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem + 2016 HSF 56k Data/Fax/Voice/Spkp Modem + 2043 HSF 56k Data/Fax Modem (WorldW SmartDAA) + 2044 HSF 56k Data/Fax/Voice Modem (WorldW SmartDAA) + 2045 HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (WorldW SmartDAA) + 14f1 2045 Generic SoftK56 + 2046 HSF 56k Data/Fax/Voice/Spkp Modem (WorldW SmartDAA) + 2063 HSF 56k Data/Fax Modem (SmartDAA) + 2064 HSF 56k Data/Fax/Voice Modem (SmartDAA) + 2065 HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (SmartDAA) + 2066 HSF 56k Data/Fax/Voice/Spkp Modem (SmartDAA) + 2093 HSF 56k Modem + 155d 2f07 Legend + 2143 HSF 56k Data/Fax/Cell Modem (Mob WorldW SmartDAA) + 2144 HSF 56k Data/Fax/Voice/Cell Modem (Mob WorldW SmartDAA) + 2145 HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob WorldW SmartDAA) + 2146 HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob WorldW SmartDAA) + 2163 HSF 56k Data/Fax/Cell Modem (Mob SmartDAA) + 2164 HSF 56k Data/Fax/Voice/Cell Modem (Mob SmartDAA) + 2165 HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob SmartDAA) + 2166 HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob SmartDAA) + 2343 HSF 56k Data/Fax CardBus Modem (Mob WorldW SmartDAA) + 2344 HSF 56k Data/Fax/Voice CardBus Modem (Mob WorldW SmartDAA) + 2345 HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob WorldW SmartDAA) + 2346 HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob WorldW SmartDAA) + 2363 HSF 56k Data/Fax CardBus Modem (Mob SmartDAA) + 2364 HSF 56k Data/Fax/Voice CardBus Modem (Mob SmartDAA) + 2365 HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob SmartDAA) + 2366 HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob SmartDAA) + 2443 HSF 56k Data/Fax Modem (Mob WorldW SmartDAA) + 104d 8075 Modem + 104d 8083 Modem + 104d 8097 Modem + 2444 HSF 56k Data/Fax/Voice Modem (Mob WorldW SmartDAA) + 2445 HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob WorldW SmartDAA) + 2446 HSF 56k Data/Fax/Voice/Spkp Modem (Mob WorldW SmartDAA) + 2463 HSF 56k Data/Fax Modem (Mob SmartDAA) + 2464 HSF 56k Data/Fax/Voice Modem (Mob SmartDAA) + 2465 HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob SmartDAA) + 2466 HSF 56k Data/Fax/Voice/Spkp Modem (Mob SmartDAA) + 2702 HSFi modem RD01-D270 + 1028 8d88 SmartHSFi V92 56K PCI Modem + 2f00 HSF 56k HSFi Modem + 13e0 8d84 IBM HSFi V.90 + 13e0 8d85 Compaq Stinger + 14f1 2004 Dynalink 56PMi + 2f02 HSF 56k HSFi Data/Fax + 2f11 HSF 56k HSFi Modem + 2f20 HSF 56k Data/Fax Modem + 14f1 200c Soft Data Fax Modem with SmartCP + 14f1 200f Dimension 3000 + 2f30 SoftV92 SpeakerPhone SoftRing Modem with SmartSP + 14f1 2014 Devolo MikroLink 56K Modem PCI + 2f50 Conexant SoftK56 Data/Fax Modem + 510f Conexant CX 20751/20752 + 5b7a CX23418 Single-Chip MPEG-2 Encoder with Integrated Analog Video/Broadcast Audio Decoder + 0070 7444 WinTV HVR-1600 + 107d 6f34 WinFast DVR3100 H + 5854 3343 GoTView PCI DVD3 Hybrid + 8200 CX25850 + 8234 RS8234 ATM SAR Controller [ServiceSAR Plus] + 8800 CX23880/1/2/3 PCI Video and Audio Decoder + 0070 2801 Hauppauge WinTV 28xxx (Roslyn) models + 0070 3400 WinTV 34604 + 0070 3401 Hauppauge WinTV 34xxx models + 0070 6902 WinTV HVR-4000-HD + 0070 7801 WinTV HVR-1800 MCE + 0070 9001 Nova-T DVB-T + 0070 9002 Nova-T DVB-T Model 909 + 0070 9200 Nova-SE2 DVB-S + 0070 9202 Nova-S-Plus DVB-S + 0070 9402 WinTV-HVR1100 DVB-T/Hybrid + 0070 9600 WinTV 88x Video + 0070 9802 WinTV-HVR1100 DVB-T/Hybrid (Low Profile) + 1002 00f8 ATI TV Wonder Pro + 1002 00f9 ATI TV Wonder + 1002 a101 HDTV Wonder + 1043 4823 PVR-416 + 107d 6611 Winfast TV 2000XP Expert + 107d 6613 Leadtek Winfast 2000XP Expert + 107d 6620 Leadtek Winfast DV2000 + 107d 663c Leadtek PVR 2000 + 107d 665f WinFast DTV1000-T + 10fc d003 IODATA GV-VCP3/PCI + 10fc d035 IODATA GV/BCTV7E + 1421 0334 Instant TV DVB-T PCI + 1461 000a AVerTV 303 (M126) + 1461 000b AverTV Studio 303 (M126) + 1461 8011 UltraTV Media Center PCI 550 + 1462 8606 MSI TV-@nywhere Master + 14c7 0107 GDI Black Gold + 14f1 0187 Conexant DVB-T reference design + 14f1 0342 Digital-Logic MICROSPACE Entertainment Center (MEC) + 153b 1166 Cinergy 1400 DVB-T + 1540 2580 Provideo PV259 + 1554 4811 PixelView + 1554 4813 Club 3D ZAP1000 MCE Edition + 17de 08a1 KWorld/VStream XPert DVB-T with cx22702 + 17de 08a6 KWorld/VStream XPert DVB-T + 17de 08b2 KWorld DVB-S 100 + 17de a8a6 digitalnow DNTV Live! DVB-T + 1805 0111 PICOLO Jet-X Video + 1805 0112 PICOLO Jet-X Video + 1805 0113 PICOLO Jet-X Video + 1805 0114 PICOLO Jet-X Video + 1822 0025 digitalnow DNTV Live! DVB-T Pro + 185b e000 VideoMate X500 + 18ac d500 FusionHDTV 5 Gold + 18ac d810 FusionHDTV 3 Gold-Q + 18ac d820 FusionHDTV 3 Gold-T + 18ac db00 FusionHDTV DVB-T1 + 18ac db11 FusionHDTV DVB-T Plus + 18ac db50 FusionHDTV DVB-T Dual Digital + 5654 2388 GoTView PCI Hybrid TV Tuner Card + 7063 3000 pcHDTV HD3000 HDTV + 7063 5500 pcHDTV HD-5500 + 8801 CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] + 0070 2801 Hauppauge WinTV 28xxx (Roslyn) models + 185b e000 VideoMate X500 + 5654 2388 GoTView PCI Hybrid Audio AVStream Device + 7063 5500 pcHDTV HD-5500 + 8802 CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] + 0070 2801 Hauppauge WinTV 28xxx (Roslyn) models + 0070 6902 WinTV HVR-4000-HD + 0070 9002 Nova-T DVB-T Model 909 + 0070 9402 WinTV-HVR1100 DVB-T/Hybrid + 0070 9600 WinTV 88x MPEG Encoder + 1043 4823 PVR-416 + 107d 663c Leadtek PVR 2000 + 107d 665f WinFast DTV1000-T + 14f1 0187 Conexant DVB-T reference design + 17de 08a1 XPert DVB-T PCI BDA DVBT 23880 Transport Stream Capture + 17de 08a6 KWorld/VStream XPert DVB-T + 1805 0111 PICOLO Jet-X Jpeg + 1805 0112 PICOLO Jet-X Jpeg + 1805 0113 PICOLO Jet-X Jpeg + 1805 0114 PICOLO Jet-X Jpeg + 18ac d500 DViCO FusionHDTV5 Gold + 18ac d810 DViCO FusionHDTV3 Gold-Q + 18ac d820 DViCO FusionHDTV3 Gold-T + 18ac db00 DVICO FusionHDTV DVB-T1 + 18ac db10 DVICO FusionHDTV DVB-T Plus + 5654 2388 GoTView PCI Hybrid TS Capture Device + 7063 3000 pcHDTV HD3000 HDTV + 7063 5500 pcHDTV HD-5500 + 8804 CX23880/1/2/3 PCI Video and Audio Decoder [IR Port] + 0070 6902 WinTV HVR-4000-HD + 0070 9002 Nova-T DVB-T Model 909 + 0070 9402 WinTV-HVR1100 DVB-T/Hybrid + 1805 0111 PICOLO Jet-X Control + 1805 0112 PICOLO Jet-X Control + 1805 0113 PICOLO Jet-X Control + 1805 0114 PICOLO Jet-X Control + 7063 5500 pcHDTV HD-5500 + 8811 CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] + 0070 3400 WinTV 34604 + 0070 3401 Hauppauge WinTV 34xxx models + 0070 6902 WinTV HVR-4000-HD + 0070 9402 WinTV-HVR1100 DVB-T/Hybrid + 0070 9600 WinTV 88x Audio + 1462 8606 MSI TV-@nywhere Master + 18ac d500 DViCO FusionHDTV5 Gold + 18ac d810 DViCO FusionHDTV3 Gold-Q + 18ac d820 DViCO FusionHDTV3 Gold-T + 18ac db00 DVICO FusionHDTV DVB-T1 + 5654 2388 GoTView PCI Hybrid Audio Capture Device + 8852 CX23885 PCI Video and Audio Decoder + 0070 8010 WinTV HVR-1400 ExpressCard + 0070 f038 WinTV HVR-5525 + 107d 6f22 WinFast PxTV1200 + 12ab d585 PE988J Hybrid ATSC/QAM PCI-E AVS Video Capture (SoftEncoder) + 13c2 3013 TT-budget CT2-4500 CI + 1461 c039 AVerTV Hybrid Express (A577) + 153b 117e Cinergy T PCIe Dual + 18ac db78 FusionHDTV DVB-T Dual Express + 4254 0950 S950 + 4254 0952 S952 + 4254 0982 T982 + 4254 9580 T9580 + 4254 980c T980C + 8880 CX23887/8 PCIe Broadcast Audio and Video Decoder with 3D Comb + 0070 2259 WinTV HVR-1250 + 0070 6a18 WinTV-quadHD + 0070 c108 WinTV-HVR-4400-HD model 1278 + 1461 3100 CE310B SD PCIe Video Capture Card + 5654 2389 GoTView X5 DVD Hybrid PCI-E + 5654 2390 GoTView X5 3D HYBRID PCI-E +14f2 MOBILITY Electronics + 0120 EV1000 bridge + 0121 EV1000 Parallel port + 0122 EV1000 Serial port + 0123 EV1000 Keyboard controller + 0124 EV1000 Mouse controller +14f3 BroadLogic + 2030 2030 DVB-S Satellite Receiver + 2035 2035 DVB-S Satellite Receiver + 2050 2050 DVB-T Terrestrial (Cable) Receiver + 2060 2060 ATSC Terrestrial (Cable) Receiver +14f4 TOKYO Electronic Industry CO Ltd +14f5 SOPAC Ltd +14f6 COYOTE Technologies LLC +14f7 WOLF Technology Inc +14f8 AUDIOCODES Inc + 2077 TP-240 dual span E1 VoIP PCI card +14f9 AG COMMUNICATIONS +14fa WANDEL & GOLTERMANN +14fb TRANSAS MARINE (UK) Ltd +14fc Quadrics Ltd + 0000 QsNet Elan3 Network Adapter + 0001 QsNetII Elan4 Network Adapter + 0002 QsNetIII Elan5 Network Adapter +14fd JAPAN Computer Industry Inc +14fe ARCHTEK TELECOM Corp +14ff TWINHEAD INTERNATIONAL Corp +1500 DELTA Electronics, Inc + 1360 RTL81xx RealTek Ethernet +1501 BANKSOFT CANADA Ltd +1502 MITSUBISHI ELECTRIC LOGISTICS SUPPORT Co Ltd +1503 KAWASAKI LSI USA Inc +1504 KAISER Electronics +1505 ITA INGENIEURBURO FUR TESTAUFGABEN GmbH +1506 CHAMELEON Systems Inc +# Should be HTEC Ltd, but there are no known HTEC chips and 1507 is already used by mistake by Motorola (see vendor ID 1057). +1507 Motorola ?? / HTEC + 0001 MPC105 [Eagle] + 0002 MPC106 [Grackle] + 0003 MPC8240 [Kahlua] + 0100 MC145575 [HFC-PCI] + 0431 KTI829c 100VG + 4801 Raven + 4802 Falcon + 4803 Hawk + 4806 CPX8216 +1508 HONDA CONNECTORS/MHOTRONICS Inc +1509 FIRST INTERNATIONAL Computer Inc +150a FORVUS RESEARCH Inc +150b YAMASHITA Systems Corp +150c KYOPAL CO Ltd +150d WARPSPPED Inc +150e C-PORT Corp +150f INTEC GmbH +1510 BEHAVIOR TECH Computer Corp +1511 CENTILLIUM Technology Corp +1512 ROSUN Technologies Inc +1513 Raychem +1514 TFL LAN Inc +1515 Advent design +1516 MYSON Technology Inc + 0800 MTD-8xx 100/10M Ethernet PCI Adapter + 0803 SURECOM EP-320X-S 100/10M Ethernet PCI Adapter + 1320 10bd SURECOM EP-320X-S 100/10M Ethernet PCI Adapter + 0891 MTD-8xx 100/10M Ethernet PCI Adapter +1517 ECHOTEK Corp +# old ID, now 1059 +1518 Kontron +1519 TELEFON AKTIEBOLAGET LM Ericsson +151a Globetek + 1002 PCI-1002 + 1004 PCI-1004 + 1008 PCI-1008 +151b COMBOX Ltd +151c DIGITAL AUDIO LABS Inc + 0003 Prodif T 2496 + 4000 Prodif 88 +151d Fujitsu Computer Products Of America +151e MATRIX Corp +151f TOPIC SEMICONDUCTOR Corp + 0000 TP560 Data/Fax/Voice 56k modem +1520 CHAPLET System Inc +1521 BELL Corp +1522 MainPine Ltd + 0100 PCI <-> IOBus Bridge + 1522 0200 RockForceDUO 2 Port V.92/V.44 Data/Fax/Voice Modem + 1522 0300 RockForceQUATRO 4 Port V.92/V.44 Data/Fax/Voice Modem + 1522 0400 RockForceDUO+ 2 Port V.92/V.44 Data/Fax/Voice Modem + 1522 0500 RockForceQUATRO+ 4 Port V.92/V.44 Data/Fax/Voice Modem + 1522 0600 RockForce+ 2 Port V.90 Data/Fax/Voice Modem + 1522 0700 RockForce+ 4 Port V.90 Data/Fax/Voice Modem + 1522 0800 RockForceOCTO+ 8 Port V.92/V.44 Data/Fax/Voice Modem + 1522 0c00 RockForceDUO+ 2 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem + 1522 0d00 RockForceQUATRO+ 4 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem + 1522 1d00 RockForceOCTO+ 8 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem + 1522 2000 RockForceD1 1 Port V.90 Data Modem + 1522 2100 RockForceF1 1 Port V.34 Super-G3 Fax Modem + 1522 2200 RockForceD2 2 Port V.90 Data Modem + 1522 2300 RockForceF2 2 Port V.34 Super-G3 Fax Modem + 1522 2400 RockForceD4 4 Port V.90 Data Modem + 1522 2500 RockForceF4 4 Port V.34 Super-G3 Fax Modem + 1522 2600 RockForceD8 8 Port V.90 Data Modem + 1522 2700 RockForceF8 8 Port V.34 Super-G3 Fax Modem + 1522 3000 IQ Express D1 - 1 Port V.92 Data Modem + 1522 3100 IQ Express F1 - 1 Port V.34 Super-G3 Fax Modem + 1522 3200 IQ Express D2 - 2 Port V.92 Data Modem + 1522 3300 IQ Express F2 - 2 Port V.34 Super-G3 Fax Modem + 1522 3400 IQ Express D4 - 4 Port V.92 Data Modem + 1522 3500 IQ Express F4 - 4 Port V.34 Super-G3 Fax Modem + 1522 3c00 IQ Express D8 - 8 Port V.92 Data Modem + 1522 3d00 IQ Express F8 - 8 Port V.34 Super-G3 Fax Modem + 4000 PCI Express UART + 1522 4001 IQ Express 1-port V.34 Super-G3 Fax + 1522 4002 IQ Express 2-port V.34 Super-G3 Fax + 1522 4004 IQ Express 4-port V.34 Super-G3 Fax + 1522 4008 IQ Express 8-port V.34 Super-G3 Fax + 1522 4100 IQ Express SideBand +1523 MUSIC Semiconductors +1524 ENE Technology Inc + 0510 CB710 Memory Card Reader Controller + 103c 006a NX9500 + 0520 FLASH memory: ENE Technology Inc: + 0530 ENE PCI Memory Stick Card Reader Controller + 0550 ENE PCI Secure Digital Card Reader Controller + 0551 SD/MMC Card Reader Controller + 0610 PCI Smart Card Reader Controller + 0720 Memory Stick Card Reader Controller + 0730 ENE PCI Memory Stick Card Reader Controller + 0750 ENE PCI SmartMedia / xD Card Reader Controller + 0751 ENE PCI Secure Digital / MMC Card Reader Controller + 1211 CB1211 Cardbus Controller + 1225 CB1225 Cardbus Controller + 1410 CB1410 Cardbus Controller + 1025 003c CL50 motherboard + 1025 005a TravelMate 290 + 103c 30d5 530 Laptop + 1411 CB-710/2/4 Cardbus Controller + 103c 006a NX9500 + 1412 CB-712/4 Cardbus Controller + 1420 CB1420 Cardbus Controller + 1421 CB-720/2/4 Cardbus Controller + 1422 CB-722/4 Cardbus Controller +1525 IMPACT Technologies +1526 ISS, Inc +1527 SOLECTRON +1528 ACKSYS +# nee American Microsystems Inc +1529 ON Semiconductor +152a QUICKTURN DESIGN Systems +152b FLYTECH Technology CO Ltd +152c MACRAIGOR Systems LLC +152d QUANTA Computer Inc +152e MELEC Inc +152f PHILIPS - CRYPTO +1530 ACQIS Technology Inc +1531 CHRYON Corp +1532 ECHELON Corp + 0020 LonWorks PCLTA-20 PCI LonTalk Adapter +1533 BALTIMORE +1534 ROAD Corp +1535 EVERGREEN Technologies Inc +1536 ACTIS Computer +1537 DATALEX COMMUNCATIONS +1538 ARALION Inc + 0303 ARS106S Ultra ATA 133/100/66 Host Controller +1539 ATELIER INFORMATIQUES et ELECTRONIQUE ETUDES S.A. +153a ONO SOKKI +153b TERRATEC Electronic GmbH + 1144 Aureon 5.1 +# Terratec seems to use several IDs for the same card. + 1147 Aureon 5.1 Sky + 1158 Philips Semiconductors SAA7134 (rev 01) [Terratec Cinergy 600 TV] +153c ANTAL Electronic +153d FILANET Corp +153e TECHWELL Inc +153f MIPS Technologies, Inc. + 0001 SOC-it 101 System Controller +1540 PROVIDEO MULTIMEDIA Co Ltd +1541 MACHONE Communications +# nee VIVID Technology Inc. +1542 Concurrent Real-Time + 9260 RCIM-II Real-Time Clock & Interrupt Module + 9271 RCIM-III Real-Time Clock & Interrupt Module (PCIe) + 9272 Pulse Width Modulator Card + 9273 RCIM-IV Real-Time Clock & Interrupt Module (PCIe) + 9277 5 Volt Delta Sigma Converter Card + 9278 10 Volt Delta Sigma Converter Card + 9287 Analog Output Card + 9290 FPGA Card + 9300 Universal Exhaust Gas Oxygen Sensor Simulator + 9310 Digital Programmable Resistor + 9320 Arria 10 FPGA Card + 9350 Analog Input Card +1543 SILICON Laboratories + 3052 Intel 537 [Winmodem] + 4c22 Si3036 MC'97 DAA +1544 DCM DATA Systems +1545 VISIONTEK +1546 IOI Technology Corp +1547 MITUTOYO Corp +1548 JET PROPULSION Laboratory +1549 INTERCONNECT Systems Solutions +154a MAX Technologies Inc +154b COMPUTEX Co Ltd +154c VISUAL Technology Inc +154d PAN INTERNATIONAL Industrial Corp +154e SERVOTEST Ltd +154f STRATABEAM Technology +1550 OPEN NETWORK Co Ltd +1551 SMART Electronic DEVELOPMENT GmBH +1552 RACAL AIRTECH Ltd +1553 CHICONY Electronics Co Ltd +1554 PROLINK Microsystems Corp +1555 GESYTEC GmBH +1556 PLDA + 1100 PCI Express Core Reference Design + 110f PCI Express Core Reference Design Virtual Function + 1110 XpressRich Reference Design + 1111 XpressRich-AXI Ref Design + 1112 QuickPCIe + 1113 XpressSwitch + 1114 Inspector + 1115 XpressLINK Ref Design + 1116 XpressLINK-SOC Ref Design + be00 PCI Express Bridge +1557 MEDIASTAR Co Ltd +1558 CLEVO/KAPOK Computer + 9602 RS780/RS880 PCI to PCI bridge (int gfx) +1559 SI LOGIC Ltd +155a INNOMEDIA Inc +155b PROTAC INTERNATIONAL Corp +155c Cemax-Icon Inc +155d Mac System Co Ltd +155e LP Elektronik GmbH +155f Perle Systems Ltd +1560 Terayon Communications Systems +1561 Viewgraphics Inc +1562 Symbol Technologies +1563 A-Trend Technology Co Ltd +1564 Yamakatsu Electronics Industry Co Ltd +1565 Biostar Microtech Int'l Corp +1566 Ardent Technologies Inc +1567 Jungsoft +1568 DDK Electronics Inc +1569 Palit Microsystems Inc. +156a Avtec Systems +156b 2wire Inc +156c Vidac Electronics GmbH +156d Alpha-Top Corp +156e Alfa Inc +156f M-Systems Flash Disk Pioneers Ltd +1570 Teledyne Lecroy +1571 Contemporary Controls + a001 CCSI PCI20-485 ARCnet + a002 CCSI PCI20-485D ARCnet + a003 CCSI PCI20-485X ARCnet + a004 CCSI PCI20-CXB ARCnet + a005 CCSI PCI20-CXS ARCnet + a006 CCSI PCI20-FOG-SMA ARCnet + a007 CCSI PCI20-FOG-ST ARCnet + a008 CCSI PCI20-TB5 ARCnet + a009 CCSI PCI20-5-485 5Mbit ARCnet + a00a CCSI PCI20-5-485D 5Mbit ARCnet + a00b CCSI PCI20-5-485X 5Mbit ARCnet + a00c CCSI PCI20-5-FOG-ST 5Mbit ARCnet + a00d CCSI PCI20-5-FOG-SMA 5Mbit ARCnet + a201 CCSI PCI22-485 10Mbit ARCnet + a202 CCSI PCI22-485D 10Mbit ARCnet + a203 CCSI PCI22-485X 10Mbit ARCnet + a204 CCSI PCI22-CHB 10Mbit ARCnet + a205 CCSI PCI22-FOG_ST 10Mbit ARCnet + a206 CCSI PCI22-THB 10Mbit ARCnet +1572 Otis Elevator Company +1573 Lattice - Vantis +1574 Fairchild Semiconductor +1575 Voltaire Advanced Data Security Ltd +1576 Viewcast COM +1578 HITT + 4d34 VPMK4 [Video Processor Mk IV] + 5615 VPMK3 [Video Processor Mk III] +1579 Dual Technology Corp +157a Japan Elecronics Ind Inc +157b Star Multimedia Corp +157c Eurosoft (UK) + 8001 Fix2000 PCI Y2K Compliance Card +157d Gemflex Networks +157e Transition Networks +157f PX Instruments Technology Ltd +1580 Primex Aerospace Co +1581 SEH Computertechnik GmbH +1582 Cytec Corp +1583 Inet Technologies Inc +1584 Uniwill Computer Corp +1585 Logitron +1586 Lancast Inc +1587 Konica Corp +1588 Solidum Systems Corp +1589 Atlantek Microsystems Pty Ltd + 0008 Leutron Vision PicPortExpress CL + 0009 Leutron Vision PicPortExpress CL Stereo +158a Digalog Systems Inc +158b Allied Data Technologies +158c Hitachi Semiconductor & Devices Sales Co Ltd +158d Point Multimedia Systems +158e Lara Technology Inc +158f Ditect Coop +# formerly 3PAR Inc. +1590 Hewlett Packard Enterprise + 0001 Eagle Cluster Manager + 0002 Osprey Cluster Manager + 0003 Harrier Cluster Manager + 0371 Cassini 2 [Slingshot 400Gb] + 0372 Cassini 2 [Slingshot 400Gb] SR-IOV VF + a01d FC044X Fibre Channel HBA +1591 ARN +1592 Syba Tech Ltd + 0781 Multi-IO Card + 0782 Parallel Port Card 2xEPP + 0783 Multi-IO Card + 0785 Multi-IO Card + 0786 Multi-IO Card + 0787 Multi-IO Card + 0788 Multi-IO Card + 078a Multi-IO Card +1593 Bops Inc +1594 Netgame Ltd +1595 Diva Systems Corp +1596 Folsom Research Inc +1597 Memec Design Services +1598 Granite Microsystems +1599 Delta Electronics Inc +159a General Instrument +159b Faraday Technology Corp + 4321 StorLink SL3516 (Gemini) Host Bridge +159c Stratus Computer Systems +159d Ningbo Harrison Electronics Co Ltd +159e A-Max Technology Co Ltd +159f Galea Network Security +15a0 Compumaster SRL +15a1 Geocast Network Systems +15a2 Catalyst Enterprises Inc + 0001 TA700 PCI Bus Analyzer/Exerciser +15a3 Italtel +15a4 X-Net OY +15a5 Toyota Macs Inc +15a6 Sunlight Ultrasound Technologies Ltd +15a7 SSE Telecom Inc +15a8 Shanghai Communications Technologies Center +15aa Moreton Bay +15ab Bluesteel Networks Inc +15ac North Atlantic Instruments + 6893 3U OpenVPX Multi-function I/O Board [Model 68C3] +15ad VMware + 0405 SVGA II Adapter + 0710 SVGA Adapter + 0720 VMXNET Ethernet Controller + 0740 Virtual Machine Communication Interface + 0770 USB2 EHCI Controller + 0774 USB1.1 UHCI Controller + 0778 USB3 xHCI 0.96 Controller + 0779 USB3 xHCI 1.0 Controller + 0790 PCI bridge + 07a0 PCI Express Root Port + 07b0 VMXNET3 Ethernet Controller + 07c0 PVSCSI SCSI Controller + 07e0 SATA AHCI controller + 07f0 NVMe SSD Controller + 0801 Virtual Machine Interface + 15ad 0800 Hypervisor ROM Interface + 0820 Paravirtual RDMA controller + 1977 HD Audio Controller +15ae Amersham Pharmacia Biotech +15b0 Zoltrix International Ltd +15b1 Source Technology Inc +15b2 Mosaid Technologies Inc +# now NVIDIA +15b3 Mellanox Technologies + 0191 MT25408 [ConnectX IB Flash Recovery] + 01f6 MT27500 Family [ConnectX-3 Flash Recovery] + 01f8 MT27520 Family [ConnectX-3 Pro Flash Recovery] + 01ff MT27600 Family [Connect-IB Flash Recovery] + 0209 MT27700 Family [ConnectX-4 Flash Recovery] + 020b MT27710 Family [ConnectX-4 Lx Flash Recovery] + 020d MT28800 Family [ConnectX-5 Flash Recovery] + 020f MT28908A0 Family [ConnectX-6 Flash Recovery] + 0210 MT28908A0 Family [ConnectX-6 Secure Flash Recovery] + 0211 MT416842 Family [BlueField SoC Flash Recovery] + 0212 MT2892 Family [ConnectX-6 Dx Flash Recovery] + 0213 MT2892 Family [ConnectX-6 Dx Secure Flash Recovery] + 0214 MT42822 Family [BlueField-2 SoC Flash Recovery] + 0215 MT42822 Family [BlueField-2 Secure Flash Recovery] + 0216 MT2894 Family [ConnectX-6 Lx Flash Recovery] + 0217 MT2894 Family [ConnectX-6 Lx Secure Flash Recovery] + 0218 MT2910 Family [ConnectX-7 Flash Recovery] + 0219 MT2910 Family [ConnectX-7 Secure Flash Recovery] + 021a MT43162 Family [BlueField-3 Lx SoC Flash Recovery] + 021b MT43162 Family [BlueField-3 Lx Secure Flash Recovery] + 021c MT43244 Family [BlueField-3 SoC Flash Recovery] + 021d MT43244 Family [BlueField-3 Secure Flash Recovery] + 021e CX8 Family [ConnectX-8 Flash Recovery] + 021f CX8 Family [ConnectX-8 Secure Flash Recovery] + 0220 BF4 Family Flash Recovery [BlueField-4 SoC Flash Recovery] + 0221 BF4 Family Secure Flash Recovery [BlueField-4 Secure Flash Recovery] + 0222 CX8 PCIe Switch Family [ConnectX-8 PCIe Switch Flash Recovery] + 0223 CX8 PCIe Switch Family [ConnectX-8 PCIe Switch Secure Flash Recovery-RMA] + 0224 CX9 Family [ConnectX-9 Flash Recovery] + 0225 CX9 Family [ConnectX-9 Secure Flash Recovery-RMA] + 024e MT53100 [Spectrum-2, Flash recovery mode] + 024f MT53100 [Spectrum-2, Secure Flash recovery mode] + 0250 Spectrum-3, Flash recovery mode + 0251 Spectrum-3, Secure Flash recovery mode + 0252 Amos chiplet + 0253 Amos GearBox Manager + 0254 Spectrum-4, Flash recovery mode + 0255 Spectrum-4 RMA + 0256 Abir GearBox + 0257 Quantum-2 in Flash Recovery Mode + 0258 Quantum-2 RMA + 0259 Abir Chiplet + 025b Quantum-3 in Flash Recovery Mode + 025c Quantum-3 RMA + 025d Quantum-3CPO in Flash Recovery Mode + 025e Quantum-3CPO RMA + 0262 MT27710 [ConnectX-4 Lx Programmable] EN + 0263 MT27710 [ConnectX-4 Lx Programmable Virtual Function] EN + 0264 Innova-2 Flex Burn image + 0270 Spectrum-5 in Flash Recovery Mode + 0271 Spectrum-4L, RMA + 0274 Spectrum-6 in Flash Recovery Mode + 0275 Spectrum-4C RMA + 0277 Spectrum-4TOR RMA + 0278 Quantum-4 in Flash Recovery Mode + 0279 Quantum-4 RMA + 0281 NPS-600 Flash Recovery + 0282 ArcusE Flash recovery + 0283 ArcusE RMA + 0284 Sagitta + 0285 Sagitta RMA + 0286 LibraE Flash Recovery + 0287 LibraE RMA +# Flash recovery + 0288 Arcus2 + 0289 Arcus2 RMA + 1002 MT25400 Family [ConnectX-2 Virtual Function] + 1003 MT27500 Family [ConnectX-3] + 1014 04b5 PCIe3 40GbE RoCE Converged Host Bus Adapter for Power + 103c 1777 InfiniBand FDR/EN 10/40Gb Dual Port 544FLR-QSFP Adapter (Rev Cx) + 103c 17c9 Infiniband QDR/Ethernet 10Gb 2-port 544i Adapter + 103c 18ce InfiniBand QDR/EN 10Gb Dual Port 544M Adapter + 103c 18cf InfiniBand FDR/EN 10/40Gb Dual Port 544M Adapter + 103c 18d6 InfiniBand FDR/EN 10/40Gb Dual Port 544QSFP Adapter + 15b3 0025 ConnectX-3 IB QDR Dual Port Mezzanine Card + 15b3 0026 ConnectX-3 IB FDR Dual Port Mezzanine Card + 15b3 0028 ConnectX-3 VPI Dual QSFP+ Port QDR Infiniband 40Gb/s or 10Gb Ethernet + 15b3 0055 ConnectX-3 10 GbE Single Port SFP+ Adapter + 15b3 0059 ConnectX-3 VPI IB FDR/40 GbE Single Port QSFP+ Mezzanine Card + 15b3 0064 ConnectX-3 EN 10/40 GbE Single Port QSFP+ Adapter (MCX313A-BCBT) + 15b3 0065 ConnectX-3 VPI IB FDR/40 GbE Dual Port QSFP+ Adapter + 15b3 0066 ConnectX-3 IB FDR10 Dual Port Mezzanine Card + 15b3 0067 ConnectX-3 VPI IB FDR/40 GbE Single Port QSFP+ Adapter + 15b3 0071 ConnectX-3 VPI IB FDR/40 GbE Dual Port QSFP+ Mezzanine Card + 15b3 0078 ConnectX-3 10 GbE Dual Port KR Mezzanine Card + 15b3 0079 ConnectX-3 40 GbE Dual Port QSFP+ Adapter + 15b3 0080 ConnectX-3 10 GbE Dual Port SFP+ Adapter + 1004 MT27500/MT27520 Family [ConnectX-3/ConnectX-3 Pro Virtual Function] + 1005 MT27510 Family + 1006 MT27511 Family + 1007 MT27520 Family [ConnectX-3 Pro] + 1014 04eb 2-Port 10GbE NIC and RoCE SR PCIe3 + 103c 22f3 InfiniBand FDR/Ethernet 10Gb/40Gb 2-port 544+QSFP Adapter + 103c 22f4 InfiniBand FDR/Ethernet 10Gb/40Gb 2-port 544+FLR-QSFP Adapter + 103c 801f Ethernet 10G 2-port 546SFP+ Adapter + 117c 0090 FastFrame NQ41 + 117c 0091 FastFrame NQ42 + 117c 0092 FastFrame NQ11 + 117c 0093 FastFrame NQ12 + 15b3 0006 Mellanox Technologies ConnectX-3 Pro Stand-up dual-port 40GbE MCX314A-BCCT + 15b3 000c ConnectX-3 Pro 10 GbE Dual Port SFP+ Adapter revision A1 + 15b3 0078 ConnectX-3 Pro 10 GbE Dual Port KR Mezzanine Card + 15b3 0079 ConnectX-3 Pro 40 GbE Dual Port QSFP+ Adapter + 15b3 0080 ConnectX-3 Pro 10 GbE Dual Port SFP+ Adapter + 193d 1002 520F-B + 1009 MT27530 Family + 100a MT27531 Family + 100b MT27540 Family + 100c MT27541 Family + 100d MT27550 Family + 100e MT27551 Family + 100f MT27560 Family + 1010 MT27561 Family + 1011 MT27600 [Connect-IB] + 1012 MT27600 Family [Connect-IB Virtual Function] + 1013 MT27700 Family [ConnectX-4] + 1014 04f7 PCIe3 2-port 100 GbE (NIC and RoCE) QSFP28 Adapter for Power + 15b3 0003 Mellanox Technologies ConnectX-4 Stand-up single-port 40GbE MCX413A-BCAT + 15b3 0005 Mellanox Technologies ConnectX-4 Stand-up single-port 40GbE MCX415A-BCAT + 15b3 0006 MCX416A-BCAT, ConnectX-4 EN, 40/56GbE 2P, PCIe3.0 x16 + 15b3 0007 ConnectX-4 EN network interface card, 40/56GbE dual-port QSFP28, PCIe3.0 x16, tall bracket + 15b3 0008 ConnectX-4 Stand-up dual-port 100GbE MCX416A-CCAT + 15b3 0033 ConnectX-4 VPI IB EDR/100 GbE Single Port QSFP28 Adapter + 15b3 0034 ConnectX-4 VPI IB EDR/100 GbE Dual Port QSFP28 Adapter + 15b3 0050 ConnectX-4 100 GbE Dual Port QSFP28 Adapter + 1014 MT27700 Family [ConnectX-4 Virtual Function] + 1015 MT27710 Family [ConnectX-4 Lx] + 15b3 0001 ConnectX-4 Lx EN network interface card, 25GbE single-port SFP28, PCIe3.0 x8, tall bracket, ROHS R6 + 15b3 0003 Stand-up ConnectX-4 Lx EN, 25GbE dual-port SFP28, PCIe3.0 x8, MCX4121A-ACAT + 15b3 0004 ConnectX-4 Lx Stand-up dual-port 10GbE MCX4121A-XCAT + 15b3 0005 Mellanox Technologies ConnectX-4 Lx Stand-up single-port 40GbE MCX4131A-BCAT + 15b3 0020 MCX4411A-ACQN, ConnectX-4 Lx EN OCP, 1x25Gb + 15b3 0021 MCX4421A-ACQN ConnectX-4 Lx EN OCP,2x25G + 15b3 0025 ConnectX-4 Lx 25 GbE Dual Port SFP28 rNDC + 193d 100a 620F-B +# NIC-ETH540F-LP-2P SFP+ Ethernet Card + 193d 1023 NIC-ETH540F-LP-2P + 193d 1031 NIC-ETH640i-Mb-2x25G +# NIC-ETH640F-3S-2P OCP3.0 Card + 193d 1083 NIC-ETH640F-3S-2P +# NIC-ETH540F-3S-2P OCP3.0 2x10G Card + 193d 1084 NIC-ETH540F-3S-2P + 1016 MT27710 Family [ConnectX-4 Lx Virtual Function] + 1017 MT27800 Family [ConnectX-5] + 15b3 0006 ConnectX-5 EN network interface card, 100GbE single-port QSFP28, PCIe3.0 x16, tall bracket; MCX515A-CCAT + 15b3 0007 Mellanox ConnectX-5 MCX516A-CCAT + 15b3 0020 ConnectX-5 EN network interface card, 10/25GbE dual-port SFP28, PCIe3.0 x8, tall bracket ; MCX512A-ACAT + 15b3 0068 ConnectX-5 EN network interface card for OCP2.0, Type 1, with host management, 25GbE dual-port SFP28, PCIe3.0 x8, no bracket Halogen free ; MCX542B-ACAN + 193d 1051 NIC-IB1040i-Mb-2P + 1018 MT27800 Family [ConnectX-5 Virtual Function] + 1019 MT28800 Family [ConnectX-5 Ex] + 1014 0617 PCIe4 x16 2-Port EDR IB-only ConnectX-5 CAPI Capable Adapter [IBM EC64] + 1014 0635 PCIe4 2-port 100 GbE RoCE x16 adapter [IBM EC66] + 15b3 0008 ConnectX-5 Ex EN network interface card, 100GbE dual-port QSFP28, PCIe4.0 x16, tall bracket; MCX516A-CDAT + 15b3 0125 Tencent ConnectX-5 EN Ex network interface card for OCP 3.0, with host management, 50GbE Dual-port QSFP28, PCIe4.0 x16, Thumbscrew (pull-tab) bracket + 15b3 0126 PCIe4 x16 2-port EDR 100GbE ConnectX-5 CAPI Capable adapter [IBM AJP1] + 101a MT28800 Family [ConnectX-5 Ex Virtual Function] + 101b MT28908 Family [ConnectX-6] + 101c MT28908 Family [ConnectX-6 Virtual Function] + 101d MT2892 Family [ConnectX-6 Dx] + 101e ConnectX Family mlx5Gen Virtual Function + 101f MT2894 Family [ConnectX-6 Lx] + 193d 1035 NIC-ETH641F-LP-2P SFP28 2x25GbE PCIe Network Adapter + 1020 MT28860 + 1021 MT2910 Family [ConnectX-7] + 1023 CX8 Family [ConnectX-8] + 1024 CX8 PCIe Switch Family [ConnectX-8 PCIe Switch] + 1025 CX9 Family [ConnectX-9] + 1974 MT28800 Family [ConnectX-5 PCIe Bridge] + 1975 MT416842 Family [BlueField SoC PCIe Bridge] + 1976 MT28908 Family [ConnectX-6 PCIe Bridge] + 1977 MT2892 Family [ConnectX-6 Dx PCIe Bridge] + 1978 MT42822 Family [BlueField-2 SoC PCIe Bridge] + 1979 MT2910 Family [ConnectX-7 PCIe Bridge] + 197a MT43162 Family [BlueField-3 Lx SoC PCIe Bridge] + 197b MT43244 Family [BlueField-3 SoC PCIe Bridge] + 197c ConnectX/BlueField Family mlx5Gen PCIe Bridge [PCIe Bridge] + 197d CX8 Family [ConnectX-8 PCIe Bridge] + 197e CX9 Family [ConnectX-9 PCIe Bridge] + 2020 MT2892 Family [ConnectX-6 Dx Emulated PCIe Bridge] + 2021 MT42822 Family [BlueField-2 SoC Emulated PCIe Bridge] + 2023 MT2910 Family [ConnectX-7 Emulated PCIe Bridge] + 2024 MT43244 Family [BlueField-3 SoC Emulated PCIe Bridge] + 2025 ConnectX/BlueField Family mlx5Gen Emulated PCIe Bridge [Emulated PCIe Bridge] + 2100 CX8 Family [CX8 Data Direct Interface] + 4117 MT27712A0-FDCF-AE + 1bd4 0039 SN10XMP2P25 + 1bd4 003a 25G SFP28 SP EO251FM9 Adapter + 1bd4 004d SN10XMP2P25,YZPC-01191-101 + 5274 MT21108 InfiniBridge + 5a44 MT23108 InfiniHost + 5a45 MT23108 [Infinihost HCA Flash Recovery] + 5a46 MT23108 PCI Bridge + 5e8c MT24204 [InfiniHost III Lx HCA] + 5e8d MT25204 [InfiniHost III Lx HCA Flash Recovery] + 6001 NVMe SNAP Controller + 6274 MT25204 [InfiniHost III Lx HCA] + 6278 MT25208 InfiniHost III Ex (Tavor compatibility mode) + 6279 MT25208 [InfiniHost III Ex HCA Flash Recovery] + 6282 MT25208 [InfiniHost III Ex] + 6340 MT25408A0-FCC-SI ConnectX, Dual Port 10Gb/s InfiniBand / 10GigE Adapter IC with PCIe 2.0 x8 2.5GT/s Interface + 634a MT25408A0-FCC-DI ConnectX, Dual Port 20Gb/s InfiniBand / 10GigE Adapter IC with PCIe 2.0 x8 2.5GT/s Interface + 1014 1014 4X InfiniBand DDR Expansion Card (CFFh) for IBM BladeCenter + 6368 MT25448 [ConnectX EN 10GigE, PCIe 2.0 2.5GT/s] + 6372 MT25458 ConnectX EN 10GBASE-T PCIe 2.5 GT/s + 6732 MT25408A0-FCC-GI ConnectX, Dual Port 20Gb/s InfiniBand / 10GigE Adapter IC with PCIe 2.0 x8 5.0GT/s Interface + 673c MT25408A0-FCC-QI ConnectX, Dual Port 40Gb/s InfiniBand / 10GigE Adapter IC with PCIe 2.0 x8 5.0GT/s Interface + 1014 0415 PCIe2 2-port 4X InfiniBand QDR Adapter for Power + 1014 0487 GX++ 1-port 4X IB QDR Adapter for Power 795 + 103c 1782 4X QDR InfiniBand Mezzanine HCA for c-Class BladeSystem + 15b3 0021 HP InfiniBand 4X QDR CX-2 PCI-e G2 Dual Port HCA + 6746 MT26438 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE Virtualization+] + 103c 1781 NC543i 1-port 4x QDR IB/Flex-10 10Gb Adapter + 103c 3349 NC543i 2-port 4xQDR IB/10Gb Adapter + 6750 MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] + 1014 0416 PCIe2 2-Port 10GbE RoCE SFP+ Adapter + 1014 0461 PCIe2 2-Port 10GbE RoCE SR Adapter + 15b3 0018 HP 10 GbE PCI-e G2 Dual-Port NIC (rev C1) +# FC EC26 + 15b3 6572 IBM Flex System EN4132 2-port 10Gb RoCE Adapter + 675a MT26458 ConnectX EN 10GBASE-T PCIe Gen2 5.0 GT/s + 6764 MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s Virtualization+] + 103c 3313 NC542m Dual Port Flex-10 10GbE BLc Adapter + 676e MT26478 [ConnectX EN 40GigE, PCIe 2.0 5GT/s] + 6778 MT26488 [ConnectX VPI PCIe 2.0 5GT/s - IB DDR / 10GigE Virtualization+] + 7101 NPS-400 configuration and management interface + 7102 NPS-400 network interface PF + 7103 NPS-400 network interface VF + 7121 NPS-600 configuration and management interface + 7122 NPS-600 network interface PF + 7123 NPS-600 network interface VF + 8200 Innova-2 Flex Shell Logic + a2d0 MT416842 BlueField SoC Crypto enabled + a2d1 MT416842 BlueField SoC Crypto disabled + a2d2 MT416842 BlueField integrated ConnectX-5 network controller + a2d3 MT416842 BlueField multicore SoC family VF + a2d4 MT42822 BlueField-2 SoC Crypto enabled + a2d5 MT42822 BlueField-2 SoC Crypto disabled + a2d6 MT42822 BlueField-2 integrated ConnectX-6 Dx network controller + a2d7 MT43162 BlueField-3 Lx SoC Crypto enabled + a2d8 MT43162 BlueField-3 Lx SoC Crypto disabled + a2d9 MT43162 BlueField-3 Lx integrated ConnectX-7 network controller + a2da MT43244 BlueField-3 SoC Crypto enabled + a2db MT43244 BlueField-3 SoC Crypto disabled + a2dc MT43244 BlueField-3 integrated ConnectX-7 network controller + a2dd BF4 Family Crypto enabled [BlueField-4 SoC Crypto enabled] + a2de BF4 Family Crypto disabled [BlueField-4 SoC Crypto disabled] + a2df BF4 Family integrated network controller [BlueField-4 integrated network controller] + b200 ArcusE + b201 LibraE + b202 Arcus2 + c2d1 BlueField DPU Family Auxiliary Communication Channel [BlueField Family] + c2d2 MT416842 BlueField SoC management interfac + c2d3 MT42822 BlueField-2 SoC Management Interface + c2d4 MT43162 BlueField-3 Lx SoC Management Interface + c2d5 MT43244 BlueField-3 SoC Management Interface + c2d6 BF4 Family Management Interface [BlueField-4 SoC Management Interface] +# SwitchX-2, 40GbE switch + c738 MT51136 + c739 MT51136 GW + c838 MT52236 + c839 MT52236 router + caf1 ConnectX-4 CAPI Function +# Spectrum, 100GbE Switch + cb84 MT52100 + cf08 Switch-IB2 + cf6c MT53100 [Spectrum-2] + cf70 Spectrum-3 + cf80 Spectrum-4 + cf82 Spectrum-4L + cf84 Spectrum-4C + d2f0 Quantum HDR (200Gbps) switch + d2f2 Quantum-2 NDR (400Gbps) switch + d2f4 Quantum-3 + d2f6 Quantum-3CPO + d2f8 Quantum-4 +15b4 CCI/TRIAD +15b5 Cimetrics Inc +15b6 Texas Memory Systems Inc + 0001 XP15 DSP Accelerator + 0002 XP30 DSP Accelerator + 0003 XP00 Data Acquisition Device + 0004 XP35 DSP Accelerator + 0007 XP100 DSP Accelerator [XP100-T0] + 0008 XP100 DSP Accelerator [XP100-T1] + 0009 XP100 DSP Accelerator [XP100-E0] + 000a XP100 DSP Accelerator [XP100-E1] + 000e XP100 DSP Accelerator [XP100-0] + 000f XP100 DSP Accelerator [XP100-1] + 0010 XP100 DSP Accelerator [XP100-P0] + 0011 XP100 DSP Accelerator [XP100-P1] + 0012 XP100 DSP Accelerator [XP100-P2] + 0013 XP100 DSP Accelerator [XP100-P3] + 0014 RamSan Flash SSD + 0015 ZBox +15b7 Sandisk Corp + 2001 Skyhawk Series NVME SSD + 5001 WD Black NVMe SSD + 5002 SanDisk Extreme Pro / WD Black 2018/SN750/PC SN720 NVMe SSD + 5003 WD Blue SN500 / PC SN520 x2 M.2 2280 NVMe SSD + 5004 PC SN520 x2 M.2 2230 NVMe SSD + 5005 PC SN520 x2 M.2 2242 NVMe SSD + 5006 SanDisk Extreme Pro / WD Black SN750 / PC SN730 / Red SN700 NVMe SSD + 5007 IX SN530 NVMe SSD (DRAM-less) + 5008 PC SN530 NVMe SSD (DRAM-less) + 5009 SanDisk Ultra 3D / WD Blue SN550 NVMe SSD + 15b7 5009 WD Blue SN550 NVMe SSD + 500b PC SN530 NVMe SSD + 1414 500b Xbox Series X + 500d WD Ultrastar DC SN340 NVMe SSD + 5011 WD PC SN810 / Black SN850 NVMe SSD + 5014 WD PC SN540 / Green SN350 NVMe SSD 1 TB (DRAM-less) + 5015 PC SN740 NVMe SSD (DRAM-less) + 5016 WD PC SN740 NVMe SSD 512GB (DRAM-less) + 5017 WD Black SN770 / PC SN740 256GB / PC SN560 (DRAM-less) NVMe SSD + 5019 WD Green SN350 240GB (DRAM-less) / SN560E NVMe SSD + 501a SanDisk Ultra 3D / WD Blue SN570 NVMe SSD (DRAM-less) + 501d WD Blue SN550 NVMe SSD 2TB (DRAM-less) + 501e PC SN735 / WD_BLACK SN750 SE NVMe SSD (DRAM-less) + 501f WD PC SN735 NVMe SSD 512GB (DRAM-less) + 5025 WD Blue SN570 NVMe SSD 2TB + 5026 WD PC SN735 NVMe SSD 1TB (DRAM-less) + 5028 WD CH SN560 NVMe SSD + 5030 WD Black SN850X NVMe SSD + 5034 WD PC SN5000S M.2 2230 NVMe SSD (DRAM-less) + 5036 WD PC SN5000S M.2 2280 NVMe SSD (DRAM-less) + 5041 WD Blue SN580 NVMe SSD (DRAM-less) + 5042 WD Black SN770M NVMe SSD (DRAM-less) +15b8 ADDI-DATA GmbH + 1001 APCI1516 SP controller (16 digi outputs) + 1003 APCI1032 SP controller (32 digi inputs w/ opto coupler) + 1004 APCI2032 SP controller (32 digi outputs) + 1005 APCI2200 SP controller (8/16 digi outputs (relay)) + 1006 APCI1564 SP controller (32 digi ins, 32 digi outs) + 100a APCI1696 SP controller (96 TTL I/Os) + 3001 APCI3501 SP controller (analog output board) + 300f APCI3600 Noise and vibration measurement board + 7001 APCI7420 2-port Serial Controller + 7002 APCI7300 Serial Controller +15b9 Maestro Digital Communications +15ba Impacct Technology Corp +15bb Portwell Inc +15bc Agilent Technologies + 0100 HPFC-5600 Tachyon DX2+ FC + 0103 QX4 PCI Express quad 4-gigabit Fibre Channel controller + 0105 Celerity FC-44XS/FC-42XS/FC-41XS/FC-44ES/FC-42ES/FC-41ES + 117c 0022 Celerity FC-42XS Fibre Channel Adapter + 117c 0025 Celerity FC-44ES Fibre Channel Adapter + 117c 0026 Celerity FC-42ES Fibre Channel Adapter + 0500 Infiniium Memory Controller Interface + 0501 Infiniium Acquisition System Interface + 0507 Infiniium Acquisition System (80000 series) + 0508 Infiniium Acquisition Support + 0b01 82350B PCI GPIB + 1100 E8001-66442 PCI Express CIC + 1218 82351A PCI Express GPIB + 12d6 82350C PCI GPIB + 12d7 82351B PCI Express GPIB + 2922 64 Bit, 133MHz PCI-X Exerciser & Protocol Checker + 2928 64 Bit, 66MHz PCI Exerciser & Analyzer + 2929 64 Bit, 133MHz PCI-X Analyzer & Exerciser +15bd DFI Inc +15be Sola Electronics +15bf High Tech Computer Corp (HTC) +15c0 BVM Ltd +15c1 Quantel +15c2 Newer Technology Inc +15c3 Taiwan Mycomp Co Ltd +15c4 EVSX Inc +15c5 Procomp Informatics Ltd + 8010 1394b - 1394 Firewire 3-Port Host Adapter Card +15c6 Technical University of Budapest +15c7 Tateyama System Laboratory Co Ltd + 0349 Tateyama C-PCI PLC/NC card Rev.01A +15c8 Penta Media Co Ltd +15c9 Serome Technology Inc +15ca Bitboys OY +15cb AG Electronics Ltd +15cc Hotrail Inc +15cd Dreamtech Co Ltd +15ce Genrad Inc +15cf Hilscher Gesellschaft für Systemautomation mbH + 0000 CIFX PCI/PCIe +15d1 Infineon Technologies AG +15d2 FIC (First International Computer Inc) +15d3 NDS Technologies Israel Ltd +15d4 Iwill Corp +15d5 Tatung Co +15d6 Entridia Corp +15d7 Rockwell-Collins Inc +15d8 Cybernetics Technology Co Ltd +15d9 Super Micro Computer Inc + 1b64 SCC-B8SB80-B1 + 1b9d Supermicro AOC-S3816L-L16IR + 1c6e Supermicro AOC-SLG4-2H8M2 +15da Cyberfirm Inc +15db Applied Computing Systems Inc +15dc Litronic Inc + 0001 Argus 300 PCI Cryptography Module +15dd Sigmatel Inc +15de Malleable Technologies Inc +15df Infinilink Corp +15e0 Cacheflow Inc +15e1 Voice Technologies Group Inc +15e2 Quicknet Technologies Inc + 0500 PhoneJack-PCI +15e3 Networth Technologies Inc +15e4 VSN Systemen BV +15e5 Valley technologies Inc +15e6 Agere Inc +15e7 Get Engineering Corp +15e8 National Datacomm Corp + 0130 Wireless PCI Card + 0131 NCP130A2 Wireless NIC +15e9 Pacific Digital Corp + 1841 ADMA-100 DiscStaQ ATA Controller +15ea Tokyo Denshi Sekei K.K. +15eb DResearch Digital Media Systems GmbH +15ec Beckhoff GmbH + 3101 FC3101 Profibus DP 1 Channel PCI + 5102 FC5102 +15ed Macrolink Inc +15ee In Win Development Inc +15ef Intelligent Paradigm Inc +15f0 B-Tree Systems Inc +15f1 Times N Systems Inc +15f2 Diagnostic Instruments Inc +15f3 Digitmedia Corp +15f4 Valuesoft +15f5 Power Micro Research +15f6 Extreme Packet Device Inc +15f7 Banctec +15f8 Koga Electronics Co +15f9 Zenith Electronics Corp +15fa J.P. Axzam Corp +15fb Zilog Inc +15fc Techsan Electronics Co Ltd +15fd N-CUBED.NET +15fe Kinpo Electronics Inc +15ff Fastpoint Technologies Inc +1600 Northrop Grumman - Canada Ltd +1601 Tenta Technology +1602 Prosys-tec Inc +1603 Nokia Wireless Communications +1604 Central System Research Co Ltd +1605 Pairgain Technologies +1606 Europop AG +1607 Lava Semiconductor Manufacturing Inc +1608 Automated Wagering International +1609 Scimetric Instruments Inc +1612 Telesynergy Research Inc. +1618 Stone Ridge Technology + 0001 RDX 11 + 0002 HFT-01 + 0400 FarSync T2P (2 port X.21/V.35/V.24) + 0440 FarSync T4P (4 port X.21/V.35/V.24) + 0610 FarSync T1U (1 port X.21/V.35/V.24) + 0620 FarSync T2U (2 port X.21/V.35/V.24) + 0640 FarSync T4U (4 port X.21/V.35/V.24) + 1610 FarSync TE1 (T1,E1) + 2610 FarSync DSL-S1 (SHDSL) + 3640 FarSync T4E (4-port X.21/V.35/V.24) + 4620 FarSync T2Ue PCI Express (2-port X.21/V.35/V.24) + 4640 FarSync T4Ue PCI Express (4-port X.21/V.35/V.24) +1619 FarSite Communications Ltd + 0400 FarSync T2P (2 port X.21/V.35/V.24) + 0440 FarSync T4P (4 port X.21/V.35/V.24) + 0610 FarSync T1U (1 port X.21/V.35/V.24) + 0620 FarSync T2U (2 port X.21/V.35/V.24) + 0640 FarSync T4U (4 port X.21/V.35/V.24) + 1610 FarSync TE1 (T1,E1) + 1612 FarSync TE1 PCI Express (T1,E1) + 2610 FarSync DSL-S1 (SHDSL) + 3640 FarSync T4E (4-port X.21/V.35/V.24) + 4620 FarSync T2Ue PCI Express (2-port X.21/V.35/V.24) + 4640 FarSync T4Ue PCI Express (4-port X.21/V.35/V.24) + 5621 FarSync T2Ee PCI Express (2 port X.21/V.35/V.24) + 5641 FarSync T4Ee PCI Express (4 port X.21/V.35/V.24) + 6620 FarSync T2U-PMC PCI Express (2 port X.21/V.35/V.24) +161f Rioworks +1621 Lynx Studio Technology, Inc. + 0020 LynxTWO-A + 0021 LynxTWO-B + 0022 LynxTWO-C + 0023 Lynx L22 + 0024 Lynx AES16 + 0025 Lynx AES16-SRC + 0028 Lynx AES16e +1626 TDK Semiconductor Corp. + 8410 RTL81xx Fast Ethernet +1629 Kongsberg Spacetec AS + 1003 Format synchronizer v3.0 + 1006 Format synchronizer, model 10500 + 1007 Format synchronizer, model 21000 + 2002 Fast Universal Data Output + 3100 IO31000 Frame Synchronizer and I/O + 3200 IO32000 Frame Synchronizer and I/O + 4002 High Rate Demodulator + 5001 High Rate FEC + 6001 High Rate Demodulator and FEC +1631 Packard Bell B.V. +1638 Standard Microsystems Corp [SMC] + 1100 SMC2602W EZConnect / Addtron AWA-100 / Eumitcom PCI WL11000 +163c Smart Link Ltd. + 3052 SmartLink SmartPCI562 56K Modem + 5449 SmartPCI561 Modem +1641 MKNet Corp. +1642 Bitland(ShenZhen) Information Technology Co., Ltd. +# nee Brocade Communications Systems, Inc. +1657 Cavium QLogic + 0013 425/825/42B/82B 4Gbps/8Gbps PCIe dual port FC HBA + 103c 1742 82B 8Gbps dual port FC HBA + 103c 1744 42B 4Gbps dual port FC HBA + 1657 0014 425/825 4Gbps/8Gbps PCIe dual port FC HBA + 0014 1010/1020/1007/1741 10Gbps CNA + 1657 0014 1010/1020/1007/1741 10Gbps CNA - FCOE + 1657 0015 1010/1020/1007/1741 10Gbps CNA - LL + 0017 415/815/41B/81B 4Gbps/8Gbps PCIe single port FC HBA + 103c 1741 41B 4Gbps single port FC HBA + 103c 1743 81B 8Gbps single port FC HBA + 1657 0014 415/815 4Gbps/8Gbps single port PCIe FC HBA + 0021 804 8Gbps FC HBA for HP Bladesystem c-class + 0022 BR-1860 Fabric Adapter + 1657 0022 10Gbps CNA - FCOE + 1657 0023 10Gbps CNA - LL + 1657 0024 16Gbps FC HBA +# Mezz card for IBM + 0023 1867/1869 16Gbps FC HBA +# Same Device_ID used for 410 (1port) and 420 (2 port) HBAs. + 0646 400 4Gbps PCIe FC HBA +165a Epix Inc + c100 PIXCI(R) CL1 Camera Link Video Capture Board [custom QL5232] + d200 PIXCI(R) D2X Digital Video Capture Board [custom QL5232] + d300 PIXCI(R) D3X Digital Video Capture Board [custom QL5232] + eb01 PIXCI(R) EB1 PCI Camera Link Video Capture Board +# Gidel Reconfigurable Computing +165c Gidel Ltd. + 5361 PROCStarII60-1 + 5362 PROCStarII60-2 + 5364 PROCStarII60-4 + 5435 ProcSparkII + 5661 ProcE60 + 56e1 ProcE180 + 5911 ProcStarIII110-1 + 5912 ProcStarIII110-2 + 5913 ProcStarIII110-3 + 5914 ProcStarIII110-4 + 5921 ProcStarIII150-1 + 5922 ProcStarIII150-2 + 5923 ProcStarIII150-3 + 5924 ProcStarIII150-4 + 5931 ProcStarIII260-1 + 5932 ProcStarIII260-2 + 5933 ProcStarIII260-3 + 5934 ProcStarIII260-4 + 5941 ProcStarIII340-1 + 5942 ProcStarIII340-2 + 5943 ProcStarIII340-3 + 5944 ProcStarIII340-4 + 5a01 ProceIII80 + 5a11 ProceIII110 + 5a21 ProceIII150 + 5a31 ProceIII260 + 5a41 ProceIII340 + 5b51 ProceIV360 + 5b61 ProceIV530 + 5b71 ProceIV820 + 5c01 ProcStarIV80-1 + 5c02 ProcStarIV80-2 + 5c03 ProcStarIV80-3 + 5c04 ProcStarIV80-4 + 5c11 ProcStarIV110-1 + 5c12 ProcStarIV110-2 + 5c13 ProcStarIV110-3 + 5c14 ProcStarIV110-4 + 5c51 ProcStarIV360-1 + 5c52 ProcStarIV360-2 + 5c53 ProcStarIV360-3 + 5c54 ProcStarIV360-4 + 5c61 ProcStarIV530-1 + 5c62 ProcStarIV530-2 + 5c63 ProcStarIV530-3 + 5c64 ProcStarIV530-4 + 5c71 ProcStarIV820-1 + 5c72 ProcStarIV820-2 + 5c73 ProcStarIV820-3 + 5c74 ProcStarIV820-4 + 5d01 Proc10480 + 5d11 Proc104110 + 5f01 ProceV_A3 + 5f11 ProceV_A7 + 5f21 ProceV_AB + 5f31 ProceV_D5 + 5f41 ProceV_D8 + 6732 Proc6M + 6832 Proc12M + 7101 Proc10a_27 + 7111 Proc10a_48 + 7121 Proc10a_66 + 7141 Proc10a_115 + 7181 Proc10a_27S + 7191 Proc10a_48S + 71a1 Proc10a_66S + 71b1 Proc10A + 72b1 HawkEye + 73b1 Proc10s +165d Hsing Tech. Enterprise Co., Ltd. +165f Linux Media Labs, LLC + 1020 LMLM4 MPEG-4 encoder +1661 Worldspace Corp. +1665 EDAX Inc +# P/N 4035.006.19720 + 1973 DPP-II FR2 Board +# P/N 4035.065.20000 + 2000 SG-IIP Board +1668 Actiontec Electronics Inc + 0100 Mini-PCI bridge +# Formerly SiByte, Inc. +166d Broadcom Corporation + 0001 SiByte BCM1125/1125H/1250 System-on-a-Chip PCI + 0002 SiByte BCM1125H/1250 System-on-a-Chip HyperTransport + 0012 SiByte BCM1280/BCM1480 System-on-a-Chip PCI-X + 0014 Sibyte BCM1280/BCM1480 System-on-a-Chip HyperTransport +1677 B&R Industrial Automation GmbH + 104e 5LS172.6 B&R Dual CAN Interface Card + 12d7 5LS172.61 B&R Dual CAN Interface Card + 20ad 5ACPCI.MFIO-K01 Profibus DP / K-Feldbus / COM +1678 NetEffect + 0100 NE020 10Gb Accelerated Ethernet Adapter (iWARP RNIC) +1679 Tokyo Electron Device Ltd. + 3000 SD Standard host controller [Ellen] +167b ZyDAS Technology Corp. + 2102 ZyDAS ZD1202 + 187e 3406 ZyAIR B-122 CardBus 11Mbs Wireless LAN Card + 187e 3407 ZyAIR B-320 802.11b Wireless PCI Adapter + 2116 ZD1212B Wireless Adapter +167d Samsung Electro-Mechanics Co., Ltd. + a000 MagicLAN SWL-2210P 802.11b [Intersil ISL3874] +167e ONNTO Corp. +1681 Hercules +1682 XFX Pine Group Inc. + 5701 Radeon 5700 XT Thicc III Ultra + c580 Radeon RX 580 +1688 CastleNet Technology Inc. + 1170 WLAN 802.11b card +168a Utimaco IS GmbH + 2086 CryptoServer Se-Series Hardware Security Module + c040 CryptoServer CSe-Series Hardware Security Module + c051 CryptoServer Se-Series Gen2 Hardware Security Module + c070 u.trust Anchor Hardware Security Module cs7.2 Series + c071 u.trust Anchor Hardware Security Module cs7.3 Series + c072 u.trust Anchor Hardware Security Module cs7.3 Series Virtual Function +# nee Atheros Communications, Inc. +168c Qualcomm Atheros + 0007 AR5210 Wireless Network Adapter [AR5000 802.11a] + 1737 0007 WPC54A Wireless PC Card + 1b47 0100 Harmony 8450CN Wireless CardBus Module + 1b47 0110 Skyline 4030 / Harmony 8450 802.11a Wireless CardBus Adapter + 8086 2501 PRO/Wireless 5000 LAN PCI Adapter Module + 0011 AR5211 Wireless Network Adapter [AR5001A 802.11a] + 0012 AR5211 Wireless Network Adapter [AR5001X 802.11ab] + 1186 3a03 AirPro DWL-A650 Wireless Cardbus Adapter (rev.B) + 1186 3a04 AirPro DWL-AB650 Multimode Wireless Cardbus Adapter + 1186 3a05 AirPro DWL-AB520 Multimode Wireless PCI Adapter + 126c 8031 2201 Mobile Adapter + 1385 4400 WAB501 802.11ab Wireless CardBus Card + 1b47 aa00 8460 802.11ab Wireless CardBus Adapter + 0013 AR5212/5213/2414 Wireless Network Adapter + 0308 3402 AG-100 802.11ag Wireless Cardbus Adapter + 0308 3405 G-102 v2 802.11g Wireless Cardbus Adapter + 0308 3408 G-170S 802.11g Wireless CardBus Adapter + 0e11 00e5 NC6000/NC8000 laptop + 10b7 6002 3CRWE154A72 802.11abg Cardbus Adapter + 1113 d301 Philips CPWNA100 Wireless CardBus adapter + 1113 ee23 SMCWPCIT-G 108Mbps Wireless PCI adapter + 1154 033b Buffalo WLI-CB-AMG54 + 1154 034e Buffalo WLI-CB-AG108HP 802.11abg Cardbus Adapter + 1186 3202 DWL-G650 (Rev B3,B5) Wireless cardbus adapter + 1186 3203 AirPlus DWL-G520 Wireless PCI Adapter (rev. A) + 1186 3a07 AirXpert DWL-AG650 Wireless Cardbus Adapter + 1186 3a08 AirXpert DWL-AG520 Wireless PCI Adapter + 1186 3a12 D-Link AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C) + 1186 3a13 AirPlus DWL-G520 Wireless PCI Adapter (rev. B) + 1186 3a14 AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.A) + 1186 3a17 D-Link AirPremier DWL-G680 Wireless Cardbus Adapter + 1186 3a18 D-Link AirPremier DWL-G550 Wireless PCI Adapter + 1186 3a1a WNA-2330 802.11bg Wireless CardBus Adapter + 1186 3a63 D-Link AirPremier DWL-AG660 Wireless Cardbus Adapter + 1186 3a93 Conceptronic C54I Wireless 801.11g PCI card + 1186 3a94 Conceptronic C54C 802.11g Wireless Cardbus Adapter + 1186 3ab0 Allnet ALL0281 Wireless PCI Card + 1385 4600 WAG511 802.11a/b/g Dual Band Wireless PC Card + 1385 4610 WAG511 802.11a/b/g Dual Band Wireless PC Card + 1385 4900 WG311v1 802.11g Wireless PCI Adapter + 1385 4a00 WAG311 802.11a/g Wireless PCI Adapter + 1385 4b00 WG511T 108 Mbps Wireless PC Card (rev.A/B) + 1385 4d00 WG311T 108 Mbps Wireless PCI Adapter (rev.A2) + 1385 4f00 WG511U Double 108 Mbps Wireless PC Card + 1385 5a00 WG311T (rev.A3 v1h3/v1h4) 108 Mbps Wireless PCI Adapter [AR2412] + 1385 5b00 WG511T 108 Mbps Wireless PC Card (rev.C) + 1385 5d00 WPN511 RangeMax Wireless PC Card + 1458 e911 GN-WIAG02 + 1468 0403 U10H014 802.11g Cardbus Adapter + 1468 0408 ThinkPad 11b/g Wireless LAN Mini PCI Adapter + 14b7 0a10 8480-WD 802.11abg Cardbus Adapter + 14b7 0a60 8482-WD ORiNOCO 11a/b/g Wireless PCI Adapter + 14b7 aa30 8800-FC 802.11bg Cardbus Adapter + 14b7 aa40 8470-WD 802.11bg Cardbus Adapter + 14b9 cb21 CB21 802.11a/b/g Cardbus Adapter + 1668 1026 IBM HighRate 11 a/b/g Wireless CardBus Adapter + 168c 0013 AirPlus XtremeG DWL-G650 Wireless PCMCIA Adapter + 168c 1025 DWL-G650B2 Wireless CardBus Adapter + 168c 1027 Engenius NL-3054CB ARIES b/g CardBus Adapter + 168c 1042 Ubiquiti Networks SuperRange a/b/g Cardbus Adapter + 168c 1051 EZ Connect g 802.11g 108Mbps Wireless PCI Adapter + 168c 2026 Netgate 5354MP ARIES a(108Mb turbo)/b/g MiniPCI Adapter + 168c 2027 D-Link AirPlus DWL-G520 Wireless PCI Adapter (rev. A) + 168c 2041 Engenius 5354MP Plus ARIES2 b/g MiniPCI Adapter + 168c 2042 Engenius 5354MP Plus ARIES2 a/b/g MiniPCI Adapter + 168c 2051 TRENDnet TEW-443PI Wireless PCI Adapter + 16a5 160a BWP712 802.11bg Wireless CardBus Adapter + 16ab 7302 Trust Speedshare Turbo Pro Wireless PCI Adapter + 1737 0017 WPC55AG + 1737 0026 WMP55AG v1.1 + 1737 0035 WPC55AG v1.2 802.11abg Cardbus Adapter + 1737 0036 WMP55AG v1.2 802.11abg PCI Adapter + 1799 3000 F6D3000 Dual-Band Wireless A+G Desktop Card + 1799 3010 F6D3010 Dual-Band Wireless A+G Notebook Card + 17cf 0042 Z-COMAX Highpower XG-622H (400mw) 802.11b/g mini-PCI Adapter + 185f 1012 CM9 Wireless a/b/g MiniPCI Adapter + 185f 2012 Wistron NeWeb WLAN a+b+g model CB9 + a727 6801 3CRXJK10075 OfficeConnect Wireless 108Mbps 11g XJACK PC Card + 001a AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] + 1052 168c Sweex Wireless Lan PC Card 54Mbps + 1113 ee20 SMC Wireless CardBus Adapter 802.11g (SMCWCB-G EU) + 1113 ee24 SMC Wireless PCI Card WPCI-G + 1186 3a15 AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.D1) + 1186 3a16 AirPlus G DWL-G510 Wireless PCI Adapter(rev.B) + 1186 3a1c WNA-1330 Notebook Adapter + 1186 3a1d WDA-1320 Desktop Adapter + 1186 3a23 AirPlus G DWL-G520+A Wireless PCI Adapter + 1186 3a24 AirPlus G DWL-G650+A Wireless Cardbus Adapter + 1186 3b08 AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.C1) + 168c 001a Belkin FD7000 + 168c 1052 TP-Link TL-WN510G Wireless CardBus Adapter + 168c 2052 Compex Wireless 802.11 b/g MiniPCI Adapter, Rev A1 [WLM54G] + 16ec 0122 Wireless PCI Adapter Model 5418 + 1737 0053 WPC54G v7 802.11g Wireless-G Notebook Adapter + 1799 700c F5D7000 v5000 Wireless G Desktop Card + 1799 701d F5D7010 v5000 Wireless G Notebook Card + 17f9 0008 DX-WGNBC 802.11bg Wireless CardBus Adapter + 17f9 0018 DX-WGDTC 802.11bg Wireless PCI Adapter + 001b AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] +# Atheros AR5414 32-bit mini-PCI type IIIB + 0777 1107 UB5 802.11a Wireless Mini PCI Adapter + 0777 3002 XR2 802.11g Wireless Mini PCI Adapter + 0777 3005 XR5 802.11a Wireless Mini PCI Adapter + 0777 3009 XR9 900MHz Wireless Mini PCI Adapter + 1154 034e WLI-CB-AG108HP 802.11abg Wireless CardBus Adapter + 1186 3a19 D-Link AirPremier AG DWL-AG660 Wireless Cardbus Adapter + 1186 3a22 AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.B) + 11ad 5001 WN5301A 802.11bg Wireless PCI Adapter + 1458 e901 GN-WI01HT Wireless a/b/g MiniPCI Adapter + 168c 001b Wireless LAN PCI LiteOn + 168c 1062 IPN-W100CB 802.11abg Wireless CardBus Adapter + 168c 2062 EnGenius EMP-8602 (400mw) or Compex WLM54AG (SuperAG) + 168c 2063 EnGenius EMP-8602 (400mw) or Compex WLM54AG + 17f9 000b WL-711A 802.11abg Wireless CardBus Adapter + 17f9 000c WPIA-112AG 802.11abg Wireless PCI Adapter + 17f9 000d PC-686X 802.11abg Wireless Mini PCI Adapter + 185f 1600 DCMA-82 High Power WLAN 802.11a/b/g mini-PCI Module (Super A/G, eXtended Range, 400mW) + 1948 3aba RBTBJ-AW 802.11abg Wireless Cardbus Adapter + a727 6804 Wireless 11a/b/g PC Card with XJACK(r) Antenna + 001c AR242x / AR542x Wireless Network Adapter (PCI-Express) + 0777 3006 SRX 802.11abg Wireless ExpressCard Adapter + 103c 137a AR5BXB63 (Foxconn) 802.11bg Mini PCIe NIC + 106b 0086 AirPort Extreme + 144f 7106 WLL3140 (Toshiba PA3501U-1MPC) 802.11bg Wireless Mini PCIe Card + 144f 7128 WLL3141 (Toshiba PA3613U-1MPC) 802.11bg Wireless Mini PCIe Card + 1468 0428 AR5BXB63 802.11bg NIC + 1468 042a AR5007EG 802.11bg NIC + 147b 1033 AirPace Wi-Fi + 168c 001c AR242x 802.11abg NIC (PCI Express) + 168c 3061 AR5006EGS 802.11bg NIC (2.4GHz, PCI Express) + 168c 3062 AR5006EXS 802.11abg NIC (2.4/5.0GHz, PCI Express) + 168c 3063 AR5006EX 802.11abg NIC (2.4/5.0GHz, PCI Express) + 168c 3065 AR5006EG 802.11bg NIC (2.4GHz, PCI Express) + 168c 3067 AR242x 802.11abg Wireless PCI Express Adapter (rev 01) + 1a3b 1026 AW-GE780 802.11bg Wireless Mini PCIe Card + 001d AR2417 Wireless Network Adapter [AR5007G 802.11bg] + 1799 720b F5D7000 v8000 Wireless G Desktop Card + 1799 721b F5D7010 v8000 Wireless G Notebook Card +# the name AR5005VL is used for some AR5513 based designs + 0020 AR5513 802.11abg Wireless NIC + 0308 3407 M-102 802.11g Wireless Cardbus Adapter + 1186 3a67 DWL-G650M Super G MIMO Wireless Notebook Adapter + 1186 3a68 DWL-G520M Wireless 108G MIMO Desktop Adapter + 187e 340e M-302 802.11g Wireless PCI Adapter + 1976 2003 TEW-601PC 802.11g Wireless CardBus Adapter + 0023 AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] + 0308 340b NWD-170N 802.11bgn Wireless CardBus Adapter + 1154 0365 Buffalo WLP-CB-AG300 802.11abgn Cardbus Adapter + 1154 0367 WLI-CB-AG301N 802.11abgn Wireless CardBus Adapter + 1186 3a6a DWA-642 802.11n RangeBooster N CardBus Adapter + 1186 3a6b DWA-547 802.11n RangeBooster N 650 DeskTop Adapter + 1186 3a6d DWA-552 802.11n Xtreme N Desktop Adapter (rev A1) + 1186 3a76 DWA-645 802.11n RangeBooster N 650 Notebook Adapter (rev A1) + 1737 0059 WPC300N v2 Wireless-N Notebook Adapter + 1737 0069 WPC100 v1 802.11n RangePlus Wireless Notebook Adapter + 1737 0072 WMP110 v1 802.11n RangePlus Wireless PCI Adapter + 1799 8011 F5D8011 v1 802.11n N1 Wireless Notebook Card + 187e 3411 NWD-370N 802.11n Wireless PCI Adapter + 1976 2008 TEW-621PC 802.11bgn Wireless CardBus Adapter + 0024 AR5418 Wireless Network Adapter [AR5008E 802.11(a)bgn] (PCI-Express) + 106b 0087 AirPort Extreme + 1186 3a70 DWA-556 Xtreme N PCI Express Desktop Adapter + 0027 AR9160 Wireless Network Adapter [AR9001 802.11(a)bgn] + 0777 4082 SR71-A 802.11abgn Wireless Mini PCI Adapter + 0029 AR922X Wireless Network Adapter + 0777 4005 SR71-15 802.11an Mini PCI Adapter + 1186 3a7a DWA-552 802.11n Xtreme N Desktop Adapter (rev A2) + 1186 3a7d DWA-552 802.11n Xtreme N Desktop Adapter (rev A3) + 168c 0029 AR922X Wireless Network Adapter + 168c 2096 Compex WLM200NX / Wistron DNMA-92 + 002a AR928X Wireless Network Adapter (PCI-Express) + 0777 4f05 SR71-X 802.11abgn Wireless ExpressCard Adapter [AR9280] + 103c 3041 AR5BHB92-H 802.11abgn Wireless Half-size Mini PCIe Card [AR9280] + 103c 3042 AzureWave AW-NE773 802.11abgn Wireless Half-size Mini PCIe Card [AR9280] + 105b e006 T77H053.00 802.11bgn Wireless Mini PCIe Card [AR9281] + 105b e01f T77H047.31 802.11bgn Wireless Half-size Mini PCIe Card [AR9283] + 106b 008f AirPort Extreme + 11ad 6600 WN6600A 802.11bgn Wireless Mini PCIe Card [AR9281] + 144f 7141 WLL6080 802.11bgn Wireless Mini PCIe Card [AR9281] + 168c 0203 DW1525 802.11abgn WLAN PCIe Card [AR9280] + 1a32 0303 EM303 802.11bgn Wireless Mini PCIe Card [AR9281] + 1a32 0306 EM306 802.11bgn Wireless Half-size Mini PCIe Card [AR9283] + 1a3b 1067 AW-NE771 802.11bgn Wireless Mini PCIe Card [AR9281] + 1a3b 1071 AW-NE772 802.11abgn Wireless Mini PCIe Card [AR9280] + 1a3b 1081 AW-NE773 802.11abgn Wireless Half-size Mini PCIe Card [AR9280] + 002b AR9285 Wireless Network Adapter (PCI-Express) + 1028 0204 Wireless 1502 802.11bgn Half-size Mini PCIe Card + 1028 0205 Wireless 1702 802.11bgn Half-size Mini PCIe Card [AR9002WB-1NGCD] + 103c 303f U98Z062.10 802.11bgn Wireless Half-size Mini PCIe Card + 103c 3040 U98Z062.12 802.11bgn Wireless Half-size Mini PCIe Card + 105b e017 T77H126.00 802.11bgn Wireless Half-size Mini PCIe Card + 105b e023 T77H121.04 802.11bgn Wireless Half-size Mini PCIe Card + 105b e025 T77H121.05 802.11bgn Wireless Half-size Mini PCIe Card + 1113 e811 WN7811A (Toshiba PA3722U-1MPC) 802.11bgn Wireless Half-size Mini PCIe Card + 185f 30af DNXA-95 802.11bgn Wireless Half-size Mini PCIe Card + 1931 0023 Option GTM67x PCIe WiFi Adapter + 1a3b 1089 AW-NE785 / AW-NE785H 802.11bgn Wireless Full or Half-size Mini PCIe Card + 1a3b 2c37 AW-NB037H 802.11bgn Wireless Half-size Mini PCIe Card [AR9002WB-1NGCD] + 1b9a 0401 XW204E 802.11bgn Wireless Half-size Mini PCIe Card + 1b9a 0c03 WB214E 802.11bgn Wireless Half-size Mini PCIe Card [AR9002WB-1NGCD] + 002c AR2427 802.11bg Wireless Network Adapter (PCI-Express) + 002d AR9227 Wireless Network Adapter + 002e AR9287 Wireless Network Adapter (PCI-Express) + 105b e034 T77H167.00 + 0030 AR93xx Wireless Network Adapter + 103c 1627 AR9380/HB112 802.11abgn 3x3 Wi-Fi Adapter + 106b 009a AirPort Extreme + 1186 3a7e DWA-566 Wireless N 300 Dual Band PCIe Desktop Adapter + 1a56 2000 Killer Wireless-N 1102 Half-size Mini PCIe Card [AR9382] + 1a56 2001 Killer Wireless-N 1103 Half-size Mini PCIe Card [AR9380] + 0032 AR9485 Wireless Network Adapter + 1028 0208 Wireless 1506 WLAN Half Mini-Card + 103c 1838 AR9485/HB125 802.11bgn 1x1 Wi-Fi Adapter + 105b e044 Unex DHXA-225 + 144d 410e AR9485WB-EG 802.11b/g/n mini-PCIe card on a series 3 laptop + 1a3b 1186 AW-NE186H + 0033 AR958x 802.11abgn Wireless Network Adapter + 168c a120 AR9582 802.11a/n WLAN Mini-PCIe Adapter + 0034 AR9462 Wireless Network Adapter + 1028 020b Wireless 1601 802.11abgn Adapter + 1028 0300 Wireless 1802 802.11abgn Adapter + 1a56 2003 Killer Wireless-N 1202 Half-size Mini PCIe Card + 0036 QCA9565 / AR9565 Wireless Network Adapter + 1028 020e Vostro 3470 + 0037 AR9485 Wireless Network Adapter +# Also used as Gigabyte GC-WB150 on a PCIe-to-mini-PCIe converter + 1a3b 2100 AW-NB100H 802.11n Wireless Mini PCIe Card + 003c QCA986x/988x 802.11ac Wireless Network Adapter + 003e QCA6174 802.11ac Wireless Network Adapter + 1a56 143a Killer 1435 Wireless-AC + 1a56 1525 Killer N1525 Wireless-AC + 1a56 1535 Killer Wireless-n/a/ac 1535 Wireless Network Adapter + 0040 QCA9980/9990 802.11ac Wireless Network Adapter + 0041 QCA6164 802.11ac Wireless Network Adapter + 0042 QCA9377 802.11ac Wireless Network Adapter + 11ad 08a6 Qualcomm Atheros QCA9377 802.11ac Wireless Network Adapter +# compatible with Lenovo's BIOS lock + 17aa 0901 Qualcomm Atheros QCA9377 Wireless Network Adapter + 0046 QCA9984 802.11ac Wave 2 Wireless Network Adapter + 0050 QCA9887 802.11ac Wireless Network Adapter + 0207 AR5210 Wireless Network Adapter [AR5000 802.11a] + 1014 AR5212 802.11abg NIC + 1014 058a ThinkPad 11a/b/g Wireless LAN Mini Express Adapter (AR5BXB6) + 9013 AR5002X Wireless Network Adapter + ff19 AR5006X Wireless Network Adapter + ff1b AR2425 Wireless Network Adapter [AR5007EG 802.11bg] + ff1c AR5008 Wireless Network Adapter + ff1d AR922x Wireless Network Adapter +# Found in "AVM Fritz!Box FON WLAN 7270v3" + 168c ee1c AR9220-AC1A [AVM Fritz!Box FON WLAN 7270 v3] +1695 EPoX Computer Co., Ltd. +169c Netcell Corporation + 0044 Revolution Storage Processing Card +# The right ID is 196d, but they got it nibble-swapped in 2202. +169d Club-3D VB (Wrong ID) +16a5 Tekram Technology Co.,Ltd. +16ab Global Sun Technology Inc + 1100 GL24110P + 1101 PLX9052 PCMCIA-to-PCI Wireless LAN + 1102 PCMCIA-to-PCI Wireless Network Bridge + 8501 WL-8305 Wireless LAN PCI Adapter +16ae SafeNet Inc + 0001 SafeXcel 1140 + 000a SafeXcel 1841 + 1141 SafeXcel 1141 +# misused vendor ID 0001 + 0001 0001 SafeXcel 1141 v. 1.1 + 1841 SafeXcel 1842 +16af SparkLAN Communications, Inc. +16b4 Aspex Semiconductor Ltd +16b8 Sonnet Technologies, Inc. +16be Creatix Polymedia GmbH +16c3 Synopsys, Inc. + abcd DWC_usb3 / PCIe bridge + abce DWC_usb3 + abcf DWC_usb31 + edda EPMockUp +16c6 Micrel-Kendin + 8695 Centaur KS8695 ARM processor + 8842 KSZ8842-PMQL 2-Port Ethernet Switch +16c8 Octasic Inc. +16c9 EONIC B.V. The Netherlands +16ca CENATEK Inc + 0001 Rocket Drive DL +# nee Innocore Gaming Ltd., nee Densitron Gaming Ltd., a division of Densitron Technologies +16cd Advantech Co. Ltd + 0101 DirectPCI SRAM for DPX-11x series + 0102 DirectPCI SRAM for DPX-S/C/E-series + 0103 DirectPCI ROM for DPX-11x series + 0104 DirectPCI ROM for DPX-S/C/E-series + 0105 DirectPCI I/O for DPX-114/DPX-115 + 0106 DirectPCI I/O for DPX-116 + 0107 DirectPCI I/O for DPX-116U + 0108 DirectPCI I/O for DPX-117 + 0109 DirectPCI I/O for DPX-112 + 010a DirectPCI I/O for DPX-C/E-series + 010b DirectPCI I/O for DPX-S series +16ce Roland Corp. +16d5 Acromag, Inc. + 0504 PMC-DX504 Reconfigurable FPGA with LVDS I/O + 0520 PMC520 Serial Communication, 232 Octal + 0521 PMC521 Serial Communication, 422/485 Octal + 1020 PMC-AX1020 Reconfigurable FPGA with A/D & D/A + 1065 PMC-AX1065 Reconfigurable FPGA with A/D & D/A + 2004 PMC-DX2004 Reconfigurable FPGA with LVDS I/O + 2020 PMC-AX2020 Reconfigurable FPGA with A/D & D/A + 2065 PMC-AX2065 Reconfigurable FPGA with A/D & D/A + 3020 PMC-AX3020 Reconfigurable FPGA with A/D & D/A + 3065 PMC-AX3065 Reconfigurable FPGA with A/D & D/A + 4243 PMC424, APC424, AcPC424 Digital I/O and Counter Timer Module + 4248 PMC464, APC464, AcPC464 Digital I/O and Counter Timer Module + 424b PMC-DX2002 Reconfigurable FPGA with Differential I/O + 4253 PMC-DX503 Reconfigurable FPGA with TTL and Differential I/O + 4312 PMC-CX1002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O + 4313 PMC-CX1003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O + 4322 PMC-CX2002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O + 4323 PMC-CX2003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O + 4350 PMC-DX501 Reconfigurable Digital I/O Module + 4353 PMC-DX2003 Reconfigurable FPGA with TTL and Differential I/O + 4357 PMC-DX502 Reconfigurable Differential I/O Module + 4457 PMC730, APC730, AcPC730 Multifunction Module + 4471 XMC730 Multi-function I/O module with front I/O + 4473 XMC730CC Multi-function I/O module with rear I/O Conduction-cooled + 464d PMC408 32-Channel Digital Input/Output Module + 4850 PMC220-16 12-Bit Analog Output Module + 4a42 PMC483, APC483, AcPC483 Counter Timer Module + 4a50 PMC484, APC484, AcPC484 Counter Timer Module + 4a56 PMC230 16-Bit Analog Output Module + 4b47 PMC330, APC330, AcPC330 Analog Input Module, 16-bit A/D + 4c40 PMC-LX40 Reconfigurable Virtex-4 FPGA with plug-in I/O + 4c60 PMC-LX60 Reconfigurable Virtex-4 FPGA with plug-in I/O + 4d4d PMC341, APC341, AcPC341 Analog Input Module, Simultaneous Sample & Hold + 4d4e PMC482, APC482, AcPC482 Counter Timer Board + 524d PMC-DX2001 Reconfigurable FPGA with TTL I/O + 5335 PMC-SX35 Reconfigurable Virtex-4 FPGA with plug-in I/O + 5456 PMC470 48-Channel Digital Input/Output Module + 5601 PMC-VLX85 Reconfigurable Virtex-5 FPGA with plug-in I/O + 5602 PMC-VLX110 Reconfigurable Virtex-5 FPGA with plug-in I/O + 5603 PMC-VSX95 Reconfigurable Virtex-5 FPGA with plug-in I/O + 5604 PMC-VLX155 Reconfigurable Virtex-5 FPGA with plug-in I/O + 5605 PMC-VFX70 Reconfigurable Virtex-5 FPGA with plug-in I/O + 5606 PMC-VLX155-1M Reconfigurable Virtex-5 FPGA with plug-in I/O + 5701 PMC-SLX150: Reconfigurable Spartan-6 FPGA with plug-in I/O + 5702 PMC-SLX150-1M: Reconfigurable Spartan-6 FPGA with plug-in I/O + 5801 XMC-VLX85 Reconfigurable Virtex-5 FPGA with plug-in I/O + 5802 XMC-VLX110 Reconfigurable Virtex-5 FPGA with plug-in I/O + 5803 XMC-VSX95 Reconfigurable Virtex-5 FPGA with plug-in I/O + 5804 XMC-VLX155 Reconfigurable Virtex-5 FPGA with plug-in I/O + 5807 XMC-SLX150: Reconfigurable Spartan-6 FPGA with plug-in I/O + 5808 XMC-SLX150-1M: Reconfigurable Spartan-6 FPGA with plug-in I/O + 5901 APCe8650 PCI Express IndustryPack Carrier Card + 6301 XMC Module with user-configurable Virtex-6 FPGA, 240k logic cells, SFP front I/O + 6302 XMC Module with user-configurable Virtex-6 FPGA, 365k logic cells, SFP front I/O + 6303 XMC Module with user-configurable Virtex-6 FPGA, 240k logic cells, no front I/O + 6304 XMC Module with user-configurable Virtex-6 FPGA, 365k logic cells, no front I/O + 7000 XMC-7K325F: User-configurable Kintex-7 FPGA, 325k logic cells plus SFP front I/O + 7001 XMC-7K410F: User-configurable Kintex-7 FPGA, 410k logic cells plus SFP front I/O + 7002 XMC-7K325AX: User-Configurable Kintex-7 FPGA, 325k logic cells with AXM Plug-In I/O + 7003 XMC-7K410AX: User-Configurable Kintex-7 FPGA, 410k logic cells with AXM Plug-In I/O + 7004 XMC-7K325CC: User-Configurable Kintex-7 FPGA, 325k logic cells, conduction-cooled + 7005 XMC-7K410CC: User-Configurable Kintex-7 FPGA, 410k logic cells, conduction-cooled + 7006 XMC-7A200: User-Configurable Artix-7 FPGA, 200k logic cells with Plug-In I/O + 7007 XMC-7A200CC: User-Configurable Conduction-Cooled Artix-7 FPGA, with 200k logic cells + 7011 AP440-1: 32-Channel Isolated Digital Input Module + 7012 AP440-2: 32-Channel Isolated Digital Input Module + 7013 AP440-3: 32-Channel Isolated Digital Input Module + 7014 AP445: 32-Channel Isolated Digital Output Module + 7015 AP471 48-Channel TTL Level Digital Input/Output Module + 7016 AP470 48-Channel TTL Level Digital Input/Output Module + 7017 AP323 16-bit, 20 or 40 Channel Analog Input Module + 7018 AP408: 32-Channel Digital I/O Module + 7019 AP341 14-bit, 16-Channel Simultaneous Conversion Analog Input Module + 701a AP220-16 12-Bit, 16-Channel Analog Output Module + 701b AP231-16 16-Bit, 16-Channel Analog Output Module + 701c AP225 12-Bit, 16-Channel Analog Output Module with Waveform Memory + 701d AP235 16-Bit, 16-Channel Analog Output Module with Waveform Memory + 7021 APA7-201 Reconfigurable Artix-7 FPGA module 48 TTL channels + 7022 APA7-202 Reconfigurable Artix-7 FPGA module 24 RS485 channels + 7023 APA7-203 Reconfigurable Artix-7 FPGA module 24 TTL & 12 RS485 channels + 7024 APA7-204 Reconfigurable Artix-7 FPGA module 24 LVDS channels + 7027 AP418 16-Channel High Voltage Digital Input/Output Module + 7029 AP342 14-bit, 12-Channel Isolated Simultaneous Conversion Analog Input Module + 702a AP226 12-Bit, 8-Channel Isolated Analog Output Module + 702b AP236 16-Bit, 8-Channel Isolated Analog Output Module + 702c AP560A Module 4 Independent isolated CAN bus channels + 7031 AP441-1: 32-Channel Isolated Digital Input Module + 7032 AP441-2: 32-Channel Isolated Digital Input Module + 7033 AP441-3: 32-Channel Isolated Digital Input Module + 7042 AP482 Counter Timer Module with TTL Level Input/Output + 7043 AP483 Counter Timer Module with TTL Level and RS422 Input/Output + 7044 AP484 Counter Timer Module with RS422 Input/Output + 7051 APA7-501 Reconfigurable Artix-7 52,160 Cell FPGA module 48 TTL channels + 7052 APA7-502 Reconfigurable Artix-7 52,160 Cell FPGA module 24 RS485 channels + 7053 APA7-503 Reconfigurable Artix-7 52,160 Cell FPGA module 24 TTL & 12 RS485 channels + 7054 APA7-504 Reconfigurable Artix-7 52,160 Cell FPGA module 24 LVDS channels + 7072 AP731 Multi-function I/O Module with 12-bit DAC + 7073 AP730 Multi-function I/O Module 16 Digital I/O 8 Differential Analog In 4 Analog Out + 7731 APZU-301 Zynq Ultrascale+ Module 28 TTL channels + 7733 APZU-303 Zynq Ultrascale+ Module 20 TTL & 3 RS485/422 channels + 7734 APZU-304 Zynq Ultrascale+ Module 14 LVDS channels +16da Advantech Co., Ltd. + 0011 INES GPIB-PCI +16df PIKA Technologies Inc. +# nee Geotest-MTS +16e2 Marvin Test Solutions + 1034 GX1034 Certification and Verification Module PXI Board + 1100 GX1100 Arbitrary Waveform and Function Generator PXI Board + 1120 GX1120 Arbitrary Waveform and Function Generator PXI Board + 1164 GX1164 Multi-Channel Programmable Resistor PXI Board + 1632 GX1632e 32-Channel Arbitrary Analog Output PXIe Board + 1648 GX1648 64-Channel Analog Output PXI Board + 1649 GX1649 64-Channel Arbitrary Analog Output PXI Board + 1838 GX1838 Precision DC Source PXI Board + 2065 GX2065 Digital Multimeter PXI Board + 2200 GTX2200 High Resolution Universal Time Interval Counter PXI Board + 2201 GC2200 High Resolution Universal Time Interval Counter PCI Board + 3104 GX3104 4-Channel 20V, 250mA Per Channel SMU PXI Board + 3108 GX3108 4-Channel Source Measure Unit PXI Board + 3116 GX3116e 16-Channel DUT Power Supply PXIe Board + 3348 GX3348 Multi-Channel DC Source and Switch Matrix Board + 3500 GX3500 Digital I/O FLEX FPGA Board + 3700 GX3700e Digital I/O FLEX FPGA PXIe Board + 3701 GX3700 Digital I/O FLEX FPGA PXI Board + 3800 GX3800e Digital I/O FLEX FPGA PXIe Board + 4943 GX4943 HellFire/Longbow Serial Communication Board + 5050 GC5050 Dynamic Digital I/O with Algorithmic Sequencer PCI Board + 5055 GX5055 Dynamic Digital I/O with Pin Electronics PXI Board + 5083 GX5083 Dynamic Digital I/O with Algorithmic Sequencer PXI Board + 5105 GX5105 High-Speed Digital I/O Timing (Master) Module PXI Board + 5106 GX5106 High-Speed Digital I/O Cycle Timing (Master) Module PXI Board + 5151 GX5150/1 High Speed Digital I/O (50/100MHz) PXI Board + 5152 GX5152/3 DSR High Speed Digital Stimulus/Response PXI Board + 5250 GX5250 Digital I/O Streaming PXI Board + 5280 GX5280 High-Speed Digital I/O PXI Board + 5290 GX5290 High-Speed Dynamic Digital I/O PXI Board + 5294 GX5294 High-Speed Digital I/O PXI Board + 5295 GX5295 Digital I/O with Pin Electronics and PMU PXI Board + 5296 GX5296 Digital I/O with Pin Electronics and PMU PXI Board + 5550 GX5050 Dynamic Digital I/O with Algorithmic Sequencer PXI Board + 5641 GX5641/2 Bi-directional Differential-TTL I/O PXI Board + 5731 GX5731 Digital I/O with 128 TTL Channels and 3x32 Customizable Channels PXI Board + 5732 GX5732 224-Channel Static Digital I/O PXI Board + 5733 GX5733 Digital I/O with 96 TTL Channels and 32 Customizable Channels PXI Board + 5960 GX5961/4 Digital I/O Timing/Sync with Pin Electronics and PMU PXI Board + 6021 GX6021 20-Channel RF Multiplexer PXI Board + 6062 GX6062 60-Channel RF Multiplexer PXI Board + 6115 GX6115 15-Channel High Current SPDT Form-C Relay PXI Board + 6125 GX6125 25-Channel High-Density SPDT Form-C Relay PXI Board + 6138 GX6138 38-Channel SPST Form-A Relay PXI Board + 6188 GX6188 104-Channel 8x8 Multiplexer/Matrix PXI Board + 6192 GX6192 16, 16x2 High Frequency, High Density Multiplexer PXI Board + 6196 GX6196 96-Channel DPST Form-A Relay Carrier PXI Board + 6256 GX6256 16, 16x2 Low Frequency, High Density Multiplexer PXI Board + 6264 GX6264 128-Channel Scanner/Multiplexer Board + 6315 GX6315 45-Channel High Current SPDT Form-C Relay Board + 6325 GX6325 75-Channel High-Density SPDT Form-C Relay Board + 6338 GX6338 114-Channel SPST Form-A Relay PXI Board + 6377 GX6377 Multifunction Switching PXI Board + 6384 GX6384 Configurable High-Density Switch Matrix PXI Board + 6616 GX6616 6x2:16 Switch Matrix PXI Board + 6864 GX6864 Video Switching PXI Board + 7400 GX7400 Dual-Output Programmable Power Supply PXI Board + 7404 GX7404 Prototyping and Power Interface PXI Board + 7777 GX7777 Generic Interface PXI Board + 7779 GX7779 Backplane Tester PXI Board +16e3 European Space Agency + 1e0f LEON2FT Processor +16e5 Intellon Corp. + 6000 INT6000 Ethernet-to-Powerline Bridge [HomePlug AV] + 6300 INT6300 Ethernet-to-Powerline Bridge [HomePlug AV] +16ec U.S. Robotics + 00ed USR997900 + 0116 USR997902 10/100/1000 Mbps PCI Network Card + 2f00 USR5660A (USR265660A, USR5660A-BP) 56K PCI Faxmodem + 3685 Wireless Access PCI Adapter Model 022415 + 4320 USR997904 10/100/1000 64-bit NIC (Marvell Yukon) + ab06 USR997901A 10/100 Cardbus NIC +16ed Sycron N. V. + 1001 UMIO communication card +16f2 ETAS GmbH + 0200 I/O board + 16f2 0010 ES53xx I/O board +16f3 Jetway Information Co., Ltd. +16f4 Vweb Corp + 8000 VW2010 +16f6 VideoTele.com, Inc. +1702 Internet Machines Corporation (IMC) +1705 Digital First, Inc. +170b NetOctave + 0100 NSP2000-SSL crypto accelerator +170c YottaYotta Inc. +1719 EZChip Technologies + 1000 NPA Access Network Processor Family +# Seems to be a 2nd ID for Vitesse Semiconductor +1725 Vitesse Semiconductor + 7174 VSC7174 PCI/PCI-X Serial ATA Host Bus Controller +172a Accelerated Encryption + 13c8 AEP SureWare Runner 1000V3 +# nee Fujitsu Siemens Computers GmbH +1734 Fujitsu Technology Solutions + 9602 RS780/RS880 PCI to PCI bridge (int gfx) +1735 Aten International Co. Ltd. +1737 Linksys + 0029 WPG54G ver. 4 PCI Card + 1032 Gigabit Network Adapter + 1737 0015 EG1032 v2 Instant Gigabit Network Adapter + 1737 0024 EG1032 v3 Instant Gigabit Network Adapter + 1064 Gigabit Network Adapter + 1737 0016 EG1064 v2 Instant Gigabit Network Adapter + ab08 21x4x DEC-Tulip compatible 10/100 Ethernet + ab09 21x4x DEC-Tulip compatible 10/100 Ethernet +173b Altima (nee Broadcom) + 0001 AC1002 PCI Gigabit Ethernet controller + 03e8 AC1000 Gigabit Ethernet + 03e9 AC1001 Gigabit Ethernet + 03ea AC9100 Gigabit Ethernet + 173b 0001 AC1002 + 03eb AC1003 Gigabit Ethernet +1743 Peppercon AG + 8139 ROL/F-100 Fast Ethernet Adapter with ROL +1745 ViXS Systems, Inc. + 2020 XCode II Series + 2100 XCode 2100 Series + 1043 48c9 My Cinema PE6200 Analoog +1749 RLX Technologies +174b PC Partner Limited / Sapphire Technology +174d WellX Telecom SA +175c AudioScience Inc +175e Sanera Systems, Inc. +1760 TEDIA spol. s r. o. + 0101 PCD-7004 Digital Bi-Directional Ports PCI Card + 0102 PCD-7104 Digital Input & Output PCI Card + 0121 PCT-7303A PC card with IRC counters + 0122 PCT-7408A PC card with counters and timers + 0123 PCT-7424 PCI card with standard counters + 0141 PCA7208AL - Analog Inputs/Outputs + 0142 PCA7208AS - Analog inputs/Outputs + 0143 PCA7408AL - Analog Inputs/Outputs + 0144 PCA7408AS - Analog Inputs/Outputs + 0145 PCA-7228AL Multifunction PCI IO card + 0146 PCA-7228AS Multifunction PCI IO card + 0147 PCA7428AL Multifunction PCI IO card + 0148 PCA7428AS Multifunction PCI IO card + 0149 PCA7228EL Multifunction PCI IO card with isolated analog inputs + 0150 PCA7428EL Multifunction PCI IO card with isolated analog inputs + 0151 PCA7628AL - PCI card with analog inputs, counters and DIO + 0152 PCA7628AS PCI card with analog inputs, outputs, counters and DIO + 0161 PCA7288A PCI card with analog outputs, counters and DIO + 0180 PCI1052 Communication card for MicroUnit network + 0214 PCT-7424C (F0) PC card with standard counters + 0215 PCT-7424C (F1) PC card with standard counters + 0216 PCT-7424E (F0) PC card with standard counters + 0217 PCT-7424E (F1) PC card with standard counters + 0240 PCA7428CL_F0 - analog Inputs + 0241 PCA7428CL_F1 - analog Inputs + 0242 PCA7428CS_F0 - Analog Inputs/Outputs non isolated + 0243 PCA7428CS_F1 - Analog Inputs/Outputs non isolated + 0244 PCA7428CE_F0 - Analog Inputs isolated + 0245 PCA7428CE_F1 - Analog Inputs isolated + 0303 PCD-7006C Digital Input & Output PCI Card + 0800 PCD8006 - PCIe digital Inputs/Outputs + 0840 PCA-8428 General-purpose multifunctional PCIe card with 8 analog inputs and 2 analog outputs + 0841 PCA-8429 General-purpose multifunctional PCIe card with 8 analog inputs + 0842 PCA-8438 General-purpose multifunctional PCIe card with 16 analog inputs and 2 analog outputs + 0843 PCA-8439 General-purpose multifunctional PCIe card with 16 analog inputs + ff00 CTU CAN FD PCIe Card +1761 Pickering Interfaces Ltd +1771 InnoVISION Multimedia Ltd. +1775 General Electric +177d Cavium, Inc. + 0001 Nitrox XL N1 + 0003 Nitrox XL N1 Lite + 0004 Octeon (and older) FIPS + 0005 Octeon CN38XX Network Processor Pass 3.x + 0006 RoHS + 0010 CN15XX/CN16XX [Nitrox PX] + 0011 CNN35XX [Nitrox III] + 0012 CNN55XX [Nitrox V] + 0020 Octeon CN31XX Network Processor + 0030 Octeon CN30XX Network Processor + 0040 Octeon CN58XX Network Processor + 0050 Octeon CN57XX Network Processor (CN54XX/CN55XX/CN56XX) + 0070 Octeon CN50XX Network Processor + 0080 Octeon CN52XX Network Processor + 0090 Octeon II CN63XX Network Processor + 0091 Octeon II CN68XX Network Processor + 0092 Octeon II CN65XX Network Processor + 0093 Octeon II CN61XX Network Processor + 0094 Octeon Fusion CNF71XX Cell processor + 0095 Octeon III CN78XX Network Processor + 0096 Octeon III CN70XX Network Processor + 9700 Octeon III CN73XX Network Processor + 9702 CN23XX [LiquidIO II] Intelligent Adapter + 177d 0003 CN2350 [LiquidIO II] 2-port 10GbE Intelligent adapter +# This was changed during the production phase to 10GbE adapter. + 177d 0004 CN2350 [LiquidIO II] 2-port 10GbE Intelligent adapter + 177d 0005 CN2360 [LiquidIO II] 2-port 10GbE Intelligent adapter + 177d 0006 CN2360 [LiquidIO II] 2-port 25GbE Intelligent adapter + 177d 0007 CN2350 [LiquidIO II] 2-port 25GbE Intelligent adapter + 177d 0008 CN2350 [LiquidIO II] 2-port 10GbE SFP+ Intelligent adapter + 177d 0009 CN2360 [LiquidIO II] 2-port 10GbE SFP+ Intelligent adapter + 177d 000a CN2350 [LiquidIO II] 2-port 10GBASE-T Intelligent adapter + 177d 000b CN2360 [LiquidIO II] 2-port 10GBASE-T Intelligent adapter + 9703 CN23XX [LiquidIO II] NVMe Controller + 9712 CN23XX [LiquidIO II] SRIOV Virtual Function + 177d 0003 CN2350 [LiquidIO II] 2-port 10GbE SRIOV Virtual Function + 177d 0004 CN2350 [LiquidIO II] 2-port 10GbE SRIOV Virtual Function + 177d 0005 CN2360 [LiquidIO II] 2-port 10GbE SRIOV Virtual Function + 177d 0006 CN2360 [LiquidIO II] 2-port 25GbE SRIOV Virtual Function + 177d 0007 CN2350 [LiquidIO II] 2-port 25GbE SRIOV Virtual Function + 9713 CN23XX [LiquidIO II] NVMe SRIOV Virtual Function + 9800 Octeon Fusion CNF75XX Processor + a001 ThunderX MRML(Master RML Bridge to RSL devices) + a002 THUNDERX PCC Bridge + 177d a102 CN88XX PCC Bridge + a008 THUNDERX SMMU + 177d a108 CN88XX SMMU + a009 THUNDERX Generic Interrupt Controller + a00a THUNDERX GPIO Controller + a00b THUNDERX MPI / SPI Controller + a00c THUNDERX MIO-PTP Controller + a00d THUNDERX MIX Network Controller + a00e THUNDERX Reset Controller + a00f THUNDERX UART Controller + a010 THUNDERX eMMC/SD Controller + a011 THUNDERX MIO-BOOT Controller + a012 THUNDERX TWSI / I2C Controller + a013 THUNDERX CCPI (Multi-node connect) + a014 THUNDERX Voltage Regulator Module + a015 THUNDERX PCIe Switch Logic Interface + a016 THUNDERX Key Memory + a017 THUNDERX GTI (Global System Timers) + a018 THUNDERX Random Number Generator + a019 THUNDERX DFA + a01a THUNDERX Zip Coprocessor + a01b THUNDERX xHCI USB Controller + a01c THUNDERX AHCI SATA Controller + 177d a11c CN88XX AHCI SATA Controller + a01d THUNDERX RAID Coprocessor + a01e THUNDERX Network Interface Controller + a01f THUNDERX Traffic Network Switch + a020 THUNDERX PEM (PCI Express Interface) + a021 THUNDERX L2C (Level-2 Cache Controller) + a022 THUNDERX LMC (DRAM Controller) + a023 THUNDERX OCLA (On-Chip Logic Analyzer) + a024 THUNDERX OSM + a025 THUNDERX GSER (General Serializer/Deserializer) + a026 THUNDERX BGX (Common Ethernet Interface) + a027 THUNDERX IOBN + a029 THUNDERX NCSI (Network Controller Sideband Interface) + a02a ThunderX SGPIO (Serial GPIO controller for SATA disk lights) + a02b THUNDERX SMI / MDIO Controller + a02c THUNDERX DAP (Debug Access Port) + a02d THUNDERX PCIERC (PCIe Root Complex) + a02e ThunderX L2C-TAD (Level 2 cache tag and data) + a02f THUNDERX L2C-CBC + a030 THUNDERX L2C-MCI + a031 THUNDERX MIO-FUS (Fuse Access Controller) + a032 THUNDERX FUSF (Fuse Controller) + a033 THUNDERX Random Number Generator virtual function + a034 THUNDERX Network Interface Controller virtual function + a035 THUNDERX Parallel Bus + a036 ThunderX RAD (RAID acceleration engine) virtual function + a037 THUNDERX ZIP virtual function + a040 THUNDERX CPT Cryptographic Accelerator +# MAC found on OcteonTx2 series of silicons + a059 Octeon TX2 CGX (MAC) +# MAC found on Octeon 10 series of silicons + a060 Octeon 10 RPM (MAC) +# Octeon Tx2 Loopback Interface block + a061 Octeon Tx2 Loopback Interface (LBK) +# Octeon Tx2 Resource Virtualization Unit Physical Function + a063 Octeon Tx2 RVU Physical Function +# Octeon Tx2 Resource Virtualization Unit Virtual Function + a064 Octeon Tx2 RVU Virtual Function +# Octeon Tx2 Resource Virtualization Unit Admin Function + a065 Octeon Tx2 RVU Admin Function +# PTP Timestamping unit on Octeon 10 silicon series + a09e Octeon 10 PTP controller +# Cryptographic Accelerator found on Octeon 10 series of silicons + a0f2 Octeon 10 CPT Cryptographic Accelerator, Physical function + a0f3 Octeon 10 CPT Cryptographic Accelerator, Virtual function +# Octeon Tx2 System DPI Interface (SDP) Physical Function + a0f6 Octeon Tx2 SDP Physical Function +# Octeon Tx2 System DPI Interface (SDP) Virtual Function + a0f7 Octeon Tx2 SDP Virtual Function + a0f8 Octeon Tx2 Loopback Interface Virtual Function (LBKVF) +# Cryptographic Accelerator found on OcteonTx2 series of silicons + a0fd Octeon Tx2 CPT Cryptographic Accelerator, Physical function +# Cryptographic Accelerator found on OcteonTx2 series of silicons + a0fe Octeon Tx2 CPT Cryptographic Accelerator, Virtual function + a100 THUNDERX CN88XX 48 core SoC + a200 OCTEON TX CN81XX/CN80XX + a300 OCTEON TX CN83XX + af00 CN99xx [ThunderX2] Integrated PCI Host bridge + af84 CN99xx [ThunderX2] Integrated PCI Express RP Bridge +1787 Hightech Information System Ltd. +1789 Ennyah Technologies Corp. +# also used by Struck Innovative Systeme for joint developments +1796 Research Centre Juelich + 0001 SIS1100 [Gigabit link] + 0002 HOTlink + 0003 Counter Timer + 0004 CAMAC Controller + 0005 PROFIBUS + 0006 AMCC HOTlink + 0007 LVD Cable Bus + 0008 100MHz, 64bit Sequence Generator based on VirtexII + 0009 double 14bit-ADC + 000a SIS1100 with N110 TDC + 000b double 14bit-ADC with memory + 000d Synchronisation Slave + 000e SIS1100-eCMC + 000f TDC (GPX) + 0010 PCIe Counter Timer + 0011 SIS1100-e single link + 0012 SIS1100-e quad link + 0013 4x2.5GHz SFP to 4 lane PCIe bridge + 0014 SIS1100 with GPX piggy back + 0015 SIS8100 [Gigabit link, MicroTCA] + 0016 SIS1100e with 4 lanes + 0017 Quad 14bit, 50MHz ADC with 2.5GHz SFP + 0018 SIS8300 4-lane PCI Express, Micro TCA for Physics ADC + 0019 SIS SIS8300-Lx MTCA.4 Digitizer + 001a 100MHz, 64bit Sequence Generator based on VirtexII + 001c Quad 16bit, 150MHz ADC with 2.5GHz SFP + 0030 100MHz, 64bit Sequence Generator based on Spartan6 + 0031 200MHz 64bit Sequence Generator based on Spartan7 +# nee Techwell, Inc. +1797 Intersil Techwell + 5864 TW5864 multimedia video controller + 6801 TW6802 multimedia video card + 6802 TW6802 multimedia other device + 6810 TW6816 multimedia video controller + 6811 TW6816 multimedia video controller + 6812 TW6816 multimedia video controller + 6813 TW6816 multimedia video controller +# port 5 of 8 + 6814 TW6816 multimedia video controller +# port 6 of 8 + 6815 TW6816 multimedia video controller +# port 7 of 8 + 6816 TW6816 multimedia video controller +# channel 8 of 8 + 6817 TW6816 multimedia video controller +# Example MuniPCI-E card: http://www.commell.com.tw/product/surveillance/MPX-6864.htm + 6864 TW6864 multimedia video controller +1799 Belkin + 6001 F5D6001 Wireless PCI Card [Realtek RTL8180] + 6020 F5D6020 v3000 Wireless PCMCIA Card [Realtek RTL8180] + 6060 F5D6060 Wireless PDA Card + 700f F5D7000 v7000 Wireless G Desktop Card [Realtek RTL8185] + 701f F5D7010 v7000 Wireless G Notebook Card [Realtek RTL8185] +179a id Quantique + 0001 Quantis PCI 16Mbps +179c Data Patterns + 0557 DP-PCI-557 [PCI 1553B] + 0566 DP-PCI-566 [Intelligent PCI 1553B] + 1152 DP-cPCI-1152 (8-channel Isolated ADC Module) + 5031 DP-CPCI-5031-Synchro Module +# cPCI Carrier for Mezzanine Modules + 5112 DP-cPCI-5112 [MM-Carrier] + 5121 DP-CPCI-5121-IP Carrier + 5211 DP-CPCI-5211-IP Carrier + 5679 AGE Display Module +17a0 Genesys Logic, Inc + 7163 GL9701 PCIe to PCI Bridge + 8083 GL880 USB 1.1 UHCI controller + 8084 GL880 USB 2.0 EHCI controller + 9750 GL9750 SD Host Controller + 9755 GL9755 SD Host Controller + e763 GL9763E eMMC Controller +17aa Lenovo + 0003 LENSE20256GMSP34MEAT2TA + 0004 LENSE20512GMSP34MEAT2TA +# 250GB nvme ssd from lenovo, can be found in Thinkpad x380 yoga + 0005 LENSE30256GMSP34MEAT3TA + 0006 LENSE30512GMSP34MEAT3TA + 3181 ThinkCentre M75n IoT + 402b Intel 82599ES 10Gb 2-port Server Adapter X520-2 + 9602 RS780/RS880 PCI to PCI bridge (int gfx) +17ab Phillips Components +17af Hightech Information System Ltd. +17b3 Hawking Technologies + ab08 PN672TX 10/100 Ethernet +17b4 Indra Networks, Inc. + 0011 WebEnhance 100 GZIP Compression Card + 0012 WebEnhance 200 GZIP Compression Card + 0015 WebEnhance 300 GZIP Compression Card + 0016 StorCompress 300 GZIP Compression Card + 0017 StorSecure 300 GZIP Compression and AES Encryption Card +17c0 Wistron Corp. +17c2 Newisys, Inc. +17c3 Protogate, Inc. +# nee Airgo Networks, Inc. +17cb Qualcomm Technologies, Inc + 0001 AGN100 802.11 a/b/g True MIMO Wireless Card + 1385 5c00 WGM511 Pre-N 802.11g Wireless CardBus Adapter + 1737 0045 WMP54GX v1 802.11g Wireless-G PCI Adapter with SRX + 0002 AGN300 802.11 a/b/g True MIMO Wireless Card + 1385 6d00 WPNT511 RangeMax 240 Mbps Wireless CardBus Adapter + 1737 0054 WPC54GX4 v1 802.11g Wireless-G Notebook Adapter with SRX400 + 0104 APQ8096 PCIe Root Complex [Snapdragon 820] + 0105 MSM8998 PCIe Root Complex + 0106 SDM850 PCIe Root Complex [Snapdragon 850] + 0107 SDM850 PCIe Root Port [Snapdragon 850] + 0108 SM8150 PCIe Root Complex + 0109 SA8195P PCIe Root Complex + 010b SM8250 PCIe Root Complex [Snapdragon 865/870 5G] + 010c SM8350 PCIe Root Complex [Snapdragon 888] + 010e SC8280XP PCI Express Root Port + 0110 SM8475 PCIe Root Complex [Snapdragon 8+ Gen 1] + 0300 MDM9x35 LTE Modem [Snapdragon X7] + 0301 MDM9x45 LTE Modem [Snapdragon X12] + 0302 MDM9x55 LTE Modem [Snapdragon X16] + 0304 SDX24 [Snapdragon X24 4G] + 0306 SDX55 [Snapdragon X55 5G] + 0400 Datacenter Technologies QDF2432 PCI Express Root Port + 0401 Datacenter Technologies QDF2400 PCI Express Root Port + 1000 QCS405 PCIe Root Complex + 1101 QCA6390 Wireless Network Adapter + 1103 QCNFA765 Wireless Network Adapter + 1104 QCN6024/9024/9074 Wireless Network Adapter + 1107 WCN785x Wi-Fi 7(802.11be) 320MHz 2x2 [FastConnect 7800] + 105b e0f7 High Band Simultaneous Wireless Network Adapter + 1108 IPQ95xx/97xx PCIe Root Port + 1109 QCN62xx/92xx Wireless Network Adapter +17cc NetChip Technology, Inc + 2280 NET2280 PCI to USB 2.0 Hi-Speed Peripheral Controller + 2282 NET2282 PCI to USB 2.0 Hi-Speed Peripheral Controller +17cd Cadence Design Systems, Inc. +17cf Z-Com, Inc. +17d3 Areca Technology Corp. + 1110 ARC-1110 4-Port PCI-X to SATA RAID Controller + 1120 ARC-1120 8-Port PCI-X to SATA RAID Controller + 1130 ARC-1130 12-Port PCI-X to SATA RAID Controller + 1160 ARC-1160 16-Port PCI-X to SATA RAID Controller + 1170 ARC-1170 24-Port PCI-X to SATA RAID Controller + 1201 ARC-1200 2-Port PCI-Express to SATA II RAID Controller + 1203 ARC-1203 2/4/8 Port PCIe 2.0 to SATA 6Gb RAID Controller + 1210 ARC-1210 4-Port PCI-Express to SATA RAID Controller + 1214 ARC-12x4 PCIe 2.0 to SAS/SATA 6Gb RAID Controller + 17d3 1214 ARC-1214 4-Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller + 17d3 1224 ARC-1224 8-Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller + 17d3 1264 ARC-1264 12/16 Port PCIe 2.0 to SATA 6Gb RAID Controller + 17d3 1284 ARC-1284 24 Port PCIe 2.0 to SATA 6Gb RAID Controller + 1220 ARC-1220 8-Port PCI-Express to SATA RAID Controller + 1222 ARC-1222 8-Port PCI-Express to SAS/SATA II RAID Controller + 1230 ARC-1230 12-Port PCI-Express to SATA RAID Controller + 1260 ARC-1260 16-Port PCI-Express to SATA RAID Controller + 1280 ARC-1280/1280ML 24-Port PCI-Express to SATA II RAID Controller + 17d3 1221 ARC-1221 8-Port PCI-Express to SATA RAID Controller + 1300 ARC-1300ix-16 16-Port PCI-Express to SAS Non-RAID Host Adapter + 1320 ARC-1320 8/16 Port PCIe 2.0 to SAS/SATA 6Gb Non-RAID Host Adapter + 1330 ARC-1330 16 Port PCIe 3.0 to SAS/SATA 12Gb Non-RAID Host Adapter + 1680 ARC-1680 series PCIe to SAS/SATA 3Gb RAID Controller + 17d3 1212 ARC-1212 4-Port PCIe to SAS/SATA II RAID Controller + 17d3 1222 ARC-1222 8-Port PCIe to SAS/SATA 3Gb RAID Controller + 17d3 1680 ARC-1680 8/12/16/24 Port PCIe to SAS/SATA 3Gb RAID Controller + 1880 ARC-188x series PCIe 2.0/3.0 to SAS/SATA 6/12Gb RAID Controller + 17d3 1213 ARC-1213 4-Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller + 17d3 1215 ARC-1215 4-Port PCIe 3.0 to SAS/SATA 6Gb RAID Controller + 17d3 1216 ARC-1216 4-Port PCIe 3.0 to SAS/SATA 12Gb RAID Controller + 17d3 1223 ARC-1223 8-Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller + 17d3 1225 ARC-1225 8-Port PCIe 3.0 to SAS/SATA 6Gb RAID Controller + 17d3 1226 ARC-1226 8-Port PCIe 3.0 to SAS/SATA 12Gb RAID Controller + 17d3 1880 ARC-1880 8/12/16/24 Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller + 17d3 1882 ARC-1882 8/12/16/24 Port PCIe 3.0 to SAS/SATA 6Gb RAID Controller + 17d3 1883 ARC-1883 8/12/16/24 Port PCIe 3.0 to SAS/SATA 12Gb RAID Controller + 1884 ARC-1884 series PCIe 3.0 to SAS/SATA 12/6Gb RAID Controller + 1886 ARC-1886 series PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller + 17d3 1686 ARC-1686 PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller + 17d3 1886 ARC-1886 PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller + 188a ARC-1886 series PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller + 17d3 1217 ARC-1217 4-Port PCIe 4.0 to SAS/SATA 12/6Gb RAID Controller + 17d3 1227 ARC-1227 8-Port PCIe 4.0 to SAS/SATA 12/6Gb RAID Controller + 17d3 1686 ARC-1686 PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller + 17d3 1688 ARC-1688 PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller + 17d3 1886 ARC-1886 PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller +# nee Neterion Inc., previously S2io Inc. +17d5 Exar Corp. + 5731 Xframe 10-Gigabit Ethernet PCI-X + 5732 Xframe II 10-Gigabit Ethernet PCI-X 2.0 + 5831 Xframe 10-Gigabit Ethernet PCI-X + 103c 12d5 PCI-X 133MHz 10GbE SR Fiber + 10a9 8020 Single Port 10-Gigabit Ethernet (PCI-X, Fiber) + 10a9 8024 Single Port 10-Gigabit Ethernet (PCI-X, Fiber) + 5832 Xframe II 10-Gigabit Ethernet PCI-X 2.0 + 103c 1337 PCI-X 266MHz 10GigE SR [AD385A] + 10a9 8021 Single Port 10-Gigabit Ethernet II (PCI-X, Fiber) + 17d5 6020 Xframe II SR + 17d5 6021 Xframe II SR, Low Profile + 17d5 6022 Xframe E SR + 17d5 6420 Xframe II LR + 17d5 6421 Xframe II LR, Low Profile + 17d5 6422 Xframe E LR + 17d5 6c20 Xframe II CX4 + 17d5 6c21 Xframe II CX4, Low Profile + 17d5 6c22 Xframe E CX4 + 5833 X3100 Series 10 Gigabit Ethernet PCIe + 17d5 6030 X3110 Single Port SR + 17d5 6031 X3120 Dual Port SR + 17d5 6430 X3110 Single Port LR + 17d5 6431 X3120 Dual Port LR + 17d5 7030 X3110 Single Port LRM + 17d5 7031 X3120 Dual Port LRM + 17d5 7430 X3110 Single Port 10GBase-T + 17d5 7431 X3120 Dual Port 10GBase-T + 17d5 7830 X3110 Single Port 10GBase-CR + 17d5 7831 X3120 Dual Port 10GBase-CR +17db Cray Inc + 0101 XT Series [Seastar] 3D Toroidal Router + 0501 Cassini 1 [Slingshot 200Gb] +17de KWorld Computer Co. Ltd. +17df Dini Group + 1864 Virtex4 PCI Board w/ QL5064 Bridge [DN7000K10PCI/DN8000K10PCI/DN8000K10PSX/NOTUS] + 1865 Virtex4 ASIC Emulator [DN8000K10PCIe] + 1866 Virtex4 ASIC Emulator Cable Connection [DN8000K10PCI] + 1867 Virtex4 ASIC Emulator Cable Connection [DN8000K10PCIe] + 1868 Virtex4 ASIC Emulator [DN8000K10PCIe-8] + 1900 Virtex5 PCIe ASIC Emulator [DN9000K10PCIe8T/DN9002K10PCIe8T/DN9200K10PCIe8T/DN7006K10PCIe8T/DN7406K10PCIe8T] + 1901 Virtex5 PCIe ASIC Emulator Large BARs [DN9000K10PCIe8T/DN9002K10PCIe8T/DN9200K10PCIe8T/DN7006K10PCIe8T/DN7406K10PCIe8T] + 1902 Virtex5 PCIe ASIC Emulator Low Power [Interceptor] + 1903 Spartan6 PCIe FPGA Accelerator Board [DNBFCS12PCIe] + 1904 Virtex6 PCIe ASIC Emulation Board [DNDUALV6_PCIe4] + 1905 Virtex6 PCIe ASIC Emulation Board [DNV6F6PCIe] + 1906 Virtex6 PCIe ASIC Emulation Board [DN2076K10] + 1907 Virtex6 PCIe ASIC Emulation Board [DNV6F2PCIe] + 1908 Virtex6 PCIe ASIC Emulation Board Large BARs[DNV6F2PCIe] + 1909 Kintex7 PCIe FPGA Accelerator Board [DNK7F5PCIe] + 190a Virtex7 PCIe ASIC Emulation Board [DNV7F1A] + 190b Stratix5 PCIe ASIC Emulation Board [DNS5GXF2] + 190c Virtex7 PCIe ASIC Emulation Board [DNV7F2A] + 190d Virtex7 PCIe ASIC Emulation Board [DNV7F4A] + 190e Virtex7 PCIe ASIC Emulation Board [DNV7F2B] + 190f KintexUS PCIe MainRef Design [DNPCIE_40G_KU_LL] + 1910 VirtexUS ASIC Emulation Board [DNVUF4A] + 1911 VirtexUS PCIe ASIC Emulation Board [DNVU_F2PCIe] + 1912 KintexUS PCIe MainRef Design [DNPCIe_40G_KU_LL_QSFP] + 1913 VirtexUS ASIC Emulation Board [DNVUF1A] + 1914 VirtexUS ASIC Emulation Board [DNVUF2A] + 1915 Arria10 PCIe MainRef Design [DNPCIe_80G_A10_LL] + 1916 VirtexUS PCIe Accelerator Board [DNVUF2_HPC_PCIe] + 1917 UltrascalePlus PCIe Accelerator Board [DNPCIe_400G_VU_LL] + 1918 VirtexUS+ ASIC Emulation Board [DNVUPF4A] + 1919 UltrascalePlus PCIe Accelerator Board [DNPCIe_400G_VUP_HBM_LL] + 1a00 Virtex6 PCIe DMA Netlist Design + 1a01 Virtex6 PCIe Darklite Design [DNPCIe_HXT_10G_LL] + 1a02 Virtex7 PCIe DMA Netlist Design + 1a03 Kintex7 PCIe Darklite Design [DNPCIe_K7_10G_LL] + 1a05 Stratix5 PCIe Darklite Design [DNS5GX_F2] + 1a06 VirtexUS PCIe DMA Netlist Design + 1a07 KintexUS PCIe Darklite Design [DNPCIe_40G_KU_LL] + 1a08 KintexUS PCIe Darklite Design [DNPCIe_40G_KU_LL_QSFP] + 1a09 Arria10 PCIe Darklite Design [DNPCIe_80G_A10_LL] + 1a0a VirtexUS PCIe Darklite Design [DNVUF2_HPC_PCIe] + 1a0b UltrascalePlus PCIe Darklite Design [DNPCIe_400G_VU_LL] + 1a0c KintexUS PCIe DRAM Packet Capture Design [DNPCIe_40G_KU_LL] + 1a0d KintexUS PCIe DRAM Packet Capture Design [DNPCIe_40G_KU_LL_2QSFP] + 1a0e UltrascalePlus PCIe Darklite Design [DNPCIe_400G_VUP_HBM_LL] +17e4 Sectra AB + 0001 KK671 Cardbus encryption board + 0002 KK672 Cardbus encryption board +# nee Entropic Communications Inc. +17e6 MaxLinear + 0010 EN2010 [c.Link] MoCA Network Controller (Coax, PCI interface) + 0011 EN2010 [c.Link] MoCA Network Controller (Coax, MPEG interface) + 0021 EN2210 [c.Link] MoCA Network Controller (Coax) + 0025 EN2510 [c.Link] MoCA Network Controller (Coax, PCIe interface) + 0027 EN2710 [c.Link] MoCA 2.0 Network Controller (Coax, PCIe interface) + 3700 MoCA 2.0 Network Controller (Coax, PCIe interface) + 3710 MoCA 2.5 Network Controller (Coax, PCIe interface) +17ee Connect Components Ltd +17f2 Albatron Corp. +17f3 RDC Semiconductor, Inc. + 1010 R1010 IDE Controller + 1011 R1011 IDE Controller + 1012 R1012 IDE Controller + 1031 PCI/PCI-X to PCI-E Bridge +# Integrated in Vortex86EX, Vortex86EX2 SoC + 1070 CAN Bus Controller +# Integrated in Vortex86EX, Vortex86EX2 SoCs + 1331 Motion Control Interface +# Found in the Vortex86EX2 SoC + 1930 Hybrid Function Control Register +# IGP = on-chip integrated in the MSTI-PMX-1000 (Vortex86MX). + 2010 RDC M2010 VGA-compatible graphics adapter + 2012 M2012/R3308 VGA-compatible graphics adapter +# IGP = on-chip integrated in the Vortex86DX3. Basic 2D accel. UMA architecture. + 2015 RDC M2015 VGA-compatible graphics adapter + 3010 R3010 HD Audio Controller +# Found in the Vortex86EX SoC + 6011 R6011 ISA Bridge +# Found in the Vortex86EX2 SoC + 6013 R6013 ISA Bridge + 6020 R6020 North Bridge + 6021 R6021 Host Bridge +# Integrated in the Vortex86DX2 SoC + 6022 R6022 Host Bridge +# Found in the Vortex86DX3 SoC + 6023 R6023 Host Bridge +# Found in the Vortex86EX SoC + 6025 R6025 Host Bridge +# Found in the Vortex86EX2 SoC + 6026 R6026 Host Bridge + 6030 R6030 ISA Bridge + 6031 R6031 ISA Bridge +# Found in the Vortex86DX3 SoC + 6035 R6035 ISA Bridge +# Found in MSTI-PMX-1000 (Vortex86MX) SoC. + 6036 R6036 ISA Bridge + 6040 R6040 MAC Controller + 6060 R6060 USB 1.1 Controller + 6061 R6061 USB 2.0 Controller +17f7 Topdek Semiconductor Inc. +17f9 Gemtek Technology Co., Ltd +17fc IOGEAR, Inc. +17fe InProComm Inc. + 2120 IPN 2120 802.11b + 1737 0020 WMP11 v4 802.11b Wireless-B PCI Adapter + 2220 IPN 2220 802.11g + 1468 0305 T60N871 802.11g Mini PCI Wireless Adapter + 1737 0029 WPC54G v4 802.11g Wireless-G Notebook Adapter +17ff Benq Corporation +1800 Qualcore Logic Inc. + 1100 Nanospeed Trading Gateway +1803 ProdaSafe GmbH +1804 Ralink corp. (wrong ID) + 3060 RT3060 Wireless 802.11n 1T/1R +1805 Euresys S.A. + 0201 PICOLO Alert PCI + 0202 PICOLO Diligent + 0204 PICOLO Alert-RC + 0205 PICOLO Alert PCIe + 0206 PICOLO Diligent Plus PCIe + 0207 PICOLO Alert-RC PCIe + 0300 GRABLINK Expert 2 + 0301 GRABLINK Quickpack ColorScan + 0302 GRABLINK Value cPCI + 0303 GRABLINK Expert 2 cPCI + 0305 GRABLINK Avenue + 0306 GRABLINK Quickpack CFA + 0307 GRABLINK Express + 0308 GRABLINK Quickpack CFA PCIe + 0309 GRABLINK Quickpack CFA PCIe (Recovery) + 030a GRABLINK Full + 030b GRABLINK Full (Recovery) + 030c GRABLINK DualBase + 030d GRABLINK DualBase (Recovery) + 030e GRABLINK Base + 030f GRABLINK Base (Recovery) + 0310 GRABLINK Full XR + 0311 GRABLINK Full XR (Recovery) + 0401 DOMINO Iota + 0402 DOMINO Alpha 2 + 0403 DOMINO Harmony + 0404 DOMINO Melody + 0407 DOMINO Symphony + 0408 DOMINO Symphony PCIe +1809 Lumanate, Inc. +180c IEI Integration Corp +1813 Ambient Technologies Inc + 4000 HaM controllerless modem + 16be 0001 V9x HAM Data Fax Modem + 4100 HaM plus Data Fax Modem + 16be 0002 V9x HAM 1394 +1814 Ralink corp. + 0101 Wireless PCI Adapter RT2400 / RT2460 + 1043 0127 WiFi-b add-on Card + 1371 0010 Minitar MNW2BPCI Wireless PCI Card + 1462 6828 PC11B2 (MS-6828) Wireless 11b PCI Card + 0200 RT2500 802.11g PCI [PC54G2] + 0201 RT2500 Wireless 802.11bg + 1043 130f WL-130g + 1186 3c00 DWL-G650X Wireless 11g CardBus Adapter + 1371 001e CWC-854 Wireless-G CardBus Adapter + 1371 001f CWM-854 Wireless-G Mini PCI Adapter + 1371 0020 CWP-854 Wireless-G PCI Adapter + 1458 e381 GN-WMKG 802.11b/g Wireless CardBus Adapter + 1458 e931 GN-WIKG 802.11b/g mini-PCI Adapter + 1462 6833 Unknown 802.11g mini-PCI Adapter + 1462 6835 Wireless 11G CardBus CB54G2 + 1737 0032 WMP54G v4.0 PCI Adapter + 1799 700a F5D7000 v2000/v3000 Wireless G Desktop Card + 1799 701a F5D7010 v2000/v3000 Wireless G Notebook Card + 1814 2560 RT2500 Wireless 802.11bg + 182d 9073 WL-115 Wireless Network PCI Adapter + 185f 22a0 CN-WF513 Wireless Cardbus Adapter + 18eb 5312 WL531P IEEE 802.11g PCI Card-EU + 1948 3c00 C54RC v1 Wireless 11g CardBus Adapter + 1948 3c01 C54Ri v1 Wireless 11g PCI Adapter + 0300 Wireless Adapter Canyon CN-WF511 + 0301 RT2561/RT61 802.11g PCI + 1186 3c08 AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.E1) + 1186 3c09 DWL-G510 Rev C + 13d1 abe3 miniPCI Pluscom 802.11 a/b/g + 1458 e933 GN-WI01GS + 1458 e934 GN-WP01GS + 1462 b833 MP54G5 (MS-6833B) + 1737 0055 WMP54G v4.1 + 1799 700e F5D7000 v6000 Wireless G Desktop Card + 1799 701e F5D7010 v6000 Wireless G Notebook Card + 17f9 0012 AWLC3026T 802.11g Wireless CardBus Adapter + 1814 2561 EW-7108PCg/EW-7128g + 0302 RT2561/RT61 rev B 802.11g + 1186 3a71 DWA-510 Wireless G Desktop Adapter + 1186 3c08 AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.E2) + 1186 3c09 AirPlus G DWL-G510 Wireless Network Adapter (Rev.C) + 1462 b834 PC54G3 Wireless 11g PCI Card + 1948 3c23 C54RC v2 Wireless 11g CardBus Adapter + 1948 3c24 C54Ri v2 Wireless 11g PCI Adapter + 0401 RT2600 802.11 MIMO + 1737 0052 WPC54GR v1 802.11g Wireless-G Notebook Adapter with RangeBooster + 17f9 0011 WPCR-137G 802.11bg Wireless CardBus Adapter + 17f9 0016 WPIR-119GH 802.11bg Wireless Desktop Adapter + 0601 RT2800 802.11n PCI + 1799 801c F5D8011 v3 802.11n N1 Wireless Notebook Card + 187e 3412 NWD-310N 802.11n Wireless PCI Adapter + 0681 RT2890 Wireless 802.11n PCIe + 1458 e939 GN-WS30N-RH 802.11bgn Mini PCIe Card + 0701 RT2760 Wireless 802.11n 1T/2R + 1737 0074 WMP110 v2 802.11n RangePlus Wireless PCI Adapter + 0781 RT2790 Wireless 802.11n 1T/2R PCIe + 11ad 7600 HP WN7600R + 1814 2790 RT2790 Wireless 802.11n 1T/2R PCIe + 3060 RT3060 Wireless 802.11n 1T/1R + 1186 3c04 DWA-525 Wireless N 150 Desktop Adapter (rev.A1) + 3062 RT3062 Wireless 802.11n 2T/2R + 3090 RT3090 Wireless 802.11n 1T/1R PCIe + 13bd 1057 GN-WS32L-RH Half-size Mini PCIe Card + 3091 RT3091 Wireless 802.11n 1T/2R PCIe + 3092 RT3092 Wireless 802.11n 2T/2R PCIe + 3290 RT3290 Wireless 802.11n 1T/1R PCIe + 103c 18ec Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter + 3298 RT3290 Bluetooth + 103c 18ec Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter + 3592 RT3592 Wireless 802.11abgn 2T/2R PCIe + 359f RT3592 PCIe Wireless Network Adapter + 5360 RT5360 Wireless 802.11n 1T/1R + 1186 3c05 DWA-525 Wireless N 150 Desktop Adapter (rev.A2) + 20f4 703a TEW-703PI N150 Wireless PCI Adapter + 5362 RT5362 PCI 802.11n Wireless Network Adapter + 5390 RT5390 Wireless 802.11n 1T/1R PCIe + 103c 1636 U98Z077.00 Half-size Mini PCIe Card + 5392 RT5392 PCIe Wireless Network Adapter + 539b RT5390R 802.11bgn PCIe Wireless Network Adapter + 539f RT5390 [802.11 b/g/n 1T1R G-band PCI Express Single Chip] + 103c 1637 Pavilion DM1Z-3000 PCIe wireless card + 5592 RT5592 PCIe Wireless Network Adapter + e932 RT2560F 802.11 b/g PCI +1815 Devolo AG +1820 InfiniCon Systems Inc. +1822 Twinhan Technology Co. Ltd + 4e35 Mantis DTV PCI Bridge Controller [Ver 1.0] +182d SiteCom Europe BV +# HFC-based ISDN card + 3069 ISDN PCI DC-105V2 + 9790 WL-121 Wireless Network Adapter 100g+ [Ver.3] +182e Raza Microelectronics, Inc. + 0008 XLR516 Processor +# Strange vendor ID used by BCM5785 when in RAID mode +182f Broadcom +# HT1000 uses 3 IDs 1166:024a (Native SATA Mode), 1166:024b (PATA/IDE Mode), 182f:000b (RAID Mode) depends on SATA BIOS setting + 000b BCM5785 [HT1000] SATA (RAID Mode) +1830 Credence Systems Corporation + 8000 CPIn + 8001 CPId + 8002 CPIx + 8003 CPIq +183b MikroM GmbH + 08a7 MVC100 DVI + 08a8 MVC101 SDI + 08a9 MVC102 DVI+Audio + 08b0 MVC200-DC +1846 Alcatel-Lucent +1849 ASRock Incorporation + 9602 RS780/RS880 PCI to PCI bridge (int gfx) +184a Thales Computers + 1100 MAX II cPLD +1850 Advantest Corporation + 0048 EK220-66401 Computer Interface Card +1851 Microtune, Inc. +1852 Anritsu Corp. +1853 SMSC Automotive Infotainment System Group +1854 LG Electronics, Inc. +185b Compro Technology, Inc. + 1489 VideoMate Vista T100 +185f Wistron NeWeb Corp. +1864 SilverBack + 2110 ISNAP 2110 +1867 Topspin Communications + 5a44 MT23108 InfiniHost HCA + 5a45 MT23108 InfiniHost HCA flash recovery + 5a46 MT23108 InfiniHost HCA bridge + 6278 MT25208 InfiniHost III Ex (Tavor compatibility mode) + 6282 MT25208 InfiniHost III Ex +186c Humusoft, s.r.o. + 0612 AD612 Data Acquisition Device + 0614 MF614 Multifunction I/O Card + 0622 AD622 Data Acquisition Device + 0624 MF624 Multifunction I/O PCI Card + 0625 MF625 3-phase Motor Driver + 0634 MF634 Multifunction I/O PCIe Card + 0644 MF644 Multifunction I/O Thb Card +186f WiNRADiO Communications +1876 L-3 Communications + a101 VigraWATCH PCI + a102 VigraWATCH PMC + a103 Vigra I/O +187e ZyXEL Communications Corporation + 3403 ZyAir G-110 802.11g + 340e M-302 802.11g XtremeMIMO +1885 Avvida Systems Inc. +1888 Varisys Ltd + 0301 VMFX1 FPGA PMC module + 0601 VSM2 dual PMC carrier + 0710 VS14x series PowerPC PCI board + 0720 VS24x series PowerPC PCI board +188a Ample Communications, Inc +1890 Egenera, Inc. +1894 KNC One +1896 B&B Electronics Manufacturing Company, Inc. + 4202 MIport 3PCIU2 2-port Serial + 4204 MIport 3PCIU4 4-port Serial + 4208 MIport 3PCIU8 8-port Serial + 4211 MIport 3PCIOU1 1-port Isolated Serial + 4212 MIport 3PCIOU2 2-port Isolated Serial + 4214 MIport 3PCIOU4 4-port Isolated Serial + bb10 3PCI2 2-Port Serial + bb11 3PCIO1 1-Port Isolated Serial +1897 AMtek +18a1 Astute Networks Inc. +18a2 Stretch Inc. + 0002 VRC6016 16-Channel PCIe DVR Card +18a3 AT&T +18ac DViCO Corporation + d500 FusionHDTV 5 + d800 FusionHDTV 3 Gold + d810 FusionHDTV 3 Gold-Q + d820 FusionHDTV 3 Gold-T + db30 FusionHDTV DVB-T Pro + db40 FusionHDTV DVB-T Hybrid + db78 FusionHDTV DVB-T Dual Express +18b8 Ammasso + b001 AMSO 1100 iWARP/RDMA Gigabit Ethernet Coprocessor +# formally Info-Tek Corp. +18bc GeCube Technologies, Inc. +18c3 Micronas Semiconductor Holding AG + 0720 nGene PCI-Express Multimedia Controller + 1461 032e Hybrid M779 PCI-E +# Nee Octigabay System +18c8 Cray Inc +18c9 ARVOO Engineering BV +18ca XGI Technology Inc. (eXtreme Graphics Innovation) + 0020 Z7/Z9 (XG20 core) + 0021 Z9s/Z9m (XG21 core) + 0027 Z11/Z11M + 0040 Volari V3XT/V5/V8 + 0047 Volari 8300 (chip: XP10, codename: XG47) +# should be 182d +18d2 Sitecom Europe BV (Wrong ID) +# Sitecom HFC-S based ISDN controller card DC-105v2 + 3069 DC-105v2 ISDN controller +18d4 Celestica +18d8 Dialogue Technology Corp. +18dd Artimi Inc + 4c6f Artimi RTMI-100 UWB adapter +18df LeWiz Communications +18e6 MPL AG + 0001 OSCI [Octal Serial Communication Interface] +18eb Advance Multimedia Internet Technology, Inc. +18ec Cesnet, z.s.p.o. + 6d05 ML555 + 18ec 0100 NIC (ethernet interfaces) + 18ec 0200 NIC (szedata2) 4x1G + 18ec 0201 NIC (szedata2) 2x10G + 18ec 0300 NIFIC (szedata2) 4x1G + 18ec 0302 NIFIC (szedata2) 2x10G + 18ec 4200 Flexible FlowMon (szedata2) 1x10G + 18ec ff00 Testing design + 18ec ff01 Boot design + c006 COMBO6 + 18ec d001 COMBO-4MTX + 18ec d002 COMBO-4SFP + 18ec d003 COMBO-4SFPRO + 18ec d004 COMBO-2XFP + c032 COMBO-LXT110 + 18ec 0100 NIC (ethernet interfaces) + 18ec 0200 NIC (szedata2) 4x1G + 18ec 0201 NIC (szedata2) 2x10G + 18ec 0300 NIFIC (szedata2) 4x1G + 18ec 0302 NIFIC (szedata2) 2x10G + 18ec 4200 Flexible FlowMon (szedata2) 1x10G + 18ec ff00 Testing design + 18ec ff01 Boot design + c045 COMBO6E + c050 COMBO-PTM + c058 COMBO6X + 18ec d001 COMBO-4MTX + 18ec d002 COMBO-4SFP + 18ec d003 COMBO-4SFPRO + 18ec d004 COMBO-2XFP + c132 COMBO-LXT155 + 18ec 0100 NIC (ethernet interfaces) + 18ec 0200 NIC (szedata2) 4x1G + 18ec 0201 NIC (szedata2) 2x10G + 18ec 0300 NIFIC (szedata2) 4x1G + 18ec 0302 NIFIC (szedata2) 2x10G + 18ec 4200 Flexible FlowMon (szedata2) 1x10G + 18ec ff00 Testing design + 18ec ff01 Boot design + c232 COMBO-FXT100 + 18ec 0100 NIC (ethernet interfaces) + 18ec 0200 NIC (szedata2) 4x1G + 18ec 0201 NIC (szedata2) 2x10G + 18ec 0300 NIFIC (szedata2) 4x1G + 18ec 0302 NIFIC (szedata2) 2x10G + 18ec 4200 Flexible FlowMon (szedata2) 1x10G + 18ec ff00 Testing design + 18ec ff01 Boot design + c400 COMBO-400G1 +18ee Chenming Mold Ind. Corp. +18f1 Spectrum GmbH +18f4 Napatech A/S + 0031 NT20X Network Adapter + 0051 NT20X Capture Card + 0061 NT20E Capture Card + 0064 NT20E Inline Card + 0071 NT4E Capture Card + 0074 NT4E Inline Card + 0081 NT4E 4-port Expansion Card + 0091 NT20X Capture Card [New Rev] + 00a1 NT4E-STD Capture Card + 00a4 NT4E-STD Inline Card +# 8 x 1 Gbps / 10 Gbps PCIe Optical Bypass Adapter + 00b1 NTBPE Optical Bypass Adapter + 00c5 NT20E2 Network Adapter 2x10Gb + 00d5 NT40E2-4 Network Adapter 4x10Gb + 00e5 NT40E2-1 Network Adapter 1x40Gb +# 4-Port Adapter for 1 GbE In-Line Bypass Applications + 00f5 NT4E2-4T-BP Network Adapter 4x1Gb with Electrical Bypass + 0105 NT4E2-4-PTP Network Adapter 4x1Gb + 0115 NT20E2-PTP Network Adapter 2x10Gb + 0125 NT4E2-4-PTP Network Adapter 4x1Gb + 0135 NT20E2-PTP Network Adapter 2x10Gb + 0145 NT40E3-4-PTP Network Adapter 4x10Gb + 0155 NT100E3-1-PTP Network Adapter 1x100Gb + 0165 NT80E3-2-PTP Network Adapter 2x40Gb + 0175 NT20E3-2-PTP Network Adapter 2x10Gb + 0185 NT40A01 Network Adapter + 01a5 NT200A01 Network Adapter + 01c5 NT200A02 Network Adapter + 01d5 NT50B01 Network Adapter + 01e5 NT100A01 Network Adapter + 0215 NT400D11 Network Adapter + 0225 NT40A11 Network Adapter +18f6 NextIO + 1000 [Nexsis] Switch Virtual P2P PCIe Bridge + 1001 [Texsis] Switch Virtual P2P PCIe Bridge + 1050 [Nexsis] Switch Virtual P2P PCI Bridge + 1051 [Texsis] Switch Virtual P2P PCI Bridge + 2000 [Nexsis] Switch Integrated Mgmt. Endpoint + 2001 [Texsis] Switch Integrated Mgmt. Endpoint +18f7 Commtech, Inc. + 0001 ESCC-PCI-335 Serial PCI Adapter [Fastcom] + 0002 422/4-PCI-335 Serial PCI Adapter [Fastcom] + 0003 232/4-1M-PCI Serial PCI Adapter [Fastcom] + 0004 422/2-PCI-335 Serial PCI Adapter [Fastcom] + 0005 IGESCC-PCI-ISO/1 Serial PCI Adapter [Fastcom] + 000a 232/4-PCI-335 Serial PCI Adapter [Fastcom] + 000b 232/8-PCI-335 Serial PCI Adapter [Fastcom] + 000f FSCC Serial PCI Adapter [Fastcom] + 0010 GSCC Serial PCI Adapter [Fastcom] + 0011 QSSB Serial PCI Adapter [Fastcom] + 0014 SuperFSCC Serial PCI Adapter [Fastcom] + 0015 SuperFSCC-104-LVDS Serial PC/104+ Adapter [Fastcom] + 0016 FSCC-232 RS-232 Serial PCI Adapter [Fastcom] +# Software UARTs + 0017 SuperFSCC-104 Serial PC/104+ Adapter [Fastcom] +# Software UARTs + 0018 SuperFSCC/4 Serial PCI Adapter [Fastcom] +# Software UARTs + 0019 SuperFSCC Serial PCI Adapter [Fastcom] + 001a SuperFSCC-LVDS Serial PCI Adapter [Fastcom] +# Software UARTs + 001b FSCC/4 Serial PCI Adapter [Fastcom] +# RS-644 Only + 001c SuperFSCC/4-LVDS Serial PCI Adapter [Fastcom] +# Software UARTs + 001d FSCC Serial PCI Adapter [Fastcom] + 001e SuperFSCC/4 Serial PCIe Adapter [Fastcom] + 001f SuperFSCC/4 Serial cPCI Adapter [Fastcom] + 0020 422/4-PCIe Serial PCIe Adapter [Fastcom] + 0021 422/8-PCIe Serial PCIe Adapter [Fastcom] +# RS-644 Only + 0022 SuperFSCC/4-LVDS Serial PCIe Adapter [Fastcom] +# Software UARTs + 0023 SuperFSCC/4 Serial cPCI Adapter [Fastcom] +# RS-644 Only, Software UARTs + 0025 SuperFSCC/4-LVDS Serial PCI Adapter [Fastcom] +# RS-644 Only, Software UARTs + 0026 SuperFSCC-LVDS Serial PCI Adapter [Fastcom] +# Software UARTs + 0027 FSCC/4 Serial PCIe Adapter [Fastcom] +18fb Resilience Corporation +1904 Hangzhou Silan Microelectronics Co., Ltd. + 2031 SC92031 PCI Fast Ethernet Adapter + 8139 RTL8139D [Realtek] PCI 10/100BaseTX ethernet adaptor +1905 Micronas USA, Inc. +1912 Renesas Technology Corp. + 0002 SH7780 PCI Controller (PCIC) + 0011 SH7757 PCIe End-Point [PBI] + 0012 SH7757 PCIe-PCI Bridge [PPB] + 0013 SH7757 PCIe Switch [PS] + 0014 uPD720201 USB 3.0 Host Controller + 0015 uPD720202 USB 3.0 Host Controller + 4c52 9a72 LRSU9A72 2-Port USB 3.0 Exchange Adapter + 001a SH7758 PCIe-PCI Bridge [PPB] + 001b SH7758 PCIe End-Point [PBI] + 001d SH7758 PCIe Switch [PS] +1919 Soltek Computer Inc. +1923 Sangoma Technologies Corp. + 0040 A200/Remora FXO/FXS Analog AFT card + 0100 A104d QUAD T1/E1 AFT card + 0300 A101 single-port T1/E1 + 0400 A104u Quad T1/E1 AFT +1924 AMD Solarflare + 0703 SFC4000 rev A net [Solarstorm] + 10b8 0102 SMC10GPCIe-10BT (A2) [TigerCard] + 10b8 0103 SMC10GPCIe-10BT (A3) [TigerCard] + 10b8 0201 SMC10GPCIe-XFP (A1) [TigerCard] + 1924 0101 SFE4001-A1 + 1924 0102 SFE4001-A2 + 1924 0103 SFE4001-A3 + 1924 0201 SFE4002-A1 + 1924 0301 SFE4003-A1 + 1924 0302 SFE4003-A2 + 1924 0303 SFE4003-A3 + 1924 0304 SFE4003-A4 + 1924 0500 SFE4005-A0 + 0710 SFC4000 rev B [Solarstorm] + 10b8 0103 SMC10GPCIe-10BT (A3) [TigerCard] + 10b8 0201 SMC10GPCIe-XFP (A1) [TigerCard] + 1924 0102 SFE4001-A2 + 1924 0103 SFE4001-A3 + 1924 0201 SFE4002-A1 + 1924 0302 SFE4003-A2 + 1924 0303 SFE4003-A3 + 1924 0304 SFE4003-A4 + 1924 0500 SFE4005-A0 + 1924 5102 SFN4111T-A2 + 1924 5103 SFN4111T-R3 + 1924 5104 SFN4111T-R4 + 1924 5105 SFN4111T-R5 + 1924 5201 SFN4112F-R1 + 1924 5202 SFN4112F-R2 + 0803 SFC9020 10G Ethernet Controller + 1014 0478 2-port 10GbE Low-Latency (R7) + 1014 0479 2-port 10GbE OpenOnload (R7) + 1014 04a7 Solarflare 10Gb Low-latency Dual-port HBA (R7) + 1014 04a8 Solarflare 10Gb Dual-port HBA (R7) + 103c 2132 Ethernet 10Gb 2-port 570FLR-SFP+ Adapter (R1) + 103c 2136 Ethernet 10Gb 2-port 570SFP+ Adapter (R7) + 1924 1201 SFA6902F-R1 SFP+ AOE Adapter + 1924 6200 SFN5122F-R0 SFP+ Server Adapter + 1924 6201 SFN5122F-R1 SFP+ Server Adapter + 1924 6202 SFN5122F-R2 SFP+ Server Adapter + 1924 6204 SFN5122F-R4 SFP+ Server Adapter + 1924 6205 SFN5122F-R5 SFP+ Server Adapter + 1924 6206 SFN5122F-R6 SFP+ Server Adapter + 1924 6207 SFN5122F-R7 SFP+ Server Adapter + 1924 6210 SFN5322F-R0 SFP+ Precision Time Synchronization Server Adapter + 1924 6211 SFN5322F-R1 SFP+ Precision Time Synchronization Server Adapter + 1924 6217 SFN5322F-R7 SFP+ Precision Time Synchronization Server Adapter + 1924 6227 SFN6122F-R7 SFP+ Server Adapter + 1924 6237 SFN6322F-R7 SFP+ Precision Time Synchronization Server Adapter + 1924 6501 SFN5802K-R1 Mezzanine Adapter + 1924 6511 SFN5814H-R1 Mezzanine Adapter + 1924 6521 SFN5812H-R1 Mezzanine Adapter + 1924 6562 SFN6832F-R2 SFP+ Mezzanine Adapter + 1924 6a05 SFN5112F-R5 SFP+ Server Adapter + 1924 6a06 SFN5112F-R6 SFP+ Server Adapter + 1924 7206 SFN5162F-R6 SFP+ Server Adapter + 1924 7207 SFN5162F-R7 SFP+ Server Adapter + 1924 7a06 SFN5152F-R6 SFP+ Server Adapter + 1924 7a07 SFN5152F-R7 SFP+ Server Adapter + 0813 SFL9021 10GBASE-T Ethernet Controller + 1924 6100 SFN5121T-R0 10GBASE-T Server Adapter + 1924 6102 SFN5121T-R2 10GBASE-T Server Adapter + 1924 6103 SFN5121T-R3 10GBASE-T Server Adapter + 1924 6104 SFN5121T-R4 10GBASE-T Server Adapter + 1924 6902 SFN5111T-R2 10GBASE-T Server Adapter + 1924 6904 SFN5111T-R4 10GBASE-T Server Adapter + 1924 7104 SFN5161T-R4 10GBASE-T Server Adapter + 1924 7904 SFN5151T-R4 10GBASE-T Server Adapter + 0903 SFC9120 10G Ethernet Controller + 1014 04cc SFN7122F-R2 2x10GbE SFP+ Flareon Ultra + 1924 8002 SFN7122F-R1 SFP+ Server Adapter + 1924 8003 SFN7x41Q-R1 Flareon Ultra 7000 Series 10/40G Adapter + 1924 8006 SFN7022F-R1 SFP+ Server Adapter + 1924 8007 SFN7322F-R2 Precision Time SFP+ Server Adapter + 1924 8009 SFN7x22F-R2 Flareon Ultra 7000 Series 10G Adapter + 1924 800a SFN7x02F-R2 Flareon 7000 Series 10G Adapter + 1924 800c SFN7x22F-R3 Flareon Ultra 7000 Series 10G Adapter + 1924 800d SFN7x02F-R3 Flareon 7000 Series 10G Adapter + 1924 8010 SFA7942Q-R1 QSFP+ AOE Adapter + 1924 8015 SFA7942Q-A5-0-R1 QSFP+ AOE Adapter + 0923 SFC9140 10/40G Ethernet Controller + 1924 800b SFN7x42Q-R1 Flareon Ultra 7000 Series 10/40G Adapter + 1924 800e SFN7x42Q-R2 Flareon Ultra 7000 Series 10/40G Adapter + 1924 800f SFN7xx4F-R1 Flareon Ultra 7000 Series 10G Adapter + 0a03 SFC9220 10/40G Ethernet Controller + 1924 8011 SFN8022-R1 8000 Series 10G Adapter + 1924 8012 SFN8522-R1 8000 Series 10G Adapter + 1924 8013 SFN8042-R1 8000 Series 10/40G Adapter + 1924 8014 SFN8542-R1 8000 Series 10/40G Adapter + 1924 8016 SFN8022-R2 8000 Series 10G Adapter + 1924 8017 SFN8522-R2 8000 Series 10G Adapter + 1924 8018 SFN8042-R2 8000 Series 10/40G Adapter + 1924 8019 SFN8542-R2 8000 Series 10/40G Adapter + 1924 801a SFN8722-R1 8000 Series OCP 10G Adapter + 1924 801b SFN8522-R3 8000 Series 10G Adapter + 1924 801c SFN8042-R3 8000 Series 10/40G Adapter + 1924 8021 SFN8041-R1 8000 Series 10/40G Adapter + 0b03 XtremeScale SFC9250 10/25/40/50/100G Ethernet Controller + 1924 801d x2522-R1 2000 Series 10/25G Adapter + 1924 801e x2542-R1 2000 Series 40/100G Adapter + 1924 8022 XtremeScale X2522 10G Network Adapter + 1924 8024 XtremeScale X2562 OCP 3.0 Dual Port SFP28 + 1924 8027 XtremeScale X2541 PCIe Single Port QSFP28 + 1924 8028 XtremeScale X2522-25G Network Adapter + 1924 802a XtremeScale X2542 PCIe Dual Port QSFP28 + 1924 802b XtremeScale X2552 OCP 2.0 Dual Port SFP28 + 1924 802c XtremeScale X2522-25G PCIe Dual Port SFP28 + 1924 802d XtremeScale X2562 OCP 3.0 Dual Port SFP28 + 1803 SFC9020 10G Ethernet Controller (Virtual Function) + 1813 SFL9021 10GBASE-T Ethernet Controller (Virtual Function) + 1903 SFC9120 10G Ethernet Controller (Virtual Function) + 1923 SFC9140 10/40G Ethernet Controller (Virtual Function) + 1a03 SFC9220 10/40G Ethernet Controller (Virtual Function) + 1b03 XtremeScale SFC9250 10/25/40/50/100G Ethernet Controller (Virtual Function) + 6703 SFC4000 rev A iSCSI/Onload [Solarstorm] + 10b8 0102 SMC10GPCIe-10BT (A2) [TigerCard] + 10b8 0103 SMC10GPCIe-10BT (A3) [TigerCard] + 10b8 0201 SMC10GPCIe-XFP (A1) [TigerCard] + 1924 0101 SFE4001-A1 + 1924 0102 SFE4001-A2 + 1924 0103 SFE4001-A3 + 1924 0201 SFE4002-A1 + 1924 0301 SFE4003-A1 + 1924 0302 SFE4003-A2 + 1924 0303 SFE4003-A3 + 1924 0304 SFE4003-A4 + 1924 0500 SFE4005-A0 + c101 EF1-21022T [EtherFabric] +192a BiTMICRO Networks Inc. + 0008 RAMPART +192e TransDimension +1931 Option N.V. + 000c Qualcomm MSM6275 UMTS chip +1932 DiBcom +193c MAXIM Integrated Products +193d New H3C Technologies Co., Ltd. +193f AHA Products Group + 0001 AHA36x-PCIX + 0360 AHA360-PCIe + 0363 AHA363-PCIe + 0364 AHA364-PCIe + 0367 AHA367-PCIe + 0370 AHA370-PCIe + 0604 AHA604 + 0605 AHA605 + 3641 AHA3641 + 3642 AHA3642 + 6101 AHA6101 + 6102 AHA6102 +1942 ClearSpeed Technology plc + e511 Advance X620 accelerator card + e521 Advance e620 accelerator card +1945 MERA + 6200 PXI/PXIe measurement module +1947 C-guys, Inc. + 4743 CG200 Dual SD/SDIO Host controller device +1948 Alpha Networks Inc. +194a DapTechnology B.V. + 1111 FireSpy3850 + 1112 FireSpy450b + 1113 FireSpy450bT + 1114 FireSpy850 + 1115 FireSpy850bT + 1200 FireTrac 3460bT + 1201 FireTrac 3460bT (fallback firmware) + 1202 FireTrac 3460bT + 1203 FireTrac 3460bT (fallback firmware) +# nee Curtis, Inc. +1954 One Stop Systems, Inc. +1957 Freescale Semiconductor Inc + 0012 MPC8548E + 0013 MPC8548 + 0014 MPC8543E + 0015 MPC8543 + 0018 MPC8547E + 0019 MPC8545E + 001a MPC8545 + 0020 MPC8568E + 0021 MPC8568 + 0022 MPC8567E + 0023 MPC8567 + 0030 MPC8533E + 0031 MPC8533 + 0032 MPC8544E + 0033 MPC8544 + 0040 MPC8572E + 0041 MPC8572 + 0050 MPC8536E + 0051 MPC8536 + 0052 MPC8535E + 0053 MPC8535 + 0060 MPC8569 + 0061 MPC8569E + 0070 P2020E + 0071 P2020 + 0078 P2010E + 0079 P2010 + 0080 MPC8349E + 0081 MPC8349 + 0082 MPC8347E TBGA + 0083 MPC8347 TBGA + 0084 MPC8347E PBGA + 110a 4074 SIMATIC NET CP 1628 + 0085 MPC8347 PBGA + 110a 4046 SIMATIC NET CP 1623 + 0086 MPC8343E + 0087 MPC8343 + 00b4 MPC8315E + 00b6 MPC8314E + 1a56 1101 Bigfoot Killer Xeno Pro Gigabit Ethernet Controller + 00c2 MPC8379E + 00c3 MPC8379 + 00c4 MPC8378E + 00c5 MPC8378 + 00c6 MPC8377E + 00c7 MPC8377 + 0100 P1020E + 0101 P1020 + 0102 P1021E + 0103 P1021 + 0108 P1011E + 0109 P1011 + 010a P1012E + 010b P1012 + 0110 P1022E + 0111 P1022 + 1c7f 5200 EB5200 + 0118 P1013E + 0119 P1013 + 0128 P1010 + 0400 P4080E + 0401 P4080 + 0408 P4040E + 0409 P4040 + 041f P3041 + 0420 QorIQ P5020 Communications Processor with security engine + 0421 QorIQ P5020 Communications Processor without security engine + 0428 QorIQ P5010 Communications Processor with security engine + 0429 QorIQ P5010 Communications Processor without security engine + 0440 T4240 with security + 0441 T4240 without security + 0446 T4160 with security + 0447 T4160 without security + 0830 T2080 with security + 0831 T2080 without security + 0838 T2081 with security + 0839 T2081 without security + 580c MPC5121e + 7010 MPC8641 PCI Host Bridge + 7011 MPC8641D PCI Host Bridge + 7018 MPC8610 + 81c0 LS1046A PCI Express Bridge + c006 MPC8308 + 1a56 1201 Bigfoot Killer E2100 Gigabit Ethernet Controller +# PCIe interface for emulator + fc02 RedStone +# CFI device over PCIe + fc03 CFI +1958 Faster Technology, LLC. +1959 PA Semi, Inc + a000 PA6T Core + a001 PWRficient Host Bridge + a002 PWRficient PCI-Express Port + a003 PWRficient SMBus Controller + a004 PWRficient 16550 UART + a005 PWRficient Gigabit Ethernet + a006 PWRficient 10-Gigabit Ethernet + a007 PWRficient DMA Controller + a008 PWRficient LPC/Localbus Interface + a009 PWRficient L2 Cache + a00a PWRficient DDR2 Memory Controller + a00b PWRficient SERDES + a00c PWRficient System/Debug Controller + a00d PWRficient PCI-Express Internal Endpoint +1966 Orad Hi-Tec Systems + 1975 DVG64 family + 1977 DVG128 family + 1979 3DVG/UHD3 + 1980 HDV2/UHD2 + 1234 3160 UHD2LC + 1234 3300 Legacy UHD2 + 1234 3410 UHD2 +# nee Atheros Communications, Inc. nee Attansic Technology Corp. +1969 Qualcomm Atheros + 1026 AR8121/AR8113/AR8114 Gigabit or Fast Ethernet + 1043 8304 P5KPL-CM Motherboard + 1048 Attansic L1 Gigabit Ethernet + 1043 8226 P5B-MX/WiFi-AP, P5KPL-VM Motherboard + 1062 AR8132 Fast Ethernet + 1063 AR8131 Gigabit Ethernet + 1458 e000 GA-G31M-ES2L Motherboard + 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] + 1066 Attansic L2c Gigabit Ethernet + 1067 Attansic L1c Gigabit Ethernet + 1073 AR8151 v1.0 Gigabit Ethernet + 1083 AR8151 v2.0 Gigabit Ethernet + 1090 AR8162 Fast Ethernet + 1043 108d VivoBook X202E, X202EV + 1091 AR8161 Gigabit Ethernet + 1043 1477 N56VZ + 10a0 QCA8172 Fast Ethernet + 10a1 QCA8171 Gigabit Ethernet + 2010 QCA8175 card reader controller + 2048 Attansic L2 Fast Ethernet + 2060 AR8152 v1.1 Fast Ethernet + 2062 AR8152 v2.0 Fast Ethernet + 1043 8468 Eee PC 1015PX + 3010 QCA8175 SD controller +# E2200, E2201, E2205 + e091 Killer E220x Gigabit Ethernet Controller + e0a1 Killer E2400 Gigabit Ethernet Controller + e0b1 Killer E2500 Gigabit Ethernet Controller +196a Sensory Networks Inc. + 0101 NodalCore C-1000 Content Classification Accelerator + 0102 NodalCore C-2000 Content Classification Accelerator + 0105 NodalCore C-3000 Content Classification Accelerator +196d Club-3D BV +196e PNY +1971 AGEIA Technologies, Inc. + 0000 Physics Processing Unit [PhysX] 100 Series PCI Express Card +# The PCI and PCIe versions have a different PID + 1011 Physics Processing Unit [PhysX] 100 Series PCI Card + 1043 0001 PhysX P1 + 1021 Physics Processing Unit [PhysX] 200 Series PCI Express Card +# nee Eberspaecher Electronics +1974 Star Electronics GmbH & Co. KG + 0009 FlexCard PMC-II + 0011 FlexCard PMC-II Ethernet + 0018 FlexCard PXIe3 + 0019 FlexCard PCIe3 +# IO card for std ethernet and automotive ethernet (ieee 1000Base-T1) + 001a FlexCard PXIe Ethernet +# IO card for std ethernet and automotive ethernet (ieee 1000Base-T1) + 001b FlexCard PCIe Ethernet +1976 TRENDnet +1977 Parsec +197b JMicron Technology Corp. + 0250 JMC250 PCI Express Gigabit Ethernet Controller + 0260 JMC260 PCI Express Fast Ethernet Controller + 0368 JMB368 IDE controller + 0585 JMB58x AHCI SATA controller + 2360 JMB360 AHCI Controller + 2361 JMB361 AHCI/IDE + 1462 7235 P965 Neo MS-7235 mainboard + 2362 JMB362 SATA Controller + 1043 8460 P8P67 Deluxe Motherboard + 2363 JMB363 SATA/IDE Controller + 1043 81e4 P5B [JMB363] + 1458 b000 Motherboard + 1849 2363 Motherboard (one of many) + 2364 JMB364 AHCI Controller + 2365 JMB365 AHCI/IDE + 2366 JMB366 AHCI/IDE + 2368 JMB368 IDE controller + 2369 JMB369 Serial ATA Controller + 2380 IEEE 1394 Host Controller + 2381 Standard SD Host Controller + 2382 SD/MMC Host Controller + 2383 MS Host Controller + 2384 xD Host Controller + 2386 Standard SD Host Controller + 2387 SD/MMC Host Controller + 2388 MS Host Controller + 2389 xD Host Controller + 2391 Standard SD Host Controller + 2392 SD/MMC Host Controller + 2393 MS Host Controller + 2394 xD Host Controller +1982 Distant Early Warning Communications Inc + 1600 OX16C954 HOST-A + 16ff OX16C954 HOST-B +1987 Phison Electronics Corporation + 5007 E7 NVMe Controller + 5008 E8 PCIe3 x2 NVMe Controller + 5012 E12 NVMe Controller + 5013 PS5013-E13 PCIe3 NVMe Controller (DRAM-less) + 5015 PS5015-E15 PCIe3 NVMe Controller (DRAM-less) + 5016 E16 PCIe4 NVMe Controller + 5018 E18 PCIe4 NVMe Controller + 5019 PS5019-E19 PCIe4 NVMe Controller (DRAM-less) + 5021 PS5021-E21 PCIe4 NVMe Controller (DRAM-less) + 5026 PS5026-E26 PCIe5 NVMe Controller + 5027 PS5027-E27T PCIe4 NVMe Controller (DRAM-less) +1989 Montilio Inc. + 0001 RapidFile Bridge + 8001 RapidFile +198a Nallatech Ltd. +1993 Innominate Security Technologies AG +1999 A-Logics + a900 AM-7209 Video Processor +199a Pulse-LINK, Inc. +199d Xsigo Systems + 8209 Virtual NIC Device + 890a Virtual HBA Device +199f Auvitek + 8501 AU85X1 PCI REV1.1 + 8521 AU8521 TV card +# nee ServerEngines Corp. +19a2 Emulex Corporation + 0120 x1 PCIe Gen2 Bridge[Pilot4] + 0200 BladeEngine 10Gb PCI-E iSCSI adapter + 0201 BladeEngine 10Gb PCIe Network Adapter + 0211 BladeEngine2 10Gb Gen2 PCIe Network Adapter + 0212 BladeEngine2 10Gb Gen2 PCIe iSCSI Adapter + 0221 BladeEngine3 10Gb Gen2 PCIe Network Adapter + 0222 BladeEngine3 10Gb Gen2 PCIe iSCSI Adapter + 0700 OneConnect OCe10100/OCe10102 Series 10 GbE + 103c 1747 NC550SFP DualPort 10GbE Server Adapter + 103c 1749 NC550SFP Dual Port Server Adapter + 103c 174a NC551m Dual Port FlexFabric 10Gb Adapter + 103c 174b StorageWorks NC550 DualPort Converged Network Adapter + 103c 3314 NC551i Dual Port FlexFabric 10Gb Adapter + 0702 OneConnect 10Gb iSCSI Initiator + 0704 OneConnect OCe10100/OCe10102 Series 10 GbE CNA + 10df e602 OneConnect OCe10100 10Gb CNA + 10df e630 OneConnect OCe10102-FM-E / OCe10102-FX-E for EMC VNX Symmetrix + 0710 OneConnect 10Gb NIC (be3) +# FC 5287 / FC 5284; CCIN 5287 + 1014 03d0 PCIe2 2-port 10GbE SR Adapter for POWER +# FC 5288 / FC 5286; CCIN 5288 + 1014 03d1 PCIe2 2-port 10GbE SFP+ Copper Adapter for POWER + 1014 0409 Integrated Multifunction Card with Dual 10GbE SR Optical + Dual 1GbE for Power 750/760 + 1014 040a Integrated Multifunction Card with Dual 10GbE SR Copper + Dual 1GbE for Power 750/760 + 103c 3315 NC553i 10Gb 2-port FlexFabric Converged Network Adapter + 103c 3340 NC552SFP 2-port 10Gb Server Adapter + 103c 3341 NC552m 10Gb 2-port FlexFabric Converged Network Adapter + 103c 3345 NC553m 10Gb 2-port FlexFabric Converged Network Adapter + 103c 337b NC554FLB 10Gb 2-port FlexFabric Converged Network Adapter + 10df e733 Flex System EN4054 4-port 10Gb Ethernet Mezzanine Adapter + 0712 OneConnect 10Gb iSCSI Initiator (be3) + 0714 OneConnect 10Gb FCoE Initiator (be3) + 103c 3315 NC553i 10Gb 2-port FlexFabric Converged Network Adapter + 103c 337b NC554FLB 10Gb 2-port FlexFabric Converged Network Adapter + 0800 ServerView iRMC HTI +19a4 Owl Cyber Defense Solutions +19a8 DAQDATA GmbH +19ac Kasten Chase Applied Research + 0001 ACA2400 Crypto Accelerator +19ae Progeny Systems Corporation + 0520 4135 HFT Interface Controller + 0521 Decimator +19ba ZyXEL Communications Corp. + 2330 ZyWALL Turbo Card +19c1 Exegy Inc. +# nee NextNet Wireless +19d1 Motorola Expedience +19d4 Quixant Limited +19da ZOTAC International (MCO) Ltd. +19de Pico Computing +19e2 Vector Informatik GmbH +19e3 DDRdrive LLC + 5801 DDRdrive X1 + 5808 DDRdrive X8 + dd52 DDRdrive X1-30 +19e5 Huawei Technologies Co., Ltd. + 0123 ES3000 V3 NVMe PCIe SSD + 19e5 3022 NVMe SSD ES3600P V3 800GB 2.5" U.2 + 19e5 3023 NVMe SSD ES3600P V3 1200GB 2.5" U.2 + 19e5 3024 NVMe SSD ES3600P V3 1600GB 2.5" U.2 + 19e5 3025 NVMe SSD ES3600P V3 2000GB 2.5" U.2 + 19e5 3026 NVMe SSD ES3600P V3 3200GB 2.5" U.2 + 19e5 3033 NVMe SSD ES3600C V3 1200GB HHHL AIC + 19e5 3034 NVMe SSD ES3600C V3 1600GB HHHL AIC + 19e5 3036 NVMe SSD ES3600C V3 3200GB HHHL AIC + 0200 Hi1822 Family (2*100GE) + 19e5 d139 Hi1822 SP572 (2*100GE) + 19e5 d13d Hi1822 SC371 (2*100GE) + 19e5 d147 Hi1822 SP573 (2*100GE) + 0202 Hi1822 Family (2*32G FC) + 19e5 d149 Hi1822 SP528 (2*32G FC) + 19e5 d302 Hi1822 SP521 (2*32G FC) + 19e5 d304 Hi1822 SP526 (2*32G FC) + 0203 Hi1822 Family (2*16G FC) + 19e5 d148 Hi1822 SP527 (2*16G FC) + 19e5 d301 Hi1822 SP520 (2*16G FC) + 19e5 d305 Hi1822 SP525 (2*16G FC) + 0205 Hi1822 Family (2*100GE) + 19e5 df27 Hi1822 MZ731 MEZZ (2*100GE) + 0206 Hi1822 Family (2*25GE) + 19e5 d138 Hi1822 SP582 (2*25GE) + 19e5 d13a Hi1822 SC381 (2*25GE) + 19e5 d145 Hi1822 SP586 (2*25GE) + 0210 Hi1822 Family (4*25GE) + 19e5 df2e Hi1822 MZ532 MEZZ (4*25GE) + 0211 Hi1822 Family (4*25GE) + 19e5 d12f Hi1822 SP571 (4*25GE) + 19e5 d137 Hi1822 SP581 (4*25GE) + 19e5 d142 Hi1822 SP583 (4*25GE) + 0212 Hi1822 Family (2*8G FC) + 19e5 d303 Hi1822 SP522 (2*8G FC) + 19e5 d306 Hi1822 SP523 (2*8G FC) + 0222 Hi1822 Family + 19e5 0051 Hi1822 SP681 (2*25/10GE) + 19e5 0052 Hi1822 SP680 (4*25/10GE) + 19e5 00a1 Hi1822 SP670 (2*100GE) + 1710 iBMA Virtual Network Adapter + 1711 Hi171x Series [iBMC Intelligent Management system chip w/VGA support] + 1822 Hi1822 Family (4*25GE) + 19e5 d129 Hi1822 SP570 (4*25GE) + 19e5 d136 Hi1822 SP580 (4*25GE) + 19e5 d141 Hi1822 SP583 (4*25GE) + 19e5 d146 Hi1822 SP585 (4*25GE) + 3714 ES3000 V5 NVMe PCIe SSD + 19e5 5312 NVMe SSD ES3500P V5 2000GB 2.5" U.2 + 371e Hi1822 Family Virtual Bridge + 3754 ES3000 V6 NVMe PCIe SSD + 19e5 6122 NVMe SSD ES3600P V6 1600GB 2.5" U.2 + 19e5 6123 NVMe SSD ES3600P V6 3200GB 2.5" U.2 + 19e5 6124 NVMe SSD ES3600P V6 6400GB 2.5" U.2 + 19e5 6141 NVMe SSD ES3800P V6 800GB 2.5" U.2 + 19e5 6142 NVMe SSD ES3800P V6 1600GB 2.5" U.2 + 19e5 6212 NVMe SSD ES3500P V6 1920GB 2.5" U.2 + 19e5 6213 NVMe SSD ES3500P V6 3840GB 2.5" U.2 + 19e5 6214 NVMe SSD ES3500P V6 7680GB 2.5" U.2 + 19e5 6215 NVMe SSD ES3500P V6 15360GB 2.5" U.2 + 375e Hi1822 Family Virtual Function + 375f Hi1822 Family Virtual Function + 379e Hi1822 Family Virtual Function + 379f Hi1822 Family Virtual Function + a120 HiSilicon PCIe Root Port with Gen4 + a121 HiSilicon PCI-PCI Bridge + a122 HiSilicon Embedded DMA Engine + a124 HiSilicon Internal SDI Function Engine + a125 HiSilicon SDI Network Controller + a126 HiSilicon SDI NVMe Storage Controller + a127 HiSilicon SDI Accelerator + a12a HiSilicon Add-on PCI-PCI Bridge + a220 HNS GE Network Controller + a221 HNS GE/10GE/25GE Network Controller + 19e5 0454 TM280 + 19e5 04cc TM210 + 19e5 d14a TM280 4*25G + 19e5 d14b TM210 4*GE + a222 HNS GE/10GE/25GE RDMA Network Controller + a224 HNS GE/10GE/25GE/50GE RDMA Network Controller + a226 HNS GE/10GE/25GE/50GE/100GE RDMA Network Controller + a22a HiSilicon Network For SDI + a22e HNS Network Controller (Virtual Function) + a22f HNS RDMA Network Controller (Virtual Function) + a230 HiSilicon SAS 3.0 HBA + a235 HiSilicon AHCI HBA + a238 HiSilicon USB 3.0 Host Controller + a239 HiSilicon USB 2.0 2-port Host Controller + a23a HiSilicon USB 2.0 Host Controller + a23b HiSilicon USB 1.1 Host Controller + a250 HiSilicon ZIP Engine + a251 HiSilicon ZIP Engine(Virtual Function) + a255 HiSilicon SEC Engine + a256 HiSilicon SEC Engine(Virtual Function) + a258 HiSilicon HPRE Engine + a259 HiSilicon HPRE Engine(Virtual Function) + a25a HiSilicon RDE Engine + a25b HiSilicon RDE Engine(Virtual Function) +19e7 NET (Network Equipment Technologies) + 1001 STIX DSP Card + 1002 STIX - 1 Port T1/E1 Card + 1003 STIX - 2 Port T1/E1 Card + 1004 STIX - 4 Port T1/E1 Card + 1005 STIX - 4 Port FXS Card +19ee Netronome Systems, Inc. +19f1 BFG Tech +19ff Eclipse Electronic Systems, Inc. +1a03 ASPEED Technology, Inc. + 1150 AST1150 PCI-to-PCI Bridge + 2000 ASPEED Graphics Family + 15d9 0832 X10SRL-F + 15d9 1b95 H12SSL-i +1a05 deltaww +1a07 Kvaser AB + 0006 CAN interface PC104+ HS/HS + 0007 CAN interface PCIcanx II HS or HS/HS + 0008 CAN interface PCIEcan HS or HS/HS + 0009 CAN interface PCI104 HS/HS +1a08 Sierra semiconductor + 0000 SC15064 +1a0d SEAKR Engineering +1a0e DekTec Digital Video B.V. + 083f DTA-2111 VHF/UHF Modulator + 0860 DTA-2144(B) Quad ASI/SDI in+out + 0861 DTA-2145 ASI/SDI in+out with bypass relay + 087c DTA-2172 Dual 3G-SDI/ASI ports + 087e DTA-2174 Quad 3G-SDI/ASI in+out + 087f DTA-2175 3G-SDI/ASI input+output with bypass relay + 0882 DTA-2178 Octal 12G-SDI/ASI ports with genlock + a882 DTA-2178-ASI Octal ASI Ports + b87e DTA-2174B Quad 3G-SDI/ASI ports (1x12G) with genlock +1a17 Force10 Networks, Inc. + 8002 PB-10GE-2P 10GbE Security Card +1a1d GFaI e.V. + 1a17 Meta Networks MTP-1G IDPS NIC +1a1e 3Leaf Systems, Inc. +1a22 Ambric Inc. +1a29 Fortinet, Inc. + 4338 CP8 Content Processor ASIC + 43a0 CP9 Content Processor ASIC + 4e36 NP6 Network Processor + 4e37 NP7 Network Processor +1a2b Ascom AG + 0000 GESP v1.2 + 0001 GESP v1.3 + 0002 ECOMP v1.3 + 0005 ETP v1.4 + 000a ETP-104 v1.1 + 000e DSLP-104 v1.1 +# nee Metalink Ltd. +1a30 Lantiq + 0680 MtW8171 [Hyperion II] + 0700 Wave300 PSB8224 [Hyperion III] + 0710 Wave300 PSB8231 [Hyperion III] +1a32 Quanta Microsystems, Inc +1a3b AzureWave + 1112 AR9285 Wireless Network Adapter (PCI-Express) +1a41 Tilera Corp. + 0001 TILE64 processor + 0002 TILEPro processor + 0200 TILE-Gx processor + 0201 TILE-Gx Processor Virtual Function + 2000 TILE-Gx PCI Express Root Port +1a4a SLAC National Accelerator Lab TID-AIR + 1000 MCOR Power Supply Controller + 1010 AMC EVR - Stockholm Timing Board + 1020 PGPCard - Gen3 Cameralink Interface + 1030 PGPCard - Gen3 GIGe Interface + 2000 PGPCard - 4 Lane + 2001 PGPCard - 8 Lane Plus EVR + 2010 PCI-Express EVR + 2011 PCI-Express EVR - TPR Version + 2020 PGP-GEN3 PCIe - 8 Lane Plus EVR + 2030 AXI Stream DAQ PCIe card + 2040 EXO PCIe TEM + 3000 COB DTM V1 + 3001 COB DTM V2 +1a51 Hectronic AB +1a55 Rohde & Schwarz DVS GmbH + 0010 SDStationOEM + 0011 SDStationOEM II + 0020 Centaurus + 0021 Centaurus II + 0022 Centaurus II LT + 0030 CLIPSTER-VPU 1.x (Hugo) + 0040 Hydra Cinema (JPEG) + 0050 CLIPSTER-VPU 2.x (DigiLab) + 0060 CLIPSTER-DCI 2.x (HydraX) + 0061 Atomix + 0062 Atomix LT + 0063 Atomix HDMI + 0064 Atomix STAN + 0065 Atomix HDMI STAN + 0070 RED Rocket + 0090 CinePlay +# nee Bigfoot Networks, now owned by Intel +1a56 Rivet Networks +1a57 Highly Reliable Systems +1a58 Razer USA Ltd. +1a5d Celoxica +1a5e Aprius Inc. +1a5f System TALKS Inc. +1a68 VirtenSys Limited +1a71 XenSource, Inc. +1a73 Violin Memory, Inc + 0001 Mozart [Memory Appliance 1010] +1a76 Wavesat +1a77 Lightfleet Corporation +1a78 Virident Systems Inc. + 0031 FlashMAX Drive + 1a78 0034 FlashMAX PCIe SSD [rev 3] + 1a78 0037 FlashMAX PCIe SSD [rev 3D] + 1a78 0038 FlashMAX PCIe SSD [rev 4] + 1a78 0039 FlashMAX PCIe SSD [rev 4D] + 0040 FlashMAX II + 0041 FlashMAX II + 0042 FlashMAX II + 0050 FlashMAX III +1a84 Commex Technologies + 0001 Vulcan SP HT6210 10-Gigabit Ethernet (rev 02) +# nee MEN Mikro Elektronik +1a88 Duagon AG + 4d45 Multifunction IP core +1a8a StarBridge, Inc. +1a8c Verigy Pte. Ltd. + 1100 E8001-66443 PCI Express CIC +1a8e DRS Technologies + 2090 Model 2090 PCI Express +1aa8 Ciprico, Inc. + 0009 RAIDCore Controller + 000a RAIDCore Controller +1aa9 Schweitzer Engineering Laboratories + 000d SEL-3390S8 Serial Adapter + 000e SEL-3390E4 Ethernet Adapter + 0014 SEL-3390T Time and Ethernet Adapter + 0015 SEL-3350 Mainboard + 0016 SEL-3350 Serial Expansion Board + 0017 SEL-3350 GPIO Expansion Board + 0018 SEL-3390E4 Ethernet Adapter + 001c SEL-3390E4 Ethernet Adapter +1aab Silver Creations AG + 7750 Sceye 10L +1aae Global Velocity, Inc. +1ab4 Distributed Management Task Force, Inc. (DMTF) +1ab6 CalDigit, Inc. + 6201 RAID Card +# Parallels VM virtual devices +1ab8 Parallels, Inc. + 4000 Virtual Machine Communication Interface + 4005 Accelerated Virtual Video Adapter + 4006 Memory Ballooning Controller +1ab9 Espia Srl +1ac1 Global Unichip Corp. + 089a Coral Edge TPU +1ac8 Aeroflex Gaisler +1acc Point of View BV +1ad7 Spectracom Corporation + 8000 TSync-PCIe Time Code Processor + 9100 TPRO-PCI-66U Timecode Reader/Generator +1ade Spin Master Ltd. + 1501 Swipetech barcode scanner + 3038 PCIe Video Bridge + 13c2 3016 TT-budget S2-4200 Twin + 4254 0552 S952 v3 +1ae0 Google, Inc. +# NVMe drive in GCP + 001f NVMe device + 0042 Compute Engine Virtual Ethernet [gVNIC] + abcd Airbrush Combined Paintbox IPU/Oscar Edge TPU [Pixel Neural Core] +1ae3 SANBlaze Technology, Inc. +1ae7 First Wise Media GmbH + 0520 HFC-S PCI A [X-TENSIONS XC-520] +# nee Silicon Software GmbH +1ae8 Basler AG +# CameraLink frame grabber for Visual Applets + 0751 mE5 marathon VCL +# CameraLink HS frame grabber + 0752 mE5 marathon AF2 +# CoaXpress frame grabber + 0753 mE5 marathon ACX QP +# CameraLink frame grabber + 0754 mE5 marathon ACL +# CoaXpress frame grabber + 0755 mE5 marathon ACX SP +# CoaXpress frame grabber + 0756 mE5 marathon ACX DP +# CoaXpress frame grabber for Visual Applets + 0757 mE5 marathon VCX QP +# CameraLink HS frame grabber for Visual Applets + 0758 mE5 marathon VF2 +# CameraLink frame grabber for Visual Applets / AI applications + 0759 mE5 marathon VCLx +# CameraLink frame grabber + 0a40 microEnable IV AD1-CL +# CameraLink frame grabber for Visual Applets + 0a41 microEnable IV VD1-CL +# CameraLink frame grabber + 0a42 microEnable IV AD4-CL +# CameraLink frame grabber for Visual Applets + 0a44 microEnable IV VD4-CL +# CameraLink frame grabber + 0a45 microEnable IV AS1-CL +# CoaXpress frame grabber + 0a53 microEnable 5 AQ8-CXP6B +# CoaXpress frame grabber for Visual Applets + 0a54 microEnable 5 VQ8-CXP6B +# CoaXpress frame grabber for Visual Applets + 0a56 microEnable 5 VQ8-CXP6D +# CoaXpress frame grabber + 0a57 microEnable 5 AQ8-CXP6D +# CameraLink frame grabber for Visual Applets + 0a58 microEnable 5 VD8-CL +# CameraLink frame grabber + 0a5a microEnable 5 AD8-CL +# CoaXpress frame grabber + 0a64 imaWorx CXP-12 Quad +# OEM product + 0b52 mE5 Abacus 4G Base +# OEM product + 0b53 mE5 Abacus 4G Base II +# OEM product + 0b61 mE6 Abacus 4TG +# CoaXpress frame grabber + 0b63 CXP-12 Interface Card 1C +# CoaXpress frame grabber + 0b64 CXP-12 Interface Card 4C +# CoaXpress frame grabber + 0b65 CXP-12 Interface Card 2C +# CoaXpress Thunderbolt frame grabber + 0b66 CXP-12 LightBridge 2C +# GigE Vision frame grabber + 0e42 microEnable IV AQ4-GE +# GigE Vision frame grabber for Visual Applets + 0e44 microEnable IV VQ4-GE +1ae9 Wilocity Ltd. + 0101 Wil6200 PCI Express Upstream Port + 0200 Wil6200 PCI Express Port + 0201 Wil6200 Wireless PCI Express Port + 0301 Wil6200 802.11ad Wireless Network Adapter + 0302 Wil6200 802.11ad Wireless Network Adapter + 0310 Wil6200 802.11ad Wireless Network Adapter +1aea Alcor Micro + 6601 AU6601 PCI-E Flash card reader controller + 6621 AU6621 PCI-E Flash card reader controller + 6625 AU6625 PCI-E Flash card reader controller +1aec Wolfson Microelectronics +# nee Fusion-io +1aed SanDisk + 1003 ioDimm3 (v1.2) + 1005 ioDimm3 + 1014 03c3 High IOPS SSD PCIe Adapter + 103c 176f 1.28TB MLC PCIe ioDrive Duo + 103c 1770 5.2TB MLC PCIe ioDrive Octal + 103c 178b 160GB SLC PCIe ioDrive + 103c 178c 320GB MLC PCIe ioDrive + 103c 178d 320GB SLC PCIe ioDrive Duo + 103c 178e 640GB MLC PCIe ioDrive Duo + 1006 ioXtreme + 1007 ioXtreme Pro + 1008 ioXtreme-2 + 2001 ioDrive2 + 3001 ioMemory FHHL + 3002 ioMemory HHHL + 3003 ioMemory Mezzanine +1aee Caustic Graphics Inc. +# nee Qumranet, Inc. +1af4 Red Hat, Inc. + 1000 Virtio network device + 01de fffb Propolis Virtio network device + 1001 Virtio block device + 01de fffa Propolis Virtio block device + 1002 Virtio memory balloon + 1003 Virtio console + 1004 Virtio SCSI + 1005 Virtio RNG + 1009 Virtio filesystem + 1041 Virtio 1.0 network device + 1042 Virtio 1.0 block device + 1043 Virtio 1.0 console + 1044 Virtio 1.0 RNG + 1045 Virtio 1.0 memory balloon + 1048 Virtio 1.0 SCSI + 1049 Virtio 1.0 filesystem + 1050 Virtio 1.0 GPU + 1052 Virtio 1.0 input + 1053 Virtio 1.0 socket + 1058 virtio-mem + 105a Virtio file system + 1110 Inter-VM shared memory + 1af4 1100 QEMU Virtual Machine +1af5 Netezza Corp. +1afa J & W Electronics Co., Ltd. +1b00 Montage Technology Co., Ltd. + c001 CXL Memory Expander Controller M88MX5891 + 1ff9 00a2 CXL Memory Expander + 1ff9 00a4 CXL Memory Expander +1b03 Magnum Semiconductor, Inc, + 6100 DXT/DXTPro Multiformat Broadcast HD/SD Encoder/Decoder/Transcoder + 7000 D7 Multiformat Broadcast HD/SD Encoder/Decoder/Transcoder +1b08 MSC Technologies GmbH +1b0a Pegatron + 9602 RS780/RS880 PCI to PCI bridge (int gfx) +1b13 Jaton Corp +1b1a K&F Computing Research Co. + 0e70 GRAPE +1b1c Corsair +1b21 ASMedia Technology Inc. + 0611 ASM1061 Serial ATA Controller + 0612 ASM1061/ASM1062 Serial ATA Controller + 1849 0612 Motherboard + 0622 ASM106x Serial ATA AHCI Controller + 4c52 9661 LRST9661 2-port M.2 SATA3(6Gb/s) Raid Adapter + 0624 ASM106x SATA/RAID Controller + 0625 106x SATA/RAID Controller + 1040 ASM1040 SuperSpeed USB Host Controller + 1041 ASM1041 SuperSpeed USB Host Controller + 1042 ASM1042 SuperSpeed USB Host Controller + 1043 1059 K53SM motherboard + 1043 8488 P8B WS Motherboard + 1849 1042 Motherboard + 1064 ASM1064 Serial ATA Controller + 1080 ASM1083/1085 PCIe to PCI Bridge + 1849 1080 Motherboard + 1142 ASM1042A USB 3.0 Host Controller + 1164 ASM1164 Serial ATA AHCI Controller + 1166 ASM1166 Serial ATA Controller + 1182 ASM1182e 2-Port PCIe x1 Gen2 Packet Switch + 1b21 118f ASM1182e 2-Port PCIe x1 Gen2 Packet Switch + 1184 ASM1184e 4-Port PCIe x1 Gen2 Packet Switch + 1849 1184 ASM1184e 4-Port PCIe x1 Gen2 Packet Switch + 1187 ASM1187e 7-Port PCIe x1 Gen2 Packet Switch + 118f ASM1187e 7-Port PCIe x1 Gen2 Packet Switch + 1242 ASM1142 USB 3.1 Host Controller + 4c52 9a42 LRSU9A42 2-Port Type-A Exchange Adapter + 1343 ASM1143 USB 3.1 Host Controller + 1806 ASM1806 4-Port PCIe x2 Gen2 Packet Switch + 1812 ASM1812 6-Port PCIe x4 Gen2 Packet Switch + 1824 ASM1824 12-Port PCIe x8 Gen2 Packet Switch + 2142 ASM2142/ASM3142 USB 3.1 Host Controller + 1462 7a72 H270 PC MATE + 2806 ASM2806 4-Port PCIe x2 Gen3 Packet Switch + 2812 ASM2812 6-Port PCIe x4 Gen3 Packet Switch + 2824 ASM2824 PCIe Gen3 Packet Switch + 3042 ASM3042 USB 3.2 Gen 1 xHCI Controller + 3142 ASM3142 USB 3.2 Gen 2x1 xHCI Controller + 3241 ASM3241 USB 3.2 Gen 2 Host Controller + 3242 ASM3242 USB 3.2 Host Controller +1b26 Netcope Technologies, a.s. + c132 COMBO-LXT155 + c1c0 NFB-100G1-e0 + c1c1 NFB-100G1-e1 + c250 NFB-200G2-master + c251 NFB-200G2-slave + c2c0 NFB-100G2-e0 + c2c1 NFB-100G2-e1 + cb20 COMBO-20G + cb40 COMBO-40G + cb80 NFB-40G2 +1b2c Opal-RT Technologies Inc. +1b36 Red Hat, Inc. + 0001 QEMU PCI-PCI bridge + 0002 QEMU PCI 16550A Adapter + 1af4 1100 QEMU Virtual Machine + 0003 QEMU PCI Dual-port 16550A Adapter + 1af4 1100 QEMU Virtual Machine + 0004 QEMU PCI Quad-port 16550A Adapter + 1af4 1100 QEMU Virtual Machine + 0005 QEMU PCI Test Device + 1af4 1100 QEMU Virtual Machine + 0006 PCI Rocker Ethernet switch device + 0007 PCI SD Card Host Controller Interface + 0008 QEMU PCIe Host bridge + 0009 QEMU PCI Expander bridge + 000a PCI-PCI bridge (multiseat) + 000b QEMU PCIe Expander bridge + 000c QEMU PCIe Root port + 000d QEMU XHCI Host Controller + 0010 QEMU NVM Express Controller + 0011 QEMU PVPanic device + 0013 QEMU UFS Host Controller + 0100 QXL paravirtual graphic card + 1af4 1100 QEMU Virtual Machine +1b37 Signal Processing Devices Sweden AB + 0001 ADQ214 + 0003 ADQ114 + 0005 ADQ112 + 000e ADQ108 + 000f ADQDSP + 0014 ADQ412 + 0015 ADQ212 + 001b SDR14 + 001c ADQ1600 + 001e ADQ208 + 001f DSU + 0020 ADQ14 + 0023 ADQ7 + 0026 ADQ8 + 0031 ADQ3 + 2014 TX320 + 2019 S6000 +# now owned by HGST (a Western Digital subsidiary) +1b39 sTec, Inc. + 0001 S1120 PCIe Accelerator SSD +1b3a Westar Display Technologies + 7589 HRED J2000 - JPEG 2000 Video Codec Device +1b3e Teradata Corp. + 1fa8 BYNET BIC2SE/X + 1b3e 00a3 BYNET BIC2SX + 1b3e 00c3 BYNET BIC2SE +1b40 Schooner Information Technology, Inc. +# also used by some PROXIM (14b7) devices erroneously +1b47 Numascale AS + 0601 NumaChip N601 + 0602 NumaChip N602 +1b4b Marvell Technology Group Ltd. +# device 1b4b:0100 reports incorrect vendor id due to hw erratum (correct is 11ab) + 0100 88F3700 [Armada 3700 Family] ARM SoC + 0640 88SE9128 SATA III 6Gb/s RAID Controller + 2241 88NR2241 Non-Volatile memory controller + 1028 2112 BOSS-N1 Monolithic + 1028 2113 BOSS-N1 Modular + 1028 2151 BOSS-N1 Modular ET + 1028 2196 ROR-N1 + 1028 2286 BOSS-N1 DC-MHS + 1028 2287 BOSS-N1 Modular + 1b4b 2241 Santa Cruz NVMe Host Adapter + 1b96 4000 WD_BLACK AN1500 NVMe SSD + 1d49 0306 ThinkSystem M.2 NVMe 2-Bay RAID Enablement Kit + 1d49 0307 ThinkSystem 7mm NVMe 2-Bay Rear RAID Enablement Kit + 4c52 9541 LRNV9541 2-port M.2 NVMe Raid Adapter + 2b42 88W8997 2.4/5 GHz Dual-Band 2x2 Wi-Fi® 5 (802.11ac) + Bluetooth® 5.3 Solution + 2b43 NXP 88W9098 Wi-Fi 6 (ax) MAC #1 + 2b44 NXP 88W9098 Wi-Fi 6 (ax) MAC #2 + 2b45 NXP 88W9098 Bluetooth 5.3 + 9120 88SE9120 SATA 6Gb/s Controller + 9123 88SE9123 PCIe SATA 6.0 Gb/s controller + dc93 600e DC-6xxe series SATA 6G controller + 9125 88SE9125 PCIe SATA 6.0 Gb/s controller + 4c52 9615 LRST9615 4-port SATA3(6Gb/s) Exchange Adapter + 9128 88SE9128 PCIe SATA 6 Gb/s RAID controller + 9130 88SE9128 PCIe SATA 6 Gb/s RAID controller with HyperDuo + 1043 8438 P8P67 Deluxe Motherboard + 9170 88SE9170 PCIe 2.0 x1 2-port SATA 6 Gb/s Controller + 9172 88SE9172 SATA 6Gb/s Controller + 9178 88SE9170 PCIe SATA 6Gb/s Controller + 917a 88SE9172 SATA III 6Gb/s RAID Controller + 9182 88SE9182 PCIe 2.0 x2 2-port SATA 6 Gb/s Controller + 9183 88SS9183 PCIe SSD Controller + 9192 88SE9172 SATA III 6Gb/s RAID Controller + 91a0 88SE912x SATA 6Gb/s Controller [IDE mode] + 91a4 88SE912x IDE Controller + 9215 88SE9215 PCIe 2.0 x1 4-port SATA 6 Gb/s Controller + 9220 88SE9220 PCIe 2.0 x2 2-port SATA 6 Gb/s RAID Controller + 9230 88SE9230 PCIe 2.0 x2 4-port SATA 6 Gb/s RAID Controller + 1028 1fd6 BOSS-S1 Adapter + 1028 1fdf BOSS-S1 Modular + 1028 1fe2 BOSS-S1 Adapter + 1028 2010 BOSS-S2 Adapter + 1028 2260 BOSS-S1 Modular + 1028 2261 BOSS-S2 Adapter + 1bd4 0073 RS0200L6R2iM2 + 1d49 0300 ThinkSystem M.2 with Mirroring Enablement Kit + 1d49 0301 ThinkSystem SR630 x16 PCIE with 4 SATA ports Riser + 1d49 0302 ThinkSystem SE350 M.2 SATA 4-Bay Data RAID Mirroring Enablement Kit + 1d49 0303 ThinkSystem SE350 M.2 SATA 4-Bay Data RAID Mirroring Enablement Kit + 1d49 0304 ThinkSystem M.2 SATA 2-Bay RAID Enablement Kit + 1d49 0305 ThinkSystem 7mm SATA 2-Bay Rear RAID Enablement Kit + 4c52 9630 LRST9630 4-port SATA3(6Gb/s) Raid Adapter + 9235 88SE9235 PCIe 2.0 x2 4-port SATA 6 Gb/s Controller + 9445 88SE9445 PCIe 2.0 x4 4-Port SAS/SATA 6 Gbps RAID Controller + 9480 88SE9480 SAS/SATA 6Gb/s RAID controller + 9485 88SE9485 SAS/SATA 6Gb/s controller +1b4c GALAX +1b55 NetUP Inc. + 18f6 Dual DVB Universal CI card + 18f7 Dual DVB Universal CI card rev 1.4 + 2a2c Dual DVB-S2-CI card + e2e4 Dual DVB-T/C-CI RF card +# 2xHDMI and 2xHD-SDI inputs + e5f4 MPEG2 and H264 Encoder-Transcoder + f1c4 Dual ASI-RX/TX-CI card +1b5e STAR-Dundee Ltd. + 0001 SpaceWire PCI Mk2 + 0002 SpaceWire PCIe Mk1 + 0003 SpaceWire cPCI Mk2 + 0004 SpaceWire PXI Recorder Mk1 + 0005 SpaceWire PXI Interface Mk1 + 0006 SpaceWire PXI Interface Mk1 with RMAP Target + 0008 SpaceWire PXI Router Mk1 + 000b SpaceWire PXI Interface Mk2 + 000c SpaceWire PXI Interface Mk2 with RMAP Target + 000d SpaceWire PXI Router Mk2 + 000e SpaceWire PXI Recorder Mk2 + 0100 STAR-Ultra PCIe + 0102 STAR-Ultra Single-Lane Router + 0200 SpaceWire PCIe Mk2 +1b61 Byd Precision Manufacture Co.,Ltd +1b66 DELTACAST + 0007 DELTA-3G-elp-d +1b6f Etron Technology, Inc. + 7023 EJ168 USB 3.0 Host Controller + 1458 5007 GA-880GMA-USB3 + 7052 EJ188/EJ198 USB 3.0 Host Controller + 1849 7052 QC5000-ITX/PH +1b73 Fresco Logic + 1000 FL1000G USB 3.0 Host Controller + 1d5c 1000 Anker USB 3.0 Express Card + 1009 FL1009 USB 3.0 Host Controller + 1100 FL1100 USB 3.0 Host Controller + 16b8 6e31 Allegro Pro USB 3.0 PCIe +1b74 OpenVox Communication Co. Ltd. + 0115 D115P/D115E Single-port E1/T1 card + d130 D130P/D130E Single-port E1/T1 card (3rd GEN) + d210 D210P/D210E Dual-port E1/T1 card(2nd generation) + d230 D230 Dual-port E1/T1 card (2nd generation) + d410 D410/430 Quad-port E1/T1 card + d430 D410/430 Quad-port E1/T1 card +1b79 Absolute Analysis +1b85 OCZ Technology Group, Inc. + 1021 RevoDrive 3 X2 PCIe SSD 240 GB (Marvell SAS Controller) + 1041 RevoDrive 3 X2 PCIe SSD 240 GB (Marvell SAS Controller) + 4018 Z Drive 6000/6300 NVME SSD + 6018 RD400/400A SSD + 8788 RevoDrive Hybrid +1b94 Signatec / Dynamic Signals Corp + e400 PX14400 Dual Xilinx Virtex5 based Digitizer +1b96 Western Digital + 2200 Ultrastar DC SN630 NVMe SSD + 2201 Ultrastar DC SN630 NVMe SSD + 2300 Ultrastar DC SN840 NVMe SSD + 2400 Ultrastar DC SN640 NVMe SSD + 2401 Ultrastar DC SN640 NVMe SSD + 2402 Ultrastar DC SN640 NVMe SSD + 2404 Ultrastar DC SN640 NVMe SSD + 2500 Ultrastar DC SN840 NVMe SSD + 2600 Ultrastar DC ZN540 ZNS NVMe SSD + 2700 Ultrastar DC SN650 NVMe SSD + 2701 Ultrastar DC SN650 NVMe SSD + 2702 Ultrastar DC SN650 NVMe SSD + 2720 Ultrastar DC SN650 NVMe SSD + 2721 Ultrastar DC SN650 NVMe SSD + 2722 Ultrastar DC SN655 NVMe SSD + 3001 RapidFlex C2000 NVMe Initiator + 3714 PC SN730 NVMe SSD + 3734 PC SN730 NVMe SSD +1b9a XAVi Technologies Corp. +1baa QNAP Systems, Inc. +1bad ReFLEX CES + c001 XpressGXA10-LP1150 + c002 XpressGXA10-LP1151 +1bb0 SimpliVity Corporation + 0002 OmniCube Accelerator OA-3000 + 0010 OmniCube Accelerator OA-3000-2 +1bb1 Seagate Technology PLC + 005d Nytro PCIe Flash Storage + 1bb1 6501 Nytro XP6500-8A1536 1.5TB +# 2TB Nytro PCIe controller + 1bb1 6502 Nytro XP6500-8A2048 +# 4TB Nytro PCIe controller + 1bb1 6503 Nytro XP6500-8A4096 +# 2GB DRAM variant of Nytro card + 1bb1 6511 Nytro XH6550-2GB DRAM +# 8GB variant of Nytro PCIe controller + 1bb1 6512 Nytro XH6550-8GB DRAM +# 1.5 TB Nytro PCIe controller + 1bb1 6521 Nytro XP6500-8A1536 1.5TB +# 2TB Nytro PCIe controller + 1bb1 6522 Nytro XP6500-8A2048 +# 4TB Nytro PCIe controller + 1bb1 6523 Nytro XP6500-8A4096 + 0100 Nytro Flash Storage + 1bb1 0101 Nytro XF1440 + 1bb1 0103 Nytro 5000 + 1bb1 0105 Nytro 5020 + 1bb1 0106 Nytro 5020 TCG +# Larkspur 2.5" + 1bb1 0107 Nytro 5320 +# Larkspur 2.5" TCG + 1bb1 0108 Nytro 5320 TCG + 1bb1 0121 Nytro XM1440 + 1bb1 0123 Nytro 5000 +# Kiowa M.2 + 1bb1 0125 Nytro 5020 +# Kiowa M.2 TCG + 1bb1 0126 Nytro 5020 +# Larkspur M.2 22110mm + 1bb1 0127 Nytro 5320 M.2 +# Larkspur M.2 22110mm TCG + 1bb1 0128 Nytro 5320 M.2 TCG +# Larkspur M.2 2280mm + 1bb1 0131 Nytro 5320 M.2 +# Larkspur M.2 2280mm TCG + 1bb1 0132 Nytro 5320 M.2 TCG +# Larkspur E1.S + 1bb1 0141 Nytro 5320 E1.S +# Larkspur E1.S TCG + 1bb1 0142 Nytro 5320 E1.S TCG +# Kersey 2.5" + 1bb1 0151 Nytro 5520 +# Kersey 2.5" TCG + 1bb1 0152 Nytro 5520 TCG +# Nytro 5050H (Ebonhawk - High Performance) + 1bb1 0153 Nytro 5050H +# Nytro 5050H TCG (Ebonhawk High Performance) + 1bb1 0154 Nytro 5050H TCG +# Nytro 5050M (Ebonhawk Mainstream Performance) + 1bb1 0155 Nytro 5050M +# Nytro 5050M TCG (Ebonhawk Mainstream Performance) + 1bb1 0156 Nytro 5050M TCG +# Nytro 5050M (Ebonhawk Mainstream Performance) - 7mm + 1bb1 0157 Nytro 5050M 7mm +# Nytro 5050M (Ebonhawk Mainstream Performance) TCG - 7mm + 1bb1 0158 Nytro 5050M TCG 7mm +# Nytro 5060M (Rocinante Mainstream Performance) - 15mm + 1bb1 0159 Nytro 5060M +# Nytro 5050M TCG (Rocinante Mainstream Performance) - 15mm + 1bb1 0160 Nytro 5060M TCG +# Nytro 5060M 7mm (Rocinante Mainstream Performance) + 1bb1 0161 Nytro 5060M 7mm +# Nytro 5060M TCG (Rocinante Mainstream Performance) - 7mm + 1bb1 0162 Nytro 5060M TCG 7mm +# Nytro 5060H (Rocinante High Performance) + 1bb1 0163 Nytro 5060H +# Nytro 5060H TCG (Rocinante High Performance) + 1bb1 0164 Nytro 5060H TCG +# Nytro 5060H (Rocinante - High Performance) - E3.S 1T + 1bb1 0165 Nytro 5060H E3.S 1T +# Nytro 5060H (Rocinante - High Performance) - E3.S 1T TCG + 1bb1 0166 Nytro 5060H E3.S 1T TCG +# Nytro 5060H (Rocinante - High Performance) - E3.L 1T + 1bb1 0167 Nytro 5060H E3.L 1T +# Nytro 5060H (Rocinante - High Performance) - E3.L 1T TCG + 1bb1 0168 Nytro 5060H E3.L 1T TCG +# Nytro 5060M (Rocinante Mainstream Performance) - E3.S 1T + 1bb1 0169 Nytro 5060M E3.S 1T +# Nytro 5060M (Rocinante Mainstream Performance) - E3.S 1T TCG + 1bb1 0170 Nytro 5060M E3.S 1T TCG +# Nytro 5060M (Rocinante Mainstream Performance) - E3.L 1T + 1bb1 0171 Nytro 5060M E3.L 1T +# Nytro 5060M (Rocinante Mainstream Performance) - E3.L 1T TCG + 1bb1 0172 Nytro 5060M E3.L 1T TCG +# Nytro 5060M (Rocinante Mainstream Performance) - E1.S + 1bb1 0173 Nytro 5060M E1.S +# Nytro 5060M (Rocinante Mainstream Performance) - E1.S TCG + 1bb1 0174 Nytro 5060M E1.S TCG +# Nytro 5350S (Ebonhawk Single Port) - 15mm + 1bb1 0175 Nytro 5350S - 15mm +# Nytro 5350S (Ebonhawk Single Port) TCG - 15mm + 1bb1 0176 Nytro 5350S TCG - 15mm +# Nytro 5360S (Rocinante Single Port) - 15mm + 1bb1 0177 Nytro 5360S - 15mm +# Nytro 5360S (Rocinante Single Port) TCG - 15mm + 1bb1 0178 Nytro 5360S TCG - 15mm +# Nytro 5360S (Rocinante Single Port) - E3.S + 1bb1 0179 Nytro 5360S - E3.S +# Nytro 5360S (Rocinante Single Port) TCG - E3.S + 1bb1 0180 Nytro 5360S TCG - E3.S +# Nytro 5060H (Rocinante High Performance) non-SED + 1bb1 0181 Nytro 5060H + 1bb1 01a1 Nytro XP7102 + 5012 FireCuda/IronWolf 510 SSD + 5013 BarraCuda Q5 NVMe SSD (DRAM-less) + 5016 FireCuda 520/IronWolf 525 SSD + 5018 FireCuda 530 SSD + 5019 BarraCuda PCIe SSD (DRAM-less) +# 2TB + 5021 FireCuda 520 SSD +# 1TB + 5026 FireCuda 540 SSD +1bb3 Bluecherry + 4304 BC-04120A MPEG4 4 port video encoder / decoder + 4309 BC-08240A MPEG4 4 port video encoder / decoder + 4310 BC-16480A MPEG4 16 port video encoder / decoder + 4e04 BC-04120A 4 port MPEG4 video encoder / decoder + 4e09 BC-08240A 8 port MPEG4 video encoder / decoder + 4e10 BC-16480A 16 port MPEG4 video encoder / decoder + 5304 BC-H04120A 4 port H.264 video and audio encoder / decoder + 5308 BC-H08240A 8 port H.264 video and audio encoder / decoder + 5310 BC-H16480A 16 port H.264 video and audio encoder / decoder +1bb5 Quantenna Communications, Inc. +1bbf Maxeler Technologies Ltd. + 0003 MAX3 + 0004 MAX4 +1bc0 Innodisk Corporation + 1001 PCIe 3TG6-P Controller + 1002 PCIe 3TE6 Controller (DRAM-less) + 1160 PCIe 3TE2 Controller + 1321 PCIe 4TG-P Controller + 1322 PCIe 4TE Controller + 2262 PCIe 3TG3-P Controller + 5208 PCIe 3TE7 Controller + 5216 PCIe 3TE8 Controller + 5236 PCIe 4TG2-P Controller +1bcd Apacer Technology + 0120 NVMe SSD Drive 960GB +1bcf NEC Corporation + 001c Vector Engine 1.0 +1bd0 Astronics Corporation + 1001 Mx5 PMC/XMC Databus Interface Card + 1002 PM1553-5 (PC/104+ MIL-STD-1553 Interface Card) + 1004 AB3000 Series Rugged Computer + 1005 PE1000 (Multi-Protocol PCIe/104 Interface Card) + 1006 webCS Wireless Aircraft Communications Server + 1007 AB3000 Series Rugged Computer (Series N) + 1008 ME1000 mPCIe Avionics Interface Card + 100a NG1 Series Avionics Converter + 100b LE5 429 Databus Interface Card + 100c LE5 1553 Databus Interface Card + 1101 OmniBus II PCIe Multi-Protocol Interface Card + 1102 OmniBusBox II Multi-Protocol Interface Core + 1103 OmniBus II cPCIe/PXIe Multi-Protocol Interface Card + 1200 NG3 Series Mil-Std-1553 Interface + 1201 NG3 Series ARINC 429 Interface + 1202 NG3 Series Avionics Discrete & Serial Interface + 1203 NG3 Series Avionics Discrete Interface +1bd4 Inspur Electronic Information Industry Co., Ltd. + 0911 Arria10_PCIe_F10A1150 + 1000 NS8600G1U160 NVME SSD + 1001 NS8600G1U320 NVME SSD + 1002 NS8600G1U640 NVME SSD + 1003 NS8500G1U192 NVME SSD + 1004 NS8500G1U384 NVME SSD + 1005 NS8500G1U768 NVME SSD + 1006 NS6610G1U160, NS6510G1U192 NVME SSD + 1007 NS6610G1U320, NS6510G1U384 NVME SSD + 100c NS8510G1Uxxx, NS8610G1Uxxx NVME SSD + 100e NS8500G2Uxxxx, NS8600G2Uxxxx NVME SSD +1bee IXXAT Automation GmbH + 0002 CAN-IB100/PCIe + 0003 CAN-IB200/PCIe + 0004 CAN-IB120/PCIe Mini + 0005 CAN-IB130/PCIe 104 + 0006 CAN-IB230/PCIe 104 + 000e CAN-IB500/PCIe + 000f CAN-IB600/PCIe + 0010 CAN-IB300/PCI + 0011 CAN-IB400/PCI + 0012 CAN-IB520/PCIe Mini + 0016 CAN-IB410/PMC + 001c CAN-IB810/PMC + 001e INpact PCIe + 001f INpact PCIe Mini + 0029 INpact M.2 + 002d CAN-IB630/PCIe 104 + 002e CAN-IB640/PCIe +1bef Lantiq + 0011 MIPS SoC PCI Express Port +1bf4 VTI Instruments Corporation + 0001 SentinelEX + 7011 RX0xxx +1bf5 Greenliant + 1000 G7200 series U.2 NVMe SSD +1bfc Duagon AG +1bfd EeeTOP +1c00 Nanjing Qinheng Microelectronics Co., Ltd. + 2170 CH351 PCIe Parallel Port Adapter + 2273 CH351 PCIe Dual Port Serial Adapter + 3050 CH382L PCIe Parallel Port Adapter + 3250 CH384 Dual Port Serial and Parallel Port Adapter + 3252 CH382 PCIe Dual Port Serial Adapter +# Device ID reused: CH352 is for PCI bus, CH382 for PCIe. + 3253 CH352/CH382 PCI/PCIe Dual Port Serial Adapter +1c09 CSP, Inc. + 4254 10G-PCIE3-8D-2S + 4255 10G-PCIE3-8D-Q + 4256 10G-PCIE3-8D-2S + 4258 10G-PCIE3-8E-2S Network Adapter + 4260 10G-PCIE3-8E-4S Network Adapter + 4261 10G-PCIE3-8E-4S Network Adapter + 4262 10G-PCIE3-8E-4S Network Adapter + 4263 10G-PCIE3-8E-4S Network Adapter + 4264 10G-PCIE3-8E-2S Network Adapter + 4265 10G-PCIE3-8E-2S Network Adapter + 5000 25G-PCIE3-8A-2S Security Intelligent Adapter + 5001 25G-PCIE3-8B-2S Security Intelligent Adapter +1c1c Symphony + 0001 82C101 +1c1f SoftLab-NSK + 0015 FD842 + 0019 FD722 + 001a FD788 + 001b FD720 + 001c FD922 + 001d Vega + 001f FD940 + 0020 FD2110 + 0021 FD722 + 0022 FD788 + 0023 FD722-M2 +1c28 Lite-On IT Corp. / Plextor + 0122 M6e PCI Express SSD [Marvell 88SS9183] +# previously Fiberblaze +1c2c Silicom Denmark + 000a Capture + 000f SmartNIC + 00a0 FBC4G Capture 4x1Gb [Herculaneum] + 00a1 FBC4XG Capture 4x10Gb [Ancona] + 00a2 FBC8XG Capture 8x10Gb [Livorno] + 00a3 FBC2XG Capture 2x10Gb [Genoa] + 00a4 FBC4XGG3 Capture 4x10Gb [Livigno] + 00a5 FBC2XLG Capture 2x40Gb [Livorno] + 00a6 FBC1CG Capture 1x100Gb + 00a9 FBC2XGHH Capture 2x10Gb [Latina] + 00ad FBC2CGG3HL Capture 2x100Gb [Padua] + 00af Capture slave device + 00e0 PacketMover 2x100Gb [Savona] + 00e1 PacketMover 2x100Gb [Tivoli] + 00e2 PacketMover 2x100Gb [Mango_04] + 00e3 PacketMover 2x10Gb [Tivoli] + 00e5 PacketMover 2x10Gb [Corfu] + 1000 SmartNIC N5010 4x100Gb + 1001 SmartNIC N5011 w/2xE810 4x100Gb + 1002 SmartNIC N5013 4x100Gb + 1003 SmartNIC N5014 w/2xE810 4x100Gb + a000 FBC2CGG3 Capture 2x40Gb [Mango_02] + a001 FBC2CGG3 Capture 2x100Gb [Mango_02] + a003 FBC2CGG3 Capture 16x10Gb [Mango] + a006 FBC2CGG3 Capture 2x100Gb [Mango] + a007 FBC2CGG3 Capture 2x40Gb [Mango] + a008 FBC2CGG3 Capture 2x25Gb [Mango] + a009 FBC2CGG3 Capture 16x10Gb [Mango] + a00a FBC2CGG3 Capture 8x10Gb [Mango] + a00e FB2CG Capture 2x100Gb [Savona] + a00f FB2CG Capture 2x40Gb [Savona] + a010 FB2CGHH Capture 2x40Gb [Tivoli] + a011 FB2CG Capture 2x25Gb [Savona] + a012 FB2CG Capture 8x10Gb [Savona] + a013 FB2CGHH Capture 2x25Gb [Tivoli] + a014 FB2CGHH Capture 8x10Gb [Tivoli] + a015 FB2CGHH Capture 2x100Gb [Tivoli] + a016 FB2CG Capture 8x25Gb [Savona] + a017 FB2CGHH Capture 8x25Gb [Tivoli] a017 +# Used on V120 VME Crate Controller +1c32 Highland Technology, Inc. +1c33 Daktronics, Inc +1c36 Annapurna Labs Ltd. + 0001 Gigabit Ethernet Adapter + 0002 SFP+ 10G Ethernet Adapter +1c3b Accensus, LLC + 0200 Telas2 +# http://www.accensusllc.com/accensustelas2.html + 0300 Telas 2.V +1c44 Enmotus Inc + 1100 Fuzedrive NVMe SSD + 8000 8000 Storage IO Controller +# A Western Digital Subsidiary +1c58 HGST, Inc. + 0003 Ultrastar SN100 Series NVMe SSD + 1014 04f5 PCIe3 1.6TB NVMe Flash Adapter + 1014 04f6 PCIe3 3.2TB NVMe Flash Adapter + 1c58 0003 Ultrastar SN100/SN150 NVMe SSD + 0023 Ultrastar SN200 Series NVMe SSD + 1c58 8823 Ultrastar Memory (ME200) +1c5c SK hynix + 1069 PCB01 NVMe Solid State Drive + 1282 PC300 NVMe Solid State Drive 128GB + 1283 PC300 NVMe Solid State Drive 256GB + 1284 PC300 NVMe Solid State Drive 512GB + 1285 PC300 NVMe Solid State Drive 1TB + 1327 BC501 NVMe Solid State Drive + 1339 BC511 NVMe SSD + 1504 PC400 NVMe SSD + 1527 PC401 NVMe Solid State Drive 256GB + 1627 PC601 NVMe Solid State Drive + 1639 PC611 NVMe Solid State Drive + 1739 BC701 NVMe Solid State Drive + 174a Gold P31/BC711/PC711 NVMe Solid State Drive + 1959 Platinum P41/PC801 NVMe Solid State Drive + 1d59 BC901 NVMe Solid State Drive (DRAM-less) + 2204 960GB TLC PCIe Gen3 x4 NVMe M.2 22110 + 2427 PE6010 NVMe Solid State Drive + 2429 PE6011 NVMe Solid State Drive + 243b PE6110 NVMe Solid State Drive + 1c5c 0100 PE6110 NVMe Solid State Drive + 2527 PE4010 NVMe Solid State Drive + 2839 PE8000 Series NVMe Solid State Drive + 1028 2143 DC NVMe SED PE8010 RI U.2 960GB + 1028 2144 DC NVMe PE8010 RI U.2 960GB + 1028 2145 DC NVMe SED PE8010 RI U.2 1.92TB + 1028 2146 DC NVMe PE8010 RI U.2 1.92TB + 1028 2147 DC NVMe SED PE8010 RI U.2 3.84TB + 1028 2148 DC NVMe PE8010 RI U.2 3.84TB + 1028 2149 DC NVMe SED PE8010 RI U.2 7.68TB + 1028 214a DC NVMe PE8010 RI U.2 7.68TB + 1c5c 0100 PE8000 Series NVMe Solid State Drive + 2849 PE81x0 U.2/3 NVMe Solid State Drive + 1028 2262 DC NVMe OPAL PE8110 RI U.2 960GB + 1028 2263 DC NVMe OPAL PE8110 RI U.2 1920GB + 1028 2264 DC NVMe OPAL PE8110 RI U.2 3840GB + 1028 2265 DC NVMe OPAL PE8110 RI U.2 7680GB + 1028 2266 DC NVMe ISE PE8110 RI U.2 960GB + 1028 2267 DC NVMe ISE PE8110 RI U.2 1920GB + 1028 2268 DC NVMe ISE PE8110 RI U.2 3840GB + 1028 2269 DC NVMe ISE PE8110 RI U.2 7680GB + 1c5c 0101 PE81x0 U.2/3 NVMe Solid State Drive + 284a PE8110 Series NVMe Solid State Drive + 2a49 PE9110 Series NVMe Solid State Drive + 2a59 PE9010 Series NVMe Solid State Drives + 2b59 PS10x0 Series NVMe Solid State Drives +1c5f Beijing Memblaze Technology Co. Ltd. + 000d PBlaze5 520/526 + 1c5f 0220 NVMe SSD PBlaze5 520 1920G AIC + 1c5f 0221 NVMe SSD PBlaze5 520 1920G 2.5" U.2 + 1c5f 0230 NVMe SSD PBlaze5 520 3840G AIC + 1c5f 0231 NVMe SSD PBlaze5 520 3840G 2.5" U.2 + 1c5f 4220 NVMe SSD PBlaze5 526 1600G AIC + 1c5f 4221 NVMe SSD PBlaze5 526 1600G 2.5" U.2 + 1c5f 4230 NVMe SSD PBlaze5 526 3200G AIC + 1c5f 4231 NVMe SSD PBlaze5 526 3200G 2.5" U.2 + 000e PBlaze6 6530/6531/6541/6630 + 1c5f 0b20 NVMe SSD PBlaze6 6530 1920G AIC + 1c5f 0b21 NVMe SSD PBlaze6 6530 1920G 2.5" U.2 + 1c5f 0b25 NVMe SSD PBlaze6 6530 1920G E1.S + 1c5f 0b27 NVMe SSD PBlaze6 6630 1920G 2.5" U.2 + 1c5f 0b30 NVMe SSD PBlaze6 6530 3840G AIC + 1c5f 0b31 NVMe SSD PBlaze6 6530 3840G 2.5" U.2 + 1c5f 0b35 NVMe SSD PBlaze6 6530 3840G E1.S + 1c5f 0b37 NVMe SSD PBlaze6 6630 3840G 2.5" U.2 + 1c5f 0b40 NVMe SSD PBlaze6 6530 7680G AIC + 1c5f 0b41 NVMe SSD PBlaze6 6530 7680G 2.5" U.2 + 1c5f 0b47 NVMe SSD PBlaze6 6630 7680G 2.5" U.2 + 1c5f 1320 NVMe SSD PBlaze6 6531 1920G AIC + 1c5f 1321 NVMe SSD PBlaze6 6531 1920G 2.5" U.2 + 1c5f 1330 NVMe SSD PBlaze6 6531 3840G AIC + 1c5f 1331 NVMe SSD PBlaze6 6531 3840G 2.5" U.2 + 1c5f 1340 NVMe SSD PBlaze6 6531 7680G AIC + 1c5f 1341 NVMe SSD PBlaze6 6531 7680G 2.5" U.2 + 1c5f 1421 NVMe SSD PBlaze6 6541 1920G 2.5" U.2 + 1c5f 1427 NVMe SSD PBlaze6 6641 1920G 2.5" U.2(dual port) + 1c5f 1431 NVMe SSD PBlaze6 6541 3840G 2.5" U.2 + 1c5f 1437 NVMe SSD PBlaze6 6641 3840G 2.5" U.2(dual port) + 1c5f 1441 NVMe SSD PBlaze6 6541 7680G 2.5" U.2 + 1c5f 1447 NVMe SSD PBlaze6 6641 7680G 2.5" U.2(dual port) + 1c5f 4b20 NVMe SSD PBlaze6 6536 1600G AIC + 1c5f 4b21 NVMe SSD PBlaze6 6536 1600G 2.5" U.2 + 1c5f 4b25 NVMe SSD PBlaze6 6536 1600G E1.S + 1c5f 4b27 NVMe SSD PBlaze6 6636 1600G 2.5" U.2 + 1c5f 4b30 NVMe SSD PBlaze6 6536 3200G AIC + 1c5f 4b31 NVMe SSD PBlaze6 6536 3200G 2.5" U.2 + 1c5f 4b35 NVMe SSD PBlaze6 6536 3200G E1.S + 1c5f 4b37 NVMe SSD PBlaze6 6636 3200G 2.5" U.2 + 1c5f 4b40 NVMe SSD PBlaze6 6536 6400G AIC + 1c5f 4b41 NVMe SSD PBlaze6 6536 6400G 2.5" U.2 + 1c5f 4b47 NVMe SSD PBlaze6 6636 6400G 2.5" U.2 + 1c5f 5320 NVMe SSD PBlaze6 6537 1600G AIC + 1c5f 5321 NVMe SSD PBlaze6 6537 1600G 2.5" U.2 + 1c5f 5330 NVMe SSD PBlaze6 6537 3200G AIC + 1c5f 5331 NVMe SSD PBlaze6 6537 3200G 2.5" U.2 + 1c5f 5340 NVMe SSD PBlaze6 6537 6400G AIC + 1c5f 5341 NVMe SSD PBlaze6 6537 6400G 2.5" U.2 + 1c5f 5421 NVMe SSD PBlaze6 6547 1600G 2.5" U.2 + 1c5f 5427 NVMe SSD PBlaze6 6647 1600G 2.5" U.2(dual port) + 1c5f 5431 NVMe SSD PBlaze6 6547 3200G 2.5" U.2 + 1c5f 5437 NVMe SSD PBlaze6 6647 3200G 2.5" U.2(dual port) + 1c5f 5441 NVMe SSD PBlaze6 6547 6400G 2.5" U.2 + 1c5f 5447 NVMe SSD PBlaze6 6647 6400G 2.5" U.2(dual port) + 003d PBlaze5 920/926 + 1c5f 0a30 NVMe SSD PBlaze5 920 3840G AIC + 1c5f 0a31 NVMe SSD PBlaze5 920 3840G 2.5" U.2 + 1c5f 0a40 NVMe SSD PBlaze5 920 7680G AIC + 1c5f 0a41 NVMe SSD PBlaze5 920 7680G 2.5" U.2 + 1c5f 4a30 NVMe SSD PBlaze5 926 3200G AIC + 1c5f 4a31 NVMe SSD PBlaze5 926 3200G 2.5" U.2 + 1c5f 4a40 NVMe SSD PBlaze5 926 6400G AIC + 1c5f 4a41 NVMe SSD PBlaze5 926 6400G 2.5" U.2 + 003e PBlaze6 6920/6930 + 1c5f 0a31 NVMe SSD PBlaze6 6920 3840GB 2.5" U.2 + 1c5f 0a41 NVMe SSD PBlaze6 6920 7680GB 2.5" U.2 + 1c5f 0b31 NVMe SSD PBlaze6 6930 3840GB 2.5" U.3 + 1c5f 0b41 NVMe SSD PBlaze6 6930 7680GB 2.5" U.3 + 1c5f 0b51 NVMe SSD PBlaze6 6930 15360GB 2.5" U.3 + 1c5f 0b61 NVMe SSD PBlaze6 6930 30720GB 2.5" U.3 + 1c5f 4a31 NVMe SSD PBlaze6 6920 3200GB 2.5" U.2 + 1c5f 4a41 NVMe SSD PBlaze6 6920 6400GB 2.5" U.2 + 1c5f 4b41 NVMe SSD PBlaze6 6936 6400GB 2.5" U.3 + 1c5f 4b51 NVMe SSD PBlaze6 6936 12800GB 2.5" U.3 + 1c5f 4b61 NVMe SSD PBlaze6 6936 25600GB 2.5" U.3 + 003f PBlaze7 7940/7946 NVMe SSD + 1c5f 0431 NVMe SSD PBlaze7 7940 3840G 2.5" U.2 + 1c5f 0c31 NVMe SSD PBlaze7 7940 3840G 2.5" U.2 + 1c5f 0c41 NVMe SSD PBlaze7 7940 7680G 2.5" U.2 + 1c5f 0c51 NVMe SSD PBlaze7 7940 15360G 2.5" U.2 + 1c5f 1430 NVMe SSD PBlaze7 7940 3840G AIC + 1c5f 1431 NVMe SSD PBlaze7 7940 3840G 2.5" U.2 + 1c5f 1435 NVMe SSD PBlaze7 7940 3840G E1.S + 1c5f 1440 NVMe SSD PBlaze7 7940 7680G AIC + 1c5f 1441 NVMe SSD PBlaze7 7940 7680G 2.5" U.2 + 1c5f 1445 NVMe SSD PBlaze7 7940 7680G E1.S + 1c5f 1450 NVMe SSD PBlaze7 7940 15360G AIC + 1c5f 1451 NVMe SSD PBlaze7 7940 15360G 2.5" U.2 + 1c5f 4c31 NVMe SSD PBlaze7 7946 3200G 2.5" U.2 + 1c5f 4c41 NVMe SSD PBlaze7 7946 6400G 2.5" U.2 + 1c5f 4c51 NVMe SSD PBlaze7 7946 12800G 2.5" U.2 + 1c5f 5430 NVMe SSD PBlaze7 7946 3200G AIC + 1c5f 5431 NVMe SSD PBlaze7 7946 3200G 2.5" U.2 + 1c5f 5435 NVMe SSD PBlaze7 7946 3200G E1.S + 1c5f 5440 NVMe SSD PBlaze7 7946 6400G AIC + 1c5f 5441 NVMe SSD PBlaze7 7946 6400G 2.5" U.2 + 1c5f 5445 NVMe SSD PBlaze7 7946 6400G E1.S + 1c5f 5450 NVMe SSD PBlaze7 7946 12800G AIC + 1c5f 5451 NVMe SSD PBlaze7 7946 12800G 2.5" U.2 + 1ea0 2100 TP2510 Series U.2 NVMe Datacenter SSD(3.84TB) + 1ea0 2101 TP2511 Series U.2 NVMe Datacenter SSD(3.84TB) + 1ea0 2110 TP2510 Series E3.S NVMe Datacenter SSD(3.84TB) + 1ea0 2111 TP2511 Series E3.S NVMe Datacenter SSD(3.84TB) + 1ea0 2200 TP2510 Series U.2 NVMe Datacenter SSD(7.68TB) + 1ea0 2201 TP2511 Series U.2 NVMe Datacenter SSD(7.68TB) + 1ea0 2210 TP2510 Series E3.S NVMe Datacenter SSD(7.68TB) + 1ea0 2211 TP2511 Series E3.S NVMe Datacenter SSD(7.68TB) + 0540 PBlaze4 NVMe SSD + 0550 PBlaze5 700/900 + 0555 PBlaze5 510/516 + 0557 PBlaze5 910/916 +1c63 Science and Research Centre of Computer Technology (JSC "NICEVT") + 0008 K1927BB1Ya [EC8430] Angara Interconnection Network Adapter +1c7e TTTech Computertechnik AG + 0200 zFAS Debug Port +1c7f Elektrobit Austria GmbH + 5100 EB5100 +1c8a TSF5 Corporation + 0001 Hunter PCI Express +1c8c Mobiveil, Inc. +1cb0 Shannon Systems + 8266 SP4 Series SSD + 1cb0 2021 SP4 Series OCS U.2 SSD + 1cb0 2121 SP4 Series ZNS U.2 SSD + 1cb0 2f21 SP4E Series NVMe U.2 SSD(1920/3840/7680GB) + 1cb0 2f22 SP4X Series NVMe U.2 SSD(1600/3200/6400GB) + d000 Venice NVMe SSD + 1cb0 2010 Venice-E Series OCS U.2 + 1cb0 2011 Venice Series OCS U.2 + 1cb0 2012 Venice-X Series OCS U.2 +# Venice-E Series NVMe U.2 SSD(1.92T/3.84T/7.68T) + 1cb0 2f10 Venice-E Series NVMe U.2 +# Venice Series NVMe U.2 SSD(2T/4T/8T) + 1cb0 2f11 Venice Series NVMe U.2 +# Venice-X Series NVMe U.2 SSD(1.6T/3.2T/6.4T) + 1cb0 2f12 Venice-X Series NVMe U.2 + 1cb0 a010 Venice-E Series OCS AIC + 1cb0 a012 Venice-X Series OCS AIC +# Venice-E Series NVMe AIC SSD(1.92T/3.84T/7.68T) + 1cb0 af10 Venice-E Series NVMe AIC +# Venice-X Series NVMe AIC SSD(1.6T/3.2T/6.4T) + 1cb0 af12 Venice-X Series NVMe AIC +1cb1 Collion UG & Co.KG +1cb5 Focusrite Audio Engineering Ltd + 0002 Clarett +1cb8 Dawning Information Industry Co., Ltd. +1cc1 ADATA Technology Co., Ltd. + 1202 IM2P32A8 NVMe SSD (DRAM-less) +# SX6000LNP + 2263 XPG SX6000 Lite NVMe SSD (DRAM-less) + 32a8 SM2P32A8 NVMe SSD (DRAM-less) + 33f3 IM2P33F3 NVMe SSD (DRAM-less) + 33f4 IM2P33F4 NVMe SSD (DRAM-less) + 33f8 IM2P33F8 series NVMe SSD (DRAM-less) + 41c3 SM2P41C3 NVMe SSD (DRAM-less) + 41c8 SM2P41C8 NVMe SSD (DRAM-less) + 5236 XPG GAMMIX S70 BLADE NVMe SSD + 5350 XPG GAMMIX S50, S50 Lite NVMe SSD +# PREMIUM NVMe SSD for PlayStation 5 + 5370 GAMMIX S70 BLADE, PS5 PREMIUM NVMe SSD + 5762 FALCON, GAMMIX S41, SPECTRIX S40G NVMe SSD (DRAM-less) + 5763 XPG GAMMIX S5 NVMe SSD (DRAM-less) + 5766 XPG GAMMIXS1 1L, XPG GAMMIX S5, LEGEND 710 / 740, SWORDFISH NVMe SSD (DRAM-less) + 5772 LEGEND 850 LITE NVMe SSD (DRAM-less) + 612a LEGEND 750 NVMe SSD (DRAM-less) + 613a ATOM 50, LEGEND 840 NVMe SSD (DRAM-less) + 621a LEGEND 850 NVMe SSD (DRAM-less) + 622a LEGEND 960 NVMe SSD + 624a LEGEND 700, XPG GAMMIX S20 NVMe SSD (DRAM-less) +# 1TB + 627a LEGEND 800 NVMe SSD (DRAM-less) +# 500GB + 628a LEGEND 800 NVMe SSD (DRAM-less) + 8201 XPG SX8200 Pro PCIe Gen3x4 M.2 2280 Solid State Drive +1cc4 Shenzhen Unionmemory Information System Ltd. + 1203 NVMe SSD Controller UHXXXa series + 1cc4 a121 NVMe SSD UHXXXa series U.2 960GB + 1cc4 a122 NVMe SSD UHXXXa series U.2 1920GB + 1cc4 a123 NVMe SSD UHXXXa series U.2 3840GB + 1cc4 a124 NVMe SSD UHXXXa series U.2 7680GB + 1cc4 a125 NVMe SSD UHXXXa series U.2 15360GB + 1cc4 a211 NVMe SSD UHXXXa series U.2 800GB + 1cc4 a212 NVMe SSD UHXXXa series U.2 1600GB + 1cc4 a213 NVMe SSD UHXXXa series U.2 3200GB + 1cc4 a214 NVMe SSD UHXXXa series U.2 6400GB + 1cc4 e122 NVMe SSD UH711a series U.2 1920GB + 1cc4 e123 NVMe SSD UH711a series U.2 3840GB + 1cc4 e124 NVMe SSD UH711a series U.2 7680GB + 17a9 RPITJ1TBVME2HWD NVMe SSD 1024GB + 17aa AH631 PCIe 3.0 NVMe SSD 512GB + 17ab AH631 PCIe 3.0 NVMe SSD 256GB + 2263 AM611 PCIe 3.0 x2 NVMe SSD 256GB + 5008 AM610 PCIe 3.0 x2 NVMe SSD 128GB, 256GB + 5012 RPITJ512PED2OWX NVMe SSD 512GB + 5212 AM521 PCIe 3.0 NVMe SSD 256GB + 6201 AM620 PCIe 3.0 NVMe SSD 128GB + 6202 AM620 PCIe 3.0 NVMe SSD 256GB + 6203 AM620 PCIe 3.0 NVMe SSD 512GB + 6204 AM620 PCIe 3.0 NVMe SSD 1024GB + 6302 AM630 PCIe 4.0 NVMe SSD 256GB + 6303 AM630 PCIe 4.0 x4 NVMe SSD Controller + 6304 AM630 PCIe 4.0 NVMe SSD 1024GB + 6a02 AM6A0 PCIe 4.0 NVMe SSD 256GB + 6a03 RPETJ512MKP1QDQ PCIe 4.0 NVMe SSD 512GB (DRAM-less) + 6a13 RPJYJ512MKN1QWQ PCIe 4.0 NVMe SSD 512GB (DRAM-less) + 6a14 RPEYJ1T24MKN2QWY PCIe 4.0 NVMe SSD 1024GB (DRAM-less) + 8030 NVMe SSD Controller UH8X2X/UH7X2X series + 1cc4 1122 NVMe SSD UH812a U.2 1.92TB + 1cc4 1123 NVMe SSD UH812a U.2 3.84TB + 1cc4 1124 NVMe SSD UH812a U.2 7.68TB + 1cc4 1125 NVMe SSD UH812a U.2 15.36TB + 1cc4 1222 NVMe SSD UH812a E3.S 1.92TB + 1cc4 1223 NVMe SSD UH812a E3.S 3.84TB + 1cc4 1224 NVMe SSD UH812a E3.S 7.68TB + 1cc4 1225 NVMe SSD UH812a E3.S 15.36TB + 1cc4 2112 NVMe SSD UH832a U.2 1.6TB + 1cc4 2113 NVMe SSD UH832a U.2 3.2TB + 1cc4 2114 NVMe SSD UH832a U.2 6.4TB + 1cc4 2115 NVMe SSD UH832a U.2 12.8TB + 1cc4 2212 NVMe SSD UH832a E3.S 1.6TB + 1cc4 2213 NVMe SSD UH832a E3.S 3.2TB + 1cc4 2214 NVMe SSD UH832a E3.S 6.4TB + 1cc4 2215 NVMe SSD UH832a E3.S 12.8TB + 1cc4 3122 NVMe SSD UH712a U.2 1.92TB + 1cc4 3123 NVMe SSD UH712a U.2 3.84TB + 1cc4 3124 NVMe SSD UH712a U.2 7.68TB + 1cc4 3125 NVMe SSD UH712a U.2 15.36TB +1cc5 Embedded Intelligence, Inc. + 0100 PCIe-CAN-02 Dual CAN bus (9-pin male). PCI Express x1. + 0101 PCIe-CAN-01 Single CAN bus (9-pin male). PCI Express x1. +1cc7 Radian Memory Systems Inc. + 0200 RMS-200 PCIe NVMe SSD + 0250 RMS-250 U.2 NVMe SSD +1ccf Zoom Corporation + 0001 TAC-2 Thunderbolt Audio Converter +1cd2 SesKion GmbH + 0301 Simulyzer-RT CompactPCI Serial DIO-1 card + 0302 Simulyzer-RT CompactPCI Serial PSI5-ECU-1 card + 0303 Simulyzer-RT CompactPCI Serial PSI5-SIM-1 card + 0304 Simulyzer-RT CompactPCI Serial PWR-ANA-1 card + 0305 Simulyzer-RT CompactPCI Serial CAN-1 card +# supports 8x CAN (-FD) interfaces + 0306 Simulyzer-RT CompactPCI Serial CAN-2 card (CAN-FD) + 0307 Simulyzer-RT CompactPCI Serial DIO-2 card [Xilinx Zynq UltraScale+] +1cd7 Nanjing Magewell Electronics Co., Ltd. + 0002 Pro Capture AIO + 0010 Pro Capture Endpoint + 0014 PRO CAPTURE AIO 4K PLUS + 0017 PRO CAPTURE AIO 4K + 0051 Eco Capture Dual HDMI M.2 + 0052 Eco Capture HDMI 4K M.2 + 0053 Eco Capture Dual SDI M.2 + 0054 Eco Capture Quad SDI M.2 +1cdd secunet Security Networks AG +1ce4 Exablaze + 0001 ExaNIC X4 + 0002 ExaNIC X2 + 0003 ExaNIC X10 + 0004 ExaNIC X10-GM + 0005 ExaNIC X40 + 0006 ExaNIC X10-HPT + 0007 ExaNIC X40 + 0008 ExaNIC V5P + 0009 ExaNIC X25 + 000a ExaNIC X100 + 000b ExaNIC V9P + 000c ExaNIC V9P-3 + 0100 ExaDISK FX1 +1cf0 Akitio +1cf7 Subspace Dynamics +1cfa Corsair Memory, Inc +1cfd Mangstor + 6300 MX6300 series PCIe x8 NVMe SSD +1d00 Pure Storage +1d05 Tongfang Hongkong Limited +1d0f Amazon.com, Inc. + 7064 NeuronDevice (Inferentia) + 7164 NeuronDevice (Trainium) + 1d0f 0000 Trainium + 7264 NeuronDevice (Inferentia2) + 7364 NeuronDevice (Trainium2) + 8061 NVMe EBS Controller + cd01 NVMe SSD Controller + ec20 Elastic Network Adapter (ENA) + efa0 Elastic Fabric Adapter (EFA) + efa1 Elastic Fabric Adapter (EFA) + efa2 Elastic Fabric Adapter (EFA) +1d17 Zhaoxin + 070f ZX-100 PCI Express Root Port + 0710 ZX-100/ZX-200 PCI Express Root Port + 0711 ZX-100/ZX-200 PCI Express Root Port + 0712 ZX-100/ZX-200 PCI Express Root Port + 0713 ZX-100/ZX-200 PCI Express Root Port + 0714 ZX-100/ZX-200 PCI Express Root Port + 0715 ZX-100/ZX-200 PCI Express Root Port + 0716 ZX-D PCI Express Root Port + 0717 KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port + 0718 KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port + 0719 KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port + 071a KX-5000/KX-6000/KX-6000G/KH-40000 PCI Express Root Port + 071b KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port + 071c KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port + 071d KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port + 071e KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port + 071f ZX-200 Upstream Port of PCI Express Switch + 0720 ZX-200 PCIE RC6 controller + 0721 ZX-200 Downstream Port of PCI Express Switch + 0722 ZX-200 PCIE P2C bridge + 0731 KH-40000 PCI Express Root Port + 0732 KH-40000/KX-7000 PCI Express Root Port + 0733 KX-7000 PCIE Express Root Port + 0734 KX-7000 PCIE Express Root Port + 0735 KX-7000 PCIE Express Root Port + 0736 KX-7000 PCIE Express Root Port + 0737 KX-7000 PCIE Express Root Port + 0738 KX-7000 PCIE Express Root Port + 0739 KX-7000 PCIE Express Root Port + 073a KX-7000 PCIE Express Root Port + 073b KX-7000 PCIE Express Root Port + 1000 ZX-D Standard Host Bridge + 1001 ZX-D/ZX-E/KH-40000/KX-7000 Miscellaneous Bus + 1003 ZX-E Standard Host Bridge + 1005 KH-40000 Standard Host Bridge + 1006 KX-6000G Standard Host Bridge + 1007 KX-7000 Standard Host Bridge + 3001 ZX-100 Standard Host Bridge + 300a ZX-100 Miscellaneous Bus + 3038 ZX-100/ZX-200/KX-6000/KX-6000G/KH-40000/KX-7000 Standard Universal PCI to USB Host Controller + 3104 ZX-100/ZX-200/KX-6000/KX-6000G/KH-40000/KX-7000 Standard Enhanced PCI to USB Host Controller + 31b0 ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 Standard Host Bridge + 31b1 ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 Standard Host Bridge + 31b2 ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 DRAM Controller + 31b3 ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 Power Management Controller + 31b4 ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 I/O APIC + 31b5 ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 Scratch Device + 31b7 ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 Standard Host Bridge + 31b8 ZX-100/ZX-D PCI to PCI Bridge + 3200 KX-7000 Host Bridge + 3288 ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 High Definition Audio Controller + 345b ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000 Miscellaneous Bus + 3a02 ZX-100 C-320 GPU + 3a03 ZX-D C-860 GPU + 3a04 KX-6000 C-960 GPU + 3a05 KX-7000 C-1190 GPU + 3b01 KH-40000 OPI Controller + 3b02 KH-40000 OPI Controller + 3b03 KH-40000 OPI Controller + 3b04 KH-40000 OPI Controller + 3c00 KH-40000/KX-7000 DRAM Controller + 3c02 KX-6000G DRAM Controller + 3d01 KX-6000G C-1080 GPU + 9002 ZX-100/ZX-200/KH-40000/KX-7000 EIDE Controller + 9003 ZX-100/KX-6000/KX-6000G EIDE Controller + 9043 KX-6000G/KH-40000/KX-7000 RAID Controller + 9045 ZX-100/ZX-D/ZX-E RAID Accelerator 0 + 9046 ZX-D/ZX-E RAID Accelerator 1 + 9083 ZX-100/ZX-200/KX-6000/KX-6000G/KH-40000/KX-7000 StorX AHCI Controller + 9084 ZX-100 StorX AHCI Controller + 9100 ZX-200 Cross bus + 9101 ZX-200 Traffic Controller + 9141 ZX-100 High Definition Audio Controller + 9142 ZX-D High Definition Audio Controller + 9144 ZX-E High Definition Audio Controller + 9145 KX-6000G High Definition Audio Controller + 9146 KX-7000 High Definition Audio Controller + 9180 ZX-200 Networking Gigabit Ethernet Adapter + 91c1 KH-40000 ZPI Controller + 91c2 KH-40000 ZPI Controller + 9202 ZX-100 USB eXtensible Host Controller + 9203 ZX-200 USB eXtensible Host Controller + 9204 KX-6000/KX-6000G/KX-7000 USB3 xHCI Host Controller + 9205 KH-40000 USB eXtensible Host Controller + 9206 KX-7000 USB4 Contoller + 9286 ZX-D eMMC Host Controller + 9300 ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 eSPI Host Controller + 9500 KX-7000 I2S Controller + 9501 KX-7000 I2S Controller + 95d0 ZX-100 Universal SD Host Controller + f410 ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Com Port +1d18 RME + 0001 Fireface UFX+ +# acquired by Intel +1d1c Barefoot Networks, Inc. + 0001 Tofino 1 + 0010 Tofino 1 + 0100 Tofino 2 + 0110 Tofino 2 +1d1d CNEX Labs + 1f1f QEMU NVM Express LightNVM Controller + 2807 8800 series NVMe SSD +# CEM Solutions Pvt. Ltd. +1d21 Allo +1d22 Baidu Technology + 1380 Cloud Storage Device + 3684 Kunlun AI Accelerator + 3685 Kunlun2 AI Accelerator [VF] +1d26 Kalray Inc. + 0040 Turbocard2 Accelerator + 0080 Open Network Interface Card 80G + 00c0 Turbocard3 Accelerator + 0140 Open Network Interface Card 40G + e004 AB01/EMB01 Development Board +1d37 NovaSparks + 0013 PM3 + 0014 PM4 + 0015 PM4edge + 0016 PM4edge User Device +1d40 Techman Electronics (Changshu) Co., Ltd. + 5501 XC100C55-xxxx NVME SSD + 5c01 XC100C5C-xxxx, XC100E5C-xxxx NVME SSD + b100 PV100C55-xxxx NVME SSD +1d44 DPT + a400 PM2x24/PM3224 +1d49 Lenovo +1d4c Diamanti, Inc. +1d5c Fantasia Trading LLC +1d61 Technobox, Inc. +1d62 Nebbiolo Technologies +1d65 Imagine Communications Corp. + 04de Taurus/McKinley +1d69 Celeno Communications + 2432 CL2432 + 2440 CL2440 +1d6a Aquantia Corp. + 0001 AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] + 4c52 6880 LREC6880BT Single-port 10Gb Ethernet Network Adapter + 00b1 AQtion AQC100 NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G] + 00c0 Antigua NBase-T/IEEE 802.3an Ethernet Controller - Engineering Sample + 04c0 AQtion AQC113 NBase-T/IEEE 802.3an Ethernet Controller [Antigua 10G] + 4c52 1053 LRES1053PT Quad-port 10Gb Ethernet Network Adapter + 4c52 2051 LRES2051PT Single-port 10Gb Ethernet Network Adapter + 07b1 AQtion AQC107 NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G] +# Older revision of QNAP QM2 M.2 2280 PCIe SSD & 10GbE Expansion Card + 1baa 07b1 QM2-2P10G1TA [QXG 10GbE Network Adapter] +# Newer revision of QNAP QM2 M.2 2280 PCIe SSD & 10GbE Expansion Card + 1baa 07b2 QM2-2P10G1TA [QM2 Expansion Adapter] + 4c52 6880 LREC6880BT Single-port 10Gb Ethernet Network Adapter + 08b1 AQC108 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] + 11b1 AQC111 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] + 12b1 AQC112 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] + 12c0 AQtion AQC115C NBase-T/IEEE 802.3bz Ethernet Controller [Antigua 2.5G] + 14c0 AQC113C NBase-T/IEEE 802.3an Ethernet Controller [Marvell Scalable mGig] + 80b1 AQtion AQC100S NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G] + 87b1 AQtion AQC107S NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G] + 93c0 AQtion AQC114CS NBase-T/IEEE 802.3bz Ethernet Controller [Antigua 5G] + 94c0 AQtion AQC113CS NBase-T/IEEE 802.3an Ethernet Controller [Antigua 10G] + 1043 87f5 ProArt X570-CREATOR WIFI + d107 AQtion AQC107 NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G] + 1043 8741 XG-C100C + d108 AQC108 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] +1d6c Atomic Rules LLC + 1001 A5PL-E1 + 1002 A5PL-E7 + 1003 S5PEDS-AB + 1004 KC705-K325 + 1005 ZC706-Z045 + 1006 KCU105-KU040 + 1007 XUSP3S-VU095 [Jasper] + 1008 XUSPL4-VU065 [Mustang UltraScale] + 1009 XUSPL4-VU3P [Mustang UltraScale+] + 100a A10PL4-A10GX115 + 100b K35-2SFP + 100c K35-4SFP + 100d AR-ARKA-FX0 [Arkville 32B DPDK Data Mover] + 1d6c 2001 DPDK-Aware Virtual Function [Arkville VF] + 100e AR-ARKA-FX1 [Arkville 64B DPDK Data Mover] + 1d6c 2001 DPDK-Aware Virtual Function [Arkville VF] + 100f AR-ARKA-FX1 [Arkville 64B DPDK Data Mover for Versal] + 1010 AR-ARKA-FX1 [Arkville 64B DPDK Data Mover for Agilex] + 1011 AR-MAN-U50 [Manitou Class Accelerator for U50] + 1012 AR-MAN-U200 [Manitou Class Accelerator for U200] + 1013 AR-MAN-U250 [Manitou Class Accelerator for U250] + 1014 AR-MAN-U280 [Manitou Class Accelerator for U280] + 1015 AR-ARK-BBDEV-FX0 [Arkville 32B DPDK Baseband Device] + 1016 AR-ARK-BBDEV-FX1 [Arkville 64B DPDK Baseband Device] + 1017 AR-ARK-FX1 [Arkville 64B Multi-Homed Primary Endpoint] + 1018 AR-ARK-FX1 [Arkville 64B Multi-Homed Secondary Endpoint] + 1019 AR-ARK-FX1 [Arkville 64B Multi-Homed Tertiary Endpoint] + 101a AR-ARK-SRIOV-FX0 [Arkville 32B Primary Physical Function] + 101b AR-ARK-SRIOV-FX1 [Arkville 64B Primary Physical Function] + 101c AR-ARK-SRIOV-VF [Arkville Virtual Function] + 101d AR-ARK-NIC [Arkville ArkNIC Kernel Path Device] + 101e AR-ARKA-FX1 [Arkville 64B DPDK Data Mover for Agilex R-Tile] + 101f AR-TK242 [2x100GbE Packet Capture Device] + 1020 AR-GP-PF [General-Purpose Physical Function] + 1021 AR-MGMT-PF [Board-Generic Management Physical Function] + 1022 AR-ARKA-FX2 [Arkville 128B DPDK Data Mover for Agilex] + 1023 AR-BD-FX1 [BufferDirect Zero-Bounce Data Motion Endpoint] + 1024 AR-TK242 [2x10GbE Packet Capture Device] + 1025 AR-TK242-FX2 [2x100GbE Gen5 Packet Capture Device] + 1026 AR-TK242-FX2 [1x200GbE Gen5 Packet Capture Device] + 1027 AR-P2P-DBG [P2P Debug Function] + 1028 AR-P2P-ATR [P2P Actor Function] + 1029 AR-P2P-UTL [P2P Utility Function] + 4200 A5PL-E1-10GETI [10 GbE Ethernet Traffic Instrument] +1d72 Xiaomi +1d78 DERA Storage + 1512 TAI NVMe Controller + 1d78 2004 D5437 HHHL 2TB NVMe SSD + 1d78 2006 D5437 HHHL 4TB NVMe SSD + 1d78 2008 D5437 HHHL 8TB NVMe SSD + 1d78 2104 D5437 U.2 2TB NVMe SSD + 1d78 2106 D5437 U.2 4TB NVMe SSD + 1d78 2108 D5437 U.2 8TB NVMe SSD + 1d78 3003 D5457 HHHL 1.6TB NVMe SSD + 1d78 3005 D5457 HHHL 3.2TB NVMe SSD + 1d78 3007 D5457 HHHL 6.4TB NVMe SSD + 1d78 3103 D5457 U.2 1.6TB NVMe SSD + 1d78 3105 D5457 U.2 3.2TB NVMe SSD + 1d78 3107 D5457 U.2 6.4TB NVMe SSD + 1d78 3108 D5437 U.2 7.68TB NVMe SSD + 1d78 5003 D5447 HHHL 1.6TB NVMe SSD + 1d78 5004 D5427 HHHL 1.92TB NVMe SSD + 1d78 5005 D5447 HHHL 3.2TB NVMe SSD + 1d78 5006 D5427 HHHL 3.84TB NVMe SSD + 1d78 5007 D5447 HHHL 6.4TB NVMe SSD + 1d78 5008 D5427 HHHL 7.68TB NVMe SSD + 1d78 5103 D5447 U.2 1.6TB NVMe SSD + 1d78 5105 D5447 U.2 3.2TB NVMe SSD + 1d78 5106 AF3UP34DTCUN3T8B SSD + 1d78 5107 D5447 U.2 6.4TB NVMe SSD + 1d78 5114 D5427 U.2 1.92TB NVMe SSD + 1d78 5116 D5427 U.2 3.84TB NVMe SSD + 1d78 5118 D5427 U.2 7.68TB NVMe SSD + 1d78 8107 D5457 U.2 6.4TB NVMe SSD + 1513 DERA MENG NVMe Controller + 1d78 6015 D6456 HHHL 3.2TB NVMe SSD + 1d78 6016 D6436 HHHL 3.84TB NVMe SSD + 1d78 6017 D6456 HHHL 6.4TB NVMe SSD + 1d78 6018 D6436 HHHL 7.68TB NVMe SSD + 1d78 6105 D6457 U.2 3.2TB NVMe SSD + 1d78 6106 D6437 U.2 3.84TB NVMe SSD + 1d78 6107 D6457 U.2 6.4TB NVMe SSD + 1d78 6108 D6437 U.2 7.68TB NVMe SSD + 1d78 6115 D6456 U.2 3.2TB NVMe SSD + 1d78 6116 D6436 U.2 3.84TB NVMe SSD + 1d78 6117 D6456 U.2 6.4TB NVMe SSD + 1d78 6118 D6436 U.2 7.68TB NVMe SSD + 1515 DERA EMEI NVMe Controller + 1d78 7002 D7436 HHHL 1.92TB NVMe SSD + 1d78 7003 D7456 HHHL 1.6TB NVMe SSD + 1d78 7004 D7436 HHHL 3.84TB NVMe SSD + 1d78 7005 D7456 HHHL 3.2TB NVMe SSD + 1d78 7007 D7456 HHHL 6.4TB NVMe SSD + 1d78 7008 D7436 HHHL 7.68TB NVMe SSD + 1d78 7009 D7456 HHHL 12.8TB NVMe SSD + 1d78 700a D7436 HHHL 15.36TB NVMe SSD + 1d78 7102 D7436 U.2 15mm 1.92TB NVMe SSD + 1d78 7103 D7456 U.2 15mm 1.6TB NVMe SSD + 1d78 7104 D7436 U.2 15mm 3.84TB NVMe SSD + 1d78 7105 D7456 U.2 15mm 3.2TB NVMe SSD + 1d78 7107 D7456 U.2 15mm 6.4TB NVMe SSD + 1d78 7108 D7436 U.2 15mm 7.68TB NVMe SSD + 1d78 7109 D7456 U.2 15mm 12.8TB NVMe SSD + 1d78 710a D7436 U.2 15mm 15.36TB NVMe SSD + 1d78 7202 Aliflash V2 U.2 15mm 1.92TB NVMe SSD + 1d78 7204 Aliflash V2 U.2 15mm 3.84TB NVMe SSD + 1d78 7208 Aliflash V2 U.2 15mm 7.68TB NVMe SSD +1d79 Transcend Information, Inc. + 2262 NVMe PCIe SSD 220S/MTE662T2 + 2263 NVMe PCIe SSD 110S/112S/120S/MTE300S/MTE400S/MTE652T2 (DRAM-less) + 2264 NVMe PCIe SSD 250H + 2267 NVMe PCIe SSD 220S/240S/MTE710T + 5766 NVMe PCIe SSD 110Q (DRAM-less) +1d7c Aerotech, Inc. +# Fiber-optic HyperWire motion control bus from Aerotech. + 0001 HyperWire Adapter +1d82 NETINT Technologies Inc. + 0101 Codensity D400 SSD + 0102 Codensity D408 PCIe Gen4 NVMe SSD + 0202 Codensity T408 Video Encoding-Decoding Accelerator + 0401 Quadra Video Processing Unit (VPU) +# nee Fuzhou Rockchip Electronics Co., Ltd +1d87 Rockchip Electronics Co., Ltd + 0100 RK3399 PCI Express Root Port + 1808 RK1808 Neural Network Processor Card + 3528 RK3528 PCI Express Root Port + 3562 RK3562 PCI Express Root Port + 3566 RK3568 Remote Signal Processor + 3588 RK3588 +1d89 YEESTOR Microelectronics Co., Ltd + 0280 PCIe NVMe SSD +1d8f Enyx +1d92 Abaco Systems Inc. +1d93 YADRO +1d94 Chengdu Haiguang IC Design Co., Ltd. + 1450 Root Complex + 1451 I/O Memory Management Unit + 1452 PCIe Dummy Host Bridge + 1453 PCIE GPP Bridge + 1454 Internal PCIe GPP Bridge 0 to Bus B + 1455 PCIe Dummy Function + 1456 PSPCCP Command DMA Processor + 1458 10 Gb Ethernet Controller Port 0/Port1 + 1459 10 Gb Ethernet Controller Port 2/Port3 + 145a PCIe Dummy Function + 145b PCIE Non-Transparent Bridge + 145c USB3 XHCI + 145d Switch upstream in PCIe + 145e Switch downstream in PCIe + 145f USB 3.0 Host controller + 1460 Data Fabric: Device 18h; Function 0 + 1461 Data Fabric: Device 18h; Function 1 + 1462 Data Fabric: Device 18h; Function 2 + 1463 Data Fabric: Device 18h; Function 3 + 1464 Data Fabric: Device 18h; Function 4 + 1465 Data Fabric: Device 18h; Function 5 + 1466 Data Fabric: Device 18h; Function 6 + 1467 Data Fabric: Device 18h; Function 7 + 1468 NTBCCP + 7901 FCH SATA Controller [AHCI mode] + 7904 FCH SATA Controller [AHCI mode] + 7906 FCH SD Flash Controller + 790b FCH SMBus Controller + 790e FCH LPC Bridge +1d95 Graphcore Ltd + 0001 Colossus GC2 [C2] + 0002 Colossus GC1 [S1] +1d97 Shenzhen Longsys Electronics Co., Ltd. + 1062 Lexar NM710 NVME SSD + 1160 FORESEE P900 BGA NVMe SSD (DRAM-less) + 1202 Lexar NM610 PRO NVME SSD (DRAM-less) + 12e4 ORCA 4836 Series eSSD + 1602 Lexar NM790 NVME SSD (DRAM-less) + 1d97 Lexar NM620 NVME SSD (DRAM-less) + 2263 SM2263EN/SM2263XT-based OEM NVME SSD (DRAM-less) + 2269 FORESEE XP2000, Lexar NM760 NVME SSD (DRAM-less) + 5216 FORESEE XP1000 / Lexar Professional CFexpress Type B Gold series, NM620 PCIe NVME SSD (DRAM-less) + 5220 FORESEE XP2100 NVMe SSD (DRAM-less) + 5236 Lexar NM800 PRO NVME SSD +# nee Facebook, Inc. +1d9b Meta Platforms, Inc. + 0010 Networking DOM Engine + 0011 IO Bridge +1da1 Teko Telecom S.r.l. +1da2 Sapphire Technology Limited + e26a Radeon R7 250 + e445 Sapphire Radeon RX 6700 +1da3 Habana Labs Ltd. + 0001 HL-1000 AI Inference Accelerator [Goya] +# PCIe accelerator card for Deep Learning inference tasks + 0030 Greco AI Inference Accelerator +# PCIe accelerator card for Deep Learning training tasks + 1000 HL-2000 AI Training Accelerator [Gaudi] +# PCIe accelerator card for Deep Learning training tasks with secured firmware + 1010 HL-2000 AI Training Accelerator [Gaudi secured] +# PCIe accelerator card for Deep Learning training tasks + 1020 Gaudi2 AI Training Accelerator +1da8 Corigine, Inc. + 3800 Network Flow Processor 3800 + 3803 Network Flow Processor 3800 Virtual Function +1dad Fungible + 0108 FC50, FC100, FC200 DPU NVMeoF Adapters +1db2 ATP ELECTRONICS INC +1db7 Phytium Technology Co., Ltd. + dc20 [X100 Series] + dc21 VPU Controller [X100 Series] + dc22 DC Controller [X100 Series] + dc23 I2S/DMA Controller [X100 Series] + dc24 NPU Controller [X100 Series] + dc26 SATA Controller [X100 Series] + dc27 USB Controller [X100 Series] + dc29 NANDFLASH Controller [X100 Series] + dc2b I2S Controller [X100 Series] + dc2c SPIM Controller [X100 Series] + dc2d CAN Controller [X100 Series] + dc2e UART Controller [X100 Series] + dc2f PWM Controller [X100 Series] + dc30 MIO Controller [X100 Series] + dc31 GPIO Controller [X100 Series] + dc32 SMBUS Controller [X100 Series] + dc34 PS2 Controller [X100 Series] + dc35 LPC Controller [X100 Series] + dc36 LDMA Controller [X100 Series] + dc38 LSD_CFG Controller [X100 Series] + dc3a SWITCH Controller [X100 Series] + dc3c GPU_DMA Controller [X100 Series] +1dbb NGD Systems, Inc. +1dbe INNOGRIT Corporation + 5216 NVMe SSD Controller IG5216 (DRAM-less) + 5220 NVMe SSD Controller IG5220 (DRAM-less) + 5236 NVMe SSD Controller IG5236 + 1dbe 4001 Dongting-B1 DC SSD M.2 480GB + 1dbe 4002 Dongting-B1 DC SSD M.2 960GB + 5636 NVMe DC SSD IG5636 + 1dbe 0001 Dongting-N1 DC SSD U.2 1600GB + 1dbe 0002 Dongting-N1 DC SSD U.2 1920GB + 1dbe 0003 Dongting-N1 DC SSD U.2 3200GB + 1dbe 0004 Dongting-N1 DC SSD U.2 3840GB + 1dbe 0005 Dongting-N1 DC SSD U.2 6400GB + 1dbe 0006 Dongting-N1 DC SSD U.2 7680GB + 1dbe 1001 Donghu-Z1 DC ZNS SSD U.2 4000GB + 1dbe 1002 Donghu-Z1 DC ZNS SSD U.2 8000GB + 5638 NVMe DC SSD IG5638 + 1dbe 2001 Dongting-N2 DC SSD U.2 1600GB + 1dbe 2002 Dongting-N2 DC SSD U.2 1920GB + 1dbe 2003 Dongting-N2 DC SSD U.2 3200GB + 1dbe 2004 Dongting-N2 DC SSD U.2 3840GB + 1dbe 2005 Dongting-N2 DC SSD U.2 6400GB + 1dbe 2006 Dongting-N2 DC SSD U.2 7680GB + 1dbe 3001 Donghu-Z2 DC ZNS SSD U.2 4000GB + 1dbe 3002 Donghu-Z2 DC ZNS SSD U.2 8000GB + 5666 NVMe SSD Controller IG5666 + 5668 NVMe SSD Controller IG5668 + 5669 NVMe SSD Controller IG5669 [Tacoma] +1dbf Guizhou Huaxintong Semiconductor Technology Co., Ltd + 0401 StarDragon4800 PCI Express Root Port +1dc2 Alco Digital Devices Limited +1dc5 FADU Inc. + 4081 FC4121 PCIe 4.0 NVMe controller [DELTA] + 6150 FC3081 PCIe 3.0 NVMe controller [BRAVO] +1dcd Liqid Inc. +1dcf Beijing Sinead Technology Co., Ltd. +1dd3 Sage Microelectronics Corp. +1dd4 Swissbit AG + 0010 N-10m2 NVMe SSD + 0016 N-16 + 0020 EN-20 BGA NVMe SSD (DRAM-less) +1dd8 AMD Pensando Systems + 0002 DSC2 Elba Upstream Port + 1dd8 100e Distributed Services Card + 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card + 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU + 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 + 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU + 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 + 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 + 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 + 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 1000 DSC Capri Upstream Port + 1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB + 1dd8 4001 Naples 100Gb 2-port QSFP28 x16 4GB + 1dd8 4002 Naples 25Gb 2-port SFP28 x8 4GB + 1dd8 4007 DSP DSC-25 Ent 10/25G OCP3 Card + 1dd8 4008 DSP DSC-25 10/25G 2p SFP28 Card + 1dd8 400a DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card + 1dd8 400c DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card + 1dd8 400d DSP DSC-100 Ent 100Gb Card + 1dd8 400e DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card + 1dd8 4014 DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card + 1001 DSC Virtual Downstream Port + 1dd8 100e Distributed Services Card + 1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB + 1dd8 4001 Naples 100Gb 2-port QSFP28 x16 4GB + 1dd8 4002 Naples 25Gb 2-port SFP28 x8 4GB + 1dd8 4007 DSP DSC-25 Ent 10/25G OCP3 Card + 1dd8 4008 DSP DSC-25 10/25G 2p SFP28 Card + 1dd8 400a DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card + 1dd8 400c DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card + 1dd8 400d DSP DSC-100 Ent 100Gb Card + 1dd8 400e DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card + 1dd8 4014 DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card + 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card + 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU + 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 + 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU + 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 + 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 + 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 + 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 1002 DSC Ethernet Controller + 1dd8 100e Distributed Services Card + 1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB + 1dd8 4001 Naples 100Gb 2-port QSFP28 x16 4GB + 1dd8 4002 Naples 25Gb 2-port SFP28 x8 4GB + 1dd8 4007 DSP DSC-25 Ent 10/25G OCP3 Card + 1dd8 4008 DSP DSC-25 10/25G 2p SFP28 Card + 1dd8 400a DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card + 1dd8 400c DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card + 1dd8 400d DSP DSC-100 Ent 100Gb Card + 1dd8 400e DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card + 1dd8 4014 DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card + 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card + 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU + 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 + 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU + 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 + 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 + 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 + 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 1003 DSC Ethernet Controller VF + 1dd8 100e Distributed Services Card + 1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB + 1dd8 4001 Naples 100Gb 2-port QSFP28 x16 4GB + 1dd8 4002 Naples 25Gb 2-port SFP28 x8 4GB + 1dd8 4007 DSP DSC-25 Ent 10/25G OCP3 Card + 1dd8 4008 DSP DSC-25 10/25G 2p SFP28 Card + 1dd8 400a DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card + 1dd8 400c DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card + 1dd8 400d DSP DSC-100 Ent 100Gb Card + 1dd8 400e DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card + 1dd8 4014 DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card + 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card + 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU + 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 + 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU + 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 + 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 + 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 + 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 1004 DSC Management Controller + 1dd8 100e Distributed Services Card + 1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB + 1dd8 4001 Naples 100Gb 2-port QSFP28 x16 4GB + 1dd8 4002 Naples 25Gb 2-port SFP28 x8 4GB + 1dd8 4007 DSP DSC-25 Ent 10/25G OCP3 Card + 1dd8 4008 DSP DSC-25 10/25G 2p SFP28 Card + 1dd8 400a DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card + 1dd8 400c DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card + 1dd8 400d DSP DSC-100 Ent 100Gb Card + 1dd8 400e DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card + 1dd8 4014 DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card + 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card + 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU + 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 + 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU + 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 + 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 + 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 + 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 1005 DSC NVMe Controller + 1dd8 100e Distributed Services Card + 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card + 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU + 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 + 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU + 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 + 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 + 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 + 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 1006 DSC NVMe Controller VF + 1dd8 100e Distributed Services Card + 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card + 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU + 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 + 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU + 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 + 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 + 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 + 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 1007 DSC Storage Accelerator + 1dd8 100e Distributed Services Card + 1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB + 1dd8 4001 Naples 100Gb 2-port QSFP28 x16 4GB + 1dd8 4002 Naples 25Gb 2-port SFP28 x8 4GB + 1dd8 4007 DSP DSC-25 Ent 10/25G OCP3 Card + 1dd8 4008 DSP DSC-25 10/25G 2p SFP28 Card + 1dd8 400a DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card + 1dd8 400c DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card + 1dd8 400d DSP DSC-100 Ent 100Gb Card + 1dd8 400e DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card + 1dd8 4014 DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card + 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card + 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU + 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 + 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU + 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 + 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 + 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 + 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 1009 DSC Ethernet Controller UPT + 1dd8 100e Distributed Services Card + 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card + 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU + 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 + 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU + 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 + 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 + 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 + 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 100a DSC Serial Port Controller + 1dd8 100e Distributed Services Card + 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card + 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU + 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 + 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU + 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 + 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 + 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 + 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 100b DSC vDPA Network Device VF + 1dd8 100e Distributed Services Card + 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card + 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU + 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 + 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU + 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 + 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 + 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 + 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 100c DSC PDS Core Management + 1dd8 100e Distributed Services Card + 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card + 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU + 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 + 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU + 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 + 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 + 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 + 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 100d DSC Virtio Network Device VF + 1dd8 100e Distributed Services Card + 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card + 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card + 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU + 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 + 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU + 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 + 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 + 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 + 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T +1ddd Thorlabs +1de0 Groq + 0000 TSP [GroqChip] + 1de0 0000 GC1-010X-ES [GroqCard] + 1de0 c005 GC1-010B [GroqCard] + 1de0 c006 GC1-0109 [GroqCard] + 1de0 c007 GC1-0100 [GroqCard] +1de1 Tekram Technology Co.,Ltd. + 0391 TRM-S1040 [DC-315 / DC-395 series] + 2020 DC-390 Series SCSI Adapter [AMD Am53C974] + 690c 690c + dc29 DC290 +1de4 Raspberry Pi Ltd + 0001 RP1 PCIe 2.0 South Bridge +1de5 Eideticom, Inc + 1000 IO Memory Controller + 2000 NoLoad Hardware Development Kit + 3000 eBPF-based PCIe Accelerator +1ded Alibaba (China) Co., Ltd. +# A RDMA (iWarp) device provided by Alibaba Cloud used in ECS environment + 107f Elastic RDMA Adapter + 5007 Elastic RDMA Adapter + 8000 M1 Root Port + 8001 ACC-RCiEP + 8002 RCiEP VF + 8003 RCEC PF + 8004 RCEC VF +1dee Biwin Storage Technology Co., Ltd. + 2262 HP EX950 NVMe SSD + 2263 HP EX900 NVMe SSD (DRAM-less) + 5216 KingSpec NX series NVMe SSD (DRAM-less) +1def Ampere Computing, LLC + e005 eMAG PCI Express Root Port 0 + e006 eMAG PCI Express Root Port 1 + e007 eMAG PCI Express Root Port 2 + e008 eMAG PCI Express Root Port 3 + e009 eMAG PCI Express Root Port 4 + e00a eMAG PCI Express Root Port 5 + e00b eMAG PCI Express Root Port 6 + e00c eMAG PCI Express Root Port 7 +# Root Complex A (RCA) + e100 Altra PCI Express Root Complex A +# RCA port 0 + e101 Altra PCI Express Root Port a0 +# RCA port 1 + e102 Altra PCI Express Root Port a1 +# RCA port 2 + e103 Altra PCI Express Root Port a2 +# RAC port 3 + e104 Altra PCI Express Root Port a3 +# RCA port 4 + e105 Altra PCI Express Root Port a4 +# RCA port 5 + e106 Altra PCI Express Root Port a5 +# RCA port 6 + e107 Altra PCI Express Root Port a6 +# RCA port 7 + e108 Altra PCI Express Root Port a7 +# Root Complex B (RCB) + e110 Altra PCI Express Root Complex B +# RCB port 0 + e111 Altra PCI Express Root Port b0 +# RCB port 1 + e112 Altra PCI Express Root Port b1 +# RCB port 2 + e113 Altra PCI Express Root Port b2 +# RCB port 3 + e114 Altra PCI Express Root Port b3 +# RCB port 4 + e115 Altra PCI Express Root Port b4 +# RCB port 5 + e116 Altra PCI Express Root Port b5 +# RCB port 6 + e117 Altra PCI Express Root Port b6 +# RCB port 7 + e118 Altra PCI Express Root Port b7 +1df3 Ethernity Networks + 0201 ACE-NIC40 Programmable Network Accelerator + 1df3 0001 ENA1040 + 1df3 0002 ENA1044 + 1df3 0003 ENA1044S + 0202 ACE-NIC50 Programmable Network Accelerator + 1df3 0001 ENA2050F + 1df3 0002 ENA2050FS + 0203 ACE-NIC100 Programmable Network Accelerator + 1df3 0000 Maintenance Mode + 1df3 0001 ENA2080F + 1df3 0002 ENA2080FS + 1df3 0003 ENA2100F + 1df3 0004 ENA2040F + 0204 ACE-NIC-NID Programmable Network Accelerator + 1df3 0001 ENA1020Z + 1df3 0002 ENA1020ZS + 0205 ACE-NIC250 Programmable Network Accelerator + 1df3 0000 Maintenance Mode + 1df3 0001 ENA2250F + 0206 ACE-NIC200 Programmable Network Accelerator + 1df3 0000 Maintenance Mode + 1df3 0001 ENA2200F + 0207 ACE-NIC50RN Programmable Network Accelerator + 1df3 0000 Maintenance Mode + 1df3 0001 ENA2050RN + 0208 ACE-NIC100RN Programmable Network Accelerator + 1df3 0000 Maintenance Mode + 1df3 0001 ENA2100RN +1df5 Shenzhen TIGO Semiconductor + 1202 kimtigo NVMe SSD (DRAM-less) + 2263 kimtigo MG931K NVMe SSD (DRAM-less) +1df7 opencpi.org + 0001 ml605 + 0002 alst4 + 0003 alst4x +1df8 V&G Information System Co.,Ltd + 3000 PC NVMe SSD + 1df8 3100 M.2 NVMe Gen3*4 SSD + c000 DC NVMe SSD + 1df8 c600 Enterprise U.2 NVMe SSD + d000 PC NVMe SSD + 1df8 d100 M.2 NVMe SSD + 1df8 d201 M.2 NVMe SSD + 1df8 d600 M.2 NVMe SSD +1dfa Astera Labs, Inc. +1dfc JSC NT-COM + 1181 TDM 8 Port E1/T1/J1 Adapter +1e0d SambaNova Systems, Inc +1e0f KIOXIA Corporation + 0001 NVMe SSD Controller BG4 (DRAM-less) + 0007 NVMe SSD Controller Cx6 + 1028 2078 DC NVMe CD6 RI 960GB + 1028 2079 DC NVMe CD6 RI 1.92TB + 1028 207a DC NVMe CD6 RI 3.84TB + 1028 207b DC NVMe CD6 RI 7.68TB + 1028 207c DC NVMe CD6 RI 15.36TB + 1028 207e Dell Ent NVMe CM6 RI 1.92TB + 1028 207f Dell Ent NVMe CM6 RI 3.84TB + 1028 2080 Dell Ent NVMe CM6 RI 7.68TB + 1028 2081 Dell Ent NVMe CM6 RI 15.36TB + 1028 2084 Dell Ent NVMe CM6 MU 1.6TB + 1028 2085 Dell Ent NVMe CM6 MU 3.2TB + 1028 2086 Dell Ent NVMe CM6 MU 6.4TB + 1028 210a Dell Ent NVMe FIPS CM6 RI 1.92TB + 1028 210b Dell Ent NVMe FIPS CM6 RI 3.84TB + 1028 210c Dell Ent NVMe FIPS CM6 RI 7.68TB + 1028 210d Dell Ent NVMe FIPS CM6 RI15.36TB + 1028 210e Dell Ent NVMe FIPS CM6 MU 1.6TB + 1028 210f Dell Ent NVMe FIPS CM6 MU 3.2TB + 1028 2110 Dell Ent NVMe FIPS CM6 MU 6.4TB + 1e0f 0001 Generic NVMe CM6 + 0008 RD500/Exceria Plus/Exceria Plus G2 NVMe SSD + 0009 NVMe SSD + 1e0f 0001 Toshiba RC500 Series NVMe SSD + 1e0f 0032 KIOXIA EXCERIA RC10 Series NVMe SSD + 000c NVMe SSD Controller BG5 (DRAM-less) + 000d NVMe SSD Controller XG7 + 0010 NVMe SSD Controller XG8 + 0011 NVMe SSD Controller CD7 + 1028 2189 DC NVMe SED CD7 RI 960GB + 1028 218a DC NVMe CD7 RI 960GB + 1028 218b DC NVMe SED CD7 RI 1.92TB + 1028 218c DC NVMe CD7 RI 1.92TB + 1028 218d DC NVMe SED CD7 RI 3.84TB + 1028 218e DC NVMe CD7 RI 3.84TB + 1028 218f DC NVMe SED CD7 RI 7.68TB + 1028 2190 DC NVMe CD7 RI 7.68TB + 1028 2191 DC NVMe SED CD7 RI 15.36TB + 1028 2192 DC NVMe CD7 RI 15.36TB + 1028 2193 NVMe CD7 E3.S 1.92TB + 1028 2194 NVMe CD7 E3.S 3.84TB + 1028 2195 NVMe CD7 E3.S 7.68TB + 0014 NVMe SSD Controller CM7 EDSFF + 1028 223f Ent NVMe CM7 FIPS E3.S RI 15.36TB + 1028 2240 Ent NVMe CM7 FIPS E3.S RI 7.68TB + 1028 2241 Ent NVMe CM7 FIPS E3.S RI 3.84TB + 1028 2242 Ent NVMe CM7 E3.S RI 15.36TB + 1028 2243 Ent NVMe CM7 E3.S RI 7.68TB + 1028 2244 Ent NVMe CM7 E3.S RI 3.84TB + 1028 2245 Ent NVMe CM7 E3.S RI 1.92TB + 1028 2246 Ent NVMe CM7 E3.S MU 12.8TB + 1028 2247 Ent NVMe CM7 E3.S MU 6.4TB + 1028 2248 Ent NVMe CM7 E3.S MU 3.2TB + 1028 2249 Ent NVMe CM7 E3.S MU 1.6TB + 1028 22b7 Ent NVMe CM7 FIPS E3.S MU 1.6TB + 1028 22b8 Ent NVMe CM7 FIPS E3.S MU 3.2TB + 1028 22b9 Ent NVMe CM7 FIPS E3.S MU 6.4TB + 1028 22ba Ent NVMe CM7 FIPS E3.S MU 12.8TB + 0018 Exceria Pro NVMe SSD + 001a NVMe SSD Controller BG6 (DRAM-less) + 001f NVMe SSD Controller CD8 + 1028 2223 DC NVMe CD8 U.2 SED 15.36TB + 1028 2224 DC NVMe CD8 U.2 SED 7.68TB + 1028 2225 DC NVMe CD8 U.2 SED 3.84TB + 1028 2226 DC NVMe CD8 U.2 SED 1.92TB + 1028 2227 DC NVMe CD8 U.2 SED 960GB + 1028 2228 DC NVMe CD8 U.2 15.36TB + 1028 2229 DC NVMe CD8 U.2 7.68TB + 1028 222a DC NVMe CD8 U.2 3.84TB + 1028 222b DC NVMe CD8 U.2 1.92TB + 1028 222c DC NVMe CD8 U.2 960GB + 0025 NVMe SSD Controller CM7 2.5" + 1028 222d Ent NVMe CM7 FIPS U.2 RI 30.72TB + 1028 222e Ent NVMe CM7 FIPS U.2 RI 15.36TB + 1028 222f Ent NVMe CM7 FIPS U.2 RI 7.68TB + 1028 2230 Ent NVMe CM7 FIPS U.2 RI 3.84TB + 1028 2231 Ent NVMe CM7 FIPS U.2 RI 1.92TB + 1028 2232 Ent NVMe CM7 U.2 RI 30.72TB + 1028 2233 Ent NVMe CM7 U.2 RI 15.36TB + 1028 2234 Ent NVMe CM7 U.2 RI 7.68TB + 1028 2235 Ent NVMe CM7 U.2 RI 3.84TB + 1028 2236 Ent NVMe CM7 U.2 RI 1.92TB + 1028 2237 Ent NVMe CM7 FIPS U.2 MU 12.8TB + 1028 2238 Ent NVMe CM7 FIPS U.2 MU 6.4TB + 1028 2239 Ent NVMe CM7 FIPS U.2 MU 3.2TB + 1028 223a Ent NVMe CM7 FIPS U.2 MU 1.6TB + 1028 223b Ent NVMe CM7 U.2 MU 12.8TB + 1028 223c Ent NVMe CM7 U.2 MU 6.4TB + 1028 223d Ent NVMe CM7 U.2 MU 3.2TB + 1028 223e Ent NVMe CM7 U.2 MU 1.6TB + 002a Exceria Plus G3 NVMe SSD (DRAM-less) + 002c NVMe SSD Controller CD8P EDSFF + 1028 22bf DC NVMe CD8P E3.S 15.36TB + 1028 22c0 DC NVMe CD8P E3.S 7.68TB + 1028 22c1 DC NVMe CD8P E3.S 3.84TB + 1028 22c2 DC NVMe CD8P E3.S 1.92TB + 1028 22c7 DC NVMe CD8P E3.S MU 12.8TB + 1028 22c8 DC NVMe CD8P E3.S MU 6.4TB + 1028 22c9 DC NVMe CD8P E3.S MU 3.2TB + 1028 22ca DC NVMe CD8P E3.S MU 1.6TB +1e17 Arnold & Richter Cine Technik GmbH & Co. Betriebs KG +1e18 Beijing GuangRunTong Technology Development Co.,Ltd +1e24 Squirrels Research Labs + 0101 Acorn CLE-101 + 0215 Acorn CLE-215 + 021f Acorn CLE-215+ + 1525 Xilinx BCU-1525 +# VU33P FPGA Accelerator + 1533 ForestKitten 33 +# JungleCat VU33P Module + 1633 JCM33 +# JungleCat VU35P Module + 1635 JCM35 +1e26 Fujitsu Client Computing Limited +1e36 Shanghai Enflame Technology Co. Ltd + 0001 T10 [CloudBlazer] + 0002 T11 [CloudBlazer] + 0003 T10(QSFP-DD) [CloudBlazer] + 0021 T20(32GB) [CloudBlazer] + 0022 T20(64GB) [CloudBlazer] + 0023 T21(32GB) [CloudBlazer] + 0024 T21(64GB) [CloudBlazer] + 8001 I20 [CloudBlazer] + 8011 I10 [CloudBlazer] + 8012 I10L [CloudBlazer] +# HHHL PCIe card, single slot, 3rd generation from Enflame + 8031 S6 [Enflame] +# HHHL PCIe card, single slot, 3rd generation from Enflame, 24GB device memory + 8032 S6 [Enflame] +# FHFL PCIe card, single slot, 3rd generation from Enflame + c031 S30 [Enflame] +# FHFL PCIe card, dual slot, 3rd generation from Enflame, 48GB device memory + c032 S90 [Enflame] +# FHFL PCIe card, dual slot, 3rd generation from Enflame, 48GB device memory + c033 S60G [Enflame] +# FHFL PCIe card, dual slot, 3rd generation from Enflame, 48GB device memory + c035 S60 [Enflame] +# nee Thinci, Inc +1e38 Blaize, Inc + 0102 Xplorer X1600 +1e39 MEDION AG +1e3a Cactus Technologies Limited + 2263 270PM6, 270PM7 series NVMe SSD +1e3b DapuStor Corporation + 0600 NVMe SSD Controller DP600 + 1e3b 0006 Enterprise NVMe SSD U.2 ODP 7.68TB (J5001) + 1e3b 0010 Enterprise NVMe SSD U.2 3.84TB (R5102) + 1e3b 0013 Enterprise NVMe SSD U.2 3.20TB (R5302) + 1e3b 0030 Enterprise NVMe SSD U.2 3.84TB (J5100) + 1e3b 0031 Enterprise NVMe SSD U.2 7.68TB (J5100) + 1e3b 0032 Enterprise NVMe SSD U.2 15.36TB (J5100) + 1e3b 0033 Enterprise NVMe SSD U.2 3.20TB (J5300) + 1e3b 0034 Enterprise NVMe SSD U.2 6.40TB (J5300) + 1e3b 0035 Enterprise NVMe SSD U.2 12.80TB (J5300) + 1e3b 0036 Enterprise NVMe SSD AIC 7.68TB (J5110) + 1e3b 0037 Enterprise NVMe SSD AIC 6.40TB (J5310) + 1e3b 0038 Enterprise NVMe SSD U.2 3.84TB (J5100D) + 1e3b 0039 Enterprise NVMe SSD U.2 7.68TB (J5100D) + 1e3b 003b Enterprise NVMe SSD U.2 3.20TB (J5300D) + 1e3b 003c Enterprise NVMe SSD U.2 6.40TB (J5300D) + 1e3b 003e Enterprise NVMe SSD AIC 3.84TB (J5110) + 1e3b 003f Enterprise NVMe SSD AIC 3.20TB (J5310) + 1e3b 004c Enterprise NVMe SSD U.2 QDP 1.92TB (J5100) + 1e3b 004d Enterprise NVMe SSD U.2 QDP 1.60TB (J5300) + 1e3b 0050 Enterprise NVMe SSD U.2 3.84TB (R5100) + 1e3b 0051 Enterprise NVMe SSD U.2 7.68TB (R5100) + 1e3b 0052 Enterprise NVMe SSD U.2 15.36TB (R5100) + 1e3b 0053 Enterprise NVMe SSD U.2 3.20TB (R5300) + 1e3b 0054 Enterprise NVMe SSD U.2 6.40TB (R5300) + 1e3b 0055 Enterprise NVMe SSD U.2 12.80TB (R5300) + 1e3b 0056 Enterprise NVMe SSD U.2 3.84TB (R5101) + 1e3b 0059 Enterprise NVMe SSD U.2 3.20TB (R5301) + 1e3b 0060 Enterprise NVMe SSD U.2 3.84TB (R5100D) + 1e3b 0061 Enterprise NVMe SSD U.2 7.68TB (R5100D) + 1e3b 0063 Enterprise NVMe SSD U.2 3.20TB (R5300D) + 1e3b 0064 Enterprise NVMe SSD U.2 6.40TB (R5300D) + 1e3b 0066 Enterprise NVMe SSD U.2 3.84TB (R5101D) + 1e3b 0069 Enterprise NVMe SSD U.2 3.20TB (R5301D) + 1e3b 006c Enterprise NVMe SSD U.2 1.92TB (R5101) + 1e3b 006d Enterprise NVMe SSD U.2 1.60TB (J5301) + 1e3b 00b9 Enterprise NVMe SSD U.2 ODP 25.60TB (R5301)/(J5301) + 1e3b 00be Enterprise NVMe SSD U.2 ODP 30.72TB (R5101)/(J5101) + 1e3b 00c1 Enterprise NVMe SSD U.2 ODP 25.60TB (R5301D)/(J5301D) + 1e3b 00c4 Enterprise NVMe SSD U.2 ODP 30.72TB (R5101D)/(J5101D) + 1e3b 00c7 Enterprise NVMe SSD U.2 ODP 25.60TB (J5300) + 1e3b 00c8 Enterprise NVMe SSD U.2 ODP 30.72TB (J5100) + 1e3b 00c9 Enterprise NVMe SSD U.2 ODP 15.36TB (J5001) + 1e3b 00ca Enterprise NVMe SSD U.2 ODP 3.84TB (J5102) + 1e3b 00cb Enterprise NVMe SSD U.2 ODP 7.68TB (J5102) + 1e3b 00cc Enterprise NVMe SSD U.2 QDP 3.84TB (J5101) + 1e3b 00cd Enterprise NVMe SSD U.2 ODP 7.68TB (J5101) + 1e3b 00ce Enterprise NVMe SSD U.2 QDP 3.84TB (J5101D) + 1e3b 00cf Enterprise NVMe SSD U.2 ODP 7.68TB (J5101D) + 1e3b 00dc Enterprise NVMe SSD U.2 ODP 30.72TB with SAMSUNG 32GB DRAM (J5001) + 1e3b 00dd Enterprise NVMe SSD U.2 ODP 30.72TB with MT 32GB DRAM(J5001) + 1e3b 00de Enterprise NVMe SSD U.2 ODP 15.36TB with SK 16GB DRAM(J5001D) + 1e3b 00df Enterprise NVMe SSD U.2 ODP 30.72TB with SAMSUNG 32GB DRAM(J5001) + 1e3b 00e7 Enterprise NVMe SSD U.2 ODP 30.72TB with MT 32GB DRAM(J5001D) + 1e3b 00e8 Enterprise NVMe SSD U.2 QDP 3.20TB (J5301) + 1e3b 00e9 Enterprise NVMe SSD U.2 ODP 6.40TB (J5301) + 1e3b 00ea Enterprise NVMe SSD U.2 QDP 3.20TB (J5301D) + 1e3b 00eb Enterprise NVMe SSD U.2 ODP 6.40TB (J5301D) + 1e3b 00ec Enterprise NVMe SSD U.2 ODP 30.72TB with MT 32GB DRAM(J5101) + 1e3b 00ed Enterprise NVMe SSD U.2 ODP 30.72TB with MT 32GB DRAM(R5101) + 1e3b 00ee Enterprise NVMe SSD U.2 ODP 15.36B with SK 16GB DRAM(J5101) + 1e3b 00ef Enterprise NVMe SSD U.2 ODP 12.80TB with SK 16GB DRAM(J5301) + 1e3b 00f0 Enterprise NVMe SSD U.2 0.40TB (X2900) + 1e3b 00f1 Enterprise NVMe SSD U.2 0.80TB (X2900) + 1e3b 00f2 Enterprise NVMe SSD U.2 1.60TB (X2900) + 1e3b 00f3 Enterprise NVMe SSD U.2 3.20TB (X2900) + 1e3b 00f5 Enterprise NVMe SSD U.2 0.40TB (X2900P) + 1e3b 00f6 Enterprise NVMe SSD U.2 0.80TB (X2900P) + 0800 DP800 + 1e3b 0001 Enterprise NVMe SSD U.2 QDP 3.84TB(R6100) + 1e3b 0007 Enterprise NVMe SSD U.2 ODP 15.36TB (R6100) + 1e3b 000a Enterprise NVMe SSD U.2 3.20TB (R6300) + 1e3b 000d Enterprise NVMe SSD U.2 6.40TB (R6300) + 1e3b 0010 Enterprise NVMe SSD U.2 12.80TB (R6300) + 1e3b 0018 Enterprise NVMe SSD U.2 QDP 3.84TB (R6100C) + 1e3b 0019 Enterprise NVMe SSD U.2 ODP 7.68TB (R6100C) + 1e3b 001a Enterprise NVMe SSD U.2 3.20TB (R6300C) + 1e3b 001b Enterprise NVMe SSD U.2 6.40TB (R6300C) + 1e3b 001c Enterprise NVMe SSD U.2 ODP 7.68TB (R6100) + 1098 Haishen3 NVMe SSD + 1e3b 0001 Enterprise NVMe SSD U.2 0.8TB (H2100) + 1e3b 0002 Enterprise NVMe SSD U.2 0.96TB (H2200) + 1e3b 0004 Enterprise NVMe SSD U.2 1.6TB (H2100) + 1e3b 0005 Enterprise NVMe SSD U.2 1.92TB (H2200) + 1e3b 0009 Enterprise NVMe SSD U.2 0.8TB (H3100) + 1e3b 000a Enterprise NVMe SSD U.2 0.96TB (H3200) + 1e3b 000c Enterprise NVMe SSD U.2 1.6TB (H3100) + 1e3b 000d Enterprise NVMe SSD U.2 1.92TB (H3200) + 1e3b 0014 Enterprise NVMe SSD U.2 3.2TB (H3100) + 1e3b 0015 Enterprise NVMe SSD U.2 3.84TB (H3200) + 1e3b 0021 Enterprise NVMe SSD U.2 6.4TB (H3100) + 1e3b 0022 Enterprise NVMe SSD U.2 7.68TB (H3200) + 1e3b 0052 Enterprise NVMe SSD U.2 0.8TB (H3900) + 1e3b 0053 Enterprise NVMe SSD U.2 1.6TB (H3900) + 1e3b 0059 Enterprise NVMe SSD U.2 0.75TB (H3900) + 1e3b 0061 Enterprise NVMe SSD HHHL 0.8TB (H2100) + 1e3b 0062 Enterprise NVMe SSD HHHL 0.96TB (H2200) + 1e3b 0064 Enterprise NVMe SSD HHHL 1.6TB (H2100) + 1e3b 0065 Enterprise NVMe SSD HHHL 1.92TB (H2200) + 1e3b 006c Enterprise NVMe SSD HHHL 0.8TB (H3100) + 1e3b 006d Enterprise NVMe SSD HHHL 0.96TB (H3200) + 1e3b 006f Enterprise NVMe SSD HHHL 1.6TB (H3100) + 1e3b 0070 Enterprise NVMe SSD HHHL 1.92TB (H3200) + 1e3b 007c Enterprise NVMe SSD HHHL 3.2TB (H3100) + 1e3b 007d Enterprise NVMe SSD HHHL 3.84TB (H3200) + 1e3b 007f Enterprise NVMe SSD HHHL 6.4TB (H3100) + 1e3b 0080 Enterprise NVMe SSD HHHL 7.68TB (H3200) + 1e3b 008a Enterprise NVMe SSD HHHL 0.8TB (H3900) + 1e3b 008b Enterprise NVMe SSD HHHL 1.6TB (H3900) + 1e3b 0091 Enterprise NVMe SSD HHHL 0.75TB (H3900) + 1333 Haishen5 NVMe SSD + 1e3b 0081 Enterprise NVMe SSD U.2 3.84TB (H5100) + 1e3b 0082 Enterprise NVMe SSD U.2 7.68TB (H5100) + 1e3b 0084 Enterprise NVMe SSD U.2 3.2TB (H5300) + 1e3b 0085 Enterprise NVMe SSD U.2 6.4TB (H5300) +1e3d Burlywood, Inc +1e43 MaxLinear Inc + 8904 MxL8904 + 8906 MxL8906 + 8908 MxL8908 +1e44 Valve Software +1e49 Yangtze Memory Technologies Co.,Ltd + 0001 ZHITAI PC005 NVMe SSD + 0021 ZHITAI TiPro5000 NVMe SSD + 0041 ZHITAI TiPro7000 + 0071 ZHITAI TiPlus7100 +# YMTC + 1001 PC005 NVMe SSD + 1011 PC210 NVMe SSD + 1013 PC210 NVMe SSD + 1031 PC300 NVMe SSD (DRAM-less) + 1033 PC300 NVMe SSD (DRAM-less) + 1071 PC411 NVMe SSD (DRAM-less) +1e4b MAXIO Technology (Hangzhou) Ltd. + 1001 NVMe SSD Controller MAP1001 + 1002 NVMe SSD Controller MAP1002 (DRAM-less) + 1003 NVMe SSD Controller MAP1003 + 1201 NVMe SSD Controller MAP1201 + 1202 NVMe SSD Controller MAP1202 (DRAM-less) + 1601 NVMe SSD Controller MAP1601 + 1602 NVMe SSD Controller MAP1602 (DRAM-less) + 1608 NVMe SSD Controller MAP1608 (DRAM-less) +1e4c GSI Technology + 0010 Associative Processing Unit [Leda] + 1e4c 0120 SE120 +1e50 IP3 Tech (HK) Limited +1e52 Tenstorrent Inc + 401e Wormhole + 1e52 0014 n300 + 1e52 0018 n150 + b140 Blackhole + faca Grayskull + 1e52 0003 e150 + 1e52 0007 e75 + 1e52 000a e300 +1e57 Beijing Panyi Technology Co., Ltd + 0100 The device has already been deleted. + 0000 0100 PY8800 64GB Accelerator +1e59 Oxford Nanopore Technologies + 0001 MinION Mk1C +1e5d ASR Microelectronics + 7000 AI controller A7000 + 7010 AI controller A7010 +1e60 Hailo Technologies Ltd. + 2864 Hailo-8 AI Processor +1e67 Untether AI + 0002 runAI200 AI Inference Accelerator +1e68 Jiangsu Xinsheng Intelligent Technology Co., Ltd + 8111 EP2000Pro PCIe 3 NVMe SSD (DRAM-less) +1e6b Axiado Corp. +1e7b Dataland +1e7c Brainchip Inc + bca1 AKD1000 Neural Network Coprocessor [Akida] +1e7e Pliops + 9034 Pliops Extreme Data Processor [XDP1.0] +1e7f Jiangsu Huacun Elec. Tech. Co., Ltd. + 6002 MMY MMSP350 PCIe 3 NVMe SSD (DRAM-less) + 6003 MMY HC512GP3KH2T PCIe 3 NVMe SSD (DRAM-less) +1e81 Ramaxel Technology(Shenzhen) Limited + 1203 NVMe SSD Controller UHXXXa series + 1e81 a121 NVMe SSD UHXXXa series U.2 960GB + 1e81 a122 NVMe SSD UHXXXa series U.2 1920GB + 1e81 a123 NVMe SSD UHXXXa series U.2 3840GB + 1e81 a124 NVMe SSD UHXXXa series U.2 7680GB + 1e81 a125 NVMe SSD UHXXXa series U.2 15360GB + 1e81 a211 NVMe SSD UHXXXa series U.2 800GB + 1e81 a212 NVMe SSD UHXXXa series U.2 1600GB + 1e81 a213 NVMe SSD UHXXXa series U.2 3200GB + 1e81 a214 NVMe SSD UHXXXa series U.2 6400GB + 1e81 f123 NVMe SSD TP6500 series U.2 3840GB + 6206 AM620 NVMe SSD +1e83 Huaqin Technology Co.Ltd +1e85 Heitec AG +1e89 ID Quantique SA + 0002 Quantis-PCIe-40M + 0003 Quantis-PCIe-240M +1e93 Beijing Bytedance Network Technology Co., Ltd. +# aka SED Systems +1e94 Calian SED +1e95 Solid State Storage Technology Corporation + 1000 XA1-311024 NVMe SSD M.2 + 1001 CA6-8D512 NVMe SSD M.2 + 1002 NVMe SSD [3DNAND] 2.5" U.2 (LJ1) + 1e95 1101 NVMe SSD [3DNAND] 2.5" U.2 (LJ1) + 1ea0 5636 TP1500 Series U.2 NVMe Datacenter SSD + 1003 CLR-8W512 NVMe SSD M.2 (DRAM-less) + 1005 PLEXTOR M10P(GN) NVMe SSD M.2 + 1007 CL4-8D512 NVMe SSD M.2 (DRAM-less) + 1008 CL5-8D512 NVMe SSD M.2 (DRAM-less) + 3500 CA5-8D256 NVMe SSD M.2 + 35f1 PLEXTOR M9PGN Plus NVMe SSD M.2 + 9100 CL1-3D256-Q11 NVMe SSD M.2 +1e96 Drut Technologies Inc. +1e9f Lynxi Technologies Co., Ltd. +1ea0 Tencent Technology (Shenzhen) Company Limited + 2a16 Cloud Intelligent Inference Controller + 2a18 Video Transcode Controller + 2a20 Cloud Intelligent Inference and Training Controller + 2a22 Cloud Intelligent Inference Controller +1ea7 Intelliprop, Inc + 223a Typhon+ PCIe to Gen-Z Bridge + 224a IPA-PE224A CXL to Gen-Z Bridge [Sphinx] +1eab Hefei DATANG Storage Technology Co.,LTD. + 300a NVMe SSD Controller 300A + 300b NVMe SSD Controller 300B (DRAM-less) +1eac Quectel Wireless Solutions Co., Ltd. + 1001 EM120R-GL LTE Modem + 1002 EM160R-GL LTE Modem +1eae XFX Limited +1eb1 VeriSilicon Inc + 1001 Video Accelerator +1eb4 Quantum Nebula Microelectronics Technology Co.,Ltd. + 3401 SSD Contoller +1eb6 Wuxi Stars Microsystem Technology Co., Ltd +1eb9 Senscomm Semiconductor, Inc + 2020 SCM2625 Wi-Fi6 Network Adapter +1ebd EMERGETECH Company Ltd. + 0101 Seirios 2063 Video Codec +1ec6 Vastai Technologies + 0100 SV100 + 1ec6 0010 VA1V + 1ec6 0011 VA1A + 1ec6 0012 VA1 + 1ec6 0013 VA1E + 1ec6 0020 VA10V + 1ec6 0021 VA10A + 1ec6 0022 VA10 + 1ec6 0030 VE1P + 1ec6 0031 VE1S + 1ec6 0032 VE1V + 1ec6 0033 VE1M + 1ec6 0034 VE1E + 1ec6 0040 VV1U + 1ec6 0041 VA1U + 0200 SG100 + 1ec6 0060 VG1200 + 1ec6 0061 VG1600 + 1ec6 0062 VG1800 + 1ec6 0063 VG1000 + 020f SG100 vGPU +1ec8 Innosilicon Co Ltd + 8800 Fantasy I + 1ec8 12a2 Fantasy I Device + 8810 Fantasy I + 1ec8 12a2 Fantasy I Device + 9800 Fantasy II + 1ec8 12a2 Fantasy II Device + 9802 Fantasy II + 1ec8 12a2 Fantasy II Device + 9804 Fantasy II + 1ec8 12a2 Fantasy II Device + 9810 Fantasy II-M + 1ec8 12a2 Fantasy II Device +1ec9 Wingtech Group(HongKong)Limited +1eca Lightmatter + 0000 Envise-B +1ed0 Hosin Global Electronics + 2283 Patriot P300 NVMe SSD (DRAM-less) +1ed2 FuriosaAI, Inc. + 0000 Warboy + 1111 RNGD + 0000 1111 RNGD-S + 0000 2222 RNGD VF + 0000 3333 RNGD-S VF + 2222 RNGD-S +1ed3 Yeston +1ed5 Moore Threads Technology Co.,Ltd + 0100 MTT S10 + 0101 MTT S10 + 0102 MTT S30 + 0105 MTT S50 + 0106 MTT S60 + 0111 MTT S100 + 0121 MTT S1000M + 0122 MTT S1000 + 0123 MTT S2000 + 01ff MTT HDMI/DP Audio + 0200 MTT S80 Engineering Sample + 0201 MTT S80 + 0202 MTT S70 + 0203 MTT S60 + 0211 MTT X300 + 0221 G2S80 + 0222 MTT S3000 + 1ed5 0001 C3150 + 0223 G2S4 + 0251 G2N10 + 02ff MTT HDMI/DP Audio + 0300 MTT S90 Engineering Sample + 0301 MTT S90 + 0323 MTT S4000 + 0327 MTT S4000 + 03ff MTT HDMI/DP Audio +1ed8 Digiteq Automotive + 0101 FG4 PCIe Frame Grabber (T100) + 0201 FG4 PCIe Frame Grabber (T200) +1ed9 Myrtle.ai +1ee1 Suzhou Kuhan Information Technologies + 0050 Aurora NVMe SSD Controller + 1ee1 0009 Airglow A430 NVMe SSD U.2 1.6TB + 1ee1 000a Airglow A430 NVMe SSD U.2 3.2TB + 1ee1 000b Airglow A430 NVMe SSD U.2 4.8TB + 1ee1 0012 Airglow Z400 NVMe ZNS SSD U.2 5.76TB +1ee4 PETAIO INC + 1180 P8118 U.2 Single Port SSD +1ee9 SUSE LLC +1eec Viscore Technologies Ltd + 0102 VSE250231S Dual-port 10Gb/25Gb Ethernet PCIe + 1eec VSE250231S Dual-port 10Gb/25Gb Ethernet PCIe +1eed XDX Computing Technology Ltd. + 10a0 XDX110 Graphic/VGA Controller + 10a1 XDX110 Audio Controller + 10a2 XDX110M + 10a4 XDX E1100 + 1140 XDX120 + 1142 XDX120M + 1144 XDX E1200 + 1150 XDX120S + 1160 XDX121 + 1170 XDX121S + 11e0 XDX130 + 11e4 XDX E1300 + 1320 XDX150 + 1323 XDX R1500 + 1324 XDX X1500 + 1330 XDX150S + 1333 XDX R1510 + 1340 XDX151 + 1350 XDX151S + 1360 XDX151T + 13c0 XDX160T + 13d0 XDX160S + 13d3 XDX R1610 + 1500 XDX180 + 1503 XDX R1800 + 1504 XDX X1800 + 1510 XDX180S + 15a0 XDX190 + 15a3 XDX R1900 + 15a4 XDX X1900 + 15a5 XDX X1900D + 15b0 XDX190S + 1810 XDX TJ01 Audio + 1820 XDX TJ02 Audio + 1830 XDX TJ03 Audio +1ef6 GrAI Matter Labs +1ef7 Shenzhen Gunnir Technology Development Co., Ltd +1efb Flexxon Pte Ltd +1eff Rebellions Inc. +1f02 Beijing Dayu Technology +1f03 Shenzhen Shichuangyi Electronics Co., Ltd + 1202 MAP1202-Based NVMe SSD (DRAM-less) + 2262 SM2262EN-based OEM SSD + 2263 SM2263XT-Base NVMe SSD + 5216 IG5216-based NVMe SSD (DRAM-less) + 5220 IG5220-Based NVMe SSD + 5236 IG5236-Based NVMe SSD + 5636 IG5636-Based NVMe SSD +1f0a Motorcomm Microelectronics. + 6801 YT6801 Gigabit Ethernet Controller +1f0f NebulaMatrix Technology + 1041 D1055AS vDPA Ethernet Controller + 1f0f 0001 D1055AS vDPA Ethernet Controller + 1042 D1055AS vDPA Storage Controller + 1f0f 0001 D1055AS vDPA Storage Controller + 1220 D1055AS Ethernet Controller + 1221 D1055AS Ethernet Controller + 1222 D1055AS Ethernet Controller + 1223 D1055AS Ethernet Controller + 1600 M16104 Family + 1f0f 0001 M16104 Family + 1601 M16104 Family Virtual Function + 1f0f 0001 M16104 Family Virtual Function + 1a00 M16104 Family + 1f0f 0001 M16104 Family + 1a01 M16104 Family Virtual Function + 1f0f 0001 M16104 Family Virtual Function + 2022 D1055AS PCI Express Switch Upstream Port + 3403 M18110 Family + 3404 M18110 Lx Family + 3405 M18110 Family BASE-T + 3406 M18110 Lx Family BASE-T + 3407 M18110 Family OCP + 3408 M18110 Lx Family OCP + 3409 M18110 Family BASE-T OCP + 340a M18110 Lx Family BASE-T OCP + 340b M18120 Family + 340c M18120 Lx Family + 340d M18120 Family BASE-T + 340e M18120 Lx Family BASE-T + 340f M18120 Family OCP + 3410 M18120 Lx Family OCP + 3411 M18120 Family BASE-T OCP + 3412 M18120 Lx Family BASE-T OCP + 3413 M18100 Family Virtual Function + 9088 D1055AS PCI Express Switch Downstream Port +1f16 XConn Technologies +# XConn XC50256 CXL2.0/PCIe5.0 switch + c500 XC50256 +1f17 Zettastone Technology +1f24 xFusion Digital Technologies Co., Ltd. + 1058 EP500/EP600 NVMe SSD + 1f24 1114 EP500 NVMe SSD(RI) + 1f24 1115 EP600 NVMe SSD(MU) +1f2f China Mobile (Hangzhou) Information Technology Co.Ltd. + 1513 DERA MENG NVMe Controller + 1f2f 6113 KM660 U.2 1.6TB NVMe SSD + 1f2f 6114 KM560 U.2 1.92TB NVMe SSD + 1f2f 6115 KM660 U.2 3.2TB NVMe SSD + 1f2f 6116 KM560 U.2 3.84TB NVMe SSD + 1f2f 6118 KM560 U.2 7.68TB NVMe SSD +1f31 Nextorage + 4512 Nextorage NE1N NVMe SSD +1f3f 3SNIC Ltd + 2100 SSSHBA SAS/SATA HBA + 1f3f 0120 HBA 32 Ports + 1f3f 0125 HBA 40 Ports + 1f3f 0180 HBA 16 Ports + 1f3f 0185 HBA 8 Ports + 2200 SSSRAID RAID controller + 1f3f 0185 RAID Controller 16 Ports with 2G Cache + 1f3f 01a1 RAID Controller 40 Ports with 2G Cache + 1f3f 01a4 RAID Controller 16 Ports with 4G Cache + 1f3f 01a8 RAID Controller 32 Ports with 4G Cache + 1f3f 01ad RAID Controller 40 Ports with 4G Cache + 9001 SSSNIC Ethernet VF + 1f3f 1000 Ethernet VF + 9002 SSSNIC Ethernet VF Hyper-V + 1f3f 1000 Ethernet VF Hyper-V + 9003 SSSNIC Ethernet SDI VF + 1f3f 1000 Ethernet SDI VF + 9004 SSSNIC Ethernet SDI VF Hyper-V + 1f3f 1000 Ethernet SDI VF Hyper-V + 9008 SSSFC VF + 1f3f 1000 3SFC VF + 9009 SSSFC VF Hyper-V + 1f3f 1000 3SFC VF Hyper-V + 9010 SSSFC FC Controller + 1f3f 0041 Dual Port 16GE FC to PCIe Gen4 x16 Adapter + 1f3f 0061 Dual Port 32GE FC to PCIe Gen4 x16 Adapter + 9020 SSSNIC Ethernet Network Adapter + 1f3f 0051 Dual Port 25GE Ethernet Network Adapter + 1f3f 0052 Quad Port 25GE Ethernet Network Adapter + 1f3f 00a1 Dual Port 100GE Ethernet Network Adapter + 9030 SSSNIC IPU + 1f3f 0051 Dual Port 25GE IPU + 9031 SSSNIC SDI5.0 + 1f3f 0051 Dual Port 25GE SDI5.0lite + 1f3f 00a1 Dual Port 100GE SDI5.0 + 9032 SSSNIC SDI5.1 + 1f3f 00a1 Dual Port 100GE SDI5.1 +1f40 Netac Technology Co.,Ltd + 0001 PCIe 4 NVMe SSD (DRAM-less) + 1202 PCIe 3 NVMe SSD (DRAM-less) + 1602 PCIe 4 NVMe SSD (DRAM-less) + 1f40 PCIe 4 NVMe SSD (DRAM-less) + 2263 PCIe 3 SM based NVMe SSD (DRAM-less) + 5216 PCIe 3 NVMe SSD (DRAM-less) + 5236 PCIe 4 INNOGRIT based NVMe SSD + 5765 PCIe 3 NVMe SSD (DRAM-less) +1f44 VVDN Technologies Private Limited +# YUSUR Technology Co., Ltd. +1f47 YUSUR Tech +# Network Accelerating Card + 2018 DPU Card +# Network Accelerating Card + 2020 DPU +1f4b Axera Semiconductor Co., Ltd +1f52 MangoBoost Inc. +1f56 SAPEON Inc. +1f60 Accelecom + 0001 XELE-NIC 25K5 + 0054 XELE-NIC 25K5 +1f67 Yunsilicon Technology + 1011 metaConnect SmartNIC Physical Function + 1012 metaConnect SmartNIC Virtual Function + 1051 metaFusion DPU Physical Function + 1052 metaFusion DPU Virtual Function + 1059 metaFusion DPU SoC Network Interface + 1111 metaScale SmartNIC Physical Function + 1112 metaScale SmartNIC Virtual Function + 1151 metaVisor DPU Physical Function + 1152 metaVisor DPU Virtual Function +1faa Hexaflake (Shanghai) Information Technology Co., Ltd. + 0c10 Compass C10 PF + 0c11 Compass C10 VF +1fab Unifabrix Ltd. + 0000 Nexus Alpha IVPU + 0100 NoX Gamma + 01fd Smart Memory Node Generic CXL Port (T1) +# UnifabriX Smart Memory Node Generic CXL Port + 01fe Smart Memory Node Generic CXL Port (T2) +# UnifabriX Smart Memory Node Generic CXL Port + 01ff Smart Memory Node Generic CXL Port (T3) + 1b00 MAX Host Device +1fb0 ICube Corporation Limited + 1000 NF1000 Series GPU + 1fb0 1001 NF1001 + 1fb0 1002 NF1002 + 1fb0 1003 NF1003 +# NF1000 Series GPU + 1001 NF1001 + 1fb0 1001 NF1001 + 1fb0 1002 NF1002 + 1fb0 1003 NF1003 + 2000 NF2000 Series GPU + 1fb0 2001 NF2001 + 1fb0 2002 NF 2002 + 1fb0 2003 NF 2003 + 3000 NF3000 Series GPU + 1fb0 3001 NF3001 + 1fb0 3002 NF3002 + 1fb0 3003 NF3003 + 4000 NF4000 Series GPU + 1fb0 4001 NF4001 + 1fb0 4002 NF4002 + 1fb0 4003 NF4003 + 5000 NF5000 Series GPU + 1fb0 5001 NF 5001 + 1fb0 5002 NF 5002 + 1fb0 5003 NF5003 +# nee Tumsan Oy +1fc0 Ascom (Finland) Oy + 0300 E2200 Dual E1/Rawpipe Card + 0301 C5400 SHDSL/E1 Card +# nee PathScale, Inc +1fc1 QLogic, Corp. + 000d IBA6110 InfiniBand HCA + 0010 IBA6120 InfiniBand HCA +1fc9 Tehuti Networks Ltd. + 3009 10-Giga TOE SmartNIC + 3010 10-Giga TOE SmartNIC + 0000 3002 10-Giga TOE Single Port XFP SmartNIC + 0000 3004 10-Giga TOE Single Port SFP+ SmartNIC + 0000 3008 10-Giga TOE Single Port CX4 SmartNIC + 3014 10-Giga TOE SmartNIC 2-Port + 0000 3003 10-Giga TOE Dual Port XFP Low Profile SmartNIC + 0000 3005 10-Giga TOE Dual Port SFP+ Low Profile SmartNIC + 0000 3014 10-Giga TOE Dual Port CX4 Low Profile SmartNIC + 3110 10-Giga TOE Single Port SmartNIC + 0000 3004 10-Giga TOE Single Port SFP+ SmartNIC + 3114 10-Giga TOE Dual Port Low Profile SmartNIC + 0000 3005 10-Giga TOE Dual Port SFP+ Low Profile SmartNIC + 0000 3011 10-Giga TOE Dual Port SFP+/CX4 Low Profile SmartNIC + 0000 3012 10-Giga TOE Dual Port CX4/SFP+ Low Profile SmartNIC + 0000 3014 10-Giga TOE Dual Port CX4 Low Profile SmartNIC + 3310 10-Giga TOE SFP+ Single Port SmartNIC + 0000 3004 10-Giga TOE Single Port SFP+ SmartNIC + 3314 10-Giga TOE Dual Port Low Profile SmartNIC + 0000 3005 10-Giga TOE Dual Port SFP+ Low Profile SmartNIC + 0000 3011 10-Giga TOE Dual Port SFP+/CX4 Low Profile SmartNIC + 0000 3012 10-Giga TOE Dual Port CX4/SFP+ Low Profile SmartNIC + 0000 3014 10-Giga TOE Dual Port CX4 Low Profile SmartNIC + 4010 TN4010 Clean SROM + 4020 TN9030 10GbE CX4 Ethernet Adapter + 180c 2040 Mustang-200 10GbE Ethernet Adapter + 4022 TN9310 10GbE SFP+ Ethernet Adapter + 1043 8709 XG-C100F 10GbE SFP+ Ethernet Adapter + 1186 4d00 DXE-810S 10GbE SFP+ Ethernet Adapter + 1432 8103 10 Gigabit Ethernet SFP+ PCI Express Adapter + 1fc9 3015 Ethernet Adapter + 4024 TN9210 10GBase-T Ethernet Adapter + 4025 TN9510 10GBase-T/NBASE-T Ethernet Adapter + 105a 7203 SANLink3 NBase-T1 + 1186 2900 DXE-810T 10GBase-T Ethernet Adapter + 1432 8102 10 Gigabit Ethernet PCI Express Adapter + 1fc9 3015 Ethernet Adapter + 4026 TN9610 10GbE SFP+ Ethernet Adapter + 4c52 1000 LREC6860AF 10 Gigabit Ethernet Adapter + 4027 TN9710P 10GBase-T/NBASE-T Ethernet Adapter + 1154 0368 LGY-PCIE-MG + 1432 8104 10 Gigabit Ethernet PCI Express Adapter + 1546 4027 GE10-PCIE4XG202P 10Gbase-T/NBASE-T Ethernet Adapter + 1baa 3310 PCIe Expansion Card + 1fc9 3015 Ethernet Adapter + 4c52 1001 LREC6860BT 10 Gigabit Ethernet Adapter + 4527 TN9710Q 5GBase-T/NBASE-T Ethernet Adapter +1fcc StreamLabs + f416 MS416 + fb01 MH4LM +1fce Cognio Inc. + 0001 Spectrum Analyzer PC Card (SAgE) +1fd4 SUNIX Co., Ltd. + 0001 Matrix multiport serial adapter + 1999 Multiport serial controller +1fde Kratos Defense & Security Solutions, Inc. + 1125 OpenEdge 1125P + 2500 OpenEdge 2500P +1fe0 Allwinmeta Co., Ltd. + 1010 AWM 1 + 2000 AWM 2 + 2010 AWM 2-M +1fe4 HippStor Technology + 1600 HP600 Series NVMe SSD + 1fe4 0075 Enterprise NVMe SSD U.2 3.84TB(HP610) + 1fe4 0076 Enterprise NVMe SSD U.2 7.68TB(HP610) + 1fe4 0077 Enterprise NVMe SSD U.2 6.40TB(HP630) + 1fe4 0078 Enterprise NVMe SSD U.2 3.20TB(HP630) +1fe9 MemryX +# LinkData Technology (Tianjin) Co., LTD +1ff2 Linkdata + 10a1 NIC1160 Ethernet Controller Family + 1ff2 0c11 10GE Ethernet Adapter 1160-2X + 10a2 NIC1160 Ethernet Controller Virtual Function Family + 20a1 IOC2110 Storage Controller + 1ff2 0a11 2120-16i SATA3/SAS3 HBA Adapter + 1ff2 0a12 2120-8i SATA3/SAS3 HBA Adapter + 20a2 IOC2250 Storage Controller + 1ff2 0a21 2230-18i Tri-mode HBA Adapter + 1ff2 0a22 2230-10i Tri-mode HBA Adapter + 1ff2 0a23 2230-16i Tri-mode HBA Adapter + 1ff2 0a24 2230-8i Tri-mode HBA Adapter + 1ff2 0a28 2233-16i Tri-mode HBA Adapter + 30a2 ROC3250 Storage Controller + 1ff2 0b21 3260-18i Tri-mode RAID Adapter + 1ff2 0b22 3260-10i Tri-mode RAID Adapter + 1ff2 0b23 3260-16i Tri-mode RAID Adapter + 1ff2 0b24 3260-8i Tri-mode RAID Adapter +1ff4 DEEPX Co., Ltd. + 0000 DX_M1 + 0001 DX_M1A + 1000 DX_H1 +1ff8 Beijing Gengtu Technology Co.Ltd + 2000 GT6910 + 2010 GT6908 +1ff9 Inagile Electronic Technology Co., LTD +2000 Smart Link Ltd. + 2800 SmartPCI2800 V.92 PCI Soft DFT +2001 Temporal Research Ltd +2003 Smart Link Ltd. + 8800 LM-I56N +2004 Smart Link Ltd. +202c CAEN S.p.A. + 5818 A5818 +2036 Netforward Microelectronics Co., Ltd. + 1618 NF1618 PCI Express Ethernet Controller + 1619 NF1618 Family Virtual Function +2046 GXMICRO Technology (Shanghai) Co., Ltd. +2048 Beijing SpaceControl Technology Co.Ltd +20f4 TRENDnet +2116 ZyDAS Technology Corp. +21b4 Hunan Goke Microelectronics Co., Ltd +21c3 21st Century Computer Corp. +22b8 Flex-Logix Technologies + 22a0 Flex Logix InferX X1 Inference Accelerator +22db Missing Link Electronics, Inc. + 1200 NVMe Streamer EP ERD +2304 Colorgraphic Communications Corp. +2321 Bruker AXS Inc. +2348 Racore + 2010 8142 100VG/AnyLAN +256c Graphics Technology (HK) Co., Ltd. + 006d HS610 +2646 Kingston Technology Company, Inc. + 0010 HyperX Predator PCIe AHCI SSD + 2262 KC2000/KC2500 NVMe SSD SM2262EN + 2263 A2000 NVMe SSD SM2263EN + 5008 A1000/U-SNS8154P3 x2 NVMe SSD + 500a DC1000B NVMe SSD E12DC + 500b DC1000M NVMe SSD SM2270 + 500c OM8PCP Design-In PCIe 3 NVMe SSD (DRAM-less) + 500d OM3PDP3 NVMe SSD + 500e NV1 NVMe SSD E13T (DRAM-less) + 500f NV1 NVMe SSD SM2263XT (DRAM-less) + 5010 OM8SBP NVMe PCIe SSD (DRAM-less) + 5012 DC1500M NVMe SSD SM2270 + 5013 KC3000/FURY Renegade NVMe SSD E18 + 5014 OM8SEP4 Design-In PCIe 4 NVMe SSD (TLC) (DRAM-less) + 5016 OM3PGP4 NVMe SSD + 5017 NV2 NVMe SSD SM2267XT (DRAM-less) + 5019 NV2 NVMe SSD E21T (DRAM-less) +# 128GB + 501a OM8PGP4 Design-In PCIe 4 NVMe SSD (TLC) (DRAM-less) + 501b OM8PGP4 NVMe PCIe SSD (DRAM-less) + 501c NV2 NVMe SSD E19T (DRAM-less) + 501d NV2 NVMe SSD TC2200 (DRAM-less) + 501f FURY Renegade NVMe SSD with heatsink + 5021 OM8SEP4 Design-In PCIe 4 NVMe SSD (QLC) (DRAM-less) + 5022 OM8PGP4 Design-In PCIe 4 NVMe SSD (QLC) (DRAM-less) + 5023 NV2 NVMe SSD SM2269XT (DRAM-less) + 5024 DC2000B NVMe SSD E18DC +270b Xantel Corporation +270f Chaintech Computer Co. Ltd +2711 AVID Technology Inc. +2782 Emdoor Digital Technology Co., Ltd +2955 Connectix Virtual PC + 6e61 OHCI USB 1.1 controller +2a15 3D Vision(???) +2a18 Video Transcode Controller +2bd8 ROPEX Industrie-Elektronik GmbH +3000 Hansol Electronics Inc. +3100 Dynabook Inc. +3112 Satelco Ingenieria S.A. +3130 AUDIOTRAK +3142 Post Impression Systems. +31ab Zonet + 1faa ZEW1602 802.11b/g Wireless Adapter +328f Shenzhen EMEET Technology Co., Ltd. + 004c OfficeCore M1A + 2019 REC 600 HD Webcam +3388 Hint Corp + 0013 HiNT HC4 PCI to ISDN bridge, Multimedia audio controller + 0014 HiNT HC4 PCI to ISDN bridge, Network controller + 0020 HB6 Universal PCI-PCI bridge (transparent mode) + 0021 HB6 Universal PCI-PCI bridge (non-transparent mode) + 1775 c200 C2K CompactPCI interface bridge + 1775 ce90 CE9 + 4c53 1050 CT7 mainboard + 4c53 1080 CT8 mainboard + 4c53 1090 Cx9 mainboard + 4c53 10a0 CA3/CR3 mainboard + 4c53 3010 PPCI mezzanine (32-bit PMC) + 4c53 3011 PPCI mezzanine (64-bit PMC) + 4c53 4000 PMCCARR1 carrier board + 0022 HiNT HB4 PCI-PCI Bridge (PCI6150) + 0026 HB2 PCI-PCI Bridge + 1014 AudioTrak Maya + 1018 Audiotrak INCA88 + 1019 Miditrak 2120 + 101a E.Band [AudioTrak Inca88] + 101b E.Band [AudioTrak Inca88] + 8011 VXPro II Chipset + 3388 8011 VXPro II Chipset CPU to PCI Bridge + 8012 VXPro II Chipset + 3388 8012 VXPro II Chipset PCI to ISA Bridge + 8013 VXPro II IDE + 3388 8013 VXPro II Chipset EIDE Controller + a103 Blackmagic Design DeckLink HD Pro +3411 Quantum Designs (H.K.) Inc +3442 Bihl+Wiedemann GmbH + 1783 AS-i 3.0 cPCI Master + 1922 AS-i 3.0 PCI Master +3475 Arista Networks, Inc. +34ba Ice Lake-LP PCI Express Root Port #3 +3513 ARCOM Control Systems Ltd +369a HighSecLabs, Ltd. +37d9 ITD Firm ltd. + 1138 SCHD-PH-8 Phase detector + 1140 VR-12-PCI 12-ch Relay Actuator Card + 1141 PCI-485(422) Multi-port Serial Board + 1142 PCI-CAN2 +3842 eVga.com. Corp. +38ef 4Links +# Wrong ID in board programmed sub-did in place of sub-vid +393e Lenovo (wrong ID) +3d3d 3DLabs + 0001 GLINT 300SX + 0002 GLINT 500TX + 0000 0000 GLoria L + 0003 GLINT Delta + 0000 0000 GLoria XL + 0004 Permedia + 0005 Permedia + 0006 GLINT MX + 0000 0000 GLoria XL + 1048 0a42 GLoria XXL + 0007 3D Extreme + 0008 GLINT Gamma G1 + 1048 0a42 GLoria XXL + 0009 Permedia II 2D+3D + 1040 0011 AccelStar II + 1048 0a42 GLoria XXL + 13e9 1000 6221L-4U + 3d3d 0100 AccelStar II 3D Accelerator + 3d3d 0111 Permedia 3:16 + 3d3d 0114 Santa Ana + 3d3d 0116 Oxygen GVX1 + 3d3d 0119 Scirocco + 3d3d 0120 Santa Ana PCL + 3d3d 0125 Oxygen VX1 + 3d3d 0127 Permedia3 Create! + 000a GLINT R3 + 3d3d 0121 Oxygen VX1 + 000c GLINT R3 [Oxygen VX1] + 3d3d 0144 Oxygen VX1-4X AGP [Permedia 4] + 000d GLint R4 rev A + 000e GLINT Gamma G2 + 0011 GLint R4 rev B + 0012 GLint R5 rev A + 0013 GLint R5 rev B + 0020 VP10 visual processor + 0022 VP10 visual processor + 0024 VP9 visual processor + 002c Wildcat Realizm 100/200 + 0030 Wildcat Realizm 800 + 0032 Wildcat Realizm 500 + 0100 Permedia II 2D+3D + 07a1 Wildcat III 6210 + 07a2 Sun XVR-500 Graphics Accelerator + 3d3d 1047 Sun XVR-600 Graphics Accelerator + 07a3 Wildcat IV 7210 + 1004 Permedia + 3d04 Permedia + ffff Glint VGA +4005 Avance Logic Inc. + 0300 ALS300 PCI Audio Device + 0308 ALS300+ PCI Audio Device + 0309 PCI Input Controller + 1064 ALG-2064 + 2064 ALG-2064i + 2128 ALG-2364A GUI Accelerator + 2301 ALG-2301 + 2302 ALG-2302 + 2303 AVG-2302 GUI Accelerator + 2364 ALG-2364A + 2464 ALG-2464 + 2501 ALG-2564A/25128A + 4000 ALS4000 Audio Chipset + 4005 4000 ALS4000 Audio Chipset + 4710 ALC200/200P +4033 Addtron Technology Co, Inc. + 1360 RTL8139 Ethernet +4040 NetXen Incorporated + 0001 NXB-10GXSR 10-Gigabit Ethernet PCIe Adapter with SR-XFP optical interface + 103c 7047 NC510F PCIe 10-Gigabit Server Adapter + 0002 NXB-10GCX4 10-Gigabit Ethernet PCIe Adapter with CX4 copper interface + 103c 7048 NC510c PCIe 10-Gigabit Server Adapter + 0003 NXB-4GCU Quad Gigabit Ethernet PCIe Adapter with 1000-BASE-T interface + 0004 BladeCenter-H 10-Gigabit Ethernet High Speed Daughter Card + 0005 NetXen Dual Port 10GbE Multifunction Adapter for c-Class + 103c 170e NC512m Dual Port 10GbE Multifunction BL-C Adapter + 0024 XG Mgmt + 0025 XG Mgmt + 0100 NX3031 Multifunction 1/10-Gigabit Server Adapter + 103c 171b NC522m Dual Port 10GbE Multifunction BL-c Adapter + 103c 1740 NC375T PCI Express Quad Port Gigabit Server Adapter + 103c 3251 NC375i 1G w/NC524SFP 10G Module + 103c 705a NC375i Integrated Quad Port Multifunction Gigabit Server Adapter + 103c 705b NC522SFP Dual Port 10GbE Server Adapter + 152d 896b TG20 Dual Port 10GbE Server/Storage Adapter + 4040 0124 NX3031 Quad Port Gigabit Server Adapter + 4040 0126 Dual Port SFP+ 10GbE Server Adapter +4143 Digital Equipment Corp +4144 Alpha Data + 0044 ADM-XRCIIPro +4150 ONA Electroerosion + 0001 PCI32TLITE FILSTRUP1 PCI to VME Bridge Controller + 0006 PCI32TLITE UART 16550 Opencores + 0007 PCI32TLITE CAN Controller Opencores +415a Auzentech, Inc. +416c Aladdin Knowledge Systems + 0100 AladdinCARD + 0200 CPC +4242 Universall Answer Generators +4254 DVBSky +4321 Tata Power Strategic Electronics Division +4348 WCH.CN + 2273 CH351 PCI Dual Serial Port Controller + 3253 CH352 PCI Dual Serial Port Controller + 3453 CH353 PCI Quad Serial Port Controller + 5053 CH352 PCI Serial and Parallel Port Controller + 7053 CH353 PCI Dual Serial and Parallel Ports Controller + 7073 CH356 PCI Quad Serial and Parallel Ports Controller + 7173 CH355 PCI Quad Serial Port Controller +434e Cornelis Networks +4444 Internext Compression Inc + 0016 iTVC16 (CX23416) Video Decoder + 0070 0003 WinTV PVR 250 + 0070 0009 WinTV PVR 150 + 0070 0801 WinTV PVR 150 + 0070 0807 WinTV PVR 150 + 0070 4001 WinTV PVR 250 + 0070 4009 WinTV PVR 250 + 0070 4801 WinTV PVR 250 + 0070 4803 WinTV PVR 250 + 0070 8003 WinTV PVR 150 + 0070 8801 WinTV PVR 150 + 0070 c801 WinTV PVR 150 + 0070 e807 WinTV PVR 500 (1st unit) + 0070 e817 WinTV PVR 500 (2nd unit) + 0070 ff92 WiNTV PVR-550 + 0270 0801 WinTV PVR 150 + 104d 013d ENX-26 TV Encoder + 10fc d038 GV-MVP/RX2W (1st unit) + 10fc d039 GV-MVP/RX2W (2nd unit) + 12ab fff3 MPG600 + 12ab ffff MPG600 + 1461 c00a M113 PCI Analog TV (PAL/SECAM, Philips FQ1216MK3 tuner) + 1461 c00b M113 PCI Analog TV (PAL/SECAM+FM, Philips FM1216MK3 tuner) + 1461 c00c M113 PCI Analog TV (NTSC, JAPAN version, Philips FI1286MK2 tuner) + 1461 c010 M113 PCI Analog TV (NTSC, Philips FI1236MK3 tuner) + 1461 c011 M113 PCI Analog TV (NTSC+FM, Philips FM1236MK3 tuner) + 1461 c018 M113 PCI Analog TV (NTSC, Philips FQ1236MK5 tuner) + 1461 c019 UltraTV 1500 MCE, a.k.a. M113 PCI Analog TV (NTSC+FM, Philips FQ1236MK5 tuner) + 1461 c01a M113 PCI Analog TV (PAL/SECAM, Philips FQ1216MK5 tuner) + 1461 c01b M113 PCI Analog TV (PAL/SECAM+FM, Philips FM1216MK5 tuner) + 1461 c030 M113 PCI Analog TV (NTSC-J, Partsnic tuner) + 1461 c031 M113 PCI Analog TV (NTSC-J+FM, Partsnic tuner) + 1461 c032 M113 PCI Analog TV (PAL/SECAM, Partsnic tuner) + 1461 c033 M113 PCI Analog TV (PAL/SECAM+FM, Partsnic tuner) + 1461 c034 M113 PCI Analog TV (NTSC, Partsnic tuner) + 1461 c035 M113 PCI Analog TV (NTSC+FM, Partsnic tuner) + 1461 c03f C115 PCI video capture card (no tuner) + 1461 c136 M104 mini-PCI Analog TV + 1461 c20a M755 AVerTV Video Capture (PAL/SECAM, Philips FQ1216MK3 tuner) + 1461 c218 M755 AVerTV Video Capture (NTSC, Philips FQ1236MK5 tuner) + 1461 c219 M755 AVerTV Video Capture (NTSC+FM, Philips FQ1236MK5 tuner) + 1461 c21a M755 AVerTV Video Capture (PAL/SECAM, Philips FQ1216MK5 tuner) + 1461 c21b M755 AVerTV Video Capture (PAL/SECAM+FM, Philips FM1216MK5 tuner) + 1461 c230 M755 AVerTV Video Capture (NTSC-J, Partsnic tuner) + 1461 c231 M755 AVerTV Video Capture (NTSC-J+FM, Partsnic tuner) + 1461 c232 M755 AVerTV Video Capture (PAL/SECAM, Partsnic tuner) + 1461 c233 M755 AVerTV Video Capture (PAL/SECAM+FM, Partsnic tuner) + 1461 c234 M755 AVerTV Video Capture (NTSC, Partsnic tuner) + 1461 c235 M755 AVerTV Video Capture (NTSC+FM, Partsnic tuner) + 1461 c337 E106 AVerMedia AVerTV Video Capture + 1461 c439 M116 AVerMedia AVerTV MCE 116 Plus (NTSC/PAL/SECAM+FM+REMOTE, Xceive 2028 tuner) + 1461 c5ff C755 AVerTV Video Capture card (no tuner) + 1461 c6ff C115 PCI video capture card (no tuner) + 1461 c739 M785 AVerMedia PCI Analog TV (NTSC/PAL/SECAM+FM, Xceive 2028 tuner) + 9005 0092 VideOh! AVC-2010 + 9005 0093 VideOh! AVC-2410 + 0803 iTVC15 (CX23415) Video Decoder + 0070 4000 WinTV PVR-350 + 0070 4001 WinTV PVR-250 + 0070 4800 WinTV PVR-350 (V1) + 12ab 0000 MPG160 + 1461 a3ce M179 + 1461 a3cf M179 +4468 Bridgeport machines +4594 Cogetec Informatique Inc +45fb Baldor Electric Company +4624 Budker Institute of Nuclear Physics + adc1 ADC200ME High speed ADC + de01 DL200ME High resolution delay line PCI based card + de02 DL200ME Middle resolution delay line PCI based card +4651 TXIC +4680 Umax Computer Corp +4843 Hercules Computer Technology Inc +4916 RedCreek Communications Inc + 1960 RedCreek PCI adapter +4943 Growth Networks +494f ACCES I/O Products, Inc. + 0508 PCI-IDO-16A FET Output Card + 0518 PCI-IDO-32A FET Output Card + 0520 PCI-IDO-48 FET Output Card + 0521 PCI-IDO-48A FET Output Card + 0703 PCIe-RO-4 Electromechanical Relay Output Card + 07d0 PCIe-IDO-24 FET Output Card + 0920 PCI-IDI-48 Isolated Digital Input Card + 0bd0 PCIe-IDI-24 Isolated Digital Input Card + 0c50 PCI-DIO-24H 1x 8255 Digital Input / Output Card + 0c51 PCI-DIO-24D 1x 8255 Digital Input / Output Card + 0c52 PCIe-DIO-24 1x 8255 Digital Input / Output Card + 0c53 PCIe-DIO-24H 8255 Digital Input / Output Card + 0c57 mPCIe-DIO-24 8255 Digital Input / Output Card + 0c60 PCI-DIO-48H 8255 Digital Input / Output Card + 0c61 PCIe-DIO-48 8255 Digital Input / Output Card + 0c62 P104-DIO-48 8255 Digital Input / Output Card + 0c68 PCI-DIO-72 8255 Digital Input / Output Card + 0c69 P104-DIO-96 8255 Digital Input / Output Card + 0c70 PCI-DIO-96 8255 Digital Input / Output Card + 0c78 PCI-DIO-120 8255 Digital Input / Output Card + 0dc8 PCI-IDIO-16 Isolated Digital Input / FET Output Card + 0e50 PCI-DIO-24S 8255 Digital Input / Output Card + 0e51 PCI-DIO-24H(C) 8255 Digital Input / Output Card + 0e52 PCI-DIO-24D(C) 8255 Digital Input / Output Card + 0e53 PCIe-DIO-24S 8255 Digital Input / Output Card + 0e54 PCIe-DIO-24HS 8255 Digital Input / Output Card + 0e55 PCIe-DIO-24DC 8255 Digital Input / Output Card + 0e56 PCIe-DIO-24DCS 8255 Digital Input / Output Card + 0e57 mPCIe-DIO-24S 8255 Digital Input / Output Card + 0e60 PCI-DIO-48S 2x 8255 Digital Input / Output Card + 0e61 PCIe-DIO-48S 2x 8255 Digital Input / Output Card + 0e62 P104-DIO-48S 2x 8255 Digital Input / Output Card + 0f00 PCI-IIRO-8 Isolated Digital / Relay Output Card + 0f01 LPCI-IIRO-8 Isolated Digital / Relay Output Card + 0f02 PCIe-IIRO-8 Isolated Digital / Relay Output Card + 0f08 PCI-IIRO-16 Isolated Digital / Relay Output Card + 0f09 PCIe-IIRO-16 Isolated Digital / Relay Output Card + 0fc0 PCIe-IDIO-12 Isolated Digital Input / FET Output Card + 0fc1 PCIe-IDI-12 Isolated Digital Input Card + 0fc2 PCIe-IDO-12 FET Output Card + 0fd0 PCIe-IDIO-24 Isolated Digital Input / FET Output Card + 1050 PCI-422/485-2 2x RS422/RS484 Card + 1051 PCIe-COM-2SRJ 2x RS422/RS484 Card w/RJ45 Connectors + 1052 104I-COM-2S 2x RS422/RS484 PCI/104 Board + 1053 mPCIe-COM-2S 2x RS422/RS484 PCI Express Mini Card + 1058 PCI-COM422/4 4x RS422 Card + 1059 PCI-COM485/4 4x RS485 Card + 105a PCIe-COM422-4 4x RS422 Card + 105b PCIe-COM485-4 4x RS485 Card + 105c PCIe-COM-4SRJ 4x RS422/RS485 Card w/RJ45 Connectors + 105d 104I-COM-4S 4x RS422/RS484 PCI/104 Board + 105e mPCIe-COM-4S 4x RS422/RS484 PCI Express Mini Card + 1068 PCI-COM422/8 8x RS422 Card + 1069 PCI-COM485/8 8x RS485 Card + 106a PCIe-COM422-8 8x RS422 Card + 106b PCIe-COM485-8 8x RS485 Card + 106c 104I-COM-8S 8x RS422/RS485 PCI/104 Board + 1088 PCI-COM232/1 1x RS232 Card + 1090 PCI-COM232/2 2x RS232 Card + 1091 PCIe-COM232-2RJ 2x RS232 Card w/RJ45 Connectors + 1093 mPCIe-COM232-2 2x RS232 PCI Express Mini Card + 1098 PCIe-COM232-4 4x RS232 Card + 1099 PCIe-COM232-4RJ 4x RS232 Card w/RJ45 Connectors + 109b mPCIe-COM232-4 4x RS232 PCI Express Mini Card + 10a8 P104-COM232-8 8x RS232 PC-104+ Board + 10a9 PCIe-COM232-8 8x RS232 Card + 10c9 PCI-COM-1S 1x RS422/RS485 Card + 10d0 PCI-COM2S 2x RS422/RS485 Card + 10d1 PCIe-COM-2SMRJ 2x RS232/RS422/RS485 Card w/RJ45 Connectors + 10d2 104I-COM-2SM 2x RS232/RS422/RS485 PCI/104 Board + 10d3 mPCIe-COM-2SM 2x RS232/RS422/RS485 PCI Express Mini Card + 10d8 PCI-COM-4SM 4x RS232/RS422/RS485 Card + 10d9 PCIe-COM-4SM 4x RS232/RS422/RS485 Card + 10da PCIe-COM-4SMRJ 4x RS232/RS422/RS485 Card w/RJ45 Connectors + 10db 104I-COM-4SM 4x RS232/RS422/RS485 PCI/104 Board + 10dc mPCIe-COM-4SM 4x RS232/RS422/RS485 PCI Express Mini Card + 10e8 PCI-COM-8SM 8x RS232/RS422/RS485 Card + 10e9 PCIe-COM-8SM 8x RS232/RS422/RS485 Card + 10ea 104I-COM-8SM 8x RS232/RS422/RS485 PCI-104 Board + 1108 mPCIe-ICM485-1 1x Isolated RS485 PCI Express Mini Card + 1110 mPCIe-ICM422-2 2x Isolated RS422 PCI Express Mini Card + 1111 mPCIe-ICM485-2 2x Isolated RS485 PCI Express Mini Card + 1118 mPCIe-ICM422-4 4x Isolated RS422 PCI Express Mini Card + 1119 mPCIe-ICM485-4 4x Isolated RS485 PCI Express Mini Card + 1148 PCI-ICM-1S 1x Isolated RS422/RS485 Card + 1150 PCI-ICM-2S 2x Isolated RS422/RS485 Card + 1152 PCIe-ICM-2S 2x Isolated RS422/RS485 Card + 1158 PCI-ICM422/4 4x Isolated RS422 Card + 1159 PCI-ICM485/4 4x Isolated RS485 Card + 115a PCIe-ICM-4S 4x Isolated RS422/RS485 Card + 1190 PCIe-ICM232-2 2x Isolated RS232 Card + 1191 mPCIe-ICM232-2 2x Isolated RS232 PCI Express Mini Card + 1198 PCIe-ICM232-4 4x Isolated RS232 Card + 1199 mPCIe-ICM232-4 4x Isolated RS422 PCI Express Mini Card + 11d0 PCIe-ICM-2SM 2x Isolated RS232/RS422/RS485 Card + 11d8 PCIe-ICM-4SM 4x Isolated RS232/RS422/RS485 Card + 1250 PCI-WDG-2S Watchdog and 2x Serial Card + 12d0 PCI-WDG-IMPAC + 2230 PCI-QUAD-8 8x Quadrature Input Card + 2231 PCI-QUAD-4 4x Quadrature Input Card + 22c0 PCI-WDG-CSM Watchdog Card + 25c0 P104-WDG-E Watchdog PC/104+ Board + 2c50 PCI-DIO-96CT 96x Digital Input / Output Card + 2c58 PCI-DIO-96C3 96x Digital Input / Output Card w/3x 8254 Counter Card + 2ee0 PCIe-DIO24S-CTR12 24x Digital Input / Output Card w/4x 8254 Counter Card + 2fc0 P104-WDG-CSM Watchdog PC/104+ Board + 2fc1 P104-WDG-CSMA Advanced Watchdog PC/104+ Board + 5ed0 PCI-DAC + 6c90 PCI-DA12-2 2x 12-bit Analog Output Card + 6c98 PCI-DA12-4 4x 12-bit Analog Output Card + 6ca0 PCI-DA12-6 6x 12-bit Analog Output Card + 6ca8 PCI-DA12-8 8x 12-bit Analog Output Card + 6ca9 PCI-DA12-8V + 6cb0 PCI-DA12-16 16x 12-bit Analog Output Card + 6cb1 PCI-DA12-16V + 8ef0 P104-FAS16-16 + aca8 PCI-AI12-16 12-bit 100kHz Analog Input Card + aca9 PCI-AI12-16A 12-bit 100kHz Analog Input w/FIFO Card + eca8 PCI-AIO12-16 12-bit 100kHz Analog Input w/2x Analog Output and FIFO Card + ecaa PCI-A12-16A 12-bit 100kHz Analog Input w/2x Analog Output and FIFO Card + ece8 LPCI-A16-16A 16-bit 500kHz Analog Input low-profile Card + ece9 LPCI-AIO16A 16-bit 500kHz Analog Input low-profile Card +4978 Axil Computer Inc +4a14 NetVin + 5000 NV5000SC + 4a14 5000 RT8029-Based Ethernet Adapter +4b10 Buslogic Inc. +4b43 KonteX Inc. +4c48 LUNG HWA Electronics +4c4d Liquid-Markets GmbH +# Dev versions of TaSR, not for production. + 9998 TaSR +# First versions of UberNIC, not for production. + 9999 UberNIC PoC/testing/dev +4c52 LR-LINK + 1001 Smart Network Adapter + 4c52 a008 LREG1008PT Single-port 1Gb Smart Ethernet Network Adapter + 1002 Smart Network Adapter + 4c52 a006 LREG1006PT Single-port 1.2Gb Network Security Isolation Adapter + 1003 Smart Network Adapter + 1004 Smart Network Adapter + 4c52 b010 LREG1010PF Single-port 10Gb FPGA Network Security Isolation Adapter + 4c52 b011 LREG1011PF Dual-port 10Gb FPGA Network Security Isolation Adapter +4c53 SBS Technologies + 0000 PLUSTEST device + 4c53 3000 PLUSTEST card (PC104+) + 4c53 3001 PLUSTEST card (PMC) + 0001 PLUSTEST-MM device + 4c53 3002 PLUSTEST-MM card (PMC) +4ca1 Seanix Technology Inc +4d51 MediaQ Inc. + 0200 MQ-200 +4d54 Microtechnica Co Ltd +4d56 Balluff MV GmbH + 0000 [mvHYPERION-CLe/CLb] CameraLink PCI Express x1 Frame Grabber + 0001 [mvHYPERION-CLf/CLm] CameraLink PCI Express x4 Frame Grabber + 0010 [mvHYPERION-16R16/-32R16] 16 Video Channel PCI Express x4 Frame Grabber + 0020 [mvHYPERION-HD-SDI] HD-SDI PCI Express x4 Frame Grabber + 0030 [mvHYPERION-HD-SDI-Merger] HD-SDI PCI Express x4 Frame Grabber + 7012 [mvBlueNAOS BVS CA-BN] PCIe Gen1 x2 Camera + 7014 [mvBlueNAOS BVS CA-BN] PCIe Gen1 x4 Camera + 7022 [mvBlueNAOS BVS CA-BN] PCIe Gen2 x2 Camera + 7024 [mvBlueNAOS BVS CA-BN] PCIe Gen2 x4 Camera +4ddc ILC Data Device Corp + 0100 DD-42924I5-300 (ARINC 429 Data Bus) + 0300 SB-3620 Motion Feedback Device + 0340 SB-3623 Motion Feedback Device + 0400 SB-3622 Motion Feedback Device + 0500 SB-3621 Motion Feedback Device + 0510 SB-3624 Motion Feedback Device + 0801 BU-65570I1 MIL-STD-1553 Test and Simulation + 0802 BU-65570I2 MIL-STD-1553 Test and Simulation + 0811 BU-65572I1 MIL-STD-1553 Test and Simulation + 0812 BU-65572I2 MIL-STD-1553 Test and Simulation + 0881 BU-65570T1 MIL-STD-1553 Test and Simulation + 0882 BU-65570T2 MIL-STD-1553 Test and Simulation + 0891 BU-65572T1 MIL-STD-1553 Test and Simulation + 0892 BU-65572T2 MIL-STD-1553 Test and Simulation + 0901 BU-65565C1 MIL-STD-1553 Data Bus + 0902 BU-65565C2 MIL-STD-1553 Data Bus + 0903 BU-65565C3 MIL-STD-1553 Data Bus + 0904 BU-65565C4 MIL-STD-1553 Data Bus + 0b01 BU-65569I1 MIL-STD-1553 Data Bus + 0b02 BU-65569I2 MIL-STD-1553 Data Bus + 0b03 BU-65569I3 MIL-STD-1553 Data Bus + 0b04 BU-65569I4 MIL-STD-1553 Data Bus + 0d01 SB-3641 Motion Feedback Device + 0d10 SB-365x Motion Feedback Device + 2f00 SB-3642 Motion Feedback Device + 3000 SB-3644 Motion Feedback Device +4e4c NieL TechSolution +4e58 Nutanix, Inc. + 0001 Virtual NVMe Controller +5045 University of Toronto + 4243 BLASTbus PCI Interface Card v1 +5046 GemTek Technology Corporation + 1001 PCI Radio +5053 Voyetra Technologies + 2010 Daytona Audio Adapter +50b2 TerraTec Electronic GmbH +50ce System-on-Chip Engineering S.L. + 0001 RELY-MIL-XMC-TSN-SWITCH + 0100 XMC_AV-Dual-ETH + 0101 XMC_AV-ETSN + 0102 XMC_AV-AFDX +5136 S S Technologies +5143 Qualcomm Inc +5145 Ensoniq (Old) + 3031 Concert AudioPCI +5168 Animation Technologies Inc. + 0300 FlyDVB-S + 0301 FlyDVB-T +5301 Alliance Semiconductor Corp. + 0001 ProMotion aT3D +5333 S3 Graphics Ltd. + 0551 Plato/PX (system) + 5631 86c325 [ViRGE] + 8800 86c866 [Vision 866] + 8801 86c964 [Vision 964] + 8810 86c764_0 [Trio 32 vers 0] + 8811 86c764/765 [Trio32/64/64V+] + 8812 86cM65 [Aurora64V+] + 8813 86c764_3 [Trio 32/64 vers 3] + 8814 86c767 [Trio 64UV+] + 8815 86cM65 [Aurora 128] + 883d 86c988 [ViRGE/VX] + 8870 FireGL + 8880 86c868 [Vision 868 VRAM] vers 0 + 8881 86c868 [Vision 868 VRAM] vers 1 + 8882 86c868 [Vision 868 VRAM] vers 2 + 8883 86c868 [Vision 868 VRAM] vers 3 + 88b0 86c928 [Vision 928 VRAM] vers 0 + 88b1 86c928 [Vision 928 VRAM] vers 1 + 88b2 86c928 [Vision 928 VRAM] vers 2 + 88b3 86c928 [Vision 928 VRAM] vers 3 + 88c0 86c864 [Vision 864 DRAM] vers 0 + 88c1 86c864 [Vision 864 DRAM] vers 1 + 88c2 86c864 [Vision 864-P DRAM] vers 2 + 88c3 86c864 [Vision 864-P DRAM] vers 3 + 88d0 86c964 [Vision 964 VRAM] vers 0 + 88d1 86c964 [Vision 964 VRAM] vers 1 + 88d2 86c964 [Vision 964-P VRAM] vers 2 + 88d3 86c964 [Vision 964-P VRAM] vers 3 + 88f0 86c968 [Vision 968 VRAM] rev 0 + 88f1 86c968 [Vision 968 VRAM] rev 1 + 88f2 86c968 [Vision 968 VRAM] rev 2 + 88f3 86c968 [Vision 968 VRAM] rev 3 + 8900 86c755 [Trio 64V2/DX] + 5333 8900 86C775 Trio64V2/DX + 8901 86c775/86c785 [Trio 64V2/DX or /GX] + 5333 8901 86C775 Trio64V2/DX, 86C785 Trio64V2/GX + 8902 Plato/PX + 8903 Trio 3D business multimedia + 8904 86c365, 86c366 [Trio 3D] + 1014 00db Integrated Trio3D + 4843 314a Terminator 128/3D GLH + 5333 8904 86C365 Trio3D AGP + 8905 Trio 64V+ family + 8906 Trio 64V+ family + 8907 Trio 64V+ family + 8908 Trio 64V+ family + 8909 Trio 64V+ family + 890a Trio 64V+ family + 890b Trio 64V+ family + 890c Trio 64V+ family + 890d Trio 64V+ family + 890e Trio 64V+ family + 890f Trio 64V+ family + 8a01 86c375 [ViRGE/DX] or 86c385 [ViRGE/GX] + 0e11 b032 ViRGE/GX + 10b4 1617 Nitro 3D + 10b4 1717 Nitro 3D + 5333 8a01 ViRGE/DX + 8a10 ViRGE/GX2 + 1092 8a10 Stealth 3D 4000 + 8a13 86c360 [Trio 3D/1X], 86c362, 86c368 [Trio 3D/2X] + 5333 8a13 Trio3D/2X + 8a20 86c794 [Savage 3D] + 5333 8a20 86C391 Savage3D + 8a21 86c390 [Savage 3D/MV] + 5333 8a21 86C390 Savage3D/MV + 8a22 Savage 4 + 1033 8068 Savage 4 + 1033 8069 Savage 4 + 1033 8110 Savage 4 LT + 105d 0018 SR9 8Mb SDRAM + 105d 002a SR9 Pro 16Mb SDRAM + 105d 003a SR9 Pro 32Mb SDRAM + 105d 092f SR9 Pro+ 16Mb SGRAM + 1092 4207 Stealth III S540 + 1092 4800 Stealth III S540 + 1092 4807 SpeedStar A90 + 1092 4808 Stealth III S540 + 1092 4809 Stealth III S540 + 1092 480e Stealth III S540 + 1092 4904 Stealth III S520 + 1092 4905 SpeedStar A200 + 1092 4a09 Stealth III S540 + 1092 4a0b Stealth III S540 Xtreme + 1092 4a0f Stealth III S540 + 1092 4e01 Stealth III S540 + 1102 101d 3d Blaster Savage 4 + 1102 101e 3d Blaster Savage 4 + 5333 8100 86C394-397 Savage4 SDRAM 100 + 5333 8110 86C394-397 Savage4 SDRAM 110 + 5333 8125 86C394-397 Savage4 SDRAM 125 + 5333 8143 86C394-397 Savage4 SDRAM 143 + 5333 8a22 86C394-397 Savage4 + 5333 8a2e 86C394-397 Savage4 32bit + 5333 9125 86C394-397 Savage4 SGRAM 125 + 5333 9143 86C394-397 Savage4 SGRAM 143 + 8a23 Savage 4 + 8a25 ProSavage PM133 + 0303 0303 D9840-60001 [Brio BA410 Motherboard] + 8a26 ProSavage KM133 + 8c00 ViRGE/M3 + 8c01 ViRGE/MX + 1179 0001 ViRGE/MX + 8c02 ViRGE/MX+ + 8c03 ViRGE/MX+MV + 8c10 86C270-294 [SavageMX-MV] + 8c11 82C270-294 [SavageMX] + 8c12 86C270-294 [SavageIX-MV] + 1014 017f ThinkPad T20/T22 + 1179 0001 86C584 SuperSavage/IXC Toshiba + 8c13 86C270-294 [SavageIX] + 1179 0001 Magnia Z310 + 8c22 SuperSavage MX/128 + 8c24 SuperSavage MX/64 + 8c26 SuperSavage MX/64C + 8c2a SuperSavage IX/128 SDR + 8c2b SuperSavage IX/128 DDR + 8c2c SuperSavage IX/64 SDR + 8c2d SuperSavage IX/64 DDR + 8c2e SuperSavage IX/C SDR + 1014 01fc ThinkPad T23 + 8c2f SuperSavage IX/C DDR + 8d01 86C380 [ProSavageDDR K4M266] + 8d02 VT8636A [ProSavage KN133] AGP4X VGA Controller (TwisterK) + 8d03 VT8751 [ProSavageDDR P4M266] + 8d04 VT8375 [ProSavage8 KM266/KL266] + 8e00 DeltaChrome + 8e26 ProSavage + 8e40 2300E Graphics Processor + 8e48 Matrix [Chrome S25 / S27] + 5333 0130 Chrome S27 256M DDR2 + 9043 Chrome 430 GT + 9045 Chrome 430 ULP / 435 ULP / 440 GTX + 9060 Chrome 530 GT +# Found in VIA Embedded uH4 graphics card + 9070 Chrome 5400EW + 9102 86C410 [Savage 2000] + 1092 5932 Viper II Z200 + 1092 5934 Viper II Z200 + 1092 5952 Viper II Z200 + 1092 5954 Viper II Z200 + 1092 5a35 Viper II Z200 + 1092 5a37 Viper II Z200 + 1092 5a55 Viper II Z200 + 1092 5a57 Viper II Z200 + ca00 SonicVibes +5431 AuzenTech, Inc. +544c Teralogic Inc + 0350 TL880-based HDTV/ATSC tuner +544d TBS Technologies + 6178 DVB Tuner PCIe Card + 544d 6904 TBS6904 DVB-S2 Quad Tuner PCIe Card + 544d 6905 TBS6905 DVB-S2 Quad Tuner PCIe Card + 6205 0001 TBS6205 DVB-T2/T/C Quad TV Tuner PCIe Card + 6209 0001 TBS6209 DVB-T2/C2/T/C/ISDB-T OctaTV Tuner + 6590 0001 TBS6590 DVB-S/S2/S2X/T/T2/C/C2/ISDB-T + 2xCI + 6590 0002 TBS6590SE DVB-S/S2/S2X/T/T2/C/C2 + 2xCI + 6704 ffff TBS6704 (Quad ATSC/QAMB) + 6903 0020 TBS6903x (Dual DVB-S/S2/S2X) + 6903 0021 TBS6903x (Dual DVB-S/S2/S2X) + 6903 8888 TBS6903x (Dual DVB-S/S2/S2X) + 6909 0009 TBS6909x (Octa DVB-S/S2/S2X) + 6909 0010 TBS6909x (Octa DVB-S/S2/S2X) + 6909 0019 TBS6909x (Octa DVB-S/S2/S2X) + 6910 0001 TBS6910 DVB-S/S2 + 2xCI + 6910 0002 TBS6910SE DVB-S/S2/S2x + 2xCI +5452 SCANLAB AG + 3443 RTC4 +5455 Technische Universitaet Berlin + 4458 S5933 +5456 GoTView +5519 Cnet Technologies, Inc. +5544 Dunord Technologies + 0001 I-30xx Scanner Interface +5555 Genroco, Inc + 0003 TURBOstor HFP-832 [HiPPI NIC] + 0004 Torrent QN16e [16-128 Channel MPEG QAM Modulator for DVB-C] + 3b00 Epiphan DVI2PCIe video capture card +5646 Vector Fabrics BV +5654 VoiceTronix Pty Ltd +5678 Dawicontrol Computersysteme GmbH +5700 Netpower +# alternately Extreme Engineering Solutions, Inc. +5845 X-ES, Inc. +584d AuzenTech Co., Ltd. +5851 Exacq Technologies + 8008 tDVR8008 8-port video capture card + 8016 tDVR8016 16-chan video capture card + 8032 tDVR8032 32-chan video capture card +5853 XenSource, Inc. + 0001 Xen Platform Device + c000 Citrix XenServer PCI Device for Windows Update + c110 Virtualized HID + c147 Virtualized Graphics Device + c200 XCP-ng Project PCI Device for Windows Update +5854 GoTView +5ace Beholder International Ltd. +6205 TBS Technologies (wrong ID) +6209 TBS Technologies (wrong ID) +631c SmartInfra Ltd + 1652 PXI-1652 Signal Generator + 2504 PXI-2504 Signal Interrogator +6356 UltraStor +6374 c't Magazin fuer Computertechnik + 6773 GPPCI +6409 Logitec Corp. +6549 Teradici Corp. + 1200 TERA1200 PC-over-IP Host +6590 TBS Technologies (wrong ID) +6666 Decision Computer International Co. + 0001 PCCOM4 + 0002 PCCOM8 + 0004 PCCOM2 + 0101 PCI 8255/8254 I/O Card + 0200 12-bit AD/DA Card + 0201 14-bit AD/DA Card + 1011 Industrial Card + 1021 8 photo couple 8 relay Card + 1022 4 photo couple 4 relay Card + 1025 16 photo couple 16 relay Card + 4000 WatchDog Card +6688 Zycoo Co., Ltd + 1200 CooVox TDM Analog Module + 1400 CooVOX TDM GSM Module + 1600 CooVOX TDM E1/T1 Module + 1800 CooVOX TDM BRI Module +6704 TBS Technologies (wrong ID) +6766 Glenfly Tech Co., Ltd. + 3d00 Arise-GT-10C0 + 3d02 Arise1020 + 3d03 Arise-GT-1040 + 3d04 Arise1010 + 3d06 Arise-GT-10C0t + 3d07 Arise2030 + 3d08 Arise2020 + 3d40 GLF HDMI/DP Audio + 3d41 GLF HDMI/DP Audio + 3d43 GLF HDMI/DP Audio +6899 ZT Systems +# nee Qumranet +6900 Red Hat, Inc. +6903 TBS Technologies (wrong ID) +6909 TBS Technologies (wrong ID) +6910 TBS Technologies (wrong ID) +6f67 NOVAIUM Technology +7063 pcHDTV + 2000 HD-2000 + 3000 HD-3000 + 5500 HD5500 HDTV +7284 HT OMEGA Inc. +7357 IOxOS Technologies SA + 7910 7910 [Althea] +7377 Shenzhen Colorful Yugong Technology and Development Co. +7401 EndRun Technologies + e100 PTP3100 PCIe PTP Slave Clock +7470 TP-LINK Technologies Co., Ltd. +7526 HongQin (Beijing) Technology Co., Ltd. + 0082 HQ SSD M.2 + 0083 HQ SSD 2TB M.2 NVMe +7604 O.N. Electronic Co Ltd. +78c0 Herrick Technology Laboratories, Inc. [HTL] + 0000 HTLv-1 / HTLv-2 / HTLv-13 / HTLv-23 + 0011 HTLv-53 +7bde MIDAC Corporation +7fed PowerTV +8008 Quancom Electronic GmbH + 0010 WDOG1 [PCI-Watchdog 1] + 0011 PWDOG2 [PCI-Watchdog 2] + 0015 Clock77/PCI & Clock77/PCIe (DCF-77 receiver) +# Wrong ID used in subsystem ID of AsusTek PCI-USB2 PCI card. +807d Asustek Computer, Inc. +8086 Intel Corporation + 0007 82379AB + 0008 Extended Express System Support Controller + 0039 21145 Fast Ethernet + 0040 Core Processor DRAM Controller + 0041 Core Processor PCI Express x16 Root Port + 0042 Core Processor Integrated Graphics Controller + 0043 Core Processor Secondary PCI Express Root Port + 0044 Core Processor DRAM Controller + 1025 0347 Aspire 7740G + 1025 0487 TravelMate 5742 + 1028 040a Latitude E6410 + 144d c06a R730 Laptop + 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] + e4bf 50c1 PC1-GROOVE + 0045 Core Processor PCI Express x16 Root Port + 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] + 0046 Core Processor Integrated Graphics Controller + 1028 040a Latitude E6410 + 144d c06a R730 Laptop + 17c0 10d9 Medion Akoya E7214 Notebook PC [MD98410] + e4bf 50c1 PC1-GROOVE + 0047 Core Processor Secondary PCI Express Root Port + 0048 Core Processor DRAM Controller + 0049 Core Processor PCI Express x16 Root Port + 004a Core Processor Integrated Graphics Controller + 004b Core Processor Secondary PCI Express Root Port + 0050 Core Processor Thermal Management Controller + 0069 Core Processor DRAM Controller + 0082 Centrino Advanced-N 6205 [Taylor Peak] + 8086 1301 Centrino Advanced-N 6205 AGN + 8086 1306 Centrino Advanced-N 6205 ABG + 8086 1307 Centrino Advanced-N 6205 BG + 8086 1321 Centrino Advanced-N 6205 AGN + 8086 1326 Centrino Advanced-N 6205 ABG + 0083 Centrino Wireless-N 1000 [Condor Peak] + 8086 1205 Centrino Wireless-N 1000 BGN + 8086 1206 Centrino Wireless-N 1000 BG + 8086 1225 Centrino Wireless-N 1000 BGN + 8086 1226 Centrino Wireless-N 1000 BG + 8086 1305 Centrino Wireless-N 1000 BGN + 8086 1306 Centrino Wireless-N 1000 BG + 8086 1325 Centrino Wireless-N 1000 BGN + 8086 1326 Centrino Wireless-N 1000 BG + 0084 Centrino Wireless-N 1000 [Condor Peak] + 8086 1215 Centrino Wireless-N 1000 BGN + 8086 1216 Centrino Wireless-N 1000 BG + 8086 1315 Centrino Wireless-N 1000 BGN + 8086 1316 Centrino Wireless-N 1000 BG + 0085 Centrino Advanced-N 6205 [Taylor Peak] + 8086 1311 Centrino Advanced-N 6205 (802.11a/b/g/n) + 8086 1316 Centrino Advanced-N 6205 ABG + 0087 Centrino Advanced-N + WiMAX 6250 [Kilmer Peak] + 8086 1301 Centrino Advanced-N + WiMAX 6250 2x2 AGN + 8086 1306 Centrino Advanced-N + WiMAX 6250 2x2 ABG + 8086 1321 Centrino Advanced-N + WiMAX 6250 2x2 AGN + 8086 1326 Centrino Advanced-N + WiMAX 6250 2x2 ABG + 0089 Centrino Advanced-N + WiMAX 6250 [Kilmer Peak] + 8086 1311 Centrino Advanced-N + WiMAX 6250 2x2 AGN + 8086 1316 Centrino Advanced-N + WiMAX 6250 2x2 ABG + 008a Centrino Wireless-N 1030 [Rainbow Peak] + 8086 5305 Centrino Wireless-N 1030 BGN + 8086 5307 Centrino Wireless-N 1030 BG + 8086 5325 Centrino Wireless-N 1030 BGN + 8086 5327 Centrino Wireless-N 1030 BG + 008b Centrino Wireless-N 1030 [Rainbow Peak] + 8086 5315 Centrino Wireless-N 1030 BGN + 8086 5317 Centrino Wireless-N 1030 BG + 0090 Centrino Advanced-N 6230 [Rainbow Peak] + 8086 5211 Centrino Advanced-N 6230 AGN + 8086 5215 Centrino Advanced-N 6230 BGN + 8086 5216 Centrino Advanced-N 6230 ABG + 0091 Centrino Advanced-N 6230 [Rainbow Peak] + 8086 5201 Centrino Advanced-N 6230 AGN + 8086 5205 Centrino Advanced-N 6230 BGN + 8086 5206 Centrino Advanced-N 6230 ABG + 8086 5207 Centrino Advanced-N 6230 BG + 8086 5221 Centrino Advanced-N 6230 AGN + 8086 5225 Centrino Advanced-N 6230 BGN + 8086 5226 Centrino Advanced-N 6230 ABG + 0100 2nd Generation Core Processor Family DRAM Controller + 1028 04aa XPS 8300 + 1043 844d P8P67/P8H67 Series Motherboard + 1734 11b9 Esprimo P510 D3171 motherboard + 17aa 3070 ThinkCentre M91p + 8086 200d DH61CR motherboard + 0101 Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port + 1028 04b2 Vostro 3350 + 106b 00dc MacBookPro8,2 [Core i7, 15", 2011] + 144d c652 NP300E5C series laptop + 0102 2nd Generation Core Processor Family Integrated Graphics Controller + 1028 04aa XPS 8300 + 1043 0102 P8H67 Series Motherboard + 1734 11b9 G640 [Sandy Bridge, HD Graphics] on Esprimo P510 D3171 motherboard + 17aa 3070 ThinkCentre M91p + 0104 2nd Generation Core Processor Family DRAM Controller + 1028 04a3 Precision M4600 + 1028 04b2 Vostro 3350 + 1028 04da Vostro 3750 + 106b 00dc MacBookPro8,2 [Core i7, 15", 2011] + 144d c652 NP300E5C series laptop + 17aa 21cf ThinkPad T520 + 0105 Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port + 106b 00dc MacBookPro8,2 [Core i7, 15", 2011] + 0106 2nd Generation Core Processor Family Integrated Graphics Controller + 0108 Xeon E3-1200 Processor Family DRAM Controller + 0109 Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port + 010a Xeon E3-1200 Processor Family Integrated Graphics Controller + 010b Xeon E3-1200/2nd Generation Core Processor Family Integrated Graphics Controller + 010c Xeon E3-1200/2nd Generation Core Processor Family DRAM Controller + 010d Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port + 010e Xeon E3-1200/2nd Generation Core Processor Family Integrated Graphics Controller + 0112 2nd Generation Core Processor Family Integrated Graphics Controller + 0116 2nd Generation Core Processor Family Integrated Graphics Controller + 1028 04da Vostro 3750 + 144d c652 integrated HD 3000 graphics controller on NP300E5C series laptop + 0122 2nd Generation Core Processor Family Integrated Graphics Controller + 0126 2nd Generation Core Processor Family Integrated Graphics Controller + 1028 04cc Vostro 3350 + 17aa 21ce ThinkPad T420 + 17aa 21cf ThinkPad T520 + 0150 Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller + 1043 84ca P8 series motherboard + 1458 d000 Ivy Bridge GT1 [HD Graphics] + 15d9 0624 X9SCM-F Motherboard + 1849 0150 Motherboard + 0151 Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port + 1043 1477 N56VZ + 1043 844d P8 series motherboard + 1043 84ca P8H77-I Motherboard + 8086 2010 Server Board S1200BTS + 0152 Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller + 1043 84ca P8H77-I Motherboard + 0153 3rd Gen Core Processor Thermal Subsystem + 1043 1517 Zenbook Prime UX31A + 0154 3rd Gen Core processor DRAM Controller + 1025 0806 Aspire E1-470G + 1025 0813 Aspire R7-571 + 103c 17f6 ProBook 4540s + 1043 108d VivoBook X202EV + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 10cf 16bf LIFEBOOK E752 + 0155 Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port + 8086 2010 Server Board S1200BTS + 0156 3rd Gen Core processor Graphics Controller + 1043 108d VivoBook X202EV + 0158 Xeon E3-1200 v2/Ivy Bridge DRAM Controller + 1043 844d P8 series motherboard + 8086 2010 Server Board S1200BT Family + 0159 Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port + 015a Xeon E3-1200 v2/Ivy Bridge Graphics Controller + 015c Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller + 015d Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port + 1043 844d P8 series motherboard + 015e Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller + 0162 IvyBridge GT2 [HD Graphics 4000] + 1043 84ca P8 series motherboard + 1849 0162 Motherboard + 0166 3rd Gen Core processor Graphics Controller + 1043 1517 Zenbook Prime UX31A + 1043 2103 N56VZ + 10cf 16c1 LIFEBOOK E752 + 016a Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller + 1043 844d P8B WS Motherboard + 0172 Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller + 0176 3rd Gen Core processor Graphics Controller + 0201 Arctic Sound + 0284 Comet Lake PCH-LP LPC Premium Controller/eSPI Controller + 1028 09be Latitude 7410 + 02a3 Comet Lake PCH-LP SMBus Host Controller + 1028 09be Latitude 7410 + 02a4 Comet Lake SPI (flash) Controller + 1028 09be Latitude 7410 + 02a6 Comet Lake North Peak + 02b0 Comet Lake PCI Express Root Port #9 + 02b1 Comet Lake PCI Express Root Port #10 + 02b3 Comet Lake PCI Express Root Port #12 + 02b4 Comet Lake PCI Express Root Port #13 + 02b5 Comet Lake PCI Express Root Port #14 + 02b8 Comet Lake PCI Express Root Port #1 + 02bc Comet Lake PCI Express Root Port #5 + 02bf Comet Lake PCI Express Root Port #8 + 02c5 Comet Lake Serial IO I2C Host Controller + 1028 09be Latitude 7410 + 02c8 Comet Lake PCH-LP cAVS + 1028 09be Latitude 7410 + 02d3 Comet Lake SATA AHCI Controller + 02d7 Comet Lake RAID Controller + 02e0 Comet Lake Management Engine Interface + 1028 09be Latitude 7410 + 02e3 Comet Lake AMT SOL Redirection + 02e8 Serial IO I2C Host Controller + 1028 09be Latitude 7410 + 02e9 Comet Lake Serial IO I2C Host Controller + 1028 09be Latitude 7410 + 02ea Comet Lake PCH-LP LPSS: I2C Controller #2 + 02ed Comet Lake PCH-LP USB 3.1 xHCI Host Controller + 1028 09be Latitude 7410 + 02ef Comet Lake PCH-LP Shared SRAM + 1028 09be Latitude 7410 + 02f0 Comet Lake PCH-LP CNVi WiFi + 8086 0034 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9560 160MHz 2x2 [Jefferson Peak] + 8086 0070 Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak] + 8086 0074 Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak] + 8086 0234 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9560 80MHz 2x2 [Jefferson Peak] + 8086 0264 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9461 80MHz 1x1 [Jefferson Peak] + 8086 02a4 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak] + 8086 4070 Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak] + 02f5 Comet Lake PCH-LP SCS3 + 02f9 Comet Lake Thermal Subsytem + 1028 09be Latitude 7410 + 02fc Comet Lake Integrated Sensor Solution + 1028 09be Latitude 7410 + 0309 80303 I/O Processor PCI-to-PCI Bridge + 030d 80312 I/O Companion Chip PCI-to-PCI Bridge + 0326 6700/6702PXH I/OxAPIC Interrupt Controller A + 103c 3208 ProLiant DL140 G2 + 1775 1100 CR11/VR11 Single Board Computer + 0327 6700PXH I/OxAPIC Interrupt Controller B + 103c 3208 ProLiant DL140 G2 + 1775 1100 CR11/VR11 Single Board Computer + 0329 6700PXH PCI Express-to-PCI Bridge A + 032a 6700PXH PCI Express-to-PCI Bridge B + 032c 6702PXH PCI Express-to-PCI Bridge A + 0330 80332 [Dobson] I/O processor (A-Segment Bridge) + 0331 80332 [Dobson] I/O processor (A-Segment IOAPIC) + 0332 80332 [Dobson] I/O processor (B-Segment Bridge) + 0333 80332 [Dobson] I/O processor (B-Segment IOAPIC) + 0334 80332 [Dobson] I/O processor (ATU) + 0335 80331 [Lindsay] I/O processor (PCI-X Bridge) + 0336 80331 [Lindsay] I/O processor (ATU) + 0340 41210 [Lanai] Serial to Parallel PCI Bridge (A-Segment Bridge) + 0341 41210 [Lanai] Serial to Parallel PCI Bridge (B-Segment Bridge) + 0370 80333 Segment-A PCIe Express to PCI-X bridge + 0371 80333 A-Bus IOAPIC + 0372 80333 Segment-B PCIe Express to PCI-X bridge + 0373 80333 B-Bus IOAPIC + 0374 80333 Address Translation Unit + 0402 Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller + 0406 Haswell Integrated Graphics Controller + 040a Xeon E3-1200 v3 Processor Integrated Graphics Controller + 0412 Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller + 1028 05d7 Alienware X51 R2 + 103c 1998 EliteDesk 800 G1 + 17aa 3098 ThinkCentre E73 + 17aa 309f ThinkCentre M83 + 0416 4th Gen Core Processor Integrated Graphics Controller + 17aa 220e ThinkPad T440p + 041a Xeon E3-1200 v3 Processor Integrated Graphics Controller + 041e 4th Generation Core Processor Family Integrated Graphics Controller + 0434 DH89XXCC Series QAT + 0435 DH895XCC Series QAT + 0436 DH8900CC Null Device + 0438 DH8900CC Series Gigabit Network Connection + 043a DH8900CC Series Gigabit Fiber Network Connection + 043c DH8900CC Series Gigabit Backplane Network Connection + 0440 DH8900CC Series Gigabit SFP Network Connection + 0442 DH89XXCC Series QAT Virtual Function + 0443 DH895XCC Series QAT Virtual Function + 0482 82375EB/SB PCI to EISA Bridge + 0483 82424TX/ZX [Saturn] CPU to PCI bridge + 0484 82378ZB/IB, 82379AB (SIO, SIO.A) PCI to ISA Bridge + 0486 82425EX/ZX [Aries] PCIset with ISA bridge + 04a3 82434LX/NX [Mercury/Neptune] Processor to PCI bridge + 04d0 82437FX [Triton FX] + 0500 E8870 Processor bus control + 0501 E8870 Memory controller +# and registers common to both SPs + 0502 E8870 Scalability Port 0 +# and global performance monitoring + 0503 E8870 Scalability Port 1 + 0510 E8870IO Hub Interface Port 0 registers (8-bit compatibility port) + 0511 E8870IO Hub Interface Port 1 registers + 0512 E8870IO Hub Interface Port 2 registers + 0513 E8870IO Hub Interface Port 3 registers + 0514 E8870IO Hub Interface Port 4 registers + 0515 E8870IO General SIOH registers + 0516 E8870IO RAS registers + 0530 E8870SP Scalability Port 0 registers + 0531 E8870SP Scalability Port 1 registers + 0532 E8870SP Scalability Port 2 registers + 0533 E8870SP Scalability Port 3 registers + 0534 E8870SP Scalability Port 4 registers + 0535 E8870SP Scalability Port 5 registers +# (bi-interleave 0) and global registers that are neither per-port nor per-interleave + 0536 E8870SP Interleave registers 0 and 1 +# (bi-interleave 1) + 0537 E8870SP Interleave registers 2 and 3 + 0600 RAID Controller + 8086 0136 SRCU31L + 8086 01af SRCZCR + 8086 01c1 ICP Vortex GDT8546RZ + 8086 01f7 SCRU32 +# uninitialized SRCU32 RAID Controller + 061f 80303 I/O Processor + 0684 H470 Chipset LPC/eSPI Controller + 0685 Z490 Chipset LPC/eSPI Controller + 0687 Q470 Chipset LPC/eSPI Controller + 068d Comet Lake LPC Controller + 06a3 Comet Lake PCH SMBus Controller + 06a4 Comet Lake PCH SPI Controller + 06a8 Comet Lake PCH Serial IO UART Host Controller #0 + 06a9 Comet Lake PCH Serial IO UART Host Controller #1 + 06aa Comet Lake PCH Serial IO SPI Controller #0 + 06ab Comet Lake PCH Serial IO SPI Controller #1 + 06ac Comet Lake PCI Express Root Port #21 + 06b0 Comet Lake PCI Express Root Port #9 + 06ba Comet Lake PCI Express Root Port #1 + 06bb Comet Lake PCI Express Root Port #4 + 06bd Comet Lake PCIe Port #6 + 06bf Comet Lake PCIe Port #8 + 06c0 Comet Lake PCI Express Root Port #17 + 06c8 Comet Lake PCH cAVS + 06d2 Comet Lake SATA AHCI Controller + 06d6 Comet Lake PCH-H RAID + 06d7 Comet Lake PCH-H RAID + 06e0 Comet Lake HECI Controller + 06e3 Comet Lake Keyboard and Text (KT) Redirection + 06e8 Comet Lake PCH Serial IO I2C Controller #0 + 06e9 Comet Lake PCH Serial IO I2C Controller #1 + 06ea Comet Lake PCH Serial IO I2C Controller #2 + 06eb Comet Lake PCH Serial IO I2C Controller #3 + 06ed Comet Lake USB 3.1 xHCI Host Controller + 06ef Comet Lake PCH Shared SRAM + 06f0 Comet Lake PCH CNVi WiFi + 1a56 1651 Dual Band Wi-Fi 6(802.11ax) Killer AX1650s 160MHz 2x2 [Cyclone Peak] + 1a56 1652 Dual Band Wi-Fi 6(802.11ax) Killer AX1650i 160MHz 2x2 [Cyclone Peak] + 8086 0034 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9560 160MHz 2x2 [Jefferson Peak] + 8086 0074 Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak] + 8086 02a4 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak] + 8086 42a4 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak] + 06f9 Comet Lake PCH Thermal Controller + 06fb Comet Lake PCH Serial IO SPI Controller #2 + 0700 CE Media Processor A/V Bridge + 0701 CE Media Processor NAND Flash Controller + 0703 CE Media Processor Media Control Unit 1 + 0704 CE Media Processor Video Capture Interface + 0707 CE Media Processor SPI Slave + 0708 Atom Processor CE 4100 + 0709 Atom Processor CE 4200 + 0800 Moorestown SPI Ctrl 0 + 0801 Moorestown SPI Ctrl 1 + 0802 Moorestown I2C 0 + 0803 Moorestown I2C 1 + 0804 Moorestown I2C 2 + 0805 Moorestown Keyboard Ctrl + 0806 Moorestown USB Ctrl + 0807 Moorestown SD Host Ctrl 0 + 0808 Moorestown SD Host Ctrl 1 + 0809 Moorestown NAND Ctrl + 080a Moorestown Audio Ctrl + 080b Moorestown ISP + 080c Moorestown Security Controller + 080d Moorestown External Displays + 080e Moorestown SCU IPC + 080f Moorestown GPIO Controller + 0810 Moorestown Power Management Unit + 0811 Moorestown OTG Ctrl + 0812 Moorestown SPI Ctrl 2 + 0813 Moorestown SC DMA + 0814 Moorestown LPE DMA + 0815 Moorestown SSP0 + 0817 Medfield Serial IO I2C Controller #3 + 0818 Medfield Serial IO I2C Controller #4 + 0819 Medfield Serial IO I2C Controller #5 + 081a Medfield GPIO Controller [Core] + 081b Medfield Serial IO HSUART Controller #1 + 081c Medfield Serial IO HSUART Controller #2 + 081d Medfield Serial IO HSUART Controller #3 + 081e Medfield Serial IO HSUART DMA Controller + 081f Medfield GPIO Controller [AON] + 0820 Medfield SD Host Controller + 0821 Medfield SDIO Controller #1 + 0822 Medfield SDIO Controller #2 + 0823 Medfield eMMC Controller #0 + 0824 Medfield eMMC Controller #1 + 0827 Medfield Serial IO DMA Controller + 0828 Medfield Power Management Unit + 0829 Medfield USB Device Controller (OTG) + 082a Medfield SCU IPC + 082c Medfield Serial IO I2C Controller #0 + 082d Medfield Serial IO I2C Controller #1 + 082e Medfield Serial IO I2C Controller #2 + 0885 Centrino Wireless-N + WiMAX 6150 + 8086 1305 Centrino Wireless-N + WiMAX 6150 BGN + 8086 1307 Centrino Wireless-N + WiMAX 6150 BG + 8086 1325 Centrino Wireless-N + WiMAX 6150 BGN + 8086 1327 Centrino Wireless-N + WiMAX 6150 BG + 0886 Centrino Wireless-N + WiMAX 6150 + 8086 1315 Centrino Wireless-N + WiMAX 6150 BGN + 8086 1317 Centrino Wireless-N + WiMAX 6150 BG + 0887 Centrino Wireless-N 2230 + 8086 4062 Centrino Wireless-N 2230 BGN + 8086 4462 Centrino Wireless-N 2230 BGN + 0888 Centrino Wireless-N 2230 + 8086 4262 Centrino Wireless-N 2230 BGN + 088e Centrino Advanced-N 6235 + 8086 4060 Centrino Advanced-N 6235 AGN + 8086 4460 Centrino Advanced-N 6235 AGN + 088f Centrino Advanced-N 6235 + 8086 4260 Centrino Advanced-N 6235 AGN + 0890 Centrino Wireless-N 2200 + 8086 4022 Centrino Wireless-N 2200 BGN + 8086 4422 Centrino Wireless-N 2200 BGN + 8086 4822 Centrino Wireless-N 2200 BGN + 0891 Centrino Wireless-N 2200 + 8086 4222 Centrino Wireless-N 2200 BGN + 0892 Centrino Wireless-N 135 + 8086 0062 Centrino Wireless-N 135 BGN + 8086 0462 Centrino Wireless-N 135 BGN + 0893 Centrino Wireless-N 135 + 8086 0262 Centrino Wireless-N 135 BGN + 0894 Centrino Wireless-N 105 + 8086 0022 Centrino Wireless-N 105 BGN + 8086 0422 Centrino Wireless-N 105 BGN + 8086 0822 Centrino Wireless-N 105 BGN + 0895 Centrino Wireless-N 105 + 8086 0222 Centrino Wireless-N 105 BGN + 0896 Centrino Wireless-N 130 + 8086 5005 Centrino Wireless-N 130 BGN + 8086 5007 Centrino Wireless-N 130 BG + 8086 5025 Centrino Wireless-N 130 BGN + 8086 5027 Centrino Wireless-N 130 BG + 0897 Centrino Wireless-N 130 + 8086 5015 Centrino Wireless-N 130 BGN + 8086 5017 Centrino Wireless-N 130 BG + 08a7 Quark SoC X1000 SDIO / eMMC Controller + 08ae Centrino Wireless-N 100 + 8086 1005 Centrino Wireless-N 100 BGN + 8086 1007 Centrino Wireless-N 100 BG + 8086 1025 Centrino Wireless-N 100 BGN + 8086 1027 Centrino Wireless-N 100 BG + 08af Centrino Wireless-N 100 + 8086 1015 Centrino Wireless-N 100 BGN + 8086 1017 Centrino Wireless-N 100 BG + 08b1 Wireless 7260 + 8086 4020 Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 402a Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 4060 Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 4062 Wireless-N 7260 [Wilkins Peak 2] + 8086 406a Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 4070 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 4072 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 4160 Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 4162 Wireless-N 7260 [Wilkins Peak 2] + 8086 4170 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 4420 Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 4460 Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 4462 Wireless-N 7260 [Wilkins Peak 2] + 8086 446a Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 4470 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 4472 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 4560 Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 4570 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 486e Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 4870 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 4a6c Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 4a6e Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 4a70 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 4c60 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 4c70 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 5070 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 5072 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 5170 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 5770 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 c020 Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 c02a Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 c060 Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 c062 Wireless-N 7260 [Wilkins Peak 2] + 8086 c06a Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 c070 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 c072 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 c160 Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 c162 Wireless-N 7260 [Wilkins Peak 2] + 8086 c170 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 c360 Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 c420 Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 c460 Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 c462 Wireless-N 7260 [Wilkins Peak 2] + 8086 c470 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 c472 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 c560 Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 c570 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 c760 Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 c770 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 cc60 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 cc70 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 08b2 Wireless 7260 + 8086 4220 Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 4260 Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 4262 Wireless-N 7260 [Wilkins Peak 2] + 8086 426a Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 4270 Wireless-N 7260 [Wilkins Peak 2] + 8086 4272 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 4360 Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 4370 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 c220 Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 c260 Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 c262 Wireless-N 7260 [Wilkins Peak 2] + 8086 c26a Dual Band Wireless-N 7260 [Wilkins Peak 2] + 8086 c270 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 c272 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 8086 c370 Dual Band Wireless-AC 7260 [Wilkins Peak 2] + 08b3 Wireless 3160 + 8086 0060 Dual Band Wireless-N 3160 [Wilkins Peak 1] + 8086 0062 Wireless-N 3160 [Wilkins Peak 1] + 8086 0070 Dual Band Wireless-AC 3160 [Wilkins Peak 1] + 8086 0072 Dual Band Wireless-AC 3160 [Wilkins Peak 1] + 8086 0170 Dual Band Wireless-AC 3160 [Wilkins Peak 1] + 8086 0172 Dual Band Wireless-AC 3160 [Wilkins Peak 1] + 8086 0260 Dual Band Wireless-N 3160 [Wilkins Peak 1] + 8086 0470 Dual Band Wireless-AC 3160 [Wilkins Peak 1] + 8086 0472 Dual Band Wireless-AC 3160 [Wilkins Peak 1] + 8086 1070 Dual Band Wireless-AC 3160 [Wilkins Peak 1] + 8086 1170 Dual Band Wireless-AC 3160 [Wilkins Peak 1] + 8086 8060 Dual Band Wireless N-3160 [Wilkins Peak 1] + 8086 8062 Wireless N-3160 [Wilkins Peak 1] + 8086 8070 Dual Band Wireless AC 3160 [Wilkins Peak 1] + 8086 8072 Dual Band Wireless AC 3160 [Wilkins Peak 1] + 8086 8170 Dual Band Wireless AC 3160 [Wilkins Peak 1] + 8086 8172 Dual Band Wireless AC 3160 [Wilkins Peak 1] + 8086 8470 Dual Band Wireless AC 3160 [Wilkins Peak 1] + 8086 8570 Dual Band Wireless AC 3160 [Wilkins Peak 1] + 08b4 Wireless 3160 + 8086 0270 Dual Band Wireless-AC 3160 [Wilkins Peak 1] + 8086 0272 Dual Band Wireless-AC 3160 [Wilkins Peak 1] + 8086 0370 Dual Band Wireless-AC 3160 [Wilkins Peak 1] + 8086 8260 Dual Band Wireless AC 3160 [Wilkins Peak 1] + 8086 8270 Dual Band Wireless AC 3160 [Wilkins Peak 1] + 8086 8272 Dual Band Wireless AC 3160 [Wilkins Peak 1] + 8086 8370 Dual Band Wireless AC 3160 [Wilkins Peak 1] +# PowerVR SGX 545 + 08cf Atom Processor Z2760 Integrated Graphics Controller + 0931 Atom Processor CE 2600 [Puma 6] + 0934 Quark SoC X1000 I2C Controller and GPIO Controller + 0935 Quark SoC X1000 SPI Controller + 0936 Quark SoC X1000 HS-UART + 0937 Quark SoC X1000 10/100 Ethernet MAC + 0939 Quark SoC X1000 USB EHCI Host Controller / USB 2.0 Device + 093a Quark SoC X1000 USB OHCI Host Controller + 0953 PCIe Data Center SSD + 8086 3702 DC P3700 SSD + 8086 3703 DC P3700 SSD [2.5" SFF] + 8086 3704 DC P3500 SSD [Add-in Card] + 8086 3705 DC P3500 SSD [2.5" SFF] + 8086 3709 DC P3600 SSD [Add-in Card] + 8086 370a DC P3600 SSD [2.5" SFF] + 8086 370d SSD 750 Series [Add-in Card] + 8086 370e SSD 750 Series [2.5" SFF] + 0958 Quark SoC X1000 Host Bridge + 095a Wireless 7265 + 8086 1010 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] + 8086 5000 Dual Band Wireless-N 7265 [Stone Peak 2 AGN] + 8086 5002 Wireless-N 7265 [Stone Peak 2 BGN] + 8086 500a Dual Band Wireless-N 7265 [Stone Peak 2 AGN] + 8086 5010 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] + 8086 5012 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] + 8086 5020 Dual Band Wireless-N 7265 [Stone Peak 2 AGN] + 8086 502a Dual Band Wireless-N 7265 [Stone Peak 2 AGN] + 8086 5090 Dual Band Wireless-AC 7265 [Maple Peak AC] + 8086 5100 Dual Band Wireless-AC 7265 [Stone Peak 2 AGN] + 8086 5102 Wireless-N 7265 [Stone Peak 2 BGN] + 8086 510a Dual Band Wireless-AC 7265 [Stone Peak 2 AGN] + 8086 5110 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] + 8086 5112 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] + 8086 5190 Dual Band Wireless-AC 7265 [Maple Peak AC] + 8086 5400 Dual Band Wireless-AC 7265 [Stone Peak 2 AGN] + 8086 5410 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] + 8086 5412 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] + 8086 5420 Dual Band Wireless-N 7265 [Stone Peak 2 AGN] + 8086 5490 Dual Band Wireless-AC 7265 [Maple Peak AC] + 8086 5510 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] + 8086 5590 Dual Band Wireless-AC 7265 [Maple Peak AC] + 8086 9000 Dual Band Wireless-AC 7265 [Stone Peak 2 AGN] + 8086 900a Dual Band Wireless-AC 7265 [Stone Peak 2 AGN] + 8086 9010 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] + 8086 9012 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] + 8086 9110 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] + 8086 9112 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] + 8086 9210 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] + 8086 9310 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] + 8086 9400 Dual Band Wireless-AC 7265 [Stone Peak 2 AGN] + 8086 9410 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] + 8086 9510 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] + 095b Wireless 7265 + 8086 5200 Dual Band Wireless-N 7265 [Stone Peak 2 AGN] + 8086 5202 Wireless-N 7265 [Stone Peak 2 BGN] + 8086 520a Dual Band Wireless-N 7265 [Stone Peak 2 AGN] + 8086 5210 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] + 8086 5212 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] + 8086 5290 Dual Band Wireless-AC 7265 [Maple Peak AC] + 8086 5302 Wireless-N 7265 [Stone Peak 2 BGN] + 8086 5310 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] + 8086 9200 Dual Band Wireless-AC 7265 [Stone Peak 2 AGN] + 095e Quark SoC X1000 Legacy Bridge + 0960 80960RP (i960RP) Microprocessor/Bridge + 0962 80960RM (i960RM) Bridge + 0964 80960RP (i960RP) Microprocessor/Bridge + 0975 Optane NVME SSD H10 with Solid State Storage [Teton Glacier] + 0998 Ice Lake IEH + 09a2 Ice Lake Memory Map/VT-d + 09a3 Ice Lake RAS + 09a4 Ice Lake Mesh 2 PCIe + 09a6 Ice Lake MSM + 09a7 Ice Lake PMON MSM + 09ab RST VMD Managed Controller + 09ad Optane NVME SSD H20 with Solid State Storage [Pyramid Glacier] + 09c4 PAC with Intel Arria 10 GX FPGA + 0a03 Haswell-ULT Thermal Subsystem + 0a04 Haswell-ULT DRAM Controller + 17aa 2214 ThinkPad X240 + 0a06 Haswell-ULT Integrated Graphics Controller + 0a0c Haswell-ULT HD Audio Controller + 17aa 2214 ThinkPad X240 + 0a16 Haswell-ULT Integrated Graphics Controller + 17aa 2214 ThinkPad X240 + 0a22 Haswell-ULT Integrated Graphics Controller + 0a26 Haswell-ULT Integrated Graphics Controller + 0a2a Haswell-ULT Integrated Graphics Controller + 0a2e Haswell-ULT Integrated Graphics Controller + 0a53 DC P3520 SSD + 0a54 NVMe Datacenter SSD [3DNAND, Beta Rock Controller] + 1028 1fe1 Express Flash NVMe 1TB 2.5" U.2 (P4500) + 1028 1fe2 Express Flash NVMe 2TB 2.5" U.2 (P4500) + 1028 1fe3 Express Flash NVMe 4TB 2.5" U.2 (P4500) + 1028 1fe4 Express Flash NVMe 4TB HHHL AIC (P4500) + 1028 1fee Express Flash NVMe 1.6TB 2.5" U.2 (P4610) + 1028 1fef Express Flash NVMe 3.2TB 2.5" U.2 (P4610) + 1028 1ff0 Express Flash NVMe 6.4TB 2.5" U.2 (P4610) + 1028 1fff Express Flash NVMe 8.0TB 2.5" U.2 (P4510) + 1028 2003 Express Flash NVMe 1.0 TB 2.5" U.2 (P4510) + 1028 2004 Express Flash NVMe 2.0TB 2.5" U.2 (P4510) + 1028 2005 Express Flash NVMe 4.0TB 2.5" U.2 (P4510) + 108e 4870 NVMe PCIe 3.0 SSD 6.4TB AIC (P4608) + 108e 4871 NVMe PCIe 3.0 SSD 6.4TB 2.5-inch (P4600) + 108e 4879 NVMe PCIe 3.0 SSD v2 6.4TB AIC (P4618) + 108e 487a NVMe PCIe 3.0 SSD v2 6.4TB 2.5-inch (P4610) + 1137 0227 NVMe Datacenter SSD [3DNAND] 1.6TB 2.5" U.2 (P4600) + 1137 0228 NVMe Datacenter SSD [3DNAND] 2.0TB 2.5" U.2 (P4600) + 1137 0229 NVMe Datacenter SSD [3DNAND] 3.2TB 2.5" U.2 (P4600) + 1137 022b NVMe Datacenter SSD [3DNAND] 1.0TB 2.5" U.2 (P4500) + 1137 022c NVMe Datacenter SSD [3DNAND] 2.0TB 2.5" U.2 (P4500) + 1137 022d NVMe Datacenter SSD [3DNAND] 4.0TB 2.5" U.2 (P4500) + 1137 0231 NVMe Datacenter SSD [3DNAND] 0.5TB 2.5" U.2 (P4501) + 1137 0232 NVMe Datacenter SSD [3DNAND] 1.0TB 2.5" U.2 (P4501) + 1137 0233 NVMe Datacenter SSD [3DNAND] 2.0TB 2.5" U.2 (P4501) + 1137 0258 NVMe Datacenter SSD [3DNAND] 1.6TB 2.5" U.2 (P4610) + 1137 025a NVMe Datacenter SSD [3DNAND] 3.2TB 2.5" U.2 (P4610) + 1137 025b NVMe Datacenter SSD [3DNAND] 1.0TB 2.5" U.2 (P4510) + 1137 025c NVMe Datacenter SSD [3DNAND] 2.0TB 2.5" U.2 (P4510) + 1137 025d NVMe Datacenter SSD [3DNAND] 4.0TB 2.5" U.2 (P4510) + 1137 025e NVMe Datacenter SSD [3DNAND] 8.0TB 2.5" U.2 (P4510) + 1590 025d NVMe Datacenter SSD [3DNAND] 1.0TB 2.5" U.2 (P4500) + 1590 025e NVMe Datacenter SSD [3DNAND] 2.0TB 2.5" U.2 (P4500) + 1590 025f NVMe Datacenter SSD [3DNAND] 4.0TB 2.5" U.2 (P4500) + 1590 0262 NVMe Datacenter SSD [3DNAND] 1.6TB 2.5" U.2 (P4600) + 1590 0264 NVMe Datacenter SSD [3DNAND] 3.2TB 2.5" U.2 (P4600) + 1590 0265 NVMe Datacenter SSD [3DNAND] 6.4TB 2.5" U.2 (P4600) + 1590 026c NVMe Datacenter SSD [3DNAND] 4.0TB AIC (P4500) + 1d49 4702 Thinksystem Intel P4500 NVMe U.2 + 1d49 4704 Thinksystem Intel P4500 NVMe AIC + 1d49 4712 Thinksystem Intel P4600 NVMe U.2 + 1d49 4714 Thinksystem Intel P4600 NVMe AIC + 1d49 4802 Thinksystem U.2 P4510 NVMe SSD + 1d49 4812 Thinksystem U.2 P4610 NVMe SSD + 8086 4308 SSD D5-P4320 and D5-P4326 + 8086 4702 NVMe Datacenter SSD [3DNAND] SE 2.5" U.2 (P4500) + 8086 4704 NVMe Datacenter SSD [3DNAND] SE AIC (P4500) + 8086 4712 NVMe Datacenter SSD [3DNAND] ME 2.5" U.2 (P4600) + 8086 4714 NVMe Datacenter SSD [3DNAND] ME AIC (P4600) + 8086 4802 NVMe Datacenter SSD [3DNAND] SE 2.5" U.2 (P4510) + 8086 4804 NVMe Datacenter SSD [3DNAND] SE AIC (P4510) + 8086 4805 NVMe Datacenter SSD [3DNAND] SE M.2 (P4511) + 8086 4812 NVMe Datacenter SSD [3DNAND] ME 2.5" U.2 (P4610) + 8086 4814 NVMe Datacenter SSD [3DNAND] ME AIC (P4610) + 0a55 NVMe DC SSD [3DNAND, Beta Rock Controller] + 1028 1fe5 Express Flash NVMe 1.6TB 2.5" U.2 (P4600) + 1028 1fe6 Express Flash NVMe 2TB 2.5" U.2 (P4600) + 1028 1fe7 Express Flash NVMe 3.2TB 2.5" U.2 (P4600) + 1028 1fe8 Express Flash NVMe 2.0TB HHHL AIC (P4600) + 1028 1fe9 Express Flash NVMe 4.0TB HHHL AIC (P4600) + 0b00 Ice Lake CBDMA [QuickData Technology] + 0b26 Thunderbolt 4 Bridge [Goshen Ridge 2020] + 0b27 Thunderbolt 4 USB Controller [Goshen Ridge 2020] + 0b2b PAC with Intel Stratix 10 SX FPGA [FPGA PAC D5005] + 0b60 NVMe DC SSD [3DNAND, Sentinel Rock Controller] + 1028 2060 NVMe SED MU U.2 1.6TB (P5600) + 1028 2061 NVMe SED MU U.2 3.2TB (P5600) + 1028 2062 NVMe SED MU U.2 6.4TB (P5600) + 1028 2064 NVMe SED RI U.2 1.92TB (P5500) + 1028 2065 NVMe SED RI U.2 3.84TB (P5500) + 1028 2066 NVMe SED RI U.2 7.68TB (P5500) + 1028 209e NVMe MU U.2 1.6TB (P5600) + 1028 209f NVMe MU U.2 3.2TB (P5600) + 1028 2100 NVMe MU U.2 6.4TB (P5600) + 1028 2102 NVMe RI U.2 1.92TB (P5500) + 1028 2103 NVMe RI U.2 3.84TB (P5500) + 1028 2104 NVMe RI U.2 7.68TB (P5500) + 1028 219a NVMe P5316 RI 15.36TB + 1028 219b NVMe P5316 RI 30.72TB + 1028 219c NVMe SED P5316 RI 15.36 + 1028 219d NVMe SED P5316 RI 30.72 + 1028 219e NVMe FIPS P5316 RI 15.36TB + 1028 219f NVMe FIPS P5316 RI 30.72 + 8086 8008 NVMe Datacenter SSD [3DNAND] SE 2.5" U.2 (P5510) + 8086 8d08 NVMe Datacenter SSD [3DNAND] VE 2.5" U.2 (P5316) + 8086 8d1d NVMe Datacenter SSD [3DNAND] VE E1.L 9.5/18mm (P5316) + 8086 c008 NVMe Datacenter SSD [3DNAND] SE U.2 15mm (P5530) + 0b69 Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1450] + 0b6e Ponte Vecchio XT (1 Tile) [Data Center GPU Max 1100C] + 0bd0 Ponte Vecchio XL (2 Tile) + 0bd4 Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1550VG] + 0bd5 Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1550] + 0bd6 Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1550] + 0bd7 Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1350] + 0bd8 Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1350] + 0bd9 Ponte Vecchio XT (1 Tile) [Data Center GPU Max 1100] + 0bda Ponte Vecchio XT (1 Tile) [Data Center GPU Max 1100] + 0bdb Ponte Vecchio XT (1 Tile) [Data Center GPU Max 1100] + 0be0 Atom Processor D2xxx/N2xxx Integrated Graphics Controller + 0be1 Atom Processor D2xxx/N2xxx Integrated Graphics Controller + 105b 0d7c D270S/D250S Motherboard + 0be2 Atom Processor D2xxx/N2xxx Integrated Graphics Controller + 0be3 Atom Processor D2xxx/N2xxx Integrated Graphics Controller + 0be4 Atom Processor D2xxx/N2xxx Integrated Graphics Controller + 0be5 Atom Processor D2xxx/N2xxx Integrated Graphics Controller + 0be6 Atom Processor D2xxx/N2xxx Integrated Graphics Controller + 0be7 Atom Processor D2xxx/N2xxx Integrated Graphics Controller + 0be8 Atom Processor D2xxx/N2xxx Integrated Graphics Controller + 0be9 Atom Processor D2xxx/N2xxx Integrated Graphics Controller + 0bea Atom Processor D2xxx/N2xxx Integrated Graphics Controller + 0beb Atom Processor D2xxx/N2xxx Integrated Graphics Controller + 0bec Atom Processor D2xxx/N2xxx Integrated Graphics Controller + 0bed Atom Processor D2xxx/N2xxx Integrated Graphics Controller + 0bee Atom Processor D2xxx/N2xxx Integrated Graphics Controller + 0bef Atom Processor D2xxx/N2xxx Integrated Graphics Controller + 0bf0 Atom Processor D2xxx/N2xxx DRAM Controller + 0bf1 Atom Processor D2xxx/N2xxx DRAM Controller + 0bf2 Atom Processor D2xxx/N2xxx DRAM Controller + 0bf3 Atom Processor D2xxx/N2xxx DRAM Controller + 0bf4 Atom Processor D2xxx/N2xxx DRAM Controller + 0bf5 Atom Processor D2xxx/N2xxx DRAM Controller + 105b 0d7c D270S/D250S Motherboard + 0bf6 Atom Processor D2xxx/N2xxx DRAM Controller + 0bf7 Atom Processor D2xxx/N2xxx DRAM Controller + 0c00 4th Gen Core Processor DRAM Controller + 1028 05d7 Alienware X51 R2 + 103c 1998 EliteDesk 800 G1 + 17aa 3098 ThinkCentre E73 + 17aa 309f ThinkCentre M83 + 0c01 Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller + 0c04 Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller + 103c 1909 ZBook 15 + 17aa 220e ThinkPad T440p + 0c05 Xeon E3-1200 v3/4th Gen Core Processor PCI Express x8 Controller + 0c08 Xeon E3-1200 v3 Processor DRAM Controller + 0c09 Xeon E3-1200 v3/4th Gen Core Processor PCI Express x4 Controller + 0c0c Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller + 103c 1998 EliteDesk 800 G1 + 17aa 220e ThinkPad T440p + 17aa 309f ThinkCentre M83 + 0c40 Atom Processor CE 5300 + 0c46 Atom Processor S1200 PCI Express Root Port 1 + 0c47 Atom Processor S1200 PCI Express Root Port 2 + 0c48 Atom Processor S1200 PCI Express Root Port 3 + 0c49 Atom Processor S1200 PCI Express Root Port 4 + 0c4e Atom Processor S1200 NTB Primary + 0c50 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QuickData Technology Device + 0c51 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QuickData Technology Device + 0c52 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QuickData Technology Device + 0c53 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QuickData Technology Device + 0c54 Atom Processor S1200 Internal + 0c55 Atom Processor S1200 DFX 1 + 0c56 Atom Processor S1200 DFX 2 + 0c59 Atom Processor S1200 SMBus 2.0 Controller 0 + 0c5a Atom Processor S1200 SMBus 2.0 Controller 1 + 0c5b Atom Processor S1200 SMBus Controller 2 + 0c5c Atom Processor S1200 SMBus Controller 3 + 0c5d Atom Processor S1200 SMBus Controller 4 + 0c5e Atom Processor S1200 SMBus Controller 5 + 0c5f Atom Processor S1200 UART + 0c60 Atom Processor S1200 Integrated Legacy Bus + 0c70 Atom Processor S1200 Internal + 0c71 Atom Processor S1200 Internal + 0c72 Atom Processor S1200 Internal + 0c73 Atom Processor S1200 Internal + 0c74 Atom Processor S1200 Internal + 0c75 Atom Processor S1200 Internal + 0c76 Atom Processor S1200 Internal + 0c77 Atom Processor S1200 Internal + 0c78 Atom Processor S1200 Internal + 0c79 Atom Processor S1200 Internal + 0c7a Atom Processor S1200 Internal + 0c7b Atom Processor S1200 Internal + 0c7c Atom Processor S1200 Internal + 0c7d Atom Processor S1200 Internal + 0c7e Atom Processor S1200 Internal + 0c7f Atom Processor S1200 Internal + 0cf8 Ethernet Controller X710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking + 8086 0000 Ethernet Controller X710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking + 8086 0001 Ethernet Controller X710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking + 0d00 Crystal Well DRAM Controller + 0d01 Crystal Well PCI Express x16 Controller + 0d04 Crystal Well DRAM Controller + 0d05 Crystal Well PCI Express x8 Controller + 0d09 Crystal Well PCI Express x4 Controller + 0d0c Crystal Well HD Audio Controller + 0d16 Crystal Well Integrated Graphics Controller + 0d26 Crystal Well Integrated Graphics Controller + 0d36 Crystal Well Integrated Graphics Controller + 0d4c Ethernet Connection (11) I219-LM + 0d4d Ethernet Connection (11) I219-V + 8086 0d4d Ethernet Connection (11) I219-V + 0d4e Ethernet Connection (10) I219-LM + 0d4f Ethernet Connection (10) I219-V + 0d53 Ethernet Connection (12) I219-LM + 0d55 Ethernet Connection (12) I219-V + 0d58 Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking + 8086 0000 Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking + 8086 0001 Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking + 0d9f Ethernet Controller I225-IT + 0dc5 Ethernet Connection (23) I219-LM + 1028 0c06 Precision 3580 + 0dc6 Ethernet Connection (23) I219-V + 0dcd Ethernet Connection C825-X + 0dd2 Ethernet Network Adapter I710 + 1137 0000 I710T4LG 4x1 GbE RJ45 PCIe NIC + 1137 02e3 I710T4LG 4x1 GbE RJ45 PCIe NIC + 8086 0000 Ethernet Network Adapter I710-T4L + 8086 000d Ethernet Network Adapter I710-T4L + 8086 0010 Ethernet Network Adapter I710-T4L for OCP 3.0 + 8086 401a Ethernet Network Adapter I710-T4L + 8086 401b Ethernet Network Adapter I710-T4L for OCP 3.0 + 0dd5 Ethernet Adaptive Virtual Function + 0dda Ethernet Connection X722 for 10GbE SFP+ + 1bd4 0076 Ethernet Connection F102IX722 for 10GbE SFP + 1bd4 0082 Ethernet Connection F102IX722 for 10GbE SFP + 0e00 Xeon E7 v2/Xeon E5 v2/Core i7 DMI2 + 1028 04f7 Xeon E5 v2 on PowerEdge R320 server + 15d9 066b X9SRL-F + 0e01 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port in DMI2 Mode + 0e02 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 1a + 1028 04f7 Xeon E5 v2 on PowerEdge R320 server + 0e03 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 1b + 0e04 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2a + 0e05 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2b + 0e06 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2c + 0e07 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2d + 0e08 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3a + 1028 04f7 Xeon E5 v2 on PowerEdge R320 server + 0e09 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3b + 0e0a Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3c + 0e0b Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3d + 0e10 Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers + 0e13 Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers + 0e17 Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers + 0e18 Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers + 0e1c Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers + 0e1d Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe + 0e1e Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers + 0e1f Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers + 0e20 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 0 + 1028 04f7 Xeon E5 v2 on PowerEdge R320 server + 15d9 066b X9SRL-F + 0e21 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 1 + 1028 04f7 Xeon E5 v2 on PowerEdge R320 server + 15d9 066b X9SRL-F + 0e22 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 2 + 1028 04f7 Xeon E5 v2 on PowerEdge R320 server + 15d9 066b X9SRL-F + 0e23 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 3 + 1028 04f7 Xeon E5 v2 on PowerEdge R320 server + 15d9 066b X9SRL-F + 0e24 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 4 + 1028 04f7 Xeon E5 v2 on PowerEdge R320 server + 15d9 066b X9SRL-F + 0e25 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 5 + 1028 04f7 Xeon E5 v2 on PowerEdge R320 server + 15d9 066b X9SRL-F + 0e26 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 6 + 1028 04f7 Xeon E5 v2 on PowerEdge R320 server + 15d9 066b X9SRL-F + 0e27 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 7 + 1028 04f7 Xeon E5 v2 on PowerEdge R320 server + 15d9 066b X9SRL-F + 0e28 Xeon E7 v2/Xeon E5 v2/Core i7 VTd/Memory Map/Misc + 1028 04f7 Xeon E5 v2 on PowerEdge R320 server + 15d9 066b X9SRL-F + 0e29 Xeon E7 v2/Xeon E5 v2/Core i7 Memory Hotplug + 0e2a Xeon E7 v2/Xeon E5 v2/Core i7 IIO RAS + 1028 04f7 Xeon E5 v2 on PowerEdge R320 server + 15d9 066b X9SRL-F + 0e2c Xeon E7 v2/Xeon E5 v2/Core i7 IOAPIC + 15d9 066b X9SRL-F + 0e2e Xeon E7 v2/Xeon E5 v2/Core i7 CBDMA + 0e2f Xeon E7 v2/Xeon E5 v2/Core i7 CBDMA + 0e30 Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 0 + 1028 04f7 Xeon E5 v2 on PowerEdge R320 server + 0e32 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 0 + 0e33 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1 + 0e34 Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe + 1028 04f7 Xeon E5 v2 on PowerEdge R320 server + 0e36 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring + 1028 04f7 Xeon E5 v2 on PowerEdge R320 server + 0e37 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring + 0e38 Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 1 + 0e3a Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 2 + 0e3e Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring + 0e3f Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring + 0e40 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 2 + 0e41 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers + 0e43 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 2 + 0e44 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 2 + 0e45 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register + 0e47 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register + 0e60 Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 1 + 0e68 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Target Address/Thermal Registers + 0e6a Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers + 0e6b Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers + 0e6c Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers + 0e6d Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers + 0e71 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 RAS Registers + 0e74 Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe + 0e75 Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe + 0e77 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers + 0e79 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 RAS Registers + 0e7d Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers + 0e7f Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers + 0e80 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 0 + 0e81 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers + 1028 04f7 Xeon E5 v2 on PowerEdge R320 server + 0e83 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 0 + 0e84 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 0 + 0e85 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register + 0e87 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Registers + 0e90 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1 + 0e93 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1 + 0e94 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 1 + 0e95 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register + 0ea0 Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 0 + 1028 04f7 Xeon E5 v2 on PowerEdge R320 server + 0ea8 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Target Address/Thermal Registers + 0eaa Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers + 0eab Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers + 0eac Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers + 0ead Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers + 0eae Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers + 0eaf Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers + 0eb0 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 0 + 0eb1 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 1 + 0eb2 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 0 + 0eb3 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 1 + 0eb4 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 2 + 0eb5 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 3 + 0eb6 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 2 + 0eb7 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 3 + 0ebc Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers + 0ebe Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers + 0ebf Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers + 0ec0 Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 0 + 0ec1 Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 1 + 0ec2 Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 2 + 0ec3 Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 3 + 0ec4 Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 4 + 0ec8 Xeon E7 v2/Xeon E5 v2/Core i7 System Address Decoder + 0ec9 Xeon E7 v2/Xeon E5 v2/Core i7 Broadcast Registers + 0eca Xeon E7 v2/Xeon E5 v2/Core i7 Broadcast Registers + 0ed8 Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO + 0ed9 Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO + 0edc Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO + 0edd Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO + 0ede Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO + 0edf Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO + 0ee0 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers + 0ee1 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers + 0ee2 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers + 0ee3 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers + 0ee4 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers + 0ee5 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers + 0ee6 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers + 0ee7 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers + 0ee8 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers + 0ee9 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers + 0eea Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers + 0eeb Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers + 0eec Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers + 0eed Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers + 0eee Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers + 0ef0 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 0 + 0ef1 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 1 + 0ef2 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 0 + 0ef3 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 1 + 0ef4 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 2 + 0ef5 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 3 + 0ef6 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 2 + 0ef7 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 3 + 0ef8 Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO + 0ef9 Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO + 0efa Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO + 0efb Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO + 0efc Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO + 0efd Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO + 0f00 Atom Processor Z36xxx/Z37xxx Series SoC Transaction Register + 0f04 Atom Processor Z36xxx/Z37xxx Series High Definition Audio Controller + 0f06 Atom Processor Z36xxx/Z37xxx Series LPIO1 DMA Controller + 0f08 Atom Processor Z36xxx/Z37xxx Series LPIO1 PWM Controller + 0f09 Atom Processor Z36xxx/Z37xxx Series LPIO1 PWM Controller + 0f0a Atom Processor Z36xxx/Z37xxx Series LPIO1 HSUART Controller #1 + 0f0c Atom Processor Z36xxx/Z37xxx Series LPIO1 HSUART Controller #2 + 0f0e Atom Processor Z36xxx/Z37xxx Series LPIO1 SPI Controller + 0f12 Atom Processor E3800/CE2700 Series SMBus Controller + 0f14 Atom Processor Z36xxx/Z37xxx Series SDIO Controller + 0f15 Atom Processor Z36xxx/Z37xxx Series SDIO Controller + 0f16 Atom Processor Z36xxx/Z37xxx Series SDIO Controller + 0f18 Atom Processor Z36xxx/Z37xxx Series Trusted Execution Engine + 0f1c Atom Processor Z36xxx/Z37xxx Series Power Control Unit + 0f20 Atom Processor E3800 Series SATA IDE Controller + 0f21 Atom Processor E3800 Series SATA IDE Controller + 0f22 Atom Processor E3800 Series SATA AHCI Controller + 0f23 Atom Processor E3800 Series SATA AHCI Controller + 0f28 Atom Processor Z36xxx/Z37xxx Series LPE Audio Controller + 0f31 Atom Processor Z36xxx/Z37xxx Series Graphics & Display + 0f34 Atom Processor Z36xxx/Z37xxx Series USB EHCI + 0f35 Atom Processor Z36xxx/Z37xxx, Celeron N2000 Series USB xHCI + 1025 0936 Aspire ES1 + 0f37 Atom Processor Z36xxx/Z37xxx Series OTG USB Device + 0f38 Atom Processor Z36xxx/Z37xxx Series Camera ISP + 0f40 Atom Processor Z36xxx/Z37xxx Series LPIO2 DMA Controller + 0f41 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #1 + 0f42 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #2 + 0f43 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #3 + 0f44 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #4 + 0f45 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #5 + 0f46 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #6 + 0f47 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #7 + 0f48 Atom Processor E3800 Series PCI Express Root Port 1 + 0f4a Atom Processor E3800 Series PCI Express Root Port 2 + 0f4c Atom Processor E3800 Series PCI Express Root Port 3 + 0f4e Atom Processor E3800 Series PCI Express Root Port 4 + 0f50 Atom Processor E3800 Series eMMC 4.5 Controller + 1000 82542 Gigabit Ethernet Controller (Fiber) + 0e11 b0df NC6132 Gigabit Ethernet Adapter (1000-SX) + 0e11 b0e0 NC6133 Gigabit Ethernet Adapter (1000-LX) + 0e11 b123 NC6134 Gigabit Ethernet Adapter (1000-LX) + 1014 0119 Netfinity Gigabit Ethernet SX Adapter + 8086 1000 PRO/1000 Gigabit Server Adapter + 1001 82543GC Gigabit Ethernet Controller (Fiber) + 0e11 004a NC6136 Gigabit Server Adapter + 1014 01ea Netfinity Gigabit Ethernet SX Adapter + 8086 1002 PRO/1000 F Server Adapter + 8086 1003 PRO/1000 F Server Adapter + 1002 Pro 100 LAN+Modem 56 Cardbus II + 8086 200e Pro 100 LAN+Modem 56 Cardbus II + 8086 2013 Pro 100 SR Mobile Combo Adapter + 8086 2017 Pro 100 S Combo Mobile Adapter + 1004 82543GC Gigabit Ethernet Controller (Copper) + 0e11 0049 NC7132 Gigabit Upgrade Module + 0e11 b1a4 NC7131 Gigabit Server Adapter + 1014 10f2 Gigabit Ethernet Server Adapter + 8086 1004 PRO/1000 T Server Adapter + 8086 2004 PRO/1000 T Server Adapter + 1008 82544EI Gigabit Ethernet Controller (Copper) + 1014 0269 iSeries 1000/100/10 Ethernet Adapter + 1028 011b PowerEdge 1650/2550 + 1028 011c PRO/1000 XT Network Connection + 8086 1107 PRO/1000 XT Server Adapter + 8086 2107 PRO/1000 XT Server Adapter + 8086 2110 PRO/1000 XT Desktop Adapter + 8086 3108 PRO/1000 XT Network Connection + 1009 82544EI Gigabit Ethernet Controller (Fiber) + 1014 0268 iSeries Gigabit Ethernet Adapter + 8086 1109 PRO/1000 XF Server Adapter + 8086 2109 PRO/1000 XF Server Adapter + 100a 82540EM Gigabit Ethernet Controller + 100c 82544GC Gigabit Ethernet Controller (Copper) + 8086 1112 PRO/1000 T Desktop Adapter + 8086 2112 PRO/1000 T Desktop Adapter + 100d 82544GC Gigabit Ethernet Controller (LOM) + 1028 0123 PRO/1000 XT Network Connection + 1079 891f 82544GC Based Network Connection + 4c53 1080 CT8 mainboard + 8086 110d 82544GC Based Network Connection + 100e 82540EM Gigabit Ethernet Controller + 1014 0265 PRO/1000 MT Network Connection + 1014 0267 PRO/1000 MT Network Connection + 1014 026a PRO/1000 MT Network Connection + 1028 002e Optiplex GX260 + 1028 0134 PowerEdge 600SC + 1028 0151 Optiplex GX270 + 107b 8920 PRO/1000 MT Desktop Adapter + 1af4 1100 QEMU Virtual Machine + 8086 001e PRO/1000 MT Desktop Adapter + 8086 002e PRO/1000 MT Desktop Adapter + 8086 1376 PRO/1000 GT Desktop Adapter + 8086 1476 PRO/1000 GT Desktop Adapter + 100f 82545EM Gigabit Ethernet Controller (Copper) + 1014 0269 iSeries 1000/100/10 Ethernet Adapter + 1014 028e PRO/1000 MT Network Connection + 15ad 0750 PRO/1000 MT Single Port Adapter + 8086 1000 PRO/1000 MT Network Connection + 8086 1001 PRO/1000 MT Server Adapter + 1010 82546EB Gigabit Ethernet Controller (Copper) + 0e11 00db NC7170 Gigabit Server Adapter + 1014 027c PRO/1000 MT Dual Port Network Adapter + 15ad 0760 PRO/1000 MT Dual Port Adapter + 18fb 7872 RESlink-X + 1fc1 0026 Niagara 2260 Bypass Card + 4c53 1080 CT8 mainboard + 4c53 10a0 CA3/CR3 mainboard + 8086 1011 PRO/1000 MT Dual Port Server Adapter + 8086 1012 PRO/1000 MT Dual Port Server Adapter + 8086 101a PRO/1000 MT Dual Port Network Connection + 8086 3424 SE7501HG2 Mainboard + 1011 82545EM Gigabit Ethernet Controller (Fiber) + 1014 0268 iSeries Gigabit Ethernet Adapter + 8086 1002 PRO/1000 MF Server Adapter + 8086 1003 PRO/1000 MF Server Adapter (LX) + 1012 82546EB Gigabit Ethernet Controller (Fiber) + 0e11 00dc NC6170 Gigabit Server Adapter + 8086 1012 PRO/1000 MF Dual Port Server Adapter + 1013 82541EI Gigabit Ethernet Controller + 8086 0013 PRO/1000 MT Network Connection + 8086 1013 PRO/1000 MT Network Connection + 8086 1113 PRO/1000 MT Desktop Adapter + 1014 82541ER Gigabit Ethernet Controller + 8086 0014 PRO/1000 MT Desktop Connection + 8086 1014 PRO/1000 MT Network Connection + 1015 82540EM Gigabit Ethernet Controller (LOM) + 8086 1015 PRO/1000 MT Mobile Connection + 1016 82540EP Gigabit Ethernet Controller (Mobile) + 1014 052c PRO/1000 MT Mobile Connection + 1179 0001 PRO/1000 MT Mobile Connection + 8086 1016 PRO/1000 MT Mobile Connection + 1017 82540EP Gigabit Ethernet Controller + 8086 1017 PR0/1000 MT Desktop Connection + 1018 82541EI Gigabit Ethernet Controller + 8086 1018 PRO/1000 MT Mobile Connection + 1019 82547EI Gigabit Ethernet Controller + 1458 1019 GA-8IPE1000 Pro2 motherboard (865PE) + 1458 e000 Intel Gigabit Ethernet (Kenai II) + 8086 1019 PRO/1000 CT Desktop Connection + 8086 301f D865PERL mainboard + 8086 3025 D875PBZ motherboard + 8086 302c D865GBF Mainboard + 8086 3427 S875WP1-E mainboard + 101a 82547EI Gigabit Ethernet Controller (Mobile) + 8086 101a PRO/1000 CT Mobile Connection + 101d 82546EB Gigabit Ethernet Controller + 8086 1000 PRO/1000 MT Quad Port Server Adapter + 101e 82540EP Gigabit Ethernet Controller (Mobile) + 1014 0549 Thinkpad + 1179 0001 PRO/1000 MT Mobile Connection + 8086 101e PRO/1000 MT Mobile Connection + 101f Ethernet Controller V710 for 5GBASE-T + 1026 82545GM Gigabit Ethernet Controller + 1028 0168 Precision Workstation 670 Mainboard + 1028 0169 Precision 470 + 8086 1000 PRO/1000 MT Server Connection + 8086 1001 PRO/1000 MT Server Adapter + 8086 1002 PRO/1000 MT Server Adapter + 8086 1003 PRO/1000 GT Server Adapter + 8086 1026 PRO/1000 MT Server Connection + 1027 82545GM Gigabit Ethernet Controller + 103c 3103 NC310F PCI-X Gigabit Server Adapter + 8086 1001 PRO/1000 MF Server Adapter(LX) + 8086 1002 PRO/1000 MF Server Adapter(LX) + 8086 1003 PRO/1000 MF Server Adapter(LX) + 8086 1027 PRO/1000 MF Server Adapter + 1028 82545GM Gigabit Ethernet Controller + 8086 1028 PRO/1000 MB Server Connection + 1029 82559 Ethernet Controller + 1030 82559 InBusiness 10/100 + 1031 82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller + 1014 0209 ThinkPad A/T/X Series + 104d 80e7 Vaio PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + 104d 813c Vaio PCG-GRV616G + 107b 5350 EtherExpress PRO/100 VE + 1179 0001 EtherExpress PRO/100 VE + 144d c000 EtherExpress PRO/100 VE + 144d c001 EtherExpress PRO/100 VE + 144d c003 EtherExpress PRO/100 VE + 144d c006 vpr Matrix 170B4 + 1032 82801CAM (ICH3) PRO/100 VE Ethernet Controller + 1033 82801CAM (ICH3) PRO/100 VM (LOM) Ethernet Controller + 1034 82801CAM (ICH3) PRO/100 VM Ethernet Controller + 1035 82801CAM (ICH3)/82562EH (LOM) Ethernet Controller + 1036 82801CAM (ICH3) 82562EH Ethernet Controller + 1037 82801CAM (ICH3) Chipset Ethernet Controller + 1038 82801CAM (ICH3) PRO/100 VM (KM) Ethernet Controller + 0e11 0098 Evo N600c + 1039 82801DB PRO/100 VE (LOM) Ethernet Controller + 1014 0267 NetVista A30p + 114a 0582 PC8 onboard ethernet ETH1 + 103a 82801DB PRO/100 VE (CNR) Ethernet Controller + 103b 82801DB PRO/100 VM (LOM) Ethernet Controller + 103c 82801DB PRO/100 VM (CNR) Ethernet Controller + 103d 82801DB PRO/100 VE (MOB) Ethernet Controller + 1014 0522 ThinkPad R40 + 1028 2002 Latitude D500 + 8086 103d 82562EZ 10/100 Ethernet Controller + 103e 82801DB PRO/100 VM (MOB) Ethernet Controller + 1040 536EP Data Fax Modem + 16be 1040 V.9X DSP Data Fax Modem + 1043 PRO/Wireless LAN 2100 3B Mini PCI Adapter + 103c 08b0 tc1100 tablet + 8086 2522 Samsung X10/P30 integrated WLAN + 8086 2527 MIM2000/Centrino + 8086 2561 Dell Latitude D800 + 8086 2581 Toshiba Satellite M10 + 1048 82597EX 10GbE Ethernet Controller + 8086 a01f PRO/10GbE LR Server Adapter + 8086 a11f PRO/10GbE LR Server Adapter + 1049 82566MM Gigabit Network Connection + 103c 30c1 Compaq 6910p + 17aa 20b9 ThinkPad T61/R61 + 104a 82566DM Gigabit Network Connection + 104b 82566DC Gigabit Network Connection + 104c 82562V 10/100 Network Connection + 104d 82566MC Gigabit Network Connection + 104e Ethernet Controller X710 for 10 Gigabit SFP+ + 104f Ethernet Controller X710 for 10 Gigabit backplane + 1050 82562EZ 10/100 Ethernet Controller + 1014 0287 ThinkCentre S50 + 1028 019d Dimension 3000 + 1462 728c 865PE Neo2 (MS-6728) + 1462 758c MS-6758 (875P Neo) + 8086 3020 D865PERL mainboard + 8086 302f Desktop Board D865GBF + 8086 3427 S875WP1-E mainboard + 1051 82801EB/ER (ICH5/ICH5R) integrated LAN Controller + 1052 PRO/100 VM Network Connection + 1053 PRO/100 VM Network Connection + 1054 PRO/100 VE Network Connection + 1055 PRO/100 VM Network Connection + 1056 PRO/100 VE Network Connection + 1057 PRO/100 VE Network Connection + 1059 82551QM Ethernet Controller + 105b 82546GB Gigabit Ethernet Controller (Copper) + 105e 82571EB/82571GB Gigabit Ethernet Controller D0/D1 (copper applications) + 103c 7044 NC360T PCI Express Dual Port Gigabit Server Adapter + 103c 704e Dual Port 1000Base-T (PCIe) [AD337A] + 1775 1100 CR11/VR11 Single Board Computer + 1775 6003 Telum GE-QT + 18df 1214 2x 1GbE, PCIe x1, dual Intel 82571EB chips + 8086 005e PRO/1000 PT Dual Port Server Connection + 8086 105e PRO/1000 PT Dual Port Network Connection + 8086 10d5 82571PT Gigabit PT Quad Port Server ExpressModule + 8086 115e PRO/1000 PT Dual Port Server Adapter + 8086 125e PRO/1000 PT Dual Port Server Adapter + 8086 135e PRO/1000 PT Dual Port Server Adapter + 105f 82571EB Gigabit Ethernet Controller + 103c 704f Dual Port 1000Base-SX (PCIe) [AD338A] + 8086 005a PRO/1000 PF Dual Port Server Adapter + 8086 115f PRO/1000 PF Dual Port Server Adapter + 8086 125f PRO/1000 PF Dual Port Server Adapter + 8086 135f PRO/1000 PF Dual Port Server Adapter + 1060 82571EB Gigabit Ethernet Controller + 8086 0060 PRO/1000 PB Dual Port Server Connection + 8086 1060 PRO/1000 PB Dual Port Server Connection + 1064 82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller + 1043 80f8 P5GD1-VW Mainboard + 1065 82562ET/EZ/GT/GZ - PRO/100 VE Ethernet Controller + 1066 82562 EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller + 1067 82562 EM/EX/GX - PRO/100 VM Ethernet Controller + 1068 82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller Mobile + 103c 30d5 530 Laptop + 1069 82562EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller Mobile + 106a 82562G - PRO/100 VE (LOM) Ethernet Controller + 106b 82562G - PRO/100 VE Ethernet Controller Mobile + 1075 82547GI Gigabit Ethernet Controller + 1028 0165 PowerEdge 750 + 8086 0075 PRO/1000 CT Network Connection + 8086 1075 PRO/1000 CT Network Connection + 1076 82541GI Gigabit Ethernet Controller + 1028 0165 PRO/1000 MT Network Connection + 1028 016d PRO/1000 MT Network Connection + 1028 019a PRO/1000 MT Network Connection + 1028 106d PRO/1000 MT Network Connection + 8086 0076 PRO/1000 MT Network Connection + 8086 1076 PRO/1000 MT Network Connection + 8086 1176 PRO/1000 MT Desktop Adapter + 8086 1276 PRO/1000 MT Network Adapter + 1077 82541GI Gigabit Ethernet Controller + 1179 0001 PRO/1000 MT Mobile Connection + 8086 0077 PRO/1000 MT Mobile Connection + 8086 1077 PRO/1000 MT Mobile Connection + 1078 82541ER Gigabit Ethernet Controller + 8086 1078 82541ER-based Network Connection + 1079 82546GB Gigabit Ethernet Controller + 103c 12a6 Dual Port 1000Base-T [A9900A] + 103c 12cf Core Dual Port 1000Base-T [AB352A] + 1775 10d0 V5D Single Board Computer Gigabit Ethernet + 1775 ce90 CE9 + 1fc1 0027 Niagara 2261 Failover NIC + 4c53 1090 Cx9 / Vx9 mainboard + 4c53 10b0 CL9 mainboard + 8086 0079 PRO/1000 MT Dual Port Network Connection + 8086 1079 PRO/1000 MT Dual Port Network Connection + 8086 1179 PRO/1000 MT Dual Port Server Adapter + 8086 117a PRO/1000 MT Dual Port Server Adapter + 107a 82546GB Gigabit Ethernet Controller + 103c 12a8 Dual Port 1000base-SX [A9899A] + 8086 107a PRO/1000 MF Dual Port Server Adapter + 8086 127a PRO/1000 MF Dual Port Server Adapter + 107b 82546GB Gigabit Ethernet Controller + 8086 007b PRO/1000 MB Dual Port Server Connection + 8086 107b PRO/1000 MB Dual Port Server Connection + 107c 82541PI Gigabit Ethernet Controller + 8086 1376 PRO/1000 GT Desktop Adapter + 8086 1476 PRO/1000 GT Desktop Adapter + 107d 82572EI Gigabit Ethernet Controller (Copper) + 8086 1082 PRO/1000 PT Server Adapter + 8086 1084 PRO/1000 PT Server Adapter + 8086 1092 PRO/1000 PT Server Adapter + 107e 82572EI Gigabit Ethernet Controller (Fiber) + 8086 1084 PRO/1000 PF Server Adapter + 8086 1085 PRO/1000 PF Server Adapter + 8086 1094 PRO/1000 PF Server Adapter + 107f 82572EI Gigabit Ethernet Controller + 1080 FA82537EP 56K V.92 Data/Fax Modem PCI + 1081 631xESB/632xESB LAN Controller Copper + 1082 631xESB/632xESB LAN Controller fiber + 1083 631xESB/632xESB LAN Controller SERDES + 1084 631xESB/632xESB IDE Redirection + 1085 631xESB/632xESB Serial Port Redirection + 1086 631xESB/632xESB IPMI/KCS0 + 1087 631xESB/632xESB UHCI Redirection + 1089 631xESB/632xESB BT + 108a 82546GB Gigabit Ethernet Controller + 8086 108a PRO/1000 P Dual Port Server Adapter + 8086 118a PRO/1000 P Dual Port Server Adapter + 108b 82573V Gigabit Ethernet Controller (Copper) + 1462 176c on board on MSI 945P - NEO (MS-7176) + 108c 82573E Gigabit Ethernet Controller (Copper) + 108e 82573E KCS (Active Management) + 108f Active Management Technology - SOL + 1091 PRO/100 VM Network Connection + 1092 PRO/100 VE Network Connection + 1071 8209 Medion MIM 2240 Notebook PC [MD98100] + 1093 PRO/100 VM Network Connection + 1094 PRO/100 VE Network Connection + 1095 PRO/100 VE Network Connection + 1096 80003ES2LAN Gigabit Ethernet Controller (Copper) + 15d9 1096 Motherboard + 15d9 8680 X7DVL-E-O motherboard + 8086 3476 S5000PSLSATA Server Board + 1097 631xESB/632xESB DPT LAN Controller (Fiber) + 1098 80003ES2LAN Gigabit Ethernet Controller (Serdes) + 1099 82546GB Gigabit Ethernet Controller (Copper) + 8086 1099 PRO/1000 GT Quad Port Server Adapter + 109a 82573L Gigabit Ethernet Controller + 1179 ff10 PRO/1000 PL + 17aa 2001 ThinkPad T60 + 17aa 207e ThinkPad X60/X60s + 8086 109a PRO/1000 PL Network Connection + 8086 309c Desktop Board D945GTP + 8086 30a5 Desktop Board D975XBX + 109b 82546GB PRO/1000 GF Quad Port Server Adapter + 109e 82597EX 10GbE Ethernet Controller + 8086 a01f PRO/10GbE CX4 Server Adapter + 8086 a11f PRO/10GbE CX4 Server Adapter + 10a0 82571EB PRO/1000 AT Quad Port Bypass Adapter + 10a1 82571EB PRO/1000 AF Quad Port Bypass Adapter + 10a4 82571EB Gigabit Ethernet Controller + 8086 10a4 PRO/1000 PT Quad Port Server Adapter + 8086 11a4 PRO/1000 PT Quad Port Server Adapter + 10a5 82571EB Gigabit Ethernet Controller (Fiber) + 8086 10a5 PRO/1000 PF Quad Port Server Adapter + 8086 10a6 PRO/1000 PF Quad Port Server Adapter + 10a6 82599EB 10-Gigabit Dummy Function + 10a7 82575EB Gigabit Network Connection + 8086 10a8 82575EB Gigabit Riser Card + 10a9 82575EB Gigabit Backplane Connection + 10b0 82573L PRO/1000 PL Network Connection + 10b2 82573V PRO/1000 PM Network Connection + 10b3 82573E PRO/1000 PM Network Connection + 10b4 82573L PRO/1000 PL Network Connection + 10b5 82546GB Gigabit Ethernet Controller (Copper) + 103c 3109 NC340T PCI-X Quad-port Gigabit Server Adapter + 8086 1099 PRO/1000 GT Quad Port Server Adapter + 8086 1199 PRO/1000 GT Quad Port Server Adapter + 10b6 82598 10GbE PCI-Express Ethernet Controller + 10b9 82572EI Gigabit Ethernet Controller (Copper) + 103c 704a 110T PCIe Gigabit Server Adapter + 8086 1083 PRO/1000 PT Desktop Adapter + 8086 1093 PRO/1000 PT Desktop Adapter + 10ba 80003ES2LAN Gigabit Ethernet Controller (Copper) + 10bb 80003ES2LAN Gigabit Ethernet Controller (Serdes) + 10bc 82571EB/82571GB Gigabit Ethernet Controller (Copper) + 1014 0368 4-Port 10/100/1000 Base-TX PCI Express Adapter for POWER + 103c 704b NC364T PCI Express Quad Port Gigabit Server Adapter +# 375-3481-01 REV:50 + 108e 11bc Quad Port Adapter + 8086 10bc PRO/1000 PT Quad Port LP Server Adapter + 8086 11bc PRO/1000 PT Quad Port LP Server Adapter (Kirkwood Low Profile) + 10bd 82566DM-2 Gigabit Network Connection + 1028 0211 OptiPlex 755 + 10bf 82567LF Gigabit Network Connection + 10c0 82562V-2 10/100 Network Connection + 1028 020d Inspiron 530 + 10c2 82562G-2 10/100 Network Connection + 10c3 82562GT-2 10/100 Network Connection + 10c4 82562GT 10/100 Network Connection + 10c5 82562G 10/100 Network Connection + 10c6 82598EB 10-Gigabit AF Dual Port Network Connection + 8086 a05f 10-Gigabit XF SR Dual Port Server Adapter + 8086 a15f 10-Gigabit XF SR Dual Port Server Adapter + 10c7 82598EB 10-Gigabit AF Network Connection + 1014 037f 10-Gigabit XF SR Server Adapter + 1014 0380 10-Gigabit XF LR Server Adapter + 8086 a05f 10-Gigabit XF SR Server Adapter + 8086 a15f 10-Gigabit XF SR Server Adapter + 8086 a16f 10-Gigabit XF SR Server Adapter + 10c8 82598EB 10-Gigabit AT Network Connection + 8086 a10c 10-Gigabit AT Server Adapter + 8086 a11c 10-Gigabit AT Server Adapter + 8086 a12c 10-Gigabit AT Server Adapter + 10c9 82576 Gigabit Network Connection + 103c 31ef NC362i Integrated Dual port Gigabit Server Adapter + 103c 323f NC362i Integrated Dual port Gigabit Server Adapter + 10a9 8028 UV-BaseIO dual-port GbE + 13a3 0037 DS4100 Secure Multi-Gigabit Server Adapter with Compression + 15d9 a811 H8DGU + 4c52 9212 LREC9212PT Dual-port 10Gb Ethernet Network Adapter + 8086 a01c Gigabit ET Dual Port Server Adapter + 8086 a03c Gigabit ET Dual Port Server Adapter + 8086 a04c Gigabit ET Dual Port Server Adapter + 10ca 82576 Virtual Function + 10cb 82567V Gigabit Network Connection + 10cc 82567LM-2 Gigabit Network Connection + 10cd 82567LF-2 Gigabit Network Connection + 10ce 82567V-2 Gigabit Network Connection + 10d3 82574L Gigabit Network Connection + 103c 1785 NC112i 1-port Ethernet Server Adapter + 103c 3250 NC112T PCI Express single Port Gigabit Server Adapter + 1043 8369 Motherboard + 1093 76e9 PCIe-8233 Ethernet Adapter + 10a9 8029 Prism XL Single Port Gigabit Ethernet + 15d9 0605 X8SIL + 15d9 060a X7SPA-H/X7SPA-HF Motherboard + 15d9 060d C7SIM-Q Motherboard + 4c52 2201 LRES2201PT Single-port 1Gb Ethernet Network Adapter + 8086 0001 Gigabit CT2 Desktop Adapter + 8086 3578 Server Board S1200BTLR + 8086 357a Server Board S1200BTS + 8086 a01f Gigabit CT Desktop Adapter + e4bf 50c1 PC1-GROOVE + e4bf 50c2 PC2-LIMBO + 10d4 Matrox Concord GE (customized Intel 82574) + 10d5 82571PT Gigabit PT Quad Port Server ExpressModule + 10d6 82575GB Gigabit Network Connection + 8086 10d6 Gigabit VT Quad Port Server Adapter + 8086 145a Gigabit VT Quad Port Server Adapter + 8086 147a Gigabit VT Quad Port Server Adapter + 10d8 82599EB 10 Gigabit Unprogrammed + 10d9 82571EB Dual Port Gigabit Mezzanine Adapter + 103c 1716 NC360m Dual Port 1GbE BL-c Adapter + 10da 82571EB Quad Port Gigabit Mezzanine Adapter + 103c 1717 NC364m Quad Port 1GbE BL-c Adapter + 10db 82598EB 10-Gigabit Dual Port Network Connection + 10dd 82598EB 10-Gigabit AT CX4 Network Connection + 10de 82567LM-3 Gigabit Network Connection + 10df 82567LF-3 Gigabit Network Connection + 10e1 82598EB 10-Gigabit AF Dual Port Network Connection + 8086 a15f 10-Gigabit SR Dual Port Express Module + 10e2 82575GB Gigabit Network Connection + 8086 10e2 Gigabit VT Quad Port Server Adapter + 10e5 82567LM-4 Gigabit Network Connection + 10e6 82576 Gigabit Network Connection + 8086 a01f Gigabit EF Dual Port Server Adapter + 8086 a02f Gigabit EF Dual Port Server Adapter + 10e7 82576 Gigabit Network Connection + 103c 31ff NC362i Integrated Dual Port BL-c Gigabit Server Adapter + 4c52 9701 LREC9701EF Single-port 1Gb Ethernet Network Adapter + 10e8 82576 Gigabit Network Connection + 8086 a02b Gigabit ET Quad Port Server Adapter + 8086 a02c Gigabit ET Quad Port Server Adapter + 10ea 82577LM Gigabit Network Connection + 1028 040a Latitude E6410 + 1028 040b Latitude E6510 + e4bf 50c1 PC1-GROOVE + 10eb 82577LC Gigabit Network Connection + 10ec 82598EB 10-Gigabit AT CX4 Network Connection + 8086 a01f 10-Gigabit CX4 Dual Port Server Adapter + 8086 a11f 10-Gigabit CX4 Dual Port Server Adapter + 10ed 82599 Ethernet Controller Virtual Function + 10ef 82578DM Gigabit Network Connection + 1028 02da OptiPlex 980 + 15d9 060d C7SIM-Q Motherboard + 10f0 82578DC Gigabit Network Connection + 10f1 82598EB 10-Gigabit AF Dual Port Network Connection + 8086 a20f 10-Gigabit AF DA Dual Port Server Adapter + 8086 a21f 10-Gigabit AF DA Dual Port Server Adapter + 10f4 82598EB 10-Gigabit AF Network Connection + 8086 106f 10-Gigabit XF LR Server Adapter + 8086 a06f 10-Gigabit XF LR Server Adapter + 10f5 82567LM Gigabit Network Connection + 17aa 20ee ThinkPad T400 + 10f6 82574L Gigabit Network Connection + 10f7 10 Gigabit BR KX4 Dual Port Network Connection + 108e 7b12 Sun Dual 10GbE PCIe 2.0 FEM + 8086 000d Ethernet Mezzanine Adapter X520-KX4-2 + 10f8 82599 10 Gigabit Dual Port Backplane Connection + 1028 1f63 10GbE 2P X520k bNDC + 103c 17d2 Ethernet 10Gb 2-port 560M Adapter + 103c 18d0 Ethernet 10Gb 2-port 560FLB Adapter + 1059 0111 T4007 10GbE interface + 1059 0130 T4009 10GbE interface + 8086 000c Ethernet X520 10GbE Dual Port KX4-KR Mezz + 10f9 82599 10 Gigabit Dual Port Network Connection + 10fb 82599ES 10-Gigabit SFI/SFP+ Network Connection + 1028 1f72 Ethernet 10G 4P X520/I350 rNDC + 103c 17d0 Ethernet 10Gb 2-port 560FLR-SFP+ Adapter + 103c 17d2 Ethernet 10Gb 2-port 560M Adapter + 103c 17d3 Ethernet 10Gb 2-port 560SFP+ Adapter + 103c 211b Ethernet 10Gb 1-port P560FLR-SFP+ Adapter + 103c 2147 Ethernet 10Gb 1-port 561i Adapter + 103c 2159 Ethernet 10Gb 2-port 562i Adapter + 108e 7b11 Ethernet Server Adapter X520-2 + 1170 004c 82599 DP 10G Mezzanine Adapter + 1374 1a08 PE310G4SPI9/PE310G4SPI9L/PE310G4SPI9LA Quad Port Fiber 10 Gigabit Ethernet PCI Express Server Adapter + 15d9 0611 AOC-STGN-i2S + 1734 11a9 10 Gigabit Dual Port Network Connection + 17aa 1071 ThinkServer X520-2 AnyFabric + 17aa 4007 82599ES 10-Gigabit SFI/SFP+ Network Connection + 17aa 402b 82599ES 10Gb 2-port Server Adapter X520-DA2 + 17aa 402f FPGA Card XC7VX690T-3FFG1157E + 18d4 0c09 82599ES 10Gb 2-port SFP+ OCP Mezz Card MOP81-I-10GS2 + 193d 1004 560F-B + 1bd4 001b 10G SFP+ DP ER102Fi4 Rack Adapter + 1bd4 002f 10G SFP+ DP EP102Fi4A Adapter + 1bd4 0032 10G SFP+ DP EP102Fi4 Adapter + 1bd4 0067 F102I82599 + 4c52 1024 LR-LINK LRES9804BF Quad-port 10Gb Ethernet Server Adapter + 4c52 3002 LRES3002PF Dual-port 10Gb Ethernet Server Adapter for OCP + 4c52 3012 LRES3012PF Dual-port 10Gb Ethernet Server Adapter for OCP + 4c52 9801 LREC9801BF Single-port 10Gb Ethernet Server Adapter + 4c52 9802 LREC9802BF Dual-port 10Gb Ethernet Server Adapter + 8086 0002 Ethernet Server Adapter X520-DA2 + 8086 0003 Ethernet Server Adapter X520-2 + 8086 0006 Ethernet Server Adapter X520-1 + 8086 0008 Ethernet OCP Server Adapter X520-2 + 8086 000a Ethernet Server Adapter X520-1 + 8086 000c Ethernet Server Adapter X520-2 + 8086 10a6 82599ES 10Gb 2 port Server Adapter X520-DA2 + 8086 7a11 Ethernet Server Adapter X520-2 + 8086 7a12 Ethernet Server Adapter X520-2 + 10fc 82599 10 Gigabit Dual Port Network Connection + 10fe 82552 10/100 Network Connection + 1107 PRO/1000 MF Server Adapter (LX) + 1130 82815 815 Chipset Host Bridge and Memory Controller Hub + 1025 1016 Travelmate 612 TX + 1043 8027 CUSL2-C/TUSL2-C Mainboard + 104d 80df Vaio PCG-FX403 + 8086 4532 Desktop Board D815EEA2/D815EFV + 8086 4557 D815EGEW Mainboard + 1131 82815 815 Chipset AGP Bridge + 1132 82815 Chipset Graphics Controller (CGC) + 1025 1016 Travelmate 612 TX + 103c 2001 e-pc 40 + 104d 80df Vaio PCG-FX403 + 8086 4532 Desktop Board D815EEA2/D815EFV + 8086 4541 D815EEA Motherboard + 8086 4557 D815EGEW Mainboard + 1136 Thunderbolt 4 Bridge [Maple Ridge 4C 2020] + 1137 Thunderbolt 4 NHI [Maple Ridge 4C 2020] + 1138 Thunderbolt 4 USB Controller [Maple Ridge 4C 2020] + 1161 82806AA PCI64 Hub Advanced Programmable Interrupt Controller + 8086 1161 82806AA PCI64 Hub APIC + 1162 Xscale 80200 Big Endian Companion Chip + 1190 Merrifield SD/SDIO/eMMC Controller + 1191 Merrifield Serial IO HSUART Controller + 1192 Merrifield Serial IO HSUART DMA Controller + 1194 Merrifield Serial IO SPI Controller + 1195 Merrifield Serial IO I2C Controller + 1196 Merrifield Serial IO I2C Controller + 1199 Merrifield GPIO Controller + 119e Merrifield USB Device Controller (OTG) + 11a0 Merrifield SCU IPC + 11a1 Merrifield Power Management Unit + 11a2 Merrifield Serial IO DMA Controller + 11a5 Merrifield Serial IO PWM Controller + 11c3 Quark SoC X1000 PCIe Root Port 0 + 11c4 Quark SoC X1000 PCIe Root Port 1 + 11eb Simics NVMe Controller + 1200 IXP1200 Network Processor + 172a 0000 AEP SSL Accelerator + 1209 8255xER/82551IT Fast Ethernet Controller + 140b 0610 PMC610 quad Ethernet board + 1af4 1100 QEMU Virtual Machine + 4c53 1050 CT7 mainboard + 4c53 1051 CE7 mainboard + 4c53 1070 PC6 mainboard + 1221 82092AA PCI to PCMCIA Bridge + 1222 82092AA IDE Controller + 1223 SAA7116 + 1225 82452KX/GX [Orion] + 1226 82596 PRO/10 PCI + 1227 82865 EtherExpress PRO/100A + 1228 82556 EtherExpress PRO/100 Smart + 1229 82557/8/9/0/1 Ethernet Pro 100 + 0e11 3001 82559 Fast Ethernet LOM with Alert on LAN* + 0e11 3002 82559 Fast Ethernet LOM with Alert on LAN* + 0e11 3003 82559 Fast Ethernet LOM with Alert on LAN* + 0e11 3004 82559 Fast Ethernet LOM with Alert on LAN* + 0e11 3005 82559 Fast Ethernet LOM with Alert on LAN* + 0e11 3006 82559 Fast Ethernet LOM with Alert on LAN* + 0e11 3007 82559 Fast Ethernet LOM with Alert on LAN* + 0e11 b01e NC3120 Fast Ethernet NIC + 0e11 b01f NC3122 Fast Ethernet NIC (dual port) + 0e11 b02f NC1120 Ethernet NIC + 0e11 b04a Netelligent 10/100TX NIC with Wake on LAN + 0e11 b0c6 NC3161 Fast Ethernet NIC (embedded, WOL) + 0e11 b0c7 NC3160 Fast Ethernet NIC (embedded) + 0e11 b0d7 NC3121 Fast Ethernet NIC (WOL) + 0e11 b0dd NC3131 Fast Ethernet NIC (dual port) + 0e11 b0de NC3132 Fast Ethernet Module (dual port) + 0e11 b0e1 NC3133 Fast Ethernet Module (100-FX) + 0e11 b134 NC3163 Fast Ethernet NIC (embedded, WOL) + 0e11 b13c NC3162 Fast Ethernet NIC (embedded) + 0e11 b144 NC3123 Fast Ethernet NIC (WOL) + 0e11 b163 NC3134 Fast Ethernet NIC (dual port) + 0e11 b164 NC3135 Fast Ethernet Upgrade Module (dual port) + 0e11 b1a4 NC7131 Gigabit Server Adapter + 1014 005c 82558B Ethernet Pro 10/100 + 1014 01bc 82559 Fast Ethernet LAN On Motherboard + 1014 01f1 10/100 Ethernet Server Adapter + 1014 01f2 10/100 Ethernet Server Adapter + 1014 0207 Ethernet Pro/100 S + 1014 0232 10/100 Dual Port Server Adapter + 1014 023a ThinkPad R30 + 1014 105c Netfinity 10/100 + 1014 2205 ThinkPad A22p + 1014 305c 10/100 EtherJet Management Adapter + 1014 405c 10/100 EtherJet Adapter with Alert on LAN + 1014 505c 10/100 EtherJet Secure Management Adapter + 1014 605c 10/100 EtherJet Secure Management Adapter + 1014 705c 10/100 Netfinity 10/100 Ethernet Security Adapter + 1014 805c 10/100 Netfinity 10/100 Ethernet Security Adapter + 1028 009b 10/100 Ethernet Server Adapter + 1028 00ce 10/100 Ethernet Server Adapter + 1033 8000 PC-9821X-B06 + 1033 8016 PK-UG-X006 + 1033 801f PK-UG-X006 + 1033 8026 PK-UG-X006 + 1033 8063 82559-based Fast Ethernet Adapter + 1033 8064 82559-based Fast Ethernet Adapter + 103c 10c0 NetServer 10/100TX + 103c 10c3 NetServer 10/100TX + 103c 10ca NetServer 10/100TX + 103c 10cb NetServer 10/100TX + 103c 10e3 NetServer 10/100TX + 103c 10e4 NetServer 10/100TX + 103c 1200 NetServer 10/100TX + 108e 10cf EtherExpress PRO/100(B) + 10c3 1100 SmartEther100 SC1100 + 10cf 1115 8255x-based Ethernet Adapter (10/100) + 10cf 1143 8255x-based Ethernet Adapter (10/100) + 110a 008b 82551QM Fast Ethernet Multifuction PCI/CardBus Controller + 114a 0582 PC8 onboard ethernet ETH2 + 1179 0001 8255x-based Ethernet Adapter (10/100) + 1179 0002 PCI FastEther LAN on Docker + 1179 0003 8255x-based Fast Ethernet + 1259 2560 AT-2560 100 + 1259 2561 AT-2560 100 FX Ethernet Adapter + 1266 0001 NE10/100 Adapter + 13e9 1000 6221L-4U + 144d 2501 SEM-2000 MiniPCI LAN Adapter + 144d 2502 SEM-2100IL MiniPCI LAN Adapter + 1668 1100 EtherExpress PRO/100B (TX) (MiniPCI Ethernet+Modem) + 1775 1100 CR11/VR11 Single Board Computer + 1775 ce90 CE9 + 1af4 1100 QEMU Virtual Machine + 4c53 1080 CT8 mainboard + 4c53 10e0 PSL09 PrPMC + 8086 0001 EtherExpress PRO/100B (TX) + 8086 0002 EtherExpress PRO/100B (T4) + 8086 0003 EtherExpress PRO/10+ + 8086 0004 EtherExpress PRO/100 WfM + 8086 0005 82557 10/100 + 8086 0006 82557 10/100 with Wake on LAN + 8086 0007 82558 10/100 Adapter + 8086 0008 82558 10/100 with Wake on LAN + 8086 0009 82558B PRO/100+ PCI (TP) + 8086 000a EtherExpress PRO/100+ Management Adapter + 8086 000b EtherExpress PRO/100+ + 8086 000c EtherExpress PRO/100+ Management Adapter + 8086 000d EtherExpress PRO/100+ Alert On LAN II* Adapter + 8086 000e EtherExpress PRO/100+ Management Adapter with Alert On LAN* + 8086 000f EtherExpress PRO/100 Desktop Adapter + 8086 0010 EtherExpress PRO/100 S Management Adapter + 8086 0011 EtherExpress PRO/100 S Management Adapter + 8086 0012 EtherExpress PRO/100 S Advanced Management Adapter (D) + 8086 0013 EtherExpress PRO/100 S Advanced Management Adapter (E) + 8086 0030 EtherExpress PRO/100 Management Adapter with Alert On LAN* GC + 8086 0031 EtherExpress PRO/100 Desktop Adapter + 8086 0040 EtherExpress PRO/100 S Desktop Adapter + 8086 0041 EtherExpress PRO/100 S Desktop Adapter + 8086 0042 EtherExpress PRO/100 Desktop Adapter + 8086 0050 EtherExpress PRO/100 S Desktop Adapter + 8086 1009 EtherExpress PRO/100+ Server Adapter + 8086 100c EtherExpress PRO/100+ Server Adapter (PILA8470B) + 8086 1012 EtherExpress PRO/100 S Server Adapter (D) + 8086 1013 EtherExpress PRO/100 S Server Adapter (E) + 8086 1015 EtherExpress PRO/100 S Dual Port Server Adapter + 8086 1017 EtherExpress PRO/100+ Dual Port Server Adapter + 8086 1030 EtherExpress PRO/100+ Management Adapter with Alert On LAN* G Server + 8086 1040 EtherExpress PRO/100 S Server Adapter + 8086 1041 EtherExpress PRO/100 S Server Adapter + 8086 1042 EtherExpress PRO/100 Server Adapter + 8086 1050 EtherExpress PRO/100 S Server Adapter + 8086 1051 EtherExpress PRO/100 Server Adapter + 8086 1052 EtherExpress PRO/100 Server Adapter + 8086 10f0 EtherExpress PRO/100+ Dual Port Adapter + 8086 1229 82557/8/9 [Ethernet Pro 100] + 8086 2009 EtherExpress PRO/100 S Mobile Adapter + 8086 200d EtherExpress PRO/100 Cardbus + 8086 200e EtherExpress PRO/100 LAN+V90 Cardbus Modem + 8086 200f EtherExpress PRO/100 SR Mobile Adapter + 8086 2010 EtherExpress PRO/100 S Mobile Combo Adapter + 8086 2013 EtherExpress PRO/100 SR Mobile Combo Adapter + 8086 2016 EtherExpress PRO/100 S Mobile Adapter + 8086 2017 EtherExpress PRO/100 S Combo Mobile Adapter + 8086 2018 EtherExpress PRO/100 SR Mobile Adapter + 8086 2019 EtherExpress PRO/100 SR Combo Mobile Adapter + 8086 2101 EtherExpress PRO/100 P Mobile Adapter + 8086 2102 EtherExpress PRO/100 SP Mobile Adapter + 8086 2103 EtherExpress PRO/100 SP Mobile Adapter + 8086 2104 EtherExpress PRO/100 SP Mobile Adapter + 8086 2105 EtherExpress PRO/100 SP Mobile Adapter + 8086 2106 EtherExpress PRO/100 P Mobile Adapter + 8086 2107 EtherExpress PRO/100 Network Connection + 8086 2108 EtherExpress PRO/100 Network Connection + 8086 2200 EtherExpress PRO/100 P Mobile Combo Adapter + 8086 2201 EtherExpress PRO/100 P Mobile Combo Adapter + 8086 2202 EtherExpress PRO/100 SP Mobile Combo Adapter + 8086 2203 EtherExpress PRO/100+ MiniPCI + 8086 2204 EtherExpress PRO/100+ MiniPCI + 8086 2205 EtherExpress PRO/100 SP Mobile Combo Adapter + 8086 2206 EtherExpress PRO/100 SP Mobile Combo Adapter + 8086 2207 EtherExpress PRO/100 SP Mobile Combo Adapter + 8086 2208 EtherExpress PRO/100 P Mobile Combo Adapter + 8086 2402 EtherExpress PRO/100+ MiniPCI + 8086 2407 EtherExpress PRO/100+ MiniPCI + 8086 2408 EtherExpress PRO/100+ MiniPCI + 8086 2409 EtherExpress PRO/100+ MiniPCI + 8086 240f EtherExpress PRO/100+ MiniPCI + 8086 2410 EtherExpress PRO/100+ MiniPCI + 8086 2411 EtherExpress PRO/100+ MiniPCI + 8086 2412 EtherExpress PRO/100+ MiniPCI + 8086 2413 EtherExpress PRO/100+ MiniPCI + 8086 3000 82559 Fast Ethernet LAN on Motherboard + 8086 3001 82559 Fast Ethernet LOM with Basic Alert on LAN* + 8086 3002 82559 Fast Ethernet LOM with Alert on LAN II* + 8086 3006 EtherExpress PRO/100 S Network Connection + 8086 3007 EtherExpress PRO/100 S Network Connection + 8086 3008 EtherExpress PRO/100 Network Connection + 8086 3010 EtherExpress PRO/100 S Network Connection + 8086 3011 EtherExpress PRO/100 S Network Connection + 8086 3012 EtherExpress PRO/100 Network Connection + 8086 301a S845WD1-E mainboard + 8086 3411 SDS2 Mainboard + 122d 430FX - 82437FX TSC [Triton I] + 122e 82371FB PIIX ISA [Triton I] + 1230 82371FB PIIX IDE [Triton I] + 1231 DSVD Modem + 1234 430MX - 82371MX Mobile PCI I/O IDE Xcelerator (MPIIX) + 1235 430MX - 82437MX Mob. System Ctrlr (MTSC) & 82438MX Data Path (MTDP) + 1237 440FX - 82441FX PMC [Natoma] + 01de fffe Propolis Virtual 440FX + 1af4 1100 Qemu virtual machine + 1239 82371FB PIIX IDE Interface + 123b 82380PB PCI to PCI Docking Bridge + 123c 82380AB (MISA) Mobile PCI-to-ISA Bridge + 123d 683053 Programmable Interrupt Device + 123e 82466GX (IHPC) Integrated Hot-Plug Controller (hidden mode) + 123f 82466GX Integrated Hot-Plug Controller (IHPC) + 1240 82752 (752) AGP Graphics Accelerator + 124b 82380FB (MPCI2) Mobile Docking Controller + 124c Ethernet Connection E823-L for backplane + 124d Ethernet Connection E823-L for SFP + 124e Ethernet Connection E823-L/X557-AT 10GBASE-T + 124f Ethernet Connection E823-L 1GbE + 1250 430HX - 82439HX TXC [Triton II] + 125b Ethernet Controller I226-LM + 125c Ethernet Controller I226-V + 125d Ethernet Controller I226-IT + 12d1 Ethernet Controller E830-CC for backplane + 12d2 Ethernet Controller E830-CC for QSFP + 8086 0002 Ethernet Network Adapter E830-C-Q2 for OCP 3.0 + 8086 0004 Ethernet Network Adapter E830-CC-Q1 for OCP 3.0 + 12d3 Ethernet Controller E830-CC for SFP + 8086 0001 Ethernet Network Adapter E830-XXV-2 for OCP 3.0 + 8086 0003 Ethernet Network Adapter E830-XXV-2 + 8086 0004 Ethernet Network Adapter E830-XXV-4 for OCP 3.0 + 12d4 Ethernet Controller E830-CC for SFP-DD + 12d5 Ethernet Controller E830-C for backplane + 12d8 Ethernet Controller E830-C for QSFP + 12da Ethernet Controller E830-C for SFP + 12dc Ethernet Controller E830-XXV for backplane + 12dd Ethernet Controller E830-XXV for QSFP + 12de Ethernet Controller E830-XXV for SFP + 1360 82806AA PCI64 Hub PCI Bridge + 1361 82806AA PCI64 Hub Controller (HRes) + 8086 1361 82806AA PCI64 Hub Controller (HRes) + 8086 8000 82806AA PCI64 Hub Controller (HRes) + 1452 Infrastructure Data Path Function + 145c Infrastructure Data Path Function + 1460 82870P2 P64H2 Hub PCI Bridge + 1461 82870P2 P64H2 I/OxAPIC + 15d9 3480 P4DP6 + 4c53 1090 Cx9/Vx9 mainboard + 1462 82870P2 P64H2 Hot Plug Controller + 1501 82567V-3 Gigabit Network Connection + 1502 82579LM Gigabit Network Connection (Lewisville) + 1028 04a3 Precision M4600 + 17aa 21ce ThinkPad T520 + 17aa 3070 ThinkCentre M91p + 8086 3578 Server Board S1200BTLR + 8086 357a Server Board S1200BTS + 1503 82579V Gigabit Network Connection + 1043 849c P8P67 Deluxe Motherboard + 10cf 161c LIFEBOOK E752 + 8086 200d DH61CR motherboard + 1507 Ethernet Express Module X520-P2 + 1508 82598EB Gigabit BX Network Connection + 1509 82580 Gigabit Network Connection + 150a 82576NS Gigabit Network Connection + 150b 82598EB 10-Gigabit AT2 Server Adapter + 8086 a10c 82598EB 10-Gigabit AT2 Server Adapter + 8086 a11c 82598EB 10-Gigabit AT2 Server Adapter + 8086 a12c 82598EB 10-Gigabit AT2 Server Adapter + 150c 82583V Gigabit Network Connection + 150d 82576 Gigabit Backplane Connection + 8086 a10c Gigabit ET Quad Port Mezzanine Card + 150e 82580 Gigabit Network Connection + 103c 1780 NC365T 4-port Ethernet Server Adapter + 8086 12a1 Ethernet Server Adapter I340-T4 + 8086 12a2 Ethernet Server Adapter I340-T4 + 150f 82580 Gigabit Fiber Network Connection + 1510 82580 Gigabit Backplane Connection + 1511 82580 Gigabit SFP Connection + 1513 CV82524 Thunderbolt Controller [Light Ridge 4C 2010] + 1514 Ethernet X520 10GbE Dual Port KX4 Mezz + 8086 000b Ethernet X520 10GbE Dual Port KX4 Mezz + 1515 X540 Ethernet Controller Virtual Function + 1516 82580 Gigabit Network Connection + 8086 12b1 Ethernet Server Adapter I340-T2 + 8086 12b2 Ethernet Server Adapter I340-T2 + 1517 82599ES 10 Gigabit Network Connection + 1137 006a UCS CNA M61KR-I Intel Converged Network Adapter + 1518 82576NS SerDes Gigabit Network Connection + 151a DSL2310 Thunderbolt Controller [Eagle Ridge 2C 2011] + 151b CVL2510 Thunderbolt Controller [Light Peak 2C 2010] + 151c 82599 10 Gigabit TN Network Connection + 108e 7b13 Dual 10GBASE-T LP + 151d Ethernet Connection E823-L for QSFP + 1520 I350 Ethernet Controller Virtual Function + 1521 I350 Gigabit Network Connection + 1028 0602 Gigabit 2P I350-t LOM + 1028 0693 Gigabit 2P I350-t LOM + 1028 06e2 Gigabit 2P I350-t LOM + 1028 0757 Gigabit I350-t LOM + 1028 075a Gigabit I350-t LOM + 1028 1f60 Gigabit 4P I350-t rNDC + 1028 1f62 Gigabit 4P X540/I350 rNDC + 1028 1fa8 Ethernet 10G 4P X550/I350 rNDC + 1028 1fa9 Ethernet 10G 4P X550 rNDC + 1028 1faa Gigabit 4P X550/I350 rNDC + 1028 ff9a Gigabit 4P X710/I350 rNDC + 103c 17d1 Ethernet 1Gb 4-port 366FLR Adapter + 103c 2003 Ethernet 1Gb 2-port 367i Adapter + 103c 2226 Ethernet 1Gb 1-port 364i Adapter + 103c 337f Ethernet 1Gb 2-port 361i Adapter + 103c 3380 Ethernet 1Gb 4-port 366i Adapter + 103c 339e Ethernet 1Gb 2-port 361T Adapter + 103c 8157 Ethernet 1Gb 4-port 366T Adapter + 108e 7b16 Quad Port GbE PCIe 2.0 ExpressModule, UTP + 108e 7b18 Quad Port GbE PCIe 2.0 Low Profile Adapter, UTP + 1093 7648 PCIe-8237R Ethernet Adapter + 1093 7649 PCIe-8236 Ethernet Adapter + 1093 76b1 PCIe-8237R-S Ethernet Adapter + 1093 775b PCIe-8237 Ethernet Adapter + 10a9 802a UV2-BaseIO dual-port GbE + 1137 023e 1GigE I350 LOM + 15d9 0000 AOC-SGP-i4 + 15d9 0652 Dual Port i350 GbE MicroLP [AOC-CGP-i2] + 17aa 1074 ThinkServer I350-T4 AnyFabric + 17aa 4005 I350 Gigabit Network Connection + 18d4 0c07 I350 1Gb 2-port RJ45 OCP Mezz Card MOP41-I-1GT2 + 193d 1005 360T-B + 193d 1007 360T-L +# NIC-ETH360T-3S-4P OCP3.0 4x1G Base-T Card + 193d 1080 NIC-ETH360T-3S-4P + 1bd4 001d 1G base-T QP EP014Ti1 Adapter + 1bd4 0035 1G base-T QP EP014Ti1 Adapter + 1bd4 0066 F014I350 + 1bd4 008a F012I350 + 1bd4 008d ENFI1100-T4 + 4c52 0350 I350 1Gb 2-port Ethernet Network Adapter + 4c52 1350 LREC9222HT Dual-port 1Gb Ethernet Network Adapter + 4c52 2003 LRES2003PT Dual-port 1Gb Ethernet Network Adapter + 4c52 2005 LRES2005PT Quad-port 1Gb Ethernet Network Adapter + 4c52 2006 LRES2006PT Six-port 1Gb Ethernet Network Adapter + 4c52 2008 LRES2008PT Eight-port 1Gb Ethernet Network Adapter + 4c52 2018 LRES2018PT Twelve-port 1Gb Ethernet Network Adapter + 4c52 2202 LRES2202PT Dual-port 1Gb Ethernet Network Adapter + 4c52 2217 LRES2217PT Dual-port 1Gb Ethernet Network Adapter + 4c52 3010 LRES3010PF Dual-port 1Gb Ethernet Server Adapter for OCP + 4c52 3023 LRES3023PT Quad-port 1Gb Ethernet Server Adapter for OCP + 4c52 3041 LRES3041PT Dual-port 1Gb Ethernet Server Adapter for OCP + 4c52 4006 LRES4006MT Quad-port 1Gb Ethernet Netwaork Adapter + 4c52 9712 LREC9712HT Dual-port 10Gb Ethernet Network Adapter + 8086 0001 Ethernet Server Adapter I350-T4 + 8086 0002 Ethernet Server Adapter I350-T2 + 8086 0003 Ethernet Network Adapter I350-T4 for OCP NIC 3.0 + 8086 00a1 Ethernet Server Adapter I350-T4 + 8086 00a2 Ethernet Server Adapter I350-T2 + 8086 00a3 Ethernet Network Adapter I350-T4 for OCP NIC 3.0 + 8086 00aa Ethernet Network Adapter I350-T4 for OCP NIC 3.0 + 8086 4017 Ethernet Network Adapter I350-T4 for OCP NIC 3.0 + 8086 5001 Ethernet Server Adapter I350-T4 + 8086 5002 Ethernet Server Adapter I350-T2 + 8086 5003 Ethernet 1G 4P I350-t OCP + 1522 I350 Gigabit Fiber Network Connection + 108e 7b17 Quad Port GbE PCIe 2.0 ExpressModule, MMF + 108e 7b19 Dual Port GbE PCIe 2.0 Low Profile Adapter, MMF + 4c52 1006 LRES1006PF Six-port 1Gb Ethernet Network Adapter + 4c52 2203 LRES2203PF Dual-port 1Gb Ethernet Network Adapter + 4c52 9710 LREC9710HF Single-port 1Gb Ethernet Network Adapter + 4c52 9712 LREC9712HF Dual-port 1Gb Ethernet Network Adapter + 4c52 9714 LREC9714HF Quad-port 1Gb Ethernet Network Adapter + 8086 0002 Ethernet Server Adapter I350-T2 + 8086 0003 Ethernet Server Adapter I350-F4 + 8086 0004 Ethernet Server Adapter I350-F2 + 8086 0005 Ethernet Server Adapter I350-F1 + 8086 00a2 Ethernet Server Adapter I350-T2 + 8086 00a3 Ethernet Server Adapter I350-F4 + 8086 00a4 Ethernet Server Adapter I350-F2 + 1523 I350 Gigabit Backplane Connection + 1028 0060 Gigabit 2P I350 LOM + 1028 1f9b Gigabit 4P I350-t bNDC + 103c 1784 Ethernet 1Gb 2-port 361FLB Adapter + 103c 18d1 Ethernet 1Gb 2-port 361FLB Adapter + 103c 1989 Ethernet 1Gb 2-port 363i Adapter + 103c 339f Ethernet 1Gb 4-port 366M Adapter + 4c52 9714 LREC9714HT Quad-port 10Gb Ethernet Network Adapter + 8086 1f52 1GbE 4P I350 Mezz + 1524 I350 Gigabit Connection + 1525 82567V-4 Gigabit Network Connection + 1526 82576 Gigabit Network Connection + 8086 a05c Gigabit ET2 Quad Port Server Adapter + 8086 a06c Gigabit ET2 Quad Port Server Adapter + 1527 82580 Gigabit Fiber Network Connection + 8086 0001 Ethernet Server Adapter I340-F4 + 8086 0002 Ethernet Server Adapter I340-F4 + 1528 Ethernet Controller 10-Gigabit X540-AT2 + 1028 1f61 Ethernet 10G 4P X540/I350 rNDC + 103c 192d 561FLR-T 2-port 10Gb Ethernet Adapter + 103c 2004 Ethernet 10Gb 2-port 561i Adapter + 103c 211a Ethernet 10Gb 2-port 561T Adapter + 108e 4853 Ethernet Controller 10-Gigabit X540-AT2 + 108e 7b14 Sun Dual Port 10 GbE PCIe 2.0 ExpressModule, Base-T + 108e 7b15 Sun Dual Port 10 GbE PCIe 2.0 Low Profile Adapter, Base-T + 1137 00bf Ethernet Converged Network Adapter X540-T2 + 1170 0052 Ethernet Controller 10-Gigabit X540-AT2 + 15d9 0734 AOC-STG-I2T + 17aa 1073 ThinkServer X540-T2 AnyFabric + 17aa 4006 Ethernet Controller 10-Gigabit X540-AT2 + 1bd4 001a 10G base-T DP ER102Ti3 Rack Adapter + 1bd4 0033 10G base-T DP EP102Ti3 Adapter + 1bd4 0034 10G base-T DP EP102Ti3A Adapter + 4c52 9802 LREC9802BT Dual-port 10Gb Ethernet Network Adapter + 8086 0001 Ethernet Converged Network Adapter X540-T2 + 8086 0002 Ethernet Converged Network Adapter X540-T1 + 8086 001a Ethernet Converged Network Adapter X540-T2 + 8086 00a2 Ethernet Converged Network Adapter X540-T1 + 8086 1f61 Ethernet 10G 4P X540/I350 rNDC + 8086 5003 Ethernet 10G 2P X540-t Adapter + 8086 5004 Ethernet 10G 2P X540-t Adapter + 1529 82599 10 Gigabit Dual Port Network Connection with FCoE + 152a 82599 10 Gigabit Dual Port Backplane Connection with FCoE + 152e 82599 Virtual Function + 152f I350 Virtual Function + 1530 X540 Virtual Function + 1531 I210 Gigabit Unprogrammed + 1533 I210 Gigabit Network Connection + 1028 0b35 I210 Gigabit Network Connection + 103c 0003 Ethernet I210-T1 GbE NIC + 1059 0180 RD10019 1GbE interface + 1093 7706 Compact Vision System Ethernet Adapter + 10a9 802c UV300 BaseIO single-port GbE + 10a9 802d UV3000 BaseIO GbE Network + 17aa 1059 I210 Gigabit Network Connection + 17aa 1100 ThinkServer Ethernet Server Adapter + 17aa 1509 I210 Gigabit Network Connection + 17aa 404d I210 PCIe 1Gb 1-Port RJ45 LOM + 17aa 407a I210 PCIe 1Gb 1-Port RJ45 LOM + 4c52 1051 LRES1051PT Dual-port 1Gb Ethernet Network Adapter + 4c52 1210 LREC9204CT Single-port 1Gb Ethernet Network Adapter + 4c52 2057 LRES2057PT Dual-port 1Gb Ethernet Network Adapter + 4c52 2206 LRES2206PT Single-port 1Gb Ethernet Network Adapter + 4c52 2210 LRES2210PT Single-port 1Gb Ethernet Network Adapter + 4c52 2211 LRES2211PT Single-port 1Gb Ethernet Network Adapter + 4c52 2214 LRES2214PT Single-port 1Gb Ethernet Network Adapter + 4c52 3002 LRES3002PT Dual-port 1Gb Ethernet Network Adapter + 4c52 3004 LRES3004PT Quad-port 1Gb Ethernet Network Adapter + 8086 0001 Ethernet Server Adapter I210-T1 + 8086 0002 Ethernet Server Adapter I210-T1 + 1536 I210 Gigabit Fiber Network Connection + 4c52 2204 LRES2204PT Single-port 1Gb Ethernet Network Adapter + 4c52 2212 LRES2212PF Single-port 1Gb Ethernet Network Adapter + 4c52 2213 LRES2213PF Single-port 1Gb Ethernet Network Adapter + 4c52 6230 LREC6230PF Single-port 1Gb Ethernet Network Adapter + 1537 I210 Gigabit Backplane Connection + 1059 0110 T4005 1GbE interface + 1059 0111 T4007 1GbE interface + 1059 0120 T4008 1GbE interface + 1059 0130 T4009 1GbE interface + 1059 0140 T2035 1GbE interface + 1059 0150 RD-01068 1GbE interface + 1059 0170 RD-01213 10GbE interface + 1538 I210 Gigabit Network Connection + 1539 I211 Gigabit Network Connection + 153a Ethernet Connection I217-LM + 103c 1909 ZBook 15 + 103c 1998 EliteDesk 800 G1 + 17aa 220e ThinkPad T440p + 17aa 309f ThinkCentre M83 + 153b Ethernet Connection I217-V + 1547 DSL3510 Thunderbolt Controller [Cactus Ridge 4C 2012] + 1548 DSL3310 Thunderbolt Controller [Cactus Ridge 2C 2012] + 1549 DSL2210 Thunderbolt Controller [Port Ridge 1C 2011] + 154a Ethernet Server Adapter X520-4 + 8086 011a Ethernet Converged Network Adapter X520-4 + 8086 011b Ethernet Converged Network Adapter X520-4 + 8086 011c Ethernet Converged Network Adapter X520-4 + 154c Ethernet Virtual Function 700 Series + 154d Ethernet 10G 2P X520 Adapter + 8086 7b11 10GbE 2P X520 Adapter + 1557 82599 10 Gigabit Network Connection + 17aa 4008 82599EN 10 Gigabit Network Connection + 1bd4 001c 10G SFP+ SP ER101Fi4 Rack Adapter + 1bd4 0030 10G SFP+ SP EP101Fi4A Adapter + 8086 0001 Ethernet OCP Server Adapter X520-1 + 1558 Ethernet Converged Network Adapter X520-Q1 + 8086 011a Ethernet Converged Network Adapter X520-Q1 + 8086 011b Ethernet Converged Network Adapter X520-Q1 + 1559 Ethernet Connection I218-V + 155a Ethernet Connection I218-LM + 17aa 2214 ThinkPad X240 + 155c Ethernet Server Bypass Adapter + 8086 0001 Ethernet Server Bypass Adapter X540-T2 + 155d Ethernet Server Bypass Adapter + 8086 0001 Ethernet Server Bypass Adapter X520-SR2 + 8086 0002 Ethernet Server Bypass Adapter X520-LR2 + 1560 Ethernet Controller X540 + 4c52 9801 LREC9801BT Single-port 10Gb Ethernet Network Adapter + 1563 Ethernet Controller X550 + 1028 1fa8 Ethernet 10G 4P X550/I350 rNDC + 1028 1fa9 Ethernet 10G 4P X550 rNDC + 1137 02b2 X550-TX 10 Gig LOM + 1137 02b3 X550-TX 10 Gig LOM + 1170 0001 Intel Ethernet Controller X550-T2 OCP card + 14c0 1201 X550 10Gb 2P RJ45 OCP Mezz + 1590 00d1 Ethernet 10Gb 2-port 562T Adapter + 1590 00d2 Ethernet 10Gb 2-port 562FLR-T Adapter + 16b8 7217 Twin10G Thunderbolt 3 Edition + 18d4 0c08 X550 10Gb 2-port RJ45 OCP Mezz Card MOP81-I-10GT2 + 193d 1008 560T-B + 193d 1009 560T-L + 193d 1011 UN-NIC-ETH563T-sL-2P + 4c52 1025 LRES1025PT Dual-port 10Gb Ethernet Network Adapter + 4c52 9812 LREC9812BT Dual-port 10Gb Ethernet Network Adapter + 8086 0001 Ethernet Converged Network Adapter X550-T2 + 8086 001a Ethernet Converged Network Adapter X550-T2 + 8086 001b Ethernet Server Adapter X550-T2 for OCP + 8086 001d Ethernet 10G 2P X550-t Adapter + 8086 0022 Ethernet Converged Network Adapter X550-T2 + 1564 X550 Virtual Function + 1565 X550 Virtual Function + 1566 DSL4410 Thunderbolt NHI [Redwood Ridge 2C 2013] + 1567 DSL4410 Thunderbolt Bridge [Redwood Ridge 2C 2013] + 1568 DSL4510 Thunderbolt NHI [Redwood Ridge 4C 2013] + 1569 DSL4510 Thunderbolt Bridge [Redwood Ridge 4C 2013] + 156a DSL5320 Thunderbolt 2 NHI [Falcon Ridge 2C 2013] + 156b DSL5320 Thunderbolt 2 Bridge [Falcon Ridge 2C 2013] + 156c DSL5520 Thunderbolt 2 NHI [Falcon Ridge 4C 2013] + 156d DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013] + 156f Ethernet Connection I219-LM + 1028 06dc Latitude E7470 + 103c 8079 EliteBook 840 G3 + 17aa 2247 ThinkPad T570 + 1570 Ethernet Connection I219-V + 1571 Ethernet Virtual Function 700 Series + 1572 Ethernet Controller X710 for 10GbE SFP+ + 1028 0000 Ethernet 10G X710 rNDC + 1028 1f99 Ethernet 10G 4P X710/I350 rNDC + 1028 1f9c Ethernet 10G 4P X710 SFP+ rNDC + 103c 0000 Ethernet 10Gb 562SFP+ Adapter + 103c 22fc Ethernet 10Gb 2-port 562FLR-SFP+ Adapter + 103c 22fd Ethernet 10Gb 2-port 562SFP+ Adapter + 1137 0000 Ethernet Converged NIC X710-DA + 1137 013b Ethernet Converged NIC X710-DA4 + 1137 020a Ethernet Converged NIC X710-DA2 + 1590 0000 Ethernet Controller X710 for 10GbE SFP+ + 1590 0225 Ethernet 10GbE 4P 563SFP+ Adapter + 1590 022f Ethernet 10Gb 2-port 564i Communication Board + 17aa 0000 ThinkServer X710 AnyFabric for 10GbE SFP+ + 17aa 4001 ThinkServer X710-4 AnyFabric for 10GbE SFP+ + 17aa 4002 ThinkServer X710-2 AnyFabric for 10GbE SFP+ + 193d 1020 NIC-ETH561F-sL-4x10G + 193d 1021 NIC-ETH561F-sL-2x10G +# NIC-ETH561F-3S-2P OCP3.0 2x10G SFP+ Card + 193d 1081 NIC-ETH561F-3S-2P + 19e5 d11c Ethernet 2-port X710 10Gb SFP+ Adapter SP330 + 1bd4 0042 10G SFP+ DP EP102Fi4 Adapter + 1bd4 0056 Ethernet Network Adapter X710-BM2 for OCP NIC 3.0 + 1bd4 0065 F102IX710 + 1bd4 0074 Ethernet Network Adapter X710-BM2 for lldp + 1bd4 008b F102IX710 + 4c52 3003 LRES3003PF Quad-port 10Gb Ethernet Server Adapter for OCP + 4c52 3007 LRES3007PF Quad-port 10Gb Ethernet Server Adapter for OCP + 4c52 3039 LRES3039PF Dual-port 10Gb Ethernet Server Adapter for OCP + 4c52 9804 LREC9804BF Quad-port 10Gb Ethernet Server Adapter + 4c52 9812 LREC9812BF Dual-port 10Gb Ethernet Server Adapter + 8086 0000 Ethernet Converged Network Adapter X710 + 8086 0001 Ethernet Converged Network Adapter X710-4 + 8086 0002 Ethernet Converged Network Adapter X710-4 + 8086 0004 Ethernet Converged Network Adapter X710-4 + 8086 0005 Ethernet Converged Network Adapter X710 + 8086 0006 Ethernet Converged Network Adapter X710 + 8086 0007 Ethernet Converged Network Adapter X710-2 + 8086 0008 Ethernet Converged Network Adapter X710-2 + 8086 0009 Ethernet Controller X710 for 10GbE SFP+ + 8086 000a Ethernet Controller X710 for 10GbE SFP+ + 8086 000b Ethernet Server Adapter X710-DA2 for OCP + 8086 000d Ethernet Controller X710 for 10GbE SFP+ + 8086 000e Ethernet Server Adapter OCP X710-2 + 8086 000f Ethernet Server Adapter OCP X710-2 + 8086 0010 Ethernet Converged Network Adapter X710 + 8086 0011 Ethernet Network Adapter X710-2 for OCP NIC 3.0 + 8086 0012 Ethernet Network Adapter X710-4 for OCP NIC 3.0 + 8086 0013 Ethernet 10G 2P X710 OCP + 8086 0014 Ethernet 10G 4P X710 OCP + 8086 0015 Ethernet Server Adapter X710-DA2 for OCP + 8086 00a1 Ethernet Network Adapter X710-2 for OCP NIC 3.0 + 8086 00a2 Ethernet Network Adapter X710-4 for OCP NIC 3.0 + 8086 4005 Ethernet Controller X710 for 10GbE SFP+ + 8086 4006 Ethernet Controller X710 for 10GbE SFP+ + 8086 4007 Ethernet Controller X710 for 10GbE SFP+ + 1574 Ethernet Controller XL710 Emulation + 1575 DSL6340 Thunderbolt 3 NHI [Alpine Ridge 2C 2015] + 1576 DSL6340 Thunderbolt 3 Bridge [Alpine Ridge 2C 2015] + 1577 DSL6540 Thunderbolt 3 NHI [Alpine Ridge 4C 2015] + 1578 DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015] + 157b I210 Gigabit Network Connection + ea50 cc10 RXi2-BP + 157c I210 Gigabit Backplane Connection + 157d DSL5110 Thunderbolt 2 NHI (Low Power) [Win Ridge 2C 2014] + 157e DSL5110 Thunderbolt 2 Bridge (Low Power) [Win Ridge 2C 2014] + 1580 Ethernet Controller XL710 for 40GbE backplane + 1581 Ethernet Controller X710 for 10GbE backplane + 1028 0000 Ethernet 10G X710-k bNDC + 1028 1f98 Ethernet 10G 4P X710-k bNDC + 1028 1f9e Ethernet 10G 2P X710-k bNDC + 1059 0150 RD-01068 10GbE-KR interface + 1059 0170 RD-01213 10GbE interface + 1590 0000 Ethernet 2-port 563i Adapter + 1590 00f8 Ethernet 2-port 563i Adapter + 193d 100e NIC-ETH561i-Mb-4x10G + 8086 0000 Ethernet Converged Network Adapter XL710-Q2 + 1583 Ethernet Controller XL710 for 40GbE QSFP+ + 1028 0000 Ethernet 40G 2P XL710 QSFP+ rNDC + 1028 1f9f Ethernet 40G 2P XL710 QSFP+ rNDC + 108e 0000 10 Gb/40 Gb Ethernet Adapter + 108e 7b1b 10 Gb/40 Gb Ethernet Adapter + 108e 7b1d 10Gb/40Gb Ethernet Adapter + 1137 0000 Ethernet Converged NIC XL710-QDA2 + 1137 013c Ethernet Converged NIC XL710-QDA2 + 4c52 3042 LRES3042PF Dual-port 40Gb Ethernet Server Adapter for OCP + 4c52 9902 LREC9902BF Dual-port 40Gb Ethernet Server Adapter + 8086 0000 Ethernet Converged Network Adapter XL710-Q2 + 8086 0001 Ethernet Converged Network Adapter XL710-Q2 + 8086 0002 Ethernet Converged Network Adapter XL710-Q2 + 8086 0003 Ethernet I/O Module XL710-Q2 + 8086 0004 Ethernet Server Adapter XL710-Q2OCP + 8086 0006 Ethernet Converged Network Adapter XL710-Q2 + 1584 Ethernet Controller XL710 for 40GbE QSFP+ + 4c52 9901 LREC9901BF Single-port 40Gb Ethernet Server Adapter + 8086 0000 Ethernet Converged Network Adapter XL710-Q1 + 8086 0001 Ethernet Converged Network Adapter XL710-Q1 + 8086 0002 Ethernet Converged Network Adapter XL710-Q1 + 8086 0003 Ethernet I/O Module XL710-Q1 + 8086 0004 Ethernet Server Adapter XL710-Q1OCP + 1585 Ethernet Controller X710 for 10GbE QSFP+ + 1586 Ethernet Controller X710 for 10GBASE-T + 108e 0000 Ethernet Controller X710 for 10GBASE-T + 108e 4857 Ethernet Controller X710 for 10GBASE-T + 1587 Ethernet Controller XL710 for 20GbE backplane + 103c 0000 Ethernet 10/20Gb 2-port 660FLB Adapter + 103c 22fe Ethernet 10/20Gb 2-port 660FLB Adapter + 1588 Ethernet Controller XL710 for 20GbE backplane + 103c 0000 Ethernet 10/20Gb 2-port 660M Adapter + 103c 22ff Ethernet 10/20Gb 2-port 660M Adapter + 1137 0000 Ethernet Network Adapter XXV710 + 1137 02b4 Ethernet Network Adapter XXV710 OCP 2.0 + 1589 Ethernet Controller X710/X557-AT 10GBASE-T + 108e 0000 Quad Port 10GBase-T Adapter + 108e 7b1c Quad Port 10GBase-T Adapter + 4c52 9804 LREC9804BT Quad-port 10Gb Ethernet Network Adapter + 8086 0000 Ethernet Converged Network Adapter X710-T + 8086 0001 Ethernet Converged Network Adapter X710-T4 + 8086 0002 Ethernet Converged Network Adapter X710-T4 + 8086 0003 Ethernet Converged Network Adapter X710-T + 8086 00a0 Ethernet Converged Network Adapter X710-T4 + 8086 1003 Ethernet Converged Network Adapter X710-T + 158a Ethernet Controller XXV710 for 25GbE backplane + 1590 0000 10/25Gb Ethernet Adapter + 1590 0286 Synergy 4610C 10/25Gb Ethernet Adapter + 8086 0000 Ethernet Controller XXV710 for 25GbE backplane + 8086 000a Ethernet 25G 2P XXV710 Mezz + 158b Ethernet Controller XXV710 for 25GbE SFP28 + 1137 0000 Ethernet Network Adapter XXV710 + 1137 0225 Ethernet Network Adapter XXV710 + 1137 02b4 Ethernet Network Adapter XXV710 OCP 2.0 +# UEFI PXE Disabled + 1374 0230 Single Port 25 Gigabit Ethernet PCI Express Server Adapter (PE325G1I71) +# With UEFI PXE Enabled + 1374 0231 Single Port 25 Gigabit Ethernet PCI Express Server Adapter (PE325G1I71EU) +# UEFI PXE Disabled + 1374 0234 Dual Port 25 Gigabit Ethernet PCI Express Server Adapter (PE325G2I71) +# With UEFI PXE Enabled + 1374 0235 Dual Port 25 Gigabit Ethernet PCI Express Server Adapter (PE325G2I71EU) +# PCIe x8 Bifurcated as x4x4, UEFI PXE Disabled, low profile + 1374 0238 Quad Port 25 Gigabit Ethernet PCI Express Server Adapter (PE325G4I71L) +# PCIe x8 Bifurcated as x4x4, UEFI PXE Enabled, low profile + 1374 0239 Quad Port 25 Gigabit Ethernet PCI Express Server Adapter (PE325G4I71LEU) +# PCIe x16 Bifurcated as x8x8, UEFI PXE Disabled, low profile + 1374 023a Quad Port 25 Gigabit Ethernet PCI Express Server Adapter (PE31625G4I71L) +# PCIe x16 Bifurcated as x8x8, UEFI PXE Enabled, low profile + 1374 023b Quad Port 25 Gigabit Ethernet PCI Express Server Adapter (PE31625G4I71LEU) + 1590 0000 Ethernet Network Adapter XXV710-2 + 1590 0253 Ethernet 10/25/Gb 2-port 661SFP28 Adapter + 4c52 3017 LRES3017PF Dual-port 25Gb Ethernet Server Adapter for OCP + 8086 0000 Ethernet Network Adapter XXV710 + 8086 0001 Ethernet Network Adapter XXV710-2 + 8086 0002 Ethernet Network Adapter XXV710-2 + 8086 0003 Ethernet Network Adapter XXV710-1 + 8086 0004 Ethernet Network Adapter XXV710-1 + 8086 0005 Ethernet Network Adapter OCP XXV710-2 + 8086 0006 Ethernet Network Adapter OCP XXV710-2 + 8086 0007 Ethernet Network Adapter OCP XXV710-1 + 8086 0008 Ethernet Network Adapter OCP XXV710-1 + 8086 0009 Ethernet 25G 2P XXV710 Adapter + 8086 000a Ethernet 25G 2P XXV710 OCP + 8086 000c Ethernet Network Adapter XXV710-DA2 for OCP 3.0 + 8086 000d Ethernet 25G 2P XXV710 OCP + 8086 4001 Ethernet Network Adapter XXV710-2 + 1591 Ethernet Controller E810-C for backplane + 8086 bcce Ethernet Controller E810-C for Intel(R) Open FPGA Stack + 1592 Ethernet Controller E810-C for QSFP + 1137 02bf E810CQDA2 2x100 GbE QSFP28 PCIe NIC + 193d 1050 NIC-ETH1060F-LP-2P 2x100GbE Ethernet PCIe Card + 4c52 1014 LRES1014PF Dual-port 100Gb Ethernet Server Adapter + 4c52 3026 LRES3026PF Dual-port 100Gb Ethernet Server Adapter for OCP + 8086 0001 Ethernet Network Adapter E810-C-Q1 + 8086 0002 Ethernet Network Adapter E810-C-Q2 + 8086 0004 Ethernet Network Adapter E810-C-Q2 + 8086 0005 Ethernet Network Adapter E810-C-Q1 for OCP3.0 + 8086 0006 Ethernet Network Adapter E810-C-Q2 for OCP3.0 + 8086 0009 Ethernet Network Adapter E810-C-Q1 + 8086 000a Ethernet Network Adapter E810-C-Q1 for OCP + 8086 000b Ethernet 100G 2P E810-C Adapter + 8086 000c Ethernet 100G 2P E810-C OCP + 8086 000d Ethernet Network Adapter E810-L-Q2 for OCP 3.0 + 8086 000e Ethernet Network Adapter E810-2C-Q2 + 8086 000f Ethernet Network Adapter E810-C-Q2T + 8086 0010 Ethernet 100G 2P E810-C-stg Adapter + 8086 0011 Ethernet Network Adapter E810-C-Q1 for OCP3.0 + 8086 0012 Ethernet 100G 2P E810-C-st Adapter + 8086 0013 Ethernet Network Adapter E810-C-Q1 for OCP 3.0 + 8086 0014 Ethernet 100G 2P E810-2C Adapter + 1593 Ethernet Controller E810-C for SFP + 1137 02c3 E810XXVDA4 4x25/10 GbE SFP28 PCIe NIC + 1137 02e9 E810XXVDA4TG 4x25/10 GbE SFP28 PCIe NIC + 1137 02ea E810XXVDA4T 4x25/10 GbE SFP28 PCIe NIC + 4c52 1023 LRES1023PF Quad-port 25Gb Ethernet Server Adapter + 4c52 3027 LRES3027PF Quad-port 25Gb Ethernet Server Adapter for OCP + 8086 0002 Ethernet Network Adapter E810-L-2 + 8086 0005 Ethernet Network Adapter E810-XXV-4 + 8086 0006 Ethernet Network Adapter E810-XXV-4 + 8086 0007 Ethernet Network Adapter E810-XXV-4 + 8086 0008 Ethernet Network Adapter E810-XXV-2 + 8086 0009 Ethernet Network Adapter E810-XXV-2 for OCP 2.0 + 8086 000a Ethernet 25G 4P E810-XXV Adapter + 8086 000c Ethernet Network Adapter E810-XXV-4 for OCP 3.0 + 8086 000d Ethernet 25G 4P E810-XXV OCP + 8086 000e Ethernet Network Adapter E810-XXV-4T + 8086 000f Ethernet 25G 4P E810-XXV-stg Adapter + 8086 0010 Ethernet 25G 4P E810-XXV-st Adapter + 8086 4010 Ethernet Network Adapter E810-XXV-4 + 8086 4013 Ethernet Network Adapter E810-XXV-4 for OCP 3.0 + 8086 401c Ethernet Network Adapter E810-XXV-4 for OCP 3.0 + 1599 Ethernet Controller E810-XXV for backplane + 8086 0001 Ethernet 25G 2P E810-XXV-k Mezz + 159a Ethernet Controller E810-XXV for QSFP + 159b Ethernet Controller E810-XXV for SFP + 1137 02be E810XXVDA2 2x25/10 GbE SFP28 PCIe NIC +# NIC-ETH660F-3S-2P 2x25GbE SFP28 Network Adapter for OCP 3.0 + 193d 1085 NIC-ETH660F-3S-2P + 1bd4 0057 Ethernet Network Adapter E810-XXVAM2 + 1bd4 0058 Ethernet Network Adapter E810-XXVAM2 for OCP 3.0 + 1bd4 006e Ethernet Network Adapter E810-XXVAM2 for BD + 1bd4 0083 Ethernet Network Adapter E810-XXVAM2 for lldp + 1bd4 00a0 S252IE810 + 1eec 0102 VSE-225-41E Dual-port 10Gb/25Gb Etherent PCIe + 4c52 0003 LRES1021PF Dual-port 25Gb Ethernet Server Adapter + 4c52 3029 LRES3029PF Dual-port 25Gb Ethernet Server Adapter for OCP + 8086 0001 Ethernet 25G 2P E810-XXV OCP + 8086 0002 Ethernet 25G 2P E810-XXV Adapter + 8086 0003 Ethernet Network Adapter E810-XXV-2 + 8086 0005 Ethernet Network Adapter E810-XXV-2 for OCP 3.0 + 8086 4001 Ethernet Network Adapter E810-XXV-2 + 8086 4002 Ethernet Network Adapter E810-XXV-2 for OCP 3.0 + 8086 4003 Ethernet Network Adapter E810-XXV-2 + 8086 4015 Ethernet Network Adapter E810-XXV-2 for OCP 3.0 + 15a0 Ethernet Connection (2) I218-LM + 15a1 Ethernet Connection (2) I218-V + 15a2 Ethernet Connection (3) I218-LM + 15a3 Ethernet Connection (3) I218-V + 15a4 Ethernet Switch FM10000 Host Interface + 15a5 Ethernet Switch FM10000 Host Virtual Interface + 15a8 Ethernet Connection X552 Virtual Function + 15a9 X552 Virtual Function + 15aa Ethernet Connection X552 10 GbE Backplane + 1059 0120 T4008 10GbE interface + 15ab Ethernet Connection X552 10 GbE Backplane + 1059 0150 RD-01068 10GbE interface + 1059 0170 RD-01213 10GbE interface + 15ac Ethernet Connection X552 10 GbE SFP+ + 1059 0160 RD-01167 10GbE interface + 15ad Ethernet Connection X552/X557-AT 10GBASE-T + 15ae Ethernet Connection X552 1000BASE-T + 15b0 Ethernet Connection X552 Backplane + 15b4 X553 Virtual Function + 15b5 DSL6340 USB 3.1 Controller [Alpine Ridge] + 15b6 DSL6540 USB 3.1 Controller [Alpine Ridge] + 15b7 Ethernet Connection (2) I219-LM + 15b8 Ethernet Connection (2) I219-V + 1462 7994 H110M ECO/GAMING + 1462 7a72 H270 PC MATE + 15b9 Ethernet Connection (3) I219-LM + 15bb Ethernet Connection (7) I219-LM + 15bc Ethernet Connection (7) I219-V + 15bd Ethernet Connection (6) I219-LM + 15be Ethernet Connection (6) I219-V + 15bf JHL6240 Thunderbolt 3 NHI (Low Power) [Alpine Ridge LP 2016] + 15c0 JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016] + 15c1 JHL6240 Thunderbolt 3 USB 3.1 Controller (Low Power) [Alpine Ridge LP 2016] + 15c2 Ethernet Connection X553 Backplane + 15c3 Ethernet Connection X553 Backplane + 15c4 Ethernet Connection X553 10 GbE SFP+ + 15c5 X553 Virtual Function + 15c6 Ethernet Connection X553 1GbE + 15c7 Ethernet Connection X553 1GbE + 15c8 Ethernet Connection X553/X557-AT 10GBASE-T + 15ce Ethernet Connection X553 10 GbE SFP+ + 15d0 Ethernet SDI Adapter + 8086 0001 Ethernet SDI Adapter FM10420-100GbE-QDA2 + 8086 0002 Ethernet SDI Adapter FM10840-MTP2 + 15d1 Ethernet Controller 10G X550T + 4c52 9811 LREC9811BT Single-port 10Gb Ethernet Network Adapter + 8086 0002 Ethernet Converged Network Adapter X550-T1 + 8086 001b Ethernet Server Adapter X550-T1 for OCP + 8086 0021 Ethernet Converged Network Adapter X550-T1 + 8086 00a2 Ethernet Converged Network Adapter X550-T1 + 15d2 JHL6540 Thunderbolt 3 NHI (C step) [Alpine Ridge 4C 2016] + 15d3 JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] + 15d4 JHL6540 Thunderbolt 3 USB Controller (C step) [Alpine Ridge 4C 2016] + 15d5 Ethernet SDI Adapter FM10420-25GbE-DA2 + 8086 0001 Ethernet SDI Adapter FM10420-25GbE-DA2 + 15d6 Ethernet Connection (5) I219-V + 15d7 Ethernet Connection (4) I219-LM + 15d8 Ethernet Connection (4) I219-V + 17aa 2247 ThinkPad T570 + 17aa 224f ThinkPad X1 Carbon 5th Gen + 17aa 225d ThinkPad T480 + 15d9 JHL6340 Thunderbolt 3 NHI (C step) [Alpine Ridge 2C 2016] + 15da JHL6340 Thunderbolt 3 Bridge (C step) [Alpine Ridge 2C 2016] + 15db JHL6340 Thunderbolt 3 USB 3.1 Controller (C step) [Alpine Ridge 2C 2016] + 15df Ethernet Connection (8) I219-LM + 15e0 Ethernet Connection (8) I219-V + 15e1 Ethernet Connection (9) I219-LM + 15e2 Ethernet Connection (9) I219-V + 15e3 Ethernet Connection (5) I219-LM + 15e4 Ethernet Connection X553 1GbE + 15e5 Ethernet Connection X553 1GbE + 15e7 JHL7540 Thunderbolt 3 Bridge [Titan Ridge 2C 2018] + 15e8 JHL7540 Thunderbolt 3 NHI [Titan Ridge 2C 2018] + 15e9 JHL7540 Thunderbolt 3 USB Controller [Titan Ridge 2C 2018] + 15ea JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018] + 15eb JHL7540 Thunderbolt 3 NHI [Titan Ridge 4C 2018] + 1028 09be Latitude 7410 + 15ec JHL7540 Thunderbolt 3 USB Controller [Titan Ridge 4C 2018] + 1028 09be Latitude 7410 + 15ef JHL7540 Thunderbolt 3 Bridge [Titan Ridge DD 2018] + 15f0 JHL7540 Thunderbolt 3 USB Controller [Titan Ridge DD 2018] + 15f2 Ethernet Controller I225-LM + 4c52 2031 LRES2031PT Single-port 2.5Gb Ethernet Network Adapter + 8086 0001 Ethernet Network Adapter I225-T1 + 8086 0002 Ethernet Network Adapter I225-T1 + 15f3 Ethernet Controller I225-V + 4c52 2031 LRES2031PT Single-port 2.5Gb Ethernet Network Adapter + 8086 0003 Intel(R) Ethernet Controller (3) I225-V + 15f4 Ethernet Connection (15) I219-LM + 15f5 Ethernet Connection (15) I219-V + 15f6 I210 Gigabit Ethernet Connection + 15f9 Ethernet Connection (14) I219-LM + 15fa Ethernet Connection (14) I219-V + 15fb Ethernet Connection (13) I219-LM + 15fc Ethernet Connection (13) I219-V + 15ff Ethernet Controller X710 for 10GBASE-T + 1014 0000 PCIe3 4-port 10GbE Base-T Adapter + 108e 7b1f Quad Port 10GBase-T Adapter - CP + 1137 0000 X710TLG GbE RJ45 PCIe NIC + 1137 02c1 X710T2LG 2x10 GbE RJ45 PCIe NIC + 1137 02c2 X710T4LG 4x10 GbE RJ45 PCIe NIC + 1137 02d9 Ethernet Network Adapter X710-T2L OCP 3.0 + 1137 02da Ethernet Network Adapter X710-T4L OCP 3.0 +# NIC-ETH565T-3S-2P OCP3.0 2x10G Base-T Card + 193d 1082 NIC-ETH565T-3S-2P + 4c52 1012 LRES1012PT Dual-port 10Gb Ethernet Network Adapter + 4c52 3021 LRES3021PT Dual-port 10Gb Ethernet Server Adapter for OCP + 8086 0000 Ethernet Network Adapter X710-TL + 8086 0001 Ethernet Network Adapter X710-T4L + 8086 0002 Ethernet Network Adapter X710-T4L + 8086 0003 Ethernet Network Adapter X710-T2L + 8086 0004 Ethernet Network Adapter X710-T2L + 8086 0005 Ethernet 10G 2P X710-T2L-t Adapter + 8086 0006 Ethernet 10G 4P X710-T4L-t Adapter + 8086 0007 Ethernet 10G 2P X710-T2L-t OCP + 8086 0008 Ethernet 10G 4P X710-T4L-t OCP + 8086 0009 Ethernet Network Adapter X710-T4L for OCP 3.0 + 8086 000a Ethernet Network Adapter X710-T4L for OCP 3.0 + 8086 000b Ethernet Network Adapter X710-T2L for OCP 3.0 + 8086 000c Ethernet Network Adapter X710-T2L for OCP 3.0 + 8086 000d Ethernet 10G 2P X710-T2L-t OCP + 8086 000f Ethernet Network Adapter X710-T2L for OCP 3.0 + 8086 4009 Ethernet Network Adapter X710-T2L + 8086 4012 Ethernet Network Adapter X710-T4L for OCP 3.0 + 8086 4018 Ethernet Network Adapter X710-T2L for OCP 3.0 + 8086 4019 Ethernet Network Adapter X710-T4L + 1600 Broadwell-U Host Bridge -OPI + 1601 Broadwell-U PCI Express x16 Controller + 1602 Broadwell-U Integrated Graphics + 1603 Broadwell-U Processor Thermal Subsystem + 1604 Broadwell-U Host Bridge -OPI + 1605 Broadwell-U PCI Express x8 Controller + 1606 HD Graphics + 1607 Broadwell-U CHAPS Device + 1608 Broadwell-U Host Bridge -OPI + 1609 Broadwell-U x4 PCIe + 160a Broadwell-U Integrated Graphics + 160b Broadwell-U Integrated Graphics + 160c Broadwell-U Audio Controller + 160d Broadwell-U Integrated Graphics + 160e Broadwell-U Integrated Graphics + 160f Broadwell-U SoftSKU + 1610 Broadwell-U Host Bridge - DMI + 1612 HD Graphics 5600 + 1614 Broadwell-U Host Bridge - DMI + 1616 HD Graphics 5500 + 103c 2216 ZBook 15u G2 Mobile Workstation + 1618 Broadwell-U Host Bridge - DMI + 161a Broadwell-U Integrated Graphics + 161b Broadwell-U Integrated Graphics + 161d Broadwell-U Integrated Graphics + 161e HD Graphics 5300 + 1622 Iris Pro Graphics 6200 + 1626 HD Graphics 6000 + 162a Iris Pro Graphics P6300 + 162b Iris Graphics 6100 + 162d Broadwell-U Integrated Graphics + 162e Broadwell-U Integrated Graphics + 1632 Broadwell-U Integrated Graphics + 1636 Broadwell-U Integrated Graphics + 163a Broadwell-U Integrated Graphics + 163b Broadwell-U Integrated Graphics + 163d Broadwell-U Integrated Graphics + 163e Broadwell-U Integrated Graphics + 1889 Ethernet Adaptive Virtual Function + 188a Ethernet Connection E823-C for backplane + 188b Ethernet Connection E823-C for QSFP + 188c Ethernet Connection E823-C for SFP + 1028 0abd Ethernet Connection 25G 4P E823-C LOM + 17aa 405e E823 25G/10G Ethernet LOM Controller + 188d Ethernet Connection E823-C/X557-AT 10GBASE-T + 188e Ethernet Connection E823-C 1GbE + 17aa 405f E823 1G Ethernet LOM Controller + 1890 Ethernet Connection E822-C for backplane + 1891 Ethernet Connection E822-C for QSFP + 1892 Ethernet Connection E822-C for SFP + 1893 Ethernet Connection E822-C/X557-AT 10GBASE-T + 1894 Ethernet Connection E822-C 1GbE + 1897 Ethernet Connection E822-L for backplane + 1898 Ethernet Connection E822-L for SFP + 1899 Ethernet Connection E822-L/X557-AT 10GBASE-T + 189a Ethernet Connection E822-L 1GbE + 18a0 Atom Processor P5xxx Series QAT + 18a1 C4XXX Series QAT Virtual Function + 18b3 Atom Processor P5xxx Series SATA Controller + 18d0 Atom Processor P5xxx Series USB xHCI Controller + 18d3 Atom Processor P5xxx Series MEI Controller + 18d6 Atom Processor P5xxx Series MEI Controller + 18df Atom Processor P5xxx Series SMBus Controller + 18e0 Atom Processor P5xxx Series SPI Controller + 18e1 Atom Processor P5xxx Series Trace Hub + 18ee 200xx Series QAT + 18ef 200xx Series QAT Virtual Function + 18f3 Atom Processor P5xxx Series SATA Controller + 1900 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers + 1901 6th-10th Gen Core Processor PCIe Controller (x16) + 1902 HD Graphics 510 + 1903 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem + 1028 06d6 Latitude 7275 tablet + 1028 06dc Latitude E7470 + 1028 06e4 XPS 15 9550 + 1028 06e6 Latitude 11 5175 2-in-1 + 1028 09be Latitude 7410 + 103c 825b OMEN-17-w001nv + 17aa 225d ThinkPad T480 + 1904 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers + 1028 06dc Latitude E7470 + 1028 06f3 Latitude 3570 + 103c 8079 EliteBook 840 G3 + 17aa 2247 ThinkPad T570 + 17aa 382a B51-80 Laptop + 1905 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x8) + 1906 HD Graphics 510 + 17aa 382a B51-80 Laptop + 1908 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers + 1909 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x4) + 190b HD Graphics 510 + 190c Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers + 1028 06d6 Latitude 7275 tablet + 1028 06e6 Latitude 11 5175 2-in-1 + 190f Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers + 1910 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers + 1028 06e4 XPS 15 9550 + 103c 825b OMEN-17-w001nv + 1911 Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model + 1028 0869 Vostro 3470 + 1028 09be Latitude 7410 + 1462 7994 H110M ECO/GAMING + 1462 7a72 H270 PC MATE + 17aa 2247 ThinkPad T570 + 17aa 224f ThinkPad X1 Carbon 5th Gen + 17aa 225d ThinkPad T480 + 1912 HD Graphics 530 + 1916 Skylake GT2 [HD Graphics 520] + 1028 06dc Latitude E7470 + 1028 06f3 Latitude 3570 + 103c 8079 EliteBook 840 G3 + 17aa 2247 ThinkPad T570 + 1918 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers + 1919 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Imaging Unit + 1028 06d6 Latitude 7275 tablet + 1028 06e6 Latitude 11 5175 2-in-1 + 191b HD Graphics 530 + 1028 06e4 XPS 15 9550 + 103c 825b OMEN-17-w001nv + 191d HD Graphics P530 + 191e HD Graphics 515 + 1028 06d6 Latitude 7275 tablet + 1028 06e6 Latitude 11 5175 2-in-1 + 191f Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers + 1921 HD Graphics 520 + 1923 HD Graphics 535 + 1926 Iris Graphics 540 + 1927 Iris Graphics 550 + 192b Iris Graphics 555 + 192d Iris Graphics P555 + 1932 Iris Pro Graphics 580 + 193a Iris Pro Graphics P580 + 193b Iris Pro Graphics 580 + 193d Iris Pro Graphics P580 + 1960 80960RP (i960RP) Microprocessor + 101e 0431 MegaRAID 431 RAID Controller + 101e 0438 MegaRAID 438 Ultra2 LVD RAID Controller + 101e 0466 MegaRAID 466 Express Plus RAID Controller + 101e 0467 MegaRAID 467 Enterprise 1500 RAID Controller + 101e 0490 MegaRAID 490 Express 300 RAID Controller + 101e 0762 MegaRAID 762 Express RAID Controller + 101e 09a0 PowerEdge Expandable RAID Controller 2/SC + 1028 0467 PowerEdge Expandable RAID Controller 2/DC + 1028 1111 PowerEdge Expandable RAID Controller 2/SC + 103c 03a2 MegaRAID + 103c 10c6 MegaRAID 438, NetRAID-3Si + 103c 10c7 MegaRAID T5, Integrated NetRAID + 103c 10cc MegaRAID, Integrated NetRAID + 103c 10cd NetRAID-1Si + 105a 0000 SuperTrak + 105a 2168 SuperTrak Pro + 105a 5168 SuperTrak66/100 + 1111 1111 MegaRAID 466, PowerEdge Expandable RAID Controller 2/SC + 1111 1112 PowerEdge Expandable RAID Controller 2/SC + 113c 03a2 MegaRAID + e4bf 1010 CG1-RADIO + e4bf 1020 CU2-QUARTET + e4bf 1040 CU1-CHORUS + e4bf 3100 CX1-BAND + 1962 80960RM (i960RM) Microprocessor + 105a 0000 SuperTrak SX6000 I2O CPU + 1964 80960RN (i960RN) Microprocessor + 1980 Atom Processor C3000 Series System Agent + 19a1 Atom Processor C3000 Series Error Registers + 19a2 Atom Processor C3000 Series Root Complex Event Collector + 19a3 Atom Processor C3000 Series Integrated QAT Root Port + 19a4 Atom Processor C3000 Series PCI Express Root Port #0 + 19a5 Atom Processor C3000 Series PCI Express Root Port #1 + 19a6 Atom Processor C3000 Series PCI Express Root Port #2 + 19a7 Atom Processor C3000 Series PCI Express Root Port #3 + 19a8 Atom Processor C3000 Series PCI Express Root Port #4 + 19a9 Atom Processor C3000 Series PCI Express Root Port #5 + 19aa Atom Processor C3000 Series PCI Express Root Port #6 + 19ab Atom Processor C3000 Series PCI Express Root Port #7 + 19ac Atom Processor C3000 Series SMBus Contoller - Host + 19b0 Atom Processor C3000 Series SATA Controller 0 + 19b1 Atom Processor C3000 Series SATA Controller 0 + 19b2 Atom Processor C3000 Series SATA Controller 0 + 19b3 Atom Processor C3000 Series SATA Controller 0 + 19b4 Atom Processor C3000 Series SATA Controller 0 + 19b5 Atom Processor C3000 Series SATA Controller 0 + 19b6 Atom Processor C3000 Series SATA Controller 0 + 19b7 Atom Processor C3000 Series SATA Controller 0 + 19be Atom Processor C3000 Series SATA Controller 0 + 19bf Atom Processor C3000 Series SATA Controller 0 + 19c0 Atom Processor C3000 Series SATA Controller 1 + 19c1 Atom Processor C3000 Series SATA Controller 1 + 19c2 Atom Processor C3000 Series SATA Controller 1 + 19c3 Atom Processor C3000 Series SATA Controller 1 + 19c4 Atom Processor C3000 Series SATA Controller 1 + 19c5 Atom Processor C3000 Series SATA Controller 1 + 19c6 Atom Processor C3000 Series SATA Controller 1 + 19c7 Atom Processor C3000 Series SATA Controller 1 + 19ce Atom Processor C3000 Series SATA Controller 1 + 19cf Atom Processor C3000 Series SATA Controller 1 + 19d0 Atom Processor C3000 Series USB 3.0 xHCI Controller + 19d1 Atom Processor C3000 Series Integrated LAN Root Port #0 + 19d2 Atom Processor C3000 Series Integrated LAN Root Port #1 + 19d3 Atom Processor C3000 Series ME HECI 1 + 19d4 Atom Processor C3000 Series ME HECI 2 + 19d5 Atom Processor C3000 Series ME KT Controller + 19d6 Atom Processor C3000 Series ME HECI 3 + 19d8 Atom Processor C3000 Series HSUART Controller + 19dc Atom Processor C3000 Series LPC or eSPI + 19dd Atom Processor C3000 Series Primary to Side Band (P2SB) Bridge + 19de Atom Processor C3000 Series Power Management Controller + 19df Atom Processor C3000 Series SMBus controller + 19e0 Atom Processor C3000 Series SPI Controller + 19e2 Atom Processor C3000 Series QuickAssist Technology + 19e3 Atom Processor C3000 Series QuickAssist Technology Virtual Function + 1a1c Ethernet Connection (17) I219-LM + 1a1d Ethernet Connection (17) I219-V + 1a1e Ethernet Connection (16) I219-LM + 1028 0b10 Precision 3571 + 1a1f Ethernet Connection (16) I219-V + 1a21 82840 840 [Carmel] Chipset Host Bridge (Hub A) + 1a23 82840 840 [Carmel] Chipset AGP Bridge + 1a24 82840 840 [Carmel] Chipset PCI Bridge (Hub B) + 1a30 82845 845 [Brookdale] Chipset Host Bridge + 1028 010e Optiplex GX240 + 147b 0505 BL7 motherboard + 15d9 3280 Supermicro P4SBE Mainboard + 1a31 82845 845 [Brookdale] Chipset AGP Bridge + 1a38 5000 Series Chipset DMA Engine + 15d9 8680 X7DVL-E-O motherboard + 8086 3476 S5000PSLSATA Server Board + 1a48 82597EX 10GbE Ethernet Controller + 8086 a01f PRO/10GbE SR Server Adapter + 8086 a11f PRO/10GbE SR Server Adapter + 1b48 82597EX 10GbE Ethernet Controller + 8086 a01f PRO/10GbE LR Server Adapter + 8086 a11f PRO/10GbE LR Server Adapter +# Also rebranded as Montage IOH M88IO3020 + 1bcd Emmitsburg (C740 Family) USB 3.2 Gen 1 xHCI Controller + 1bd4 00a5 RS0800I5H16i + 1bd2 Sapphire Rapids SATA AHCI Controller + 1bf2 Sapphire Rapids SATA AHCI Controller + 1c00 6 Series/C200 Series Chipset Family Desktop SATA Controller (IDE mode, ports 0-3) + 1c01 6 Series/C200 Series Chipset Family Mobile SATA Controller (IDE mode, ports 0-3) + 1c02 6 Series/C200 Series Chipset Family 6 port Desktop SATA AHCI Controller + 1028 04aa XPS 8300 + 1043 844d P8 series motherboard + 17aa 3070 ThinkCentre M91p + 8086 200d DH61CR motherboard + 8086 7270 Server Board S1200BT Family + 1c03 6 Series/C200 Series Chipset Family 6 port Mobile SATA AHCI Controller + 1028 04a3 Precision M4600 + 1028 04b2 Vostro 3350 + 1028 04da Vostro 3750 + 17aa 21cf ThinkPad T520 + 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] + 1c04 6 Series/C200 Series Desktop SATA RAID Controller + 103c 3118 Smart Array B110i SATA RAID Controller + 1c05 6 Series/C200 Series Mobile SATA RAID Controller + 1c06 Z68 Express Chipset SATA RAID Controller + 1c08 6 Series/C200 Series Chipset Family Desktop SATA Controller (IDE mode, ports 4-5) + 1c09 6 Series/C200 Series Chipset Family Mobile SATA Controller (IDE mode, ports 4-5) + 1c10 6 Series/C200 Series Chipset Family PCI Express Root Port 1 + 1028 04aa XPS 8300 + 1028 04da Vostro 3750 + 1043 844d P8 series motherboard + 17aa 21cf ThinkPad T520 + 8086 7270 Server Board S1200BTS / Apple MacBook Pro 8,1/8,2 + 1c12 6 Series/C200 Series Chipset Family PCI Express Root Port 2 + 1028 04aa XPS 8300 + 17aa 21cf ThinkPad T520 + 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] + 1c14 6 Series/C200 Series Chipset Family PCI Express Root Port 3 + 1028 04da Vostro 3750 + 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] + 1c16 6 Series/C200 Series Chipset Family PCI Express Root Port 4 + 1028 04aa XPS 8300 + 17aa 21cf ThinkPad T520 + 1c18 6 Series/C200 Series Chipset Family PCI Express Root Port 5 + 1028 04da Vostro 3750 + 17aa 21cf ThinkPad T520 + 8086 7270 Server Board S1200BTS + 1c1a 6 Series/C200 Series Chipset Family PCI Express Root Port 6 + 1028 04da Vostro 3750 + 1043 844d P8 series motherboard + 1c1c 6 Series/C200 Series Chipset Family PCI Express Root Port 7 + 1c1e 6 Series/C200 Series Chipset Family PCI Express Root Port 8 + 1043 844d P8 series motherboard + 1c20 6 Series/C200 Series Chipset Family High Definition Audio Controller + 1028 0490 Alienware M17x R3 + 1028 04a3 Precision M4600 + 1028 04aa XPS 8300 + 1028 04b2 Vostro 3350 + 1028 04da Vostro 3750 +# Realtek ALC656 + 103c 2abf HP Pavilion p6-2100 Desktop PC Series + 1043 8418 P8P67 Deluxe Motherboard + 1043 841b P8H67 Series Motherboard + 17aa 21cf ThinkPad T520 + 17aa 3070 ThinkCentre M91p +# Realtek ALC888 audio codec + 8086 2008 DQ67SW board + 8086 200d DH61CR motherboard + 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] + 1c22 6 Series/C200 Series Chipset Family SMBus Controller + 1028 04a3 Precision M4600 + 1028 04aa XPS 8300 + 1028 04b2 Vostro 3350 + 1028 04da Vostro 3750 + 1043 844d P8 series motherboard + 17aa 21cf ThinkPad T520 + 17aa 3070 ThinkCentre M91p + 8086 200d DH61CR motherboard + 8086 7270 Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2 + 1c24 6 Series/C200 Series Chipset Family Thermal Management Controller + 1c25 6 Series/C200 Series Chipset Family DMI to PCI Bridge + 1c26 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 + 1028 04a3 Precision M4600 + 1028 04aa XPS 8300 + 1028 04b2 Vostro 3350 + 1028 04da Vostro 3750 + 1043 844d P8 series motherboard + 17aa 21cf ThinkPad T520 + 17aa 3070 ThinkCentre M91p + 8086 200d DH61CR motherboard + 8086 7270 Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2 + 1c27 6 Series/C200 Series Chipset Family USB Universal Host Controller #1 + 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] + 1c2c 6 Series/C200 Series Chipset Family USB Universal Host Controller #5 + 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] + 1c2d 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 + 1028 04a3 Precision M4600 + 1028 04aa XPS 8300 + 1028 04b2 Vostro 3350 + 1028 04da Vostro 3750 + 1043 844d P8 series motherboard + 17aa 21cf ThinkPad T520 + 17aa 3070 ThinkCentre M91p + 8086 200d DH61CR motherboard + 8086 7270 Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2 + 1c33 6 Series/C200 Series Chipset Family LAN Controller + 1c35 6 Series/C200 Series Chipset Family VECI Controller + 1c3a 6 Series/C200 Series Chipset Family MEI Controller #1 + 1028 0493 Latitude E6420 + 1028 04a3 Precision M4600 + 1028 04aa XPS 8300 + 1028 04b2 Vostro 3350 + 1028 04da Vostro 3750 + 1043 844d P8 series motherboard + 17aa 21cf ThinkPad T520 + 17aa 3070 ThinkCentre M91p + 8086 200d DH61CR motherboard + 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] + 1c3b 6 Series/C200 Series Chipset Family MEI Controller #2 + 1c3c 6 Series/C200 Series Chipset Family IDE-r Controller + 1c3d 6 Series/C200 Series Chipset Family KT Controller + 17aa 3070 ThinkCentre M91p + 1c40 6 Series/C200 Series Chipset Family LPC Controller + 1c41 Mobile SFF 6 Series Chipset Family LPC Controller + 1c42 6 Series/C200 Series Chipset Family LPC Controller + 1c43 Mobile 6 Series Chipset Family LPC Controller + 1c44 Z68 Express Chipset LPC Controller + 1c45 6 Series/C200 Series Chipset Family LPC Controller + 1c46 P67 Express Chipset LPC Controller + 1043 844d P8P67 Deluxe Motherboard + 1c47 UM67 Express Chipset LPC Controller + 1c48 6 Series/C200 Series Chipset Family LPC Controller + 1c49 HM65 Express Chipset LPC Controller + 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] + 1c4a H67 Express Chipset LPC Controller + 1028 04aa XPS 8300 + 1043 844d P8H67 Series Motherboard + 1c4b HM67 Express Chipset LPC Controller + 1028 04b2 Vostro 3350 + 1028 04da Vostro 3750 + 1c4c Q65 Express Chipset LPC Controller + 1c4d QS67 Express Chipset LPC Controller + 1c4e Q67 Express Chipset LPC Controller + 17aa 3070 ThinkCentre M91p + 1c4f QM67 Express Chipset LPC Controller + 1028 04a3 Precision M4600 + 17aa 21cf ThinkPad T520 + 1c50 B65 Express Chipset LPC Controller + 1c51 6 Series/C200 Series Chipset Family LPC Controller + 1c52 C202 Chipset LPC Controller + 8086 7270 Server Board S1200BTS + 1c53 6 Series/C200 Series Chipset Family LPC Controller + 1c54 C204 Chipset LPC Controller + 1c55 6 Series/C200 Series Chipset Family LPC Controller + 1c56 C206 Chipset LPC Controller + 1043 844d P8B WS Motherboard + 1c57 6 Series/C200 Series Chipset Family LPC Controller + 1c58 Upgraded B65 Express Chipset LPC Controller + 1c59 Upgraded HM67 Express Chipset LPC Controller + 1c5a Upgraded Q67 Express Chipset LPC Controller + 1c5b 6 Series/C200 Series Chipset Family LPC Controller + 1c5c H61 Express Chipset LPC Controller + 8086 200d DH61CR motherboard + 1c5d 6 Series/C200 Series Chipset Family LPC Controller + 1c5e 6 Series/C200 Series Chipset Family LPC Controller + 1c5f 6 Series/C200 Series Chipset Family LPC Controller + 1d00 C600/X79 series chipset 4-Port SATA IDE Controller + 1d02 C600/X79 series chipset 6-Port SATA AHCI Controller + 1028 04f7 C602J on PowerEdge R320 server + 1d04 C600/X79 series chipset SATA RAID Controller + 1d06 C600/X79 series chipset SATA Premium RAID Controller + 1d08 C600/X79 series chipset 2-Port SATA IDE Controller + 1d10 C600/X79 series chipset PCI Express Root Port 1 + 1028 04f7 C602J on PowerEdge R320 server + 1d11 C600/X79 series chipset PCI Express Root Port 1 + 1d12 C600/X79 series chipset PCI Express Root Port 2 + 1d13 C600/X79 series chipset PCI Express Root Port 2 + 1d14 C600/X79 series chipset PCI Express Root Port 3 + 1d15 C600/X79 series chipset PCI Express Root Port 3 + 1d16 C600/X79 series chipset PCI Express Root Port 4 + 1d17 C600/X79 series chipset PCI Express Root Port 4 + 1d18 C600/X79 series chipset PCI Express Root Port 5 + 1028 04f7 C602J on PowerEdge R320 server + 1d19 C600/X79 series chipset PCI Express Root Port 5 + 1d1a C600/X79 series chipset PCI Express Root Port 6 + 1d1b C600/X79 series chipset PCI Express Root Port 6 + 1d1c C600/X79 series chipset PCI Express Root Port 7 + 1d1d C600/X79 series chipset PCI Express Root Port 7 + 1d1e C600/X79 series chipset PCI Express Root Port 8 + 1028 04f7 C602J on PowerEdge R320 server + 1d1f C600/X79 series chipset PCI Express Root Port 8 + 1d20 C600/X79 series chipset High Definition Audio Controller + 1d22 C600/X79 series chipset SMBus Host Controller + 15d9 066b X9SRL-F + 1d24 C600/X79 series chipset Thermal Management Controller + 15d9 066b X9SRL-F + 1d25 C600/X79 series chipset DMI to PCI Bridge + 1d26 C600/X79 series chipset USB2 Enhanced Host Controller #1 + 1028 04f7 C602J on PowerEdge R320 server + 15d9 066b X9SRL-F + 1d2d C600/X79 series chipset USB2 Enhanced Host Controller #2 + 1028 04f7 C602J on PowerEdge R320 server + 103c 18a9 HP DL360e G8 + 15d9 066b X9SRL-F + 1d33 C600/X79 series chipset LAN Controller + 1d35 C600/X79 series chipset VECI Controller + 1d3a C600/X79 series chipset MEI Controller #1 + 1028 04f7 C602J on PowerEdge R320 server + 15d9 066b X9SRL-F + 1d3b C600/X79 series chipset MEI Controller #2 + 1028 04f7 C602J on PowerEdge R320 server + 15d9 066b X9SRL-F + 1d3c C600/X79 series chipset IDE-r Controller + 1d3d C600/X79 series chipset KT Controller + 1d3e C600/X79 series chipset PCI Express Virtual Root Port + 1028 04f7 C602J on PowerEdge R320 server + 1d3f C608/C606/X79 series chipset PCI Express Virtual Switch Port + 1d40 C600/X79 series chipset LPC Controller + 1d41 C600/X79 series chipset LPC Controller + 1028 04f7 C602J on PowerEdge R320 server + 15d9 066b X9SRL-F + 1d50 C608 chipset Dual 4-Port SATA/SAS Storage Control Unit + 1d54 C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit + 1d55 C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit + 1d58 C606 chipset Dual 4-Port SATA/SAS Storage Control Unit + 1d59 C604/X79 series chipset 4-Port SATA/SAS Storage Control Unit + 1d5a C600/X79 series chipset Dual 4-Port SATA Storage Control Unit + 1d5b C602 chipset 4-Port SATA Storage Control Unit + 1d5c C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit + 1d5d C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit + 1d5e C600/X79 series chipset Dual 4-Port SATA Storage Control Unit + 1d5f C600/X79 series chipset 4-Port SATA Storage Control Unit + 1d60 C608 chipset Dual 4-Port SATA/SAS Storage Control Unit + 1d64 C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit + 1d65 C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit + 1d68 C606 chipset Dual 4-Port SATA/SAS Storage Control Unit + 1d69 C604/X79 series chipset 4-Port SATA/SAS Storage Control Unit + 1d6a C600/X79 series chipset Dual 4-Port SATA Storage Control Unit + 1d6b C602 chipset 4-Port SATA Storage Control Unit + 0497 1028 Dell Precision T3600 + 1d6c C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit + 1d6d C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit + 1d6e C600/X79 series chipset Dual 4-Port SATA Storage Control Unit + 1d6f C600/X79 series chipset 4-Port SATA Storage Control Unit + 1d70 C600/X79 series chipset SMBus Controller 0 + 1d71 C608/C606/X79 series chipset SMBus Controller 1 + 1d72 C608 chipset SMBus Controller 2 + 1d74 C608/C606/X79 series chipset PCI Express Upstream Port + 1d76 C600/X79 series chipset Multi-Function Glue + 1e00 7 Series/C210 Series Chipset Family 4-port SATA Controller [IDE mode] + 1734 11d6 B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard + 1e01 7 Series Chipset Family 4-port SATA Controller [IDE mode] + 144d c652 NP300E5C series laptop + 1e02 7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] + 1043 84ca P8 series motherboard + 1734 11d6 B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard + 1849 1e02 Motherboard + 1e03 7 Series Chipset Family 6-port SATA Controller [AHCI mode] + 1043 108d VivoBook X202EV + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 10cf 16e2 LIFEBOOK E752 + 144d c652 NP300E5C series laptop + 1e04 7 Series/C210 Series Chipset Family SATA Controller [RAID mode] + 1e05 7 Series Chipset SATA Controller [RAID mode] + 1e06 7 Series/C210 Series Chipset Family SATA Controller [RAID mode] + 1e07 7 Series Chipset Family SATA Controller [RAID mode] + 1e08 7 Series/C210 Series Chipset Family 2-port SATA Controller [IDE mode] + 1e09 7 Series Chipset Family 2-port SATA Controller [IDE mode] + 144d c652 NP300E5C series laptop + 1e0e 7 Series/C210 Series Chipset Family SATA Controller [RAID mode] + 1e10 7 Series/C216 Chipset Family PCI Express Root Port 1 + 1043 108d VivoBook X202EV + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 1043 84ca P8H77-I Motherboard + 10cf 16e9 LIFEBOOK E752 + 144d c652 NP300E5C series laptop + 1734 11d6 B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard + 1849 1e10 Motherboard + 1e12 7 Series/C210 Series Chipset Family PCI Express Root Port 2 + 1043 108d VivoBook X202EV + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 1e14 7 Series/C210 Series Chipset Family PCI Express Root Port 3 + 10cf 16e9 LIFEBOOK E752 + 1e16 7 Series/C216 Chipset Family PCI Express Root Port 4 + 1043 108d VivoBook X202EV + 1043 1477 N56VZ + 144d c652 NP300E5C series laptop + 1849 1618 Z77 Extreme4 motherboard + 1e18 7 Series/C210 Series Chipset Family PCI Express Root Port 5 + 1043 84ca P8H77-I Motherboard + 1849 1e18 Motherboard + 1e1a 7 Series/C210 Series Chipset Family PCI Express Root Port 6 + 1734 11d6 B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard + 1849 1e1a Motherboard + 1e1c 7 Series/C210 Series Chipset Family PCI Express Root Port 7 + 1e1e 7 Series/C210 Series Chipset Family PCI Express Root Port 8 + 10cf 16e9 LIFEBOOK E752 + 1849 1e1e Motherboard + 1e20 7 Series/C216 Chipset Family High Definition Audio Controller + 1028 054b XPS One 2710 + 1043 108d VivoBook X202EV + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 1043 8415 P8H77-I Motherboard + 1043 8445 P8Z77-V LX Motherboard + 10cf 1757 LIFEBOOK E752 + 144d c652 NP300E5C series laptop + 1734 11d8 B75 [Ivy Bridge] chipset CX20642 audio controller on Esprimo P510 D3171 motherboard + 1849 1898 Z77 Extreme4 motherboard + 1e22 7 Series/C216 Chipset Family SMBus Controller + 1043 108d VivoBook X202EV + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 1043 84ca P8 series motherboard + 10cf 16e6 LIFEBOOK E752 + 144d c652 NP300E5C series laptop + 1734 11d6 B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard + 1849 1e22 Motherboard + 1e24 7 Series/C210 Series Chipset Family Thermal Management Controller + 1043 1517 Zenbook Prime UX31A + 1e25 7 Series/C210 Series Chipset Family DMI to PCI Bridge + 1e26 7 Series/C216 Chipset Family USB Enhanced Host Controller #1 + 1043 108d VivoBook X202EV + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 1043 84ca P8 series motherboard + 10cf 16e8 LIFEBOOK E752 + 144d c652 NP300E5C series laptop + 1734 11d6 B75 [Ivy Bridge] chipset USB 2.0 controller on Esprimo P510 D3171 motherboard + 1849 1e26 Motherboard + 1e2d 7 Series/C216 Chipset Family USB Enhanced Host Controller #2 + 1043 108d VivoBook X202EV + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 1043 84ca P8 series motherboard + 10cf 16e8 LIFEBOOK E752 + 144d c652 NP300E5C series laptop + 1734 11d6 B75 [Ivy Bridge] chipset USB 2.0 controller on Esprimo P510 D3171 motherboard + 1849 1e2d Motherboard + 1e31 7 Series/C210 Series Chipset Family USB xHCI Host Controller + 103c 179b Elitebook 8470p + 103c 17ab ProBook 6570b + 1043 108d VivoBook X202EV + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 1043 84ca P8 series motherboard + 10cf 16ee LIFEBOOK E752 + 1734 11d6 B75 [Ivy Bridge] chipset USB 3.0 controller on Esprimo P510 D3171 motherboard + 17aa 21f3 ThinkPad T430 + 1849 1e31 Motherboard + 1e33 7 Series/C210 Series Chipset Family LAN Controller + 1e3a 7 Series/C216 Chipset Family MEI Controller #1 + 1043 108d VivoBook X202EV + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 1043 84ca P8 series motherboard + 10cf 16ea LIFEBOOK E752 + 144d c652 NP300E5C series laptop + 1734 11d6 B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard + 1849 1e3a Motherboard + 1e3b 7 Series/C210 Series Chipset Family MEI Controller #2 + 1e3c 7 Series/C210 Series Chipset Family IDE-r Controller + 1e3d 7 Series/C210 Series Chipset Family KT Controller + 1e41 7 Series Chipset Family LPC Controller + 1e42 7 Series Chipset Family LPC Controller + 1e43 7 Series Chipset Family LPC Controller + 1e44 Z77 Express Chipset LPC Controller + 1043 84ca P8 series motherboard + 1849 1e44 Motherboard + 1e45 7 Series Chipset Family LPC Controller + 1e46 Z75 Express Chipset LPC Controller + 1e47 Q77 Express Chipset LPC Controller + 1e48 Q75 Express Chipset LPC Controller + 1e49 B75 Express Chipset LPC Controller + 1734 11d6 Esprimo P510 D3171 motherboard + 1e4a H77 Express Chipset LPC Controller + 1043 84ca P8H77-I Motherboard + 1e4b 7 Series Chipset Family LPC Controller + 1e4c 7 Series Chipset Family LPC Controller + 1e4d 7 Series Chipset Family LPC Controller + 1e4e 7 Series Chipset Family LPC Controller + 1e4f 7 Series Chipset Family LPC Controller + 1e50 7 Series Chipset Family LPC Controller + 1e51 7 Series Chipset Family LPC Controller + 1e52 7 Series Chipset Family LPC Controller + 1e53 C216 Series Chipset LPC Controller + 1e54 7 Series Chipset Family LPC Controller + 1e55 QM77 Express Chipset LPC Controller + 1e56 QS77 Express Chipset LPC Controller + 1e57 HM77 Express Chipset LPC Controller + 1e58 UM77 Express Chipset LPC Controller + 1e59 HM76 Express Chipset LPC Controller + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 10cf 16e0 LIFEBOOK E752 + 1e5a 7 Series Chipset Family LPC Controller + 1e5b UM77 Express Chipset LPC Controller + 1e5c 7 Series Chipset Family LPC Controller + 1e5d HM75 Express Chipset LPC Controller + 144d c652 NP300E5C series laptop + 1e5e HM70 Express Chipset LPC Controller + 1043 108d VivoBook X202EV + 1e5f NM70 Express Chipset LPC Controller + 1f00 Atom processor C2000 SoC Transaction Router + 1f01 Atom processor C2000 SoC Transaction Router + 1f02 Atom processor C2000 SoC Transaction Router + 1f03 Atom processor C2000 SoC Transaction Router + 1f04 Atom processor C2000 SoC Transaction Router + 1f05 Atom processor C2000 SoC Transaction Router + 1f06 Atom processor C2000 SoC Transaction Router + 1f07 Atom processor C2000 SoC Transaction Router + 1f08 Atom processor C2000 SoC Transaction Router + 1f09 Atom processor C2000 SoC Transaction Router + 1f0a Atom processor C2000 SoC Transaction Router + 1f0b Atom processor C2000 SoC Transaction Router + 1f0c Atom processor C2000 SoC Transaction Router + 1f0d Atom processor C2000 SoC Transaction Router + 1f0e Atom processor C2000 SoC Transaction Router + 1f0f Atom processor C2000 SoC Transaction Router + 1f10 Atom processor C2000 PCIe Root Port 1 + 1f11 Atom processor C2000 PCIe Root Port 2 + 1f12 Atom processor C2000 PCIe Root Port 3 + 1f13 Atom processor C2000 PCIe Root Port 4 + 1f14 Atom processor C2000 RAS + 1f15 Atom processor C2000 SMBus 2.0 + 1f16 Atom processor C2000 RCEC + 1f18 Atom processor C2000 QAT + 1f19 Atom processor C2000 QAT + 1f20 Atom processor C2000 4-Port IDE SATA2 Controller + 1f21 Atom processor C2000 4-Port IDE SATA2 Controller + 1f22 Atom processor C2000 AHCI SATA2 Controller + 1f23 Atom processor C2000 AHCI SATA2 Controller + 1f24 Atom processor C2000 RAID SATA2 Controller + 1f25 Atom processor C2000 RAID SATA2 Controller + 1f26 Atom processor C2000 RAID SATA2 Controller + 1f27 Atom processor C2000 RAID SATA2 Controller + 1f2c Atom processor C2000 USB Enhanced Host Controller + 0200 1028 Atom C2338 on Dell 0K8Y0N motherboard + 1f2e Atom processor C2000 RAID SATA2 Controller + 1f2f Atom processor C2000 RAID SATA2 Controller + 1f30 Atom processor C2000 2-Port IDE SATA3 Controller + 1f31 Atom processor C2000 2-Port IDE SATA3 Controller + 1f32 Atom processor C2000 AHCI SATA3 Controller + 1f33 Atom processor C2000 AHCI SATA3 Controller + 1f34 Atom processor C2000 RAID SATA3 Controller + 1f35 Atom processor C2000 RAID SATA3 Controller + 1f36 Atom processor C2000 RAID SATA3 Controller + 1f37 Atom processor C2000 RAID SATA3 Controller + 1f38 Atom processor C2000 PCU + 1f39 Atom processor C2000 PCU + 1f3a Atom processor C2000 PCU + 1f3b Atom processor C2000 PCU + 1f3c Atom processor C2000 PCU SMBus + 1f3d Atom Processor C2000 PECI SMBus + 1f3e Atom processor C2000 RAID SATA3 Controller + 1f3f Atom processor C2000 RAID SATA3 Controller + 1f40 Ethernet Connection I354 1.0 GbE Backplane + 1028 05f1 Ethernet Connection I354 1.0 GbE Backplane + 1f41 Ethernet Connection I354 + 1f42 Atom processor C2000 GbE + 1f44 Atom processor C2000 GbE Virtual Function + 1f45 Ethernet Connection I354 2.5 GbE Backplane + 2014 Sky Lake-E Ubox Registers + 2015 Sky Lake-E Ubox Registers + 2016 Sky Lake-E Ubox Registers + 2018 Sky Lake-E M2PCI Registers + 201a Sky Lake-E Non-Transparent Bridge Registers + 201c Sky Lake-E Non-Transparent Bridge Registers + 201d Volume Management Device NVMe RAID Controller + 2020 Sky Lake-E DMI3 Registers + 15d9 095d X11SPM-TF + 2021 Sky Lake-E CBDMA Registers + 2024 Sky Lake-E MM/Vt-d Configuration Registers + 2025 Sky Lake-E RAS + 2026 Sky Lake-E IOAPIC + 2030 Sky Lake-E PCI Express Root Port A + 2031 Sky Lake-E PCI Express Root Port B + 2032 Sky Lake-E PCI Express Root Port C + 2033 Sky Lake-E PCI Express Root Port D + 2034 Sky Lake-E VT-d + 2035 Sky Lake-E RAS Configuration Registers + 2036 Sky Lake-E IOxAPIC Configuration Registers + 2040 Sky Lake-E Integrated Memory Controller + 2041 Sky Lake-E Integrated Memory Controller + 2042 Sky Lake-E Integrated Memory Controller + 2043 Sky Lake-E Integrated Memory Controller + 2044 Sky Lake-E Integrated Memory Controller + 2045 Sky Lake-E LM Channel 1 + 2046 Sky Lake-E LMS Channel 1 + 2047 Sky Lake-E LMDP Channel 1 + 2048 Sky Lake-E DECS Channel 2 + 2049 Sky Lake-E LM Channel 2 + 204a Sky Lake-E LMS Channel 2 + 204b Sky Lake-E LMDP Channel 2 + 204c Sky Lake-E M3KTI Registers + 204d Sky Lake-E M3KTI Registers + 204e Sky Lake-E M3KTI Registers + 2054 Sky Lake-E CHA Registers + 2055 Sky Lake-E CHA Registers + 2056 Sky Lake-E CHA Registers + 2057 Sky Lake-E CHA Registers + 2058 Sky Lake-E KTI 0 + 2059 Sky Lake-E UPI Registers + 2066 Sky Lake-E Integrated Memory Controller + 2068 Sky Lake-E DDRIO Registers + 2069 Sky Lake-E DDRIO Registers + 206a Sky Lake-E IOxAPIC Configuration Registers + 206e Sky Lake-E DDRIO Registers + 206f Sky Lake-E DDRIO Registers + 2078 Sky Lake-E PCU Registers + 207a Sky Lake-E PCU Registers + 2080 Sky Lake-E PCU Registers + 2081 Sky Lake-E PCU Registers + 2082 Sky Lake-E PCU Registers + 2083 Sky Lake-E PCU Registers + 2084 Sky Lake-E PCU Registers + 2085 Sky Lake-E PCU Registers + 2086 Sky Lake-E PCU Registers + 2088 Sky Lake-E DDRIO Registers + 208d Sky Lake-E CHA Registers + 208e Sky Lake-E CHA Registers +# Engineering sample GPU + 2240 Larrabee + 2241 Larrabee + 2250 Xeon Phi coprocessor 5100 series + 225c Xeon Phi coprocessor SE10/7120 series + 225d Xeon Phi coprocessor 3120 series + 225e Xeon Phi coprocessor 31S1 + 2262 Xeon Phi coprocessor 7220 + 2280 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SoC Transaction Register + 2284 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series High Definition Audio Controller + 2286 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO1 DMA Controller + 228a Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO1 HSUART Controller #1 + 228c Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO1 HSUART Controller #2 + 2292 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx SMBus Controller + 2294 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series MMC Controller + 2295 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SDIO Controller + 2296 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SD Controller + 2298 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Trusted Execution Engine + 229c Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCU + 22a3 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SATA Controller + 22a4 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SATA AHCI Controller + 22a8 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Low Power Engine Audio + 22b0 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller + 22b1 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller + 22b5 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series USB xHCI Controller + 22b8 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Imaging Unit + 22c0 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 DMA Controller + 22c1 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #1 + 22c2 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #2 + 22c3 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #3 + 22c4 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #4 + 22c5 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #5 + 22c6 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #6 + 22c7 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #7 + 22c8 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #1 + 22ca Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #2 + 22cc Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #3 + 22ce Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #4 + 22dc Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Power Management Controller + 2310 DH89xxCC LPC Controller + 2323 DH89xxCC 4 Port SATA AHCI Controller + 2330 DH89xxCC SMBus Controller + 2331 DH89xxCC Chap Counter + 2332 DH89xxCC Thermal Subsystem + 2334 DH89xxCC USB2 Enhanced Host Controller #1 + 2335 DH89xxCC USB2 Enhanced Host Controller #1 + 2342 DH89xxCC PCI Express Root Port #1 + 2343 DH89xxCC PCI Express Root Port #1 + 2344 DH89xxCC PCI Express Root Port #2 + 2345 DH89xxCC PCI Express Root Port #2 + 2346 DH89xxCC PCI Express Root Port #3 + 2347 DH89xxCC PCI Express Root Port #3 + 2348 DH89xxCC PCI Express Root Port #4 + 2349 DH89xxCC PCI Express Root Port #4 + 2360 DH89xxCC Watchdog Timer + 2364 DH89xxCC MEI 0 + 2365 DH89xxCC MEI 1 + 2390 DH895XCC Series LPC Controller + 23a1 DH895XCC Series 2-Port SATA Controller [IDE Mode] + 23a3 DH895XCC Series 4-Port SATA Controller [AHCI Mode] + 23a6 DH895XCC Series 2-Port SATA Controller [IDE Mode] + 23b0 DH895XCC Series SMBus Controller + 23b1 DH895XCC Series CHAP Counter + 23b2 DH895XCC Series Thermal Management Controller + 23b4 DH895XCC Series USB2 Enhanced Host Controller #1 + 23b5 DH895XCC Series USB2 Enhanced Host Controller #1 + 23c2 DH895XCC Series PCI Express Root Port #1 + 23c3 DH895XCC Series PCI Express Root Port #1 + 23c4 DH895XCC Series PCI Express Root Port #2 + 23c5 DH895XCC Series PCI Express Root Port #2 + 23c6 CDH895XCC Series PCI Express Root Port #3 + 23c7 DH895XCC Series PCI Express Root Port #3 + 23c8 DH895XCC Series PCI Express Root Port #4 + 23c9 DH895XCC Series PCI Express Root Port #4 + 23e0 DH895XCC Series Watchdog Timer + 23e4 DH895XCC Series MEI Controller #1 + 23e5 DH895XCC Series MEI Controller #2 + 2410 82801AA ISA Bridge (LPC) + 2411 82801AA IDE Controller + 2412 82801AA USB Controller + 2413 82801AA SMBus Controller + 2415 82801AA AC'97 Audio Controller + 1028 0095 Precision Workstation 220 Integrated Digital Audio + 1028 00b4 OptiPlex GX110 + 110a 0051 Activy 2xx + 11d4 0040 SoundMAX Integrated Digital Audio + 11d4 0048 SoundMAX Integrated Digital Audio + 11d4 5340 SoundMAX Integrated Digital Audio + 1734 1025 Activy 3xx + 1af4 1100 QEMU Virtual Machine + 2416 82801AA AC'97 Modem Controller + 2418 82801AA PCI Bridge + 2420 82801AB ISA Bridge (LPC) + 2421 82801AB IDE Controller + 2422 82801AB USB Controller + 2423 82801AB SMBus Controller + 2425 82801AB AC'97 Audio Controller + 11d4 0040 SoundMAX Integrated Digital Audio + 11d4 0048 SoundMAX Integrated Digital Audio + 2426 82801AB AC'97 Modem Controller + 2428 82801AB PCI Bridge + 2440 82801BA ISA Bridge (LPC) + 8086 5744 S845WD1-E + 2442 82801BA/BAM UHCI USB 1.1 Controller #1 + 1014 01c6 Netvista A40/A40p + 1025 1016 Travelmate 612 TX + 1028 00c7 Dimension 8100 + 1028 00d8 Precision 530 + 1028 010e Optiplex GX240 + 103c 126f e-pc 40 + 1043 8027 CUSL2-C/TUSL2-C Mainboard + 104d 80df Vaio PCG-FX403 + 147b 0505 BL7 motherboard + 147b 0507 TH7II-RAID + 8086 4532 Desktop Board D815EEA2/D815EFV + 8086 4557 D815EGEW Mainboard + 8086 4d44 D850EMV2 motherboard + 8086 5744 S845WD1-E mainboard + 2443 82801BA/BAM SMBus Controller + 1014 01c6 Netvista A40/A40p + 1025 1016 Travelmate 612 TX + 1028 00c7 Dimension 8100 + 1028 00d8 Precision 530 + 1028 010e Optiplex GX240 + 103c 126f e-pc 40 + 1043 8027 CUSL2-C/TUSL2-C Mainboard + 104d 80df Vaio PCG-FX403 + 147b 0505 BL7 motherboard + 147b 0507 TH7II-RAID + 15d9 3280 Supermicro P4SBE Mainboard + 8086 4532 Desktop Board D815EEA2/D815EFV + 8086 4557 D815EGEW Mainboard + 8086 5744 S845WD1-E mainboard + 2444 82801BA/BAM UHCI USB 1.1 Controller #2 + 1025 1016 Travelmate 612 TX + 1028 00c7 Dimension 8100 + 1028 00d8 Precision 530 + 1028 010e Optiplex GX240 + 103c 126f e-pc 40 + 1043 8027 CUSL2-C/TUSL2-C Mainboard + 104d 80df Vaio PCG-FX403 + 147b 0505 BL7 motherboard + 147b 0507 TH7II-RAID + 8086 4532 Desktop Board D815EEA2/D815EFV + 8086 5744 S845WD1-E mainboard + 2445 82801BA/BAM AC'97 Audio Controller + 0e11 000b Compaq Deskpro EN Audio + 0e11 0088 Evo D500 + 1014 01c6 Netvista A40/A40p + 1025 1016 Travelmate 612 TX + 1028 00d8 Precision 530 + 103c 126f e-pc 40 + 104d 80df Vaio PCG-FX403 + 11d4 5340 AD1885 AC97 codec + 1462 3370 STAC9721 AC + 147b 0505 BL7 motherboard + 147b 0507 TH7II-RAID + 8086 4557 D815EGEW Mainboard + 8086 4656 Desktop Board D815EFV + 8086 4d44 D850EMV2 motherboard + 2446 82801BA/BAM AC'97 Modem Controller + 1025 1016 Travelmate 612 TX + 104d 80df Vaio PCG-FX403 + 2448 82801 Mobile PCI Bridge + 1028 040a Latitude E6410 + 1028 040b Latitude E6510 + 103c 0934 Compaq nw8240 Mobile Workstation + 103c 0944 Compaq nc6220 Notebook PC + 103c 099c NX6110/NC6120 + 103c 309f Compaq nx9420 Notebook + 103c 30a3 Compaq nw8440 + 103c 30c1 Compaq 6910p + 1043 1017 X58LE + 104d 902d VAIO VGN-NR120E + 105b 0d7c D270S/D250S Motherboard + 1071 8209 Medion MIM 2240 Notebook PC [MD98100] + 144d c00c P30 notebook + 144d c06a R730 Laptop + 144d c072 Notebook N150P + 1458 5000 GA-D525TUD + 1734 1055 Amilo M1420 + 17aa 2013 ThinkPad R60e + 17aa 20ae ThinkPad T61/R61 + 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] + 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] + 8086 544b Desktop Board D425KT + e4bf cc47 CCG-RUMBA + 2449 82801BA/BAM/CA/CAM Ethernet Controller + 0e11 0012 EtherExpress PRO/100 VM + 0e11 0091 EtherExpress PRO/100 VE + 1014 01ce EtherExpress PRO/100 VE + 1014 01dc EtherExpress PRO/100 VE + 1014 01eb EtherExpress PRO/100 VE + 1014 01ec EtherExpress PRO/100 VE + 1014 0202 EtherExpress PRO/100 VE + 1014 0205 EtherExpress PRO/100 VE + 1014 0217 EtherExpress PRO/100 VE + 1014 0234 EtherExpress PRO/100 VE + 1014 023d EtherExpress PRO/100 VE + 1014 0244 EtherExpress PRO/100 VE + 1014 0245 EtherExpress PRO/100 VE + 1014 0265 PRO/100 VE Desktop Connection + 1014 0267 PRO/100 VE Desktop Connection + 1014 026a PRO/100 VE Desktop Connection + 109f 315d EtherExpress PRO/100 VE + 109f 3181 EtherExpress PRO/100 VE + 1179 ff01 PRO/100 VE Network Connection + 1186 7801 EtherExpress PRO/100 VE + 144d 2602 HomePNA 1M CNR + 1af4 1100 QEMU Virtual Machine + 8086 3010 EtherExpress PRO/100 VE + 8086 3011 EtherExpress PRO/100 VM + 8086 3012 82562EH based Phoneline + 8086 3013 EtherExpress PRO/100 VE + 8086 3014 EtherExpress PRO/100 VM + 8086 3015 82562EH based Phoneline + 8086 3016 EtherExpress PRO/100 P Mobile Combo + 8086 3017 EtherExpress PRO/100 P Mobile + 8086 3018 EtherExpress PRO/100 + 244a 82801BAM IDE U100 Controller + 1025 1016 Travelmate 612TX + 104d 80df Vaio PCG-FX403 + 244b 82801BA IDE U100 Controller + 1014 01c6 Netvista A40/A40p + 1028 00c7 Dimension 8100 + 1028 00d8 Precision 530 + 1028 010e Optiplex GX240 + 103c 126f e-pc 40 + 1043 8027 CUSL2-C/TUSL2-C Mainboard + 147b 0505 BL7 motherboard + 147b 0507 TH7II-RAID + 15d9 3280 Supermicro P4SBE Mainboard + 8086 4532 Desktop Board D815EEA2/D815EFV + 8086 4557 D815EGEW Mainboard + 8086 4d44 D850EMV2 motherboard + 8086 5744 S845WD1-E mainboard + 244c 82801BAM ISA Bridge (LPC) + 244e 82801 PCI Bridge + 1014 0267 NetVista A30p + 1028 020d Inspiron 530 + 1028 0211 Optiplex 755 + 1028 02da OptiPlex 980 + 1028 04f7 PowerEdge R320 server + 103c 130a Z600 Workstation + 103c 2a3b Pavilion A1512X + 103c 2a6f Asus IPIBL-LB Motherboard + 103c 31fe ProLiant DL140 G3 + 103c 330b ProLiant ML150 G6 Server + 1043 81ec P5B Motherboard +# same ID possibly also on other ASUS boards + 1043 8277 P5K PRO Motherboard + 1043 844d P8 series motherboard + 1043 8534 ASUS B85-PLUS + 1458 5000 Motherboard + 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] + 1462 7418 Wind PC MS-7418 + 15d9 060d C7SIM-Q Motherboard + 15d9 9680 X7DBN Motherboard + 1734 11d6 B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard + 1775 11cc CC11/CL11 + 17aa 3070 ThinkCentre M91p + 8086 7270 Server Board S1200BTS + 2450 82801E ISA Bridge (LPC) + 2452 82801E USB Controller + 2453 82801E SMBus Controller + 2459 82801E Ethernet Controller 0 + 245b 82801E IDE U100 Controller + 245d 82801E Ethernet Controller 1 + 245e 82801E PCI Bridge + 2480 82801CA LPC Interface Controller + 2482 82801CA/CAM USB Controller #1 + 0e11 0030 Evo N600c + 1014 0220 ThinkPad A/T/X Series + 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + 15d9 3480 P4DP6 + 8086 1958 vpr Matrix 170B4 + 8086 3424 SE7501HG2 Mainboard + 8086 4541 Latitude C640 + 2483 82801CA/CAM SMBus Controller + 1014 0220 ThinkPad A/T/X Series + 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + 15d9 3480 P4DP6 + 8086 1958 vpr Matrix 170B4 + 2484 82801CA/CAM USB Controller #2 + 0e11 0030 Evo N600c + 1014 0220 ThinkPad A/T/X Series + 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + 15d9 3480 P4DP6 + 8086 1958 vpr Matrix 170B4 + 2485 82801CA/CAM AC'97 Audio Controller + 1013 5959 Crystal WMD Audio Codec + 1014 0222 ThinkPad A30/A30p/T23 + 1014 0508 ThinkPad T30 + 1014 051c ThinkPad A/T/X Series + 1043 1583 L3C (SPDIF) + 1043 1623 L2B (no SPDIF) + 1043 1643 L3F + 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + 144d c006 vpr Matrix 170B4 + 2486 82801CA/CAM AC'97 Modem Controller + 1014 0223 ThinkPad A/T/X Series + 1014 0503 ThinkPad R31 + 1014 051a ThinkPad A/T/X Series + 101f 1025 620 Series + 1043 1496 PCtel HSP56 MR + 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + 134d 4c21 Dell Inspiron 2100 internal modem + 144d 2115 vpr Matrix 170B4 internal modem + 14f1 5421 MD56ORD V.92 MDC Modem + 2487 82801CA/CAM USB Controller #3 + 0e11 0030 Evo N600c + 1014 0220 ThinkPad A/T/X Series + 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + 15d9 3480 P4DP6 + 8086 1958 vpr Matrix 170B4 + 248a 82801CAM IDE U100 Controller + 0e11 0030 Evo N600c + 1014 0220 ThinkPad A/T/X Series + 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + 8086 1958 vpr Matrix 170B4 + 8086 4541 Latitude C640 + 248b 82801CA Ultra ATA Storage Controller + 15d9 3480 P4DP6 + 248c 82801CAM ISA Bridge (LPC) + 24c0 82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge + 1014 0267 NetVista A30p + 1462 5800 845PE Max (MS-6580) + 24c1 82801DBL (ICH4-L) IDE Controller + 24c2 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 + 1014 0267 NetVista A30p + 1014 052d ThinkPad + 1025 005a TravelMate 290 + 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) + 1028 0126 Optiplex GX260 + 1028 0160 Dimension 2400 + 1028 0163 Latitude D505 + 1028 018d Inspiron 700m/710m + 1028 0196 Inspiron 5160 + 103c 088c NC8000 laptop + 103c 0890 NC6000 laptop + 103c 08b0 tc1100 tablet + 1043 8089 P4B533 + 1071 8160 MIM2000 + 114a 0582 PC8 onboard USB 1.x + 144d c005 X10 Laptop + 144d c00c P30/P35 notebook + 1462 5800 845PE Max (MS-6580) + 1509 2990 Averatec 5110H laptop + 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) + 1734 1055 Amilo M1420 + 4c53 1090 Cx9 / Vx9 mainboard + 8086 24c2 Latitude X300 + 8086 4541 Latitude D400/D500 + e4bf 0cc9 CC9-SAMBA + e4bf 0cd2 CD2-BEBOP + 24c3 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller + 1014 0267 NetVista A30p + 1014 052d ThinkPad + 1025 005a TravelMate 290 + 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) + 1028 0126 Optiplex GX260 + 1028 014f Latitude X300 + 1028 0160 Dimension 2400 + 1028 018d Inspiron 700m/710m + 103c 088c NC8000 laptop + 103c 0890 NC6000 laptop + 103c 08b0 tc1100 tablet + 1071 8160 MIM2000 + 114a 0582 PC8 onboard SMbus + 144d c005 X10 Laptop + 144d c00c P30/P35 notebook + 1458 24c2 GA-8PE667 Ultra + 1462 5800 845PE Max (MS-6580) + 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) + 1734 1055 Amilo M1420 + 4c53 1090 Cx9 / Vx9 mainboard + e4bf 0cc9 CC9-SAMBA + e4bf 0cd2 CD2-BEBOP + 24c4 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 + 1014 0267 NetVista A30p + 1014 052d ThinkPad + 1025 005a TravelMate 290 + 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) + 1028 0126 Optiplex GX260 + 1028 0160 Dimension 2400 + 1028 0163 Latitude D505 + 1028 018d Inspiron 700m/710m + 1028 0196 Inspiron 5160 + 103c 088c NC8000 laptop + 103c 0890 NC6000 laptop + 103c 08b0 tc1100 tablet + 1043 8089 P4B533 + 1071 8160 MIM2000 + 144d c00c P30/P35 notebook + 1462 5800 845PE Max (MS-6580) + 1509 2990 Averatec 5110H + 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) + 4c53 1090 Cx9 / Vx9 mainboard + 8086 24c2 Latitude X300 + 8086 4541 Latitude D400/D500 + e4bf 0cc9 CC9-SAMBA + e4bf 0cd2 CD2-BEBOP + 24c5 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller + 0e11 00b8 Analog Devices Inc. codec [SoundMAX] + 1014 0267 NetVista A30p + 1014 0537 ThinkPad T4x Series + 1014 055f Thinkpad R50e model 1634 + 1025 005a TravelMate 290 + 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) + 1028 0139 Latitude D400 + 1028 014f Latitude X300 + 1028 0152 Latitude D500 + 1028 0160 Dimension 2400 + 1028 0163 Latitude D505 + 1028 018d Inspiron 700m/710m [SigmaTel STAC9750,51] + 1028 0196 Inspiron 5160 + 103c 088c NC8000 laptop + 103c 0890 NC6000 laptop + 103c 08b0 tc1100 tablet + 1043 1713 M2400N/M6800N laptop + 1043 80b0 P4B533 + 1071 8160 MIM2000 + 1179 0201 Toshiba Tecra M1 + 144d c005 X10 Laptop + 144d c00c P30/P35 notebook + 1458 a002 GA-8PE667 Ultra + 1462 5800 845PE Max (MS-6580) + 1734 1005 D1451 (SCENIC N300, i845GV) Sigmatel STAC9750T + 1734 1055 Amilo M1420 + 24c6 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller + 1014 0524 ThinkPad T4x Series + 1014 0525 ThinkPad + 1014 0559 ThinkPad R50e + 1025 003c Aspire 2001WLCi (Compal CL50 motherboard) implementation + 1025 005a TravelMate 290 + 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) + 1028 0196 Inspiron 5160 + 103c 088c NC8000 laptop + 103c 0890 NC6000 laptop + 103c 08b0 tc1100 tablet + 1043 1716 M2400N laptop + 1043 1826 M6800N + 1071 8160 MIM2000 + 134d 4c21 Latitude D500 + 144d 2115 X10 Laptop + 144d c00c P30/P35 notebook +# Conexant HSF Softmodem (CXT22) + 14f1 5422 D480 MDC V.9x Modem + 24c7 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 + 1014 0267 NetVista A30p + 1014 052d ThinkPad + 1025 005a TravelMate 290 + 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) + 1028 0126 Optiplex GX260 + 1028 0160 Dimension 2400 + 1028 0163 Latitude D505 + 1028 018d Inspiron 700m/710m + 1028 0196 Inspiron 5160 + 103c 088c NC8000 laptop + 103c 0890 NC6000 laptop + 103c 08b0 tc1100 tablet + 1043 8089 P4B533 + 1071 8160 MIM2000 + 144d c00c P30/P35 notebook + 1462 5800 845PE Max (MS-6580) + 1509 2990 Averatec 5110H + 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) + 4c53 1090 Cx9 / Vx9 mainboard + 8086 24c2 Latitude X300 + 8086 4541 Latitude D400/D500 + e4bf 0cc9 CC9-SAMBA + e4bf 0cd2 CD2-BEBOP + 24ca 82801DBM (ICH4-M) IDE Controller + 1014 052d ThinkPad + 1025 005a TravelMate 290 + 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) + 1028 014f Latitude X300 + 1028 0163 Latitude D505 + 1028 018d Inspiron 700m/710m + 1028 0196 Inspiron 5160 + 103c 088c NC8000 laptop + 103c 0890 NC6000 laptop + 103c 08b0 tc1100 tablet + 1071 8160 MIM2000 + 144d c005 X10 Laptop + 144d c00c P30/P35 notebook + 1734 1055 Amilo M1420 + 8086 4541 Latitude D400/D500 + 24cb 82801DB (ICH4) IDE Controller + 1014 0267 NetVista A30p + 1028 0126 Optiplex GX260 + 1028 0160 Dimension 2400 + 1043 8089 P4B533 + 114a 0582 PC8 onboard IDE + 1458 24c2 GA-8PE667 Ultra + 1462 5800 845PE Max (MS-6580) + 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) + 4c53 1090 Cx9 / Vx9 mainboard + e4bf 0cc9 CC9-SAMBA + e4bf 0cd2 CD2-BEBOP + 24cc 82801DBM (ICH4-M) LPC Interface Bridge + 144d c00c P30 notebook + 1734 1055 Amilo M1420 + 24cd 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller + 1014 0267 NetVista A30p + 1014 052e ThinkPad + 1025 005a TravelMate 290 + 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) + 1028 011d Latitude D600 + 1028 0126 Optiplex GX260 + 1028 0139 Latitude D400 + 1028 0152 Latitude D500 + 1028 0160 Dimension 2400 + 1028 0163 Latitude D505 + 1028 018d Inspiron 700m/710m + 1028 0196 Inspiron 5160 + 103c 088c NC8000 laptop + 103c 0890 NC6000 laptop + 103c 08b0 tc1100 tablet + 1043 8089 P4B533 + 1071 8160 MIM2000 + 114a 0582 PC8 onboard USB 2.0 + 1179 ff00 Satellite 2430 + 144d c005 X10 Laptop + 144d c00c P30/P35 notebook + 1462 3981 845PE Max (MS-6580) + 1509 1968 Averatec 5110H + 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) + 1734 1055 Amilo M1420 + 1af4 1100 QEMU Virtual Machine + 4c53 1090 Cx9 / Vx9 mainboard + 8086 24c2 Latitude X300 + e4bf 0cc9 CC9-SAMBA + e4bf 0cd2 CD2-BEBOP + 24d0 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge + 24d1 82801EB (ICH5) SATA Controller + 1028 0168 Precision Workstation 670 Mainboard + 1028 0169 Precision 470 + 1028 019a PowerEdge SC1425 + 103c 12bc d530 CMT (DG746A) + 103c 3208 ProLiant DL140 G2 + 1043 80a6 P4P800 series motherboard + 1458 24d1 GA-8IPE1000 Pro2 motherboard (865PE) + 1462 7280 865PE Neo2 (MS-6728) + 1462 7650 Hetis 865GV-E (MS-7065) + 1565 5200 P4TSV Motherboard (865G) + 15d9 4580 P4SCE Mainboard + 8086 3427 S875WP1-E mainboard + 8086 4246 Desktop Board D865GBF + 8086 4c43 Desktop Board D865GLC + 8086 524c D865PERL mainboard + 24d2 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 + 1014 0287 ThinkCentre S50 + 1014 02dd eServer xSeries server mainboard + 1014 02ed eServer xSeries server mainboard + 1028 0168 Precision Workstation 670 Mainboard + 1028 0169 Precision 470 + 1028 016c PowerEdge 1850 onboard UHCI + 1028 016d PowerEdge 2850 onboard UHCI + 1028 0170 PowerEdge 6850 onboard UHCI + 1028 0183 PowerEdge 1800 + 1028 019a PowerEdge SC1425 + 103c 006a NX9500 + 103c 12bc d530 CMT (DG746A) + 103c 3208 ProLiant DL140 G2 + 1043 80a6 P4P800/P5P800 series motherboard + 1458 24d2 GA-8IPE1000/8KNXP motherboard + 1462 7280 865PE Neo2 (MS-6728) + 1565 3101 P4TSV Motherboard (865G) + 15d9 4580 P4SCE Mainboard + 1734 101c PRIMERGY RX/TX series onboard UHCI + 8086 3427 S875WP1-E mainboard + 8086 4246 Desktop Board D865GBF + 8086 4c43 Desktop Board D865GLC + 8086 524c D865PERL mainboard + 24d3 82801EB/ER (ICH5/ICH5R) SMBus Controller + 1014 0287 ThinkCentre S50 + 1014 02dd eServer xSeries server mainboard + 1014 02ed eServer xSeries server mainboard + 1028 0156 Precision 360 + 1028 0168 Precision Workstation 670 Mainboard + 1028 0169 Precision 470 + 103c 12bc d330 uT + 103c 3208 ProLiant DL140 G2 + 1043 80a6 P4P800/P5P800 series motherboard + 1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE) + 1462 7280 865PE Neo2 (MS-6728) + 1462 7650 Hetis 865GV-E (MS-7065) + 1565 3101 P4TSV Motherboard (865G) + 15d9 4580 P4SCE Mainboard + 1734 101c PRIMERGY RX/TX S2 series SMBus + 8086 3427 S875WP1-E mainboard + 8086 4246 Desktop Board D865GBF + 8086 4c43 Desktop Board D865GLC + 8086 524c D865PERL mainboard + 24d4 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 + 1014 0287 ThinkCentre S50 + 1014 02dd eServer xSeries server mainboard + 1014 02ed eServer xSeries server mainboard + 1028 0168 Precision Workstation 670 Mainboard + 1028 0169 Precision 470 + 1028 016c PowerEdge 1850 onboard UHCI + 1028 016d PowerEdge 2850 onboard UHCI + 1028 0170 PowerEdge 6850 onboard UHCI + 1028 0183 PowerEdge 1800 + 1028 019a PowerEdge SC1425 + 103c 006a NX9500 + 103c 12bc d530 CMT (DG746A) + 103c 3208 ProLiant DL140 G2 + 1043 80a6 P4P800/P5P800 series motherboard + 1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE) + 1462 7280 865PE Neo2 (MS-6728) + 1462 7650 Hetis 865GV-E (MS-7065) + 1565 3101 P4TSV Motherboard (865G) + 15d9 4580 P4SCE Mainboard + 1734 101c PRIMERGY RX/TX S2 series onboard UHCI + 8086 3427 S875WP1-E mainboard + 8086 4246 Desktop Board D865GBF + 8086 4c43 Desktop Board D865GLC + 8086 524c D865PERL mainboard + 24d5 82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller + 100a 147b Abit IS7-E motherboard + 1014 0287 ThinkCentre S50 + 1028 0168 Precision Workstation 670 Mainboard + 1028 0169 Precision 470 + 103c 006a NX9500 + 103c 12bc d330 uT + 1043 80f3 P4P800 series motherboard + 1043 810f P5P800-MX Mainboard + 1458 a002 GA-8IPE1000/8KNXP motherboard + 1462 0080 865PE Neo2-V (MS-6788) Mainboard + 1462 7280 865PE Neo2 (MS-6728) + 1462 7650 Hetis 865GV-E (MS-7065) + 8086 a000 D865PERL mainboard + 8086 e000 D865PERL mainboard + 8086 e001 Desktop Board D865GBF + 8086 e002 SoundMax Integrated Digital Audio + 24d6 82801EB/ER (ICH5/ICH5R) AC'97 Modem Controller + 103c 006a NX9500 + 24d7 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 + 1014 0287 ThinkCentre S50 + 1014 02ed xSeries server mainboard + 1028 0168 Precision Workstation 670 Mainboard + 1028 0169 Precision 470 + 1028 016c PowerEdge 1850 onboard UHCI + 1028 016d PowerEdge 2850 onboard UHCI + 1028 0170 PowerEdge 6850 onboard UHCI + 1028 0183 PowerEdge 1800 + 103c 006a NX9500 + 103c 12bc d530 CMT (DG746A) + 1043 80a6 P4P800/P5P800 series motherboard + 1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE) + 1462 7280 865PE Neo2 (MS-6728) + 1462 7650 Hetis 865GV-E (MS-7065) + 1565 3101 P4TSV Motherboard (865G) + 15d9 4580 P4SCE Mainboard + 1734 101c PRIMERGY RX/TX S2 series onboard UHCI + 8086 3427 S875WP1-E mainboard + 8086 4246 Desktop Board D865GBF + 8086 4c43 Desktop Board D865GLC + 8086 524c D865PERL mainboard + 24db 82801EB/ER (ICH5/ICH5R) IDE Controller + 1014 0287 ThinkCentre S50 + 1014 02dd eServer xSeries server mainboard + 1014 02ed eServer xSeries server mainboard + 1028 0168 Precision Workstation 670 Mainboard + 1028 0169 Precision 470 + 1028 016c PowerEdge 1850 IDE Controller + 1028 016d PowerEdge 2850 IDE Controller + 1028 0170 PowerEdge 6850 IDE Controller + 1028 019a PowerEdge SC1425 + 103c 006a NX9500 + 103c 12bc d530 CMT (DG746A) + 1043 80a6 P4P800/P5P800 series motherboard + 1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE) + 1462 7280 865PE Neo2 (MS-6728) + 1462 7580 MSI 875P + 1462 7650 Hetis 865GV-E (MS-7065) + 1565 3101 P4TSV Motherboard (865G) + 15d9 4580 P4SCE Mainboard + 1734 101c PRIMERGY RX/TX S2 series onboard IDE + 8086 24db P4C800 Mainboard + 8086 3427 S875WP1-E mainboard + 8086 4246 Desktop Board D865GBF + 8086 4c43 Desktop Board D865GLC + 8086 524c D865PERL mainboard + 24dc 82801EB (ICH5) LPC Interface Bridge + 24dd 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller + 1014 0287 ThinkCentre S50 + 1014 02dd eServer xSeries server mainboard + 1014 02ed eServer xSeries server mainboard + 1028 0168 Precision Workstation 670 Mainboard + 1028 0169 Precision 470 + 1028 016c PowerEdge 1850 onboard EHCI + 1028 016d PowerEdge 2850 onboard EHCI + 1028 0170 PowerEdge 6850 onboard EHCI + 1028 0183 PowerEdge 1800 + 1028 019a PowerEdge SC1425 + 103c 006a NX9500 + 103c 12bc d530 CMT (DG746A) + 103c 3208 ProLiant DL140 G2 + 1043 80a6 P4P800/P5P800 series motherboard + 1458 5006 GA-8IPE1000 Pro2 motherboard (865PE) + 1462 7280 865PE Neo2 (MS-6728) + 1462 7650 Hetis 865GV-E (MS-7065) + 8086 3427 S875WP1-E mainboard + 8086 4246 Desktop Board D865GBF + 8086 4c43 Desktop Board D865GLC + 8086 524c D865PERL mainboard + 24de 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 + 1014 0287 ThinkCentre S50 + 1014 02ed xSeries server mainboard + 1028 0168 Precision Workstation 670 Mainboard + 1028 0169 Precision 470 + 1043 80a6 P4P800/P5P800 series motherboard + 1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE) + 1462 7280 865PE Neo2 (MS-6728) + 1462 7650 Hetis 865GV-E (MS-7065) + 1565 3101 P4TSV Motherboard (865G) + 15d9 4580 P4SCE Mainboard + 1734 101c PRIMERGY RX/TX S2 series onboard UHCI + 8086 3427 S875WP1-E mainboard + 8086 4246 Desktop Board D865GBF + 8086 4c43 Desktop Board D865GLC + 8086 524c D865PERL mainboard + 24df 82801ER (ICH5R) SATA Controller + 1028 0168 Precision Workstation 670 Mainboard + 24f0 Omni-Path HFI Silicon 100 Series [discrete] + 10a9 802e Omni-path HFI 100 Series, 1-port A-board + 10a9 802f Omni-path HFI 100 Series, 2-port A-board + 10a9 8030 Omni-path HFI 100 Series, 1-port B-board + 10a9 8031 Omni-path HFI 100 Series, 2-port B-board + 1590 00e7 100Gb 1-port OP101 QSFP28 x8 PCIe Gen3 with Intel Omni-Path Adapter + 1590 00e8 100Gb 1-port OP101 QSFP28 x16 PCIe Gen3 with Intel Omni-Path Adapter + 1590 021c Apollo 100Gb 1-port Intel Omni-Path Architecture 860z Mezzanine FIO Adapter + 15d9 0934 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, SIOM Module + 15d9 099b Omni-path HFI Mezz AOC, 1 Port, PCIe x16. + 1cb8 0001 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, TC4600 QSFP28 + 1cb8 0002 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, TC6600 Fixed Port + 1cb8 0003 Omni-Path HFI Adapter 100 Series, 2 Port, 2 PCIe x16, Earth Simulation QSFP28 + 1cb8 0004 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, TC4600E QSFP28 + 434e 0001 Omni-Path HFI Adapter 100 Series, 1 Port, OCP 3.0 + 434e 2628 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16 + 8086 2628 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16 + 8086 2629 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x8 + 8086 262a Omni-Path HFI Adapter 100 Series, 2 Ports, Split PCIe x16 + 8086 262d Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, IO Module AHWKPTP100HF + 24f1 Omni-Path HFI Silicon 100 Series [integrated] + 24f3 Wireless 8260 + 8086 0010 Dual Band Wireless-AC 8260 [Snow Field Peak AC] + 8086 1010 Dual Band Wireless-AC 8260 + 24f4 Wireless 8260 + 8086 0030 Dual Band Wireless-AC 8260 [Snow Field Peak AC] + 24fb Dual Band Wireless-AC 3168NGW [Stone Peak] + 24fd Wireless 8265 / 8275 + 8086 0010 Dual Band Wireless-AC 8265 [Windstorm Peak] + 8086 0150 Dual Band Wireless-AC 8265 + 8086 1010 Dual Band Wireless-AC 8265 + 8086 1130 Dual Band Wireless-AC 8265 + 2500 82820 820 (Camino) Chipset Host Bridge (MCH) + 1028 0095 Precision Workstation 220 Chipset + 1043 801c P3C-2000 system chipset + 2501 82820 820 (Camino) Chipset Host Bridge (MCH) + 1043 801c P3C-2000 system chipset + 250b 82820 820 (Camino) Chipset Host Bridge + 250f 82820 820 (Camino) Chipset AGP Bridge + 2520 82805AA MTH Memory Translator Hub + 2521 82804AA MRH-S Memory Repeater Hub for SDRAM + 2522 NVMe Optane Memory Series + 8086 3806 Optane Memory 16GB + 8086 3810 Optane Memory M10 16GB + 2525 Optane NVME SSD P1600X Series + 2526 Wi-Fi 5(802.11ac) Wireless-AC 9x6x [Thunder Peak] + 8086 0014 Dual Band Wi-Fi 5 Wireless-AC 9260 160MHz 2x2 + 8086 0210 Dual Band Wi-Fi 5 Wireless-AC 9260 80MHz 2x2 + 8086 0214 Dual Band Wi-Fi 5 Wireless-AC 9260 80MHz 2x2 + 8086 0230 Dual Band Wi-Fi 5 Wireless-AC 9560 80MHz 2x2 + 8086 0234 Dual Band Wi-Fi 5 Wireless-AC 9560 80MHz 2x2 + 8086 0238 Dual Band Wi-Fi 5 Wireless-AC 9560 80MHz 2x2 + 8086 023c Dual Band Wi-Fi 5 Wireless-AC 9560 80MHz 2x2 + 8086 0260 Dual Band Wi-Fi 5 Wireless-AC 9461 80MHz 1x1 + 8086 0264 Dual Band Wi-Fi 5 Wireless-AC 9461 80MHz 1x1 + 8086 02a0 Dual Band Wi-Fi 5 Wireless-AC 9462 80MHz 1x1 + 8086 02a4 Dual Band Wi-Fi 5 Wireless-AC 9462 80MHz 1x1 + 2530 82850 850 (Tehama) Chipset Host Bridge (MCH) + 1028 00c7 Dimension 8100 + 147b 0507 TH7II-RAID + 2531 82860 860 (Wombat) Chipset Host Bridge (MCH) + 1028 00d8 Precision 530 + 2532 82850 850 (Tehama) Chipset AGP Bridge + 2533 82860 860 (Wombat) Chipset AGP Bridge + 2534 82860 860 (Wombat) Chipset PCI Bridge + 2540 E7500 Memory Controller Hub + 15d9 3480 P4DP6 + 2541 E7500/E7501 Host RASUM Controller + 15d9 3480 P4DP6 + 4c53 1090 Cx9 / Vx9 mainboard + 8086 3424 SE7501HG2 Mainboard + 2543 E7500/E7501 Hub Interface B PCI-to-PCI Bridge + 2544 E7500/E7501 Hub Interface B RASUM Controller + 4c53 1090 Cx9 / Vx9 mainboard + 2545 E7500/E7501 Hub Interface C PCI-to-PCI Bridge + 2546 E7500/E7501 Hub Interface C RASUM Controller + 2547 E7500/E7501 Hub Interface D PCI-to-PCI Bridge + 2548 E7500/E7501 Hub Interface D RASUM Controller + 254c E7501 Memory Controller Hub + 4c53 1090 Cx9 / Vx9 mainboard + 8086 3424 SE7501HG2 Mainboard + 2550 E7505 Memory Controller Hub + 2551 E7505/E7205 Series RAS Controller + 2552 E7505/E7205 PCI-to-AGP Bridge + 2553 E7505 Hub Interface B PCI-to-PCI Bridge + 2554 E7505 Hub Interface B PCI-to-PCI Bridge RAS Controller + 255d E7205 Memory Controller Hub + 2560 82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface + 1028 0126 Optiplex GX260 + 1458 2560 GA-8PE667 Ultra + 1462 5800 845PE Max (MS-6580) + 2561 82845G/GL[Brookdale-G]/GE/PE Host-to-AGP Bridge + 2562 82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device + 0e11 00b9 Evo D510 SFF + 1014 0267 NetVista A30p + 1028 0160 Dimension 2400 + 1734 1003 D1521 Mainboard (Fujitsu-Siemens) + 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) + 2570 82865G/PE/P DRAM Controller/Host-Hub Interface + 103c 006a NX9500 + 103c 12bc d330 uT + 1043 80f2 P4P800/P5P800 series motherboard + 1458 2570 GA-8IPE1000 Pro2 motherboard (865PE) + 2571 82865G/PE/P AGP Bridge + 2572 82865G Integrated Graphics Controller + 1014 0287 ThinkCentre S50 + 1028 019d Dimension 3000 + 103c 12bc D530 sff(dc578av) + 1043 80a5 P5P800-MX Mainboard + 1462 7650 Hetis 865GV-E (MS-7065) + 1734 101b Fujitsu-Siemens Scenic E300 i865GV + 8086 4246 Desktop Board D865GBF + 8086 4c43 Desktop Board D865GLC + 2573 82865G/PE/P PCI to CSA Bridge + 2576 82865G/PE/P Processor to I/O Memory Interface + 2578 82875P/E7210 Memory Controller Hub + 1458 2578 GA-8KNXP motherboard (875P) + 1462 7580 MS-6758 (875P Neo) + 15d9 4580 P4SCE Motherboard + 2579 82875P Processor to AGP Controller + 257b 82875P/E7210 Processor to PCI to CSA Bridge + 257e 82875P/E7210 Processor to I/O Memory Interface + 2580 82915G/P/GV/GL/PL/910GL Memory Controller Hub + 1458 2580 GA-8I915ME-G Mainboard + 1462 7028 915P/G Neo2 + 1734 105b Scenic W620 + 2581 82915G/P/GV/GL/PL/910GL PCI Express Root Port + 2582 82915G/GV/910GL Integrated Graphics Controller + 1028 1079 Optiplex GX280 + 103c 3006 DC7100 SFF(DX878AV) + 1043 2582 P5GD1-VW Mainboard + 1458 2582 GA-8I915ME-G Mainboard + 1734 105b Scenic W620 + 1849 2582 ASRock P4Dual-915GL + 2584 82925X/XE Memory Controller Hub + 1028 0177 Dimension 8400 + 2585 82925X/XE PCI Express Root Port + 2588 E7220/E7221 Memory Controller Hub + 2589 E7220/E7221 PCI Express Root Port + 258a E7221 Integrated Graphics Controller + 2590 Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller + 1014 0575 ThinkPad X41 / Z60t + 1028 0182 Latitude C610 + 103c 0934 Compaq nw8240/nx8220 + 103c 0944 Compaq nc6220 Notebook PC + 103c 099c NX6110/NC6120 + 1043 82d9 Asus Eee PC 900 + 104d 81b7 Vaio VGN-S3XP + a304 81b7 Vaio VGN-S3XP + e4bf 0ccd CCD-CALYPSO + e4bf 0cd3 CD3-JIVE + e4bf 58b1 XB1 + 2591 Mobile 915GM/PM Express PCI Express Root Port + 103c 0934 Compaq nw8240 Mobile Workstation + 2592 Mobile 915GM/GMS/910GML Express Graphics Controller + 1014 0582 ThinkPad X41 + 103c 099c NX6110/NC6120 + 103c 308a NC6220 + 1043 1881 GMA 900 915GM Integrated Graphics + e4bf 0ccd CCD-CALYPSO + e4bf 0cd3 CD3-JIVE + e4bf 58b1 XB1 + 25a1 6300ESB LPC Interface Controller + 25a2 6300ESB PATA Storage Controller + 1734 1073 Primergy Econel 200 D2020 mainboard + 1775 10d0 V5D Single Board Computer IDE + 1775 1100 CR11/VR11 Single Board Computer + 1775 ce90 CE9 + 4c53 10b0 CL9 mainboard + 4c53 10e0 PSL09 PrPMC + 25a3 6300ESB SATA Storage Controller + 1734 1073 Primergy Econel 200 D2020 mainboard + 1775 1100 CR11/VR11 Single Board Computer + 1775 ce90 CE9 + 4c53 10b0 CL9 mainboard + 4c53 10d0 Telum ASLP10 Processor AMC + 4c53 10e0 PSL09 PrPMC + 25a4 6300ESB SMBus Controller + 1734 1073 Primergy Econel 200 D2020 mainboard + 1775 10d0 V5D Single Board Computer + 1775 1100 CR11/VR11 Single Board Computer + 1775 ce90 CE9 + 4c53 10b0 CL9 mainboard + 4c53 10d0 Telum ASLP10 Processor AMC + 4c53 10e0 PSL09 PrPMC + 25a6 6300ESB AC'97 Audio Controller + 1775 1100 CR11/VR11 Single Board Computer + 1775 ce90 CE9 + 4c53 10b0 CL9 mainboard + 25a7 6300ESB AC'97 Modem Controller + 25a9 6300ESB USB Universal Host Controller + 1734 1073 Primergy Econel 200 D2020 mainboard + 1775 10d0 V5D Single Board Computer USB + 1775 1100 CR11/VR11 Single Board Computer + 1775 ce90 CE9 + 4c53 10b0 CL9 mainboard + 4c53 10d0 Telum ASLP10 Processor AMC + 4c53 10e0 PSL09 PrPMC + 25aa 6300ESB USB Universal Host Controller + 1734 1073 Primergy Econel 200 D2020 mainboard + 1775 1100 CR11/VR11 Single Board Computer + 1775 ce90 CE9 + 4c53 10b0 CL9 mainboard + 4c53 10d0 Telum ASLP10 Processor AMC + 4c53 10e0 PSL09 PrPMC + 25ab 6300ESB Watchdog Timer + 1734 1073 Primergy Econel 200 D2020 mainboard + 1775 10d0 V5D Single Board Computer + 1775 1100 CR11/VR11 Single Board Computer + 1775 ce90 CE9 + 1af4 1100 QEMU Virtual Machine + 4c53 10b0 CL9 mainboard + 4c53 10d0 Telum ASLP10 Processor AMC + 4c53 10e0 PSL09 PrPMC + 25ac 6300ESB I/O Advanced Programmable Interrupt Controller + 1734 1073 Primergy Econel 200 D2020 mainboard + 1775 10d0 V5D Single Board Computer + 1775 1100 CR11/VR11 Single Board Computer + 1775 ce90 CE9 + 4c53 10b0 CL9 mainboard + 4c53 10d0 Telum ASLP10 Processor AMC + 4c53 10e0 PSL09 PrPMC + 25ad 6300ESB USB2 Enhanced Host Controller + 1734 1073 Primergy Econel 200 D2020 mainboard + 1775 10d0 V5D Single Board Computer USB 2.0 + 1775 1100 CR11/VR11 Single Board Computer + 1775 ce90 CE9 + 4c53 10b0 CL9 mainboard + 4c53 10d0 Telum ASLP10 Processor AMC + 4c53 10e0 PSL09 PrPMC + 25ae 6300ESB 64-bit PCI-X Bridge + 25b0 6300ESB SATA RAID Controller + 1775 1100 CR11/VR11 Single Board Computer + 4c53 10d0 Telum ASLP10 Processor AMC + 4c53 10e0 PSL09 PrPMC + 25c0 5000X Chipset Memory Controller Hub + 25d0 5000Z Chipset Memory Controller Hub + 25d4 5000V Chipset Memory Controller Hub + 15d9 8680 X7DVL-E-O motherboard + 25d8 5000P Chipset Memory Controller Hub + 103c 31fd ProLiant DL360 G5 + 15d9 9680 X7DBN Motherboard + 8086 3476 S5000PSLSATA Server Board + 25e2 5000 Series Chipset PCI Express x4 Port 2 + 25e3 5000 Series Chipset PCI Express x4 Port 3 + 25e4 5000 Series Chipset PCI Express x4 Port 4 + 25e5 5000 Series Chipset PCI Express x4 Port 5 + 25e6 5000 Series Chipset PCI Express x4 Port 6 + 25e7 5000 Series Chipset PCI Express x4 Port 7 + 25f0 5000 Series Chipset FSB Registers + 1028 01bb PowerEdge 1955 FSB Registers + 103c 31fd ProLiant DL140 G3, DL360 G5 + 15d9 8680 X7DVL-E-O motherboard + 15d9 9680 X7DBN Motherboard + 8086 3476 S5000PSLSATA Server Board + 25f1 5000 Series Chipset Reserved Registers + 103c 31fd ProLiant DL140 G3, DL360 G5 + 15d9 8680 X7DVL-E-O motherboard + 15d9 9680 X7DBN Motherboard + 8086 3476 S5000PSLSATA Server Board + 25f3 5000 Series Chipset Reserved Registers + 103c 31fd ProLiant DL140 G3, DL360 G5 + 15d9 8680 X7DVL-E-O motherboard + 15d9 9680 X7DBN Motherboard + 8086 3476 S5000PSLSATA Server Board + 25f5 5000 Series Chipset FBD Registers + 103c 31fd ProLiant DL140 G3, DL360 G5 + 15d9 8680 X7DVL-E-O motherboard + 15d9 9680 X7DBN Motherboard + 8086 3476 S5000PSLSATA Server Board + 25f6 5000 Series Chipset FBD Registers + 103c 31fd ProLiant DL140 G3, DL360 G5 + 15d9 8680 X7DVL-E-O motherboard + 15d9 9680 X7DBN Motherboard + 8086 3476 S5000PSLSATA Server Board + 25f7 5000 Series Chipset PCI Express x8 Port 2-3 + 25f8 5000 Series Chipset PCI Express x8 Port 4-5 + 25f9 5000 Series Chipset PCI Express x8 Port 6-7 + 25fa 5000X Chipset PCI Express x16 Port 4-7 + 2600 E8500/E8501 Hub Interface 1.5 + 1028 0170 PowerEdge 6850 Hub Interface + 2601 E8500/E8501 PCI Express x4 Port D + 2602 E8500/E8501 PCI Express x4 Port C0 + 2603 E8500/E8501 PCI Express x4 Port C1 + 2604 E8500/E8501 PCI Express x4 Port B0 + 2605 E8500/E8501 PCI Express x4 Port B1 + 2606 E8500/E8501 PCI Express x4 Port A0 + 2607 E8500/E8501 PCI Express x4 Port A1 + 2608 E8500/E8501 PCI Express x8 Port C + 2609 E8500/E8501 PCI Express x8 Port B + 260a E8500/E8501 PCI Express x8 Port A + 260c E8500/E8501 IMI Registers + 2610 E8500/E8501 FSB Registers + 2611 E8500/E8501 Address Mapping Registers + 2612 E8500/E8501 RAS Registers + 2613 E8500/E8501 Reserved Registers + 2614 E8500/E8501 Reserved Registers + 2615 E8500/E8501 Miscellaneous Registers + 2617 E8500/E8501 Reserved Registers + 2618 E8500/E8501 Reserved Registers + 2619 E8500/E8501 Reserved Registers + 261a E8500/E8501 Reserved Registers + 261b E8500/E8501 Reserved Registers + 261c E8500/E8501 Reserved Registers + 261d E8500/E8501 Reserved Registers + 261e E8500/E8501 Reserved Registers + 2620 E8500/E8501 eXternal Memory Bridge + 1028 0170 PowerEdge 6850 Memory Bridge + 2621 E8500/E8501 XMB Miscellaneous Registers + 1028 0170 PowerEdge 6850 XMB Registers + 2622 E8500/E8501 XMB Memory Interleaving Registers + 1028 0170 PowerEdge 6850 Memory Interleaving Registers + 2623 E8500/E8501 XMB DDR Initialization and Calibration + 1028 0170 PowerEdge 6850 DDR Initialization and Calibration + 2624 E8500/E8501 XMB Reserved Registers + 1028 0170 PowerEdge 6850 Reserved Registers + 2625 E8500/E8501 XMB Reserved Registers + 1028 0170 PowerEdge 6850 Reserved Registers + 2626 E8500/E8501 XMB Reserved Registers + 1028 0170 PowerEdge 6850 Reserved Registers + 2627 E8500/E8501 XMB Reserved Registers + 1028 0170 PowerEdge 6850 Reserved Registers + 2640 82801FB/FR (ICH6/ICH6R) LPC Interface Bridge + 1462 7028 915P/G Neo2 + 1734 105c Scenic W620 + e4bf 0ccd CCD-CALYPSO + e4bf 0cd3 CD3-JIVE + e4bf 58b1 XB1 + 2641 82801FBM (ICH6M) LPC Interface Bridge + 1014 0568 ThinkPad X41 + 103c 0934 Compaq nw8240/nx8220 + 103c 0944 Compaq nc6220 Notebook PC + 103c 099c NX6110/NC6120 + 2642 82801FW/FRW (ICH6W/ICH6RW) LPC Interface Bridge + 2651 82801FB/FW (ICH6/ICH6W) SATA Controller + 1028 0179 Optiplex GX280 + 1043 2601 P5GD1-VW Mainboard + 1734 105c Scenic W620 + 8086 4147 D915GAG Motherboard + e4bf 0ccd CCD-CALYPSO + e4bf 0cd3 CD3-JIVE + e4bf 58b1 XB1 + 2652 82801FR/FRW (ICH6R/ICH6RW) SATA Controller + 1028 0177 Dimension 8400 + 1462 7028 915P/G Neo2 + 2653 82801FBM (ICH6M) SATA Controller + 1014 056a ThinkPad X41 + 2658 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 + 1014 0565 ThinkPad X41 + 1028 0177 Dimension 8400 + 1028 0179 Optiplex GX280 + 103c 0934 Compaq nw8240/nx8220 + 103c 0944 Compaq nc6220 Notebook PC + 103c 099c NX6110/NC6120 + 1043 80a6 P5GD1-VW Mainboard + 1458 2558 GA-8I915ME-G Mainboard + 1462 7028 915P/G Neo2 + 1734 105c Scenic W620 + e4bf 0ccd CCD-CALYPSO + e4bf 0cd3 CD3-JIVE + e4bf 58b1 XB1 + 2659 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 + 1014 0565 ThinkPad X41 + 1028 0177 Dimension 8400 + 1028 0179 Optiplex GX280 + 103c 0934 Compaq nw8240/nx8220 + 103c 0944 Compaq nc6220 Notebook PC + 103c 099c NX6110/NC6120 + 1043 80a6 P5GD1-VW Mainboard + 1458 2659 GA-8I915ME-G Mainboard + 1462 7028 915P/G Neo2 + 1734 105c Scenic W620 + e4bf 0ccd CCD-CALYPSO + e4bf 0cd3 CD3-JIVE + e4bf 58b1 XB1 + 265a 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 + 1014 0565 ThinkPad X41 + 1028 0177 Dimension 8400 + 1028 0179 Optiplex GX280 + 103c 0934 Compaq nw8240/nx8220 + 103c 0944 Compaq nc6220 Notebook PC + 103c 099c NX6110/NC6120 + 1043 80a6 P5GD1-VW Mainboard + 1458 265a GA-8I915ME-G Mainboard + 1462 7028 915P/G Neo2 + 1734 105c Scenic W620 + e4bf 0ccd CCD-CALYPSO + e4bf 0cd3 CD3-JIVE + e4bf 58b1 XB1 + 265b 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 + 1014 0565 ThinkPad X41 + 1028 0177 Dimension 8400 + 1028 0179 Optiplex GX280 + 103c 099c NX6110/NC6120 + 1043 80a6 P5GD1-VW Mainboard + 1458 265a GA-8I915ME-G Mainboard + 1462 7028 915P/G Neo2 + 1734 105c Scenic W620 + e4bf 0ccd CCD-CALYPSO + e4bf 0cd3 CD3-JIVE + e4bf 58b1 XB1 + 265c 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller + 1014 0566 ThinkPad X41 + 1028 0177 Dimension 8400 + 1028 0179 Optiplex GX280 + 103c 0934 Compaq nw8240/nx8220 + 103c 0944 Compaq nc6220 Notebook PC + 103c 099c NX6110/NC6120 + 1043 80a6 P5GD1-VW Mainboard + 1458 5006 GA-8I915ME-G Mainboard + 1462 7028 915P/G Neo2 + 1734 105c Scenic W620 + 8086 265c Dimension 3100 + e4bf 0ccd CCD-CALYPSO + e4bf 0cd3 CD3-JIVE + e4bf 58b1 XB1 + 2660 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 + 103c 0934 Compaq nw8240 Mobile Workstation + 103c 0944 Compaq nc6220 Notebook PC + 103c 099c NX6110/NC6120 + e4bf 0ccd CCD-CALYPSO + e4bf 0cd3 CD3-JIVE + e4bf 58b1 XB1 + 2662 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2 + 103c 0934 Compaq nw8240 Mobile Workstation + 103c 0944 Compaq nc6220 Notebook PC + e4bf 0ccd CCD-CALYPSO + e4bf 0cd3 CD3-JIVE + e4bf 58b1 XB1 + 2664 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3 + e4bf 0ccd CCD-CALYPSO + e4bf 0cd3 CD3-JIVE + e4bf 58b1 XB1 + 2666 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 4 + e4bf 0ccd CCD-CALYPSO + e4bf 0cd3 CD3-JIVE + e4bf 58b1 XB1 + 2668 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller + 1014 05b7 ThinkPad Z60t +# based on the PTGD1-LA motherboard + 103c 2a09 PufferM-UL8E + 1043 1173 A6VC + 1043 814e P5GD1-VW Mainboard + 1462 7028 915P/G Neo2 + 1af4 1100 QEMU Virtual Machine + 266a 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller + 1014 056b ThinkPad X41 + 1028 0177 Dimension 8400 + 1028 0179 Optiplex GX280 + 1043 80a6 P5GD1-VW Mainboard + 1458 266a GA-8I915ME-G Mainboard + 1462 7028 915P/G Neo2 + 1734 105c Scenic W620 + e4bf 0ccd CCD-CALYPSO + e4bf 0cd3 CD3-JIVE + e4bf 58b1 XB1 + 266c 82801FB/FBM/FR/FW/FRW (ICH6 Family) LAN Controller + 266d 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller + 1025 006a Conexant AC'97 CoDec (in Acer TravelMate 2410 serie laptop) + 103c 0934 Compaq nw8240/nx8220 + 103c 099c NX6110/NC6120 + 266e 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller + 1014 0581 ThinkPad X41 (Analog Devices AD1981B codec) + 1025 006a Realtek ALC 655 codec (in Acer TravelMate 2410 serie laptop) + 1028 0177 Dimension 8400 + 1028 0179 Optiplex GX280 + 1028 0182 Latitude D610 Laptop + 1028 0187 Precision M70 Laptop + 1028 0188 Inspiron 6000 laptop + 103c 0934 Compaq nw8240/nx8220 + 103c 0944 Compaq NC6220 + 103c 099c NX6110/NC6120 + 103c 3006 DC7100 SFF(DX878AV) + 1458 a002 GA-8I915ME-G Mainboard + 152d 0745 Packard Bell A8550 Laptop + 1734 105a Scenic W620 + 266f 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller + 1028 0177 Dimension 8400 + 103c 0934 Compaq nw8240/nx8220 + 103c 0944 Compaq nc6220 Notebook PC + 103c 099c NX6110/NC6120 + 1043 80a6 P5GD1-VW Mainboard + 1458 266f GA-8I915ME-G Mainboard + 1462 7028 915P/G Neo2 + 1734 105c Scenic W620 + e4bf 0ccd CCD-CALYPSO + e4bf 0cd3 CD3-JIVE + e4bf 58b1 XB1 + 2670 631xESB/632xESB/3100 Chipset LPC Interface Controller + 103c 31fe ProLiant DL140 G3 + 15d9 8680 X7DVL-E-O motherboard + 15d9 9680 X7DBN Motherboard + 8086 3476 S5000PSLSATA Server Board + 2680 631xESB/632xESB/3100 Chipset SATA IDE Controller + 2681 631xESB/632xESB SATA AHCI Controller + 103c 31fe ProLiant DL140 G3 + 15d9 8680 X7DVL-E-O motherboard + 15d9 9680 X7DBN Motherboard + 8086 3476 S5000PSLSATA Server Board + 2682 631xESB/632xESB SATA RAID Controller + 103c 31fe Adaptec Serial ATA HostRAID + 2683 631xESB/632xESB SATA RAID Controller + 2688 631xESB/632xESB/3100 Chipset UHCI USB Controller #1 + 1028 01bb PowerEdge 1955 onboard USB + 1028 01f0 PowerEdge R900 onboard USB + 103c 31fe ProLiant DL140 G3, DL360 G5 + 15d9 8680 X7DVL-E-O motherboard + 15d9 9680 X7DBN Motherboard + 8086 3476 S5000PSLSATA Server Board + 2689 631xESB/632xESB/3100 Chipset UHCI USB Controller #2 + 1028 01bb PowerEdge 1955 onboard USB + 1028 01f0 PowerEdge R900 onboard USB + 103c 31fe ProLiant DL140 G3, DL360 G5 + 15d9 8680 X7DVL-E-O motherboard + 15d9 9680 X7DBN Motherboard + 8086 3476 S5000PSLSATA Server Board + 268a 631xESB/632xESB/3100 Chipset UHCI USB Controller #3 + 1028 01f0 PowerEdge R900 onboard USB + 103c 31fe ProLiant DL140 G3, DL360 G5 + 15d9 8680 X7DVL-E-O motherboard + 15d9 9680 X7DBN Motherboard + 8086 3476 S5000PSLSATA Server Board + 268b 631xESB/632xESB/3100 Chipset UHCI USB Controller #4 + 1028 01f0 PowerEdge R900 onboard USB + 103c 31fe ProLiant DL360 G5 + 15d9 8680 X7DVL-E-O motherboard + 8086 3476 S5000PSLSATA Server Board + 268c 631xESB/632xESB/3100 Chipset EHCI USB2 Controller + 1028 01bb PowerEdge 1955 onboard USB + 1028 01f0 PowerEdge R900 onboard USB + 103c 31fe ProLiant DL140 G3, DL360 G5 + 15d9 8680 X7DVL-E-O motherboard + 15d9 9680 X7DBN Motherboard + 8086 3476 S5000PSLSATA Server Board + 2690 631xESB/632xESB/3100 Chipset PCI Express Root Port 1 + 103c 31fe ProLiant DL140 G3 + 15d9 9680 X7DBN Motherboard + 2692 631xESB/632xESB/3100 Chipset PCI Express Root Port 2 + 103c 31fe ProLiant DL140 G3 + 2694 631xESB/632xESB/3100 Chipset PCI Express Root Port 3 + 2696 631xESB/632xESB/3100 Chipset PCI Express Root Port 4 + 2698 631xESB/632xESB AC '97 Audio Controller + 2699 631xESB/632xESB AC '97 Modem Controller + 269a 631xESB/632xESB High Definition Audio Controller + 269b 631xESB/632xESB/3100 Chipset SMBus Controller + 103c 31fe ProLiant DL140 G3 + 15d9 8680 X7DVL-E-O motherboard + 15d9 9680 X7DBN Motherboard + 8086 3476 S5000PSLSATA Server Board + 269e 631xESB/632xESB IDE Controller + 103c 31fe ProLiant DL140 G3, DL360 G5 + 15d9 8680 X7DVL-E-O motherboard + 15d9 9680 X7DBN Motherboard + 2700 Optane SSD 900P Series + 8086 3900 900P Series [Add-in Card] + 8086 3901 900P Series [2.5" SFF] + 2701 NVMe Datacenter SSD [Optane] + 1028 2000 Express Flash NVMe [Optane] 375GB 2.5" U.2 (P4800X) + 1028 2001 Express Flash NVMe [Optane] 750GB 2.5" U.2 (P4800X) + 1028 2002 Express Flash NVMe [Optane] 750GB AIC (P4800X) + 1028 200a Express Flash NVMe [Optane] 375GB AIC (P4800X) + 8086 3904 NVMe Datacenter SSD [Optane] x4 AIC (P4800X) + 8086 3905 NVMe Datacenter SSD [Optane] 15mm 2.5" U.2 (P4800X) + 2723 Wi-Fi 6 AX200 + 1a56 1654 Killer Wi-Fi 6 AX1650x (AX200NGW) + 8086 0084 Wi-Fi 6 AX200NGW + 2725 Wi-Fi 6E(802.11ax) AX210/AX1675* 2x2 [Typhoon Peak] + 1a56 1673 Killer AX1675w 160MHz + 1a56 1674 Killer Wi-Fi 6E AX1675x 160MHz + 8086 0020 Wi-Fi 6 AX210 160MHz + 8086 0024 Wi-Fi 6 AX210 160MHz + 8086 0310 Wi-Fi 6 AX210 160MHz + 8086 0510 Wi-Fi 6 AX210 160MHz + 8086 0a10 Wi-Fi 6 AX210 160MHz + 8086 2020 Wi-Fi 6 AX210 160MHz + 8086 4020 Wi-Fi 6 AX210 160MHz + 8086 6020 Wi-Fi 6 AX210 160MHz + 8086 6024 Wi-Fi 6 AX210 160MHz + 8086 e020 Wi-Fi 6 AX210 160MHz + 8086 e024 Wi-Fi 6 AX210 160MHz + 272b Wi-Fi 7(802.11be) AX1775*/AX1790*/BE20*/BE401/BE1750* 2x2 + 8086 00f0 BE200 320MHz [Gale Peak] + 8086 00f4 BE200 320MHz [Gale Peak] + 8086 02f4 BE202 160MHz [Misty Peak] + 8086 40f0 BE200 320MHz [Gale Peak] + 8086 42f4 BE202 160MHz [Misty Peak] + 8086 e0f4 BE200 320MHz [Gale Peak] + 2770 82945G/GZ/P/PL Memory Controller Hub + 1028 01ad OptiPlex GX620 + 103c 2a3b Pavilion A1512X + 1043 817a P5LD2-VM Mainboard + 107b 5048 E4500 + 1462 7418 Wind PC MS-7418 + 1849 2770 ConRoe1333-D667 + 8086 544e DeskTop Board D945GTP + 2771 82945G/GZ/P/PL PCI Express Root Port + 2772 82945G/GZ Integrated Graphics Controller + 103c 2a3b Pavilion A1512X + 1462 7418 Wind PC MS-7418 + 1849 2772 ConRoe1333-D667 + 8086 544e DeskTop Board D945GTP + 8086 d605 Desktop Board D945GCCR + 2774 82955X Memory Controller Hub + 2775 82955X PCI Express Root Port + 2776 82945G/GZ Integrated Graphics Controller + 2778 E7230/3000/3010 Memory Controller Hub + 1028 01df PowerEdge SC440 + 1028 01e6 PowerEdge 860 + 2779 E7230/3000/3010 PCI Express Root Port + 277a 82975X/3010 PCI Express Root Port + 277c 82975X Memory Controller Hub + 1043 8178 P5WDG2 WS Professional motherboard + 277d 82975X PCI Express Root Port + 2780 82915G/GV/GL/910GL [Grantsdale] Graphics Device + 2782 82915G Integrated Graphics Controller + 1043 2582 P5GD1-VW Mainboard + 1734 105b Scenic W620 + 2792 Mobile 915GM/GMS/910GML Express Graphics Controller + 1014 0582 ThinkPad X41 + 103c 099c NX6110/NC6120 + 103c 308a Compaq nc6220 Notebook PC + 1043 1881 GMA 900 915GM Integrated Graphics + e4bf 0ccd CCD-CALYPSO + e4bf 0cd3 CD3-JIVE + e4bf 58b1 XB1 + 27a0 Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub + 1025 006c 9814 WKMI + 1028 01d7 XPS M1210 + 103c 309f Compaq nx9420 Notebook + 103c 30a1 NC2400 + 103c 30a3 Compaq nw8440 + 103c 30d5 530 Laptop + 1043 1237 A6J-Q008 + 1071 8209 Medion MIM 2240 Notebook PC [MD98100] + 17aa 2015 ThinkPad T60 + 17aa 2017 ThinkPad R60/T60/X60 series + 27a1 Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port + 103c 309f Compaq nx9420 Notebook + 103c 30a3 Compaq nw8440 + 1071 8209 Medion MIM 2240 Notebook PC [MD98100] + 27a2 Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller + 103c 30a1 NC2400 + 103c 30d5 530 Laptop + 17aa 201a ThinkPad R60/T60/X60 series + 9902 1584 CCE MPL-D10H120F + 27a6 Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller + 103c 30a1 NC2400 + 103c 30d5 530 Laptop + 1775 11cc CC11/CL11 integrated graphics (secondary) + 17aa 201a ThinkPad R60/T60/X60 series + 27ac Mobile 945GSE Express Memory Controller Hub + 1775 11cc CC11/CL11 + 27ad Mobile 945GSE Express PCI Express Root Port + 27ae Mobile 945GSE Express Integrated Graphics Controller + 1775 11cc CC11/CL11 integrated graphics (primary) + 27b0 82801GH (ICH7DH) LPC Interface Bridge + 103c 2a3b Pavilion A1512X + 8086 544e DeskTop Board D945GTP + 27b8 82801GB/GR (ICH7 Family) LPC Interface Bridge + 1028 01e6 PowerEdge 860 + 103c 2a8c Compaq 500B Microtower + 1043 8179 P5B-MX/WiFi-AP, P5KPL-VM Motherboard + 107b 5048 E4500 + 1462 7418 Wind PC MS-7418 + 1775 11cc CC11/CL11 + 8086 544e DeskTop Board D945GTP + 27b9 82801GBM (ICH7-M) LPC Interface Bridge + 1028 01d7 XPS M1210 + 103c 309f Compaq nx9420 Notebook + 103c 30a1 NC2400 + 103c 30a3 Compaq nw8440 + 103c 30d5 530 Laptop + 1071 8209 Medion MIM 2240 Notebook PC [MD98100] + 10f7 8338 Panasonic CF-Y5 laptop + 17aa 2009 ThinkPad R60/T60/X60 series + 27bc NM10 Family LPC Controller + 1043 83ad Eee PC 1015PX + 105b 0d7c D270S/D250S Motherboard + 144d c072 Notebook N150P + 1458 5001 GA-D525TUD + 8086 4f4d DeskTop Board D510MO + 8086 544b Desktop Board D425KT + 27bd 82801GHM (ICH7-M DH) LPC Interface Bridge + 1025 006c 9814 WKMI + 27c0 NM10/ICH7 Family SATA Controller [IDE mode] + 1028 01ad OptiPlex GX620 + 1028 01df PowerEdge SC440 + 1028 01e6 PowerEdge 860 + 103c 2a8c Compaq 500B Microtower + 1043 8179 P5B-MX/WiFi-AP, P5KPL-VM Motherboard + 107b 5048 E4500 + 1462 2310 MSI Hetis 945 + 1462 7236 945P Neo3-F Rev. 2.2 motherboard + 1462 7418 Wind PC MS-7418 + 1775 11cc CC11/CL11 + 8086 544b Desktop Board D425KT + 8086 544e DeskTop Board D945GTP + 27c1 NM10/ICH7 Family SATA Controller [AHCI mode] + 1028 01df PowerEdge SC440 + 103c 2a3b Pavilion A1512X + 1043 83ad Eee PC 1015PX + 105b 0d7c D270S/D250S Motherboard + 144d c072 Notebook N150P + 1458 b005 GA-D525TUD + 1775 11cc CC11/CL11 + 8086 4f4d DeskTop Board D510MO + 8086 5842 DeskTop Board D975XBX + 27c3 82801GR/GDH (ICH7R/ICH7DH) SATA Controller [RAID mode] + 1775 11cc CC11/CL11 + 8086 544e DeskTop Board D945GTP + 27c4 82801GBM/GHM (ICH7-M Family) SATA Controller [IDE mode] + 1025 006c 9814 WKMI + 1028 01d7 XPS M1210 + 1071 8209 Medion MIM 2240 Notebook PC [MD98100] + 17aa 200e ThinkPad T60 + 27c5 82801GBM/GHM (ICH7-M Family) SATA Controller [AHCI mode] + 103c 309f Compaq nx9420 Notebook + 103c 30a3 Compaq nw8440 + 103c 30d5 530 Laptop + 17aa 200d ThinkPad R60/T60/X60 series + 27c6 82801GHM (ICH7-M DH) SATA Controller [RAID mode] + 27c8 NM10/ICH7 Family USB UHCI Controller #1 + 1025 006c 9814 WKMI + 1028 01ad OptiPlex GX620 + 1028 01d7 XPS M1210 + 1028 01df PowerEdge SC440 + 1028 01e6 PowerEdge 860 + 103c 2a3b Pavilion A1512X + 103c 2a8c Compaq 500B Microtower + 103c 309f Compaq nx9420 Notebook + 103c 30a1 NC2400 + 103c 30a3 Compaq nw8440 + 103c 30d5 530 Laptop + 1043 1237 A6J-Q008 + 1043 8179 P5B-MX/WiFi-AP, P5KPL-VM, P5LD2-VM Mainboard + 1043 83ad Eee PC 1015PX + 105b 0d7c D270S/D250S Motherboard + 1071 8209 Medion MIM 2240 Notebook PC [MD98100] + 107b 5048 E4500 + 144d c072 Notebook N150P + 1458 5004 GA-D525TUD + 1462 7418 Wind PC MS-7418 + 1775 11cc CC11/CL11 + 17aa 200a ThinkPad R60/T60/X60 series + 8086 4f4d DeskTop Board D510MO + 8086 544b Desktop Board D425KT + 8086 544e DeskTop Board D945GTP + 27c9 NM10/ICH7 Family USB UHCI Controller #2 + 1025 006c 9814 WKMI + 1028 01ad OptiPlex GX620 + 1028 01d7 XPS M1210 + 1028 01df PowerEdge SC440 + 1028 01e6 PowerEdge 860 + 103c 2a3b Pavilion A1512X + 103c 2a8c Compaq 500B Microtower + 103c 309f Compaq nx9420 Notebook + 103c 30a1 NC2400 + 103c 30a3 Compaq nw8440 + 1043 1237 A6J-Q008 + 1043 8179 P5B-MX/WiFi-AP, P5KPL-VM, P5LD2-VM Mainboard + 1043 83ad Eee PC 1015PX + 105b 0d7c D270S/D250S Motherboard + 1071 8209 Medion MIM 2240 Notebook PC [MD98100] + 107b 5048 E4500 + 144d c072 Notebook N150P + 1458 5004 GA-D525TUD + 1462 7418 Wind PC MS-7418 + 1775 11cc CC11/CL11 + 17aa 200a ThinkPad R60/T60/X60 series + 8086 4f4d DeskTop Board D510MO + 8086 544b Desktop Board D425KT + 8086 544e DeskTop Board D945GTP + 27ca NM10/ICH7 Family USB UHCI Controller #3 + 1025 006c 9814 WKMI + 1028 01ad OptiPlex GX620 + 1028 01d7 XPS M1210 + 1028 01df PowerEdge SC440 + 1028 01e6 PowerEdge 860 + 103c 2a3b Pavilion A1512X + 103c 2a8c Compaq 500B Microtower + 103c 309f Compaq nx9420 Notebook + 103c 30a1 NC2400 + 103c 30a3 Compaq nw8440 + 1043 1237 A6J-Q008 + 1043 8179 P5B-MX/WiFi-AP, P5KPL-VM, P5LD2-VM Mainboard + 1043 83ad Eee PC 1015PX + 105b 0d7c D270S/D250S Motherboard + 1071 8209 Medion MIM 2240 Notebook PC [MD98100] + 107b 5048 E4500 + 144d c072 Notebook N150P + 1458 5004 GA-D525TUD + 1462 7418 Wind PC MS-7418 + 1775 11cc CC11/CL11 + 17aa 200a ThinkPad R60/T60/X60 series + 8086 4f4d DeskTop Board D510MO + 8086 544e DeskTop Board D945GTP + 27cb NM10/ICH7 Family USB UHCI Controller #4 + 1025 006c 9814 WKMI + 1028 01ad OptiPlex GX620 + 1028 01d7 XPS M1210 + 1028 01df PowerEdge SC440 + 103c 2a3b Pavilion A1512X + 103c 2a8c Compaq 500B Microtower + 103c 309f Compaq nx9420 Notebook + 103c 30a1 NC2400 + 103c 30a3 Compaq nw8440 + 1043 1237 A6J-Q008 + 1043 8179 P5B-MX/WiFi-AP, P5KPL-VM, P5LD2-VM Mainboard + 1043 83ad Eee PC 1015PX + 105b 0d7c D270S/D250S Motherboard + 1071 8209 Medion MIM 2240 Notebook PC [MD98100] + 107b 5048 E4500 + 144d c072 Notebook N150P + 1458 5004 GA-D525TUD + 1462 7418 Wind PC MS-7418 + 1775 11cc CC11/CL11 + 17aa 200a ThinkPad R60/T60/X60 series + 8086 4f4d DeskTop Board D510MO + 8086 544e DeskTop Board D945GTP + 27cc NM10/ICH7 Family USB2 EHCI Controller + 1025 006c 9814 WKMI + 1028 01ad OptiPlex GX620 + 1028 01d7 XPS M1210 + 1028 01df PowerEdge SC440 + 1028 01e6 PowerEdge 860 + 103c 2a3b Pavilion A1512X + 103c 2a8c Compaq 500B Microtower + 103c 309f Compaq nx9420 Notebook + 103c 30a1 NC2400 + 103c 30a3 Compaq nw8440 + 103c 30d5 530 Laptop + 1043 1237 A6J-Q008 + 1043 8179 P5B-MX/WiFi-AP, P5KPL-VM, P5LD2-VM Mainboard + 1043 83ad Eee PC 1015PX + 105b 0d7c D270S/D250S Motherboard + 1071 8209 Medion MIM 2240 Notebook PC [MD98100] + 144d c072 Notebook N150P + 1458 5006 GA-D525TUD + 1462 7418 Wind PC MS-7418 + 1775 11cc CC11/CL11 + 17aa 200b ThinkPad R60/T60/X60 series + 8086 4f4d DeskTop Board D510MO + 8086 544b Desktop Board D425KT + 8086 544e DeskTop Board D945GTP + 27d0 NM10/ICH7 Family PCI Express Port 1 + 103c 309f Compaq nx9420 Notebook + 103c 30a3 Compaq nw8440 + 1071 8209 Medion MIM 2240 Notebook PC [MD98100] + 144d c072 Notebook N150P + 1458 5001 GA-D525TUD + 1462 7418 Wind PC MS-7418 + 1775 11cc CC11/CL11 + 17aa 2011 ThinkPad R60e + 8086 544b Desktop Board D425KT + 27d2 NM10/ICH7 Family PCI Express Port 2 + 103c 309f Compaq nx9420 Notebook + 103c 30a3 Compaq nw8440 + 1071 8209 Medion MIM 2240 Notebook PC [MD98100] + 144d c072 Notebook N150P + 1462 7418 Wind PC MS-7418 + 1775 11cc CC11/CL11 + 17aa 2011 ThinkPad R60e + 8086 544b Desktop Board D425KT + 27d4 NM10/ICH7 Family PCI Express Port 3 + 1071 8209 Medion MIM 2240 Notebook PC [MD98100] + 144d c072 Notebook N150P + 1462 7418 Wind PC MS-7418 + 1775 11cc CC11/CL11 + 17aa 2011 ThinkPad R60e + 8086 544b Desktop Board D425KT + 27d6 NM10/ICH7 Family PCI Express Port 4 + 103c 30a3 Compaq nw8440 + 1071 8209 Medion MIM 2240 Notebook PC [MD98100] + 144d c072 Notebook N150P + 1462 7418 Wind PC MS-7418 + 1775 11cc CC11/CL11 + 17aa 2011 ThinkPad R60e + 8086 544b Desktop Board D425KT + 27d8 NM10/ICH7 Family High Definition Audio Controller + 1025 006c 9814 WKMI + 1028 01d7 XPS M1210 + 103c 2a3b Pavilion A1512X + 103c 2a8c Compaq 500B Microtower + 103c 309f Compaq nx9420 Notebook + 103c 30a1 NC2400 + 103c 30a3 Compaq nw8440 + 103c 30d5 530 Laptop + 1043 1123 A6J-Q008 + 1043 13c4 G2P + 1043 817f P5LD2-VM Mainboard (Realtek ALC 882 codec) + 1043 8249 P5B-MX/WiFi-AP + 1043 8290 P5KPL-VM Motherboard + 1043 82ea P5KPL-CM Motherboard + 1043 8437 Eee PC 1015PX + 105b 0d7c D270S/D250S Motherboard + 1071 8207 Medion MIM 2240 Notebook PC [MD98100] + 107b 5048 E4500 + 10f7 8338 Panasonic CF-Y5 laptop + 1179 ff10 Toshiba Satellite A100-796 audio (Realtek ALC861) + 1179 ff31 AC97 Data Fax SoftModem with SmartCP + 1447 1043 Asus A8JP (Analog Devices AD1986A) + 144d c072 Notebook N150P + 1458 a002 GA-D525TUD (Realtek ALC887) + 1458 a102 GA-8I945PG-RH Mainboard + 1462 7418 Wind PC MS-7418 + 152d 0753 Softmodem + 1734 10ad Conexant softmodem SmartCP + 17aa 2010 ThinkPad R60/T60/X60 series + 17aa 3802 3000 C200 audio [Realtek ALC861VD] + 8086 1112 DeskTop Board D945GTP + 8086 27d8 DeskTop Board D945GTP + 8086 d618 DeskTop Board D510MO + 8384 7680 STAC9221 HD Audio Codec + 27da NM10/ICH7 Family SMBus Controller + 1025 006c 9814 WKMI + 1028 01ad OptiPlex GX620 + 1028 01d7 XPS M1210 + 1028 01df PowerEdge SC440 + 1028 01e6 PowerEdge 860 + 103c 2a3b Pavilion A1512X + 103c 2a8c Compaq 500B Microtower + 1043 8179 P5B-MX/WiFi-AP, P5KPL-VM Motherboard + 105b 0d7c D270S/D250S Motherboard + 1071 8209 Medion MIM 2240 Notebook PC [MD98100] + 10f7 8338 Panasonic CF-Y5 laptop + 144d c072 Notebook N150P + 1458 5001 GA-8I945PG-RH/GA-D525TUD Mainboard + 1462 7418 Wind PC MS-7418 + 1775 11cc CC11/CL11 + 17aa 200f ThinkPad R60/T60/X60 series + 8086 4f4d DeskTop Board D510MO + 8086 544b Desktop Board D425KT + 8086 544e DeskTop Board D945GTP + 8086 5842 DeskTop Board D975XBX + 27dc NM10/ICH7 Family LAN Controller + 103c 2a3b Pavilion A1512X + 8086 308d DeskTop Board D945GTP + 27dd 82801G (ICH7 Family) AC'97 Modem Controller + 27de 82801G (ICH7 Family) AC'97 Audio Controller + 1028 01ad OptiPlex GX620 + 1462 7267 Realtek ALC883 Audio Controller + 1775 11cc CC11 integrated audio (AD1981BL codec) + 27df 82801G (ICH7 Family) IDE Controller + 1028 01df PowerEdge SC440 + 1028 01e6 PowerEdge 860 + 103c 2a3b Pavilion A1512X + 103c 2a8c Compaq 500B Microtower + 103c 309f Compaq nx9420 Notebook + 103c 30a1 NC2400 + 103c 30a3 Compaq nw8440 + 103c 30d5 530 Laptop + 1043 1237 A6J-Q008 + 1043 8179 P5B-MX/WiFi-AP, P5KPL-VM Motherboard + 107b 5048 E4500 + 10f7 8338 Panasonic CF-Y5 laptop + 1462 7418 Wind PC MS-7418 + 1775 11cc CC11/CL11 + 17aa 200c ThinkPad R60/T60/X60 series + 8086 544e DeskTop Board D945GTP + 27e0 82801GR/GH/GHM (ICH7 Family) PCI Express Port 5 + 1775 11cc CC11/CL11 + 27e2 82801GR/GH/GHM (ICH7 Family) PCI Express Port 6 + 1775 11cc CC11/CL11 + 2810 82801HB/HR (ICH8/R) LPC Interface Controller + 1043 81ec P5B + 2811 82801HEM (ICH8M-E) LPC Interface Controller + 103c 30c1 Compaq 6910p + 17aa 20b6 ThinkPad T61/R61 + e4bf cc47 CCG-RUMBA + 2812 82801HH (ICH8DH) LPC Interface Controller + 2814 82801HO (ICH8DO) LPC Interface Controller + 2815 82801HM (ICH8M) LPC Interface Controller + 1025 0121 Aspire 5920G + 1028 01f3 Inspiron 1420 + 1028 022f Inspiron 1525 + 103c 30c0 Compaq 6710b + 103c 30cc Pavilion dv6700 + 103c 30d9 Presario C700 + 1043 1017 X58LE + 104d 9005 Vaio VGN-FZ260E + 104d 902d VAIO VGN-NR120E + 17aa 20a5 ThinkPad R61 + 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] + 2820 82801H (ICH8 Family) 4 port SATA Controller [IDE mode] + 1028 01da OptiPlex 745 + 1462 7235 P965 Neo MS-7235 mainboard + 2821 82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode] + 2822 SATA Controller [RAID mode] + 1028 020d Inspiron 530 + 103c 2a6f Asus IPIBL-LB Motherboard + 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] + 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] + 2823 sSATA Controller [RAID Mode] + 2824 82801HB (ICH8) 4 port SATA Controller [AHCI mode] + 1043 81ec P5B + 2825 82801HR/HO/HH (ICH8R/DO/DH) 2 port SATA Controller [IDE mode] + 1028 01da OptiPlex 745 + 1462 7235 P965 Neo MS-7235 mainboard + 2826 SATA Controller [RAID Mode] + 1d49 0100 Intel RSTe SATA Software RAID + 1d49 0101 Intel RSTe SATA Software RAID + 1d49 0102 Intel RSTe SATA Software RAID + 1d49 0103 Intel RSTe SATA Software RAID + 1d49 0104 Intel RSTe SATA Software RAID + 1d49 0105 Intel RSTe SATA Software RAID + 2827 sSATA Controller [RAID Mode] + 2828 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [IDE mode] + 1028 01f3 Inspiron 1420 + 103c 30c0 Compaq 6710b + 17aa 20a8 ThinkPad R61 + e4bf cc47 CCG-RUMBA + 2829 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] + 1025 0121 Aspire 5920G + 1028 022f Inspiron 1525 + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 103c 30d9 Presario C700 + 1043 1017 X58LE + 104d 9005 Vaio VGN-FZ260E + 104d 902d VAIO VGN-NR120E + 17aa 20a7 ThinkPad T61/R61 + 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] + e4bf cc47 CCG-RUMBA + 282a 82801 Mobile SATA Controller [RAID mode] + 1028 040b Latitude E6510 + e4bf 50c1 PC1-GROOVE + 282f tSATA Controller [RAID Mode] + 2830 82801H (ICH8 Family) USB UHCI Controller #1 + 1025 0121 Aspire 5920G + 1028 01da OptiPlex 745 + 1028 01f3 Inspiron 1420 + 1028 022f Inspiron 1525 + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 103c 30d9 Presario C700 + 1043 1017 X58LE + 1043 81ec P5B + 104d 9005 Vaio VGN-FZ260E + 104d 902d VAIO VGN-NR120E + 1462 7235 P965 Neo MS-7235 mainboard + 17aa 20aa ThinkPad T61/R61 + 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] + e4bf cc47 CCG-RUMBA + 2831 82801H (ICH8 Family) USB UHCI Controller #2 + 1025 0121 Aspire 5920G + 1028 01da OptiPlex 745 + 1028 01f3 Inspiron 1420 + 1028 022f Inspiron 1525 + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 103c 30d9 Presario C700 + 1043 1017 X58LE + 1043 81ec P5B + 104d 9005 Vaio VGN-FZ260E + 104d 902d VAIO VGN-NR120E + 1462 7235 P965 Neo MS-7235 mainboard + 17aa 20aa ThinkPad T61/R61 + 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] + e4bf cc47 CCG-RUMBA + 2832 82801H (ICH8 Family) USB UHCI Controller #3 + 1025 0121 Aspire 5920G + 1028 01da OptiPlex 745 + 1028 01f3 Inspiron 1420 + 1028 022f Inspiron 1525 + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 103c 30d9 Presario C700 + 1043 1017 X58LE + 1043 81ec P5B + 104d 9005 Vaio VGN-FZ260E + 104d 902d VAIO VGN-NR120E + 17aa 20aa ThinkPad T61/R61 + 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] + e4bf cc47 CCG-RUMBA + 2833 82801H (ICH8 Family) USB UHCI Controller #4 + 1043 81ec P5B + 2834 82801H (ICH8 Family) USB UHCI Controller #4 + 1025 0121 Aspire 5920G + 1028 01da OptiPlex 745 + 1028 01f3 Inspiron 1420 + 1028 022f Inspiron 1525 + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 1043 1017 X58LE + 1043 81ec P5B + 104d 9005 Vaio VGN-FZ260E + 104d 902d VAIO VGN-NR120E + 1462 7235 P965 Neo MS-7235 mainboard + 17aa 20aa ThinkPad T61/R61 + 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] + e4bf cc47 CCG-RUMBA + 2835 82801H (ICH8 Family) USB UHCI Controller #5 + 1025 0121 Aspire 5920G + 1028 01da OptiPlex 745 + 1028 01f3 Inspiron 1420 + 1028 022f Inspiron 1525 + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 1043 1017 X58LE + 1043 81ec P5B + 104d 9005 Vaio VGN-FZ260E + 104d 902d VAIO VGN-NR120E + 17aa 20aa Thinkpad T61/R61 + 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] + e4bf cc47 CCG-RUMBA + 2836 82801H (ICH8 Family) USB2 EHCI Controller #1 + 1025 0121 Aspire 5920G + 1028 01da OptiPlex 745 + 1028 01f3 Inspiron 1420 + 1028 022f Inspiron 1525 + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 103c 30d9 Presario C700 + 1043 1017 X58LE + 1043 81ec P5B + 104d 9005 Vaio VGN-FZ260E + 104d 902d VAIO VGN-NR120E + 1462 7235 P965 Neo MS-7235 mainboard + 17aa 20ab ThinkPad T61/R61 + 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] + e4bf cc47 CCG-RUMBA + 283a 82801H (ICH8 Family) USB2 EHCI Controller #2 + 1025 0121 Aspire 5920G + 1028 01da OptiPlex 745 + 1028 01f3 Inspiron 1420 + 1028 022f Inspiron 1525 + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 1043 1017 X58LE + 1043 81ec P5B + 104d 9005 Vaio VGN-FZ260E + 104d 902d VAIO VGN-NR120E + 17aa 20ab ThinkPad T61/R61 + 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] + e4bf cc47 CCG-RUMBA + 283e 82801H (ICH8 Family) SMBus Controller + 1025 0121 Aspire 5920G + 1028 01da OptiPlex 745 + 1028 01f3 Inspiron 1420 + 1028 022f Inspiron 1525 + 103c 30d9 Presario C700 + 1043 1017 X58LE + 1043 81ec P5B + 104d 9005 Vaio VGN-FZ260E + 104d 9008 Vaio VGN-SZ79SN_C + 104d 902d VAIO VGN-NR120E + 1462 7235 P965 Neo MS-7235 mainboard + 17aa 20a9 ThinkPad T61/R61 + 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] + e4bf cc47 CCG-RUMBA + 283f 82801H (ICH8 Family) PCI Express Port 1 + 1028 01da OptiPlex 745 + 103c 30c1 Compaq 6910p + 1043 1017 X58LE + 1043 81ec P5B + 104d 902d VAIO VGN-NR120E + 17aa 20ad ThinkPad T61/R61 + 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] + 2841 82801H (ICH8 Family) PCI Express Port 2 + 103c 30c1 Compaq 6910p + 1043 1017 X58LE + 1043 81ec P5B + 104d 902d VAIO VGN-NR120E + 17aa 20ad ThinkPad T61/R61 + 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] + 2843 82801H (ICH8 Family) PCI Express Port 3 + 1043 1017 X58LE + 1043 81ec P5B + 104d 902d VAIO VGN-NR120E + 17aa 20ad ThinkPad T61/R61 + 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] + 2845 82801H (ICH8 Family) PCI Express Port 4 + 1043 1017 X58LE + 1043 81ec P5B + 17aa 20ad ThinkPad T61/R61 + 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] + 2847 82801H (ICH8 Family) PCI Express Port 5 + 1028 01da OptiPlex 745 + 103c 30c1 Compaq 6910p + 1043 81ec P5B + 17aa 20ad ThinkPad T61/R61 + 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] + 2849 82801H (ICH8 Family) PCI Express Port 6 + 284b 82801H (ICH8 Family) HD Audio Controller + 1025 011f Realtek ALC268 audio codec + 1025 0121 Aspire 5920G + 1025 0145 Realtek ALC889 (Aspire 8920G w. Dolby Theater) + 1028 01da OptiPlex 745 + 1028 01f3 Inspiron 1420 + 1028 01f9 Latitude D630 + 1028 01ff Precision M4300 + 1028 022f Inspiron 1525 + 1028 0256 Studio 1735 + 103c 2802 Compaq dc7700p + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 1043 1339 M51S series + 1043 17f3 X58LE + 1043 81ec P5B + 104d 9005 Vaio VGN-FZ260E + 104d 9008 Vaio VGN-SZ79SN_C + 104d 9016 Sony VAIO VGN-AR51M + 104d 902d VAIO VGN-NR120E + 14f1 5051 Presario C700 + 17aa 20ac ThinkPad T61/R61 + 17c0 4088 Medion WIM 2210 Notebook PC [MD96850] + 8384 7616 Dell Vostro 1400 + e4bf cc47 CCG-RUMBA + 284f 82801H (ICH8 Family) Thermal Reporting Device + 2850 82801HM/HEM (ICH8M/ICH8M-E) IDE Controller + 1025 0121 Aspire 5920G + 1028 01f3 Inspiron 1420 + 1028 022f Inspiron 1525 + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 103c 30d9 Presario C700 + 1043 1017 X58LE + 104d 9005 Vaio VGN-FZ260E + 104d 902d VAIO VGN-NR120E + 17aa 20a6 ThinkPad T61/R61 + 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] + e4bf cc47 CCG-RUMBA + 28c0 Volume Management Device NVMe RAID Controller + 2912 82801IH (ICH9DH) LPC Interface Controller + 2914 82801IO (ICH9DO) LPC Interface Controller + 1028 0211 Optiplex 755 + 2916 82801IR (ICH9R) LPC Interface Controller + 1028 020d Inspiron 530 + 103c 2a6f Asus IPIBL-LB Motherboard + 1043 8277 P5K PRO Motherboard + 1462 7345 MS-7345 Motherboard + 8086 5044 Desktop Board DP35DP + 2917 ICH9M-E LPC Interface Controller + 17aa 20f5 ThinkPad T400 + e4bf cc4d CCM-BOOGIE + 2918 82801IB (ICH9) LPC Interface Controller + 1028 0236 PowerEdge R610 82801IB (ICH9) LPC Interface Controller + 1462 7360 G33/P35 Neo + 1af4 1100 QEMU Virtual Machine + 2919 ICH9M LPC Interface Controller + 2920 82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA Controller [IDE mode] + 1028 020d Inspiron 530 + 1028 020f PowerEdge R300 onboard SATA Controller + 1028 0210 PowerEdge T300 onboard SATA Controller + 1028 0211 Optiplex 755 + 1028 023c PowerEdge R200 onboard SATA Controller + 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] + 1462 7345 MS-7345 Motherboard: Intel 82801IR [ICH9R] + 2921 82801IB (ICH9) 2 port SATA Controller [IDE mode] + 1028 0235 PowerEdge R710 SATA IDE Controller + 1028 0236 PowerEdge R610 SATA IDE Controller + 1028 0237 PowerEdge T610 SATA IDE Controller + 1462 7360 G33/P35 Neo + 2922 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] + 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] + 1462 7345 MS-7345 Motherboard: Intel 82801IR [ICH9R] + 1af4 1100 QEMU Virtual Machine + 8086 5044 Desktop Board DP35DP + 2923 82801IB (ICH9) 4 port SATA Controller [AHCI mode] + 2925 82801IR/IO (ICH9R/DO) SATA Controller [RAID mode] + 1734 10e0 System Board D2542 + 8086 2925 System Board D2542 + 2926 82801I (ICH9 Family) 2 port SATA Controller [IDE mode] + 1028 020d Inspiron 530 + 1028 020f PowerEdge R300 onboard SATA Controller + 1028 0210 PowerEdge T300 onboard SATA Controller + 1028 0211 Optiplex 755 + 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] + 1462 7345 MS-7345 Motherboard: Intel 82801IR [ICH9R] + 1462 7360 G33/P35 Neo + 2928 82801IBM/IEM (ICH9M/ICH9M-E) 2 port SATA Controller [IDE mode] + 2929 82801IBM/IEM (ICH9M/ICH9M-E) 4 port SATA Controller [AHCI mode] + 103c 3628 dv6-1190en + 17aa 20f8 ThinkPad T400 + e4bf cc4d CCM-BOOGIE + 292c 82801IEM (ICH9M-E) SATA Controller [RAID mode] + 292d 82801IBM/IEM (ICH9M/ICH9M-E) 2 port SATA Controller [IDE mode] + e4bf cc4d CCM-BOOGIE + 2930 82801I (ICH9 Family) SMBus Controller + 1028 020d Inspiron 530 + 1028 0211 Optiplex 755 + 103c 2a6f Asus IPIBL-LB Motherboard + 103c 3628 dv6-1190en + 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] + 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] + 1462 7360 G33/P35 Neo + 17aa 20f9 ThinkPad T400 + 1af4 1100 QEMU Virtual Machine + 8086 5044 Desktop Board DP35DP + e4bf cc4d CCM-BOOGIE + 2932 82801I (ICH9 Family) Thermal Subsystem + 103c 3628 dv6-1190en + 2934 82801I (ICH9 Family) USB UHCI Controller #1 + 1028 020d Inspiron 530 + 1028 020f PowerEdge R300 onboard UHCI + 1028 0210 PowerEdge T300 onboard UHCI + 1028 0211 Optiplex 755 + 1028 0235 PowerEdge R710 USB UHCI Controller + 1028 0236 PowerEdge R610 USB UHCI Controller + 1028 0237 PowerEdge T610 USB UHCI Controller + 1028 023c PowerEdge R200 onboard UHCI + 1028 0287 PowerEdge M610 onboard UHCI + 1028 029c PowerEdge M710 USB UHCI Controller + 1028 2011 Optiplex 755 + 103c 2a6f Asus IPIBL-LB Motherboard + 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] + 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] + 1462 7360 G33/P35 Neo + 17aa 20f0 ThinkPad T400 + 1af4 1100 QEMU Virtual Machine + 8086 5044 Desktop Board DP35DP + e4bf cc4d CCM-BOOGIE + 2935 82801I (ICH9 Family) USB UHCI Controller #2 + 1028 020d Inspiron 530 + 1028 020f PowerEdge R300 onboard UHCI + 1028 0210 PowerEdge T300 onboard UHCI + 1028 0211 Optiplex 755 + 1028 0235 PowerEdge R710 USB UHCI Controller + 1028 0236 PowerEdge R610 USB UHCI Controller + 1028 0237 PowerEdge T610 USB UHCI Controller + 1028 023c PowerEdge R200 onboard UHCI + 1028 0287 PowerEdge M610 onboard UHCI + 1028 029c PowerEdge M710 USB UHCI Controller + 103c 2a6f Asus IPIBL-LB Motherboard + 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] + 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] + 1462 7360 G33/P35 Neo + 17aa 20f0 ThinkPad T400 + 1af4 1100 QEMU Virtual Machine + 8086 5044 Desktop Board DP35DP + e4bf cc4d CCM-BOOGIE + 2936 82801I (ICH9 Family) USB UHCI Controller #3 + 1028 020d Inspiron 530 + 1028 020f PowerEdge R300 onboard UHCI + 1028 0210 PowerEdge T300 onboard UHCI + 1028 0211 Optiplex 755 + 1028 0237 PowerEdge T610 USB UHCI Controller + 1028 023c PowerEdge R200 onboard UHCI + 1028 0287 PowerEdge M610 onboard UHCI + 1028 029c PowerEdge M710 USB UHCI Controller + 103c 2a6f Asus IPIBL-LB Motherboard + 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] + 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] + 1462 7360 G33/P35 Neo + 17aa 20f0 ThinkPad T400 + 1af4 1100 QEMU Virtual Machine + 8086 5044 Desktop Board DP35DP + e4bf cc4d CCM-BOOGIE + 2937 82801I (ICH9 Family) USB UHCI Controller #4 + 1028 020d Inspiron 530 + 1028 0211 Optiplex 755 + 1028 0235 PowerEdge R710 USB UHCI Controller + 1028 0236 PowerEdge R610 USB UHCI Controller + 1028 0237 PowerEdge T610 USB UHCI Controller + 1028 0287 PowerEdge M610 onboard UHCI + 1028 029c PowerEdge M710 USB UHCI Controller + 1028 2011 Optiplex 755 + 103c 2a6f Asus IPIBL-LB Motherboard + 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] + 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] + 1462 7360 G33/P35 Neo + 17aa 20f0 ThinkPad T400 + 1af4 1100 QEMU Virtual Machine + 8086 2937 Optiplex 755 + 8086 2942 828011 (ICH9 Family ) USB UHCI Controller + 8086 5044 Desktop Board DP35DP + e4bf cc4d CCM-BOOGIE + 2938 82801I (ICH9 Family) USB UHCI Controller #5 + 1028 020d Inspiron 530 + 1028 0211 Optiplex 755 + 1028 0235 PowerEdge R710 USB UHCI Controller + 1028 0236 PowerEdge R610 USB UHCI Controller + 1028 0237 PowerEdge T610 USB UHCI Controller + 1028 0287 PowerEdge M610 onboard UHCI + 1028 029c PowerEdge M710 USB UHCI Controller + 103c 2a6f Asus IPIBL-LB Motherboard + 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] + 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] + 1462 7360 G33/P35 Neo + 17aa 20f0 ThinkPad T400 + 1af4 1100 QEMU Virtual Machine + 8086 2938 Optiplex 755 + 8086 5044 Desktop Board DP35DP + e4bf cc4d CCM-BOOGIE + 2939 82801I (ICH9 Family) USB UHCI Controller #6 + 1028 020d Inspiron 530 + 1028 0210 PowerEdge T300 onboard UHCI + 1028 0237 PowerEdge T610 USB UHCI Controller + 103c 2a6f Asus IPIBL-LB Motherboard + 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] + 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] + 1462 7360 G33/P35 Neo + 17aa 20f0 ThinkPad T400 + 1af4 1100 QEMU Virtual Machine + 8086 5044 Desktop Board DP35DP + e4bf cc4d CCM-BOOGIE + 293a 82801I (ICH9 Family) USB2 EHCI Controller #1 + 1028 020d Inspiron 530 + 1028 020f PowerEdge R300 onboard EHCI + 1028 0210 PowerEdge T300 onboard EHCI + 1028 0211 Optiplex 755 + 1028 0235 PowerEdge R710 USB EHCI Controller + 1028 0236 PowerEdge R610 USB EHCI Controller + 1028 0237 PowerEdge T610 USB EHCI Controller + 1028 023c PowerEdge R200 onboard EHCI + 1028 0287 PowerEdge M610 onboard EHCI + 1028 029c PowerEdge M710 USB EHCI Controller + 103c 2a6f Asus IPIBL-LB Motherboard + 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] + 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] + 1462 7360 G33/P35 Neo + 17aa 20f1 ThinkPad T400 + 1af4 1100 QEMU Virtual Machine + 8086 5044 Desktop Board DP35DP + e4bf cc4d CCM-BOOGIE + 293c 82801I (ICH9 Family) USB2 EHCI Controller #2 + 1028 020d Inspiron 530 + 1028 0211 Optiplex 755 + 1028 0235 PowerEdge R710 USB EHCI Controller + 1028 0236 PowerEdge R610 USB EHCI Controller + 1028 0237 PowerEdge T610 USB EHCI Controller + 1028 0287 PowerEdge M610 onboard EHCI + 1028 029c PowerEdge M710 USB EHCI Controller + 103c 2a6f Asus IPIBL-LB Motherboard + 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] + 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] + 1462 7360 G33/P35 Neo + 17aa 20f1 ThinkPad T400 + 1af4 1100 QEMU Virtual Machine + 8086 293c Optiplex 755 + 8086 5044 Desktop Board DP35DP + e4bf cc4d CCM-BOOGIE + 293e 82801I (ICH9 Family) HD Audio Controller + 1028 020d Inspiron 530 + 1028 0211 Optiplex 755 + 103c 2a6f Asus IPIBL-LB Motherboard + 103c 3628 dv6-1190en + 1043 829f P5K PRO Motherboard: 82801IR [ICH9R] + 1462 735a MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] + 1462 7360 G33/P35 Neo + 17aa 20f2 ThinkPad T400 + 1af4 1100 QEMU Virtual Machine + 8086 293e Optiplex 755 + 8086 2940 Optiplex 755 + e4bf cc4d CCM-BOOGIE + 2940 82801I (ICH9 Family) PCI Express Port 1 + 1028 020d Inspiron 530 + 1028 0211 Optiplex 755 + 103c 2a6f Asus IPIBL-LB Motherboard + 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] + 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] + 8086 2940 Optiplex 755 + 2942 82801I (ICH9 Family) PCI Express Port 2 + 1028 020d Inspiron 530 + 2944 82801I (ICH9 Family) PCI Express Port 3 + 1028 020d Inspiron 530 + 103c 2a6f Asus IPIBL-LB Motherboard + 2946 82801I (ICH9 Family) PCI Express Port 4 + 1028 020d Inspiron 530 + 2948 82801I (ICH9 Family) PCI Express Port 5 + 1028 020d Inspiron 530 + 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] + 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] + 294a 82801I (ICH9 Family) PCI Express Port 6 + 1028 020d Inspiron 530 + 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] + 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] + 294c 82566DC-2 Gigabit Network Connection + 17aa 302e 82566DM-2 Gigabit Network Connection + 2970 82946GZ/PL/GL Memory Controller Hub + 1043 823b P5B-MX/WiFi-AP + 2971 82946GZ/PL/GL PCI Express Root Port + 2972 82946GZ/GL Integrated Graphics Controller + 1043 823b P5B-MX/WiFi-AP + 2973 82946GZ/GL Integrated Graphics Controller + 2974 82946GZ/GL HECI Controller + 2975 82946GZ/GL HECI Controller + 2976 82946GZ/GL PT IDER Controller + 2977 82946GZ/GL KT Controller + 2980 82G35 Express DRAM Controller + 2981 82G35 Express PCI Express Root Port + 2982 82G35 Express Integrated Graphics Controller + 2983 82G35 Express Integrated Graphics Controller + 2984 82G35 Express HECI Controller + 2990 82Q963/Q965 Memory Controller Hub + 1028 01da OptiPlex 745 + 2991 82Q963/Q965 PCI Express Root Port + 2992 82Q963/Q965 Integrated Graphics Controller + 2993 82Q963/Q965 Integrated Graphics Controller + 2994 82Q963/Q965 HECI Controller + 2995 82Q963/Q965 HECI Controller + 2996 82Q963/Q965 PT IDER Controller + 2997 82Q963/Q965 KT Controller + 29a0 82P965/G965 Memory Controller Hub + 1043 81ea P5B + 1462 7276 MS-7276 [G965MDH] + 29a1 82P965/G965 PCI Express Root Port + 29a2 82G965 Integrated Graphics Controller + 1462 7276 MS-7276 [G965MDH] + 29a3 82G965 Integrated Graphics Controller + 29a4 82P965/G965 HECI Controller + 29a5 82P965/G965 HECI Controller + 29a6 82P965/G965 PT IDER Controller + 29a7 82P965/G965 KT Controller + 29b0 82Q35 Express DRAM Controller + 1028 0211 OptiPlex 755 + 29b1 82Q35 Express PCI Express Root Port + 1028 0211 OptiPlex 755 + 29b2 82Q35 Express Integrated Graphics Controller + 1028 0211 OptiPlex 755 + 29b3 82Q35 Express Integrated Graphics Controller + 1028 0211 OptiPlex 755 + 29b4 82Q35 Express MEI Controller + 1028 0211 OptiPlex 755 + 29b5 82Q35 Express MEI Controller + 29b6 82Q35 Express PT IDER Controller + 1028 0211 OptiPlex 755 + 29b7 82Q35 Express Serial KT Controller + 1028 0211 OptiPlex 755 + 29c0 82G33/G31/P35/P31 Express DRAM Controller + 1028 020d Inspiron 530 + 103c 2a6f Asus IPIBL-LB Motherboard + 1043 8276 P5K PRO Motherboard: Intel 82P35 Northbridge + 1043 82b0 P5KPL-VM Motherboard + 1462 7345 MS-7345 Motherboard: Intel 82G33/P35 Northbridge + 1462 7360 G33/P35 Neo + 1af4 1100 QEMU Virtual Machine + 8086 5044 Desktop Board DP35DP + 29c1 82G33/G31/P35/P31 Express PCI Express Root Port + 1028 020d Inspiron 530 + 1043 8276 P5K PRO Motherboard: Intel 82P35 Northbridge + 29c2 82G33/G31 Express Integrated Graphics Controller + 1028 020d Inspiron 530 + 1043 82b0 P5KPL-VM Motherboard + 29c3 82G33/G31 Express Integrated Graphics Controller + 1028 020d Inspiron 530 + 1043 82b0 P5KPL-VM Motherboard + 29c4 82G33/G31/P35/P31 Express MEI Controller + 8086 5044 Desktop Board DP35DP + 29c5 82G33/G31/P35/P31 Express MEI Controller + 29c6 82G33/G31/P35/P31 Express PT IDER Controller + 29c7 82G33/G31/P35/P31 Express Serial KT Controller + 29cf Virtual HECI Controller + 29d0 82Q33 Express DRAM Controller + 29d1 82Q33 Express PCI Express Root Port + 29d2 82Q33 Express Integrated Graphics Controller + 29d3 82Q33 Express Integrated Graphics Controller + 29d4 82Q33 Express MEI Controller + 29d5 82Q33 Express MEI Controller + 29d6 82Q33 Express PT IDER Controller + 29d7 82Q33 Express Serial KT Controller + 29e0 82X38/X48 Express DRAM Controller + 29e1 82X38/X48 Express Host-Primary PCI Express Bridge + 29e4 82X38/X48 Express MEI Controller + 29e5 82X38/X48 Express MEI Controller + 29e6 82X38/X48 Express PT IDER Controller + 29e7 82X38/X48 Express Serial KT Controller + 29e9 82X38/X48 Express Host-Secondary PCI Express Bridge + 29f0 3200/3210 Chipset DRAM Controller + 29f1 3200/3210 Chipset Host-Primary PCI Express Bridge + 29f4 3200/3210 Chipset MEI Controller + 29f5 3200/3210 Chipset MEI Controller + 29f6 3200/3210 Chipset PT IDER Controller + 29f7 3200/3210 Chipset Serial KT Controller + 29f9 3210 Chipset Host-Secondary PCI Express Bridge + 2a00 Mobile PM965/GM965/GL960 Memory Controller Hub + 1025 0121 Aspire 5920G + 1028 01f3 Inspiron 1420 + 1028 022f Inspiron 1525 + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30c5 Compaq 8510p + 103c 30cc Pavilion dv6700 + 103c 30d9 Presario C700 + 1043 1017 X58LE + 104d 9005 Vaio VGN-FZ260E + 104d 902d VAIO VGN-NR120E + 17aa 20b1 ThinkPad T61 + 17aa 20b3 ThinkPad T61/R61 + 17c0 4082 Medion WIM 2210 Notebook PC [MD96850] + e4bf cc47 CCG-RUMBA + 2a01 Mobile PM965/GM965/GL960 PCI Express Root Port + 2a02 Mobile GM965/GL960 Integrated Graphics Controller (primary) + 1028 01f3 Inspiron 1420 + 1028 01f9 Latitude D630 + 1028 022f Inspiron 1525 + 103c 30c0 Compaq 6710b + 103c 30d9 Presario C700 + 1043 14e2 X58LE + 104d 902d VAIO VGN-NR120E + 17aa 20b5 GM965 [X3100] on ThinkPad T61/R61 + 17c0 4082 GM965 on Medion WIM 2210 Notebook PC [MD96850] + e4bf cc47 CCG-RUMBA + 2a03 Mobile GM965/GL960 Integrated Graphics Controller (secondary) + 1028 01f3 Inspiron 1420 + 1028 022f Inspiron 1525 + 103c 30c0 Compaq 6710b + 103c 30d9 Presario C700 + 1043 14e2 X58LE + 104d 902d VAIO VGN-NR120E + 17aa 20b5 GM965 [X3100] on ThinkPad T61/R61 + 17c0 4082 GM965 on Medion WIM 2210 Notebook PC [MD96850] + e4bf cc47 CCG-RUMBA + 2a04 Mobile PM965/GM965 MEI Controller + 103c 30c1 Compaq 6910p + 2a05 Mobile PM965/GM965 MEI Controller + 2a06 Mobile PM965/GM965 PT IDER Controller + 103c 30c1 Compaq 6910p + 2a07 Mobile PM965/GM965 KT Controller + 103c 30c1 Compaq 6910p + 2a10 Mobile GME965/GLE960 Memory Controller Hub + e4bf cc47 CCG-RUMBA + 2a11 Mobile GME965/GLE960 PCI Express Root Port + 2a12 Mobile GME965/GLE960 Integrated Graphics Controller + e4bf cc47 CCG-RUMBA + 2a13 Mobile GME965/GLE960 Integrated Graphics Controller + e4bf cc47 CCG-RUMBA + 2a14 Mobile GME965/GLE960 MEI Controller + 2a15 Mobile GME965/GLE960 MEI Controller + 2a16 Mobile GME965/GLE960 PT IDER Controller + 2a17 Mobile GME965/GLE960 KT Controller + 2a40 Mobile 4 Series Chipset Memory Controller Hub + 17aa 20e0 ThinkPad T400 + e4bf cc4d CCM-BOOGIE + 2a41 Mobile 4 Series Chipset PCI Express Graphics Port + e4bf cc4d CCM-BOOGIE + 2a42 Mobile 4 Series Chipset Integrated Graphics Controller + 1028 02aa Dell Inspiron 1545 + 17aa 2112 ThinkPad T400 + e4bf cc4d CCM-BOOGIE + 2a43 Mobile 4 Series Chipset Integrated Graphics Controller + 17aa 2112 ThinkPad T400 + e4bf cc4d CCM-BOOGIE + 2a44 Mobile 4 Series Chipset MEI Controller + 17aa 20e6 ThinkPad T400 + 2a45 Mobile 4 Series Chipset MEI Controller + 2a46 Mobile 4 Series Chipset PT IDER Controller + 2a47 Mobile 4 Series Chipset AMT SOL Redirection + 2a50 Cantiga MEI Controller + 2a51 Cantiga MEI Controller + 2a52 Cantiga PT IDER Controller + 2a53 Cantiga AMT SOL Redirection + 2b00 Xeon Processor E7 Product Family System Configuration Controller 1 + 2b02 Xeon Processor E7 Product Family System Configuration Controller 2 + 2b04 Xeon Processor E7 Product Family Power Controller + 2b08 Xeon Processor E7 Product Family Caching Agent 0 + 2b0c Xeon Processor E7 Product Family Caching Agent 1 + 2b10 Xeon Processor E7 Product Family QPI Home Agent 0 + 2b13 Xeon Processor E7 Product Family Memory Controller 0c + 2b14 Xeon Processor E7 Product Family Memory Controller 0a + 2b16 Xeon Processor E7 Product Family Memory Controller 0b + 2b18 Xeon Processor E7 Product Family QPI Home Agent 1 + 2b1b Xeon Processor E7 Product Family Memory Controller 1c + 2b1c Xeon Processor E7 Product Family Memory Controller 1a + 2b1e Xeon Processor E7 Product Family Memory Controller 1b + 2b20 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 0 + 2b22 Xeon Processor E7 Product Family System Configuration Controller 3 + 2b24 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 1 + 2b28 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 2 + 2b2a Xeon Processor E7 Product Family System Configuration Controller 4 + 2b2c Xeon Processor E7 Product Family Last Level Cache Coherence Engine 3 + 2b30 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 4 + 2b34 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 5 + 2b38 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 6 + 2b3c Xeon Processor E7 Product Family Last Level Cache Coherence Engine 7 + 2b40 Xeon Processor E7 Product Family QPI Router Port 0-1 + 2b42 Xeon Processor E7 Product Family QPI Router Port 2-3 + 2b44 Xeon Processor E7 Product Family QPI Router Port 4-5 + 2b46 Xeon Processor E7 Product Family QPI Router Port 6-7 + 2b48 Xeon Processor E7 Product Family Test and Debug 0 + 2b4c Xeon Processor E7 Product Family Test and Debug 1 + 2b50 Xeon Processor E7 Product Family QPI Physical Port 0: REUT control/status + 2b52 Xeon Processor E7 Product Family QPI Physical Port 0: Misc. control/status + 2b54 Xeon Processor E7 Product Family QPI Physical Port 1: REUT control/status + 2b56 Xeon Processor E7 Product Family QPI Physical Port 1: Misc. control/status + 2b58 Xeon Processor E7 Product Family QPI Physical Port 2: REUT control/status + 2b5a Xeon Processor E7 Product Family QPI Physical Port 2: Misc. control/status + 2b5c Xeon Processor E7 Product Family QPI Physical Port 3: REUT control/status + 2b5e Xeon Processor E7 Product Family QPI Physical Port 3: Misc. control/status + 2b60 Xeon Processor E7 Product Family SMI Physical Port 0: REUT control/status + 2b62 Xeon Processor E7 Product Family SMI Physical Port 0: Misc control/status + 2b64 Xeon Processor E7 Product Family SMI Physical Port 1: REUT control/status + 2b66 Xeon Processor E7 Product Family SMI Physical Port 1: Misc control/status + 2b68 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 8 + 2b6c Xeon Processor E7 Product Family Last Level Cache Coherence Engine 9 + 2b80 Atom CE2700 Series [Puma 7] + 2b98 Puma 7 Trusted Execution Engine + 2bb5 Puma 7 xHCI Controller +# Synopsys DesignWare Core SuperSpeed USB 3.0 Controller + 2bb7 Puma 7 USB Device Controller (OTG) + 2bdc Puma 7 Thermal + 2be2 Puma 7 Security Processor + 2c01 Xeon 5500/Core i7 QuickPath Architecture System Address Decoder + 2c10 Xeon 5500/Core i7 QPI Link 0 + 2c11 Xeon 5500/Core i7 QPI Physical 0 + 2c14 Xeon 5500/Core i7 QPI Link 1 + 2c15 Xeon 5500/Core i7 QPI Physical 1 + 2c18 Xeon 5500/Core i7 Integrated Memory Controller + 2c19 Xeon 5500/Core i7 Integrated Memory Controller Target Address Decoder + 2c1a Xeon 5500/Core i7 Integrated Memory Controller RAS Registers + 2c1c Xeon 5500/Core i7 Integrated Memory Controller Test Registers + 2c20 Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Control Registers + 2c21 Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Address Registers + 2c22 Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Rank Registers + 2c23 Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Thermal Control Registers + 2c28 Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Control Registers + 2c29 Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Address Registers + 2c2a Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Rank Registers + 2c2b Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Thermal Control Registers + 2c30 Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Control Registers + 2c31 Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Address Registers + 2c32 Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Rank Registers + 2c33 Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Thermal Control Registers + 2c40 Xeon 5500/Core i7 QuickPath Architecture Generic Non-Core Registers + 2c41 Xeon 5500/Core i7 QuickPath Architecture Generic Non-Core Registers + 2c50 Core Processor QuickPath Architecture Generic Non-Core Registers + 2c51 Core Processor QuickPath Architecture Generic Non-Core Registers + 2c52 Core Processor QuickPath Architecture Generic Non-Core Registers + 2c53 Core Processor QuickPath Architecture Generic Non-Core Registers + 2c54 Core Processor QuickPath Architecture Generic Non-Core Registers + 2c55 Core Processor QuickPath Architecture Generic Non-Core Registers + 2c56 Core Processor QuickPath Architecture Generic Non-Core Registers + 2c57 Core Processor QuickPath Architecture Generic Non-Core Registers + 2c58 Xeon C5500/C3500 QPI Generic Non-core Registers + 2c59 Xeon C5500/C3500 QPI Generic Non-core Registers + 2c5a Xeon C5500/C3500 QPI Generic Non-core Registers + 2c5b Xeon C5500/C3500 QPI Generic Non-core Registers + 2c5c Xeon C5500/C3500 QPI Generic Non-core Registers + 2c5d Xeon C5500/C3500 QPI Generic Non-core Registers + 2c5e Xeon C5500/C3500 QPI Generic Non-core Registers + 2c5f Xeon C5500/C3500 QPI Generic Non-core Registers + 2c61 Core Processor QuickPath Architecture Generic Non-core Registers + 2c62 Core Processor QuickPath Architecture Generic Non-core Registers + 2c70 Xeon 5600 Series QuickPath Architecture Generic Non-core Registers + 2c81 Core Processor QuickPath Architecture System Address Decoder + 2c90 Core Processor QPI Link 0 + 2c91 Core Processor QPI Physical 0 + 2c98 Core Processor Integrated Memory Controller + 2c99 Core Processor Integrated Memory Controller Target Address Decoder + 2c9a Core Processor Integrated Memory Controller Test Registers + 2c9c Core Processor Integrated Memory Controller Test Registers + 2ca0 Core Processor Integrated Memory Controller Channel 0 Control Registers + 2ca1 Core Processor Integrated Memory Controller Channel 0 Address Registers + 2ca2 Core Processor Integrated Memory Controller Channel 0 Rank Registers + 2ca3 Core Processor Integrated Memory Controller Channel 0 Thermal Control Registers + 2ca8 Core Processor Integrated Memory Controller Channel 1 Control Registers + 2ca9 Core Processor Integrated Memory Controller Channel 1 Address Registers + 2caa Core Processor Integrated Memory Controller Channel 1 Rank Registers + 2cab Core Processor Integrated Memory Controller Channel 1 Thermal Control Registers + 2cc1 Xeon C5500/C3500 QPI System Address Decoder + 2cd0 Xeon C5500/C3500 QPI Link 0 + 2cd1 Xeon C5500/C3500 QPI Physical 0 + 2cd4 Xeon C5500/C3500 QPI Link 1 + 2cd5 Xeon C5500/C3500 QPI Physical 1 + 2cd8 Xeon C5500/C3500 Integrated Memory Controller Registers + 2cd9 Xeon C5500/C3500 Integrated Memory Controller Target Address Decoder + 2cda Xeon C5500/C3500 Integrated Memory Controller RAS Registers + 2cdc Xeon C5500/C3500 Integrated Memory Controller Test Registers + 2ce0 Xeon C5500/C3500 Integrated Memory Controller Channel 0 Control + 2ce1 Xeon C5500/C3500 Integrated Memory Controller Channel 0 Address + 2ce2 Xeon C5500/C3500 Integrated Memory Controller Channel 0 Rank + 2ce3 Xeon C5500/C3500 Integrated Memory Controller Channel 0 Thermal Control + 2ce8 Xeon C5500/C3500 Integrated Memory Controller Channel 1 Control + 2ce9 Xeon C5500/C3500 Integrated Memory Controller Channel 1 Address + 2cea Xeon C5500/C3500 Integrated Memory Controller Channel 1 Rank + 2ceb Xeon C5500/C3500 Integrated Memory Controller Channel 1 Thermal Control + 2cf0 Xeon C5500/C3500 Integrated Memory Controller Channel 2 Control + 2cf1 Xeon C5500/C3500 Integrated Memory Controller Channel 2 Address + 2cf2 Xeon C5500/C3500 Integrated Memory Controller Channel 2 Rank + 2cf3 Xeon C5500/C3500 Integrated Memory Controller Channel 2 Thermal Control + 2d01 Core Processor QuickPath Architecture System Address Decoder + 2d10 Core Processor QPI Link 0 + 2d11 1st Generation Core i3/5/7 Processor QPI Physical 0 + 2d12 1st Generation Core i3/5/7 Processor Reserved + 2d13 1st Generation Core i3/5/7 Processor Reserved + 2d81 Xeon 5600 Series QuickPath Architecture System Address Decoder + 2d90 Xeon 5600 Series QPI Link 0 + 2d91 Xeon 5600 Series QPI Physical 0 + 2d92 Xeon 5600 Series Mirror Port Link 0 + 2d93 Xeon 5600 Series Mirror Port Link 1 + 2d94 Xeon 5600 Series QPI Link 1 + 2d95 Xeon 5600 Series QPI Physical 1 + 2d98 Xeon 5600 Series Integrated Memory Controller Registers + 2d99 Xeon 5600 Series Integrated Memory Controller Target Address Decoder + 2d9a Xeon 5600 Series Integrated Memory Controller RAS Registers + 2d9c Xeon 5600 Series Integrated Memory Controller Test Registers + 2da0 Xeon 5600 Series Integrated Memory Controller Channel 0 Control + 2da1 Xeon 5600 Series Integrated Memory Controller Channel 0 Address + 2da2 Xeon 5600 Series Integrated Memory Controller Channel 0 Rank + 2da3 Xeon 5600 Series Integrated Memory Controller Channel 0 Thermal Control + 2da8 Xeon 5600 Series Integrated Memory Controller Channel 1 Control + 2da9 Xeon 5600 Series Integrated Memory Controller Channel 1 Address + 2daa Xeon 5600 Series Integrated Memory Controller Channel 1 Rank + 2dab Xeon 5600 Series Integrated Memory Controller Channel 1 Thermal Control + 2db0 Xeon 5600 Series Integrated Memory Controller Channel 2 Control + 2db1 Xeon 5600 Series Integrated Memory Controller Channel 2 Address + 2db2 Xeon 5600 Series Integrated Memory Controller Channel 2 Rank + 2db3 Xeon 5600 Series Integrated Memory Controller Channel 2 Thermal Control + 2e00 4 Series Chipset DRAM Controller + 2e01 4 Series Chipset PCI Express Root Port + 2e02 4 Series Chipset Integrated Graphics Controller + 2e03 4 Series Chipset Integrated Graphics Controller + 2e04 4 Series Chipset HECI Controller + 2e05 4 Series Chipset HECI Controller + 2e06 4 Series Chipset PT IDER Controller + 2e07 4 Series Chipset Serial KT Controller + 2e10 4 Series Chipset DRAM Controller + 2e11 4 Series Chipset PCI Express Root Port + 2e12 4 Series Chipset Integrated Graphics Controller + 17aa 3048 ThinkCentre M6258 + 2e13 4 Series Chipset Integrated Graphics Controller + 2e14 4 Series Chipset HECI Controller + 2e15 4 Series Chipset HECI Controller + 2e16 4 Series Chipset PT IDER Controller + 2e17 4 Series Chipset Serial KT Controller + 2e20 4 Series Chipset DRAM Controller + 1028 0283 Vostro 220 + 1043 82d3 P5Q Deluxe Motherboard + 1458 5000 GA-EP45-DS5/GA-EG45M-DS2H Motherboard + 2e21 4 Series Chipset PCI Express Root Port + 1043 82d3 P5Q Deluxe Motherboard + 1458 5000 GA-EP45-DS5 Motherboard + 2e22 4 Series Chipset Integrated Graphics Controller + 1458 d000 GA-EG45M-DS2H Mainboard + 2e23 4 Series Chipset Integrated Graphics Controller + 1458 d000 GA-EG45M-DS2H Mainboard + 2e24 4 Series Chipset HECI Controller + 2e25 4 Series Chipset HECI Controller + 2e26 4 Series Chipset PT IDER Controller + 2e27 4 Series Chipset Serial KT Controller + 2e29 4 Series Chipset PCI Express Root Port + 2e30 4 Series Chipset DRAM Controller + 103c 2a8c Compaq 500B Microtower + 2e31 4 Series Chipset PCI Express Root Port + 2e32 4 Series Chipset Integrated Graphics Controller + 103c 2a8c Compaq 500B Microtower + 2e33 4 Series Chipset Integrated Graphics Controller + 2e34 4 Series Chipset HECI Controller + 2e35 4 Series Chipset HECI Controller + 2e36 4 Series Chipset PT IDER Controller + 2e37 4 Series Chipset Serial KT Controller + 2e40 4 Series Chipset DRAM Controller + 2e41 4 Series Chipset PCI Express Root Port + 2e42 4 Series Chipset Integrated Graphics Controller + 2e43 4 Series Chipset Integrated Graphics Controller + 2e44 4 Series Chipset HECI Controller + 2e45 4 Series Chipset HECI Controller + 2e46 4 Series Chipset PT IDER Controller + 2e47 4 Series Chipset Serial KT Controller + 2e50 CE Media Processor CE3100 + 2e52 CE Media Processor Clock and Reset Controller + 2e58 CE Media Processor Interrupt Controller + 2e5a CE Media Processor CE3100 A/V Bridge + 2e5b Graphics Media Accelerator 500 Graphics + 2e5c CE Media Processor Video Decoder + 2e5d CE Media Processor Transport Stream Interface + 2e5e CE Media Processor Transport Stream Processor 0 + 2e5f CE Media Processor Audio DSP + 2e60 CE Media Processor Audio Interfaces + 2e61 CE Media Processor Video Display Controller + 2e62 CE Media Processor Video Processing Unit + 2e63 CE Media Processor HDMI Tx Interface + 2e64 Atom CE2600/3100/4100/4200/5300 Security Processor + 2e65 CE Media Processor Expansion Bus Interface + 2e66 CE Media Processor UART + 2e67 CE Media Processor General Purpose I/Os + 2e68 CE Media Processor I2C Interface + 2e69 CE Media Processor Smart Card Interface + 2e6a CE Media Processor SPI Master Interface + 2e6e CE Media Processor Gigabit Ethernet Controller + 2e6f CE Media Processor Media Timing Unit + 2e70 CE Media Processor USB + 2e71 CE Media Processor SATA + 2e73 CE Media Processor CE3100 PCI Express + 2e90 4 Series Chipset DRAM Controller + 2e91 4 Series Chipset PCI Express Root Port + 2e92 4 Series Chipset Integrated Graphics Controller + 2e93 4 Series Chipset Integrated Graphics Controller + 2e94 4 Series Chipset HECI Controller + 2e95 4 Series Chipset HECI Controller + 2e96 4 Series Chipset PT IDER Controller + 2f00 Xeon E7 v3/Xeon E5 v3/Core i7 DMI2 + 2f01 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 0 + 2f02 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 1 + 2f03 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 1 + 2f04 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 2 + 2f05 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 2 + 2f06 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 2 + 2f07 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 2 + 2f08 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3 + 2f09 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3 + 2f0a Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3 + 2f0b Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3 + 2f0d Haswell Xeon Non-Transparent Bridge (Back-to-back) + 2f0e Haswell Xeon Non-Transparent Bridge (Primary Side) + 2f0f Haswell Xeon Non-Transparent Bridge (Secondary Side) + 2f10 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug + 2f11 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug + 2f12 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug + 2f13 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug + 2f14 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug + 2f15 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug + 2f16 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug + 2f17 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug + 2f18 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug + 2f19 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug + 2f1a Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug + 2f1b Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug + 2f1c Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug + 2f1d Xeon E7 v3/Xeon E5 v3/Core i7 PCIe Ring Interface + 2f1e Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers + 2f1f Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers + 2f20 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 0 + 2f21 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 1 + 2f22 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 2 + 2f23 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 3 + 2f24 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 4 + 2f25 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 5 + 2f26 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 6 + 2f27 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 7 + 2f28 Xeon E7 v3/Xeon E5 v3/Core i7 Address Map, VTd_Misc, System Management + 2f29 Xeon E7 v3/Xeon E5 v3/Core i7 Hot Plug + 2f2a Xeon E7 v3/Xeon E5 v3/Core i7 RAS, Control Status and Global Errors + 2f2c Xeon E7 v3/Xeon E5 v3/Core i7 I/O APIC + 2f2e Xeon E7 v3/Xeon E5 v3/Core i7 RAID 5/6 + 2f2f Xeon E7 v3/Xeon E5 v3/Core i7 RAID 5/6 + 2f30 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 0 + 2f32 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 + 2f33 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1 + 2f34 Xeon E7 v3/Xeon E5 v3/Core i7 PCIe Ring Interface + 2f36 Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring + 2f37 Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring + 2f38 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 1 + 2f39 Xeon E7 v3/Xeon E5 v3/Core i7 I/O Performance Monitoring + 2f3a Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 + 2f3e Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 2 Monitoring + 2f3f Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 2 Monitoring + 2f40 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 + 2f41 Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 2 Monitoring + 2f43 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 + 2f45 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 Debug + 2f46 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 Debug + 2f47 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 Debug + 2f60 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 1 + 2f68 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Target Address, Thermal & RAS Registers + 2f6a Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder + 2f6b Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder + 2f6c Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder + 2f6d Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder + 2f6e Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Channel 2/3 Broadcast + 2f6f Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Global Broadcast + 2f70 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 0 Debug + 2f71 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Target Address, Thermal & RAS Registers + 2f76 Xeon E7 v3/Xeon E5 v3/Core i7 E3 QPI Link Debug + 2f78 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 1 Debug + 2f79 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Target Address, Thermal & RAS Registers + 2f7d Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers + 2f7e Xeon E7 v3/Xeon E5 v3/Core i7 E3 QPI Link Debug + 2f80 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 + 2f81 Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring + 2f83 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 + 2f85 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 Debug + 2f86 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 Debug + 2f87 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 Debug + 2f88 Xeon E7 v3/Xeon E5 v3/Core i7 VCU + 2f8a Xeon E7 v3/Xeon E5 v3/Core i7 VCU + 2f90 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1 + 2f93 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1 + 2f95 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1 Debug + 2f96 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1 Debug + 2f98 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit + 2f99 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit + 2f9a Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit + 2f9c Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit + 2fa0 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 0 + 2fa8 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Target Address, Thermal & RAS Registers + 2faa Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder + 2fab Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder + 2fac Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder + 2fad Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder + 2fae Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Channel 0/1 Broadcast + 2faf Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Global Broadcast + 2fb0 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 0 Thermal Control + 2fb1 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 1 Thermal Control + 2fb2 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 0 ERROR Registers + 2fb3 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 1 ERROR Registers + 2fb4 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 2 Thermal Control + 2fb5 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 3 Thermal Control + 2fb6 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 2 ERROR Registers + 2fb7 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 3 ERROR Registers + 2fb8 Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 + 2fb9 Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 + 2fba Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 + 2fbb Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 + 2fbc Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 + 2fbd Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 + 2fbe Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 + 2fbf Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 + 2fc0 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit + 2fc1 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit + 2fc2 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit + 2fc3 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit + 2fc4 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit + 2fc5 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit + 2fd0 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 0 Thermal Control + 2fd1 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 1 Thermal Control + 2fd2 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 0 ERROR Registers + 2fd3 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 1 ERROR Registers + 2fd4 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 2 Thermal Control + 2fd5 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 3 Thermal Control + 2fd6 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 2 ERROR Registers + 2fd7 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 3 ERROR Registers + 2fe0 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2fe1 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2fe2 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2fe3 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2fe4 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2fe5 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2fe6 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2fe7 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2fe8 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2fe9 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2fea Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2feb Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2fec Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2fed Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2fee Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2fef Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2ff0 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2ff1 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2ff2 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2ff3 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2ff4 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2ff5 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2ff6 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2ff7 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 2ff8 Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent + 2ff9 Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent + 2ffa Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent + 2ffb Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent + 2ffc Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers + 2ffd Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers + 2ffe Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers + 3101 Killer E3100X 2.5 Gigabit Ethernet Controller + 3140 Easel/Monette Hill Image Processor [Pixel Visual Core] + 3165 Wireless 3165 + 8086 4010 Dual Band Wireless AC 3165 [Stone Peak 1x1] + 8086 4210 Dual Band Wireless AC 3165 [Stone Peak 1x1] + 3166 Dual Band Wireless-AC 3165 Plus Bluetooth + 8086 4210 Dual Band Wireless-AC 3165 + 3184 GeminiLake [UHD Graphics 605] + 3185 GeminiLake [UHD Graphics 600] + 318c Celeron/Pentium Silver Processor Dynamic Platform and Thermal Framework Processor Participant + 318e Celeron/Pentium Silver Processor NorthPeak + 3190 Celeron/Pentium Silver Processor Gaussian Mixture Model + 3192 Gemini Lake P2SB + 3197 Celeron/Pentium Silver Processor PCI-default ISA-bridge + 3198 Celeron/Pentium Silver Processor High Definition Audio + 17aa 380b V130-15IGM Laptop (Lenovo) - Type 81HL + 319a Celeron/Pentium Silver Processor Trusted Execution Engine Interface + 31a2 Celeron/Pentium Silver Processor Integrated Sensor Solution + 31a8 Celeron/Pentium Silver Processor USB 3.0 xHCI Controller + 1849 31a8 Celeron/Pentium Silver Processor USB 3.0 xHCI Controller + 31ac Celeron/Pentium Silver Processor I2C 0 + 31ae Celeron/Pentium Silver Processor I2C 1 + 31b0 Celeron/Pentium Silver Processor I2C 2 + 31b2 Celeron/Pentium Silver Processor I2C 3 + 31b4 Celeron/Pentium Silver Processor I2C 4 + 31b6 Celeron/Pentium Silver Processor I2C 5 + 31b8 Celeron/Pentium Silver Processor I2C 6 + 31ba Celeron/Pentium Silver Processor I2C 7 + 31bc Celeron/Pentium Silver Processor Serial IO UART Host Controller + 31be Celeron/Pentium Silver Processor Serial IO UART Host Controller + 31c0 Celeron/Pentium Silver Processor Serial IO UART Host Controller + 31c2 Celeron/Pentium Silver Processor Serial IO SPI Host Controller + 31c4 Celeron/Pentium Silver Processor Serial IO SPI Host Controller + 31c6 Celeron/Pentium Silver Processor Serial IO SPI Host Controller + 31cc Celeron/Pentium Silver Processor SDA Standard Compliant SD Host Controller + 31d4 Celeron/Pentium Silver Processor Gaussian Mixture Model + 31d6 Gemini Lake PCI Express Root Port + 31d7 Gemini Lake PCI Express Root Port + 31d8 Gemini Lake PCI Express Root Port + 31d9 Gemini Lake PCI Express Root Port + 31da Gemini Lake PCI Express Root Port + 31db Gemini Lake PCI Express Root Port + 31dc Gemini Lake PCH CNVi WiFi + 1a56 1552 Killer(R) Wireless-AC 1550i Wireless Network Adapter (9560NGW) + 8086 0034 Wireless-AC 9560 + 31e3 Celeron/Pentium Silver Processor SATA Controller + 31e8 Celeron/Pentium Silver Processor LPC Controller + 31ee Celeron/Pentium Silver Processor Serial IO UART Host Controller + 31f0 Gemini Lake Host Bridge + 3200 GD31244 PCI-X SATA HBA + 1775 c200 C2K onboard SATA host bus adapter + 3310 IOP348 I/O Processor + 1054 3030 HRA380 Hitachi RAID Adapter to PCIe + 1054 3034 HRA381 Hitachi RAID Adapter to PCIe + 3313 IOP348 I/O Processor (SL8e) in IOC Mode SAS/SATA + 331b IOP348 I/O Processor (SL8x) in IOC Mode SAS/SATA + 3331 IOC340 I/O Controller (VV8e) SAS/SATA + 3339 IOC340 I/O Controller (VV8x) SAS/SATA + 3340 82855PM Processor to I/O Controller + 1014 0529 Thinkpad T40 series + 1025 005a TravelMate 290 + 103c 088c NC8000 laptop + 103c 0890 NC6000 laptop + 103c 08b0 tc1100 tablet + 144d c005 X10 Laptop + 144d c00c P30/P35 notebook + 3341 82855PM Processor to AGP Controller + 144d c00c P30 notebook + 3363 IOC340 I/O Controller in IOC Mode SAS/SATA + 3382 81342 [Chevelon] I/O Processor (ATUe) + 33c3 IOP348 I/O Processor (SL8De) in IOC Mode SAS/SATA + 33cb IOP348 I/O Processor (SL8Dx) in IOC Mode SAS/SATA + 3400 5520/5500/X58 I/O Hub to ESI Port + 3401 5520/5500/X58 I/O Hub to ESI Port + 3402 5520/5500/X58 I/O Hub to ESI Port + 3403 5500 I/O Hub to ESI Port + 1028 0236 PowerEdge R610 I/O Hub to ESI Port + 1028 0287 PowerEdge M610 I/O Hub to ESI Port + 1028 028c PowerEdge R410 I/O Hub to ESI Port + 1028 028d PowerEdge T410 I/O Hub to ESI Port + 103c 330b ProLiant ML150 G6 Server + 3404 5520/5500/X58 I/O Hub to ESI Port + 3405 5520/5500/X58 I/O Hub to ESI Port + 3406 5520 I/O Hub to ESI Port + 103c 330b ProLiant G6 series + 3407 5520/5500/X58 I/O Hub to ESI Port + 3408 5520/5500/X58 I/O Hub PCI Express Root Port 1 + 103c 330b ProLiant G6 series + 3409 5520/5500/X58 I/O Hub PCI Express Root Port 2 + 340a 5520/5500/X58 I/O Hub PCI Express Root Port 3 + 103c 330b ProLiant ML150 G6 Server + 340b 5520/X58 I/O Hub PCI Express Root Port 4 + 340c 5520/X58 I/O Hub PCI Express Root Port 5 + 340d 5520/X58 I/O Hub PCI Express Root Port 6 + 340e 5520/5500/X58 I/O Hub PCI Express Root Port 7 + 103c 330b ProLiant ML150 G6 Server + 340f 5520/5500/X58 I/O Hub PCI Express Root Port 8 + 3410 7500/5520/5500/X58 I/O Hub PCI Express Root Port 9 + 3411 7500/5520/5500/X58 I/O Hub PCI Express Root Port 10 + 3418 7500/5520/5500/X58 Physical Layer Port 0 + 3419 7500/5520/5500 Physical Layer Port 1 + 3420 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0 + 3421 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0 + 3422 7500/5520/5500/X58 I/O Hub GPIO and Scratch Pad Registers + 103c 330b ProLiant G6 series + 3423 7500/5520/5500/X58 I/O Hub Control Status and RAS Registers + 103c 330b ProLiant G6 series + 3425 7500/5520/5500/X58 Physical and Link Layer Registers Port 0 + 3426 7500/5520/5500/X58 Routing and Protocol Layer Registers Port 0 + 3427 7500/5520/5500 Physical and Link Layer Registers Port 1 + 3428 7500/5520/5500 Routing & Protocol Layer Register Port 1 + 3429 5520/5500/X58 Chipset QuickData Technology Device + 342a 5520/5500/X58 Chipset QuickData Technology Device + 342b 5520/5500/X58 Chipset QuickData Technology Device + 342c 5520/5500/X58 Chipset QuickData Technology Device + 342d 7500/5520/5500/X58 I/O Hub I/OxAPIC Interrupt Controller + 342e 7500/5520/5500/X58 I/O Hub System Management Registers + 103c 330b ProLiant G6 series + 342f 7500/5520/5500/X58 Trusted Execution Technology Registers + 3430 5520/5500/X58 Chipset QuickData Technology Device + 3431 5520/5500/X58 Chipset QuickData Technology Device + 3432 5520/5500/X58 Chipset QuickData Technology Device + 3433 5520/5500/X58 Chipset QuickData Technology Device + 3438 7500/5520/5500/X58 I/O Hub Throttle Registers + 3440 Ice Lake UPI Misc + 3441 Ice Lake UPI Link/Phy0 + 3456 Ice Lake NorthPeak + 347e Ice Lake Xeon Non-Transparent Bridge + 3482 Ice Lake-LP LPC Controller + 34a3 Ice Lake-LP SMBus Controller + 34a4 Ice Lake-LP SPI Controller + 34a8 Ice Lake-LP Serial IO UART Controller #0 + 34a9 Ice Lake-LP Serial IO UART Controller #1 + 34aa Ice Lake-LP Serial IO SPI Controller #0 + 34ab Ice Lake-LP Serial IO SPI Controller #1 + 34b0 Ice Lake-LP PCI Express Root Port #9 + 34b1 Ice Lake-LP PCIe Port #10 + 34b4 Ice Lake-LP PCIe Port #13 + 34b5 Ice Lake-LP PCIe Port #14 + 34b7 Ice Lake-LP PCI Express Root Port #16 + 34b8 Ice Lake-LP PCIe Port #1 + 34ba Ice Lake-LP PCI Express Root Port #3 + 34bb Ice Lake-LP PCIe Port #4 + 34bc Ice Lake-LP PCI Express Root Port #5 + 34bd Ice Lake-LP PCIe Port #6 + 34be Ice Lake-LP PCIe Port #7 + 34bf Ice Lake-LP PCIe Port #8 + 34c4 Ice Lake-LP SD Host Controller + 34c5 Ice Lake-LP Serial IO I2c Controller #4 + 34c6 Ice Lake-LP Serial IO I2c Controller #5 + 34c8 Ice Lake-LP Smart Sound Technology Audio Controller + 34d3 Ice Lake-LP SATA Controller [AHCI mode] + 34e0 Ice Lake-LP Management Engine + 34e8 Ice Lake-LP Serial IO I2C Controller #0 + 34e9 Ice Lake-LP Serial IO I2C Controller #1 + 34ea Ice Lake-LP Serial IO I2C Controller #2 + 34eb Ice Lake-LP Serial IO I2C Controller #3 + 34ed Ice Lake-LP USB 3.1 xHCI Host Controller + 34ef Ice Lake-LP DRAM Controller + 34f0 Ice Lake-LP PCH CNVi WiFi + 1a56 1552 Killer(R) Wireless-AC 1550i Wireless Network Adapter (9560NGW) + 8086 0074 Wi-Fi 6 AX201 + 8086 0264 Wireless-AC 9461 + 34f8 Ice Lake-LP SD Controller + 34fc Ice Lake-LP Integrated Sensor Solution + 3500 6311ESB/6321ESB PCI Express Upstream Port + 103c 31fe ProLiant DL140 G3 + 15d9 9680 X7DBN Motherboard + 3501 6310ESB PCI Express Upstream Port + 3504 6311ESB/6321ESB I/OxAPIC Interrupt Controller + 3505 6310ESB I/OxAPIC Interrupt Controller + 350c 6311ESB/6321ESB PCI Express to PCI-X Bridge + 103c 31fe ProLiant DL140 G3 + 15d9 9680 X7DBN Motherboard + 350d 6310ESB PCI Express to PCI-X Bridge + 3510 6311ESB/6321ESB PCI Express Downstream Port E1 + 103c 31fe ProLiant DL140 G3 + 15d9 9680 X7DBN Motherboard + 3511 6310ESB PCI Express Downstream Port E1 + 3514 6311ESB/6321ESB PCI Express Downstream Port E2 + 3515 6310ESB PCI Express Downstream Port E2 + 3518 6311ESB/6321ESB PCI Express Downstream Port E3 + 15d9 9680 X7DBN Motherboard + 3519 6310ESB PCI Express Downstream Port E3 + 3575 82830M/MG/MP Host Bridge + 0e11 0030 Evo N600c + 1014 021d ThinkPad A/T/X Series + 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + 3576 82830M/MP AGP Bridge + 3577 82830M/MG Integrated Graphics Controller + 1014 0513 ThinkPad A/T/X Series + 3578 82830M/MG/MP Host Bridge + 3580 82852/82855 GM/GME/PM/GMV Processor to I/O Controller + 1014 055c ThinkPad R50e + 1025 0064 Extensa 3000 series laptop + 1028 0139 Latitude D400 + 1028 014f Latitude X300 + 1028 0152 Latitude D500 + 1028 0163 Latitude D505 + 1028 018d Inspiron 700m/710m + 1028 0196 Inspiron 5160 + 114a 0582 PC8 + 1734 1055 Amilo M1420 + 1775 10d0 V5D Single Board Computer + 1775 ce90 CE9 + 4c53 10b0 CL9 mainboard + 4c53 10e0 PSL09 PrPMC + e4bf 0cc9 CC9-SAMBA + e4bf 0cd2 CD2-BEBOP + 3581 82852/82855 GM/GME/PM/GMV Processor to AGP Controller + 1734 1055 Amilo M1420 + 3582 82852/855GM Integrated Graphics Device + 1014 0562 ThinkPad R50e + 1028 0139 Latitude D400 + 1028 014f Latitude X300 + 1028 0152 Latitude D500 + 1028 0163 Latitude D505 + 1028 018d Inspiron 700m/710m + 114a 0582 PC8 integrated graphics + 1775 10d0 V5D Single Board Computer VGA + 1775 ce90 CE9 + 4c53 10b0 CL9 mainboard + 4c53 10e0 PSL09 PrPMC + e4bf 0cc9 CC9-SAMBA + e4bf 0cd2 CD2-BEBOP + 3584 82852/82855 GM/GME/PM/GMV Processor to I/O Controller + 1014 055d ThinkPad R50e + 1025 0064 Extensa 3000 series laptop + 1028 0139 Latitude D400 + 1028 014f Latitude X300 + 1028 0152 Latitude D500 + 1028 0163 Latitude D505 + 1028 018d Inspiron 700m/710m + 1028 0196 Inspiron 5160 + 114a 0582 PC8 + 1734 1055 Amilo M1420 + 1775 10d0 V5D Single Board Computer + 1775 ce90 CE9 + 4c53 10b0 CL9 mainboard + 4c53 10e0 PSL09 PrPMC + 3585 82852/82855 GM/GME/PM/GMV Processor to I/O Controller + 1014 055e ThinkPad R50e + 1025 0064 Extensa 3000 series laptop + 1028 0139 Latitude D400 + 1028 014f Latitude X300 + 1028 0152 Latitude D500 + 1028 0163 Latitude D505 + 1028 018d Inspiron 700m/710m + 1028 0196 Inspiron 5160 + 114a 0582 PC8 + 1734 1055 Amilo M1420 + 1775 10d0 V5D Single Board Computer + 1775 ce90 CE9 + 4c53 10b0 CL9 mainboard + 4c53 10e0 PSL09 PrPMC + 358c 82854 GMCH + 358e 82854 GMCH Integrated Graphics Device + 3590 E7520 Memory Controller Hub + 1014 02dd eServer xSeries server mainboard + 1028 016c PowerEdge 1850 Memory Controller Hub + 1028 016d PowerEdge 2850 Memory Controller Hub + 1028 019a PowerEdge SC1425 + 1734 103e PRIMERGY RX/TX S2 series + 1775 1100 CR11/VR11 Single Board Computer + 4c53 10d0 Telum ASLP10 Processor AMC + 3591 E7525/E7520 Error Reporting Registers + 1014 02dd eServer xSeries server mainboard + 1028 0168 Precision Workstation 670 Mainboard + 1028 0169 Precision 470 + 103c 3208 ProLiant DL140 G2 + 4c53 10d0 Telum ASLP10 Processor AMC + 3592 E7320 Memory Controller Hub + 1734 1073 Primergy Econel 200 D2020 mainboard + 3593 E7320 Error Reporting Registers + 1734 1073 Primergy Econel 200 D2020 mainboard + 3594 E7520 DMA Controller + 1775 1100 CR11/VR11 Single Board Computer + 4c53 10d0 Telum ASLP10 Processor AMC + 3595 E7525/E7520/E7320 PCI Express Port A + 1775 1100 CR11/VR11 Single Board Computer + 3596 E7525/E7520/E7320 PCI Express Port A1 + 3597 E7525/E7520 PCI Express Port B + 1775 1100 CR11/VR11 Single Board Computer + 3598 E7520 PCI Express Port B1 + 1775 1100 CR11/VR11 Single Board Computer + 3599 E7520 PCI Express Port C + 1775 1100 CR11/VR11 Single Board Computer + 359a E7520 PCI Express Port C1 + 359b E7525/E7520/E7320 Extended Configuration Registers + 1014 02dd eServer xSeries server mainboard + 359e E7525 Memory Controller Hub + 1028 0168 Precision Workstation 670 Mainboard + 1028 0169 Precision 470 + 35b0 3100 Chipset Memory I/O Controller Hub + 35b1 3100 DRAM Controller Error Reporting Registers + 35b5 3100 Chipset Enhanced DMA Controller + 35b6 3100 Chipset PCI Express Port A + 35b7 3100 Chipset PCI Express Port A1 + 35c8 3100 Extended Configuration Test Overflow Registers + 3600 7300 Chipset Memory Controller Hub + 3604 7300 Chipset PCI Express Port 1 + 3605 7300 Chipset PCI Express Port 2 + 3606 7300 Chipset PCI Express Port 3 + 3607 7300 Chipset PCI Express Port 4 + 3608 7300 Chipset PCI Express Port 5 + 3609 7300 Chipset PCI Express Port 6 + 360a 7300 Chipset PCI Express Port 7 + 360b 7300 Chipset QuickData Technology Device + 360c 7300 Chipset FSB Registers + 1028 01f0 PowerEdge R900 7300 Chipset FSB Registers + 360d 7300 Chipset Snoop Filter Registers + 360e 7300 Chipset Debug and Miscellaneous Registers + 360f 7300 Chipset FBD Branch 0 Registers + 3610 7300 Chipset FBD Branch 1 Registers + 3700 Xeon C5500/C3500 DMI + 3701 Xeon C5500/C3500 DMI + 3702 Xeon C5500/C3500 DMI + 3703 Xeon C5500/C3500 DMI + 3704 Xeon C5500/C3500 DMI + 3705 Xeon C5500/C3500 DMI + 3706 Xeon C5500/C3500 DMI + 3707 Xeon C5500/C3500 DMI + 3708 Xeon C5500/C3500 DMI + 3709 Xeon C5500/C3500 DMI + 370a Xeon C5500/C3500 DMI + 370b Xeon C5500/C3500 DMI + 370c Xeon C5500/C3500 DMI + 370d Xeon C5500/C3500 DMI + 370e Xeon C5500/C3500 DMI + 370f Xeon C5500/C3500 DMI + 3710 Xeon C5500/C3500 CB3 DMA + 3711 Xeon C5500/C3500 CB3 DMA + 3712 Xeon C5500/C3500 CB3 DMA + 3713 Xeon C5500/C3500 CB3 DMA + 3714 Xeon C5500/C3500 CB3 DMA + 3715 Xeon C5500/C3500 CB3 DMA + 3716 Xeon C5500/C3500 CB3 DMA + 3717 Xeon C5500/C3500 CB3 DMA + 3718 Xeon C5500/C3500 CB3 DMA + 3719 Xeon C5500/C3500 CB3 DMA + 371a Xeon C5500/C3500 QPI Link + 371b Xeon C5500/C3500 QPI Routing and Protocol + 371d Xeon C5500/C3500 QPI Routing and Protocol + 3720 Xeon C5500/C3500 PCI Express Root Port 0 + 3721 Xeon C5500/C3500 PCI Express Root Port 1 + 3722 Xeon C5500/C3500 PCI Express Root Port 2 + 3723 Xeon C5500/C3500 PCI Express Root Port 3 + 3724 Xeon C5500/C3500 PCI Express Root Port 4 + 3725 Xeon C5500/C3500 NTB Primary + 3726 Xeon C5500/C3500 NTB Primary + 3727 Xeon C5500/C3500 NTB Secondary + 3728 Xeon C5500/C3500 Core + 3729 Xeon C5500/C3500 Core + 372a Xeon C5500/C3500 Core + 372b Xeon C5500/C3500 Core + 372c Xeon C5500/C3500 Reserved + 373f Xeon C5500/C3500 IOxAPIC + 37c8 C62x Chipset QuickAssist Technology + 8086 0001 QuickAssist Adapter 8960 + 8086 0002 QuickAssist Adapter 8970 + 37c9 C62x Chipset QuickAssist Technology Virtual Function + 37cc Ethernet Connection X722 + 37cd Ethernet Virtual Function 700 Series + 37ce Ethernet Connection X722 for 10GbE backplane + 1590 0215 Ethernet 10Gb 2-port 568i Adapter + 17aa 4023 Intel Ethernet Connection X722 for 10GbE backplane + 17aa 4025 Ethernet Connection X722 for 10GbE backplane + 37cf Ethernet Connection X722 for 10GbE QSFP+ + 37d0 Ethernet Connection X722 for 10GbE SFP+ + 17aa 4020 Intel Ethernet Connection X722 for 10G SFP+ + 17aa 4021 Intel Ethernet Connection X722 for 10G SFP+ + 17aa 4022 Ethernet Connection X722 for 10GbE SFP+ + 8086 0001 Ethernet Network Adapter X722-2 + 8086 0002 Ethernet Network Adapter X722-2 + 8086 0003 Ethernet Network Adapter X722-4 + 8086 0004 Ethernet Network Adapter X722-4 + 37d1 Ethernet Connection X722 for 1GbE + 14cd 0010 88E1514 Ethernet OCP 2x1G RJ45 Phy Card [USI-1514-1GbaseT] + 1590 0216 Ethernet 1Gb 2-port 368i Adapter + 1590 0217 Ethernet 1Gb 2-port 368FLR-MMT Adapter + 1590 0247 Ethernet 1Gb 4-port 369i Adapter + 17aa 4020 Ethernet Connection X722 for 1GbE + 17aa 4021 Ethernet Connection X722 for 1GbE + 17aa 4022 Ethernet Connection X722 for 1GbE + 17aa 4024 Ethernet Connection X722 for 1GbE + 37d2 Ethernet Connection X722 for 10GBASE-T + 1059 0180 RD10019 10GbE interface + 1170 37d2 Ethernet Connection X722 for 10GBASE-T + 14cd 0030 Ethernet OCP 2x10G RJ45 Phy Card [USI-X557-10GbaseT] + 1590 0218 Ethernet 10Gb 2-port 568FLR-MMT Adapter + 17aa 4020 Ethernet Connection X722 for 10GBASE-T + 17aa 4021 Ethernet Connection X722 for 10GBASE-T + 17aa 4022 Ethernet Connection X722 for 10GBASE-T + 17aa 4024 Ethernet Connection X722 for 10GBASE-T + 17aa 4025 Ethernet Connection X722 for 10GBASE-T + 37d3 Ethernet Connection X722 for 10GbE SFP+ + 1590 0219 Ethernet 10Gb 2-port 568FLR-MMSFP+ Adapter + 17aa 4020 Ethernet Connection X722 for 10GbE SFP+ + 17aa 4021 Ethernet Connection X722 for 10GbE SFP+ + 17aa 4025 Ethernet Connection X722 for 10GbE SFP+ + 37d4 Ethernet Connection X722 for 10GbE QSFP+ + 37d9 X722 Hyper-V Virtual Function + 3882 Ice Lake LPC Controller + 38a4 Ice Lake SPI Controller + 38c8 Ice Lake-LP Smart Sound Technology Audio Controller + 38e0 Ice Lake Management Engine Interface + 3a00 82801JD/DO (ICH10 Family) 4-port SATA IDE Controller + 3a02 82801JD/DO (ICH10 Family) SATA AHCI Controller + 3a05 82801JD/DO (ICH10 Family) SATA RAID Controller + 3a06 82801JD/DO (ICH10 Family) 2-port SATA IDE Controller + 3a14 82801JDO (ICH10DO) LPC Interface Controller + 3a16 82801JIR (ICH10R) LPC Interface Controller + 1028 028c PowerEdge R410 LPC Interface Controller + 1028 028d PowerEdge T410 LPC Interface Controller + 103c 330b ProLiant G6 series + 1043 82d4 P5Q Deluxe Motherboard + 1458 5001 GA-EP45-DS5 Motherboard + 3a18 82801JIB (ICH10) LPC Interface Controller + 3a1a 82801JD (ICH10D) LPC Interface Controller + 3a20 82801JI (ICH10 Family) 4 port SATA IDE Controller #1 + 1028 028c PowerEdge R410 SATA IDE Controller + 1028 028d PowerEdge T410 SATA IDE Controller + 3a22 82801JI (ICH10 Family) SATA AHCI Controller + 103c 330b ProLiant G6 series + 1043 82d4 P5Q Deluxe Motherboard + 1458 b005 GA-EP45-DS5/GA-EG45M-DS2H Motherboard + 3a25 82801JIR (ICH10R) SATA RAID Controller + 1028 028c PERC S100 Controller (PE R410) + 1028 028d PERC S100 Controller (PE T410) + 1028 02f1 PERC S100 Controller (PE R510) + 3a26 82801JI (ICH10 Family) 2 port SATA IDE Controller #2 + 1028 028c PowerEdge R410 SATA IDE Controller + 1028 028d PowerEdge T410 SATA IDE Controller + 3a30 82801JI (ICH10 Family) SMBus Controller + 1043 82d4 P5Q Deluxe Motherboard + 1458 5001 GA-EP45-DS5/GA-EG45M-DS2H Motherboard + 3a32 82801JI (ICH10 Family) Thermal Subsystem + 3a34 82801JI (ICH10 Family) USB UHCI Controller #1 + 1028 028c PowerEdge R410 USB UHCI Controller + 1028 028d PowerEdge T410 USB UHCI Controller + 103c 330b ProLiant G6 series + 1043 82d4 P5Q Deluxe Motherboard + 1458 5004 GA-EP45-DS5 Motherboard + 3a35 82801JI (ICH10 Family) USB UHCI Controller #2 + 1028 028c PowerEdge R410 USB UHCI Controller + 1028 028d PowerEdge T410 USB UHCI Controller + 103c 330b ProLiant G6 series + 1043 82d4 P5Q Deluxe Motherboard + 1458 5004 GA-EP45-DS5 Motherboard + 3a36 82801JI (ICH10 Family) USB UHCI Controller #3 + 1028 028c PowerEdge R410 USB UHCI Controller + 1028 028d PowerEdge T410 USB UHCI Controller + 103c 330b ProLiant G6 series + 1043 82d4 P5Q Deluxe Motherboard + 1458 5004 GA-EP45-DS5 Motherboard + 3a37 82801JI (ICH10 Family) USB UHCI Controller #4 + 1028 028c PowerEdge R410 USB UHCI Controller + 1028 028d PowerEdge T410 USB UHCI Controller + 103c 330b ProLiant G6 series + 1043 82d4 P5Q Deluxe Motherboard + 1458 5004 Motherboard + 3a38 82801JI (ICH10 Family) USB UHCI Controller #5 + 1028 028c PowerEdge R410 USB UHCI Controller + 1028 028d PowerEdge T410 USB UHCI Controller + 103c 330b ProLiant ML150 G6 Server + 1043 82d4 P5Q Deluxe Motherboard + 1458 5004 Motherboard + 3a39 82801JI (ICH10 Family) USB UHCI Controller #6 + 1028 028c PowerEdge R410 USB UHCI Controller + 1028 028d PowerEdge T410 USB UHCI Controller + 103c 330b ProLiant ML150 G6 Server + 1043 82d4 P5Q Deluxe Motherboard + 1458 5004 Motherboard + 3a3a 82801JI (ICH10 Family) USB2 EHCI Controller #1 + 1028 028c PowerEdge R410 USB EHCI Controller + 1028 028d PowerEdge T410 USB EHCI Controller + 103c 330b ProLiant G6 series + 1043 82d4 P5Q Deluxe Motherboard + 1458 5006 GA-EP45-DS5 Motherboard + 3a3c 82801JI (ICH10 Family) USB2 EHCI Controller #2 + 1028 028c PowerEdge R410 USB EHCI Controller + 1028 028d PowerEdge T410 USB EHCI Controller + 103c 330b ProLiant G6 series + 1043 82d4 P5Q Deluxe Motherboard + 1458 5006 Motherboard + 3a3e 82801JI (ICH10 Family) HD Audio Controller + 1043 8311 P5Q Deluxe Motherboard + 1458 a002 GA-EP45-UD3R Motherboard + 1458 a102 GA-EP45-DS5/GA-EG45M-DS2H Motherboard + 3a40 82801JI (ICH10 Family) PCI Express Root Port 1 + 1028 028c PowerEdge R410 PCI Express Port 1 + 1028 028d PowerEdge T410 PCI Express Port 1 + 103c 330b ProLiant ML150 G6 Server + 1043 82d4 P5Q Deluxe Motherboard + 1043 82ea P6T DeLuxe Motherboard + 1458 5001 GA-EP45-DS5/GA-EG45M-DS2H Motherboard + 3a42 82801JI (ICH10 Family) PCI Express Port 2 + 3a44 82801JI (ICH10 Family) PCI Express Root Port 3 + 1043 82ea P6T DeLuxe Motherboard + 3a46 82801JI (ICH10 Family) PCI Express Root Port 4 + 1043 82ea P6T DeLuxe Motherboard + 1458 5001 GA-EP45-DS5 Motherboard + 3a48 82801JI (ICH10 Family) PCI Express Root Port 5 + 103c 330b ProLiant ML150 G6 Server + 1043 82ea P6T Deluxe Motherboard + 1458 5001 GA-EP45-DS5 Motherboard + 3a4a 82801JI (ICH10 Family) PCI Express Root Port 6 + 103c 330b ProLiant ML150 G6 Server + 1043 82d4 P5Q Deluxe Motherboard + 1043 82ea P6T DeLuxe Motherboard + 1458 5001 GA-EP45-DS5/GA-EG45M-DS2H Motherboard + 3a4c 82801JI (ICH10 Family) Gigabit Ethernet Controller + 3a51 82801JDO (ICH10DO) VECI Controller + 3a55 82801JD/DO (ICH10 Family) Virtual SATA Controller + 3a60 82801JD/DO (ICH10 Family) SMBus Controller + 3a62 82801JD/DO (ICH10 Family) Thermal Subsystem + 3a64 82801JD/DO (ICH10 Family) USB UHCI Controller #1 + 3a65 82801JD/DO (ICH10 Family) USB UHCI Controller #2 + 3a66 82801JD/DO (ICH10 Family) USB UHCI Controller #3 + 3a67 82801JD/DO (ICH10 Family) USB UHCI Controller #4 + 3a68 82801JD/DO (ICH10 Family) USB UHCI Controller #5 + 3a69 82801JD/DO (ICH10 Family) USB UHCI Controller #6 + 3a6a 82801JD/DO (ICH10 Family) USB2 EHCI Controller #1 + 3a6c 82801JD/DO (ICH10 Family) USB2 EHCI Controller #2 + 3a6e 82801JD/DO (ICH10 Family) HD Audio Controller + 3a70 82801JD/DO (ICH10 Family) PCI Express Port 1 + 3a72 82801JD/DO (ICH10 Family) PCI Express Port 2 + 3a74 82801JD/DO (ICH10 Family) PCI Express Port 3 + 3a76 82801JD/DO (ICH10 Family) PCI Express Port 4 + 3a78 82801JD/DO (ICH10 Family) PCI Express Port 5 + 3a7a 82801JD/DO (ICH10 Family) PCI Express Port 6 + 3a7c 82801JD/DO (ICH10 Family) Gigabit Ethernet Controller + 3b00 5 Series/3400 Series Chipset LPC Interface Controller + 3b01 Mobile 5 Series Chipset LPC Interface Controller + 3b02 P55 Chipset LPC Interface Controller + 3b03 PM55 Chipset LPC Interface Controller + 3b04 5 Series Chipset LPC Interface Controller + 3b05 Mobile 5 Series Chipset LPC Interface Controller + 3b06 H55 Chipset LPC Interface Controller + 3b07 QM57 Chipset LPC Interface Controller + 1028 040a Latitude E6410 + 1028 040b Latitude E6510 + e4bf 50c1 PC1-GROOVE + 3b08 H57 Chipset LPC Interface Controller + 3b09 HM55 Chipset LPC Interface Controller + 1025 0347 Aspire 7740G + 144d c06a R730 Laptop + 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] + 3b0a Q57 Chipset LPC Interface Controller + 1028 02da OptiPlex 980 + 15d9 060d C7SIM-Q Motherboard + 3b0b HM57 Chipset LPC Interface Controller + 3b0c 5 Series Chipset LPC Interface Controller + 3b0d 5 Series/3400 Series Chipset LPC Interface Controller + 3b0e 5 Series/3400 Series Chipset LPC Interface Controller + 3b0f QS57 Chipset LPC Interface Controller + 3b10 5 Series/3400 Series Chipset LPC Interface Controller + 3b11 5 Series/3400 Series Chipset LPC Interface Controller + 3b12 3400 Series Chipset LPC Interface Controller + 3b13 5 Series/3400 Series Chipset LPC Interface Controller + 3b14 3420 Chipset LPC Interface Controller + 15d9 0605 X8SIL + 3b15 5 Series/3400 Series Chipset LPC Interface Controller + 3b16 3450 Chipset LPC Interface Controller + 3b17 5 Series/3400 Series Chipset LPC Interface Controller + 3b18 5 Series/3400 Series Chipset LPC Interface Controller + 3b19 5 Series/3400 Series Chipset LPC Interface Controller + 3b1a 5 Series/3400 Series Chipset LPC Interface Controller + 3b1b 5 Series/3400 Series Chipset LPC Interface Controller + 3b1c 5 Series/3400 Series Chipset LPC Interface Controller + 3b1d 5 Series/3400 Series Chipset LPC Interface Controller + 3b1e 5 Series/3400 Series Chipset LPC Interface Controller + 3b1f 5 Series/3400 Series Chipset LPC Interface Controller + 3b20 5 Series/3400 Series Chipset 4 port SATA IDE Controller + 3b21 5 Series/3400 Series Chipset 2 port SATA IDE Controller + 3b22 5 Series/3400 Series Chipset 6 port SATA AHCI Controller + 1028 02da OptiPlex 980 + 15d9 0605 X8SIL + 15d9 060d C7SIM-Q Motherboard + 3b23 5 Series/3400 Series Chipset 4 port SATA AHCI Controller + 3b25 5 Series/3400 Series Chipset SATA RAID Controller + 103c 3118 Smart Array B110i SATA RAID Controller + 3b26 5 Series/3400 Series Chipset 2 port SATA IDE Controller + 3b28 5 Series/3400 Series Chipset 4 port SATA IDE Controller + 144d c06a R730 Laptop + 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] + 3b29 5 Series/3400 Series Chipset 4 port SATA AHCI Controller + 1025 0347 Aspire 7740G + 144d c06a R730 Laptop + 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] + 3b2c 5 Series/3400 Series Chipset SATA RAID Controller + 3b2d 5 Series/3400 Series Chipset 2 port SATA IDE Controller + 144d c06a R730 Laptop + 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] + e4bf 50c1 PC1-GROOVE + 3b2e 5 Series/3400 Series Chipset 4 port SATA IDE Controller + e4bf 50c1 PC1-GROOVE + 3b2f 5 Series/3400 Series Chipset 6 port SATA AHCI Controller + 1028 040a Latitude E6410 + 1028 040b Latitude E6510 + e4bf 50c1 PC1-GROOVE + 3b30 5 Series/3400 Series Chipset SMBus Controller + 1025 0347 Aspire 7740G + 1028 02da OptiPlex 980 + 1028 040a Latitude E6410 + 1028 040b Latitude E6510 + 1043 3838 P7P55-M Motherboard + 1043 8383 P7P55-M Motherboard + 144d c06a R730 Laptop + 15d9 0605 X8SIL + 15d9 060d C7SIM-Q Motherboard + 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] + e4bf 50c1 PC1-GROOVE + 3b32 5 Series/3400 Series Chipset Thermal Subsystem + 1025 0347 Aspire 7740G + 1028 040a Latitude E6410 + 144d c06a R730 Laptop + 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] + 3b34 5 Series/3400 Series Chipset USB2 Enhanced Host Controller + 1025 0347 Aspire 7740G + 1028 02da OptiPlex 980 + 1028 040a Latitude E6410 + 1028 040b Latitude E6510 + 144d c06a R730 Laptop + 15d9 0605 X8SIL + 15d9 060d C7SIM-Q Motherboard + 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] + e4bf 50c1 PC1-GROOVE + 3b36 5 Series/3400 Series Chipset USB Universal Host Controller + 3b37 5 Series/3400 Series Chipset USB Universal Host Controller + 3b38 5 Series/3400 Series Chipset USB Universal Host Controller + 3b39 5 Series/3400 Series Chipset USB Universal Host Controller + 3b3a 5 Series/3400 Series Chipset USB Universal Host Controller + 3b3b 5 Series/3400 Series Chipset USB Universal Host Controller + 3b3c 5 Series/3400 Series Chipset USB2 Enhanced Host Controller + 1025 0347 Aspire 7740G + 1028 02da OptiPlex 980 + 1028 040a Latitude E6410 + 1028 040b Latitude E6510 + 144d c06a R730 Laptop + 15d9 0605 X8SIL + 15d9 060d C7SIM-Q Motherboard + 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] + e4bf 50c1 PC1-GROOVE + 3b3e 5 Series/3400 Series Chipset USB Universal Host Controller + 3b3f 5 Series/3400 Series Chipset USB Universal Host Controller + 3b40 5 Series/3400 Series Chipset USB Universal Host Controller + 3b41 5 Series/3400 Series Chipset LAN Controller + 3b42 5 Series/3400 Series Chipset PCI Express Root Port 1 + 1028 02da OptiPlex 980 + 1028 040a Latitude E6410 + 1028 040b Latitude E6510 + 103c 1521 EliteBook 8540p + 144d c06a R730 Laptop + 15d9 060d C7SIM-Q Motherboard + 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] + 3b44 5 Series/3400 Series Chipset PCI Express Root Port 2 + 1028 040a Latitude E6410 + 1028 040b Latitude E6510 + 15d9 060d C7SIM-Q Motherboard + 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] + 3b46 5 Series/3400 Series Chipset PCI Express Root Port 3 + 1028 040a Latitude E6410 + 1028 040b Latitude E6510 + 144d c06a R730 Laptop + 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] + 3b48 5 Series/3400 Series Chipset PCI Express Root Port 4 + 1028 040a Latitude E6410 + 1028 040b Latitude E6510 + 144d c06a R730 Laptop + 3b4a 5 Series/3400 Series Chipset PCI Express Root Port 5 + 1028 02da OptiPlex 980 + 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] + 3b4c 5 Series/3400 Series Chipset PCI Express Root Port 6 + 3b4e 5 Series/3400 Series Chipset PCI Express Root Port 7 + 3b50 5 Series/3400 Series Chipset PCI Express Root Port 8 + 3b53 5 Series/3400 Series Chipset VECI Controller + 3b56 5 Series/3400 Series Chipset High Definition Audio + 1025 0347 Aspire 7740G + 1028 02da OptiPlex 980 + 1028 040a Latitude E6410 + 1028 040b Latitude E6510 + 1043 1373 G73-series gaming laptop + 144d c06a R730 Laptop + 15d9 060d C7SIM-Q Motherboard + 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] + e4bf 50c1 PC1-GROOVE + 3b57 5 Series/3400 Series Chipset High Definition Audio + 3b64 5 Series/3400 Series Chipset HECI Controller + 1025 0347 Aspire 7740G + 15d9 060d C7SIM-Q Motherboard + 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] + e4bf 50c1 PC1-GROOVE + 3b65 5 Series/3400 Series Chipset HECI Controller + 3b66 5 Series/3400 Series Chipset PT IDER Controller + 3b67 5 Series/3400 Series Chipset KT Controller + e4bf 50c1 PC1-GROOVE + 3c00 Xeon E5/Core i7 DMI2 + 3c01 Xeon E5/Core i7 DMI2 in PCI Express Mode + 3c02 Xeon E5/Core i7 IIO PCI Express Root Port 1a + 3c03 Xeon E5/Core i7 IIO PCI Express Root Port 1b + 3c04 Xeon E5/Core i7 IIO PCI Express Root Port 2a + 3c05 Xeon E5/Core i7 IIO PCI Express Root Port 2b + 3c06 Xeon E5/Core i7 IIO PCI Express Root Port 2c + 3c07 Xeon E5/Core i7 IIO PCI Express Root Port 2d + 3c08 Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode + 3c09 Xeon E5/Core i7 IIO PCI Express Root Port 3b + 3c0a Xeon E5/Core i7 IIO PCI Express Root Port 3c + 3c0b Xeon E5/Core i7 IIO PCI Express Root Port 3d + 3c0d Xeon E5/Core i7 Non-Transparent Bridge + 3c0e Xeon E5/Core i7 Non-Transparent Bridge + 3c0f Xeon E5/Core i7 Non-Transparent Bridge + 3c20 Xeon E5/Core i7 DMA Channel 0 + 3c21 Xeon E5/Core i7 DMA Channel 1 + 3c22 Xeon E5/Core i7 DMA Channel 2 + 3c23 Xeon E5/Core i7 DMA Channel 3 + 3c24 Xeon E5/Core i7 DMA Channel 4 + 3c25 Xeon E5/Core i7 DMA Channel 5 + 3c26 Xeon E5/Core i7 DMA Channel 6 + 3c27 Xeon E5/Core i7 DMA Channel 7 + 3c28 Xeon E5/Core i7 Address Map, VTd_Misc, System Management + 3c2a Xeon E5/Core i7 Control Status and Global Errors + 3c2c Xeon E5/Core i7 I/O APIC + 3c2e Xeon E5/Core i7 DMA + 3c2f Xeon E5/Core i7 DMA + 3c40 Xeon E5/Core i7 IIO Switch and IRP Performance Monitor + 3c43 Xeon E5/Core i7 Ring to PCI Express Performance Monitor + 3c44 Xeon E5/Core i7 Ring to QuickPath Interconnect Link 0 Performance Monitor + 3c45 Xeon E5/Core i7 Ring to QuickPath Interconnect Link 1 Performance Monitor + 3c46 Xeon E5/Core i7 Processor Home Agent Performance Monitoring + 3c71 Xeon E5/Core i7 Integrated Memory Controller RAS Registers + 3c80 Xeon E5/Core i7 QPI Link 0 + 3c83 Xeon E5/Core i7 QPI Link Reut 0 + 3c84 Xeon E5/Core i7 QPI Link Reut 0 + 3c90 Xeon E5/Core i7 QPI Link 1 + 3c93 Xeon E5/Core i7 QPI Link Reut 1 + 3c94 Xeon E5/Core i7 QPI Link Reut 1 + 3ca0 Xeon E5/Core i7 Processor Home Agent + 3ca8 Xeon E5/Core i7 Integrated Memory Controller Registers + 3caa Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 0 + 3cab Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 1 + 3cac Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 2 + 3cad Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 3 + 3cae Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 4 + 3cb0 Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 0 + 3cb1 Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 1 + 3cb2 Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 0 + 3cb3 Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 1 + 3cb4 Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 2 + 3cb5 Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 3 + 3cb6 Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 2 + 3cb7 Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 3 + 3cb8 Xeon E5/Core i7 DDRIO + 3cc0 Xeon E5/Core i7 Power Control Unit 0 + 3cc1 Xeon E5/Core i7 Power Control Unit 1 + 3cc2 Xeon E5/Core i7 Power Control Unit 2 + 3cd0 Xeon E5/Core i7 Power Control Unit 3 + 3ce0 Xeon E5/Core i7 Interrupt Control Registers + 3ce3 Xeon E5/Core i7 Semaphore and Scratchpad Configuration Registers + 3ce4 Xeon E5/Core i7 R2PCIe + 3ce6 Xeon E5/Core i7 QuickPath Interconnect Agent Ring Registers + 3ce8 Xeon E5/Core i7 Unicast Register 0 + 3ce9 Xeon E5/Core i7 Unicast Register 5 + 3cea Xeon E5/Core i7 Unicast Register 1 + 3ceb Xeon E5/Core i7 Unicast Register 6 + 3cec Xeon E5/Core i7 Unicast Register 3 + 3ced Xeon E5/Core i7 Unicast Register 7 + 3cee Xeon E5/Core i7 Unicast Register 4 + 3cef Xeon E5/Core i7 Unicast Register 8 + 3cf4 Xeon E5/Core i7 Integrated Memory Controller System Address Decoder 0 + 3cf5 Xeon E5/Core i7 Integrated Memory Controller System Address Decoder 1 + 3cf6 Xeon E5/Core i7 System Address Decoder + 3e10 8th Gen Core 4-core Processor Host Bridge/DRAM Registers [Coffee Lake H] + 3e18 8th Gen Core 4-core Workstation Processor Host Bridge/DRAM Registers [Coffee Lake S] + 3e1f 8th Gen Core 4-core Desktop Processor Host Bridge/DRAM Registers [Coffee Lake S] + 1458 5000 Z370 AORUS Gaming K3-CF + 3e30 8th/9th Gen Core 8-core Desktop Processor Host Bridge/DRAM Registers [Coffee Lake S] + 3e33 8th/9th Gen Core Processor Host Bridge/DRAM Registers [Coffee Lake] + 3e34 Coffee Lake HOST and DRAM Controller + 3e35 Coffee Lake Host Bridge/DRAM Registers + 3e81 8th Gen Core Processor PCIe Controller (x16) + 3e85 8th Gen Core Processor PCIe Controller (x8) + 3e89 8th Gen Core Processor PCIe Controller (x4) + 3e90 CoffeeLake-S GT1 [UHD Graphics 610] + 3e91 CoffeeLake-S GT2 [UHD Graphics 630] + 3e92 CoffeeLake-S GT2 [UHD Graphics 630] + 1028 0869 Vostro 3470 + 3e93 CoffeeLake-S GT1 [UHD Graphics 610] + 3e94 Coffee Lake-S GT2 [UHD Graphics P630] + 3e96 CoffeeLake-S GT2 [UHD Graphics P630] + 3e98 CoffeeLake-S GT2 [UHD Graphics 630] + 3e9a Coffee Lake-S GT2 [UHD Graphics P630] + 3e9b CoffeeLake-H GT2 [UHD Graphics 630] + 3e9c Coffee Lake-S GT1 [UHD Graphics 610] + 3ea0 WhiskeyLake-U GT2 [UHD Graphics 620] + 1028 089e Inspiron 5482 + 3ea1 Whiskey Lake-U GT1 [UHD Graphics 610] + 3ea5 CoffeeLake-U GT3e [Iris Plus Graphics 655] + 3ea6 Coffee Lake-U GT3 [Iris Plus Graphics 645] + 3ea8 Coffee Lake-U GT3 [Iris Plus Graphics 655] + 3ea9 Coffee Lake-U GT2 [UHD Graphics 620] + 3ec2 8th Gen Core Processor Host Bridge/DRAM Registers + 1028 0869 Vostro 3470 + 1043 8694 PRIME H310M-D + 3ec4 8th Gen Core Processor Host Bridge/DRAM Registers + 3ec6 8th Gen Core Processor Host Bridge/DRAM Registers + 3eca 8th Gen Core Processor Host Bridge/DRAM Registers + 3ed0 8th Gen Core Processor Host Bridge/DRAM Registers + 4000 5400 Chipset Memory Controller Hub + 4001 5400 Chipset Memory Controller Hub + 4003 5400 Chipset Memory Controller Hub + 4021 5400 Chipset PCI Express Port 1 + 4022 5400 Chipset PCI Express Port 2 + 4023 5400 Chipset PCI Express Port 3 + 4024 5400 Chipset PCI Express Port 4 + 4025 5400 Chipset PCI Express Port 5 + 4026 5400 Chipset PCI Express Port 6 + 4027 5400 Chipset PCI Express Port 7 + 4028 5400 Chipset PCI Express Port 8 + 4029 5400 Chipset PCI Express Port 9 + 402d 5400 Chipset IBIST Registers + 402e 5400 Chipset IBIST Registers + 402f 5400 Chipset QuickData Technology Device + 4030 5400 Chipset FSB Registers + 4031 5400 Chipset CE/SF Registers + 4032 5400 Chipset IOxAPIC + 4035 5400 Chipset FBD Registers + 4036 5400 Chipset FBD Registers + 4041 NVMe Datacenter SSD [Optane] + 4100 Moorestown Graphics and Video + 4108 Atom Processor E6xx Integrated Graphics Controller + 4109 Atom Processor E6xx Integrated Graphics Controller + 410a Atom Processor E6xx Integrated Graphics Controller + 410b Atom Processor E6xx Integrated Graphics Controller + 410c Atom Processor E6xx Integrated Graphics Controller + 410d Atom Processor E6xx Integrated Graphics Controller + 410e Atom Processor E6xx Integrated Graphics Controller + 410f Atom Processor E6xx Integrated Graphics Controller + 4114 Atom Processor E6xx PCI Host Bridge #1 + 4115 Atom Processor E6xx PCI Host Bridge #2 + 4116 Atom Processor E6xx PCI Host Bridge #3 + 4117 Atom Processor E6xx PCI Host Bridge #4 + 4140 NVMe Datacenter SSD [Optane] + 1028 2134 NVMe Datacenter SSD [Optane] SED 400GB 2.5" U.2 (P5800X) + 1028 2135 NVMe Datacenter SSD [Optane] SED 800GB 2.5" U.2 (P5800X) + 1028 2136 NVMe Datacenter SSD [Optane] SED 1.6TB 2.5" U.2 (P5800X) + 1028 2137 NVMe Datacenter SSD [Optane] 400GB 2.5" U.2 (P5800X) + 1028 2138 NVMe Datacenter SSD [Optane] 800GB 2.5" U.2 (P5800X) + 1028 2139 NVMe Datacenter SSD [Optane] 1.6TB 2.5" U.2 (P5800X) + 4220 PRO/Wireless 2200BG [Calexico2] Network Connection + 103c 0934 Compaq nw8240/nx8220 + 103c 12f6 nc6120/nc6220/nw8240/nx8220 + 8086 2701 WM3B2200BG Mini-PCI Card + 8086 2712 IBM ThinkPad R50e + 8086 2721 Dell B130 laptop integrated WLAN + 8086 2722 Dell Latitude D600 + 8086 2731 Samsung P35 integrated WLAN + 4222 PRO/Wireless 3945ABG [Golan] Network Connection + 103c 135c PRO/Wireless 3945ABG [Golan] Network Connection + 8086 1000 PRO/Wireless 3945ABG Network Connection + 8086 1001 WM3945ABG MOW2 + 8086 1005 PRO/Wireless 3945BG Network Connection + 8086 1034 PRO/Wireless 3945BG Network Connection + 8086 1044 PRO/Wireless 3945BG Network Connection + 8086 1c00 PRO/Wireless 3945ABG Network Connection + 4223 PRO/Wireless 2915ABG [Calexico2] Network Connection + 1000 8086 mPCI 3B Americas/Europe ZZA + 1001 8086 mPCI 3B Europe ZZE + 1002 8086 mPCI 3B Japan ZZJ + 1003 8086 mPCI 3B High-Band ZZH + 103c 1351 Compaq nc6220 + 4224 PRO/Wireless 2915ABG [Calexico2] Network Connection + 4227 PRO/Wireless 3945ABG [Golan] Network Connection + 8086 1010 ThinkPad R60e + 8086 1011 ThinkPad T60/R60e/X60s/R61 + 8086 1014 PRO/Wireless 3945BG Network Connection + 4229 PRO/Wireless 4965 AG or AGN [Kedron] Network Connection + 8086 1100 Vaio VGN-SZ79SN_C + 8086 1101 PRO/Wireless 4965 AG or AGN + 422b Centrino Ultimate-N 6300 + 8086 1101 Centrino Ultimate-N 6300 3x3 AGN + 8086 1121 Centrino Ultimate-N 6300 3x3 AGN + 422c Centrino Advanced-N 6200 + 8086 1301 Centrino Advanced-N 6200 2x2 AGN + 8086 1306 Centrino Advanced-N 6200 2x2 ABG + 8086 1307 Centrino Advanced-N 6200 2x2 BG + 8086 1321 Centrino Advanced-N 6200 2x2 AGN + 8086 1326 Centrino Advanced-N 6200 2x2 ABG + 4230 PRO/Wireless 4965 AG or AGN [Kedron] Network Connection + 8086 1110 Lenovo ThinkPad T51 + 8086 1111 Lenovo ThinkPad T61 + 4232 WiFi Link 5100 + 8086 1201 WiFi Link 5100 AGN + 8086 1204 WiFi Link 5100 AGN + 8086 1205 WiFi Link 5100 BGN + 8086 1206 WiFi Link 5100 ABG + 8086 1221 WiFi Link 5100 AGN + 8086 1224 WiFi Link 5100 AGN + 8086 1225 WiFi Link 5100 BGN + 8086 1226 WiFi Link 5100 ABG + 8086 1301 WiFi Link 5100 AGN + 8086 1304 WiFi Link 5100 AGN + 8086 1305 WiFi Link 5100 BGN + 8086 1306 WiFi Link 5100 ABG + 8086 1321 WiFi Link 5100 AGN + 8086 1324 WiFi Link 5100 AGN + 8086 1325 WiFi Link 5100 BGN + 8086 1326 WiFi Link 5100 ABG + 4235 Ultimate N WiFi Link 5300 + 4236 Ultimate N WiFi Link 5300 + 4237 PRO/Wireless 5100 AGN [Shiloh] Network Connection + 8086 1211 WiFi Link 5100 AGN + 8086 1214 WiFi Link 5100 AGN + 8086 1215 WiFi Link 5100 BGN + 8086 1216 WiFi Link 5100 ABG + 8086 1311 WiFi Link 5100 AGN + 8086 1314 WiFi Link 5100 AGN + 8086 1315 WiFi Link 5100 BGN + 8086 1316 WiFi Link 5100 ABG + 4238 Centrino Ultimate-N 6300 + 8086 1111 Centrino Ultimate-N 6300 3x3 AGN + 4239 Centrino Advanced-N 6200 + 8086 1311 Centrino Advanced-N 6200 2x2 AGN + 8086 1316 Centrino Advanced-N 6200 2x2 ABG + 423a PRO/Wireless 5350 AGN [Echo Peak] Network Connection + 423b PRO/Wireless 5350 AGN [Echo Peak] Network Connection + 423c WiMAX/WiFi Link 5150 + 8086 1201 WiMAX/WiFi Link 5150 AGN + 8086 1206 WiMAX/WiFi Link 5150 ABG + 8086 1221 WiMAX/WiFi Link 5150 AGN + 8086 1301 WiMAX/WiFi Link 5150 AGN + 8086 1306 WiMAX/WiFi Link 5150 ABG + 8086 1321 WiMAX/WiFi Link 5150 AGN + 423d WiMAX/WiFi Link 5150 + 8086 1211 WiMAX/WiFi Link 5150 AGN + 8086 1216 WiMAX/WiFi Link 5150 ABG + 8086 1311 WiMAX/WiFi Link 5150 AGN + 8086 1316 WiMAX/WiFi Link 5150 ABG + 4384 Q570 LPC/eSPI Controller + 4385 Z590 LPC/eSPI Controller + 4386 H570 LPC/eSPI Controller + 4387 B560 LPC/eSPI Controller + 4388 H510 LPC/eSPI Controller + 4389 WM590 LPC/eSPI Controller + 438a QM580 LPC/eSPI Controller + 438b HM570 LPC/eSPI Controller + 438c C252 LPC/eSPI Controller + 438d C256 LPC/eSPI Controller + 438e H310D LPC/eSPI Controller + 438f W580 LPC/eSPI Controller + 4390 RM590E LPC/eSPI Controller + 4391 R580E LPC/eSPI Controller + 43a3 Tiger Lake-H SMBus Controller + 43a4 Tiger Lake-H SPI Controller + 43b0 Tiger Lake-H PCI Express Root Port #9 + 43b8 Tiger Lake-H PCIe Root Port #1 + 43ba Tiger Lake-H PCIe Root Port #3 + 43bb Tiger Lake-H PCIe Root Port #4 + 43bc Tiger Lake-H PCI Express Root Port #5 + 43c0 Tiger Lake-H PCIe Root Port #17 + 43c7 Tiger Lake-H PCIe Root Port #24 + 43c8 Tiger Lake-H HD Audio Controller + 43d3 Tiger Lake SATA AHCI Controller + 43e0 Tiger Lake-H Management Engine Interface + 43e8 Tiger Lake-H Serial IO I2C Controller #0 + 43e9 Tiger Lake-H Serial IO I2C Controller #1 + 43ed Tiger Lake-H USB 3.2 Gen 2x1 xHCI Host Controller + 43ef Tiger Lake-H Shared SRAM + 43f0 Tiger Lake PCH CNVi WiFi + 8086 0034 Wireless-AC 9560 + 8086 0074 Wi-Fi 6 AX201 160MHz + 8086 0264 Wireless-AC 9461 + 8086 02a4 Wireless-AC 9462 + 43fc Tiger Lake-H Integrated Sensor Hub + 444e Turbo Memory Controller + 4511 Elkhart Lake Gaussian and Neural Accelerator + 4538 Elkhart Lake PCI-e Root Complex + 4555 Elkhart Lake [UHD Graphics Gen11 16EU] + 4571 Elkhart Lake [UHD Graphics Gen11 32EU] +# Seems to be different than ID 4602 + 4601 Alder Lake-U15 Host and DRAM Controller + 4602 Alder Lake Host and DRAM Controller + 460d 12th Gen Core Processor PCI Express x16 Controller #1 + 461d Alder Lake Innovation Platform Framework Processor Participant + 1028 0b10 Precision 3571 + 461e Alder Lake-P Thunderbolt 4 USB Controller + 1028 0b10 Precision 3571 + 461f Alder Lake-P Thunderbolt 4 PCI Express Root Port #3 + 4626 Alder Lake-P Integrated Graphics Controller + 4628 Alder Lake-UP3 GT2 [UHD Graphics] + 4629 12th Gen Core Processor Host Bridge/DRAM Registers + 462a AlderLake-P [UHD Graphics] + 462f Alder Lake-P Thunderbolt 4 PCI Express Root Port #2 + 4636 AlderLake-P [UHD Graphics] + 4638 AlderLake-P [UHD Graphics] + 463a AlderLake-P [UHD Graphics] + 463d 12th Gen Core Processor PCI Express x4 Controller #2 + 463e Alder Lake-P Thunderbolt 4 NHI #0 + 1028 0b10 Precision 3571 + 463f Alder Lake-P Thunderbolt 4 PCI Express Root Port #1 + 4641 12th Gen Core Processor Host Bridge/DRAM Registers + 1028 0b10 Precision 3571 + 464d 12th Gen Core Processor PCI Express x4 Controller #0 + 464e Alder Lake-N Thunderbolt 4 USB Controller + 464f 12th Gen Core Processor Gaussian & Neural Accelerator + 1028 0b10 Precision 3571 + 4650 12th Gen Core Processor Host Bridge + 465d Alder Lake Imaging Signal Processor + 4660 12th Gen Core Processor Host Bridge/DRAM Registers + 4668 12th Gen Core Processor Host Bridge/DRAM Registers + 466d Alder Lake-P Thunderbolt 4 NHI #1 + 466e Alder Lake-P Thunderbolt 4 PCI Express Root Port #0 + 467d Platform Monitoring Technology + 467f Volume Management Device NVMe RAID Controller + 4680 AlderLake-S GT1 + 4682 Alder Lake-S GT1 [UHD Graphics 730] + 4688 Alder Lake-HX GT1 [UHD Graphics 770] + 468a Alder Lake-S [UHD Graphics] + 468b Alder Lake-S [UHD Graphics] + 4690 Alder Lake-S GT1 [UHD Graphics 770] + 4692 Alder Lake-S GT1 [UHD Graphics 730] + 4693 Alder Lake-S GT1 [UHD Graphics 710] + 46a0 AlderLake-P GT2 + 46a1 UHD Graphics + 46a3 Alder Lake-P GT1 [UHD Graphics] + 46a6 Alder Lake-P GT2 [Iris Xe Graphics] + 46a8 Alder Lake-UP3 GT2 [Iris Xe Graphics] + 46aa Alder Lake-UP4 GT2 [Iris Xe Graphics] + 46b0 AlderLake-P [Iris Xe Graphics] + 46b1 AlderLake-P [Iris Xe Graphics] + 46b3 Alder Lake-UP3 GT1 [UHD Graphics] + 1025 161d N22C6 [Extensa 15 EX215-55] + 46b6 AlderLake-P [Iris Xe Graphics] + 46b8 AlderLake-P [Iris Xe Graphics] + 46ba AlderLake-P [Iris Xe Graphics] + 46c0 AlderLake-M GT1 + 46c1 AlderLake-M [Iris Xe Graphics] + 46c3 Alder Lake-UP4 GT1 [UHD Graphics] + 46d0 Alder Lake-N [UHD Graphics] + 46d1 Alder Lake-N [UHD Graphics] + 46d2 Alder Lake-N [UHD Graphics] + 46d3 Alder Lake-N [Intel Graphics] + 46d4 Alder Lake-N [Intel Graphics] + 4905 DG1 [Iris Xe MAX Graphics] + 4906 DG1 [Iris Xe Pod] + 4907 SG1 [Server GPU SG-18M] + 193d 4000 UN-GPU-XG310-32GB-FHFL + 4908 DG1 [Iris Xe Graphics] + 4909 DG1 [Iris Xe MAX 100] + 4940 4xxx Series QAT + 4941 4xxx Series QAT Virtual Function + 4942 401xx Series QAT + 4943 401xx Series QAT Virtual Function + 4944 402xx Series QAT + 4945 402xx Series QAT Virtual Function + 4946 420xx Series QAT + 4947 420xx Series QAT Virtual Function + 4b00 Elkhart Lake eSPI Controller + 4b23 Elkhart Lake SMBus Controller + 4b24 Elkhart Lake SPI (Flash) Controller + 4b38 Elkhart Lake PCH PCI Express Root Port #0 + 4b39 Elkhart Lake PCH PCI Express Root Port #1 + 4b3c Elkhart Lake PCIe Root Port #4 + 4b3e Elkhart Lake PCH PCI Express Root Port #6 + 4b4b Elkhart Lake Serial IO I2C Controller #4 + 4b4d Elkhart Lake Serial IO UART Controller #2 + 4b58 Elkhart Lake High Density Audio bus interface + 4b63 Elkhart Lake SATA AHCI + 4b70 Elkhart Lake Management Engine Interface + 4b7d Elkhart Lake USB 3.10 XHCI + 4b7f Elkhart Lake PMC SRAM + 4c3d Volume Management Device NVMe RAID Controller + 4c8a RocketLake-S GT1 [UHD Graphics 750] + 4c8b RocketLake-S GT1 [UHD Graphics 730] + 4c90 RocketLake-S GT1 [UHD Graphics P750] + 4c9a RocketLake-S [UHD Graphics] + 4d87 Jasper Lake eSPI Controller + 4da3 Jasper Lake SMBus + 4da4 Jasper Lake SPI Controller + 4da8 Jasper Lake Serial IO UART Controller #0 + 4dab Jasper Lake Serial IO SPI Controller #1 + 4db8 Jasper Lake PCIe Root Port #1 + 4db9 Jasper Lake PCIe Root Port #2 + 4dbc Jasper Lake PCIe Root Port #5 + 4dbe Jasper Lake PCIe Root Port #7 + 4dc4 Jasper Lake eMMC Controller + 4dc5 Jasper Lake Serial IO I2C Host Controller #4 + 4dc6 Jasper Lake Serial IO I2C Host Controller #5 + 4dc8 Jasper Lake HD Audio + 4dd3 Jasper Lake SATA AHCI Controller + 4de0 Management Engine Interface + 4de8 Jasper Lake Serial IO I2C Host Controller #0 + 4de9 Jasper Lake Serial IO I2C Host Controller #1 + 4dea Jasper Lake Serial IO I2C Host Controller #2 + 4deb Jasper Lake Serial IO I2C Host Controller #3 + 4ded Jasper Lake USB 3.1 xHCI Host Controller + 4def Jasper Lake Shared SRAM + 4df0 Wi-Fi 6 AX201 160MHz + 4df8 Jasper Lake SD Controller + 4e03 Dynamic Tuning service + 4e19 JasperLake IPU + 4e55 JasperLake [UHD Graphics] + 4e61 JasperLake [UHD Graphics] + 4e71 JasperLake [UHD Graphics] + 4f80 DG2 [Intel Xe Graphics] + 4f81 DG2 [Intel Xe Graphics] + 4f82 DG2 [Intel Xe Graphics] + 4f83 DG2 [Intel Xe Graphics] + 4f84 DG2 [Intel Xe Graphics] + 4f85 DG2 [Intel Xe Graphics] + 4f86 DG2 [Intel Xe Graphics] + 4f87 DG2 [Intel Xe Graphics] + 4f88 DG2 [Intel Xe Graphics] + 4f89 ACMP [Xe Graphics] + 4f8c ACMP [Xe Graphics] + 4f90 DG2 Audio Controller + 4f91 DG2 Audio Controller + 4f92 DG2 Audio Controller + 5001 LE80578 + 5002 LE80578 Graphics Processor Unit + 5009 LE80578 Video Display Controller + 500d LE80578 Expansion Bus + 500e LE80578 UART Controller + 500f LE80578 General Purpose IO + 5010 LE80578 I2C Controller + 5012 LE80578 Serial Peripheral Interface Bus + 5020 EP80579 Memory Controller Hub + 5021 EP80579 DRAM Error Reporting Registers + 5023 EP80579 EDMA Controller + 5024 EP80579 PCI Express Port PEA0 + 5025 EP80579 PCI Express Port PEA1 + 5028 EP80579 S-ATA IDE + 5029 EP80579 S-ATA AHCI + 502a EP80579 S-ATA Reserved + 502b EP80579 S-ATA Reserved + 502c EP80579 Integrated Processor ASU + 502d EP80579 Integrated Processor with QuickAssist ASU + 502e EP80579 Reserved + 502f EP80579 Reserved + 5030 EP80579 Reserved + 5031 EP80579 LPC Bus + 5032 EP80579 SMBus Controller + 5033 EP80579 USB 1.1 Controller + 5035 EP80579 USB 2.0 Controller + 5037 EP80579 PCI-PCI Bridge (transparent mode) + 5039 EP80579 Controller Area Network (CAN) interface #1 + 503a EP80579 Controller Area Network (CAN) interface #2 + 503b EP80579 Synchronous Serial Port (SPP) + 503c EP80579 IEEE 1588 Hardware Assist + 503d EP80579 Local Expansion Bus + 503e EP80579 Global Control Unit (GCU) + 503f EP80579 Reserved + 5040 EP80579 Integrated Processor Gigabit Ethernet MAC + 5041 EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC + 5042 EP80579 Reserved + 5043 EP80579 Reserved + 5044 EP80579 Integrated Processor Gigabit Ethernet MAC + 5045 EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC + 5046 EP80579 Reserved + 5047 EP80579 Reserved + 5048 EP80579 Integrated Processor Gigabit Ethernet MAC + 5049 EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC + 504a EP80579 Reserved + 504b EP80579 Reserved + 504c EP80579 Integrated Processor with QuickAssist TDM + 5181 Alder Lake PCH-P LPC/eSPI Controller + 5182 Alder Lake PCH eSPI Controller + 1028 0b10 Precision 3571 + 5187 Alder Lake LPC Controller + 519d Raptor Lake LPC/eSPI Controller + 1028 0c06 Precision 3580 + 51a3 Alder Lake PCH-P SMBus Host Controller + 1028 0b10 Precision 3571 + 1028 0c06 Precision 3580 + 51a4 Alder Lake-P PCH SPI Controller + 1028 0b10 Precision 3571 + 1028 0c06 Precision 3580 + 51a8 Alder Lake PCH UART #0 + 51a9 Alder Lake PCH UART #1 + 51aa Alder Lake SPI Controller + 51ab Alder Lake SPI Controller + 51b0 Alder Lake PCI Express Root Port #9 + 51b1 Alder Lake PCI Express x1 Root Port #10 + 51bb Alder Lake-P PCH PCIe Root Port #4 + 51bd Alder Lake-P PCH PCIe Root Port #6 + 51bf Alder Lake PCH-P PCI Express Root Port #9 + 51c5 Alder Lake-P Serial IO I2C Controller #0 + 51c6 Alder Lake-P Serial IO I2C Controller #1 + 51c8 Alder Lake PCH-P High Definition Audio Controller + 1028 0b10 Precision 3571 + 51ca Raptor Lake-P/U/H cAVS + 1028 0c06 Precision 3580 + 51cc Alder Lake Smart Sound Technology Audio Controller + 51d3 Alder Lake-P SATA AHCI Controller + 1028 0b10 Precision 3571 + 51d8 Alder Lake-P Serial IO I2C Controller #2 + 51d9 Alder Lake-P Serial IO I2C Controller #3 + 51e0 Alder Lake PCH HECI Controller + 1028 0b10 Precision 3571 + 1028 0c06 Precision 3580 + 51e3 Alder Lake AMT SOL Redirection + 1028 0b10 Precision 3571 + 51e8 Alder Lake PCH Serial IO I2C Controller #0 + 1028 0b10 Precision 3571 + 1028 0c06 Precision 3580 + 51e9 Alder Lake PCH Serial IO I2C Controller #1 + 1028 0b10 Precision 3571 + 1028 0c06 Precision 3580 + 51ea Alder Lake PCH Serial IO I2C Controller #2 + 51eb Alder Lake PCH Serial IO I2C Controller #3 + 51ed Alder Lake PCH USB 3.2 xHCI Host Controller + 1028 0b10 Precision 3571 + 1028 0c06 Precision 3580 + 51ef Alder Lake PCH Shared SRAM + 1028 0b10 Precision 3571 + 1028 0c06 Precision 3580 + 51f0 Alder Lake-P PCH CNVi WiFi + 1a56 1652 Dual Band Wi-Fi 6(802.11ax) Killer AX1650i 160MHz 2x2 [Cyclone Peak] + 1a56 1671 Dual Band Wi-Fi 6E(802.11ax) AX1675s 160MHz 2x2 [Garfield Peak] + 1a56 1672 Dual Band Wi-Fi 6E(802.11ax) AX1675i 160MHz 2x2 [Garfield Peak] + 1a56 1692 Simultaneous Dual Band(Double Connect) Wi-Fi 6E AX1690i 160MHz 2x2 [Garfield Peak] + 8086 0034 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9560 160MHz 2x2 [Jefferson Peak] + 8086 0070 Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak] + 8086 0074 Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak] + 8086 0094 Dual Band Wi-Fi 6E(802.11ax) AX211 160MHz 2x2 [Garfield Peak] + 8086 00b4 Simultaneous Dual Band(Double Connect) Wi-Fi 6E AX411 160MHz 2x2 [Garfield Peak] + 8086 0234 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9560 80MHz 2x2 [Jefferson Peak] + 8086 0244 Single Band Wi-Fi 6(802.11ax) AX101 80MHz 1x1 [Harrison Peak] + 8086 0264 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9461 80MHz 1x1 [Jefferson Peak] + 8086 0274 Dual Band Wi-Fi E(802.11ax) AX203 80MHz 2x2 [Johnson Peak] + 8086 02a4 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak] + 8086 4070 Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak] + 8086 4090 Dual Band Wi-Fi 6E(802.11ax) AX211 160MHz 2x2 [Garfield Peak] + 8086 42a4 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak] + 51f1 Raptor Lake PCH CNVi WiFi + 8086 4090 Wi-Fi 6E AX211 160MHz + 51fc Alder Lake-P Integrated Sensor Hub + 1028 0b10 Precision 3571 + 1028 0c06 Precision 3580 + 5200 EtherExpress PRO/100 Intelligent Server PCI Bridge + 5201 EtherExpress PRO/100 Intelligent Server Fast Ethernet Controller + 8086 0001 EtherExpress PRO/100 Server Ethernet Adapter + 530d 80310 (IOP) IO Processor + 5481 Alder Lake-N PCH eSPI Controller + 54a3 Alder Lake-N SMBus + 54a4 Alder Lake-N SPI (flash) Controller + 54a8 Alder Lake-N Serial IO UART Host Controller + 54b0 Alder Lake-N PCI Express Root Port #9 + 54b1 Alder Lake-N PCI Express Root Port #10 + 54b2 Alder Lake-N PCI Express Root Port #11 + 54b3 Alder Lake-N PCI Express Root Port #12 + 54c8 Alder Lake-N PCH High Definition Audio Controller + 54d3 Alder Lake-N SATA AHCI Controller + 54e0 Alder Lake-N PCH HECI Controller + 54ed Alder Lake-N PCH USB 3.2 xHCI Host Controller + 54ef Alder Lake-N PCH Shared SRAM + 54f0 CNVi: Wi-Fi + 8086 0244 Wi-Fi 6 AX101NGW + 5502 Ethernet Controller (2) I225-LMvP + 1ab6 0225 TS4 On-Board 2.5GbE Ethernet Adaptor + 5690 DG2 [Arc A770M] + 5691 DG2 [Arc A730M] + 5692 DG2 [Arc A550M] + 5693 DG2 [Arc A370M] + 5694 DG2 [Arc A350M] + 5695 DG2 [Iris Xe MAX A200M] + 5696 DG2 [Arc A570M] + 5697 DG2 [Arc A530M] + 5698 DG2 [Arc Xe Graphics] + 56a0 DG2 [Arc A770] + 56a1 DG2 [Arc A750] + 56a2 DG2 [Arc A580] + 56a3 DG2 [Arc Xe Graphics] + 56a4 DG2 [Arc Xe Graphics] + 56a5 DG2 [Arc A380] + 56a6 DG2 [Arc A310] + 56a7 DG2 [Arc Xe Graphics] + 56a8 DG2 [Arc Xe Graphics] + 56a9 DG2 [Arc Xe Graphics] + 56b0 DG2 [Arc Pro A30M] + 56b1 DG2 [Arc Pro A40/A50] + 56b2 DG2 [Arc Pro A60M] + 56b3 DG2 [Arc Pro A60] + 56ba DG2 [Intel Graphics] + 56bb DG2 [Intel Graphics] + 56bc DG2 [Intel Graphics] + 56bd DG2 [Intel Graphics] + 56be DG2 [Arc Graphics A750E] + 56bf DG2 [Arc Graphics A580E] + 56c0 ATS-M [Data Center GPU Flex 170] + 56c1 ATS-M [Data Center GPU Flex 140] + 56c2 ATS-M [Data Center GPU Flex 170V] + 5780 Thunderbolt 80/120G Bridge [Barlow Ridge Host 80G 2023] + 5781 Thunderbolt 80/120G NHI [Barlow Ridge Host 80G 2023] + 5782 Thunderbolt 80/120G USB Controller [Barlow Ridge Host 80G 2023] + 5783 Thunderbolt Bridge [Barlow Ridge Host 40G 2023] + 5784 Thunderbolt NHI [Barlow Ridge Host 40G 2023] + 5785 Thunderbolt USB Controller [Barlow Ridge Host 40G 2023] + 5786 Thunderbolt 80/120G Bridge [Barlow Ridge Hub 80G 2023] + 5787 Thunderbolt 80/120G USB Controller [Barlow Ridge Hub 80G 2023] + 579c Ethernet Connection E825-C for backplane + 579d Ethernet Connection E825-C for QSFP + 579e Ethernet Connection E825-C for SFP + 57a4 Thunderbolt Bridge [Barlow Ridge Hub 40G 2023] + 57a5 Thunderbolt USB Controller [Barlow Ridge Hub 40G 2023] + 57ae Ethernet Controller E610 Backplane + 57af Ethernet Controller E610 SFP + 57b0 Ethernet Controller E610 10GBASE T + 57b1 Ethernet Controller E610 2.5GBASE T + 8086 0000 Ethernet Converged Network Adapter E610 + 57b2 Ethernet Controller E610 SGMII + 5845 QEMU NVM Express Controller + 1af4 1100 QEMU Virtual Machine + 5900 Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers + 5901 Xeon E3-1200 v6/7th Gen Core Processor PCIe Controller (x16) + 5902 HD Graphics 610 + 5904 Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers + 1025 115f Aspire E5-575G + 17aa 2247 ThinkPad T570 + 17aa 224f ThinkPad X1 Carbon 5th Gen + 5905 Xeon E3-1200 v6/7th Gen Core Processor PCIe Controller (x8) + 5906 HD Graphics 610 + 5909 Xeon E3-1200 v6/7th Gen Core Processor PCIe Controller (x4) + 590b HD Graphics 610 + 590c Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers + 590f Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers + 1043 8694 H110I-PLUS Motherboard + 1462 7994 H110M ECO/GAMING + 1462 7a68 B250 KRAIT GAMING (MS-7A68) + 1462 7a72 H270 PC MATE + 5910 Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers + 5911 Xeon E3-1200 v6/7th Gen Core Processor Gaussian Mixture Model + 5912 HD Graphics 630 + 1043 8694 H110I-PLUS Motherboard + 1462 7994 H110M ECO/GAMING + 1462 7a72 H270 PC MATE + 5914 Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers + 17aa 225d ThinkPad T480 + 5916 HD Graphics 620 + 1025 1094 Aspire E5-575G + 17aa 2248 ThinkPad T570 + 17aa 224f ThinkPad X1 Carbon 5th Gen + 5917 UHD Graphics 620 + 17aa 225e ThinkPad T480 + 5918 Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers + 591b HD Graphics 630 + 591c UHD Graphics 615 + 591d HD Graphics P630 + 591e HD Graphics 615 + 591f Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers + 5921 HD Graphics 620 + 5923 HD Graphics 635 + 5926 Iris Plus Graphics 640 + 5927 Iris Plus Graphics 650 + 5a84 Apollo Lake [HD Graphics 505] + 5a85 HD Graphics 500 + 5a88 Celeron N3350/Pentium N4200/Atom E3900 Series Imaging Unit + 5a98 Celeron N3350/Pentium N4200/Atom E3900 Series Audio Cluster + 5a9a Celeron N3350/Pentium N4200/Atom E3900 Series Trusted Execution Engine + 5aa2 Celeron N3350/Pentium N4200/Atom E3900 Series Integrated Sensor Hub + 5aa8 Celeron N3350/Pentium N4200/Atom E3900 Series USB xHCI + 5aac Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #1 + 5aae Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #2 + 5ab0 Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #3 + 5ab2 Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #4 + 5ab4 Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #5 + 5ab6 Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #6 + 5ab8 Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #7 + 5aba Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #8 + 5abc Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #1 + 5abe Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #2 + 5ac0 Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #3 + 5ac2 Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #1 + 5ac4 Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #2 + 5ac6 Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #3 + 5ac8 Celeron N3350/Pentium N4200/Atom E3900 Series PWM Pin Controller + 5aca Celeron N3350/Pentium N4200/Atom E3900 Series SDXC/MMC Host Controller + 5acc Celeron N3350/Pentium N4200/Atom E3900 Series eMMC Controller + 5ad0 Celeron N3350/Pentium N4200/Atom E3900 Series SDIO Controller + 5ad4 Celeron N3350/Pentium N4200/Atom E3900 Series SMBus Controller + 5ad6 Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port B #1 + 5ad7 Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port B #2 + 5ad8 Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #1 + 5ad9 Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #2 + 5ada Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #3 + 5adb Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #4 + 5ae3 Celeron N3350/Pentium N4200/Atom E3900 Series SATA AHCI Controller + 5ae8 Celeron N3350/Pentium N4200/Atom E3900 Series Low Pin Count Interface + 5aee Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #4 + 5af0 Celeron N3350/Pentium N4200/Atom E3900 Series Host Bridge + 6420 Lunar Lake [Intel Graphics] + 643e Lunar Lake NPU + 64a0 Lunar Lake [Intel Graphics] + 64b0 Lunar Lake [Intel Graphics] + 65c0 5100 Chipset Memory Controller Hub + 65e2 5100 Chipset PCI Express x4 Port 2 + 65e3 5100 Chipset PCI Express x4 Port 3 + 65e4 5100 Chipset PCI Express x4 Port 4 + 65e5 5100 Chipset PCI Express x4 Port 5 + 65e6 5100 Chipset PCI Express x4 Port 6 + 65e7 5100 Chipset PCI Express x4 Port 7 + 65f0 5100 Chipset FSB Registers + 1028 020f PowerEdge R300 + 1028 0210 PowerEdge T300 + 65f1 5100 Chipset Reserved Registers + 1028 0210 PowerEdge T300 + 65f3 5100 Chipset Reserved Registers + 65f5 5100 Chipset DDR Channel 0 Registers + 65f6 5100 Chipset DDR Channel 1 Registers + 65f7 5100 Chipset PCI Express x8 Port 2-3 + 65f8 5100 Chipset PCI Express x8 Port 4-5 + 65f9 5100 Chipset PCI Express x8 Port 6-7 + 65fa 5100 Chipset PCI Express x16 Port 4-7 + 65ff 5100 Chipset DMA Engine + 6f00 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DMI2 + 15d9 0832 X10SRL-F + 6f01 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 0 + 6f02 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 1 + 6f03 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 1 + 6f04 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2 + 6f05 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2 + 6f06 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2 + 6f07 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2 + 6f08 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 + 6f09 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 + 6f0a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 + 6f0b Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 + 6f10 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug + 6f11 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug + 6f12 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug + 6f13 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug + 6f14 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug + 6f15 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug + 6f16 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug + 6f17 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug + 6f18 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug + 6f19 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug + 6f1a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug + 6f1b Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug + 6f1c Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug + 6f1d Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R2PCIe Agent + 6f1e Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox + 6f1f Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox + 6f20 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 0 + 15d9 0832 X10SRL-F + 6f21 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 1 + 15d9 0832 X10SRL-F + 6f22 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 2 + 15d9 0832 X10SRL-F + 6f23 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 3 + 15d9 0832 X10SRL-F + 6f24 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 4 + 15d9 0832 X10SRL-F + 6f25 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 5 + 15d9 0832 X10SRL-F + 6f26 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 6 + 15d9 0832 X10SRL-F + 6f27 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 7 + 15d9 0832 X10SRL-F + 6f28 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Map/VTd_Misc/System Management + 15d9 0832 X10SRL-F + 6f29 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Hot Plug + 15d9 0832 X10SRL-F + 6f2a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO RAS/Control Status/Global Errors + 15d9 0832 X10SRL-F + 6f2c Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D I/O APIC + 15d9 0832 X10SRL-F + 6f30 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0 + 6f32 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 + 6f33 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1 + 6f34 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R2PCIe Agent + 6f36 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 + 6f37 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 + 6f38 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 1 + 6f39 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IO Performance Monitoring + 6f3a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 + 6f3e Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 2 + 6f3f Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 2 + 6f40 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 + 6f41 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 2 + 6f43 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 + 6f45 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 Debug + 6f46 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 Debug + 6f47 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 Debug + 6f50 Xeon Processor D Family QuickData Technology Register DMA Channel 0 + 6f51 Xeon Processor D Family QuickData Technology Register DMA Channel 1 + 6f52 Xeon Processor D Family QuickData Technology Register DMA Channel 2 + 6f53 Xeon Processor D Family QuickData Technology Register DMA Channel 3 + 6f54 Xeon Processor D Family QuickAssist Technology + 6f55 Xeon Processor D Family QuickAssist Technology Virtual Fuction + 6f60 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 1 + 6f68 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Target Address/Thermal/RAS + 6f6a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Channel Target Address Decoder + 6f6b Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Channel Target Address Decoder + 6f6c Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Channel Target Address Decoder + 6f6d Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Channel Target Address Decoder + 6f6e Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Broadcast + 6f6f Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Global Broadcast + 6f70 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0 Debug + 6f71 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Target Address/Thermal/RAS + 6f76 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link Debug + 6f78 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 1 Debug + 6f79 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Target Address/Thermal/RAS + 6f7d Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox + 6f7e Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link Debug + 6f80 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 + 6f81 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 + 6f83 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 + 6f85 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 Debug + 6f86 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 Debug + 6f87 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 Debug + 6f88 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6f8a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6f90 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1 + 6f93 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1 + 6f95 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1 Debug + 6f96 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1 Debug + 6f98 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6f99 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6f9a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6f9c Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6fa0 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0 + 6fa8 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Target Address/Thermal/RAS + 6faa Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder + 6fab Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder + 6fac Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder + 6fad Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder + 6fae Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Broadcast + 6faf Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Global Broadcast + 6fb0 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 0 Thermal Control + 6fb1 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 1 Thermal Control + 6fb2 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 0 Error + 6fb3 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 1 Error + 6fb4 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 2 Thermal Control + 6fb5 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 3 Thermal Control + 6fb6 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 2 Error + 6fb7 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 3 Error + 6fb8 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Interface + 6fb9 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Interface + 6fba Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Interface + 6fbb Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Interface + 6fbc Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface + 6fbd Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface + 6fbe Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface + 6fbf Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface + 6fc0 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6fc1 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6fc2 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6fc3 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6fc4 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6fc5 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6fc6 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6fc7 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6fc8 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6fc9 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6fca Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6fcb Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6fcc Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6fcd Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6fce Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6fcf Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit + 6fd0 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 0 Thermal Control + 6fd1 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 1 Thermal Control + 6fd2 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 0 Error + 6fd3 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 1 Error + 6fd4 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 2 Thermal Control + 6fd5 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 3 Thermal Control + 6fd6 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 2 Error + 6fd7 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 3 Error + 6fe0 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6fe1 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6fe2 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6fe3 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6fe4 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6fe5 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6fe6 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6fe7 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6fe8 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6fe9 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6fea Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6feb Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6fec Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6fed Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6fee Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6fef Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6ff0 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6ff1 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6ff8 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6ff9 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6ffa Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6ffb Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6ffc Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6ffd Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 6ffe Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent + 7000 82371SB PIIX3 ISA [Natoma/Triton II] + 01de fffd Propolis Virtual PIIX3 ISA Controller + 1af4 1100 Qemu virtual machine + 7010 82371SB PIIX3 IDE [Natoma/Triton II] + 1af4 1100 Qemu virtual machine + 7020 82371SB PIIX3 USB [Natoma/Triton II] + 1af4 1100 QEMU Virtual Machine + 7030 430VX - 82437VX TVX [Triton VX] + 7050 Intercast Video Capture Card + 7051 PB 642365-003 (Business Video Conferencing Card) + 7100 430TX - 82439TX MTXC + 7110 82371AB/EB/MB PIIX4 ISA + 15ad 1976 Virtual Machine Chipset + 7111 82371AB/EB/MB PIIX4 IDE + 15ad 1976 Virtual Machine Chipset + 7112 82371AB/EB/MB PIIX4 USB + 15ad 1976 Virtual Machine Chipset + 1af4 1100 QEMU Virtual Machine + 7113 82371AB/EB/MB PIIX4 ACPI + 01de fffc Propolis Virtual PIIX4 PM Controller + 15ad 1976 Virtual Machine Chipset + 1af4 1100 Qemu virtual machine + 7120 82810 GMCH (Graphics Memory Controller Hub) + 4c53 1040 CL7 mainboard + 4c53 1060 PC7 mainboard + 7121 82810 (CGC) Chipset Graphics Controller + 4c53 1040 CL7 mainboard + 4c53 1060 PC7 mainboard + 8086 4341 Cayman (CA810) Mainboard + 7122 82810 DC-100 (GMCH) Graphics Memory Controller Hub + 7123 82810 DC-100 (CGC) Chipset Graphics Controller + 7124 82810E DC-133 (GMCH) Graphics Memory Controller Hub + 1028 00b4 OptiPlex GX110 + 7125 82810E DC-133 (CGC) Chipset Graphics Controller + 1028 00b4 OptiPlex GX110 + 7126 82810 DC-133 System and Graphics Controller + 7128 82810-M DC-100 System and Graphics Controller + 712a 82810-M DC-133 System and Graphics Controller + 7180 440LX/EX - 82443LX/EX Host bridge + 7181 440LX/EX - 82443LX/EX AGP bridge + 7190 440BX/ZX/DX - 82443BX/ZX/DX Host bridge + 0e11 0500 Armada 1750 Laptop System Chipset + 0e11 b110 Armada M700/E500 + 1028 008e PowerEdge 1300 mainboard + 1043 803b CUBX-L/E Mainboard + 1179 0001 Toshiba Tecra 8100 Laptop System Chipset + 15ad 1976 Virtual Machine Chipset + 4c53 1050 CT7 mainboard + 4c53 1051 CE7 mainboard + 7191 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge + 1028 008e PowerEdge 1300 mainboard + 7192 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled) + 0e11 0460 Armada 1700 Laptop System Chipset + 1179 0001 Satellite 4010 + 4c53 1000 CC7/CR7/CP7/VC7/VP7/VR7 mainboard + 8086 7190 Dell PowerEdge 350 + 7194 82440MX Host Bridge + 1033 0000 Versa Note Vxi + 4c53 10a0 CA3/CR3 mainboard + 7195 82440MX AC'97 Audio Controller + 1033 80cc Versa Note VXi + 10cf 1099 QSound_SigmaTel Stac97 PCI Audio + 11d4 0040 SoundMAX Integrated Digital Audio + 11d4 0048 SoundMAX Integrated Digital Audio + 7196 82440MX AC'97 Modem Controller + 7198 82440MX ISA Bridge + 7199 82440MX EIDE Controller + 719a 82440MX USB Universal Host Controller + 719b 82440MX Power Management Controller + 71a0 440GX - 82443GX Host bridge + 4c53 1050 CT7 mainboard + 4c53 1051 CE7 mainboard + 71a1 440GX - 82443GX AGP bridge + 71a2 440GX - 82443GX Host bridge (AGP disabled) + 4c53 1000 CC7/CR7/CP7/VC7/VP7/VR7 mainboard + 7360 XMM7360 LTE Advanced Modem + 7560 XMM7560 LTE Advanced Pro Modem + 7600 82372FB PIIX5 ISA + 7601 82372FB PIIX5 IDE + 7602 82372FB PIIX5 USB + 7603 82372FB PIIX5 SMBus + 7800 82740 (i740) AGP Graphics Accelerator + 003d 0008 Starfighter AGP + 003d 000b Starfighter AGP + 1092 0100 Stealth II G460 + 10b4 201a Lightspeed 740 + 10b4 202f Lightspeed 740 + 8086 0000 Terminator 2x/i + 8086 0100 Intel740 Graphics Accelerator + 7a04 Raptor Lake LPC/eSPI Controller + 7a23 Raptor Lake-S PCH SMBus Controller + 7a24 Raptor Lake SPI (flash) Controller + 7a27 Raptor Lake-S PCH Shared SRAM + 7a30 Raptor Lake PCI Express Root Port #9 + 7a38 Raptor Lake PCI Express Root Port #1 + 7a3a Raptor Point-S PCH - PCI Express Root Port 3 + 7a3b Raptor Lake PCI Express Root Port #4 + 7a40 Raptor Lake PCI Express Root Port #17 + 7a44 Raptor Lake PCI Express Root Port #21 + 7a48 Raptor Lake PCI Express Root Port #25 + 7a4c Raptor Lake Serial IO I2C Host Controller #0 + 7a4d Raptor Lake Serial IO I2C Host Controller #1 + 7a4e Raptor Lake Serial IO I2C Host Controller #2 + 7a50 Raptor Lake High Definition Audio Controller + 7a60 Raptor Lake USB 3.2 Gen 2x2 (20 Gb/s) XHCI Host Controller + 7a62 Raptor Lake SATA AHCI Controller + 7a68 Raptor Lake CSME HECI #1 + 7a69 Raptor Lake CSME HECI #2 + 7a70 Raptor Lake-S PCH CNVi WiFi + 8086 0090 WiFi 6E AX211 160MHz +# Unlike other PCH components. The eSPI controller is specific to each chipset model + 7a84 Z690 Chipset LPC/eSPI Controller + 7a85 Alder Lake-S PCH PCI Express Root Port #????? + 7aa3 Alder Lake-S PCH SMBus Controller + 7aa4 Alder Lake-S PCH SPI Controller + 7aa7 Alder Lake-S PCH Shared SRAM + 7aa8 Alder Lake-S PCH Serial IO UART #0 + 7aab Alder Lake-S PCH Serial IO SPI Controller #1 + 7ab0 Alder Lake-S PCH PCI Express Root Port #9 + 7ab4 Alder Lake-S PCH PCI Express Root Port #13 + 7ab8 Alder Lake-S PCH PCI Express Root Port #1 + 7ab9 Alder Lake-S PCH PCI Express Root Port #2 + 7aba Alder Lake-S PCH PCI Express Root Port #3 + 7abc Alder Lake-S PCH PCI Express Root Port #5 + 7abd Alder Lake-S PCH PCI Express Root Port #6 + 7abf Alder Lake-S PCH PCI Express Root Port #8 + 7ac4 Alder Lake-S PCH PCI Express Root Port #21 + 7ac8 Alder Lake-S PCH PCI Express Root Port #25 + 7acc Alder Lake-S PCH Serial IO I2C Controller #0 + 7acd Alder Lake-S PCH Serial IO I2C Controller #1 + 7ace Alder Lake-S PCH Serial IO I2C Controller #2 + 7acf Alder Lake-S PCH Serial IO I2C Controller #3 + 7ad0 Alder Lake-S HD Audio Controller + 7ae0 Alder Lake-S PCH USB 3.2 Gen 2x2 XHCI Controller + 7ae2 Alder Lake-S PCH SATA Controller [AHCI Mode] + 7ae8 Alder Lake-S PCH HECI Controller #1 + 7af0 Alder Lake-S PCH CNVi WiFi + 8086 0034 Wireless-AC 9560 + 8086 0070 Wi-Fi 6 AX201 160MHz + 8086 0094 Wi-Fi 6 AX201 160MHz + 7afc Alder Lake-S PCH Serial IO I2C Controller #4 + 7afd Alder Lake-S PCH Serial IO I2C Controller #5 + 7d03 Meteor Lake-P Dynamic Tuning Technology + 7d0b Volume Management Device NVMe RAID Controller Intel Corporation + 7d0d Meteor Lake-P Platform Monitoring Technology + 7d19 Meteor Lake IPU + 7d1d Meteor Lake NPU + 7d40 Meteor Lake-M [Intel Graphics] + 7d41 Arrow Lake-U [Intel Graphics] + 7d45 Meteor Lake-P [Intel Graphics] + 7d51 Arrow Lake-P [Intel Graphics] + 7d55 Meteor Lake-P [Intel Arc Graphics] + 7d60 Meteor Lake-M [Intel Graphics] + 7d67 Arrow Lake-U [Intel Graphics] + 7dd1 Arrow Lake-P [Intel Graphics] + 7dd5 Meteor Lake-P [Intel Graphics] + 7e01 Meteor Lake-P LPC/eSPI Controller + 7e22 Meteor Lake-P SMBus Controller + 7e23 Meteor Lake-P SPI Controller + 7e24 Meteor Lake-P Trace Hub + 7e25 Meteor Lake-P Serial IO UART Controller #0 + 7e26 Meteor Lake-P Serial IO UART Controller #1 + 7e27 Meteor Lake-P Serial IO SPI Controller #0 + 7e28 Meteor Lake-P HD Audio Controller + 7e30 Meteor Lake-P Serial IO SPI Controller #1 + 7e40 Meteor Lake PCH CNVi WiFi + 8086 0094 Wi-Fi 6E AX211 160MHz +# Refer from Intel Meteor Lake EDS (doc#640228) under its "Device IDs" section. + 7e45 Meteor Lake-P Integrated Sensor Hub + 7e46 Meteor Lake-P Serial IO SPI Controller #2 + 7e4c Meteor Lake-P Gaussian & Neural-Network Accelerator + 7e50 Meteor Lake-P Serial IO I2C Controller #4 + 7e51 Meteor Lake-P Serial IO I2C Controller #5 + 7e52 Meteor Lake-P Serial IO UART Controller #2 + 7e70 Meteor Lake-P CSME HECI #1 + 7e73 Meteor Lake-P Keyboard and Text (KT) Redirection + 7e78 Meteor Lake-P Serial IO I2C Controller #0 + 7e79 Meteor Lake-P Serial IO I2C Controller #1 + 7e7a Meteor Lake-P Serial IO I2C Controller #2 + 7e7b Meteor Lake-P Serial IO I2C Controller #3 + 7e7d Meteor Lake-P USB 3.2 Gen 2x1 xHCI Host Controller + 7e7e Meteor Lake-P USB Device Controller + 7ec0 Meteor Lake-P Thunderbolt 4 USB Controller + 7ec2 Meteor Lake-P Thunderbolt 4 NHI #0 + 7ec3 Meteor Lake-P Thunderbolt 4 NHI #1 + 7ec4 Meteor Lake-P Thunderbolt 4 PCI Express Root Port #0 + 7ec5 Meteor Lake-P Thunderbolt 4 PCI Express Root Port #1 + 7ec6 Meteor Lake-P Thunderbolt 4 PCI Express Root Port #2 + 7ec7 Meteor Lake-P Thunderbolt 4 PCI Express Root Port #3 + 8002 Trusted Execution Technology Registers + 8003 Trusted Execution Technology Registers + 8100 US15W/US15X SCH [Poulsbo] Host Bridge + 8101 US15L/UL11L SCH [Poulsbo] Host Bridge + 8108 US15W/US15X SCH [Poulsbo] Graphics Controller + 8109 US15L/UL11L SCH [Poulsbo] Graphics Controller + 8110 US15W/US15X/US15L/UL11L SCH [Poulsbo] PCI Express Port 1 + 8112 US15W/US15X/US15L/UL11L SCH [Poulsbo] PCI Express Port 2 + 8114 US15W/US15X/US15L/UL11L SCH [Poulsbo] USB UHCI Controller #1 + 8115 US15W/US15X/US15L/UL11L SCH [Poulsbo] USB UHCI Controller #2 + 8116 US15W/US15X/US15L/UL11L SCH [Poulsbo] USB UHCI Controller #3 + 8117 US15W/US15X/US15L/UL11L SCH [Poulsbo] USB EHCI Controller + 8118 US15W/US15X/US15L/UL11L SCH [Poulsbo] USB Client Controller + 8119 US15W/US15X/US15L/UL11L SCH [Poulsbo] LPC Bridge + 811a US15W/US15X/US15L/UL11L SCH [Poulsbo] IDE Controller + 811b US15W/US15X/US15L/UL11L SCH [Poulsbo] HD Audio Controller + 811c US15W/US15X/US15L/UL11L SCH [Poulsbo] SDIO/MMC Controller #1 + 811d US15W/US15X/US15L/UL11L SCH [Poulsbo] SDIO/MMC Controller #2 + 811e US15W/US15X/US15L/UL11L SCH [Poulsbo] SDIO/MMC Controller #3 + 8180 Atom Processor E6xx PCI Express Port 3 + 8181 Atom Processor E6xx PCI Express Port 4 + 8182 Atom Processor E6xx Integrated Graphics Controller + 8183 Atom Processor E6xx Configuration Unit + 8184 Atom Processor E6xx PCI Express Port 1 + 8185 Atom Processor E6xx PCI Express Port 2 + 8186 Atom Processor E6xx LPC Bridge + 84c4 450KX/GX [Orion] - 82454KX/GX PCI bridge + 84c5 450KX/GX [Orion] - 82453KX/GX Memory controller + 84ca 450NX - 82451NX Memory & I/O Controller + 84cb 450NX - 82454NX/84460GX PCI Expander Bridge + 84e0 460GX - 84460GX System Address Controller (SAC) + 84e1 460GX - 84460GX System Data Controller (SDC) + 84e2 460GX - 84460GX AGP Bridge (GXB function 2) + 84e3 460GX - 84460GX Memory Address Controller (MAC) + 84e4 460GX - 84460GX Memory Data Controller (MDC) + 84e6 460GX - 82466GX Wide and fast PCI eXpander Bridge (WXB) + 84ea 460GX - 84460GX AGP Bridge (GXB function 1) + 8500 IXP4XX Network Processor (IXP420/421/422/425/IXC1100) + 1993 0ded mGuard-PCI AV#2 + 1993 0dee mGuard-PCI AV#1 + 1993 0def mGuard-PCI AV#0 + 8603 Ice Lake-LP Dynamic Tuning Processor Participant + 87c0 UHD Graphics 617 + 87ca UHD Graphics 617 + 8800 Platform Controller Hub EG20T PCI Express Port + 8801 Platform Controller Hub EG20T Packet Hub + 8802 Platform Controller Hub EG20T Gigabit Ethernet Controller + 8803 Platform Controller Hub EG20T General Purpose IO Controller + 8804 Platform Controller Hub EG20T USB OHCI Controller #4 + 8805 Platform Controller Hub EG20T USB OHCI Controller #5 + 8806 Platform Controller Hub EG20T USB OHCI Controller #6 + 8807 Platform Controller Hub EG20T USB2 EHCI Controller #2 + 8808 Platform Controller Hub EG20T USB Client Controller + 8809 Platform Controller Hub EG20T SDIO Controller #1 + 880a Platform Controller Hub EG20T SDIO Controller #2 + 880b Platform Controller Hub EG20T SATA AHCI Controller + 880c Platform Controller Hub EG20T USB OHCI Controller #1 + 880d Platform Controller Hub EG20T USB OHCI Controller #2 + 880e Platform Controller Hub EG20T USB OHCI Controller #3 + 880f Platform Controller Hub EG20T USB2 EHCI Controller #1 + 8810 Platform Controller Hub EG20T DMA Controller #1 + 8811 Platform Controller Hub EG20T UART Controller 0 + 8812 Platform Controller Hub EG20T UART Controller 1 + 8813 Platform Controller Hub EG20T UART Controller 2 + 8814 Platform Controller Hub EG20T UART Controller 3 + 8815 Platform Controller Hub EG20T DMA Controller #2 + 8816 Platform Controller Hub EG20T Serial Peripheral Interface Bus + 8817 Platform Controller Hub EG20T I2C Controller + 8818 Platform Controller Hub EG20T Controller Area Network (CAN) Controller + 8819 Platform Controller Hub EG20T IEEE 1588 Hardware Assist + 8a03 Processor Power and Thermal Controller + 8a0d Ice Lake Thunderbolt 3 NHI #1 + 8a11 GNA Scoring Accelerator Module + 8a12 Ice Lake-LP Processor Host Bridge/DRAM Registers + 8a13 Ice Lake Thunderbolt 3 USB Controller + 8a14 Ice Lake Processor Host Bridge/DRAM Registers + 8a17 Ice Lake Thunderbolt 3 NHI #0 + 8a19 Image Signal Processor + 8a1d Ice Lake Thunderbolt 3 PCI Express Root Port #0 + 8a1f Ice Lake Thunderbolt 3 PCI Express Root Port #1 + 8a21 Ice Lake Thunderbolt 3 PCI Express Root Port #2 + 8a23 Ice Lake Thunderbolt 3 PCI Express Root Port #3 + 8a51 Iris Plus Graphics G7 (Ice Lake) + 8a52 Iris Plus Graphics G7 + 8a53 Iris Plus Graphics G7 + 8a56 Iris Plus Graphics G1 (Ice Lake) + 8a58 Ice Lake-Y GT1 [UHD Graphics G1] + 8a5a Iris Plus Graphics G4 (Ice Lake) + 8a5c Iris Plus Graphics G4 (Ice Lake) + 8c00 8 Series/C220 Series Chipset Family 4-port SATA Controller 1 [IDE mode] + 8c01 8 Series Chipset Family 4-port SATA Controller 1 [IDE mode] - Mobile + 8c02 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] + 1028 05d7 Alienware X51 R2 + 103c 1998 EliteDesk 800 G1 + 17aa 3098 ThinkCentre E73 + 17aa 309f ThinkCentre M83 + 8c03 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] + 103c 1909 ZBook 15 + 17aa 220e ThinkPad T440p + 8c04 8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] + 8c05 8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] + 8c06 8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] + 8c07 8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] + 8c08 8 Series/C220 Series Chipset Family 2-port SATA Controller 2 [IDE mode] + 8c09 8 Series/C220 Series Chipset Family 2-port SATA Controller 2 [IDE mode] + 8c0e 8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] + 8c0f 8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] + 8c10 8 Series/C220 Series Chipset Family PCI Express Root Port #1 + 103c 1998 EliteDesk 800 G1 + 1043 8534 ASUS H81I-PLUS + 17aa 220e ThinkPad T440p + 17aa 3098 ThinkCentre E73 + 8c11 8 Series/C220 Series Chipset Family PCI Express Root Port #1 + 8c12 8 Series/C220 Series Chipset Family PCI Express Root Port #2 + 103c 1998 EliteDesk 800 G1 + 17aa 220e ThinkPad T440p + 8c13 8 Series/C220 Series Chipset Family PCI Express Root Port #2 + 8c14 8 Series/C220 Series Chipset Family PCI Express Root Port #3 + 8c15 8 Series/C220 Series Chipset Family PCI Express Root Port #3 + 8c16 8 Series/C220 Series Chipset Family PCI Express Root Port #4 + 8c17 8 Series/C220 Series Chipset Family PCI Express Root Port #4 + 8c18 8 Series/C220 Series Chipset Family PCI Express Root Port #5 + 8c19 8 Series/C220 Series Chipset Family PCI Express Root Port #5 + 8c1a 8 Series/C220 Series Chipset Family PCI Express Root Port #6 + 17aa 3098 ThinkCentre E73 + 8c1b 8 Series/C220 Series Chipset Family PCI Express Root Port #6 + 8c1c 8 Series/C220 Series Chipset Family PCI Express Root Port #7 + 8c1d 8 Series/C220 Series Chipset Family PCI Express Root Port #7 + 8c1e 8 Series/C220 Series Chipset Family PCI Express Root Port #8 + 8c1f 8 Series/C220 Series Chipset Family PCI Express Root Port #8 + 8c20 8 Series/C220 Series Chipset High Definition Audio Controller + 1028 05d7 Alienware X51 R2 + 103c 1909 ZBook 15 + 103c 1998 EliteDesk 800 G1 + 17aa 220e ThinkPad T440p + 17aa 309f ThinkCentre M83 + 8c21 8 Series/C220 Series Chipset High Definition Audio Controller + 8c22 8 Series/C220 Series Chipset Family SMBus Controller + 1028 05d7 Alienware X51 R2 + 103c 1909 ZBook 15 + 103c 1998 EliteDesk 800 G1 + 17aa 220e ThinkPad T440p + 17aa 3098 ThinkCentre E73 + 17aa 309f ThinkCentre M83 + 8c23 8 Series Chipset Family CHAP Counters + 8c24 8 Series Chipset Family Thermal Management Controller + 8c26 8 Series/C220 Series Chipset Family USB EHCI #1 + 1028 05d7 Alienware X51 R2 + 103c 1909 ZBook 15 + 103c 1998 EliteDesk 800 G1 + 17aa 220e ThinkPad T440p + 17aa 2210 ThinkPad T540p + 17aa 3098 ThinkCentre E73 + 17aa 309f ThinkCentre M83 + 2210 17aa ThinkPad T540p + 8c2d 8 Series/C220 Series Chipset Family USB EHCI #2 + 1028 05d7 Alienware X51 R2 + 103c 1909 ZBook 15 + 103c 1998 EliteDesk 800 G1 + 17aa 220e ThinkPad T440p + 17aa 3098 ThinkCentre E73 + 17aa 309f ThinkCentre M83 + 8c31 8 Series/C220 Series Chipset Family USB xHCI + 1028 05d7 Alienware X51 R2 + 103c 1909 ZBook 15 + 103c 1998 EliteDesk 800 G1 + 17aa 220e ThinkPad T440p + 17aa 3098 ThinkCentre E73 + 17aa 309f ThinkCentre M83 + 8c33 8 Series/C220 Series Chipset Family LAN Controller + 8c34 8 Series/C220 Series Chipset Family NAND Controller + 8c3a 8 Series/C220 Series Chipset Family MEI Controller #1 + 1028 05d7 Alienware X51 R2 + 103c 1909 ZBook 15 + 103c 1998 EliteDesk 800 G1 + 17aa 220e ThinkPad T440p + 17aa 3098 ThinkCentre E73 + 17aa 309f ThinkCentre M83 + 8c3b 8 Series/C220 Series Chipset Family MEI Controller #2 + 8c3c 8 Series/C220 Series Chipset Family IDE-r Controller + 8c3d 8 Series/C220 Series Chipset Family KT Controller + 103c 1998 EliteDesk 800 G1 + 8c40 8 Series/C220 Series Chipset Family LPC Controller + 8c41 8 Series Chipset Family Mobile Super SKU LPC Controller + 8c42 8 Series/C220 Series Chipset Family Desktop Super SKU LPC Controller + 8c43 8 Series/C220 Series Chipset Family LPC Controller + 8c44 Z87 Express LPC Controller + 8c45 8 Series/C220 Series Chipset Family LPC Controller + 8c46 Z85 Express LPC Controller + 8c47 8 Series/C220 Series Chipset Family LPC Controller + 8c48 8 Series/C220 Series Chipset Family LPC Controller + 8c49 HM86 Express LPC Controller + 8c4a H87 Express LPC Controller + 1028 05d7 Alienware X51 R2 + 8c4b HM87 Express LPC Controller + 8c4c Q85 Express LPC Controller + 17aa 309f ThinkCentre M83 + 8c4d 8 Series/C220 Series Chipset Family LPC Controller + 8c4e Q87 Express LPC Controller + 103c 1998 EliteDesk 800 G1 + 8c4f QM87 Express LPC Controller + 103c 1909 ZBook 15 + 17aa 220e ThinkPad T440p + 8c50 B85 Express LPC Controller + 8c51 8 Series/C220 Series Chipset Family LPC Controller + 8c52 C222 Series Chipset Family Server Essential SKU LPC Controller + 8c53 8 Series/C220 Series Chipset Family LPC Controller + 8c54 C224 Series Chipset Family Server Standard SKU LPC Controller + 8c55 8 Series/C220 Series Chipset Family LPC Controller + 8c56 C226 Series Chipset Family Server Advanced SKU LPC Controller + 8c57 8 Series/C220 Series Chipset Family LPC Controller + 8c58 8 Series/C220 Series Chipset Family WS SKU LPC Controller + 8c59 8 Series/C220 Series Chipset Family LPC Controller + 8c5a 8 Series/C220 Series Chipset Family LPC Controller + 8c5b 8 Series/C220 Series Chipset Family LPC Controller + 8c5c H81 Express LPC Controller + 17aa 3098 ThinkCentre E73 + 8c5d 8 Series/C220 Series Chipset Family LPC Controller + 8c5e 8 Series/C220 Series Chipset Family LPC Controller + 8c5f 8 Series/C220 Series Chipset Family LPC Controller + 8c80 9 Series Chipset Family SATA Controller [IDE Mode] + 8c81 9 Series Chipset Family SATA Controller [IDE Mode] + 8c82 9 Series Chipset Family SATA Controller [AHCI Mode] + 8c83 9 Series Chipset Family SATA Controller [AHCI Mode] + 8c84 9 Series Chipset Family SATA Controller [RAID Mode] + 8c85 9 Series Chipset Family SATA Controller [RAID Mode] + 8c86 9 Series Chipset Family SATA Controller [RAID Mode] + 8c87 9 Series Chipset Family SATA Controller [RAID Mode] + 8c88 9 Series Chipset Family SATA Controller [IDE Mode] + 8c89 9 Series Chipset Family SATA Controller [IDE Mode] + 8c8e 9 Series Chipset Family SATA Controller [RAID Mode] + 8c8f 9 Series Chipset Family SATA Controller [RAID Mode] + 8c90 9 Series Chipset Family PCI Express Root Port 1 + 8c92 9 Series Chipset Family PCI Express Root Port 2 + 8c94 9 Series Chipset Family PCI Express Root Port 3 + 8c96 9 Series Chipset Family PCI Express Root Port 4 + 8c98 9 Series Chipset Family PCI Express Root Port 5 + 8c9a 9 Series Chipset Family PCI Express Root Port 6 + 8c9c 9 Series Chipset Family PCI Express Root Port 7 + 8c9e 9 Series Chipset Family PCI Express Root Port 8 + 8ca0 9 Series Chipset Family HD Audio Controller + 8ca2 9 Series Chipset Family SMBus Controller + 8ca4 9 Series Chipset Family Thermal Controller + 8ca6 9 Series Chipset Family USB EHCI Controller #1 + 8cad 9 Series Chipset Family USB EHCI Controller #2 + 8cb1 9 Series Chipset Family USB xHCI Controller + 8cb3 9 Series Chipset Family LAN Controller + 8cba 9 Series Chipset Family ME Interface #1 + 8cbb 9 Series Chipset Family ME Interface #2 + 8cbc 9 Series Chipset Family IDE-R Controller + 8cbd 9 Series Chipset Family KT Controller + 8cc1 9 Series Chipset Family LPC Controller + 8cc2 9 Series Chipset Family LPC Controller + 8cc3 HM97 Chipset LPC Controller + 8cc4 Z97 Chipset LPC Controller + 8cc5 QM97 Chipset LPC Controller + 8cc6 H97 Chipset LPC Controller + 8d00 C610/X99 series chipset 4-port SATA Controller [IDE mode] + 8d02 C610/X99 series chipset 6-Port SATA Controller [AHCI mode] + 8d04 C610/X99 series chipset SATA Controller [RAID mode] + 8d06 C610/X99 series chipset SATA Controller [RAID mode] + 17aa 1031 ThinkServer RAID 110i + 8d08 C610/X99 series chipset 2-port SATA Controller [IDE mode] + 8d0e C610/X99 series chipset SATA Controller [RAID mode] + 8d10 C610/X99 series chipset PCI Express Root Port #1 + 8d11 C610/X99 series chipset PCI Express Root Port #1 + 8d12 C610/X99 series chipset PCI Express Root Port #2 + 8d13 C610/X99 series chipset PCI Express Root Port #2 + 8d14 C610/X99 series chipset PCI Express Root Port #3 + 8d15 C610/X99 series chipset PCI Express Root Port #3 + 8d16 C610/X99 series chipset PCI Express Root Port #4 + 8d17 C610/X99 series chipset PCI Express Root Port #4 + 8d18 C610/X99 series chipset PCI Express Root Port #5 + 8d19 C610/X99 series chipset PCI Express Root Port #5 + 8d1a C610/X99 series chipset PCI Express Root Port #6 + 8d1b C610/X99 series chipset PCI Express Root Port #6 + 8d1c C610/X99 series chipset PCI Express Root Port #7 + 8d1d C610/X99 series chipset PCI Express Root Port #7 + 8d1e C610/X99 series chipset PCI Express Root Port #8 + 8d1f C610/X99 series chipset PCI Express Root Port #8 + 8d20 C610/X99 series chipset HD Audio Controller + 8d21 C610/X99 series chipset HD Audio Controller + 8d22 C610/X99 series chipset SMBus Controller + 15d9 0832 X10SRL-F + 8d24 C610/X99 series chipset Thermal Subsystem + 8d26 C610/X99 series chipset USB Enhanced Host Controller #1 + 15d9 0832 X10SRL-F + 8d2d C610/X99 series chipset USB Enhanced Host Controller #2 + 15d9 0832 X10SRL-F + 8d31 C610/X99 series chipset USB xHCI Host Controller + 15d9 0832 X10SRL-F + 8d33 C610/X99 series chipset LAN Controller + 8d34 C610/X99 series chipset NAND Controller + 8d3a C610/X99 series chipset MEI Controller #1 + 15d9 0832 X10SRL-F + 8d3b C610/X99 series chipset MEI Controller #2 + 15d9 0832 X10SRL-F + 8d3c C610/X99 series chipset IDE-r Controller + 8d3d C610/X99 series chipset KT Controller + 8d40 C610/X99 series chipset LPC Controller + 8d41 C610/X99 series chipset LPC Controller + 8d42 C610/X99 series chipset LPC Controller + 8d43 C610/X99 series chipset LPC Controller + 8d44 C610/X99 series chipset LPC Controller + 15d9 0832 X10SRL-F + 8d45 C610/X99 series chipset LPC Controller + 8d46 C610/X99 series chipset LPC Controller + 8d47 C610/X99 series chipset LPC Controller + 8d48 C610/X99 series chipset LPC Controller + 8d49 C610/X99 series chipset LPC Controller + 8d4a C610/X99 series chipset LPC Controller + 8d4b C610/X99 series chipset LPC Controller + 8d4c C610/X99 series chipset LPC Controller + 8d4d C610/X99 series chipset LPC Controller + 8d4e C610/X99 series chipset LPC Controller + 8d4f C610/X99 series chipset LPC Controller + 8d60 C610/X99 series chipset sSATA Controller [IDE mode] + 8d62 C610/X99 series chipset sSATA Controller [AHCI mode] + 8d64 C610/X99 series chipset sSATA Controller [RAID mode] + 8d66 C610/X99 series chipset sSATA Controller [RAID mode] + 8d68 C610/X99 series chipset sSATA Controller [IDE mode] + 8d6e C610/X99 series chipset sSATA Controller [RAID mode] + 8d7c C610/X99 series chipset SPSR + 15d9 0832 X10SRL-F + 8d7d C610/X99 series chipset MS SMBus 0 + 8d7e C610/X99 series chipset MS SMBus 1 + 8d7f C610/X99 series chipset MS SMBus 2 + 9000 IXP2000 Family Network Processor + 9001 IXP2400 Network Processor + 9002 IXP2300 Network Processor + 9004 IXP2800 Network Processor + 9621 Integrated RAID + 9622 Integrated RAID + 9641 Integrated RAID + 96a1 Integrated RAID + 9840 Lakefield GT2 [UHD Graphics] + 9841 Lakefield GT1.5 [UHD Graphics] + 9a01 11th Gen Core Processor PCIe Controller #1 + 9a03 TigerLake-LP Dynamic Tuning Processor Participant + 9a09 11th Gen Core Processor PCIe Controller + 9a0b Volume Management Device NVMe RAID Controller + 9a0d Tigerlake Telemetry Aggregator Driver + 9a0f 11th Gen Core Processor PCIe Controller #0 + 9a11 GNA Scoring Accelerator module + 9a13 Tiger Lake-LP Thunderbolt 4 USB Controller + 9a14 11th Gen Core Processor Host Bridge/DRAM Registers + 9a17 Tiger Lake-H Thunderbolt 4 USB Controller + 9a1b Tiger Lake-LP Thunderbolt 4 NHI #0 + 9a1d Tiger Lake-LP Thunderbolt 4 NHI #1 + 9a1f Tiger Lake-H Thunderbolt 4 NHI #0 + 9a21 Tiger Lake-H Thunderbolt 4 NHI #1 + 9a23 Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #0 + 9a25 Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #1 + 9a26 11th Gen Core Processor Host Bridge/DRAM Registers + 9a27 Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #2 + 9a29 Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #3 + 9a2b Tiger Lake-H Thunderbolt 4 PCI Express Root Port #0 + 9a2d Tiger Lake-H Thunderbolt 4 PCI Express Root Port #1 + 9a2f Tiger Lake-H Thunderbolt 4 PCI Express Root Port #2 + 9a31 Tiger Lake-H Thunderbolt 4 PCI Express Root Port #3 + 9a33 Tiger Lake Trace Hub + 9a36 11th Gen Core Processor Host Bridge/DRAM Registers + 9a40 Tiger Lake-UP4 GT2 [Iris Xe Graphics] + 9a49 TigerLake-LP GT2 [Iris Xe Graphics] + 9a60 TigerLake-H GT1 [UHD Graphics] + 9a68 TigerLake-H GT1 [UHD Graphics] + 9a70 Tiger Lake-H GT1 [UHD Graphics] + 9a78 Tiger Lake-LP GT2 [UHD Graphics G4] + 9b21 Comet Lake-U GT2 [UHD Graphics 620] + 9b33 Comet Lake-S 6c Host Bridge/DRAM Controller + 9b41 CometLake-U GT2 [UHD Graphics] + 1028 09bd Latitude 7310 + 1028 09be Latitude 7410 + 9b43 10th Gen Core Processor Host Bridge/DRAM Registers + 9b44 10th Gen Core Processor Host Bridge/DRAM Registers + 9b51 10th Gen Core Processor Host Bridge/DRAM Registers + 9b53 Comet Lake-S 6c Host Bridge/DRAM Controller + 9b54 10th Gen Core Processor Host Bridge/DRAM Registers + 9b61 Comet Lake-U v1 4c Host Bridge/DRAM Controller + 1028 09be Latitude 7410 + 9b63 10th Gen Core Processor Host Bridge/DRAM Registers + 9b64 10th Gen Core Processor Host Bridge/DRAM Registers + 9ba4 Comet Lake-H GT1 [UHD Graphics 610] + 9ba8 CometLake-S GT1 [UHD Graphics 610] + 9baa Comet Lake UHD Graphics + 9bac Comet Lake UHD Graphics + 9bc4 CometLake-H GT2 [UHD Graphics] + 9bc5 CometLake-S GT2 [UHD Graphics 630] + 9bc6 Comet Lake-S GT2 [UHD Graphics P630] + 9bc8 CometLake-S GT2 [UHD Graphics 630] + 9bca Comet Lake UHD Graphics + 9bcc Comet Lake UHD Graphics + 9be6 Comet Lake-S GT2 [UHD Graphics P630] + 9bf6 Coffee Lake-S GT2 [UHD Graphics P630] + 9c00 8 Series SATA Controller 1 [IDE mode] + 9c01 8 Series SATA Controller 1 [IDE mode] + 9c02 8 Series SATA Controller 1 [AHCI mode] + 9c03 8 Series SATA Controller 1 [AHCI mode] + 17aa 2214 ThinkPad X240 + 9c04 8 Series SATA Controller 1 [RAID mode] + 9c05 8 Series SATA Controller 1 [RAID mode] + 9c06 8 Series SATA Controller 1 [RAID mode] + 9c07 8 Series SATA Controller 1 [RAID mode] + 9c08 8 Series SATA Controller 2 [IDE mode] + 9c09 8 Series SATA Controller 2 [IDE mode] + 9c0a 8 Series SATA Controller [Reserved] + 9c0b 8 Series SATA Controller [Reserved] + 9c0c 8 Series SATA Controller [Reserved] + 9c0d 8 Series SATA Controller [Reserved] + 9c0e 8 Series SATA Controller 1 [RAID mode] + 9c0f 8 Series SATA Controller 1 [RAID mode] + 9c10 8 Series PCI Express Root Port 1 + 9c11 8 Series PCI Express Root Port 1 + 9c12 8 Series PCI Express Root Port 2 + 9c13 8 Series PCI Express Root Port 2 + 9c14 8 Series PCI Express Root Port 3 + 9c15 8 Series PCI Express Root Port 3 + 9c16 8 Series PCI Express Root Port 4 + 9c17 8 Series PCI Express Root Port 4 + 9c18 8 Series PCI Express Root Port 5 + 9c19 8 Series PCI Express Root Port 5 + 9c1a 8 Series PCI Express Root Port 6 + 9c1b 8 Series PCI Express Root Port 6 + 9c1c 8 Series PCI Express Root Port 7 + 9c1d 8 Series PCI Express Root Port 7 + 9c1e 8 Series PCI Express Root Port 8 + 9c1f 8 Series PCI Express Root Port 8 + 9c20 8 Series HD Audio Controller + 17aa 2214 ThinkPad X240 + 9c21 8 Series HD Audio Controller + 9c22 8 Series SMBus Controller + 17aa 2214 ThinkPad X240 + 9c23 8 Series CHAP Counters + 9c24 8 Series Thermal + 9c26 8 Series USB EHCI #1 + 17aa 220c T440s + 17aa 2214 ThinkPad X240 + 9c2d 8 Series USB EHCI #2 + 9c31 8 Series USB xHCI HC + 17aa 2214 ThinkPad X240 + 8086 7270 Apple MacBookAir6,2 / MacBookPro11,1 + 9c35 8 Series SDIO Controller + 9c36 8 Series Audio DSP Controller + 9c3a 8 Series HECI #0 + 17aa 2214 ThinkPad X240 + 9c3b 8 Series HECI #1 + 9c3c 8 Series HECI IDER + 9c3d 8 Series HECI KT + 9c40 8 Series LPC Controller + 9c41 8 Series LPC Controller + 9c42 8 Series LPC Controller + 9c43 8 Series LPC Controller + 17aa 2214 ThinkPad X240 + 9c44 8 Series LPC Controller + 9c45 8 Series LPC Controller + 9c46 8 Series LPC Controller + 9c47 8 Series LPC Controller + 9c60 8 Series Low Power Sub-System DMA + 9c61 8 Series I2C Controller #0 + 9c62 8 Series I2C Controller #1 + 9c63 8 Series UART Controller #0 + 9c64 8 Series UART Controller #1 + 9c65 8 Series SPI Controller #0 + 9c66 8 Series SPI Controller #1 + 9c83 Wildcat Point-LP SATA Controller [AHCI Mode] + 9c85 Wildcat Point-LP SATA Controller [RAID Mode] + 9c87 Wildcat Point-LP SATA Controller [RAID Mode] + 9c8f Wildcat Point-LP SATA Controller [RAID Mode] + 9c90 Wildcat Point-LP PCI Express Root Port #1 + 9c92 Wildcat Point-LP PCI Express Root Port #2 + 9c94 Wildcat Point-LP PCI Express Root Port #3 + 9c96 Wildcat Point-LP PCI Express Root Port #4 + 9c98 Wildcat Point-LP PCI Express Root Port #5 + 9c9a Wildcat Point-LP PCI Express Root Port #6 + 9ca0 Wildcat Point-LP High Definition Audio Controller + 9ca2 Wildcat Point-LP SMBus Controller + 9ca4 Wildcat Point-LP Thermal Management Controller + 9ca6 Wildcat Point-LP USB EHCI Controller + 9cb1 Wildcat Point-LP USB xHCI Controller + 9cb5 Wildcat Point-LP Secure Digital IO Controller + 9cb6 Wildcat Point-LP Smart Sound Technology Controller + 9cba Wildcat Point-LP MEI Controller #1 + 9cbb Wildcat Point-LP MEI Controller #2 + 9cbc Wildcat Point-LP IDE-r Controller + 9cbd Wildcat Point-LP KT Controller + 9cc1 Wildcat Point-LP LPC Controller + 9cc2 Wildcat Point-LP LPC Controller + 9cc3 Wildcat Point-LP LPC Controller + 9cc5 Wildcat Point-LP LPC Controller + 9cc6 Wildcat Point-LP LPC Controller + 9cc7 Wildcat Point-LP LPC Controller + 9cc9 Wildcat Point-LP LPC Controller + 9ce0 Wildcat Point-LP Serial IO DMA Controller + 9ce1 Wildcat Point-LP Serial IO I2C Controller #0 + 9ce2 Wildcat Point-LP Serial IO I2C Controller #1 + 9ce3 Wildcat Point-LP Serial IO UART Controller #0 + 9ce4 Wildcat Point-LP Serial IO UART Controller #1 + 9ce5 Wildcat Point-LP Serial IO GSPI Controller #0 + 9ce6 Wildcat Point-LP Serial IO GSPI Controller #1 + 9d03 Sunrise Point-LP SATA Controller [AHCI mode] + 1025 115f Acer Aspire E5-575G + 1028 06dc Latitude E7470 + 1028 06e6 Latitude 11 5175 2-in-1 + 1028 06f3 Latitude 3570 + 103c 8079 EliteBook 840 G3 + 17aa 225d ThinkPad T480 + 17aa 382a B51-80 Laptop + 9d10 Sunrise Point-LP PCI Express Root Port #1 + 9d11 Sunrise Point-LP PCI Express Root Port #2 + 9d12 Sunrise Point-LP PCI Express Root Port #3 + 9d13 Sunrise Point-LP PCI Express Root Port #4 + 9d14 Sunrise Point-LP PCI Express Root Port #5 + 17aa 382a B51-80 Laptop + 9d15 Sunrise Point-LP PCI Express Root Port #6 + 17aa 382a B51-80 Laptop + 9d16 Sunrise Point-LP PCI Express Root Port #7 + 9d17 Sunrise Point-LP PCI Express Root Port #8 + 9d18 Sunrise Point-LP PCI Express Root Port #9 + 17aa 2247 ThinkPad T570 + 17aa 382a B51-80 Laptop + 9d19 Sunrise Point-LP PCI Express Root Port #10 + 9d1a Sunrise Point-LP PCI Express Root Port #11 + 9d21 Sunrise Point-LP PMC + 1025 115f Acer Aspire E5-575G + 1028 06d6 Latitude 7275 tablet + 1028 06dc Latitude E7470 + 1028 06e6 Latitude 11 5175 2-in-1 + 1028 06f3 Latitude 3570 + 103c 8079 EliteBook 840 G3 + 17aa 2247 ThinkPad T570 + 17aa 224f ThinkPad X1 Carbon 5th Gen + 17aa 225d ThinkPad T480 + 17aa 382a B51-80 Laptop + 9d23 Sunrise Point-LP SMBus + 1025 115f Acer Aspire E5-575G + 1028 06d6 Latitude 7275 tablet + 1028 06dc Latitude E7470 + 1028 06e6 Latitude 11 5175 2-in-1 + 1028 06f3 Latitude 3570 + 103c 8079 EliteBook 840 G3 + 17aa 2247 ThinkPad T570 + 17aa 224f ThinkPad X1 Carbon 5th Gen + 17aa 225d ThinkPad T480 + 17aa 382a B51-80 Laptop + 9d27 Sunrise Point-LP Serial IO UART Controller #0 + 9d28 Sunrise Point-LP Serial IO UART Controller #1 + 9d29 Sunrise Point-LP Serial IO SPI Controller #0 + 9d2a Sunrise Point-LP Serial IO SPI Controller #1 + 9d2d Sunrise Point-LP Secure Digital IO Controller + 9d2f Sunrise Point-LP USB 3.0 xHCI Controller + 1025 115f Acer Aspire E5-575G + 1028 06d6 Latitude 7275 tablet + 1028 06dc Latitude E7470 + 1028 06e6 Latitude 11 5175 2-in-1 + 1028 06f3 Latitude 3570 + 103c 8079 EliteBook 840 G3 + 17aa 2247 ThinkPad T570 + 17aa 225d ThinkPad T480 + 17aa 382a B51-80 Laptop + 9d31 Sunrise Point-LP Thermal subsystem + 1025 115f Acer Aspire E5-575G + 1028 06d6 Latitude 7275 tablet + 1028 06dc Latitude E7470 + 1028 06e6 Latitude 11 5175 2-in-1 + 1028 06f3 Latitude 3570 + 103c 8079 EliteBook 840 G3 + 17aa 2247 ThinkPad T570 + 17aa 224f ThinkPad X1 Carbon 5th Gen + 17aa 225d ThinkPad T480 + 17aa 382a B51-80 Laptop + 9d32 CSI-2 Host Controller + 1028 06d6 Latitude 7275 tablet + 1028 06e6 Latitude 11 5175 2-in-1 + 9d35 Sunrise Point-LP Integrated Sensor Hub + 1028 06d6 Latitude 7275 tablet + 1028 06e6 Latitude 11 5175 2-in-1 + 9d3a Sunrise Point-LP CSME HECI #1 + 1025 115f Acer Aspire E5-575G + 1028 06d6 Latitude 7275 tablet + 1028 06dc Latitude E7470 + 1028 06e6 Latitude 11 5175 2-in-1 + 1028 06f3 Latitude 3570 + 103c 8079 EliteBook 840 G3 + 17aa 2247 ThinkPad T570 + 17aa 224f ThinkPad X1 Carbon 5th Gen + 17aa 225d ThinkPad T480 + 17aa 382a B51-80 Laptop + 9d3d Sunrise Point-LP Active Management Technology - SOL + 103c 8079 EliteBook 840 G3 + 17aa 2247 ThinkPad T570 + 9d3e iTouch Controller + 9d43 Sunrise Point-LP LPC Controller + 17aa 382a B51-80 Laptop + 9d46 LPC/eSPI Controller + 1028 06d6 Latitude 7275 tablet + 1028 06e6 Latitude 11 5175 2-in-1 + 9d48 Sunrise Point-LP LPC Controller + 1028 06dc Latitude E7470 + 1028 06f3 Latitude 3570 + 103c 8079 EliteBook 840 G3 + 17aa 2247 ThinkPad T570 + 9d4e Sunrise Point LPC/eSPI Controller + 17aa 225d ThinkPad T480 + 9d50 Sunrise Point LPC Controller + 9d56 Sunrise Point-LP LPC Controller + 9d58 Sunrise Point-LP LPC Controller + 1025 115f Acer Aspire E5-575G + 17aa 2247 ThinkPad T570 + 17aa 224f ThinkPad X1 Carbon 5th Gen + 9d60 Sunrise Point-LP Serial IO I2C Controller #0 + 1025 115f Acer Aspire E5-575G + 1028 06d6 Latitude 7275 tablet + 1028 06e6 Latitude 11 5175 2-in-1 + 1028 06f3 Latitude 3570 + 103c 8079 EliteBook 840 G3 + 17aa 225d ThinkPad T480 + 8086 9d60 100 Series PCH/Sunrise Point PCH I2C0 [Skylake/Kaby Lake LPSS I2C] + 9d61 Sunrise Point-LP Serial IO I2C Controller #1 + 1028 06d6 Latitude 7275 tablet + 1028 06e6 Latitude 11 5175 2-in-1 + 9d62 Sunrise Point-LP Serial IO I2C Controller #2 + 1028 06d6 Latitude 7275 tablet + 1028 06e6 Latitude 11 5175 2-in-1 + 9d63 Sunrise Point-LP Serial IO I2C Controller #3 + 9d64 Sunrise Point-LP Serial IO I2C Controller #4 + 9d65 Sunrise Point-LP Serial IO I2C Controller #5 + 9d66 Sunrise Point-LP Serial IO UART Controller #2 + 9d70 Sunrise Point-LP HD Audio + 1028 06d6 Latitude 7275 tablet + 1028 06dc Latitude E7470 + 1028 06e6 Latitude 11 5175 2-in-1 + 1028 06f3 Latitude 3570 + 103c 8079 EliteBook 840 G3 + 17aa 2247 ThinkPad T570 + 17aa 382a B51-80 Laptop + 9d71 Sunrise Point-LP HD Audio + 1025 1094 Acer Aspire E5-575G + 17aa 224f ThinkPad X1 Carbon 5th Gen + 17aa 225d ThinkPad T480 + 9d84 Cannon Point-LP LPC Controller + 1028 089e Inspiron 5482 + 9da3 Cannon Point-LP SMBus Controller + 9da4 Cannon Point-LP SPI Controller + 9da8 Cannon Point-LP Serial IO UART Controller #2 + 9daa Cannon Point-LP Serial IO SPI Controller + 9dab Cannon Point-LP Serial IO SPI Controller + 9db0 Cannon Point-LP PCI Express Root Port #9 + 9db1 Cannon Point-LP PCI Express Root Port #10 + 9db2 Cannon Point-LP PCI Express Root Port #1 + 9db4 Cannon Point-LP PCI Express Root Port #13 + 1028 089e Inspiron 5482 + 9db6 Cannon Point-LP PCI Express Root Port #15 + 9db8 Cannon Point-LP PCI Express Root Port #1 + 9dbc Cannon Point-LP PCI Express Root Port #5 + 9dbe Cannon Point-LP PCI Express Root Port #7 + 9dbf Cannon Point PCI Express Root Port #8 + 9dc4 Cannon Point-LP SD Host Controller + 9dc5 Cannon Point-LP Serial IO I2C Host Controller + 9dc8 Cannon Point-LP High Definition Audio Controller + 1028 089e Inspiron 5482 + 9dd3 Cannon Point-LP SATA Controller [AHCI Mode] + 9de0 Cannon Point-LP MEI Controller #1 + 9de3 Cannon Point-LP Keyboard and Text (KT) Redirection + 9de8 Cannon Point-LP Serial IO I2C Controller #0 + 1028 089e Inspiron 5482 + 9de9 Cannon Point-LP Serial IO I2C Controller #1 + 1028 089e Inspiron 5482 + 9ded Cannon Point-LP USB 3.1 xHCI Controller + 9def Cannon Point-LP Shared SRAM + 9df0 Cannon Point-LP CNVi [Wireless-AC] + 9df5 BayHubTech Integrated SD controller + 9df9 Cannon Point-LP Thermal Controller + 9dfc Cannon Point-LP Integrated Sensor Hub + a000 Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge + 1458 5000 GA-D525TUD + 8086 4f4d DeskTop Board D510MO + 8086 544b Desktop Board D425KT + a001 Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller + 1458 d000 GA-D525TUD + 8086 4f4d DeskTop Board D510MO + 8086 544b Desktop Board D425KT + a002 Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller + a003 Atom Processor D4xx/D5xx/N4xx/N5xx CHAPS counter + a010 Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge + 1043 83ac Eee PC 1015PX + 144d c072 Notebook N150P + a011 Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller + 1043 83ac Eee PC 1015PX + 144d c072 Notebook N150P + a012 Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller + 1043 83ac Eee PC 1015PX + 144d c072 Notebook N150P + a013 Atom Processor D4xx/D5xx/N4xx/N5xx CHAPS counter + a082 Tiger Lake-LP LPC Controller + a0a3 Tiger Lake-LP SMBus Controller + a0a4 Tiger Lake-LP SPI Controller + a0a6 Tiger Lake-LP Trace Hub + a0a8 Tiger Lake-LP Serial IO UART Controller #0 + a0a9 Tiger Lake-LP Serial IO UART Controller #1 + a0ab Tiger Lake-LP Serial IO SPI Controller #1 + a0b0 Tiger Lake-LP PCI Express Root Port #9 + a0b1 Tiger Lake-LP PCI Express Root Port #10 + a0b3 Tiger Lake-LP PCI Express Root Port #12 + a0bc Tiger Lake-LP PCI Express Root Port #5 + a0bd Tigerlake PCH-LP PCI Express Root Port #6 + a0be Tiger Lake-LP PCI Express Root Port #7 + a0bf Tiger Lake-LP PCI Express Root Port #8 + a0c5 Tiger Lake-LP Serial IO I2C Controller #4 + a0c6 Tiger Lake-LP Serial IO I2C Controller #5 + a0c8 Tiger Lake-LP Smart Sound Technology Audio Controller +# SATA controller on Intel Tiger Lake based mobile platforms in AHCI mode. Could be found on Panasonic Let's Note CF-SV2. + a0d3 Tiger Lake-LP SATA Controller + a0e0 Tiger Lake-LP Management Engine Interface + a0e3 Tiger Lake-LP Active Management Technology - SOL + a0e8 Tiger Lake-LP Serial IO I2C Controller #0 + a0e9 Tiger Lake-LP Serial IO I2C Controller #1 + a0ea Tiger Lake-LP Serial IO I2C Controller #2 + a0eb Tiger Lake-LP Serial IO I2C Controller #3 + a0ed Tiger Lake-LP USB 3.2 Gen 2x1 xHCI Host Controller + a0ef Tiger Lake-LP Shared SRAM + a0f0 Wi-Fi 6 AX201 + 8086 0244 Wi-Fi 6 AX101NGW + a0fc Tiger Lake-LP Integrated Sensor Hub + a102 Q170/Q150/B150/H170/H110/Z170/CM236 Chipset SATA Controller [AHCI Mode] + 1043 8694 H110I-PLUS Motherboard + 1462 7994 H110M ECO/GAMING + a103 HM170/QM170 Chipset SATA Controller [AHCI Mode] + 1028 06e4 XPS 15 9550 + 103c 825b OMEN-17-w001nv + a105 Sunrise Point-H SATA Controller [RAID mode] + a106 Q170/H170/Z170/CM236 Chipset SATA Controller [RAID Mode] + a107 HM170/QM170 Chipset SATA Controller [RAID Mode] + a10f Sunrise Point-H SATA Controller [RAID mode] + a110 100 Series/C230 Series Chipset Family PCI Express Root Port #1 + a111 100 Series/C230 Series Chipset Family PCI Express Root Port #2 + a112 100 Series/C230 Series Chipset Family PCI Express Root Port #3 + a113 100 Series/C230 Series Chipset Family PCI Express Root Port #4 + a114 100 Series/C230 Series Chipset Family PCI Express Root Port #5 + 1043 8694 H110I-PLUS Motherboard + a115 100 Series/C230 Series Chipset Family PCI Express Root Port #6 + a116 100 Series/C230 Series Chipset Family PCI Express Root Port #7 + a117 100 Series/C230 Series Chipset Family PCI Express Root Port #8 + a118 100 Series/C230 Series Chipset Family PCI Express Root Port #9 + 1043 8694 H110I-PLUS Motherboard + a119 100 Series/C230 Series Chipset Family PCI Express Root Port #10 + 1043 8694 H110I-PLUS Motherboard + a11a 100 Series/C230 Series Chipset Family PCI Express Root Port #11 + a11b 100 Series/C230 Series Chipset Family PCI Express Root Port #12 + a11c 100 Series/C230 Series Chipset Family PCI Express Root Port #13 + a11d 100 Series/C230 Series Chipset Family PCI Express Root Port #14 + a11e 100 Series/C230 Series Chipset Family PCI Express Root Port #15 + a11f 100 Series/C230 Series Chipset Family PCI Express Root Port #16 + a120 100 Series/C230 Series Chipset Family P2SB + a121 100 Series/C230 Series Chipset Family Power Management Controller + 1028 06e4 XPS 15 9550 + 103c 825b OMEN-17-w001nv + 1043 8694 H110I-PLUS Motherboard + 1462 7994 H110M ECO/GAMING + a122 Sunrise Point-H cAVS + a123 100 Series/C230 Series Chipset Family SMBus + 1028 06e4 XPS 15 9550 + 103c 825b OMEN-17-w001nv + 1043 8694 H110I-PLUS Motherboard + 1462 7994 H110M ECO/GAMING + a124 100 Series/C230 Series Chipset Family SPI Controller + a125 100 Series/C230 Series Chipset Family Gigabit Ethernet Controller + a126 100 Series/C230 Series Chipset Family Trace Hub + a127 100 Series/C230 Series Chipset Family Serial IO UART #0 + a128 100 Series/C230 Series Chipset Family Serial IO UART #1 + a129 100 Series/C230 Series Chipset Family Serial IO GSPI #0 + a12a 100 Series/C230 Series Chipset Family Serial IO GSPI #1 + a12f 100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller + 1028 06e4 XPS 15 9550 + 103c 825b OMEN-17-w001nv + 1043 8694 H110I-PLUS Motherboard + 1462 7994 H110M ECO/GAMING + a130 100 Series/C230 Series Chipset Family USB Device Controller (OTG) + a131 100 Series/C230 Series Chipset Family Thermal Subsystem + 1028 06e4 XPS 15 9550 + 103c 825b OMEN-17-w001nv + 1462 7994 H110M ECO/GAMING + a133 Sunrise Point-H Northpeak ACPI Function + a135 100 Series/C230 Series Chipset Family Integrated Sensor Hub + a13a 100 Series/C230 Series Chipset Family MEI Controller #1 + 1028 06e4 XPS 15 9550 + 103c 825b OMEN-17-w001nv + 1043 8694 H110I-PLUS Motherboard + 1462 7994 H110M ECO/GAMING + a13b 100 Series/C230 Series Chipset Family MEI Controller #2 + a13c 100 Series/C230 Series Chipset Family IDE Redirection + a13d 100 Series/C230 Series Chipset Family KT Redirection + a13e 100 Series/C230 Series Chipset Family MEI Controller #3 + a140 Sunrise Point-H LPC Controller + a141 Sunrise Point-H LPC Controller + a142 Sunrise Point-H LPC Controller + a143 H110 Chipset LPC/eSPI Controller + 1043 8694 H110I-PLUS Motherboard + 1462 7994 H110M ECO/GAMING + a144 H170 Chipset LPC/eSPI Controller + a145 Z170 Chipset LPC/eSPI Controller + a146 Q170 Chipset LPC/eSPI Controller + a147 Q150 Chipset LPC/eSPI Controller + a148 B150 Chipset LPC/eSPI Controller + a149 C236 Chipset LPC/eSPI Controller + a14a C232 Chipset LPC/eSPI Controller + a14b Sunrise Point-H LPC Controller + a14c Sunrise Point-H LPC Controller + a14d QM170 Chipset LPC/eSPI Controller + a14e HM170 Chipset LPC/eSPI Controller + 1028 06e4 XPS 15 9550 + 103c 825b OMEN-17-w001nv + a14f Sunrise Point-H LPC Controller + a150 CM236 Chipset LPC/eSPI Controller + a151 Sunrise Point-H LPC Controller + a152 HM175 Chipset LPC/eSPI Controller + a153 QM175 Chipset LPC/eSPI Controller + a154 CM238 Chipset LPC/eSPI Controller + a155 Sunrise Point-H LPC Controller + a156 Sunrise Point-H LPC Controller + a157 Sunrise Point-H LPC Controller + a158 Sunrise Point-H LPC Controller + a159 Sunrise Point-H LPC Controller + a15a Sunrise Point-H LPC Controller + a15b Sunrise Point-H LPC Controller + a15c Sunrise Point-H LPC Controller + a15d Sunrise Point-H LPC Controller + a15e Sunrise Point-H LPC Controller + a15f Sunrise Point-H LPC Controller + a160 100 Series/C230 Series Chipset Family Serial IO I2C Controller #0 + 1028 06e4 XPS 15 9550 + 103c 825b OMEN-17-w001nv + a161 100 Series/C230 Series Chipset Family Serial IO I2C Controller #1 + 1028 06e4 XPS 15 9550 + a162 100 Series/C230 Series Chipset Family Serial IO I2C Controller #2 + a163 100 Series/C230 Series Chipset Family Serial IO I2C Controller #3 + a166 100 Series/C230 Series Chipset Family Serial IO UART Controller #2 + a167 100 Series/C230 Series Chipset Family PCI Express Root Port #17 + a168 100 Series/C230 Series Chipset Family PCI Express Root Port #18 + a169 100 Series/C230 Series Chipset Family PCI Express Root Port #19 + a16a 100 Series/C230 Series Chipset Family PCI Express Root Port #20 + a170 100 Series/C230 Series Chipset Family HD Audio Controller + 1028 06e4 XPS 15 9550 + 103c 825b OMEN-17-w001nv + 1043 86c7 H110I-PLUS Motherboard + 1462 f994 H110M ECO/GAMING + a171 CM238 HD Audio Controller + a182 C620 Series Chipset Family SATA Controller [AHCI mode] + a186 C620 Series Chipset Family SATA Controller [RAID mode] + a190 C620 Series Chipset Family PCI Express Root Port #1 + a191 C620 Series Chipset Family PCI Express Root Port #2 + a192 C620 Series Chipset Family PCI Express Root Port #3 + a193 C620 Series Chipset Family PCI Express Root Port #4 + a194 C620 Series Chipset Family PCI Express Root Port #5 + a195 C620 Series Chipset Family PCI Express Root Port #6 + a196 C620 Series Chipset Family PCI Express Root Port #7 + a197 C620 Series Chipset Family PCI Express Root Port #8 + a198 C620 Series Chipset Family PCI Express Root Port #9 + a199 C620 Series Chipset Family PCI Express Root Port #10 + a19a C620 Series Chipset Family PCI Express Root Port #11 + a19b C620 Series Chipset Family PCI Express Root Port #12 + a19c C620 Series Chipset Family PCI Express Root Port #13 + a19d C620 Series Chipset Family PCI Express Root Port #14 + a19e C620 Series Chipset Family PCI Express Root Port #15 + a19f C620 Series Chipset Family PCI Express Root Port #16 + a1a0 C620 Series Chipset Family P2SB + a1a1 C620 Series Chipset Family Power Management Controller + 15d9 095d X11SPM-TF + a1a2 C620 Series Chipset Family cAVS + a1a3 C620 Series Chipset Family SMBus + 15d9 095d X11SPM-TF + a1a4 C620 Series Chipset Family SPI Controller + 15d9 095d X11SPM-TF + a1a6 C620 Series Chipset Family Trace Hub + a1af C620 Series Chipset Family USB 3.0 xHCI Controller + 15d9 095d X11SPM-TF + a1b1 C620 Series Chipset Family Thermal Subsystem + 15d9 095d X11SPM-TF + a1ba C620 Series Chipset Family MEI Controller #1 + 15d9 095d X11SPM-TF + a1bb C620 Series Chipset Family MEI Controller #2 + 15d9 095d X11SPM-TF + a1bc C620 Series Chipset Family IDE Redirection + a1bd C620 Series Chipset Family KT Redirection + a1be C620 Series Chipset Family MEI Controller #3 + 15d9 095d X11SPM-TF + a1c1 C621 Series Chipset LPC/eSPI Controller + a1c2 C622 Series Chipset LPC/eSPI Controller + 15d9 095d X11SPM-TF + a1c3 C624 Series Chipset LPC/eSPI Controller + a1c4 C625 Series Chipset LPC/eSPI Controller + a1c5 C626 Series Chipset LPC/eSPI Controller + a1c6 C627 Series Chipset LPC/eSPI Controller + a1c7 C628 Series Chipset LPC/eSPI Controller + a1d2 C620 Series Chipset Family SSATA Controller [AHCI mode] + a1d6 C620 Series Chipset Family SSATA Controller [RAID mode] + a1e7 C620 Series Chipset Family PCI Express Root Port #17 + a1e8 C620 Series Chipset Family PCI Express Root Port #18 + a1e9 C620 Series Chipset Family PCI Express Root Port #19 + a1ea C620 Series Chipset Family PCI Express Root Port #20 + a1ec C620 Series Chipset Family MROM 0 + a1ed C620 Series Chipset Family MROM 1 + a1f8 Lewisburg IE: HECI #1 + a1f9 Lewisburg IE: HECI #2 + a1fa Lewisburg IE: IDE-r + a1fb Lewisburg IE: KT Controller + a1fc Lewisburg IE: HECI #3 + a202 Lewisburg SATA Controller [AHCI mode] + a206 Lewisburg SATA Controller [RAID mode] + a223 Lewisburg SMBus + a224 Lewisburg SPI Controller + a242 Lewisburg LPC or eSPI Controller + a243 Lewisburg LPC or eSPI Controller + a252 Lewisburg SSATA Controller [AHCI mode] + a256 Lewisburg SSATA Controller [RAID mode] + a282 200 Series PCH SATA controller [AHCI mode] + 1462 7a72 H270 PC MATE + a286 200 Series PCH SATA controller [RAID mode] + a290 200 Series PCH PCI Express Root Port #1 + a291 200 Series PCH PCI Express Root Port #2 + a292 200 Series PCH PCI Express Root Port #3 + a293 200 Series PCH PCI Express Root Port #4 + a294 200 Series PCH PCI Express Root Port #5 + 1462 7a72 H270 PC MATE + a295 200 Series PCH PCI Express Root Port #6 + a296 200 Series PCH PCI Express Root Port #7 + 1462 7a72 H270 PC MATE + a297 200 Series PCH PCI Express Root Port #8 + a298 200 Series PCH PCI Express Root Port #9 + 1462 7a72 H270 PC MATE + a299 200 Series PCH PCI Express Root Port #10 + a29a 200 Series PCH PCI Express Root Port #11 + a29b 200 Series PCH PCI Express Root Port #12 + a29c 200 Series PCH PCI Express Root Port #13 + a29d 200 Series PCH PCI Express Root Port #14 + a29e 200 Series PCH PCI Express Root Port #15 + a29f 200 Series PCH PCI Express Root Port #16 + a2a0 200 Series/Z370 Chipset Family P2SB + a2a1 200 Series/Z370 Chipset Family Power Management Controller + 1462 7a72 H270 PC MATE + a2a3 200 Series/Z370 Chipset Family SMBus Controller + 1462 7a72 H270 PC MATE + a2a4 200 Series/Z370 Chipset Family SPI Controller + a2a5 200 Series/Z370 Chipset Family Gigabit Ethernet Controller + a2a6 200 Series/Z370 Chipset Family Trace Hub + a2a7 200 Series/Z370 Chipset Family Serial IO UART Controller #0 + a2a8 200 Series/Z370 Chipset Family Serial IO UART Controller #1 + a2a9 200 Series/Z370 Chipset Family Serial IO SPI Controller #0 + a2aa 200 Series/Z370 Chipset Family Serial IO SPI Controller #1 + a2af 200 Series/Z370 Chipset Family USB 3.0 xHCI Controller + 1462 7a72 H270 PC MATE + a2b1 200 Series PCH Thermal Subsystem + 1462 7a72 H270 PC MATE + a2ba 200 Series PCH CSME HECI #1 + 1462 7a72 H270 PC MATE + a2bb 200 Series PCH CSME HECI #2 +# AMT serial over LAN + a2bd 200 Series Chipset Family KT Redirection + a2c4 200 Series PCH LPC Controller (H270) + 1462 7a72 H270 PC MATE + a2c5 200 Series PCH LPC Controller (Z270) + a2c6 200 Series PCH LPC Controller (Q270) + a2c7 200 Series PCH LPC Controller (Q250) + a2c8 200 Series PCH LPC Controller (B250) + a2c9 Z370 Chipset LPC/eSPI Controller + a2d2 X299 Chipset LPC/eSPI Controller + a2d3 C422 Chipset LPC/eSPI Controller + a2e0 200 Series PCH Serial IO I2C Controller #0 + a2e1 200 Series PCH Serial IO I2C Controller #1 + a2e2 200 Series PCH Serial IO I2C Controller #2 + a2e3 200 Series PCH Serial IO I2C Controller #3 + a2e6 200 Series PCH Serial IO UART Controller #2 + a2e7 200 Series PCH PCI Express Root Port #17 + a2e8 200 Series PCH PCI Express Root Port #18 + a2e9 200 Series PCH PCI Express Root Port #19 + a2ea 200 Series PCH PCI Express Root Port #20 + a2eb 200 Series PCH PCI Express Root Port #21 + a2ec 200 Series PCH PCI Express Root Port #22 + a2ed 200 Series PCH PCI Express Root Port #23 + a2ee 200 Series PCH PCI Express Root Port #24 + a2f0 200 Series PCH HD Audio + 1462 7a72 H270 PC MATE + 1462 fa72 H270 PC MATE + a303 H310 Chipset LPC/eSPI Controller + a304 H370 Chipset LPC/eSPI Controller + 1028 0869 Vostro 3470 + a305 Z390 Chipset LPC/eSPI Controller + a306 Q370 Chipset LPC/eSPI Controller + a308 300 Series Chipset Family LPC Controller + a309 Cannon Point-LP LPC Controller + a30c QM370 Chipset LPC/eSPI Controller + a30d HM470 Chipset LPC/eSPI Controller + a30e Cannon Lake LPC Controller + a323 Cannon Lake PCH SMBus Controller + 1028 0869 Vostro 3470 + a324 Cannon Lake PCH SPI Controller + 1028 0869 Vostro 3470 + a328 Cannon Lake PCH Serial IO UART Host Controller + a32b Cannon Lake PCH SPI Host Controller + a32c Cannon Lake PCH PCI Express Root Port #21 + a32d Cannon Lake PCH PCI Express Root Port #22 + a32e Cannon Lake PCH PCI Express Root Port #23 + a32f Cannon Lake PCH PCI Express Root Port #24 + a330 Cannon Lake PCH PCI Express Root Port #9 + a331 Cannon Lake PCH PCI Express Root Port #10 + a332 Cannon Lake PCH PCI Express Root Port #11 + a333 Cannon Lake PCH PCI Express Root Port #12 + a334 Cannon Lake PCH PCI Express Root Port #13 + a335 Cannon Lake PCH PCI Express Root Port #14 + a336 Cannon Lake PCH PCI Express Root Port #15 + a337 Cannon Lake PCH PCI Express Root Port #16 + a338 Cannon Lake PCH PCI Express Root Port #1 + a339 Cannon Lake PCH PCI Express Root Port #2 + a33a Cannon Lake PCH PCI Express Root Port #3 + a33b Cannon Lake PCH PCI Express Root Port #4 + a33c Cannon Lake PCH PCI Express Root Port #5 + a33d Cannon Lake PCH PCI Express Root Port #6 + a33e Cannon Lake PCH PCI Express Root Port #7 + a33f Cannon Lake PCH PCI Express Root Port #8 + a340 Cannon Lake PCH PCI Express Root Port #17 + a341 Cannon Lake PCH PCI Express Root Port #18 + a342 Cannon Lake PCH PCI Express Root Port #19 + a343 Cannon Lake PCH PCI Express Root Port #20 + a348 Cannon Lake PCH cAVS + 1028 0869 Vostro 3470 + a352 Cannon Lake PCH SATA AHCI Controller + 1028 0869 Vostro 3470 + a353 Cannon Lake Mobile PCH SATA AHCI Controller + a360 Cannon Lake PCH HECI Controller + 1028 0869 Vostro 3470 + a363 Cannon Lake PCH Active Management Technology - SOL + a364 Cannon Lake PCH HECI Controller #2 + a368 Cannon Lake PCH Serial IO I2C Controller #0 + a369 Cannon Lake PCH Serial IO I2C Controller #1 + a36a Cannon Lake PCH Serial IO I2C Controller #2 + a36b Cannon Lake PCH Serial IO I2C Controller #3 + a36d Cannon Lake PCH USB 3.1 xHCI Host Controller + 1028 0869 Vostro 3470 + a36f Cannon Lake PCH Shared SRAM + a370 Cannon Lake PCH CNVi WiFi + 1a56 1552 Killer(R) Wireless-AC 1550i Wireless Network Adapter (9560NGW) + 8086 0034 Wireless-AC 9560 + a379 Cannon Lake PCH Thermal Controller + 1028 0869 Vostro 3470 + a382 400 Series Chipset Family SATA AHCI Controller + a394 Comet Lake PCI Express Root Port #05 + a397 Comet Lake PCI Express Root Port #08 + a398 Comet Lake PCI Express Root Port 9 + a39a Comet Lake PCI Express Root Port 11 + a3a1 Cannon Lake PCH Power Management Controller + a3a3 Comet Lake PCH-V SMBus Host Controller + a3af Comet Lake PCH-V USB Controller + a3b1 Comet Lake PCH-V Thermal Subsystem + a3ba Comet Lake PCH-V HECI Controller + a3c8 B460 Chipset LPC/eSPI Controller + a3da H410 Chipset LPC/eSPI Controller + a3eb Comet Lake PCI Express Root Port #21 + a3f0 Comet Lake PCH-V cAVS + a620 6400/6402 Advanced Memory Buffer (AMB) + a703 Raptor Lake-S Host Bridge/DRAM Controller + a706 Raptor Lake-P 6p+8e cores Host Bridge/DRAM Controller + 1028 0c06 Precision 3580 + a707 Raptor Lake-P/U 4p+8e cores Host Bridge/DRAM Controller + a708 Raptor Lake-P/U 2p+8e cores Host Bridge/DRAM Controller + a70d Raptor Lake PCI Express 5.0 Graphics Port (PEG010) + a71d Raptor Lake Dynamic Platform and Thermal Framework Processor Participant + 1028 0c06 Precision 3580 + a71e Raptor Lake-P Thunderbolt 4 USB Controller + 1028 0c06 Precision 3580 + a720 Raptor Lake-P [UHD Graphics] + a721 Raptor Lake-P [UHD Graphics] + a72f Raptor Lake-P Thunderbolt 4 PCI Express Root Port #2 + a73e Raptor Lake-P Thunderbolt 4 NHI #0 + 1028 0c06 Precision 3580 + a740 Raptor Lake-S 8+12 - Host Bridge/DRAM Controller + a74d Raptor Lake PCIe 4.0 Graphics Port + a74f GNA Scoring Accelerator module + 1028 0c06 Precision 3580 + a76d Raptor Lake-P Thunderbolt 4 NHI #1 + a76e Raptor Lake-P Thunderbolt 4 PCI Express Root Port #0 + a77d Raptor Lake Crashlog and Telemetry + 1028 0c06 Precision 3580 + a77f Volume Management Device NVMe RAID Controller Intel Corporation + a780 Raptor Lake-S GT1 [UHD Graphics 770] + a781 Raptor Lake-S UHD Graphics + a782 Raptor Lake-S UHD Graphics + a783 Raptor Lake-S UHD Graphics + a788 Raptor Lake-S UHD Graphics + a789 Raptor Lake-S UHD Graphics + a78a Raptor Lake-S UHD Graphics + a78b Raptor Lake-S UHD Graphics + a7a0 Raptor Lake-P [Iris Xe Graphics] + 1028 0c06 Precision 3580 + a7a1 Raptor Lake-P [Iris Xe Graphics] + a7a8 Raptor Lake-P [UHD Graphics] + a7a9 Raptor Lake-P [UHD Graphics] + a7aa Raptor Lake-P [Intel Graphics] + a7ab Raptor Lake-P [Intel Graphics] + a7ac Raptor Lake-U [Intel Graphics] + a7ad Raptor Lake-U [Intel Graphics] + a806 Lunar Lake-M LPC/eSPI Controller + a822 Lunar Lake-M SMbus Controller + a823 Lunar Lake-M SPI Controller + a824 Lunar Lake-M Trace Hub + a825 Lunar Lake-M Serial IO UART Controller #0 + a826 Lunar Lake-M Serial IO UART Controller #1 + a827 Lunar Lake-M Serial IO SPI Controller #0 + a828 Lunar Lake-M HD Audio Controller + a830 Lunar Lake-M Serial IO SPI Controller #1 + a831 Lunar Lake-M Thunderbolt 4 USB Controller + a833 Lunar Lake-M Thunderbolt 4 NHI #0 + a834 Lunar Lake-M Thunderbolt 4 NHI #1 + a838 Lunar Lake-M PCI Express Root Port #1 + a839 Lunar Lake-M PCI Express Root Port #2 + a83a Lunar Lake-M PCI Express Root Port #3 + a83b Lunar Lake-M PCI Express Root Port #4 + a83c Lunar Lake-M PCI Express Root Port #5 + a83d Lunar Lake-M PCI Express Root Port #6 + a845 Lunar Lake-M Integrated Sensor Hub + a847 Lunar Lake-M UFS Controller + a84e Lunar Lake-M Thunderbolt 4 PCI Express Root Port #0 + a84f Lunar Lake-M Thunderbolt 4 PCI Express Root Port #1 + a860 Lunar Lake-M Thunderbolt 4 PCI Express Root Port #2 + a878 Lunar Lake-M Serial IO I2C Controller #0 + a879 Lunar Lake-M Serial IO I2C Controller #1 + a87a Lunar Lake-M Serial IO I2C Controller #2 + a87b Lunar Lake-M Serial IO I2C Controller #3 + a87d Lunar Lake-M USB 3.2 Gen 2x1 xHCI Host Controller + abc0 Omni-Path Fabric Switch Silicon 100 Series + ad0b Volume Management Device NVMe RAID Controller Intel Corporation + ad1d Arrow Lake NPU + b03e Panther Lake NPU + b152 21152 PCI-to-PCI Bridge + 8086 b152 21152 PCI-to-PCI Bridge +# observed, and documented in Intel revision note; new mask of 1011:0026 + b154 21154 PCI-to-PCI Bridge + b555 21555 Non transparent PCI-to-PCI Bridge + 12c7 5005 SS7HD PCI Adaptor Card + 12c7 5006 SS7HDC cPCI Adaptor Card + 12d9 000a PCI VoIP Gateway + 4c53 1050 CT7 mainboard + 4c53 1051 CE7 mainboard + e4bf 1000 CC8-1-BLUES + d130 Core Processor DMI + 15d9 0605 X8SIL + d131 Core Processor DMI + 1028 02da OptiPlex 980 + 15d9 060d C7SIM-Q Motherboard + d132 Core Processor DMI + 1028 040b Latitude E6510 + d133 Core Processor DMI + d134 Core Processor DMI + d135 Core Processor DMI + d136 Core Processor DMI + d137 Core Processor DMI + d138 Core Processor PCI Express Root Port 1 + 1028 02da OptiPlex 980 + 1028 040b Latitude E6510 + 15d9 060d C7SIM-Q Motherboard + d139 Core Processor PCI Express Root Port 2 + d13a Core Processor PCI Express Root Port 3 + d13b Core Processor PCI Express Root Port 4 + d150 Core Processor QPI Link + d151 Core Processor QPI Routing and Protocol Registers + d155 Core Processor System Management Registers + d156 Core Processor Semaphore and Scratchpad Registers + d157 Core Processor System Control and Status Registers + d158 Core Processor Miscellaneous Registers + e202 Battlemage G21 [Intel Graphics] + e20b Battlemage G21 [Intel Graphics] + e20c Battlemage G21 [Intel Graphics] + e20d Battlemage G21 [Intel Graphics] + e212 Battlemage G21 [Intel Graphics] + f1a5 SSD 600P Series + 8086 390a SSDPEKKW256G7 256GB + f1a6 SSD DC P4101/Pro 7600p/760p/E 6100p Series + 8086 390b SSD Pro 7600p/760p/E 6100p Series [NVM Express] + f1a7 SSD 700p Series + f1a8 SSD 660P Series + f1aa SSD 670p Series [Keystone Harbor] + faf0 SSD 665p Series [Neptune Harbor Refresh] +8088 Beijing Wangxun Technology Co., Ltd. + 0100 WX1860AL-W Gigabit Ethernet Controller + 0101 WX1860A2 Gigabit Ethernet Controller + 4c52 2024 LRES2024PT Dual-port 1Gb Ethernet Network Adapter + 4c52 2025 LRES2025PT Quad-port 1Gb Ethernet Network Adapter + 4c52 2027 LRES2027PF Dual-port 1Gb Ethernet Server Adapter + 4c52 3018 LRES3018PT Dual-port 1Gb Ethernet Server Adapter for OCP + 8088 0201 Dual-Port Ethernet Network Adaptor SF200T + 8088 0501 Dual-Port Ethernet Network Adapter SF200T-C101 + 8088 0901 Dual-Port Ethernet Network Adapter SF200T-B401 + 8088 0b01 Dual-Port Ethernet Network Adapter SF200T-B402 + 8088 4201 Dual-Port Ethernet Network Adaptor SF200T (WOL) + 8088 8201 Dual-Port Ethernet Network Adaptor SF200T (NCSI) + 8088 c201 Dual-Port Ethernet Network Adaptor SF200T (WOL, NCSI) + 0102 WX1860A2S Gigabit Ethernet Controller + 8088 0210 Dual-Port Ethernet Network Adaptor SF200T-S + 0103 WX1860A4 Gigabit Ethernet Controller + 1bd4 009e ENPW2100-T4 + 4c52 2028 LRES2028PF Quad-port 1Gb Ethernet Server Adapter + 4c52 3019 LRES3019PT Quad-port 1Gb Ethernet Server Adapter for OCP + 8088 0401 Qual-Port Ethernet Network Adaptor SF400T + 8088 0440 Qual-Port Ethernet Network Adaptor SF400-OCP + 8088 0a01 Quad-Port Ethernet Network Adapter SF400T-B401 + 8088 0c01 Quad-Port Ethernet Network Adapter SF400T-B402 + 8088 4401 Quad-Port Ethernet Network Adapter SF400T (WOL) + 8088 8103 Quad-Port Ethernet Network Adaptor SF400T (NCSI) + 8088 8401 Quad-Port Ethernet Network Adapter SF400T (NCSI) + 8088 c103 Quad-Port Ethernet Network Adaptor SF400T (WOL, NCSI) + 8088 c401 Quad-Port Ethernet Network Adapter SF400T (WOL, NCSI) + 0104 WX1860A4S Gigabit Ethernet Controller + 8088 0410 Qual-Port Ethernet Network Adaptor SF400T-S + 0105 WX1860AL2 Gigabit Ethernet Controller + 8088 0202 Dual-Port Ethernet Network Adaptor SF200HT + 8088 4202 Dual-Port Ethernet Network Adaptor SF200HT (WOL) + 8088 8202 Dual-Port Ethernet Network Adaptor SF200HT (NCSI) + 8088 c202 Dual-Port Ethernet Network Adaptor SF200HT (WOL, NCSI) + 0106 WX1860AL2S Gigabit Ethernet Controller + 8088 0220 Dual-Port Ethernet Network Adaptor SF200HT-S + 0107 WX1860AL4 Gigabit Ethernet Controller + 8088 0402 Qual-Port Ethernet Network Adaptor SF400HT + 8088 4402 Quad-Port Ethernet Network Adaptor SF400HT (WOL) + 8088 8402 Quad-Port Ethernet Network Adaptor SF400HT (NCSI) + 8088 c402 Quad-Port Ethernet Network Adaptor SF400HT (WOL, NCSI) + 0108 WX1860AL4S Gigabit Ethernet Controller + 8088 0420 Qual-Port Ethernet Network Adaptor SF400HT-S + 0109 WX1860-LC Gigabit Ethernet Controller + 010a WX1860A1 Gigabit Ethernet Controller + 4c52 2026 LRES2026PF Single-port 1Gb Ethernet Network Adapter + 4c52 2034 LRES2034PT Single-port 1Gb Ethernet Network Adapter + 010b WX1860AL1 Gigabit Ethernet Controller + 4c52 2215 LRES2215PT Single-port 1Gb Ethernet Network Adapter + 8088 0102 Single-Port Ethernet Network Adaptor SF100HT + 8088 4102 Single-Port Ethernet Network Adaptor SF100HT (WOL) + 8088 8102 Single-Port Ethernet Network Adaptor SF100HT (NCSI) + 8088 c102 Single-Port Ethernet Network Adaptor SF100HT (WOL, NCSI) + 0111 WX1860A2 Ethernet Controller Virtual Function + 0113 WX1860A4 Ethernet Controller Virtual Function + 0115 WX1860AL2 Ethernet Controller Virtual Function + 0117 WX1860AL4 Ethernet Controller Virtual Function + 0119 WX1860-LC Gigabit Ethernet Controller Virtual Function + 011a WX1860A1 Gigabit Ethernet Controller Virtual Function + 011b WX1860AL1 Gigabit Ethernet Controller Virtual Function + 1000 Ethernet Controller SP1000A Virtual Function for 10GbE SFP+ + 1001 Ethernet Controller SP1000A for 10GbE SFP+ + 1bd4 0084 Ethernet Controller SP1000A for 10GbE SFP+(lldp) + 1bd4 0085 Ethernet Controller SP1000A for 10GBASE-T + 4c52 1002 LRES1002PF Dual-port 10Gb Ethernet Server Adapter + 4c52 1003 LRES1003PF Single-port 10Gb Ethernet Server Adapter + 4c52 3001 LRES3001PF Dual-port 10Gb Ethernet Server Adapter for OCP + 8088 0000 Ethernet Network Adaptor RP1000 for 10GbE SFP+ + 8088 0300 Ethernet Network Adaptor RP1000-A03 for 10GbE SFP+ + 8088 0400 Ethernet Network Adaptor RP1000-A04 for 10GbE SFP+ + 2000 Ethernet Controller WX1820AL Virtual Function for 10GbE SFP+ + 2001 Ethernet Controller WX1820AL for 10GbE SFP+ + 8088 2000 Ethernet Network Adaptor RP2000 for 10GbE SFP+ + 8088 2300 Ethernet Network Adaptor RP2000-A03 for 10GbE SFP+ + 8088 2400 Ethernet Network Adaptor RP2000-A04 for 10GbE SFP+ +80ee InnoTek Systemberatung GmbH + beef VirtualBox Graphics Adapter + cafe VirtualBox Guest Service +8322 Sodick America Corp. +8384 SigmaTel +8401 TRENDware International Inc. +8510 Sietium Semiconductor Co., Ltd. + 0201 GenBu02 Series GPU + 8510 0001 GB2062-PUB-LPDDR + 8510 0002 GB2062-PCIe-C0 + 8510 0003 GB2062-PCIe-C41 + 8510 0004 GB2062-PCIe-HIEILP4 + 8510 0005 CQ2040-PCIe-C21 + 8510 0007 GB2062-PCIe-C40 + 8510 0008 CQ2040-MXM-M60 + 8510 0009 GB2062-PCIe-C20 + 8510 000c CQ2040-PUB + 8510 0201 GB2062-PUB-DDR +# nee ScaleMP +8686 SAP + 1010 vSMP Foundation controller [vSMP CTL] + 1011 vSMP Foundation MEX/FLX controller [vSMP CTL] +8800 Trigem Computer Inc. + 2008 Video assistant component +8820 Stryker Corporation + 2724 Mako Front Side Motor Controller [cPCI] +# Wuxi Micro Innovation Integrated Circuit Design Co.,Ltd. +8848 MUCSE + 1000 Ethernet Controller N10 Series for 10GbE or 40GbE (Dual-port) + 4c52 3032 LRES3032PF Dual-port 10Gb Ethernet Server Adapter for OCP + 8848 8410 Ethernet Network Adapter N10G-X2-DC for 10GbE SFP+ 2-port + 1001 Ethernet Controller N400 Series for 1GbE (Dual-port) + 1003 Ethernet Controller N400 Series for 10GbE (Single-port) + 4c52 1050 LRES1050PF Single-port 10Gb Ethernet Network Adapter + 1020 Ethernet Controller N10 Series for 10GbE (Quad-port) + 4c52 1030 LRES1030PF Quad-port 10Gb Ethernet Server Adapter + 4c52 1031 LRES1031PF Dual-port 10Gb Ethernet Server Adapter + 4c52 3031 LRES3031PF Quad-port 10Gb Ethernet Server Adapter for OCP + 8848 8451 Ethernet Network Adapter N10G-X4-QC for 10GbE SFP+ 4-port + 1021 Ethernet Controller N400 Series for 1GbE (Quad-port) + 4c52 1032 LRES1032PF Quad-port 1Gb Ethernet Network Adapter + 4c52 1039 LRES1039PT Quad-port 1Gb Ethernet Network Adapter + 1060 Ethernet Controller N10 Series for 1GbE or 10GbE (8-port) + 1080 Ethernet Controller N10 Series Virtual Function + 1081 Ethernet Controller N400 Series Virtual Function + 1083 Ethernet Controller N400 Series Virtual Function + 8308 Ethernet Controller N500 Series for 1GbE (Quad-port, Copper RJ45) +# NIC-ETH3M0T-3S-4P Quad-Port RJ45 Adapter for OCP 3.0 + 193d 1088 NIC-ETH3M0T-3S-4P + 4c52 1048 LRES1048PT Quad-port 1Gb Ethernet Network Adapter + 4c52 3044 LRES3044PT Quad-port 1Gb Ethernet Server Adapter for OCP + 8309 Ethernet Controller N500 Series Virtual Function + 8318 Ethernet Controller N500 Series for 1GbE (Dual-port, Copper RJ45) + 4c52 1049 LRES1049PT Dual-port 1Gb Ethernet Network Adapter + 4c52 3043 LRES3043PT Dual-port 1Gb Ethernet Server Adapter for OCP +8866 T-Square Design Inc. +8888 Silicon Magic +# 4 port HDMI capture card + 8504 AVMatrix VC42 +8912 TRX +# 8c4a is not Winbond but there is a board misprogrammed +8c4a Winbond + 1980 W89C940 misprogrammed [ne2k] +8e0e Computone Corporation +8e2e KTI + 3000 ET32P2 +9004 Adaptec + 0078 AHA-2940U_CN + 1078 AIC-7810 + 1160 AIC-1160 [Family Fibre Channel Adapter] + 2178 AIC-7821 + 3860 AHA-2930CU + 3b78 AHA-4844W/4844UW + 5075 AIC-755x + 5078 AIC-7850T/7856T [AVA-2902/4/6 / AHA-2910] + 9004 7850 AIC-7850T/7856T [AVA-290x / AHA-2910] + 5175 AIC-755x + 5178 AIC-7851 + 5275 AIC-755x + 5278 AIC-7852 + 5375 AIC-755x + 5378 AIC-7850 + 5475 AIC-755x + 5478 AIC-7850 + 5575 AVA-2930 + 5578 AIC-7855 + 5647 ANA-7711 TCP Offload Engine + 9004 7710 ANA-7711F TCP Offload Engine - Optical + 9004 7711 ANA-7711LP TCP Offload Engine - Copper + 5675 AIC-755x + 5678 AIC-7856 + 5775 AIC-755x + 5778 AIC-7850 + 5800 AIC-5800 + 5900 ANA-5910/5930/5940 ATM155 & 25 LAN Adapter + 5905 ANA-5910A/5930A/5940A ATM Adapter + 6038 AIC-3860 + 6075 AIC-1480 / APA-1480 + 9004 7560 AIC-1480 / APA-1480 Cardbus + 6078 AIC-7860 + 6178 AIC-7861 + 9004 7861 AHA-2940AU Single + 6278 AIC-7860 + 6378 AIC-7860 + 6478 AIC-786x + 6578 AIC-786x + 6678 AIC-786x + 6778 AIC-786x + 6915 ANA620xx/ANA69011A + 9004 0008 ANA69011A/TX 10/100 + 9004 0009 ANA69011A/TX 10/100 + 9004 0010 ANA62022 2-port 10/100 + 9004 0018 ANA62044 4-port 10/100 + 9004 0019 ANA62044 4-port 10/100 + 9004 0020 ANA62022 2-port 10/100 + 9004 0028 ANA69011A/TX 10/100 + 9004 8008 ANA69011A/TX 64 bit 10/100 + 9004 8009 ANA69011A/TX 64 bit 10/100 + 9004 8010 ANA62022 2-port 64 bit 10/100 + 9004 8018 ANA62044 4-port 64 bit 10/100 + 9004 8019 ANA62044 4-port 64 bit 10/100 + 9004 8020 ANA62022 2-port 64 bit 10/100 + 9004 8028 ANA69011A/TX 64 bit 10/100 + 7078 AHA-294x / AIC-7870 + 7178 AIC-7870P/7871 [AHA-2940/W/S76] + 7278 AHA-3940/3940W / AIC-7872 + 7378 AHA-3985 / AIC-7873 + 7478 AHA-2944/2944W / AIC-7874 + 7578 AHA-3944/3944W / AIC-7875 + 7678 AHA-4944W/UW / AIC-7876 + 7710 ANA-7711F Network Accelerator Card (NAC) - Optical + 7711 ANA-7711C Network Accelerator Card (NAC) - Copper + 7778 AIC-787x + 7810 AIC-7810 + 7815 AIC-7815 RAID+Memory Controller IC + 9004 7815 ARO-1130U2 RAID Controller + 9004 7840 AIC-7815 RAID+Memory Controller IC + 7850 AIC-7850 + 7855 AHA-2930 + 7860 AIC-7860 + 7870 AIC-7870 + 7871 AHA-2940 + 7872 AHA-3940 + 7873 AHA-3980 + 7874 AHA-2944 + 7880 AIC-7880P + 7890 AIC-7890 + 7891 AIC-789x + 7892 AIC-789x + 7893 AIC-789x + 7894 AIC-789x + 7895 AHA-2940U/UW / AHA-39xx / AIC-7895 + 9004 7890 AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B + 9004 7891 AHA-2940U/2940UW Dual + 9004 7892 AHA-3940AU/AUW/AUWD/UWD + 9004 7894 AHA-3944AUWD + 9004 7895 AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B + 9004 7896 AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B + 9004 7897 AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B + 7896 AIC-789x + 7897 AIC-789x + 8078 AIC-7880U + 9004 7880 AIC-7880P Ultra/Ultra Wide SCSI Chipset + 8178 AIC-7870P/7881U [AHA-2940U/UW/D/S76] + 9004 7881 AHA-2940UW SCSI Host Adapter + 8278 AHA-3940U/UW/UWD / AIC-7882U + 8378 AHA-3940U/UW / AIC-7883U + 8478 AHA-2944UW / AIC-7884U + 8578 AHA-3944U/UWD / AIC-7885 + 8678 AHA-4944UW / AIC-7886 + 8778 AHA-2940UW Pro / AIC-788x + 9004 7887 2940UW Pro Ultra-Wide SCSI Controller + 8878 AHA-2930UW / AIC-7888 + 9004 7888 AHA-2930UW SCSI Controller + 8b78 ABA-1030 + ec78 AHA-4944W/UW +# Acquired by Microchip Technology +9005 Adaptec + 0010 AHA-2940U2/U2W + 9005 2180 AHA-2940U2 SCSI Controller + 9005 8100 AHA-2940U2B SCSI Controller + 9005 a100 AHA-2940U2B SCSI Controller + 9005 a180 AIC-3860Q [AHA-2940U2W/GE] SCSI Controller + 9005 e100 AHA-2950U2B SCSI Controller + 0011 AHA-2930U2 + 0013 78902 + 9005 0003 AAA-131U2 Array1000 1 Channel RAID Controller + 9005 000f AIC7890_ARO + 001f AHA-2940U2/U2W / 7890/7891 + 9005 000f 2940U2W SCSI Controller + 9005 a180 2940U2W SCSI Controller + 0020 AIC-7890 + 002f AIC-7890 + 0030 AIC-7890 + 003f AIC-7890 + 0050 AHA-3940U2x/395U2x + 9005 f500 AHA-3950U2B + 9005 ffff AHA-3950U2B + 0051 AHA-3950U2D + 9005 b500 AHA-3950U2D + 0053 AIC-7896 SCSI Controller + 9005 ffff AIC-7896 SCSI Controller mainboard implementation + 005f AIC-7896U2/7897U2 + 0080 AIC-7892A U160/m + 0e11 e2a0 Compaq 64-Bit/66MHz Wide Ultra3 SCSI Adapter + 9005 6220 AHA-29160C + 9005 62a0 29160N Ultra160 SCSI Controller + 9005 e220 29160LP Low Profile Ultra160 SCSI Controller + 9005 e2a0 29160 Ultra160 SCSI Controller + 0081 AIC-7892B U160/m + 9005 62a1 19160 Ultra160 SCSI Controller + 0083 AIC-7892D U160/m + 008f AIC-7892P U160/m + 1179 0001 Magnia Z310 + 15d9 9005 Onboard SCSI Host Adapter + 0092 AVC-2010 [VideoH!] + 0093 AVC-2410 [VideoH!] + 00c0 AHA-3960D / AIC-7899A U160/m + 0e11 f620 Compaq 64-Bit/66MHz Dual Channel Wide Ultra3 SCSI Adapter + 9005 f620 AHA-3960D U160/m + 00c1 AIC-7899B U160/m + 00c3 AIC-7899D U160/m + 00c5 RAID subsystem HBA + 1028 00c5 PowerEdge 2400,2500,2550,4400 + 00cf AIC-7899P U160/m + 1028 00ce PowerEdge 1400 + 1028 00d1 PowerEdge 2550 + 1028 00d9 PowerEdge 2500 + 10f1 2462 Thunder K7 S2462 + 15d9 9005 Onboard SCSI Host Adapter + 8086 3411 SDS2 Mainboard + 0241 Serial ATA II RAID 1420SA + 0242 Serial ATA II RAID 1220SA + 0243 Serial ATA II RAID 1430SA + 0244 eSATA II RAID 1225SA + 0250 ServeRAID Controller + 1014 0279 ServeRAID 6M + 1014 028c ServeRAID 6i/6i+ + 1014 028e ServeRAID 7k + 0279 ServeRAID 6M + 0283 AAC-RAID + 9005 0283 Catapult + 0284 AAC-RAID + 9005 0284 Tomcat + 0285 AAC-RAID + 0e11 0295 SATA 6Ch (Bearcat) + 1014 02f2 ServeRAID 8i + 1028 0287 PowerEdge Expandable RAID Controller 320/DC + 1028 0291 CERC SATA RAID 2 PCI SATA 6ch (DellCorsair) + 103c 3227 AAR-2610SA + 108e 0286 Sun StorageTek SAS RAID HBA, Internal + 108e 0287 STK RAID EXT + 108e 7aac STK RAID REM + 108e 7aae STK RAID EX + 15d9 02b5 SMC AOC-USAS-S4i + 15d9 02b6 SMC AOC-USAS-S8i + 15d9 02c9 SMC AOC-USAS-S4iR + 15d9 02ca SMC AOC-USAS-S8iR + 15d9 02d2 SMC AOC-USAS-S8i-LP + 15d9 02d3 SMC AOC-USAS-S8iR-LP + 17aa 0286 Legend S220 (Legend Crusader) + 17aa 0287 Legend S230 (Legend Vulcan) + 9005 0285 2200S (Vulcan) + 9005 0286 2120S (Crusader) + 9005 0287 2200S (Vulcan-2m) + 9005 0288 3230S (Harrier) + 9005 0289 3240S (Tornado) +# Some early versions reported 2020S + 9005 028a ASR-2020ZCR +# Some early versions reported 2025S + 9005 028b ASR-2025ZCR (Terminator) + 9005 028e ASR-2020SA (Skyhawk) + 9005 028f ASR-2025SA + 9005 0290 AAR-2410SA PCI SATA 4ch (Jaguar II) + 9005 0292 AAR-2810SA PCI SATA 8ch (Corsair-8) + 9005 0293 AAR-21610SA PCI SATA 16ch (Corsair-16) + 9005 0294 ESD SO-DIMM PCI-X SATA ZCR (Prowler) + 9005 0296 ASR-2240S + 9005 0297 ASR-4005SAS + 9005 0298 ASR-4000 + 9005 0299 ASR-4800SAS + 9005 029a 4805SAS + 9005 02a4 ICP ICP9085LI + 9005 02a5 ICP ICP5085BR + 9005 02b5 ASR5800 + 9005 02b6 ASR5805 + 9005 02b7 ASR5808 + 9005 02b8 ICP5445SL + 9005 02b9 ICP5085SL + 9005 02ba ICP5805SL + 9005 02bb 3405 + 9005 02bc 3805 + 9005 02bd 31205 + 9005 02be 31605 + 9005 02bf ICP ICP5045BL + 9005 02c0 ICP ICP5085BL + 9005 02c1 ICP ICP5125BR + 9005 02c2 ICP ICP5165BR + 9005 02c3 51205 + 9005 02c4 51605 + 9005 02c5 ICP ICP5125SL + 9005 02c6 ICP ICP5165SL + 9005 02c7 3085 + 9005 02c8 ICP5805BL + 9005 02ce 51245 + 9005 02cf 51645 + 9005 02d0 52445 + 9005 02d1 5405 + 9005 02d4 ASR-2045 + 9005 02d5 ASR-2405 + 9005 02d6 ASR-2445 + 9005 02d7 ASR-2805 + 9005 02d8 5405G + 9005 02d9 5445G + 9005 02da 5805G + 9005 02db 5085G + 9005 02dc 51245G + 9005 02dd 51645G + 9005 02de 52445G + 9005 02df ASR-2045G + 9005 02e0 ASR-2405G + 9005 02e1 ASR-2445G + 9005 02e2 ASR-2805G + 0286 AAC-RAID (Rocket) + 1014 034d 8s + 1014 9540 ServeRAID 8k/8k-l4 + 1014 9580 ServeRAID 8k/8k-l8 + 9005 028c ASR-2230S + ASR-2230SLP PCI-X (Lancer) + 9005 028d ASR-2130S + 9005 029b ASR-2820SA + 9005 029c ASR-2620SA + 9005 029d ASR-2420SA + 9005 029e ICP ICP9024R0 + 9005 029f ICP ICP9014R0 + 9005 02a0 ICP ICP9047MA + 9005 02a1 ICP ICP9087MA + 9005 02a2 3800 + 9005 02a3 ICP ICP5445AU + 9005 02a4 ICP ICP9085LI + 9005 02a5 ICP ICP5085BR + 9005 02a6 ICP9067MA + 9005 02a7 3805 + 9005 02a8 3400 + 9005 02a9 ICP ICP5085AU + 9005 02aa ICP ICP5045AU + 9005 02ac 1800 + 9005 02b3 2400 + 9005 02b4 ICP ICP5045AL + 9005 0800 Callisto + 028b Series 6 - 6G SAS/PCIe 2 + 9005 0200 Series 6 Entry Level - ASR-6405E - 4 internal 6G SAS ports + 9005 0201 Series 6 Entry Level - ASR-6805E - 8 internal 6G SAS ports + 9005 0300 Series 6 - ASR-6405 - 4 internal 6G SAS ports + 9005 0301 Series 6 - ASR-6805 - 8 internal 6G SAS ports + 9005 0302 Series 6 - ASR-6445 - 4 internal and 4 external 6G SAS ports + 9005 0310 Series 6 Connectors on Top - ASR-6405T - 4 internal 6G SAS ports + 9005 0311 Series 6 Connectors on Top - ASR-6805T - 8 internal 6G SAS + 9005 0400 Series 6 - ASR-61205 - 12 internal 6G SAS ports + 9005 0401 Series 6 - ASR-61605 - 16 internal 6G SAS ports + 9005 0403 Series 6 - ASR-62405 - 24 internal 6G SAS ports + 028c Series 7 6G SAS/PCIe 3 + 9005 0500 Series 7 - ASR-7805 - 8 internal 6G SAS Port/PCIe 3.0 + 9005 0501 Series 7 - ASR-71605 - 16 internal 6G SAS Port/PCIe 3.0 + 9005 0502 Series 7 - ASR-71685 - 16 internal 8 external 6G SAS Port/PCIe 3.0 + 9005 0503 Series 7 - ASR-72405 - 24 internal 0 external 6G SAS Port/PCIe 3.0 + 9005 0504 Series 7 - ASR-7885 - 8 internal 8 external 6G SAS Port/PCIe 3.0 + 9005 0505 Series 7 Entry Level - ASR-71685E - 16 internal 8 external 6G SAS Port/PCIe 3.0 + 9005 0506 Series 7 Entry Level - ASR-72405E - 24 internal 0 external 6G SAS Port/PCIe 3.0 + 028d Series 8 12G SAS/PCIe 3 + 9005 0550 Series 8 - ASR-82405 - 24 internal 0 external 12G SAS Port/PCIe 3.0 + 9005 0551 Series 8 - ASR-81605 - 16 internal 0 external 12G SAS Port/PCIe 3.0 + 9005 0552 Series 8 - ASR-8805 - 8 internal 0 external 12G SAS Port/PCIe 3.0 + 9005 0553 Series 8 - ASR-8085 - 0 internal 8 external 12G SAS Port/PCIe 3.0 + 9005 0554 Series 8 - ASR-8885 - 8 internal 8 external 12G SAS Port/PCIe 3.0 + 028f Smart Storage PQI SAS + 103c 0600 Smart Array P408i-p SR Gen10 + 103c 0601 Smart Array P408e-p SR Gen10 + 103c 0602 Smart Array P408i-a SR Gen10 + 103c 0603 Smart Array P408i-c SR Gen10 + 103c 0650 Smart Array E208i-p SR Gen10 + 103c 0651 Smart Array E208e-p SR Gen10 + 103c 0652 Smart Array E208i-c SR Gen10 + 103c 0654 Smart Array E208i-a SR Gen10 + 103c 0655 Smart Array P408e-m SR Gen10 + 103c 0700 Smart Array P204i-c SR Gen10 + 103c 0701 Smart Array P204i-b SR Gen10 + 103c 1100 Smart Array P816i-a SR Gen10 + 103c 1101 Smart Array P416ie-m SR G10 + 105b 1211 HBA 8238-16i + 105b 1321 HBA 8242-24i + 1137 02f8 24G TriMode M1 RAID 4GB FBWC 32D + 1137 02f9 24G TriMode M1 RAID 4GB FBWC 16D + 1137 02fa 24G TriMode M1 HBA 16D + 13fe 8312 SKY-9200 MIC-8312BridgeB + 152d 8a22 QS-8204-8i + 152d 8a23 QS-8238-16i + 152d 8a24 QS-8236-16i + 152d 8a36 QS-8240-24i + 152d 8a37 QS-8242-24i + 1590 0294 SR932i-p Gen10+ + 1590 02dc SR416i-a Gen10+ + 193d 1104 RAID P2404-Mf-4i-2GB + 193d 1105 RAID P4408-Mf-8i-2GB + 193d 1106 RAID P2404-Mf-4i-1GB + 193d 1107 RAID P4408-Mf-8i-4GB + 193d 8460 HBA H460-M1 + 193d 8461 HBA H460-B1 + 193d c460 RAID P460-M2 + 193d c461 RAID P460-B2 + 193d f460 RAID P460-M4 + 193d f461 RAID P460-B4 + 19e5 d227 SmartROC-HD SR465C-M 4G + 19e5 d228 SmartROC SR455C-M 2G + 19e5 d229 SmartIOC SR155-M + 19e5 d22a SmartIOC-HD SR765-M + 19e5 d22b SmartROC-e SR455C-ME 4G + 19e5 d22c SmartROC SR455C-M 4G + 1bd4 0045 SMART-HBA 8242-24i + 1bd4 0046 RAID 8236-16i + 1bd4 0047 RAID 8240-24i + 1bd4 0048 SMART-HBA 8238-16i + 1bd4 004a PM8222-SHBA + 1bd4 004b RAID PM8204-2GB + 1bd4 004c RAID PM8204-4GB + 1bd4 004f PM8222-HBA + 1bd4 006b RS0800M5H24I + 1bd4 006c RS0800M5E8i + 1bd4 006d RS0800M5H8i + 1bd4 006f RS0804M5R16i + 1bd4 0070 RS0800M5E24i + 1bd4 0071 RS0800M5H16i + 1bd4 0072 RS0800M5E16i + 1bd4 0077 RS0800M5E16iM + 1bd4 0078 RS0800M5E24iM + 1bd4 0079 RS0800M5H24iM + 1bd4 0080 RS0804M5R16iM + 1bd4 0086 RT0800M7E + 1bd4 0087 RT0800M7H + 1bd4 0088 RT0804M7R + 1bd4 0089 RT0808M7R + 1cc4 0101 Ramaxel FBGF-RAD PM8204 + 1cc4 0201 Ramaxel FBGF-RAD PM8222 + 1d49 0220 ThinkSystem 4350-8i SAS/SATA 12Gb HBA + 1d49 0221 ThinkSystem 4350-16i SAS/SATA 12Gb HBA + 1d49 0520 ThinkSystem RAID 5350-8i PCIe 12Gb Adapter + 1d49 0522 ThinkSystem RAID 5350-8i PCIe 12Gb Internal Adapter + 1d49 0620 ThinkSystem RAID 9350-8i 2GB Flash PCIe 12Gb Adapter + 1d49 0621 ThinkSystem RAID 9350-8i 2GB Flash PCIe 12Gb Internal Adapter + 1d49 0622 ThinkSystem RAID 9350-16i 4GB Flash PCIe 12Gb Adapter + 1d49 0623 ThinkSystem RAID 9350-16i 4GB Flash PCIe 12Gb Internal Adapter + 9005 0608 SmartRAID 3162-8i /e + 9005 0800 SmartRAID 3154-8i + 9005 0801 SmartRAID 3152-8i + 9005 0802 SmartRAID 3151-4i + 9005 0803 SmartRAID 3101-4i + 9005 0804 SmartRAID 3154-8e + 9005 0805 SmartRAID 3102-8i + 9005 0806 SmartRAID 3100 + 9005 0807 SmartRAID 3162-8i + 9005 0808 SmartRAID 3101E-4i + 9005 0809 SmartRAID 3102E-8i + 9005 0900 SmartHBA 2100-8i + 9005 0901 SmartHBA 2100-4i + 9005 0902 HBA 1100-8i + 9005 0903 HBA 1100-4i + 9005 0904 SmartHBA 2100-8e + 9005 0905 HBA 1100-8e + 9005 0906 SmartHBA 2100-4i4e + 9005 0907 HBA 1100 + 9005 0908 SmartHBA 2100 + 9005 090a SmartHBA 2100A-8i + 9005 1200 SmartRAID 3154-24i + 9005 1201 SmartRAID 3154-8i16e + 9005 1202 SmartRAID 3154-8i8e + 9005 1280 HBA 1100-16i + 9005 1281 HBA 1100-16e + 9005 1282 SmartHBA 2100-16i + 9005 1300 HBA 1100-8i8e + 9005 1301 HBA 1100-24i + 9005 1302 SmartHBA 2100-8i8e + 9005 1303 SmartHBA 2100-24i + 9005 1380 SmartRAID 3154-16i + 9005 1400 SmartRAID Ultra 3258p-16i /e + 9005 1402 HBA Ultra 1200p-16i + 9005 1410 HBA Ultra 1200-16e + 9005 1430 SmartRAID Ultra 3254-16e /e + 9005 1441 HBA Ultra 1200p-32i + 9005 1450 SmartRAID Ultra 3258p-32i /e + 9005 1462 HBA 1200-8i + 9005 1471 SmartRAID 3254-16i /e + 9005 1472 SmartRAID 3258-16i /e + 9005 1475 SmartRAID 3254-16e /e + 9005 14a0 SmartRAID 3254-8i + 9005 14a1 SmartRAID 3204-8i + 9005 14a2 SmartRAID 3252-8i + 9005 14a4 SmartRAID 3254-8i /e + 9005 14a5 SmartRAID 3252-8i /e + 9005 14a6 SmartRAID 3204-8i /e + 9005 14c0 SmartHBA 2200-16i + 9005 14c1 HBA 1200-16i + 9005 14c3 HBA 1200-16e + 9005 14c4 HBA 1200-8e + 0410 AIC-9410W SAS (Razor HBA RAID) + 9005 0410 ASC-48300(Spirit RAID) + 9005 0411 ASC-58300 (Oakmont RAID) + 0412 AIC-9410W SAS (Razor HBA non-RAID) + 9005 0412 ASC-48300 (Spirit non-RAID) + 9005 0413 ASC-58300 (Oakmont non-RAID) + 0415 ASC-58300 SAS (Razor-External HBA RAID) + 0416 ASC-58300 SAS (Razor-External HBA non-RAID) + 041e AIC-9410W SAS (Razor ASIC non-RAID) + 041f AIC-9410W SAS (Razor ASIC RAID) + 9005 041f AIC-9410W SAS (Razor ASIC RAID) + 042f VSC7250/7251 SAS (Aurora ASIC non-RAID) + 0430 AIC-9405W SAS (Razor-Lite HBA RAID) + 9005 0430 ASC-44300 (Spirit-Lite RAID) + 0432 AIC-9405W SAS (Razor-Lite HBA non-RAID) + 9005 0432 ASC-44300 (Spirit-Lite non-RAID) + 043e AIC-9405W SAS (Razor-Lite ASIC non-RAID) + 043f AIC-9405W SAS (Razor-Lite ASIC RAID) + 0450 ASC-1405 Unified Serial HBA + 0500 Obsidian chipset SCSI controller + 1014 02c1 PCI-X DDR 3Gb SAS Adapter (572A/572C) + 1014 02c2 PCI-X DDR 3Gb SAS RAID Adapter (572B/572D) + 0503 Scamp chipset SCSI controller + 1014 02bf Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571E) + 1014 02c3 PCI-X DDR 3Gb SAS RAID Adapter (572F) + 1014 02d5 Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571F) + 0910 AUA-3100B + 091e AUA-3100B + 8000 ASC-29320A U320 + 800f AIC-7901 U320 + 8010 ASC-39320 U320 + 8011 ASC-39320D + 0e11 00ac ASC-39320D U320 + 9005 0041 ASC-39320D U320 + 8012 ASC-29320 U320 + 8013 ASC-29320B U320 + 8014 ASC-29320LP U320 + 8015 ASC-39320B U320 + 8016 ASC-39320A U320 + 8017 ASC-29320ALP U320 + 9005 0044 ASC-29320ALP PCIx U320 + 9005 0045 ASC-29320LPE PCIe U320 + 801c ASC-39320D U320 + 801d AIC-7902B U320 + 1014 02cc ServeRAID 7e + 801e AIC-7901A U320 + 801f AIC-7902 U320 + 1734 1011 PRIMERGY RX300 onboard SCSI + 8080 ASC-29320A U320 w/HostRAID + 8081 PMC-Sierra PM8001 SAS HBA [Series 6H] + 9005 0400 Adaptec SAS HBA 6405H + 9005 0800 Adaptec SAS HBA 6805H + 8088 PMC-Sierra PM8018 SAS HBA [Series 7H] + 9005 0008 Adaptec SAS HBA 7085H + 9005 0016 Adaptec SAS HBA 70165H + 9005 0800 Adaptec SAS HBA 7805H + 9005 1600 Adaptec SAS HBA 71605H + 8089 PMC-Sierra PM8019 SAS encryption HBA [Series 7He] + 808f AIC-7901 U320 w/HostRAID + 1028 0168 Precision Workstation 670 Mainboard + 8090 ASC-39320 U320 w/HostRAID + 8091 ASC-39320D U320 w/HostRAID + 8092 ASC-29320 U320 w/HostRAID + 8093 ASC-29320B U320 w/HostRAID + 8094 ASC-29320LP U320 w/HostRAID + 8095 ASC-39320(B) U320 w/HostRAID + 8096 ASC-39320A U320 w/HostRAID + 8097 ASC-29320ALP U320 w/HostRAID + 809c ASC-39320D(B) U320 w/HostRAID + 809d AIC-7902(B) U320 w/HostRAID + 1014 02cc ServeRAID 7e + 809e AIC-7901A U320 w/HostRAID + 809f AIC-7902 U320 w/HostRAID +907f Atronics + 2015 IDE-2015PL +919a Gigapixel Corp +9412 Holtek + 6565 6565 +9413 Softlogic Co., Ltd. + 6010 SOLO6010 MPEG-4 Video encoder/decoder + 6110 SOLO6110 H.264 Video encoder/decoder +9618 JusonTech Corporation + 0001 JusonTech Gigabit Ethernet Controller +9699 Omni Media Technology Inc + 6565 6565 +# nee Netmos Technology +9710 MosChip Semiconductor Technology Ltd. + 9250 PCI-to-PCI bridge [MCS9250] + 9805 PCI 1 port parallel adapter + 9815 PCI 9815 Multi-I/O Controller + 1000 0020 2P0S (2 port parallel adaptor) + 9820 PCI 9820 Multi-I/O Controller + 9835 PCI 9835 Multi-I/O Controller + 1000 0002 2S (16C550 UART) + 1000 0012 1P2S + 9845 PCI 9845 Multi-I/O Controller +# Serial ports at BAR0-3 + 1000 0004 0P4S (4 port 16550A serial card) + 1000 0006 0P6S (6 port 16550a serial card) +# Serial ports at BAR0-3, Parallel port at BAR4 + 1000 0014 1P4S (1 Parallel / 4 16550A Serial Port Adapter) + 9855 PCI 9855 Multi-I/O Controller +# Parallel port at BAR0. Serial ports at BAR2-5 + 1000 0014 1P4S +# Parallel ports at BAR0,BAR2. Serial ports at BAR4-5 + 1000 0022 2P2S (2 Parallel / 2 16550A Serial Port Adapter) + 9865 PCI 9865 Multi-I/O Controller + 9900 MCS9900 Multi-I/O Controller + 9901 PCIe 9901 Multi-I/O Controller + 9904 4-Port PCIe Serial Adapter +# 2-port Serial 1-port Parallel Adaptor + 9912 PCIe 9912 Multi-I/O Controller + 9922 MCS9922 PCIe Multi-I/O Controller + 9990 MCS9990 PCIe to 4-Port USB 2.0 Host Controller +# Subsystem ID on a 3c985B-SX network card +9850 3Com (wrong ID) +9902 Stargen Inc. + 0001 SG2010 PCI over Starfabric Bridge + 0002 SG2010 PCI to Starfabric Gateway + 0003 SG1010 Starfabric Switch and PCI Bridge +9a11 Tiger Lake-H Gaussian & Neural Accelerator +9d32 Beijing Starblaze Technology Co. Ltd. + 0000 STAR1000 PCIe NVMe SSD Controller + 1000 STAR1000 PCIe NVMe SSD Controller + 1001 STAR1000P PCIe NVMe SSD Controller + 1201 STAR1200C NVMe SSD + 1202 STAR1200I NVMe SSD + 1203 STAR1200L NVMe SSD + 1204 STAR1200E NVMe SSD + 1500 STAR1500 PCIe NVMe SSD Controller + 1501 STAR1500C NVMe SSD + 1502 STAR1500E NVMe SSD + 1504 STAR1500L NVMe SSD + 2000 STAR2000 NVMe Controller + 2001 STAR2000E NVMe SSD + 2002 STAR2000C NVMe SSD + 2003 STAR2000L NVMe SSD + 2004 EAST 2000K SSD + 2008 STAR2008 PCIE NVMe SSD Controller + 2010 STAR2010 PCIE NVMe Secure SSD Controller + bb5b Asgard AN3+ NVMe SSD + fc22 Asgard AN3+ NVMe SSD +a000 Asix Electronics Corporation (Wrong ID) +a0a0 AOPEN Inc. +a0f1 UNISYS Corporation +a200 NEC Corporation +a259 Hewlett Packard +a25b Hewlett Packard GmbH PL24-MKT +a304 Sony +a727 3Com Corporation + 0013 3CRPAG175 Wireless PC Card + 6803 3CRDAG675B Wireless 11a/b/g Adapter +aa00 iTuner +aa01 iTuner +aa02 iTuner +aa03 iTuner +aa04 iTuner +aa05 iTuner +aa06 iTuner +aa07 iTuner +aa08 iTuner +aa09 iTuner +aa0a iTuner +aa0b iTuner +aa0c iTuner +aa0d iTuner +aa0e iTuner +aa0f iTuner +aa42 Scitex Digital Video +aa55 Ncomputing X300 PCI-Engine +aaaa Adnaco Technology Inc. + 0001 H1 PCIe over fiber optic host controller + 0002 R1BP1 PCIe over fiber optic expansion chassis +abcd Vadatech Inc. +ac1e Digital Receiver Technology Inc +ac3d Actuality Systems +ad00 Alta Data Technologies LLC +aecb Adrienne Electronics Corporation + 6250 VITC/LTC Timecode Reader card [PCI-VLTC/RDR] +affe Sirrix AG security technologies + 01e1 PCI1E1 1-port ISDN E1 interface + 02e1 PCI2E1 2-port ISDN E1 interface + 450e PCI4S0EC 4-port ISDN S0 interface + dead Sirrix.PCI4S0 4-port ISDN S0 interface +b100 OpenVox Communication Co. Ltd. +# Not registered officially +b10b Uakron PCI Project +b1b3 Shiva Europe Limited +b1d9 ATCOM Technology co., LTD. +# Pinnacle should be 11bd, but they got it wrong several times --mj +bd11 Pinnacle Systems, Inc. (Wrong ID) +bdbd Blackmagic Design + a106 Multibridge Extreme + a117 Intensity Pro + a11a DeckLink HD Extreme 2 + a11b DeckLink SDI/Duo/Quad + a11c DeckLink HD Extreme 3 + a11d DeckLink Studio + a11e DeckLink Optical Fibre + a120 Decklink Studio 2 + a121 DeckLink HD Extreme 3D/3D+ + a124 Intensity Extreme + a126 Intensity Shuttle + a127 UltraStudio Express + a129 UltraStudio Mini Recorder + a12a UltraStudio Mini Monitor + a12d UltraStudio 4K + a12e DeckLink 4K Extreme + a12f DeckLink Mini Monitor + a130 DeckLink Mini Recorder + a132 UltraStudio 4K + a136 DeckLink 4K Extreme 12G + a137 DeckLink Studio 4K + a138 Decklink SDI 4K + a139 Intensity Pro 4K + a13b DeckLink Micro Recorder + a13d DeckLink 4K Pro + a13e UltraStudio 4K Extreme + a13f DeckLink Quad 2 + a140 DeckLink Duo 2 + a141 UltraStudio 4K Extreme 3 + a142 UltraStudio HD Mini + a143 DeckLink Mini Recorder 4K + a144 DeckLink Mini Monitor 4K + a148 DeckLink SDI Micro + a14b DeckLink 8K Pro + a14e DeckLink Quad HDMI Recorder + a1ff eGPU RX580 +c001 TSI Telsys +c0a9 Micron/Crucial Technology + 2263 P1 NVMe PCIe SSD[Frampton] + 5403 P1 NVMe PCIe SSD[Frampton2] + 5407 P5 Plus NVMe PCIe SSD + 540a P2 [Nick P2] / P3 / P3 Plus NVMe PCIe SSD (DRAM-less) + 5412 P5 NVMe PCIe SSD[SlashP5] + 5415 T500 NVMe PCIe SSD + 5419 T700 NVMe PCIe SSD + 5421 P3 Plus NVMe PCIe SSD (DRAM-less) +c0de Motorola +c0fe Motion Engineering, Inc. +ca01 I-TEK OptoElectronics Co., LTD. + 0212 Vulcan-CL CameraLink Frame Grabber +ca02 I-TEK OptoElectronics Co., LTD. + 0213 Vulcan-CXP Frame Grabber +ca3b Cambrionix Ltd. +ca50 Varian Australia Pty Ltd +cace CACE Technologies, Inc. + 0001 TurboCap Port A + 0002 TurboCap Port B + 0023 AirPcap N +caed Canny Edge +cafe Chrysalis-ITS + 0003 Luna K3 Hardware Security Module + 0006 Luna PCI-e 3000 Hardware Security Module + 0007 Luna K6 Hardware Security Module + 0008 Luna K7 Hardware Security Module +cc53 ScaleFlux Inc. + 0001 CSS 1000 + 0010 CSD 3310 +cccc Catapult Communications +ccec Curtiss-Wright Controls Embedded Computing +cddd Tyzx, Inc. + 0101 DeepSea 1 High Speed Stereo Vision Frame Grabber + 0200 DeepSea 2 High Speed Stereo Vision Frame Grabber +cdfa NextSilicon Ltd + 0007 Maverick +ceba KEBA AG +cf86 Spectrum-4TOR + 0276 Spectrum-4TOR in Flash Recovery Mode +d063 SolidRun + 1000 SolidNET DPU + 1500 Emulated NVMe +d161 Digium, Inc. + 0120 Wildcard TE120P single-span T1/E1/J1 card + 0205 Wildcard TE205P/TE207P dual-span T1/E1/J1 card 5.0V + 0210 Wildcard TE210P/TE212P dual-span T1/E1/J1 card 3.3V + 0220 Wildcard TE220 dual-span T1/E1/J1 card 3.3V (PCI-Express) + 0405 Wildcard TE405P/TE407P quad-span T1/E1/J1 card 5.0V + 0410 Wildcard TE410P/TE412P quad-span T1/E1/J1 card 3.3V + 0420 Wildcard TE420P quad-span T1/E1/J1 card 3.3V (PCI-Express) + 0800 Wildcard TDM800P 8-port analog card + 1205 Wildcard TE205P/TE207P dual-span T1/E1/J1 card 5.0V (u1) + 1220 Wildcard TE220 dual-span T1/E1/J1 card 3.3V (PCI-Express) (5th gen) + 1405 Wildcard TE405P/TE407P quad-span T1/E1/J1 card 5.0V (u1) + 1410 Wildcard TE410P quad-span T1/E1/J1 card 3.3V (5th Gen) + 1420 Wildcard TE420 quad-span T1/E1/J1 card 3.3V (PCI-Express) (5th gen) + 1820 Wildcard TE820 octal-span T1/E1/J1 card 3.3V (PCI-Express) + 2400 Wildcard TDM2400P 24-port analog card + 3400 Wildcard TC400P transcoder base card + 8000 Wildcard TE121 single-span T1/E1/J1 card (PCI-Express) + 8001 Wildcard TE122 single-span T1/E1/J1 card + 8002 Wildcard AEX800 8-port analog card (PCI-Express) + 8003 Wildcard AEX2400 24-port analog card (PCI-Express) + 8004 Wildcard TCE400P transcoder base card + 8005 Wildcard TDM410 4-port analog card + 8006 Wildcard AEX410 4-port analog card (PCI-Express) + 8007 Hx8 Series 8-port Base Card + 8008 Hx8 Series 8-port Base Card (PCI-Express) + 800a Wildcard TE133 single-span T1/E1/J1 card (PCI Express) + 800b Wildcard TE134 single-span T1/E1/J1 card + 800c Wildcard A8A 8-port analog card + 800d Wildcard A8B 8-port analog card (PCI-Express) + 800e Wildcard TE235/TE435 quad-span T1/E1/J1 card (PCI-Express) + 800f Wildcard A4A 4-port analog card + 8010 Wildcard A4B 4-port analog card (PCI-Express) + 8013 Wildcard TE236/TE436 quad-span T1/E1/J1 card + b410 Wildcard B410 quad-BRI card +d209 Ultimarc + 1500 PAC Drive + 15a2 SpinTrak + 1601 AimTrak +d20c Chengdu BeiZhongWangXin Technology Co., Ltd. + 5010 NE5000 Ethernet Controller + 5011 NE5000 Ethernet Controller + d20c e220 N5 Series 2-port 25GbE Network Adapter + d20c e221 N5S Series 2-port 25GbE Network Adapter + d20c e22c N5 Series 2-port 25GbE Network Adapter for OCP + d20c e22d N5S Series 2-port 25GbE Network Adapter for OCP + 6010 NE6000 Ethernet Controller + 6011 NE6000 Ethernet Controller + d20c a141 N6S Series 4-port 10GbE Network Adapter + d20c a221 N6S Series 2-port 25GbE Network Adapter + d20c a241 N6S Series 4-port 25GbE Network Adapter + d20c a421 N6S Series 2-port 40GbE Network Adapter + d20c aa21 N6S Series 2-port 100GbE Network Adapter + d20c d221 N6S Series 2-port 25GbE Network Adapter with DPI + d20c da21 N6S Series 2-port 100GbE Network Adapter with DPI + d20c ea20 N6 Series 2-port 100GbE Network Adapter + d20c ea21 N6S Series 2-port 100GbE Network Adapter + d20c ea2c N6 Series 2-port 100GbE Network Adapter for OCP + d20c ea2d N6S Series 2-port 100GbE Network Adapter for OCP +d4d4 Dy4 Systems Inc + 0601 PCI Mezzanine Card +d531 I+ME ACTIA GmbH +d84d Exsys +dada Datapath Limited + 0133 VisionRGB-X2 + 0139 VisionRGB-E1 + 0144 VisionSD8 + 0150 VisionRGB-E2 + 0151 VisionSD4+1 + 0159 VisionAV + 0161 DGC161 + 0165 DGC165 + 0167 DGC167 + 0168 DGC168 + 1139 VisionRGB-E1S + 1150 VisionRGB-E2S + 1151 VisionSD4+1S + 1153 VisionDVI-DL + 1154 VisionSDI2 +db10 Diablo Technologies +dc93 Dawicontrol GmbH +dcba Dynamic Engineering + 0046 PCIe Altera Cyclone IV +# VPX format Receiver Controller Board + 0047 VPX-RCB +# PMC Format FPGA design with 8 high speed UART channels + 0048 PMC-Biserial-III-BAE9 + 004e PC104p-Biserial-III-NVY5 + 004f PC104p-Biserial-III-NVY6 + 0052 PCIeBiSerialDb37 BA22 LVDS IO +# 8 port 16550 compatible UART, PMC format, RS-232 IO, RTS, CTS, DTR, DSR supported + 0066 PMC-OctalUART-232 +dd01 Digital Devices GmbH + 0003 Octopus DVB Adapter + dd01 0001 Octopus DVB adapter + dd01 0002 Octopus LE DVB adapter + dd01 0003 Octopus OEM + dd01 0004 Octopus V3 DVB adapter + dd01 0010 Octopus Mini + dd01 0020 Cine S2 V6 DVB adapter + dd01 0021 Cine S2 V6.5 DVB adapter + dd01 0030 Cine CT V6.1 DVB adapter + dd01 db03 Mystique SaTiX-S2 V3 DVB adapter + 0006 Cine V7 + 0007 Max + dd01 0023 Max S8 4/8 + 0011 Octopus CI DVB Adapter + dd01 0040 Octopus CI + dd01 0041 Octopus CI Single + 0201 Resi DVB-C Modulator + dd01 0001 Resi DVB-C Modulator +dead Indigita Corporation +deaf Middle Digital Inc. + 9050 PC Weasel Virtual VGA + 9051 PC Weasel Serial Port + 9052 PC Weasel Watchdog Timer +# formerly SoftHard Technology Ltd. +deda XIMEA + 4001 CB or MX camera + 4021 MT camera +e000 Winbond + e000 W89C940 +e159 Tiger Jet Network Inc. / ICP DAS + 0001 Tiger3XX Modem/ISDN interface + 0059 0001 128k ISDN-S/T Adapter + 0059 0003 128k ISDN-U Adapter + 00a7 0001 TELES.S0/PCI 2.x ISDN Adapter + 8086 0003 Digium X100P/X101P analogue PSTN FXO interface + b100 0003 OpenVox A400P 4-port analog card + b1d9 0003 AX400P 4-port analog card + 0002 Tiger100APC ISDN chipset +e1c5 Elcus +e4bf EKF Elektronik GmbH + 0ccd CCD-CALYPSO + 0cd1 CD1-OPERA + 0cd2 CD2-BEBOP + 0cd3 CD3-JIVE + 50c1 PC1-GROOVE + 50c2 PC2-LIMBO + 53c1 SC1-ALLEGRO + cc47 CCG-RUMBA + cc4d CCM-BOOGIE +e4e4 Xorcom +e55e Essence Technology, Inc. +ea01 Eagle Technology + 000a PCI-773 Temperature Card + 0032 PCI-730 & PC104P-30 Card + 003e PCI-762 Opto-Isolator Card + 0041 PCI-763 Reed Relay Card + 0043 PCI-769 Opto-Isolator Reed Relay Combo Card + 0046 PCI-766 Analog Output Card + 0052 PCI-703 Analog I/O Card + 0800 PCI-800 Digital I/O Card +ea50 Emerson Automation Solutions +# The main chip of all these devices is by Xilinx -> It could also be a Xilinx ID. +ea60 RME + 9896 Digi32 + 9897 Digi32 Pro + 9898 Digi32/8 +eabb Aashima Technology B.V. +eace Endace Measurement Systems, Ltd + 3100 DAG 3.10 OC-3/OC-12 + 3200 DAG 3.2x OC-3/OC-12 + 320e DAG 3.2E Fast Ethernet + 340e DAG 3.4E Fast Ethernet + 341e DAG 3.41E Fast Ethernet + 3500 DAG 3.5 OC-3/OC-12 + 351c DAG 3.5ECM Fast Ethernet + 360d DAG 3.6D DS3 + 360e DAG 3.6E Fast Ethernet + 368e DAG 3.6E Gig Ethernet + 3707 DAG 3.7T T1/E1/J1 + 370d DAG 3.7D DS3/E3 + 378e DAG 3.7G Gig Ethernet + 3800 DAG 3.8S OC-3/OC-12 + 4100 DAG 4.10 OC-48 + 4110 DAG 4.11 OC-48 + 4220 DAG 4.2 OC-48 + 422e DAG 4.2GE Gig Ethernet + 4230 DAG 4.2S OC-48 + 423e DAG 4.2GE Gig Ethernet + 4300 DAG 4.3S OC-48 + 430e DAG 4.3GE Gig Ethernet + 452e DAG 4.5G2 Gig Ethernet + 454e DAG 4.5G4 Gig Ethernet + 45b8 DAG 4.5Z8 Gig Ethernet + 45be DAG 4.5Z2 Gig Ethernet + 520e DAG 5.2X 10G Ethernet + 521a DAG 5.2SXA 10G Ethernet/OC-192 + 5400 DAG 5.4S-12 OC-3/OC-12 + 5401 DAG 5.4SG-48 Gig Ethernet/OC-3/OC-12/OC-48 + 540a DAG 5.4GA Gig Ethernet + 541a DAG 5.4SA-12 OC-3/OC-12 + 542a DAG 5.4SGA-48 Gig Ethernet/OC-3/OC-12/OC-48 + 6000 DAG 6.0SE 10G Ethernet/OC-192 + 6100 DAG 6.1SE 10G Ethernet/OC-192 + 6200 DAG 6.2SE 10G Ethernet/OC-192 + 7100 DAG 7.1S OC-3/OC-12 + 7400 DAG 7.4S OC-3/OC-12 + 7401 DAG 7.4S48 OC-48 + 752e DAG 7.5G2 Gig Ethernet + 754e DAG 7.5G4 Gig Ethernet + 8100 DAG 8.1X 10G Ethernet + 8101 DAG 8.1SX 10G Ethernet/OC-192 + 8102 DAG 8.1X 10G Ethernet + 820e DAG 8.2X 10G Ethernet + 820f DAG 8.2X 10G Ethernet (2nd bus) + 8400 DAG 8.4I Infiniband x4 SDR + 8500 DAG 8.5I Infiniband x4 DDR + 9200 DAG 9.2SX2 10G Ethernet + 920e DAG 9.2X2 10G Ethernet + 9540 DAG 9.5G4 Gig Ethernet + 954f DAG 9.5G4F Gig Ethernet + a120 DAG 10X2-P 10G Ethernet + a12e DAG 10X2-S 10G Ethernet + a140 DAG 10X4-P 10/40G Ethernet + a14e DAG 10X4-S 10/40G Ethernet + eace vDAG virtual device +ec80 Belkin Corporation + ec00 F5D6000 +ecc0 Echo Digital Audio Corporation +edd8 ARK Logic Inc + a091 1000PV [Stingray] + a099 2000PV [Stingray] + a0a1 2000MT + a0a9 2000MI +# Found on M2N68-AM Motherboard +f043 ASUSTeK Computer Inc. (Wrong ID) +f05b Foxconn International, Inc. (Wrong ID) +f111 Framework Computer Inc. +f117 Cerio + 1000 Emulated PCIe Switch + 1010 Placeholder Device + 1020 Pseudo-Device + 1030 Test Device +f15e SiFive, Inc. + 0000 FU740-C000 RISC-V SoC PCI Express x8 to AXI4 Bridge +f1d0 AJA Video + c0fe Xena HS/HD-R + c0ff Kona/Xena 2 + cafe Kona SD + cfee Xena LS/SD-22-DA/SD-DA + dafe Corvid 1 + daff KONA LHi + db00 IoExpress + db01 Corvid22 + db02 Kona 3G + db03 Corvid 3G + db04 Kona 3G QUAD + db05 Kona LHe+ + db06 IoXT + db07 Kona 3G P2P + db08 Kona 3G QUAD P2P + db09 Corvid 24 + db11 T-Tap + dcaf Kona HD + dfee Xena HD-DA + eb07 Io4K + eb0a Io4K UFC + eb0b Kona 4 + eb0c Kona 4 UFC + eb0d Corvid 88 + eb0e Corvid 44 + eb16 Corvid HEVC + 10cf 1049 Corvid HEVC M31 + eb18 Corvid HB-R + eb1a Kona IP 1SFP + eb1c Kona IP 2SFP + eb1d Io4KPlus + eb1e IoIP + eb1f Kona 5 + eb23 Kona 1 + eb24 Kona HDMI + eb25 Corvid 44 12g + eb26 T-Tap Pro + eb27 IoX3 + efac Xena SD-MM/SD-22-MM + facd Xena HD-MM +f5f5 F5 Networks, Inc. +# Subsystem ID for PATA controller on nForce motherboard +f849 ASRock Incorporation (Wrong ID) +fa57 Interagon AS + 0001 PMC [Pattern Matching Chip] +fab7 Fabric7 Systems, Inc. +fe19 TenaFe, Inc. + 0001 TC2200/TC2201 NVMe Controller (DRAM-less) +febd Ultraview Corp. +# Nee Epigram +feda Broadcom Inc + a0fa BCM4210 iLine10 HomePNA 2.0 + a10e BCM4230 iLine10 HomePNA 2.0 +fede Fedetec Inc. + 0003 TABIC PCI v3 +ffe1 Suzhou XiongLi Technology Inc. + d200 XL82101/82102 PCI Express Gigabit Ethernet Controller +fffd XenSource, Inc. + 0101 PCI Event Channel Controller +# Used in some old VMWare products before they got a real ID assigned +fffe VMWare Inc (temporary ID) + 0710 Virtual SVGA +ffff Illegal Vendor ID + + +# List of known device classes, subclasses and programming interfaces + +# Syntax: +# C class class_name +# subclass subclass_name <-- single tab +# prog-if prog-if_name <-- two tabs + +C 00 Unclassified device + 00 Non-VGA unclassified device + 01 VGA compatible unclassified device + 05 Image coprocessor +C 01 Mass storage controller + 00 SCSI storage controller + 01 IDE interface + 00 ISA Compatibility mode-only controller + 05 PCI native mode-only controller + 0a ISA Compatibility mode controller, supports both channels switched to PCI native mode + 0f PCI native mode controller, supports both channels switched to ISA compatibility mode + 80 ISA Compatibility mode-only controller, supports bus mastering + 85 PCI native mode-only controller, supports bus mastering + 8a ISA Compatibility mode controller, supports both channels switched to PCI native mode, supports bus mastering + 8f PCI native mode controller, supports both channels switched to ISA compatibility mode, supports bus mastering + 02 Floppy disk controller + 03 IPI bus controller + 04 RAID bus controller + 05 ATA controller + 20 ADMA single stepping + 30 ADMA continuous operation + 06 SATA controller + 00 Vendor specific + 01 AHCI 1.0 + 02 Serial Storage Bus + 07 Serial Attached SCSI controller + 01 Serial Storage Bus + 08 Non-Volatile memory controller + 01 NVMHCI + 02 NVM Express + 09 Universal Flash Storage controller + 00 Vendor specific + 01 UFSHCI + 80 Mass storage controller +C 02 Network controller + 00 Ethernet controller + 01 Token ring network controller + 02 FDDI network controller + 03 ATM network controller + 04 ISDN controller + 05 WorldFip controller + 06 PICMG controller + 07 Infiniband controller + 08 Fabric controller + 80 Network controller +C 03 Display controller + 00 VGA compatible controller + 00 VGA controller + 01 8514 controller + 01 XGA compatible controller + 02 3D controller + 80 Display controller +C 04 Multimedia controller + 00 Multimedia video controller + 01 Multimedia audio controller + 02 Computer telephony device + 03 Audio device + 80 Multimedia controller +C 05 Memory controller + 00 RAM memory + 01 FLASH memory + 02 CXL + 00 CXL Memory Device - vendor specific + 10 CXL Memory Device (CXL 2.x) + 80 Memory controller +C 06 Bridge + 00 Host bridge + 01 ISA bridge + 02 EISA bridge + 03 MicroChannel bridge + 04 PCI bridge + 00 Normal decode + 01 Subtractive decode + 05 PCMCIA bridge + 06 NuBus bridge + 07 CardBus bridge + 08 RACEway bridge + 00 Transparent mode + 01 Endpoint mode + 09 Semi-transparent PCI-to-PCI bridge + 40 Primary bus towards host CPU + 80 Secondary bus towards host CPU + 0a InfiniBand to PCI host bridge + 80 Bridge +C 07 Communication controller + 00 Serial controller + 00 8250 + 01 16450 + 02 16550 + 03 16650 + 04 16750 + 05 16850 + 06 16950 + 01 Parallel controller + 00 SPP + 01 BiDir + 02 ECP + 03 IEEE1284 + fe IEEE1284 Target + 02 Multiport serial controller + 03 Modem + 00 Generic + 01 Hayes/16450 + 02 Hayes/16550 + 03 Hayes/16650 + 04 Hayes/16750 + 04 GPIB controller + 05 Smard Card controller + 80 Communication controller +C 08 Generic system peripheral + 00 PIC + 00 8259 + 01 ISA PIC + 02 EISA PIC + 10 IO-APIC + 20 IO(X)-APIC + 01 DMA controller + 00 8237 + 01 ISA DMA + 02 EISA DMA + 02 Timer + 00 8254 + 01 ISA Timer + 02 EISA Timers + 03 HPET + 03 RTC + 00 Generic + 01 ISA RTC + 04 PCI Hot-plug controller + 05 SD Host controller + 06 IOMMU + 80 System peripheral + 99 Timing Card +# PTP Grandmaster Source Clock + 01 TAP Timing Card +C 09 Input device controller + 00 Keyboard controller + 01 Digitizer Pen + 02 Mouse controller + 03 Scanner controller + 04 Gameport controller + 00 Generic + 10 Extended + 80 Input device controller +C 0a Docking station + 00 Generic Docking Station + 80 Docking Station +C 0b Processor + 00 386 + 01 486 + 02 Pentium + 10 Alpha + 20 Power PC + 30 MIPS + 40 Co-processor +C 0c Serial bus controller + 00 FireWire (IEEE 1394) + 00 Generic + 10 OHCI + 01 ACCESS Bus + 02 SSA + 03 USB controller + 00 UHCI + 10 OHCI + 20 EHCI + 30 XHCI + 40 USB4 Host Interface + 80 Unspecified + fe USB Device + 04 Fibre Channel + 05 SMBus + 06 InfiniBand + 07 IPMI Interface + 00 SMIC + 01 KCS + 02 BT (Block Transfer) + 08 SERCOS interface + 09 CANBUS + 80 Serial bus controller +C 0d Wireless controller + 00 IRDA controller + 01 Consumer IR controller + 10 RF controller + 11 Bluetooth + 12 Broadband + 20 802.1a controller + 21 802.1b controller + 80 Wireless controller +C 0e Intelligent controller + 00 I2O +C 0f Satellite communications controller + 01 Satellite TV controller + 02 Satellite audio communication controller + 03 Satellite voice communication controller + 04 Satellite data communication controller +C 10 Encryption controller + 00 Network and computing encryption device + 10 Entertainment encryption device + 80 Encryption controller +C 11 Signal processing controller + 00 DPIO module + 01 Performance counters + 10 Communication synchronizer + 20 Signal processing management + 80 Signal processing controller +C 12 Processing accelerators + 00 Processing accelerators + 01 SNIA Smart Data Accelerator Interface (SDXI) controller +C 13 Non-Essential Instrumentation +C 40 Coprocessor +C ff Unassigned class diff --git a/tools/tcg_eventlog_tool/build.gradle b/tools/tcg_eventlog_tool/build.gradle index 7b9bc88d..04640f51 100644 --- a/tools/tcg_eventlog_tool/build.gradle +++ b/tools/tcg_eventlog_tool/build.gradle @@ -119,9 +119,11 @@ ospackage { buildRpm { arch = X86_64 + requires('hwdata', '0.314', GREATER | EQUAL) } buildDeb { arch = 'amd64' + requires('hwdata', '0.314', GREATER | EQUAL) } } diff --git a/tools/tcg_eventlog_tool/src/main/java/hirs/tcg_eventlog/Main.java b/tools/tcg_eventlog_tool/src/main/java/hirs/tcg_eventlog/Main.java index c87bb5c6..e09733da 100644 --- a/tools/tcg_eventlog_tool/src/main/java/hirs/tcg_eventlog/Main.java +++ b/tools/tcg_eventlog_tool/src/main/java/hirs/tcg_eventlog/Main.java @@ -136,13 +136,24 @@ final class Main { + evLog.getEventList().size() + " events:\n\n"); } if (evLog.getVendorTableFileStatus() == FILESTATUS_NOT_ACCESSIBLE) { - writeOut("*** WARNING: The file vendor-table.json was not accessible from the " - + "filesystem or the code, so some event data shown in the output of this " - + "tool may be outdated or omitted.\n\n"); + writeOut("*** WARNING: " + + "The file vendor-table.json was not accessible from the filesystem or the code,\n" + + " so some event data shown in the output of this tool may be outdated\n" + + " or omitted.\n\n"); } else if (evLog.getVendorTableFileStatus() == FILESTATUS_FROM_CODE) { - writeOut("*** NOTE: " + writeOut("*** NOTE: " + "The file vendor-table.json file was not accessible from the filesystem,\n" - + " so the vendor-table.json from code was used.\n\n"); + + " so the vendor-table.json from code was used.\n\n"); + } + if (evLog.getPciidsFileStatus() == FILESTATUS_NOT_ACCESSIBLE) { + writeOut("*** WARNING: " + + "The file pci.ids was not accessible from the filesystem or the code,\n" + + " so some pci device info lookups in the output of this tool\n" + + " may be omitted or the hex code may be used instead.\n\n"); + } else if (evLog.getPciidsFileStatus() == FILESTATUS_FROM_CODE) { + writeOut("*** NOTE: " + + "The file pci.ids file was not accessible from the filesystem,\n" + + " so the pci.ids from code was used.\n\n"); } } int eventCount = 0; From 7a7385f24018f74140b2558069f04d21440aecdd Mon Sep 17 00:00:00 2001 From: TheSilentCoder <184309164+ThatSilentCoder@users.noreply.github.com> Date: Tue, 29 Oct 2024 10:54:50 -0400 Subject: [PATCH 11/22] Finished fixing all checkstyle errors. Now figuring out this dependency issue. --- .../provision/CertificateRequestProcessor.java | 2 +- .../hirs/attestationca/portal/HIRSApplication.java | 5 ++++- .../attestationca/portal/PersistenceJPAConfig.java | 8 ++++++-- .../datatables/OrderedListQueryDataTableAdapter.java | 9 ++++++--- .../page/utils/CertificateStringMapBuilder.java | 8 +++++--- config/checkstyle/suppressions.xml | 12 ++++++++---- 6 files changed, 30 insertions(+), 14 deletions(-) diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/CertificateRequestProcessor.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/CertificateRequestProcessor.java index 15d37795..23c39cb1 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/CertificateRequestProcessor.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/CertificateRequestProcessor.java @@ -191,7 +191,7 @@ public class CertificateRequestProcessor extends AbstractProcessor { attestationCertificate); String pemEncodedAttestationCertificate = ProvisionUtils.getPemEncodedCertificate( attestationCertificate); - + // We validated the nonce and made use of the identity claim so state can be deleted tpm2ProvisionerStateRepository.delete(tpm2ProvisionerState); diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSApplication.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSApplication.java index 06833945..29cc4b85 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSApplication.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/HIRSApplication.java @@ -4,6 +4,7 @@ import lombok.extern.log4j.Log4j2; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +@SuppressWarnings("checkstyle:hideutilityclassconstructor") @SpringBootApplication //@EnableAutoConfiguration @Log4j2 @@ -24,7 +25,9 @@ public class HIRSApplication { // } /** - * @param args + * This is the starting point of the HIRS application. + * + * @param args main method arguments */ public static void main(final String[] args) { // SpringApplication springApplication = new SpringApplication(HIRSApplication.class); diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/PersistenceJPAConfig.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/PersistenceJPAConfig.java index ae02253e..36ce7d06 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/PersistenceJPAConfig.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/PersistenceJPAConfig.java @@ -224,7 +224,9 @@ public class PersistenceJPAConfig implements WebMvcConfigurer { } /** - * @return + * Platform Transaction Manager bean. + * + * @return platform transaction manager bean */ @Bean public PlatformTransactionManager transactionManager() { @@ -234,7 +236,9 @@ public class PersistenceJPAConfig implements WebMvcConfigurer { } /** - * @return + * Persistence Exception Translation Post Processor bean. + * + * @return persistence exception translation post processor bean */ @Bean public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/OrderedListQueryDataTableAdapter.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/OrderedListQueryDataTableAdapter.java index 661397f1..160fb169 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/OrderedListQueryDataTableAdapter.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/OrderedListQueryDataTableAdapter.java @@ -5,8 +5,6 @@ import hirs.attestationca.persist.FilteredRecordsList; import hirs.attestationca.persist.entity.userdefined.rim.ReferenceDigestValue; import jakarta.persistence.EntityManager; import jakarta.persistence.criteria.CriteriaQuery; -import lombok.AccessLevel; -import lombok.NoArgsConstructor; import lombok.extern.log4j.Log4j2; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.util.CollectionUtils; @@ -23,10 +21,15 @@ import java.util.UUID; * * @param The type of object to query */ -@NoArgsConstructor(access = AccessLevel.PRIVATE) @Log4j2 public final class OrderedListQueryDataTableAdapter { + /** + * Private constructor was created to silence checkstyle error. + */ + private OrderedListQueryDataTableAdapter() { + } + /** * Gets the ordered list of records using a default, no-op criteria modifier. * diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/utils/CertificateStringMapBuilder.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/utils/CertificateStringMapBuilder.java index 09ea707c..4b48537e 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/utils/CertificateStringMapBuilder.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/utils/CertificateStringMapBuilder.java @@ -15,8 +15,6 @@ import hirs.attestationca.persist.entity.userdefined.certificate.attributes.Plat import hirs.attestationca.persist.util.AcaPciIds; import hirs.utils.BouncyCastleUtils; import hirs.utils.PciIds; -import lombok.AccessLevel; -import lombok.NoArgsConstructor; import lombok.extern.log4j.Log4j2; import org.bouncycastle.util.encoders.Hex; @@ -36,8 +34,12 @@ import java.util.UUID; * information on a web page, as X509 cert classes do not serialize to JSON */ @Log4j2 -@NoArgsConstructor(access = AccessLevel.PRIVATE) public final class CertificateStringMapBuilder { + /** + * This private constructor was created to silence checkstyle error. + */ + private CertificateStringMapBuilder() { + } /** * Returns the general information. diff --git a/config/checkstyle/suppressions.xml b/config/checkstyle/suppressions.xml index f0a4b442..31e31c3e 100644 --- a/config/checkstyle/suppressions.xml +++ b/config/checkstyle/suppressions.xml @@ -6,11 +6,15 @@ - - + + - - + + + + + + \ No newline at end of file From 18efb25d413037fa9ff62b175c69895c099841b3 Mon Sep 17 00:00:00 2001 From: TheSilentCoder <184309164+ThatSilentCoder@users.noreply.github.com> Date: Tue, 29 Oct 2024 13:49:40 -0400 Subject: [PATCH 12/22] issue_847: Figured out why tests were failing. CertificatePageControllerTest was trying to find the index of a curly brace inside the TPMSpecifications string but becauses lombok uses parens instead of curly braces for their toStrings, two tests kept failing. --- .../portal/page/utils/CertificateStringMapBuilder.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/utils/CertificateStringMapBuilder.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/utils/CertificateStringMapBuilder.java index 4b48537e..30d11444 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/utils/CertificateStringMapBuilder.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/utils/CertificateStringMapBuilder.java @@ -466,8 +466,8 @@ public final class CertificateStringMapBuilder { */ private static HashMap convertStringToHash(final String str) { HashMap map = new HashMap<>(); - String name = str.substring(0, str.indexOf('{')).trim(); - String data = str.trim().substring(str.trim().indexOf('{') + 1, + String name = str.substring(0, str.indexOf('(')).trim(); + String data = str.trim().substring(str.trim().indexOf('(') + 1, str.trim().length() - 1); // Separate key and value and parse the key for (String pair : data.split(",")) { From 963086fc0ed32101a1c11305caf841442627b153 Mon Sep 17 00:00:00 2001 From: TheSilentCoder <184309164+ThatSilentCoder@users.noreply.github.com> Date: Wed, 30 Oct 2024 13:36:04 -0400 Subject: [PATCH 13/22] issue_847: Took another look over the PR for this issue and found nothing alarming. Made some minor tweaks to four files. Should be good to go for PR --- .../selector/ReferenceManifestSelector.java | 2 +- .../portal/datatables/DataTableInput.java | 51 +++++-------------- ...eferenceManifestDetailsPageController.java | 20 +++----- .../ValidationReportsPageController.java | 25 +++++---- 4 files changed, 33 insertions(+), 65 deletions(-) diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/ReferenceManifestSelector.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/ReferenceManifestSelector.java index 2a0be756..876e302c 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/ReferenceManifestSelector.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/service/selector/ReferenceManifestSelector.java @@ -147,7 +147,7 @@ public abstract class ReferenceManifestSelector { /** * Construct the criterion that can be used to query for rims matching the - * + * configuration of this {@link ReferenceManifestSelector}. + * configuration of this {@link ReferenceManifestSelector}. * * @param criteriaBuilder criteria builder * @return a Criterion that can be used to query for rims matching the diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/DataTableInput.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/DataTableInput.java index 9c176eea..fcfab95c 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/DataTableInput.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/datatables/DataTableInput.java @@ -3,10 +3,10 @@ package hirs.attestationca.portal.datatables; import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; -import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import lombok.ToString; import org.apache.commons.lang3.StringUtils; import org.springframework.util.CollectionUtils; @@ -18,10 +18,22 @@ import java.util.Map; /** * Represents a data table input in a jQuery DataTable. */ -@NoArgsConstructor(access = AccessLevel.PUBLIC) +@Getter +@NoArgsConstructor +@ToString public class DataTableInput { private static final int DEFAULT_LENGTH = 10; + /** + * Order parameter. + */ + @NotEmpty + private final List order = new ArrayList<>(); + /** + * Per-column search parameter. + */ + @NotEmpty + private final List columns = new ArrayList<>(); /** * Draw counter. This is used by DataTables to ensure that the Ajax returns from server-side * processing requests are drawn in sequence by DataTables (Ajax requests are asynchronous and @@ -30,7 +42,6 @@ public class DataTableInput { */ @NotNull @Min(0) - @Getter @Setter private int draw = 1; /** @@ -39,7 +50,6 @@ public class DataTableInput { */ @NotNull @Min(0) - @Getter @Setter private int start = 0; /** @@ -51,28 +61,14 @@ public class DataTableInput { */ @NotNull @Min(-1) - @Getter @Setter private int length = DEFAULT_LENGTH; /** * Global search parameter. */ - @Getter @Setter @NotNull private Search search = new Search(); - /** - * Order parameter. - */ - @Getter - @NotEmpty - private List order = new ArrayList<>(); - /** - * Per-column search parameter. - */ - @Getter - @NotEmpty - private List columns = new ArrayList<>(); /** * Constructor. @@ -200,23 +196,4 @@ public class DataTableInput { } return orderColumnName; } - - - /** - * Generates a string for this object. - * - * @return the string - */ - @Override - public String toString() { - return "DataTableInput{" - + "draw=" + draw - + ", start=" + start - + ", length=" + length - + ", search=" + search - + ", order=" + order - + ", columns=" + columns - + '}'; - } } - diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestDetailsPageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestDetailsPageController.java index 0f5393fc..ea440af0 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestDetailsPageController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestDetailsPageController.java @@ -141,16 +141,14 @@ public class ReferenceManifestDetailsPageController * @param certificateRepository the certificate manager. * @param caCertificateRepository the certificate manager. * @return mapping of the RIM information from the database. - * @throws java.io.IOException error for reading file bytes. - * @throws NoSuchAlgorithmException If an unknown Algorithm is encountered. - * @throws CertificateException if a certificate doesn't parse. + * @throws java.io.IOException error for reading file bytes. */ private static HashMap getBaseRimInfo( final BaseReferenceManifest baseRim, final ReferenceManifestRepository referenceManifestRepository, final CertificateRepository certificateRepository, final CACredentialRepository caCertificateRepository) - throws IOException, CertificateException, NoSuchAlgorithmException { + throws IOException { HashMap data = new HashMap<>(); // Software Identity @@ -260,8 +258,8 @@ public class ReferenceManifestDetailsPageController caCertificateRepository)); RIM_VALIDATOR.setTrustStore(truststore); } catch (IOException e) { - log.error("Error building CA chain for " + caCert.getSubjectKeyIdentifier() + ": " - + e.getMessage()); + log.error("Error building CA chain for {}: {}", caCert.getSubjectKeyIdentifier(), + e.getMessage()); } if (RIM_VALIDATOR.validateXmlSignature(caCert.getX509Certificate().getPublicKey(), caCert.getSubjectKeyIdString(), caCert.getEncodedPublicKey())) { @@ -272,7 +270,7 @@ public class ReferenceManifestDetailsPageController break; } } catch (SupplyChainValidatorException scvEx) { - log.error("Error verifying cert chain: " + scvEx.getMessage()); + log.error("Error verifying cert chain: {}", scvEx.getMessage()); } } } @@ -288,7 +286,7 @@ public class ReferenceManifestDetailsPageController } } } catch (NullPointerException npEx) { - log.warn("Unable to link signing certificate: " + npEx.getMessage()); + log.warn("Unable to link signing certificate: {}", npEx.getMessage()); } return data; } @@ -610,12 +608,6 @@ public class ReferenceManifestDetailsPageController String uuidError = "Failed to parse ID from: " + params.getId(); messages.addError(uuidError); log.error(uuidError, iaEx); - } catch (CertificateException cEx) { - log.error(cEx); - } catch (NoSuchAlgorithmException nsEx) { - log.error(nsEx); - } catch (IOException ioEx) { - log.error(ioEx); } catch (Exception ex) { log.error(ex); } diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ValidationReportsPageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ValidationReportsPageController.java index d158d27f..ba4fad8e 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ValidationReportsPageController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ValidationReportsPageController.java @@ -28,6 +28,7 @@ import org.springframework.data.domain.Sort; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; @@ -115,10 +116,10 @@ public class ValidationReportsPageController extends PageController getTableData( final DataTableInput input) { - log.debug("Handling request for summary list: " + input); + log.debug("Handling request for summary list: {}", input); // attempt to get the column property based on the order index. String orderColumnName = input.getOrderColumnName(); - log.debug("Ordering on column: " + orderColumnName); + log.debug("Ordering on column: {}", orderColumnName); FilteredRecordsList records = new FilteredRecordsList<>(); int currentPage = input.getStart() / input.getLength(); @@ -145,8 +146,7 @@ public class ValidationReportsPageController extends PageController createTimes = new ArrayList(); + ArrayList createTimes = new ArrayList<>(); String[] deviceNames = new String[] {}; String columnHeaders = ""; boolean systemOnly = false; @@ -171,7 +171,7 @@ public class ValidationReportsPageController extends PageController> parsedComponents, final String company, @@ -384,19 +383,19 @@ public class ValidationReportsPageController extends PageController> parseComponents(final PlatformCredential pc) { - ArrayList> parsedComponents = new ArrayList>(); + ArrayList> parsedComponents = new ArrayList<>(); ArrayList> chainComponents = new ArrayList<>(); StringBuilder componentFailureString = new StringBuilder(); if (pc.getComponentIdentifiers() != null - && pc.getComponentIdentifiers().size() > 0) { + && !pc.getComponentIdentifiers().isEmpty()) { componentFailureString.append(pc.getComponentFailures()); // get all the certificates associated with the platform serial List chainCertificates = certificateRepository.byBoardSerialNumber(pc.getPlatformSerial()); // combine all components in each certificate for (ComponentIdentifier ci : pc.getComponentIdentifiers()) { - ArrayList issuerAndComponent = new ArrayList(); + ArrayList issuerAndComponent = new ArrayList<>(); issuerAndComponent.add(pc.getHolderIssuer()); issuerAndComponent.add(ci); chainComponents.add(issuerAndComponent); @@ -406,16 +405,16 @@ public class ValidationReportsPageController extends PageController issuerAndComponent = new ArrayList(); + ArrayList issuerAndComponent = new ArrayList<>(); issuerAndComponent.add(cert.getHolderIssuer()); issuerAndComponent.add(ci); chainComponents.add(issuerAndComponent); } } } - log.info("Component failures: " + componentFailureString); + log.info("Component failures: {}", componentFailureString); for (ArrayList issuerAndComponent : chainComponents) { - ArrayList componentData = new ArrayList(); + ArrayList componentData = new ArrayList<>(); String issuer = (String) issuerAndComponent.get(0); issuer = issuer.replaceAll(",", " "); ComponentIdentifier ci = (ComponentIdentifier) issuerAndComponent.get(1); From 22912634ec23dd197207973bda11682dc7a5014c Mon Sep 17 00:00:00 2001 From: TheSilentCoder <184309164+ThatSilentCoder@users.noreply.github.com> Date: Fri, 1 Nov 2024 15:13:54 -0400 Subject: [PATCH 14/22] issue_825: Successfully deleted HIRS_Provisioner TPM2 and can build successfully. --- HIRS_AttestationCA/build.gradle | 18 +- HIRS_AttestationCA/config/genJavaProtoBuf.sh | 4 +- .../provision/IdentityClaimProcessor.java | 56 +- .../config/genJavaProtoBuf.sh | 4 +- HIRS_ProvisionerTPM2/CMakeLists.txt | 312 --- HIRS_ProvisionerTPM2/README.md | 71 - HIRS_ProvisionerTPM2/build.gradle | 19 - HIRS_ProvisionerTPM2/config/doxygen.config | 2408 ----------------- .../config/log4cplus_config.ini | 27 - .../docs/dependencies-centos.md | 19 - .../docs/developer-dependencies-centos.md | 27 - .../docs/developer-dependencies-debian.md | 25 - HIRS_ProvisionerTPM2/include/CommandTpm2.h | 145 - .../include/DeviceInfoCollector.h | 43 - .../include/HirsRuntimeException.h | 31 - HIRS_ProvisionerTPM2/include/Logger.h | 67 - HIRS_ProvisionerTPM2/include/Process.h | 58 - HIRS_ProvisionerTPM2/include/Properties.h | 42 - .../include/RestfulClientProvisioner.h | 69 - HIRS_ProvisionerTPM2/include/Tpm2ToolsUtils.h | 112 - HIRS_ProvisionerTPM2/include/Tss.h.in | 6 - HIRS_ProvisionerTPM2/include/Utils.h | 160 -- HIRS_ProvisionerTPM2/include/Version.h.in | 13 - .../lib/CPR.CMakeLists.txt.in | 15 - .../lib/CppLint.CMakeLists.txt.in | 14 - .../lib/GoogleTest.CMakeLists.txt.in | 15 - .../package/package.tpm2.centos7.sh | 47 - .../package/package.tpm2.ubuntu.sh | 47 - .../package/package_release.sh | 15 - HIRS_ProvisionerTPM2/package/postinst | 38 - .../package/rpm-post-install.sh | 59 - .../scripts/tpm2-provisioner-system-check.sh | 16 - HIRS_ProvisionerTPM2/src/CMakeLists.txt | 45 - HIRS_ProvisionerTPM2/src/CommandTpm2.cpp | 836 ------ .../src/DeviceInfoCollector.cpp | 248 -- .../src/HirsRuntimeException.cpp | 31 - HIRS_ProvisionerTPM2/src/Logger.cpp | 149 - HIRS_ProvisionerTPM2/src/Process.cpp | 210 -- HIRS_ProvisionerTPM2/src/Properties.cpp | 175 -- .../src/ProvisionerTpm2.proto | 102 - .../src/RestfulClientProvisioner.cpp | 161 -- HIRS_ProvisionerTPM2/src/TPM2_Provisioner.cpp | 287 -- HIRS_ProvisionerTPM2/src/Tpm2ToolsUtils.cpp | 199 -- HIRS_ProvisionerTPM2/src/Utils.cpp | 310 --- HIRS_ProvisionerTPM2/src/tpm_version.cpp | 191 -- HIRS_ProvisionerTPM2/test/CMakeLists.txt | 51 - HIRS_ProvisionerTPM2/test/Process_Test.cpp | 117 - HIRS_ProvisionerTPM2/test/Properties_Test.cpp | 120 - .../test/RestfulClientProvisioner_Test.cpp | 54 - .../test/Tpm2ToolsUtils_Test.cpp | 348 --- HIRS_ProvisionerTPM2/test/Utils_Test.cpp | 356 --- .../centos-7.4-tpm2tools-v1.1.0/Vagrantfile | 4 - .../centos-7.4-tpm2tools-v2.1.0/Vagrantfile | 4 - scripts/genJavaProtoBuf.sh | 4 +- 54 files changed, 45 insertions(+), 7959 deletions(-) delete mode 100644 HIRS_ProvisionerTPM2/CMakeLists.txt delete mode 100644 HIRS_ProvisionerTPM2/README.md delete mode 100644 HIRS_ProvisionerTPM2/build.gradle delete mode 100644 HIRS_ProvisionerTPM2/config/doxygen.config delete mode 100644 HIRS_ProvisionerTPM2/config/log4cplus_config.ini delete mode 100644 HIRS_ProvisionerTPM2/docs/dependencies-centos.md delete mode 100644 HIRS_ProvisionerTPM2/docs/developer-dependencies-centos.md delete mode 100644 HIRS_ProvisionerTPM2/docs/developer-dependencies-debian.md delete mode 100644 HIRS_ProvisionerTPM2/include/CommandTpm2.h delete mode 100644 HIRS_ProvisionerTPM2/include/DeviceInfoCollector.h delete mode 100644 HIRS_ProvisionerTPM2/include/HirsRuntimeException.h delete mode 100644 HIRS_ProvisionerTPM2/include/Logger.h delete mode 100644 HIRS_ProvisionerTPM2/include/Process.h delete mode 100644 HIRS_ProvisionerTPM2/include/Properties.h delete mode 100644 HIRS_ProvisionerTPM2/include/RestfulClientProvisioner.h delete mode 100644 HIRS_ProvisionerTPM2/include/Tpm2ToolsUtils.h delete mode 100644 HIRS_ProvisionerTPM2/include/Tss.h.in delete mode 100644 HIRS_ProvisionerTPM2/include/Utils.h delete mode 100644 HIRS_ProvisionerTPM2/include/Version.h.in delete mode 100644 HIRS_ProvisionerTPM2/lib/CPR.CMakeLists.txt.in delete mode 100644 HIRS_ProvisionerTPM2/lib/CppLint.CMakeLists.txt.in delete mode 100644 HIRS_ProvisionerTPM2/lib/GoogleTest.CMakeLists.txt.in delete mode 100755 HIRS_ProvisionerTPM2/package/package.tpm2.centos7.sh delete mode 100755 HIRS_ProvisionerTPM2/package/package.tpm2.ubuntu.sh delete mode 100755 HIRS_ProvisionerTPM2/package/package_release.sh delete mode 100644 HIRS_ProvisionerTPM2/package/postinst delete mode 100644 HIRS_ProvisionerTPM2/package/rpm-post-install.sh delete mode 100755 HIRS_ProvisionerTPM2/scripts/tpm2-provisioner-system-check.sh delete mode 100644 HIRS_ProvisionerTPM2/src/CMakeLists.txt delete mode 100644 HIRS_ProvisionerTPM2/src/CommandTpm2.cpp delete mode 100644 HIRS_ProvisionerTPM2/src/DeviceInfoCollector.cpp delete mode 100644 HIRS_ProvisionerTPM2/src/HirsRuntimeException.cpp delete mode 100644 HIRS_ProvisionerTPM2/src/Logger.cpp delete mode 100644 HIRS_ProvisionerTPM2/src/Process.cpp delete mode 100644 HIRS_ProvisionerTPM2/src/Properties.cpp delete mode 100644 HIRS_ProvisionerTPM2/src/ProvisionerTpm2.proto delete mode 100644 HIRS_ProvisionerTPM2/src/RestfulClientProvisioner.cpp delete mode 100644 HIRS_ProvisionerTPM2/src/TPM2_Provisioner.cpp delete mode 100644 HIRS_ProvisionerTPM2/src/Tpm2ToolsUtils.cpp delete mode 100644 HIRS_ProvisionerTPM2/src/Utils.cpp delete mode 100644 HIRS_ProvisionerTPM2/src/tpm_version.cpp delete mode 100644 HIRS_ProvisionerTPM2/test/CMakeLists.txt delete mode 100644 HIRS_ProvisionerTPM2/test/Process_Test.cpp delete mode 100644 HIRS_ProvisionerTPM2/test/Properties_Test.cpp delete mode 100644 HIRS_ProvisionerTPM2/test/RestfulClientProvisioner_Test.cpp delete mode 100644 HIRS_ProvisionerTPM2/test/Tpm2ToolsUtils_Test.cpp delete mode 100644 HIRS_ProvisionerTPM2/test/Utils_Test.cpp delete mode 100644 HIRS_ProvisionerTPM2/tpm2_vagrantBoxes/centos-7.4-tpm2tools-v1.1.0/Vagrantfile delete mode 100644 HIRS_ProvisionerTPM2/tpm2_vagrantBoxes/centos-7.4-tpm2tools-v2.1.0/Vagrantfile diff --git a/HIRS_AttestationCA/build.gradle b/HIRS_AttestationCA/build.gradle index 092747c7..6f1d76e1 100644 --- a/HIRS_AttestationCA/build.gradle +++ b/HIRS_AttestationCA/build.gradle @@ -70,10 +70,10 @@ configurations.checkstyle { } } checkstyleMain { - source ='src/main/java' + source = 'src/main/java' } checkstyleTest { - source ='src/test/java' + source = 'src/test/java' } tasks.withType(Checkstyle) { reports { @@ -82,16 +82,16 @@ tasks.withType(Checkstyle) { } } protobuf { - protoc { - artifact = 'com.google.protobuf:protoc:3.24.3' - } + protoc { + artifact = 'com.google.protobuf:protoc:3.24.3' + } } sourceSets { - main { - proto { - srcDir '../HIRS_ProvisionerTPM2/src' + main { + proto { + srcDir '../HIRS_Provisioner.NET/hirs/Resources' + } } - } } test { diff --git a/HIRS_AttestationCA/config/genJavaProtoBuf.sh b/HIRS_AttestationCA/config/genJavaProtoBuf.sh index 53691217..e25e85be 100755 --- a/HIRS_AttestationCA/config/genJavaProtoBuf.sh +++ b/HIRS_AttestationCA/config/genJavaProtoBuf.sh @@ -7,10 +7,10 @@ dir=$(pwd) # Relative paths are different when building locally versus on CI if [[ "$dir" == *"package"* ]]; then - SRC_DIR=$dir/../../../../../../HIRS_ProvisionerTPM2/src + SRC_DIR=$dir/../../../../../../HIRS_Provisioner.NET/hirs/Resources DEST_DIR=$dir/../src/main/java else - SRC_DIR=../../HIRS_ProvisionerTPM2/src + SRC_DIR=../../HIRS_Provisioner.NET/hirs/Resources DEST_DIR=../src/main/java fi protoc -I=$SRC_DIR --java_out=$DEST_DIR $SRC_DIR/ProvisionerTpm2.proto diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/IdentityClaimProcessor.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/IdentityClaimProcessor.java index 2b95045a..8549b7b0 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/IdentityClaimProcessor.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/IdentityClaimProcessor.java @@ -1,6 +1,5 @@ package hirs.attestationca.persist.provision; -import com.fasterxml.jackson.databind.ser.Serializers; import com.google.protobuf.ByteString; import hirs.attestationca.configuration.provisionerTpm2.ProvisionerTpm2; import hirs.attestationca.persist.entity.manager.CertificateRepository; @@ -69,24 +68,23 @@ import java.util.regex.Pattern; @Log4j2 public class IdentityClaimProcessor extends AbstractProcessor { - private static final String PCR_QUOTE_MASK = "0,1,2,3,4,5,6,7,8,9,10,11,12,13," - + "14,15,16,17,18,19,20,21,22,23"; - - private static final int NUM_OF_VARIABLES = 5; /** * Number of bytes to include in the TPM2.0 nonce. */ public static final int NONCE_LENGTH = 20; + private static final String PCR_QUOTE_MASK = "0,1,2,3,4,5,6,7,8,9,10,11,12,13," + + "14,15,16,17,18,19,20,21,22,23"; + private static final int NUM_OF_VARIABLES = 5; private static final int MAC_BYTES = 6; - private SupplyChainValidationService supplyChainValidationService; - private CertificateRepository certificateRepository; - private ComponentResultRepository componentResultRepository; - private ComponentInfoRepository componentInfoRepository; - private ReferenceManifestRepository referenceManifestRepository; - private ReferenceDigestValueRepository referenceDigestValueRepository; - private DeviceRepository deviceRepository; - private TPM2ProvisionerStateRepository tpm2ProvisionerStateRepository; + private final SupplyChainValidationService supplyChainValidationService; + private final CertificateRepository certificateRepository; + private final ComponentResultRepository componentResultRepository; + private final ComponentInfoRepository componentInfoRepository; + private final ReferenceManifestRepository referenceManifestRepository; + private final ReferenceDigestValueRepository referenceDigestValueRepository; + private final DeviceRepository deviceRepository; + private final TPM2ProvisionerStateRepository tpm2ProvisionerStateRepository; /** * Constructor. @@ -116,8 +114,8 @@ public class IdentityClaimProcessor extends AbstractProcessor { * Basic implementation of the ACA processIdentityClaimTpm2 method. Parses the claim, * stores the device info, performs supply chain validation, generates a nonce, * and wraps that nonce with the make credential process before returning it to the client. - * attCert.setPcrValues(pcrValues); - + * attCert.setPcrValues(pcrValues); + * * @param identityClaim the request to process, cannot be null * @return an identity claim response for the specified request containing a wrapped blob */ @@ -147,7 +145,7 @@ public class IdentityClaimProcessor extends AbstractProcessor { } } - ByteString blobStr = ByteString.copyFrom(new byte[]{}); + ByteString blobStr = ByteString.copyFrom(new byte[] {}); if (validationResult == AppraisalStatus.Status.PASS) { RSAPublicKey akPub = ProvisionUtils.parsePublicKey(claim.getAkPublicArea().toByteArray()); byte[] nonce = ProvisionUtils.generateRandomBytes(NONCE_LENGTH); @@ -195,7 +193,8 @@ public class IdentityClaimProcessor extends AbstractProcessor { private AppraisalStatus.Status doSupplyChainValidation( final ProvisionerTpm2.IdentityClaim claim, final PublicKey ekPub) { // attempt to find an endorsement credential to validate - EndorsementCredential endorsementCredential = parseEcFromIdentityClaim(claim, ekPub, certificateRepository); + EndorsementCredential endorsementCredential = + parseEcFromIdentityClaim(claim, ekPub, certificateRepository); // attempt to find platform credentials to validate List platformCredentials = parsePcsFromIdentityClaim(claim, @@ -283,6 +282,7 @@ public class IdentityClaimProcessor extends AbstractProcessor { /** * Converts a protobuf DeviceInfo object to a HIRS Utils DeviceInfoReport object. + * * @param claim the protobuf serialized identity claim containing the device info * @return a HIRS Utils DeviceInfoReport representation of device info */ @@ -357,7 +357,7 @@ public class IdentityClaimProcessor extends AbstractProcessor { String fileName = ""; Pattern pattern = Pattern.compile("([^\\s]+(\\.(?i)(rimpcr|rimel|bin|log))$)"); Matcher matcher; - MessageDigest messageDigest = MessageDigest.getInstance("SHA-256"); + MessageDigest messageDigest = MessageDigest.getInstance("SHA-256"); if (dv.getSwidfileCount() > 0) { for (ByteString swidFile : dv.getSwidfileList()) { @@ -425,9 +425,10 @@ public class IdentityClaimProcessor extends AbstractProcessor { if (dv.getLogfileCount() > 0) { for (ByteString logFile : dv.getLogfileList()) { try { - support = (SupportReferenceManifest) referenceManifestRepository.findByHexDecHashAndRimType( + support = + (SupportReferenceManifest) referenceManifestRepository.findByHexDecHashAndRimType( Hex.encodeHexString(messageDigest.digest(logFile.toByteArray())), - ReferenceManifest.SUPPORT_RIM); + ReferenceManifest.SUPPORT_RIM); if (support == null) { /* Either the logFile does not have a corresponding support RIM in the backend @@ -512,8 +513,10 @@ public class IdentityClaimProcessor extends AbstractProcessor { } // now update support rim - SupportReferenceManifest dbSupport = (SupportReferenceManifest) referenceManifestRepository - .findByHexDecHashAndRimType(swid.getHashValue(), ReferenceManifest.SUPPORT_RIM); + SupportReferenceManifest dbSupport = + (SupportReferenceManifest) referenceManifestRepository + .findByHexDecHashAndRimType(swid.getHashValue(), + ReferenceManifest.SUPPORT_RIM); if (dbSupport != null) { dbSupport.setFileName(swid.getName()); dbSupport.setSwidTagVersion(dbBaseRim.getSwidTagVersion()); @@ -584,7 +587,7 @@ public class IdentityClaimProcessor extends AbstractProcessor { dv.getNw().getHostname())); } - // Get TPM info, currently unimplemented + // Get TPM info, currently unimplemented TPMInfo tpmInfo = new TPMInfo(DeviceInfoEnums.NOT_SPECIFIED, (short) 0, (short) 0, @@ -628,7 +631,8 @@ public class IdentityClaimProcessor extends AbstractProcessor { } if (baseSupportRim != null - && referenceDigestValueRepository.findBySupportRimHash(baseSupportRim.getHexDecHash()).isEmpty()) { + && referenceDigestValueRepository.findBySupportRimHash(baseSupportRim.getHexDecHash()) + .isEmpty()) { try { TCGEventLog logProcessor = new TCGEventLog(baseSupportRim.getRimBytes()); ReferenceDigestValue rdv; @@ -688,7 +692,7 @@ public class IdentityClaimProcessor extends AbstractProcessor { log.error(String.format("Patching value does not exist (%s)", patchedValue)); } else { - // WIP - Until we get patch examples + // WIP - Until we get patch examples dbRdv.setPatched(true); } } @@ -721,7 +725,7 @@ public class IdentityClaimProcessor extends AbstractProcessor { } private int handleDeviceComponents(final String hostName, final String paccorString) { - int deviceComponents = 0 ; + int deviceComponents = 0; Map componentInfoMap = new HashMap<>(); try { List componentInfos = SupplyChainCredentialValidator diff --git a/HIRS_AttestationCAPortal/config/genJavaProtoBuf.sh b/HIRS_AttestationCAPortal/config/genJavaProtoBuf.sh index 53691217..e25e85be 100755 --- a/HIRS_AttestationCAPortal/config/genJavaProtoBuf.sh +++ b/HIRS_AttestationCAPortal/config/genJavaProtoBuf.sh @@ -7,10 +7,10 @@ dir=$(pwd) # Relative paths are different when building locally versus on CI if [[ "$dir" == *"package"* ]]; then - SRC_DIR=$dir/../../../../../../HIRS_ProvisionerTPM2/src + SRC_DIR=$dir/../../../../../../HIRS_Provisioner.NET/hirs/Resources DEST_DIR=$dir/../src/main/java else - SRC_DIR=../../HIRS_ProvisionerTPM2/src + SRC_DIR=../../HIRS_Provisioner.NET/hirs/Resources DEST_DIR=../src/main/java fi protoc -I=$SRC_DIR --java_out=$DEST_DIR $SRC_DIR/ProvisionerTpm2.proto diff --git a/HIRS_ProvisionerTPM2/CMakeLists.txt b/HIRS_ProvisionerTPM2/CMakeLists.txt deleted file mode 100644 index 768e694b..00000000 --- a/HIRS_ProvisionerTPM2/CMakeLists.txt +++ /dev/null @@ -1,312 +0,0 @@ -# Root CMake file in charge of managing build/testing of TPM 2.0 Provisioner Library and Executable - -# General CMake Configuration -cmake_minimum_required(VERSION 2.8.12) - -# Initialize Project -project(HIRS_ProvisionerTPM2) - -# Set Project Information Variables -set(PROJECT_NAME hirs-provisioner-tpm2) -# Retrieve Complete Version -file(STRINGS ../VERSION COMPLETE_VERSION LIMIT_COUNT 1) -# Break Version into Components -string(REGEX MATCHALL "[0-9]+" VERSION_COMPONENTS ${COMPLETE_VERSION}) -# Set MAJOR_VERSION -list(GET VERSION_COMPONENTS 0 MAJOR_VERSION) -# Set MINOR_VERSION -list(GET VERSION_COMPONENTS 1 MINOR_VERSION) -# Set PATCH_VERSION -list(GET VERSION_COMPONENTS 2 PATCH_VERSION) -# Sets PACKAGE_RELEASE_NUMBER & PACKAGE_RELEASE_RETURN_CODE -execute_process(COMMAND sh "package/package_release.sh" - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - RESULT_VARIABLE PACKAGE_RELEASE_RETURN_ERROR - OUTPUT_VARIABLE PACKAGE_RELEASE_NUMBER - ERROR_STRIP_TRAILING_WHITESPACE - OUTPUT_STRIP_TRAILING_WHITESPACE) - -list(LENGTH VERSION_COMPONENTS VERSION_COMPONENTS_LENGTH) -# Check if version information pulled successfully, error otherwise -if(NOT ${VERSION_COMPONENTS_LENGTH} EQUAL 3) - message(FATAL_ERROR "Failed to pull version information from VERSION file, aborting.") -elseif(${PACKAGE_RELEASE_RETURN_ERROR}) - message(FATAL_ERROR "Failed to pull package release information from git, aborting.") -endif() - -# Embed version and package release into header file -configure_file ("${CMAKE_SOURCE_DIR}/include/Version.h.in" - "${CMAKE_SOURCE_DIR}/include/Version.h") - -# Attempt to Determine Build Environment -if (UNIX AND NOT APPLE) - file(READ /etc/os-release OS_INFO) - string(REGEX MATCH "NAME=\"[A-Za-z ]+\"" DISTRIBUTION_NAME ${OS_INFO}) - string(REGEX MATCH "VERSION_ID=\"[0-9. ]+\"" DISTRIBUTION_VERSION ${OS_INFO}) - string(REPLACE "NAME=" "" DISTRIBUTION ${DISTRIBUTION_NAME}) - string(REPLACE "VERSION_ID=" "" DISTRIBUTION_VERSION ${DISTRIBUTION_VERSION}) - string(REPLACE "\"" "" DISTRIBUTION ${DISTRIBUTION}) - string(REPLACE "\"" "" DISTRIBUTION_VERSION ${DISTRIBUTION_VERSION}) -endif() - -# Set C++ Standard 11 based on version information -if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.0) - set(CMAKE_CXX_STANDARD 11) - set(CMAKE_CXX_STANDARD_REQUIRED ON) -else () - set(CMAKE_CXX_FLAGS "-std=gnu++11") -endif () - -# Set User configurable options -option(BUILD_TESTS "Set to OFF to turn off testing" ON) -option(GENERATE_DOCS "Set to OFF to turn off documentation generation" ON) -option(STATIC_ANALYSIS "Set to OFF to turn off Static Analysis" ON) -option(STYLE_CHECK "Set to OFF to turn off code style checking" ON) - -# Set Project Path Variables -set(EXECUTABLE_OUTPUT_PATH bin) -set(PROJECT_CONFIG_DIR ${CMAKE_SOURCE_DIR}/config) -set(PROJECT_CONFIG_FILES ${PROJECT_CONFIG_DIR}/log4cplus_config.ini) - -# Set directories to look for header files -include_directories(${CMAKE_SOURCE_DIR}/include) -# Protobuf generated files are placed in the binary directory. The structure of -# the binary directory matches that of the source directory. Specifically, -# protobuf places the generated files in the same subfolder of the binary -# directory where the spec file was located in the source directory. In this -# case, that is the src folder. We get this file location automatically in the -# src/CMakeLists.txt file, but the variable holding its location is not defined -# in the scope of this file, so we need to add that directory to the include -# path manually. -include_directories(${CMAKE_BINARY_DIR}/src) - -# Attempt to find local 3rd party libraries and set their absolute paths -# Sets LOG_LIB -find_library(LOG_LIB NAMES log4cplus) -list(APPEND REQUIRED_LIBS ${LOG_LIB}) - -# Sets RE_LIB -find_library(RE_LIB NAMES re2) -list(APPEND REQUIRED_LIBS ${RE_LIB}) - -# Setup for TPM2_TSS_LIBRARIES -find_library(TPM2_SAPI_LIB NAMES sapi tss2) -find_library(TPM2_TCTI_DEVICE_LIB NAMES tcti-device tss2) -find_library(TPM2_TCTI_SOCKET_LIB NAMES tcti-socket tss2) -find_library(TPM2_TCTI_TABRMD_LIB NAMES tcti-tabrmd tss2) -set(TPM2_TSS_LIBRARIES ${TPM2_SAPI_LIB} ${TPM2_TCTI_DEVICE_LIB} - ${TPM2_TCTI_SOCKET_LIB} ${TPM2_TCTI_TABRMD_LIB}) -list(APPEND REQUIRED_LIBS ${TPM2_TSS_LIBRARIES}) - -# Set variable to determine TSS SAPI import -set(TSS_LIBRARY "") -string(COMPARE EQUAL ${TPM2_SAPI_LIB} ${TPM2_TCTI_DEVICE_LIB} LEGACY_TSS2_LIB_PRESENT) -if(LEGACY_TSS2_LIB_PRESENT) - set(TSS_LIBRARY "") -endif() - -# Embed correct TSS import into header file -configure_file ("${CMAKE_SOURCE_DIR}/include/Tss.h.in" - "${CMAKE_SOURCE_DIR}/include/Tss.h") - -# Download necessary 3rd party libraries -# Setup for CPR -configure_file(lib/CPR.CMakeLists.txt.in ${CMAKE_BINARY_DIR}/lib/cpr-download/CMakeLists.txt) -set(USE_SYSTEM_CURL ON CACHE BOOL "Do not allow CPR to use its own version of curl." FORCE) -set(BUILD_CPR_TESTS OFF CACHE BOOL "Do not waste time running CPR unit tests" FORCE) -execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . - RESULT_VARIABLE result - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/lib/cpr-download) -if(result) - message(FATAL_ERROR "CMake step for CPR failed: ${result}") -endif() -execute_process(COMMAND ${CMAKE_COMMAND} --build . - RESULT_VARIABLE result - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/lib/cpr-download ) -if(result) - message(FATAL_ERROR "Build step for CPR failed: ${result}") -endif() - -# Add cpr directly to our build and define the cpr target. -add_subdirectory(${CMAKE_BINARY_DIR}/lib/cpr-src - ${CMAKE_BINARY_DIR}/lib/cpr-build) -list(APPEND REQUIRED_LIBS ${CPR_LIBRARIES}) - -# Imports the FindProtobuf module, used to locate protobuf package and -# do source code generation -include(FindProtobuf) -# Finds protobuf binaries -find_package(Protobuf REQUIRED) -list(APPEND REQUIRED_LIBS ${PROTOBUF_LIBRARY}) - -# Define the TPM 2.0 Provisioner Library -add_subdirectory(src) - -# Create project executable -add_executable(${PROJECT_NAME} src/TPM2_Provisioner.cpp ${PROJECT_CONFIG_FILES}) - -# In TPM 2.0 land, there is currently not a way to fetch the TPM version info -add_executable(tpm_version src/tpm_version.cpp) -target_link_libraries(tpm_version ${TPM2_SAPI_LIB} ${TPM2_TCTI_TABRMD_LIB}) - -# Link necessary libraries -target_link_libraries(${PROJECT_NAME} TPM2_PROVISIONER_LIBRARY) - -set(THREADS_PREFER_PTHREAD_FLAG ON) -find_package(Threads REQUIRED) -if(THREADS_HAVE_PTHREAD_ARG) - target_compile_options(${PROJECT_NAME} PUBLIC "-pthread") -endif() -if(CMAKE_THREAD_LIBS_INIT) - target_link_libraries(${PROJECT_NAME} "${CMAKE_THREAD_LIBS_INIT}") -endif() - -# Set commands for installation of project on target system (i.e. "make install") -install(TARGETS ${PROJECT_NAME} tpm_version - DESTINATION "bin") -install(FILES config/log4cplus_config.ini DESTINATION /etc/hirs/TPM2_Provisioner) -install(FILES scripts/tpm_aca_provision DESTINATION /usr/local/bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) -install(DIRECTORY DESTINATION ${/var/log/hirs/provisioner} - DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ - GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) - -install(DIRECTORY DESTINATION ${/etc/hirs/provisioner} - DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ - GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) -install(FILES ../HIRS_Provisioner/src/main/resources/defaults.properties DESTINATION /etc/hirs/provisioner RENAME provisioner.properties) -install(FILES ../HIRS_Provisioner/hirs-provisioner-config.sh DESTINATION /etc/hirs/provisioner - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ - GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) -install(FILES ../HIRS_Provisioner/scripts/install/hirs-provisioner.sh DESTINATION /etc/hirs/provisioner - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ - GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) - -execute_process(COMMAND cp ../HIRS_Utils/src/main/resources/logging.properties ./config/ - RESULT_VARIABLE result - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) -if(result) - message(FATAL_ERROR "cp logging.properties from HIRS_Utils failed.") -endif() -execute_process(COMMAND cp ../HIRS_Provisioner/scripts/install/tpm_aca_provision ./scripts/ - RESULT_VARIABLE result - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) -if(result) - message(FATAL_ERROR "cp tpm_aca_provision from HIRS_Provisioner failed.") -endif() -install(FILES config/logging.properties DESTINATION /etc/hirs/) - -# check if Doxygen is installed -if(GENERATE_DOCS) - find_package(Doxygen) - if (DOXYGEN_FOUND) - # set input config file - set(DOXYGEN_CONFIG ${PROJECT_CONFIG_DIR}/doxygen.config) - - add_custom_target( doc_doxygen ALL - COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_CONFIG} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - COMMENT "Generating API documentation with Doxygen" - VERBATIM ) - else (DOXYGEN_FOUND) - message("Doxygen needs to be installed to generate the doxygen documentation") - endif (DOXYGEN_FOUND) -endif(GENERATE_DOCS) - -# Based on user-defined flag, optionally code style check the TPM 2.0 Library -if(STYLE_CHECK) - # Download and integrate CppLint for Style Checking - configure_file(lib/CppLint.CMakeLists.txt.in ${CMAKE_BINARY_DIR}/lib/cpplint/CMakeLists.txt) - execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . - RESULT_VARIABLE result - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/lib/cpplint) - if(result) - message(FATAL_ERROR "CMake step for CppLint failed: ${result}") - endif() - execute_process(COMMAND ${CMAKE_COMMAND} --build . - RESULT_VARIABLE result - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/lib/cpplint) - if(result) - message(FATAL_ERROR "Build step for CppLint failed: ${result}") - endif() - configure_file(${CMAKE_BINARY_DIR}/lib/cpplint-download/cpplint/cpplint.py ${CMAKE_SOURCE_DIR}/lint/cpplint.py) - add_custom_command( - TARGET ${PROJECT_NAME} - COMMENT "Run Style Check" - PRE_BUILD - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/lint - COMMAND python cpplint.py --root=${CMAKE_SOURCE_DIR}/../ --filter=-build/c++11,-legal/copyright ${CMAKE_SOURCE_DIR}/src/*.cpp ${CMAKE_SOURCE_DIR}/include/*.hpp ${CMAKE_SOURCE_DIR}/src/*.c ${CMAKE_SOURCE_DIR}/include/*.h ${CMAKE_SOURCE_DIR}/test/*.cpp - ) -endif(STYLE_CHECK) - -if(STATIC_ANALYSIS) - add_custom_command( - TARGET ${PROJECT_NAME} - COMMENT "Run Cppcheck Static Analysis" - PRE_BUILD - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - COMMAND cppcheck - --enable=warning,performance,portability,style - --std=c++11 - --library=posix.cfg - --error-exitcode=1 - --verbose - --suppress=readdirCalled - --suppress=passedByValue - -I include/ - src/ - ) -endif(STATIC_ANALYSIS) - -# Set variables for CPack Package generation tool -set(CPACK_PACKAGE_NAME HIRS_Provisioner_TPM_2_0) -set(CPACK_PACKAGE_VENDOR "U.S. Government") -set(CPACK_PACKAGE_CONTACT "U.S. Government") -set(CPACK_PACKAGE_VERSION_MAJOR ${MAJOR_VERSION}) -set(CPACK_PACKAGE_VERSION_MINOR ${MINOR_VERSION}) -set(CPACK_PACKAGE_VERSION_PATCH ${PATCH_VERSION}) -set(CPACK_PACKAGE_RELEASE ${PACKAGE_RELEASE_NUMBER}) -set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") -set(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}) - -# Setup Development Distribution CPack -if (${DISTRIBUTION} STREQUAL "Ubuntu") - # Set variables specific to CPack DEB package generator - set(CPACK_GENERATOR "DEB") - set(CPACK_DEBIAN_PACKAGE_NAME "HIRSProvisionerTPM2.0") - set(CPACK_DEBIAN_PACKAGE_SECTION "admin") - set(CPACK_DEBIAN_PACKAGE_DEPENDS "liblog4cplus-1.1-9(>=1.1.2), libcurl4-openssl-dev(>=7.0.0), paccor, procps(>=3.3.0)") - # Set variables specific to Ubuntu release version - if (${DISTRIBUTION_VERSION} STREQUAL "16.04") - set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, libre2-1v5(>=20160201), libprotobuf9v5(>=2.4.1)") - else() - set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, libprotobuf10(>=2.4.1)") - if (${DISTRIBUTION_VERSION} STREQUAL "17.10") - set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, libre2-3(>=20160201)") - elseif(${DISTRIBUTION_VERSION} STREQUAL "18.04" OR ${DISTRIBUTION_VERSION} STREQUAL "18.10") - set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, libre2-4(>=20160201)") - endif() - endif() - set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE amd64) - set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA ${CMAKE_SOURCE_DIR}/package/postinst) - set(CPACK_PACKAGE_FILE_NAME "${CPACK_DEBIAN_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_RELEASE}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}") -elseif (${DISTRIBUTION} STREQUAL "CentOS Linux") - # Set variables specific to CPack RPM package generator - set(CPACK_GENERATOR "RPM") - set(CPACK_RPM_PACKAGE_NAME "HIRS_Provisioner_TPM_2_0") - set(CPACK_RPM_PACKAGE_RELEASE_DIST "el7") - set(CPACK_RPM_PACKAGE_LICENSE "Apache License, Version 2.0") - set(CPACK_RPM_PACKAGE_GROUP "System Environment/Base") - set(CPACK_RPM_PACKAGE_REQUIRES "log4cplus >= 1.1.2, tpm2-tss >= 1.0, tpm2-tools >= 1.1.0, protobuf >= 2.4.1, re2 >= 20160401, libcurl >= 7.0.0, paccor, procps-ng >= 3.3.0") - set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/package/rpm-post-install.sh) - set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION /usr/local /usr/local/bin /usr/local/include /usr/local/lib) - set(CPACK_PACKAGE_FILE_NAME "${CPACK_RPM_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_RELEASE}.${CPACK_RPM_PACKAGE_RELEASE_DIST}.${CMAKE_SYSTEM_PROCESSOR}") -endif() - -# Set command to allow for running of CPack tool in build directory -include(CPack) - -# Based on user-defined flag, optionally build tests for TPM 2.0 Library -if (BUILD_TESTS) - enable_testing() - add_subdirectory(test) -endif(BUILD_TESTS) diff --git a/HIRS_ProvisionerTPM2/README.md b/HIRS_ProvisionerTPM2/README.md deleted file mode 100644 index 3bc71fa5..00000000 --- a/HIRS_ProvisionerTPM2/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# HIRS TPM 2.0 Provisioner - -Notice: The HIRS TPM 2.0 Provisioner is being deprecated. -Please refer to the [HIRS_Provisioner.Net](https://github.com/nsacyber/HIRS/tree/main/HIRS_Provisioner.NET) for currently supported HIRS provisioner. - -### Overview - -This document describes the HIRS TPM 2.0 Provisioner, a program that can leverage a machine and its TPM to: -- verify system attributes (as chosen in the ACA policy) -- request and store an Attestation Identity Credential - -See the top-level project documentation for more details. - -### Requirements - -**Development and runtime of this project is currently only supported on CentOS 7.** - -This project is built with the CMake cross-platform build suite. Consult the developer dependencies in [docs/](docs/) for a list of all third-party software that should be installed before attempting to the compile the project. Additional dependencies will be downloaded and built by CMake, so an active Internet connection is required to properly build the project. - -Python 2 is required for style checking. If you do not have Python 2 installed, either install it or set the `STYLE_CHECK` option to `OFF` as part of your CMake command or in the root `CMakeLists.txt` file. - -This project uses cppcheck to provide static code analysis. If you do not wish to run this analysis, set the `STATIC_ANALYSIS` option to `OFF` as part of your CMake Command or in the root `CMakeLists.txt` file. - -### Building - -Before you begin, please ensure you have the prerequisite dependencies installed on your system (listed in docs/developer-dependencies-centos.md). - -Two procedures for building the HIRS TPM 2.0 Provisioner with CMake are described below. - -#### Building with the CLion IDE - -1. Import the root directory as a project into the [CLion](https://www.jetbrains.com/clion/) IDE. -2. Click `Tools` > `CMake` > `Reset Cache and Reload Project` -3. Click `Run` > `Build` - -#### Building on the CLI - -1. Navigate to the root of the project directory. -2. Make a build folder. -3. Navigate into the build folder. -4. Run the following command to generate the appropriate make files: -``` -cmake ../ -``` -5. Run the following command to build the executable in the `bin` directory of the build folder: -``` -make -``` - -By default, the build will gather additional third-party dependencies, run the unit test suite, run static analsysis with cppcheck, and will generate code documentation (which is placed in the `./docs` directory.) - -#### Troubleshooting build issues -- CMake will fetch additional third-party dependencies during the build. The build will fail if these cannot be retrieved, so please ensure you have an active Internet connection before building. -- If it is found that CMake is building in an unusual/undesired directory, it's likely that CMake is using a cached target directory in lieu of an implicit target. At this point, look around the local project for a CMakeCache.txt file and delete it to force a cache refresh. - -### RPM Packaging - -The only currently supported target runtime environment is CentOS7. - -The CMakeLists is configured to package the project into an RPM using CPack. To build the RPM, navigate to the target build directory and run the following command: -``` -cpack -``` - -This will create the CentOS 7 RPM. - -**NOTE:** Packaging of the software for a given distribution should be done in the same environment as the target environment. Due to host-system specific, compilation-time targeting of certain system libraries and APIs, cross-platform compilation is not advised and could lead to package installation errors. - -### Installing - -Ensure that the third-party runtime dependencies are present on the target machine(s). These can be found in [/docs/developer-depedencies-centos.md](/docs/developer-depedencies-centos.md). If installing these via yum or another package manager that performs dependency resolution, the EPEL repository will need to be configured, as several of the Provisioner's dependencies are not in the base CentOS 7 repository. The Provisioner RPM can be transferred and installed on client machines via the usual mechanisms (rpm/yum/etc.) diff --git a/HIRS_ProvisionerTPM2/build.gradle b/HIRS_ProvisionerTPM2/build.gradle deleted file mode 100644 index dd9436e2..00000000 --- a/HIRS_ProvisionerTPM2/build.gradle +++ /dev/null @@ -1,19 +0,0 @@ -task cleanup(type: Delete) { - delete fileTree(dir: 'build', exclude: 'lib/') -} - -task cmake(type: Exec) { - workingDir './build' - commandLine 'cmake', '../' -} - -task make(type: Exec) { - workingDir './build' - commandLine 'make' -} - -task fullBuild(type: GradleBuild) { - tasks = ['cleanup', 'cmake', 'make'] -} - -build.dependsOn tasks.fullBuild \ No newline at end of file diff --git a/HIRS_ProvisionerTPM2/config/doxygen.config b/HIRS_ProvisionerTPM2/config/doxygen.config deleted file mode 100644 index 565c4643..00000000 --- a/HIRS_ProvisionerTPM2/config/doxygen.config +++ /dev/null @@ -1,2408 +0,0 @@ -# Doxyfile 1.8.11 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = "My Project" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = docs - -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. - -ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: -# Fortran. In the later case the parser tries to guess whether the code is fixed -# or free formatted code, this is the default for Fortran type files), VHDL. For -# instance to make doxygen treat .inc files as Fortran files (default is PHP), -# and .f files as C (default is Fortran), use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = YES - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# If one adds a struct or class to a group and this option is enabled, then also -# any nested class or struct is added to the same group. By default this option -# is disabled and one has to add nested compounds explicitly via \ingroup. -# The default value is: NO. - -GROUP_NESTED_COMPOUNDS = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO, these declarations will be -# included in the documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES, upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. -# The default value is: system dependent. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when -# a warning is encountered. -# The default value is: NO. - -WARN_AS_ERROR = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING -# Note: If this tag is empty the current directory is searched. - -INPUT = include src - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of -# possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by doxygen. -# -# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, -# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, -# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, -# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl, -# *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js. - -FILE_PATTERNS = *.cpp *.h - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to YES can help to show when doxygen was last run and thus if the -# documentation is up to date. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = NO - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the master .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = NO - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 4 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /