diff options
author | Joachim Tingvold <joachim@tingvold.com> | 2016-03-29 23:57:35 +0200 |
---|---|---|
committer | Joachim Tingvold <joachim@tingvold.com> | 2016-03-29 23:57:35 +0200 |
commit | fefa87ebf2b2e001a18666e0eb160cb84282f5ba (patch) | |
tree | 55236e0398f602e024ce4f07341812544bd945c3 | |
parent | 69722b70c1f07fd728388e8dcd2c3440ca4468be (diff) |
TG16-config.
841 files changed, 59730 insertions, 0 deletions
@@ -17,6 +17,7 @@ include/tgmanage.cfg.sh planning/planning fap/tools/generate_distro_config_ae_event-options/ nms/build/ +mibs/ # OS-crap .DS_Store diff --git a/sql/dump.sql b/examples/historical/sql/dump.sql index f65c7b9..f65c7b9 100644 --- a/sql/dump.sql +++ b/examples/historical/sql/dump.sql diff --git a/examples/tg16/dhcp/conf-v4/ap-creativia.conf b/examples/tg16/dhcp/conf-v4/ap-creativia.conf new file mode 100644 index 0000000..a2c1d89 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/ap-creativia.conf @@ -0,0 +1,12 @@ +zone ap-creativia.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.53.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.53.65; + option domain-name "ap-creativia.tg16.gathering.org"; + ddns-domainname "ap-creativia.tg16.gathering.org"; + range 88.92.53.68 88.92.53.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/ap-distro0.conf b/examples/tg16/dhcp/conf-v4/ap-distro0.conf new file mode 100644 index 0000000..43d05f2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/ap-distro0.conf @@ -0,0 +1,12 @@ +zone ap-distro0.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.51.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.51.1; + option domain-name "ap-distro0.tg16.gathering.org"; + ddns-domainname "ap-distro0.tg16.gathering.org"; + range 88.92.51.4 88.92.51.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/ap-distro1.conf b/examples/tg16/dhcp/conf-v4/ap-distro1.conf new file mode 100644 index 0000000..a37655f --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/ap-distro1.conf @@ -0,0 +1,12 @@ +zone ap-distro1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.51.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.51.65; + option domain-name "ap-distro1.tg16.gathering.org"; + ddns-domainname "ap-distro1.tg16.gathering.org"; + range 88.92.51.68 88.92.51.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/ap-distro2.conf b/examples/tg16/dhcp/conf-v4/ap-distro2.conf new file mode 100644 index 0000000..1486220 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/ap-distro2.conf @@ -0,0 +1,12 @@ +zone ap-distro2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.51.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.51.129; + option domain-name "ap-distro2.tg16.gathering.org"; + ddns-domainname "ap-distro2.tg16.gathering.org"; + range 88.92.51.132 88.92.51.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/ap-distro3.conf b/examples/tg16/dhcp/conf-v4/ap-distro3.conf new file mode 100644 index 0000000..e5adf0f --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/ap-distro3.conf @@ -0,0 +1,12 @@ +zone ap-distro3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.51.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.51.193; + option domain-name "ap-distro3.tg16.gathering.org"; + ddns-domainname "ap-distro3.tg16.gathering.org"; + range 88.92.51.196 88.92.51.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/ap-distro4.conf b/examples/tg16/dhcp/conf-v4/ap-distro4.conf new file mode 100644 index 0000000..6b4ace7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/ap-distro4.conf @@ -0,0 +1,12 @@ +zone ap-distro4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.52.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.52.1; + option domain-name "ap-distro4.tg16.gathering.org"; + ddns-domainname "ap-distro4.tg16.gathering.org"; + range 88.92.52.4 88.92.52.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/ap-distro5.conf b/examples/tg16/dhcp/conf-v4/ap-distro5.conf new file mode 100644 index 0000000..e90f2b7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/ap-distro5.conf @@ -0,0 +1,12 @@ +zone ap-distro5.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.52.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.52.65; + option domain-name "ap-distro5.tg16.gathering.org"; + ddns-domainname "ap-distro5.tg16.gathering.org"; + range 88.92.52.68 88.92.52.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/ap-distro6.conf b/examples/tg16/dhcp/conf-v4/ap-distro6.conf new file mode 100644 index 0000000..91272a7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/ap-distro6.conf @@ -0,0 +1,12 @@ +zone ap-distro6.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.52.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.52.129; + option domain-name "ap-distro6.tg16.gathering.org"; + ddns-domainname "ap-distro6.tg16.gathering.org"; + range 88.92.52.132 88.92.52.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/ap-distro7.conf b/examples/tg16/dhcp/conf-v4/ap-distro7.conf new file mode 100644 index 0000000..0fe1f4b --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/ap-distro7.conf @@ -0,0 +1,12 @@ +zone ap-distro7.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.52.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.52.193; + option domain-name "ap-distro7.tg16.gathering.org"; + ddns-domainname "ap-distro7.tg16.gathering.org"; + range 88.92.52.196 88.92.52.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/ap-stand.conf b/examples/tg16/dhcp/conf-v4/ap-stand.conf new file mode 100644 index 0000000..3b50ffa --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/ap-stand.conf @@ -0,0 +1,12 @@ +zone ap-stand.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.53.0 netmask 255.255.255.248 { + option subnet-mask 255.255.255.248; + option routers 88.92.53.1; + option domain-name "ap-stand.tg16.gathering.org"; + ddns-domainname "ap-stand.tg16.gathering.org"; + range 88.92.53.4 88.92.53.6; +} + diff --git a/examples/tg16/dhcp/conf-v4/auditorium.conf b/examples/tg16/dhcp/conf-v4/auditorium.conf new file mode 100644 index 0000000..6f19f51 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/auditorium.conf @@ -0,0 +1,12 @@ +zone auditorium.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.77.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.77.1; + option domain-name "auditorium.tg16.gathering.org"; + ddns-domainname "auditorium.tg16.gathering.org"; + range 88.92.77.4 88.92.77.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/creativia-village.conf b/examples/tg16/dhcp/conf-v4/creativia-village.conf new file mode 100644 index 0000000..677bdf0 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/creativia-village.conf @@ -0,0 +1,12 @@ +zone creativia-village.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.42.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.42.193; + option domain-name "creativia-village.tg16.gathering.org"; + ddns-domainname "creativia-village.tg16.gathering.org"; + range 88.92.42.196 88.92.42.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/creativia.conf b/examples/tg16/dhcp/conf-v4/creativia.conf new file mode 100644 index 0000000..989c001 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/creativia.conf @@ -0,0 +1,12 @@ +zone creativia.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.61.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.61.1; + option domain-name "creativia.tg16.gathering.org"; + ddns-domainname "creativia.tg16.gathering.org"; + range 88.92.61.4 88.92.61.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/creativia1.conf b/examples/tg16/dhcp/conf-v4/creativia1.conf new file mode 100644 index 0000000..7e60f55 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/creativia1.conf @@ -0,0 +1,12 @@ +zone creativia1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.40.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.40.1; + option domain-name "creativia1.tg16.gathering.org"; + ddns-domainname "creativia1.tg16.gathering.org"; + range 88.92.40.4 88.92.40.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/creativia2.conf b/examples/tg16/dhcp/conf-v4/creativia2.conf new file mode 100644 index 0000000..67db666 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/creativia2.conf @@ -0,0 +1,12 @@ +zone creativia2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.40.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.40.65; + option domain-name "creativia2.tg16.gathering.org"; + ddns-domainname "creativia2.tg16.gathering.org"; + range 88.92.40.68 88.92.40.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/creativia3.conf b/examples/tg16/dhcp/conf-v4/creativia3.conf new file mode 100644 index 0000000..adf56ae --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/creativia3.conf @@ -0,0 +1,12 @@ +zone creativia3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.40.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.40.129; + option domain-name "creativia3.tg16.gathering.org"; + ddns-domainname "creativia3.tg16.gathering.org"; + range 88.92.40.132 88.92.40.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/creativia4.conf b/examples/tg16/dhcp/conf-v4/creativia4.conf new file mode 100644 index 0000000..533fbe6 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/creativia4.conf @@ -0,0 +1,12 @@ +zone creativia4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.40.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.40.193; + option domain-name "creativia4.tg16.gathering.org"; + ddns-domainname "creativia4.tg16.gathering.org"; + range 88.92.40.196 88.92.40.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/creativia5.conf b/examples/tg16/dhcp/conf-v4/creativia5.conf new file mode 100644 index 0000000..9478c38 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/creativia5.conf @@ -0,0 +1,12 @@ +zone creativia5.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.41.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.41.1; + option domain-name "creativia5.tg16.gathering.org"; + ddns-domainname "creativia5.tg16.gathering.org"; + range 88.92.41.4 88.92.41.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/creativia6.conf b/examples/tg16/dhcp/conf-v4/creativia6.conf new file mode 100644 index 0000000..9c6058a --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/creativia6.conf @@ -0,0 +1,12 @@ +zone creativia6.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.42.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.42.65; + option domain-name "creativia6.tg16.gathering.org"; + ddns-domainname "creativia6.tg16.gathering.org"; + range 88.92.42.68 88.92.42.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/creativia7.conf b/examples/tg16/dhcp/conf-v4/creativia7.conf new file mode 100644 index 0000000..6579a5e --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/creativia7.conf @@ -0,0 +1,12 @@ +zone creativia7.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.42.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.42.129; + option domain-name "creativia7.tg16.gathering.org"; + ddns-domainname "creativia7.tg16.gathering.org"; + range 88.92.42.132 88.92.42.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/creativiasw1.conf b/examples/tg16/dhcp/conf-v4/creativiasw1.conf new file mode 100644 index 0000000..477a05b --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/creativiasw1.conf @@ -0,0 +1,12 @@ +zone creativiasw1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.43.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.43.1; + option domain-name "creativiasw1.tg16.gathering.org"; + ddns-domainname "creativiasw1.tg16.gathering.org"; + range 88.92.43.4 88.92.43.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/crew.conf b/examples/tg16/dhcp/conf-v4/crew.conf new file mode 100644 index 0000000..bffe219 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/crew.conf @@ -0,0 +1,12 @@ +zone crew.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.66.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.66.1; + option domain-name "crew.tg16.gathering.org"; + ddns-domainname "crew.tg16.gathering.org"; + range 88.92.66.4 88.92.66.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/deltaker-srv.conf b/examples/tg16/dhcp/conf-v4/deltaker-srv.conf new file mode 100644 index 0000000..d85de3d --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/deltaker-srv.conf @@ -0,0 +1,12 @@ +zone deltaker-srv.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.95.0 netmask 255.255.255.128 { + option subnet-mask 255.255.255.128; + option routers 88.92.95.1; + option domain-name "deltaker-srv.tg16.gathering.org"; + ddns-domainname "deltaker-srv.tg16.gathering.org"; + range 88.92.95.4 88.92.95.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e1-3.conf b/examples/tg16/dhcp/conf-v4/e1-3.conf new file mode 100644 index 0000000..777a6bc --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e1-3.conf @@ -0,0 +1,12 @@ +zone e1-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.0.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.0.1; + option domain-name "e1-3.tg16.gathering.org"; + ddns-domainname "e1-3.tg16.gathering.org"; + range 88.92.0.4 88.92.0.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e1-4.conf b/examples/tg16/dhcp/conf-v4/e1-4.conf new file mode 100644 index 0000000..76843d5 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e1-4.conf @@ -0,0 +1,12 @@ +zone e1-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.0.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.0.65; + option domain-name "e1-4.tg16.gathering.org"; + ddns-domainname "e1-4.tg16.gathering.org"; + range 88.92.0.68 88.92.0.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e11-1.conf b/examples/tg16/dhcp/conf-v4/e11-1.conf new file mode 100644 index 0000000..9a0af27 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e11-1.conf @@ -0,0 +1,12 @@ +zone e11-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.3.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.3.193; + option domain-name "e11-1.tg16.gathering.org"; + ddns-domainname "e11-1.tg16.gathering.org"; + range 88.92.3.196 88.92.3.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e11-2.conf b/examples/tg16/dhcp/conf-v4/e11-2.conf new file mode 100644 index 0000000..de986ca --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e11-2.conf @@ -0,0 +1,12 @@ +zone e11-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.4.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.4.1; + option domain-name "e11-2.tg16.gathering.org"; + ddns-domainname "e11-2.tg16.gathering.org"; + range 88.92.4.4 88.92.4.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e11-3.conf b/examples/tg16/dhcp/conf-v4/e11-3.conf new file mode 100644 index 0000000..2603826 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e11-3.conf @@ -0,0 +1,12 @@ +zone e11-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.4.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.4.65; + option domain-name "e11-3.tg16.gathering.org"; + ddns-domainname "e11-3.tg16.gathering.org"; + range 88.92.4.68 88.92.4.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e11-4.conf b/examples/tg16/dhcp/conf-v4/e11-4.conf new file mode 100644 index 0000000..c59de9a --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e11-4.conf @@ -0,0 +1,12 @@ +zone e11-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.4.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.4.129; + option domain-name "e11-4.tg16.gathering.org"; + ddns-domainname "e11-4.tg16.gathering.org"; + range 88.92.4.132 88.92.4.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e13-1.conf b/examples/tg16/dhcp/conf-v4/e13-1.conf new file mode 100644 index 0000000..25daf48 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e13-1.conf @@ -0,0 +1,12 @@ +zone e13-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.4.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.4.193; + option domain-name "e13-1.tg16.gathering.org"; + ddns-domainname "e13-1.tg16.gathering.org"; + range 88.92.4.196 88.92.4.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e13-2.conf b/examples/tg16/dhcp/conf-v4/e13-2.conf new file mode 100644 index 0000000..3b45fa5 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e13-2.conf @@ -0,0 +1,12 @@ +zone e13-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.5.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.5.1; + option domain-name "e13-2.tg16.gathering.org"; + ddns-domainname "e13-2.tg16.gathering.org"; + range 88.92.5.4 88.92.5.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e13-3.conf b/examples/tg16/dhcp/conf-v4/e13-3.conf new file mode 100644 index 0000000..f6ac057 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e13-3.conf @@ -0,0 +1,12 @@ +zone e13-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.5.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.5.65; + option domain-name "e13-3.tg16.gathering.org"; + ddns-domainname "e13-3.tg16.gathering.org"; + range 88.92.5.68 88.92.5.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e13-4.conf b/examples/tg16/dhcp/conf-v4/e13-4.conf new file mode 100644 index 0000000..0dc7b9e --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e13-4.conf @@ -0,0 +1,12 @@ +zone e13-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.5.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.5.129; + option domain-name "e13-4.tg16.gathering.org"; + ddns-domainname "e13-4.tg16.gathering.org"; + range 88.92.5.132 88.92.5.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e15-1.conf b/examples/tg16/dhcp/conf-v4/e15-1.conf new file mode 100644 index 0000000..7abd822 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e15-1.conf @@ -0,0 +1,12 @@ +zone e15-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.5.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.5.193; + option domain-name "e15-1.tg16.gathering.org"; + ddns-domainname "e15-1.tg16.gathering.org"; + range 88.92.5.196 88.92.5.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e15-2.conf b/examples/tg16/dhcp/conf-v4/e15-2.conf new file mode 100644 index 0000000..f5eb86a --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e15-2.conf @@ -0,0 +1,12 @@ +zone e15-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.6.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.6.1; + option domain-name "e15-2.tg16.gathering.org"; + ddns-domainname "e15-2.tg16.gathering.org"; + range 88.92.6.4 88.92.6.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e15-3.conf b/examples/tg16/dhcp/conf-v4/e15-3.conf new file mode 100644 index 0000000..9d87c04 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e15-3.conf @@ -0,0 +1,12 @@ +zone e15-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.6.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.6.65; + option domain-name "e15-3.tg16.gathering.org"; + ddns-domainname "e15-3.tg16.gathering.org"; + range 88.92.6.68 88.92.6.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e15-4.conf b/examples/tg16/dhcp/conf-v4/e15-4.conf new file mode 100644 index 0000000..5bb32f4 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e15-4.conf @@ -0,0 +1,12 @@ +zone e15-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.6.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.6.129; + option domain-name "e15-4.tg16.gathering.org"; + ddns-domainname "e15-4.tg16.gathering.org"; + range 88.92.6.132 88.92.6.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e17-1.conf b/examples/tg16/dhcp/conf-v4/e17-1.conf new file mode 100644 index 0000000..7f953c2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e17-1.conf @@ -0,0 +1,12 @@ +zone e17-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.6.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.6.193; + option domain-name "e17-1.tg16.gathering.org"; + ddns-domainname "e17-1.tg16.gathering.org"; + range 88.92.6.196 88.92.6.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e17-2.conf b/examples/tg16/dhcp/conf-v4/e17-2.conf new file mode 100644 index 0000000..ddbf7fc --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e17-2.conf @@ -0,0 +1,12 @@ +zone e17-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.7.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.7.1; + option domain-name "e17-2.tg16.gathering.org"; + ddns-domainname "e17-2.tg16.gathering.org"; + range 88.92.7.4 88.92.7.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e17-3.conf b/examples/tg16/dhcp/conf-v4/e17-3.conf new file mode 100644 index 0000000..c585769 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e17-3.conf @@ -0,0 +1,12 @@ +zone e17-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.7.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.7.65; + option domain-name "e17-3.tg16.gathering.org"; + ddns-domainname "e17-3.tg16.gathering.org"; + range 88.92.7.68 88.92.7.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e17-4.conf b/examples/tg16/dhcp/conf-v4/e17-4.conf new file mode 100644 index 0000000..ff5f5e5 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e17-4.conf @@ -0,0 +1,12 @@ +zone e17-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.7.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.7.129; + option domain-name "e17-4.tg16.gathering.org"; + ddns-domainname "e17-4.tg16.gathering.org"; + range 88.92.7.132 88.92.7.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e19-1.conf b/examples/tg16/dhcp/conf-v4/e19-1.conf new file mode 100644 index 0000000..b942f2a --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e19-1.conf @@ -0,0 +1,12 @@ +zone e19-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.7.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.7.193; + option domain-name "e19-1.tg16.gathering.org"; + ddns-domainname "e19-1.tg16.gathering.org"; + range 88.92.7.196 88.92.7.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e19-2.conf b/examples/tg16/dhcp/conf-v4/e19-2.conf new file mode 100644 index 0000000..8c0114a --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e19-2.conf @@ -0,0 +1,12 @@ +zone e19-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.8.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.8.1; + option domain-name "e19-2.tg16.gathering.org"; + ddns-domainname "e19-2.tg16.gathering.org"; + range 88.92.8.4 88.92.8.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e19-3.conf b/examples/tg16/dhcp/conf-v4/e19-3.conf new file mode 100644 index 0000000..f3bbb29 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e19-3.conf @@ -0,0 +1,12 @@ +zone e19-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.8.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.8.65; + option domain-name "e19-3.tg16.gathering.org"; + ddns-domainname "e19-3.tg16.gathering.org"; + range 88.92.8.68 88.92.8.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e19-4.conf b/examples/tg16/dhcp/conf-v4/e19-4.conf new file mode 100644 index 0000000..b823468 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e19-4.conf @@ -0,0 +1,12 @@ +zone e19-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.8.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.8.129; + option domain-name "e19-4.tg16.gathering.org"; + ddns-domainname "e19-4.tg16.gathering.org"; + range 88.92.8.132 88.92.8.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e21-1.conf b/examples/tg16/dhcp/conf-v4/e21-1.conf new file mode 100644 index 0000000..5cf065c --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e21-1.conf @@ -0,0 +1,12 @@ +zone e21-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.8.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.8.193; + option domain-name "e21-1.tg16.gathering.org"; + ddns-domainname "e21-1.tg16.gathering.org"; + range 88.92.8.196 88.92.8.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e21-2.conf b/examples/tg16/dhcp/conf-v4/e21-2.conf new file mode 100644 index 0000000..d77259a --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e21-2.conf @@ -0,0 +1,12 @@ +zone e21-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.9.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.9.1; + option domain-name "e21-2.tg16.gathering.org"; + ddns-domainname "e21-2.tg16.gathering.org"; + range 88.92.9.4 88.92.9.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e21-3.conf b/examples/tg16/dhcp/conf-v4/e21-3.conf new file mode 100644 index 0000000..4d3eea2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e21-3.conf @@ -0,0 +1,12 @@ +zone e21-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.9.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.9.65; + option domain-name "e21-3.tg16.gathering.org"; + ddns-domainname "e21-3.tg16.gathering.org"; + range 88.92.9.68 88.92.9.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e21-4.conf b/examples/tg16/dhcp/conf-v4/e21-4.conf new file mode 100644 index 0000000..fe688a1 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e21-4.conf @@ -0,0 +1,12 @@ +zone e21-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.9.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.9.129; + option domain-name "e21-4.tg16.gathering.org"; + ddns-domainname "e21-4.tg16.gathering.org"; + range 88.92.9.132 88.92.9.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e23-1.conf b/examples/tg16/dhcp/conf-v4/e23-1.conf new file mode 100644 index 0000000..d605b05 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e23-1.conf @@ -0,0 +1,12 @@ +zone e23-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.9.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.9.193; + option domain-name "e23-1.tg16.gathering.org"; + ddns-domainname "e23-1.tg16.gathering.org"; + range 88.92.9.196 88.92.9.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e23-2.conf b/examples/tg16/dhcp/conf-v4/e23-2.conf new file mode 100644 index 0000000..01e31b9 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e23-2.conf @@ -0,0 +1,12 @@ +zone e23-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.10.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.10.1; + option domain-name "e23-2.tg16.gathering.org"; + ddns-domainname "e23-2.tg16.gathering.org"; + range 88.92.10.4 88.92.10.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e23-3.conf b/examples/tg16/dhcp/conf-v4/e23-3.conf new file mode 100644 index 0000000..3e72841 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e23-3.conf @@ -0,0 +1,12 @@ +zone e23-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.10.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.10.65; + option domain-name "e23-3.tg16.gathering.org"; + ddns-domainname "e23-3.tg16.gathering.org"; + range 88.92.10.68 88.92.10.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e23-4.conf b/examples/tg16/dhcp/conf-v4/e23-4.conf new file mode 100644 index 0000000..77b1068 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e23-4.conf @@ -0,0 +1,12 @@ +zone e23-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.10.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.10.129; + option domain-name "e23-4.tg16.gathering.org"; + ddns-domainname "e23-4.tg16.gathering.org"; + range 88.92.10.132 88.92.10.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e25-1.conf b/examples/tg16/dhcp/conf-v4/e25-1.conf new file mode 100644 index 0000000..d524122 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e25-1.conf @@ -0,0 +1,12 @@ +zone e25-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.10.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.10.193; + option domain-name "e25-1.tg16.gathering.org"; + ddns-domainname "e25-1.tg16.gathering.org"; + range 88.92.10.196 88.92.10.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e25-2.conf b/examples/tg16/dhcp/conf-v4/e25-2.conf new file mode 100644 index 0000000..966bb3e --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e25-2.conf @@ -0,0 +1,12 @@ +zone e25-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.11.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.11.1; + option domain-name "e25-2.tg16.gathering.org"; + ddns-domainname "e25-2.tg16.gathering.org"; + range 88.92.11.4 88.92.11.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e27-1.conf b/examples/tg16/dhcp/conf-v4/e27-1.conf new file mode 100644 index 0000000..bce3c10 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e27-1.conf @@ -0,0 +1,12 @@ +zone e27-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.11.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.11.65; + option domain-name "e27-1.tg16.gathering.org"; + ddns-domainname "e27-1.tg16.gathering.org"; + range 88.92.11.68 88.92.11.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e27-2.conf b/examples/tg16/dhcp/conf-v4/e27-2.conf new file mode 100644 index 0000000..32ee336 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e27-2.conf @@ -0,0 +1,12 @@ +zone e27-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.11.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.11.129; + option domain-name "e27-2.tg16.gathering.org"; + ddns-domainname "e27-2.tg16.gathering.org"; + range 88.92.11.132 88.92.11.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e29-1.conf b/examples/tg16/dhcp/conf-v4/e29-1.conf new file mode 100644 index 0000000..ed6c2fd --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e29-1.conf @@ -0,0 +1,12 @@ +zone e29-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.11.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.11.193; + option domain-name "e29-1.tg16.gathering.org"; + ddns-domainname "e29-1.tg16.gathering.org"; + range 88.92.11.196 88.92.11.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e29-2.conf b/examples/tg16/dhcp/conf-v4/e29-2.conf new file mode 100644 index 0000000..864fb5b --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e29-2.conf @@ -0,0 +1,12 @@ +zone e29-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.12.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.12.1; + option domain-name "e29-2.tg16.gathering.org"; + ddns-domainname "e29-2.tg16.gathering.org"; + range 88.92.12.4 88.92.12.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e3-3.conf b/examples/tg16/dhcp/conf-v4/e3-3.conf new file mode 100644 index 0000000..1e6bd57 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e3-3.conf @@ -0,0 +1,12 @@ +zone e3-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.0.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.0.129; + option domain-name "e3-3.tg16.gathering.org"; + ddns-domainname "e3-3.tg16.gathering.org"; + range 88.92.0.132 88.92.0.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e3-4.conf b/examples/tg16/dhcp/conf-v4/e3-4.conf new file mode 100644 index 0000000..74f3a37 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e3-4.conf @@ -0,0 +1,12 @@ +zone e3-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.0.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.0.193; + option domain-name "e3-4.tg16.gathering.org"; + ddns-domainname "e3-4.tg16.gathering.org"; + range 88.92.0.196 88.92.0.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e31-1.conf b/examples/tg16/dhcp/conf-v4/e31-1.conf new file mode 100644 index 0000000..a20a647 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e31-1.conf @@ -0,0 +1,12 @@ +zone e31-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.12.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.12.65; + option domain-name "e31-1.tg16.gathering.org"; + ddns-domainname "e31-1.tg16.gathering.org"; + range 88.92.12.68 88.92.12.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e31-2.conf b/examples/tg16/dhcp/conf-v4/e31-2.conf new file mode 100644 index 0000000..b28dd44 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e31-2.conf @@ -0,0 +1,12 @@ +zone e31-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.12.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.12.129; + option domain-name "e31-2.tg16.gathering.org"; + ddns-domainname "e31-2.tg16.gathering.org"; + range 88.92.12.132 88.92.12.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e33-1.conf b/examples/tg16/dhcp/conf-v4/e33-1.conf new file mode 100644 index 0000000..3acaceb --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e33-1.conf @@ -0,0 +1,12 @@ +zone e33-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.12.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.12.193; + option domain-name "e33-1.tg16.gathering.org"; + ddns-domainname "e33-1.tg16.gathering.org"; + range 88.92.12.196 88.92.12.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e33-2.conf b/examples/tg16/dhcp/conf-v4/e33-2.conf new file mode 100644 index 0000000..f68776b --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e33-2.conf @@ -0,0 +1,12 @@ +zone e33-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.13.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.13.1; + option domain-name "e33-2.tg16.gathering.org"; + ddns-domainname "e33-2.tg16.gathering.org"; + range 88.92.13.4 88.92.13.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e35-1.conf b/examples/tg16/dhcp/conf-v4/e35-1.conf new file mode 100644 index 0000000..0de5841 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e35-1.conf @@ -0,0 +1,12 @@ +zone e35-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.13.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.13.65; + option domain-name "e35-1.tg16.gathering.org"; + ddns-domainname "e35-1.tg16.gathering.org"; + range 88.92.13.68 88.92.13.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e35-2.conf b/examples/tg16/dhcp/conf-v4/e35-2.conf new file mode 100644 index 0000000..b7d4e4c --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e35-2.conf @@ -0,0 +1,12 @@ +zone e35-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.13.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.13.129; + option domain-name "e35-2.tg16.gathering.org"; + ddns-domainname "e35-2.tg16.gathering.org"; + range 88.92.13.132 88.92.13.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e37-1.conf b/examples/tg16/dhcp/conf-v4/e37-1.conf new file mode 100644 index 0000000..fa6de10 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e37-1.conf @@ -0,0 +1,12 @@ +zone e37-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.13.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.13.193; + option domain-name "e37-1.tg16.gathering.org"; + ddns-domainname "e37-1.tg16.gathering.org"; + range 88.92.13.196 88.92.13.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e37-2.conf b/examples/tg16/dhcp/conf-v4/e37-2.conf new file mode 100644 index 0000000..6cab6b6 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e37-2.conf @@ -0,0 +1,12 @@ +zone e37-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.14.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.14.1; + option domain-name "e37-2.tg16.gathering.org"; + ddns-domainname "e37-2.tg16.gathering.org"; + range 88.92.14.4 88.92.14.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e39-1.conf b/examples/tg16/dhcp/conf-v4/e39-1.conf new file mode 100644 index 0000000..fee290c --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e39-1.conf @@ -0,0 +1,12 @@ +zone e39-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.14.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.14.65; + option domain-name "e39-1.tg16.gathering.org"; + ddns-domainname "e39-1.tg16.gathering.org"; + range 88.92.14.68 88.92.14.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e39-2.conf b/examples/tg16/dhcp/conf-v4/e39-2.conf new file mode 100644 index 0000000..a3060cb --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e39-2.conf @@ -0,0 +1,12 @@ +zone e39-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.14.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.14.129; + option domain-name "e39-2.tg16.gathering.org"; + ddns-domainname "e39-2.tg16.gathering.org"; + range 88.92.14.132 88.92.14.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e41-1.conf b/examples/tg16/dhcp/conf-v4/e41-1.conf new file mode 100644 index 0000000..4c083bc --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e41-1.conf @@ -0,0 +1,12 @@ +zone e41-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.14.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.14.193; + option domain-name "e41-1.tg16.gathering.org"; + ddns-domainname "e41-1.tg16.gathering.org"; + range 88.92.14.196 88.92.14.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e41-2.conf b/examples/tg16/dhcp/conf-v4/e41-2.conf new file mode 100644 index 0000000..a93f382 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e41-2.conf @@ -0,0 +1,12 @@ +zone e41-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.15.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.15.1; + option domain-name "e41-2.tg16.gathering.org"; + ddns-domainname "e41-2.tg16.gathering.org"; + range 88.92.15.4 88.92.15.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e41-3.conf b/examples/tg16/dhcp/conf-v4/e41-3.conf new file mode 100644 index 0000000..f3d7052 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e41-3.conf @@ -0,0 +1,12 @@ +zone e41-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.15.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.15.65; + option domain-name "e41-3.tg16.gathering.org"; + ddns-domainname "e41-3.tg16.gathering.org"; + range 88.92.15.68 88.92.15.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e41-4.conf b/examples/tg16/dhcp/conf-v4/e41-4.conf new file mode 100644 index 0000000..a2f28ed --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e41-4.conf @@ -0,0 +1,12 @@ +zone e41-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.15.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.15.129; + option domain-name "e41-4.tg16.gathering.org"; + ddns-domainname "e41-4.tg16.gathering.org"; + range 88.92.15.132 88.92.15.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e43-1.conf b/examples/tg16/dhcp/conf-v4/e43-1.conf new file mode 100644 index 0000000..64472af --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e43-1.conf @@ -0,0 +1,12 @@ +zone e43-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.15.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.15.193; + option domain-name "e43-1.tg16.gathering.org"; + ddns-domainname "e43-1.tg16.gathering.org"; + range 88.92.15.196 88.92.15.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e43-2.conf b/examples/tg16/dhcp/conf-v4/e43-2.conf new file mode 100644 index 0000000..e2138d2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e43-2.conf @@ -0,0 +1,12 @@ +zone e43-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.16.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.16.1; + option domain-name "e43-2.tg16.gathering.org"; + ddns-domainname "e43-2.tg16.gathering.org"; + range 88.92.16.4 88.92.16.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e43-3.conf b/examples/tg16/dhcp/conf-v4/e43-3.conf new file mode 100644 index 0000000..6c44386 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e43-3.conf @@ -0,0 +1,12 @@ +zone e43-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.16.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.16.65; + option domain-name "e43-3.tg16.gathering.org"; + ddns-domainname "e43-3.tg16.gathering.org"; + range 88.92.16.68 88.92.16.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e43-4.conf b/examples/tg16/dhcp/conf-v4/e43-4.conf new file mode 100644 index 0000000..312b8ca --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e43-4.conf @@ -0,0 +1,12 @@ +zone e43-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.16.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.16.129; + option domain-name "e43-4.tg16.gathering.org"; + ddns-domainname "e43-4.tg16.gathering.org"; + range 88.92.16.132 88.92.16.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e45-1.conf b/examples/tg16/dhcp/conf-v4/e45-1.conf new file mode 100644 index 0000000..da96e5a --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e45-1.conf @@ -0,0 +1,12 @@ +zone e45-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.16.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.16.193; + option domain-name "e45-1.tg16.gathering.org"; + ddns-domainname "e45-1.tg16.gathering.org"; + range 88.92.16.196 88.92.16.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e45-2.conf b/examples/tg16/dhcp/conf-v4/e45-2.conf new file mode 100644 index 0000000..e5ecf46 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e45-2.conf @@ -0,0 +1,12 @@ +zone e45-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.17.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.17.1; + option domain-name "e45-2.tg16.gathering.org"; + ddns-domainname "e45-2.tg16.gathering.org"; + range 88.92.17.4 88.92.17.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e45-3.conf b/examples/tg16/dhcp/conf-v4/e45-3.conf new file mode 100644 index 0000000..f14e02d --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e45-3.conf @@ -0,0 +1,12 @@ +zone e45-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.17.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.17.65; + option domain-name "e45-3.tg16.gathering.org"; + ddns-domainname "e45-3.tg16.gathering.org"; + range 88.92.17.68 88.92.17.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e45-4.conf b/examples/tg16/dhcp/conf-v4/e45-4.conf new file mode 100644 index 0000000..fc52ce5 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e45-4.conf @@ -0,0 +1,12 @@ +zone e45-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.17.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.17.129; + option domain-name "e45-4.tg16.gathering.org"; + ddns-domainname "e45-4.tg16.gathering.org"; + range 88.92.17.132 88.92.17.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e47-1.conf b/examples/tg16/dhcp/conf-v4/e47-1.conf new file mode 100644 index 0000000..0eb8b4b --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e47-1.conf @@ -0,0 +1,12 @@ +zone e47-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.17.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.17.193; + option domain-name "e47-1.tg16.gathering.org"; + ddns-domainname "e47-1.tg16.gathering.org"; + range 88.92.17.196 88.92.17.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e47-2.conf b/examples/tg16/dhcp/conf-v4/e47-2.conf new file mode 100644 index 0000000..95df3c3 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e47-2.conf @@ -0,0 +1,12 @@ +zone e47-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.18.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.18.1; + option domain-name "e47-2.tg16.gathering.org"; + ddns-domainname "e47-2.tg16.gathering.org"; + range 88.92.18.4 88.92.18.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e47-3.conf b/examples/tg16/dhcp/conf-v4/e47-3.conf new file mode 100644 index 0000000..4c10a38 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e47-3.conf @@ -0,0 +1,12 @@ +zone e47-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.18.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.18.65; + option domain-name "e47-3.tg16.gathering.org"; + ddns-domainname "e47-3.tg16.gathering.org"; + range 88.92.18.68 88.92.18.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e47-4.conf b/examples/tg16/dhcp/conf-v4/e47-4.conf new file mode 100644 index 0000000..d03ef07 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e47-4.conf @@ -0,0 +1,12 @@ +zone e47-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.18.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.18.129; + option domain-name "e47-4.tg16.gathering.org"; + ddns-domainname "e47-4.tg16.gathering.org"; + range 88.92.18.132 88.92.18.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e49-1.conf b/examples/tg16/dhcp/conf-v4/e49-1.conf new file mode 100644 index 0000000..41c5809 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e49-1.conf @@ -0,0 +1,12 @@ +zone e49-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.18.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.18.193; + option domain-name "e49-1.tg16.gathering.org"; + ddns-domainname "e49-1.tg16.gathering.org"; + range 88.92.18.196 88.92.18.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e49-2.conf b/examples/tg16/dhcp/conf-v4/e49-2.conf new file mode 100644 index 0000000..07bdf30 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e49-2.conf @@ -0,0 +1,12 @@ +zone e49-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.19.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.19.1; + option domain-name "e49-2.tg16.gathering.org"; + ddns-domainname "e49-2.tg16.gathering.org"; + range 88.92.19.4 88.92.19.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e49-3.conf b/examples/tg16/dhcp/conf-v4/e49-3.conf new file mode 100644 index 0000000..2be3337 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e49-3.conf @@ -0,0 +1,12 @@ +zone e49-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.19.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.19.65; + option domain-name "e49-3.tg16.gathering.org"; + ddns-domainname "e49-3.tg16.gathering.org"; + range 88.92.19.68 88.92.19.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e49-4.conf b/examples/tg16/dhcp/conf-v4/e49-4.conf new file mode 100644 index 0000000..7afb2d5 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e49-4.conf @@ -0,0 +1,12 @@ +zone e49-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.19.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.19.129; + option domain-name "e49-4.tg16.gathering.org"; + ddns-domainname "e49-4.tg16.gathering.org"; + range 88.92.19.132 88.92.19.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e5-2.conf b/examples/tg16/dhcp/conf-v4/e5-2.conf new file mode 100644 index 0000000..738ad9d --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e5-2.conf @@ -0,0 +1,12 @@ +zone e5-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.1.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.1.1; + option domain-name "e5-2.tg16.gathering.org"; + ddns-domainname "e5-2.tg16.gathering.org"; + range 88.92.1.4 88.92.1.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e5-3.conf b/examples/tg16/dhcp/conf-v4/e5-3.conf new file mode 100644 index 0000000..de3917c --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e5-3.conf @@ -0,0 +1,12 @@ +zone e5-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.1.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.1.65; + option domain-name "e5-3.tg16.gathering.org"; + ddns-domainname "e5-3.tg16.gathering.org"; + range 88.92.1.68 88.92.1.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e5-4.conf b/examples/tg16/dhcp/conf-v4/e5-4.conf new file mode 100644 index 0000000..c2d78f2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e5-4.conf @@ -0,0 +1,12 @@ +zone e5-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.1.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.1.129; + option domain-name "e5-4.tg16.gathering.org"; + ddns-domainname "e5-4.tg16.gathering.org"; + range 88.92.1.132 88.92.1.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e51-1.conf b/examples/tg16/dhcp/conf-v4/e51-1.conf new file mode 100644 index 0000000..d023a02 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e51-1.conf @@ -0,0 +1,12 @@ +zone e51-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.19.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.19.193; + option domain-name "e51-1.tg16.gathering.org"; + ddns-domainname "e51-1.tg16.gathering.org"; + range 88.92.19.196 88.92.19.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e51-2.conf b/examples/tg16/dhcp/conf-v4/e51-2.conf new file mode 100644 index 0000000..161c8fa --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e51-2.conf @@ -0,0 +1,12 @@ +zone e51-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.20.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.20.1; + option domain-name "e51-2.tg16.gathering.org"; + ddns-domainname "e51-2.tg16.gathering.org"; + range 88.92.20.4 88.92.20.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e51-3.conf b/examples/tg16/dhcp/conf-v4/e51-3.conf new file mode 100644 index 0000000..c66882e --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e51-3.conf @@ -0,0 +1,12 @@ +zone e51-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.20.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.20.65; + option domain-name "e51-3.tg16.gathering.org"; + ddns-domainname "e51-3.tg16.gathering.org"; + range 88.92.20.68 88.92.20.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e51-4.conf b/examples/tg16/dhcp/conf-v4/e51-4.conf new file mode 100644 index 0000000..8657cb2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e51-4.conf @@ -0,0 +1,12 @@ +zone e51-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.20.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.20.129; + option domain-name "e51-4.tg16.gathering.org"; + ddns-domainname "e51-4.tg16.gathering.org"; + range 88.92.20.132 88.92.20.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e53-1.conf b/examples/tg16/dhcp/conf-v4/e53-1.conf new file mode 100644 index 0000000..6c952a6 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e53-1.conf @@ -0,0 +1,12 @@ +zone e53-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.20.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.20.193; + option domain-name "e53-1.tg16.gathering.org"; + ddns-domainname "e53-1.tg16.gathering.org"; + range 88.92.20.196 88.92.20.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e53-2.conf b/examples/tg16/dhcp/conf-v4/e53-2.conf new file mode 100644 index 0000000..46c2d01 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e53-2.conf @@ -0,0 +1,12 @@ +zone e53-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.21.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.21.1; + option domain-name "e53-2.tg16.gathering.org"; + ddns-domainname "e53-2.tg16.gathering.org"; + range 88.92.21.4 88.92.21.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e53-3.conf b/examples/tg16/dhcp/conf-v4/e53-3.conf new file mode 100644 index 0000000..32b8e59 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e53-3.conf @@ -0,0 +1,12 @@ +zone e53-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.21.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.21.65; + option domain-name "e53-3.tg16.gathering.org"; + ddns-domainname "e53-3.tg16.gathering.org"; + range 88.92.21.68 88.92.21.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e53-4.conf b/examples/tg16/dhcp/conf-v4/e53-4.conf new file mode 100644 index 0000000..4c87e52 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e53-4.conf @@ -0,0 +1,12 @@ +zone e53-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.21.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.21.129; + option domain-name "e53-4.tg16.gathering.org"; + ddns-domainname "e53-4.tg16.gathering.org"; + range 88.92.21.132 88.92.21.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e55-1.conf b/examples/tg16/dhcp/conf-v4/e55-1.conf new file mode 100644 index 0000000..7fbf4f4 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e55-1.conf @@ -0,0 +1,12 @@ +zone e55-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.21.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.21.193; + option domain-name "e55-1.tg16.gathering.org"; + ddns-domainname "e55-1.tg16.gathering.org"; + range 88.92.21.196 88.92.21.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e55-2.conf b/examples/tg16/dhcp/conf-v4/e55-2.conf new file mode 100644 index 0000000..7e1a446 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e55-2.conf @@ -0,0 +1,12 @@ +zone e55-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.22.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.22.1; + option domain-name "e55-2.tg16.gathering.org"; + ddns-domainname "e55-2.tg16.gathering.org"; + range 88.92.22.4 88.92.22.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e55-3.conf b/examples/tg16/dhcp/conf-v4/e55-3.conf new file mode 100644 index 0000000..d198413 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e55-3.conf @@ -0,0 +1,12 @@ +zone e55-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.22.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.22.65; + option domain-name "e55-3.tg16.gathering.org"; + ddns-domainname "e55-3.tg16.gathering.org"; + range 88.92.22.68 88.92.22.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e55-4.conf b/examples/tg16/dhcp/conf-v4/e55-4.conf new file mode 100644 index 0000000..8d733fa --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e55-4.conf @@ -0,0 +1,12 @@ +zone e55-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.22.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.22.129; + option domain-name "e55-4.tg16.gathering.org"; + ddns-domainname "e55-4.tg16.gathering.org"; + range 88.92.22.132 88.92.22.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e57-1.conf b/examples/tg16/dhcp/conf-v4/e57-1.conf new file mode 100644 index 0000000..1e02eb2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e57-1.conf @@ -0,0 +1,12 @@ +zone e57-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.22.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.22.193; + option domain-name "e57-1.tg16.gathering.org"; + ddns-domainname "e57-1.tg16.gathering.org"; + range 88.92.22.196 88.92.22.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e57-2.conf b/examples/tg16/dhcp/conf-v4/e57-2.conf new file mode 100644 index 0000000..2a5b7c3 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e57-2.conf @@ -0,0 +1,12 @@ +zone e57-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.23.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.23.1; + option domain-name "e57-2.tg16.gathering.org"; + ddns-domainname "e57-2.tg16.gathering.org"; + range 88.92.23.4 88.92.23.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e57-3.conf b/examples/tg16/dhcp/conf-v4/e57-3.conf new file mode 100644 index 0000000..5d38bd2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e57-3.conf @@ -0,0 +1,12 @@ +zone e57-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.23.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.23.65; + option domain-name "e57-3.tg16.gathering.org"; + ddns-domainname "e57-3.tg16.gathering.org"; + range 88.92.23.68 88.92.23.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e57-4.conf b/examples/tg16/dhcp/conf-v4/e57-4.conf new file mode 100644 index 0000000..b0bf85f --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e57-4.conf @@ -0,0 +1,12 @@ +zone e57-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.23.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.23.129; + option domain-name "e57-4.tg16.gathering.org"; + ddns-domainname "e57-4.tg16.gathering.org"; + range 88.92.23.132 88.92.23.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e59-1.conf b/examples/tg16/dhcp/conf-v4/e59-1.conf new file mode 100644 index 0000000..22267a5 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e59-1.conf @@ -0,0 +1,12 @@ +zone e59-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.23.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.23.193; + option domain-name "e59-1.tg16.gathering.org"; + ddns-domainname "e59-1.tg16.gathering.org"; + range 88.92.23.196 88.92.23.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e59-2.conf b/examples/tg16/dhcp/conf-v4/e59-2.conf new file mode 100644 index 0000000..af8a916 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e59-2.conf @@ -0,0 +1,12 @@ +zone e59-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.24.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.24.1; + option domain-name "e59-2.tg16.gathering.org"; + ddns-domainname "e59-2.tg16.gathering.org"; + range 88.92.24.4 88.92.24.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e59-3.conf b/examples/tg16/dhcp/conf-v4/e59-3.conf new file mode 100644 index 0000000..97a8f03 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e59-3.conf @@ -0,0 +1,12 @@ +zone e59-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.24.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.24.65; + option domain-name "e59-3.tg16.gathering.org"; + ddns-domainname "e59-3.tg16.gathering.org"; + range 88.92.24.68 88.92.24.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e59-4.conf b/examples/tg16/dhcp/conf-v4/e59-4.conf new file mode 100644 index 0000000..2bf20a3 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e59-4.conf @@ -0,0 +1,12 @@ +zone e59-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.24.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.24.129; + option domain-name "e59-4.tg16.gathering.org"; + ddns-domainname "e59-4.tg16.gathering.org"; + range 88.92.24.132 88.92.24.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e61-1.conf b/examples/tg16/dhcp/conf-v4/e61-1.conf new file mode 100644 index 0000000..7a7c9fe --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e61-1.conf @@ -0,0 +1,12 @@ +zone e61-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.24.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.24.193; + option domain-name "e61-1.tg16.gathering.org"; + ddns-domainname "e61-1.tg16.gathering.org"; + range 88.92.24.196 88.92.24.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e61-2.conf b/examples/tg16/dhcp/conf-v4/e61-2.conf new file mode 100644 index 0000000..006a8e9 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e61-2.conf @@ -0,0 +1,12 @@ +zone e61-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.25.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.25.1; + option domain-name "e61-2.tg16.gathering.org"; + ddns-domainname "e61-2.tg16.gathering.org"; + range 88.92.25.4 88.92.25.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e61-3.conf b/examples/tg16/dhcp/conf-v4/e61-3.conf new file mode 100644 index 0000000..1c85d0b --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e61-3.conf @@ -0,0 +1,12 @@ +zone e61-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.25.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.25.65; + option domain-name "e61-3.tg16.gathering.org"; + ddns-domainname "e61-3.tg16.gathering.org"; + range 88.92.25.68 88.92.25.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e61-4.conf b/examples/tg16/dhcp/conf-v4/e61-4.conf new file mode 100644 index 0000000..03c4d1e --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e61-4.conf @@ -0,0 +1,12 @@ +zone e61-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.25.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.25.129; + option domain-name "e61-4.tg16.gathering.org"; + ddns-domainname "e61-4.tg16.gathering.org"; + range 88.92.25.132 88.92.25.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e63-1.conf b/examples/tg16/dhcp/conf-v4/e63-1.conf new file mode 100644 index 0000000..dce320a --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e63-1.conf @@ -0,0 +1,12 @@ +zone e63-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.25.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.25.193; + option domain-name "e63-1.tg16.gathering.org"; + ddns-domainname "e63-1.tg16.gathering.org"; + range 88.92.25.196 88.92.25.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e63-2.conf b/examples/tg16/dhcp/conf-v4/e63-2.conf new file mode 100644 index 0000000..bd7934b --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e63-2.conf @@ -0,0 +1,12 @@ +zone e63-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.26.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.26.1; + option domain-name "e63-2.tg16.gathering.org"; + ddns-domainname "e63-2.tg16.gathering.org"; + range 88.92.26.4 88.92.26.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e63-3.conf b/examples/tg16/dhcp/conf-v4/e63-3.conf new file mode 100644 index 0000000..01b0e77 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e63-3.conf @@ -0,0 +1,12 @@ +zone e63-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.26.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.26.65; + option domain-name "e63-3.tg16.gathering.org"; + ddns-domainname "e63-3.tg16.gathering.org"; + range 88.92.26.68 88.92.26.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e63-4.conf b/examples/tg16/dhcp/conf-v4/e63-4.conf new file mode 100644 index 0000000..05f39da --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e63-4.conf @@ -0,0 +1,12 @@ +zone e63-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.26.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.26.129; + option domain-name "e63-4.tg16.gathering.org"; + ddns-domainname "e63-4.tg16.gathering.org"; + range 88.92.26.132 88.92.26.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e65-1.conf b/examples/tg16/dhcp/conf-v4/e65-1.conf new file mode 100644 index 0000000..cc37b62 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e65-1.conf @@ -0,0 +1,12 @@ +zone e65-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.26.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.26.193; + option domain-name "e65-1.tg16.gathering.org"; + ddns-domainname "e65-1.tg16.gathering.org"; + range 88.92.26.196 88.92.26.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e65-2.conf b/examples/tg16/dhcp/conf-v4/e65-2.conf new file mode 100644 index 0000000..6d7ce7b --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e65-2.conf @@ -0,0 +1,12 @@ +zone e65-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.27.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.27.1; + option domain-name "e65-2.tg16.gathering.org"; + ddns-domainname "e65-2.tg16.gathering.org"; + range 88.92.27.4 88.92.27.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e65-3.conf b/examples/tg16/dhcp/conf-v4/e65-3.conf new file mode 100644 index 0000000..e07f0ce --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e65-3.conf @@ -0,0 +1,12 @@ +zone e65-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.27.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.27.65; + option domain-name "e65-3.tg16.gathering.org"; + ddns-domainname "e65-3.tg16.gathering.org"; + range 88.92.27.68 88.92.27.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e65-4.conf b/examples/tg16/dhcp/conf-v4/e65-4.conf new file mode 100644 index 0000000..ee12c62 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e65-4.conf @@ -0,0 +1,12 @@ +zone e65-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.27.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.27.129; + option domain-name "e65-4.tg16.gathering.org"; + ddns-domainname "e65-4.tg16.gathering.org"; + range 88.92.27.132 88.92.27.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e67-1.conf b/examples/tg16/dhcp/conf-v4/e67-1.conf new file mode 100644 index 0000000..3fb1719 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e67-1.conf @@ -0,0 +1,12 @@ +zone e67-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.27.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.27.193; + option domain-name "e67-1.tg16.gathering.org"; + ddns-domainname "e67-1.tg16.gathering.org"; + range 88.92.27.196 88.92.27.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e67-2.conf b/examples/tg16/dhcp/conf-v4/e67-2.conf new file mode 100644 index 0000000..cf56ac3 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e67-2.conf @@ -0,0 +1,12 @@ +zone e67-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.28.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.28.1; + option domain-name "e67-2.tg16.gathering.org"; + ddns-domainname "e67-2.tg16.gathering.org"; + range 88.92.28.4 88.92.28.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e67-3.conf b/examples/tg16/dhcp/conf-v4/e67-3.conf new file mode 100644 index 0000000..e98ef40 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e67-3.conf @@ -0,0 +1,12 @@ +zone e67-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.28.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.28.65; + option domain-name "e67-3.tg16.gathering.org"; + ddns-domainname "e67-3.tg16.gathering.org"; + range 88.92.28.68 88.92.28.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e67-4.conf b/examples/tg16/dhcp/conf-v4/e67-4.conf new file mode 100644 index 0000000..aa38a8c --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e67-4.conf @@ -0,0 +1,12 @@ +zone e67-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.28.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.28.129; + option domain-name "e67-4.tg16.gathering.org"; + ddns-domainname "e67-4.tg16.gathering.org"; + range 88.92.28.132 88.92.28.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e69-1.conf b/examples/tg16/dhcp/conf-v4/e69-1.conf new file mode 100644 index 0000000..b0f3513 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e69-1.conf @@ -0,0 +1,12 @@ +zone e69-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.28.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.28.193; + option domain-name "e69-1.tg16.gathering.org"; + ddns-domainname "e69-1.tg16.gathering.org"; + range 88.92.28.196 88.92.28.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e69-2.conf b/examples/tg16/dhcp/conf-v4/e69-2.conf new file mode 100644 index 0000000..e5bee11 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e69-2.conf @@ -0,0 +1,12 @@ +zone e69-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.29.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.29.1; + option domain-name "e69-2.tg16.gathering.org"; + ddns-domainname "e69-2.tg16.gathering.org"; + range 88.92.29.4 88.92.29.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e7-1.conf b/examples/tg16/dhcp/conf-v4/e7-1.conf new file mode 100644 index 0000000..b1bc2fd --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e7-1.conf @@ -0,0 +1,12 @@ +zone e7-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.1.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.1.193; + option domain-name "e7-1.tg16.gathering.org"; + ddns-domainname "e7-1.tg16.gathering.org"; + range 88.92.1.196 88.92.1.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e7-2.conf b/examples/tg16/dhcp/conf-v4/e7-2.conf new file mode 100644 index 0000000..eb76b34 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e7-2.conf @@ -0,0 +1,12 @@ +zone e7-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.2.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.2.1; + option domain-name "e7-2.tg16.gathering.org"; + ddns-domainname "e7-2.tg16.gathering.org"; + range 88.92.2.4 88.92.2.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e7-3.conf b/examples/tg16/dhcp/conf-v4/e7-3.conf new file mode 100644 index 0000000..fd2fa6a --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e7-3.conf @@ -0,0 +1,12 @@ +zone e7-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.2.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.2.65; + option domain-name "e7-3.tg16.gathering.org"; + ddns-domainname "e7-3.tg16.gathering.org"; + range 88.92.2.68 88.92.2.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e7-4.conf b/examples/tg16/dhcp/conf-v4/e7-4.conf new file mode 100644 index 0000000..6f4240f --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e7-4.conf @@ -0,0 +1,12 @@ +zone e7-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.2.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.2.129; + option domain-name "e7-4.tg16.gathering.org"; + ddns-domainname "e7-4.tg16.gathering.org"; + range 88.92.2.132 88.92.2.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e71-1.conf b/examples/tg16/dhcp/conf-v4/e71-1.conf new file mode 100644 index 0000000..19bdaa4 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e71-1.conf @@ -0,0 +1,12 @@ +zone e71-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.29.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.29.65; + option domain-name "e71-1.tg16.gathering.org"; + ddns-domainname "e71-1.tg16.gathering.org"; + range 88.92.29.68 88.92.29.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e71-2.conf b/examples/tg16/dhcp/conf-v4/e71-2.conf new file mode 100644 index 0000000..c499d7b --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e71-2.conf @@ -0,0 +1,12 @@ +zone e71-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.29.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.29.129; + option domain-name "e71-2.tg16.gathering.org"; + ddns-domainname "e71-2.tg16.gathering.org"; + range 88.92.29.132 88.92.29.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e73-1.conf b/examples/tg16/dhcp/conf-v4/e73-1.conf new file mode 100644 index 0000000..d067c2a --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e73-1.conf @@ -0,0 +1,12 @@ +zone e73-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.29.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.29.193; + option domain-name "e73-1.tg16.gathering.org"; + ddns-domainname "e73-1.tg16.gathering.org"; + range 88.92.29.196 88.92.29.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e73-2.conf b/examples/tg16/dhcp/conf-v4/e73-2.conf new file mode 100644 index 0000000..9d88dac --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e73-2.conf @@ -0,0 +1,12 @@ +zone e73-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.30.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.30.1; + option domain-name "e73-2.tg16.gathering.org"; + ddns-domainname "e73-2.tg16.gathering.org"; + range 88.92.30.4 88.92.30.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e75-1.conf b/examples/tg16/dhcp/conf-v4/e75-1.conf new file mode 100644 index 0000000..bbb008e --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e75-1.conf @@ -0,0 +1,12 @@ +zone e75-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.30.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.30.65; + option domain-name "e75-1.tg16.gathering.org"; + ddns-domainname "e75-1.tg16.gathering.org"; + range 88.92.30.68 88.92.30.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e75-2.conf b/examples/tg16/dhcp/conf-v4/e75-2.conf new file mode 100644 index 0000000..eeaea1d --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e75-2.conf @@ -0,0 +1,12 @@ +zone e75-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.30.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.30.129; + option domain-name "e75-2.tg16.gathering.org"; + ddns-domainname "e75-2.tg16.gathering.org"; + range 88.92.30.132 88.92.30.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e77-1.conf b/examples/tg16/dhcp/conf-v4/e77-1.conf new file mode 100644 index 0000000..c7c7aa7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e77-1.conf @@ -0,0 +1,12 @@ +zone e77-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.30.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.30.193; + option domain-name "e77-1.tg16.gathering.org"; + ddns-domainname "e77-1.tg16.gathering.org"; + range 88.92.30.196 88.92.30.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e77-2.conf b/examples/tg16/dhcp/conf-v4/e77-2.conf new file mode 100644 index 0000000..79da1aa --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e77-2.conf @@ -0,0 +1,12 @@ +zone e77-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.31.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.31.1; + option domain-name "e77-2.tg16.gathering.org"; + ddns-domainname "e77-2.tg16.gathering.org"; + range 88.92.31.4 88.92.31.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e79-1.conf b/examples/tg16/dhcp/conf-v4/e79-1.conf new file mode 100644 index 0000000..38ee358 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e79-1.conf @@ -0,0 +1,12 @@ +zone e79-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.31.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.31.65; + option domain-name "e79-1.tg16.gathering.org"; + ddns-domainname "e79-1.tg16.gathering.org"; + range 88.92.31.68 88.92.31.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e79-2.conf b/examples/tg16/dhcp/conf-v4/e79-2.conf new file mode 100644 index 0000000..42d03fd --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e79-2.conf @@ -0,0 +1,12 @@ +zone e79-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.31.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.31.129; + option domain-name "e79-2.tg16.gathering.org"; + ddns-domainname "e79-2.tg16.gathering.org"; + range 88.92.31.132 88.92.31.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e81-1.conf b/examples/tg16/dhcp/conf-v4/e81-1.conf new file mode 100644 index 0000000..4a646e9 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e81-1.conf @@ -0,0 +1,12 @@ +zone e81-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.31.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.31.193; + option domain-name "e81-1.tg16.gathering.org"; + ddns-domainname "e81-1.tg16.gathering.org"; + range 88.92.31.196 88.92.31.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e81-2.conf b/examples/tg16/dhcp/conf-v4/e81-2.conf new file mode 100644 index 0000000..2e24c3e --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e81-2.conf @@ -0,0 +1,12 @@ +zone e81-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.32.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.32.1; + option domain-name "e81-2.tg16.gathering.org"; + ddns-domainname "e81-2.tg16.gathering.org"; + range 88.92.32.4 88.92.32.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e83-2.conf b/examples/tg16/dhcp/conf-v4/e83-2.conf new file mode 100644 index 0000000..84ba705 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e83-2.conf @@ -0,0 +1,12 @@ +zone e83-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.32.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.32.65; + option domain-name "e83-2.tg16.gathering.org"; + ddns-domainname "e83-2.tg16.gathering.org"; + range 88.92.32.68 88.92.32.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e85-2.conf b/examples/tg16/dhcp/conf-v4/e85-2.conf new file mode 100644 index 0000000..377c735 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e85-2.conf @@ -0,0 +1,12 @@ +zone e85-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.32.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.32.129; + option domain-name "e85-2.tg16.gathering.org"; + ddns-domainname "e85-2.tg16.gathering.org"; + range 88.92.32.132 88.92.32.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e9-1.conf b/examples/tg16/dhcp/conf-v4/e9-1.conf new file mode 100644 index 0000000..2061512 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e9-1.conf @@ -0,0 +1,12 @@ +zone e9-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.2.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.2.193; + option domain-name "e9-1.tg16.gathering.org"; + ddns-domainname "e9-1.tg16.gathering.org"; + range 88.92.2.196 88.92.2.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e9-2.conf b/examples/tg16/dhcp/conf-v4/e9-2.conf new file mode 100644 index 0000000..d8ba3cc --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e9-2.conf @@ -0,0 +1,12 @@ +zone e9-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.3.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.3.1; + option domain-name "e9-2.tg16.gathering.org"; + ddns-domainname "e9-2.tg16.gathering.org"; + range 88.92.3.4 88.92.3.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e9-3.conf b/examples/tg16/dhcp/conf-v4/e9-3.conf new file mode 100644 index 0000000..86976f7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e9-3.conf @@ -0,0 +1,12 @@ +zone e9-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.3.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.3.65; + option domain-name "e9-3.tg16.gathering.org"; + ddns-domainname "e9-3.tg16.gathering.org"; + range 88.92.3.68 88.92.3.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e9-4.conf b/examples/tg16/dhcp/conf-v4/e9-4.conf new file mode 100644 index 0000000..ce89383 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e9-4.conf @@ -0,0 +1,12 @@ +zone e9-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.3.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.3.129; + option domain-name "e9-4.tg16.gathering.org"; + ddns-domainname "e9-4.tg16.gathering.org"; + range 88.92.3.132 88.92.3.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/event.conf b/examples/tg16/dhcp/conf-v4/event.conf new file mode 100644 index 0000000..8db2b71 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/event.conf @@ -0,0 +1,12 @@ +zone event.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.60.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.60.1; + option domain-name "event.tg16.gathering.org"; + ddns-domainname "event.tg16.gathering.org"; + range 88.92.60.4 88.92.60.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/flankenord.conf b/examples/tg16/dhcp/conf-v4/flankenord.conf new file mode 100644 index 0000000..b050b64 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/flankenord.conf @@ -0,0 +1,12 @@ +zone flankenord.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.41.64 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.41.65; + option domain-name "flankenord.tg16.gathering.org"; + ddns-domainname "flankenord.tg16.gathering.org"; + range 88.92.41.68 88.92.41.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/flankesor.conf b/examples/tg16/dhcp/conf-v4/flankesor.conf new file mode 100644 index 0000000..e06fc8c --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/flankesor.conf @@ -0,0 +1,12 @@ +zone flankesor.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.41.128 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.41.129; + option domain-name "flankesor.tg16.gathering.org"; + ddns-domainname "flankesor.tg16.gathering.org"; + range 88.92.41.132 88.92.41.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/foh.conf b/examples/tg16/dhcp/conf-v4/foh.conf new file mode 100644 index 0000000..e14bac2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/foh.conf @@ -0,0 +1,12 @@ +zone foh.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.68.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.68.1; + option domain-name "foh.tg16.gathering.org"; + ddns-domainname "foh.tg16.gathering.org"; + range 88.92.68.4 88.92.68.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/fugleberget.conf b/examples/tg16/dhcp/conf-v4/fugleberget.conf new file mode 100644 index 0000000..7691a8f --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/fugleberget.conf @@ -0,0 +1,12 @@ +zone fugleberget.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.65.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.65.1; + option domain-name "fugleberget.tg16.gathering.org"; + ddns-domainname "fugleberget.tg16.gathering.org"; + range 88.92.65.4 88.92.65.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/game.conf b/examples/tg16/dhcp/conf-v4/game.conf new file mode 100644 index 0000000..5c3e044 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/game.conf @@ -0,0 +1,12 @@ +zone game.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.76.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.76.1; + option domain-name "game.tg16.gathering.org"; + ddns-domainname "game.tg16.gathering.org"; + range 88.92.76.4 88.92.76.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/gamestage.conf b/examples/tg16/dhcp/conf-v4/gamestage.conf new file mode 100644 index 0000000..501303c --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/gamestage.conf @@ -0,0 +1,12 @@ +zone gamestage.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.78.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.78.1; + option domain-name "gamestage.tg16.gathering.org"; + ddns-domainname "gamestage.tg16.gathering.org"; + range 88.92.78.4 88.92.78.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/highlights.conf b/examples/tg16/dhcp/conf-v4/highlights.conf new file mode 100644 index 0000000..ef0b597 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/highlights.conf @@ -0,0 +1,12 @@ +zone highlights.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.81.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.81.1; + option domain-name "highlights.tg16.gathering.org"; + ddns-domainname "highlights.tg16.gathering.org"; + range 88.92.81.4 88.92.81.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/hon.conf b/examples/tg16/dhcp/conf-v4/hon.conf new file mode 100644 index 0000000..55bb9ce --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/hon.conf @@ -0,0 +1,12 @@ +zone hon.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.79.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.79.1; + option domain-name "hon.tg16.gathering.org"; + ddns-domainname "hon.tg16.gathering.org"; + range 88.92.79.4 88.92.79.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/info.conf b/examples/tg16/dhcp/conf-v4/info.conf new file mode 100644 index 0000000..bff7b24 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/info.conf @@ -0,0 +1,12 @@ +zone info.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.63.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.63.1; + option domain-name "info.tg16.gathering.org"; + ddns-domainname "info.tg16.gathering.org"; + range 88.92.63.4 88.92.63.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/innsjekk.conf b/examples/tg16/dhcp/conf-v4/innsjekk.conf new file mode 100644 index 0000000..7b7ef25 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/innsjekk.conf @@ -0,0 +1,12 @@ +zone innsjekk.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.69.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.69.1; + option domain-name "innsjekk.tg16.gathering.org"; + ddns-domainname "innsjekk.tg16.gathering.org"; + range 88.92.69.4 88.92.69.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/logistikk.conf b/examples/tg16/dhcp/conf-v4/logistikk.conf new file mode 100644 index 0000000..5828730 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/logistikk.conf @@ -0,0 +1,12 @@ +zone logistikk.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.59.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.59.1; + option domain-name "logistikk.tg16.gathering.org"; + ddns-domainname "logistikk.tg16.gathering.org"; + range 88.92.59.4 88.92.59.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/medic.conf b/examples/tg16/dhcp/conf-v4/medic.conf new file mode 100644 index 0000000..6dc7ec2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/medic.conf @@ -0,0 +1,12 @@ +zone medic.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.71.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.71.1; + option domain-name "medic.tg16.gathering.org"; + ddns-domainname "medic.tg16.gathering.org"; + range 88.92.71.4 88.92.71.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/noc.conf b/examples/tg16/dhcp/conf-v4/noc.conf new file mode 100644 index 0000000..6ed407d --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/noc.conf @@ -0,0 +1,12 @@ +zone noc.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 185.110.150.0 netmask 255.255.255.128 { + option subnet-mask 255.255.255.128; + option routers 185.110.150.1; + option domain-name "noc.tg16.gathering.org"; + ddns-domainname "noc.tg16.gathering.org"; + range 185.110.150.4 185.110.150.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/north.conf b/examples/tg16/dhcp/conf-v4/north.conf new file mode 100644 index 0000000..f82121b --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/north.conf @@ -0,0 +1,12 @@ +zone north.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.64.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.64.1; + option domain-name "north.tg16.gathering.org"; + ddns-domainname "north.tg16.gathering.org"; + range 88.92.64.4 88.92.64.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/presse.conf b/examples/tg16/dhcp/conf-v4/presse.conf new file mode 100644 index 0000000..a3ea280 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/presse.conf @@ -0,0 +1,12 @@ +zone presse.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.73.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.73.1; + option domain-name "presse.tg16.gathering.org"; + ddns-domainname "presse.tg16.gathering.org"; + range 88.92.73.4 88.92.73.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/resepsjon.conf b/examples/tg16/dhcp/conf-v4/resepsjon.conf new file mode 100644 index 0000000..9f99a8c --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/resepsjon.conf @@ -0,0 +1,12 @@ +zone resepsjon.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.70.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.70.1; + option domain-name "resepsjon.tg16.gathering.org"; + ddns-domainname "resepsjon.tg16.gathering.org"; + range 88.92.70.4 88.92.70.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/santander-temp.conf b/examples/tg16/dhcp/conf-v4/santander-temp.conf new file mode 100644 index 0000000..bb437b0 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/santander-temp.conf @@ -0,0 +1,12 @@ +zone santander-temp.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.93.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.93.1; + option domain-name "santander-temp.tg16.gathering.org"; + ddns-domainname "santander-temp.tg16.gathering.org"; + range 88.92.93.4 88.92.93.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/security.conf b/examples/tg16/dhcp/conf-v4/security.conf new file mode 100644 index 0000000..b395515 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/security.conf @@ -0,0 +1,12 @@ +zone security.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.74.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.74.1; + option domain-name "security.tg16.gathering.org"; + ddns-domainname "security.tg16.gathering.org"; + range 88.92.74.4 88.92.74.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/security2.conf b/examples/tg16/dhcp/conf-v4/security2.conf new file mode 100644 index 0000000..c5984e6 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/security2.conf @@ -0,0 +1,12 @@ +zone security2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.75.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.75.1; + option domain-name "security2.tg16.gathering.org"; + ddns-domainname "security2.tg16.gathering.org"; + range 88.92.75.4 88.92.75.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/sponsor.conf b/examples/tg16/dhcp/conf-v4/sponsor.conf new file mode 100644 index 0000000..db2d30d --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/sponsor.conf @@ -0,0 +1,12 @@ +zone sponsor.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.72.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.72.1; + option domain-name "sponsor.tg16.gathering.org"; + ddns-domainname "sponsor.tg16.gathering.org"; + range 88.92.72.4 88.92.72.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/stage.conf b/examples/tg16/dhcp/conf-v4/stage.conf new file mode 100644 index 0000000..d17d0ad --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/stage.conf @@ -0,0 +1,12 @@ +zone stage.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.67.0 netmask 255.255.255.0 { + option subnet-mask 255.255.255.0; + option routers 88.92.67.1; + option domain-name "stage.tg16.gathering.org"; + ddns-domainname "stage.tg16.gathering.org"; + range 88.92.67.4 88.92.67.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/streamer1.conf b/examples/tg16/dhcp/conf-v4/streamer1.conf new file mode 100644 index 0000000..091c311 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/streamer1.conf @@ -0,0 +1,12 @@ +zone streamer1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.41.192 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 88.92.41.193; + option domain-name "streamer1.tg16.gathering.org"; + ddns-domainname "streamer1.tg16.gathering.org"; + range 88.92.41.196 88.92.41.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/tech-wlan.conf b/examples/tg16/dhcp/conf-v4/tech-wlan.conf new file mode 100644 index 0000000..ce1e972 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/tech-wlan.conf @@ -0,0 +1,12 @@ +zone tech-wlan.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 185.110.151.0 netmask 255.255.255.224 { + option subnet-mask 255.255.255.224; + option routers 185.110.151.1; + option domain-name "tech-wlan.tg16.gathering.org"; + ddns-domainname "tech-wlan.tg16.gathering.org"; + range 185.110.151.4 185.110.151.30; +} + diff --git a/examples/tg16/dhcp/conf-v4/wlan.conf b/examples/tg16/dhcp/conf-v4/wlan.conf new file mode 100644 index 0000000..1cefa07 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/wlan.conf @@ -0,0 +1,15 @@ +zone wlan.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet 88.92.96.0 netmask 255.255.224.0 { + option subnet-mask 255.255.224.0; + option routers 88.92.96.1; + option domain-name "wlan.tg16.gathering.org"; + ddns-domainname "wlan.tg16.gathering.org"; + + range 88.92.96.4 88.92.127.254; + default-lease-time 7200; + max-lease-time 14400; +} + diff --git a/examples/tg16/dhcp/conf-v6/ap-creativia.conf b/examples/tg16/dhcp/conf-v6/ap-creativia.conf new file mode 100644 index 0000000..512d31b --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/ap-creativia.conf @@ -0,0 +1,10 @@ +zone ap-creativia.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:53b::/64 { + option domain-name "ap-creativia.tg16.gathering.org"; + + range6 2a06:5840:53b::1000 2a06:5840:53b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/ap-distro0.conf b/examples/tg16/dhcp/conf-v6/ap-distro0.conf new file mode 100644 index 0000000..2f1b050 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/ap-distro0.conf @@ -0,0 +1,10 @@ +zone ap-distro0.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:51a::/64 { + option domain-name "ap-distro0.tg16.gathering.org"; + + range6 2a06:5840:51a::1000 2a06:5840:51a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/ap-distro1.conf b/examples/tg16/dhcp/conf-v6/ap-distro1.conf new file mode 100644 index 0000000..5d59fdf --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/ap-distro1.conf @@ -0,0 +1,10 @@ +zone ap-distro1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:51b::/64 { + option domain-name "ap-distro1.tg16.gathering.org"; + + range6 2a06:5840:51b::1000 2a06:5840:51b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/ap-distro2.conf b/examples/tg16/dhcp/conf-v6/ap-distro2.conf new file mode 100644 index 0000000..b8c4e89 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/ap-distro2.conf @@ -0,0 +1,10 @@ +zone ap-distro2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:51c::/64 { + option domain-name "ap-distro2.tg16.gathering.org"; + + range6 2a06:5840:51c::1000 2a06:5840:51c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/ap-distro3.conf b/examples/tg16/dhcp/conf-v6/ap-distro3.conf new file mode 100644 index 0000000..19e2cb4 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/ap-distro3.conf @@ -0,0 +1,10 @@ +zone ap-distro3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:51d::/64 { + option domain-name "ap-distro3.tg16.gathering.org"; + + range6 2a06:5840:51d::1000 2a06:5840:51d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/ap-distro4.conf b/examples/tg16/dhcp/conf-v6/ap-distro4.conf new file mode 100644 index 0000000..61b042c --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/ap-distro4.conf @@ -0,0 +1,10 @@ +zone ap-distro4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:52a::/64 { + option domain-name "ap-distro4.tg16.gathering.org"; + + range6 2a06:5840:52a::1000 2a06:5840:52a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/ap-distro5.conf b/examples/tg16/dhcp/conf-v6/ap-distro5.conf new file mode 100644 index 0000000..2536a55 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/ap-distro5.conf @@ -0,0 +1,10 @@ +zone ap-distro5.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:52b::/64 { + option domain-name "ap-distro5.tg16.gathering.org"; + + range6 2a06:5840:52b::1000 2a06:5840:52b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/ap-distro6.conf b/examples/tg16/dhcp/conf-v6/ap-distro6.conf new file mode 100644 index 0000000..5d5a064 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/ap-distro6.conf @@ -0,0 +1,10 @@ +zone ap-distro6.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:52c::/64 { + option domain-name "ap-distro6.tg16.gathering.org"; + + range6 2a06:5840:52c::1000 2a06:5840:52c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/ap-distro7.conf b/examples/tg16/dhcp/conf-v6/ap-distro7.conf new file mode 100644 index 0000000..3efe69c --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/ap-distro7.conf @@ -0,0 +1,10 @@ +zone ap-distro7.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:52d::/64 { + option domain-name "ap-distro7.tg16.gathering.org"; + + range6 2a06:5840:52d::1000 2a06:5840:52d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/ap-stand.conf b/examples/tg16/dhcp/conf-v6/ap-stand.conf new file mode 100644 index 0000000..7982009 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/ap-stand.conf @@ -0,0 +1,10 @@ +zone ap-stand.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:530::/64 { + option domain-name "ap-stand.tg16.gathering.org"; + + range6 2a06:5840:530::1000 2a06:5840:530::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/auditorium.conf b/examples/tg16/dhcp/conf-v6/auditorium.conf new file mode 100644 index 0000000..f35fbe6 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/auditorium.conf @@ -0,0 +1,10 @@ +zone auditorium.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:77::/64 { + option domain-name "auditorium.tg16.gathering.org"; + + range6 2a06:5840:77::1000 2a06:5840:77::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/creativia-village.conf b/examples/tg16/dhcp/conf-v6/creativia-village.conf new file mode 100644 index 0000000..1624232 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/creativia-village.conf @@ -0,0 +1,10 @@ +zone creativia-village.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:42d::/64 { + option domain-name "creativia-village.tg16.gathering.org"; + + range6 2a06:5840:42d::1000 2a06:5840:42d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/creativia.conf b/examples/tg16/dhcp/conf-v6/creativia.conf new file mode 100644 index 0000000..38d65a3 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/creativia.conf @@ -0,0 +1,10 @@ +zone creativia.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:61::/64 { + option domain-name "creativia.tg16.gathering.org"; + + range6 2a06:5840:61::1000 2a06:5840:61::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/creativia1.conf b/examples/tg16/dhcp/conf-v6/creativia1.conf new file mode 100644 index 0000000..027f905 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/creativia1.conf @@ -0,0 +1,10 @@ +zone creativia1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:40a::/64 { + option domain-name "creativia1.tg16.gathering.org"; + + range6 2a06:5840:40a::1000 2a06:5840:40a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/creativia2.conf b/examples/tg16/dhcp/conf-v6/creativia2.conf new file mode 100644 index 0000000..5256267 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/creativia2.conf @@ -0,0 +1,10 @@ +zone creativia2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:40b::/64 { + option domain-name "creativia2.tg16.gathering.org"; + + range6 2a06:5840:40b::1000 2a06:5840:40b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/creativia3.conf b/examples/tg16/dhcp/conf-v6/creativia3.conf new file mode 100644 index 0000000..7bcaa5f --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/creativia3.conf @@ -0,0 +1,10 @@ +zone creativia3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:40c::/64 { + option domain-name "creativia3.tg16.gathering.org"; + + range6 2a06:5840:40c::1000 2a06:5840:40c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/creativia4.conf b/examples/tg16/dhcp/conf-v6/creativia4.conf new file mode 100644 index 0000000..82b3843 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/creativia4.conf @@ -0,0 +1,10 @@ +zone creativia4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:40d::/64 { + option domain-name "creativia4.tg16.gathering.org"; + + range6 2a06:5840:40d::1000 2a06:5840:40d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/creativia5.conf b/examples/tg16/dhcp/conf-v6/creativia5.conf new file mode 100644 index 0000000..c2343f2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/creativia5.conf @@ -0,0 +1,10 @@ +zone creativia5.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:41a::/64 { + option domain-name "creativia5.tg16.gathering.org"; + + range6 2a06:5840:41a::1000 2a06:5840:41a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/creativia6.conf b/examples/tg16/dhcp/conf-v6/creativia6.conf new file mode 100644 index 0000000..69a0b2a --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/creativia6.conf @@ -0,0 +1,10 @@ +zone creativia6.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:42b::/64 { + option domain-name "creativia6.tg16.gathering.org"; + + range6 2a06:5840:42b::1000 2a06:5840:42b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/creativia7.conf b/examples/tg16/dhcp/conf-v6/creativia7.conf new file mode 100644 index 0000000..88e9753 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/creativia7.conf @@ -0,0 +1,10 @@ +zone creativia7.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:42c::/64 { + option domain-name "creativia7.tg16.gathering.org"; + + range6 2a06:5840:42c::1000 2a06:5840:42c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/creativiasw1.conf b/examples/tg16/dhcp/conf-v6/creativiasw1.conf new file mode 100644 index 0000000..2f2b7bb --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/creativiasw1.conf @@ -0,0 +1,10 @@ +zone creativiasw1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:43a::/64 { + option domain-name "creativiasw1.tg16.gathering.org"; + + range6 2a06:5840:43a::1000 2a06:5840:43a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/crew.conf b/examples/tg16/dhcp/conf-v6/crew.conf new file mode 100644 index 0000000..6d2cdde --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/crew.conf @@ -0,0 +1,10 @@ +zone crew.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:66::/64 { + option domain-name "crew.tg16.gathering.org"; + + range6 2a06:5840:66::1000 2a06:5840:66::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/deltaker-srv.conf b/examples/tg16/dhcp/conf-v6/deltaker-srv.conf new file mode 100644 index 0000000..1ef2211 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/deltaker-srv.conf @@ -0,0 +1,10 @@ +zone deltaker-srv.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:95a::/64 { + option domain-name "deltaker-srv.tg16.gathering.org"; + + range6 2a06:5840:95a::1000 2a06:5840:95a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e1-3.conf b/examples/tg16/dhcp/conf-v6/e1-3.conf new file mode 100644 index 0000000..641fc9e --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e1-3.conf @@ -0,0 +1,10 @@ +zone e1-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:0a::/64 { + option domain-name "e1-3.tg16.gathering.org"; + + range6 2a06:5840:a::1000 2a06:5840:a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e1-4.conf b/examples/tg16/dhcp/conf-v6/e1-4.conf new file mode 100644 index 0000000..ac39370 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e1-4.conf @@ -0,0 +1,10 @@ +zone e1-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:0b::/64 { + option domain-name "e1-4.tg16.gathering.org"; + + range6 2a06:5840:b::1000 2a06:5840:b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e11-1.conf b/examples/tg16/dhcp/conf-v6/e11-1.conf new file mode 100644 index 0000000..dff406e --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e11-1.conf @@ -0,0 +1,10 @@ +zone e11-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:3d::/64 { + option domain-name "e11-1.tg16.gathering.org"; + + range6 2a06:5840:3d::1000 2a06:5840:3d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e11-2.conf b/examples/tg16/dhcp/conf-v6/e11-2.conf new file mode 100644 index 0000000..901eec9 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e11-2.conf @@ -0,0 +1,10 @@ +zone e11-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:4a::/64 { + option domain-name "e11-2.tg16.gathering.org"; + + range6 2a06:5840:4a::1000 2a06:5840:4a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e11-3.conf b/examples/tg16/dhcp/conf-v6/e11-3.conf new file mode 100644 index 0000000..ddf8544 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e11-3.conf @@ -0,0 +1,10 @@ +zone e11-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:4b::/64 { + option domain-name "e11-3.tg16.gathering.org"; + + range6 2a06:5840:4b::1000 2a06:5840:4b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e11-4.conf b/examples/tg16/dhcp/conf-v6/e11-4.conf new file mode 100644 index 0000000..09e8832 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e11-4.conf @@ -0,0 +1,10 @@ +zone e11-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:4c::/64 { + option domain-name "e11-4.tg16.gathering.org"; + + range6 2a06:5840:4c::1000 2a06:5840:4c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e13-1.conf b/examples/tg16/dhcp/conf-v6/e13-1.conf new file mode 100644 index 0000000..d6738f7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e13-1.conf @@ -0,0 +1,10 @@ +zone e13-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:4d::/64 { + option domain-name "e13-1.tg16.gathering.org"; + + range6 2a06:5840:4d::1000 2a06:5840:4d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e13-2.conf b/examples/tg16/dhcp/conf-v6/e13-2.conf new file mode 100644 index 0000000..b181391 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e13-2.conf @@ -0,0 +1,10 @@ +zone e13-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:5a::/64 { + option domain-name "e13-2.tg16.gathering.org"; + + range6 2a06:5840:5a::1000 2a06:5840:5a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e13-3.conf b/examples/tg16/dhcp/conf-v6/e13-3.conf new file mode 100644 index 0000000..81d5a52 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e13-3.conf @@ -0,0 +1,10 @@ +zone e13-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:5b::/64 { + option domain-name "e13-3.tg16.gathering.org"; + + range6 2a06:5840:5b::1000 2a06:5840:5b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e13-4.conf b/examples/tg16/dhcp/conf-v6/e13-4.conf new file mode 100644 index 0000000..9ac46e2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e13-4.conf @@ -0,0 +1,10 @@ +zone e13-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:5c::/64 { + option domain-name "e13-4.tg16.gathering.org"; + + range6 2a06:5840:5c::1000 2a06:5840:5c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e15-1.conf b/examples/tg16/dhcp/conf-v6/e15-1.conf new file mode 100644 index 0000000..6636313 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e15-1.conf @@ -0,0 +1,10 @@ +zone e15-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:5d::/64 { + option domain-name "e15-1.tg16.gathering.org"; + + range6 2a06:5840:5d::1000 2a06:5840:5d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e15-2.conf b/examples/tg16/dhcp/conf-v6/e15-2.conf new file mode 100644 index 0000000..5b86101 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e15-2.conf @@ -0,0 +1,10 @@ +zone e15-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:6a::/64 { + option domain-name "e15-2.tg16.gathering.org"; + + range6 2a06:5840:6a::1000 2a06:5840:6a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e15-3.conf b/examples/tg16/dhcp/conf-v6/e15-3.conf new file mode 100644 index 0000000..53bd984 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e15-3.conf @@ -0,0 +1,10 @@ +zone e15-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:6b::/64 { + option domain-name "e15-3.tg16.gathering.org"; + + range6 2a06:5840:6b::1000 2a06:5840:6b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e15-4.conf b/examples/tg16/dhcp/conf-v6/e15-4.conf new file mode 100644 index 0000000..9c59ac7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e15-4.conf @@ -0,0 +1,10 @@ +zone e15-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:6c::/64 { + option domain-name "e15-4.tg16.gathering.org"; + + range6 2a06:5840:6c::1000 2a06:5840:6c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e17-1.conf b/examples/tg16/dhcp/conf-v6/e17-1.conf new file mode 100644 index 0000000..9c02818 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e17-1.conf @@ -0,0 +1,10 @@ +zone e17-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:6d::/64 { + option domain-name "e17-1.tg16.gathering.org"; + + range6 2a06:5840:6d::1000 2a06:5840:6d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e17-2.conf b/examples/tg16/dhcp/conf-v6/e17-2.conf new file mode 100644 index 0000000..01d6fc9 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e17-2.conf @@ -0,0 +1,10 @@ +zone e17-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:7a::/64 { + option domain-name "e17-2.tg16.gathering.org"; + + range6 2a06:5840:7a::1000 2a06:5840:7a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e17-3.conf b/examples/tg16/dhcp/conf-v6/e17-3.conf new file mode 100644 index 0000000..237d344 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e17-3.conf @@ -0,0 +1,10 @@ +zone e17-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:7b::/64 { + option domain-name "e17-3.tg16.gathering.org"; + + range6 2a06:5840:7b::1000 2a06:5840:7b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e17-4.conf b/examples/tg16/dhcp/conf-v6/e17-4.conf new file mode 100644 index 0000000..401b8e7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e17-4.conf @@ -0,0 +1,10 @@ +zone e17-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:7c::/64 { + option domain-name "e17-4.tg16.gathering.org"; + + range6 2a06:5840:7c::1000 2a06:5840:7c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e19-1.conf b/examples/tg16/dhcp/conf-v6/e19-1.conf new file mode 100644 index 0000000..d3a17d6 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e19-1.conf @@ -0,0 +1,10 @@ +zone e19-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:7d::/64 { + option domain-name "e19-1.tg16.gathering.org"; + + range6 2a06:5840:7d::1000 2a06:5840:7d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e19-2.conf b/examples/tg16/dhcp/conf-v6/e19-2.conf new file mode 100644 index 0000000..bc9fd22 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e19-2.conf @@ -0,0 +1,10 @@ +zone e19-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:8a::/64 { + option domain-name "e19-2.tg16.gathering.org"; + + range6 2a06:5840:8a::1000 2a06:5840:8a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e19-3.conf b/examples/tg16/dhcp/conf-v6/e19-3.conf new file mode 100644 index 0000000..58c89ea --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e19-3.conf @@ -0,0 +1,10 @@ +zone e19-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:8b::/64 { + option domain-name "e19-3.tg16.gathering.org"; + + range6 2a06:5840:8b::1000 2a06:5840:8b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e19-4.conf b/examples/tg16/dhcp/conf-v6/e19-4.conf new file mode 100644 index 0000000..3932f18 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e19-4.conf @@ -0,0 +1,10 @@ +zone e19-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:8c::/64 { + option domain-name "e19-4.tg16.gathering.org"; + + range6 2a06:5840:8c::1000 2a06:5840:8c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e21-1.conf b/examples/tg16/dhcp/conf-v6/e21-1.conf new file mode 100644 index 0000000..c9b846b --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e21-1.conf @@ -0,0 +1,10 @@ +zone e21-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:8d::/64 { + option domain-name "e21-1.tg16.gathering.org"; + + range6 2a06:5840:8d::1000 2a06:5840:8d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e21-2.conf b/examples/tg16/dhcp/conf-v6/e21-2.conf new file mode 100644 index 0000000..f8db1cc --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e21-2.conf @@ -0,0 +1,10 @@ +zone e21-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:9a::/64 { + option domain-name "e21-2.tg16.gathering.org"; + + range6 2a06:5840:9a::1000 2a06:5840:9a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e21-3.conf b/examples/tg16/dhcp/conf-v6/e21-3.conf new file mode 100644 index 0000000..5d98a95 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e21-3.conf @@ -0,0 +1,10 @@ +zone e21-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:9b::/64 { + option domain-name "e21-3.tg16.gathering.org"; + + range6 2a06:5840:9b::1000 2a06:5840:9b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e21-4.conf b/examples/tg16/dhcp/conf-v6/e21-4.conf new file mode 100644 index 0000000..7a7d425 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e21-4.conf @@ -0,0 +1,10 @@ +zone e21-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:9c::/64 { + option domain-name "e21-4.tg16.gathering.org"; + + range6 2a06:5840:9c::1000 2a06:5840:9c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e23-1.conf b/examples/tg16/dhcp/conf-v6/e23-1.conf new file mode 100644 index 0000000..e0bd0ac --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e23-1.conf @@ -0,0 +1,10 @@ +zone e23-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:9d::/64 { + option domain-name "e23-1.tg16.gathering.org"; + + range6 2a06:5840:9d::1000 2a06:5840:9d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e23-2.conf b/examples/tg16/dhcp/conf-v6/e23-2.conf new file mode 100644 index 0000000..9a116a9 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e23-2.conf @@ -0,0 +1,10 @@ +zone e23-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:10a::/64 { + option domain-name "e23-2.tg16.gathering.org"; + + range6 2a06:5840:10a::1000 2a06:5840:10a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e23-3.conf b/examples/tg16/dhcp/conf-v6/e23-3.conf new file mode 100644 index 0000000..c04ae39 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e23-3.conf @@ -0,0 +1,10 @@ +zone e23-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:10b::/64 { + option domain-name "e23-3.tg16.gathering.org"; + + range6 2a06:5840:10b::1000 2a06:5840:10b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e23-4.conf b/examples/tg16/dhcp/conf-v6/e23-4.conf new file mode 100644 index 0000000..ae7abcb --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e23-4.conf @@ -0,0 +1,10 @@ +zone e23-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:10c::/64 { + option domain-name "e23-4.tg16.gathering.org"; + + range6 2a06:5840:10c::1000 2a06:5840:10c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e25-1.conf b/examples/tg16/dhcp/conf-v6/e25-1.conf new file mode 100644 index 0000000..3287ad7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e25-1.conf @@ -0,0 +1,10 @@ +zone e25-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:10d::/64 { + option domain-name "e25-1.tg16.gathering.org"; + + range6 2a06:5840:10d::1000 2a06:5840:10d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e25-2.conf b/examples/tg16/dhcp/conf-v6/e25-2.conf new file mode 100644 index 0000000..f0804cb --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e25-2.conf @@ -0,0 +1,10 @@ +zone e25-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:11a::/64 { + option domain-name "e25-2.tg16.gathering.org"; + + range6 2a06:5840:11a::1000 2a06:5840:11a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e27-1.conf b/examples/tg16/dhcp/conf-v6/e27-1.conf new file mode 100644 index 0000000..a632f3d --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e27-1.conf @@ -0,0 +1,10 @@ +zone e27-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:11b::/64 { + option domain-name "e27-1.tg16.gathering.org"; + + range6 2a06:5840:11b::1000 2a06:5840:11b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e27-2.conf b/examples/tg16/dhcp/conf-v6/e27-2.conf new file mode 100644 index 0000000..7665acc --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e27-2.conf @@ -0,0 +1,10 @@ +zone e27-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:11c::/64 { + option domain-name "e27-2.tg16.gathering.org"; + + range6 2a06:5840:11c::1000 2a06:5840:11c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e29-1.conf b/examples/tg16/dhcp/conf-v6/e29-1.conf new file mode 100644 index 0000000..ccb2c73 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e29-1.conf @@ -0,0 +1,10 @@ +zone e29-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:11d::/64 { + option domain-name "e29-1.tg16.gathering.org"; + + range6 2a06:5840:11d::1000 2a06:5840:11d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e29-2.conf b/examples/tg16/dhcp/conf-v6/e29-2.conf new file mode 100644 index 0000000..ab98128 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e29-2.conf @@ -0,0 +1,10 @@ +zone e29-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:12a::/64 { + option domain-name "e29-2.tg16.gathering.org"; + + range6 2a06:5840:12a::1000 2a06:5840:12a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e3-3.conf b/examples/tg16/dhcp/conf-v6/e3-3.conf new file mode 100644 index 0000000..b1dd0c8 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e3-3.conf @@ -0,0 +1,10 @@ +zone e3-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:0c::/64 { + option domain-name "e3-3.tg16.gathering.org"; + + range6 2a06:5840:c::1000 2a06:5840:c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e3-4.conf b/examples/tg16/dhcp/conf-v6/e3-4.conf new file mode 100644 index 0000000..d1ecd39 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e3-4.conf @@ -0,0 +1,10 @@ +zone e3-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:0d::/64 { + option domain-name "e3-4.tg16.gathering.org"; + + range6 2a06:5840:d::1000 2a06:5840:d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e31-1.conf b/examples/tg16/dhcp/conf-v6/e31-1.conf new file mode 100644 index 0000000..707301c --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e31-1.conf @@ -0,0 +1,10 @@ +zone e31-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:12b::/64 { + option domain-name "e31-1.tg16.gathering.org"; + + range6 2a06:5840:12b::1000 2a06:5840:12b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e31-2.conf b/examples/tg16/dhcp/conf-v6/e31-2.conf new file mode 100644 index 0000000..8c708ed --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e31-2.conf @@ -0,0 +1,10 @@ +zone e31-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:12c::/64 { + option domain-name "e31-2.tg16.gathering.org"; + + range6 2a06:5840:12c::1000 2a06:5840:12c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e33-1.conf b/examples/tg16/dhcp/conf-v6/e33-1.conf new file mode 100644 index 0000000..0777328 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e33-1.conf @@ -0,0 +1,10 @@ +zone e33-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:12d::/64 { + option domain-name "e33-1.tg16.gathering.org"; + + range6 2a06:5840:12d::1000 2a06:5840:12d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e33-2.conf b/examples/tg16/dhcp/conf-v6/e33-2.conf new file mode 100644 index 0000000..d895ce9 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e33-2.conf @@ -0,0 +1,10 @@ +zone e33-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:13a::/64 { + option domain-name "e33-2.tg16.gathering.org"; + + range6 2a06:5840:13a::1000 2a06:5840:13a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e35-1.conf b/examples/tg16/dhcp/conf-v6/e35-1.conf new file mode 100644 index 0000000..4b066dc --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e35-1.conf @@ -0,0 +1,10 @@ +zone e35-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:13b::/64 { + option domain-name "e35-1.tg16.gathering.org"; + + range6 2a06:5840:13b::1000 2a06:5840:13b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e35-2.conf b/examples/tg16/dhcp/conf-v6/e35-2.conf new file mode 100644 index 0000000..4244d44 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e35-2.conf @@ -0,0 +1,10 @@ +zone e35-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:13c::/64 { + option domain-name "e35-2.tg16.gathering.org"; + + range6 2a06:5840:13c::1000 2a06:5840:13c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e37-1.conf b/examples/tg16/dhcp/conf-v6/e37-1.conf new file mode 100644 index 0000000..de46acf --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e37-1.conf @@ -0,0 +1,10 @@ +zone e37-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:13d::/64 { + option domain-name "e37-1.tg16.gathering.org"; + + range6 2a06:5840:13d::1000 2a06:5840:13d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e37-2.conf b/examples/tg16/dhcp/conf-v6/e37-2.conf new file mode 100644 index 0000000..cfa044f --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e37-2.conf @@ -0,0 +1,10 @@ +zone e37-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:14a::/64 { + option domain-name "e37-2.tg16.gathering.org"; + + range6 2a06:5840:14a::1000 2a06:5840:14a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e39-1.conf b/examples/tg16/dhcp/conf-v6/e39-1.conf new file mode 100644 index 0000000..2824a9a --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e39-1.conf @@ -0,0 +1,10 @@ +zone e39-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:14b::/64 { + option domain-name "e39-1.tg16.gathering.org"; + + range6 2a06:5840:14b::1000 2a06:5840:14b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e39-2.conf b/examples/tg16/dhcp/conf-v6/e39-2.conf new file mode 100644 index 0000000..2e16863 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e39-2.conf @@ -0,0 +1,10 @@ +zone e39-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:14c::/64 { + option domain-name "e39-2.tg16.gathering.org"; + + range6 2a06:5840:14c::1000 2a06:5840:14c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e41-1.conf b/examples/tg16/dhcp/conf-v6/e41-1.conf new file mode 100644 index 0000000..270aadc --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e41-1.conf @@ -0,0 +1,10 @@ +zone e41-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:14d::/64 { + option domain-name "e41-1.tg16.gathering.org"; + + range6 2a06:5840:14d::1000 2a06:5840:14d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e41-2.conf b/examples/tg16/dhcp/conf-v6/e41-2.conf new file mode 100644 index 0000000..6b9c9f6 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e41-2.conf @@ -0,0 +1,10 @@ +zone e41-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:15a::/64 { + option domain-name "e41-2.tg16.gathering.org"; + + range6 2a06:5840:15a::1000 2a06:5840:15a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e41-3.conf b/examples/tg16/dhcp/conf-v6/e41-3.conf new file mode 100644 index 0000000..323423d --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e41-3.conf @@ -0,0 +1,10 @@ +zone e41-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:15b::/64 { + option domain-name "e41-3.tg16.gathering.org"; + + range6 2a06:5840:15b::1000 2a06:5840:15b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e41-4.conf b/examples/tg16/dhcp/conf-v6/e41-4.conf new file mode 100644 index 0000000..5ac3070 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e41-4.conf @@ -0,0 +1,10 @@ +zone e41-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:15c::/64 { + option domain-name "e41-4.tg16.gathering.org"; + + range6 2a06:5840:15c::1000 2a06:5840:15c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e43-1.conf b/examples/tg16/dhcp/conf-v6/e43-1.conf new file mode 100644 index 0000000..388e07a --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e43-1.conf @@ -0,0 +1,10 @@ +zone e43-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:15d::/64 { + option domain-name "e43-1.tg16.gathering.org"; + + range6 2a06:5840:15d::1000 2a06:5840:15d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e43-2.conf b/examples/tg16/dhcp/conf-v6/e43-2.conf new file mode 100644 index 0000000..a62b579 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e43-2.conf @@ -0,0 +1,10 @@ +zone e43-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:16a::/64 { + option domain-name "e43-2.tg16.gathering.org"; + + range6 2a06:5840:16a::1000 2a06:5840:16a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e43-3.conf b/examples/tg16/dhcp/conf-v6/e43-3.conf new file mode 100644 index 0000000..999ab7f --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e43-3.conf @@ -0,0 +1,10 @@ +zone e43-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:16b::/64 { + option domain-name "e43-3.tg16.gathering.org"; + + range6 2a06:5840:16b::1000 2a06:5840:16b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e43-4.conf b/examples/tg16/dhcp/conf-v6/e43-4.conf new file mode 100644 index 0000000..bcd0ac7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e43-4.conf @@ -0,0 +1,10 @@ +zone e43-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:16c::/64 { + option domain-name "e43-4.tg16.gathering.org"; + + range6 2a06:5840:16c::1000 2a06:5840:16c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e45-1.conf b/examples/tg16/dhcp/conf-v6/e45-1.conf new file mode 100644 index 0000000..5f49ab3 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e45-1.conf @@ -0,0 +1,10 @@ +zone e45-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:16d::/64 { + option domain-name "e45-1.tg16.gathering.org"; + + range6 2a06:5840:16d::1000 2a06:5840:16d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e45-2.conf b/examples/tg16/dhcp/conf-v6/e45-2.conf new file mode 100644 index 0000000..c6a5a9f --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e45-2.conf @@ -0,0 +1,10 @@ +zone e45-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:17a::/64 { + option domain-name "e45-2.tg16.gathering.org"; + + range6 2a06:5840:17a::1000 2a06:5840:17a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e45-3.conf b/examples/tg16/dhcp/conf-v6/e45-3.conf new file mode 100644 index 0000000..9a86d60 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e45-3.conf @@ -0,0 +1,10 @@ +zone e45-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:17b::/64 { + option domain-name "e45-3.tg16.gathering.org"; + + range6 2a06:5840:17b::1000 2a06:5840:17b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e45-4.conf b/examples/tg16/dhcp/conf-v6/e45-4.conf new file mode 100644 index 0000000..68a82ec --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e45-4.conf @@ -0,0 +1,10 @@ +zone e45-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:17c::/64 { + option domain-name "e45-4.tg16.gathering.org"; + + range6 2a06:5840:17c::1000 2a06:5840:17c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e47-1.conf b/examples/tg16/dhcp/conf-v6/e47-1.conf new file mode 100644 index 0000000..a088229 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e47-1.conf @@ -0,0 +1,10 @@ +zone e47-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:17d::/64 { + option domain-name "e47-1.tg16.gathering.org"; + + range6 2a06:5840:17d::1000 2a06:5840:17d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e47-2.conf b/examples/tg16/dhcp/conf-v6/e47-2.conf new file mode 100644 index 0000000..82cf9e1 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e47-2.conf @@ -0,0 +1,10 @@ +zone e47-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:18a::/64 { + option domain-name "e47-2.tg16.gathering.org"; + + range6 2a06:5840:18a::1000 2a06:5840:18a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e47-3.conf b/examples/tg16/dhcp/conf-v6/e47-3.conf new file mode 100644 index 0000000..1e14154 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e47-3.conf @@ -0,0 +1,10 @@ +zone e47-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:18b::/64 { + option domain-name "e47-3.tg16.gathering.org"; + + range6 2a06:5840:18b::1000 2a06:5840:18b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e47-4.conf b/examples/tg16/dhcp/conf-v6/e47-4.conf new file mode 100644 index 0000000..a4997f8 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e47-4.conf @@ -0,0 +1,10 @@ +zone e47-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:18c::/64 { + option domain-name "e47-4.tg16.gathering.org"; + + range6 2a06:5840:18c::1000 2a06:5840:18c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e49-1.conf b/examples/tg16/dhcp/conf-v6/e49-1.conf new file mode 100644 index 0000000..2c041e7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e49-1.conf @@ -0,0 +1,10 @@ +zone e49-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:18d::/64 { + option domain-name "e49-1.tg16.gathering.org"; + + range6 2a06:5840:18d::1000 2a06:5840:18d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e49-2.conf b/examples/tg16/dhcp/conf-v6/e49-2.conf new file mode 100644 index 0000000..b6e369d --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e49-2.conf @@ -0,0 +1,10 @@ +zone e49-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:19a::/64 { + option domain-name "e49-2.tg16.gathering.org"; + + range6 2a06:5840:19a::1000 2a06:5840:19a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e49-3.conf b/examples/tg16/dhcp/conf-v6/e49-3.conf new file mode 100644 index 0000000..abae7a9 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e49-3.conf @@ -0,0 +1,10 @@ +zone e49-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:19b::/64 { + option domain-name "e49-3.tg16.gathering.org"; + + range6 2a06:5840:19b::1000 2a06:5840:19b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e49-4.conf b/examples/tg16/dhcp/conf-v6/e49-4.conf new file mode 100644 index 0000000..32167ae --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e49-4.conf @@ -0,0 +1,10 @@ +zone e49-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:19c::/64 { + option domain-name "e49-4.tg16.gathering.org"; + + range6 2a06:5840:19c::1000 2a06:5840:19c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e5-2.conf b/examples/tg16/dhcp/conf-v6/e5-2.conf new file mode 100644 index 0000000..899ef9e --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e5-2.conf @@ -0,0 +1,10 @@ +zone e5-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:1a::/64 { + option domain-name "e5-2.tg16.gathering.org"; + + range6 2a06:5840:1a::1000 2a06:5840:1a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e5-3.conf b/examples/tg16/dhcp/conf-v6/e5-3.conf new file mode 100644 index 0000000..6db1a35 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e5-3.conf @@ -0,0 +1,10 @@ +zone e5-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:1b::/64 { + option domain-name "e5-3.tg16.gathering.org"; + + range6 2a06:5840:1b::1000 2a06:5840:1b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e5-4.conf b/examples/tg16/dhcp/conf-v6/e5-4.conf new file mode 100644 index 0000000..5581fbd --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e5-4.conf @@ -0,0 +1,10 @@ +zone e5-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:1c::/64 { + option domain-name "e5-4.tg16.gathering.org"; + + range6 2a06:5840:1c::1000 2a06:5840:1c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e51-1.conf b/examples/tg16/dhcp/conf-v6/e51-1.conf new file mode 100644 index 0000000..9a5300d --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e51-1.conf @@ -0,0 +1,10 @@ +zone e51-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:19d::/64 { + option domain-name "e51-1.tg16.gathering.org"; + + range6 2a06:5840:19d::1000 2a06:5840:19d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e51-2.conf b/examples/tg16/dhcp/conf-v6/e51-2.conf new file mode 100644 index 0000000..f60fc85 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e51-2.conf @@ -0,0 +1,10 @@ +zone e51-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:20a::/64 { + option domain-name "e51-2.tg16.gathering.org"; + + range6 2a06:5840:20a::1000 2a06:5840:20a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e51-3.conf b/examples/tg16/dhcp/conf-v6/e51-3.conf new file mode 100644 index 0000000..0783786 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e51-3.conf @@ -0,0 +1,10 @@ +zone e51-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:20b::/64 { + option domain-name "e51-3.tg16.gathering.org"; + + range6 2a06:5840:20b::1000 2a06:5840:20b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e51-4.conf b/examples/tg16/dhcp/conf-v6/e51-4.conf new file mode 100644 index 0000000..4a1bb78 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e51-4.conf @@ -0,0 +1,10 @@ +zone e51-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:20c::/64 { + option domain-name "e51-4.tg16.gathering.org"; + + range6 2a06:5840:20c::1000 2a06:5840:20c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e53-1.conf b/examples/tg16/dhcp/conf-v6/e53-1.conf new file mode 100644 index 0000000..bcd10b0 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e53-1.conf @@ -0,0 +1,10 @@ +zone e53-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:20d::/64 { + option domain-name "e53-1.tg16.gathering.org"; + + range6 2a06:5840:20d::1000 2a06:5840:20d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e53-2.conf b/examples/tg16/dhcp/conf-v6/e53-2.conf new file mode 100644 index 0000000..b54a912 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e53-2.conf @@ -0,0 +1,10 @@ +zone e53-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:21a::/64 { + option domain-name "e53-2.tg16.gathering.org"; + + range6 2a06:5840:21a::1000 2a06:5840:21a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e53-3.conf b/examples/tg16/dhcp/conf-v6/e53-3.conf new file mode 100644 index 0000000..1998517 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e53-3.conf @@ -0,0 +1,10 @@ +zone e53-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:21b::/64 { + option domain-name "e53-3.tg16.gathering.org"; + + range6 2a06:5840:21b::1000 2a06:5840:21b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e53-4.conf b/examples/tg16/dhcp/conf-v6/e53-4.conf new file mode 100644 index 0000000..c31c228 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e53-4.conf @@ -0,0 +1,10 @@ +zone e53-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:21c::/64 { + option domain-name "e53-4.tg16.gathering.org"; + + range6 2a06:5840:21c::1000 2a06:5840:21c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e55-1.conf b/examples/tg16/dhcp/conf-v6/e55-1.conf new file mode 100644 index 0000000..5cd1196 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e55-1.conf @@ -0,0 +1,10 @@ +zone e55-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:21d::/64 { + option domain-name "e55-1.tg16.gathering.org"; + + range6 2a06:5840:21d::1000 2a06:5840:21d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e55-2.conf b/examples/tg16/dhcp/conf-v6/e55-2.conf new file mode 100644 index 0000000..ab7071d --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e55-2.conf @@ -0,0 +1,10 @@ +zone e55-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:22a::/64 { + option domain-name "e55-2.tg16.gathering.org"; + + range6 2a06:5840:22a::1000 2a06:5840:22a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e55-3.conf b/examples/tg16/dhcp/conf-v6/e55-3.conf new file mode 100644 index 0000000..7e5d95e --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e55-3.conf @@ -0,0 +1,10 @@ +zone e55-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:22b::/64 { + option domain-name "e55-3.tg16.gathering.org"; + + range6 2a06:5840:22b::1000 2a06:5840:22b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e55-4.conf b/examples/tg16/dhcp/conf-v6/e55-4.conf new file mode 100644 index 0000000..86237d3 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e55-4.conf @@ -0,0 +1,10 @@ +zone e55-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:22c::/64 { + option domain-name "e55-4.tg16.gathering.org"; + + range6 2a06:5840:22c::1000 2a06:5840:22c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e57-1.conf b/examples/tg16/dhcp/conf-v6/e57-1.conf new file mode 100644 index 0000000..82b18f2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e57-1.conf @@ -0,0 +1,10 @@ +zone e57-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:22d::/64 { + option domain-name "e57-1.tg16.gathering.org"; + + range6 2a06:5840:22d::1000 2a06:5840:22d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e57-2.conf b/examples/tg16/dhcp/conf-v6/e57-2.conf new file mode 100644 index 0000000..61cc53e --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e57-2.conf @@ -0,0 +1,10 @@ +zone e57-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:23a::/64 { + option domain-name "e57-2.tg16.gathering.org"; + + range6 2a06:5840:23a::1000 2a06:5840:23a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e57-3.conf b/examples/tg16/dhcp/conf-v6/e57-3.conf new file mode 100644 index 0000000..fd26b1a --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e57-3.conf @@ -0,0 +1,10 @@ +zone e57-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:23b::/64 { + option domain-name "e57-3.tg16.gathering.org"; + + range6 2a06:5840:23b::1000 2a06:5840:23b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e57-4.conf b/examples/tg16/dhcp/conf-v6/e57-4.conf new file mode 100644 index 0000000..7b4326e --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e57-4.conf @@ -0,0 +1,10 @@ +zone e57-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:23c::/64 { + option domain-name "e57-4.tg16.gathering.org"; + + range6 2a06:5840:23c::1000 2a06:5840:23c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e59-1.conf b/examples/tg16/dhcp/conf-v6/e59-1.conf new file mode 100644 index 0000000..3233fc0 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e59-1.conf @@ -0,0 +1,10 @@ +zone e59-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:23d::/64 { + option domain-name "e59-1.tg16.gathering.org"; + + range6 2a06:5840:23d::1000 2a06:5840:23d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e59-2.conf b/examples/tg16/dhcp/conf-v6/e59-2.conf new file mode 100644 index 0000000..5e3844c --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e59-2.conf @@ -0,0 +1,10 @@ +zone e59-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:24a::/64 { + option domain-name "e59-2.tg16.gathering.org"; + + range6 2a06:5840:24a::1000 2a06:5840:24a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e59-3.conf b/examples/tg16/dhcp/conf-v6/e59-3.conf new file mode 100644 index 0000000..90f1354 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e59-3.conf @@ -0,0 +1,10 @@ +zone e59-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:24b::/64 { + option domain-name "e59-3.tg16.gathering.org"; + + range6 2a06:5840:24b::1000 2a06:5840:24b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e59-4.conf b/examples/tg16/dhcp/conf-v6/e59-4.conf new file mode 100644 index 0000000..103f49d --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e59-4.conf @@ -0,0 +1,10 @@ +zone e59-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:24c::/64 { + option domain-name "e59-4.tg16.gathering.org"; + + range6 2a06:5840:24c::1000 2a06:5840:24c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e61-1.conf b/examples/tg16/dhcp/conf-v6/e61-1.conf new file mode 100644 index 0000000..e44de98 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e61-1.conf @@ -0,0 +1,10 @@ +zone e61-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:24d::/64 { + option domain-name "e61-1.tg16.gathering.org"; + + range6 2a06:5840:24d::1000 2a06:5840:24d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e61-2.conf b/examples/tg16/dhcp/conf-v6/e61-2.conf new file mode 100644 index 0000000..8a354b3 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e61-2.conf @@ -0,0 +1,10 @@ +zone e61-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:25a::/64 { + option domain-name "e61-2.tg16.gathering.org"; + + range6 2a06:5840:25a::1000 2a06:5840:25a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e61-3.conf b/examples/tg16/dhcp/conf-v6/e61-3.conf new file mode 100644 index 0000000..a4bdf37 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e61-3.conf @@ -0,0 +1,10 @@ +zone e61-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:25b::/64 { + option domain-name "e61-3.tg16.gathering.org"; + + range6 2a06:5840:25b::1000 2a06:5840:25b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e61-4.conf b/examples/tg16/dhcp/conf-v6/e61-4.conf new file mode 100644 index 0000000..a843110 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e61-4.conf @@ -0,0 +1,10 @@ +zone e61-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:25c::/64 { + option domain-name "e61-4.tg16.gathering.org"; + + range6 2a06:5840:25c::1000 2a06:5840:25c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e63-1.conf b/examples/tg16/dhcp/conf-v6/e63-1.conf new file mode 100644 index 0000000..8d91330 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e63-1.conf @@ -0,0 +1,10 @@ +zone e63-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:25d::/64 { + option domain-name "e63-1.tg16.gathering.org"; + + range6 2a06:5840:25d::1000 2a06:5840:25d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e63-2.conf b/examples/tg16/dhcp/conf-v6/e63-2.conf new file mode 100644 index 0000000..a87ef5b --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e63-2.conf @@ -0,0 +1,10 @@ +zone e63-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:26a::/64 { + option domain-name "e63-2.tg16.gathering.org"; + + range6 2a06:5840:26a::1000 2a06:5840:26a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e63-3.conf b/examples/tg16/dhcp/conf-v6/e63-3.conf new file mode 100644 index 0000000..d13080b --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e63-3.conf @@ -0,0 +1,10 @@ +zone e63-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:26b::/64 { + option domain-name "e63-3.tg16.gathering.org"; + + range6 2a06:5840:26b::1000 2a06:5840:26b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e63-4.conf b/examples/tg16/dhcp/conf-v6/e63-4.conf new file mode 100644 index 0000000..5edcc3d --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e63-4.conf @@ -0,0 +1,10 @@ +zone e63-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:26c::/64 { + option domain-name "e63-4.tg16.gathering.org"; + + range6 2a06:5840:26c::1000 2a06:5840:26c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e65-1.conf b/examples/tg16/dhcp/conf-v6/e65-1.conf new file mode 100644 index 0000000..f5b4e18 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e65-1.conf @@ -0,0 +1,10 @@ +zone e65-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:26d::/64 { + option domain-name "e65-1.tg16.gathering.org"; + + range6 2a06:5840:26d::1000 2a06:5840:26d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e65-2.conf b/examples/tg16/dhcp/conf-v6/e65-2.conf new file mode 100644 index 0000000..4b17ede --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e65-2.conf @@ -0,0 +1,10 @@ +zone e65-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:27a::/64 { + option domain-name "e65-2.tg16.gathering.org"; + + range6 2a06:5840:27a::1000 2a06:5840:27a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e65-3.conf b/examples/tg16/dhcp/conf-v6/e65-3.conf new file mode 100644 index 0000000..be7f057 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e65-3.conf @@ -0,0 +1,10 @@ +zone e65-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:27b::/64 { + option domain-name "e65-3.tg16.gathering.org"; + + range6 2a06:5840:27b::1000 2a06:5840:27b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e65-4.conf b/examples/tg16/dhcp/conf-v6/e65-4.conf new file mode 100644 index 0000000..f898840 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e65-4.conf @@ -0,0 +1,10 @@ +zone e65-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:27c::/64 { + option domain-name "e65-4.tg16.gathering.org"; + + range6 2a06:5840:27c::1000 2a06:5840:27c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e67-1.conf b/examples/tg16/dhcp/conf-v6/e67-1.conf new file mode 100644 index 0000000..266b526 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e67-1.conf @@ -0,0 +1,10 @@ +zone e67-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:27d::/64 { + option domain-name "e67-1.tg16.gathering.org"; + + range6 2a06:5840:27d::1000 2a06:5840:27d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e67-2.conf b/examples/tg16/dhcp/conf-v6/e67-2.conf new file mode 100644 index 0000000..defa688 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e67-2.conf @@ -0,0 +1,10 @@ +zone e67-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:28a::/64 { + option domain-name "e67-2.tg16.gathering.org"; + + range6 2a06:5840:28a::1000 2a06:5840:28a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e67-3.conf b/examples/tg16/dhcp/conf-v6/e67-3.conf new file mode 100644 index 0000000..2f48830 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e67-3.conf @@ -0,0 +1,10 @@ +zone e67-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:28b::/64 { + option domain-name "e67-3.tg16.gathering.org"; + + range6 2a06:5840:28b::1000 2a06:5840:28b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e67-4.conf b/examples/tg16/dhcp/conf-v6/e67-4.conf new file mode 100644 index 0000000..9e576b9 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e67-4.conf @@ -0,0 +1,10 @@ +zone e67-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:28c::/64 { + option domain-name "e67-4.tg16.gathering.org"; + + range6 2a06:5840:28c::1000 2a06:5840:28c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e69-1.conf b/examples/tg16/dhcp/conf-v6/e69-1.conf new file mode 100644 index 0000000..07595dc --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e69-1.conf @@ -0,0 +1,10 @@ +zone e69-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:28d::/64 { + option domain-name "e69-1.tg16.gathering.org"; + + range6 2a06:5840:28d::1000 2a06:5840:28d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e69-2.conf b/examples/tg16/dhcp/conf-v6/e69-2.conf new file mode 100644 index 0000000..26efc98 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e69-2.conf @@ -0,0 +1,10 @@ +zone e69-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:29a::/64 { + option domain-name "e69-2.tg16.gathering.org"; + + range6 2a06:5840:29a::1000 2a06:5840:29a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e7-1.conf b/examples/tg16/dhcp/conf-v6/e7-1.conf new file mode 100644 index 0000000..a2f85e0 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e7-1.conf @@ -0,0 +1,10 @@ +zone e7-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:1d::/64 { + option domain-name "e7-1.tg16.gathering.org"; + + range6 2a06:5840:1d::1000 2a06:5840:1d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e7-2.conf b/examples/tg16/dhcp/conf-v6/e7-2.conf new file mode 100644 index 0000000..90ac12a --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e7-2.conf @@ -0,0 +1,10 @@ +zone e7-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:2a::/64 { + option domain-name "e7-2.tg16.gathering.org"; + + range6 2a06:5840:2a::1000 2a06:5840:2a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e7-3.conf b/examples/tg16/dhcp/conf-v6/e7-3.conf new file mode 100644 index 0000000..fb20723 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e7-3.conf @@ -0,0 +1,10 @@ +zone e7-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:2b::/64 { + option domain-name "e7-3.tg16.gathering.org"; + + range6 2a06:5840:2b::1000 2a06:5840:2b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e7-4.conf b/examples/tg16/dhcp/conf-v6/e7-4.conf new file mode 100644 index 0000000..7de096d --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e7-4.conf @@ -0,0 +1,10 @@ +zone e7-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:2c::/64 { + option domain-name "e7-4.tg16.gathering.org"; + + range6 2a06:5840:2c::1000 2a06:5840:2c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e71-1.conf b/examples/tg16/dhcp/conf-v6/e71-1.conf new file mode 100644 index 0000000..c1c0b87 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e71-1.conf @@ -0,0 +1,10 @@ +zone e71-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:29b::/64 { + option domain-name "e71-1.tg16.gathering.org"; + + range6 2a06:5840:29b::1000 2a06:5840:29b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e71-2.conf b/examples/tg16/dhcp/conf-v6/e71-2.conf new file mode 100644 index 0000000..54f4950 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e71-2.conf @@ -0,0 +1,10 @@ +zone e71-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:29c::/64 { + option domain-name "e71-2.tg16.gathering.org"; + + range6 2a06:5840:29c::1000 2a06:5840:29c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e73-1.conf b/examples/tg16/dhcp/conf-v6/e73-1.conf new file mode 100644 index 0000000..0c37fbb --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e73-1.conf @@ -0,0 +1,10 @@ +zone e73-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:29d::/64 { + option domain-name "e73-1.tg16.gathering.org"; + + range6 2a06:5840:29d::1000 2a06:5840:29d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e73-2.conf b/examples/tg16/dhcp/conf-v6/e73-2.conf new file mode 100644 index 0000000..614ff52 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e73-2.conf @@ -0,0 +1,10 @@ +zone e73-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:30a::/64 { + option domain-name "e73-2.tg16.gathering.org"; + + range6 2a06:5840:30a::1000 2a06:5840:30a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e75-1.conf b/examples/tg16/dhcp/conf-v6/e75-1.conf new file mode 100644 index 0000000..64dfa33 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e75-1.conf @@ -0,0 +1,10 @@ +zone e75-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:30b::/64 { + option domain-name "e75-1.tg16.gathering.org"; + + range6 2a06:5840:30b::1000 2a06:5840:30b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e75-2.conf b/examples/tg16/dhcp/conf-v6/e75-2.conf new file mode 100644 index 0000000..0b76ed1 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e75-2.conf @@ -0,0 +1,10 @@ +zone e75-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:30c::/64 { + option domain-name "e75-2.tg16.gathering.org"; + + range6 2a06:5840:30c::1000 2a06:5840:30c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e77-1.conf b/examples/tg16/dhcp/conf-v6/e77-1.conf new file mode 100644 index 0000000..bb0b615 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e77-1.conf @@ -0,0 +1,10 @@ +zone e77-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:30d::/64 { + option domain-name "e77-1.tg16.gathering.org"; + + range6 2a06:5840:30d::1000 2a06:5840:30d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e77-2.conf b/examples/tg16/dhcp/conf-v6/e77-2.conf new file mode 100644 index 0000000..4e9f3ff --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e77-2.conf @@ -0,0 +1,10 @@ +zone e77-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:31a::/64 { + option domain-name "e77-2.tg16.gathering.org"; + + range6 2a06:5840:31a::1000 2a06:5840:31a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e79-1.conf b/examples/tg16/dhcp/conf-v6/e79-1.conf new file mode 100644 index 0000000..565c8e3 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e79-1.conf @@ -0,0 +1,10 @@ +zone e79-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:31b::/64 { + option domain-name "e79-1.tg16.gathering.org"; + + range6 2a06:5840:31b::1000 2a06:5840:31b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e79-2.conf b/examples/tg16/dhcp/conf-v6/e79-2.conf new file mode 100644 index 0000000..0f9af2a --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e79-2.conf @@ -0,0 +1,10 @@ +zone e79-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:31c::/64 { + option domain-name "e79-2.tg16.gathering.org"; + + range6 2a06:5840:31c::1000 2a06:5840:31c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e81-1.conf b/examples/tg16/dhcp/conf-v6/e81-1.conf new file mode 100644 index 0000000..a4e033f --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e81-1.conf @@ -0,0 +1,10 @@ +zone e81-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:31d::/64 { + option domain-name "e81-1.tg16.gathering.org"; + + range6 2a06:5840:31d::1000 2a06:5840:31d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e81-2.conf b/examples/tg16/dhcp/conf-v6/e81-2.conf new file mode 100644 index 0000000..792616e --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e81-2.conf @@ -0,0 +1,10 @@ +zone e81-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:32a::/64 { + option domain-name "e81-2.tg16.gathering.org"; + + range6 2a06:5840:32a::1000 2a06:5840:32a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e83-2.conf b/examples/tg16/dhcp/conf-v6/e83-2.conf new file mode 100644 index 0000000..57b2ba6 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e83-2.conf @@ -0,0 +1,10 @@ +zone e83-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:32b::/64 { + option domain-name "e83-2.tg16.gathering.org"; + + range6 2a06:5840:32b::1000 2a06:5840:32b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e85-2.conf b/examples/tg16/dhcp/conf-v6/e85-2.conf new file mode 100644 index 0000000..aa74e70 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e85-2.conf @@ -0,0 +1,10 @@ +zone e85-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:32c::/64 { + option domain-name "e85-2.tg16.gathering.org"; + + range6 2a06:5840:32c::1000 2a06:5840:32c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e9-1.conf b/examples/tg16/dhcp/conf-v6/e9-1.conf new file mode 100644 index 0000000..d311e73 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e9-1.conf @@ -0,0 +1,10 @@ +zone e9-1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:2d::/64 { + option domain-name "e9-1.tg16.gathering.org"; + + range6 2a06:5840:2d::1000 2a06:5840:2d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e9-2.conf b/examples/tg16/dhcp/conf-v6/e9-2.conf new file mode 100644 index 0000000..73cfc48 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e9-2.conf @@ -0,0 +1,10 @@ +zone e9-2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:3a::/64 { + option domain-name "e9-2.tg16.gathering.org"; + + range6 2a06:5840:3a::1000 2a06:5840:3a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e9-3.conf b/examples/tg16/dhcp/conf-v6/e9-3.conf new file mode 100644 index 0000000..c8221f1 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e9-3.conf @@ -0,0 +1,10 @@ +zone e9-3.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:3b::/64 { + option domain-name "e9-3.tg16.gathering.org"; + + range6 2a06:5840:3b::1000 2a06:5840:3b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e9-4.conf b/examples/tg16/dhcp/conf-v6/e9-4.conf new file mode 100644 index 0000000..8f2b1b8 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e9-4.conf @@ -0,0 +1,10 @@ +zone e9-4.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:3c::/64 { + option domain-name "e9-4.tg16.gathering.org"; + + range6 2a06:5840:3c::1000 2a06:5840:3c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/event.conf b/examples/tg16/dhcp/conf-v6/event.conf new file mode 100644 index 0000000..dfd19a8 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/event.conf @@ -0,0 +1,10 @@ +zone event.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:60::/64 { + option domain-name "event.tg16.gathering.org"; + + range6 2a06:5840:60::1000 2a06:5840:60::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/flankenord.conf b/examples/tg16/dhcp/conf-v6/flankenord.conf new file mode 100644 index 0000000..a32cec8 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/flankenord.conf @@ -0,0 +1,10 @@ +zone flankenord.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:41b::/64 { + option domain-name "flankenord.tg16.gathering.org"; + + range6 2a06:5840:41b::1000 2a06:5840:41b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/flankesor.conf b/examples/tg16/dhcp/conf-v6/flankesor.conf new file mode 100644 index 0000000..2c17bb4 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/flankesor.conf @@ -0,0 +1,10 @@ +zone flankesor.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:41c::/64 { + option domain-name "flankesor.tg16.gathering.org"; + + range6 2a06:5840:41c::1000 2a06:5840:41c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/foh.conf b/examples/tg16/dhcp/conf-v6/foh.conf new file mode 100644 index 0000000..64011a1 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/foh.conf @@ -0,0 +1,10 @@ +zone foh.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:68::/64 { + option domain-name "foh.tg16.gathering.org"; + + range6 2a06:5840:68::1000 2a06:5840:68::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/fugleberget.conf b/examples/tg16/dhcp/conf-v6/fugleberget.conf new file mode 100644 index 0000000..e4c3964 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/fugleberget.conf @@ -0,0 +1,10 @@ +zone fugleberget.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:65::/64 { + option domain-name "fugleberget.tg16.gathering.org"; + + range6 2a06:5840:65::1000 2a06:5840:65::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/game.conf b/examples/tg16/dhcp/conf-v6/game.conf new file mode 100644 index 0000000..d864882 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/game.conf @@ -0,0 +1,10 @@ +zone game.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:76::/64 { + option domain-name "game.tg16.gathering.org"; + + range6 2a06:5840:76::1000 2a06:5840:76::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/gamestage.conf b/examples/tg16/dhcp/conf-v6/gamestage.conf new file mode 100644 index 0000000..e6a1c89 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/gamestage.conf @@ -0,0 +1,10 @@ +zone gamestage.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:78::/64 { + option domain-name "gamestage.tg16.gathering.org"; + + range6 2a06:5840:78::1000 2a06:5840:78::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/highlights.conf b/examples/tg16/dhcp/conf-v6/highlights.conf new file mode 100644 index 0000000..33cb8da --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/highlights.conf @@ -0,0 +1,10 @@ +zone highlights.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:81a::/64 { + option domain-name "highlights.tg16.gathering.org"; + + range6 2a06:5840:81a::1000 2a06:5840:81a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/hon.conf b/examples/tg16/dhcp/conf-v6/hon.conf new file mode 100644 index 0000000..ae0b2a8 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/hon.conf @@ -0,0 +1,10 @@ +zone hon.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:79::/64 { + option domain-name "hon.tg16.gathering.org"; + + range6 2a06:5840:79::1000 2a06:5840:79::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/info.conf b/examples/tg16/dhcp/conf-v6/info.conf new file mode 100644 index 0000000..4ea37e0 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/info.conf @@ -0,0 +1,10 @@ +zone info.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:63::/64 { + option domain-name "info.tg16.gathering.org"; + + range6 2a06:5840:63::1000 2a06:5840:63::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/innsjekk.conf b/examples/tg16/dhcp/conf-v6/innsjekk.conf new file mode 100644 index 0000000..c53caf9 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/innsjekk.conf @@ -0,0 +1,10 @@ +zone innsjekk.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:69::/64 { + option domain-name "innsjekk.tg16.gathering.org"; + + range6 2a06:5840:69::1000 2a06:5840:69::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/logistikk.conf b/examples/tg16/dhcp/conf-v6/logistikk.conf new file mode 100644 index 0000000..a52da22 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/logistikk.conf @@ -0,0 +1,10 @@ +zone logistikk.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:59::/64 { + option domain-name "logistikk.tg16.gathering.org"; + + range6 2a06:5840:59::1000 2a06:5840:59::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/medic.conf b/examples/tg16/dhcp/conf-v6/medic.conf new file mode 100644 index 0000000..1de5c76 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/medic.conf @@ -0,0 +1,10 @@ +zone medic.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:71::/64 { + option domain-name "medic.tg16.gathering.org"; + + range6 2a06:5840:71::1000 2a06:5840:71::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/noc.conf b/examples/tg16/dhcp/conf-v6/noc.conf new file mode 100644 index 0000000..f53f1b0 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/noc.conf @@ -0,0 +1,10 @@ +zone noc.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5841:150a::/64 { + option domain-name "noc.tg16.gathering.org"; + + range6 2a06:5841:150a::1000 2a06:5841:150a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/north.conf b/examples/tg16/dhcp/conf-v6/north.conf new file mode 100644 index 0000000..2cb91e8 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/north.conf @@ -0,0 +1,10 @@ +zone north.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:64::/64 { + option domain-name "north.tg16.gathering.org"; + + range6 2a06:5840:64::1000 2a06:5840:64::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/presse.conf b/examples/tg16/dhcp/conf-v6/presse.conf new file mode 100644 index 0000000..35bddf3 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/presse.conf @@ -0,0 +1,10 @@ +zone presse.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:73::/64 { + option domain-name "presse.tg16.gathering.org"; + + range6 2a06:5840:73::1000 2a06:5840:73::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/resepsjon.conf b/examples/tg16/dhcp/conf-v6/resepsjon.conf new file mode 100644 index 0000000..3c742fe --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/resepsjon.conf @@ -0,0 +1,10 @@ +zone resepsjon.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:70::/64 { + option domain-name "resepsjon.tg16.gathering.org"; + + range6 2a06:5840:70::1000 2a06:5840:70::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/santander-temp.conf b/examples/tg16/dhcp/conf-v6/santander-temp.conf new file mode 100644 index 0000000..592bb45 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/santander-temp.conf @@ -0,0 +1,10 @@ +zone santander-temp.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:93::/64 { + option domain-name "santander-temp.tg16.gathering.org"; + + range6 2a06:5840:93::1000 2a06:5840:93::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/security.conf b/examples/tg16/dhcp/conf-v6/security.conf new file mode 100644 index 0000000..7187d73 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/security.conf @@ -0,0 +1,10 @@ +zone security.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:74::/64 { + option domain-name "security.tg16.gathering.org"; + + range6 2a06:5840:74::1000 2a06:5840:74::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/security2.conf b/examples/tg16/dhcp/conf-v6/security2.conf new file mode 100644 index 0000000..65f497c --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/security2.conf @@ -0,0 +1,10 @@ +zone security2.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:75::/64 { + option domain-name "security2.tg16.gathering.org"; + + range6 2a06:5840:75::1000 2a06:5840:75::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/sponsor.conf b/examples/tg16/dhcp/conf-v6/sponsor.conf new file mode 100644 index 0000000..ab77aa5 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/sponsor.conf @@ -0,0 +1,10 @@ +zone sponsor.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:72::/64 { + option domain-name "sponsor.tg16.gathering.org"; + + range6 2a06:5840:72::1000 2a06:5840:72::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/stage.conf b/examples/tg16/dhcp/conf-v6/stage.conf new file mode 100644 index 0000000..82b8088 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/stage.conf @@ -0,0 +1,10 @@ +zone stage.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:67::/64 { + option domain-name "stage.tg16.gathering.org"; + + range6 2a06:5840:67::1000 2a06:5840:67::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/streamer1.conf b/examples/tg16/dhcp/conf-v6/streamer1.conf new file mode 100644 index 0000000..26451da --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/streamer1.conf @@ -0,0 +1,10 @@ +zone streamer1.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:41d::/64 { + option domain-name "streamer1.tg16.gathering.org"; + + range6 2a06:5840:41d::1000 2a06:5840:41d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/tech-wlan.conf b/examples/tg16/dhcp/conf-v6/tech-wlan.conf new file mode 100644 index 0000000..3b196c4 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/tech-wlan.conf @@ -0,0 +1,10 @@ +zone tech-wlan.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5841:151a::/64 { + option domain-name "tech-wlan.tg16.gathering.org"; + + range6 2a06:5841:151a::1000 2a06:5841:151a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/wlan.conf b/examples/tg16/dhcp/conf-v6/wlan.conf new file mode 100644 index 0000000..230e36a --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/wlan.conf @@ -0,0 +1,10 @@ +zone wlan.tg16.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} +subnet6 2a06:5840:96::/64 { + option domain-name "wlan.tg16.gathering.org"; + + range6 2a06:5840:96::1000 2a06:5840:96::9999; +} + diff --git a/examples/tg16/dhcp/dhcpd.conf b/examples/tg16/dhcp/dhcpd.conf new file mode 100644 index 0000000..dd57404 --- /dev/null +++ b/examples/tg16/dhcp/dhcpd.conf @@ -0,0 +1,60 @@ +# GENERATED BY make-dhcpd.pl + +# 60 min leasetime, 120 min max +default-lease-time 3600; +max-lease-time 7200; + +# make server authorative +authoritative; + +# Don't let clients set their own FQDN +ignore client-updates; + +# enable DDNS +ddns-update-style interim; + +# set ddns-hostname +if exists host-name { + ddns-hostname = lcase(option host-name); +} elsif exists fqdn.hostname { + ddns-hostname = lcase(option fqdn.hostname); +} else { + ddns-hostname = binary-to-ascii(10, 8, "-", leased-address); +} + +# Domain name (unless overriden elsewhere) +option domain-name "tg16.gathering.org"; +option domain-name-servers 185.110.149.2, 185.110.148.2; + +key DHCP_UPDATER { + algorithm HMAC-MD5.SIG-ALG.REG.INT; + secret <removed>; +} + +# Servernetwork, Tele +subnet 185.110.149.0 netmask 255.255.255.192 {} + +# Servernetwork, NOC +# Add small range at the end for PXE +subnet 185.110.148.0 netmask 255.255.255.192 { + option subnet-mask 255.255.255.192; + option routers 185.110.148.1; + + # No DDNS + ddns-updates off; + ddns-hostname = none; + ddns-domainname = none; + + # supershort leasetime + default-lease-time 300; + max-lease-time 600; + + range 185.110.148.48 185.110.148.62; +} + +include "/etc/dhcp/v4-revzones.conf"; +include "/etc/dhcp/v4-generated-include.conf"; +include "/etc/dhcp/v4-pxe-boot.conf"; +include "/etc/dhcp/v4-wlc.conf"; +include "/etc/dhcp/v4-voip.conf"; + diff --git a/examples/tg16/dhcp/dhcpd6.conf b/examples/tg16/dhcp/dhcpd6.conf new file mode 100644 index 0000000..1ca21a2 --- /dev/null +++ b/examples/tg16/dhcp/dhcpd6.conf @@ -0,0 +1,64 @@ +# GENERATED BY make-dhcpd6.pl + +# IPv6 address valid lifetime +# (at the end the address is no longer usable by the client) +# (usual IPv6 default is 30 days) +default-lease-time 3600; + +# IPv6 address preferred lifetime +# (at the end the address is deprecated, i.e., the client should use +# other addresses for new connections) +# (usual IPv6 default is 7 days) +preferred-lifetime 3600; + +# T1, the delay before Renew +# (default is 1/2 preferred lifetime) +option dhcp-renewal-time 1800; + +# T2, the delay before Rebind (if Renews failed) +# (default is 3/4 preferred lifetime) +option dhcp-rebinding-time 1800; + +# Enable RFC 5007 support +allow leasequery; + +# Set preference to 255 (maximum) in order to avoid waiting for +# additional servers when there is only one +option dhcp6.preference 255; + +# Server side command to enable rapid-commit (2 packet exchange) +option dhcp6.rapid-commit; + +# The delay before information-request refresh +# (minimum is 10 minutes, maximum one day, default is to not refresh) +# (set to 6 hours) +option dhcp6.info-refresh-time 21600; + +# Don't let clients set their own FQDN +ignore client-updates; + +# disable ddns +ddns-update-style none; + +# make server authorative +authoritative; + +# Global definitions for name server address(es) and domain search list +option domain-name "tg16.gathering.org"; +option dhcp6.name-servers 2a06:5841:149a::2, 2a06:5841:1337::2; + +key DHCP_UPDATER { + algorithm HMAC-MD5.SIG-ALG.REG.INT; + secret <removed>; +} + +subnet6 2a06:5841:149a::/64 {} +subnet6 2a06:5841:1337::/64 { + range6 2a06:5841:1337::8000 2a06:5841:1337::9999; +} + +include "/etc/dhcp/v6-generated-include.conf"; +include "/etc/dhcp/v6-pxe-boot.conf"; +#include "/etc/dhcp/v6-wlc.conf"; +#include "/etc/dhcp/v6-voip.conf"; + diff --git a/examples/tg16/dhcp/v4-generated-include.conf b/examples/tg16/dhcp/v4-generated-include.conf new file mode 100644 index 0000000..90312c1 --- /dev/null +++ b/examples/tg16/dhcp/v4-generated-include.conf @@ -0,0 +1,179 @@ +include "/etc/dhcp/conf-v4/ap-creativia.conf"; +include "/etc/dhcp/conf-v4/ap-distro0.conf"; +include "/etc/dhcp/conf-v4/ap-distro1.conf"; +include "/etc/dhcp/conf-v4/ap-distro2.conf"; +include "/etc/dhcp/conf-v4/ap-distro3.conf"; +include "/etc/dhcp/conf-v4/ap-distro4.conf"; +include "/etc/dhcp/conf-v4/ap-distro5.conf"; +include "/etc/dhcp/conf-v4/ap-distro6.conf"; +include "/etc/dhcp/conf-v4/ap-distro7.conf"; +include "/etc/dhcp/conf-v4/ap-stand.conf"; +include "/etc/dhcp/conf-v4/auditorium.conf"; +include "/etc/dhcp/conf-v4/creativia-village.conf"; +include "/etc/dhcp/conf-v4/creativia.conf"; +include "/etc/dhcp/conf-v4/creativia1.conf"; +include "/etc/dhcp/conf-v4/creativia2.conf"; +include "/etc/dhcp/conf-v4/creativia3.conf"; +include "/etc/dhcp/conf-v4/creativia4.conf"; +include "/etc/dhcp/conf-v4/creativia5.conf"; +include "/etc/dhcp/conf-v4/creativia6.conf"; +include "/etc/dhcp/conf-v4/creativia7.conf"; +include "/etc/dhcp/conf-v4/creativiasw1.conf"; +include "/etc/dhcp/conf-v4/crew.conf"; +include "/etc/dhcp/conf-v4/deltaker-srv.conf"; +include "/etc/dhcp/conf-v4/e1-3.conf"; +include "/etc/dhcp/conf-v4/e1-4.conf"; +include "/etc/dhcp/conf-v4/e11-1.conf"; +include "/etc/dhcp/conf-v4/e11-2.conf"; +include "/etc/dhcp/conf-v4/e11-3.conf"; +include "/etc/dhcp/conf-v4/e11-4.conf"; +include "/etc/dhcp/conf-v4/e13-1.conf"; +include "/etc/dhcp/conf-v4/e13-2.conf"; +include "/etc/dhcp/conf-v4/e13-3.conf"; +include "/etc/dhcp/conf-v4/e13-4.conf"; +include "/etc/dhcp/conf-v4/e15-1.conf"; +include "/etc/dhcp/conf-v4/e15-2.conf"; +include "/etc/dhcp/conf-v4/e15-3.conf"; +include "/etc/dhcp/conf-v4/e15-4.conf"; +include "/etc/dhcp/conf-v4/e17-1.conf"; +include "/etc/dhcp/conf-v4/e17-2.conf"; +include "/etc/dhcp/conf-v4/e17-3.conf"; +include "/etc/dhcp/conf-v4/e17-4.conf"; +include "/etc/dhcp/conf-v4/e19-1.conf"; +include "/etc/dhcp/conf-v4/e19-2.conf"; +include "/etc/dhcp/conf-v4/e19-3.conf"; +include "/etc/dhcp/conf-v4/e19-4.conf"; +include "/etc/dhcp/conf-v4/e21-1.conf"; +include "/etc/dhcp/conf-v4/e21-2.conf"; +include "/etc/dhcp/conf-v4/e21-3.conf"; +include "/etc/dhcp/conf-v4/e21-4.conf"; +include "/etc/dhcp/conf-v4/e23-1.conf"; +include "/etc/dhcp/conf-v4/e23-2.conf"; +include "/etc/dhcp/conf-v4/e23-3.conf"; +include "/etc/dhcp/conf-v4/e23-4.conf"; +include "/etc/dhcp/conf-v4/e25-1.conf"; +include "/etc/dhcp/conf-v4/e25-2.conf"; +include "/etc/dhcp/conf-v4/e27-1.conf"; +include "/etc/dhcp/conf-v4/e27-2.conf"; +include "/etc/dhcp/conf-v4/e29-1.conf"; +include "/etc/dhcp/conf-v4/e29-2.conf"; +include "/etc/dhcp/conf-v4/e3-3.conf"; +include "/etc/dhcp/conf-v4/e3-4.conf"; +include "/etc/dhcp/conf-v4/e31-1.conf"; +include "/etc/dhcp/conf-v4/e31-2.conf"; +include "/etc/dhcp/conf-v4/e33-1.conf"; +include "/etc/dhcp/conf-v4/e33-2.conf"; +include "/etc/dhcp/conf-v4/e35-1.conf"; +include "/etc/dhcp/conf-v4/e35-2.conf"; +include "/etc/dhcp/conf-v4/e37-1.conf"; +include "/etc/dhcp/conf-v4/e37-2.conf"; +include "/etc/dhcp/conf-v4/e39-1.conf"; +include "/etc/dhcp/conf-v4/e39-2.conf"; +include "/etc/dhcp/conf-v4/e41-1.conf"; +include "/etc/dhcp/conf-v4/e41-2.conf"; +include "/etc/dhcp/conf-v4/e41-3.conf"; +include "/etc/dhcp/conf-v4/e41-4.conf"; +include "/etc/dhcp/conf-v4/e43-1.conf"; +include "/etc/dhcp/conf-v4/e43-2.conf"; +include "/etc/dhcp/conf-v4/e43-3.conf"; +include "/etc/dhcp/conf-v4/e43-4.conf"; +include "/etc/dhcp/conf-v4/e45-1.conf"; +include "/etc/dhcp/conf-v4/e45-2.conf"; +include "/etc/dhcp/conf-v4/e45-3.conf"; +include "/etc/dhcp/conf-v4/e45-4.conf"; +include "/etc/dhcp/conf-v4/e47-1.conf"; +include "/etc/dhcp/conf-v4/e47-2.conf"; +include "/etc/dhcp/conf-v4/e47-3.conf"; +include "/etc/dhcp/conf-v4/e47-4.conf"; +include "/etc/dhcp/conf-v4/e49-1.conf"; +include "/etc/dhcp/conf-v4/e49-2.conf"; +include "/etc/dhcp/conf-v4/e49-3.conf"; +include "/etc/dhcp/conf-v4/e49-4.conf"; +include "/etc/dhcp/conf-v4/e5-2.conf"; +include "/etc/dhcp/conf-v4/e5-3.conf"; +include "/etc/dhcp/conf-v4/e5-4.conf"; +include "/etc/dhcp/conf-v4/e51-1.conf"; +include "/etc/dhcp/conf-v4/e51-2.conf"; +include "/etc/dhcp/conf-v4/e51-3.conf"; +include "/etc/dhcp/conf-v4/e51-4.conf"; +include "/etc/dhcp/conf-v4/e53-1.conf"; +include "/etc/dhcp/conf-v4/e53-2.conf"; +include "/etc/dhcp/conf-v4/e53-3.conf"; +include "/etc/dhcp/conf-v4/e53-4.conf"; +include "/etc/dhcp/conf-v4/e55-1.conf"; +include "/etc/dhcp/conf-v4/e55-2.conf"; +include "/etc/dhcp/conf-v4/e55-3.conf"; +include "/etc/dhcp/conf-v4/e55-4.conf"; +include "/etc/dhcp/conf-v4/e57-1.conf"; +include "/etc/dhcp/conf-v4/e57-2.conf"; +include "/etc/dhcp/conf-v4/e57-3.conf"; +include "/etc/dhcp/conf-v4/e57-4.conf"; +include "/etc/dhcp/conf-v4/e59-1.conf"; +include "/etc/dhcp/conf-v4/e59-2.conf"; +include "/etc/dhcp/conf-v4/e59-3.conf"; +include "/etc/dhcp/conf-v4/e59-4.conf"; +include "/etc/dhcp/conf-v4/e61-1.conf"; +include "/etc/dhcp/conf-v4/e61-2.conf"; +include "/etc/dhcp/conf-v4/e61-3.conf"; +include "/etc/dhcp/conf-v4/e61-4.conf"; +include "/etc/dhcp/conf-v4/e63-1.conf"; +include "/etc/dhcp/conf-v4/e63-2.conf"; +include "/etc/dhcp/conf-v4/e63-3.conf"; +include "/etc/dhcp/conf-v4/e63-4.conf"; +include "/etc/dhcp/conf-v4/e65-1.conf"; +include "/etc/dhcp/conf-v4/e65-2.conf"; +include "/etc/dhcp/conf-v4/e65-3.conf"; +include "/etc/dhcp/conf-v4/e65-4.conf"; +include "/etc/dhcp/conf-v4/e67-1.conf"; +include "/etc/dhcp/conf-v4/e67-2.conf"; +include "/etc/dhcp/conf-v4/e67-3.conf"; +include "/etc/dhcp/conf-v4/e67-4.conf"; +include "/etc/dhcp/conf-v4/e69-1.conf"; +include "/etc/dhcp/conf-v4/e69-2.conf"; +include "/etc/dhcp/conf-v4/e7-1.conf"; +include "/etc/dhcp/conf-v4/e7-2.conf"; +include "/etc/dhcp/conf-v4/e7-3.conf"; +include "/etc/dhcp/conf-v4/e7-4.conf"; +include "/etc/dhcp/conf-v4/e71-1.conf"; +include "/etc/dhcp/conf-v4/e71-2.conf"; +include "/etc/dhcp/conf-v4/e73-1.conf"; +include "/etc/dhcp/conf-v4/e73-2.conf"; +include "/etc/dhcp/conf-v4/e75-1.conf"; +include "/etc/dhcp/conf-v4/e75-2.conf"; +include "/etc/dhcp/conf-v4/e77-1.conf"; +include "/etc/dhcp/conf-v4/e77-2.conf"; +include "/etc/dhcp/conf-v4/e79-1.conf"; +include "/etc/dhcp/conf-v4/e79-2.conf"; +include "/etc/dhcp/conf-v4/e81-1.conf"; +include "/etc/dhcp/conf-v4/e81-2.conf"; +include "/etc/dhcp/conf-v4/e83-2.conf"; +include "/etc/dhcp/conf-v4/e85-2.conf"; +include "/etc/dhcp/conf-v4/e9-1.conf"; +include "/etc/dhcp/conf-v4/e9-2.conf"; +include "/etc/dhcp/conf-v4/e9-3.conf"; +include "/etc/dhcp/conf-v4/e9-4.conf"; +include "/etc/dhcp/conf-v4/event.conf"; +include "/etc/dhcp/conf-v4/flankenord.conf"; +include "/etc/dhcp/conf-v4/flankesor.conf"; +include "/etc/dhcp/conf-v4/foh.conf"; +include "/etc/dhcp/conf-v4/fugleberget.conf"; +include "/etc/dhcp/conf-v4/game.conf"; +include "/etc/dhcp/conf-v4/gamestage.conf"; +include "/etc/dhcp/conf-v4/highlights.conf"; +include "/etc/dhcp/conf-v4/hon.conf"; +include "/etc/dhcp/conf-v4/info.conf"; +include "/etc/dhcp/conf-v4/innsjekk.conf"; +include "/etc/dhcp/conf-v4/logistikk.conf"; +include "/etc/dhcp/conf-v4/medic.conf"; +include "/etc/dhcp/conf-v4/noc.conf"; +include "/etc/dhcp/conf-v4/north.conf"; +include "/etc/dhcp/conf-v4/presse.conf"; +include "/etc/dhcp/conf-v4/resepsjon.conf"; +include "/etc/dhcp/conf-v4/santander-temp.conf"; +include "/etc/dhcp/conf-v4/security.conf"; +include "/etc/dhcp/conf-v4/security2.conf"; +include "/etc/dhcp/conf-v4/sponsor.conf"; +include "/etc/dhcp/conf-v4/stage.conf"; +include "/etc/dhcp/conf-v4/streamer1.conf"; +include "/etc/dhcp/conf-v4/tech-wlan.conf"; +include "/etc/dhcp/conf-v4/wlan.conf"; diff --git a/examples/tg16/dhcp/v4-pxe-boot.conf b/examples/tg16/dhcp/v4-pxe-boot.conf new file mode 100644 index 0000000..9de565f --- /dev/null +++ b/examples/tg16/dhcp/v4-pxe-boot.conf @@ -0,0 +1,10 @@ +option arch code 93 = unsigned integer 16; + +if option arch = 00:07 { + filename "bootx64.efi"; +} else { + filename "pxelinux.0"; +} + +next-server 185.110.148.2; + diff --git a/examples/tg16/dhcp/v4-revzones.conf b/examples/tg16/dhcp/v4-revzones.conf new file mode 100644 index 0000000..17d872d --- /dev/null +++ b/examples/tg16/dhcp/v4-revzones.conf @@ -0,0 +1,528 @@ +zone 0.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 1.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 2.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 3.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 4.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 5.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 6.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 7.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 8.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 9.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 10.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 11.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 12.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 13.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 14.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 15.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 16.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 17.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 18.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 19.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 20.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 21.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 22.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 23.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 24.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 25.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 26.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 27.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 28.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 29.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 30.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 31.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 32.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 33.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 34.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 35.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 36.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 37.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 38.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 39.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 40.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 41.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 42.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 43.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 44.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 45.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 46.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 47.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 48.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 49.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 50.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 51.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 52.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 53.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 54.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 55.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 56.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 57.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 58.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 59.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 60.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 61.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 62.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 63.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 64.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 65.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 66.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 67.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 68.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 69.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 70.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 71.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 72.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 73.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 74.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 75.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 76.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 77.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 78.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 79.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 80.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 81.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 82.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 83.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 84.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 85.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 86.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 87.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 88.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 89.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 90.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 91.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 92.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 93.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 94.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 95.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 96.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 97.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 98.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 99.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 100.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 101.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 102.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 103.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 104.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 105.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 106.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 107.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 108.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 109.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 110.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 111.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 112.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 113.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 114.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 115.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 116.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 117.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 118.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 119.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 120.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 121.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 122.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 123.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 124.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 125.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 126.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 127.92.88.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 148.110.185.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 149.110.185.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 150.110.185.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} +zone 151.110.185.in-addr.arpa. { + primary 127.0.0.1; + key DHCP_UPDATER; +} diff --git a/examples/tg16/dhcp/v4-voip.conf b/examples/tg16/dhcp/v4-voip.conf new file mode 100644 index 0000000..8983d75 --- /dev/null +++ b/examples/tg16/dhcp/v4-voip.conf @@ -0,0 +1,18 @@ +option space CiscoVOIP; +option CiscoVOIP.cm-tftp-server code 150 = array of ip-address; + +class "cisco-voip-lan" { + match if substring (option vendor-class-identifier, 0, 28) = "Cisco Systems, Inc. IP Phone"; + vendor-option-space CiscoVOIP; + log( info, concat( "LOLOPHONE: " , option vendor-class-identifier )); + option CiscoVOIP.cm-tftp-server <removed>; + next-server <removed>; +} + +class "cisco-voip-wlan" { + match if substring (option vendor-class-identifier, 0, 33) = "Cisco Systems Inc. Wireless Phone"; + vendor-option-space CiscoVOIP; + log( info, concat( "BANANAPHONE: " , option vendor-class-identifier )); + option CiscoVOIP.cm-tftp-server <removed>; + next-server <removed>; +} diff --git a/examples/tg16/dhcp/v4-wlc.conf b/examples/tg16/dhcp/v4-wlc.conf new file mode 100644 index 0000000..663d48e --- /dev/null +++ b/examples/tg16/dhcp/v4-wlc.conf @@ -0,0 +1,11 @@ +option space WLC; +option WLC.controller-address code 43 = text; +set vendor-string = option vendor-class-identifier; + +class "access-points" { + # Number of characters has to match the substring + # I.e if "Access Point", you have to use (0, 12) + match if substring (option vendor-class-identifier, 0, 12) = "Access Point"; + vendor-option-space WLC; + option WLC.controller-address "185.110.148.14"; +} diff --git a/examples/tg16/dhcp/v6-generated-include.conf b/examples/tg16/dhcp/v6-generated-include.conf new file mode 100644 index 0000000..f27b8dc --- /dev/null +++ b/examples/tg16/dhcp/v6-generated-include.conf @@ -0,0 +1,179 @@ +include "/etc/dhcp/conf-v6/ap-creativia.conf"; +include "/etc/dhcp/conf-v6/ap-distro0.conf"; +include "/etc/dhcp/conf-v6/ap-distro1.conf"; +include "/etc/dhcp/conf-v6/ap-distro2.conf"; +include "/etc/dhcp/conf-v6/ap-distro3.conf"; +include "/etc/dhcp/conf-v6/ap-distro4.conf"; +include "/etc/dhcp/conf-v6/ap-distro5.conf"; +include "/etc/dhcp/conf-v6/ap-distro6.conf"; +include "/etc/dhcp/conf-v6/ap-distro7.conf"; +include "/etc/dhcp/conf-v6/ap-stand.conf"; +include "/etc/dhcp/conf-v6/auditorium.conf"; +include "/etc/dhcp/conf-v6/creativia-village.conf"; +include "/etc/dhcp/conf-v6/creativia.conf"; +include "/etc/dhcp/conf-v6/creativia1.conf"; +include "/etc/dhcp/conf-v6/creativia2.conf"; +include "/etc/dhcp/conf-v6/creativia3.conf"; +include "/etc/dhcp/conf-v6/creativia4.conf"; +include "/etc/dhcp/conf-v6/creativia5.conf"; +include "/etc/dhcp/conf-v6/creativia6.conf"; +include "/etc/dhcp/conf-v6/creativia7.conf"; +include "/etc/dhcp/conf-v6/creativiasw1.conf"; +include "/etc/dhcp/conf-v6/crew.conf"; +include "/etc/dhcp/conf-v6/deltaker-srv.conf"; +include "/etc/dhcp/conf-v6/e1-3.conf"; +include "/etc/dhcp/conf-v6/e1-4.conf"; +include "/etc/dhcp/conf-v6/e11-1.conf"; +include "/etc/dhcp/conf-v6/e11-2.conf"; +include "/etc/dhcp/conf-v6/e11-3.conf"; +include "/etc/dhcp/conf-v6/e11-4.conf"; +include "/etc/dhcp/conf-v6/e13-1.conf"; +include "/etc/dhcp/conf-v6/e13-2.conf"; +include "/etc/dhcp/conf-v6/e13-3.conf"; +include "/etc/dhcp/conf-v6/e13-4.conf"; +include "/etc/dhcp/conf-v6/e15-1.conf"; +include "/etc/dhcp/conf-v6/e15-2.conf"; +include "/etc/dhcp/conf-v6/e15-3.conf"; +include "/etc/dhcp/conf-v6/e15-4.conf"; +include "/etc/dhcp/conf-v6/e17-1.conf"; +include "/etc/dhcp/conf-v6/e17-2.conf"; +include "/etc/dhcp/conf-v6/e17-3.conf"; +include "/etc/dhcp/conf-v6/e17-4.conf"; +include "/etc/dhcp/conf-v6/e19-1.conf"; +include "/etc/dhcp/conf-v6/e19-2.conf"; +include "/etc/dhcp/conf-v6/e19-3.conf"; +include "/etc/dhcp/conf-v6/e19-4.conf"; +include "/etc/dhcp/conf-v6/e21-1.conf"; +include "/etc/dhcp/conf-v6/e21-2.conf"; +include "/etc/dhcp/conf-v6/e21-3.conf"; +include "/etc/dhcp/conf-v6/e21-4.conf"; +include "/etc/dhcp/conf-v6/e23-1.conf"; +include "/etc/dhcp/conf-v6/e23-2.conf"; +include "/etc/dhcp/conf-v6/e23-3.conf"; +include "/etc/dhcp/conf-v6/e23-4.conf"; +include "/etc/dhcp/conf-v6/e25-1.conf"; +include "/etc/dhcp/conf-v6/e25-2.conf"; +include "/etc/dhcp/conf-v6/e27-1.conf"; +include "/etc/dhcp/conf-v6/e27-2.conf"; +include "/etc/dhcp/conf-v6/e29-1.conf"; +include "/etc/dhcp/conf-v6/e29-2.conf"; +include "/etc/dhcp/conf-v6/e3-3.conf"; +include "/etc/dhcp/conf-v6/e3-4.conf"; +include "/etc/dhcp/conf-v6/e31-1.conf"; +include "/etc/dhcp/conf-v6/e31-2.conf"; +include "/etc/dhcp/conf-v6/e33-1.conf"; +include "/etc/dhcp/conf-v6/e33-2.conf"; +include "/etc/dhcp/conf-v6/e35-1.conf"; +include "/etc/dhcp/conf-v6/e35-2.conf"; +include "/etc/dhcp/conf-v6/e37-1.conf"; +include "/etc/dhcp/conf-v6/e37-2.conf"; +include "/etc/dhcp/conf-v6/e39-1.conf"; +include "/etc/dhcp/conf-v6/e39-2.conf"; +include "/etc/dhcp/conf-v6/e41-1.conf"; +include "/etc/dhcp/conf-v6/e41-2.conf"; +include "/etc/dhcp/conf-v6/e41-3.conf"; +include "/etc/dhcp/conf-v6/e41-4.conf"; +include "/etc/dhcp/conf-v6/e43-1.conf"; +include "/etc/dhcp/conf-v6/e43-2.conf"; +include "/etc/dhcp/conf-v6/e43-3.conf"; +include "/etc/dhcp/conf-v6/e43-4.conf"; +include "/etc/dhcp/conf-v6/e45-1.conf"; +include "/etc/dhcp/conf-v6/e45-2.conf"; +include "/etc/dhcp/conf-v6/e45-3.conf"; +include "/etc/dhcp/conf-v6/e45-4.conf"; +include "/etc/dhcp/conf-v6/e47-1.conf"; +include "/etc/dhcp/conf-v6/e47-2.conf"; +include "/etc/dhcp/conf-v6/e47-3.conf"; +include "/etc/dhcp/conf-v6/e47-4.conf"; +include "/etc/dhcp/conf-v6/e49-1.conf"; +include "/etc/dhcp/conf-v6/e49-2.conf"; +include "/etc/dhcp/conf-v6/e49-3.conf"; +include "/etc/dhcp/conf-v6/e49-4.conf"; +include "/etc/dhcp/conf-v6/e5-2.conf"; +include "/etc/dhcp/conf-v6/e5-3.conf"; +include "/etc/dhcp/conf-v6/e5-4.conf"; +include "/etc/dhcp/conf-v6/e51-1.conf"; +include "/etc/dhcp/conf-v6/e51-2.conf"; +include "/etc/dhcp/conf-v6/e51-3.conf"; +include "/etc/dhcp/conf-v6/e51-4.conf"; +include "/etc/dhcp/conf-v6/e53-1.conf"; +include "/etc/dhcp/conf-v6/e53-2.conf"; +include "/etc/dhcp/conf-v6/e53-3.conf"; +include "/etc/dhcp/conf-v6/e53-4.conf"; +include "/etc/dhcp/conf-v6/e55-1.conf"; +include "/etc/dhcp/conf-v6/e55-2.conf"; +include "/etc/dhcp/conf-v6/e55-3.conf"; +include "/etc/dhcp/conf-v6/e55-4.conf"; +include "/etc/dhcp/conf-v6/e57-1.conf"; +include "/etc/dhcp/conf-v6/e57-2.conf"; +include "/etc/dhcp/conf-v6/e57-3.conf"; +include "/etc/dhcp/conf-v6/e57-4.conf"; +include "/etc/dhcp/conf-v6/e59-1.conf"; +include "/etc/dhcp/conf-v6/e59-2.conf"; +include "/etc/dhcp/conf-v6/e59-3.conf"; +include "/etc/dhcp/conf-v6/e59-4.conf"; +include "/etc/dhcp/conf-v6/e61-1.conf"; +include "/etc/dhcp/conf-v6/e61-2.conf"; +include "/etc/dhcp/conf-v6/e61-3.conf"; +include "/etc/dhcp/conf-v6/e61-4.conf"; +include "/etc/dhcp/conf-v6/e63-1.conf"; +include "/etc/dhcp/conf-v6/e63-2.conf"; +include "/etc/dhcp/conf-v6/e63-3.conf"; +include "/etc/dhcp/conf-v6/e63-4.conf"; +include "/etc/dhcp/conf-v6/e65-1.conf"; +include "/etc/dhcp/conf-v6/e65-2.conf"; +include "/etc/dhcp/conf-v6/e65-3.conf"; +include "/etc/dhcp/conf-v6/e65-4.conf"; +include "/etc/dhcp/conf-v6/e67-1.conf"; +include "/etc/dhcp/conf-v6/e67-2.conf"; +include "/etc/dhcp/conf-v6/e67-3.conf"; +include "/etc/dhcp/conf-v6/e67-4.conf"; +include "/etc/dhcp/conf-v6/e69-1.conf"; +include "/etc/dhcp/conf-v6/e69-2.conf"; +include "/etc/dhcp/conf-v6/e7-1.conf"; +include "/etc/dhcp/conf-v6/e7-2.conf"; +include "/etc/dhcp/conf-v6/e7-3.conf"; +include "/etc/dhcp/conf-v6/e7-4.conf"; +include "/etc/dhcp/conf-v6/e71-1.conf"; +include "/etc/dhcp/conf-v6/e71-2.conf"; +include "/etc/dhcp/conf-v6/e73-1.conf"; +include "/etc/dhcp/conf-v6/e73-2.conf"; +include "/etc/dhcp/conf-v6/e75-1.conf"; +include "/etc/dhcp/conf-v6/e75-2.conf"; +include "/etc/dhcp/conf-v6/e77-1.conf"; +include "/etc/dhcp/conf-v6/e77-2.conf"; +include "/etc/dhcp/conf-v6/e79-1.conf"; +include "/etc/dhcp/conf-v6/e79-2.conf"; +include "/etc/dhcp/conf-v6/e81-1.conf"; +include "/etc/dhcp/conf-v6/e81-2.conf"; +include "/etc/dhcp/conf-v6/e83-2.conf"; +include "/etc/dhcp/conf-v6/e85-2.conf"; +include "/etc/dhcp/conf-v6/e9-1.conf"; +include "/etc/dhcp/conf-v6/e9-2.conf"; +include "/etc/dhcp/conf-v6/e9-3.conf"; +include "/etc/dhcp/conf-v6/e9-4.conf"; +include "/etc/dhcp/conf-v6/event.conf"; +include "/etc/dhcp/conf-v6/flankenord.conf"; +include "/etc/dhcp/conf-v6/flankesor.conf"; +include "/etc/dhcp/conf-v6/foh.conf"; +include "/etc/dhcp/conf-v6/fugleberget.conf"; +include "/etc/dhcp/conf-v6/game.conf"; +include "/etc/dhcp/conf-v6/gamestage.conf"; +include "/etc/dhcp/conf-v6/highlights.conf"; +include "/etc/dhcp/conf-v6/hon.conf"; +include "/etc/dhcp/conf-v6/info.conf"; +include "/etc/dhcp/conf-v6/innsjekk.conf"; +include "/etc/dhcp/conf-v6/logistikk.conf"; +include "/etc/dhcp/conf-v6/medic.conf"; +include "/etc/dhcp/conf-v6/noc.conf"; +include "/etc/dhcp/conf-v6/north.conf"; +include "/etc/dhcp/conf-v6/presse.conf"; +include "/etc/dhcp/conf-v6/resepsjon.conf"; +include "/etc/dhcp/conf-v6/santander-temp.conf"; +include "/etc/dhcp/conf-v6/security.conf"; +include "/etc/dhcp/conf-v6/security2.conf"; +include "/etc/dhcp/conf-v6/sponsor.conf"; +include "/etc/dhcp/conf-v6/stage.conf"; +include "/etc/dhcp/conf-v6/streamer1.conf"; +include "/etc/dhcp/conf-v6/tech-wlan.conf"; +include "/etc/dhcp/conf-v6/wlan.conf"; diff --git a/examples/tg16/dhcp/v6-pxe-boot.conf b/examples/tg16/dhcp/v6-pxe-boot.conf new file mode 100644 index 0000000..a6f988a --- /dev/null +++ b/examples/tg16/dhcp/v6-pxe-boot.conf @@ -0,0 +1,10 @@ +option dhcp6.bootfile-url code 59 = string; +option dhcp6.client-arch-type code 61 = array of unsigned integer 16; + +if option dhcp6.client-arch-type = 00:07 { + option dhcp6.bootfile-url "tftp://[2a06:5841:1337::2]/bootx64.efi"; +} else { + # support a hypothetical BIOS system that can PXE boot over IPv6 + option dhcp6.bootfile-url "tftp://[2a06:5841:1337::2]/pxelinux.0"; +} + diff --git a/examples/tg16/dns/linknets-dns.txt b/examples/tg16/dns/linknets-dns.txt new file mode 100644 index 0000000..38e6f99 --- /dev/null +++ b/examples/tg16/dns/linknets-dns.txt @@ -0,0 +1,58 @@ +telegw-coregw 185.110.148.128 nope +coregw-telegw 185.110.148.129 nope +telegw-nocgw 185.110.148.130 nope +nocgw-telegw 185.110.148.131 nope +nocgw-standgw 185.110.148.132 nope +standgw-nocgw 185.110.148.133 nope +standgw-coregw 185.110.148.134 nope +coregw-standgw 185.110.148.135 nope +nocgw-coregw 185.110.148.136 nope +coregw-nocgw 185.110.148.137 nope +nocgw-northgw 185.110.148.138 nope +northgw-nocgw 185.110.148.139 nope +northgw-loggw 185.110.148.140 nope +loggw-northgw 185.110.148.141 nope +swinggw-loggw 185.110.148.142 nope +loggw-swinggw 185.110.148.143 nope +swinggw-southgw 185.110.148.144 nope +southgw-swinggw 185.110.148.145 nope +southgw-telegw 185.110.148.146 nope +telegw-southgw 185.110.148.147 nope +telegw-creativiagw 185.110.148.148 nope +creativiagw-telegw 185.110.148.149 nope +creativiagw-coregw 185.110.148.150 nope +coregw-creativiagw 185.110.148.151 nope +coregw-distro0 185.110.148.152 nope +distro0-coregw 185.110.148.153 nope +coregw-distro1 185.110.148.154 nope +distro1-coregw 185.110.148.155 nope +coregw-distro2 185.110.148.156 nope +distro2-coregw 185.110.148.157 nope +coregw-distro3 185.110.148.158 nope +distro3-coregw 185.110.148.159 nope +coregw-distro4 185.110.148.160 nope +distro4-coregw 185.110.148.161 nope +coregw-distro5 185.110.148.162 nope +distro5-coregw 185.110.148.163 nope +coregw-distro6 185.110.148.164 nope +distro6-coregw 185.110.148.165 nope +coregw-distro7 185.110.148.166 nope +distro7-coregw 185.110.148.167 nope +crewgw-nocgw 185.110.148.168 nope +nocgw-crewgw 185.110.148.169 nope +crewgw-standgw 185.110.148.170 nope +standgw-crewgw 185.110.148.171 nope +stagegw-distro2 185.110.148.172 nope +distro2-stagegw 185.110.148.173 nope +stagegw-swinggw 185.110.148.174 nope +swinggw-stagegw 185.110.148.175 nope +telefw-telegw-outside 185.110.148.177 2A06:5841:148C:176:0:0:0:1 +telegw-telefw-outside 185.110.148.176 2A06:5841:148C:176:0:0:0:2 +telefw-telegw-inside 185.110.148.179 2A06:5841:148C:178:0:0:0:1 +telegw-telefw-inside 185.110.148.178 2A06:5841:148C:178:0:0:0:2 +northgw-audgw 185.110.148.180 nope +audgw-northgw 185.110.148.181 nope +audgw-gamegw 185.110.148.182 nope +gamegw-audgw 185.110.148.183 nope +gamegw-northgw 185.110.148.184 nope +northgw-gamegw 185.110.148.185 nope diff --git a/examples/tg16/dns/loopbacks.txt b/examples/tg16/dns/loopbacks.txt new file mode 100644 index 0000000..c6dda4e --- /dev/null +++ b/examples/tg16/dns/loopbacks.txt @@ -0,0 +1,21 @@ +185.110.148.64;2a06:5841:148b::64;telegw; +185.110.148.65;2a06:5841:148b::65;nocgw;/32 og /128 +185.110.148.66;2a06:5841:148b::66;coregw;... +185.110.148.67;2a06:5841:148b::67;standgw;... +185.110.148.70;2a06:5841:148b::70;southgw; +185.110.148.71;2a06:5841:148b::71;swinggw; +185.110.148.72;2a06:5841:148b::72;loggw; +185.110.148.73;2a06:5841:148b::73;northgw; +185.110.148.74;2a06:5841:148b::74;creativiagw; +185.110.148.75;2a06:5841:148b::75;stagegw; +185.110.148.76;2a06:5841:148b::76;crewgw;Utgår muligens - kan henge rett på nocgw/standgw +185.110.148.77;2a06:5841:148b::77;audgw; +185.110.148.78;2a06:5841:148b::78;gamestagegw; +185.110.148.100;2a06:5841:148b::100;distro0;syntax blir 185.110.148.10<distro-nummer> +185.110.148.101;2a06:5841:148b::101;distro1;... +185.110.148.102;2a06:5841:148b::102;distro2;... +185.110.148.103;2a06:5841:148b::103;distro3; +185.110.148.104;2a06:5841:148b::104;distro4; +185.110.148.105;2a06:5841:148b::105;distro5; +185.110.148.106;2a06:5841:148b::106;distro6; +185.110.148.107;2a06:5841:148b::107;distro7; diff --git a/examples/tg16/dns/master/0.4.8.5.6.0.a.2.ip6.arpa.zone b/examples/tg16/dns/master/0.4.8.5.6.0.a.2.ip6.arpa.zone new file mode 100644 index 0000000..7e344e0 --- /dev/null +++ b/examples/tg16/dns/master/0.4.8.5.6.0.a.2.ip6.arpa.zone @@ -0,0 +1,324 @@ +$ORIGIN . +$TTL 3600 ; 1 hour +0.4.8.5.6.0.a.2.ip6.arpa IN SOA r2-d2.tg16.gathering.org. abuse.gathering.org. ( + 2016032463 ; serial + 3600 ; refresh (1 hour) + 1800 ; retry (30 minutes) + 608400 ; expire (1 week 1 hour) + 3600 ; minimum (1 hour) + ) + NS c-3po.tg16.gathering.org. + NS r2-d2.tg16.gathering.org. +$ORIGIN 0.0.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e1-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e1-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e3-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e3-4.tg16.gathering.org. +$ORIGIN 1.0.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e5-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e5-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e5-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e7-1.tg16.gathering.org. +$ORIGIN 2.0.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e7-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e7-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e7-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e9-1.tg16.gathering.org. +$ORIGIN 3.0.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e9-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e9-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e9-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e11-1.tg16.gathering.org. +$ORIGIN 4.0.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e11-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e11-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e11-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e13-1.tg16.gathering.org. +$ORIGIN 5.0.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e13-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e13-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e13-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e15-1.tg16.gathering.org. +$ORIGIN 6.0.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e15-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e15-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e15-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e17-1.tg16.gathering.org. +$ORIGIN 7.0.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e17-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e17-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e17-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e19-1.tg16.gathering.org. +$ORIGIN 8.0.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e19-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e19-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e19-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e21-1.tg16.gathering.org. +$ORIGIN 9.0.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e21-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e21-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e21-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e23-1.tg16.gathering.org. +$ORIGIN 0.1.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e23-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e23-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e23-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e25-1.tg16.gathering.org. +$ORIGIN 1.1.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e25-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e27-1.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e27-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e29-1.tg16.gathering.org. +$ORIGIN 2.1.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e29-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e31-1.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e31-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e33-1.tg16.gathering.org. +$ORIGIN 3.1.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e33-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e35-1.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e35-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e37-1.tg16.gathering.org. +$ORIGIN 4.1.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e37-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e39-1.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e39-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e41-1.tg16.gathering.org. +$ORIGIN 5.1.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e41-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e41-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e41-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e43-1.tg16.gathering.org. +$ORIGIN 6.1.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e43-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e43-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e43-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e45-1.tg16.gathering.org. +$ORIGIN 7.1.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e45-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e45-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e45-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e47-1.tg16.gathering.org. +$ORIGIN 8.1.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e47-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e47-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e47-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e49-1.tg16.gathering.org. +$ORIGIN 9.1.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e49-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e49-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e49-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e51-1.tg16.gathering.org. +$ORIGIN 0.2.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e51-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e51-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e51-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e53-1.tg16.gathering.org. +$ORIGIN 1.2.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e53-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e53-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e53-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e55-1.tg16.gathering.org. +$ORIGIN 2.2.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e55-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e55-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e55-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e57-1.tg16.gathering.org. +$ORIGIN 3.2.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e57-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e57-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e57-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e59-1.tg16.gathering.org. +$ORIGIN 4.2.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e59-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e59-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e59-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e61-1.tg16.gathering.org. +$ORIGIN 5.2.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e61-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e61-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e61-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e63-1.tg16.gathering.org. +$ORIGIN 6.2.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e63-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e63-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e63-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e65-1.tg16.gathering.org. +$ORIGIN 7.2.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e65-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e65-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e65-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e67-1.tg16.gathering.org. +$ORIGIN 8.2.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e67-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e67-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e67-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e69-1.tg16.gathering.org. +$ORIGIN 9.2.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e69-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e71-1.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e71-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e73-1.tg16.gathering.org. +$ORIGIN 0.3.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e73-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e75-1.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e75-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e77-1.tg16.gathering.org. +$ORIGIN 1.3.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e77-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e79-1.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e79-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e81-1.tg16.gathering.org. +$ORIGIN 2.3.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e81-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e83-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e85-2.tg16.gathering.org. +$ORIGIN 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a.4.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +2 PTR sw.e1-3.tg16.gathering.org. +3 PTR sw.e1-4.tg16.gathering.org. +4 PTR sw.e3-3.tg16.gathering.org. +5 PTR sw.e3-4.tg16.gathering.org. +6 PTR sw.e5-3.tg16.gathering.org. +7 PTR sw.e5-4.tg16.gathering.org. +8 PTR sw.e7-3.tg16.gathering.org. +9 PTR sw.e7-4.tg16.gathering.org. +$ORIGIN 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a.4.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0 PTR sw.e9-3.tg16.gathering.org. +1 PTR sw.e9-4.tg16.gathering.org. +2 PTR sw.e11-3.tg16.gathering.org. +3 PTR sw.e11-4.tg16.gathering.org. +$ORIGIN 6.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.4.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +6 PTR sw.e5-2.tg16.gathering.org. +7 PTR sw.e7-1.tg16.gathering.org. +8 PTR sw.e7-2.tg16.gathering.org. +9 PTR sw.e9-1.tg16.gathering.org. +$ORIGIN 7.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.4.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0 PTR sw.e9-2.tg16.gathering.org. +1 PTR sw.e11-1.tg16.gathering.org. +2 PTR sw.e11-2.tg16.gathering.org. +3 PTR sw.e13-1.tg16.gathering.org. +4 PTR sw.e13-2.tg16.gathering.org. +5 PTR sw.e15-1.tg16.gathering.org. +6 PTR sw.e15-2.tg16.gathering.org. +7 PTR sw.e17-1.tg16.gathering.org. +8 PTR sw.e17-2.tg16.gathering.org. +9 PTR sw.e19-1.tg16.gathering.org. +$ORIGIN 8.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.4.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0 PTR sw.e19-2.tg16.gathering.org. +1 PTR sw.e21-1.tg16.gathering.org. +2 PTR sw.e21-2.tg16.gathering.org. +3 PTR sw.e23-1.tg16.gathering.org. +4 PTR sw.e23-2.tg16.gathering.org. +$ORIGIN 3.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c.4.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0 PTR sw.e13-3.tg16.gathering.org. +1 PTR sw.e13-4.tg16.gathering.org. +2 PTR sw.e15-3.tg16.gathering.org. +3 PTR sw.e15-4.tg16.gathering.org. +4 PTR sw.e17-3.tg16.gathering.org. +5 PTR sw.e17-4.tg16.gathering.org. +6 PTR sw.e19-3.tg16.gathering.org. +7 PTR sw.e19-4.tg16.gathering.org. +8 PTR sw.e21-3.tg16.gathering.org. +9 PTR sw.e21-4.tg16.gathering.org. +$ORIGIN 4.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c.4.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0 PTR sw.e23-3.tg16.gathering.org. +1 PTR sw.e23-4.tg16.gathering.org. +$ORIGIN 9.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.4.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +4 PTR sw.e25-1.tg16.gathering.org. +5 PTR sw.e25-2.tg16.gathering.org. +6 PTR sw.e27-1.tg16.gathering.org. +7 PTR sw.e27-2.tg16.gathering.org. +8 PTR sw.e29-1.tg16.gathering.org. +9 PTR sw.e29-2.tg16.gathering.org. +$ORIGIN 0.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.4.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0 PTR sw.e31-1.tg16.gathering.org. +1 PTR sw.e31-2.tg16.gathering.org. +2 PTR sw.e33-1.tg16.gathering.org. +3 PTR sw.e33-2.tg16.gathering.org. +4 PTR sw.e35-1.tg16.gathering.org. +5 PTR sw.e35-2.tg16.gathering.org. +6 PTR sw.e37-1.tg16.gathering.org. +7 PTR sw.e37-2.tg16.gathering.org. +8 PTR sw.e39-1.tg16.gathering.org. +9 PTR sw.e39-2.tg16.gathering.org. +$ORIGIN 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a.5.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +2 PTR sw.e41-1.tg16.gathering.org. +3 PTR sw.e41-2.tg16.gathering.org. +4 PTR sw.e43-1.tg16.gathering.org. +5 PTR sw.e43-2.tg16.gathering.org. +6 PTR sw.e45-1.tg16.gathering.org. +7 PTR sw.e45-2.tg16.gathering.org. +8 PTR sw.e47-1.tg16.gathering.org. +9 PTR sw.e47-2.tg16.gathering.org. +$ORIGIN 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a.5.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0 PTR sw.e49-1.tg16.gathering.org. +1 PTR sw.e49-2.tg16.gathering.org. +2 PTR sw.e51-1.tg16.gathering.org. +3 PTR sw.e51-2.tg16.gathering.org. +4 PTR sw.e53-1.tg16.gathering.org. +5 PTR sw.e53-2.tg16.gathering.org. +6 PTR sw.e55-1.tg16.gathering.org. +7 PTR sw.e55-2.tg16.gathering.org. +8 PTR sw.e57-1.tg16.gathering.org. +9 PTR sw.e57-2.tg16.gathering.org. +$ORIGIN 6.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.5.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +6 PTR sw.e41-3.tg16.gathering.org. +7 PTR sw.e41-4.tg16.gathering.org. +8 PTR sw.e43-3.tg16.gathering.org. +9 PTR sw.e43-4.tg16.gathering.org. +$ORIGIN 7.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.5.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0 PTR sw.e45-3.tg16.gathering.org. +1 PTR sw.e45-4.tg16.gathering.org. +2 PTR sw.e47-3.tg16.gathering.org. +3 PTR sw.e47-4.tg16.gathering.org. +4 PTR sw.e49-3.tg16.gathering.org. +5 PTR sw.e49-4.tg16.gathering.org. +6 PTR sw.e51-3.tg16.gathering.org. +7 PTR sw.e51-4.tg16.gathering.org. +8 PTR sw.e53-3.tg16.gathering.org. +9 PTR sw.e53-4.tg16.gathering.org. +$ORIGIN 8.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.5.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0 PTR sw.e55-3.tg16.gathering.org. +1 PTR sw.e55-4.tg16.gathering.org. +2 PTR sw.e57-3.tg16.gathering.org. +3 PTR sw.e57-4.tg16.gathering.org. +$ORIGIN 3.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c.5.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0 PTR sw.e59-3.tg16.gathering.org. +1 PTR sw.e59-4.tg16.gathering.org. +2 PTR sw.e61-3.tg16.gathering.org. +3 PTR sw.e61-4.tg16.gathering.org. +4 PTR sw.e63-3.tg16.gathering.org. +5 PTR sw.e63-4.tg16.gathering.org. +6 PTR sw.e65-3.tg16.gathering.org. +7 PTR sw.e65-4.tg16.gathering.org. +8 PTR sw.e67-3.tg16.gathering.org. +9 PTR sw.e67-4.tg16.gathering.org. +$ORIGIN 9.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.5.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +4 PTR sw.e59-1.tg16.gathering.org. +5 PTR sw.e59-2.tg16.gathering.org. +6 PTR sw.e61-1.tg16.gathering.org. +7 PTR sw.e61-2.tg16.gathering.org. +8 PTR sw.e63-1.tg16.gathering.org. +9 PTR sw.e63-2.tg16.gathering.org. +$ORIGIN 0.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.5.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0 PTR sw.e65-1.tg16.gathering.org. +1 PTR sw.e65-2.tg16.gathering.org. +2 PTR sw.e67-1.tg16.gathering.org. +3 PTR sw.e67-2.tg16.gathering.org. +4 PTR sw.e69-1.tg16.gathering.org. +5 PTR sw.e69-2.tg16.gathering.org. +6 PTR sw.e71-1.tg16.gathering.org. +7 PTR sw.e71-2.tg16.gathering.org. +8 PTR sw.e73-1.tg16.gathering.org. +9 PTR sw.e73-2.tg16.gathering.org. +$ORIGIN 1.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.5.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0 PTR sw.e75-1.tg16.gathering.org. +1 PTR sw.e75-2.tg16.gathering.org. +2 PTR sw.e77-1.tg16.gathering.org. +3 PTR sw.e77-2.tg16.gathering.org. +4 PTR sw.e79-1.tg16.gathering.org. +5 PTR sw.e79-2.tg16.gathering.org. +6 PTR sw.e81-1.tg16.gathering.org. +7 PTR sw.e81-2.tg16.gathering.org. +8 PTR sw.e83-2.tg16.gathering.org. +9 PTR sw.e85-2.tg16.gathering.org. diff --git a/examples/tg16/dns/master/1.4.8.5.6.0.a.2.ip6.arpa.zone b/examples/tg16/dns/master/1.4.8.5.6.0.a.2.ip6.arpa.zone new file mode 100644 index 0000000..4c1a6bd --- /dev/null +++ b/examples/tg16/dns/master/1.4.8.5.6.0.a.2.ip6.arpa.zone @@ -0,0 +1,80 @@ +$ORIGIN . +$TTL 3600 ; 1 hour +1.4.8.5.6.0.a.2.ip6.arpa IN SOA r2-d2.tg16.gathering.org. abuse.gathering.org. ( + 2016032258 ; serial + 3600 ; refresh (1 hour) + 1800 ; retry (30 minutes) + 608400 ; expire (1 week 1 hour) + 3600 ; minimum (1 hour) + ) + NS c-3po.tg16.gathering.org. + NS r2-d2.tg16.gathering.org. +$ORIGIN 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.7.3.3.1.1.4.8.5.6.0.a.2.ip6.arpa. +2 PTR c-3po.tg16.gathering.org. +3 PTR anakin.tg16.gathering.org. +4 PTR padme.tg16.gathering.org. +5 PTR luke.tg16.gathering.org. +6 PTR leia.tg16.gathering.org. +7 PTR han.tg16.gathering.org. +8 PTR rey.tg16.gathering.org. + PTR cubemap.tg16.gathering.org. +9 PTR finn.tg16.gathering.org. + PTR cubemap.tg16.gathering.org. +$ORIGIN 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.7.3.3.1.1.4.8.5.6.0.a.2.ip6.arpa. +0 PTR bb-8.tg16.gathering.org. +1 PTR nms6.tg16.gathering.org. + PTR yoda.tg16.gathering.org. +2 PTR obi-wan.tg16.gathering.org. +3 PTR chewbacca.tg16.gathering.org. +4 PTR fortiwlc-tg01.tg16.gathering.org. +5 PTR fortiwlc-tg02.tg16.gathering.org. +6 PTR fortimgmt-tg01.tg16.gathering.org. +7 PTR spock.tg16.gathering.org. +8 PTR funnyfart.tg16.gathering.org. +9 PTR kvm-rack2.tg16.gathering.org. +$ORIGIN 2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.7.3.3.1.1.4.8.5.6.0.a.2.ip6.arpa. +0 PTR kvm-rack3.tg16.gathering.org. +1 PTR mitm.tg16.gathering.org. +2 PTR kirk.tg16.gathering.org. +3 PTR cage.tg16.gathering.org. +4 PTR luring.tg16.gathering.org. +5 PTR lyn.tg16.gathering.org. +6 PTR rakker.tg16.gathering.org. +7 PTR wc.tg16.gathering.org. +$ORIGIN 6.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.8.4.1.1.4.8.5.6.0.a.2.ip6.arpa. +4 PTR telegw.tg16.gathering.org. +5 PTR nocgw.tg16.gathering.org. +6 PTR coregw.tg16.gathering.org. +7 PTR standgw.tg16.gathering.org. +$ORIGIN 7.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.8.4.1.1.4.8.5.6.0.a.2.ip6.arpa. +0 PTR southgw.tg16.gathering.org. +1 PTR swinggw.tg16.gathering.org. +2 PTR loggw.tg16.gathering.org. +3 PTR northgw.tg16.gathering.org. +4 PTR creativiagw.tg16.gathering.org. +5 PTR stagegw.tg16.gathering.org. +6 PTR crewgw.tg16.gathering.org. +7 PTR audgw.tg16.gathering.org. +8 PTR gamestagegw.tg16.gathering.org. +$ORIGIN 0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.8.4.1.1.4.8.5.6.0.a.2.ip6.arpa. +0 PTR distro0.tg16.gathering.org. +1 PTR distro1.tg16.gathering.org. +2 PTR distro2.tg16.gathering.org. +3 PTR distro3.tg16.gathering.org. +4 PTR distro4.tg16.gathering.org. +5 PTR distro5.tg16.gathering.org. +6 PTR distro6.tg16.gathering.org. +7 PTR distro7.tg16.gathering.org. +$ORIGIN 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.6.7.1.0.c.8.4.1.1.4.8.5.6.0.a.2.ip6.arpa. +1 PTR telefw-telegw-outside.tg16.gathering.org. +2 PTR telegw-telefw-outside.tg16.gathering.org. +$ORIGIN 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.7.1.0.c.8.4.1.1.4.8.5.6.0.a.2.ip6.arpa. +1 PTR telefw-telegw-inside.tg16.gathering.org. +2 PTR telegw-telefw-inside.tg16.gathering.org. +$ORIGIN 9.4.1.1.4.8.5.6.0.a.2.ip6.arpa. +2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR r2-d2.tg16.gathering.org. +$ORIGIN 6.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.9.4.1.1.4.8.5.6.0.a.2.ip6.arpa. +6 PTR palpatine.tg16.gathering.org. +7 PTR grievous.tg16.gathering.org. +8 PTR kylo.tg16.gathering.org. +9 PTR dooku.tg16.gathering.org. diff --git a/examples/tg16/dns/master/2.4.8.5.6.0.a.2.ip6.arpa.zone b/examples/tg16/dns/master/2.4.8.5.6.0.a.2.ip6.arpa.zone new file mode 100644 index 0000000..c5fb5e5 --- /dev/null +++ b/examples/tg16/dns/master/2.4.8.5.6.0.a.2.ip6.arpa.zone @@ -0,0 +1,14 @@ +; autogenerated, and updated from dhcpd -- DO NOT TOUCH! +$TTL 3600 +@ IN SOA r2-d2.tg16.gathering.org. abuse.gathering.org. ( + 2016032201; serial + 3600 ; refresh + 1800 ; retry + 608400 ; expire + 3600 ) ; minimum and default TTL + + IN NS r2-d2.tg16.gathering.org. + IN NS c-3po.tg16.gathering.org. + +; WARNING! Do not edit this file directly! +; on the bootstrapping/nms server! diff --git a/examples/tg16/dns/master/3.4.8.5.6.0.a.2.ip6.arpa.zone b/examples/tg16/dns/master/3.4.8.5.6.0.a.2.ip6.arpa.zone new file mode 100644 index 0000000..c5fb5e5 --- /dev/null +++ b/examples/tg16/dns/master/3.4.8.5.6.0.a.2.ip6.arpa.zone @@ -0,0 +1,14 @@ +; autogenerated, and updated from dhcpd -- DO NOT TOUCH! +$TTL 3600 +@ IN SOA r2-d2.tg16.gathering.org. abuse.gathering.org. ( + 2016032201; serial + 3600 ; refresh + 1800 ; retry + 608400 ; expire + 3600 ) ; minimum and default TTL + + IN NS r2-d2.tg16.gathering.org. + IN NS c-3po.tg16.gathering.org. + +; WARNING! Do not edit this file directly! +; on the bootstrapping/nms server! diff --git a/examples/tg16/dns/master/4.4.8.5.6.0.a.2.ip6.arpa.zone b/examples/tg16/dns/master/4.4.8.5.6.0.a.2.ip6.arpa.zone new file mode 100644 index 0000000..c5fb5e5 --- /dev/null +++ b/examples/tg16/dns/master/4.4.8.5.6.0.a.2.ip6.arpa.zone @@ -0,0 +1,14 @@ +; autogenerated, and updated from dhcpd -- DO NOT TOUCH! +$TTL 3600 +@ IN SOA r2-d2.tg16.gathering.org. abuse.gathering.org. ( + 2016032201; serial + 3600 ; refresh + 1800 ; retry + 608400 ; expire + 3600 ) ; minimum and default TTL + + IN NS r2-d2.tg16.gathering.org. + IN NS c-3po.tg16.gathering.org. + +; WARNING! Do not edit this file directly! +; on the bootstrapping/nms server! diff --git a/examples/tg16/dns/master/5.4.8.5.6.0.a.2.ip6.arpa.zone b/examples/tg16/dns/master/5.4.8.5.6.0.a.2.ip6.arpa.zone new file mode 100644 index 0000000..c5fb5e5 --- /dev/null +++ b/examples/tg16/dns/master/5.4.8.5.6.0.a.2.ip6.arpa.zone @@ -0,0 +1,14 @@ +; autogenerated, and updated from dhcpd -- DO NOT TOUCH! +$TTL 3600 +@ IN SOA r2-d2.tg16.gathering.org. abuse.gathering.org. ( + 2016032201; serial + 3600 ; refresh + 1800 ; retry + 608400 ; expire + 3600 ) ; minimum and default TTL + + IN NS r2-d2.tg16.gathering.org. + IN NS c-3po.tg16.gathering.org. + +; WARNING! Do not edit this file directly! +; on the bootstrapping/nms server! diff --git a/examples/tg16/dns/master/6.4.8.5.6.0.a.2.ip6.arpa.zone b/examples/tg16/dns/master/6.4.8.5.6.0.a.2.ip6.arpa.zone new file mode 100644 index 0000000..c5fb5e5 --- /dev/null +++ b/examples/tg16/dns/master/6.4.8.5.6.0.a.2.ip6.arpa.zone @@ -0,0 +1,14 @@ +; autogenerated, and updated from dhcpd -- DO NOT TOUCH! +$TTL 3600 +@ IN SOA r2-d2.tg16.gathering.org. abuse.gathering.org. ( + 2016032201; serial + 3600 ; refresh + 1800 ; retry + 608400 ; expire + 3600 ) ; minimum and default TTL + + IN NS r2-d2.tg16.gathering.org. + IN NS c-3po.tg16.gathering.org. + +; WARNING! Do not edit this file directly! +; on the bootstrapping/nms server! diff --git a/examples/tg16/dns/master/7.4.8.5.6.0.a.2.ip6.arpa.zone b/examples/tg16/dns/master/7.4.8.5.6.0.a.2.ip6.arpa.zone new file mode 100644 index 0000000..c5fb5e5 --- /dev/null +++ b/examples/tg16/dns/master/7.4.8.5.6.0.a.2.ip6.arpa.zone @@ -0,0 +1,14 @@ +; autogenerated, and updated from dhcpd -- DO NOT TOUCH! +$TTL 3600 +@ IN SOA r2-d2.tg16.gathering.org. abuse.gathering.org. ( + 2016032201; serial + 3600 ; refresh + 1800 ; retry + 608400 ; expire + 3600 ) ; minimum and default TTL + + IN NS r2-d2.tg16.gathering.org. + IN NS c-3po.tg16.gathering.org. + +; WARNING! Do not edit this file directly! +; on the bootstrapping/nms server! diff --git a/examples/tg16/dns/master/conf-master/ap-creativia.conf b/examples/tg16/dns/master/conf-master/ap-creativia.conf new file mode 100644 index 0000000..3888465 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/ap-creativia.conf @@ -0,0 +1,7 @@ +zone "ap-creativia.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/ap-creativia.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/ap-distro0.conf b/examples/tg16/dns/master/conf-master/ap-distro0.conf new file mode 100644 index 0000000..8868658 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/ap-distro0.conf @@ -0,0 +1,7 @@ +zone "ap-distro0.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/ap-distro0.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/ap-distro1.conf b/examples/tg16/dns/master/conf-master/ap-distro1.conf new file mode 100644 index 0000000..700193a --- /dev/null +++ b/examples/tg16/dns/master/conf-master/ap-distro1.conf @@ -0,0 +1,7 @@ +zone "ap-distro1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/ap-distro1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/ap-distro2.conf b/examples/tg16/dns/master/conf-master/ap-distro2.conf new file mode 100644 index 0000000..a9f7d25 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/ap-distro2.conf @@ -0,0 +1,7 @@ +zone "ap-distro2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/ap-distro2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/ap-distro3.conf b/examples/tg16/dns/master/conf-master/ap-distro3.conf new file mode 100644 index 0000000..b563fae --- /dev/null +++ b/examples/tg16/dns/master/conf-master/ap-distro3.conf @@ -0,0 +1,7 @@ +zone "ap-distro3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/ap-distro3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/ap-distro4.conf b/examples/tg16/dns/master/conf-master/ap-distro4.conf new file mode 100644 index 0000000..396170b --- /dev/null +++ b/examples/tg16/dns/master/conf-master/ap-distro4.conf @@ -0,0 +1,7 @@ +zone "ap-distro4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/ap-distro4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/ap-distro5.conf b/examples/tg16/dns/master/conf-master/ap-distro5.conf new file mode 100644 index 0000000..d37e9e2 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/ap-distro5.conf @@ -0,0 +1,7 @@ +zone "ap-distro5.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/ap-distro5.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/ap-distro6.conf b/examples/tg16/dns/master/conf-master/ap-distro6.conf new file mode 100644 index 0000000..30b85ad --- /dev/null +++ b/examples/tg16/dns/master/conf-master/ap-distro6.conf @@ -0,0 +1,7 @@ +zone "ap-distro6.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/ap-distro6.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/ap-distro7.conf b/examples/tg16/dns/master/conf-master/ap-distro7.conf new file mode 100644 index 0000000..f2671d4 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/ap-distro7.conf @@ -0,0 +1,7 @@ +zone "ap-distro7.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/ap-distro7.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/ap-stand.conf b/examples/tg16/dns/master/conf-master/ap-stand.conf new file mode 100644 index 0000000..7345862 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/ap-stand.conf @@ -0,0 +1,7 @@ +zone "ap-stand.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/ap-stand.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/auditorium.conf b/examples/tg16/dns/master/conf-master/auditorium.conf new file mode 100644 index 0000000..69bc47a --- /dev/null +++ b/examples/tg16/dns/master/conf-master/auditorium.conf @@ -0,0 +1,7 @@ +zone "auditorium.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/auditorium.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/creativia-village.conf b/examples/tg16/dns/master/conf-master/creativia-village.conf new file mode 100644 index 0000000..714b547 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/creativia-village.conf @@ -0,0 +1,7 @@ +zone "creativia-village.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/creativia-village.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/creativia.conf b/examples/tg16/dns/master/conf-master/creativia.conf new file mode 100644 index 0000000..e98faf0 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/creativia.conf @@ -0,0 +1,7 @@ +zone "creativia.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/creativia.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/creativia1.conf b/examples/tg16/dns/master/conf-master/creativia1.conf new file mode 100644 index 0000000..4592955 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/creativia1.conf @@ -0,0 +1,7 @@ +zone "creativia1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/creativia1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/creativia2.conf b/examples/tg16/dns/master/conf-master/creativia2.conf new file mode 100644 index 0000000..45c6711 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/creativia2.conf @@ -0,0 +1,7 @@ +zone "creativia2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/creativia2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/creativia3.conf b/examples/tg16/dns/master/conf-master/creativia3.conf new file mode 100644 index 0000000..9aef961 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/creativia3.conf @@ -0,0 +1,7 @@ +zone "creativia3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/creativia3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/creativia4.conf b/examples/tg16/dns/master/conf-master/creativia4.conf new file mode 100644 index 0000000..2fd55fa --- /dev/null +++ b/examples/tg16/dns/master/conf-master/creativia4.conf @@ -0,0 +1,7 @@ +zone "creativia4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/creativia4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/creativia5.conf b/examples/tg16/dns/master/conf-master/creativia5.conf new file mode 100644 index 0000000..aedb3a9 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/creativia5.conf @@ -0,0 +1,7 @@ +zone "creativia5.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/creativia5.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/creativia6.conf b/examples/tg16/dns/master/conf-master/creativia6.conf new file mode 100644 index 0000000..f980387 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/creativia6.conf @@ -0,0 +1,7 @@ +zone "creativia6.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/creativia6.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/creativia7.conf b/examples/tg16/dns/master/conf-master/creativia7.conf new file mode 100644 index 0000000..1920fb6 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/creativia7.conf @@ -0,0 +1,7 @@ +zone "creativia7.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/creativia7.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/creativiasw1.conf b/examples/tg16/dns/master/conf-master/creativiasw1.conf new file mode 100644 index 0000000..7ef703c --- /dev/null +++ b/examples/tg16/dns/master/conf-master/creativiasw1.conf @@ -0,0 +1,7 @@ +zone "creativiasw1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/creativiasw1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/crew.conf b/examples/tg16/dns/master/conf-master/crew.conf new file mode 100644 index 0000000..ff1005e --- /dev/null +++ b/examples/tg16/dns/master/conf-master/crew.conf @@ -0,0 +1,7 @@ +zone "crew.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/crew.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/deltaker-srv.conf b/examples/tg16/dns/master/conf-master/deltaker-srv.conf new file mode 100644 index 0000000..6a8d91d --- /dev/null +++ b/examples/tg16/dns/master/conf-master/deltaker-srv.conf @@ -0,0 +1,7 @@ +zone "deltaker-srv.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/deltaker-srv.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e1-3.conf b/examples/tg16/dns/master/conf-master/e1-3.conf new file mode 100644 index 0000000..7f5b4a8 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e1-3.conf @@ -0,0 +1,7 @@ +zone "e1-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e1-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e1-4.conf b/examples/tg16/dns/master/conf-master/e1-4.conf new file mode 100644 index 0000000..45b23ed --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e1-4.conf @@ -0,0 +1,7 @@ +zone "e1-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e1-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e11-1.conf b/examples/tg16/dns/master/conf-master/e11-1.conf new file mode 100644 index 0000000..f62de2a --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e11-1.conf @@ -0,0 +1,7 @@ +zone "e11-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e11-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e11-2.conf b/examples/tg16/dns/master/conf-master/e11-2.conf new file mode 100644 index 0000000..b048694 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e11-2.conf @@ -0,0 +1,7 @@ +zone "e11-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e11-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e11-3.conf b/examples/tg16/dns/master/conf-master/e11-3.conf new file mode 100644 index 0000000..43039d3 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e11-3.conf @@ -0,0 +1,7 @@ +zone "e11-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e11-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e11-4.conf b/examples/tg16/dns/master/conf-master/e11-4.conf new file mode 100644 index 0000000..aa697e1 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e11-4.conf @@ -0,0 +1,7 @@ +zone "e11-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e11-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e13-1.conf b/examples/tg16/dns/master/conf-master/e13-1.conf new file mode 100644 index 0000000..d90a7dd --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e13-1.conf @@ -0,0 +1,7 @@ +zone "e13-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e13-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e13-2.conf b/examples/tg16/dns/master/conf-master/e13-2.conf new file mode 100644 index 0000000..5871568 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e13-2.conf @@ -0,0 +1,7 @@ +zone "e13-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e13-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e13-3.conf b/examples/tg16/dns/master/conf-master/e13-3.conf new file mode 100644 index 0000000..b7506c9 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e13-3.conf @@ -0,0 +1,7 @@ +zone "e13-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e13-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e13-4.conf b/examples/tg16/dns/master/conf-master/e13-4.conf new file mode 100644 index 0000000..d3b8158 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e13-4.conf @@ -0,0 +1,7 @@ +zone "e13-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e13-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e15-1.conf b/examples/tg16/dns/master/conf-master/e15-1.conf new file mode 100644 index 0000000..2f391f4 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e15-1.conf @@ -0,0 +1,7 @@ +zone "e15-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e15-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e15-2.conf b/examples/tg16/dns/master/conf-master/e15-2.conf new file mode 100644 index 0000000..1f3322b --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e15-2.conf @@ -0,0 +1,7 @@ +zone "e15-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e15-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e15-3.conf b/examples/tg16/dns/master/conf-master/e15-3.conf new file mode 100644 index 0000000..42817c1 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e15-3.conf @@ -0,0 +1,7 @@ +zone "e15-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e15-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e15-4.conf b/examples/tg16/dns/master/conf-master/e15-4.conf new file mode 100644 index 0000000..e382d90 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e15-4.conf @@ -0,0 +1,7 @@ +zone "e15-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e15-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e17-1.conf b/examples/tg16/dns/master/conf-master/e17-1.conf new file mode 100644 index 0000000..8b5644f --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e17-1.conf @@ -0,0 +1,7 @@ +zone "e17-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e17-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e17-2.conf b/examples/tg16/dns/master/conf-master/e17-2.conf new file mode 100644 index 0000000..63a3c77 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e17-2.conf @@ -0,0 +1,7 @@ +zone "e17-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e17-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e17-3.conf b/examples/tg16/dns/master/conf-master/e17-3.conf new file mode 100644 index 0000000..530592c --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e17-3.conf @@ -0,0 +1,7 @@ +zone "e17-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e17-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e17-4.conf b/examples/tg16/dns/master/conf-master/e17-4.conf new file mode 100644 index 0000000..94444cc --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e17-4.conf @@ -0,0 +1,7 @@ +zone "e17-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e17-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e19-1.conf b/examples/tg16/dns/master/conf-master/e19-1.conf new file mode 100644 index 0000000..eb68efd --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e19-1.conf @@ -0,0 +1,7 @@ +zone "e19-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e19-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e19-2.conf b/examples/tg16/dns/master/conf-master/e19-2.conf new file mode 100644 index 0000000..374d743 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e19-2.conf @@ -0,0 +1,7 @@ +zone "e19-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e19-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e19-3.conf b/examples/tg16/dns/master/conf-master/e19-3.conf new file mode 100644 index 0000000..49a09fe --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e19-3.conf @@ -0,0 +1,7 @@ +zone "e19-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e19-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e19-4.conf b/examples/tg16/dns/master/conf-master/e19-4.conf new file mode 100644 index 0000000..61e3b91 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e19-4.conf @@ -0,0 +1,7 @@ +zone "e19-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e19-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e21-1.conf b/examples/tg16/dns/master/conf-master/e21-1.conf new file mode 100644 index 0000000..d991042 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e21-1.conf @@ -0,0 +1,7 @@ +zone "e21-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e21-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e21-2.conf b/examples/tg16/dns/master/conf-master/e21-2.conf new file mode 100644 index 0000000..c5b0f33 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e21-2.conf @@ -0,0 +1,7 @@ +zone "e21-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e21-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e21-3.conf b/examples/tg16/dns/master/conf-master/e21-3.conf new file mode 100644 index 0000000..f0f8d43 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e21-3.conf @@ -0,0 +1,7 @@ +zone "e21-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e21-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e21-4.conf b/examples/tg16/dns/master/conf-master/e21-4.conf new file mode 100644 index 0000000..6bb96ce --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e21-4.conf @@ -0,0 +1,7 @@ +zone "e21-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e21-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e23-1.conf b/examples/tg16/dns/master/conf-master/e23-1.conf new file mode 100644 index 0000000..d6fc514 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e23-1.conf @@ -0,0 +1,7 @@ +zone "e23-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e23-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e23-2.conf b/examples/tg16/dns/master/conf-master/e23-2.conf new file mode 100644 index 0000000..12a30ff --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e23-2.conf @@ -0,0 +1,7 @@ +zone "e23-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e23-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e23-3.conf b/examples/tg16/dns/master/conf-master/e23-3.conf new file mode 100644 index 0000000..4f01024 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e23-3.conf @@ -0,0 +1,7 @@ +zone "e23-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e23-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e23-4.conf b/examples/tg16/dns/master/conf-master/e23-4.conf new file mode 100644 index 0000000..8701c82 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e23-4.conf @@ -0,0 +1,7 @@ +zone "e23-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e23-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e25-1.conf b/examples/tg16/dns/master/conf-master/e25-1.conf new file mode 100644 index 0000000..f942c1f --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e25-1.conf @@ -0,0 +1,7 @@ +zone "e25-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e25-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e25-2.conf b/examples/tg16/dns/master/conf-master/e25-2.conf new file mode 100644 index 0000000..15f27d0 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e25-2.conf @@ -0,0 +1,7 @@ +zone "e25-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e25-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e27-1.conf b/examples/tg16/dns/master/conf-master/e27-1.conf new file mode 100644 index 0000000..bd283f9 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e27-1.conf @@ -0,0 +1,7 @@ +zone "e27-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e27-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e27-2.conf b/examples/tg16/dns/master/conf-master/e27-2.conf new file mode 100644 index 0000000..60211b4 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e27-2.conf @@ -0,0 +1,7 @@ +zone "e27-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e27-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e29-1.conf b/examples/tg16/dns/master/conf-master/e29-1.conf new file mode 100644 index 0000000..90e871e --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e29-1.conf @@ -0,0 +1,7 @@ +zone "e29-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e29-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e29-2.conf b/examples/tg16/dns/master/conf-master/e29-2.conf new file mode 100644 index 0000000..c279db7 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e29-2.conf @@ -0,0 +1,7 @@ +zone "e29-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e29-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e3-3.conf b/examples/tg16/dns/master/conf-master/e3-3.conf new file mode 100644 index 0000000..f76a498 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e3-3.conf @@ -0,0 +1,7 @@ +zone "e3-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e3-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e3-4.conf b/examples/tg16/dns/master/conf-master/e3-4.conf new file mode 100644 index 0000000..6c0a775 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e3-4.conf @@ -0,0 +1,7 @@ +zone "e3-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e3-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e31-1.conf b/examples/tg16/dns/master/conf-master/e31-1.conf new file mode 100644 index 0000000..05a0495 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e31-1.conf @@ -0,0 +1,7 @@ +zone "e31-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e31-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e31-2.conf b/examples/tg16/dns/master/conf-master/e31-2.conf new file mode 100644 index 0000000..6e57d29 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e31-2.conf @@ -0,0 +1,7 @@ +zone "e31-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e31-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e33-1.conf b/examples/tg16/dns/master/conf-master/e33-1.conf new file mode 100644 index 0000000..3211cc2 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e33-1.conf @@ -0,0 +1,7 @@ +zone "e33-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e33-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e33-2.conf b/examples/tg16/dns/master/conf-master/e33-2.conf new file mode 100644 index 0000000..07b694e --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e33-2.conf @@ -0,0 +1,7 @@ +zone "e33-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e33-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e35-1.conf b/examples/tg16/dns/master/conf-master/e35-1.conf new file mode 100644 index 0000000..a4d7e69 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e35-1.conf @@ -0,0 +1,7 @@ +zone "e35-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e35-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e35-2.conf b/examples/tg16/dns/master/conf-master/e35-2.conf new file mode 100644 index 0000000..3f14bce --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e35-2.conf @@ -0,0 +1,7 @@ +zone "e35-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e35-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e37-1.conf b/examples/tg16/dns/master/conf-master/e37-1.conf new file mode 100644 index 0000000..e32ec9c --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e37-1.conf @@ -0,0 +1,7 @@ +zone "e37-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e37-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e37-2.conf b/examples/tg16/dns/master/conf-master/e37-2.conf new file mode 100644 index 0000000..7369148 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e37-2.conf @@ -0,0 +1,7 @@ +zone "e37-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e37-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e39-1.conf b/examples/tg16/dns/master/conf-master/e39-1.conf new file mode 100644 index 0000000..44dc53b --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e39-1.conf @@ -0,0 +1,7 @@ +zone "e39-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e39-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e39-2.conf b/examples/tg16/dns/master/conf-master/e39-2.conf new file mode 100644 index 0000000..f20b90e --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e39-2.conf @@ -0,0 +1,7 @@ +zone "e39-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e39-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e41-1.conf b/examples/tg16/dns/master/conf-master/e41-1.conf new file mode 100644 index 0000000..23c6c3e --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e41-1.conf @@ -0,0 +1,7 @@ +zone "e41-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e41-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e41-2.conf b/examples/tg16/dns/master/conf-master/e41-2.conf new file mode 100644 index 0000000..eedf10e --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e41-2.conf @@ -0,0 +1,7 @@ +zone "e41-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e41-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e41-3.conf b/examples/tg16/dns/master/conf-master/e41-3.conf new file mode 100644 index 0000000..283e5b6 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e41-3.conf @@ -0,0 +1,7 @@ +zone "e41-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e41-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e41-4.conf b/examples/tg16/dns/master/conf-master/e41-4.conf new file mode 100644 index 0000000..bca976e --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e41-4.conf @@ -0,0 +1,7 @@ +zone "e41-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e41-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e43-1.conf b/examples/tg16/dns/master/conf-master/e43-1.conf new file mode 100644 index 0000000..9ff4312 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e43-1.conf @@ -0,0 +1,7 @@ +zone "e43-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e43-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e43-2.conf b/examples/tg16/dns/master/conf-master/e43-2.conf new file mode 100644 index 0000000..6266e3d --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e43-2.conf @@ -0,0 +1,7 @@ +zone "e43-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e43-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e43-3.conf b/examples/tg16/dns/master/conf-master/e43-3.conf new file mode 100644 index 0000000..d04e85f --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e43-3.conf @@ -0,0 +1,7 @@ +zone "e43-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e43-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e43-4.conf b/examples/tg16/dns/master/conf-master/e43-4.conf new file mode 100644 index 0000000..e865c23 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e43-4.conf @@ -0,0 +1,7 @@ +zone "e43-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e43-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e45-1.conf b/examples/tg16/dns/master/conf-master/e45-1.conf new file mode 100644 index 0000000..bd6b7d8 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e45-1.conf @@ -0,0 +1,7 @@ +zone "e45-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e45-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e45-2.conf b/examples/tg16/dns/master/conf-master/e45-2.conf new file mode 100644 index 0000000..0d7c702 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e45-2.conf @@ -0,0 +1,7 @@ +zone "e45-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e45-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e45-3.conf b/examples/tg16/dns/master/conf-master/e45-3.conf new file mode 100644 index 0000000..1fad52a --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e45-3.conf @@ -0,0 +1,7 @@ +zone "e45-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e45-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e45-4.conf b/examples/tg16/dns/master/conf-master/e45-4.conf new file mode 100644 index 0000000..1a0bfaf --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e45-4.conf @@ -0,0 +1,7 @@ +zone "e45-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e45-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e47-1.conf b/examples/tg16/dns/master/conf-master/e47-1.conf new file mode 100644 index 0000000..bf24755 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e47-1.conf @@ -0,0 +1,7 @@ +zone "e47-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e47-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e47-2.conf b/examples/tg16/dns/master/conf-master/e47-2.conf new file mode 100644 index 0000000..b4e0d7d --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e47-2.conf @@ -0,0 +1,7 @@ +zone "e47-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e47-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e47-3.conf b/examples/tg16/dns/master/conf-master/e47-3.conf new file mode 100644 index 0000000..e4f6666 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e47-3.conf @@ -0,0 +1,7 @@ +zone "e47-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e47-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e47-4.conf b/examples/tg16/dns/master/conf-master/e47-4.conf new file mode 100644 index 0000000..4276464 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e47-4.conf @@ -0,0 +1,7 @@ +zone "e47-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e47-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e49-1.conf b/examples/tg16/dns/master/conf-master/e49-1.conf new file mode 100644 index 0000000..4fd495e --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e49-1.conf @@ -0,0 +1,7 @@ +zone "e49-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e49-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e49-2.conf b/examples/tg16/dns/master/conf-master/e49-2.conf new file mode 100644 index 0000000..7051b7d --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e49-2.conf @@ -0,0 +1,7 @@ +zone "e49-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e49-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e49-3.conf b/examples/tg16/dns/master/conf-master/e49-3.conf new file mode 100644 index 0000000..48f5a19 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e49-3.conf @@ -0,0 +1,7 @@ +zone "e49-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e49-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e49-4.conf b/examples/tg16/dns/master/conf-master/e49-4.conf new file mode 100644 index 0000000..1d15982 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e49-4.conf @@ -0,0 +1,7 @@ +zone "e49-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e49-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e5-2.conf b/examples/tg16/dns/master/conf-master/e5-2.conf new file mode 100644 index 0000000..dbbcfed --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e5-2.conf @@ -0,0 +1,7 @@ +zone "e5-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e5-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e5-3.conf b/examples/tg16/dns/master/conf-master/e5-3.conf new file mode 100644 index 0000000..2ea2361 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e5-3.conf @@ -0,0 +1,7 @@ +zone "e5-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e5-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e5-4.conf b/examples/tg16/dns/master/conf-master/e5-4.conf new file mode 100644 index 0000000..4ad61e3 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e5-4.conf @@ -0,0 +1,7 @@ +zone "e5-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e5-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e51-1.conf b/examples/tg16/dns/master/conf-master/e51-1.conf new file mode 100644 index 0000000..b783385 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e51-1.conf @@ -0,0 +1,7 @@ +zone "e51-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e51-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e51-2.conf b/examples/tg16/dns/master/conf-master/e51-2.conf new file mode 100644 index 0000000..51bfec2 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e51-2.conf @@ -0,0 +1,7 @@ +zone "e51-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e51-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e51-3.conf b/examples/tg16/dns/master/conf-master/e51-3.conf new file mode 100644 index 0000000..7c8c6d9 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e51-3.conf @@ -0,0 +1,7 @@ +zone "e51-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e51-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e51-4.conf b/examples/tg16/dns/master/conf-master/e51-4.conf new file mode 100644 index 0000000..740e376 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e51-4.conf @@ -0,0 +1,7 @@ +zone "e51-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e51-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e53-1.conf b/examples/tg16/dns/master/conf-master/e53-1.conf new file mode 100644 index 0000000..5277c66 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e53-1.conf @@ -0,0 +1,7 @@ +zone "e53-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e53-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e53-2.conf b/examples/tg16/dns/master/conf-master/e53-2.conf new file mode 100644 index 0000000..c4962a1 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e53-2.conf @@ -0,0 +1,7 @@ +zone "e53-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e53-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e53-3.conf b/examples/tg16/dns/master/conf-master/e53-3.conf new file mode 100644 index 0000000..38e799c --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e53-3.conf @@ -0,0 +1,7 @@ +zone "e53-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e53-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e53-4.conf b/examples/tg16/dns/master/conf-master/e53-4.conf new file mode 100644 index 0000000..a52b9d0 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e53-4.conf @@ -0,0 +1,7 @@ +zone "e53-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e53-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e55-1.conf b/examples/tg16/dns/master/conf-master/e55-1.conf new file mode 100644 index 0000000..2cf0d76 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e55-1.conf @@ -0,0 +1,7 @@ +zone "e55-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e55-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e55-2.conf b/examples/tg16/dns/master/conf-master/e55-2.conf new file mode 100644 index 0000000..ca8b7e4 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e55-2.conf @@ -0,0 +1,7 @@ +zone "e55-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e55-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e55-3.conf b/examples/tg16/dns/master/conf-master/e55-3.conf new file mode 100644 index 0000000..2e14648 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e55-3.conf @@ -0,0 +1,7 @@ +zone "e55-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e55-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e55-4.conf b/examples/tg16/dns/master/conf-master/e55-4.conf new file mode 100644 index 0000000..fd40ea7 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e55-4.conf @@ -0,0 +1,7 @@ +zone "e55-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e55-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e57-1.conf b/examples/tg16/dns/master/conf-master/e57-1.conf new file mode 100644 index 0000000..4c1f3a7 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e57-1.conf @@ -0,0 +1,7 @@ +zone "e57-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e57-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e57-2.conf b/examples/tg16/dns/master/conf-master/e57-2.conf new file mode 100644 index 0000000..3269f3c --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e57-2.conf @@ -0,0 +1,7 @@ +zone "e57-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e57-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e57-3.conf b/examples/tg16/dns/master/conf-master/e57-3.conf new file mode 100644 index 0000000..3e53d8f --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e57-3.conf @@ -0,0 +1,7 @@ +zone "e57-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e57-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e57-4.conf b/examples/tg16/dns/master/conf-master/e57-4.conf new file mode 100644 index 0000000..5ec928a --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e57-4.conf @@ -0,0 +1,7 @@ +zone "e57-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e57-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e59-1.conf b/examples/tg16/dns/master/conf-master/e59-1.conf new file mode 100644 index 0000000..566e90d --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e59-1.conf @@ -0,0 +1,7 @@ +zone "e59-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e59-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e59-2.conf b/examples/tg16/dns/master/conf-master/e59-2.conf new file mode 100644 index 0000000..0d91a6f --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e59-2.conf @@ -0,0 +1,7 @@ +zone "e59-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e59-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e59-3.conf b/examples/tg16/dns/master/conf-master/e59-3.conf new file mode 100644 index 0000000..e4db671 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e59-3.conf @@ -0,0 +1,7 @@ +zone "e59-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e59-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e59-4.conf b/examples/tg16/dns/master/conf-master/e59-4.conf new file mode 100644 index 0000000..7c2ce15 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e59-4.conf @@ -0,0 +1,7 @@ +zone "e59-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e59-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e61-1.conf b/examples/tg16/dns/master/conf-master/e61-1.conf new file mode 100644 index 0000000..60757e5 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e61-1.conf @@ -0,0 +1,7 @@ +zone "e61-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e61-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e61-2.conf b/examples/tg16/dns/master/conf-master/e61-2.conf new file mode 100644 index 0000000..841d9db --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e61-2.conf @@ -0,0 +1,7 @@ +zone "e61-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e61-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e61-3.conf b/examples/tg16/dns/master/conf-master/e61-3.conf new file mode 100644 index 0000000..c58afc9 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e61-3.conf @@ -0,0 +1,7 @@ +zone "e61-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e61-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e61-4.conf b/examples/tg16/dns/master/conf-master/e61-4.conf new file mode 100644 index 0000000..c7f0e09 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e61-4.conf @@ -0,0 +1,7 @@ +zone "e61-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e61-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e63-1.conf b/examples/tg16/dns/master/conf-master/e63-1.conf new file mode 100644 index 0000000..40067bf --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e63-1.conf @@ -0,0 +1,7 @@ +zone "e63-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e63-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e63-2.conf b/examples/tg16/dns/master/conf-master/e63-2.conf new file mode 100644 index 0000000..896d0f5 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e63-2.conf @@ -0,0 +1,7 @@ +zone "e63-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e63-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e63-3.conf b/examples/tg16/dns/master/conf-master/e63-3.conf new file mode 100644 index 0000000..21b8a42 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e63-3.conf @@ -0,0 +1,7 @@ +zone "e63-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e63-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e63-4.conf b/examples/tg16/dns/master/conf-master/e63-4.conf new file mode 100644 index 0000000..d2f5188 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e63-4.conf @@ -0,0 +1,7 @@ +zone "e63-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e63-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e65-1.conf b/examples/tg16/dns/master/conf-master/e65-1.conf new file mode 100644 index 0000000..707b86f --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e65-1.conf @@ -0,0 +1,7 @@ +zone "e65-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e65-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e65-2.conf b/examples/tg16/dns/master/conf-master/e65-2.conf new file mode 100644 index 0000000..697819d --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e65-2.conf @@ -0,0 +1,7 @@ +zone "e65-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e65-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e65-3.conf b/examples/tg16/dns/master/conf-master/e65-3.conf new file mode 100644 index 0000000..3c58bc2 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e65-3.conf @@ -0,0 +1,7 @@ +zone "e65-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e65-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e65-4.conf b/examples/tg16/dns/master/conf-master/e65-4.conf new file mode 100644 index 0000000..af38c4d --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e65-4.conf @@ -0,0 +1,7 @@ +zone "e65-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e65-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e67-1.conf b/examples/tg16/dns/master/conf-master/e67-1.conf new file mode 100644 index 0000000..8ec9b33 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e67-1.conf @@ -0,0 +1,7 @@ +zone "e67-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e67-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e67-2.conf b/examples/tg16/dns/master/conf-master/e67-2.conf new file mode 100644 index 0000000..b3a58dc --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e67-2.conf @@ -0,0 +1,7 @@ +zone "e67-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e67-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e67-3.conf b/examples/tg16/dns/master/conf-master/e67-3.conf new file mode 100644 index 0000000..16cf52b --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e67-3.conf @@ -0,0 +1,7 @@ +zone "e67-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e67-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e67-4.conf b/examples/tg16/dns/master/conf-master/e67-4.conf new file mode 100644 index 0000000..bc3c422 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e67-4.conf @@ -0,0 +1,7 @@ +zone "e67-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e67-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e69-1.conf b/examples/tg16/dns/master/conf-master/e69-1.conf new file mode 100644 index 0000000..ea3866d --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e69-1.conf @@ -0,0 +1,7 @@ +zone "e69-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e69-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e69-2.conf b/examples/tg16/dns/master/conf-master/e69-2.conf new file mode 100644 index 0000000..e3eb8a2 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e69-2.conf @@ -0,0 +1,7 @@ +zone "e69-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e69-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e7-1.conf b/examples/tg16/dns/master/conf-master/e7-1.conf new file mode 100644 index 0000000..7ddaafd --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e7-1.conf @@ -0,0 +1,7 @@ +zone "e7-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e7-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e7-2.conf b/examples/tg16/dns/master/conf-master/e7-2.conf new file mode 100644 index 0000000..10b2e22 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e7-2.conf @@ -0,0 +1,7 @@ +zone "e7-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e7-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e7-3.conf b/examples/tg16/dns/master/conf-master/e7-3.conf new file mode 100644 index 0000000..3b907c2 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e7-3.conf @@ -0,0 +1,7 @@ +zone "e7-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e7-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e7-4.conf b/examples/tg16/dns/master/conf-master/e7-4.conf new file mode 100644 index 0000000..b89b12c --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e7-4.conf @@ -0,0 +1,7 @@ +zone "e7-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e7-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e71-1.conf b/examples/tg16/dns/master/conf-master/e71-1.conf new file mode 100644 index 0000000..f8eedd0 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e71-1.conf @@ -0,0 +1,7 @@ +zone "e71-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e71-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e71-2.conf b/examples/tg16/dns/master/conf-master/e71-2.conf new file mode 100644 index 0000000..e68b0e5 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e71-2.conf @@ -0,0 +1,7 @@ +zone "e71-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e71-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e73-1.conf b/examples/tg16/dns/master/conf-master/e73-1.conf new file mode 100644 index 0000000..dc65130 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e73-1.conf @@ -0,0 +1,7 @@ +zone "e73-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e73-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e73-2.conf b/examples/tg16/dns/master/conf-master/e73-2.conf new file mode 100644 index 0000000..0927c7c --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e73-2.conf @@ -0,0 +1,7 @@ +zone "e73-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e73-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e75-1.conf b/examples/tg16/dns/master/conf-master/e75-1.conf new file mode 100644 index 0000000..6420985 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e75-1.conf @@ -0,0 +1,7 @@ +zone "e75-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e75-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e75-2.conf b/examples/tg16/dns/master/conf-master/e75-2.conf new file mode 100644 index 0000000..797b85b --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e75-2.conf @@ -0,0 +1,7 @@ +zone "e75-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e75-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e77-1.conf b/examples/tg16/dns/master/conf-master/e77-1.conf new file mode 100644 index 0000000..dfd539f --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e77-1.conf @@ -0,0 +1,7 @@ +zone "e77-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e77-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e77-2.conf b/examples/tg16/dns/master/conf-master/e77-2.conf new file mode 100644 index 0000000..e9f97b1 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e77-2.conf @@ -0,0 +1,7 @@ +zone "e77-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e77-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e79-1.conf b/examples/tg16/dns/master/conf-master/e79-1.conf new file mode 100644 index 0000000..624b25d --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e79-1.conf @@ -0,0 +1,7 @@ +zone "e79-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e79-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e79-2.conf b/examples/tg16/dns/master/conf-master/e79-2.conf new file mode 100644 index 0000000..bf29434 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e79-2.conf @@ -0,0 +1,7 @@ +zone "e79-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e79-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e81-1.conf b/examples/tg16/dns/master/conf-master/e81-1.conf new file mode 100644 index 0000000..a814385 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e81-1.conf @@ -0,0 +1,7 @@ +zone "e81-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e81-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e81-2.conf b/examples/tg16/dns/master/conf-master/e81-2.conf new file mode 100644 index 0000000..46f7c23 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e81-2.conf @@ -0,0 +1,7 @@ +zone "e81-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e81-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e83-2.conf b/examples/tg16/dns/master/conf-master/e83-2.conf new file mode 100644 index 0000000..1bdd287 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e83-2.conf @@ -0,0 +1,7 @@ +zone "e83-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e83-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e85-2.conf b/examples/tg16/dns/master/conf-master/e85-2.conf new file mode 100644 index 0000000..9817768 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e85-2.conf @@ -0,0 +1,7 @@ +zone "e85-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e85-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e9-1.conf b/examples/tg16/dns/master/conf-master/e9-1.conf new file mode 100644 index 0000000..3760865 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e9-1.conf @@ -0,0 +1,7 @@ +zone "e9-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e9-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e9-2.conf b/examples/tg16/dns/master/conf-master/e9-2.conf new file mode 100644 index 0000000..9dfe47e --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e9-2.conf @@ -0,0 +1,7 @@ +zone "e9-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e9-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e9-3.conf b/examples/tg16/dns/master/conf-master/e9-3.conf new file mode 100644 index 0000000..ecddd82 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e9-3.conf @@ -0,0 +1,7 @@ +zone "e9-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e9-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e9-4.conf b/examples/tg16/dns/master/conf-master/e9-4.conf new file mode 100644 index 0000000..038d89d --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e9-4.conf @@ -0,0 +1,7 @@ +zone "e9-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e9-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/event.conf b/examples/tg16/dns/master/conf-master/event.conf new file mode 100644 index 0000000..6d81506 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/event.conf @@ -0,0 +1,7 @@ +zone "event.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/event.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/flankenord.conf b/examples/tg16/dns/master/conf-master/flankenord.conf new file mode 100644 index 0000000..230e020 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/flankenord.conf @@ -0,0 +1,7 @@ +zone "flankenord.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/flankenord.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/flankesor.conf b/examples/tg16/dns/master/conf-master/flankesor.conf new file mode 100644 index 0000000..3f78de5 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/flankesor.conf @@ -0,0 +1,7 @@ +zone "flankesor.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/flankesor.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/foh.conf b/examples/tg16/dns/master/conf-master/foh.conf new file mode 100644 index 0000000..318fdd1 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/foh.conf @@ -0,0 +1,7 @@ +zone "foh.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/foh.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/fugleberget.conf b/examples/tg16/dns/master/conf-master/fugleberget.conf new file mode 100644 index 0000000..2ae7801 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/fugleberget.conf @@ -0,0 +1,7 @@ +zone "fugleberget.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/fugleberget.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/game.conf b/examples/tg16/dns/master/conf-master/game.conf new file mode 100644 index 0000000..b897be2 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/game.conf @@ -0,0 +1,7 @@ +zone "game.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/game.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/gamestage.conf b/examples/tg16/dns/master/conf-master/gamestage.conf new file mode 100644 index 0000000..e943c48 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/gamestage.conf @@ -0,0 +1,7 @@ +zone "gamestage.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/gamestage.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/highlights.conf b/examples/tg16/dns/master/conf-master/highlights.conf new file mode 100644 index 0000000..03216be --- /dev/null +++ b/examples/tg16/dns/master/conf-master/highlights.conf @@ -0,0 +1,7 @@ +zone "highlights.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/highlights.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/hon.conf b/examples/tg16/dns/master/conf-master/hon.conf new file mode 100644 index 0000000..7f1eb41 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/hon.conf @@ -0,0 +1,7 @@ +zone "hon.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/hon.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/info.conf b/examples/tg16/dns/master/conf-master/info.conf new file mode 100644 index 0000000..9006e60 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/info.conf @@ -0,0 +1,7 @@ +zone "info.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/info.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/innsjekk.conf b/examples/tg16/dns/master/conf-master/innsjekk.conf new file mode 100644 index 0000000..5f588c0 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/innsjekk.conf @@ -0,0 +1,7 @@ +zone "innsjekk.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/innsjekk.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/logistikk.conf b/examples/tg16/dns/master/conf-master/logistikk.conf new file mode 100644 index 0000000..da0be43 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/logistikk.conf @@ -0,0 +1,7 @@ +zone "logistikk.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/logistikk.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/medic.conf b/examples/tg16/dns/master/conf-master/medic.conf new file mode 100644 index 0000000..0ee3baf --- /dev/null +++ b/examples/tg16/dns/master/conf-master/medic.conf @@ -0,0 +1,7 @@ +zone "medic.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/medic.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/noc.conf b/examples/tg16/dns/master/conf-master/noc.conf new file mode 100644 index 0000000..2c03867 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/noc.conf @@ -0,0 +1,7 @@ +zone "noc.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/noc.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/north.conf b/examples/tg16/dns/master/conf-master/north.conf new file mode 100644 index 0000000..57fe7b5 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/north.conf @@ -0,0 +1,7 @@ +zone "north.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/north.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/presse.conf b/examples/tg16/dns/master/conf-master/presse.conf new file mode 100644 index 0000000..3e9c613 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/presse.conf @@ -0,0 +1,7 @@ +zone "presse.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/presse.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/resepsjon.conf b/examples/tg16/dns/master/conf-master/resepsjon.conf new file mode 100644 index 0000000..8889344 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/resepsjon.conf @@ -0,0 +1,7 @@ +zone "resepsjon.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/resepsjon.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/santander-temp.conf b/examples/tg16/dns/master/conf-master/santander-temp.conf new file mode 100644 index 0000000..d4ebea9 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/santander-temp.conf @@ -0,0 +1,7 @@ +zone "santander-temp.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/santander-temp.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/security.conf b/examples/tg16/dns/master/conf-master/security.conf new file mode 100644 index 0000000..ba55f9f --- /dev/null +++ b/examples/tg16/dns/master/conf-master/security.conf @@ -0,0 +1,7 @@ +zone "security.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/security.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/security2.conf b/examples/tg16/dns/master/conf-master/security2.conf new file mode 100644 index 0000000..9d744f9 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/security2.conf @@ -0,0 +1,7 @@ +zone "security2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/security2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/sponsor.conf b/examples/tg16/dns/master/conf-master/sponsor.conf new file mode 100644 index 0000000..3bac823 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/sponsor.conf @@ -0,0 +1,7 @@ +zone "sponsor.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/sponsor.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/stage.conf b/examples/tg16/dns/master/conf-master/stage.conf new file mode 100644 index 0000000..3960c20 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/stage.conf @@ -0,0 +1,7 @@ +zone "stage.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/stage.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/streamer1.conf b/examples/tg16/dns/master/conf-master/streamer1.conf new file mode 100644 index 0000000..c93a1f5 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/streamer1.conf @@ -0,0 +1,7 @@ +zone "streamer1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/streamer1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/tech-wlan.conf b/examples/tg16/dns/master/conf-master/tech-wlan.conf new file mode 100644 index 0000000..66708e5 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/tech-wlan.conf @@ -0,0 +1,7 @@ +zone "tech-wlan.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/tech-wlan.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/wlan.conf b/examples/tg16/dns/master/conf-master/wlan.conf new file mode 100644 index 0000000..8cb4ba3 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/wlan.conf @@ -0,0 +1,7 @@ +zone "wlan.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/wlan.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/infra.tg16.gathering.org.zone b/examples/tg16/dns/master/infra.tg16.gathering.org.zone new file mode 100644 index 0000000..3d0126e --- /dev/null +++ b/examples/tg16/dns/master/infra.tg16.gathering.org.zone @@ -0,0 +1,13 @@ +$TTL 3600 +@ IN SOA r2-d2.tg16.gathering.org. abuse.gathering.org. ( + 2016032001; serial + 3600 ; refresh + 1800 ; retry + 608400 ; expire + 3600 ) ; minimum and default TTL + + IN NS r2-d2.tg16.gathering.org. + IN NS c-3po.tg16.gathering.org. + +; Generated by make-all-config.sh on the bootstrapping/nms server. +; Will not be overwritten unless it is missing ;) diff --git a/examples/tg16/dns/master/named.conf b/examples/tg16/dns/master/named.conf new file mode 100644 index 0000000..4bef39c --- /dev/null +++ b/examples/tg16/dns/master/named.conf @@ -0,0 +1,147 @@ +// This named.conf was generated by make-named.pl at 20160322-2330 +// The current version of make-named.pl should not overwrite this file. +acl tg-nett { 88.92.0.0/17; 2a06:5840::/29; 185.110.148.0/22; 127.0.0.0/8; ::1; }; +acl ns-xfr { 185.110.148.2; 2a06:5841:1337::2; 185.110.149.2; 2a06:5841:149a::2; 185.110.150.0/25; 2a06:5841:150a::1/64; }; +acl ext-xfr { 193.0.0.0/22; 2001:610:240::/48; 2001:67c:2e8::/48; }; + +options { + directory "/etc/bind"; + allow-recursion { tg-nett; }; + allow-query { any; }; + allow-transfer { ns-xfr; }; + recursion yes; + auth-nxdomain no; + listen-on-v6 { any; }; + statistics-file "/etc/bind/named.rndc-stats"; +}; + +logging { + category "default" { "debug"; }; + category "general" { "debug"; }; + category "database" { "debug"; }; + category "security" { "debug"; "stats"; }; + category "config" { "debug"; "stats"; }; + category "resolver" { "debug"; "stats"; }; + category "xfer-in" { "debug"; "stats"; }; + category "xfer-out" { "debug"; "stats"; }; + category "notify" { "debug"; "stats"; }; + category "client" { "debug"; }; + category "unmatched" { "debug"; }; + category "network" { "debug"; }; + category "update" { "debug"; }; + category "queries" { "stats"; "query"; }; + category "dispatch" { "debug"; }; + category "dnssec" { "debug"; }; + category "lame-servers" { "debug"; }; + + channel "debug" { + file "/etc/bind/nameddbg" versions 2 size 50m; + print-time yes; + print-category yes; + print-severity yes; + severity debug 9; + }; + + channel "stats" { + file "/etc/bind/namedstats" versions 2 size 50m; + print-time yes; + print-category yes; + print-severity yes; + severity debug 3; + }; + + channel "query" { + file "/etc/bind/namedquery" versions 2 size 500m; + print-time yes; + severity info; + }; + +}; + +key DHCP_UPDATER { + algorithm HMAC-MD5.SIG-ALG.REG.INT; + secret <removed>; +}; + +zone "tg16.gathering.org" { + type master; + file "tg16.gathering.org.zone"; + notify yes; + allow-transfer { ns-xfr; }; +}; + +zone "infra.tg16.gathering.org" { + type master; + file "infra.tg16.gathering.org.zone"; + notify yes; + allow-transfer { ns-xfr; }; +}; + +zone "0.4.8.5.6.0.a.2.ip6.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + file "0.4.8.5.6.0.a.2.ip6.arpa.zone"; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "1.4.8.5.6.0.a.2.ip6.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + file "1.4.8.5.6.0.a.2.ip6.arpa.zone"; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "2.4.8.5.6.0.a.2.ip6.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + file "2.4.8.5.6.0.a.2.ip6.arpa.zone"; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "3.4.8.5.6.0.a.2.ip6.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + file "3.4.8.5.6.0.a.2.ip6.arpa.zone"; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "4.4.8.5.6.0.a.2.ip6.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + file "4.4.8.5.6.0.a.2.ip6.arpa.zone"; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "5.4.8.5.6.0.a.2.ip6.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + file "5.4.8.5.6.0.a.2.ip6.arpa.zone"; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "6.4.8.5.6.0.a.2.ip6.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + file "6.4.8.5.6.0.a.2.ip6.arpa.zone"; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "7.4.8.5.6.0.a.2.ip6.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + file "7.4.8.5.6.0.a.2.ip6.arpa.zone"; + allow-transfer { ns-xfr; ext-xfr; }; +}; + + +include "/etc/bind/named.conf.default-zones"; +include "named.reverse4.conf"; +include "named.master-include.conf"; diff --git a/examples/tg16/dns/master/named.conf.default-zones b/examples/tg16/dns/master/named.conf.default-zones new file mode 100644 index 0000000..355338b --- /dev/null +++ b/examples/tg16/dns/master/named.conf.default-zones @@ -0,0 +1,30 @@ +// prime the server with knowledge of the root servers +zone "." { + type hint; + file "/etc/bind/db.root"; +}; + +// be authoritative for the localhost forward and reverse zones, and for +// broadcast zones as per RFC 1912 + +zone "localhost" { + type master; + file "/etc/bind/db.local"; +}; + +zone "127.in-addr.arpa" { + type master; + file "/etc/bind/db.127"; +}; + +zone "0.in-addr.arpa" { + type master; + file "/etc/bind/db.0"; +}; + +zone "255.in-addr.arpa" { + type master; + file "/etc/bind/db.255"; +}; + + diff --git a/examples/tg16/dns/master/named.master-include.conf b/examples/tg16/dns/master/named.master-include.conf new file mode 100644 index 0000000..72f855b --- /dev/null +++ b/examples/tg16/dns/master/named.master-include.conf @@ -0,0 +1,179 @@ +include "/etc/bind/conf-master/ap-creativia.conf"; +include "/etc/bind/conf-master/ap-distro0.conf"; +include "/etc/bind/conf-master/ap-distro1.conf"; +include "/etc/bind/conf-master/ap-distro2.conf"; +include "/etc/bind/conf-master/ap-distro3.conf"; +include "/etc/bind/conf-master/ap-distro4.conf"; +include "/etc/bind/conf-master/ap-distro5.conf"; +include "/etc/bind/conf-master/ap-distro6.conf"; +include "/etc/bind/conf-master/ap-distro7.conf"; +include "/etc/bind/conf-master/ap-stand.conf"; +include "/etc/bind/conf-master/auditorium.conf"; +include "/etc/bind/conf-master/creativia-village.conf"; +include "/etc/bind/conf-master/creativia.conf"; +include "/etc/bind/conf-master/creativia1.conf"; +include "/etc/bind/conf-master/creativia2.conf"; +include "/etc/bind/conf-master/creativia3.conf"; +include "/etc/bind/conf-master/creativia4.conf"; +include "/etc/bind/conf-master/creativia5.conf"; +include "/etc/bind/conf-master/creativia6.conf"; +include "/etc/bind/conf-master/creativia7.conf"; +include "/etc/bind/conf-master/creativiasw1.conf"; +include "/etc/bind/conf-master/crew.conf"; +include "/etc/bind/conf-master/deltaker-srv.conf"; +include "/etc/bind/conf-master/e1-3.conf"; +include "/etc/bind/conf-master/e1-4.conf"; +include "/etc/bind/conf-master/e11-1.conf"; +include "/etc/bind/conf-master/e11-2.conf"; +include "/etc/bind/conf-master/e11-3.conf"; +include "/etc/bind/conf-master/e11-4.conf"; +include "/etc/bind/conf-master/e13-1.conf"; +include "/etc/bind/conf-master/e13-2.conf"; +include "/etc/bind/conf-master/e13-3.conf"; +include "/etc/bind/conf-master/e13-4.conf"; +include "/etc/bind/conf-master/e15-1.conf"; +include "/etc/bind/conf-master/e15-2.conf"; +include "/etc/bind/conf-master/e15-3.conf"; +include "/etc/bind/conf-master/e15-4.conf"; +include "/etc/bind/conf-master/e17-1.conf"; +include "/etc/bind/conf-master/e17-2.conf"; +include "/etc/bind/conf-master/e17-3.conf"; +include "/etc/bind/conf-master/e17-4.conf"; +include "/etc/bind/conf-master/e19-1.conf"; +include "/etc/bind/conf-master/e19-2.conf"; +include "/etc/bind/conf-master/e19-3.conf"; +include "/etc/bind/conf-master/e19-4.conf"; +include "/etc/bind/conf-master/e21-1.conf"; +include "/etc/bind/conf-master/e21-2.conf"; +include "/etc/bind/conf-master/e21-3.conf"; +include "/etc/bind/conf-master/e21-4.conf"; +include "/etc/bind/conf-master/e23-1.conf"; +include "/etc/bind/conf-master/e23-2.conf"; +include "/etc/bind/conf-master/e23-3.conf"; +include "/etc/bind/conf-master/e23-4.conf"; +include "/etc/bind/conf-master/e25-1.conf"; +include "/etc/bind/conf-master/e25-2.conf"; +include "/etc/bind/conf-master/e27-1.conf"; +include "/etc/bind/conf-master/e27-2.conf"; +include "/etc/bind/conf-master/e29-1.conf"; +include "/etc/bind/conf-master/e29-2.conf"; +include "/etc/bind/conf-master/e3-3.conf"; +include "/etc/bind/conf-master/e3-4.conf"; +include "/etc/bind/conf-master/e31-1.conf"; +include "/etc/bind/conf-master/e31-2.conf"; +include "/etc/bind/conf-master/e33-1.conf"; +include "/etc/bind/conf-master/e33-2.conf"; +include "/etc/bind/conf-master/e35-1.conf"; +include "/etc/bind/conf-master/e35-2.conf"; +include "/etc/bind/conf-master/e37-1.conf"; +include "/etc/bind/conf-master/e37-2.conf"; +include "/etc/bind/conf-master/e39-1.conf"; +include "/etc/bind/conf-master/e39-2.conf"; +include "/etc/bind/conf-master/e41-1.conf"; +include "/etc/bind/conf-master/e41-2.conf"; +include "/etc/bind/conf-master/e41-3.conf"; +include "/etc/bind/conf-master/e41-4.conf"; +include "/etc/bind/conf-master/e43-1.conf"; +include "/etc/bind/conf-master/e43-2.conf"; +include "/etc/bind/conf-master/e43-3.conf"; +include "/etc/bind/conf-master/e43-4.conf"; +include "/etc/bind/conf-master/e45-1.conf"; +include "/etc/bind/conf-master/e45-2.conf"; +include "/etc/bind/conf-master/e45-3.conf"; +include "/etc/bind/conf-master/e45-4.conf"; +include "/etc/bind/conf-master/e47-1.conf"; +include "/etc/bind/conf-master/e47-2.conf"; +include "/etc/bind/conf-master/e47-3.conf"; +include "/etc/bind/conf-master/e47-4.conf"; +include "/etc/bind/conf-master/e49-1.conf"; +include "/etc/bind/conf-master/e49-2.conf"; +include "/etc/bind/conf-master/e49-3.conf"; +include "/etc/bind/conf-master/e49-4.conf"; +include "/etc/bind/conf-master/e5-2.conf"; +include "/etc/bind/conf-master/e5-3.conf"; +include "/etc/bind/conf-master/e5-4.conf"; +include "/etc/bind/conf-master/e51-1.conf"; +include "/etc/bind/conf-master/e51-2.conf"; +include "/etc/bind/conf-master/e51-3.conf"; +include "/etc/bind/conf-master/e51-4.conf"; +include "/etc/bind/conf-master/e53-1.conf"; +include "/etc/bind/conf-master/e53-2.conf"; +include "/etc/bind/conf-master/e53-3.conf"; +include "/etc/bind/conf-master/e53-4.conf"; +include "/etc/bind/conf-master/e55-1.conf"; +include "/etc/bind/conf-master/e55-2.conf"; +include "/etc/bind/conf-master/e55-3.conf"; +include "/etc/bind/conf-master/e55-4.conf"; +include "/etc/bind/conf-master/e57-1.conf"; +include "/etc/bind/conf-master/e57-2.conf"; +include "/etc/bind/conf-master/e57-3.conf"; +include "/etc/bind/conf-master/e57-4.conf"; +include "/etc/bind/conf-master/e59-1.conf"; +include "/etc/bind/conf-master/e59-2.conf"; +include "/etc/bind/conf-master/e59-3.conf"; +include "/etc/bind/conf-master/e59-4.conf"; +include "/etc/bind/conf-master/e61-1.conf"; +include "/etc/bind/conf-master/e61-2.conf"; +include "/etc/bind/conf-master/e61-3.conf"; +include "/etc/bind/conf-master/e61-4.conf"; +include "/etc/bind/conf-master/e63-1.conf"; +include "/etc/bind/conf-master/e63-2.conf"; +include "/etc/bind/conf-master/e63-3.conf"; +include "/etc/bind/conf-master/e63-4.conf"; +include "/etc/bind/conf-master/e65-1.conf"; +include "/etc/bind/conf-master/e65-2.conf"; +include "/etc/bind/conf-master/e65-3.conf"; +include "/etc/bind/conf-master/e65-4.conf"; +include "/etc/bind/conf-master/e67-1.conf"; +include "/etc/bind/conf-master/e67-2.conf"; +include "/etc/bind/conf-master/e67-3.conf"; +include "/etc/bind/conf-master/e67-4.conf"; +include "/etc/bind/conf-master/e69-1.conf"; +include "/etc/bind/conf-master/e69-2.conf"; +include "/etc/bind/conf-master/e7-1.conf"; +include "/etc/bind/conf-master/e7-2.conf"; +include "/etc/bind/conf-master/e7-3.conf"; +include "/etc/bind/conf-master/e7-4.conf"; +include "/etc/bind/conf-master/e71-1.conf"; +include "/etc/bind/conf-master/e71-2.conf"; +include "/etc/bind/conf-master/e73-1.conf"; +include "/etc/bind/conf-master/e73-2.conf"; +include "/etc/bind/conf-master/e75-1.conf"; +include "/etc/bind/conf-master/e75-2.conf"; +include "/etc/bind/conf-master/e77-1.conf"; +include "/etc/bind/conf-master/e77-2.conf"; +include "/etc/bind/conf-master/e79-1.conf"; +include "/etc/bind/conf-master/e79-2.conf"; +include "/etc/bind/conf-master/e81-1.conf"; +include "/etc/bind/conf-master/e81-2.conf"; +include "/etc/bind/conf-master/e83-2.conf"; +include "/etc/bind/conf-master/e85-2.conf"; +include "/etc/bind/conf-master/e9-1.conf"; +include "/etc/bind/conf-master/e9-2.conf"; +include "/etc/bind/conf-master/e9-3.conf"; +include "/etc/bind/conf-master/e9-4.conf"; +include "/etc/bind/conf-master/event.conf"; +include "/etc/bind/conf-master/flankenord.conf"; +include "/etc/bind/conf-master/flankesor.conf"; +include "/etc/bind/conf-master/foh.conf"; +include "/etc/bind/conf-master/fugleberget.conf"; +include "/etc/bind/conf-master/game.conf"; +include "/etc/bind/conf-master/gamestage.conf"; +include "/etc/bind/conf-master/highlights.conf"; +include "/etc/bind/conf-master/hon.conf"; +include "/etc/bind/conf-master/info.conf"; +include "/etc/bind/conf-master/innsjekk.conf"; +include "/etc/bind/conf-master/logistikk.conf"; +include "/etc/bind/conf-master/medic.conf"; +include "/etc/bind/conf-master/noc.conf"; +include "/etc/bind/conf-master/north.conf"; +include "/etc/bind/conf-master/presse.conf"; +include "/etc/bind/conf-master/resepsjon.conf"; +include "/etc/bind/conf-master/santander-temp.conf"; +include "/etc/bind/conf-master/security.conf"; +include "/etc/bind/conf-master/security2.conf"; +include "/etc/bind/conf-master/sponsor.conf"; +include "/etc/bind/conf-master/stage.conf"; +include "/etc/bind/conf-master/streamer1.conf"; +include "/etc/bind/conf-master/tech-wlan.conf"; +include "/etc/bind/conf-master/wlan.conf"; diff --git a/examples/tg16/dns/master/named.reverse4.conf b/examples/tg16/dns/master/named.reverse4.conf new file mode 100644 index 0000000..66bae09 --- /dev/null +++ b/examples/tg16/dns/master/named.reverse4.conf @@ -0,0 +1,1188 @@ +// 88.92.0.0/24 +zone "0.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/0.92.88.in-addr.arpa.zone"; +}; + +// 88.92.1.0/24 +zone "1.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/1.92.88.in-addr.arpa.zone"; +}; + +// 88.92.2.0/24 +zone "2.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/2.92.88.in-addr.arpa.zone"; +}; + +// 88.92.3.0/24 +zone "3.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/3.92.88.in-addr.arpa.zone"; +}; + +// 88.92.4.0/24 +zone "4.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/4.92.88.in-addr.arpa.zone"; +}; + +// 88.92.5.0/24 +zone "5.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/5.92.88.in-addr.arpa.zone"; +}; + +// 88.92.6.0/24 +zone "6.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/6.92.88.in-addr.arpa.zone"; +}; + +// 88.92.7.0/24 +zone "7.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/7.92.88.in-addr.arpa.zone"; +}; + +// 88.92.8.0/24 +zone "8.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/8.92.88.in-addr.arpa.zone"; +}; + +// 88.92.9.0/24 +zone "9.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/9.92.88.in-addr.arpa.zone"; +}; + +// 88.92.10.0/24 +zone "10.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/10.92.88.in-addr.arpa.zone"; +}; + +// 88.92.11.0/24 +zone "11.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/11.92.88.in-addr.arpa.zone"; +}; + +// 88.92.12.0/24 +zone "12.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/12.92.88.in-addr.arpa.zone"; +}; + +// 88.92.13.0/24 +zone "13.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/13.92.88.in-addr.arpa.zone"; +}; + +// 88.92.14.0/24 +zone "14.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/14.92.88.in-addr.arpa.zone"; +}; + +// 88.92.15.0/24 +zone "15.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/15.92.88.in-addr.arpa.zone"; +}; + +// 88.92.16.0/24 +zone "16.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/16.92.88.in-addr.arpa.zone"; +}; + +// 88.92.17.0/24 +zone "17.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/17.92.88.in-addr.arpa.zone"; +}; + +// 88.92.18.0/24 +zone "18.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/18.92.88.in-addr.arpa.zone"; +}; + +// 88.92.19.0/24 +zone "19.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/19.92.88.in-addr.arpa.zone"; +}; + +// 88.92.20.0/24 +zone "20.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/20.92.88.in-addr.arpa.zone"; +}; + +// 88.92.21.0/24 +zone "21.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/21.92.88.in-addr.arpa.zone"; +}; + +// 88.92.22.0/24 +zone "22.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/22.92.88.in-addr.arpa.zone"; +}; + +// 88.92.23.0/24 +zone "23.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/23.92.88.in-addr.arpa.zone"; +}; + +// 88.92.24.0/24 +zone "24.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/24.92.88.in-addr.arpa.zone"; +}; + +// 88.92.25.0/24 +zone "25.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/25.92.88.in-addr.arpa.zone"; +}; + +// 88.92.26.0/24 +zone "26.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/26.92.88.in-addr.arpa.zone"; +}; + +// 88.92.27.0/24 +zone "27.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/27.92.88.in-addr.arpa.zone"; +}; + +// 88.92.28.0/24 +zone "28.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/28.92.88.in-addr.arpa.zone"; +}; + +// 88.92.29.0/24 +zone "29.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/29.92.88.in-addr.arpa.zone"; +}; + +// 88.92.30.0/24 +zone "30.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/30.92.88.in-addr.arpa.zone"; +}; + +// 88.92.31.0/24 +zone "31.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/31.92.88.in-addr.arpa.zone"; +}; + +// 88.92.32.0/24 +zone "32.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/32.92.88.in-addr.arpa.zone"; +}; + +// 88.92.33.0/24 +zone "33.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/33.92.88.in-addr.arpa.zone"; +}; + +// 88.92.34.0/24 +zone "34.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/34.92.88.in-addr.arpa.zone"; +}; + +// 88.92.35.0/24 +zone "35.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/35.92.88.in-addr.arpa.zone"; +}; + +// 88.92.36.0/24 +zone "36.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/36.92.88.in-addr.arpa.zone"; +}; + +// 88.92.37.0/24 +zone "37.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/37.92.88.in-addr.arpa.zone"; +}; + +// 88.92.38.0/24 +zone "38.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/38.92.88.in-addr.arpa.zone"; +}; + +// 88.92.39.0/24 +zone "39.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/39.92.88.in-addr.arpa.zone"; +}; + +// 88.92.40.0/24 +zone "40.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/40.92.88.in-addr.arpa.zone"; +}; + +// 88.92.41.0/24 +zone "41.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/41.92.88.in-addr.arpa.zone"; +}; + +// 88.92.42.0/24 +zone "42.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/42.92.88.in-addr.arpa.zone"; +}; + +// 88.92.43.0/24 +zone "43.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/43.92.88.in-addr.arpa.zone"; +}; + +// 88.92.44.0/24 +zone "44.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/44.92.88.in-addr.arpa.zone"; +}; + +// 88.92.45.0/24 +zone "45.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/45.92.88.in-addr.arpa.zone"; +}; + +// 88.92.46.0/24 +zone "46.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/46.92.88.in-addr.arpa.zone"; +}; + +// 88.92.47.0/24 +zone "47.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/47.92.88.in-addr.arpa.zone"; +}; + +// 88.92.48.0/24 +zone "48.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/48.92.88.in-addr.arpa.zone"; +}; + +// 88.92.49.0/24 +zone "49.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/49.92.88.in-addr.arpa.zone"; +}; + +// 88.92.50.0/24 +zone "50.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/50.92.88.in-addr.arpa.zone"; +}; + +// 88.92.51.0/24 +zone "51.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/51.92.88.in-addr.arpa.zone"; +}; + +// 88.92.52.0/24 +zone "52.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/52.92.88.in-addr.arpa.zone"; +}; + +// 88.92.53.0/24 +zone "53.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/53.92.88.in-addr.arpa.zone"; +}; + +// 88.92.54.0/24 +zone "54.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/54.92.88.in-addr.arpa.zone"; +}; + +// 88.92.55.0/24 +zone "55.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/55.92.88.in-addr.arpa.zone"; +}; + +// 88.92.56.0/24 +zone "56.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/56.92.88.in-addr.arpa.zone"; +}; + +// 88.92.57.0/24 +zone "57.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/57.92.88.in-addr.arpa.zone"; +}; + +// 88.92.58.0/24 +zone "58.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/58.92.88.in-addr.arpa.zone"; +}; + +// 88.92.59.0/24 +zone "59.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/59.92.88.in-addr.arpa.zone"; +}; + +// 88.92.60.0/24 +zone "60.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/60.92.88.in-addr.arpa.zone"; +}; + +// 88.92.61.0/24 +zone "61.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/61.92.88.in-addr.arpa.zone"; +}; + +// 88.92.62.0/24 +zone "62.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/62.92.88.in-addr.arpa.zone"; +}; + +// 88.92.63.0/24 +zone "63.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/63.92.88.in-addr.arpa.zone"; +}; + +// 88.92.64.0/24 +zone "64.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/64.92.88.in-addr.arpa.zone"; +}; + +// 88.92.65.0/24 +zone "65.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/65.92.88.in-addr.arpa.zone"; +}; + +// 88.92.66.0/24 +zone "66.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/66.92.88.in-addr.arpa.zone"; +}; + +// 88.92.67.0/24 +zone "67.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/67.92.88.in-addr.arpa.zone"; +}; + +// 88.92.68.0/24 +zone "68.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/68.92.88.in-addr.arpa.zone"; +}; + +// 88.92.69.0/24 +zone "69.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/69.92.88.in-addr.arpa.zone"; +}; + +// 88.92.70.0/24 +zone "70.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/70.92.88.in-addr.arpa.zone"; +}; + +// 88.92.71.0/24 +zone "71.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/71.92.88.in-addr.arpa.zone"; +}; + +// 88.92.72.0/24 +zone "72.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/72.92.88.in-addr.arpa.zone"; +}; + +// 88.92.73.0/24 +zone "73.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/73.92.88.in-addr.arpa.zone"; +}; + +// 88.92.74.0/24 +zone "74.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/74.92.88.in-addr.arpa.zone"; +}; + +// 88.92.75.0/24 +zone "75.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/75.92.88.in-addr.arpa.zone"; +}; + +// 88.92.76.0/24 +zone "76.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/76.92.88.in-addr.arpa.zone"; +}; + +// 88.92.77.0/24 +zone "77.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/77.92.88.in-addr.arpa.zone"; +}; + +// 88.92.78.0/24 +zone "78.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/78.92.88.in-addr.arpa.zone"; +}; + +// 88.92.79.0/24 +zone "79.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/79.92.88.in-addr.arpa.zone"; +}; + +// 88.92.80.0/24 +zone "80.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/80.92.88.in-addr.arpa.zone"; +}; + +// 88.92.81.0/24 +zone "81.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/81.92.88.in-addr.arpa.zone"; +}; + +// 88.92.82.0/24 +zone "82.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/82.92.88.in-addr.arpa.zone"; +}; + +// 88.92.83.0/24 +zone "83.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/83.92.88.in-addr.arpa.zone"; +}; + +// 88.92.84.0/24 +zone "84.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/84.92.88.in-addr.arpa.zone"; +}; + +// 88.92.85.0/24 +zone "85.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/85.92.88.in-addr.arpa.zone"; +}; + +// 88.92.86.0/24 +zone "86.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/86.92.88.in-addr.arpa.zone"; +}; + +// 88.92.87.0/24 +zone "87.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/87.92.88.in-addr.arpa.zone"; +}; + +// 88.92.88.0/24 +zone "88.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/88.92.88.in-addr.arpa.zone"; +}; + +// 88.92.89.0/24 +zone "89.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/89.92.88.in-addr.arpa.zone"; +}; + +// 88.92.90.0/24 +zone "90.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/90.92.88.in-addr.arpa.zone"; +}; + +// 88.92.91.0/24 +zone "91.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/91.92.88.in-addr.arpa.zone"; +}; + +// 88.92.92.0/24 +zone "92.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/92.92.88.in-addr.arpa.zone"; +}; + +// 88.92.93.0/24 +zone "93.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/93.92.88.in-addr.arpa.zone"; +}; + +// 88.92.94.0/24 +zone "94.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/94.92.88.in-addr.arpa.zone"; +}; + +// 88.92.95.0/24 +zone "95.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/95.92.88.in-addr.arpa.zone"; +}; + +// 88.92.96.0/24 +zone "96.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/96.92.88.in-addr.arpa.zone"; +}; + +// 88.92.97.0/24 +zone "97.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/97.92.88.in-addr.arpa.zone"; +}; + +// 88.92.98.0/24 +zone "98.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/98.92.88.in-addr.arpa.zone"; +}; + +// 88.92.99.0/24 +zone "99.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/99.92.88.in-addr.arpa.zone"; +}; + +// 88.92.100.0/24 +zone "100.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/100.92.88.in-addr.arpa.zone"; +}; + +// 88.92.101.0/24 +zone "101.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/101.92.88.in-addr.arpa.zone"; +}; + +// 88.92.102.0/24 +zone "102.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/102.92.88.in-addr.arpa.zone"; +}; + +// 88.92.103.0/24 +zone "103.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/103.92.88.in-addr.arpa.zone"; +}; + +// 88.92.104.0/24 +zone "104.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/104.92.88.in-addr.arpa.zone"; +}; + +// 88.92.105.0/24 +zone "105.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/105.92.88.in-addr.arpa.zone"; +}; + +// 88.92.106.0/24 +zone "106.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/106.92.88.in-addr.arpa.zone"; +}; + +// 88.92.107.0/24 +zone "107.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/107.92.88.in-addr.arpa.zone"; +}; + +// 88.92.108.0/24 +zone "108.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/108.92.88.in-addr.arpa.zone"; +}; + +// 88.92.109.0/24 +zone "109.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/109.92.88.in-addr.arpa.zone"; +}; + +// 88.92.110.0/24 +zone "110.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/110.92.88.in-addr.arpa.zone"; +}; + +// 88.92.111.0/24 +zone "111.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/111.92.88.in-addr.arpa.zone"; +}; + +// 88.92.112.0/24 +zone "112.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/112.92.88.in-addr.arpa.zone"; +}; + +// 88.92.113.0/24 +zone "113.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/113.92.88.in-addr.arpa.zone"; +}; + +// 88.92.114.0/24 +zone "114.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/114.92.88.in-addr.arpa.zone"; +}; + +// 88.92.115.0/24 +zone "115.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/115.92.88.in-addr.arpa.zone"; +}; + +// 88.92.116.0/24 +zone "116.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/116.92.88.in-addr.arpa.zone"; +}; + +// 88.92.117.0/24 +zone "117.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/117.92.88.in-addr.arpa.zone"; +}; + +// 88.92.118.0/24 +zone "118.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/118.92.88.in-addr.arpa.zone"; +}; + +// 88.92.119.0/24 +zone "119.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/119.92.88.in-addr.arpa.zone"; +}; + +// 88.92.120.0/24 +zone "120.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/120.92.88.in-addr.arpa.zone"; +}; + +// 88.92.121.0/24 +zone "121.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/121.92.88.in-addr.arpa.zone"; +}; + +// 88.92.122.0/24 +zone "122.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/122.92.88.in-addr.arpa.zone"; +}; + +// 88.92.123.0/24 +zone "123.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/123.92.88.in-addr.arpa.zone"; +}; + +// 88.92.124.0/24 +zone "124.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/124.92.88.in-addr.arpa.zone"; +}; + +// 88.92.125.0/24 +zone "125.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/125.92.88.in-addr.arpa.zone"; +}; + +// 88.92.126.0/24 +zone "126.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/126.92.88.in-addr.arpa.zone"; +}; + +// 88.92.127.0/24 +zone "127.92.88.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/127.92.88.in-addr.arpa.zone"; +}; + +// 185.110.148.0/24 +zone "148.110.185.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/148.110.185.in-addr.arpa.zone"; +}; + +// 185.110.149.0/24 +zone "149.110.185.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/149.110.185.in-addr.arpa.zone"; +}; + +// 185.110.150.0/24 +zone "150.110.185.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/150.110.185.in-addr.arpa.zone"; +}; + +// 185.110.151.0/24 +zone "151.110.185.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { ns-xfr; ext-xfr; }; + file "reverse/151.110.185.in-addr.arpa.zone"; +}; + diff --git a/examples/tg16/dns/master/named.rndc-stats b/examples/tg16/dns/master/named.rndc-stats new file mode 100644 index 0000000..4267ab1 --- /dev/null +++ b/examples/tg16/dns/master/named.rndc-stats @@ -0,0 +1,144 @@ ++++ Statistics Dump +++ (1459075501) +++ Incoming Requests ++ + 77937908 QUERY + 1113362 UPDATE +++ Incoming Queries ++ + 54702588 A + 79660 NS + 275 CNAME + 147201 SOA + 3342226 PTR + 263 MX + 121555 TXT + 18258507 AAAA + 1111552 SRV + 162 NAPTR + 802 A6 + 458 DS + 448 DNSKEY + 1 SPF + 57800 IXFR + 39269 ANY + 75141 Others +++ Outgoing Queries ++ +[View: default] + 8006697 A + 38680 NS + 265 CNAME + 4138 SOA + 833291 PTR + 169 MX + 47342 TXT + 2176948 AAAA + 40378 SRV + 42 NAPTR + 2 DS + 1 DNSKEY + 1 SPF + 1863 ANY + 2010 Others +[View: _bind] +++ Name Server Statistics ++ + 66754784 IPv4 requests received + 12296489 IPv6 requests received + 1837622 requests with EDNS(0) received + 1112010 requests with TSIG received + 76579 TCP requests received + 426 auth queries rejected + 3209095 recursive queries rejected + 15797 update requests rejected + 78686956 responses sent + 24167 truncated responses sent + 1837579 responses with EDNS(0) sent + 1112010 responses with TSIG sent + 65327152 queries resulted in successful answer + 12741294 queries resulted in authoritative answer + 61472984 queries resulted in non authoritative answer + 551 queries resulted in referral answer + 4200038 queries resulted in nxrrset + 149792 queries resulted in SERVFAIL + 4686537 queries resulted in NXDOMAIN + 8325033 queries caused recursion + 302525 duplicate queries received + 3992 queries dropped + 3209521 other query failures + 57800 requested transfers completed + 666138 updates completed + 431427 updates failed + 393042 updates rejected due to prerequisite failure + 2 responses dropped for rate limits +++ Zone Maintenance Statistics ++ + 64165 IPv4 notifies sent + 64165 IPv6 notifies sent +++ Resolver Statistics ++ +[Common] + 27 mismatch responses received +[View: default] + 9768682 IPv4 queries sent + 1383145 IPv6 queries sent + 9541352 IPv4 responses received + 1353472 IPv6 responses received + 316937 NXDOMAIN received + 42389 SERVFAIL received + 2404 FORMERR received + 262513 other errors received + 4612 EDNS(0) query failures + 11063 truncated responses received + 10648 lame delegations received + 685118 query retries + 261444 query timeouts + 312925 IPv4 NS address fetches + 301586 IPv6 NS address fetches + 6118 IPv4 NS address fetch failed + 233646 IPv6 NS address fetch failed + 2450534 queries with RTT < 10ms + 4729567 queries with RTT 10-100ms + 3696215 queries with RTT 100-500ms + 6941 queries with RTT 500-800ms + 94 queries with RTT 800-1600ms + 27 queries with RTT > 1600ms +[View: _bind] +++ Cache DB RRsets ++ +[View: default] + 50345 A + 146641 NS + 12048 CNAME + 3 SOA + 81483 PTR + 3 MX + 328 TXT + 6287 AAAA + 14 SRV + 2 NAPTR + 1299 DS + 25955 RRSIG + 22671 NSEC + 1 DNSKEY + 14 !A + 1 !MX + 533 !AAAA + 37220 NXDOMAIN +[View: _bind (Cache: _bind)] +++ Socket I/O Statistics ++ + 9823665 UDP/IPv4 sockets opened + 1417260 UDP/IPv6 sockets opened + 5931 TCP/IPv4 sockets opened + 5137 TCP/IPv6 sockets opened + 9823649 UDP/IPv4 sockets closed + 1417252 UDP/IPv6 sockets closed + 23798 TCP/IPv4 sockets closed + 64961 TCP/IPv6 sockets closed + 2068 UDP/IPv4 socket bind failures + 90 UDP/IPv6 socket bind failures + 20 UDP/IPv6 socket connect failures + 9762754 UDP/IPv4 connections established + 1378010 UDP/IPv6 connections established + 5549 TCP/IPv4 connections established + 5084 TCP/IPv6 connections established + 17871 TCP/IPv4 connections accepted + 59826 TCP/IPv6 connections accepted + 10626 UDP/IPv4 recv errors + 1225 UDP/IPv6 recv errors + 14 TCP/IPv4 recv errors +++ Per Zone Query Statistics ++ +--- Statistics Dump --- (1459075501)
\ No newline at end of file diff --git a/examples/tg16/dns/master/tg16.gathering.org.zone b/examples/tg16/dns/master/tg16.gathering.org.zone new file mode 100644 index 0000000..98553f0 --- /dev/null +++ b/examples/tg16/dns/master/tg16.gathering.org.zone @@ -0,0 +1,170 @@ +$TTL 3600 +@ IN SOA r2-d2.tg16.gathering.org. abuse.gathering.org. ( + 2016032501; serial + 3600 ; refresh + 1800 ; retry + 608400 ; expire + 3600 ) ; minimum and default TTL + + IN NS r2-d2.tg16.gathering.org. + IN NS c-3po.tg16.gathering.org. + +r2-d2 IN A 185.110.149.2 +r2-d2 IN AAAA 2a06:5841:149a::2 +c-3po IN A 185.110.148.2 +c-3po IN AAAA 2a06:5841:1337::2 +anakin IN A 185.110.148.3 +anakin IN AAAA 2a06:5841:1337::3 +padme IN A 185.110.148.4 +padme IN AAAA 2a06:5841:1337::4 +luke IN A 185.110.148.5 +luke IN AAAA 2a06:5841:1337::5 +leia IN A 185.110.148.6 +leia IN AAAA 2a06:5841:1337::6 +han IN A 185.110.148.7 +han IN AAAA 2a06:5841:1337::7 +rey IN A 185.110.148.8 +rey IN AAAA 2a06:5841:1337::8 +finn IN A 185.110.148.9 +finn IN AAAA 2a06:5841:1337::9 +bb-8 IN A 185.110.148.10 +bb-8 IN AAAA 2a06:5841:1337::10 +yoda IN A 185.110.148.11 +yoda IN AAAA 2a06:5841:1337::11 +obi-wan IN A 185.110.148.12 +obi-wan IN AAAA 2a06:5841:1337::12 +chewbacca IN A 185.110.148.13 +chewbacca IN AAAA 2a06:5841:1337::13 +palpatine IN A 185.110.149.66 +palpatine IN AAAA 2a06:5841:149b::66 +grievous IN A 185.110.149.67 +grievous IN AAAA 2a06:5841:149b::67 +kylo IN A 185.110.149.68 +kylo IN AAAA 2a06:5841:149b::68 +dooku IN A 185.110.149.69 +dooku IN AAAA 2a06:5841:149b::69 +cubemap IN A 185.110.148.8 +cubemap IN AAAA 2a06:5841:1337::8 +cubemap IN A 185.110.148.9 +cubemap IN AAAA 2a06:5841:1337::9 +fortiwlc-tg01 IN A 185.110.148.14 +fortiwlc-tg01 IN AAAA 2a06:5841:1337::14 +fortiwlc-tg02 IN A 185.110.148.15 +fortiwlc-tg02 IN AAAA 2a06:5841:1337::15 +fortimgmt-tg01 IN A 185.110.148.16 +fortimgmt-tg01 IN AAAA 2a06:5841:1337::16 +spock IN A 185.110.148.17 +spock IN AAAA 2a06:5841:1337::17 +funnyfart IN A 185.110.148.18 +funnyfart IN AAAA 2a06:5841:1337::18 +kvm-rack2 IN A 185.110.148.19 +kvm-rack2 IN AAAA 2a06:5841:1337::19 +kvm-rack3 IN A 185.110.148.20 +kvm-rack3 IN AAAA 2a06:5841:1337::20 +mitm IN A 185.110.148.21 +mitm IN AAAA 2a06:5841:1337::21 +kirk IN A 185.110.148.22 +kirk IN AAAA 2a06:5841:1337::22 +cage IN A 185.110.148.23 +cage IN AAAA 2a06:5841:1337::23 +luring IN A 185.110.148.24 +luring IN AAAA 2a06:5841:1337::24 +lyn IN A 185.110.148.25 +lyn IN AAAA 2a06:5841:1337::25 +rakker IN A 185.110.148.26 +rakker IN AAAA 2a06:5841:1337::26 +wc IN A 185.110.148.27 +wc IN AAAA 2a06:5841:1337::27 +survey IN A 185.110.149.120 +;survey IN AAAA 2a06:5841:149b::120 + +; Generated by make-all-config.sh on the bootstrapping/nms server. +; Will not be overwritten unless it is missing ;) + + +; CNAMEs +ns1 IN CNAME r2-d2.tg16.gathering.org. +ns2 IN CNAME c-3po.tg16.gathering.org. +smtp IN CNAME c-3po.tg16.gathering.org. +pxe IN CNAME c-3po.tg16.gathering.org. +stream IN CNAME yoda.tg16.gathering.org. +streams IN CNAME stream.tg16.gathering.org. +webcam IN CNAME yoda.tg16.gathering.org. +webcams IN CNAME webcam.tg16.gathering.org. +nms IN CNAME yoda.tg16.gathering.org. +nms-public IN CNAME yoda.tg16.gathering.org. +nms-api IN CNAME yoda.tg16.gathering.org. +nms4 IN A 185.110.148.11 +nms6 IN AAAA 2a06:5841:1337::11 +stats IN CNAME yoda.tg16.gathering.org. +munin IN CNAME yoda.tg16.gathering.org. + +; Event:Game +; zize @ slack +minecraft IN CNAME dooku.tg16.gathering.org. +mc IN CNAME minecraft.tg16.gathering.org. + + + + + + + + + + + + + + + + + + + +; loopbacks +telegw IN A 185.110.148.64 +telegw IN AAAA 2a06:5841:148b::64 +nocgw IN A 185.110.148.65 +nocgw IN AAAA 2a06:5841:148b::65 +coregw IN A 185.110.148.66 +coregw IN AAAA 2a06:5841:148b::66 +standgw IN A 185.110.148.67 +standgw IN AAAA 2a06:5841:148b::67 +southgw IN A 185.110.148.70 +southgw IN AAAA 2a06:5841:148b::70 +swinggw IN A 185.110.148.71 +swinggw IN AAAA 2a06:5841:148b::71 +loggw IN A 185.110.148.72 +loggw IN AAAA 2a06:5841:148b::72 +northgw IN A 185.110.148.73 +northgw IN AAAA 2a06:5841:148b::73 +creativiagw IN A 185.110.148.74 +creativiagw IN AAAA 2a06:5841:148b::74 +stagegw IN A 185.110.148.75 +stagegw IN AAAA 2a06:5841:148b::75 +crewgw IN A 185.110.148.76 +crewgw IN AAAA 2a06:5841:148b::76 +audgw IN A 185.110.148.77 +audgw IN AAAA 2a06:5841:148b::77 +gamestagegw IN A 185.110.148.78 +gamestagegw IN AAAA 2a06:5841:148b::78 +distro0 IN A 185.110.148.100 +distro0 IN AAAA 2a06:5841:148b::100 +distro1 IN A 185.110.148.101 +distro1 IN AAAA 2a06:5841:148b::101 +distro2 IN A 185.110.148.102 +distro2 IN AAAA 2a06:5841:148b::102 +distro3 IN A 185.110.148.103 +distro3 IN AAAA 2a06:5841:148b::103 +distro4 IN A 185.110.148.104 +distro4 IN AAAA 2a06:5841:148b::104 +distro5 IN A 185.110.148.105 +distro5 IN AAAA 2a06:5841:148b::105 +distro6 IN A 185.110.148.106 +distro6 IN AAAA 2a06:5841:148b::106 +distro7 IN A 185.110.148.107 +distro7 IN AAAA 2a06:5841:148b::107 +hack IN A 88.92.95.14 +eple IN A 185.110.148.28 +eple IN AAAA 2a06:5841:1337::28 diff --git a/examples/tg16/dns/slave/conf-slave/ap-creativia.conf b/examples/tg16/dns/slave/conf-slave/ap-creativia.conf new file mode 100644 index 0000000..3251663 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/ap-creativia.conf @@ -0,0 +1,7 @@ +zone "ap-creativia.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/ap-creativia.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/ap-distro0.conf b/examples/tg16/dns/slave/conf-slave/ap-distro0.conf new file mode 100644 index 0000000..8b439ab --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/ap-distro0.conf @@ -0,0 +1,7 @@ +zone "ap-distro0.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/ap-distro0.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/ap-distro1.conf b/examples/tg16/dns/slave/conf-slave/ap-distro1.conf new file mode 100644 index 0000000..b55d8df --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/ap-distro1.conf @@ -0,0 +1,7 @@ +zone "ap-distro1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/ap-distro1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/ap-distro2.conf b/examples/tg16/dns/slave/conf-slave/ap-distro2.conf new file mode 100644 index 0000000..f664917 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/ap-distro2.conf @@ -0,0 +1,7 @@ +zone "ap-distro2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/ap-distro2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/ap-distro3.conf b/examples/tg16/dns/slave/conf-slave/ap-distro3.conf new file mode 100644 index 0000000..55c5caa --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/ap-distro3.conf @@ -0,0 +1,7 @@ +zone "ap-distro3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/ap-distro3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/ap-distro4.conf b/examples/tg16/dns/slave/conf-slave/ap-distro4.conf new file mode 100644 index 0000000..8b54d06 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/ap-distro4.conf @@ -0,0 +1,7 @@ +zone "ap-distro4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/ap-distro4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/ap-distro5.conf b/examples/tg16/dns/slave/conf-slave/ap-distro5.conf new file mode 100644 index 0000000..3a2adf9 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/ap-distro5.conf @@ -0,0 +1,7 @@ +zone "ap-distro5.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/ap-distro5.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/ap-distro6.conf b/examples/tg16/dns/slave/conf-slave/ap-distro6.conf new file mode 100644 index 0000000..7fb0a1f --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/ap-distro6.conf @@ -0,0 +1,7 @@ +zone "ap-distro6.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/ap-distro6.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/ap-distro7.conf b/examples/tg16/dns/slave/conf-slave/ap-distro7.conf new file mode 100644 index 0000000..3eaa1fb --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/ap-distro7.conf @@ -0,0 +1,7 @@ +zone "ap-distro7.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/ap-distro7.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/ap-stand.conf b/examples/tg16/dns/slave/conf-slave/ap-stand.conf new file mode 100644 index 0000000..1d29354 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/ap-stand.conf @@ -0,0 +1,7 @@ +zone "ap-stand.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/ap-stand.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/auditorium.conf b/examples/tg16/dns/slave/conf-slave/auditorium.conf new file mode 100644 index 0000000..b51347b --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/auditorium.conf @@ -0,0 +1,7 @@ +zone "auditorium.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/auditorium.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/creativia-village.conf b/examples/tg16/dns/slave/conf-slave/creativia-village.conf new file mode 100644 index 0000000..06c7a3c --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/creativia-village.conf @@ -0,0 +1,7 @@ +zone "creativia-village.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/creativia-village.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/creativia.conf b/examples/tg16/dns/slave/conf-slave/creativia.conf new file mode 100644 index 0000000..5253217 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/creativia.conf @@ -0,0 +1,7 @@ +zone "creativia.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/creativia.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/creativia1.conf b/examples/tg16/dns/slave/conf-slave/creativia1.conf new file mode 100644 index 0000000..defc41a --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/creativia1.conf @@ -0,0 +1,7 @@ +zone "creativia1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/creativia1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/creativia2.conf b/examples/tg16/dns/slave/conf-slave/creativia2.conf new file mode 100644 index 0000000..f532276 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/creativia2.conf @@ -0,0 +1,7 @@ +zone "creativia2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/creativia2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/creativia3.conf b/examples/tg16/dns/slave/conf-slave/creativia3.conf new file mode 100644 index 0000000..4a9ba42 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/creativia3.conf @@ -0,0 +1,7 @@ +zone "creativia3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/creativia3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/creativia4.conf b/examples/tg16/dns/slave/conf-slave/creativia4.conf new file mode 100644 index 0000000..562bd88 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/creativia4.conf @@ -0,0 +1,7 @@ +zone "creativia4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/creativia4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/creativia5.conf b/examples/tg16/dns/slave/conf-slave/creativia5.conf new file mode 100644 index 0000000..3babcb9 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/creativia5.conf @@ -0,0 +1,7 @@ +zone "creativia5.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/creativia5.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/creativia6.conf b/examples/tg16/dns/slave/conf-slave/creativia6.conf new file mode 100644 index 0000000..32452ec --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/creativia6.conf @@ -0,0 +1,7 @@ +zone "creativia6.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/creativia6.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/creativia7.conf b/examples/tg16/dns/slave/conf-slave/creativia7.conf new file mode 100644 index 0000000..4e3bec1 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/creativia7.conf @@ -0,0 +1,7 @@ +zone "creativia7.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/creativia7.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/creativiasw1.conf b/examples/tg16/dns/slave/conf-slave/creativiasw1.conf new file mode 100644 index 0000000..739d875 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/creativiasw1.conf @@ -0,0 +1,7 @@ +zone "creativiasw1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/creativiasw1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/crew.conf b/examples/tg16/dns/slave/conf-slave/crew.conf new file mode 100644 index 0000000..618af5b --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/crew.conf @@ -0,0 +1,7 @@ +zone "crew.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/crew.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/deltaker-srv.conf b/examples/tg16/dns/slave/conf-slave/deltaker-srv.conf new file mode 100644 index 0000000..82bc33e --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/deltaker-srv.conf @@ -0,0 +1,7 @@ +zone "deltaker-srv.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/deltaker-srv.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e1-3.conf b/examples/tg16/dns/slave/conf-slave/e1-3.conf new file mode 100644 index 0000000..702b70d --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e1-3.conf @@ -0,0 +1,7 @@ +zone "e1-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e1-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e1-4.conf b/examples/tg16/dns/slave/conf-slave/e1-4.conf new file mode 100644 index 0000000..f121067 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e1-4.conf @@ -0,0 +1,7 @@ +zone "e1-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e1-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e11-1.conf b/examples/tg16/dns/slave/conf-slave/e11-1.conf new file mode 100644 index 0000000..9b00896 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e11-1.conf @@ -0,0 +1,7 @@ +zone "e11-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e11-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e11-2.conf b/examples/tg16/dns/slave/conf-slave/e11-2.conf new file mode 100644 index 0000000..cb96dad --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e11-2.conf @@ -0,0 +1,7 @@ +zone "e11-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e11-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e11-3.conf b/examples/tg16/dns/slave/conf-slave/e11-3.conf new file mode 100644 index 0000000..ab6c6c2 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e11-3.conf @@ -0,0 +1,7 @@ +zone "e11-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e11-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e11-4.conf b/examples/tg16/dns/slave/conf-slave/e11-4.conf new file mode 100644 index 0000000..2af27b2 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e11-4.conf @@ -0,0 +1,7 @@ +zone "e11-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e11-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e13-1.conf b/examples/tg16/dns/slave/conf-slave/e13-1.conf new file mode 100644 index 0000000..da1323d --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e13-1.conf @@ -0,0 +1,7 @@ +zone "e13-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e13-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e13-2.conf b/examples/tg16/dns/slave/conf-slave/e13-2.conf new file mode 100644 index 0000000..048108c --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e13-2.conf @@ -0,0 +1,7 @@ +zone "e13-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e13-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e13-3.conf b/examples/tg16/dns/slave/conf-slave/e13-3.conf new file mode 100644 index 0000000..d64557d --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e13-3.conf @@ -0,0 +1,7 @@ +zone "e13-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e13-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e13-4.conf b/examples/tg16/dns/slave/conf-slave/e13-4.conf new file mode 100644 index 0000000..02e19e3 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e13-4.conf @@ -0,0 +1,7 @@ +zone "e13-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e13-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e15-1.conf b/examples/tg16/dns/slave/conf-slave/e15-1.conf new file mode 100644 index 0000000..b6f1217 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e15-1.conf @@ -0,0 +1,7 @@ +zone "e15-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e15-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e15-2.conf b/examples/tg16/dns/slave/conf-slave/e15-2.conf new file mode 100644 index 0000000..484fe97 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e15-2.conf @@ -0,0 +1,7 @@ +zone "e15-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e15-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e15-3.conf b/examples/tg16/dns/slave/conf-slave/e15-3.conf new file mode 100644 index 0000000..86a4410 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e15-3.conf @@ -0,0 +1,7 @@ +zone "e15-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e15-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e15-4.conf b/examples/tg16/dns/slave/conf-slave/e15-4.conf new file mode 100644 index 0000000..7040cf1 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e15-4.conf @@ -0,0 +1,7 @@ +zone "e15-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e15-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e17-1.conf b/examples/tg16/dns/slave/conf-slave/e17-1.conf new file mode 100644 index 0000000..f6751b3 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e17-1.conf @@ -0,0 +1,7 @@ +zone "e17-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e17-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e17-2.conf b/examples/tg16/dns/slave/conf-slave/e17-2.conf new file mode 100644 index 0000000..7e74ef9 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e17-2.conf @@ -0,0 +1,7 @@ +zone "e17-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e17-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e17-3.conf b/examples/tg16/dns/slave/conf-slave/e17-3.conf new file mode 100644 index 0000000..a9752f2 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e17-3.conf @@ -0,0 +1,7 @@ +zone "e17-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e17-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e17-4.conf b/examples/tg16/dns/slave/conf-slave/e17-4.conf new file mode 100644 index 0000000..feeb5d2 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e17-4.conf @@ -0,0 +1,7 @@ +zone "e17-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e17-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e19-1.conf b/examples/tg16/dns/slave/conf-slave/e19-1.conf new file mode 100644 index 0000000..080881e --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e19-1.conf @@ -0,0 +1,7 @@ +zone "e19-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e19-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e19-2.conf b/examples/tg16/dns/slave/conf-slave/e19-2.conf new file mode 100644 index 0000000..25c812b --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e19-2.conf @@ -0,0 +1,7 @@ +zone "e19-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e19-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e19-3.conf b/examples/tg16/dns/slave/conf-slave/e19-3.conf new file mode 100644 index 0000000..8219197 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e19-3.conf @@ -0,0 +1,7 @@ +zone "e19-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e19-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e19-4.conf b/examples/tg16/dns/slave/conf-slave/e19-4.conf new file mode 100644 index 0000000..b396a14 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e19-4.conf @@ -0,0 +1,7 @@ +zone "e19-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e19-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e21-1.conf b/examples/tg16/dns/slave/conf-slave/e21-1.conf new file mode 100644 index 0000000..196209f --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e21-1.conf @@ -0,0 +1,7 @@ +zone "e21-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e21-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e21-2.conf b/examples/tg16/dns/slave/conf-slave/e21-2.conf new file mode 100644 index 0000000..cf99859 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e21-2.conf @@ -0,0 +1,7 @@ +zone "e21-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e21-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e21-3.conf b/examples/tg16/dns/slave/conf-slave/e21-3.conf new file mode 100644 index 0000000..30bfb8f --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e21-3.conf @@ -0,0 +1,7 @@ +zone "e21-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e21-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e21-4.conf b/examples/tg16/dns/slave/conf-slave/e21-4.conf new file mode 100644 index 0000000..67f323e --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e21-4.conf @@ -0,0 +1,7 @@ +zone "e21-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e21-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e23-1.conf b/examples/tg16/dns/slave/conf-slave/e23-1.conf new file mode 100644 index 0000000..8349389 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e23-1.conf @@ -0,0 +1,7 @@ +zone "e23-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e23-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e23-2.conf b/examples/tg16/dns/slave/conf-slave/e23-2.conf new file mode 100644 index 0000000..89ce3f8 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e23-2.conf @@ -0,0 +1,7 @@ +zone "e23-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e23-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e23-3.conf b/examples/tg16/dns/slave/conf-slave/e23-3.conf new file mode 100644 index 0000000..e7bb3d9 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e23-3.conf @@ -0,0 +1,7 @@ +zone "e23-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e23-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e23-4.conf b/examples/tg16/dns/slave/conf-slave/e23-4.conf new file mode 100644 index 0000000..a8b6313 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e23-4.conf @@ -0,0 +1,7 @@ +zone "e23-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e23-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e25-1.conf b/examples/tg16/dns/slave/conf-slave/e25-1.conf new file mode 100644 index 0000000..6cd58a4 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e25-1.conf @@ -0,0 +1,7 @@ +zone "e25-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e25-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e25-2.conf b/examples/tg16/dns/slave/conf-slave/e25-2.conf new file mode 100644 index 0000000..1c53529 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e25-2.conf @@ -0,0 +1,7 @@ +zone "e25-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e25-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e27-1.conf b/examples/tg16/dns/slave/conf-slave/e27-1.conf new file mode 100644 index 0000000..06e7f6e --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e27-1.conf @@ -0,0 +1,7 @@ +zone "e27-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e27-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e27-2.conf b/examples/tg16/dns/slave/conf-slave/e27-2.conf new file mode 100644 index 0000000..de98ca6 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e27-2.conf @@ -0,0 +1,7 @@ +zone "e27-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e27-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e29-1.conf b/examples/tg16/dns/slave/conf-slave/e29-1.conf new file mode 100644 index 0000000..dca329c --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e29-1.conf @@ -0,0 +1,7 @@ +zone "e29-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e29-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e29-2.conf b/examples/tg16/dns/slave/conf-slave/e29-2.conf new file mode 100644 index 0000000..2f77a67 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e29-2.conf @@ -0,0 +1,7 @@ +zone "e29-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e29-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e3-3.conf b/examples/tg16/dns/slave/conf-slave/e3-3.conf new file mode 100644 index 0000000..edbc3a5 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e3-3.conf @@ -0,0 +1,7 @@ +zone "e3-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e3-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e3-4.conf b/examples/tg16/dns/slave/conf-slave/e3-4.conf new file mode 100644 index 0000000..ecba404 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e3-4.conf @@ -0,0 +1,7 @@ +zone "e3-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e3-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e31-1.conf b/examples/tg16/dns/slave/conf-slave/e31-1.conf new file mode 100644 index 0000000..fb97af7 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e31-1.conf @@ -0,0 +1,7 @@ +zone "e31-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e31-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e31-2.conf b/examples/tg16/dns/slave/conf-slave/e31-2.conf new file mode 100644 index 0000000..3e745b4 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e31-2.conf @@ -0,0 +1,7 @@ +zone "e31-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e31-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e33-1.conf b/examples/tg16/dns/slave/conf-slave/e33-1.conf new file mode 100644 index 0000000..9085d49 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e33-1.conf @@ -0,0 +1,7 @@ +zone "e33-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e33-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e33-2.conf b/examples/tg16/dns/slave/conf-slave/e33-2.conf new file mode 100644 index 0000000..9e74c5b --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e33-2.conf @@ -0,0 +1,7 @@ +zone "e33-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e33-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e35-1.conf b/examples/tg16/dns/slave/conf-slave/e35-1.conf new file mode 100644 index 0000000..542e199 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e35-1.conf @@ -0,0 +1,7 @@ +zone "e35-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e35-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e35-2.conf b/examples/tg16/dns/slave/conf-slave/e35-2.conf new file mode 100644 index 0000000..68d890c --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e35-2.conf @@ -0,0 +1,7 @@ +zone "e35-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e35-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e37-1.conf b/examples/tg16/dns/slave/conf-slave/e37-1.conf new file mode 100644 index 0000000..8371c17 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e37-1.conf @@ -0,0 +1,7 @@ +zone "e37-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e37-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e37-2.conf b/examples/tg16/dns/slave/conf-slave/e37-2.conf new file mode 100644 index 0000000..c9ea2eb --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e37-2.conf @@ -0,0 +1,7 @@ +zone "e37-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e37-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e39-1.conf b/examples/tg16/dns/slave/conf-slave/e39-1.conf new file mode 100644 index 0000000..ef978f7 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e39-1.conf @@ -0,0 +1,7 @@ +zone "e39-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e39-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e39-2.conf b/examples/tg16/dns/slave/conf-slave/e39-2.conf new file mode 100644 index 0000000..6598526 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e39-2.conf @@ -0,0 +1,7 @@ +zone "e39-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e39-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e41-1.conf b/examples/tg16/dns/slave/conf-slave/e41-1.conf new file mode 100644 index 0000000..08108e2 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e41-1.conf @@ -0,0 +1,7 @@ +zone "e41-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e41-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e41-2.conf b/examples/tg16/dns/slave/conf-slave/e41-2.conf new file mode 100644 index 0000000..13a2935 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e41-2.conf @@ -0,0 +1,7 @@ +zone "e41-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e41-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e41-3.conf b/examples/tg16/dns/slave/conf-slave/e41-3.conf new file mode 100644 index 0000000..c53aac3 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e41-3.conf @@ -0,0 +1,7 @@ +zone "e41-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e41-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e41-4.conf b/examples/tg16/dns/slave/conf-slave/e41-4.conf new file mode 100644 index 0000000..21fe492 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e41-4.conf @@ -0,0 +1,7 @@ +zone "e41-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e41-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e43-1.conf b/examples/tg16/dns/slave/conf-slave/e43-1.conf new file mode 100644 index 0000000..9144093 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e43-1.conf @@ -0,0 +1,7 @@ +zone "e43-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e43-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e43-2.conf b/examples/tg16/dns/slave/conf-slave/e43-2.conf new file mode 100644 index 0000000..a008d9e --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e43-2.conf @@ -0,0 +1,7 @@ +zone "e43-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e43-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e43-3.conf b/examples/tg16/dns/slave/conf-slave/e43-3.conf new file mode 100644 index 0000000..0d67ecc --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e43-3.conf @@ -0,0 +1,7 @@ +zone "e43-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e43-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e43-4.conf b/examples/tg16/dns/slave/conf-slave/e43-4.conf new file mode 100644 index 0000000..872d5de --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e43-4.conf @@ -0,0 +1,7 @@ +zone "e43-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e43-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e45-1.conf b/examples/tg16/dns/slave/conf-slave/e45-1.conf new file mode 100644 index 0000000..626b7af --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e45-1.conf @@ -0,0 +1,7 @@ +zone "e45-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e45-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e45-2.conf b/examples/tg16/dns/slave/conf-slave/e45-2.conf new file mode 100644 index 0000000..d909d88 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e45-2.conf @@ -0,0 +1,7 @@ +zone "e45-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e45-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e45-3.conf b/examples/tg16/dns/slave/conf-slave/e45-3.conf new file mode 100644 index 0000000..e803514 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e45-3.conf @@ -0,0 +1,7 @@ +zone "e45-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e45-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e45-4.conf b/examples/tg16/dns/slave/conf-slave/e45-4.conf new file mode 100644 index 0000000..c1e0d77 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e45-4.conf @@ -0,0 +1,7 @@ +zone "e45-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e45-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e47-1.conf b/examples/tg16/dns/slave/conf-slave/e47-1.conf new file mode 100644 index 0000000..73b175a --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e47-1.conf @@ -0,0 +1,7 @@ +zone "e47-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e47-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e47-2.conf b/examples/tg16/dns/slave/conf-slave/e47-2.conf new file mode 100644 index 0000000..fd72665 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e47-2.conf @@ -0,0 +1,7 @@ +zone "e47-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e47-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e47-3.conf b/examples/tg16/dns/slave/conf-slave/e47-3.conf new file mode 100644 index 0000000..040ead1 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e47-3.conf @@ -0,0 +1,7 @@ +zone "e47-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e47-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e47-4.conf b/examples/tg16/dns/slave/conf-slave/e47-4.conf new file mode 100644 index 0000000..cafa2c6 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e47-4.conf @@ -0,0 +1,7 @@ +zone "e47-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e47-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e49-1.conf b/examples/tg16/dns/slave/conf-slave/e49-1.conf new file mode 100644 index 0000000..20a6967 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e49-1.conf @@ -0,0 +1,7 @@ +zone "e49-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e49-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e49-2.conf b/examples/tg16/dns/slave/conf-slave/e49-2.conf new file mode 100644 index 0000000..70ea999 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e49-2.conf @@ -0,0 +1,7 @@ +zone "e49-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e49-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e49-3.conf b/examples/tg16/dns/slave/conf-slave/e49-3.conf new file mode 100644 index 0000000..360453c --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e49-3.conf @@ -0,0 +1,7 @@ +zone "e49-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e49-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e49-4.conf b/examples/tg16/dns/slave/conf-slave/e49-4.conf new file mode 100644 index 0000000..7b66752 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e49-4.conf @@ -0,0 +1,7 @@ +zone "e49-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e49-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e5-2.conf b/examples/tg16/dns/slave/conf-slave/e5-2.conf new file mode 100644 index 0000000..2866648 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e5-2.conf @@ -0,0 +1,7 @@ +zone "e5-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e5-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e5-3.conf b/examples/tg16/dns/slave/conf-slave/e5-3.conf new file mode 100644 index 0000000..cf9ac28 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e5-3.conf @@ -0,0 +1,7 @@ +zone "e5-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e5-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e5-4.conf b/examples/tg16/dns/slave/conf-slave/e5-4.conf new file mode 100644 index 0000000..239266f --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e5-4.conf @@ -0,0 +1,7 @@ +zone "e5-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e5-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e51-1.conf b/examples/tg16/dns/slave/conf-slave/e51-1.conf new file mode 100644 index 0000000..e223a89 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e51-1.conf @@ -0,0 +1,7 @@ +zone "e51-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e51-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e51-2.conf b/examples/tg16/dns/slave/conf-slave/e51-2.conf new file mode 100644 index 0000000..d885632 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e51-2.conf @@ -0,0 +1,7 @@ +zone "e51-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e51-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e51-3.conf b/examples/tg16/dns/slave/conf-slave/e51-3.conf new file mode 100644 index 0000000..4b1d8a4 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e51-3.conf @@ -0,0 +1,7 @@ +zone "e51-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e51-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e51-4.conf b/examples/tg16/dns/slave/conf-slave/e51-4.conf new file mode 100644 index 0000000..0270d80 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e51-4.conf @@ -0,0 +1,7 @@ +zone "e51-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e51-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e53-1.conf b/examples/tg16/dns/slave/conf-slave/e53-1.conf new file mode 100644 index 0000000..da0a4c4 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e53-1.conf @@ -0,0 +1,7 @@ +zone "e53-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e53-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e53-2.conf b/examples/tg16/dns/slave/conf-slave/e53-2.conf new file mode 100644 index 0000000..cb018f0 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e53-2.conf @@ -0,0 +1,7 @@ +zone "e53-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e53-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e53-3.conf b/examples/tg16/dns/slave/conf-slave/e53-3.conf new file mode 100644 index 0000000..b17ba8a --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e53-3.conf @@ -0,0 +1,7 @@ +zone "e53-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e53-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e53-4.conf b/examples/tg16/dns/slave/conf-slave/e53-4.conf new file mode 100644 index 0000000..66390a9 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e53-4.conf @@ -0,0 +1,7 @@ +zone "e53-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e53-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e55-1.conf b/examples/tg16/dns/slave/conf-slave/e55-1.conf new file mode 100644 index 0000000..e0effc0 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e55-1.conf @@ -0,0 +1,7 @@ +zone "e55-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e55-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e55-2.conf b/examples/tg16/dns/slave/conf-slave/e55-2.conf new file mode 100644 index 0000000..9c2f9e0 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e55-2.conf @@ -0,0 +1,7 @@ +zone "e55-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e55-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e55-3.conf b/examples/tg16/dns/slave/conf-slave/e55-3.conf new file mode 100644 index 0000000..3a642ca --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e55-3.conf @@ -0,0 +1,7 @@ +zone "e55-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e55-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e55-4.conf b/examples/tg16/dns/slave/conf-slave/e55-4.conf new file mode 100644 index 0000000..4997e9a --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e55-4.conf @@ -0,0 +1,7 @@ +zone "e55-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e55-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e57-1.conf b/examples/tg16/dns/slave/conf-slave/e57-1.conf new file mode 100644 index 0000000..f7a35b9 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e57-1.conf @@ -0,0 +1,7 @@ +zone "e57-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e57-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e57-2.conf b/examples/tg16/dns/slave/conf-slave/e57-2.conf new file mode 100644 index 0000000..56617c9 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e57-2.conf @@ -0,0 +1,7 @@ +zone "e57-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e57-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e57-3.conf b/examples/tg16/dns/slave/conf-slave/e57-3.conf new file mode 100644 index 0000000..61edd0e --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e57-3.conf @@ -0,0 +1,7 @@ +zone "e57-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e57-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e57-4.conf b/examples/tg16/dns/slave/conf-slave/e57-4.conf new file mode 100644 index 0000000..f2a239b --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e57-4.conf @@ -0,0 +1,7 @@ +zone "e57-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e57-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e59-1.conf b/examples/tg16/dns/slave/conf-slave/e59-1.conf new file mode 100644 index 0000000..c741ded --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e59-1.conf @@ -0,0 +1,7 @@ +zone "e59-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e59-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e59-2.conf b/examples/tg16/dns/slave/conf-slave/e59-2.conf new file mode 100644 index 0000000..f103092 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e59-2.conf @@ -0,0 +1,7 @@ +zone "e59-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e59-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e59-3.conf b/examples/tg16/dns/slave/conf-slave/e59-3.conf new file mode 100644 index 0000000..d307a6c --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e59-3.conf @@ -0,0 +1,7 @@ +zone "e59-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e59-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e59-4.conf b/examples/tg16/dns/slave/conf-slave/e59-4.conf new file mode 100644 index 0000000..39e6610 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e59-4.conf @@ -0,0 +1,7 @@ +zone "e59-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e59-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e61-1.conf b/examples/tg16/dns/slave/conf-slave/e61-1.conf new file mode 100644 index 0000000..970c7d4 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e61-1.conf @@ -0,0 +1,7 @@ +zone "e61-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e61-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e61-2.conf b/examples/tg16/dns/slave/conf-slave/e61-2.conf new file mode 100644 index 0000000..bf768ae --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e61-2.conf @@ -0,0 +1,7 @@ +zone "e61-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e61-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e61-3.conf b/examples/tg16/dns/slave/conf-slave/e61-3.conf new file mode 100644 index 0000000..d4111bd --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e61-3.conf @@ -0,0 +1,7 @@ +zone "e61-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e61-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e61-4.conf b/examples/tg16/dns/slave/conf-slave/e61-4.conf new file mode 100644 index 0000000..b9a6bb4 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e61-4.conf @@ -0,0 +1,7 @@ +zone "e61-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e61-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e63-1.conf b/examples/tg16/dns/slave/conf-slave/e63-1.conf new file mode 100644 index 0000000..cdce58e --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e63-1.conf @@ -0,0 +1,7 @@ +zone "e63-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e63-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e63-2.conf b/examples/tg16/dns/slave/conf-slave/e63-2.conf new file mode 100644 index 0000000..9615ea0 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e63-2.conf @@ -0,0 +1,7 @@ +zone "e63-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e63-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e63-3.conf b/examples/tg16/dns/slave/conf-slave/e63-3.conf new file mode 100644 index 0000000..81cc277 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e63-3.conf @@ -0,0 +1,7 @@ +zone "e63-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e63-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e63-4.conf b/examples/tg16/dns/slave/conf-slave/e63-4.conf new file mode 100644 index 0000000..98f2495 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e63-4.conf @@ -0,0 +1,7 @@ +zone "e63-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e63-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e65-1.conf b/examples/tg16/dns/slave/conf-slave/e65-1.conf new file mode 100644 index 0000000..8668998 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e65-1.conf @@ -0,0 +1,7 @@ +zone "e65-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e65-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e65-2.conf b/examples/tg16/dns/slave/conf-slave/e65-2.conf new file mode 100644 index 0000000..fe46fe1 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e65-2.conf @@ -0,0 +1,7 @@ +zone "e65-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e65-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e65-3.conf b/examples/tg16/dns/slave/conf-slave/e65-3.conf new file mode 100644 index 0000000..13c23be --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e65-3.conf @@ -0,0 +1,7 @@ +zone "e65-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e65-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e65-4.conf b/examples/tg16/dns/slave/conf-slave/e65-4.conf new file mode 100644 index 0000000..aa2f20b --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e65-4.conf @@ -0,0 +1,7 @@ +zone "e65-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e65-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e67-1.conf b/examples/tg16/dns/slave/conf-slave/e67-1.conf new file mode 100644 index 0000000..11d3244 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e67-1.conf @@ -0,0 +1,7 @@ +zone "e67-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e67-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e67-2.conf b/examples/tg16/dns/slave/conf-slave/e67-2.conf new file mode 100644 index 0000000..fa99da6 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e67-2.conf @@ -0,0 +1,7 @@ +zone "e67-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e67-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e67-3.conf b/examples/tg16/dns/slave/conf-slave/e67-3.conf new file mode 100644 index 0000000..07c2028 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e67-3.conf @@ -0,0 +1,7 @@ +zone "e67-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e67-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e67-4.conf b/examples/tg16/dns/slave/conf-slave/e67-4.conf new file mode 100644 index 0000000..3f6d462 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e67-4.conf @@ -0,0 +1,7 @@ +zone "e67-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e67-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e69-1.conf b/examples/tg16/dns/slave/conf-slave/e69-1.conf new file mode 100644 index 0000000..5b61d69 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e69-1.conf @@ -0,0 +1,7 @@ +zone "e69-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e69-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e69-2.conf b/examples/tg16/dns/slave/conf-slave/e69-2.conf new file mode 100644 index 0000000..3710313 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e69-2.conf @@ -0,0 +1,7 @@ +zone "e69-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e69-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e7-1.conf b/examples/tg16/dns/slave/conf-slave/e7-1.conf new file mode 100644 index 0000000..2bddf0f --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e7-1.conf @@ -0,0 +1,7 @@ +zone "e7-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e7-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e7-2.conf b/examples/tg16/dns/slave/conf-slave/e7-2.conf new file mode 100644 index 0000000..3ee8e04 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e7-2.conf @@ -0,0 +1,7 @@ +zone "e7-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e7-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e7-3.conf b/examples/tg16/dns/slave/conf-slave/e7-3.conf new file mode 100644 index 0000000..67f7b24 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e7-3.conf @@ -0,0 +1,7 @@ +zone "e7-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e7-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e7-4.conf b/examples/tg16/dns/slave/conf-slave/e7-4.conf new file mode 100644 index 0000000..7c3a454 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e7-4.conf @@ -0,0 +1,7 @@ +zone "e7-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e7-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e71-1.conf b/examples/tg16/dns/slave/conf-slave/e71-1.conf new file mode 100644 index 0000000..c63bbb4 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e71-1.conf @@ -0,0 +1,7 @@ +zone "e71-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e71-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e71-2.conf b/examples/tg16/dns/slave/conf-slave/e71-2.conf new file mode 100644 index 0000000..8f4f70f --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e71-2.conf @@ -0,0 +1,7 @@ +zone "e71-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e71-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e73-1.conf b/examples/tg16/dns/slave/conf-slave/e73-1.conf new file mode 100644 index 0000000..52676cf --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e73-1.conf @@ -0,0 +1,7 @@ +zone "e73-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e73-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e73-2.conf b/examples/tg16/dns/slave/conf-slave/e73-2.conf new file mode 100644 index 0000000..747aa0e --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e73-2.conf @@ -0,0 +1,7 @@ +zone "e73-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e73-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e75-1.conf b/examples/tg16/dns/slave/conf-slave/e75-1.conf new file mode 100644 index 0000000..77dd814 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e75-1.conf @@ -0,0 +1,7 @@ +zone "e75-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e75-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e75-2.conf b/examples/tg16/dns/slave/conf-slave/e75-2.conf new file mode 100644 index 0000000..ad3849d --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e75-2.conf @@ -0,0 +1,7 @@ +zone "e75-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e75-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e77-1.conf b/examples/tg16/dns/slave/conf-slave/e77-1.conf new file mode 100644 index 0000000..097a97b --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e77-1.conf @@ -0,0 +1,7 @@ +zone "e77-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e77-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e77-2.conf b/examples/tg16/dns/slave/conf-slave/e77-2.conf new file mode 100644 index 0000000..6f2c8e8 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e77-2.conf @@ -0,0 +1,7 @@ +zone "e77-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e77-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e79-1.conf b/examples/tg16/dns/slave/conf-slave/e79-1.conf new file mode 100644 index 0000000..8fb38a1 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e79-1.conf @@ -0,0 +1,7 @@ +zone "e79-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e79-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e79-2.conf b/examples/tg16/dns/slave/conf-slave/e79-2.conf new file mode 100644 index 0000000..2d8b086 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e79-2.conf @@ -0,0 +1,7 @@ +zone "e79-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e79-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e81-1.conf b/examples/tg16/dns/slave/conf-slave/e81-1.conf new file mode 100644 index 0000000..67f9652 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e81-1.conf @@ -0,0 +1,7 @@ +zone "e81-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e81-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e81-2.conf b/examples/tg16/dns/slave/conf-slave/e81-2.conf new file mode 100644 index 0000000..bdb1ff9 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e81-2.conf @@ -0,0 +1,7 @@ +zone "e81-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e81-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e83-2.conf b/examples/tg16/dns/slave/conf-slave/e83-2.conf new file mode 100644 index 0000000..8f75ff9 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e83-2.conf @@ -0,0 +1,7 @@ +zone "e83-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e83-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e85-2.conf b/examples/tg16/dns/slave/conf-slave/e85-2.conf new file mode 100644 index 0000000..99bdbaf --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e85-2.conf @@ -0,0 +1,7 @@ +zone "e85-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e85-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e9-1.conf b/examples/tg16/dns/slave/conf-slave/e9-1.conf new file mode 100644 index 0000000..05849c6 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e9-1.conf @@ -0,0 +1,7 @@ +zone "e9-1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e9-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e9-2.conf b/examples/tg16/dns/slave/conf-slave/e9-2.conf new file mode 100644 index 0000000..b86b434 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e9-2.conf @@ -0,0 +1,7 @@ +zone "e9-2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e9-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e9-3.conf b/examples/tg16/dns/slave/conf-slave/e9-3.conf new file mode 100644 index 0000000..949eaff --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e9-3.conf @@ -0,0 +1,7 @@ +zone "e9-3.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e9-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e9-4.conf b/examples/tg16/dns/slave/conf-slave/e9-4.conf new file mode 100644 index 0000000..f7789fc --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e9-4.conf @@ -0,0 +1,7 @@ +zone "e9-4.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/e9-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/event.conf b/examples/tg16/dns/slave/conf-slave/event.conf new file mode 100644 index 0000000..167da78 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/event.conf @@ -0,0 +1,7 @@ +zone "event.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/event.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/flankenord.conf b/examples/tg16/dns/slave/conf-slave/flankenord.conf new file mode 100644 index 0000000..d9465fa --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/flankenord.conf @@ -0,0 +1,7 @@ +zone "flankenord.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/flankenord.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/flankesor.conf b/examples/tg16/dns/slave/conf-slave/flankesor.conf new file mode 100644 index 0000000..b92a758 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/flankesor.conf @@ -0,0 +1,7 @@ +zone "flankesor.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/flankesor.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/foh.conf b/examples/tg16/dns/slave/conf-slave/foh.conf new file mode 100644 index 0000000..400a3b3 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/foh.conf @@ -0,0 +1,7 @@ +zone "foh.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/foh.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/fugleberget.conf b/examples/tg16/dns/slave/conf-slave/fugleberget.conf new file mode 100644 index 0000000..3439fa8 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/fugleberget.conf @@ -0,0 +1,7 @@ +zone "fugleberget.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/fugleberget.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/game.conf b/examples/tg16/dns/slave/conf-slave/game.conf new file mode 100644 index 0000000..b2f02ea --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/game.conf @@ -0,0 +1,7 @@ +zone "game.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/game.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/gamestage.conf b/examples/tg16/dns/slave/conf-slave/gamestage.conf new file mode 100644 index 0000000..678232d --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/gamestage.conf @@ -0,0 +1,7 @@ +zone "gamestage.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/gamestage.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/highlights.conf b/examples/tg16/dns/slave/conf-slave/highlights.conf new file mode 100644 index 0000000..eb52c6a --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/highlights.conf @@ -0,0 +1,7 @@ +zone "highlights.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/highlights.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/hon.conf b/examples/tg16/dns/slave/conf-slave/hon.conf new file mode 100644 index 0000000..4128b5b --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/hon.conf @@ -0,0 +1,7 @@ +zone "hon.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/hon.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/info.conf b/examples/tg16/dns/slave/conf-slave/info.conf new file mode 100644 index 0000000..b3e433a --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/info.conf @@ -0,0 +1,7 @@ +zone "info.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/info.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/innsjekk.conf b/examples/tg16/dns/slave/conf-slave/innsjekk.conf new file mode 100644 index 0000000..0ac8a15 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/innsjekk.conf @@ -0,0 +1,7 @@ +zone "innsjekk.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/innsjekk.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/logistikk.conf b/examples/tg16/dns/slave/conf-slave/logistikk.conf new file mode 100644 index 0000000..c4904fd --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/logistikk.conf @@ -0,0 +1,7 @@ +zone "logistikk.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/logistikk.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/medic.conf b/examples/tg16/dns/slave/conf-slave/medic.conf new file mode 100644 index 0000000..333fd18 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/medic.conf @@ -0,0 +1,7 @@ +zone "medic.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/medic.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/noc.conf b/examples/tg16/dns/slave/conf-slave/noc.conf new file mode 100644 index 0000000..9b8ce50 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/noc.conf @@ -0,0 +1,7 @@ +zone "noc.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/noc.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/north.conf b/examples/tg16/dns/slave/conf-slave/north.conf new file mode 100644 index 0000000..6488679 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/north.conf @@ -0,0 +1,7 @@ +zone "north.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/north.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/presse.conf b/examples/tg16/dns/slave/conf-slave/presse.conf new file mode 100644 index 0000000..76f3a89 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/presse.conf @@ -0,0 +1,7 @@ +zone "presse.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/presse.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/resepsjon.conf b/examples/tg16/dns/slave/conf-slave/resepsjon.conf new file mode 100644 index 0000000..6b80571 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/resepsjon.conf @@ -0,0 +1,7 @@ +zone "resepsjon.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/resepsjon.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/santander-temp.conf b/examples/tg16/dns/slave/conf-slave/santander-temp.conf new file mode 100644 index 0000000..3273c3d --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/santander-temp.conf @@ -0,0 +1,7 @@ +zone "santander-temp.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/santander-temp.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/security.conf b/examples/tg16/dns/slave/conf-slave/security.conf new file mode 100644 index 0000000..55109c5 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/security.conf @@ -0,0 +1,7 @@ +zone "security.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/security.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/security2.conf b/examples/tg16/dns/slave/conf-slave/security2.conf new file mode 100644 index 0000000..f7349c6 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/security2.conf @@ -0,0 +1,7 @@ +zone "security2.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/security2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/sponsor.conf b/examples/tg16/dns/slave/conf-slave/sponsor.conf new file mode 100644 index 0000000..186f0ee --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/sponsor.conf @@ -0,0 +1,7 @@ +zone "sponsor.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/sponsor.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/stage.conf b/examples/tg16/dns/slave/conf-slave/stage.conf new file mode 100644 index 0000000..02b5a12 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/stage.conf @@ -0,0 +1,7 @@ +zone "stage.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/stage.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/streamer1.conf b/examples/tg16/dns/slave/conf-slave/streamer1.conf new file mode 100644 index 0000000..1002318 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/streamer1.conf @@ -0,0 +1,7 @@ +zone "streamer1.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/streamer1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/tech-wlan.conf b/examples/tg16/dns/slave/conf-slave/tech-wlan.conf new file mode 100644 index 0000000..4699c9b --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/tech-wlan.conf @@ -0,0 +1,7 @@ +zone "tech-wlan.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/tech-wlan.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/wlan.conf b/examples/tg16/dns/slave/conf-slave/wlan.conf new file mode 100644 index 0000000..aa1ef15 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/wlan.conf @@ -0,0 +1,7 @@ +zone "wlan.tg16.gathering.org" { + allow-transfer { ns-xfr; }; + type slave; + notify no; + masters { master_ns; }; + file "slave/wlan.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/named.conf b/examples/tg16/dns/slave/named.conf new file mode 100644 index 0000000..feb504a --- /dev/null +++ b/examples/tg16/dns/slave/named.conf @@ -0,0 +1,148 @@ +// This named.conf was generated by make-named.pl at 20160322-2330 +// The current version of make-named.pl should not overwrite this file. +acl tg-nett { 88.92.0.0/17; 2a06:5840::/29; 185.110.148.0/22; 127.0.0.0/8; ::1; }; +acl ns-xfr { 185.110.148.2; 2a06:5841:1337::2; 185.110.149.2; 2a06:5841:149a::2; 185.110.150.0/25; 2a06:5841:150a::1/64; }; +acl ext-xfr { 193.0.0.0/22; 2001:610:240::/48; 2001:67c:2e8::/48; }; + +options { + directory "/etc/bind"; + allow-recursion { tg-nett; }; + allow-query { any; }; + allow-transfer { ns-xfr; }; + recursion yes; + auth-nxdomain no; + listen-on-v6 { any; }; + statistics-file "/etc/bind/named.rndc-stats"; +}; + +logging { + category "default" { "debug"; }; + category "general" { "debug"; }; + category "database" { "debug"; }; + category "security" { "debug"; "stats"; }; + category "config" { "debug"; "stats"; }; + category "resolver" { "debug"; "stats"; }; + category "xfer-in" { "debug"; "stats"; }; + category "xfer-out" { "debug"; "stats"; }; + category "notify" { "debug"; "stats"; }; + category "client" { "debug"; }; + category "unmatched" { "debug"; }; + category "network" { "debug"; }; + category "update" { "debug"; }; + category "queries" { "stats"; "query"; }; + category "dispatch" { "debug"; }; + category "dnssec" { "debug"; }; + category "lame-servers" { "debug"; }; + + channel "debug" { + file "/etc/bind/nameddbg" versions 2 size 50m; + print-time yes; + print-category yes; + print-severity yes; + severity debug 9; + }; + + channel "stats" { + file "/etc/bind/namedstats" versions 2 size 50m; + print-time yes; + print-category yes; + print-severity yes; + severity debug 3; + }; + + channel "query" { + file "/etc/bind/namedquery" versions 2 size 500m; + print-time yes; + severity info; + }; +}; + +key DHCP_UPDATER { + algorithm HMAC-MD5.SIG-ALG.REG.INT; + secret <removed>; +}; + +masters master_ns { 2a06:5841:149a::2; 185.110.149.2; }; + +zone "tg16.gathering.org" { + type slave; + file "slave/tg16.gathering.org"; + notify no; + masters { master_ns; }; +}; + +zone "infra.tg16.gathering.org" { + type slave; + file "slave/infra.tg16.gathering.org"; + notify no; + masters { master_ns; }; +}; + +zone "0.4.8.5.6.0.a.2.ip6.arpa" { + type slave; + notify no; + masters { master_ns; }; + file "slave/0.4.8.5.6.0.a.2.ip6.arpa"; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "1.4.8.5.6.0.a.2.ip6.arpa" { + type slave; + notify no; + masters { master_ns; }; + file "slave/1.4.8.5.6.0.a.2.ip6.arpa"; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "2.4.8.5.6.0.a.2.ip6.arpa" { + type slave; + notify no; + masters { master_ns; }; + file "slave/2.4.8.5.6.0.a.2.ip6.arpa"; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "3.4.8.5.6.0.a.2.ip6.arpa" { + type slave; + notify no; + masters { master_ns; }; + file "slave/3.4.8.5.6.0.a.2.ip6.arpa"; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "4.4.8.5.6.0.a.2.ip6.arpa" { + type slave; + notify no; + masters { master_ns; }; + file "slave/4.4.8.5.6.0.a.2.ip6.arpa"; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "5.4.8.5.6.0.a.2.ip6.arpa" { + type slave; + notify no; + masters { master_ns; }; + file "slave/5.4.8.5.6.0.a.2.ip6.arpa"; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "6.4.8.5.6.0.a.2.ip6.arpa" { + type slave; + notify no; + masters { master_ns; }; + file "slave/6.4.8.5.6.0.a.2.ip6.arpa"; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "7.4.8.5.6.0.a.2.ip6.arpa" { + type slave; + notify no; + masters { master_ns; }; + file "slave/7.4.8.5.6.0.a.2.ip6.arpa"; + allow-transfer { ns-xfr; ext-xfr; }; +}; + + +include "named.conf.default-zones"; +include "named.slave-reverse4.conf"; +include "named.slave-include.conf"; diff --git a/examples/tg16/dns/slave/named.conf.default-zones b/examples/tg16/dns/slave/named.conf.default-zones new file mode 100644 index 0000000..355338b --- /dev/null +++ b/examples/tg16/dns/slave/named.conf.default-zones @@ -0,0 +1,30 @@ +// prime the server with knowledge of the root servers +zone "." { + type hint; + file "/etc/bind/db.root"; +}; + +// be authoritative for the localhost forward and reverse zones, and for +// broadcast zones as per RFC 1912 + +zone "localhost" { + type master; + file "/etc/bind/db.local"; +}; + +zone "127.in-addr.arpa" { + type master; + file "/etc/bind/db.127"; +}; + +zone "0.in-addr.arpa" { + type master; + file "/etc/bind/db.0"; +}; + +zone "255.in-addr.arpa" { + type master; + file "/etc/bind/db.255"; +}; + + diff --git a/examples/tg16/dns/slave/named.rndc-stats b/examples/tg16/dns/slave/named.rndc-stats new file mode 100644 index 0000000..aafb6f8 --- /dev/null +++ b/examples/tg16/dns/slave/named.rndc-stats @@ -0,0 +1,136 @@ ++++ Statistics Dump +++ (1459077002) +++ Incoming Requests ++ + 11710890 QUERY + 128708 NOTIFY +++ Incoming Queries ++ + 6682245 A + 56471 NS + 132 CNAME + 5562 SOA + 1940294 PTR + 82 MX + 16526 TXT + 2739744 AAAA + 239167 SRV + 9 NAPTR + 820 A6 + 122 DS + 81 DNSKEY + 26306 ANY + 3329 Others +++ Outgoing Queries ++ +[View: default] + 4178011 A + 24412 NS + 127 CNAME + 1309 SOA + 511408 PTR + 11 MX + 10365 TXT + 1125990 AAAA + 23413 SRV + 15 NAPTR + 2 DS + 1 DNSKEY + 1076 ANY + 1837 Others +[View: _bind] +++ Name Server Statistics ++ + 8204466 IPv4 requests received + 3635136 IPv6 requests received + 1753950 requests with EDNS(0) received + 625 TCP requests received + 449 auth queries rejected + 3228241 recursive queries rejected + 11755227 responses sent + 2315 truncated responses sent + 1753900 responses with EDNS(0) sent + 7068307 queries resulted in successful answer + 2315088 queries resulted in authoritative answer + 5939914 queries resulted in non authoritative answer + 540 queries resulted in referral answer + 432653 queries resulted in nxrrset + 142823 queries resulted in SERVFAIL + 753502 queries resulted in NXDOMAIN + 3494338 queries caused recursion + 82063 duplicate queries received + 2312 queries dropped + 3228690 other query failures + 2 responses dropped for rate limits +++ Zone Maintenance Statistics ++ + 64353 IPv4 notifies received + 64355 IPv6 notifies received + 35217 IPv4 SOA queries sent + 93276 IPv6 SOA queries sent + 155 IPv4 IXFR requested + 58059 IPv6 IXFR requested + 58214 transfer requests succeeded +++ Resolver Statistics ++ +[Common] + 13 mismatch responses received +[View: default] + 5226295 IPv4 queries sent + 651682 IPv6 queries sent + 5026991 IPv4 responses received + 623811 IPv6 responses received + 145200 NXDOMAIN received + 23839 SERVFAIL received + 1588 FORMERR received + 259050 other errors received + 3506 EDNS(0) query failures + 10643 truncated responses received + 9974 lame delegations received + 592187 query retries + 231528 query timeouts + 234600 IPv4 NS address fetches + 235694 IPv6 NS address fetches + 5261 IPv4 NS address fetch failed + 183487 IPv6 NS address fetch failed + 708744 queries with RTT < 10ms + 2474745 queries with RTT 10-100ms + 2452911 queries with RTT 100-500ms + 5578 queries with RTT 500-800ms + 102 queries with RTT 800-1600ms + 25 queries with RTT > 1600ms +[View: _bind] +++ Cache DB RRsets ++ +[View: default] + 39773 A + 95605 NS + 7763 CNAME + 1 SOA + 41407 PTR + 402 TXT + 5339 AAAA + 9 SRV + 983 DS + 22326 RRSIG + 19873 NSEC + 1 DNSKEY + 8 !A + 371 !AAAA + 35926 NXDOMAIN +[View: _bind (Cache: _bind)] +++ Socket I/O Statistics ++ + 5257275 UDP/IPv4 sockets opened + 728337 UDP/IPv6 sockets opened + 5365 TCP/IPv4 sockets opened + 63497 TCP/IPv6 sockets opened + 5257259 UDP/IPv4 sockets closed + 728329 UDP/IPv6 sockets closed + 6968 TCP/IPv4 sockets closed + 63623 TCP/IPv6 sockets closed + 1461 UDP/IPv4 socket bind failures + 114 UDP/IPv6 socket bind failures + 10 UDP/IPv6 socket connect failures + 5221088 UDP/IPv4 connections established + 646246 UDP/IPv6 connections established + 5023 TCP/IPv4 connections established + 63451 TCP/IPv6 connections established + 1607 TCP/IPv4 connections accepted + 128 TCP/IPv6 connections accepted + 8107 UDP/IPv4 recv errors + 882 UDP/IPv6 recv errors + 13 TCP/IPv4 recv errors +++ Per Zone Query Statistics ++ +--- Statistics Dump --- (1459077002)
\ No newline at end of file diff --git a/examples/tg16/dns/slave/named.slave-include.conf b/examples/tg16/dns/slave/named.slave-include.conf new file mode 100644 index 0000000..1f74f88 --- /dev/null +++ b/examples/tg16/dns/slave/named.slave-include.conf @@ -0,0 +1,179 @@ +include "/etc/bind/conf-slave/ap-creativia.conf"; +include "/etc/bind/conf-slave/ap-distro0.conf"; +include "/etc/bind/conf-slave/ap-distro1.conf"; +include "/etc/bind/conf-slave/ap-distro2.conf"; +include "/etc/bind/conf-slave/ap-distro3.conf"; +include "/etc/bind/conf-slave/ap-distro4.conf"; +include "/etc/bind/conf-slave/ap-distro5.conf"; +include "/etc/bind/conf-slave/ap-distro6.conf"; +include "/etc/bind/conf-slave/ap-distro7.conf"; +include "/etc/bind/conf-slave/ap-stand.conf"; +include "/etc/bind/conf-slave/auditorium.conf"; +include "/etc/bind/conf-slave/creativia-village.conf"; +include "/etc/bind/conf-slave/creativia.conf"; +include "/etc/bind/conf-slave/creativia1.conf"; +include "/etc/bind/conf-slave/creativia2.conf"; +include "/etc/bind/conf-slave/creativia3.conf"; +include "/etc/bind/conf-slave/creativia4.conf"; +include "/etc/bind/conf-slave/creativia5.conf"; +include "/etc/bind/conf-slave/creativia6.conf"; +include "/etc/bind/conf-slave/creativia7.conf"; +include "/etc/bind/conf-slave/creativiasw1.conf"; +include "/etc/bind/conf-slave/crew.conf"; +include "/etc/bind/conf-slave/deltaker-srv.conf"; +include "/etc/bind/conf-slave/e1-3.conf"; +include "/etc/bind/conf-slave/e1-4.conf"; +include "/etc/bind/conf-slave/e11-1.conf"; +include "/etc/bind/conf-slave/e11-2.conf"; +include "/etc/bind/conf-slave/e11-3.conf"; +include "/etc/bind/conf-slave/e11-4.conf"; +include "/etc/bind/conf-slave/e13-1.conf"; +include "/etc/bind/conf-slave/e13-2.conf"; +include "/etc/bind/conf-slave/e13-3.conf"; +include "/etc/bind/conf-slave/e13-4.conf"; +include "/etc/bind/conf-slave/e15-1.conf"; +include "/etc/bind/conf-slave/e15-2.conf"; +include "/etc/bind/conf-slave/e15-3.conf"; +include "/etc/bind/conf-slave/e15-4.conf"; +include "/etc/bind/conf-slave/e17-1.conf"; +include "/etc/bind/conf-slave/e17-2.conf"; +include "/etc/bind/conf-slave/e17-3.conf"; +include "/etc/bind/conf-slave/e17-4.conf"; +include "/etc/bind/conf-slave/e19-1.conf"; +include "/etc/bind/conf-slave/e19-2.conf"; +include "/etc/bind/conf-slave/e19-3.conf"; +include "/etc/bind/conf-slave/e19-4.conf"; +include "/etc/bind/conf-slave/e21-1.conf"; +include "/etc/bind/conf-slave/e21-2.conf"; +include "/etc/bind/conf-slave/e21-3.conf"; +include "/etc/bind/conf-slave/e21-4.conf"; +include "/etc/bind/conf-slave/e23-1.conf"; +include "/etc/bind/conf-slave/e23-2.conf"; +include "/etc/bind/conf-slave/e23-3.conf"; +include "/etc/bind/conf-slave/e23-4.conf"; +include "/etc/bind/conf-slave/e25-1.conf"; +include "/etc/bind/conf-slave/e25-2.conf"; +include "/etc/bind/conf-slave/e27-1.conf"; +include "/etc/bind/conf-slave/e27-2.conf"; +include "/etc/bind/conf-slave/e29-1.conf"; +include "/etc/bind/conf-slave/e29-2.conf"; +include "/etc/bind/conf-slave/e3-3.conf"; +include "/etc/bind/conf-slave/e3-4.conf"; +include "/etc/bind/conf-slave/e31-1.conf"; +include "/etc/bind/conf-slave/e31-2.conf"; +include "/etc/bind/conf-slave/e33-1.conf"; +include "/etc/bind/conf-slave/e33-2.conf"; +include "/etc/bind/conf-slave/e35-1.conf"; +include "/etc/bind/conf-slave/e35-2.conf"; +include "/etc/bind/conf-slave/e37-1.conf"; +include "/etc/bind/conf-slave/e37-2.conf"; +include "/etc/bind/conf-slave/e39-1.conf"; +include "/etc/bind/conf-slave/e39-2.conf"; +include "/etc/bind/conf-slave/e41-1.conf"; +include "/etc/bind/conf-slave/e41-2.conf"; +include "/etc/bind/conf-slave/e41-3.conf"; +include "/etc/bind/conf-slave/e41-4.conf"; +include "/etc/bind/conf-slave/e43-1.conf"; +include "/etc/bind/conf-slave/e43-2.conf"; +include "/etc/bind/conf-slave/e43-3.conf"; +include "/etc/bind/conf-slave/e43-4.conf"; +include "/etc/bind/conf-slave/e45-1.conf"; +include "/etc/bind/conf-slave/e45-2.conf"; +include "/etc/bind/conf-slave/e45-3.conf"; +include "/etc/bind/conf-slave/e45-4.conf"; +include "/etc/bind/conf-slave/e47-1.conf"; +include "/etc/bind/conf-slave/e47-2.conf"; +include "/etc/bind/conf-slave/e47-3.conf"; +include "/etc/bind/conf-slave/e47-4.conf"; +include "/etc/bind/conf-slave/e49-1.conf"; +include "/etc/bind/conf-slave/e49-2.conf"; +include "/etc/bind/conf-slave/e49-3.conf"; +include "/etc/bind/conf-slave/e49-4.conf"; +include "/etc/bind/conf-slave/e5-2.conf"; +include "/etc/bind/conf-slave/e5-3.conf"; +include "/etc/bind/conf-slave/e5-4.conf"; +include "/etc/bind/conf-slave/e51-1.conf"; +include "/etc/bind/conf-slave/e51-2.conf"; +include "/etc/bind/conf-slave/e51-3.conf"; +include "/etc/bind/conf-slave/e51-4.conf"; +include "/etc/bind/conf-slave/e53-1.conf"; +include "/etc/bind/conf-slave/e53-2.conf"; +include "/etc/bind/conf-slave/e53-3.conf"; +include "/etc/bind/conf-slave/e53-4.conf"; +include "/etc/bind/conf-slave/e55-1.conf"; +include "/etc/bind/conf-slave/e55-2.conf"; +include "/etc/bind/conf-slave/e55-3.conf"; +include "/etc/bind/conf-slave/e55-4.conf"; +include "/etc/bind/conf-slave/e57-1.conf"; +include "/etc/bind/conf-slave/e57-2.conf"; +include "/etc/bind/conf-slave/e57-3.conf"; +include "/etc/bind/conf-slave/e57-4.conf"; +include "/etc/bind/conf-slave/e59-1.conf"; +include "/etc/bind/conf-slave/e59-2.conf"; +include "/etc/bind/conf-slave/e59-3.conf"; +include "/etc/bind/conf-slave/e59-4.conf"; +include "/etc/bind/conf-slave/e61-1.conf"; +include "/etc/bind/conf-slave/e61-2.conf"; +include "/etc/bind/conf-slave/e61-3.conf"; +include "/etc/bind/conf-slave/e61-4.conf"; +include "/etc/bind/conf-slave/e63-1.conf"; +include "/etc/bind/conf-slave/e63-2.conf"; +include "/etc/bind/conf-slave/e63-3.conf"; +include "/etc/bind/conf-slave/e63-4.conf"; +include "/etc/bind/conf-slave/e65-1.conf"; +include "/etc/bind/conf-slave/e65-2.conf"; +include "/etc/bind/conf-slave/e65-3.conf"; +include "/etc/bind/conf-slave/e65-4.conf"; +include "/etc/bind/conf-slave/e67-1.conf"; +include "/etc/bind/conf-slave/e67-2.conf"; +include "/etc/bind/conf-slave/e67-3.conf"; +include "/etc/bind/conf-slave/e67-4.conf"; +include "/etc/bind/conf-slave/e69-1.conf"; +include "/etc/bind/conf-slave/e69-2.conf"; +include "/etc/bind/conf-slave/e7-1.conf"; +include "/etc/bind/conf-slave/e7-2.conf"; +include "/etc/bind/conf-slave/e7-3.conf"; +include "/etc/bind/conf-slave/e7-4.conf"; +include "/etc/bind/conf-slave/e71-1.conf"; +include "/etc/bind/conf-slave/e71-2.conf"; +include "/etc/bind/conf-slave/e73-1.conf"; +include "/etc/bind/conf-slave/e73-2.conf"; +include "/etc/bind/conf-slave/e75-1.conf"; +include "/etc/bind/conf-slave/e75-2.conf"; +include "/etc/bind/conf-slave/e77-1.conf"; +include "/etc/bind/conf-slave/e77-2.conf"; +include "/etc/bind/conf-slave/e79-1.conf"; +include "/etc/bind/conf-slave/e79-2.conf"; +include "/etc/bind/conf-slave/e81-1.conf"; +include "/etc/bind/conf-slave/e81-2.conf"; +include "/etc/bind/conf-slave/e83-2.conf"; +include "/etc/bind/conf-slave/e85-2.conf"; +include "/etc/bind/conf-slave/e9-1.conf"; +include "/etc/bind/conf-slave/e9-2.conf"; +include "/etc/bind/conf-slave/e9-3.conf"; +include "/etc/bind/conf-slave/e9-4.conf"; +include "/etc/bind/conf-slave/event.conf"; +include "/etc/bind/conf-slave/flankenord.conf"; +include "/etc/bind/conf-slave/flankesor.conf"; +include "/etc/bind/conf-slave/foh.conf"; +include "/etc/bind/conf-slave/fugleberget.conf"; +include "/etc/bind/conf-slave/game.conf"; +include "/etc/bind/conf-slave/gamestage.conf"; +include "/etc/bind/conf-slave/highlights.conf"; +include "/etc/bind/conf-slave/hon.conf"; +include "/etc/bind/conf-slave/info.conf"; +include "/etc/bind/conf-slave/innsjekk.conf"; +include "/etc/bind/conf-slave/logistikk.conf"; +include "/etc/bind/conf-slave/medic.conf"; +include "/etc/bind/conf-slave/noc.conf"; +include "/etc/bind/conf-slave/north.conf"; +include "/etc/bind/conf-slave/presse.conf"; +include "/etc/bind/conf-slave/resepsjon.conf"; +include "/etc/bind/conf-slave/santander-temp.conf"; +include "/etc/bind/conf-slave/security.conf"; +include "/etc/bind/conf-slave/security2.conf"; +include "/etc/bind/conf-slave/sponsor.conf"; +include "/etc/bind/conf-slave/stage.conf"; +include "/etc/bind/conf-slave/streamer1.conf"; +include "/etc/bind/conf-slave/tech-wlan.conf"; +include "/etc/bind/conf-slave/wlan.conf"; diff --git a/examples/tg16/dns/slave/named.slave-reverse4.conf b/examples/tg16/dns/slave/named.slave-reverse4.conf new file mode 100644 index 0000000..97c25ef --- /dev/null +++ b/examples/tg16/dns/slave/named.slave-reverse4.conf @@ -0,0 +1,1188 @@ +// 88.92.0.0/24 +zone "0.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/0.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.1.0/24 +zone "1.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/1.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.2.0/24 +zone "2.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/2.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.3.0/24 +zone "3.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/3.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.4.0/24 +zone "4.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/4.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.5.0/24 +zone "5.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/5.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.6.0/24 +zone "6.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/6.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.7.0/24 +zone "7.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/7.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.8.0/24 +zone "8.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/8.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.9.0/24 +zone "9.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/9.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.10.0/24 +zone "10.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/10.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.11.0/24 +zone "11.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/11.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.12.0/24 +zone "12.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/12.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.13.0/24 +zone "13.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/13.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.14.0/24 +zone "14.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/14.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.15.0/24 +zone "15.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/15.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.16.0/24 +zone "16.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/16.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.17.0/24 +zone "17.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/17.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.18.0/24 +zone "18.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/18.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.19.0/24 +zone "19.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/19.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.20.0/24 +zone "20.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/20.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.21.0/24 +zone "21.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/21.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.22.0/24 +zone "22.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/22.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.23.0/24 +zone "23.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/23.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.24.0/24 +zone "24.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/24.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.25.0/24 +zone "25.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/25.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.26.0/24 +zone "26.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/26.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.27.0/24 +zone "27.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/27.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.28.0/24 +zone "28.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/28.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.29.0/24 +zone "29.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/29.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.30.0/24 +zone "30.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/30.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.31.0/24 +zone "31.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/31.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.32.0/24 +zone "32.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/32.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.33.0/24 +zone "33.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/33.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.34.0/24 +zone "34.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/34.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.35.0/24 +zone "35.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/35.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.36.0/24 +zone "36.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/36.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.37.0/24 +zone "37.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/37.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.38.0/24 +zone "38.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/38.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.39.0/24 +zone "39.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/39.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.40.0/24 +zone "40.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/40.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.41.0/24 +zone "41.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/41.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.42.0/24 +zone "42.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/42.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.43.0/24 +zone "43.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/43.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.44.0/24 +zone "44.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/44.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.45.0/24 +zone "45.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/45.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.46.0/24 +zone "46.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/46.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.47.0/24 +zone "47.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/47.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.48.0/24 +zone "48.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/48.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.49.0/24 +zone "49.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/49.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.50.0/24 +zone "50.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/50.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.51.0/24 +zone "51.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/51.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.52.0/24 +zone "52.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/52.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.53.0/24 +zone "53.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/53.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.54.0/24 +zone "54.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/54.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.55.0/24 +zone "55.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/55.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.56.0/24 +zone "56.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/56.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.57.0/24 +zone "57.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/57.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.58.0/24 +zone "58.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/58.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.59.0/24 +zone "59.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/59.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.60.0/24 +zone "60.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/60.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.61.0/24 +zone "61.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/61.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.62.0/24 +zone "62.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/62.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.63.0/24 +zone "63.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/63.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.64.0/24 +zone "64.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/64.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.65.0/24 +zone "65.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/65.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.66.0/24 +zone "66.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/66.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.67.0/24 +zone "67.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/67.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.68.0/24 +zone "68.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/68.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.69.0/24 +zone "69.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/69.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.70.0/24 +zone "70.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/70.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.71.0/24 +zone "71.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/71.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.72.0/24 +zone "72.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/72.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.73.0/24 +zone "73.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/73.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.74.0/24 +zone "74.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/74.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.75.0/24 +zone "75.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/75.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.76.0/24 +zone "76.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/76.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.77.0/24 +zone "77.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/77.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.78.0/24 +zone "78.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/78.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.79.0/24 +zone "79.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/79.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.80.0/24 +zone "80.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/80.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.81.0/24 +zone "81.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/81.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.82.0/24 +zone "82.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/82.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.83.0/24 +zone "83.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/83.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.84.0/24 +zone "84.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/84.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.85.0/24 +zone "85.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/85.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.86.0/24 +zone "86.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/86.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.87.0/24 +zone "87.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/87.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.88.0/24 +zone "88.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/88.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.89.0/24 +zone "89.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/89.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.90.0/24 +zone "90.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/90.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.91.0/24 +zone "91.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/91.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.92.0/24 +zone "92.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/92.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.93.0/24 +zone "93.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/93.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.94.0/24 +zone "94.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/94.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.95.0/24 +zone "95.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/95.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.96.0/24 +zone "96.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/96.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.97.0/24 +zone "97.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/97.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.98.0/24 +zone "98.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/98.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.99.0/24 +zone "99.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/99.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.100.0/24 +zone "100.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/100.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.101.0/24 +zone "101.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/101.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.102.0/24 +zone "102.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/102.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.103.0/24 +zone "103.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/103.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.104.0/24 +zone "104.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/104.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.105.0/24 +zone "105.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/105.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.106.0/24 +zone "106.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/106.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.107.0/24 +zone "107.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/107.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.108.0/24 +zone "108.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/108.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.109.0/24 +zone "109.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/109.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.110.0/24 +zone "110.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/110.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.111.0/24 +zone "111.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/111.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.112.0/24 +zone "112.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/112.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.113.0/24 +zone "113.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/113.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.114.0/24 +zone "114.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/114.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.115.0/24 +zone "115.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/115.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.116.0/24 +zone "116.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/116.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.117.0/24 +zone "117.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/117.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.118.0/24 +zone "118.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/118.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.119.0/24 +zone "119.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/119.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.120.0/24 +zone "120.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/120.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.121.0/24 +zone "121.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/121.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.122.0/24 +zone "122.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/122.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.123.0/24 +zone "123.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/123.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.124.0/24 +zone "124.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/124.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.125.0/24 +zone "125.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/125.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.126.0/24 +zone "126.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/126.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.127.0/24 +zone "127.92.88.in-addr.arpa" { + type slave; + notify no; + file "slave/127.92.88.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 185.110.148.0/24 +zone "148.110.185.in-addr.arpa" { + type slave; + notify no; + file "slave/148.110.185.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 185.110.149.0/24 +zone "149.110.185.in-addr.arpa" { + type slave; + notify no; + file "slave/149.110.185.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 185.110.150.0/24 +zone "150.110.185.in-addr.arpa" { + type slave; + notify no; + file "slave/150.110.185.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 185.110.151.0/24 +zone "151.110.185.in-addr.arpa" { + type slave; + notify no; + file "slave/151.110.185.in-addr.arpa.cache"; + masters { master_ns; }; + allow-transfer { ns-xfr; ext-xfr; }; +}; + diff --git a/examples/tg16/infoscreens/bg.png b/examples/tg16/infoscreens/bg.png Binary files differnew file mode 100644 index 0000000..d02dbc9 --- /dev/null +++ b/examples/tg16/infoscreens/bg.png diff --git a/examples/tg16/infoscreens/display1.html b/examples/tg16/infoscreens/display1.html new file mode 100644 index 0000000..05dd134 --- /dev/null +++ b/examples/tg16/infoscreens/display1.html @@ -0,0 +1,58 @@ +<html> +<head> +<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Droid+Sans" /> +<style> +body { + background-image: url("bg.png"); + background-repeat: no-repeat; + font-family: 'Droid Sans'; + font-size: 30px; + margin: 0 0 0 0; +} + +div { + //border:1px solid red; + border: none; +} + +#container { + width: 1079px; + height: 1920px; +} + +#logo-constraint { + width: 854px; + height: 250px; +} + +#frame { + width: 854px; + height: 680px; + border: none; +} + +#header { + text-align: center; +} + +#content { + width: 855px; +} +</style> +</head> +<body> + <div id="container"> + <div id="logo-constraint"></div> + + <div id="content"> + <h1 id="header">Social Networks</h1> + <iframe id="frame" src="http://spock.tg16.gathering.org:8000/en-US/account/insecurelogin?username=secret&password=REMOVED&return_to=/app/thegathering/tg1601social_html"></iframe> + </div> + + <div id="content"> + <h1 id="header">Games</h1> + <iframe id="frame" src="http://spock.tg16.gathering.org:8000/en-US/account/insecurelogin?username=secret&password=REMOVED&return_to=/app/thegathering/tg1602games_html"></iframe> + </div> + </div> +<body> +</html> diff --git a/examples/tg16/infoscreens/display2.html b/examples/tg16/infoscreens/display2.html new file mode 100644 index 0000000..aac5617 --- /dev/null +++ b/examples/tg16/infoscreens/display2.html @@ -0,0 +1,58 @@ +<html> +<head> +<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Droid+Sans" /> +<style> +body { + background-image: url("bg.png"); + background-repeat: no-repeat; + font-family: 'Droid Sans'; + font-size: 30px; + margin: 0 0 0 0; +} + +div { + //border:1px solid red; + border: none; +} + +#container { + width: 1079px; + height: 1920px; +} + +#logo-constraint { + width: 854px; + height: 250px; +} + +#frame { + width: 854px; + height: 680px; + border: none; +} + +#header { + text-align: center; +} + +#content { + width: 855px; +} +</style> +</head> +<body> + <div id="container"> + <div id="logo-constraint"></div> + + <div id="content"> + <h1 id="header">Gaming Platform</h1> + <iframe id="frame" src="http://spock.tg16.gathering.org:8000/en-US/account/insecurelogin?username=secret&password=REMOVED&return_to=/app/thegathering/tg1603progom_html"></iframe> + </div> + + <div id="content"> + <h1 id="header">Web Browsers</h1> + <iframe id="frame" src="http://spock.tg16.gathering.org:8000/en-US/account/insecurelogin?username=secret&password=REMOVED&return_to=/app/thegathering/tg1604bowsers_html"></iframe> + </div> + </div> +<body> +</html> diff --git a/examples/tg16/letsencrypt-tg16.sh b/examples/tg16/letsencrypt-tg16.sh new file mode 100644 index 0000000..03510b4 --- /dev/null +++ b/examples/tg16/letsencrypt-tg16.sh @@ -0,0 +1,16 @@ +#!/bin/bash + + openssl req -new -sha256 -key /root/le/keys/domain.key -subj "/" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:yoda.tg16.gathering.org,DNS:stream.tg16.gathering.org,DNS:streams.tg16.gathering.org,DNS:webcam.tg16.gathering.org,DNS:webcams.tg16.gathering.org,DNS:nms.tg16.gathering.org,DNS:nms-public.tg16.gathering.org,DNS:stats.tg16.gathering.org,DNS:nms-api.tg16.gathering.org")) > /root/le/csrs/yoda.csr + python /root/le/acme-tiny/acme_tiny.py --account-key /root/le/keys/account.key --csr /root/le/csrs/yoda.csr --acme-dir /var/www/html/.well-known/acme-challenge > /root/le/certs/yoda.crt + if [ $? -ne 0 ]; then + echo "Client exited with error, not overwriting cert" + else + cp /root/le/certs/yoda.crt /root/le/prodcerts/yoda.prod.crt + fi + +curl https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.pem > /root/le/letsencrypt.ca-bundle.temp +if [ $? -ne 0 ]; then +echo "Client exited with error, not overwriting cert" +else +mv /root/le/letsencrypt.ca-bundle.temp /root/le/letsencrypt.ca-bundle +fi diff --git a/examples/tg16/munin/dhcp_usage b/examples/tg16/munin/dhcp_usage new file mode 100644 index 0000000..f8d29a5 --- /dev/null +++ b/examples/tg16/munin/dhcp_usage @@ -0,0 +1,80 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use POSIX; + +my $dhcpd_cmd="/usr/local/bin/dhcpd-pools"; +my $dhcpd_lf="/var/lib/dhcp/dhcpd.leases"; +my $dhcpd_cf="/etc/dhcp/dhcpd.conf"; + +my @output = `$dhcpd_cmd -c $dhcpd_cf -l $dhcpd_lf`; + +my $line; +my $subnet; +my $subnet2; + +for $line (@output) { + + next if ($line =~ /^(shared net name|Ranges|name|Shared networks|Sum of all)/) or (length $line <= 1); + + if ($line =~ /([\d]+\.[\d]+\.[\d]+\.[\d]+)\s+\-\s+([\d]+\.[\d]+\.[\d]+\.[\d]+)\s+([\d]+)\s+([\d]+)\s+([\d]+\.[\d]+)/) { + + my $first_ip=$1; + my $last_ip=$2; + my $max=$3; + my $current=$4; + my $percent=ceil($5); + + my $octet; + my @octets; + + my $octet_count=0; + for $octet (@octets=(split('\.',$first_ip))) { + if ($octet_count == 3) { + $octet_count=0; + $subnet = $first_ip; + substr($subnet,-length($octet)) = ($octet-4); + $subnet =~ s/\./_/g; + + if (defined $ARGV[0] && $ARGV[0] eq "config") { + print_config($subnet); + } else { + print "dhcp_pool_${subnet}.value $percent\n"; + } + + } + + $octet_count++; + + } + + } + +} + +sub print_config { + +my $graph_name; + +$graph_name = shift; + +print <<EOF; +graph_args --upper-limit 100 -l 0 +graph_title DHCP IPv4 Pools Status +graph_vlabel % +graph_category DHCP +dhcp_pool_${graph_name}.label $graph_name +EOF + +} + +# print_config; + +#shared net name first ip last ip max cur percent touch t+c t+c perc +# All networks 88.92.0.4 - 88.92.0.62 59 26 44.068 2 28 47.458 + +#} + + + diff --git a/examples/tg16/munin/dhcp_usage_ipv6 b/examples/tg16/munin/dhcp_usage_ipv6 new file mode 100644 index 0000000..920650d --- /dev/null +++ b/examples/tg16/munin/dhcp_usage_ipv6 @@ -0,0 +1,85 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use POSIX; + +my $dhcpd_cmd="/usr/local/bin/dhcpd-pools"; +my $dhcpd_lf="/var/lib/dhcp/dhcpd6.leases"; +my $dhcpd_cf="/etc/dhcp/dhcpd6.conf"; + +my @output = `$dhcpd_cmd -c $dhcpd_cf -l $dhcpd_lf`; + +my $line; +my $subnet; + +for $line (@output) { + +#All networks 2a06:5840:65::1000 - 2a06:5840:65::9999 35226 25 0.071 1 26 0.074 +#All networks 2a06:5840:66::1000 - 2a06:5840:66::9999 35226 44 0.125 0 44 0.125 + + + next if ($line =~ /^(shared net name|Ranges|name|Shared networks|Sum of all)/) or (length $line <= 1); + + if ($line =~ /([a-zA-Z0-9]+\:[a-zA-Z0-9]+\:[a-zA-Z0-9]+\::[a-zA-Z0-9]+)\s+\-\s([a-zA-Z0-9]+\:[a-zA-Z0-9]+\:[a-zA-Z0-9]+\::[a-zA-Z0-9]+)\s+([\d]+)\s+([\d]+)\s+([\d]+\.[\d]+)/) { + + my $first_ip=$1; + my $last_ip=$2; + my $max=$3; + my $current=$4; + my $percent=ceil($5); + + my $octet; + my @octets; + + print "IP: $percent\n"; + + my $octet_count=0; + for $octet (@octets=(split('\::',$first_ip))) { + if ($octet_count == 2) { + $octet_count=0; + $subnet = $first_ip; + substr($subnet,-length($octet)) = ($octet-4); + $subnet =~ s/\./_/g; + + if (defined $ARGV[0] && $ARGV[0] eq "config") { + print_config($subnet); + } else { + print "dhcp_pool_${subnet}.value $percent\n"; + } + + } + + $octet_count++; + + } + + } + +} + +sub print_config { + +my $graph_name; + +$graph_name = shift; + +print <<EOF; +graph_args --upper-limit 100 -l 0 +graph_title DHCP IPv4 Pools Status +graph_vlabel % +graph_category DHCP +dhcp_pool_${graph_name}.label $graph_name +EOF + +} + +# print_config; + +#shared net name first ip last ip max cur percent touch t+c t+c perc +# All networks 88.92.0.4 - 88.92.0.62 59 26 44.068 2 28 47.458 + +#} + + + diff --git a/examples/tg16/munin/dhcp_usage_total b/examples/tg16/munin/dhcp_usage_total new file mode 100644 index 0000000..6abc9de --- /dev/null +++ b/examples/tg16/munin/dhcp_usage_total @@ -0,0 +1,78 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use POSIX; + +my $dhcpd_cmd="/usr/local/bin/dhcpd-pools"; +my $dhcpd_lf="/var/lib/dhcp/dhcpd.leases"; +my $dhcpd_cf="/etc/dhcp/dhcpd.conf"; + +my @output = `$dhcpd_cmd -c $dhcpd_cf -l $dhcpd_lf`; + +my $line; +my $max; +my $current; +my $percent; + +#Sum of all ranges: +#name max cur percent touch t+c t+c perc +#All networks 22776 6348 27.871 3973 10321 45.315 + + +my $count=0; + +for $line (@output) { + +$count=1 if ($line =~ /^Sum of all ranges:/); + +if ($count >= 1 and $count <= 3) { + + #print "DEBUG: $line\n"; + + if ($line =~ /\s+([\d]+)\s+([\d]+)\s+([\d]+\.[\d]+)/) { + $max=($1-$2); + $current=$2; + $percent=ceil($3); + + if (defined $ARGV[0] && $ARGV[0] eq "config") { + print_config(); + } else { + print "dhcp_lease_total_current.value $current\n"; + print "dhcp_lease_total_current_max.value $max\n"; + } + + } +$count++; + } + +} + +sub print_config { + +print <<EOF; +graph_title DHCP Total leases +graph_vlabel Total leases +graph_category DHCP +dhcp_lease_total_current.label Currently used IPv4 Leases +dhcp_lease_total_current.min 0 +dhcp_lease_total_current.draw AREASTACK +dhcp_lease_total_current_max.label IPv4 leases +dhcp_lease_total_current_max.draw AREASTACK +dhcp_lease_total_current_max.label Total available IPv4 Leases +EOF + +} + +# print_config; + +#shared net name first ip last ip max cur percent touch t+c t+c perc +# All networks 88.92.0.4 - 88.92.0.62 59 26 44.068 2 28 47.458 + +#} + +# +# dhcp_lease_total_current_max.colour #ff0000 +# dhcp_lease_total_current_max.label Totalt IPv4 Leases +# dhcp_lease_total_current.colour #ff7000 +# pts.draw AREASTACK diff --git a/examples/tg16/munin/dhcp_usage_total_ipv6 b/examples/tg16/munin/dhcp_usage_total_ipv6 new file mode 100644 index 0000000..91e47fc --- /dev/null +++ b/examples/tg16/munin/dhcp_usage_total_ipv6 @@ -0,0 +1,74 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use POSIX; + +my $dhcpd_cmd="/usr/local/bin/dhcpd-pools"; +my $dhcpd_lf="/var/lib/dhcp/dhcpd6.leases"; +my $dhcpd_cf="/etc/dhcp/dhcpd6.conf"; + +my @output = `$dhcpd_cmd -c $dhcpd_cf -l $dhcpd_lf`; + +my $line; +my $max; +my $current; +my $percent; + +#Sum of all ranges: +#name max cur percent touch t+c t+c perc +#All networks 22776 6348 27.871 3973 10321 45.315 + + +my $count=0; + +for $line (@output) { + +$count=1 if ($line =~ /^Sum of all ranges:/); + +if ($count >= 1 and $count <= 3) { + + #print "DEBUG: $line\n"; + + if ($line =~ /\s+([\d]+)\s+([\d]+)\s+([\d]+\.[\d]+)/) { + $max=($1-$2); + $current=$2; + $percent=ceil($3); + + if (defined $ARGV[0] && $ARGV[0] eq "config") { + print_config(); + } else { + print "dhcp_lease_total_current.value $current\n"; + } + + } +$count++; + } + +} + +sub print_config { + +print <<EOF; +graph_title DHCP Total leases +graph_vlabel Total leases +graph_category DHCP +dhcp_lease_total_current.label Currently used IPv6 Leases +dhcp_lease_total_current.min 0 +dhcp_lease_total_current.draw AREASTACK +EOF + +} + +# print_config; + +#shared net name first ip last ip max cur percent touch t+c t+c perc +# All networks 88.92.0.4 - 88.92.0.62 59 26 44.068 2 28 47.458 + +#} + +# +# dhcp_lease_total_current_max.colour #ff0000 +# dhcp_lease_total_current_max.label Totalt IPv4 Leases +# dhcp_lease_total_current.colour #ff7000 +# pts.draw AREASTACK diff --git a/examples/tg16/pxe/README b/examples/tg16/pxe/README new file mode 100644 index 0000000..ac024bb --- /dev/null +++ b/examples/tg16/pxe/README @@ -0,0 +1,2 @@ +The content of this directory is a pure copy-paste from our setup. +Copyrights/license for the respective owners might apply. diff --git a/examples/tg16/pxe/bootx64.efi b/examples/tg16/pxe/bootx64.efi Binary files differnew file mode 100644 index 0000000..07db00a --- /dev/null +++ b/examples/tg16/pxe/bootx64.efi diff --git a/examples/tg16/pxe/chain.c32 b/examples/tg16/pxe/chain.c32 Binary files differnew file mode 100644 index 0000000..cb1813b --- /dev/null +++ b/examples/tg16/pxe/chain.c32 diff --git a/examples/tg16/pxe/grub/fonts/unicode.pf2 b/examples/tg16/pxe/grub/fonts/unicode.pf2 Binary files differnew file mode 100644 index 0000000..166acde --- /dev/null +++ b/examples/tg16/pxe/grub/fonts/unicode.pf2 diff --git a/examples/tg16/pxe/grub/grub.cfg b/examples/tg16/pxe/grub/grub.cfg new file mode 100644 index 0000000..5ea85ba --- /dev/null +++ b/examples/tg16/pxe/grub/grub.cfg @@ -0,0 +1,67 @@ +set default="0" +set timeout=-1 + +if loadfont unicode ; then + set gfxmode=auto + set locale_dir=$prefix/locale + set lang=en_US +fi +terminal_output gfxterm + +set menu_color_normal=white/black +set menu_color_highlight=black/light-gray +if background_color 44,0,30; then + clear +fi + +function gfxmode { + set gfxpayload="${1}" + if [ "${1}" = "keep" ]; then + set vt_handoff=vt.handoff=7 + else + set vt_handoff= + fi +} + +set linux_gfx_mode=keep + +export linux_gfx_mode + +menuentry 'Ubuntu 14.04 amd64 uefi' { + gfxmode $linux_gfx_mode + linux /ubuntu/14.04/amd64/linux $vt_handoff quiet splash + initrd /ubuntu/14.04/amd64/initrd.lz +} + +menuentry 'Debian testing amd uefi' { + gfxmode $linux_gfx_mode + linux /debian/jessie/amd64/linux $vt_handoff quiet splash + initrd /debian/jessie/amd64/linux.gz +} + + +# Don't delete please, Rockj has fucked up his grub :D +menuentry 'Rockjs Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os { + load_video + insmod gzio + insmod part_gpt + insmod ext2 + set root='(hd1,gpt2)' + search --no-floppy --fs-uuid --set=root bc211b41-74ba-494b-a9b6-f890a0295262 + echo 'Loading Linux 3.12.6 ...' + linux /vmlinuz-3.12.6 root=/dev/mapper/sdb4_crypt ro quiet + echo 'Loading initial ramdisk ...' + initrd /initrd.img-3.12.6 +} +menuentry 'Rockjs Debian (recovery mode)' --class debian --class gnu-linux --class gnu --class os { + load_video + insmod gzio + insmod part_gpt + insmod ext2 + set root='(hd1,gpt2)' + search --no-floppy --fs-uuid --set=root bc211b41-74ba-494b-a9b6-f890a0295262 + echo 'Loading Linux 3.12.6 ...' + linux /vmlinuz-3.12.6 root=/dev/mapper/sdb4_crypt ro single + echo 'Loading initial ramdisk ...' + initrd /initrd.img-3.12.6 +} diff --git a/examples/tg16/pxe/grubx64.efi b/examples/tg16/pxe/grubx64.efi Binary files differnew file mode 100644 index 0000000..cbe1f5d --- /dev/null +++ b/examples/tg16/pxe/grubx64.efi diff --git a/examples/tg16/pxe/grubx64.efi.signed b/examples/tg16/pxe/grubx64.efi.signed Binary files differnew file mode 100644 index 0000000..30f3357 --- /dev/null +++ b/examples/tg16/pxe/grubx64.efi.signed diff --git a/examples/tg16/pxe/menu.c32 b/examples/tg16/pxe/menu.c32 Binary files differnew file mode 100644 index 0000000..4fa0a1c --- /dev/null +++ b/examples/tg16/pxe/menu.c32 diff --git a/examples/tg16/pxe/menus/arch.cfg b/examples/tg16/pxe/menus/arch.cfg new file mode 100644 index 0000000..c7d8dfb --- /dev/null +++ b/examples/tg16/pxe/menus/arch.cfg @@ -0,0 +1,23 @@ +# /var/lib/tftpboot/menus/debian.cfg +MENU INCLUDE menus/common.cfg +MENU TITLE Arch Linux Live + +LABEL mainmenu + MENU LABEL ^R Return to Main Menu + COM32 vesamenu.c32 + APPEND ~ + +MENU SEPARATOR + +LABEL arch_live + MENU LABEL ^1 Arch Linux Live (Netboot) + KERNEL arch/boot/vmlinuz_x86_64 + APPEND initrd=arch/boot/initramfs_x86_64.img archisobasedir=arch rw root=/dev/nfs nfsroot=185.110.148.2:/var/lib/tftpboot/arch/arch ip=dhcp keymap=no + +#APPEND boot=casper netboot=nfs nfsroot=151.216.253.3:/var/nfsroot/ubuntu/12.04.4/i386 initrd=ubuntu/12.04.4/i386/initrd.lz -- + + +MENU SEPARATOR + + +TIMEOUT 900 diff --git a/examples/tg16/pxe/menus/background-2013.png b/examples/tg16/pxe/menus/background-2013.png Binary files differnew file mode 100644 index 0000000..293e591 --- /dev/null +++ b/examples/tg16/pxe/menus/background-2013.png diff --git a/examples/tg16/pxe/menus/background-2014.png b/examples/tg16/pxe/menus/background-2014.png Binary files differnew file mode 100644 index 0000000..d7f6b74 --- /dev/null +++ b/examples/tg16/pxe/menus/background-2014.png diff --git a/examples/tg16/pxe/menus/background-2015.png b/examples/tg16/pxe/menus/background-2015.png Binary files differnew file mode 100644 index 0000000..ec71212 --- /dev/null +++ b/examples/tg16/pxe/menus/background-2015.png diff --git a/examples/tg16/pxe/menus/background-2016.png b/examples/tg16/pxe/menus/background-2016.png Binary files differnew file mode 100644 index 0000000..bd1aacb --- /dev/null +++ b/examples/tg16/pxe/menus/background-2016.png diff --git a/examples/tg16/pxe/menus/background.png b/examples/tg16/pxe/menus/background.png Binary files differnew file mode 100644 index 0000000..bd1aacb --- /dev/null +++ b/examples/tg16/pxe/menus/background.png diff --git a/examples/tg16/pxe/menus/common.cfg b/examples/tg16/pxe/menus/common.cfg new file mode 100644 index 0000000..938736b --- /dev/null +++ b/examples/tg16/pxe/menus/common.cfg @@ -0,0 +1,29 @@ +MENU BACKGROUND menus/background.png +ALLOWOPTIONS 1 +PROMPT 0 +MENU WIDTH 78 +MENU ROWS 14 +MENU TABMSGROW 20 +MENU CMDLINEROW 25 +MENU HELPMSGROW 23 +MENU MARGIN 17 +MENU VSHIFT 8 +MENU COLOR BORDER 37;40 #00000000 #00000000 none +MENU COLOR TITLE 37;40 #ff7000 #00000000 none + +MENU COLOR UNSEL 37;40 #0bbbe8 #00ffffff none +MENU COLOR HOTKEY 37;40 #ff6b0035 #00ffffff none + +MENU COLOR SEL 37;40 #363636 #991766ff none +MENU COLOR HOTSEL 37;40 #ff7000 #ffb1dbfa none + +MENU COLOR HELP 37;40 #fff9a11d #00ffffff none +MENU COLOR TIMEOUT_MSG 37;40 #fff9a11d #0faaaaaa none +MENU COLOR TIMEOUT 37;40 #fff9a11d #0faaaaff none + +MENU COLOR PWDBORDER 37;40 #ff7000 #00000000 none +MENU COLOR PWDHEADER 37;40 #0bbbe8 #00ffffff none +MENU COLOR PWDENTRY 37;40 #363636 #00000000 none + + +MENU SEPARATOR diff --git a/examples/tg16/pxe/menus/common.cfg.orig b/examples/tg16/pxe/menus/common.cfg.orig new file mode 100644 index 0000000..fc8cf75 --- /dev/null +++ b/examples/tg16/pxe/menus/common.cfg.orig @@ -0,0 +1,25 @@ +MENU BACKGROUND menus/background-2016.png +MENU RESOLUTION 600 480 +ALLOWOPTIONS 1 +PROMPT 0 +MENU WIDTH 78 +MENU ROWS 14 +MENU TABMSGROW 20 +MENU CMDLINEROW 25 +MENU HELPMSGROW 23 +MENU MARGIN 17 +MENU VSHIFT 8 +MENU COLOR BORDER 37;40 #00000000 #00000000 none +MENU COLOR TITLE 37;40 #ff6b0035 #00000000 none + +MENU COLOR UNSEL 37;40 #ffedeb2d #00ffffff none +MENU COLOR HOTKEY 37;40 #ff6b0035 #00ffffff none + +MENU COLOR SEL 37;40 #ffedeb2d #991766ff none +MENU COLOR HOTSEL 37;40 #ff6b0035 #ffb1dbfa none + +MENU COLOR HELP 37;40 #fff9a11d #00ffffff none +MENU COLOR TIMEOUT_MSG 37;40 #fff9a11d #0faaaaaa none +MENU COLOR TIMEOUT 37;40 #fff9a11d #0faaaaff none + +MENU SEPARATOR diff --git a/examples/tg16/pxe/menus/debian.cfg b/examples/tg16/pxe/menus/debian.cfg new file mode 100644 index 0000000..8745feb --- /dev/null +++ b/examples/tg16/pxe/menus/debian.cfg @@ -0,0 +1,44 @@ +# /var/lib/tftpboot/menus/debian.cfg +MENU INCLUDE menus/common.cfg +MENU TITLE Debian Installers + +LABEL mainmenu + MENU LABEL ^R Return to Main Menu + COM32 vesamenu.c32 + APPEND ~ + +MENU SEPARATOR + +LABEL jessie_amd64_install + MENU LABEL ^1 Debian Testing amd64 (Stretch) netinstall + KERNEL debian/stretch/amd64/linux + APPEND vga=normal initrd=debian/stretch/amd64/initrd.gz -- + +LABEL jessie_i386_install + MENU LABEL ^2 Debian Testing i386 (Stretch) netinstall + KERNEL debian/stretch/i386/linux + APPEND vga=normal initrd=debian/stretch/i386/initrd.gz -- +MENU SEPARATOR + +LABEL wheezy_amd64_install + MENU LABEL ^3 Debian Stable amd64 (Jessie) netinstall + KERNEL debian/jessie/amd64/linux + APPEND vga=normal initrd=debian/jessie/amd64/initrd.gz -- + +LABEL wheezy_i386_install + MENU LABEL ^4 Debian Stable i386 (Jessie) netinstall + KERNEL debian/jessie/i386/linux + APPEND vga=normal initrd=debian/jessie/i386/initrd.gz -- + +LABEL wheezy_amd64_fw + MENU LABEL ^5 Debian FW-added Stable amd64 (Jessie) netinstall + KERNEL debian/jessie_fw/amd64/linux + APPEND initrd=debian/jessie_fw/amd64/initrd.gz -- + +#APPEND boot=casper netboot=nfs nfsroot=151.216.253.3:/var/nfsroot/ubuntu/12.04.4/i386 initrd=ubuntu/12.04.4/i386/initrd.lz -- + + +MENU SEPARATOR + + +TIMEOUT 900 diff --git a/examples/tg16/pxe/menus/hannamontana.cfg b/examples/tg16/pxe/menus/hannamontana.cfg new file mode 100644 index 0000000..a9b3057 --- /dev/null +++ b/examples/tg16/pxe/menus/hannamontana.cfg @@ -0,0 +1,16 @@ +MENU INCLUDE menus/common.cfg +MENU TITLE Hanna Montana Linux :D + +LABEL mainmenu + MENU LABEL ^R Return to Main Menu + COM32 vesamenu.c32 + APPEND ~ + +MENU SEPARATOR + +LABEL hannamontana + MENU LABEL ^1 Hanna Montana LIVE boot + KERNEL hannamontana/casper/vmlinuz + APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=185.110.148.2:/var/lib/tftpboot/hannamontana/ initrd=hannamontana/casper/initrd.gz -- + +TIMEOUT 900 diff --git a/examples/tg16/pxe/menus/tools.cfg b/examples/tg16/pxe/menus/tools.cfg new file mode 100644 index 0000000..48a8757 --- /dev/null +++ b/examples/tg16/pxe/menus/tools.cfg @@ -0,0 +1,36 @@ +# /var/lib/tftpboot/menus/debian.cfg +MENU INCLUDE menus/common.cfg +MENU TITLE Tools + +LABEL mainmenu + MENU LABEL ^R Return to Main Menu + COM32 vesamenu.c32 + APPEND ~ + +MENU SEPARATOR + +LABEL memtest + MENU LABEL ^Memory test using Memtest86+ + TEXT HELP +Run memory test using Memtest86+ + ENDTEXT + KERNEL tools/mt86plus + +LABEL hdt + MENU LABEL ^HDT - Hardware Detection Tool + TEXT HELP +Used to examine system devices, system information, diagnostics + ENDTEXT + COM32 tools/hdt_0_5_2.c32 + APPEND pciids=tools/pci.ids + +LABEL ntpasswd + MENU LABEL ^Offline NT Password Recovery ... + MENU PASSWD windowslol + TEXT HELP +Can be used to recover/clear Windows password. Password protected. + ENDTEXT + KERNEL tools/ntpasswd/vmlinuz + INITRD tools/ntpasswd/initrd.cgz,tools/ntpasswd/scsi.cgz + +TIMEOUT 900 diff --git a/examples/tg16/pxe/menus/ubuntu.cfg b/examples/tg16/pxe/menus/ubuntu.cfg new file mode 100644 index 0000000..62307cd --- /dev/null +++ b/examples/tg16/pxe/menus/ubuntu.cfg @@ -0,0 +1,48 @@ +# /var/lib/tftpboot/menus/ubuntu.cfg +MENU INCLUDE menus/common.cfg +MENU TITLE Ubuntu Live boot + +LABEL mainmenu + MENU LABEL ^R Return to Main Menu + COM32 vesamenu.c32 + APPEND ~ + +MENU SEPARATOR +LABEL ubuntulive_14_10_32 + MENU LABEL ^1 Ubuntu 14.10(LTS) 32bit LIVE boot + KERNEL ubuntu/14.10/i386/casper/vmlinuz + APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=185.110.148.2:/var/lib/tftpboot/ubuntu/14.10/i386/ initrd=ubuntu/14.10/i386/casper/initrd.lz -- + +LABEL ubuntulive_14_10_64 + MENU LABEL ^2 Ubuntu 14.10(LTS) 64bit LIVE boot + KERNEL ubuntu/14.10/amd64/casper/vmlinuz.efi + APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=185.110.148.2:/var/lib/tftpboot/ubuntu/14.10/amd64/ initrd=ubuntu/14.10/amd64/casper/initrd.lz -- +MENU SEPARATOR + +LABEL ubuntulive_15_10_32 + MENU LABEL ^3 Ubuntu 15.10 32bit LIVE boot + KERNEL ubuntu/15.10/i386/casper/vmlinuz + APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=185.110.148.2:/var/lib/tftpboot/ubuntu/15.10/i386/ initrd=ubuntu/15.10/i386/casper/initrd.lz -- + +LABEL ubuntulive_15_10_64 + MENU LABEL ^4 Ubuntu 15.10 64bit LIVE boot + KERNEL ubuntu/15.10/amd64/casper/vmlinuz.efi + APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=185.110.148.2:/var/lib/tftpboot/ubuntu/15.10/amd64/ initrd=ubuntu/15.10/amd64/casper/initrd.lz -- +MENU SEPARATOR + +#LABEL ubuntuserverlive32 +# MENU LABEL ^3 Ubuntu Server 14.10 32bit LIVE boot +# KERNEL ubuntu/server/15.10/i386/install/vmlinuz +# APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=185.110.148.2:/var/lib/tftpboot/ubuntu/server/14.10/i386/ initrd=ubuntu/server/14.10/i386/install/initrd.gz -- + +#LABEL ubuntuserverlive64 +# MENU LABEL ^4 Ubuntu Server 14.10 64bit LIVE boot +# KERNEL ubuntu/server/14.10/amd64/install/vmlinuz +# APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=185.110.148.2:/var/lib/tftpboot/ubuntu/server/14.10/amd64/ initrd=ubuntu/server/14.10/amd64/install/initrd.gz -- + +#LABEL xpangolin32live +# MENU LABEL ^2 xubuntu 14.04.2 32bit LIVE boot +# KERNEL ubuntu/12.04.4/i386/vmlinuz +# APPEND boot=casper netboot=nfs nfsroot=151.216.253.3:/var/nfsroot/ubuntu/12.04.4/i386 initrd=ubuntu/12.04.4/i386/initrd.lz -- + +TIMEOUT 900 diff --git a/examples/tg16/pxe/menus/ubuntu_bak.cfg b/examples/tg16/pxe/menus/ubuntu_bak.cfg new file mode 100644 index 0000000..c533dbf --- /dev/null +++ b/examples/tg16/pxe/menus/ubuntu_bak.cfg @@ -0,0 +1,22 @@ +# /var/lib/tftpboot/menus/ubuntu.cfg +MENU INCLUDE menus/common.cfg +MENU TITLE Ubuntu Live boot + +LABEL mainmenu + MENU LABEL ^R Return to Main Menu + COM32 vesamenu.c32 + APPEND ~ + +MENU SEPARATOR + +LABEL kalin32live + MENU LABEL ^1 Ubuntu 14.10 32bit LIVE boot + KERNEL ubuntu/14.10/casper/vmlinuz + APPEND boot=casper root=/dev/nfs netboot=nfs nfsroot=185.110.148.2:/srv/nfsroot/ubuntu/14.10/casper initrd=ubuntu/14.10/casper/initrd.lz -- + +#LABEL xpangolin32live +# MENU LABEL ^2 xubuntu 14.04.2 32bit LIVE boot +# KERNEL ubuntu/12.04.4/i386/vmlinuz +# APPEND boot=casper netboot=nfs nfsroot=151.216.253.3:/var/nfsroot/ubuntu/12.04.4/i386 initrd=ubuntu/12.04.4/i386/initrd.lz -- + +TIMEOUT 900 diff --git a/examples/tg16/pxe/pxelinux.0 b/examples/tg16/pxe/pxelinux.0 Binary files differnew file mode 100644 index 0000000..c763741 --- /dev/null +++ b/examples/tg16/pxe/pxelinux.0 diff --git a/examples/tg16/pxe/pxelinux.cfg/default b/examples/tg16/pxe/pxelinux.cfg/default new file mode 100644 index 0000000..733fe60 --- /dev/null +++ b/examples/tg16/pxe/pxelinux.cfg/default @@ -0,0 +1,49 @@ +# /var/lib/tftpboot/pxelinux.cfg/default +DEFAULT vesamenu.c32 +MENU INCLUDE menus/common.cfg +MENU TITLE The Gathering 2016 - SWITCHED ON + +LABEL boot_hd0 + MENU LABEL Boot from first hard drive + MENU DEFAULT + TEXT HELP +Boots your system as normal from the first BIOS drive + ENDTEXT + COM32 chain.c32 + APPEND hd0 + +MENU SEPARATOR + +LABEL debian + MENU LABEL ^1 Debian + TEXT HELP +Debian installers and live-boot options. + ENDTEXT + COM32 vesamenu.c32 + APPEND menus/debian.cfg + +LABEL ubuntu + MENU LABEL ^2 Ubuntu + TEXT HELP +Ubuntu installers and live-boot options. + ENDTEXT + COM32 vesamenu.c32 + APPEND menus/ubuntu.cfg + +LABEL hannamontana + MENU LABEL ^3 Hanna Montana + COM32 vesamenu.c32 + APPEND menus/hannamontana.cfg + +LABEL arch + MENU LABEL ^4 Arch Linux + COM32 vesamenu.c32 + APPEND menus/arch.cfg + +LABEL tools + MENU LABEL ^5 Tools + COM32 vesamenu.c32 + APPEND menus/tools.cfg + +ONTIMEOUT boot_hd0 +TIMEOUT 300 diff --git a/examples/tg16/pxe/tools/hdt.c32 b/examples/tg16/pxe/tools/hdt.c32 Binary files differnew file mode 100644 index 0000000..d358fc7 --- /dev/null +++ b/examples/tg16/pxe/tools/hdt.c32 diff --git a/examples/tg16/pxe/tools/hdt_0_5_2.c32 b/examples/tg16/pxe/tools/hdt_0_5_2.c32 Binary files differnew file mode 100644 index 0000000..85caa15 --- /dev/null +++ b/examples/tg16/pxe/tools/hdt_0_5_2.c32 diff --git a/examples/tg16/pxe/tools/memtest86+-5.01.zip b/examples/tg16/pxe/tools/memtest86+-5.01.zip Binary files differnew file mode 100644 index 0000000..5318646 --- /dev/null +++ b/examples/tg16/pxe/tools/memtest86+-5.01.zip diff --git a/examples/tg16/pxe/tools/mt86plus b/examples/tg16/pxe/tools/mt86plus Binary files differnew file mode 100644 index 0000000..affaaab --- /dev/null +++ b/examples/tg16/pxe/tools/mt86plus diff --git a/examples/tg16/pxe/tools/ntpasswd/boot.msg b/examples/tg16/pxe/tools/ntpasswd/boot.msg new file mode 100644 index 0000000..779e8d4 --- /dev/null +++ b/examples/tg16/pxe/tools/ntpasswd/boot.msg @@ -0,0 +1,25 @@ + + +*************************************************************************** +* * +* Windows Reset Password / Registry Editor / Boot CD * +* * +* (c) 1998-2014 Petter Nordahl-Hagen. Distributed under GNU GPL v2 * +* * +* DISCLAIMER: THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTIES! * +* THE AUTHOR CAN NOT BE HELD RESPONSIBLE FOR ANY DAMAGE * +* CAUSED BY THE (MIS)USE OF THIS SOFTWARE * +* * +* More info at: http://pogostick.net/~pnh/ntpasswd/ * +* Email : pnh@pogostick.net * +* * +* CD build date: Sat Feb 1 17:35:02 CET 2014 * +*************************************************************************** + +Press enter to boot, or give linux kernel boot options first if needed. +Some that I have to use once in a while: +boot nousb - to turn off USB if not used and it causes problems +boot irqpoll - if some drivers hang with irq problem messages +boot vga=ask - if you have problems with the videomode +boot nodrivers - skip automatic disk driver loading + diff --git a/examples/tg16/pxe/tools/ntpasswd/initrd.cgz b/examples/tg16/pxe/tools/ntpasswd/initrd.cgz Binary files differnew file mode 100644 index 0000000..a1e05b2 --- /dev/null +++ b/examples/tg16/pxe/tools/ntpasswd/initrd.cgz diff --git a/examples/tg16/pxe/tools/ntpasswd/isolinux.bin b/examples/tg16/pxe/tools/ntpasswd/isolinux.bin Binary files differnew file mode 100644 index 0000000..8904f61 --- /dev/null +++ b/examples/tg16/pxe/tools/ntpasswd/isolinux.bin diff --git a/examples/tg16/pxe/tools/ntpasswd/isolinux.cfg b/examples/tg16/pxe/tools/ntpasswd/isolinux.cfg new file mode 100644 index 0000000..1c4dc2e --- /dev/null +++ b/examples/tg16/pxe/tools/ntpasswd/isolinux.cfg @@ -0,0 +1,11 @@ +#serial 0 19200
+default boot
+display boot.msg
+timeout 250
+prompt 1
+label boot
+ kernel vmlinuz
+
+append rw vga=1 initrd=initrd.cgz,scsi.cgz loglevel=1
+#console=ttyS0
+
diff --git a/examples/tg16/pxe/tools/ntpasswd/readme.txt b/examples/tg16/pxe/tools/ntpasswd/readme.txt new file mode 100644 index 0000000..b16f7d6 --- /dev/null +++ b/examples/tg16/pxe/tools/ntpasswd/readme.txt @@ -0,0 +1,58 @@ +***************************************************************************
+* *
+* Windows Change Password / Registry Editor / Boot CD *
+* *
+* (c) 1998-2014 Petter Nordahl-Hagen. Distributed under GNU GPL v2 *
+* *
+* DISCLAIMER: THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTIES! *
+* THE AUTHOR CAN NOT BE HELD RESPONSIBLE FOR ANY DAMAGE *
+* CAUSED BY THE (MIS)USE OF THIS SOFTWARE *
+* *
+* More info at: http://pogostick.net/~pnh/ntpasswd/ *
+* Email : pnh@pogostick.net *
+***************************************************************************
+
+Just boot this CD and follow instructions.
+Usually, just pressing return/enter should work, except some
+drivers may have to be loaded manually with the 'm' menu option after boot.
+
+ ---
+
+The password reset and registry edit has now been tested with the following:
+
+NT 3.51, NT 4, Windows 2000, Windows XP, Windows 2003 Server,
+Vista, Windows 7, Server 2008, Windows 8, Windows 8.1, Server 2012
+
+As far as I know, it will work with all Service Packs (SP) and
+all editions (Professional, Server, Home etc)
+Also, 64 bit windows versions shold be OK.
+
+ ---
+
+To make a bootable USB drive / key:
+
+1. Copy all files from this CD onto the USB drive.
+ It cannot be in a subdirectory on the drive.
+ You do not need delete files already on the drive.
+2. Install the bootloader
+ On the USB drive, there should now be a file "syslinux.exe".
+ Start a command line window (cmd.exe) with "run as administrator"
+ From the command line, run the command like this:
+
+
+ j:\syslinux.exe -ma j:
+
+replace j with some other letter if your USB drive is on another
+drive letter than j:
+On some drives, you may have to omit the -ma option if you
+get an error.
+If it says nothing, it probably did install the bootloader.
+
+Please note that you may have to adjust settings in your computers BIOS
+setup to boot from USB.
+Also, some BIOS (often older machines) simply won't boot from USB anyway.
+Unfortunately, there are extremely many different versions of BIOS,
+and a lot of them are rather buggy when it comes to booting off different
+media, so I am unable to help you.
+
+
diff --git a/examples/tg16/pxe/tools/ntpasswd/scsi.cgz b/examples/tg16/pxe/tools/ntpasswd/scsi.cgz Binary files differnew file mode 100644 index 0000000..441abb3 --- /dev/null +++ b/examples/tg16/pxe/tools/ntpasswd/scsi.cgz diff --git a/examples/tg16/pxe/tools/ntpasswd/syslinux.cfg b/examples/tg16/pxe/tools/ntpasswd/syslinux.cfg new file mode 100644 index 0000000..1c4dc2e --- /dev/null +++ b/examples/tg16/pxe/tools/ntpasswd/syslinux.cfg @@ -0,0 +1,11 @@ +#serial 0 19200
+default boot
+display boot.msg
+timeout 250
+prompt 1
+label boot
+ kernel vmlinuz
+
+append rw vga=1 initrd=initrd.cgz,scsi.cgz loglevel=1
+#console=ttyS0
+
diff --git a/examples/tg16/pxe/tools/ntpasswd/syslinux.exe b/examples/tg16/pxe/tools/ntpasswd/syslinux.exe Binary files differnew file mode 100644 index 0000000..a67dc0d --- /dev/null +++ b/examples/tg16/pxe/tools/ntpasswd/syslinux.exe diff --git a/examples/tg16/pxe/tools/ntpasswd/vmlinuz b/examples/tg16/pxe/tools/ntpasswd/vmlinuz Binary files differnew file mode 100644 index 0000000..356f43d --- /dev/null +++ b/examples/tg16/pxe/tools/ntpasswd/vmlinuz diff --git a/examples/tg16/pxe/tools/pci.ids b/examples/tg16/pxe/tools/pci.ids new file mode 100644 index 0000000..7990263 --- /dev/null +++ b/examples/tg16/pxe/tools/pci.ids @@ -0,0 +1,26662 @@ +# +# List of PCI ID's +# +# Version: 2015.01.28 +# Date: 2015-01-28 03:15:02 +# +# Maintained by Martin Mares <mj@ucw.cz> and other volunteers from the +# PCI ID Project at http://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. +# + +# Vendors, devices and subsystems. Please keep sorted. + +# Syntax: +# vendor vendor_name +# device device_name <-- single tab +# subvendor subdevice subsystem_name <-- two tabs + +0010 Allied Telesis, Inc (Wrong ID) +# This is a relabelled RTL-8139 + 8139 AT-2500TX V3 Ethernet +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 Corp Ltd +0123 General Dynamics +# 018a is not LevelOne but there is a board misprogrammed +018a LevelOne + 0106 FPC-0106TX misprogrammed [RTL81xx] +# 021b is not Compaq but there is a board misprogrammed +021b Compaq Computer Corporation + 8139 HNE-300 (RealTek RTL8139c) [iPaq Networking] +0270 Hauppauge computer works Inc. (Wrong ID) +# SpeedStream is Efficient Networks, Inc, a Siemens Company +02ac SpeedStream + 1012 1012 PCMCIA 10/100 Ethernet Card [RTL81xx] +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] +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. +0777 Ubiquiti Networks, Inc. +0795 Wired Inc. + 6663 Butane II (MPEG2 encoder board) + 6666 MediaPress (MPEG2 encoder board) +07d1 D-Link System Inc +0925 VIA Technologies, Inc. (Wrong ID) +0a89 BREA Technologies Inc +0b0b Rhino Equipment Corp. + 0105 Rhino R1T1 + 0205 Rhino R4FXO + 0206 RCB4FXO 4-channel FXO analog telphony card + 0305 Rhino R4T1 + 0405 Rhino R8FXX + 0406 RCB8FXX 8-channel modular analog telphony card + 0505 Rhino R24FXX + 0506 RCB24FXS 24-Channel FXS analog telphony card + 0605 Rhino R2T1 + 0705 Rhino R24FXS + 0706 RCB24FXO 24-Channel FXO analog telphony card + 0905 R1T3 Single T3 Digital Telephony Card + 0906 RCB24FXX 24-channel modular analog telphony card + 0a06 RCB672FXX 672-channel modular analog telphony card +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 + b204 Integrated Lights Out Processor + 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. +# Formerly NCR +1000 LSI Logic / Symbios Logic + 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 + 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 + 124b 1170 PMC-USCSI320 +# VMware's emulation of this device. Was missing from the list. + 15ad 1976 LSI Logic Parallel SCSI Controller + 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 + 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 + 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 + 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 3513 RMS25CB080 RAID Controller + 005c SAS1064A PCI-X Fusion-MPT SAS + 005d MegaRAID SAS-3 3108 [Invader] + 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 FS33xS + 1028 1f4f PERC H730P Slim + 1028 1f54 PERC FS33xD + 17aa 1052 ThinkServer RAID 720i + 17aa 1053 ThinkServer RAID 720ix + 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) + 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] + 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] + 0071 MR SAS HBA 2004 + 0072 SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] + 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 Internal Tape Adapter + 8086 350f RMS2LL040 RAID Controller + 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 + 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 + 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 9256 MegaRAID SAS 9260DE-8i + 8086 9260 RAID Controller RS2BL040 + 8086 9261 RAID Controller RS2BL080 + 8086 9264 Warm Beach (Caster Lite) + 8086 9267 RAID Controller RS2VB040 + 8086 9268 RAID Controller RS2VB080 + 007c MegaRAID SAS 1078DE + 1014 0395 ServeRAID-AR10is SAS/SATA Controller + 007e SSS6200 PCI-Express Flash SSD + 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 + 0087 SAS2308 PCI-Express Fusion-MPT SAS-2 + 1590 0044 H220i + 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 + 1028 1f45 12GB/s HBA internal + 1028 1f46 12Gbps HBA + 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 + 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 + 6001 DX1 Multiformat Broadcast HD/SD Encoder/Decoder +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 + 1309 Kaveri [Radeon R6/R7 Graphics] + 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] + 1714 BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series] + 103c 168b ProBook 4535s + 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 X600] + 3e54 RV380 GL [FireGL V3200] + 3e70 RV380 [Radeon 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 + 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) + 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 IXP150 AC'97 Audio Controller + 4342 IXP200 3COM 3C920B Ethernet Controller + 4345 EHCI USB Controller + 4347 OHCI USB Controller #1 + 4348 OHCI USB Controller #2 + 4349 Dual Channel Bus Master PCI IDE Controller + 434d IXP AC'97 Modem + 4353 SMBus + 4354 215CT [Mach64 CT PCI] + 4358 210888CX [Mach64 CX] + 4361 IXP SB300 AC'97 Audio Controller + 4363 SMBus + 436e 436E 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 + 1179 ff50 Satellite P305D-S8995E + 1458 a022 GA-MA770-DS3rev2.0 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 + 1179 ff50 Satellite P305D-S8995E + 1458 4385 GA-MA770-DS3rev2.0 Motherboard + 1462 7368 K9AG Neo2 + 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 + 1458 b002 GA-MA770-DS3rev2.0 Motherboard + 1849 4390 Motherboard (one of many) + 4391 SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] + 103c 1611 Pavilion DM1Z-3000 + 1043 82ef M3A78-EH Motherboard + 1043 8443 M5A88-V EVO + 174b 1001 PURE Fusion Mini + 4392 SB7x0/SB8x0/SB9x0 SATA Controller [Non-RAID5 mode] + 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 1611 Pavilion DM1Z-3000 + 1043 82ef M3A78-EH Motherboard + 1043 8443 M5A88-V EVO + 15d9 a811 H8DGU + 174b 1001 PURE Fusion Mini + 4397 SB7x0/SB8x0/SB9x0 USB OHCI0 Controller + 1019 2120 A785GM-M + 103c 1611 Pavilion DM1Z-3000 + 1043 82ef M3A78-EH Motherboard + 1043 8443 M5A88-V EVO + 15d9 a811 H8DGU + 174b 1001 PURE Fusion Mini + 4398 SB7x0 USB OHCI1 Controller + 1019 2120 A785GM-M + 1043 82ef M3A78-EH 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 + 174b 1001 PURE Fusion Mini + 439c SB7x0/SB8x0/SB9x0 IDE Controller + 1019 2120 A785GM-M + 1043 82ef M3A78-EH Motherboard + 439d SB7x0/SB8x0/SB9x0 LPC host controller + 1019 2120 A785GM-M + 103c 1611 Pavilion DM1Z-3000 + 1043 82ef M3A78-EH Motherboard + 1043 8443 M5A88-V EVO + 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] + 4654 Mach64 VT + 4742 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 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 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 3D Rage II/II+ PCI [Mach64 GT] + 4755 Mach64 GTB [3D Rage II+ DVD] + 4756 3D Rage IIC PCI [Mach64 GT IIC] + 1002 4756 Rage IIC + 4757 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 210888GX [Mach64 GX PCI] + 4759 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 + 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 3D Rage LT PRO AGP 2X + 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 IBM 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 + 4c50 3D Rage LT PRO PCI + 1002 4c50 Rage LT Pro + 4c52 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 [Mobility Radeon 9600 PRO Turbo] + 1025 005a TravelMate 290 + 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 128 PRO AGP 4x TMDS + 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 Rage128 [Xpert 128 PCI] + 1002 0008 Xpert 128 + 5052 Rage 128 PRO AGP 4X TMDS + 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] + 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] + 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 Fury/Xpert 128/Xpert 2000 AGP 2x + 1002 0004 Magnum/Xpert 128/Xpert 99 + 1002 0008 Magnum/Xpert128/X99/Xpert2000 + 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 + 5346 Rage 128 SF/4x AGP 2x + 1002 0048 RAGE 128 16MB VGA TVOUT AMC PAL + 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 R430 [Radeon X800 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 R430 [Radeon X800 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 HP Compaq NW8240 Mobile Workstation + 5654 264VT [Mach64 VT] + 1002 5654 Mach64VT Reference + 5655 264VT3 [Mach64 VT3] + 5656 264VT4 [Mach64 VT4] + 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] + 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 Radeon 9200 SE + 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 RD890 PCI to PCI bridge (external gfx0 port A) + 5a14 RD890 PCI to PCI bridge (external gfx0 port B) + 5a15 RD890 PCI to PCI bridge (PCI express gpp port A) + 5a16 RD890 PCI to PCI bridge (PCI express gpp port B) + 5a17 RD890 PCI to PCI bridge (PCI express gpp port C) + 5a18 RD890 PCI to PCI bridge (PCI express gpp port D) + 15d9 a811 H8DGU + 5a19 RD890 PCI to PCI bridge (PCI express gpp port E) + 5a1a RD890 PCI to PCI bridge (PCI express gpp port F) + 5a1b RD890 PCI to PCI bridge (PCI express gpp port G) + 5a1c RD890 PCI to PCI bridge (PCI express gpp port H) + 5a1d RD890 PCI to PCI bridge (external gfx1 port A) + 5a1e RD890 PCI to PCI bridge (external gfx1 port B) + 5a1f RD890 PCI to PCI bridge (NB-SB link) + 15d9 a811 H8DGU + 5a20 RD890S PCI Express bridge for GPP2 port 1 + 5a23 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 Radeon 9200 SE (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] + 103c 1952 ProBook 455 G1 + 6601 Mars [Radeon HD 8730M] + 103c 2100 FirePro M4100 + 6602 Mars + 6603 Mars + 6604 Opal XT [Radeon R7 M265] + 6605 Opal PRO [Radeon R7 M260] + 6606 Mars XTX [Radeon HD 8790M] + 1028 0684 FirePro W4170M + 6607 Mars LE [Radeon HD 8530M / R5 M240] + 6608 Oland GL [FirePro W2100] + 6610 Oland XT [Radeon HD 8670 / R7 250] + 1019 0030 Radeon HD 8670 + 1028 2120 Radeon R7 250 + 1028 2322 Radeon R7 250 + 1462 2910 Radeon HD 8670 + 1462 2911 Radeon HD 8670 + 1642 3c81 Radeon HD 8670 + 1642 3c91 Radeon HD 8670 + 6611 Oland [Radeon HD 8570 / R7 240 OEM] + 1028 210b Radeon R5 240 OEM + 174b 4248 Radeon R7 240 OEM + 174b a240 Radeon R7 240 OEM + 1b0a 90d3 Radeon R7 240 OEM + 6613 Oland PRO [Radeon R7 240] + 1682 7240 R7 240 2048 MB + 6620 Mars + 6621 Mars PRO + 6623 Mars + 6631 Oland + 6640 Saturn XT [FirePro M6100] + 6641 Saturn PRO [Radeon HD 8930M] + 6646 Bonaire XT [Radeon R9 M280X] + 6647 Bonaire PRO [Radeon R9 M270X] + 6649 Bonaire [FirePro W5100] + 6650 Bonaire + 6651 Bonaire + 6658 Bonaire XTX [Radeon R7 260X] + 665c Bonaire XT [Radeon HD 7790/8770 / R9 260 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 + 148c 9260 Radeon R9 260 OEM +# 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] + 6660 Sun XT [Radeon HD 8670A/8670M/8690M] + 6663 Sun PRO [Radeon HD 8570A/8570M] + 1025 0846 Radeon HD 8570A + 6664 Jet XT [Radeon R5 M240] + 6665 Jet PRO [Radeon R5 M230] + 6667 Jet ULT [Radeon R5 M230] + 666f Sun LE [Radeon HD 8550M / R5 M230] + 6670 Hainan + 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 + 6724 Blackcomb [Mobility Radeon HD 6000 series] + 6725 Blackcomb [Radeon HD 6900M Series] + 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] + 674a Turks GL [FirePro V3900] + 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] + 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 + 174b 7570 Radeon HD 7570 + 174b e142 Radeon HD 6570 + 174b e181 Radeon HD 6570 + 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 + 1028 051d Radeon HD 6450M + 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 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 + 1642 3c65 Radeon HD 8470 + 1642 3c75 Radeon HD 8470 + 174b 8145 Radeon HD 8470 + 174b e145 Radeon HD 7470 + 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 + 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 + 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 [ATI FirePro V (FireGL V) Graphics Adapter] + 6788 Tahiti [ATI FirePro V (FireGL V) 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 + 6790 Tahiti + 6791 Tahiti + 6792 Tahiti + 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 + 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 MSI R7970 TF 3GD5/OC BE + 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] + 6799 New Zealand [Radeon HD 7900 Series] + 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] + 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] + 679f Tahiti + 67a0 Hawaii XT GL [FirePro W9100] + 67a1 Hawaii PRO GL [FirePro W8100] + 67a2 Hawaii GL + 67a8 Hawaii + 67a9 Hawaii + 67aa Hawaii + 67b0 Hawaii XT [Radeon R9 290X] + 67b1 Hawaii PRO [Radeon R9 290] + 67b9 Vesuvius [Radeon R9 295X2] + 67be Hawaii LE + 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 + 6809 Pitcairn LE GL [FirePro W5000] + 6810 Curacao XT [Radeon R9 270X] + 6811 Curacao PRO [Radeon R9 270] + 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] + 174b e221 Radeon HD 7850 2GB GDDR5 DVI-I/DVI-D/HDMI/DP + 6820 Venus XTX [Radeon HD 8890M / R9 M275X] + 103c 1851 Radeon HD 7750M + 17aa 3801 Radeon R9 M275 + 6821 Venus XT [Radeon HD 8870M / R9 M270X] + 1002 031e FirePro SX4000 + 1028 05cc FirePro M5100 + 1028 15cc FirePro M5100 + 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] + 6829 Cape Verde + 682a Venus PRO + 682b Venus LE [Radeon HD 8830M] + 682c Cape Verde GL [FirePro W4100] + 682d Chelsea XT GL [FirePro M4000] + 682f Chelsea LP [Radeon HD 7730M] + 103c 1851 Radeon HD 7750M + 6830 Cape Verde [Radeon HD 7800M Series] + 6831 Cape Verde [AMD Radeon HD 7700M Series] + 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 + 6838 Cape Verde + 6839 Cape Verde + 683b Cape Verde [Radeon HD 7700 Series] + 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 / R7 250E] + 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] + 6888 Cypress XT [FirePro V8800] + 6889 Cypress PRO [FirePro V7800] + 1002 0301 FirePro V7800P + 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] + 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 Madison [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] + 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] + 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) + 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] + 1028 0640 Radeon R7 M265 + 103c 2269 Radeon R7 M260 + 103c 22c8 Radeon R7 M260 + 1179 f903 Radeon R7 M260 + 1179 f934 Radeon R7 M260 + 6901 Topaz PRO [Radeon R5 M255] + 6920 Tonga + 6921 Amethyst XT [Radeon R9 M295X] + 692b Tonga PRO GL [FirePro W7100] + 692f Tonga XT GL [FirePro W8100] + 6938 Amethyst XT [Radeon R9 M295X Mac Edition] + 6939 Tonga PRO [Radeon R9 285] + 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] + 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] + 7120 R520 [Radeon X1800] (Secondary) + 7124 R520 GL [FireGL V7200] (Secondary) + 7129 R520 [Radeon X1800] (Secondary) + 1002 0323 All-In-Wonder X1800 XL (Secondary) + 1002 0d03 Radeon X1800 CrossFire Edition (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] + 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) + 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] + 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] + 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) + 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) + 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 Host Bridge + 7912 RS690 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] + 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] + 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] + 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/545v] + 1025 015e Mobility Radeon HD 4570 + 1025 017d Mobility Radeon HD 4570 + 1025 0205 Mobility Radeon HD 4570 + 1025 0206 Mobility Radeon HD 4570 + 1025 0237 Mobility Radeon HD 4570 + 1028 02be Mobility Radeon HD 4570 + 1028 02e8 Mobility Radeon HD 4530 + 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) + 9555 RV710/M92 [Mobility Radeon HD 4350/4550] + 103c 1411 ProBook 4720s GPU (Mobility Radeon HD 4350) + 9557 RV711 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] +# Rebranded 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] + 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] + 9599 RV635 PRO [Radeon HD 3650 AGP] + 95c0 RV620 PRO [Radeon HD 3470] + 1002 95c0 Mobility Radeon HD 3470 + 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 OptiPlex 980 + 95c6 RV620 LE [Radeon HD 3450 AGP] + 95c9 RV620 LE [Radeon HD 3450 PCI] + 95cc RV620 GL [FirePro V3700] + 95cd RV620 [FirePro 2450] + 95cf RV620 GL [FirePro 2260] + 960f RS780 HDMI Audio [Radeon (HD) 3000 Series] + 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] + 9616 RS780L [Radeon 3000] + 9640 BeaverCreek [Radeon HD 6550D] + 9641 BeaverCreek [Radeon HD 6620G] + 9642 Sumo [Radeon HD 6370D] + 9643 Sumo [Radeon HD 6380G] + 9644 Sumo [Radeon HD 6410D] + 9645 Sumo [Radeon HD 6410D] + 9647 BeaverCreek [Radeon HD 6520G] + 9648 Sumo [Radeon HD 6480G] + 9649 Sumo [Radeon HD 6480G] + 964a BeaverCreek [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] + 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] + 9831 Kabini [Radeon HD 8400E] + 9832 Kabini [Radeon HD 8330] + 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] + 983a Kabini + 983b Kabini + 983c Kabini + 983d Temash [Radeon HD 8250/8280G] + 983e Kabini + 983f Kabini + 9840 Kabini HDMI/DP Audio + 9850 Mullins [Radeon R3 Graphics] + 9851 Mullins [Radeon R4/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 + 9900 Trinity [Radeon HD 7660G] +# AMD A10-5800K CPU + 9901 Trinity [Radeon HD 7660D] + 9902 Trinity HDMI Audio Controller + 103c 194e ProBook 455 G1 Notebook + 9903 Trinity [Radeon HD 7640G] + 103c 194e ProBook 455 G1 Notebook + 103c 1952 ProBook 455 G1 Notebook + 9904 Trinity [Radeon HD 7560D] + 9905 Trinity [FirePro A300 Series Graphics] + 9906 Trinity [FirePro A300 Series Graphics] + 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] + 9990 Trinity [Radeon HD 7520G] + 9991 Trinity [Radeon HD 7540D] + 9992 Trinity [Radeon HD 7420G] + 9993 Trinity [Radeon HD 7480D] + 9994 Trinity [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 +# AMD Quad-Core A8-Series APU A8-6500T with Radeon HD 8550D + 999d Richland [Radeon HD 8550D] + 99a0 Trinity [Radeon HD 7520G] + 99a2 Trinity [Radeon HD 7420G] + 99a4 Trinity [Radeon HD 7400G] + aa00 R600 HDMI Audio [Radeon HD 2900 Series] + aa08 RV630 HDMI Audio [Radeon HD 2600 Series] + aa10 RV610 HDMI Audio [Radeon HD 2350/2400 Series] + 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 3600 Series] + aa28 RV620 HDMI Audio [Radeon HD 3400 Series] + 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 5800 Series] + 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 Series] + 1028 aa68 XPS 8300 + aa80 Cayman/Antilles HDMI Audio [Radeon HD 6900 Series] + aa88 Barts HDMI Audio [Radeon HD 6800 Series] + aa90 Turks/Whistler HDMI Audio [Radeon HD 6000 Series] + 1028 04a3 Precision M4600 + aa98 Caicos HDMI Audio [Radeon HD 6400 Series] + 174b aa98 Radeon HD 6450 1GB DDR3 + aaa0 Tahiti XT HDMI Audio [Radeon HD 7970 Series] + aab0 Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series] + ac00 Theater 600 Pro + ac02 TV Wonder HD 600 PCIe + 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 DEFPA FDDI PCI-to-PDQ Interface Chip [PFI] + 1011 def1 FDDI controller (DEFPA) + 103c def1 FDDI controller (3X-DEFPA) + 0014 DECchip 21041 [Tulip Pass 3] + 1186 0100 DE-530+ + 0016 DGLPB [OPPO] + 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 256-bit Graphics Rasterizer [FireGL1] + 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 + 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 + 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 + 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 0c49 PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCD) + 044b GenWQE Accelerator Adapter + 04aa Flash Adapter 90 (PCIe2 0.9TB) + 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 +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 + 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 + 1412 Family 15h (Models 10h-1fh) Processor Root Port + 1413 Family 15h (Models 10h-1fh) Processor Root Port + 1414 Family 15h (Models 10h-1fh) Processor Root Port + 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 + 1426 Family 15h (Models 30h-3fh) Processor Root Port + 1439 Family 16h Processor Functions 5:1 + 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 + 1538 Family 16h Processor Function 0 + 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 + 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 + 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 79c970 [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 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 + 2001 79c978 [HomePNA] + 1092 0a78 Multimedia Home Network Adapter + 1668 0299 ActionLink Home Network Adapter + 2003 Am 1771 MBW [Alchemy] + 2020 53c974 [PCscsi] + 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 + 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) + 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 + 7802 FCH SATA Controller [RAID mode] + 7803 FCH SATA Controller [RAID mode] + 7804 FCH SATA Controller [AHCI mode] + 7805 FCH SATA Controller [RAID mode] + 7806 FCH SD Flash Controller + 7807 FCH USB OHCI Controller + 103c 194e ProBook 455 G1 Notebook + 7808 FCH USB EHCI Controller + 103c 194e ProBook 455 G1 Notebook + 7809 FCH USB OHCI Controller + 103c 194e ProBook 455 G1 Notebook + 780b FCH SMBus Controller + 103c 194e ProBook 455 G1 Notebook + 780c FCH IDE Controller + 780d FCH Azalia Controller + 103c 194e ProBook 455 G1 Notebook + 1043 8444 F2A85-M Series + 780e FCH LPC Bridge + 103c 194e ProBook 455 G1 Notebook + 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 + 7900 FCH SATA Controller [IDE mode] + 7901 FCH SATA Controller [AHCI mode] + 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 + 790e FCH LPC Bridge + 790f FCH PCI Bridge + 7914 FCH USB XHCI Controller + 9600 RS780 Host Bridge + 1043 82f1 M3A78-EH Motherboard + 9601 RS880 Host Bridge + 1019 2120 A785GM-M + 1043 843e M5A88-V EVO + 9602 RS780/RS880 PCI to PCI bridge (int gfx) + 9603 RS780 PCI to PCI bridge (ext gfx port 0) + 9604 RS780/RS880 PCI to PCI bridge (PCIE port 0) + 9605 RS780/RS880 PCI to PCI bridge (PCIE port 1) + 9606 RS780 PCI to PCI bridge (PCIE port 2) + 9607 RS780/RS880 PCI to PCI bridge (PCIE port 3) + 9608 RS780/RS880 PCI to PCI bridge (PCIE port 4) + 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) +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 Zenith Data Systems +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 +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 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 + 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 G200 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 0624 X9SCM-F Motherboard + 15d9 a811 H8DGU + 0533 MGA G200EH + 103c 3381 iLO4 + 0534 G200eR2 + 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 + 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 +# PCI\VEN_102B&DEV_2527&SUBSYS_0F42102B&REV_01 + 102b 0f42 Matrox G550 Low Profile PCI + 102b 0f83 Millennium G550 + 102b 0f84 Millennium G550 Dual Head DDR 32Mb + 102b 1e41 Millennium G550 + 102b 2300 Millennium G550 LP PCIE + 2537 Millenium 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 Millenium 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 Millenium 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 Millenium 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 Millenium P690 PCIe x16 + 102b 0042 ONYX + 102b 0043 SPECTRA + 102b 0080 Millenium P690 Plus LP PCIe x16 + 102b 0081 Millenium P690 LP PCIe x16 + 102b 0082 RAD LPX PCIe x16 + 102b 00c0 Millenium P690 Plus LP PCI + 102b 00c2 Millenium P690 LP PCI + 102b 00c3 RAD LPX PCI + 102b 0101 Millenium P690 PCI + 102b 0140 Millenium 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 + 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) + 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 + 12ee 7001 Root hub + 14c2 0205 PTI-205N USB 2.0 Host Controller + 1799 0002 Root Hub + 807d 1043 PCI-USB2 (EHCI subsystem) + 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 + 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 + 0006 85C501/2/3 + 0008 SiS85C503/5513 (LPC Bridge) + 0009 5595 Power Management Controller + 000a PCI-to-PCI bridge + 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 + 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 85C496 + 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 [Asus P4SC-EA] + 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 + 1183 SATA Controller / IDE mode + 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 K7SOM+ 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 +103a Seiko Epson Corporation +103b Tatung Corp. Of America +103c Hewlett-Packard Company + 1005 A4977A Visualize EG + 1008 Visualize FX + 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 + 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) + 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 Smart Array + 103c 21bf H240ar + 103c 21c0 P440ar + 103c 21c1 Smart Array + 103c 21c2 P440 + 103c 21c3 P441 + 103c 21c4 Smart Array + 103c 21c5 Smart Array + 103c 21c6 H244br + 103c 21c7 H240 + 103c 21c8 H241 + 103c 21c9 Smart Array + 103c 21ca Smart Array + 103c 21cb P840 + 103c 21cc Smart Array + 103c 21cd Smart Array + 103c 21ce Smart Array + 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 HP 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 + 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 + 402f PCIe Root Port + 4030 zx2 System Bus Adapter + 4031 zx2 I/O Controller + 4037 PCIe Local Bus Adapter + 403b PCIe Root Port +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. + 0464 Radeon R9 270x GPU + 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 + 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) +# 64MB AGP + 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/x515 Cardbus Controller + 1025 0080 Aspire 5024WLMi + 103c 0934 Compaq nw8240/nx8220 + 103c 099c NX6110/NC6120 + 103c 308b MX6125 + 8032 OHCI Compliant IEEE 1394 Host Controller + 1025 0080 Aspire 5024WLMi + 103c 0934 Compaq nw8240/nx8220 + 103c 099c NX6110/NC6120 + 103c 308b MX6125 + 8033 PCIxx21 Integrated FlashMedia Controller + 1025 0080 Aspire 5024WLMi + 103c 0934 Compaq nw8240/nx8220 + 103c 099c NX6110/NC6120 + 103c 308b MX6125 + 8034 PCI6411/6421/6611/6621/7411/7421/7611/7621 Secure Digital Controller + 1025 0080 Aspire 5024WLMi + 103c 0934 Compaq nw8240/nx8220 + 103c 099c NX6110/NC6120 + 103c 308b MX6125 + 8035 PCI6411/6421/6611/6621/7411/7421/7611/7621 Smart Card Controller + 103c 0934 Compaq nw8240/nx8220 + 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 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD) + 103c 309f nx9420 + 103c 30a3 Compaq nw8440 + 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 + 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 + 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 + 8039 CXD3222 i.LINK Controller + 8056 Rockwell HCF 56K modem + 808a Memory Stick Controller + 81ce SxS Pro memory card +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 Efar Microsystems + 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 + 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 +# Formerly: Teknor Industrial Computers Inc +1059 Kontron +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. +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 Barco Metheus 5 Megapixel + 13cc 0000 Barco Metheus 5 Megapixel + 13cc 0004 Barco Metheus 5 Megapixel + 13cc 0005 Barco Metheus 5 Megapixel + 13cc 0006 Barco Metheus 5 Megapixel + 13cc 0008 Barco Metheus 5 Megapixel + 13cc 0009 Barco Metheus 5 Megapixel + 13cc 000a Barco Metheus 5 Megapixel + 13cc 000c Barco Metheus 5 Megapixel + 493d Imagine 128 T2R [Ticket to Ride] + 11a4 000a Barco Metheus 5 Megapixel, Dual Head + 11a4 000b Barco Metheus 5 Megapixel, Dual Head + 13cc 0002 Barco Metheus 4 Megapixel, Dual Head + 13cc 0003 Barco Metheus 5 Megapixel, Dual Head + 13cc 0007 Barco Metheus 5 Megapixel, Dual Head + 13cc 0008 Barco Metheus 5 Megapixel, Dual Head + 13cc 0009 Barco Metheus 5 Megapixel, Dual Head + 13cc 000a Barco 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 + 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 +# should be 14e4:1645 + 1645 Broadcom NetXtreme BCM5701 Gigabit Ethernet +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 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 + 2020 ISP2020A Fast!SCSI Basic Adapter + 2031 ISP8324-based 16Gb Fibre Channel to PCI Express Adapter + 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 + 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] + 2532 ISP2532-based 8Gb Fibre Channel to PCI Express HBA + 103c 3262 StorageWorks 81Q + 1077 0167 QME2572 Dual Port FC8 HBA Mezzanine + 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) + 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 + 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) + 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 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 + 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 + 7023 PXI-2593 + 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 + 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 + 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 + 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 + 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 + 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 7644 PXIe-4841 + 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 76c8 PXIe-6614 + 1093 76c9 PXIe-6612 + 1093 76cb PXIe-5646R + 1093 76cc PXIe-5162 (2CH) + 1093 76d0 PXIe-5160 (2CH) + 1093 76d1 PXIe-5160 (4CH) + 1093 76dc PXIe-4610 + 1093 76fb PCIe-1473R-LX110 + 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 7716 PCIe-6612 + 1093 771e PXIe-4339 + 1093 7735 cRIO-9033 + 1093 774b cRIO-9031 + 1093 774d cRIO-9034 + 1093 7755 cRIO-9030 + 1093 7777 PXIe-7976R + 1093 7782 PXIe-5646R + 1093 7783 PXIe-5646R + 1093 7784 PXIe-5646R + 1093 77a5 PXIe-6345 + 1093 77a6 PXIe-6355 + 1093 77a7 PXIe-6365 + 1093 77a8 PXIe-6375 + 1093 77b4 PXIe-7820R + 1093 77b5 PXIe-7821R + 1093 77b6 PXIe-7822R + 1093 77b9 cRIO-9038 + 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 +1094 First International Computers [FIC] +# nee CMD Technology Inc +1095 Silicon Image, Inc. + 0240 Adaptec AAR-1210SA SATA HostRAID 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 + 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 + 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 + 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) + 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 + 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 + 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 + 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 +# This is the Non-Transparent-Bridge Virtualized Port as presented by the PLX PEX 8732 chip, the physical bridges show up at 10b5:8732 + 87b0 PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch + 9016 PLX 9016 8-port serial controller + 9030 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + 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 + 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 Kontron 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 + 10b5 1067 IXXAT CAN i165 + 10b5 114e Wasco WITIO PCI168extended + 10b5 1169 Wasco OPTOIO32standard 32 digital in, 32 digital out + 10b5 1172 IK220 (Heidenhain) + 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 + 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 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 3352 Alpermann+Velte PCL PCIe HD: Timecode Reader Board + 10b5 3353 Alpermann+Velte PCL PCIe D: Timecode Reader Board + 10b5 3354 Alpermann+Velte PCL PCIe LV: Timecode Reader Board + 10b5 3355 Alpermann+Velte PCL PCIe L: Timecode Reader Board + 10b5 3415 Alpermann+Velte PCIe TS: Time Synchronisation Board + 10b5 3493 Alpermann+Velte PCL PCIe 3G: Timecode Reader Board + 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 Aquisition 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 + 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 + 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 ASRock 939Dual-SATA2 Motherboard + 1849 5237 ASRock 939Dual-SATA2 Motherboard + 5239 USB 2.0 Controller + 10b9 5239 ASRock 939Dual-SATA2 Motherboard + 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. +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 ABP940-U / ABP960-U + 10cd 1310 ASC1300 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 [EDGE 3D] + 0009 NV1 [EDGE 3D] + 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 Controler (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] + 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 NV5 [Aladdin TNT2] + 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] + 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 G71 [GeForce 7800 GS] + 00f6 NV43 [GeForce 6800 GS/XT] + 1682 217e XFX GeForce 6800 XTreme 256MB DDR3 AGP + 00f8 NV40GL [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 NV36 [GeForce PCX 5750] + 00fb NV38 [GeForce PCX 5900] + 00fc NV37GL [Quadro FX 330/GeForce PCX 5300] + 00fd NV37GL [Quadro PCI-E Series] + 00fe NV38GL [Quadro FX 1300] + 00ff NV18 [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 + 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] + 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] + 018f NV18 + 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 NV11 [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] + 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 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] + 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] + 02e0 2249 GF 7600GT 560M 256MB DDR3 DUAL DVI TV + 02e1 G73 [GeForce 7600 GS] + 1682 222b PV-T73K-UAL3 (256MB) + 1682 2247 GF 7600GS 512MB DDR2 + 02e2 G73 [GeForce 7300 GT] + 02e3 G71 [GeForce 7900 GS] + 02e4 G71 [GeForce 7950 GT] + 1682 2271 PV-T71A-YDF7 (512MB) + 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 Acer 9814 WKMI + 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] + 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 + 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 dv9668eg Laptop + 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 Motherbord + 053e C68 [GeForce 7025 / nForce 630a] + 0541 MCP67 Memory Controller + 0542 MCP67 SMBus + 1043 8308 M2N68-AM Motherbord + 0543 MCP67 Co-processor + 0547 MCP67 Memory Controller + 1043 8308 M2N68-AM Motherbord + 1849 0547 ALiveNF7G-HDready + 0548 MCP67 ISA Bridge + 1043 8308 M2N68-AM Motherboard + 054c MCP67 Ethernet + 1043 8308 M2N68-AM Motherbord + 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 + 056c MCP73 IDE + 1019 297a MCP73PVT-SM + 1afa 7150 JW-IN7150-HD + 056d MCP73 PCI Express bridge + 1019 297a MCP73PVT-SM + 056e MCP73 PCI Express bridge + 1019 297a MCP73PVT-SM + 056f MCP73 PCI Express bridge + 1019 297a MCP73PVT-SM + 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 + 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 G96 [GeForce 9500 GT] + 0641 G96 [GeForce 9400 GT] + 1682 4009 PV-T94G-ZAFG + 0642 G96 [D9M-10] + 0643 G96 [GeForce 9500 GT] + 0644 G96 [GeForce 9500 GS] + 0645 G96 [GeForce 9500 GS] + 0646 G96 [GeForce GT 120] + 0647 G96M [GeForce 9600M GT] + 0648 G96M [GeForce 9600M GS] + 0649 G96M [GeForce 9600M GT] + 1043 202d GeForce GT 220M + 064a G96M [GeForce 9700M GT] + 064b G96M [GeForce 9500M G] + 064c G96M [GeForce 9650M GT] + 064d G96 [GeForce 9600 GT] + 064e G96 [GeForce 9600 GT / 9800 GT] + 0651 G96M [GeForce G 110M] + 0652 G96M [GeForce GT 130M] + 152d 0850 GeForce GT 240M LE + 0653 G96M [GeForce GT 120M] + 0654 G96M [GeForce GT 220M] + 1043 14a2 GeForce GT 320M + 1043 14d2 GeForce GT 320M + 0655 G96 [GeForce GT 120] + 0656 G96 [GeForce 9650 S] + 0658 G96GL [Quadro FX 380] + 0659 G96GL [Quadro FX 580] + 065a G96GLM [Quadro FX 1700M] + 065b G96 [GeForce 9400 GT] + 065c G96GLM [Quadro FX 770M] + 065d G96 [GeForce 9500 GA / 9600 GT / GTS 250] + 065f G96 [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] + 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] + 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] + 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 + 07c5 MCP73 Host Bridge + 07c8 MCP73 Memory Controller + 1019 297a MCP73PVT-SM + 1afa 7150 JW-IN7150-HD + 07cb nForce 630i memory controller + 1019 297a MCP73PVT-SM + 1afa 7150 JW-IN7150-HD + 07cd nForce 630i memory controller + 1019 297a MCP73PVT-SM + 1afa 7150 JW-IN7150-HD + 07ce nForce 630i memory controller + 1019 297a MCP73PVT-SM + 1afa 7150 JW-IN7150-HD + 07cf nForce 630i memory controller + 1019 297a MCP73PVT-SM + 1afa 7150 JW-IN7150-HD + 07d0 nForce 630i memory controller + 1019 297a MCP73PVT-SM + 1afa 7150 JW-IN7150-HD + 07d1 nForce 630i memory controller + 1019 297a MCP73PVT-SM + 1afa 7150 JW-IN7150-HD + 07d2 nForce 630i memory controller + 1019 297a MCP73PVT-SM + 1afa 7150 JW-IN7150-HD + 07d3 nForce 630i memory controller + 1019 297a MCP73PVT-SM + 1afa 7150 JW-IN7150-HD + 07d6 nForce 630i memory controller + 1019 297a MCP73PVT-SM + 1afa 7150 JW-IN7150-HD + 07d7 MCP73 LPC Bridge + 1019 297a MCP73PVT-SM + 1afa 7150 JW-IN7150-HD + 07d8 MCP73 SMBus + 1019 297a MCP73PVT-SM + 1afa 7150 JW-IN7150-HD + 07d9 MCP73 Memory Controller + 1019 297a MCP73PVT-SM + 1afa 7150 JW-IN7150-HD + 07da MCP73 Co-processor + 1afa 7150 JW-IN7150-HD + 07dc MCP73 Ethernet + 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] + 07e5 C73 [GeForce 7100 / nForce 620i] + 07f0 MCP73 IDE + 07f4 GeForce 7100/nForce 630i SATA + 1019 297a MCP73PVT-SM + 07f8 MCP73 SATA RAID Controller + 07fc MCP73 High Definition Audio + 1019 297a MCP73PVT-SM + 10de 07fc MCP73 High Definition Audio + 07fe GeForce 7100/nForce 630i USB + 1019 297a MCP73PVT-SM + 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] + 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 ION VGA [GeForce 9400M] + 087a C79 [GeForce 9400] + 087d ION VGA + 19da a123 IONITX-F-E + 087e ION LE VGA + 087f ION LE VGA + 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] + 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 + 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 GT218 [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 GT218 [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 + 10de cb79 iMac 9,1 + 0aa0 MCP79 PCI Express Bridge + 10de cb79 Apple iMac 9,1 + 0aa2 MCP79 SMBus + 10de cb79 Apple iMac 9,1 + 19da a123 IONITX-F-E + 0aa3 MCP79 Co-processor + 10de cb79 Apple iMac 9,1 + 19da a123 IONITX-F-E + 0aa4 MCP79 Memory Controller + 19da a123 IONITX-F-E + 0aa5 MCP79 OHCI USB 1.1 Controller + 10de cb79 Apple iMac 9,1 + 19da a123 IONITX-F-E + 0aa6 MCP79 EHCI USB 2.0 Controller + 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 + 10de cb79 Apple iMac 9,1 + 0aac MCP79 LPC Bridge + 0aad MCP79 LPC Bridge + 19da a123 IONITX-F-E + 0aae MCP79 LPC Bridge + 10de cb79 Apple iMac 9,1 + 0aaf MCP79 LPC Bridge + 0ab0 MCP79 Ethernet + 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 + 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 + 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 + 10de cb79 Apple iMac 9,1 + 0ac7 MCP79 PCI Express Bridge + 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] + 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] + 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 630M] + 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 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 +# 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 HDMI Audio + 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] + 0fbb GM204 High Definition Audio Controller + 0fc0 GK107 [GeForce GT 640 OEM] + 0fc1 GK107 [GeForce GT 640] + 0fc2 GK107 [GeForce GT 630 OEM] + 0fc6 GK107 [GeForce GTX 650] + 1043 8428 GTX650-DC-1GD5 + 0fc8 GK107 [GeForce GT 740] + 0fcd GK107M [GeForce GT 755M] + 0fce GK107M [GeForce GT 640M LE] + 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] + 0fd8 GK107M [GeForce GT 640M Mac Edition] + 0fd9 GK107M [GeForce GT 645M] + 0fdb GK107M + 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 + 0fe9 GK107M [GeForce GT 750M Mac Edition] + 0fea GK107M [GeForce GT 755M Mac Edition] + 0fef GK107GL [GRID K340] + 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 Rev. 2] + 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] + 1024 GK110BGL [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] + 103a GK110GL [Quadro K6000] + 103c GK110GL [Quadro K5200] + 1040 GF119 [GeForce GT 520] + 1042 GF119 [GeForce 510] + 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 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] + 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] + 1140 GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/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 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 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 090f GeForce 820M + 1025 0921 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 064e GeForce 820M + 1028 0652 GeForce 820M + 1028 0662 GeForce 820M + 1028 068d 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 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 8595 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 c652 GeForce GT 620M + 144d c709 GeForce 710M + 144d c711 GeForce 710M + 144d c736 GeForce 710M + 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 ae71 GeForce GT 720M + 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 + 17aa 2200 NVS 5200M + 17aa 2213 GeForce GT 720M + 17aa 2220 GeForce GT 720M + 17aa 309c GeForce GT 720A + 17aa 30b4 GeForce 820A + 17aa 3656 GeForce GT 620M + 17aa 365a GeForce 705M + 17aa 365e GeForce 800M + 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 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 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 3910 GeForce 720M + 17aa 3912 GeForce 720M + 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 + 1b0a 20dd GeForce GT 620M + 1b0a 20df GeForce GT 620M + 1b0a 2202 GeForce GT 720M + 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] + 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 + 11a7 GK104M [GeForce GTX 675MX] +# GRID K2 Quadro USM + 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] + 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] + 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] + 11c6 GK106 [GeForce GTX 650 Ti] + 11c7 GK106 [GeForce GTX 750 Ti] + 11c8 GK106 [GeForce GTX 650 OEM] + 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 + 11fa GK106GL [Quadro K4000] + 11fc GK106GLM [Quadro K2100M] + 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] + 1284 GK208 [GeForce GT 630 Rev. 2] + 1286 GK208 [GeForce GT 720] + 1287 GK208 [GeForce GT 730] + 1288 GK208 [GeForce GT 720] + 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 3684 GeForce GT 740A + 1293 GK208M [GeForce GT 730M] + 1294 GK208M [GeForce GT 740M] + 1295 GK208M [GeForce 710M] + 103c 2b0d GeForce GT 710A + 103c 2b0f GeForce GT 710A + 103c 2b11 GeForce GT 710A + 103c 2b20 GeForce 810A + 103c 2b21 GeForce GT 810A + 103c 2b22 GeForce GT 810A + 1296 GK208M [GeForce 825M] + 1298 GK208M [GeForce GT 720M] + 1299 GK208M [N16V-GM] + 12a0 GK208 + 12b9 GK208GLM [Quadro K610M] + 12ba GK208GLM [Quadro K510M] + 1340 GM108M [GeForce 830M] + 103c 2b2b GeForce 830A + 1341 GM108M [GeForce 840M] + 17aa 3697 GeForce 840A + 17aa 3699 GeForce 840A + 17aa 369c GeForce 840A + 1346 GM108M [GeForce 930M] + 1347 GM108M [GeForce 940M] + 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] + 139a GM107M [GeForce GTX 950M] + 139b GM107M [GeForce GTX 960M] + 139c GM107M [N16S-GT1-KB-B] + 13b0 GM107GLM [N16P-Q3] + 13b3 GM107GLM [Quadro K2200M] + 13ba GM107GL [Quadro K2200] + 13bb GM107GL [Quadro K620] + 13bc GM107GL [Quadro K1200] + 13bd GM107GL [GRID M40] + 13c0 GM204 [GeForce GTX 980] + 1043 8504 GTX980-4GD5 + 13c1 GM204 + 13c2 GM204 [GeForce GTX 970] + 13c3 GM204 + 13d7 GM204M [GeForce GTX 980M] + 13d8 GM204M [GeForce GTX 970M] + 13d9 GM204M [GeForce GTX 965M] + 1401 GM206 [GeForce GTX 960] + 17f0 GM200GL [Quadro M6000] +10df Emulex Corporation + 0720 OneConnect NIC (Skyhawk) + 17aa 1056 ThinkServer OCm14102-UX-L AnyFabric + 17aa 1057 ThinkServer OCm14104-UX-L AnyFabric + 17aa 1059 ThinkServer OCm14104-UT-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 Lancer-X: LightPulse Fibre Channel Host 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) + 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 Saturn-X: LightPulse Fibre Channel Host Adapter + f111 Saturn-X LightPulse Fibre Channel Host Adapter + f112 Saturn-X LightPulse Fibre Channel Host Adapter + f180 LPSe12002 EmulexSecure Fibre Channel Adapter + 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 + 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] + 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 + 8043 LANai4.x [Myrinet LANai interface chip] + 8062 S5933_PARASTATION + 807d S5933 [Matchmaker] + 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 + 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 + 5249 RTS5249 PCI Express Card Reader + 103c 1909 ZBook 15 + 5288 RTS5288 PCI Express Card Reader + 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 + 8129 RTL-8129 + 10ec 8129 RT8129 Fast Ethernet Adapter + 11ec 8129 RTL8111/8168 PCIe Gigabit Ethernet (misconfigured) + 8136 RTL8101E/RTL8102E PCI Express Fast Ethernet controller + 103c 2ab1 Pavilion p6774 + 103c 30cc Pavilion dv6700 + 1179 ff64 RTL8102E PCI-E Fast Ethernet NIC + 17c0 1053 AzureWave AW-NE766 802.11B/G/N Mini PCIe Card Model RT2700E + 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 or L3C/S 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 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 + 8167 RTL-8110SC/8169SC Gigabit Ethernet + 1458 e000 GA-MA69G-S3H Motherboard + 1462 235c P965 Neo MS-7235 mainboard + 1462 236c 945P Neo3-F motherboard + 8168 RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller + 1019 8168 RTL8111/8168 PCI Express Gigabit Ethernet controller + 1028 0283 Vostro 220 + 1028 04b2 Vostro 3350 + 1028 04da Vostro 3750 + 103c 1611 Pavilion DM1Z-3000 + 103c 1950 ProBook 450/455 + 103c 2a6f Asus IPIBL-LB Motherboard + 1043 11f5 A6J-Q008 + 1043 16d5 U6V/U31J laptop + 1043 81aa P5B + 1043 82c6 M3A78-EH Motherboard + 1043 83a3 M4A785TD Motherboard + 1043 8432 P8P67 and other motherboards + 1043 8505 P8 series motherboard + 105b 0d7c D270S/D250S Motherboard + 10ec 8168 RTL8111/8168 PCI Express Gigabit Ethernet controller + 1458 e000 Motherboard + 1462 238c Onboard RTL8111b on MSI P965 Platinum Mainboard + 1462 368c K9AG Neo2 + 1462 4180 Wind PC MS-7418 + 1462 7522 X58 Pro-E + 1775 11cc CC11/CL11 + 1849 8168 Motherboard (one of many) + 8086 d615 Desktop Board D510MO/D525MW + 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 + 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 + 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 + 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 + 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 + b723 RTL8723BE PCIe Wireless Network 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) + 2b00 Zomojo Zcard + 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 + 8380 Ellips ProfiXpress Profibus Master + 8381 Ellips Santos Frame Grabber + 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 +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 SB Live! EMU10k1 + 100a 1102 SB Live! 5.1 Digital OEM SB0220 EMU10K1-JFF + 1102 0020 CT4850 SBLive! Value + 1102 0021 CT4620 SBLive! + 1102 002f SBLive! mainboard implementation + 1102 100a SB Live! 5.1 Digital OEM [SB0220] + 1102 4001 E-mu APS + 1102 8022 CT4780 SBLive! Value + 1102 8023 CT4790 SoundBlaster PCI512 + 1102 8024 CT4760 SBLive! + 1102 8025 SBLive! Mainboard Implementation + 1102 8026 CT4830 SBLive! Value + 1102 8027 CT4832 SBLive! Value + 1102 8028 CT4760 SBLive! OEM version + 1102 8031 CT4831 SBLive! Value + 1102 8040 CT4760 SBLive! + 1102 8051 CT4850 SBLive! Value + 1102 8061 SBLive! Player 5.1 + 1102 8064 SBLive! 5.1 Model SB0100 + 1102 8065 SBLive! 5.1 Digital Model SB0220 + 1102 8066 Live! 5.1 Digital [SB0228] + 1102 8067 SBLive! 5.1 eMicro 28028 + 0004 SB Audigy + 1102 0051 SB0090 Audigy Player + 1102 0053 SB0090 Audigy Player/OEM + 1102 0058 SB0090 Audigy Player/OEM + 1102 1002 SB Audigy2 Platinum + 1102 1003 SB0350 Audigy 2 + 1102 1007 SB0240 Audigy 2 Platinum 6.1 + 1102 1009 SB Audigy2 OEM HP + 1102 2001 SB Audigy 2 ZS Platinum Pro + 1102 2002 SB Audigy 2 ZS (SB0350) + 1102 4001 E-MU 1010 + 1102 4002 E-MU 0404 + 0005 SB X-Fi + 1102 0021 X-Fi Platinum + 1102 002c X-Fi XtremeGamer FATAL1TY PRO + 1102 1003 X-Fi XtremeMusic + 0006 [SB Live! Value] EMU10k1X + 0007 CA0106 Soundblaster + 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 SB0400 Audigy2 Value + 1102 0008 EMU0404 Digital Audio System + 1102 4004 EMU1010 Digital Audio System [MAEM8960] + 0009 [SB X-Fi Xtreme Audio] CA0110-IBG + 1102 0010 [SB X-Fi Xtreme Audio] CA0110-IBG + 1102 0018 SB1040 + 000b EMU20k2 [X-Fi Titanium Series] + 1102 0041 SB0880 [SoundBlaster X-Fi Titanium PCI-e] + 0012 SB Recon3D + 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 PCI to PCIe 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 + 0644 RocketRAID 644 4 Port SATA-III Controller (eSATA) + 0645 RocketRAID 644L 4 Port SATA-III Controller (eSATA) + 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 + 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 + 3120 RocketRAID 3120 + 3220 RocketRAID 3220 + 3320 RocketRAID 3320 + 4310 RocketRaid 4310 +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 + 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 Host Bridge + 0364 CN896/VN896/P4M900 Host Bridge + 1043 81ce P5VD2-VM mothervoard + 0391 VT8371 [KX133] + 0409 VX855/VX875 Host Bridge: Host Control + 0410 VX900 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 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 Host Bridge + 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 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 Host Bridge + 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 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 VT82xxxxx UHCI USB 1.1 Controller +# possibly Hewlett-Packard D9840-60001 [Brio BA410 Motherboard] + 0925 1234 VA-502 Mainboard + 1019 0985 P6VXA Motherboard + 1019 0a81 L7VTA v1.0 Motherboard (KT400-8235) + 1043 8080 A7V333 motherboard + 1043 808c VT6202 USB2.0 4 port controller + 1043 80a1 A7V8X-X motherboard + 1043 80ed A7V600/K8V-X/A8V Deluxe motherboard + 1179 0001 Magnia Z310 + 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 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 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 + 3050 VT82C596 Power Management + 3051 VT82C596 Power Management + 3053 VT6105M [Rhine-III] + 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 + 15dd 7609 Onboard Audio + 3059 VT8233/A/8235/8237 AC97 Audio Controller + 1019 0a81 L7VTA v1.0 Motherboard (KT400-8235) + 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 810d Asus 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 EP-8KRA2+ Mainboard + 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 [Rhine-II] + 1043 80a1 A7V8X-X Motherboard + 1043 80ed A7V600-X Motherboard + 1106 0102 VT6102 [Rhine II] Embeded Ethernet Controller on VT8235 + 1186 1400 DFE-530TX rev A + 1186 1401 DFE-530TX 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 + 1695 300c Realtek ALC655 sound chip +# 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] + 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 + 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 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 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) + 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 South] + 1043 80ed A7V600/K8V-X/A8V Deluxe motherboard + 1106 3227 DFI KT600-AL / Soltek SL-B9D-FGR Motherboard + 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 VT8237A/VT8251 HDA Controller + 19da a179 ZBOX VD01 + 3290 K8M890 Host Bridge + 3296 P4M800 Host Bridge + 3324 CX700/VX700 Host Bridge + 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 PCI to PCI Bridge + 3364 CN896/VN896/P4M900 Host Bridge + 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 DRAM Bus Control + 19da a179 ZBOX nano VD01 + 3432 VL80x xHCI USB 3.0 Controller + 3456 VX11 Standard Host Bridge + 345b VX11 Miscellaneous Bus + 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 Host Bridge + 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 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 VX800 Serial ATA and 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 APIC and Central Traffic Control + 6100 VT85C100A [Rhine II] + 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 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 Host Bridge + 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 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 PCI to ISA Bridge + 8353 VX800/VX820 Bus Control and Power Management + 8391 VT8371 [KX133 AGP] + 8400 MVP4 + 8409 VX855/VX875 Bus Control and Power Management + 8410 VX900 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 Serial ATA Controller + 9082 Standard AHCI 1.0 SATA Controller + 9140 HDMI Audio Device + 9201 USB3.0 Controller + 9530 Secure Digital Memory Card Controller + 95d0 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 South-North Module Interface Control + a364 CN896/VN896/P4M900 PCI to PCI Bridge Controller + a409 VX855/VX875 USB Device Controller + a410 VX900 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/VX700 PCI Bridge + b213 VPX/VPX2 I/O APIC Interrupt Controller + b353 VX855/VX875/VX900 PCI to PCI Bridge + b410 VX900 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/VX820 PCI Express Root Port + c364 CN896/VN896/P4M900 PCI to PCI Bridge Controller + c409 VX855/VX875 EIDE Controller + c410 VX900 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 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/VX820 PCI Express Root Port + e410 VX900 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/VX820 PCI Express Root Port +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 + 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 +111d Integrated Device Technology, Inc. [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 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 + 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 +111e Eldec +111f Precision Digital Images + 4a47 Precision MX Video engine interface + 5243 Frame capture bus interface +1120 EMC Corporation +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. +112b Linotype - Hell AG +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 + 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 ASUS 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 ASUS 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 + 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 TVStation DVB-C plus +# http://www.knc1.com/gb.htm + 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 f123 WinTV HVR-2205 + 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 Fuji Xerox Co Ltd + 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 + 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 + 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 + 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 + 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 + 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 + 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 +1138 Ziatech Corporation + 8905 8905 [STD 32 Bridge] +1139 Dynamic Pictures, Inc + 0001 VGA Compatable 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-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC + 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 + 4400 SK-9Dxx Gigabit Ethernet Adapter + 4500 SK-9Mxx Gigabit Ethernet Adapter + 9000 SK-9S21 10/100/1000Base-T Server Adapter, PCI-X, Copper RJ-45 + 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 Corp + 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 +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 America Info Systems + 0102 Extended IDE Controller + 0103 EX-IDE Type-B + 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 +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 + 8013 ExpressPCI UL4D + 8014 ExpressPCI UL4S + 8027 ExpressPCI UL5D +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 056c ThinkPad Z60t + 1028 014f Latitude X300 laptop + 1028 0188 Inspiron 6000 laptop + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 1043 1237 A6J-Q008 + 1043 1967 V6800V + 1043 1987 Asus 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 + 17aa 20c6 ThinkPad R61 + 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 + 103c 30b5 Presario V3242AU + 103c 30b7 Presario V6133CL + 103c 30cc Pavilion dv6700 + 103c 30cf Pavilion dv9668eg Laptop + 1043 1237 A6J-Q008 + 1043 1967 V6800V + 144d c018 X20 IV + 17aa 20ca ThinkPad T61 + 0811 R5C811 + 0822 R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter + 1014 0556 ThinkPad 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 + 103c 03b5 Presario V3242AU + 103c 30b7 Presario V6133CL + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 103c 30cf Pavilion dv9668eg Laptop + 1043 1237 A6J-Q008 + 1043 1967 ASUS V6800V + 10f7 8338 Panasonic CF-Y5 laptop + 144d c018 X20 IV + 17aa 201d ThinkPad X60/X60s + 17aa 20c7 ThinkPad T61 + 17aa 20c8 ThinkPad W500 + 0832 R5C832 IEEE 1394 Controller + 1025 0121 Aspire 5920G + 1028 01d7 XPS M1210 + 1028 01f3 Inspiron 1420 + 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 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 Dell Inspiron 1501 + 1028 024f Dell Latitude e6500 + 103c 03b5 Presario V3242AU + 103c 30b7 Presario V6133CL + 1183 0843 Alienware Aurora m9700 + 0852 xD-Picture Card Controller + 1025 0121 Aspire 5920G + 1028 01f3 Inspiron 1420 + 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 + 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 + e823 PCIe SDXC/MMC Host Controller + e832 R5C832 PCIe IEEE 1394 Controller + 1028 040a Latitude E6410 + 1028 040b Latitude E6510 + 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 + 4300 DGE-528T 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 +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 + 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 + 6832 Sierra Wireless MC8780 Device +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 +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. + 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 + 4101 OLPC Cafe Controller Secure Digital 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 + 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] + 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 + 6111 88SE6111 1-port PATA133(IDE) and 1-port SATA II Controllers + 6121 88SE6121 SATA II / 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 88SE6440 SAS/SATA PCIe 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 + 7042 88SX7042 PCI-e 4-port SATA-II + 16b8 434b Tempo SATA E4P + 7810 MV78100 [Discovery Innovation] ARM SoC + 7820 MV78200 [Discovery Innovation] ARM SoC + 7823 MV78230 [Armada XP] ARM SoC + 7846 88F6820 [Armada 385] ARM SoC + 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 FA310TX + 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 + ee40 Digidesign Audiomedia III +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 + 8086 524c D865PERL mainboard + 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 + 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] + 8032 ATTO Celerity FC8xEN + 117c 003b Celerity FC-82EN Fibre Channel Adapter + 117c 003c Celerity FC-84EN Fibre Channel Adapter +11f9 I-Cube Inc +11fa Kasan Electronics Company, Ltd. +11fb Datel Inc +11fc Silicon Magic +11fd High Street Consultants +11fe Comtrol Corporation + 0001 RocketPort 32 port w/external I/F + 0002 RocketPort 8 port w/external I/F + 0003 RocketPort 16 port w/external I/F + 0004 RocketPort 4 port w/quad cable + 0005 RocketPort 8 port w/octa cable + 0006 RocketPort 8 port w/RJ11 connectors + 0007 RocketPort 4 port w/RJ11 connectors + 0008 RocketPort 8 port w/ DB78 SNI (Siemens) connector + 0009 RocketPort 16 port w/ DB78 SNI (Siemens) connector + 000a RocketPort Plus 4 port + 000b RocketPort Plus 8 port + 000c RocketModem 6 port + 000d RocketModem 4-port + 000e RocketPort Plus 2 port RS232 + 000f RocketPort Plus 2 port RS422 + 0040 RocketPort Infinity Octa, 8port, RJ45 + 0041 RocketPort Infinity 32port, External Interface + 0042 RocketPort Infinity 8port, External Interface + 0043 RocketPort Infinity 16port, External Interface + 0044 RocketPort Infinity Quad, 4port, DB + 0045 RocketPort Infinity Octa, 8port, DB + 0047 RocketPort Infinity 4port, RJ45 + 004f RocketPort Infinity 2port, SMPTE + 0052 RocketPort Infinity Octa, 8port, SMPTE + 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 + 080c RocketModem III 8 port + 080d RocketModem III 4 port + 0810 RocketPort UPCI Plus 4 port RS232 + 0811 RocketPort UPCI Plus 8 port RS232 + 0812 RocketPort UPCI Plus 8 port RS422 + 0903 RocketPort Compact PCI 16 port w/external I/F + 8015 RocketPort 4-port UART 16954 +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 +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 +1212 Kingston Technology Corp. +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 + 6836 OZ6836/6860 CardBus Controller + 6872 OZ6812 CardBus Controller + 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 +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 Tech-Source + 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. +1235 Risq Modular Systems, Inc. +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 +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!PCI v2.0 ISDN + 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 +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 + 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. +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 +1269 Thomson-CSF/TTM +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 + 0810 SM810 LynxE + 0811 SM811 LynxE + 0820 SM820 Lynx3D + 0910 SM910 +1270 Olympus Optical Co., Ltd. +1271 GW Instruments +1272 Telematics International +1273 Hughes Network Systems + 0002 DirecPC +1274 Ensoniq + 1171 ES1373 [AudioPCI] (also Creative Labs CT5803) + 1371 ES1371 / Creative Labs CT2518 [AudioPCI-97] + 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 AudioPCI 64V/128 / Creative Sound Blaster CT4810 + 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 [AudioPCI] + 1274 2000 Creative Sound Blaster AudioPCI128 + 1274 2003 Creative SoundBlaster AudioPCI 128 + 1274 5880 Creative Sound Blaster AudioPCI128 + 1274 8001 Sound Blaster 16PCI 4.1ch + 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 Ethernet 100/10 MBit + 9100 21x4x DEC-Tulip compatible 10/100 Ethernet + 9102 21x4x DEC-Tulip compatible 10/100 Ethernet +# 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 IT8874F PCI Dual Serial Port Controller + 8888 IT8888F/G PCI to ISA Bridge with SMB [Golden Gate] + 8889 IT8889F PCI to ISA 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 +1298 Spellcaster Telecommunications Inc. +1299 Knowledge Technology Lab. +129a VMetro, inc. + 0615 PBT-615 PCI-X 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 Electronics Technology Company +12a5 Vision Dynamics Ltd. +12a6 Scalable Networks, Inc. +12a7 AMO GmbH +12a8 News Datacom +12a9 Xiotech Corporation +12aa SDL Communications, Inc. +12ab Yuan Yuan Enterprise 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 USA Corp +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 Modular Vision Systems Div. - Acumen Inc. +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 + 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 +12d8 Pericom Semiconductor + 01a7 PI7C21P100 PCI to PCI Bridge + 400a PI7C9X442SL PCI Express Bridge Port + 400e PI7C9X442SL USB OHCI Controller + 400f 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 + e110 PI7C9X110 PCI Express to PCI bridge + 1775 11cc CC11/CL11 CompactPCI Bridge + e111 PI7C9X111SL PCIe-to-PCI Reversible 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 + 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 AU8820 Vortex Digital Audio Processor + 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 + 004c PCI-DAS1000 + 004d PCI-QUAD04 + 0052 PCI-DAS4020/12 + 0053 PCIM-DDA06/16 + 0054 PCI-DIO96 + 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 + 006f PCI-DAS6036 + 0070 PCI-DAC6702 + 0078 PCI-DAS6013 + 0079 PCI-DAS6014 + 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 +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 Thales Idatys +1353 Vierling Communication SAS + 0002 Proserver + 0003 PCI-FUT + 0004 PCI-S0 + 0005 PCI-FUT-S0 +1354 Dwave System Inc +1355 Kratos Analytical Ltd +1356 The Logical Co +1359 Prisa Networks +135a Brain Boxes + 0a61 UC-324 [VELOCITY RS422/485] +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 Syncronous Serial Card (Zilog 85230) + 0170 QSCLP-100 + 0180 DSCLP-100 + 0190 SSCLP-100 + 01a0 QSCLP-200/300 + 01b0 DSCLP-200/300 + 01c0 SSCLP-200/300 + 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) + 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 CP102 (2-port RS-232 PCI) + 1021 CP102UL (2-port RS-232 Universal PCI) + 1022 CP102U (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 CP168EL (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 b520 HFC-4S [IOB4ST] + 1397 b540 HFC-4S [Swyx 4xS0 SX2 QuadBri] + 1397 b550 HFC-4S [Junghanns quadBRI] + 1397 b556 HFC-4S [Junghanns DuoDBRI] + 1397 e888 HFC-4S [OpenVox B200P / B400P] + 16b8 ISDN network Controller [HFC-8S] + 1397 b562 HFC-8S [IOB8ST] + 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] + 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 +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 +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 Metheus Corporation +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 Mcdata Corporation +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 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 + 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 + 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 + 1733 PCI-1733 32-channel isolated digital input card + 1752 PCI-1752 + 1754 PCI-1754 + 1756 PCI-1756 +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 (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, Inc. +140b GE Intelligent Platforms +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 3632 M-Audio Delta Audiophile 192 + 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 + 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) + 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) +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 + c158 OXPCIe952 Dual 16C950 UART + e4bf c504 CP4-SCAT Wireless Technologies Carrier Board + e4bf d551 DU1-MUSTANG Dual-Port RS-485 Interface + c308 EX-44016 16-port serial +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 + 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-LP-SO-CR Unified Wire Ethernet Controller + 5015 T502-BT 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 T580-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 + 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-LP-SO-CR Unified Wire Ethernet Controller + 5415 T502-BT 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 T580-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 + 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-LP-SO-CR Unified Wire Storage Controller + 5515 T502-BT 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 T580-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 + 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-LP-SO-CR Unified Wire Storage Controller + 5615 T502-BT 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 T580-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 + 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-LP-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 + 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-LP-SO-CR Unified Wire Ethernet Controller [VF] + 5815 T502-BT 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 T580-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] + 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 +# nee Loronix Information Systems Inc. +144b Verint Systems Inc. +144c Catalina Research Inc +144d Samsung Electronics Co Ltd + 1600 Apple PCIe SSD + a800 XP941 PCIe SSD + 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 +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 +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] +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 +1488 KONTRON Electronik GmBH +1489 KYE Systems Corporation +148a OPTO +148b INNOMEDIALOGIC Inc. +148c Tul Corporation / PowerColor +148d DIGICOM Systems, Inc. + 1003 HCF 56k Data/Fax Modem +148e OSI Plus Corporation +148f Plant Equipment, Inc. + 5370 Dexlink AUWL15I1 +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 +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 +14a2 Millennium Engineering Inc +14a3 Maverick Networks +# registered as GVC/BCM Advanced Research +14a4 Broadcom Corporation (Wrong ID) + 4318 BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller +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 +14ab Mentor Graphics Corp. +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 +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. + 7630 MT7630e 802.11bgn Wireless Network Adapter +# MT7612E too? + 7662 MT7662E 802.11ac PCI Express Wireless Network Adapter +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 Scientific Ind. +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 +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 Corporation + 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 + 1612 BCM70012 Video Decoder [Crystal HD] + 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 PCI Express 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 + 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 SGI 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 + 103c 169d Ethernet 1Gb 4-port 331FLR Adapter + 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 IBM 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 + 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 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 Z60t + 103c 0934 HP nx8220 + 103c 0940 HP Compaq nw8240 Mobile Workstation + 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 + 1682 NetXtreme BCM57762 Gigabit Ethernet PCIe + 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 + 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 + 103c 1798 Flex-10 10Gb 2-port 530FLB Adapter [Meru] + 103c 17a5 HP Flex-10 10Gb 2-port 530M Adapter + 103c 18d3 HP Ethernet 10Gb 2-port 530T Adapter + 103c 1930 HP FlexFabric 10Gb 2-port 534FLR-SFP+ Adapter + 103c 1931 HP StoreFabric CN1100R Dual Port Converged Network Adapter + 103c 1932 HP FlexFabric 10Gb 2-port 534FLB Adapter + 103c 1933 HP FlexFabric 10Gb 2-port 534M Adapter + 103c 193a HP FlexFabric 10Gb 2-port 533FLR-T Adapter + 103c 3382 HP Ethernet 10Gb 2-port 530FLR-SFP+ Adapter + 103c 339d HP Ethernet 10Gb 2-port 530SFP+ 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 + 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 + 16a2 BCM57840 NetXtreme II 10/20-Gigabit Ethernet + 103c 1916 HP FlexFabric 20Gb 2-port 630FLB Adapter + 103c 1917 HP FlexFabric 20Gb 2-port 630M Adapter + 16a3 NetXtreme BCM57786 Gigabit Ethernet PCIe + 16a4 BCM57840 NetXtreme II Ethernet Multi Function + 103c 1916 HP NPAR 20Gb 2-port 630FLB Adapter + 103c 1917 HP NPAR 20Gb 2-port 630M Adapter +# 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 HP FlexFabric 20Gb 2-port 630FLB Adapter + 103c 1917 HP FlexFabric 20Gb 2-port 630M Adapter + 16ae NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function + 103c 1798 HP NPAR 10Gb 2-port 530FLB Adapter + 103c 17a5 HP NPAR 10Gb 2-port 530M Adapter + 103c 18d3 HP NPAR 10Gb 2-port 530T Adapter + 103c 1930 HP NPAR 10Gb 2-port 534FLR-SFP+ Adapter + 103c 1931 HP NPAR CN1100R Dual Port Converged Network Adapter + 103c 1932 HP NPAR 10Gb 2-port 534FLB Adapter + 103c 1933 HP NPAR 10Gb 2-port 534M Adapter + 103c 193a HP NPAR 10Gb 2-port 533FLR-T Adapter + 103c 3382 HP NPAR 10Gb 2-port 530FLR-SFP+ Adapter + 103c 339d HP NPAR 10Gb 2-port 530SFP+ Adapter + 16af NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function + 103c 1798 HP Flex-10 10Gb 2-port 530FLB Adapter + 103c 17a5 HP Flex-10 10Gb 2-port 530M Adapter + 103c 18d3 HP Ethernet 10Gb 2-port 530T Adapter + 103c 1930 HP FlexFabric 10Gb 2-port 534FLR-SFP+ Adapter + 103c 1931 HP StoreFabric CN1100R Dual Port Converged Network Adapter + 103c 1932 HP FlexFabric 10Gb 2-port 534FLB Adapter + 103c 1933 HP FlexFabric 10Gb 2-port 534M Adapter + 103c 193a HP FlexFabric 10Gb 2-port 533FLR-T Adapter + 103c 3382 HP Ethernet 10Gb 2-port 530FLR-SFP+ Adapter + 103c 339d HP 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 + 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 + 16dd NetLink BCM5781 Gigabit Ethernet PCI Express + 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 + 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 + 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 Wireless Network Adapter + 43a1 BCM4360 802.11ac Wireless Network Adapter + 43a2 BCM4360 802.11ac Wireless Network Adapter + 43a9 BCM43217 802.11b/g/n + 43aa BCM43131 802.11b/g/n + 43b1 BCM4352 802.11ac Wireless Network 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 + 43df BCM4354 802.11ac Wireless LAN SoC + 43ec BCM4356 802.11ac Wireless Network Adapter + 4401 BCM4401 100Base-T + 1025 0035 TravelMate 660 + 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 + 4430 BCM44xx CardBus iLine32 HomePNA 2.0 + 4432 BCM4432 CardBus 10/100BaseT + 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 + 8602 BCM7400/BCM7405 Serial ATA Controller + a8d8 BCM43224/5 Wireless Network Adapter + b302 BCM56302 StrataXGS 24x1GE 2x10GE Switch Controller + b334 BCM56334 StrataXGS 24x1GE 4x10GE Switch Controller + b800 BCM56800 StrataXGS 10GE Switch Controller + b842 BCM56842 Trident 10GE Switch Controller +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) + 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 + 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 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 ASUS 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 + 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 ASUS 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 + 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 + 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 + 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 c108 WinTV-HVR-4400-HD model 1278 + 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 +# nee PEP MODULAR Computers GmbH +1518 Kontron Modular Computers GmbH +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 + 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 +1529 AMERICAN MICROSystems Inc +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 +1542 Concurrent Computer Corporation + 9260 RCIM-II Real-Time Clock & Interrupt Module + 9272 Pulse Width Modulator Card + 9277 5 Volt Delta Sigma Converter Card + 9278 10 Volt Delta Sigma Converter Card + 9287 Analog Output 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 +1557 MEDIASTAR Co Ltd +1558 CLEVO/KAPOK Computer +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 Lecroy Corp +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 +# nee 3PAR Inc. +1590 Hewlett-Packard Company + 0001 Eagle Cluster Manager + 0002 Osprey Cluster Manager + 0003 Harrier Cluster Manager + 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 +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 +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 + 0801 Virtual Machine Interface + 15ad 0800 Hypervisor ROM Interface + 1977 HD Audio Controller +15ae Amersham Pharmacia Biotech +15b0 Zoltrix International Ltd +15b1 Source Technology Inc +15b2 Mosaid Technologies Inc +15b3 Mellanox Technologies + 0191 MT25408 [ConnectX IB Flash Recovery] + 01f6 MT27500 Family [ConnectX-3 Flash Recovery] + 01ff MT27600 Family [Connect-IB Flash Recovery] + 0209 MT27700 Family [ConnectX-4 Flash Recovery] + 1002 MT25400 Family [ConnectX-2 Virtual Function] + 1003 MT27500 Family [ConnectX-3] + 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 18d6 InfiniBand FDR/EN 10/40Gb Dual Port 544QSFP Adapter + 1004 MT27500/MT27520 Family [ConnectX-3/ConnectX-3 Pro Virtual Function] + 1005 MT27510 Family + 1006 MT27511 Family + 1007 MT27520 Family [ConnectX-3 Pro] + 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 MT27700 Family [ConnectX-4 Virtual Function] + 1015 MT27630 Family + 1016 MT27631 Family + 1017 MT27640 Family + 1018 MT27641 Family + 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] + 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 MT25408 [ConnectX VPI - IB SDR / 10GigE] + 634a MT25418 [ConnectX VPI PCIe 2.0 2.5GT/s - IB DDR / 10GigE] + 6368 MT25448 [ConnectX EN 10GigE, PCIe 2.0 2.5GT/s] + 6372 MT25408 [ConnectX EN 10GigE 10GBaseT, PCIe 2.0 2.5GT/s] + 6732 MT26418 [ConnectX VPI PCIe 2.0 5GT/s - IB DDR / 10GigE] + 673c MT26428 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE] + 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] + 675a MT25408 [ConnectX EN 10GigE 10GBaseT, PCIe Gen2 5GT/s] + 6764 MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s Virtualization+] + 103c 3313 HP 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+] +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 +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 + 1100 E8001-66442 PCI Express CIC + 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 GmbH + 0000 CIFX 50E-DP(M/S) +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 +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 +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 +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. +1657 Brocade Communications Systems, Inc. + 0013 425/825/42B/82B 4Gbps/8Gbps PCIe dual port FC HBA + 103c 1742 HP 82B 8Gbps dual port FC HBA + 103c 1744 HP 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 HP 41B 4Gbps single port FC HBA + 103c 1743 HP 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 +# AnyIO Adapter + 0022 1860 16Gbps/10Gbps 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 +165d Hsing Tech. Enterprise Co., Ltd. +165f Linux Media Labs, LLC + 1020 LMLM4 MPEG-4 encoder +1661 Worldspace Corp. +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 Bernecker + Rainer + 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. +1688 CastleNet Technology Inc. + 1170 WLAN 802.11b card +# 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 +# AR5001G, AR5001X+, AR5002G, AR5002X, AR5004G, AR5004X chipsets + 0013 AR5212/AR5213 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 108 Mbps Wireless PCI Adapter (rev.A3) + 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) + 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] + 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 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 3×3 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 + 103c 1838 AR9485/HB125 802.11bgn 1×1 Wi-Fi Adapter + 105b e044 Unex DHXA-225 + 0033 AR9580 Wireless Network Adapter + 0034 AR9462 Wireless Network Adapter + 1a56 2003 Killer Wireless-N 1202 Half-size Mini PCIe Card + 0036 QCA9565 / AR9565 Wireless Network Adapter + 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 QCA988x 802.11ac Wireless Network Adapter +# all QCA6174 devices? + 003e Killer N1525 Wireless-AC + 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 + 1841 SafeXcel 1842 +16af SparkLAN Communications, Inc. +16b4 Aspex Semiconductor Ltd +16b8 Sonnet Technologies, Inc. +16be Creatix Polymedia GmbH +16c3 Synopsys, Inc. +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 + 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 +16da Advantech Co., Ltd. + 0011 INES GPIB-PCI +16df PIKA Technologies Inc. +16e2 Geotest-MTS +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 +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) + 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 +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 + 0303 PCD-7006C Digital Input & Output PCI Card +1771 InnoVISION Multimedia Ltd. +# nee SBS Technologies +1775 GE Intelligent Platforms +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 Nitrox XL NPX + 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 + a001 THUNDERX MRML Bridge + 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 SGP + a02b THUNDERX SMI / MDIO Controller + a02c THUNDERX DAP (Debug Access Port) + a02d THUNDERX PCIERC (PCIe Root Complex) + a02e THUNDERX L2C-TAD + a02f THUNDERX L2C-CBC + a030 THUNDERX L2C-MCI + a031 THUNDERX MIO-FUS (Fuse Access Controller) + a032 THUNDERX FUSF (Fuse Controller) +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 + 000d Synchronisation Slave + 000e SIS1100-eCMC + 000f TDC (GPX) + 0010 PCIe Counter Timer + 0011 SIS1100-e single link + 0012 SIS1100-e quad link + 0015 SIS8100 [Gigabit link, MicroTCA] +1797 Techwell Inc. + 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 +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 +17aa Lenovo +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. +17cb Airgo Networks, 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 +17cc NetChip Technology, Inc + 2280 USB 2.0 +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 + 1210 ARC-1210 4-Port PCI-Express to SATA 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 + 1680 ARC-1680 8 port PCIe/PCI-X to SAS/SATA II RAID Controller + 17d3 1212 ARC-1212 4-Port PCIe to SAS/SATA II RAID Controller + 1880 ARC-1880 8/12 port PCIe/PCI-X to SAS/SATA II 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 +17de KWorld Computer Co. Ltd. +17e4 Sectra AB + 0001 KK671 Cardbus encryption board + 0002 KK672 Cardbus encryption board +17e6 Entropic Communications Inc. + 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) +17ee Connect Components Ltd +17f2 Albatron Corp. +17f3 RDC Semiconductor, Inc. + 1010 R1010 IDE Controller + 6020 R6020 North Bridge + 6021 R6021 Host Bridge + 6030 R6030 ISA Bridge + 6031 R6031 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 +1805 Euresys S.A. +1809 Lumanate, Inc. +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 + 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 + 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 + 5390 RT5390 Wireless 802.11n 1T/1R PCIe + 103c 1636 U98Z077.00 Half-size Mini PCIe Card + 5392 RT5392 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 +183b MikroM GmbH + 08a7 MVC100 DVI + 08a8 MVC101 SDI + 08a9 MVC102 DVI+Audio + 08b0 MVC200-DC +1846 Alcatel-Lucent +1849 ASRock Incorporation +184a Thales Computers + 1100 MAX II cPLD +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 +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 + 07ca 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 +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 +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 +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 +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 Solarflare Communications + 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 [Solarstorm] + 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 [Solarstorm] + 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 + 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 + 0923 SFC9140 + 1924 800b SFN7x42Q-R1 Flareon Ultra 7000 Series 10/40G Adapter + 1803 SFC9020 Virtual Function [Solarstorm] + 1813 SFL9021 Virtual Function [Solarstorm] + 1903 SFC9120 Virtual Function + 1923 SFC9140 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. +192e TransDimension +1931 Option N.V. + 000c Qualcomm MSM6275 UMTS chip +1932 DiBcom +193c MAXIM Integrated Products +193f Comtech AHA Corp. + 0001 AHA36x-PCIX + 0360 AHA360-PCIe + 0363 AHA363-PCIe + 0364 AHA364-PCIe + 0367 AHA367-PCIe + 0370 AHA370-PCIe + 3641 AHA3641 + 3642 AHA3642 +1942 ClearSpeed Technology plc + e511 Advance X620 accelerator card + e521 Advance e620 accelerator card +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 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 + 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 + c006 MPC8308 + 1a56 1201 Killer E2100 Gigabit Ethernet Controller +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 +# 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 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 + 1091 AR8161 Gigabit Ethernet + 1043 1477 N56VZ + 10a0 QCA8172 Fast Ethernet + 10a1 QCA8171 Gigabit Ethernet + 2048 Attansic L2 Fast Ethernet + 2060 AR8152 v1.1 Fast Ethernet + 2062 AR8152 v2.0 Fast Ethernet +# E2200, E2201, E2205 + e091 Killer E220x 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 +1971 AGEIA Technologies, Inc. + 1011 Physics Processing Unit [PhysX] + 1043 0001 PhysX P1 +1974 Eberspaecher Electronics +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 + 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 +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 + 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 10Gb NIC + 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 10Gb FCoE Initiator + 0710 OneConnect 10Gb NIC (be3) + 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 + 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 +19a8 DAQDATA GmbH +19ac Kasten Chase Applied Research + 0001 ACA2400 Crypto Accelerator +19ae Progeny Systems Corporation + 0520 4135 HFT Interface Controller + 0521 Decimator +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 +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 +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 +1a0e DekTec Digital Video B.V. + 083f DTA-2111 VHF/UHF Modulator +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 + 4e36 NP6 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 PPA-REG + 1000 MCOR Power Supply Controller + 1010 AMC EVR - Stockholm Timing Board + 2000 PGPCard - 4 Lane + 2001 PGPCard - 8 Lane Plus EVR + 2010 PCI-Express EVR +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 +1a56 Bigfoot Networks, Inc. +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) +1a88 MEN Mikro Elektronik + 4d45 Multifunction IP core +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 +1aae Global Velocity, Inc. +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 +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 +1ae0 Google, Inc. +1ae7 First Wise Media GmbH + 0520 HFC-S PCI A [X-TENSIONS XC-520] +1ae8 Silicon Software GmbH + 0a40 microEnable IV-BASE x1 + 0a41 microEnable IV-FULL x1 + 0a44 microEnable IV-FULL x4 + 0e44 microEnable IV-GigE x4 +1ae9 Wilocity Ltd. + 0101 Wil6200 PCI Express Root 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 +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 + 1001 Virtio block device + 1002 Virtio memory balloon + 1003 Virtio console + 1004 Virtio SCSI + 1005 Virtio RNG + 1009 Virtio filesystem + 1010 Virtio GPU + 1012 Virtio input device + 1110 Inter-VM shared memory + 1af4 1100 QEMU Virtual Machine +1af5 Netezza Corp. +1afa J & W Electronics Co., Ltd. +1b03 Magnum Semiconductor, Inc, + 6100 DXT/DXTPro Multiformat Broadcast HD/SD Encoder/Decoder/Transcoder +1b08 MSC Vertriebs GmbH +1b0a Pegatron +1b13 Jaton Corp +1b1a K&F Computing Research Co. + 0e70 GRAPE +1b21 ASMedia Technology Inc. + 0611 ASM1061 SATA IDE Controller + 0612 ASM1062 Serial ATA Controller + 1849 0612 Motherboard + 1042 ASM1042 SuperSpeed USB Host Controller + 1043 8488 P8B WS Motherboard + 1849 1042 Motherboard + 1080 ASM1083/1085 PCIe to PCI Bridge + 1849 1080 Motherboard + 1142 ASM1042A USB 3.0 Host Controller +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 + 0100 QXL paravirtual graphic card + 1af4 1100 QEMU Virtual Machine +1b37 Signal Processing Devices Sweden AB + 0014 ADQ412 +# 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. + 0640 88SE9128 SATA III 6Gb/s RAID Controller + 9120 88SE9120 SATA 6Gb/s Controller + 9123 88SE9123 PCIe SATA 6.0 Gb/s controller + 9125 88SE9125 PCIe SATA 6.0 Gb/s controller + 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 + 9172 88SE9172 SATA 6Gb/s Controller + 9178 88SE9170 PCIe SATA 6Gb/s Controller + 917a 88SE9172 SATA III 6Gb/s RAID 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 + 9220 88SE9220 PCIe 2.0 x2 2-port SATA 6 Gb/s RAID Controller + 9230 88SE9230 PCIe SATA 6Gb/s Controller + 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 +1b55 NetUP Inc. + 18f6 Dual DVB Universal CI card + 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 +1b66 Deltacast + 0007 Delta-3G-elp-11 SDI I/O Board +1b6f Etron Technology, Inc. + 7023 EJ168 USB 3.0 Host Controller + 7052 EJ188/EJ198 USB 3.0 Host Controller +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 +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 +1b85 OCZ Technology Group, Inc. + 1041 RevoDrive 3 X2 PCI-Express SSD 240 GB (Marvell Controller) + 8788 RevoDrive Hybrid +1b96 Western Digital +1b9a XAVi Technologies Corp. +1bad ReFLEX CES +1bb0 SimpliVity Corporation + 0002 OmniCube Accelerator OA-3000 + 0010 OmniCube Accelerator OA-3000-2 +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 +1bee IXXAT Automation GmbH + 0003 CAN-IB200/PCIe +1bf4 VTI Instruments Corporation + 0001 SentinelEX +1bfd EeeTOP +1c1c Symphony + 0001 82C101 +1c28 Lite-On IT Corp. / Plextor + 0122 M6e PCI Express SSD [Marvell 88SS9183] +1c2c Fiberblaze + 000a Capture + 000f SmartNIC + 00a0 FBC4G Capture 4x1Gb + 00a1 FBC4XG Capture 4x10Gb + 00a2 FBC8XG Capture 8x10Gb + 00a3 FBC2XG Capture 2x10Gb + 00a4 FBC4XGG3 Capture 4x10Gb + 00a5 FBC2XLG Capture 2x40Gb + 00a6 FBC1CG Capture 1x100Gb +# Used on V120 VME Crate Controller +1c32 Highland Technology, Inc. +1c33 Daktronics, Inc +1c3b Accensus, LLC + 0200 Telas2 +# http://www.accensusllc.com/accensustelas2.html + 0300 Telas 2.V +1c44 Enmotus Inc + 8000 8000 Storage IO Controller +1c7e TTTech Computertechnik AG + 0200 zFAS Debug Port +1c7f Elektrobit Austria GmbH + 5100 EB5100 +1c8a TSF5 Corporation + 0001 Hunter PCI Express +1cb1 Collion UG & Co.KG +1cc5 Embedded Intelligence, Inc. + 0100 CAN-PCIe-02 +1cd2 SesKion GmbH + 0301 Simulyzer-RT CompactPCI Serial DIO-1 card +1ce4 Exablaze + 0001 ExaNIC X4 + 0002 ExaNIC X2 +1cf7 Subspace Dynamics +# CEM Solutions Pvt. Ltd. +1d21 Allo +1d44 DPT + a400 PM2x24/PM3224 +1d5c Fantasia Trading LLC +1de1 Tekram Technology Co.,Ltd. + 0391 TRM-S1040 + 2020 DC-390 + 690c 690c + dc29 DC290 +# 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 +1fce Cognio Inc. + 0001 Spectrum Analyzer PC Card (SAgE) +1fd4 SUNIX Co., Ltd. + 0001 Matrix multiport serial adapter + 1999 Multiport serial controller +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. +20f4 TRENDnet +2116 ZyDAS Technology Corp. +21c3 21st Century Computer Corp. +2304 Colorgraphic Communications Corp. +2348 Racore + 2010 8142 100VG/AnyLAN +2646 Kingston Technologies +270b Xantel Corporation +270f Chaintech Computer Co. Ltd +2711 AVID Technology Inc. +2955 Connectix Virtual PC + 6e61 OHCI USB 1.1 controller +2a15 3D Vision(???) +3000 Hansol Electronics Inc. +3142 Post Impression Systems. +31ab Zonet + 1faa ZEW1602 802.11b/g Wireless Adapter +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 + 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 Arastra Inc. +3513 ARCOM Control Systems Ltd +37d9 ITD Firm ltd. + 1138 SCHD-PH-8 Phase detector +3842 eVga.com. Corp. +38ef 4Links +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 + 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 +4254 DVBSky +4321 Tata Power Strategic Electronics Division +434e CAST Navigation LLC +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 +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. + 0520 PCI-IDO-48 + 0920 PCI-IDI-48 + 0c50 PCI-DIO-24H + 0c51 PCI-DIO-24D + 0c60 PCI-DIO-48(H) + 0c68 PCI-DIO-72 + 0c70 PCI-DIO-96 + 0c78 PCI-DIO-120 + 0dc8 PCI-IDIO-16 + 0e50 PCI-DIO-24S + 0e51 PCI-DIO-24H(C) + 0e52 PCI-DIO-24D(C) + 0e60 PCI-DIO-48S(H) + 0e61 P104-DIO-24S + 0f00 PCI-IIRO-8 + 0f01 LPCI-IIRO-8 + 0f08 PCI-IIRO-16 + 1050 PCI-422/485-2 + 1058 PCI-COM422/4 + 1059 PCI-COM485/4 + 1068 PCI-COM422/8 + 1069 PCI-COM485/8 + 1088 PCI-COM232/1 + 1090 PCI-COM232/2 + 10a8 P104-COM232-8 + 10c9 PCI-COM-1S + 10d0 PCI-COM2S + 10e8 PCI-COM-8SM + 1148 PCI-ICM-1S + 1150 PCI-ICM-2S + 1158 PCI-ICM422/4 + 1159 PCI-ICM485/4 + 1250 PCI-WDG-2S + 12d0 PCI-WDG-IMPAC + 22c0 PCI-WDG-CSM + 2c50 PCI-DIO-96CT + 2c58 PCI-DIO-96C3 + 5ed0 PCI-DAC + 6c90 PCI-DA12-2 + 6c98 PCI-DA12-4 + 6ca0 PCI-DA12-6 + 6ca8 PCI-DA12-8 + 6ca9 PCI-DA12-8V + 6cb0 PCI-DA12-16 + 6cb1 PCI-DA12-16V + 8ef0 P104-FAS16-16 + aca8 PCI-AI12-16 + aca9 PCI-AI12-16A + eca8 PCI-AIO12-16 + eca9 PCI-A12-16 + ecaa PCI-A12-16A + ece8 PCI-A16-16 +4978 Axil Computer Inc +4a14 NetVin + 5000 NV5000SC + 4a14 5000 RT8029-Based Ethernet Adapter +4b10 Buslogic Inc. +4c48 LUNG HWA Electronics +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 MATRIX VISION 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 +4ddc ILC Data Device Corp + 0100 DD-42924I5-300 (ARINC 429 Data Bus) + 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 +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 +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 + 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 +5452 SCANLAB AG + 3443 RTC4 +5455 Technische University 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] +5646 Vector Fabrics BV +5654 VoiceTronix Pty Ltd +5700 Netpower +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 +# Virtual device surfaced in guests to provide HID events. + c110 Virtualized HID +# Device surfaced in guests to provide 2d graphics capabilities + c147 Virtualized Graphics Device +5854 GoTView +5ace Beholder International Ltd. +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 +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 +# nee Qumranet +6900 Red Hat, Inc. +7063 pcHDTV + 2000 HD-2000 + 3000 HD-3000 + 5500 HD5500 HDTV +7284 HT OMEGA Inc. +7401 EndRun Technologies + e100 PTP3100 PCIe PTP Slave Clock +7604 O.N. Electronic Co Ltd. +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 + 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 + 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 AGN + 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 + 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] + 0102 2nd Generation Core Processor Family Integrated Graphics Controller + 1028 04aa XPS 8300 + 1043 0102 P8H67 Series Motherboard + 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] + 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 + 0122 2nd Generation Core Processor Family Integrated Graphics Controller + 0126 2nd Generation Core Processor Family Integrated Graphics Controller + 1028 04cc Vostro 3350 + 0150 Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller + 1043 84ca P8 series motherboard + 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 0813 Aspire R7-571 + 103c 17f6 ProBook 4540s + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 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 + 0158 Xeon E3-1200 v2/Ivy Bridge DRAM Controller + 1043 844d P8 series motherboard + 8086 2010 Server Board S1200BTS + 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 Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller + 1043 84ca P8 series motherboard + 1849 0162 Motherboard + 0166 3rd Gen Core processor Graphics Controller + 1043 1517 Zenbook Prime UX31A + 1043 2103 N56VZ + 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 + 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 PCI Express-to-PCI Express Bridge + 0371 80333 A-Bus IOAPIC + 0372 80333 Segment-B PCI Express-to-PCI Express Bridge + 0373 80333 B-Bus IOAPIC + 0374 80333 Address Translation Unit + 0402 Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller + 0406 4th Gen Core Processor Integrated Graphics Controller + 040a Xeon E3-1200 v3 Processor Integrated Graphics Controller + 0412 Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller + 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 + 0433 Coleto Creek ACC - ME/CPM interface + 0435 Coleto Creek PCIe Endpoint + 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 + 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 + 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 CE Media Processor 4100 + 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 + 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 + 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 +# Wilkins Peak 2 + 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 + 08b2 Wireless 7260 +# Wilkins Peak 2 + 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 + 08b3 Wireless 3160 +# Wilkins Peak 1 + 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 + 08b4 Wireless 3160 +# Wilkins Peak 1 + 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 +# PowerVR SGX 545 + 08cf Atom Processor Z2760 Integrated Graphics 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] + 095a Wireless 7265 +# Stone Peak 2 AC + 8086 1010 Dual Band Wireless-AC 7265 +# Stone Peak 2 AGN + 8086 5000 Dual Band Wireless-N 7265 +# Stone Peak 2 BGN + 8086 5002 Wireless-N 7265 +# Stone Peak 2 AGN + 8086 500a Dual Band Wireless-N 7265 +# Stone Peak 2 AC + 8086 5010 Dual Band Wireless-AC 7265 +# Stone Peak 2 AC + 8086 5012 Dual Band Wireless-AC 7265 +# Stone Peak 2 AGN + 8086 5020 Dual Band Wireless-N 7265 +# Stone Peak 2 AGN + 8086 502a Dual Band Wireless-N 7265 +# Maple Peak AC + 8086 5090 Dual Band Wireless-AC 7265 +# Stone Peak 2 AGN + 8086 5100 Dual Band Wireless-AC 7265 +# Stone Peak 2 BGN + 8086 5102 Wireless-N 7265 +# Stone Peak 2 AGN + 8086 510a Dual Band Wireless-AC 7265 +# Stone Peak 2 AC + 8086 5110 Dual Band Wireless-AC 7265 +# Stone Peak 2 AC + 8086 5112 Dual Band Wireless-AC 7265 +# Maple Peak AC + 8086 5190 Dual Band Wireless-AC 7265 +# Stone Peak 2 AGN + 8086 5400 Dual Band Wireless-AC 7265 +# Stone Peak 2 AC + 8086 5410 Dual Band Wireless-AC 7265 +# Stone Peak 2 AC + 8086 5412 Dual Band Wireless-AC 7265 +# Stone Peak 2 AGN + 8086 5420 Dual Band Wireless-N 7265 +# Maple Peak AC + 8086 5490 Dual Band Wireless-AC 7265 +# Stone Peak 2 AC + 8086 5510 Dual Band Wireless-AC 7265 +# Maple Peak AC + 8086 5590 Dual Band Wireless-AC 7265 +# Stone Peak 2 AGN + 8086 9000 Dual Band Wireless-AC 7265 +# Stone Peak 2 AGN + 8086 900a Dual Band Wireless-AC 7265 +# Stone Peak 2 AC + 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 AGN + 8086 9400 Dual Band Wireless-AC 7265 +# Stone Peak 2 AC + 8086 9410 Dual Band Wireless-AC 7265 +# Stone Peak 2 AC + 8086 9510 Dual Band Wireless-AC 7265 + 095b Wireless 7265 +# Stone Peak 2 AGN + 8086 5200 Dual Band Wireless-N 7265 +# Stone Peak 2 BGN + 8086 5202 Wireless-N 7265 +# Stone Peak 2 AGN + 8086 520a Dual Band Wireless-N 7265 +# Stone Peak 2 AC + 8086 5210 Dual Band Wireless-AC 7265 +# Stone Peak 2 AC + 8086 5212 Dual Band Wireless-AC 7265 +# Maple Peak AC + 8086 5290 Dual Band Wireless-AC 7265 +# Stone Peak 2 BGN + 8086 5302 Wireless-N 7265 +# Stone Peak 2 AC + 8086 5310 Dual Band Wireless-AC 7265 +# Stone Peak 2 AGN + 8086 9200 Dual Band Wireless-AC 7265 + 0960 80960RP (i960RP) Microprocessor/Bridge + 0962 80960RM (i960RM) Bridge + 0964 80960RP (i960RP) Microprocessor/Bridge + 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 + 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 + 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 + 17aa 220e ThinkPad T440p + 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 + 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 + 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 + 0e00 Xeon E7 v2/Xeon E5 v2/Core i7 DMI2 + 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 + 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 + 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 + 0e21 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 1 + 0e22 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 2 + 0e23 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 3 + 0e24 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 4 + 0e25 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 5 + 0e26 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 6 + 0e27 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 7 + 0e28 Xeon E7 v2/Xeon E5 v2/Core i7 VTd/Memory Map/Misc + 0e29 Xeon E7 v2/Xeon E5 v2/Core i7 Memory Hotplug + 0e2a Xeon E7 v2/Xeon E5 v2/Core i7 IIO RAS + 0e2c Xeon E7 v2/Xeon E5 v2/Core i7 IOAPIC + 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 + 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 + 0e36 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring + 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 + 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 + 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 + 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 + 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 Series USB xHCI + 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 + 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 Intel 82865G Mainboard (D865GBF) + 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 + 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 + 1050 82562EZ 10/100 Ethernet Controller + 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 Gigabit Ethernet Controller + 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 + 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 Intel 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 HP 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 Gigabit Ethernet Controller (Copper) + 103c 704b NC364T PCI Express Quad Port Gigabit Server Adapter + 108e 11bc x4 PCI-Express Quad Gigabit Ethernet UTP Low Profile Adapter + 8086 10bc PRO/1000 PT Quad Port LP Server Adapter + 8086 11bc PRO/1000 PT Quad Port LP Server Adapter + 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 + 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 060a X7SPA-H/X7SPA-HF Motherboard + 15d9 060d C7SIM-Q Motherboard + 8086 0001 Gigabit CT2 Desktop Adapter + 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 + 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 + 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 + 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 + 1734 11a9 10 Gigabit Dual Port Network Connection + 17aa 1071 ThinkServer X520-2 AnyFabric + 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 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 TUSL2-C Mainboard + 104d 80df Vaio PCG-FX403 + 8086 4532 D815EEA2 mainboard + 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 D815EEA2 Mainboard + 8086 4541 D815EEA Motherboard + 8086 4557 D815EGEW Mainboard + 1161 82806AA PCI64 Hub Advanced Programmable Interrupt Controller + 8086 1161 82806AA PCI64 Hub APIC + 1162 Xscale 80200 Big Endian Companion Chip + 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] + 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 + 1250 430HX - 82439HX TXC [Triton II] + 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) + 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 + 1028 04a3 Precision M4600 + 8086 357a Server Board S1200BTS + 1503 82579V Gigabit Network Connection + 1043 849c P8P67 Deluxe Motherboard + 1507 Ethernet Express Module X520-P2 + 1508 82598EB Gigabit BX 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 + 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 + 151c 82599 10 Gigabit TN Network Connection + 108e 7b13 Dual 10GBASE-T LP + 1520 I350 Ethernet Controller Virtual Function + 1521 I350 Gigabit Network Connection + 1028 0602 Gigabit 2P I350-t LOM + 1028 1f60 Gigabit 4P I350-t rNDC + 1028 1f62 Gigabit 4P X540/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 + 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 + 17aa 1074 ThinkServer I350-T4 AnyFabric + 8086 0001 Ethernet Server Adapter I350-T4 + 8086 0002 Ethernet Server Adapter I350-T2 + 8086 00a1 Ethernet Server Adapter I350-T4 + 8086 00a2 Ethernet Server Adapter I350-T2 + 8086 5001 Ethernet Server Adapter I350-T4 + 8086 5002 Ethernet Server Adapter I350-T2 + 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 + 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 + 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 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 + 17aa 1073 ThinkServer X540-T2 AnyFabric + 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 + 1529 82599 10 Gigabit Dual Port Network Connection with FCoE + 152a 82599 10 Gigabit Dual Port Backplane Connection with FCoE + 1533 I210 Gigabit Network Connection + 103c 0003 Ethernet I210-T1 GbE NIC + 1093 7706 Compact Vision System Ethernet Adapter + 10a9 802c UV300 BaseIO single-port GbE + 10a9 802d UV3000 BaseIO GbE Network + 17aa 1100 ThinkServer Ethernet Server Adapter + 8086 0001 Ethernet Server Adapter I210-T1 + 8086 0002 Ethernet Server Adapter I210-T1 + 1536 I210 Gigabit Fiber Network Connection + 1537 I210 Gigabit Backplane Connection + 1538 I210 Gigabit Network Connection + 1539 I211 Gigabit Network Connection + 153a Ethernet Connection I217-LM + 103c 1909 ZBook 15 + 17aa 220e ThinkPad T440p + 153b Ethernet Connection I217-V + 1547 DSL3510 Thunderbolt Port [Cactus Ridge] + 1549 DSL3510 Thunderbolt Controller [Cactus Ridge] + 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 XL710/X710 Virtual Function + 154d Ethernet 10G 2P X520 Adapter + 8086 7b11 10GbE 2P X520 Adapter + 1557 82599 10 Gigabit Network Connection + 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 + 156f Ethernet Connection I219-LM + 1570 Ethernet Connection I219-V + 1571 XL710/X710 Virtual Function + 1572 Ethernet Controller X710 for 10GbE SFP+ + 1028 1f99 Ethernet 10G 4P X710/I350 rNDC + 17aa 0000 ThinkServer XL710 AnyFabric + 17aa 4001 ThinkServer XL710-4 AnyFabric + 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 10G 4P X710 Adapter + 8086 0006 Ethernet 10G 2P X710 Adapter + 8086 0007 Ethernet Converged Network Adapter X710-2 + 8086 0008 Ethernet Converged Network Adapter X710-2 + 157b I210 Gigabit Network Connection + 157c I210 Gigabit Backplane Connection + 1580 Ethernet Controller XL710 for 40GbE backplane + 1581 Ethernet Controller X710 for 10GbE backplane + 1028 1f98 Ethernet 10G 4P X710-k bNDC + 1583 Ethernet Controller XL710 for 40GbE QSFP+ + 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 + 1584 Ethernet Controller XL710 for 40GbE QSFP+ + 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 + 1585 Ethernet Controller XL710 for 10GbE QSFP+ + 15a0 Ethernet Connection (2) I218-LM + 15a1 Ethernet Connection (2) I218-V + 15a2 Ethernet Connection (3) I218-LM + 15a3 Ethernet Connection (3) I218-V + 15a8 Ethernet Connection X552 Virtual Function + 15aa Ethernet Connection X552 10 GbE Backplane + 15ab Ethernet Connection X552 10 GbE Backplane + 15ac Ethernet Connection X552 10 GbE SFP+ + 15ad Ethernet Connection X552/X557-AT 10GBASE-T + 15b7 Ethernet Connection (2) I219-LM + 15b8 Ethernet Connection (2) I219-V + 1600 Broadwell-U Host Bridge -OPI + 1601 Broadwell-U PCI Express x16 Controller + 1602 Broadwell-U Integrated Graphics + 1603 Broadwell-U Camarillo Device + 1604 Broadwell-U Host Bridge -OPI + 1605 Broadwell-U PCI Express x8 Controller + 1606 Broadwell-U Integrated 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 Broadwell-U Integrated Graphics + 1614 Broadwell-U Host Bridge - DMI + 1616 Broadwell-U Integrated Graphics + 1618 Broadwell-U Host Bridge - DMI + 161a Broadwell-U Integrated Graphics + 161b Broadwell-U Integrated Graphics + 161d Broadwell-U Integrated Graphics + 161e Broadwell-U Integrated Graphics + 1622 Broadwell-U Integrated Graphics + 1626 Broadwell-U Integrated Graphics + 162a Broadwell-U Integrated Graphics + 162b Broadwell-U Integrated Graphics + 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 + 1900 Sky Lake Host Bridge/DRAM Registers + 1901 Sky Lake PCIe Controller (x16) + 1904 Sky Lake Host Bridge/DRAM Registers + 1905 Sky Lake PCIe Controller (x8) + 1908 Sky Lake Host Bridge/DRAM Registers + 1909 Sky Lake PCIe Controller (x4) + 190c Sky Lake Host Bridge/DRAM Registers + 190f Sky Lake Host Bridge/DRAM Registers + 1910 Sky Lake Host Bridge/DRAM Registers + 1911 Sky Lake Gaussian Mixture Model + 1912 Sky Lake Integrated Graphics + 1916 Sky Lake Integrated Graphics + 1918 Sky Lake Host Bridge/DRAM Registers + 1919 Sky Lake Imaging Unit + 191e Sky Lake Integrated Graphics + 191f Sky Lake Host Bridge/DRAM Registers + 1926 Sky Lake Integrated Graphics + 1932 Sky Lake Integrated Graphics + 193b Sky Lake Integrated Graphics + 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 + 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 + 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 Intel 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 + 1c00 6 Series/C200 Series Chipset Family 4 port SATA IDE Controller + 1c01 6 Series/C200 Series Chipset Family 4 port SATA IDE Controller + 1c02 6 Series/C200 Series Chipset Family SATA AHCI Controller + 1028 04aa XPS 8300 + 1043 844d P8 series motherboard + 8086 7270 Server Board S1200BTS + 1c03 6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller + 1028 04a3 Precision M4600 + 1028 04b2 Vostro 3350 + 1028 04da Vostro 3750 + 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] + 1c04 6 Series/C200 Series Chipset Family SATA RAID Controller + 103c 3118 Smart Array B110i SATA RAID Controller + 1c05 6 Series/C200 Series Chipset Family SATA RAID Controller + 1c08 6 Series/C200 Series Chipset Family 2 port SATA IDE Controller + 1c09 6 Series/C200 Series Chipset Family 2 port SATA IDE Controller + 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 + 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 + 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 + 1c18 6 Series/C200 Series Chipset Family PCI Express Root Port 5 + 1028 04da Vostro 3750 + 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 + 1043 8418 P8P67 Deluxe Motherboard + 1043 841b P8H67 Series Motherboard +# Realtek ALC888 audio codec + 8086 2008 DQ67SW board + 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 + 8086 7270 Server Board S1200BTS / 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 + 8086 7270 Server Board S1200BTS / 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 + 8086 7270 Server Board S1200BTS / 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 04a3 Precision M4600 + 1028 04aa XPS 8300 + 1028 04b2 Vostro 3350 + 1028 04da Vostro 3750 + 1043 844d P8 series 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 + 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 Family LPC Controller + 1c45 6 Series/C200 Series Chipset Family LPC Controller + 1c46 P67 Express Chipset Family LPC Controller + 1043 844d P8P67 Deluxe Motherboard + 1c47 UM67 Express Chipset Family LPC Controller + 1c48 6 Series/C200 Series Chipset Family LPC Controller + 1c49 HM65 Express Chipset Family LPC Controller + 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] + 1c4a H67 Express Chipset Family LPC Controller + 1028 04aa XPS 8300 + 1043 844d P8H67 Series Motherboard + 1c4b HM67 Express Chipset Family LPC Controller + 1028 04b2 Vostro 3350 + 1028 04da Vostro 3750 + 1c4c Q65 Express Chipset Family LPC Controller + 1c4d QS67 Express Chipset Family LPC Controller + 1c4e Q67 Express Chipset Family LPC Controller + 1c4f QM67 Express Chipset Family LPC Controller + 1028 04a3 Precision M4600 + 1c50 B65 Express Chipset Family LPC Controller + 1c51 6 Series/C200 Series Chipset Family LPC Controller + 1c52 C202 Chipset Family LPC Controller + 8086 7270 Server Board S1200BTS + 1c53 6 Series/C200 Series Chipset Family LPC Controller + 1c54 C204 Chipset Family LPC Controller + 1c55 6 Series/C200 Series Chipset Family LPC Controller + 1c56 C206 Chipset Family LPC Controller + 1043 844d P8B WS Motherboard + 1c57 6 Series/C200 Series Chipset Family LPC Controller + 1c58 Upgraded B65 Express Chipset Family LPC Controller + 1c59 Upgraded HM67 Express Chipset Family LPC Controller + 1c5a Upgraded Q67 Express Chipset Family LPC Controller + 1c5b 6 Series/C200 Series Chipset Family LPC Controller + 1c5c H61 Express Chipset Family LPC Controller + 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 + 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 + 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 + 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 + 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 + 1d24 C600/X79 series chipset Thermal Management Controller + 1d25 C600/X79 series chipset DMI to PCI Bridge + 1d26 C600/X79 series chipset USB2 Enhanced Host Controller #1 + 1d2d C600/X79 series chipset USB2 Enhanced Host Controller #2 + 1d33 C600/X79 series chipset LAN Controller + 1d35 C600/X79 series chipset VECI Controller + 1d3a C600/X79 series chipset MEI Controller #1 + 1d3b C600/X79 series chipset MEI Controller #2 + 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 + 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 + 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 + 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] + 1e01 7 Series Chipset Family 4-port SATA Controller [IDE mode] + 1e02 7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] + 1043 84ca P8 series motherboard + 1849 1e02 Motherboard + 1e03 7 Series Chipset Family 6-port SATA Controller [AHCI mode] + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 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] + 1e0e 7 Series/C210 Series Chipset Family SATA Controller [RAID mode] + 1e10 7 Series/C210 Series Chipset Family PCI Express Root Port 1 + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 1043 84ca P8H77-I Motherboard + 1849 1e10 Motherboard + 1e12 7 Series/C210 Series Chipset Family PCI Express Root Port 2 + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 1e14 7 Series/C210 Series Chipset Family PCI Express Root Port 3 + 1e16 7 Series/C210 Series Chipset Family PCI Express Root Port 4 + 1043 1477 N56VZ + 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 + 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 + 1849 1e1e Motherboard + 1e20 7 Series/C210 Series Chipset Family High Definition Audio Controller + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 1043 8415 P8H77-I Motherboard + 1043 8445 ASUS P8Z77-V LX Motherboard + 1849 1898 Z77 Extreme4 motherboard + 1e22 7 Series/C210 Series Chipset Family SMBus Controller + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 1043 84ca P8 series 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/C210 Series Chipset Family USB Enhanced Host Controller #1 + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 1043 84ca P8 series motherboard + 1849 1e26 Motherboard + 1e2d 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 1043 84ca P8 series motherboard + 1849 1e2d Motherboard + 1e31 7 Series/C210 Series Chipset Family USB xHCI Host Controller + 103c 17ab ProBook 6570b + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 1043 84ca P8 series motherboard + 1849 1e31 Motherboard + 1e33 7 Series/C210 Series Chipset Family LAN Controller + 1e3a 7 Series/C210 Series Chipset Family MEI Controller #1 + 1043 1477 N56VZ + 1043 1517 Zenbook Prime UX31A + 1043 84ca P8 series 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 + 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 + 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 + 1e5e 7 Series Chipset Family LPC Controller + 1e5f 7 Series Chipset Family 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 nCPM + 1f19 Atom processor C2000 nCPM + 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 + 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 + 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 + 2021 Sky Lake-E CBDMA Registers + 2024 Sky Lake-E MM/Vt-d Configuration Registers + 2030 Sky Lake-E PCI Express Root Port 1A + 2031 Sky Lake-E PCI Express Root Port 1B + 2032 Sky Lake-E PCI Express Root Port 1C + 2033 Sky Lake-E PCI Express Root Port 1D + 2035 Sky Lake-E RAS Configuration Registers + 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 + 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 + 208d Sky Lake-E CHA Registers + 208e Sky Lake-E CHA Registers + 2250 Xeon Phi coprocessor 5100 series + 225c Xeon Phi coprocessor SE10/7120 series + 225d Xeon Phi coprocessor 3120 series + 225e Xeon Phi coprocessor 31S1 + 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 Coleto Creek LPC Controller + 23a1 Coleto Creek 2-Port SATA Controller [IDE Mode] + 23a3 Coleto Creek 4-Port SATA Controller [AHCI Mode] + 23a6 Coleto Creek 2-Port SATA Controller [IDE Mode] + 23b0 Coleto Creek SMBus Controller + 23b1 Coleto Creek CHAP Counter + 23b2 Coleto Creek Thermal Management Controller + 23b4 Coleto Creek USB2 Enhanced Host Controller #1 + 23b5 Coleto Creek USB2 Enhanced Host Controller #1 + 23c2 Coleto Creek PCI Express Root Port #1 + 23c3 Coleto Creek PCI Express Root Port #1 + 23c4 Coleto Creek PCI Express Root Port #2 + 23c5 Coleto Creek PCI Express Root Port #2 + 23c6 Coleto Creek PCI Express Root Port #3 + 23c7 Coleto Creek PCI Express Root Port #3 + 23c8 Coleto Creek PCI Express Root Port #4 + 23c9 Coleto Creek PCI Express Root Port #4 + 23e0 Coleto Creek Watchdog Timer + 23e4 Coleto Creek MEI Controller #1 + 23e5 Coleto Creek 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 USB 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 TUSL2-C Mainboard + 104d 80df Vaio PCG-FX403 + 147b 0507 TH7II-RAID + 8086 4532 D815EEA2 mainboard + 8086 4557 D815EGEW Mainboard + 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 TUSL2-C Mainboard + 104d 80df Vaio PCG-FX403 + 147b 0507 TH7II-RAID + 15d9 3280 Supermicro P4SBE Mainboard + 8086 4532 D815EEA2 mainboard + 8086 4557 D815EGEW Mainboard + 8086 5744 S845WD1-E mainboard + 2444 82801BA/BAM USB Controller #1 + 1025 1016 Travelmate 612 TX + 1028 00c7 Dimension 8100 + 1028 00d8 Precision 530 + 1028 010e Optiplex GX240 + 103c 126f e-pc 40 + 1043 8027 TUSL2-C Mainboard + 104d 80df Vaio PCG-FX403 + 147b 0507 TH7II-RAID + 8086 4532 D815EEA2 mainboard + 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 + 1462 3370 STAC9721 AC + 147b 0507 TH7II-RAID + 8086 4557 D815EGEW Mainboard + 2446 82801BA/BAM AC'97 Modem Controller + 1025 1016 Travelmate 612 TX + 104d 80df Vaio PCG-FX403 + 2448 82801 Mobile PCI Bridge + 1028 040b Latitude E6510 + 103c 0934 HP Compaq nw8240 Mobile Workstation + 103c 099c NX6110/NC6120 + 103c 309f Compaq nx9420 Notebook + 103c 30a3 Compaq nw8440 + 103c 30c1 Compaq 6910p + 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 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 TUSL2-C Mainboard + 147b 0507 TH7II-RAID + 15d9 3280 Supermicro P4SBE Mainboard + 8086 4532 D815EEA2 mainboard + 8086 4557 D815EGEW Mainboard + 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 + 103c 2a3b Pavilion A1512X + 103c 2a6f Asus IPIBL-LB Motherboard + 103c 31fe ProLiant DL140 G3 + 103c 330b ProLiant ML150 G6 Server +# same ID possibly also on other ASUS boards + 1043 8277 P5K PRO Motherboard + 1043 844d P8 series motherboard + 1458 5000 Motherboard + 1462 7418 Wind PC MS-7418 + 15d9 060d C7SIM-Q Motherboard + 15d9 9680 X7DBN Motherboard + 1775 11cc CC11/CL11 + 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 + 1028 0126 Optiplex GX260 + 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 + 1028 0126 Optiplex GX260 + 1028 014f Latitude X300 + 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 + 1028 0126 Optiplex GX260 + 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 + 1028 0139 Latitude D400 + 1028 014f Latitude X300 + 1028 0152 Latitude D500 + 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 + 8086 24c5 Dell Dimension 2400 + 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 + 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 + 1028 0126 Optiplex GX260 + 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 + 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 + 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 + 1028 011d Latitude D600 + 1028 0126 Optiplex GX260 + 1028 0139 Latitude D400 + 1028 0152 Latitude D500 + 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 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 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 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 + 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 Intergrated Digital Audio + 24d6 82801EB/ER (ICH5/ICH5R) AC'97 Modem Controller + 103c 006a NX9500 + 24d7 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 + 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 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 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 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 + 24f3 Wireless 8260 +# Snow Field Peak AC + 8086 0010 Dual Band Wireless-AC 8260 + 24f4 Wireless 8260 +# Snow Field Peak AC + 8086 0030 Dual Band Wireless-AC 8260 + 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 + 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 + 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 + 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 Z60t + 1028 0182 Dell Latitude C610 + 103c 0934 Compaq nw8240/nx8220 + 103c 099c NX6110/NC6120 + 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 HP Compaq nw8240 Mobile Workstation + 2592 Mobile 915GM/GMS/910GML Express Graphics Controller + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 103c 0934 Compaq nw8240/nx8220 + 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 + 2658 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 + 1028 0177 Dimension 8400 + 1028 0179 Optiplex GX280 + 103c 0934 Compaq nw8240/nx8220 + 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 + 1028 0177 Dimension 8400 + 1028 0179 Optiplex GX280 + 103c 0934 Compaq nw8240/nx8220 + 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 + 1028 0177 Dimension 8400 + 1028 0179 Optiplex GX280 + 103c 0934 Compaq nw8240/nx8220 + 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 + 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 + 1028 0177 Dimension 8400 + 1028 0179 Optiplex GX280 + 103c 0934 Compaq nw8240/nx8220 + 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 HP Compaq nw8240 Mobile Workstation + 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 HP Compaq nw8240 Mobile Workstation + 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 Asus 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 + 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 + 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 Dell 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 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 Intel 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 Intel 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 + 15d9 8680 X7DVL-E-O motherboard + 15d9 9680 X7DBN Motherboard + 8086 3476 Intel 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 + 15d9 8680 X7DVL-E-O motherboard + 15d9 9680 X7DBN Motherboard + 8086 3476 Intel S5000PSLSATA Server Board + 268a 631xESB/632xESB/3100 Chipset UHCI USB Controller #3 + 1028 01f0 PowerEdge R900 onboard USB + 103c 31fe ProLiant DL140 G3 + 15d9 8680 X7DVL-E-O motherboard + 15d9 9680 X7DBN Motherboard + 8086 3476 Intel S5000PSLSATA Server Board + 268b 631xESB/632xESB/3100 Chipset UHCI USB Controller #4 + 1028 01f0 PowerEdge R900 onboard USB + 15d9 8680 X7DVL-E-O motherboard + 8086 3476 Intel 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 + 15d9 8680 X7DVL-E-O motherboard + 15d9 9680 X7DBN Motherboard + 8086 3476 Intel 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 Intel S5000PSLSATA Server Board + 269e 631xESB/632xESB IDE Controller + 103c 31fe ProLiant DL140 G3 + 15d9 8680 X7DVL-E-O motherboard + 15d9 9680 X7DBN Motherboard + 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 + 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 + 8086 544e DeskTop Board D945GTP + 8086 d605 Intel 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 + 2782 82915G Integrated Graphics Controller + 1043 2582 P5GD1-VW Mainboard + 1734 105b Scenic W620 + 2792 Mobile 915GM/GMS/910GML Express Graphics Controller + 103c 099c NX6110/NC6120 + 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 + 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 + 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 + 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 + 1043 8179 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 + 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 + 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 + 1043 8179 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 + 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 + 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 309f Compaq nx9420 Notebook + 103c 30a1 NC2400 + 103c 30a3 Compaq nw8440 + 1043 1237 A6J-Q008 + 1043 8179 P5KPL-VM,P5LD2-VM Mainboard + 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 309f Compaq nx9420 Notebook + 103c 30a1 NC2400 + 103c 30a3 Compaq nw8440 + 1043 1237 A6J-Q008 + 1043 8179 P5KPL-VM,P5LD2-VM Mainboard + 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 309f Compaq nx9420 Notebook + 103c 30a1 NC2400 + 103c 30a3 Compaq nw8440 + 1043 1237 A6J-Q008 + 1043 8179 P5KPL-VM,P5LD2-VM Mainboard + 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 309f Compaq nx9420 Notebook + 103c 30a1 NC2400 + 103c 30a3 Compaq nw8440 + 1043 1237 A6J-Q008 + 1043 8179 P5KPL-VM,P5LD2-VM Mainboard + 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 309f Compaq nx9420 Notebook + 103c 30a1 NC2400 + 103c 30a3 Compaq nw8440 + 1043 1237 A6J-Q008 + 1043 8179 P5KPL-VM,P5LD2-VM Mainboard + 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 + 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 + 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 + 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 + 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 309f Compaq nx9420 Notebook + 103c 30a1 NC2400 + 103c 30a3 Compaq nw8440 + 1043 1123 A6J-Q008 + 1043 13c4 Asus G2P + 1043 817f P5LD2-VM Mainboard (Realtek ALC 882 codec) + 1043 8290 P5KPL-VM Motherboard + 1043 82ea P5KPL-CM Motherboard + 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 Lenovo 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 + 1043 8179 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 309f Compaq nx9420 Notebook + 103c 30a1 NC2400 + 103c 30a3 Compaq nw8440 + 1043 1237 A6J-Q008 + 1043 8179 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 + 103c 30c0 Compaq 6710b + 103c 30cc Pavilion dv6700 + 103c 30d9 Presario C700 + 104d 9005 Vaio VGN-FZ260E + 104d 902d VAIO VGN-NR120E + 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 + 2823 C610/X99 series chipset 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 C600/X79 series chipset SATA RAID Controller + 2827 C610/X99 series chipset sSATA Controller [RAID mode] + 2828 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [IDE mode] + 1028 01f3 Inspiron 1420 + 103c 30c0 Compaq 6710b + e4bf cc47 CCG-RUMBA + 2829 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] + 1025 0121 Aspire 5920G + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 103c 30d9 Presario C700 + 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 + 2830 82801H (ICH8 Family) USB UHCI Controller #1 + 1025 0121 Acer Aspire 5920G + 1028 01da OptiPlex 745 + 1028 01f3 Inspiron 1420 + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 103c 30d9 Presario C700 + 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 + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 103c 30d9 Presario C700 + 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 + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 103c 30d9 Presario C700 + 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 + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 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 Acer Aspire 5920G + 1028 01da OptiPlex 745 + 1028 01f3 Inspiron 1420 + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 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 + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 103c 30d9 Presario C700 + 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 Acer Aspire 5920G + 1028 01da OptiPlex 745 + 1028 01f3 Inspiron 1420 + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 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 + 103c 30d9 Presario C700 + 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 + 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 + 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 + 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 + 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 + 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 Theather) + 1028 01da OptiPlex 745 + 1028 01f3 Inspiron 1420 + 1028 01f9 Dell Latitude D630 + 1028 01ff Dell Precision M4300 + 1028 0256 Studio 1735 + 103c 2802 HP Compaq dc7700p + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 1043 1339 Asus M51S series + 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 + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 103c 30d9 Presario C700 + 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 + 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 + 8086 5044 Desktop Board DP35DP + 2917 ICH9M-E LPC Interface Controller + 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 + 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] + 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 + 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 + 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 + 1462 7360 G33/P35 Neo + 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 + 1462 7360 G33/P35 Neo + 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 + 1462 7360 G33/P35 Neo + 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 + 1462 7360 G33/P35 Neo + 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 + 1462 7360 G33/P35 Neo + 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 + 1462 7360 G33/P35 Neo + 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 + 1462 7360 G33/P35 Neo + 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 + 1462 7360 G33/P35 Neo + 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 + 1462 7360 G33/P35 Neo + 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 + 1462 7360 G33/P35 Neo + 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 +# same ID possibly also on other ASUS boards + 1043 8277 P5K PRO Motherboard + 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 +# same ID possibly also on other ASUS boards + 1043 8277 P5K PRO Motherboard + 294a 82801I (ICH9 Family) PCI Express Port 6 + 1028 020d Inspiron 530 +# same ID possibly also on other ASUS boards + 1043 8277 P5K PRO Motherboard + 294c 82566DC-2 Gigabit Network Connection + 17aa 302e 82566DM-2 Gigabit Network Connection + 2970 82946GZ/PL/GL Memory Controller Hub + 2971 82946GZ/PL/GL PCI Express Root Port + 2972 82946GZ/GL Integrated Graphics Controller + 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 +# same ID possibly also on other ASUS boards + 1043 8276 P5K PRO Motherboard + 1043 82b0 P5KPL-VM Motherboard + 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 +# same ID possibly also on other ASUS boards + 1043 8276 P5K PRO Motherboard + 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 Acer Aspire 5920G + 1028 01f3 Inspiron 1420 + 103c 30c0 Compaq 6710b + 103c 30c1 Compaq 6910p + 103c 30cc Pavilion dv6700 + 103c 30d9 Presario C700 + 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 + 103c 30c0 Compaq 6710b + 103c 30d9 Presario C700 + 104d 902d VAIO VGN-NR120E + 17aa 20b5 ThinkPad T61/R61 + 17c0 4082 Medion WIM 2210 Notebook PC [MD96850] + e4bf cc47 CCG-RUMBA + 2a03 Mobile GM965/GL960 Integrated Graphics Controller (secondary) + 1028 01f3 Inspiron 1420 + 103c 30c0 Compaq 6710b + 103c 30d9 Presario C700 + 104d 902d VAIO VGN-NR120E + 17aa 20b5 ThinkPad T61/R61 + 17c0 4082 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 + 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 + e4bf cc4d CCM-BOOGIE + 2a43 Mobile 4 Series Chipset Integrated Graphics Controller + e4bf cc4d CCM-BOOGIE + 2a44 Mobile 4 Series Chipset MEI Controller + 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 + 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 Processor QPI Physical 0 + 2d12 1st Generation Core Processor Reserved + 2d13 1st Generation Core 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 Dell 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 + 2e31 4 Series Chipset PCI Express Root Port + 2e32 4 Series Chipset Integrated Graphics Controller + 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 + 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 E5 v3/Core i7 DMI2 + 2f01 Xeon E5 v3/Core i7 PCI Express Root Port 0 + 2f02 Xeon E5 v3/Core i7 PCI Express Root Port 1 + 2f03 Xeon E5 v3/Core i7 PCI Express Root Port 1 + 2f04 Xeon E5 v3/Core i7 PCI Express Root Port 2 + 2f05 Xeon E5 v3/Core i7 PCI Express Root Port 2 + 2f06 Xeon E5 v3/Core i7 PCI Express Root Port 2 + 2f07 Xeon E5 v3/Core i7 PCI Express Root Port 2 + 2f08 Xeon E5 v3/Core i7 PCI Express Root Port 3 + 2f09 Xeon E5 v3/Core i7 PCI Express Root Port 3 + 2f0a Xeon E5 v3/Core i7 PCI Express Root Port 3 + 2f0b Xeon E5 v3/Core i7 PCI Express Root Port 3 + 2f10 Xeon E5 v3/Core i7 IIO Debug + 2f11 Xeon E5 v3/Core i7 IIO Debug + 2f12 Xeon E5 v3/Core i7 IIO Debug + 2f13 Xeon E5 v3/Core i7 IIO Debug + 2f14 Xeon E5 v3/Core i7 IIO Debug + 2f15 Xeon E5 v3/Core i7 IIO Debug + 2f16 Xeon E5 v3/Core i7 IIO Debug + 2f17 Xeon E5 v3/Core i7 IIO Debug + 2f18 Xeon E5 v3/Core i7 IIO Debug + 2f19 Xeon E5 v3/Core i7 IIO Debug + 2f1a Xeon E5 v3/Core i7 IIO Debug + 2f1b Xeon E5 v3/Core i7 IIO Debug + 2f1c Xeon E5 v3/Core i7 IIO Debug + 2f1d Xeon E5 v3/Core i7 PCIe Ring Interface + 2f1e Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers + 2f1f Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers + 2f20 Xeon E5 v3/Core i7 DMA Channel 0 + 2f21 Xeon E5 v3/Core i7 DMA Channel 1 + 2f22 Xeon E5 v3/Core i7 DMA Channel 2 + 2f23 Xeon E5 v3/Core i7 DMA Channel 3 + 2f24 Xeon E5 v3/Core i7 DMA Channel 4 + 2f25 Xeon E5 v3/Core i7 DMA Channel 5 + 2f26 Xeon E5 v3/Core i7 DMA Channel 6 + 2f27 Xeon E5 v3/Core i7 DMA Channel 7 + 2f28 Xeon E5 v3/Core i7 Address Map, VTd_Misc, System Management + 2f29 Xeon E5 v3/Core i7 Hot Plug + 2f2a Xeon E5 v3/Core i7 RAS, Control Status and Global Errors + 2f2c Xeon E5 v3/Core i7 I/O APIC + 2f2e Xeon E5 v3/Core i7 RAID 5/6 + 2f2f Xeon E5 v3/Core i7 RAID 5/6 + 2f30 Xeon E5 v3/Core i7 Home Agent 0 + 2f32 Xeon E5 v3/Core i7 QPI Link 0 + 2f33 Xeon E5 v3/Core i7 QPI Link 1 + 2f34 Xeon E5 v3/Core i7 PCIe Ring Interface + 2f36 Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring + 2f37 Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring + 2f38 Xeon E5 v3/Core i7 Home Agent 1 + 2f39 Xeon E5 v3/Core i7 I/O Performance Monitoring + 2f3a Xeon E5 v3/Core i7 QPI Link 2 + 2f3e Xeon E5 v3/Core i7 R3 QPI Link 2 Monitoring + 2f3f Xeon E5 v3/Core i7 R3 QPI Link 2 Monitoring + 2f40 Xeon E5 v3/Core i7 QPI Link 2 + 2f41 Xeon E5 v3/Core i7 R3 QPI Link 2 Monitoring + 2f43 Xeon E5 v3/Core i7 QPI Link 2 + 2f45 Xeon E5 v3/Core i7 QPI Link 2 Debug + 2f46 Xeon E5 v3/Core i7 QPI Link 2 Debug + 2f47 Xeon E5 v3/Core i7 QPI Link 2 Debug + 2f60 Xeon E5 v3/Core i7 Home Agent 1 + 2f68 Xeon E5 v3/Core i7 Integrated Memory Controller 1 Target Address, Thermal & RAS Registers + 2f6a Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder + 2f6b Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder + 2f6c Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder + 2f6d Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder + 2f6e Xeon E5 v3/Core i7 DDRIO Channel 2/3 Broadcast + 2f6f Xeon E5 v3/Core i7 DDRIO Global Broadcast + 2f70 Xeon E5 v3/Core i7 Home Agent 0 Debug + 2f71 Xeon E5 v3/Core i7 Integrated Memory Controller 0 Target Address, Thermal & RAS Registers + 2f76 Xeon E5 v3/Core i7 E3 QPI Link Debug + 2f78 Xeon E5 v3/Core i7 Home Agent 1 Debug + 2f79 Xeon E5 v3/Core i7 Integrated Memory Controller 1 Target Address, Thermal & RAS Registers + 2f7d Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers + 2f7e Xeon E5 v3/Core i7 E3 QPI Link Debug + 2f80 Xeon E5 v3/Core i7 QPI Link 0 + 2f81 Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring + 2f83 Xeon E5 v3/Core i7 QPI Link 0 + 2f85 Xeon E5 v3/Core i7 QPI Link 0 Debug + 2f86 Xeon E5 v3/Core i7 QPI Link 0 Debug + 2f87 Xeon E5 v3/Core i7 QPI Link 0 Debug + 2f88 Xeon E5 v3/Core i7 VCU + 2f8a Xeon E5 v3/Core i7 VCU + 2f90 Xeon E5 v3/Core i7 QPI Link 1 + 2f93 Xeon E5 v3/Core i7 QPI Link 1 + 2f95 Xeon E5 v3/Core i7 QPI Link 1 Debug + 2f96 Xeon E5 v3/Core i7 QPI Link 1 Debug + 2f98 Xeon E5 v3/Core i7 Power Control Unit + 2f99 Xeon E5 v3/Core i7 Power Control Unit + 2f9a Xeon E5 v3/Core i7 Power Control Unit + 2f9c Xeon E5 v3/Core i7 Power Control Unit + 2fa0 Xeon E5 v3/Core i7 Home Agent 0 + 2fa8 Xeon E5 v3/Core i7 Integrated Memory Controller 0 Target Address, Thermal & RAS Registers + 2faa Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder + 2fab Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder + 2fac Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder + 2fad Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder + 2fae Xeon E5 v3/Core i7 DDRIO Channel 0/1 Broadcast + 2faf Xeon E5 v3/Core i7 DDRIO Global Broadcast + 2fb0 Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 0 Thermal Control + 2fb1 Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 1 Thermal Control + 2fb2 Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 0 ERROR Registers + 2fb3 Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 1 ERROR Registers + 2fb4 Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 2 Thermal Control + 2fb5 Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 3 Thermal Control + 2fb6 Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 2 ERROR Registers + 2fb7 Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 3 ERROR Registers + 2fb8 Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 + 2fb9 Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 + 2fba Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 + 2fbb Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 + 2fbc Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 + 2fbd Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 + 2fbe Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 + 2fbf Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 + 2fc0 Xeon E5 v3/Core i7 Power Control Unit + 2fc1 Xeon E5 v3/Core i7 Power Control Unit + 2fc2 Xeon E5 v3/Core i7 Power Control Unit + 2fc3 Xeon E5 v3/Core i7 Power Control Unit + 2fc4 Xeon E5 v3/Core i7 Power Control Unit + 2fc5 Xeon E5 v3/Core i7 Power Control Unit + 2fd0 Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 0 Thermal Control + 2fd1 Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 1 Thermal Control + 2fd2 Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 0 ERROR Registers + 2fd3 Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 1 ERROR Registers + 2fd4 Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 2 Thermal Control + 2fd5 Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 3 Thermal Control + 2fd6 Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 2 ERROR Registers + 2fd7 Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 3 ERROR Registers + 2fe0 Xeon E5 v3/Core i7 Unicast Registers + 2fe1 Xeon E5 v3/Core i7 Unicast Registers + 2fe2 Xeon E5 v3/Core i7 Unicast Registers + 2fe3 Xeon E5 v3/Core i7 Unicast Registers + 2fe4 Xeon E5 v3/Core i7 Unicast Registers + 2fe5 Xeon E5 v3/Core i7 Unicast Registers + 2fe6 Xeon E5 v3/Core i7 Unicast Registers + 2fe7 Xeon E5 v3/Core i7 Unicast Registers + 2fe8 Xeon E5 v3/Core i7 Unicast Registers + 2fe9 Xeon E5 v3/Core i7 Unicast Registers + 2fea Xeon E5 v3/Core i7 Unicast Registers + 2feb Xeon E5 v3/Core i7 Unicast Registers + 2fec Xeon E5 v3/Core i7 Unicast Registers + 2fed Xeon E5 v3/Core i7 Unicast Registers + 2fee Xeon E5 v3/Core i7 Unicast Registers + 2fef Xeon E5 v3/Core i7 Unicast Registers + 2ff0 Xeon E5 v3/Core i7 Unicast Registers + 2ff1 Xeon E5 v3/Core i7 Unicast Registers + 2ff2 Xeon E5 v3/Core i7 Unicast Registers + 2ff3 Xeon E5 v3/Core i7 Unicast Registers + 2ff4 Xeon E5 v3/Core i7 Unicast Registers + 2ff5 Xeon E5 v3/Core i7 Unicast Registers + 2ff6 Xeon E5 v3/Core i7 Unicast Registers + 2ff7 Xeon E5 v3/Core i7 Unicast Registers + 2ff8 Xeon E5 v3/Core i7 Buffered Ring Agent + 2ff9 Xeon E5 v3/Core i7 Buffered Ring Agent + 2ffa Xeon E5 v3/Core i7 Buffered Ring Agent + 2ffb Xeon E5 v3/Core i7 Buffered Ring Agent + 2ffc Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers + 2ffd Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers + 2ffe Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers + 3165 Wireless 3165 +# Stone Peak 1x1 + 8086 4010 Dual Band Wireless AC 3165 +# Stone Peak 1x1 + 8086 4210 Dual Band Wireless AC 3165 + 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 + 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 + 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 + 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 + 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 + 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 5 Series Chipset LPC Interface Controller + 3b03 Mobile 5 Series Chipset LPC Interface Controller + 3b04 5 Series Chipset LPC Interface Controller + 3b05 Mobile 5 Series Chipset LPC Interface Controller + 3b06 5 Series Chipset LPC Interface Controller + 3b07 Mobile 5 Series Chipset LPC Interface Controller + 1028 040b Latitude E6510 + e4bf 50c1 PC1-GROOVE + 3b08 5 Series Chipset LPC Interface Controller + 3b09 Mobile 5 Series Chipset LPC Interface Controller + 1025 0347 Aspire 7740G + 144d c06a R730 Laptop + 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] + 3b0a 5 Series Chipset LPC Interface Controller + 1028 02da OptiPlex 980 + 15d9 060d C7SIM-Q Motherboard + 3b0b Mobile 5 Series 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 5 Series/3400 Series 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 3400 Series Chipset LPC Interface Controller + 3b15 5 Series/3400 Series Chipset LPC Interface Controller + 3b16 3400 Series 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 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 HP 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 040b Latitude E6510 + e4bf 50c1 PC1-GROOVE + 3b30 5 Series/3400 Series Chipset SMBus Controller + 1025 0347 Aspire 7740G + 1028 02da OptiPlex 980 + 1028 040b Latitude E6510 + 144d c06a R730 Laptop + 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 + 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 040b Latitude E6510 + 144d c06a R730 Laptop + 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 040b Latitude E6510 + 144d c06a R730 Laptop + 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 040b Latitude E6510 + 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 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 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 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 040b Latitude E6510 + 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 + 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 + 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 + 4220 PRO/Wireless 2200BG [Calexico2] Network Connection + 103c 0934 Compaq nw8240/nx8220 + 103c 12f6 nc6120/nx8220/nw8240 + 8086 2701 WM3B2300BG 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 + 1351 103c Compaq NC6220 + 4224 PRO/Wireless 2915ABG [Calexico2] Network Connection + 4227 PRO/Wireless 3945ABG [Golan] Network Connection + 8086 1011 ThinkPad T60/R60e/X60s + 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 + 444e Turbo Memory 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 + 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 + 5845 QEMU NVM Express Controller + 1af4 1100 QEMU Virtual Machine + 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 Broadwell DMI2 + 6f01 Broadwell PCI Express Root Port 0 + 6f02 Broadwell PCI Express Root Port 1 + 6f03 Broadwell PCI Express Root Port 1 + 6f04 Broadwell PCI Express Root Port 2 + 6f05 Broadwell PCI Express Root Port 2 + 6f06 Broadwell PCI Express Root Port 2 + 6f07 Broadwell PCI Express Root Port 2 + 6f08 Broadwell PCI Express Root Port 3 + 6f09 Broadwell PCI Express Root Port 3 + 6f0a Broadwell PCI Express Root Port 3 + 6f0b Broadwell PCI Express Root Port 3 + 6f10 Broadwell IIO Debug + 6f11 Broadwell IIO Debug + 6f12 Broadwell IIO Debug + 6f13 Broadwell IIO Debug + 6f14 Broadwell IIO Debug + 6f15 Broadwell IIO Debug + 6f16 Broadwell IIO Debug + 6f17 Broadwell IIO Debug + 6f18 Broadwell IIO Debug + 6f19 Broadwell IIO Debug + 6f1a Broadwell IIO Debug + 6f1b Broadwell IIO Debug + 6f1c Broadwell IIO Debug + 6f1d Broadwell R2PCIe Agent + 6f1e Broadwell Ubox + 6f1f Broadwell Ubox + 6f20 Broadwell-DE Crystal Beach DMA Channel 0 + 6f21 Broadwell-DE Crystal Beach DMA Channel 1 + 6f22 Broadwell-DE Crystal Beach DMA Channel 2 + 6f23 Broadwell-DE Crystal Beach DMA Channel 3 + 6f24 Broadwell-DE Crystal Beach DMA Channel 4 + 6f25 Broadwell-DE Crystal Beach DMA Channel 5 + 6f26 Broadwell-DE Crystal Beach DMA Channel 6 + 6f27 Broadwell-DE Crystal Beach DMA Channel 7 + 6f28 Broadwell Adress Map/VTd_Misc/System Management + 6f29 Broadwell IIO Hot Plug + 6f2a Broadwell IIO RAS/Control Status/Global Errors + 6f2c Broadwell I/O APIC + 6f30 Broadwell Home Agent 0 + 6f32 Broadwell QPI Link 0 + 6f33 Broadwell QPI Link 1 + 6f34 Broadwell R2PCIe Agent + 6f36 Broadwell R3 QPI Link 0/1 + 6f37 Broadwell R3 QPI Link 0/1 + 6f38 Broadwell Home Agent 1 + 6f39 Broadwell IO Performance Monitoring + 6f3a Broadwell QPI Link 2 + 6f3e Broadwell R3 QPI Link 2 + 6f3f Broadwell R3 QPI Link 2 + 6f40 Broadwell QPI Link 2 + 6f41 Broadwell R3 QPI Link 2 + 6f43 Broadwell QPI Link 2 + 6f45 Broadwell QPI Link 2 Debug + 6f46 Broadwell QPI Link 2 Debug + 6f47 Broadwell QPI Link 2 Debug + 6f60 Broadwell Home Agent 1 + 6f68 Broadwell Target Address/Thermal/RAS + 6f6a Broadwell Channel Target Address Decoder + 6f6b Broadwell Channel Target Address Decoder + 6f6c Broadwell Channel Target Address Decoder + 6f6d Broadwell Channel Target Address Decoder + 6f6e Broadwell DDRIO Channel 2/3 Broadcast + 6f6f Broadwell DDRIO Global Broadcast + 6f70 Broadwell Home Agent 0 Debug + 6f71 Broadwell Memory Controller 0 - Target Address/Thermal/RAS + 6f76 Broadwell R3 QPI Link Debug + 6f78 Broadwell Home Agent 1 Debug + 6f79 Broadwell Target Address/Thermal/RAS + 6f7d Broadwell Ubox + 6f7e Broadwell R3 QPI Link Debug + 6f80 Broadwell QPI Link 0 + 6f81 Broadwell R3 QPI Link 0/1 + 6f83 Broadwell QPI Link 0 + 6f85 Broadwell QPI Link 0 Debug + 6f86 Broadwell QPI Link 0 Debug + 6f87 Broadwell QPI Link 0 Debug + 6f88 Broadwell Power Control Unit + 6f8a Broadwell Power Control Unit + 6f90 Broadwell QPI Link 1 + 6f93 Broadwell QPI Link 1 + 6f95 Broadwell QPI Link 1 Debug + 6f96 Broadwell QPI Link 1 Debug + 6f98 Broadwell Power Control Unit + 6f99 Broadwell Power Control Unit + 6f9a Broadwell Power Control Unit + 6f9c Broadwell Power Control Unit + 6fa0 Broadwell Home Agent 0 + 6fa8 Broadwell Memory Controller 0 - Target Address/Thermal/RAS + 6faa Broadwell Memory Controller 0 - Channel Target Address Decoder + 6fab Broadwell Memory Controller 0 - Channel Target Address Decoder + 6fac Broadwell Memory Controller 0 - Channel Target Address Decoder + 6fad Broadwell Memory Controller 0 - Channel Target Address Decoder + 6fae Broadwell DDRIO Channel 0/1 Broadcast + 6faf Broadwell DDRIO Global Broadcast + 6fb0 Broadwell Memory Controller 0 - Channel 0 Thermal Control + 6fb1 Broadwell Memory Controller 0 - Channel 1 Thermal Control + 6fb2 Broadwell Memory Controller 0 - Channel 0 Error + 6fb3 Broadwell Memory Controller 0 - Channel 1 Error + 6fb4 Broadwell Memory Controller 0 - Channel 2 Thermal Control + 6fb5 Broadwell Memory Controller 0 - Channel 3 Thermal Control + 6fb6 Broadwell Memory Controller 0 - Channel 2 Error + 6fb7 Broadwell Memory Controller 0 - Channel 3 Error + 6fb8 Broadwell DDRIO Channel 2/3 Interface + 6fb9 Broadwell DDRIO Channel 2/3 Interface + 6fba Broadwell DDRIO Channel 2/3 Interface + 6fbb Broadwell DDRIO Channel 2/3 Interface + 6fbc Broadwell DDRIO Channel 0/1 Interface + 6fbd Broadwell DDRIO Channel 0/1 Interface + 6fbe Broadwell DDRIO Channel 0/1 Interface + 6fbf Broadwell DDRIO Channel 0/1 Interface + 6fc0 Broadwell Power Control Unit + 6fc1 Broadwell Power Control Unit + 6fc2 Broadwell Power Control Unit + 6fc3 Broadwell Power Control Unit + 6fc4 Broadwell Power Control Unit + 6fc5 Broadwell Power Control Unit + 6fc6 Broadwell Power Control Unit + 6fc7 Broadwell Power Control Unit + 6fc8 Broadwell Power Control Unit + 6fc9 Broadwell Power Control Unit + 6fca Broadwell Power Control Unit + 6fcb Broadwell Power Control Unit + 6fcc Broadwell Power Control Unit + 6fcd Broadwell Power Control Unit + 6fce Broadwell Power Control Unit + 6fcf Broadwell Power Control Unit + 6fd0 Broadwell Memory Controller 1 - Channel 0 Thermal Control + 6fd1 Broadwell Memory Controller 1 - Channel 1 Thermal Control + 6fd2 Broadwell Memory Controller 1 - Channel 0 Error + 6fd3 Broadwell Memory Controller 1 - Channel 1 Error + 6fd4 Broadwell Memory Controller 1 - Channel 2 Thermal Control + 6fd5 Broadwell Memory Controller 1 - Channel 3 Thermal Control + 6fd6 Broadwell Memory Controller 1 - Channel 2 Error + 6fd7 Broadwell Memory Controller 1 - Channel 3 Error + 6fe0 Broadwell Caching Agent + 6fe1 Broadwell Caching Agent + 6fe2 Broadwell Caching Agent + 6fe3 Broadwell Caching Agent + 6fe4 Broadwell Caching Agent + 6fe5 Broadwell Caching Agent + 6fe6 Broadwell Caching Agent + 6fe7 Broadwell Caching Agent + 6fe8 Broadwell Caching Agent + 6fe9 Broadwell Caching Agent + 6fea Broadwell Caching Agent + 6feb Broadwell Caching Agent + 6fec Broadwell Caching Agent + 6fed Broadwell Caching Agent + 6fee Broadwell Caching Agent + 6fef Broadwell Caching Agent + 6ff0 Broadwell Caching Agent + 6ff1 Broadwell Caching Agent + 6ff8 Broadwell Caching Agent + 6ff9 Broadwell Caching Agent + 6ffa Broadwell Caching Agent + 6ffb Broadwell Caching Agent + 6ffc Broadwell Caching Agent + 6ffd Broadwell Caching Agent + 6ffe Broadwell Caching Agent + 7000 82371SB PIIX3 ISA [Natoma/Triton II] + 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 + 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 + 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 + 8002 Trusted Execution Technology Registers + 8003 Trusted Execution Technology Registers + 8100 System Controller Hub (SCH Poulsbo) + 8108 System Controller Hub (SCH Poulsbo) Graphics Controller + 8110 System Controller Hub (SCH Poulsbo) PCI Express Port 1 + 8112 System Controller Hub (SCH Poulsbo) PCI Express Port 2 + 8114 System Controller Hub (SCH Poulsbo) USB UHCI #1 + 8115 System Controller Hub (SCH Poulsbo) USB UHCI #2 + 8116 System Controller Hub (SCH Poulsbo) USB UHCI #3 + 8117 System Controller Hub (SCH Poulsbo) USB EHCI #1 + 8118 System Controller Hub (SCH Poulsbo) USB Client Controller + 8119 System Controller Hub (SCH Poulsbo) LPC Bridge + 811a System Controller Hub (SCH Poulsbo) IDE Controller + 811b System Controller Hub (SCH Poulsbo) HD Audio Controller + 811c System Controller Hub (SCH Poulsbo) SDIO Controller #1 + 811d System Controller Hub (SCH Poulsbo) SDIO Controller #2 + 811e System Controller Hub (SCH Poulsbo) SDIO 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 + 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 + 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] + 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 + 17aa 220e ThinkPad T440p + 8c11 8 Series/C220 Series Chipset Family PCI Express Root Port #1 + 8c12 8 Series/C220 Series Chipset Family PCI Express Root Port #2 + 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 + 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 + 103c 1909 ZBook 15 + 17aa 220e ThinkPad T440p + 8c21 8 Series/C220 Series Chipset High Definition Audio Controller + 8c22 8 Series/C220 Series Chipset Family SMBus Controller + 103c 1909 ZBook 15 + 17aa 220e ThinkPad T440p + 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 + 103c 1909 ZBook 15 + 17aa 220e ThinkPad T440p + 8c2d 8 Series/C220 Series Chipset Family USB EHCI #2 + 103c 1909 ZBook 15 + 17aa 220e ThinkPad T440p + 8c31 8 Series/C220 Series Chipset Family USB xHCI + 103c 1909 ZBook 15 + 17aa 220e ThinkPad T440p + 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 + 103c 1909 ZBook 15 + 17aa 220e ThinkPad T440p + 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 + 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 + 8c4b HM87 Express LPC Controller + 8c4c Q85 Express LPC Controller + 8c4d 8 Series/C220 Series Chipset Family LPC Controller + 8c4e Q87 Express LPC Controller + 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 C220 Series Chipset Family H81 Express LPC Controller + 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 9 Series Chipset Family HM97 LPC Controller + 8cc4 9 Series Chipset Family Z97 LPC Controller + 8cc6 9 Series Chipset Family H97 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 + 8d24 C610/X99 series chipset Thermal Subsystem + 8d26 C610/X99 series chipset USB Enhanced Host Controller #1 + 8d2d C610/X99 series chipset USB Enhanced Host Controller #2 + 8d31 C610/X99 series chipset USB xHCI Host Controller + 8d33 C610/X99 series chipset LAN Controller + 8d34 C610/X99 series chipset NAND Controller + 8d3a C610/X99 series chipset MEI Controller #1 + 8d3b C610/X99 series chipset MEI Controller #2 + 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 + 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 + 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 + 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 2214 ThinkPad X240 + 9c2d 8 Series USB EHCI #2 + 9c31 8 Series USB xHCI HC + 17aa 2214 ThinkPad X240 + 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 + 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 + 144d c072 Notebook N150P + a011 Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller + 144d c072 Notebook N150P + a012 Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller + 144d c072 Notebook N150P + a013 Atom Processor D4xx/D5xx/N4xx/N5xx CHAPS counter + a103 Sunrise Point-H SATA Controller [AHCI mode] + a105 Sunrise Point-H SATA Controller [RAID mode] + a107 Sunrise Point-H SATA Controller [RAID mode] + a10f Sunrise Point-H SATA Controller [RAID mode] + a110 Sunrise Point-H PCI Express Root Port #1 + a111 Sunrise Point-H PCI Express Root Port #2 + a112 Sunrise Point-H PCI Express Root Port #3 + a113 Sunrise Point-H PCI Express Root Port #4 + a114 Sunrise Point-H PCI Express Root Port #5 + a115 Sunrise Point-H PCI Express Root Port #6 + a116 Sunrise Point-H PCI Express Root Port #7 + a117 Sunrise Point-H PCI Express Root Port #8 + a118 Sunrise Point-H PCI Express Root Port #9 + a119 Sunrise Point-H PCI Express Root Port #10 + a11a Sunrise Point-H PCI Express Root Port #11 + a11b Sunrise Point-H PCI Express Root Port #12 + a11c Sunrise Point-H PCI Express Root Port #13 + a11d Sunrise Point-H PCI Express Root Port #14 + a11e Sunrise Point-H PCI Express Root Port #15 + a11f Sunrise Point-H PCI Express Root Port #16 + a120 Sunrise Point-H P2SB + a121 Sunrise Point-H PMC + a122 Sunrise Point-H cAVS + a123 Sunrise Point-H SMBus + a124 Sunrise Point-H SPI Controller + a125 Sunrise Point-H Gigabit Ethernet Controller + a126 Sunrise Point-H Northpeak + a127 Sunrise Point-H LPSS UART #0 + a128 Sunrise Point-H LPSS UART #1 + a129 Sunrise Point-H LPSS SPI #0 + a12a Sunrise Point-H LPSS SPI #1 + a12f Sunrise Point-H USB 3.0 xHCI Controller + a130 Sunrise Point-H USB Device Controller (OTG) + a131 Sunrise Point-H Thermal subsystem + a133 Sunrise Point-H Northpeak ACPI Function + a135 Sunrise Point-H Integrated Sensor Hub + a13a Sunrise Point-H CSME HECI #1 + a13b Sunrise Point-H CSME HECI #2 + a13c Sunrise Point-H CSME IDE Redirection + a13d Sunrise Point-H KT Redirection + a13e Sunrise Point-H CSME HECI #3 + a140 Sunrise Point-H LPC Controller + a141 Sunrise Point-H LPC Controller + a142 Sunrise Point-H LPC Controller + a143 Sunrise Point-H LPC Controller + a144 Sunrise Point-H LPC Controller + a145 Sunrise Point-H LPC Controller + a146 Sunrise Point-H LPC Controller + a147 Sunrise Point-H LPC Controller + a148 Sunrise Point-H LPC Controller + a149 Sunrise Point-H LPC Controller + a14a Sunrise Point-H LPC Controller + a14b Sunrise Point-H LPC Controller + a14c Sunrise Point-H LPC Controller + a14d Sunrise Point-H LPC Controller + a14e Sunrise Point-H LPC Controller + a14f Sunrise Point-H LPC Controller + a150 Sunrise Point-H LPC Controller + a151 Sunrise Point-H LPC Controller + a152 Sunrise Point-H LPC Controller + a153 Sunrise Point-H LPC Controller + a154 Sunrise Point-H LPC 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 Sunrise Point-H LPSS I2C Controller #0 + a161 Sunrise Point-H LPSS I2C Controller #1 + a166 Sunrise Point-H LPSS UART Controller #2 + a167 Sunrise Point-H PCI Root Port #17 + a168 Sunrise Point-H PCI Root Port #18 + a169 Sunrise Point-H PCI Root Port #19 + a16a Sunrise Point-H PCI Root Port #20 + a170 Sunrise Point-H HD Audio + a620 6400/6402 Advanced Memory Buffer (AMB) + 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 + 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 +80ee InnoTek Systemberatung GmbH + beef VirtualBox Graphics Adapter + cafe VirtualBox Guest Service +8322 Sodick America Corp. +8384 SigmaTel +8401 TRENDware International Inc. +8686 ScaleMP + 1010 vSMPowered system controller [vSMP CTL] +8800 Trigem Computer Inc. + 2008 Video assistent component +8866 T-Square Design Inc. +8888 Silicon Magic +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-7850 + 9004 7850 AHA-2904/Integrated AIC-7850 + 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 AHA-2940/2940W / AIC-7871 + 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 AHA-2940U/UW/D / AIC-7881U + 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 PMC-Sierra +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 AHA-2940U2W 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 + 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] + 8088 PMC-Sierra PM8018 SAS HBA [Series 7H] + 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 +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 + 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 +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 Monitor + a12a UltraStudio Mini Recorder + a12d UltraStudio 4K + a12e DeckLink 4K Extreme + a12f DeckLink Mini Monitor + a130 DeckLink Mini Recorder + a132 UltraStudio 4K + a138 Decklink SDI 4K +c001 TSI Telsys +c0a9 Micron/Crucial Technology +c0de Motorola +c0fe Motion Engineering, Inc. +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 +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 +ceba KEBA AG +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 +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 +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 +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 + 0011 Octopus CI DVB Adapter + dd01 0040 Octopus CI + dd01 0041 Octopus CI Single +dead Indigita Corporation +deaf Middle Digital Inc. + 9050 PC Weasel Virtual VGA + 9051 PC Weasel Serial Port + 9052 PC Weasel Watchdog Timer +deda SoftHard Technology Ltd. +e000 Winbond + e000 W89C940 +e159 Tiger Jet Network Inc. + 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 +# 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 + a120 DAG 10X2-P 10G Ethernet + a12e DAG 10X2-S 10G Ethernet + a140 DAG 10X4-P 10G Ethernet +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) +f1d0 AJA Video + c0fe Xena HS/HD-R + c0ff Kona/Xena 2 + cafe Kona SD + cfee Xena LS/SD-22-DA/SD-DA + daff KONA LHi + dcaf Kona HD + dfee Xena HD-DA + 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. +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 +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 +C 01 Mass storage controller + 00 SCSI storage controller + 01 IDE interface + 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 + 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 + 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 + 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 +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 + 80 Unspecified + fe USB Device + 04 Fibre Channel + 05 SMBus + 06 InfiniBand + 07 IPMI SMIC interface + 08 SERCOS interface + 09 CANBUS +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 +C 13 Non-Essential Instrumentation +C ff Unassigned class diff --git a/examples/tg16/pxe/version.info b/examples/tg16/pxe/version.info new file mode 100644 index 0000000..8a4a704 --- /dev/null +++ b/examples/tg16/pxe/version.info @@ -0,0 +1,2 @@ +Debian version: 6.0 (squeeze) +Installer build: 20110106+squeeze4+b3 diff --git a/examples/tg16/pxe/vesamenu.c32 b/examples/tg16/pxe/vesamenu.c32 Binary files differnew file mode 100644 index 0000000..8dca92f --- /dev/null +++ b/examples/tg16/pxe/vesamenu.c32 diff --git a/examples/tg16/streams/anakin/encode.sh b/examples/tg16/streams/anakin/encode.sh new file mode 100644 index 0000000..4994b76 --- /dev/null +++ b/examples/tg16/streams/anakin/encode.sh @@ -0,0 +1,7 @@ +#!/bin/bash +cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-aspect-ratio 16:9 --decklink-video-connection sdi \ + --sout-x264-preset slow --sout-x264-tune film --sout-transcode-threads 15 --no-sout-x264-interlaced --sout-mux-caching 3000 \ + --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 4000 --sout-x264-vbv-bufsize 4000 --ttl 60 \ + -v decklink:// vlc://quit \ + --sout \ +'#transcode{vcodec=h264,vb=5500,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/anakin.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/anakin.flv}' diff --git a/examples/tg16/streams/cubemap/finn-cubemap.config b/examples/tg16/streams/cubemap/finn-cubemap.config new file mode 100644 index 0000000..7faa9a6 --- /dev/null +++ b/examples/tg16/streams/cubemap/finn-cubemap.config @@ -0,0 +1,150 @@ +# Uncomment to run in the background. Note that in daemonized mode, all filenames +# are relative to an undefined directory, so you should use absolute paths for +# error_log, stats_file, etc. + +#daemonize + +# For low-traffic servers (less than a gigabit or two), num_servers 1 is fine. +# For best performance in high-traffic situations, you want one for each CPU. +num_servers 1 + +# +# All input ports are treated exactly the same, but you may use multiple ones nevertheless. +# +port 80 +# listen 127.0.0.1:9095 +# listen [::1]:9095 + +stats_file /var/lib/cubemap/cubemap.stats +stats_interval 60 + +input_stats_file /var/lib/cubemap/cubemap-input.stats +input_stats_interval 60 + +# Logging of clients as they disconnect (and as such as no longer visible in the stats file). +# You can only have zero or one of these. +access_log /var/log/cubemap/access.log + +# Logging of various informational and error messages. You can have as many of these as you want. +error_log type=file filename=/var/log/cubemap/cubemap.log +error_log type=syslog +error_log type=console + +# +# Now the streams! There are two types of streams; stream (HTTP output) +# and udpstream (UDP output). Let's take stream first. +# + +# A basic form of stream, with HTTP input. Often, you will need no more than this. +# The input must be Metacube framed (VLC can produce this with an option). +#stream /test.flv src=http://gruessi.zrh.sesse.net:4013/test.flv + +# Streams can share the same input (the same is reused, no extra bandwidth needed). +# force_prebuffer=<number of bytes> is a parameter where we don't start sending +# any data to a newly connected client before we can do that many bytes at once. +# This is useful for clients that don't properly buffer themselves before starting +# playing, e.g., most web browsers and some Flash players when playing from HTTP +# (e.g., JW Player). +#stream /test-jwplayer.flv src=http://gruessi.zrh.sesse.net:4013/test.flv force_prebuffer=1500000 + +# encoding=metacube means the _output_ will be Metacube framed. This is useful +# for sending on to another Cubemap instance. +#stream /test.flv.metacube src=http://gruessi.zrh.sesse.net:4013/test.flv encoding=metacube + +# UDP input. TS is the most common container to use over UDP (you cannot +# take any arbitrary container and expect it to work). +# backlog_size=<number of bytes> overrides the backlog, which is normally 10 MB. +# If clients fall more behind than the backlog (plus the socket buffer), +# they will drop data, so if you have extremely high-bitrate streams, you may want +# to increase this. Or conversely, if you have little RAM and many streams +# (or many servers) you can decrease it. +#stream /udp.ts src=udp://@:1234 backlog_size=1048576 + +# An example of IPv4 multicast input. Cubemap will subscribe to the given group +# and wait for data sent by any sender to the given port. +# pacing_rate_kbit=<number of kilobit/sec> will ask the kernel to hard-limit +# the TCP transfer rate, including retransmits, to the given speed. (This is a +# no-op if you do not use the sch_fq packet scheduler, which is not the default +# but can be set in Linux 3.13 and newer using tc.) This is extremely +# useful for reducing packet loss and thus including throughput, since it means +# that packets arrive smoothly instead of in tight bursts, which will often +# overload underbuffered routers and cause drops (imagine receiving a 100 kB +# keyframe at 10gig speeds, and then having to meter it out over 5 Mbit ADSL). +# The rate should be a bit higher than your stream bitrate to allow for retransmits. +#stream /udp-multicast.ts src=udp://@233.252.0.2:1234 pacing_rate_kbit=2000 + +# IPv6 SSM (Single Source Multicast) input. Subscribes to the given group and +# waits for packets from the given sender only. SSM is nicer than ASM in that +# it does not require a Rendezvous Point (RP) and other complexity, but is +# often poorly supported in various network equipment. +#stream /udp-multicast-ssmv6.ts src=udp://[2001:67c:29f4::32]@[ff3e::1000:0]:1234 pacing_rate_kbit=20000 + +# udpstream takes src= inputs just like stream does, but instead of waiting +# for TCP connections on ports, it immediately sends the packets out over UDP. +# (As with UDP input, this probably only works well for TS mux.) +#udpstream [2001:67c:29f4::50]:5000 src=http://pannekake.samfundet.no:9094/frikanalen.ts.metacube + +# udpstream takes pacing_rate_kbit= just like stream. None of the other options +# make sense. +#udpstream 193.35.52.50:5001 src=http://pannekake.samfundet.no:9094/frikanalen.ts.metacube pacing_rate_kbit=2000 + +# IPv4 multicast output, to the given group. You can explicitly set the TTL +# and/or multicast output interface, if the defaults do not suit you. +#udpstream 233.252.0.1:5002 src=http://pannekake.samfundet.no:9094/frikanalen.ts.metacube ttl=32 multicast_output_interface=eth1 + +# A type of HTTP resource that is not a stream, but rather just a very simple +# document that a HTTP 204 response and nothing else. allow_origin= is optional; +# if it is set, the response will contain an Access-Control-Allow-Origin header +# with the given value, allowing the ping response to be read (and +# differentiated from an error) from a remote domain using XHR. +# +# If you have a stream and a gen204 endpoint with the same URL, the stream takes +# precedence and the ping endpoint is silently ignored. +gen204 /ping allow_origin=* + +# TG16 + +# For viewers -- production feeds +stream /event.ts src=http://anakin.tg16.gathering.org:5004/anakin.ts backlog_size=104857600 +stream /event.flv src=http://anakin.tg16.gathering.org:5004/anakin.flv backlog_size=104857600 + +stream /eventsd.ts src=http://han.tg16.gathering.org:5009/eventsd.ts backlog_size=104857600 +stream /eventsd.flv src=http://han.tg16.gathering.org:5009/eventsd.flv backlog_size=104857600 + +stream /game.ts src=http://padme.tg16.gathering.org:5004/padme.ts backlog_size=104857600 +stream /game.flv src=http://padme.tg16.gathering.org:5004/padme.flv backlog_size=104857600 + +stream /creativia.ts src=http://leia.tg16.gathering.org:5004/leia.ts backlog_size=104857600 +stream /creativia.flv src=http://leia.tg16.gathering.org:5004/leia.flv backlog_size=104857600 + + +# Servers - direct feed +stream /anakin.ts src=http://anakin.tg16.gathering.org:5004/anakin.ts backlog_size=104857600 +stream /anakin.flv src=http://anakin.tg16.gathering.org:5004/anakin.flv backlog_size=104857600 + +stream /padme.ts src=http://padme.tg16.gathering.org:5004/padme.ts backlog_size=104857600 +stream /padme.flv src=http://padme.tg16.gathering.org:5004/padme.flv backlog_size=104857600 + +stream /luke.ts src=http://luke.tg16.gathering.org:5004/luke.ts backlog_size=104857600 +stream /luke.flv src=http://luke.tg16.gathering.org:5004/luke.flv backlog_size=104857600 + +stream /leia.ts src=http://leia.tg16.gathering.org:5004/leia.ts backlog_size=104857600 +stream /leia.flv src=http://leia.tg16.gathering.org:5004/leia.flv backlog_size=104857600 + +#stream /han.ts src=http://han.tg16.gathering.org:5004/han.ts backlog_size=104857600 +#stream /han.flv src=http://han.tg16.gathering.org:5004/han.flv backlog_size=104857600 + +# Webcams +stream /southcam.ts src=http://han.tg16.gathering.org:5004/southcam.ts backlog_size=104857600 +stream /southcam.flv src=http://han.tg16.gathering.org:5004/southcam.flv backlog_size=104857600 +stream /southcamlb.ts src=http://han.tg16.gathering.org:5006/southcamlb.ts backlog_size=104857600 +stream /southcamlb.flv src=http://han.tg16.gathering.org:5006/southcamlb.flv backlog_size=104857600 +stream /noccam.ts src=http://han.tg16.gathering.org:5005/noccam.ts backlog_size=104857600 +stream /noccam.flv src=http://han.tg16.gathering.org:5005/noccam.flv backlog_size=104857600 + +# Test +#stream /test.ts src=udp://@:1234 backlog_size=1048576 +stream /event.mp4 src=http://han.tg16.gathering.org:1994/event.mp4 backlog_size=104857600 force_prebuffer=750000 + +stream /udp.ts src=udp://@:1234 backlog_size=1048576 + diff --git a/examples/tg16/streams/cubemap/rey-cubemap.config b/examples/tg16/streams/cubemap/rey-cubemap.config new file mode 100644 index 0000000..7faa9a6 --- /dev/null +++ b/examples/tg16/streams/cubemap/rey-cubemap.config @@ -0,0 +1,150 @@ +# Uncomment to run in the background. Note that in daemonized mode, all filenames +# are relative to an undefined directory, so you should use absolute paths for +# error_log, stats_file, etc. + +#daemonize + +# For low-traffic servers (less than a gigabit or two), num_servers 1 is fine. +# For best performance in high-traffic situations, you want one for each CPU. +num_servers 1 + +# +# All input ports are treated exactly the same, but you may use multiple ones nevertheless. +# +port 80 +# listen 127.0.0.1:9095 +# listen [::1]:9095 + +stats_file /var/lib/cubemap/cubemap.stats +stats_interval 60 + +input_stats_file /var/lib/cubemap/cubemap-input.stats +input_stats_interval 60 + +# Logging of clients as they disconnect (and as such as no longer visible in the stats file). +# You can only have zero or one of these. +access_log /var/log/cubemap/access.log + +# Logging of various informational and error messages. You can have as many of these as you want. +error_log type=file filename=/var/log/cubemap/cubemap.log +error_log type=syslog +error_log type=console + +# +# Now the streams! There are two types of streams; stream (HTTP output) +# and udpstream (UDP output). Let's take stream first. +# + +# A basic form of stream, with HTTP input. Often, you will need no more than this. +# The input must be Metacube framed (VLC can produce this with an option). +#stream /test.flv src=http://gruessi.zrh.sesse.net:4013/test.flv + +# Streams can share the same input (the same is reused, no extra bandwidth needed). +# force_prebuffer=<number of bytes> is a parameter where we don't start sending +# any data to a newly connected client before we can do that many bytes at once. +# This is useful for clients that don't properly buffer themselves before starting +# playing, e.g., most web browsers and some Flash players when playing from HTTP +# (e.g., JW Player). +#stream /test-jwplayer.flv src=http://gruessi.zrh.sesse.net:4013/test.flv force_prebuffer=1500000 + +# encoding=metacube means the _output_ will be Metacube framed. This is useful +# for sending on to another Cubemap instance. +#stream /test.flv.metacube src=http://gruessi.zrh.sesse.net:4013/test.flv encoding=metacube + +# UDP input. TS is the most common container to use over UDP (you cannot +# take any arbitrary container and expect it to work). +# backlog_size=<number of bytes> overrides the backlog, which is normally 10 MB. +# If clients fall more behind than the backlog (plus the socket buffer), +# they will drop data, so if you have extremely high-bitrate streams, you may want +# to increase this. Or conversely, if you have little RAM and many streams +# (or many servers) you can decrease it. +#stream /udp.ts src=udp://@:1234 backlog_size=1048576 + +# An example of IPv4 multicast input. Cubemap will subscribe to the given group +# and wait for data sent by any sender to the given port. +# pacing_rate_kbit=<number of kilobit/sec> will ask the kernel to hard-limit +# the TCP transfer rate, including retransmits, to the given speed. (This is a +# no-op if you do not use the sch_fq packet scheduler, which is not the default +# but can be set in Linux 3.13 and newer using tc.) This is extremely +# useful for reducing packet loss and thus including throughput, since it means +# that packets arrive smoothly instead of in tight bursts, which will often +# overload underbuffered routers and cause drops (imagine receiving a 100 kB +# keyframe at 10gig speeds, and then having to meter it out over 5 Mbit ADSL). +# The rate should be a bit higher than your stream bitrate to allow for retransmits. +#stream /udp-multicast.ts src=udp://@233.252.0.2:1234 pacing_rate_kbit=2000 + +# IPv6 SSM (Single Source Multicast) input. Subscribes to the given group and +# waits for packets from the given sender only. SSM is nicer than ASM in that +# it does not require a Rendezvous Point (RP) and other complexity, but is +# often poorly supported in various network equipment. +#stream /udp-multicast-ssmv6.ts src=udp://[2001:67c:29f4::32]@[ff3e::1000:0]:1234 pacing_rate_kbit=20000 + +# udpstream takes src= inputs just like stream does, but instead of waiting +# for TCP connections on ports, it immediately sends the packets out over UDP. +# (As with UDP input, this probably only works well for TS mux.) +#udpstream [2001:67c:29f4::50]:5000 src=http://pannekake.samfundet.no:9094/frikanalen.ts.metacube + +# udpstream takes pacing_rate_kbit= just like stream. None of the other options +# make sense. +#udpstream 193.35.52.50:5001 src=http://pannekake.samfundet.no:9094/frikanalen.ts.metacube pacing_rate_kbit=2000 + +# IPv4 multicast output, to the given group. You can explicitly set the TTL +# and/or multicast output interface, if the defaults do not suit you. +#udpstream 233.252.0.1:5002 src=http://pannekake.samfundet.no:9094/frikanalen.ts.metacube ttl=32 multicast_output_interface=eth1 + +# A type of HTTP resource that is not a stream, but rather just a very simple +# document that a HTTP 204 response and nothing else. allow_origin= is optional; +# if it is set, the response will contain an Access-Control-Allow-Origin header +# with the given value, allowing the ping response to be read (and +# differentiated from an error) from a remote domain using XHR. +# +# If you have a stream and a gen204 endpoint with the same URL, the stream takes +# precedence and the ping endpoint is silently ignored. +gen204 /ping allow_origin=* + +# TG16 + +# For viewers -- production feeds +stream /event.ts src=http://anakin.tg16.gathering.org:5004/anakin.ts backlog_size=104857600 +stream /event.flv src=http://anakin.tg16.gathering.org:5004/anakin.flv backlog_size=104857600 + +stream /eventsd.ts src=http://han.tg16.gathering.org:5009/eventsd.ts backlog_size=104857600 +stream /eventsd.flv src=http://han.tg16.gathering.org:5009/eventsd.flv backlog_size=104857600 + +stream /game.ts src=http://padme.tg16.gathering.org:5004/padme.ts backlog_size=104857600 +stream /game.flv src=http://padme.tg16.gathering.org:5004/padme.flv backlog_size=104857600 + +stream /creativia.ts src=http://leia.tg16.gathering.org:5004/leia.ts backlog_size=104857600 +stream /creativia.flv src=http://leia.tg16.gathering.org:5004/leia.flv backlog_size=104857600 + + +# Servers - direct feed +stream /anakin.ts src=http://anakin.tg16.gathering.org:5004/anakin.ts backlog_size=104857600 +stream /anakin.flv src=http://anakin.tg16.gathering.org:5004/anakin.flv backlog_size=104857600 + +stream /padme.ts src=http://padme.tg16.gathering.org:5004/padme.ts backlog_size=104857600 +stream /padme.flv src=http://padme.tg16.gathering.org:5004/padme.flv backlog_size=104857600 + +stream /luke.ts src=http://luke.tg16.gathering.org:5004/luke.ts backlog_size=104857600 +stream /luke.flv src=http://luke.tg16.gathering.org:5004/luke.flv backlog_size=104857600 + +stream /leia.ts src=http://leia.tg16.gathering.org:5004/leia.ts backlog_size=104857600 +stream /leia.flv src=http://leia.tg16.gathering.org:5004/leia.flv backlog_size=104857600 + +#stream /han.ts src=http://han.tg16.gathering.org:5004/han.ts backlog_size=104857600 +#stream /han.flv src=http://han.tg16.gathering.org:5004/han.flv backlog_size=104857600 + +# Webcams +stream /southcam.ts src=http://han.tg16.gathering.org:5004/southcam.ts backlog_size=104857600 +stream /southcam.flv src=http://han.tg16.gathering.org:5004/southcam.flv backlog_size=104857600 +stream /southcamlb.ts src=http://han.tg16.gathering.org:5006/southcamlb.ts backlog_size=104857600 +stream /southcamlb.flv src=http://han.tg16.gathering.org:5006/southcamlb.flv backlog_size=104857600 +stream /noccam.ts src=http://han.tg16.gathering.org:5005/noccam.ts backlog_size=104857600 +stream /noccam.flv src=http://han.tg16.gathering.org:5005/noccam.flv backlog_size=104857600 + +# Test +#stream /test.ts src=udp://@:1234 backlog_size=1048576 +stream /event.mp4 src=http://han.tg16.gathering.org:1994/event.mp4 backlog_size=104857600 force_prebuffer=750000 + +stream /udp.ts src=udp://@:1234 backlog_size=1048576 + diff --git a/examples/tg16/streams/encoder-install.sh b/examples/tg16/streams/encoder-install.sh new file mode 100644 index 0000000..87da90f --- /dev/null +++ b/examples/tg16/streams/encoder-install.sh @@ -0,0 +1,42 @@ +#!/bin/bash +apt-get -y install build-essential git-core pkg-config libfaad-dev libdvbpsi-dev liblivemedia-dev libraw1394-dev libdc1394-22-dev libavc1394-dev libtool libtwolame-dev automake dkms libfontconfig1 libice6 libjpeg62 libmng1 libsm6 libtiff5 libxi6 libxrandr2 libxrender1 fontconfig libgl1-mesa-glx dh-autoreconf linux-headers-amd64 zlib1g-dev unzip libgcrypt-dev libvorbis-dev yasm sudo +dpkg -i desktopvideo_10.6.2a3_amd64.deb + +cd libvpx +./configure --enable-shared +make -j20 +sudo make install +sudo ldconfig +cd .. + +cd x264 +./configure --enable-shared +make -j20 +sudo make install +sudo ldconfig +cd .. + +cd fdk-aac +libtoolize +aclocal +automake --add-missing +autoconf +./configure +make -j20 +sudo make install +sudo ldconfig +cd .. + +cd ffmpeg +./configure --enable-shared --enable-libx264 --disable-stripping --enable-gpl --enable-nonfree --enable-libvpx --enable-libvorbis --enable-libfdk-aac +make -j20 +sudo make install +sudo ldconfig +cd .. + +cd vlc +./bootstrap +./configure --disable-dbus --disable-mad --disable-postproc --disable-a52 --disable-glx --disable-fribidi --disable-qt --disable-skins2 --enable-dvbpsi --enable-faad --disable-nls --disable-xcb --disable-sdl --disable-libgcrypt --disable-lua --disable-alsa --disable-v4l2 --enable-libgcrypt --enable-fdkaac --with-decklink-sdk=/root/decklink-sdk/Linux +make -j20 +sudo make install +sudo ldconfig diff --git a/examples/tg16/streams/han/encode.sh b/examples/tg16/streams/han/encode.sh new file mode 100644 index 0000000..34cda9f --- /dev/null +++ b/examples/tg16/streams/han/encode.sh @@ -0,0 +1,7 @@ +#!/bin/bash +cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-aspect-ratio 16:9 --decklink-mode hp60 --decklink-video-connection sdi --no-sub-autodetect-file --sub-source marq --marq-marquee 'Hello world! %t' \ + --sout-x264-preset medium --sout-x264-tune film --sout-transcode-threads 15 --no-sout-x264-interlaced --sout-mux-caching 3000 \ + --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 6000 --sout-x264-vbv-bufsize 6000 --ttl 60 \ + -v decklink:// vlc://quit \ + --sout \ +'#transcode{sfilter=logo{file="/home/tech/test.gif",position=10},vcodec=h264,vb=5500,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/han.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/han.flv}' diff --git a/examples/tg16/streams/han/event-encode-mp4.sh b/examples/tg16/streams/han/event-encode-mp4.sh new file mode 100644 index 0000000..7cb202f --- /dev/null +++ b/examples/tg16/streams/han/event-encode-mp4.sh @@ -0,0 +1,5 @@ +#!/bin/bash +cvlc -I dummy --network-caching 5000 --live-caching 5000 -vvvv http://cubemap.tg16.gathering.org/event.ts vlc://quit \ +--sout-x264-preset medium --sout-x264-tune film --sout-mux-caching 5000 --sout-transcode-threads 8 --sout-x264-vbv-maxrate 5000 --sout-x264-vbv-bufsize 5000 --sout-avformat-options '{movflags=empty_moov+frag_keyframe+default_base_moof}' --no-avcodec-dr --sout-x264-keyint 50 \ +--sout \ +'#transcode{vcodec=h264,vb=3500,acodec=mp4a,ab=128,channels=2}:std{mux=ffmpeg{mux=mp4},access=http{mime=video/mp4,metacube},dst=:1994/event.mp4}' diff --git a/examples/tg16/streams/han/event-sd.sh b/examples/tg16/streams/han/event-sd.sh new file mode 100644 index 0000000..9b927b3 --- /dev/null +++ b/examples/tg16/streams/han/event-sd.sh @@ -0,0 +1,6 @@ +#!/bin/bash +cvlc -I dummy -vvvv --sout-x264-preset medium --sout-x264-tune film --sout-transcode-threads 5 --no-sout-x264-interlaced --sout-mux-caching 5000 \ + --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 2000 --sout-x264-vbv-bufsize 2000 --ttl 60 --live-caching 10000 --network-caching 10000 \ + -v http://cubemap.tg16.gathering.org/anakin.ts vlc://quit \ + --sout \ +'#transcode{vcodec=h264,vb=2000,acodec=mp4a,ab=128,channels=2,height=576}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5009/eventsd.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5009/eventsd.flv}' diff --git a/examples/tg16/streams/han/hls-creativia.sh b/examples/tg16/streams/han/hls-creativia.sh new file mode 100644 index 0000000..d07cbf7 --- /dev/null +++ b/examples/tg16/streams/han/hls-creativia.sh @@ -0,0 +1,6 @@ +#!/bin/bash +while :; do +ffmpeg -i http://cubemap.tg16.gathering.org/creativia.ts -vcodec copy -c:a libfdk_aac -ar 44100 -ac 2 -f flv rtmp://185.110.148.11/live/creativia; +sleep 1 +done + diff --git a/examples/tg16/streams/han/hls-event.sh b/examples/tg16/streams/han/hls-event.sh new file mode 100644 index 0000000..8050305 --- /dev/null +++ b/examples/tg16/streams/han/hls-event.sh @@ -0,0 +1,6 @@ +#!/bin/bash +while :; do +ffmpeg -i http://cubemap.tg16.gathering.org/event.ts -vcodec copy -c:a libfdk_aac -ar 44100 -ac 2 -f flv rtmp://185.110.148.11/live/event; +sleep 1 +done + diff --git a/examples/tg16/streams/han/hls-game.sh b/examples/tg16/streams/han/hls-game.sh new file mode 100644 index 0000000..3d2fef9 --- /dev/null +++ b/examples/tg16/streams/han/hls-game.sh @@ -0,0 +1,6 @@ +#!/bin/bash +while :; do +ffmpeg -i http://cubemap.tg16.gathering.org/game.ts -vcodec copy -c:a libfdk_aac -ar 44100 -ac 2 -f flv rtmp://185.110.148.11/live/game; +sleep 1 +done + diff --git a/examples/tg16/streams/han/hls-noc.sh b/examples/tg16/streams/han/hls-noc.sh new file mode 100644 index 0000000..f467fc4 --- /dev/null +++ b/examples/tg16/streams/han/hls-noc.sh @@ -0,0 +1,6 @@ +#!/bin/bash +while :; do +ffmpeg -thread_queue_size 16 -i http://cubemap.tg16.gathering.org/noccam.ts -f lavfi -i anullsrc -vcodec copy -c:a libfdk_aac -ar 44100 -ac 2 -f flv rtmp://185.110.148.11/live/noccam; +sleep 1 +done + diff --git a/examples/tg16/streams/han/hls-south.sh b/examples/tg16/streams/han/hls-south.sh new file mode 100644 index 0000000..6966b59 --- /dev/null +++ b/examples/tg16/streams/han/hls-south.sh @@ -0,0 +1,6 @@ +#!/bin/bash +while :; do +ffmpeg -thread_queue_size 16 -i http://cubemap.tg16.gathering.org/southcam.ts -f lavfi -i anullsrc -vcodec copy -c:a libfdk_aac -ar 44100 -ac 2 -f flv rtmp://185.110.148.11/live/southcam; +sleep 1 +done + diff --git a/examples/tg16/streams/han/noc-reflect.sh b/examples/tg16/streams/han/noc-reflect.sh new file mode 100644 index 0000000..a33c4e0 --- /dev/null +++ b/examples/tg16/streams/han/noc-reflect.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# reflecting purposes +source="rtsp://185.110.150.85/live.sdp" + +while :; do +vlc -I dummy -vv --network-caching 500 $source vlc://quit --sout '#duplicate{dst=std{access=http{metacube},mux=ts,dst=:5005/noccam.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5005/noccam.flv}' +sleep 1 +done + diff --git a/examples/tg16/streams/han/south-encode-mp4.sh b/examples/tg16/streams/han/south-encode-mp4.sh new file mode 100644 index 0000000..0face57 --- /dev/null +++ b/examples/tg16/streams/han/south-encode-mp4.sh @@ -0,0 +1,5 @@ +#!/bin/bash +cvlc -I dummy -vvvv rtsp://88.92.61.10/live.sdp vlc://quit \ +--live-caching 5000 --network-caching 5000 --sout-x264-preset medium --sout-x264-tune film --sout-mux-caching 5000 --sout-transcode-threads 6 --sout-x264-vbv-maxrate 5000 --sout-x264-vbv-bufsize 5000 --sout-avformat-options '{movflags=empty_moov+frag_keyframe+default_base_moof}' --no-avcodec-dr --sout-x264-keyint 50 \ +--sout \ +'#transcode{vcodec=h264,vb=3500,acodec=mp4a,ab=128,channels=2}:duplicate{dst=std{access=http{mime=video/mp4,metacube},mux=ffmpeg{mux=mp4},dst=:5006/southcamlb.mp4},dst=std{access=http{metacube},mux=ts,dst=:5006/southcamlb.ts}}' \ diff --git a/examples/tg16/streams/han/south-encode.sh b/examples/tg16/streams/han/south-encode.sh new file mode 100644 index 0000000..9138736 --- /dev/null +++ b/examples/tg16/streams/han/south-encode.sh @@ -0,0 +1,10 @@ +#!/bin/bash +while :; do +cvlc -I dummy -vvvv \ + --sout-x264-preset medium --sout-x264-tune film --sout-transcode-threads 10 --no-sout-x264-interlaced --sout-mux-caching 5000 --network-caching 3000 \ + --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 3000 --sout-x264-vbv-bufsize 3000 --ttl 60 \ + -v rtsp://88.92.61.10/live.sdp vlc://quit \ + --sout \ +'#transcode{vcodec=h264,vb=4500,acodec=null}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5006/southcamlb.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5006/southcamlb.flv}' +sleep 1 +done diff --git a/examples/tg16/streams/han/south-reflect.sh b/examples/tg16/streams/han/south-reflect.sh new file mode 100644 index 0000000..cfeaeab --- /dev/null +++ b/examples/tg16/streams/han/south-reflect.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# reflecting purposes +source="rtsp://88.92.61.10/live.sdp" + +while :; do +vlc -I dummy -vv --network-caching 500 $source vlc://quit --sout '#duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/southcam.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/southcam.flv}' +sleep 1 +done + diff --git a/examples/tg16/streams/leia/encode.sh b/examples/tg16/streams/leia/encode.sh new file mode 100644 index 0000000..239f411 --- /dev/null +++ b/examples/tg16/streams/leia/encode.sh @@ -0,0 +1,7 @@ +#!/bin/bash +cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-aspect-ratio 16:9 --decklink-mode hp50 --decklink-video-connection sdi \ + --sout-x264-preset medium --sout-x264-tune film --sout-transcode-threads 15 --no-sout-x264-interlaced --sout-mux-caching 3000 \ + --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 6000 --sout-x264-vbv-bufsize 6000 --ttl 60 \ + -v decklink:// vlc://quit \ + --sout \ +'#transcode{vcodec=h264,vb=5500,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/leia.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/leia.flv}' diff --git a/examples/tg16/streams/luke/encode.sh b/examples/tg16/streams/luke/encode.sh new file mode 100644 index 0000000..70ea222 --- /dev/null +++ b/examples/tg16/streams/luke/encode.sh @@ -0,0 +1,7 @@ +#!/bin/bash +cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-mode Hp50 --decklink-aspect-ratio 16:9 --decklink-video-connection sdi \ + --sout-x264-preset medium --sout-x264-tune film --sout-transcode-threads 15 --no-sout-x264-interlaced --sout-mux-caching 10000 \ + --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 25000 --sout-x264-vbv-bufsize 25000 --ttl 60 \ + -v decklink:// vlc://quit \ + --sout \ +'#transcode{vcodec=h264,vb=25000,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/luke.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/luke.flv}' diff --git a/examples/tg16/streams/luke/ffmpeg-deinterlace.sh b/examples/tg16/streams/luke/ffmpeg-deinterlace.sh new file mode 100644 index 0000000..898cae4 --- /dev/null +++ b/examples/tg16/streams/luke/ffmpeg-deinterlace.sh @@ -0,0 +1,6 @@ +#!/bin/bash +ffmpeg -y -f decklink -i 'DeckLink SDI 4K@8' -v verbose \ +-c:v libx264 -tune film -preset medium -x264opts keyint=50:rc-lookahead=70:vbv-maxrate=6500:vbv-bufsize=6500:bitrate=6500 \ +-c:a libfdk_aac -ac 2 -b:a 192k -threads 16 -f mpegts \ +-vf yadif=1 - | cvlc - --sout "#std{access=http{metacube},mux=ts,dst=:5004/luke.ts}" --live-caching 3000 --file-caching 3000 +#"udp://185.110.148.8:1234?pkt_size=1316&buffer_size=10485760&fifo_size=10485760&ttl=60" diff --git a/examples/tg16/streams/luke/ffmpeg.sh b/examples/tg16/streams/luke/ffmpeg.sh new file mode 100644 index 0000000..77cc18d --- /dev/null +++ b/examples/tg16/streams/luke/ffmpeg.sh @@ -0,0 +1,5 @@ +#!/bin/bash +ffmpeg -y -f decklink -i 'DeckLink SDI 4K@11' -v verbose \ +-c:v libx264 -tune film -preset medium -x264opts keyint=50:rc-lookahead=70:vbv-maxrate=15000:vbv-bufsize=15000:bitrate=15000 \ +-c:a libfdk_aac -ac 2 -b:a 192k -threads 16 -f mpegts - | cvlc - --sout "#std{access=http{metacube},mux=ts,dst=:5004/luke.ts}" --live-caching 3000 --file-caching 3000 +#"udp://185.110.148.8:1234?pkt_size=1316&buffer_size=10485760&fifo_size=10485760&ttl=60" diff --git a/examples/tg16/streams/padme/encode-mp4.sh b/examples/tg16/streams/padme/encode-mp4.sh new file mode 100644 index 0000000..8be1bbd --- /dev/null +++ b/examples/tg16/streams/padme/encode-mp4.sh @@ -0,0 +1,8 @@ +#!/bin/bash +#'#transcode{vcodec=h264,vb=5500,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/padme.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/padme.flv,dst=std{access=http{mime=video/mp4},mux=ffmpeg{mux=mp4},dst=:5004/stream.mp4}}' + +cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-aspect-ratio 16:9 --decklink-mode hp50 --decklink-video-connection sdi \ +-v decklink:// vlc://quit --sout \ +'#transcode{vcodec=h264,vb=5500,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{mime=video/mp4,metacube},mux=ffmpeg{mux=mp4},dst=:5004/padme.mp4},dst=std{access=http{metacube},mux=ts,dst=:5004/padme.ts}}' \ +--sout-x264-preset slow --live-caching 3000 --sout-x264-tune film --sout-mux-caching 8000 --sout-x264-vbv-maxrate 5000 --sout-x264-vbv-bufsize 5000 --sout-avformat-options '{movflags=empty_moov+frag_keyframe+default_base_moof,frag_interleave=5}' --no-avcodec-dr --sout-x264-keyint 50 + diff --git a/examples/tg16/streams/padme/encode-webm.sh b/examples/tg16/streams/padme/encode-webm.sh new file mode 100644 index 0000000..eaac329 --- /dev/null +++ b/examples/tg16/streams/padme/encode-webm.sh @@ -0,0 +1,5 @@ +#!/bin/bash +cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-aspect-ratio 16:9 --decklink-mode hp60 --decklink-video-connection sdi \ +-v decklink:// vlc://quit --sout \ +'#transcode{vcodec=VP80,vb=3000,channels=2,samplerate=44100}:std{access=http{mime=video/webm},mux=webm,dst=:8080/stream.webm}' \ +--sout-mux-caching 5000 diff --git a/examples/tg16/streams/padme/encode.sh b/examples/tg16/streams/padme/encode.sh new file mode 100644 index 0000000..b8f7204 --- /dev/null +++ b/examples/tg16/streams/padme/encode.sh @@ -0,0 +1,8 @@ +#!/bin/bash +cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-aspect-ratio 16:9 --decklink-mode hp50 --decklink-video-connection sdi \ + --sout-x264-preset medium --sout-x264-tune film --sout-transcode-threads 15 --no-sout-x264-interlaced --sout-mux-caching 3000 \ + --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 6000 --sout-x264-vbv-bufsize 6000 --ttl 60 \ + -v decklink:// vlc://quit \ + --sout \ +'#transcode{vcodec=h264,vb=5500,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/padme.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/padme.flv}' + diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160322-0600.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160322-0600.png Binary files differnew file mode 100644 index 0000000..791beab --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160322-0600.png diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160323-0600.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160323-0600.png Binary files differnew file mode 100644 index 0000000..da7c967 --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160323-0600.png diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160324-0600.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160324-0600.png Binary files differnew file mode 100644 index 0000000..39484c9 --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160324-0600.png diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160325-0600.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160325-0600.png Binary files differnew file mode 100644 index 0000000..e6c8c16 --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160325-0600.png diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160326-0600.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160326-0600.png Binary files differnew file mode 100644 index 0000000..b2ce587 --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160326-0600.png diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-0600.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-0600.png Binary files differnew file mode 100644 index 0000000..8a91859 --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-0600.png diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-0900.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-0900.png Binary files differnew file mode 100644 index 0000000..2a86ba5 --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-0900.png diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-1308.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-1308.png Binary files differnew file mode 100644 index 0000000..c20128d --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-1308.png diff --git a/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160322-0600.png b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160322-0600.png Binary files differnew file mode 100644 index 0000000..6566c09 --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160322-0600.png diff --git a/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160323-0600.png b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160323-0600.png Binary files differnew file mode 100644 index 0000000..204912c --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160323-0600.png diff --git a/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160324-0600.png b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160324-0600.png Binary files differnew file mode 100644 index 0000000..6368652 --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160324-0600.png diff --git a/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160325-0600.png b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160325-0600.png Binary files differnew file mode 100644 index 0000000..41cef7a --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160325-0600.png diff --git a/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160326-0600.png b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160326-0600.png Binary files differnew file mode 100644 index 0000000..ddd5e35 --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160326-0600.png diff --git a/examples/tg16/web/stream.gathering.org/index.html b/examples/tg16/web/stream.gathering.org/index.html new file mode 100644 index 0000000..9a3670c --- /dev/null +++ b/examples/tg16/web/stream.gathering.org/index.html @@ -0,0 +1,187 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title>The Gathering 2016 Streams</title> + + <!-- Mobile specific + ----------------------> + <meta name="viewport" content="width=device-width, initial-scale=0.35"> + + <!-- CSS specifics + --------------------> + <link rel="stylesheet" href="./resources/css/normalize.css"> + <link rel="stylesheet" href="./resources/css/skeleton.css"> + <link rel="stylesheet" href="./resources/css/core.css"> + <link rel="stylesheet" href="./resources/css/button-styles.css"> + + <style type="text/css"> + .vjs-big-play-button { + top:0; + left:0; + right:0; + bottom:0; + margin:auto; + } + </style> + + <!-- JavaScript specifics + ----------------------------> + <script src="//code.jquery.com/jquery-1.11.2.min.js"></script> + <link href="//vjs.zencdn.net/5.8/video-js.min.css" rel="stylesheet"> + <script type="text/javascript" src="//www.gstatic.com/cv/js/sender/v1/cast_sender.js"></script> + + <script type="text/javascript"> + function swapVideo (url) { + window.location = '/?url=' + encodeURIComponent(url);//window.btoa(url); + } + + var _float = true; + + function animateFloat() { + if(_float) { + $("#floater").animate({top: '-=20px'}, "slow"); + $("#floater").animate({top: '+=20px'}, "slow", animateFloat); + } + } + + function toggleAnimation() { + $('#bubble').stop().fadeOut( 400 ); + if(_float) { + _float = false; + $("#floater").delay(800).animate({top: '172px'}, "slow"); + } else { + _float = true; + animateFloat(); + } + } + + $(document).ready(function() { + $("#floater").click(function() { + toggleAnimation(); + }); + $("#bubble").click(function() { + toggleAnimation(); + }); + + //animateFloat(); + //$( "#bubble" ).delay( 5000 ).fadeOut( 400 ); + }); + </script> + + <style type="text/css"> + #floater { + position: absolute; + top: 172px; + right: 0px; + width: 531px; + height: 396px; + //background-image: url('/resources/images/floater.svg'); + background-size: cover; + } + + #bubble { + position: absolute; + visibility: hidden; + top: 62px; + right: 170px; + width: 200px; + height: 25px; + color: #000000; + cursor: pointer; + } + </style> + +<!-- creative, event och game --> +</head> +<body> + <div id="header"> + <img src="resources/images/thegathering.png" width="400"> + </div> + <div class="section"> + <div class="container"> + <div class="row"> + <div class="twelve columns" style="margin-top: 85px;"> + <h1>Takk for i år!</h1> + <h3 style="color: grey;"><3 Streamteam</h3> + </div> + </div> + </div> + </div> + + +<script src="//vjs.zencdn.net/5.8/video.js"></script> +<script src="./resources/js/videojs-contrib-hls.js"></script> +<script> + +// GOOGLE CAST + +var current_media; +var session; + +function show_castposter() { + stop_loader(); + castposter.style.display = 'block'; + loader.style.display = 'none'; + video.style.display = 'none'; +} + +function hide_castposter() { + castposter.style.display = 'none'; + loader.style.display = 'none'; + video.style.display = 'inline'; +} + +function stop_casting() { + hide_castposter(); + if (current_media) { + var media = current_media; + current_media = null; + media.stop(); + } + if (session) { + session.stop(); + session = null; + } +} + +function cast_current_video() { + if (session === undefined || selected_stream === undefined) { + return; + } + var title = streams[selected_stream].name; + var url = streams[selected_stream].url; + document.getElementById('casttarget').textContent = session.receiver.friendlyName; + show_castposter(); + video.pause(); + // If we are already casting this, do nothing. + if (current_media && current_media.media.contentId === url) { + console.log("Already casting " + url + " to " + session.receiver.friendlyName + " (" + current_media.playerState + ")"); + return; + } + if (current_media) { + current_media = null; // Signal to on_media_status_update. + } + var media_info = new chrome.cast.media.MediaInfo(url, "video/mp4"); + media_info.metadata = new chrome.cast.media.GenericMediaMetadata(); + media_info.metadata.title = global_title; // + ': ' + title; + var request = new chrome.cast.media.LoadRequest(media_info); + session.loadMedia(request, + on_media_discovered.bind(this, 'loadMedia'), + on_media_error); +} + +var techOrder = ["html5", "flash"]; +if (navigator.userAgent.match(/Trident|Edge|OPR/)) { + console.log("hit!"); + techOrder = ["flash", "html5"]; + //var video = document.getElementById('video'); + //video.src = "http://bleh"; +} +var player = videojs('stream', { + techOrder: techOrder +}); +player.play(); +</script> +</body> +</html> diff --git a/examples/tg16/web/stream.gathering.org/js-version/config.json b/examples/tg16/web/stream.gathering.org/js-version/config.json new file mode 100644 index 0000000..0400835 --- /dev/null +++ b/examples/tg16/web/stream.gathering.org/js-version/config.json @@ -0,0 +1,28 @@ +{
+ "TG" : "16",
+ "TG_FULL" : "2016",
+ "VIDEO_AUTO_PLAY" : "false",
+ "DEFAULT_VIDEO" : "mainstage",
+ "STREAMS" : {
+ "mainstage" : {"TYPE" : "event",
+ "SOURCES" : [{"src" : "http://cubemap.tg16.gathering.org/event.flv", "type": "video/flv"}, {"src": "http://stream.tg16.gathering.org/hls/event.m3u8", "type" : "application/x-mpegURL"}],
+ "TITLE" : "Event/Stage (1080p)",
+ "QUALITY" : "hd",
+ "VLC_LINK" : "http://cubemap.tg16.gathering.org/southcam.ts"
+ },
+
+ "south-raw" : {"TYPE" : "camera",
+ "SOURCES" : [{"src" : "http://cubemap.tg16.gathering.org/southcam.flv", "type": "video/flv"}, {"src": "http://stream.tg16.gathering.org/hls/southcamlb.m3u8", "type" : "application/x-mpegURL"}],
+ "TITLE" : "Webcam South (720p)",
+ "QUALITY" : "hd",
+ "VLC_LINK" : "http://cubemap.tg16.gathering.org/southcam.ts"
+ },
+
+ "noccam" : {"TYPE" : "camera",
+ "SOURCES" : [{"src" : "http://cubemap.tg16.gathering.org/noccam.flv", "type": "video/flv"}, {"src": "http://stream.tg16.gathering.org/hls/noccam.m3u8", "type" : "application/x-mpegURL"}],
+ "TITLE" : "Webcam NOC (720p)",
+ "QUALITY" : "hd",
+ "VLC_LINK" : "http://cubemap.tg16.gathering.org/noccam.ts"
+ }
+ }
+}
\ No newline at end of file diff --git a/examples/tg16/web/stream.gathering.org/js-version/index.html b/examples/tg16/web/stream.gathering.org/js-version/index.html new file mode 100644 index 0000000..cc8e8c9 --- /dev/null +++ b/examples/tg16/web/stream.gathering.org/js-version/index.html @@ -0,0 +1,168 @@ +<!--
+ Resource links:
+ * http://docs.videojs.com/docs/api/player.html#src
+ * http://foundation.zurb.com/sites/docs/grid.html
+ * http://stackoverflow.com/a/18197341/929999
+-->
+<html>
+ <head>
+ <!-- Style Sheets -->
+ <link rel="stylesheet" href="//dhbhdrzi4tiry.cloudfront.net/cdn/sites/foundation.min.css">
+ <link href="//vjs.zencdn.net/5.8/video-js.min.css" rel="stylesheet">
+
+ <!-- Load dependencies for video-js -->
+ <script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
+
+ <!-- Emedded styles instead of a .css simply because
+ we're not using that much CSS anyway (speeds up the page-load)
+ -->
+ <style type="text/css">
+ body {
+ background-color: #C2C2C2;
+ }
+
+ footer.fixed .callout {
+ position: absolute;
+ bottom: 0px;
+ width: 100%;
+ margin: 0px;
+
+ text-align: center;
+ }
+
+ .stream-icon.download:hover {
+ cursor: pointer;
+ }
+
+ .vjs-big-play-button {
+ position: absolute;
+ left: 50% !important;
+ top: 50% !important;
+ margin-left: -45px;
+ margin-top: 60px;
+ }
+
+ .link_block {
+ background-color: #CACACA;
+ }
+ </style>
+
+ <!-- Same for JavaScript, embedding it will speed
+ up load-times on the page. And since there's not much
+ JavaScript to talk about we'd might as well embed it.
+ -->
+ <script type="text/javascript">
+
+ function generate_vlc(resource, title) {
+ var element = document.createElement('a');
+ element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent("#EXTM3U\n#EXTINF:-1,"+ title+"\n" + resource));
+ element.setAttribute('download', title+".vlc");
+
+ element.style.display = 'none';
+ document.body.appendChild(element);
+
+ element.click();
+
+ document.body.removeChild(element);
+ }
+
+ function swapVideo(title) {
+ /** -- Because updating a global scope variable in JavaScript is a PITA,
+ we'll just go ahead and grab another copy of the config. It should be
+ cached anyway in the browser and the server should respond with a 302.
+ **/
+ $.getJSON("config.json", function( config ) {
+ var player = videojs('stream', {techOrder: ["flash", "html5"]});
+ player.pause();
+ player.src(config['STREAMS'][title]['SOURCES']);
+ player.play();
+
+ });
+ }
+
+ $(document).ready(function() {
+ $.getJSON("config.json", function( config ) {
+ /** -- config.json
+ Perform any tasks that utelize the config here.
+ Mainly because updating global scope variables
+ ina nested javascript functions is a nightmare.
+ Especially when using asyncronous ajax calls
+ (code using config might run before it's retrieved)
+ **/
+
+ /** -- Initialize the player (using DEFAULT_VIDEO index)
+ **/
+ var player = videojs('stream', {techOrder: ["flash", "html5"]});
+ player.src(config['STREAMS'][config['DEFAULT_VIDEO']]['SOURCES']);
+
+ /** -- If auto-play is true, press play
+ **/
+ if (config["VIDEO_AUTO_PLAY"] === true)
+ player.play();
+
+ /** -- Loop over the event streams
+ now, we'll store them in two string containers
+ during the loop, because we want to separate them
+ into different <div>'s later.
+ **/
+ var event_streams = '';
+ var camera_streams = '';
+
+ $.each(config['STREAMS'], function(key, stream_conf) {
+ var template = '<div class="stream-item"> \
+ <img class="stream-icon" src="/img/icon_' + stream_conf['QUALITY'] + '.png"> \
+ <img class="stream-icon download" src="/resources/images/vlc.png" onClick="generate_vlc(\'' + stream_conf['VLC_LINK'] + '\', \'' + stream_conf['TITLE'] + '\');"> \
+ <img class="stream-icon" src="/img/icon_' + stream_conf['TYPE'] + '.png"> \
+ <a class="stream-link-content" href="#" onclick="swapVideo(\'' + key + '\');">' + stream_conf['TITLE'] + '</a> \
+ </div>';
+
+ if (stream_conf['TYPE'] == 'event')
+ event_streams += template;
+ else
+ camera_streams += template;
+ });
+
+ $('#event_links').append(event_streams);
+ $('#camera_links').append(camera_streams);
+ });
+
+ });
+
+ </script>
+ </head>
+<body>
+ <header>
+ <div class="row">
+ <div class="medium-12 columns">
+ <img src="http://stream.tg16.gathering.org/resources/images/thegathering.png" alt="company logo">
+ </div>
+ </div>
+ </header>
+ <div class="row">
+ <div class="medium-8 columns">
+ <video id=stream width=780 height=439 class="video-js vjs-default-skin" poster="/resources/images/loading.png" controls>
+
+ </video>
+ </div>
+ <div class="medium-4 columns">
+ <div id="event_links" class="link_block" style="width: 100%; padding: 10px;">
+ </div>
+ <br>
+ <div id="camera_links" class="link_block" style="width: 100%; padding: 10px;">
+ </div>
+ </div>
+ </div>
+
+ <footer class="fixed">
+ <div class="row expanded callout secondary">
+ Problems with the non game streams? The easiest way to get a hold of us is to message <a href="irc://efnet.xs4all.nl:6667/#tg">ViD or DoXiD @EFNet (IRC)</a>.
+ </div>
+ </footer>
+
+ <script src="//vjs.zencdn.net/5.8/video.js"></script>
+ <script type="text/javascript" src="./js/videojs-contrib-hls.js"></script>
+ <script type="text/javascript" src="./js/videojs-contrib-media-sources.js"></script>
+
+</body>
+</html>
+
diff --git a/examples/tg16/web/stream.gathering.org/js-version/js/videojs-contrib-hls.js b/examples/tg16/web/stream.gathering.org/js-version/js/videojs-contrib-hls.js new file mode 100644 index 0000000..d36bd99 --- /dev/null +++ b/examples/tg16/web/stream.gathering.org/js-version/js/videojs-contrib-hls.js @@ -0,0 +1,11691 @@ +/** + * videojs-contrib-hls + * @version 2.0.1 + * @copyright 2016 Brightcove, Inc + * @license Apache-2.0 + */ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.videojsContribHls = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); +var textRange = function textRange(range, i) { + return range.start(i) + '-' + range.end(i); +}; + +var formatHexString = function formatHexString(e, i) { + var value = e.toString(16); + + return '00'.substring(0, 2 - value.length) + value + (i % 2 ? ' ' : ''); +}; +var formatAsciiString = function formatAsciiString(e) { + if (e >= 0x20 && e < 0x7e) { + return String.fromCharCode(e); + } + return '.'; +}; + +var utils = { + hexDump: function hexDump(data) { + var bytes = Array.prototype.slice.call(data); + var step = 16; + var result = ''; + var hex = undefined; + var ascii = undefined; + + for (var j = 0; j < bytes.length / step; j++) { + hex = bytes.slice(j * step, j * step + step).map(formatHexString).join(''); + ascii = bytes.slice(j * step, j * step + step).map(formatAsciiString).join(''); + result += hex + ' ' + ascii + '\n'; + } + return result; + }, + tagDump: function tagDump(tag) { + return utils.hexDump(tag.bytes); + }, + textRanges: function textRanges(ranges) { + var result = ''; + var i = undefined; + + for (i = 0; i < ranges.length; i++) { + result += textRange(ranges, i) + ' '; + } + return result; + } +}; + +exports['default'] = utils; +module.exports = exports['default']; +},{}],2:[function(require,module,exports){ +/* + * aes.js + * + * This file contains an adaptation of the AES decryption algorithm + * from the Standford Javascript Cryptography Library. That work is + * covered by the following copyright and permissions notice: + * + * Copyright 2009-2010 Emily Stark, Mike Hamburg, Dan Boneh. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation + * are those of the authors and should not be interpreted as representing + * official policies, either expressed or implied, of the authors. + */ + +/** + * Expand the S-box tables. + * + * @private + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +var precompute = function precompute() { + var tables = [[[], [], [], [], []], [[], [], [], [], []]]; + var encTable = tables[0]; + var decTable = tables[1]; + var sbox = encTable[4]; + var sboxInv = decTable[4]; + var i = undefined; + var x = undefined; + var xInv = undefined; + var d = []; + var th = []; + var x2 = undefined; + var x4 = undefined; + var x8 = undefined; + var s = undefined; + var tEnc = undefined; + var tDec = undefined; + + // Compute double and third tables + for (i = 0; i < 256; i++) { + th[(d[i] = i << 1 ^ (i >> 7) * 283) ^ i] = i; + } + + for (x = xInv = 0; !sbox[x]; x ^= x2 || 1, xInv = th[xInv] || 1) { + // Compute sbox + s = xInv ^ xInv << 1 ^ xInv << 2 ^ xInv << 3 ^ xInv << 4; + s = s >> 8 ^ s & 255 ^ 99; + sbox[x] = s; + sboxInv[s] = x; + + // Compute MixColumns + x8 = d[x4 = d[x2 = d[x]]]; + tDec = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100; + tEnc = d[s] * 0x101 ^ s * 0x1010100; + + for (i = 0; i < 4; i++) { + encTable[i][x] = tEnc = tEnc << 24 ^ tEnc >>> 8; + decTable[i][s] = tDec = tDec << 24 ^ tDec >>> 8; + } + } + + // Compactify. Considerable speedup on Firefox. + for (i = 0; i < 5; i++) { + encTable[i] = encTable[i].slice(0); + decTable[i] = decTable[i].slice(0); + } + return tables; +}; +var aesTables = null; + +/** + * Schedule out an AES key for both encryption and decryption. This + * is a low-level class. Use a cipher mode to do bulk encryption. + * + * @constructor + * @param key {Array} The key as an array of 4, 6 or 8 words. + */ + +var AES = (function () { + function AES(key) { + _classCallCheck(this, AES); + + /** + * The expanded S-box and inverse S-box tables. These will be computed + * on the client so that we don't have to send them down the wire. + * + * There are two tables, _tables[0] is for encryption and + * _tables[1] is for decryption. + * + * The first 4 sub-tables are the expanded S-box with MixColumns. The + * last (_tables[01][4]) is the S-box itself. + * + * @private + */ + // if we have yet to precompute the S-box tables + // do so now + if (!aesTables) { + aesTables = precompute(); + } + // then make a copy of that object for use + this._tables = [[aesTables[0][0].slice(), aesTables[0][1].slice(), aesTables[0][2].slice(), aesTables[0][3].slice(), aesTables[0][4].slice()], [aesTables[1][0].slice(), aesTables[1][1].slice(), aesTables[1][2].slice(), aesTables[1][3].slice(), aesTables[1][4].slice()]]; + var i = undefined; + var j = undefined; + var tmp = undefined; + var encKey = undefined; + var decKey = undefined; + var sbox = this._tables[0][4]; + var decTable = this._tables[1]; + var keyLen = key.length; + var rcon = 1; + + if (keyLen !== 4 && keyLen !== 6 && keyLen !== 8) { + throw new Error('Invalid aes key size'); + } + + encKey = key.slice(0); + decKey = []; + this._key = [encKey, decKey]; + + // schedule encryption keys + for (i = keyLen; i < 4 * keyLen + 28; i++) { + tmp = encKey[i - 1]; + + // apply sbox + if (i % keyLen === 0 || keyLen === 8 && i % keyLen === 4) { + tmp = sbox[tmp >>> 24] << 24 ^ sbox[tmp >> 16 & 255] << 16 ^ sbox[tmp >> 8 & 255] << 8 ^ sbox[tmp & 255]; + + // shift rows and add rcon + if (i % keyLen === 0) { + tmp = tmp << 8 ^ tmp >>> 24 ^ rcon << 24; + rcon = rcon << 1 ^ (rcon >> 7) * 283; + } + } + + encKey[i] = encKey[i - keyLen] ^ tmp; + } + + // schedule decryption keys + for (j = 0; i; j++, i--) { + tmp = encKey[j & 3 ? i : i - 4]; + if (i <= 4 || j < 4) { + decKey[j] = tmp; + } else { + decKey[j] = decTable[0][sbox[tmp >>> 24]] ^ decTable[1][sbox[tmp >> 16 & 255]] ^ decTable[2][sbox[tmp >> 8 & 255]] ^ decTable[3][sbox[tmp & 255]]; + } + } + } + + /** + * Decrypt 16 bytes, specified as four 32-bit words. + * @param encrypted0 {number} the first word to decrypt + * @param encrypted1 {number} the second word to decrypt + * @param encrypted2 {number} the third word to decrypt + * @param encrypted3 {number} the fourth word to decrypt + * @param out {Int32Array} the array to write the decrypted words + * into + * @param offset {number} the offset into the output array to start + * writing results + * @return {Array} The plaintext. + */ + + _createClass(AES, [{ + key: 'decrypt', + value: function decrypt(encrypted0, encrypted1, encrypted2, encrypted3, out, offset) { + var key = this._key[1]; + // state variables a,b,c,d are loaded with pre-whitened data + var a = encrypted0 ^ key[0]; + var b = encrypted3 ^ key[1]; + var c = encrypted2 ^ key[2]; + var d = encrypted1 ^ key[3]; + var a2 = undefined; + var b2 = undefined; + var c2 = undefined; + + // key.length === 2 ? + var nInnerRounds = key.length / 4 - 2; + var i = undefined; + var kIndex = 4; + var table = this._tables[1]; + + // load up the tables + var table0 = table[0]; + var table1 = table[1]; + var table2 = table[2]; + var table3 = table[3]; + var sbox = table[4]; + + // Inner rounds. Cribbed from OpenSSL. + for (i = 0; i < nInnerRounds; i++) { + a2 = table0[a >>> 24] ^ table1[b >> 16 & 255] ^ table2[c >> 8 & 255] ^ table3[d & 255] ^ key[kIndex]; + b2 = table0[b >>> 24] ^ table1[c >> 16 & 255] ^ table2[d >> 8 & 255] ^ table3[a & 255] ^ key[kIndex + 1]; + c2 = table0[c >>> 24] ^ table1[d >> 16 & 255] ^ table2[a >> 8 & 255] ^ table3[b & 255] ^ key[kIndex + 2]; + d = table0[d >>> 24] ^ table1[a >> 16 & 255] ^ table2[b >> 8 & 255] ^ table3[c & 255] ^ key[kIndex + 3]; + kIndex += 4; + a = a2;b = b2;c = c2; + } + + // Last round. + for (i = 0; i < 4; i++) { + out[(3 & -i) + offset] = sbox[a >>> 24] << 24 ^ sbox[b >> 16 & 255] << 16 ^ sbox[c >> 8 & 255] << 8 ^ sbox[d & 255] ^ key[kIndex++]; + a2 = a;a = b;b = c;c = d;d = a2; + } + } + }]); + + return AES; +})(); + +exports['default'] = AES; +module.exports = exports['default']; +},{}],3:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _stream = require('../stream'); + +var _stream2 = _interopRequireDefault(_stream); + +/** + * A wrapper around the Stream class to use setTiemout + * and run stream "jobs" Asynchronously + */ + +var AsyncStream = (function (_Stream) { + _inherits(AsyncStream, _Stream); + + function AsyncStream() { + _classCallCheck(this, AsyncStream); + + _get(Object.getPrototypeOf(AsyncStream.prototype), 'constructor', this).call(this, _stream2['default']); + this.jobs = []; + this.delay = 1; + this.timeout_ = null; + } + + _createClass(AsyncStream, [{ + key: 'processJob_', + value: function processJob_() { + this.jobs.shift()(); + if (this.jobs.length) { + this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay); + } else { + this.timeout_ = null; + } + } + }, { + key: 'push', + value: function push(job) { + this.jobs.push(job); + if (!this.timeout_) { + this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay); + } + } + }]); + + return AsyncStream; +})(_stream2['default']); + +exports['default'] = AsyncStream; +module.exports = exports['default']; +},{"../stream":13}],4:[function(require,module,exports){ +/* + * decrypter.js + * + * An asynchronous implementation of AES-128 CBC decryption with + * PKCS#7 padding. + */ + +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +var _aes = require('./aes'); + +var _aes2 = _interopRequireDefault(_aes); + +var _asyncStream = require('./async-stream'); + +var _asyncStream2 = _interopRequireDefault(_asyncStream); + +var _pkcs7 = require('pkcs7'); + +/** + * Convert network-order (big-endian) bytes into their little-endian + * representation. + */ +var ntoh = function ntoh(word) { + return word << 24 | (word & 0xff00) << 8 | (word & 0xff0000) >> 8 | word >>> 24; +}; + +/* eslint-disable max-len */ +/** + * Decrypt bytes using AES-128 with CBC and PKCS#7 padding. + * @param encrypted {Uint8Array} the encrypted bytes + * @param key {Uint32Array} the bytes of the decryption key + * @param initVector {Uint32Array} the initialization vector (IV) to + * use for the first round of CBC. + * @return {Uint8Array} the decrypted bytes + * + * @see http://en.wikipedia.org/wiki/Advanced_Encryption_Standard + * @see http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_Block_Chaining_.28CBC.29 + * @see https://tools.ietf.org/html/rfc2315 + */ +/* eslint-enable max-len */ +var decrypt = function decrypt(encrypted, key, initVector) { + // word-level access to the encrypted bytes + var encrypted32 = new Int32Array(encrypted.buffer, encrypted.byteOffset, encrypted.byteLength >> 2); + + var decipher = new _aes2['default'](Array.prototype.slice.call(key)); + + // byte and word-level access for the decrypted output + var decrypted = new Uint8Array(encrypted.byteLength); + var decrypted32 = new Int32Array(decrypted.buffer); + + // temporary variables for working with the IV, encrypted, and + // decrypted data + var init0 = undefined; + var init1 = undefined; + var init2 = undefined; + var init3 = undefined; + var encrypted0 = undefined; + var encrypted1 = undefined; + var encrypted2 = undefined; + var encrypted3 = undefined; + + // iteration variable + var wordIx = undefined; + + // pull out the words of the IV to ensure we don't modify the + // passed-in reference and easier access + init0 = initVector[0]; + init1 = initVector[1]; + init2 = initVector[2]; + init3 = initVector[3]; + + // decrypt four word sequences, applying cipher-block chaining (CBC) + // to each decrypted block + for (wordIx = 0; wordIx < encrypted32.length; wordIx += 4) { + // convert big-endian (network order) words into little-endian + // (javascript order) + encrypted0 = ntoh(encrypted32[wordIx]); + encrypted1 = ntoh(encrypted32[wordIx + 1]); + encrypted2 = ntoh(encrypted32[wordIx + 2]); + encrypted3 = ntoh(encrypted32[wordIx + 3]); + + // decrypt the block + decipher.decrypt(encrypted0, encrypted1, encrypted2, encrypted3, decrypted32, wordIx); + + // XOR with the IV, and restore network byte-order to obtain the + // plaintext + decrypted32[wordIx] = ntoh(decrypted32[wordIx] ^ init0); + decrypted32[wordIx + 1] = ntoh(decrypted32[wordIx + 1] ^ init1); + decrypted32[wordIx + 2] = ntoh(decrypted32[wordIx + 2] ^ init2); + decrypted32[wordIx + 3] = ntoh(decrypted32[wordIx + 3] ^ init3); + + // setup the IV for the next round + init0 = encrypted0; + init1 = encrypted1; + init2 = encrypted2; + init3 = encrypted3; + } + + return decrypted; +}; + +exports.decrypt = decrypt; +/** + * The `Decrypter` class that manages decryption of AES + * data through `AsyncStream` objects and the `decrypt` + * function + */ + +var Decrypter = (function () { + function Decrypter(encrypted, key, initVector, done) { + _classCallCheck(this, Decrypter); + + var step = Decrypter.STEP; + var encrypted32 = new Int32Array(encrypted.buffer); + var decrypted = new Uint8Array(encrypted.byteLength); + var i = 0; + + this.asyncStream_ = new _asyncStream2['default'](); + + // split up the encryption job and do the individual chunks asynchronously + this.asyncStream_.push(this.decryptChunk_(encrypted32.subarray(i, i + step), key, initVector, decrypted)); + for (i = step; i < encrypted32.length; i += step) { + initVector = new Uint32Array([ntoh(encrypted32[i - 4]), ntoh(encrypted32[i - 3]), ntoh(encrypted32[i - 2]), ntoh(encrypted32[i - 1])]); + this.asyncStream_.push(this.decryptChunk_(encrypted32.subarray(i, i + step), key, initVector, decrypted)); + } + // invoke the done() callback when everything is finished + this.asyncStream_.push(function () { + // remove pkcs#7 padding from the decrypted bytes + done(null, (0, _pkcs7.unpad)(decrypted)); + }); + } + + // the maximum number of bytes to process at one time + // 4 * 8000; + + _createClass(Decrypter, [{ + key: 'decryptChunk_', + value: function decryptChunk_(encrypted, key, initVector, decrypted) { + return function () { + var bytes = decrypt(encrypted, key, initVector); + + decrypted.set(bytes, encrypted.byteOffset); + }; + } + }]); + + return Decrypter; +})(); + +exports.Decrypter = Decrypter; +Decrypter.STEP = 32000; + +exports['default'] = { + Decrypter: Decrypter, + decrypt: decrypt +}; +},{"./aes":2,"./async-stream":3,"pkcs7":18}],5:[function(require,module,exports){ +/* + * index.js + * + * Index module to easily import the primary components of AES-128 + * decryption. Like this: + * + * ```js + * import {Decrypter, decrypt, AsyncStream} from './src/decrypter'; + * ``` + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _decrypter = require('./decrypter'); + +var _asyncStream = require('./async-stream'); + +var _asyncStream2 = _interopRequireDefault(_asyncStream); + +exports['default'] = { + decrypt: _decrypter.decrypt, + Decrypter: _decrypter.Decrypter, + AsyncStream: _asyncStream2['default'] +}; +module.exports = exports['default']; +},{"./async-stream":3,"./decrypter":4}],6:[function(require,module,exports){ +/** + * Utilities for parsing M3U8 files. If the entire manifest is available, + * `Parser` will create an object representation with enough detail for managing + * playback. `ParseStream` and `LineStream` are lower-level parsing primitives + * that do not assume the entirety of the manifest is ready and expose a + * ReadableStream-like interface. + */ + +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _lineStream = require('./line-stream'); + +var _lineStream2 = _interopRequireDefault(_lineStream); + +var _parseStream = require('./parse-stream'); + +var _parseStream2 = _interopRequireDefault(_parseStream); + +var _parser = require('./parser'); + +var _parser2 = _interopRequireDefault(_parser); + +exports['default'] = { + LineStream: _lineStream2['default'], + ParseStream: _parseStream2['default'], + Parser: _parser2['default'] +}; +module.exports = exports['default']; +},{"./line-stream":7,"./parse-stream":8,"./parser":9}],7:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _stream = require('../stream'); + +var _stream2 = _interopRequireDefault(_stream); + +/** + * A stream that buffers string input and generates a `data` event for each + * line. + */ + +var LineStream = (function (_Stream) { + _inherits(LineStream, _Stream); + + function LineStream() { + _classCallCheck(this, LineStream); + + _get(Object.getPrototypeOf(LineStream.prototype), 'constructor', this).call(this); + this.buffer = ''; + } + + /** + * Add new data to be parsed. + * @param data {string} the text to process + */ + + _createClass(LineStream, [{ + key: 'push', + value: function push(data) { + var nextNewline = undefined; + + this.buffer += data; + nextNewline = this.buffer.indexOf('\n'); + + for (; nextNewline > -1; nextNewline = this.buffer.indexOf('\n')) { + this.trigger('data', this.buffer.substring(0, nextNewline)); + this.buffer = this.buffer.substring(nextNewline + 1); + } + } + }]); + + return LineStream; +})(_stream2['default']); + +exports['default'] = LineStream; +module.exports = exports['default']; +},{"../stream":13}],8:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _stream = require('../stream'); + +var _stream2 = _interopRequireDefault(_stream); + +// "forgiving" attribute list psuedo-grammar: +// attributes -> keyvalue (',' keyvalue)* +// keyvalue -> key '=' value +// key -> [^=]* +// value -> '"' [^"]* '"' | [^,]* +var attributeSeparator = function attributeSeparator() { + var key = '[^=]*'; + var value = '"[^"]*"|[^,]*'; + var keyvalue = '(?:' + key + ')=(?:' + value + ')'; + + return new RegExp('(?:^|,)(' + keyvalue + ')'); +}; + +var parseAttributes = function parseAttributes(attributes) { + // split the string using attributes as the separator + var attrs = attributes.split(attributeSeparator()); + var i = attrs.length; + var result = {}; + var attr = undefined; + + while (i--) { + // filter out unmatched portions of the string + if (attrs[i] === '') { + continue; + } + + // split the key and value + attr = /([^=]*)=(.*)/.exec(attrs[i]).slice(1); + // trim whitespace and remove optional quotes around the value + attr[0] = attr[0].replace(/^\s+|\s+$/g, ''); + attr[1] = attr[1].replace(/^\s+|\s+$/g, ''); + attr[1] = attr[1].replace(/^['"](.*)['"]$/g, '$1'); + result[attr[0]] = attr[1]; + } + return result; +}; + +/** + * A line-level M3U8 parser event stream. It expects to receive input one + * line at a time and performs a context-free parse of its contents. A stream + * interpretation of a manifest can be useful if the manifest is expected to + * be too large to fit comfortably into memory or the entirety of the input + * is not immediately available. Otherwise, it's probably much easier to work + * with a regular `Parser` object. + * + * Produces `data` events with an object that captures the parser's + * interpretation of the input. That object has a property `tag` that is one + * of `uri`, `comment`, or `tag`. URIs only have a single additional + * property, `line`, which captures the entirety of the input without + * interpretation. Comments similarly have a single additional property + * `text` which is the input without the leading `#`. + * + * Tags always have a property `tagType` which is the lower-cased version of + * the M3U8 directive without the `#EXT` or `#EXT-X-` prefix. For instance, + * `#EXT-X-MEDIA-SEQUENCE` becomes `media-sequence` when parsed. Unrecognized + * tags are given the tag type `unknown` and a single additional property + * `data` with the remainder of the input. + */ + +var ParseStream = (function (_Stream) { + _inherits(ParseStream, _Stream); + + function ParseStream() { + _classCallCheck(this, ParseStream); + + _get(Object.getPrototypeOf(ParseStream.prototype), 'constructor', this).call(this); + } + + /** + * Parses an additional line of input. + * @param line {string} a single line of an M3U8 file to parse + */ + + _createClass(ParseStream, [{ + key: 'push', + value: function push(line) { + var match = undefined; + var event = undefined; + + // strip whitespace + line = line.replace(/^[\u0000\s]+|[\u0000\s]+$/g, ''); + if (line.length === 0) { + // ignore empty lines + return; + } + + // URIs + if (line[0] !== '#') { + this.trigger('data', { + type: 'uri', + uri: line + }); + return; + } + + // Comments + if (line.indexOf('#EXT') !== 0) { + this.trigger('data', { + type: 'comment', + text: line.slice(1) + }); + return; + } + + // strip off any carriage returns here so the regex matching + // doesn't have to account for them. + line = line.replace('\r', ''); + + // Tags + match = /^#EXTM3U/.exec(line); + if (match) { + this.trigger('data', { + type: 'tag', + tagType: 'm3u' + }); + return; + } + match = /^#EXTINF:?([0-9\.]*)?,?(.*)?$/.exec(line); + if (match) { + event = { + type: 'tag', + tagType: 'inf' + }; + if (match[1]) { + event.duration = parseFloat(match[1]); + } + if (match[2]) { + event.title = match[2]; + } + this.trigger('data', event); + return; + } + match = /^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(line); + if (match) { + event = { + type: 'tag', + tagType: 'targetduration' + }; + if (match[1]) { + event.duration = parseInt(match[1], 10); + } + this.trigger('data', event); + return; + } + match = /^#ZEN-TOTAL-DURATION:?([0-9.]*)?/.exec(line); + if (match) { + event = { + type: 'tag', + tagType: 'totalduration' + }; + if (match[1]) { + event.duration = parseInt(match[1], 10); + } + this.trigger('data', event); + return; + } + match = /^#EXT-X-VERSION:?([0-9.]*)?/.exec(line); + if (match) { + event = { + type: 'tag', + tagType: 'version' + }; + if (match[1]) { + event.version = parseInt(match[1], 10); + } + this.trigger('data', event); + return; + } + match = /^#EXT-X-MEDIA-SEQUENCE:?(\-?[0-9.]*)?/.exec(line); + if (match) { + event = { + type: 'tag', + tagType: 'media-sequence' + }; + if (match[1]) { + event.number = parseInt(match[1], 10); + } + this.trigger('data', event); + return; + } + match = /^#EXT-X-DISCONTINUITY-SEQUENCE:?(\-?[0-9.]*)?/.exec(line); + if (match) { + event = { + type: 'tag', + tagType: 'discontinuity-sequence' + }; + if (match[1]) { + event.number = parseInt(match[1], 10); + } + this.trigger('data', event); + return; + } + match = /^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(line); + if (match) { + event = { + type: 'tag', + tagType: 'playlist-type' + }; + if (match[1]) { + event.playlistType = match[1]; + } + this.trigger('data', event); + return; + } + match = /^#EXT-X-BYTERANGE:?([0-9.]*)?@?([0-9.]*)?/.exec(line); + if (match) { + event = { + type: 'tag', + tagType: 'byterange' + }; + if (match[1]) { + event.length = parseInt(match[1], 10); + } + if (match[2]) { + event.offset = parseInt(match[2], 10); + } + this.trigger('data', event); + return; + } + match = /^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(line); + if (match) { + event = { + type: 'tag', + tagType: 'allow-cache' + }; + if (match[1]) { + event.allowed = !/NO/.test(match[1]); + } + this.trigger('data', event); + return; + } + match = /^#EXT-X-STREAM-INF:?(.*)$/.exec(line); + if (match) { + event = { + type: 'tag', + tagType: 'stream-inf' + }; + if (match[1]) { + event.attributes = parseAttributes(match[1]); + + if (event.attributes.RESOLUTION) { + var split = event.attributes.RESOLUTION.split('x'); + var resolution = {}; + + if (split[0]) { + resolution.width = parseInt(split[0], 10); + } + if (split[1]) { + resolution.height = parseInt(split[1], 10); + } + event.attributes.RESOLUTION = resolution; + } + if (event.attributes.BANDWIDTH) { + event.attributes.BANDWIDTH = parseInt(event.attributes.BANDWIDTH, 10); + } + if (event.attributes['PROGRAM-ID']) { + event.attributes['PROGRAM-ID'] = parseInt(event.attributes['PROGRAM-ID'], 10); + } + } + this.trigger('data', event); + return; + } + match = /^#EXT-X-ENDLIST/.exec(line); + if (match) { + this.trigger('data', { + type: 'tag', + tagType: 'endlist' + }); + return; + } + match = /^#EXT-X-DISCONTINUITY/.exec(line); + if (match) { + this.trigger('data', { + type: 'tag', + tagType: 'discontinuity' + }); + return; + } + match = /^#EXT-X-KEY:?(.*)$/.exec(line); + if (match) { + event = { + type: 'tag', + tagType: 'key' + }; + if (match[1]) { + event.attributes = parseAttributes(match[1]); + // parse the IV string into a Uint32Array + if (event.attributes.IV) { + if (event.attributes.IV.substring(0, 2) === '0x') { + event.attributes.IV = event.attributes.IV.substring(2); + } + + event.attributes.IV = event.attributes.IV.match(/.{8}/g); + event.attributes.IV[0] = parseInt(event.attributes.IV[0], 16); + event.attributes.IV[1] = parseInt(event.attributes.IV[1], 16); + event.attributes.IV[2] = parseInt(event.attributes.IV[2], 16); + event.attributes.IV[3] = parseInt(event.attributes.IV[3], 16); + event.attributes.IV = new Uint32Array(event.attributes.IV); + } + } + this.trigger('data', event); + return; + } + + // unknown tag type + this.trigger('data', { + type: 'tag', + data: line.slice(4, line.length) + }); + } + }]); + + return ParseStream; +})(_stream2['default']); + +exports['default'] = ParseStream; +module.exports = exports['default']; +},{"../stream":13}],9:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _stream = require('../stream'); + +var _stream2 = _interopRequireDefault(_stream); + +var _lineStream = require('./line-stream'); + +var _lineStream2 = _interopRequireDefault(_lineStream); + +var _parseStream = require('./parse-stream'); + +var _parseStream2 = _interopRequireDefault(_parseStream); + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +/** + * A parser for M3U8 files. The current interpretation of the input is + * exposed as a property `manifest` on parser objects. It's just two lines to + * create and parse a manifest once you have the contents available as a string: + * + * ```js + * var parser = new videojs.m3u8.Parser(); + * parser.push(xhr.responseText); + * ``` + * + * New input can later be applied to update the manifest object by calling + * `push` again. + * + * The parser attempts to create a usable manifest object even if the + * underlying input is somewhat nonsensical. It emits `info` and `warning` + * events during the parse if it encounters input that seems invalid or + * requires some property of the manifest object to be defaulted. + */ + +var Parser = (function (_Stream) { + _inherits(Parser, _Stream); + + function Parser() { + _classCallCheck(this, Parser); + + _get(Object.getPrototypeOf(Parser.prototype), 'constructor', this).call(this); + this.lineStream = new _lineStream2['default'](); + this.parseStream = new _parseStream2['default'](); + this.lineStream.pipe(this.parseStream); + /* eslint-disable consistent-this */ + var self = this; + /* eslint-enable consistent-this */ + var uris = []; + var currentUri = {}; + var _key = undefined; + var noop = function noop() {}; + + // the manifest is empty until the parse stream begins delivering data + this.manifest = { + allowCache: true, + discontinuityStarts: [] + }; + + // update the manifest with the m3u8 entry from the parse stream + this.parseStream.on('data', function (entry) { + ({ + tag: function tag() { + // switch based on the tag type + (({ + 'allow-cache': function allowCache() { + this.manifest.allowCache = entry.allowed; + if (!('allowed' in entry)) { + this.trigger('info', { + message: 'defaulting allowCache to YES' + }); + this.manifest.allowCache = true; + } + }, + byterange: function byterange() { + var byterange = {}; + + if ('length' in entry) { + currentUri.byterange = byterange; + byterange.length = entry.length; + + if (!('offset' in entry)) { + this.trigger('info', { + message: 'defaulting offset to zero' + }); + entry.offset = 0; + } + } + if ('offset' in entry) { + currentUri.byterange = byterange; + byterange.offset = entry.offset; + } + }, + endlist: function endlist() { + this.manifest.endList = true; + }, + inf: function inf() { + if (!('mediaSequence' in this.manifest)) { + this.manifest.mediaSequence = 0; + this.trigger('info', { + message: 'defaulting media sequence to zero' + }); + } + if (!('discontinuitySequence' in this.manifest)) { + this.manifest.discontinuitySequence = 0; + this.trigger('info', { + message: 'defaulting discontinuity sequence to zero' + }); + } + if (entry.duration >= 0) { + currentUri.duration = entry.duration; + } + + this.manifest.segments = uris; + }, + key: function key() { + if (!entry.attributes) { + this.trigger('warn', { + message: 'ignoring key declaration without attribute list' + }); + return; + } + // clear the active encryption key + if (entry.attributes.METHOD === 'NONE') { + _key = null; + return; + } + if (!entry.attributes.URI) { + this.trigger('warn', { + message: 'ignoring key declaration without URI' + }); + return; + } + if (!entry.attributes.METHOD) { + this.trigger('warn', { + message: 'defaulting key method to AES-128' + }); + } + + // setup an encryption key for upcoming segments + _key = { + method: entry.attributes.METHOD || 'AES-128', + uri: entry.attributes.URI + }; + + if (typeof entry.attributes.IV !== 'undefined') { + _key.iv = entry.attributes.IV; + } + }, + 'media-sequence': function mediaSequence() { + if (!isFinite(entry.number)) { + this.trigger('warn', { + message: 'ignoring invalid media sequence: ' + entry.number + }); + return; + } + this.manifest.mediaSequence = entry.number; + }, + 'discontinuity-sequence': function discontinuitySequence() { + if (!isFinite(entry.number)) { + this.trigger('warn', { + message: 'ignoring invalid discontinuity sequence: ' + entry.number + }); + return; + } + this.manifest.discontinuitySequence = entry.number; + }, + 'playlist-type': function playlistType() { + if (!/VOD|EVENT/.test(entry.playlistType)) { + this.trigger('warn', { + message: 'ignoring unknown playlist type: ' + entry.playlist + }); + return; + } + this.manifest.playlistType = entry.playlistType; + }, + 'stream-inf': function streamInf() { + this.manifest.playlists = uris; + + if (!entry.attributes) { + this.trigger('warn', { + message: 'ignoring empty stream-inf attributes' + }); + return; + } + + if (!currentUri.attributes) { + currentUri.attributes = {}; + } + currentUri.attributes = (0, _videoJs.mergeOptions)(currentUri.attributes, entry.attributes); + }, + discontinuity: function discontinuity() { + currentUri.discontinuity = true; + this.manifest.discontinuityStarts.push(uris.length); + }, + targetduration: function targetduration() { + if (!isFinite(entry.duration) || entry.duration < 0) { + this.trigger('warn', { + message: 'ignoring invalid target duration: ' + entry.duration + }); + return; + } + this.manifest.targetDuration = entry.duration; + }, + totalduration: function totalduration() { + if (!isFinite(entry.duration) || entry.duration < 0) { + this.trigger('warn', { + message: 'ignoring invalid total duration: ' + entry.duration + }); + return; + } + this.manifest.totalDuration = entry.duration; + } + })[entry.tagType] || noop).call(self); + }, + uri: function uri() { + currentUri.uri = entry.uri; + uris.push(currentUri); + + // if no explicit duration was declared, use the target duration + if (this.manifest.targetDuration && !('duration' in currentUri)) { + this.trigger('warn', { + message: 'defaulting segment duration to the target duration' + }); + currentUri.duration = this.manifest.targetDuration; + } + // annotate with encryption information, if necessary + if (_key) { + currentUri.key = _key; + } + + // prepare for the next URI + currentUri = {}; + }, + comment: function comment() { + // comments are not important for playback + } + })[entry.type].call(self); + }); + } + + /** + * Parse the input string and update the manifest object. + * @param chunk {string} a potentially incomplete portion of the manifest + */ + + _createClass(Parser, [{ + key: 'push', + value: function push(chunk) { + this.lineStream.push(chunk); + } + + /** + * Flush any remaining input. This can be handy if the last line of an M3U8 + * manifest did not contain a trailing newline but the file has been + * completely received. + */ + }, { + key: 'end', + value: function end() { + // flush any buffered input + this.lineStream.push('\n'); + } + }]); + + return Parser; +})(_stream2['default']); + +exports['default'] = Parser; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../stream":13,"./line-stream":7,"./parse-stream":8}],10:[function(require,module,exports){ +(function (global){ +/** + * playlist-loader + * + * A state machine that manages the loading, caching, and updating of + * M3U8 playlists. + * + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _resolveUrl = require('./resolve-url'); + +var _resolveUrl2 = _interopRequireDefault(_resolveUrl); + +var _xhr = require('./xhr'); + +var _xhr2 = _interopRequireDefault(_xhr); + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _stream = require('./stream'); + +var _stream2 = _interopRequireDefault(_stream); + +var _m3u8 = require('./m3u8'); + +var _m3u82 = _interopRequireDefault(_m3u8); + +/** + * Returns a new master playlist that is the result of merging an + * updated media playlist into the original version. If the + * updated media playlist does not match any of the playlist + * entries in the original master playlist, null is returned. + * @param master {object} a parsed master M3U8 object + * @param media {object} a parsed media M3U8 object + * @return {object} a new object that represents the original + * master playlist with the updated media playlist merged in, or + * null if the merge produced no change. + */ +var updateMaster = function updateMaster(master, media) { + var changed = false; + var result = (0, _videoJs.mergeOptions)(master, {}); + var i = master.playlists.length; + var playlist = undefined; + + while (i--) { + playlist = result.playlists[i]; + if (playlist.uri === media.uri) { + // consider the playlist unchanged if the number of segments + // are equal and the media sequence number is unchanged + if (playlist.segments && media.segments && playlist.segments.length === media.segments.length && playlist.mediaSequence === media.mediaSequence) { + continue; + } + + result.playlists[i] = (0, _videoJs.mergeOptions)(playlist, media); + result.playlists[media.uri] = result.playlists[i]; + + // if the update could overlap existing segment information, + // merge the two lists + if (playlist.segments) { + result.playlists[i].segments = updateSegments(playlist.segments, media.segments, media.mediaSequence - playlist.mediaSequence); + } + changed = true; + } + } + return changed ? result : null; +}; + +/** + * Returns a new array of segments that is the result of merging + * properties from an older list of segments onto an updated + * list. No properties on the updated playlist will be overridden. + * @param original {array} the outdated list of segments + * @param update {array} the updated list of segments + * @param offset {number} (optional) the index of the first update + * segment in the original segment list. For non-live playlists, + * this should always be zero and does not need to be + * specified. For live playlists, it should be the difference + * between the media sequence numbers in the original and updated + * playlists. + * @return a list of merged segment objects + */ +var updateSegments = function updateSegments(original, update, offset) { + var result = update.slice(); + var length = undefined; + var i = undefined; + + offset = offset || 0; + length = Math.min(original.length, update.length + offset); + + for (i = offset; i < length; i++) { + result[i - offset] = (0, _videoJs.mergeOptions)(original[i], result[i - offset]); + } + return result; +}; + +var PlaylistLoader = (function (_Stream) { + _inherits(PlaylistLoader, _Stream); + + function PlaylistLoader(srcUrl, withCredentials) { + _classCallCheck(this, PlaylistLoader); + + _get(Object.getPrototypeOf(PlaylistLoader.prototype), 'constructor', this).call(this); + var loader = this; + var dispose = undefined; + var mediaUpdateTimeout = undefined; + var request = undefined; + var playlistRequestError = undefined; + var haveMetadata = undefined; + + // a flag that disables "expired time"-tracking this setting has + // no effect when not playing a live stream + this.trackExpiredTime_ = false; + + if (!srcUrl) { + throw new Error('A non-empty playlist URL is required'); + } + + playlistRequestError = function (xhr, url, startingState) { + loader.setBandwidth(request || xhr); + + // any in-flight request is now finished + request = null; + + if (startingState) { + loader.state = startingState; + } + + loader.error = { + playlist: loader.master.playlists[url], + status: xhr.status, + message: 'HLS playlist request error at URL: ' + url, + responseText: xhr.responseText, + code: xhr.status >= 500 ? 4 : 2 + }; + loader.trigger('error'); + }; + + // update the playlist loader's state in response to a new or + // updated playlist. + + haveMetadata = function (xhr, url) { + var parser = undefined; + var refreshDelay = undefined; + var update = undefined; + + loader.setBandwidth(request || xhr); + + // any in-flight request is now finished + request = null; + loader.state = 'HAVE_METADATA'; + + parser = new _m3u82['default'].Parser(); + parser.push(xhr.responseText); + parser.end(); + parser.manifest.uri = url; + + // merge this playlist into the master + update = updateMaster(loader.master, parser.manifest); + refreshDelay = (parser.manifest.targetDuration || 10) * 1000; + if (update) { + loader.master = update; + loader.updateMediaPlaylist_(parser.manifest); + } else { + // if the playlist is unchanged since the last reload, + // try again after half the target duration + refreshDelay /= 2; + } + + // refresh live playlists after a target duration passes + if (!loader.media().endList) { + window.clearTimeout(mediaUpdateTimeout); + mediaUpdateTimeout = window.setTimeout(function () { + loader.trigger('mediaupdatetimeout'); + }, refreshDelay); + } + + loader.trigger('loadedplaylist'); + }; + + // initialize the loader state + loader.state = 'HAVE_NOTHING'; + + // track the time that has expired from the live window + // this allows the seekable start range to be calculated even if + // all segments with timing information have expired + this.expired_ = 0; + + // capture the prototype dispose function + dispose = this.dispose; + + /** + * Abort any outstanding work and clean up. + */ + loader.dispose = function () { + if (request) { + request.onreadystatechange = null; + request.abort(); + request = null; + } + window.clearTimeout(mediaUpdateTimeout); + dispose.call(this); + }; + + /** + * When called without any arguments, returns the currently + * active media playlist. When called with a single argument, + * triggers the playlist loader to asynchronously switch to the + * specified media playlist. Calling this method while the + * loader is in the HAVE_NOTHING causes an error to be emitted + * but otherwise has no effect. + * @param playlist (optional) {object} the parsed media playlist + * object to switch to + */ + loader.media = function (playlist) { + var startingState = loader.state; + var mediaChange = undefined; + // getter + if (!playlist) { + return loader.media_; + } + + // setter + if (loader.state === 'HAVE_NOTHING') { + throw new Error('Cannot switch media playlist from ' + loader.state); + } + + // find the playlist object if the target playlist has been + // specified by URI + if (typeof playlist === 'string') { + if (!loader.master.playlists[playlist]) { + throw new Error('Unknown playlist URI: ' + playlist); + } + playlist = loader.master.playlists[playlist]; + } + + mediaChange = !loader.media_ || playlist.uri !== loader.media_.uri; + + // switch to fully loaded playlists immediately + if (loader.master.playlists[playlist.uri].endList) { + // abort outstanding playlist requests + if (request) { + request.onreadystatechange = null; + request.abort(); + request = null; + } + loader.state = 'HAVE_METADATA'; + loader.media_ = playlist; + + // trigger media change if the active media has been updated + if (mediaChange) { + loader.trigger('mediachange'); + } + return; + } + + // switching to the active playlist is a no-op + if (!mediaChange) { + return; + } + + loader.state = 'SWITCHING_MEDIA'; + + // there is already an outstanding playlist request + if (request) { + if ((0, _resolveUrl2['default'])(loader.master.uri, playlist.uri) === request.url) { + // requesting to switch to the same playlist multiple times + // has no effect after the first + return; + } + request.onreadystatechange = null; + request.abort(); + request = null; + } + + // request the new playlist + request = (0, _xhr2['default'])({ + uri: (0, _resolveUrl2['default'])(loader.master.uri, playlist.uri), + withCredentials: withCredentials + }, function (error, request) { + if (error) { + return playlistRequestError(request, playlist.uri, startingState); + } + + haveMetadata(request, playlist.uri); + + // fire loadedmetadata the first time a media playlist is loaded + if (startingState === 'HAVE_MASTER') { + loader.trigger('loadedmetadata'); + } else { + loader.trigger('mediachange'); + } + }); + }; + + loader.setBandwidth = function (xhr) { + loader.bandwidth = xhr.bandwidth; + }; + + // In a live list, don't keep track of the expired time until + // HLS tells us that "first play" has commenced + loader.on('firstplay', function () { + this.trackExpiredTime_ = true; + }); + + // live playlist staleness timeout + loader.on('mediaupdatetimeout', function () { + if (loader.state !== 'HAVE_METADATA') { + // only refresh the media playlist if no other activity is going on + return; + } + + loader.state = 'HAVE_CURRENT_METADATA'; + request = (0, _xhr2['default'])({ + uri: (0, _resolveUrl2['default'])(loader.master.uri, loader.media().uri), + withCredentials: withCredentials + }, function (error, request) { + if (error) { + return playlistRequestError(request, loader.media().uri); + } + haveMetadata(request, loader.media().uri); + }); + }); + + // request the specified URL + request = (0, _xhr2['default'])({ + uri: srcUrl, + withCredentials: withCredentials + }, function (error, req) { + var parser = undefined; + var i = undefined; + + // clear the loader's request reference + request = null; + + if (error) { + loader.error = { + status: req.status, + message: 'HLS playlist request error at URL: ' + srcUrl, + responseText: req.responseText, + // MEDIA_ERR_NETWORK + code: 2 + }; + return loader.trigger('error'); + } + + parser = new _m3u82['default'].Parser(); + parser.push(req.responseText); + parser.end(); + + loader.state = 'HAVE_MASTER'; + + parser.manifest.uri = srcUrl; + + // loaded a master playlist + if (parser.manifest.playlists) { + loader.master = parser.manifest; + + // setup by-URI lookups + i = loader.master.playlists.length; + while (i--) { + loader.master.playlists[loader.master.playlists[i].uri] = loader.master.playlists[i]; + } + + loader.trigger('loadedplaylist'); + if (!request) { + // no media playlist was specifically selected so start + // from the first listed one + loader.media(parser.manifest.playlists[0]); + } + return; + } + + // loaded a media playlist + // infer a master playlist if none was previously requested + loader.master = { + uri: window.location.href, + playlists: [{ + uri: srcUrl + }] + }; + loader.master.playlists[srcUrl] = loader.master.playlists[0]; + haveMetadata(req, srcUrl); + return loader.trigger('loadedmetadata'); + }); + } + + /** + * Update the PlaylistLoader state to reflect the changes in an + * update to the current media playlist. + * @param update {object} the updated media playlist object + */ + + _createClass(PlaylistLoader, [{ + key: 'updateMediaPlaylist_', + value: function updateMediaPlaylist_(update) { + var outdated = undefined; + var i = undefined; + var segment = undefined; + + outdated = this.media_; + this.media_ = this.master.playlists[update.uri]; + + if (!outdated) { + return; + } + + // don't track expired time until this flag is truthy + if (!this.trackExpiredTime_) { + return; + } + + // if the update was the result of a rendition switch do not + // attempt to calculate expired_ since media-sequences need not + // correlate between renditions/variants + if (update.uri !== outdated.uri) { + return; + } + + // try using precise timing from first segment of the updated + // playlist + if (update.segments.length) { + if (update.segments[0].start !== undefined) { + this.expired_ = update.segments[0].start; + return; + } else if (update.segments[0].end !== undefined) { + this.expired_ = update.segments[0].end - update.segments[0].duration; + return; + } + } + + // calculate expired by walking the outdated playlist + i = update.mediaSequence - outdated.mediaSequence - 1; + + for (; i >= 0; i--) { + segment = outdated.segments[i]; + + if (!segment) { + // we missed information on this segment completely between + // playlist updates so we'll have to take an educated guess + // once we begin buffering again, any error we introduce can + // be corrected + this.expired_ += outdated.targetDuration || 10; + continue; + } + + if (segment.end !== undefined) { + this.expired_ = segment.end; + return; + } + if (segment.start !== undefined) { + this.expired_ = segment.start + segment.duration; + return; + } + this.expired_ += segment.duration; + } + } + + /** + * Determine the index of the segment that contains a specified + * playback position in the current media playlist. Early versions + * of the HLS specification require segment durations to be rounded + * to the nearest integer which means it may not be possible to + * determine the correct segment for a playback position if that + * position is within .5 seconds of the segment duration. This + * function will always return the lower of the two possible indices + * in those cases. + * + * @param time {number} The number of seconds since the earliest + * possible position to determine the containing segment for + * @returns {number} The number of the media segment that contains + * that time position. If the specified playback position is outside + * the time range of the current set of media segments, the return + * value will be clamped to the index of the segment containing the + * closest playback position that is currently available. + */ + }, { + key: 'getMediaIndexForTime_', + value: function getMediaIndexForTime_(time) { + var i = undefined; + var segment = undefined; + var originalTime = time; + var numSegments = this.media_.segments.length; + var lastSegment = numSegments - 1; + var startIndex = undefined; + var endIndex = undefined; + var knownStart = undefined; + var knownEnd = undefined; + + if (!this.media_) { + return 0; + } + + // when the requested position is earlier than the current set of + // segments, return the earliest segment index + if (time < 0) { + return 0; + } + + // find segments with known timing information that bound the + // target time + for (i = 0; i < numSegments; i++) { + segment = this.media_.segments[i]; + if (segment.end) { + if (segment.end > time) { + knownEnd = segment.end; + endIndex = i; + break; + } else { + knownStart = segment.end; + startIndex = i + 1; + } + } + } + + // use the bounds we just found and playlist information to + // estimate the segment that contains the time we are looking for + if (startIndex !== undefined) { + // We have a known-start point that is before our desired time so + // walk from that point forwards + time = time - knownStart; + for (i = startIndex; i < (endIndex || numSegments); i++) { + segment = this.media_.segments[i]; + time -= segment.duration; + + if (time < 0) { + return i; + } + } + + if (i >= endIndex) { + // We haven't found a segment but we did hit a known end point + // so fallback to interpolating between the segment index + // based on the known span of the timeline we are dealing with + // and the number of segments inside that span + return startIndex + Math.floor((originalTime - knownStart) / (knownEnd - knownStart) * (endIndex - startIndex)); + } + + // We _still_ haven't found a segment so load the last one + return lastSegment; + } else if (endIndex !== undefined) { + // We _only_ have a known-end point that is after our desired time so + // walk from that point backwards + time = knownEnd - time; + for (i = endIndex; i >= 0; i--) { + segment = this.media_.segments[i]; + time -= segment.duration; + + if (time < 0) { + return i; + } + } + + // We haven't found a segment so load the first one if time is zero + if (time === 0) { + return 0; + } else { + return -1; + } + } else { + // We known nothing so walk from the front of the playlist, + // subtracting durations until we find a segment that contains + // time and return it + time = time - this.expired_; + + if (time < 0) { + return -1; + } + + for (i = 0; i < numSegments; i++) { + segment = this.media_.segments[i]; + time -= segment.duration; + if (time < 0) { + return i; + } + } + // We are out of possible candidates so load the last one... + // The last one is the least likely to overlap a buffer and therefore + // the one most likely to tell us something about the timeline + return lastSegment; + } + } + }]); + + return PlaylistLoader; +})(_stream2['default']); + +exports['default'] = PlaylistLoader; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./m3u8":6,"./resolve-url":12,"./stream":13,"./xhr":14}],11:[function(require,module,exports){ +(function (global){ +/** + * Playlist related utilities. + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var Playlist = { + /** + * The number of segments that are unsafe to start playback at in + * a live stream. Changing this value can cause playback stalls. + * See HTTP Live Streaming, "Playing the Media Playlist File" + * https://tools.ietf.org/html/draft-pantos-http-live-streaming-18#section-6.3.3 + */ + UNSAFE_LIVE_SEGMENTS: 3 +}; + +var backwardDuration = function backwardDuration(playlist, endSequence) { + var result = 0; + var i = endSequence - playlist.mediaSequence; + // if a start time is available for segment immediately following + // the interval, use it + var segment = playlist.segments[i]; + + // Walk backward until we find the latest segment with timeline + // information that is earlier than endSequence + if (segment) { + if (typeof segment.start !== 'undefined') { + return { result: segment.start, precise: true }; + } + if (typeof segment.end !== 'undefined') { + return { + result: segment.end - segment.duration, + precise: true + }; + } + } + while (i--) { + segment = playlist.segments[i]; + if (typeof segment.end !== 'undefined') { + return { result: result + segment.end, precise: true }; + } + + result += segment.duration; + + if (typeof segment.start !== 'undefined') { + return { result: result + segment.start, precise: true }; + } + } + return { result: result, precise: false }; +}; + +var forwardDuration = function forwardDuration(playlist, endSequence) { + var result = 0; + var segment = undefined; + var i = endSequence - playlist.mediaSequence; + // Walk forward until we find the earliest segment with timeline + // information + + for (; i < playlist.segments.length; i++) { + segment = playlist.segments[i]; + if (typeof segment.start !== 'undefined') { + return { + result: segment.start - result, + precise: true + }; + } + + result += segment.duration; + + if (typeof segment.end !== 'undefined') { + return { + result: segment.end - result, + precise: true + }; + } + } + // indicate we didn't find a useful duration estimate + return { result: -1, precise: false }; +}; + +/** + * Calculate the media duration from the segments associated with a + * playlist. The duration of a subinterval of the available segments + * may be calculated by specifying an end index. + * + * @param playlist {object} a media playlist object + * @param endSequence {number} (optional) an exclusive upper boundary + * for the playlist. Defaults to playlist length. + * @return {number} the duration between the first available segment + * and end index. + */ +var intervalDuration = function intervalDuration(playlist, endSequence) { + var backward = undefined; + var forward = undefined; + + if (typeof endSequence === 'undefined') { + endSequence = playlist.mediaSequence + playlist.segments.length; + } + + if (endSequence < playlist.mediaSequence) { + return 0; + } + + // do a backward walk to estimate the duration + backward = backwardDuration(playlist, endSequence); + if (backward.precise) { + // if we were able to base our duration estimate on timing + // information provided directly from the Media Source, return + // it + return backward.result; + } + + // walk forward to see if a precise duration estimate can be made + // that way + forward = forwardDuration(playlist, endSequence); + if (forward.precise) { + // we found a segment that has been buffered and so it's + // position is known precisely + return forward.result; + } + + // return the less-precise, playlist-based duration estimate + return backward.result; +}; + +/** + * Calculates the duration of a playlist. If a start and end index + * are specified, the duration will be for the subset of the media + * timeline between those two indices. The total duration for live + * playlists is always Infinity. + * @param playlist {object} a media playlist object + * @param endSequence {number} (optional) an exclusive upper + * boundary for the playlist. Defaults to the playlist media + * sequence number plus its length. + * @param includeTrailingTime {boolean} (optional) if false, the + * interval between the final segment and the subsequent segment + * will not be included in the result + * @return {number} the duration between the start index and end + * index. + */ +var duration = function duration(playlist, endSequence, includeTrailingTime) { + if (!playlist) { + return 0; + } + + if (typeof includeTrailingTime === 'undefined') { + includeTrailingTime = true; + } + + // if a slice of the total duration is not requested, use + // playlist-level duration indicators when they're present + if (typeof endSequence === 'undefined') { + // if present, use the duration specified in the playlist + if (playlist.totalDuration) { + return playlist.totalDuration; + } + + // duration should be Infinity for live playlists + if (!playlist.endList) { + return window.Infinity; + } + } + + // calculate the total duration based on the segment durations + return intervalDuration(playlist, endSequence, includeTrailingTime); +}; + +exports.duration = duration; +/** + * Calculates the interval of time that is currently seekable in a + * playlist. The returned time ranges are relative to the earliest + * moment in the specified playlist that is still available. A full + * seekable implementation for live streams would need to offset + * these values by the duration of content that has expired from the + * stream. + * @param playlist {object} a media playlist object + * @return {TimeRanges} the periods of time that are valid targets + * for seeking + */ +var seekable = function seekable(playlist) { + var start = undefined; + var end = undefined; + + // without segments, there are no seekable ranges + if (!playlist.segments) { + return (0, _videoJs.createTimeRange)(); + } + // when the playlist is complete, the entire duration is seekable + if (playlist.endList) { + return (0, _videoJs.createTimeRange)(0, duration(playlist)); + } + + // live playlists should not expose three segment durations worth + // of content from the end of the playlist + // https://tools.ietf.org/html/draft-pantos-http-live-streaming-16#section-6.3.3 + start = intervalDuration(playlist, playlist.mediaSequence); + end = intervalDuration(playlist, playlist.mediaSequence + Math.max(0, playlist.segments.length - Playlist.UNSAFE_LIVE_SEGMENTS)); + return (0, _videoJs.createTimeRange)(start, end); +}; + +exports.seekable = seekable; +Playlist.duration = duration; +Playlist.seekable = seekable; + +// exports +exports['default'] = Playlist; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],12:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _globalDocument = require('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); + +/* eslint-disable max-len */ +/** + * Constructs a new URI by interpreting a path relative to another + * URI. + * @param basePath {string} a relative or absolute URI + * @param path {string} a path part to combine with the base + * @return {string} a URI that is equivalent to composing `base` + * with `path` + * @see http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue + */ +/* eslint-enable max-len */ +var resolveUrl = function resolveUrl(basePath, path) { + // use the base element to get the browser to handle URI resolution + var oldBase = _globalDocument2['default'].querySelector('base'); + var docHead = _globalDocument2['default'].querySelector('head'); + var a = _globalDocument2['default'].createElement('a'); + var base = oldBase; + var oldHref = undefined; + var result = undefined; + + // prep the document + if (oldBase) { + oldHref = oldBase.href; + } else { + base = docHead.appendChild(_globalDocument2['default'].createElement('base')); + } + + base.href = basePath; + a.href = path; + result = a.href; + + // clean up + if (oldBase) { + oldBase.href = oldHref; + } else { + docHead.removeChild(base); + } + return result; +}; + +exports['default'] = resolveUrl; +module.exports = exports['default']; +},{"global/document":16}],13:[function(require,module,exports){ +/** + * A lightweight readable stream implemention that handles event dispatching. + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +var Stream = (function () { + function Stream() { + _classCallCheck(this, Stream); + + this.listeners = {}; + } + + /** + * Add a listener for a specified event type. + * @param type {string} the event name + * @param listener {function} the callback to be invoked when an event of + * the specified type occurs + */ + + _createClass(Stream, [{ + key: 'on', + value: function on(type, listener) { + if (!this.listeners[type]) { + this.listeners[type] = []; + } + this.listeners[type].push(listener); + } + + /** + * Remove a listener for a specified event type. + * @param type {string} the event name + * @param listener {function} a function previously registered for this + * type of event through `on` + */ + }, { + key: 'off', + value: function off(type, listener) { + var index = undefined; + + if (!this.listeners[type]) { + return false; + } + index = this.listeners[type].indexOf(listener); + this.listeners[type].splice(index, 1); + return index > -1; + } + + /** + * Trigger an event of the specified type on this stream. Any additional + * arguments to this function are passed as parameters to event listeners. + * @param type {string} the event name + */ + }, { + key: 'trigger', + value: function trigger(type) { + var callbacks = undefined; + var i = undefined; + var length = undefined; + var args = undefined; + + callbacks = this.listeners[type]; + if (!callbacks) { + return; + } + // Slicing the arguments on every invocation of this method + // can add a significant amount of overhead. Avoid the + // intermediate object creation for the common case of a + // single callback argument + if (arguments.length === 2) { + length = callbacks.length; + for (i = 0; i < length; ++i) { + callbacks[i].call(this, arguments[1]); + } + } else { + args = Array.prototype.slice.call(arguments, 1); + length = callbacks.length; + for (i = 0; i < length; ++i) { + callbacks[i].apply(this, args); + } + } + } + + /** + * Destroys the stream and cleans up. + */ + }, { + key: 'dispose', + value: function dispose() { + this.listeners = {}; + } + + /** + * Forwards all `data` events on this stream to the destination stream. The + * destination stream should provide a method `push` to receive the data + * events as they arrive. + * @param destination {stream} the stream that will receive all `data` events + * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options + */ + }, { + key: 'pipe', + value: function pipe(destination) { + this.on('data', function (data) { + destination.push(data); + }); + } + }]); + + return Stream; +})(); + +exports['default'] = Stream; +module.exports = exports['default']; +},{}],14:[function(require,module,exports){ +(function (global){ +/** + * A wrapper for videojs.xhr that tracks bandwidth. + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var xhr = function xhr(options, callback) { + // Add a default timeout for all hls requests + options = (0, _videoJs.mergeOptions)({ + timeout: 45e3 + }, options); + + var request = (0, _videoJs.xhr)(options, function (error, response) { + if (!error && request.response) { + request.responseTime = new Date().getTime(); + request.roundTripTime = request.responseTime - request.requestTime; + request.bytesReceived = request.response.byteLength || request.response.length; + if (!request.bandwidth) { + request.bandwidth = Math.floor(request.bytesReceived / request.roundTripTime * 8 * 1000); + } + } + + // videojs.xhr now uses a specific code + // on the error object to signal that a request has + // timed out errors of setting a boolean on the request object + if (error || request.timedout) { + request.timedout = request.timedout || error.code === 'ETIMEDOUT'; + } else { + request.timedout = false; + } + + // videojs.xhr no longer considers status codes outside of 200 and 0 + // (for file uris) to be errors, but the old XHR did, so emulate that + // behavior. Status 206 may be used in response to byterange requests. + if (!error && response.statusCode !== 200 && response.statusCode !== 206 && response.statusCode !== 0) { + error = new Error('XHR Failed with a response of: ' + (request && (request.response || request.responseText))); + } + + callback(error, request); + }); + + request.requestTime = new Date().getTime(); + return request; +}; + +exports['default'] = xhr; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],15:[function(require,module,exports){ + +},{}],16:[function(require,module,exports){ +(function (global){ +var topLevel = typeof global !== 'undefined' ? global : + typeof window !== 'undefined' ? window : {} +var minDoc = require('min-document'); + +if (typeof document !== 'undefined') { + module.exports = document; +} else { + var doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4']; + + if (!doccy) { + doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc; + } + + module.exports = doccy; +} + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"min-document":15}],17:[function(require,module,exports){ +/* + * pkcs7.pad + * https://github.com/brightcove/pkcs7 + * + * Copyright (c) 2014 Brightcove + * Licensed under the apache2 license. + */ + +'use strict'; + +var PADDING; + +/** + * Returns a new Uint8Array that is padded with PKCS#7 padding. + * @param plaintext {Uint8Array} the input bytes before encryption + * @return {Uint8Array} the padded bytes + * @see http://tools.ietf.org/html/rfc5652 + */ +module.exports = function pad(plaintext) { + var padding = PADDING[(plaintext.byteLength % 16) || 0], + result = new Uint8Array(plaintext.byteLength + padding.length); + result.set(plaintext); + result.set(padding, plaintext.byteLength); + return result; +}; + +// pre-define the padding values +PADDING = [ + [16, 16, 16, 16, + 16, 16, 16, 16, + 16, 16, 16, 16, + 16, 16, 16, 16], + + [15, 15, 15, 15, + 15, 15, 15, 15, + 15, 15, 15, 15, + 15, 15, 15], + + [14, 14, 14, 14, + 14, 14, 14, 14, + 14, 14, 14, 14, + 14, 14], + + [13, 13, 13, 13, + 13, 13, 13, 13, + 13, 13, 13, 13, + 13], + + [12, 12, 12, 12, + 12, 12, 12, 12, + 12, 12, 12, 12], + + [11, 11, 11, 11, + 11, 11, 11, 11, + 11, 11, 11], + + [10, 10, 10, 10, + 10, 10, 10, 10, + 10, 10], + + [9, 9, 9, 9, + 9, 9, 9, 9, + 9], + + [8, 8, 8, 8, + 8, 8, 8, 8], + + [7, 7, 7, 7, + 7, 7, 7], + + [6, 6, 6, 6, + 6, 6], + + [5, 5, 5, 5, + 5], + + [4, 4, 4, 4], + + [3, 3, 3], + + [2, 2], + + [1] +]; + +},{}],18:[function(require,module,exports){ +/* + * pkcs7 + * https://github.com/brightcove/pkcs7 + * + * Copyright (c) 2014 Brightcove + * Licensed under the apache2 license. + */ + +'use strict'; + +exports.pad = require('./pad.js'); +exports.unpad = require('./unpad.js'); + +},{"./pad.js":17,"./unpad.js":19}],19:[function(require,module,exports){ +/* + * pkcs7.unpad + * https://github.com/brightcove/pkcs7 + * + * Copyright (c) 2014 Brightcove + * Licensed under the apache2 license. + */ + +'use strict'; + +/** + * Returns the subarray of a Uint8Array without PKCS#7 padding. + * @param padded {Uint8Array} unencrypted bytes that have been padded + * @return {Uint8Array} the unpadded bytes + * @see http://tools.ietf.org/html/rfc5652 + */ +module.exports = function unpad(padded) { + return padded.subarray(0, padded.byteLength - padded[padded.byteLength - 1]); +}; + +},{}],20:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var deprecateOldCue = function deprecateOldCue(cue) { + Object.defineProperties(cue.frame, { + id: { + get: function get() { + _videoJs2['default'].log.warn('cue.frame.id is deprecated. Use cue.value.key instead.'); + return cue.value.key; + } + }, + value: { + get: function get() { + _videoJs2['default'].log.warn('cue.frame.value is deprecated. Use cue.value.data instead.'); + return cue.value.data; + } + }, + privateData: { + get: function get() { + _videoJs2['default'].log.warn('cue.frame.privateData is deprecated. Use cue.value.data instead.'); + return cue.value.data; + } + } + }); +}; + +var addTextTrackData = function addTextTrackData(sourceHandler, captionArray, metadataArray) { + var Cue = window.WebKitDataCue || window.VTTCue; + + if (captionArray) { + captionArray.forEach(function (caption) { + this.inbandTextTrack_.addCue(new Cue(caption.startTime + this.timestampOffset, caption.endTime + this.timestampOffset, caption.text)); + }, sourceHandler); + } + + if (metadataArray) { + metadataArray.forEach(function (metadata) { + var time = metadata.cueTime + this.timestampOffset; + + metadata.frames.forEach(function (frame) { + var cue = new Cue(time, time, frame.value || frame.url || frame.data || ''); + + cue.frame = frame; + cue.value = frame; + deprecateOldCue(cue); + this.metadataTrack_.addCue(cue); + }, this); + }, sourceHandler); + } +}; + +exports['default'] = addTextTrackData; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],21:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); +var createTextTracksIfNecessary = function createTextTracksIfNecessary(sourceBuffer, mediaSource, segment) { + // create an in-band caption track if one is present in the segment + if (segment.captions && segment.captions.length && !sourceBuffer.inbandTextTrack_) { + sourceBuffer.inbandTextTrack_ = mediaSource.player_.addTextTrack('captions', 'cc1'); + } + + if (segment.metadata && segment.metadata.length && !sourceBuffer.metadataTrack_) { + sourceBuffer.metadataTrack_ = mediaSource.player_.addTextTrack('metadata', 'Timed Metadata'); + sourceBuffer.metadataTrack_.inBandMetadataTrackDispatchType = segment.metadata.dispatchType; + } +}; + +exports['default'] = createTextTracksIfNecessary; +module.exports = exports['default']; +},{}],22:[function(require,module,exports){ +/** + * The maximum size in bytes for append operations to the video.js + * SWF. Calling through to Flash blocks and can be expensive so + * tuning this parameter may improve playback on slower + * systems. There are two factors to consider: + * - Each interaction with the SWF must be quick or you risk dropping + * video frames. To maintain 60fps for the rest of the page, each append + * must not take longer than 16ms. Given the likelihood that the page + * will be executing more javascript than just playback, you probably + * want to aim for less than 8ms. We aim for just 4ms. + * - Bigger appends significantly increase throughput. The total number of + * bytes over time delivered to the SWF must exceed the video bitrate or + * playback will stall. + * + * We adaptively tune the size of appends to give the best throughput + * possible given the performance of the system. To do that we try to append + * as much as possible in TIME_PER_TICK and while tuning the size of appends + * dynamically so that we only append about 4-times in that 4ms span. + * + * The reason we try to keep the number of appends around four is due to + * externalities such as Flash load and garbage collection that are highly + * variable and having 4 iterations allows us to exit the loop early if + * an iteration takes longer than expected. + */ + +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var flashConstants = { + TIME_BETWEEN_TICKS: Math.floor(1000 / 480), + TIME_PER_TICK: Math.floor(1000 / 240), + // 1kb + BYTES_PER_CHUNK: 1 * 1024, + MIN_CHUNK: 1024, + MAX_CHUNK: 1024 * 1024 +}; + +exports["default"] = flashConstants; +module.exports = exports["default"]; +},{}],23:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var _flashSourceBuffer = require('./flash-source-buffer'); + +var _flashSourceBuffer2 = _interopRequireDefault(_flashSourceBuffer); + +var _flashConstants = require('./flash-constants'); + +var _flashConstants2 = _interopRequireDefault(_flashConstants); + +var FlashMediaSource = (function (_videojs$EventTarget) { + _inherits(FlashMediaSource, _videojs$EventTarget); + + function FlashMediaSource() { + var _this = this; + + _classCallCheck(this, FlashMediaSource); + + _get(Object.getPrototypeOf(FlashMediaSource.prototype), 'constructor', this).call(this); + this.sourceBuffers = []; + this.readyState = 'closed'; + + this.on(['sourceopen', 'webkitsourceopen'], function (event) { + // find the swf where we will push media data + _this.swfObj = document.getElementById(event.swfId); + _this.player_ = (0, _videoJs2['default'])(_this.swfObj.parentNode); + _this.tech_ = _this.swfObj.tech; + _this.readyState = 'open'; + + _this.tech_.on('seeking', function () { + var i = _this.sourceBuffers.length; + + while (i--) { + _this.sourceBuffers[i].abort(); + } + }); + + // trigger load events + if (_this.swfObj) { + _this.swfObj.vjs_load(); + } + }); + } + + /** + * Set or return the presentation duration. + * @param value {double} the duration of the media in seconds + * @param {double} the current presentation duration + * @see http://www.w3.org/TR/media-source/#widl-MediaSource-duration + */ + + _createClass(FlashMediaSource, [{ + key: 'addSeekableRange_', + value: function addSeekableRange_() {} + // intentional no-op + + // create a new source buffer to receive a type of media data + + }, { + key: 'addSourceBuffer', + value: function addSourceBuffer(type) { + var sourceBuffer = undefined; + + // if this is an FLV type, we'll push data to flash + if (type.indexOf('video/mp2t') === 0) { + // Flash source buffers + sourceBuffer = new _flashSourceBuffer2['default'](this); + } else { + throw new Error('NotSupportedError (Video.js)'); + } + + this.sourceBuffers.push(sourceBuffer); + return sourceBuffer; + } + + /* eslint-disable max-len */ + /** + * Signals the end of the stream. + * @param error {string} (optional) Signals that a playback error + * has occurred. If specified, it must be either "network" or + * "decode". + * @see https://w3c.github.io/media-source/#widl-MediaSource-endOfStream-void-EndOfStreamError-error + */ + /* eslint-enable max-len */ + }, { + key: 'endOfStream', + value: function endOfStream(error) { + if (error === 'network') { + // MEDIA_ERR_NETWORK + this.tech_.error(2); + } else if (error === 'decode') { + // MEDIA_ERR_DECODE + this.tech_.error(3); + } + if (this.readyState !== 'ended') { + this.readyState = 'ended'; + this.swfObj.vjs_endOfStream(); + } + } + }]); + + return FlashMediaSource; +})(_videoJs2['default'].EventTarget); + +exports['default'] = FlashMediaSource; +try { + Object.defineProperty(FlashMediaSource.prototype, 'duration', { + get: function get() { + if (!this.swfObj) { + return NaN; + } + // get the current duration from the SWF + return this.swfObj.vjs_getProperty('duration'); + }, + set: function set(value) { + var i = undefined; + var oldDuration = this.swfObj.vjs_getProperty('duration'); + + this.swfObj.vjs_setProperty('duration', value); + + if (value < oldDuration) { + // In MSE, this triggers the range removal algorithm which causes + // an update to occur + for (i = 0; i < this.sourceBuffers.length; i++) { + this.sourceBuffers[i].remove(value, oldDuration); + } + } + + return value; + } + }); +} catch (e) { + // IE8 throws if defineProperty is called on a non-DOM node. We + // don't support IE8 but we shouldn't throw an error if loaded + // there. + FlashMediaSource.prototype.duration = NaN; +} + +for (var property in _flashConstants2['default']) { + FlashMediaSource[property] = _flashConstants2['default'][property]; +} +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./flash-constants":22,"./flash-source-buffer":24}],24:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var _muxJs = require('mux.js'); + +var _muxJs2 = _interopRequireDefault(_muxJs); + +var _removeCuesFromTrack = require('./remove-cues-from-track'); + +var _removeCuesFromTrack2 = _interopRequireDefault(_removeCuesFromTrack); + +var _createTextTracksIfNecessary = require('./create-text-tracks-if-necessary'); + +var _createTextTracksIfNecessary2 = _interopRequireDefault(_createTextTracksIfNecessary); + +var _addTextTrackData = require('./add-text-track-data'); + +var _addTextTrackData2 = _interopRequireDefault(_addTextTrackData); + +var _flashConstants = require('./flash-constants'); + +var _flashConstants2 = _interopRequireDefault(_flashConstants); + +var scheduleTick = function scheduleTick(func) { + // Chrome doesn't invoke requestAnimationFrame callbacks + // in background tabs, so use setTimeout. + window.setTimeout(func, _flashConstants2['default'].TIME_BETWEEN_TICKS); +}; + +// Source Buffer + +var FlashSourceBuffer = (function (_videojs$EventTarget) { + _inherits(FlashSourceBuffer, _videojs$EventTarget); + + function FlashSourceBuffer(mediaSource) { + var _this = this; + + _classCallCheck(this, FlashSourceBuffer); + + _get(Object.getPrototypeOf(FlashSourceBuffer.prototype), 'constructor', this).call(this); + var encodedHeader = undefined; + + // Start off using the globally defined value but refine + // as we append data into flash + this.chunkSize_ = _flashConstants2['default'].BYTES_PER_CHUNK; + + // byte arrays queued to be appended + this.buffer_ = []; + + // the total number of queued bytes + this.bufferSize_ = 0; + + // to be able to determine the correct position to seek to, we + // need to retain information about the mapping between the + // media timeline and PTS values + this.basePtsOffset_ = NaN; + + this.mediaSource = mediaSource; + + // indicates whether the asynchronous continuation of an operation + // is still being processed + // see https://w3c.github.io/media-source/#widl-SourceBuffer-updating + this.updating = false; + this.timestampOffset_ = 0; + + // TS to FLV transmuxer + this.segmentParser_ = new _muxJs2['default'].flv.Transmuxer(); + this.segmentParser_.on('data', this.receiveBuffer_.bind(this)); + encodedHeader = window.btoa(String.fromCharCode.apply(null, Array.prototype.slice.call(this.segmentParser_.getFlvHeader()))); + this.mediaSource.swfObj.vjs_appendBuffer(encodedHeader); + + Object.defineProperty(this, 'timestampOffset', { + get: function get() { + return this.timestampOffset_; + }, + set: function set(val) { + if (typeof val === 'number' && val >= 0) { + this.timestampOffset_ = val; + this.segmentParser_ = new _muxJs2['default'].flv.Transmuxer(); + this.segmentParser_.on('data', this.receiveBuffer_.bind(this)); + // We have to tell flash to expect a discontinuity + this.mediaSource.swfObj.vjs_discontinuity(); + // the media <-> PTS mapping must be re-established after + // the discontinuity + this.basePtsOffset_ = NaN; + } + } + }); + + Object.defineProperty(this, 'buffered', { + get: function get() { + return _videoJs2['default'].createTimeRanges(this.mediaSource.swfObj.vjs_getProperty('buffered')); + } + }); + + // On a seek we remove all text track data since flash has no concept + // of a buffered-range and everything else is reset on seek + this.mediaSource.player_.on('seeked', function () { + (0, _removeCuesFromTrack2['default'])(0, Infinity, _this.metadataTrack_); + (0, _removeCuesFromTrack2['default'])(0, Infinity, _this.inbandTextTrack_); + }); + } + + // accept video data and pass to the video (swf) object + + _createClass(FlashSourceBuffer, [{ + key: 'appendBuffer', + value: function appendBuffer(bytes) { + var _this2 = this; + + var error = undefined; + var chunk = 512 * 1024; + var i = 0; + + if (this.updating) { + error = new Error('SourceBuffer.append() cannot be called ' + 'while an update is in progress'); + error.name = 'InvalidStateError'; + error.code = 11; + throw error; + } + + this.updating = true; + this.mediaSource.readyState = 'open'; + this.trigger({ type: 'update' }); + + // this is here to use recursion + var chunkInData = function chunkInData() { + _this2.segmentParser_.push(bytes.subarray(i, i + chunk)); + i += chunk; + if (i < bytes.byteLength) { + scheduleTick(chunkInData); + } else { + scheduleTick(_this2.segmentParser_.flush.bind(_this2.segmentParser_)); + } + }; + + chunkInData(); + } + + // reset the parser and remove any data queued to be sent to the swf + }, { + key: 'abort', + value: function abort() { + this.buffer_ = []; + this.bufferSize_ = 0; + this.mediaSource.swfObj.vjs_abort(); + + // report any outstanding updates have ended + if (this.updating) { + this.updating = false; + this.trigger({ type: 'updateend' }); + } + } + + // Flash cannot remove ranges already buffered in the NetStream + // but seeking clears the buffer entirely. For most purposes, + // having this operation act as a no-op is acceptable. + }, { + key: 'remove', + value: function remove(start, end) { + (0, _removeCuesFromTrack2['default'])(start, end, this.metadataTrack_); + (0, _removeCuesFromTrack2['default'])(start, end, this.inbandTextTrack_); + this.trigger({ type: 'update' }); + this.trigger({ type: 'updateend' }); + } + }, { + key: 'receiveBuffer_', + value: function receiveBuffer_(segment) { + var _this3 = this; + + // create an in-band caption track if one is present in the segment + (0, _createTextTracksIfNecessary2['default'])(this, this.mediaSource, segment); + (0, _addTextTrackData2['default'])(this, segment.captions, segment.metadata); + + // Do this asynchronously since convertTagsToData_ can be time consuming + scheduleTick(function () { + var flvBytes = _this3.convertTagsToData_(segment); + + if (_this3.buffer_.length === 0) { + scheduleTick(_this3.processBuffer_.bind(_this3)); + } + + if (flvBytes) { + _this3.buffer_.push(flvBytes); + _this3.bufferSize_ += flvBytes.byteLength; + } + }); + } + + // append a portion of the current buffer to the SWF + }, { + key: 'processBuffer_', + value: function processBuffer_() { + var chunk = undefined; + var i = undefined; + var length = undefined; + var binary = undefined; + var b64str = undefined; + var startByte = 0; + var appendIterations = 0; + var startTime = +new Date(); + var appendTime = undefined; + + if (!this.buffer_.length) { + if (this.updating !== false) { + this.updating = false; + this.trigger({ type: 'updateend' }); + } + // do nothing if the buffer is empty + return; + } + + do { + appendIterations++; + // concatenate appends up to the max append size + chunk = this.buffer_[0].subarray(startByte, startByte + this.chunkSize_); + + // requeue any bytes that won't make it this round + if (chunk.byteLength < this.chunkSize_ || this.buffer_[0].byteLength === startByte + this.chunkSize_) { + startByte = 0; + this.buffer_.shift(); + } else { + startByte += this.chunkSize_; + } + + this.bufferSize_ -= chunk.byteLength; + + // base64 encode the bytes + binary = ''; + length = chunk.byteLength; + for (i = 0; i < length; i++) { + binary += String.fromCharCode(chunk[i]); + } + b64str = window.btoa(binary); + + // bypass normal ExternalInterface calls and pass xml directly + // IE can be slow by default + this.mediaSource.swfObj.CallFunction('<invoke name="vjs_appendBuffer"' + 'returntype="javascript"><arguments><string>' + b64str + '</string></arguments></invoke>'); + appendTime = new Date() - startTime; + } while (this.buffer_.length && appendTime < _flashConstants2['default'].TIME_PER_TICK); + + if (this.buffer_.length && startByte) { + this.buffer_[0] = this.buffer_[0].subarray(startByte); + } + + if (appendTime >= _flashConstants2['default'].TIME_PER_TICK) { + // We want to target 4 iterations per time-slot so that gives us + // room to adjust to changes in Flash load and other externalities + // such as garbage collection while still maximizing throughput + this.chunkSize_ = Math.floor(this.chunkSize_ * (appendIterations / 4)); + } + + // We also make sure that the chunk-size doesn't drop below 1KB or + // go above 1MB as a sanity check + this.chunkSize_ = Math.max(_flashConstants2['default'].MIN_CHUNK, Math.min(this.chunkSize_, _flashConstants2['default'].MAX_CHUNK)); + + // schedule another append if necessary + if (this.bufferSize_ !== 0) { + scheduleTick(this.processBuffer_.bind(this)); + } else { + this.updating = false; + this.trigger({ type: 'updateend' }); + } + } + + // Turns an array of flv tags into a Uint8Array representing the + // flv data. Also removes any tags that are before the current + // time so that playback begins at or slightly after the right + // place on a seek + }, { + key: 'convertTagsToData_', + value: function convertTagsToData_(segmentData) { + var segmentByteLength = 0; + var tech = this.mediaSource.tech_; + var targetPts = 0; + var i = undefined; + var j = undefined; + var segment = undefined; + var filteredTags = []; + var tags = this.getOrderedTags_(segmentData); + + // Establish the media timeline to PTS translation if we don't + // have one already + if (isNaN(this.basePtsOffset_) && tags.length) { + this.basePtsOffset_ = tags[0].pts; + } + + // Trim any tags that are before the end of the end of + // the current buffer + if (tech.buffered().length) { + targetPts = tech.buffered().end(0) - this.timestampOffset; + } + // Trim to currentTime if it's ahead of buffered or buffered doesn't exist + targetPts = Math.max(targetPts, tech.currentTime() - this.timestampOffset); + + // PTS values are represented in milliseconds + targetPts *= 1e3; + targetPts += this.basePtsOffset_; + + // skip tags with a presentation time less than the seek target + for (i = 0; i < tags.length; i++) { + if (tags[i].pts >= targetPts) { + filteredTags.push(tags[i]); + } + } + + if (filteredTags.length === 0) { + return; + } + + // concatenate the bytes into a single segment + for (i = 0; i < filteredTags.length; i++) { + segmentByteLength += filteredTags[i].bytes.byteLength; + } + segment = new Uint8Array(segmentByteLength); + for (i = 0, j = 0; i < filteredTags.length; i++) { + segment.set(filteredTags[i].bytes, j); + j += filteredTags[i].bytes.byteLength; + } + + return segment; + } + + // assemble the FLV tags in decoder order + }, { + key: 'getOrderedTags_', + value: function getOrderedTags_(segmentData) { + var videoTags = segmentData.tags.videoTags; + var audioTags = segmentData.tags.audioTags; + var tag = undefined; + var tags = []; + + while (videoTags.length || audioTags.length) { + if (!videoTags.length) { + // only audio tags remain + tag = audioTags.shift(); + } else if (!audioTags.length) { + // only video tags remain + tag = videoTags.shift(); + } else if (audioTags[0].dts < videoTags[0].dts) { + // audio should be decoded next + tag = audioTags.shift(); + } else { + // video should be decoded next + tag = videoTags.shift(); + } + + tags.push(tag.finalize()); + } + + return tags; + } + }]); + + return FlashSourceBuffer; +})(_videoJs2['default'].EventTarget); + +exports['default'] = FlashSourceBuffer; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./add-text-track-data":20,"./create-text-tracks-if-necessary":21,"./flash-constants":22,"./remove-cues-from-track":26,"mux.js":37}],25:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var _virtualSourceBuffer = require('./virtual-source-buffer'); + +var _virtualSourceBuffer2 = _interopRequireDefault(_virtualSourceBuffer); + +// Replace the old apple-style `avc1.<dd>.<dd>` codec string with the standard +// `avc1.<hhhhhh>` +var translateLegacyCodecs = function translateLegacyCodecs(codecs) { + return codecs.replace(/avc1\.(\d+)\.(\d+)/i, function (orig, profile, avcLevel) { + var profileHex = ('00' + Number(profile).toString(16)).slice(-2); + var avcLevelHex = ('00' + Number(avcLevel).toString(16)).slice(-2); + + return 'avc1.' + profileHex + '00' + avcLevelHex; + }); +}; + +var HtmlMediaSource = (function (_videojs$EventTarget) { + _inherits(HtmlMediaSource, _videojs$EventTarget); + + function HtmlMediaSource() { + _classCallCheck(this, HtmlMediaSource); + + _get(Object.getPrototypeOf(HtmlMediaSource.prototype), 'constructor', this).call(this, _videoJs2['default'].EventTarget); + /* eslint-disable consistent-this */ + var self = this; + /* eslint-enable consistent-this */ + var property = undefined; + + this.mediaSource_ = new window.MediaSource(); + // delegate to the native MediaSource's methods by default + for (property in this.mediaSource_) { + if (!(property in HtmlMediaSource.prototype) && typeof this.mediaSource_[property] === 'function') { + this[property] = this.mediaSource_[property].bind(this.mediaSource_); + } + } + + // emulate `duration` and `seekable` until seeking can be + // handled uniformly for live streams + // see https://github.com/w3c/media-source/issues/5 + this.duration_ = NaN; + Object.defineProperty(this, 'duration', { + get: function get() { + if (self.duration_ === Infinity) { + return self.duration_; + } + return self.mediaSource_.duration; + }, + set: function set(duration) { + self.duration_ = duration; + if (duration !== Infinity) { + self.mediaSource_.duration = duration; + return; + } + } + }); + Object.defineProperty(this, 'seekable', { + get: function get() { + if (this.duration_ === Infinity) { + return _videoJs2['default'].createTimeRanges([[0, self.mediaSource_.duration]]); + } + return self.mediaSource_.seekable; + } + }); + + Object.defineProperty(this, 'readyState', { + get: function get() { + return self.mediaSource_.readyState; + } + }); + + // the list of virtual and native SourceBuffers created by this + // MediaSource + this.sourceBuffers = []; + + // Re-emit MediaSource events on the polyfill + ['sourceopen', 'sourceclose', 'sourceended'].forEach(function (eventName) { + this.mediaSource_.addEventListener(eventName, this.trigger.bind(this)); + }, this); + + // capture the associated player when the MediaSource is + // successfully attached + this.on('sourceopen', function (event) { + var video = document.querySelector('[src="' + self.url_ + '"]'); + + if (!video) { + return; + } + + self.player_ = (0, _videoJs2['default'])(video.parentNode); + }); + + // explicitly terminate any WebWorkers that were created + // by SourceHandlers + this.on('sourceclose', function (event) { + this.sourceBuffers.forEach(function (sourceBuffer) { + if (sourceBuffer.transmuxer_) { + sourceBuffer.transmuxer_.terminate(); + } + }); + + this.sourceBuffers.length = 0; + }); + } + + _createClass(HtmlMediaSource, [{ + key: 'addSeekableRange_', + value: function addSeekableRange_(start, end) { + var error = undefined; + + if (this.duration !== Infinity) { + error = new Error('MediaSource.addSeekableRange() can only be invoked ' + 'when the duration is Infinity'); + error.name = 'InvalidStateError'; + error.code = 11; + throw error; + } + + if (end > this.mediaSource_.duration || isNaN(this.mediaSource_.duration)) { + this.mediaSource_.duration = end; + } + } + }, { + key: 'addSourceBuffer', + value: function addSourceBuffer(type) { + var buffer = undefined; + var codecs = undefined; + var avcCodec = undefined; + var mp4aCodec = undefined; + var avcRegEx = /avc1\.[\da-f]+/i; + var mp4aRegEx = /mp4a\.\d+.\d+/i; + + // create a virtual source buffer to transmux MPEG-2 transport + // stream segments into fragmented MP4s + if (/^video\/mp2t/i.test(type)) { + codecs = type.split(';').slice(1).join(';'); + codecs = translateLegacyCodecs(codecs); + + // Pull out each individual codec string if it exists + avcCodec = (codecs.match(avcRegEx) || [])[0]; + mp4aCodec = (codecs.match(mp4aRegEx) || [])[0]; + + // If a codec is unspecified, use the defaults + if (!avcCodec || !avcCodec.length) { + avcCodec = 'avc1.4d400d'; + } + if (!mp4aCodec || !mp4aCodec.length) { + mp4aCodec = 'mp4a.40.2'; + } + + buffer = new _virtualSourceBuffer2['default'](this, [avcCodec, mp4aCodec]); + this.sourceBuffers.push(buffer); + return buffer; + } + + // delegate to the native implementation + buffer = this.mediaSource_.addSourceBuffer(type); + this.sourceBuffers.push(buffer); + return buffer; + } + }]); + + return HtmlMediaSource; +})(_videoJs2['default'].EventTarget); + +exports['default'] = HtmlMediaSource; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./virtual-source-buffer":29}],26:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var removeCuesFromTrack = function removeCuesFromTrack(start, end, track) { + var i = undefined; + var cue = undefined; + + if (!track) { + return; + } + + i = track.cues.length; + + while (i--) { + cue = track.cues[i]; + + // Remove any overlapping cue + if (cue.startTime <= end && cue.endTime >= start) { + track.removeCue(cue); + } + } +}; + +exports["default"] = removeCuesFromTrack; +module.exports = exports["default"]; +},{}],27:[function(require,module,exports){ +/** + * videojs-contrib-media-sources + * + * Copyright (c) 2015 Brightcove + * All rights reserved. + * + * Handles communication between the browser-world and the mux.js + * transmuxer running inside of a WebWorker by exposing a simple + * message-based interface to a Transmuxer object. + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _muxJs = require('mux.js'); + +var _muxJs2 = _interopRequireDefault(_muxJs); + +var globalTransmuxer = undefined; +var initOptions = {}; + +/** + * wireTransmuxerEvents + * Re-emits tranmsuxer events by converting them into messages to the + * world outside the worker + */ +var wireTransmuxerEvents = function wireTransmuxerEvents(transmuxer) { + transmuxer.on('data', function (segment) { + // transfer ownership of the underlying ArrayBuffer + // instead of doing a copy to save memory + // ArrayBuffers are transferable but generic TypedArrays are not + /* eslint-disable max-len */ + // see https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers#Passing_data_by_transferring_ownership_(transferable_objects) + /* eslint-enable max-len */ + var typedArray = segment.data; + + segment.data = typedArray.buffer; + postMessage({ + action: 'data', + segment: segment, + byteOffset: typedArray.byteOffset, + byteLength: typedArray.byteLength + }, [segment.data]); + }); + + if (transmuxer.captionStream) { + transmuxer.captionStream.on('data', function (caption) { + postMessage({ + action: 'caption', + data: caption + }); + }); + } + + transmuxer.on('done', function (data) { + postMessage({ action: 'done' }); + }); +}; + +/** + * All incoming messages route through this hash. If no function exists + * to handle an incoming message, then we ignore the message. + */ +var messageHandlers = { + /** + * init + * Allows you to initialize the transmuxer and pass along options from + * outside the worker + */ + init: function init(data) { + initOptions = data && data.options || {}; + this.defaultInit(); + }, + /** + * defaultInit + * Is called before every function and initializes the transmuxer with + * default options if `init` was never explicitly called + */ + defaultInit: function defaultInit() { + if (globalTransmuxer) { + globalTransmuxer.dispose(); + } + globalTransmuxer = new _muxJs2['default'].mp4.Transmuxer(initOptions); + wireTransmuxerEvents(globalTransmuxer); + }, + /** + * push + * Adds data (a ts segment) to the start of the transmuxer pipeline for + * processing + */ + push: function push(data) { + // Cast array buffer to correct type for transmuxer + var segment = new Uint8Array(data.data, data.byteOffset, data.byteLength); + + globalTransmuxer.push(segment); + }, + /** + * reset + * Recreate the transmuxer so that the next segment added via `push` + * start with a fresh transmuxer + */ + reset: function reset() { + this.defaultInit(); + }, + /** + * setTimestampOffset + * Set the value that will be used as the `baseMediaDecodeTime` time for the + * next segment pushed in. Subsequent segments will have their `baseMediaDecodeTime` + * set relative to the first based on the PTS values. + */ + setTimestampOffset: function setTimestampOffset(data) { + var timestampOffset = data.timestampOffset || 0; + + globalTransmuxer.setBaseMediaDecodeTime(Math.round(timestampOffset * 90000)); + }, + /** + * flush + * Forces the pipeline to finish processing the last segment and emit it's + * results + */ + flush: function flush(data) { + globalTransmuxer.flush(); + } +}; + +var Worker = function Worker(self) { + self.onmessage = function (event) { + // Setup the default transmuxer if one doesn't exist yet and we are invoked with + // an action other than `init` + if (!globalTransmuxer && event.data.action !== 'init') { + messageHandlers.defaultInit(); + } + + if (event.data && event.data.action) { + if (messageHandlers[event.data.action]) { + messageHandlers[event.data.action](event.data); + } + } + }; +}; + +exports['default'] = Worker; +module.exports = exports['default']; +},{"mux.js":37}],28:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _flashMediaSource = require('./flash-media-source'); + +var _flashMediaSource2 = _interopRequireDefault(_flashMediaSource); + +var _htmlMediaSource = require('./html-media-source'); + +var _htmlMediaSource2 = _interopRequireDefault(_htmlMediaSource); + +// import videojs from 'video.js'; +var videojs = window.videojs; +var urlCount = 0; + +// ------------ +// Media Source +// ------------ + +var defaults = { + // how to determine the MediaSource implementation to use. There + // are three available modes: + // - auto: use native MediaSources where available and Flash + // everywhere else + // - html5: always use native MediaSources + // - flash: always use the Flash MediaSource polyfill + mode: 'auto' +}; + +// store references to the media sources so they can be connected +// to a video element (a swf object) +videojs.mediaSources = {}; + +// provide a method for a swf object to notify JS that a media source is now open +var open = function open(msObjectURL, swfId) { + var mediaSource = videojs.mediaSources[msObjectURL]; + + if (mediaSource) { + mediaSource.trigger({ type: 'sourceopen', swfId: swfId }); + } else { + throw new Error('Media Source not found (Video.js)'); + } +}; + +// Check to see if the native MediaSource object exists and supports +// an MP4 container with both H.264 video and AAC-LC audio +var supportsNativeMediaSources = function supportsNativeMediaSources() { + return !!window.MediaSource && window.MediaSource.isTypeSupported('video/mp4;codecs="avc1.4d400d,mp4a.40.2"'); +}; + +var MediaSource = function MediaSource(options) { + var settings = videojs.mergeOptions(defaults, options); + + this.MediaSource = { + open: open, + supportsNativeMediaSources: supportsNativeMediaSources + }; + + // determine whether HTML MediaSources should be used + if (settings.mode === 'html5' || settings.mode === 'auto' && supportsNativeMediaSources()) { + return new _htmlMediaSource2['default'](); + } + + // otherwise, emulate them through the SWF + return new _flashMediaSource2['default'](); +}; + +exports.MediaSource = MediaSource; +MediaSource.open = open; +MediaSource.supportsNativeMediaSources = supportsNativeMediaSources; + +var URL = { + createObjectURL: function createObjectURL(object) { + var objectUrlPrefix = 'blob:vjs-media-source/'; + var url = undefined; + + // use the native MediaSource to generate an object URL + if (object instanceof _htmlMediaSource2['default']) { + url = window.URL.createObjectURL(object.mediaSource_); + object.url_ = url; + return url; + } + // if the object isn't an emulated MediaSource, delegate to the + // native implementation + if (!(object instanceof _flashMediaSource2['default'])) { + url = window.URL.createObjectURL(object); + object.url_ = url; + return url; + } + + // build a URL that can be used to map back to the emulated + // MediaSource + url = objectUrlPrefix + urlCount; + + urlCount++; + + // setup the mapping back to object + videojs.mediaSources[url] = object; + + return url; + } +}; + +exports.URL = URL; +videojs.MediaSource = MediaSource; +videojs.URL = URL; +},{"./flash-media-source":23,"./html-media-source":25}],29:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var _createTextTracksIfNecessary = require('./create-text-tracks-if-necessary'); + +var _createTextTracksIfNecessary2 = _interopRequireDefault(_createTextTracksIfNecessary); + +var _removeCuesFromTrack = require('./remove-cues-from-track'); + +var _removeCuesFromTrack2 = _interopRequireDefault(_removeCuesFromTrack); + +var _addTextTrackData = require('./add-text-track-data'); + +var _addTextTrackData2 = _interopRequireDefault(_addTextTrackData); + +var _webworkify = require('webworkify'); + +var _webworkify2 = _interopRequireDefault(_webworkify); + +var _transmuxerWorker = require('./transmuxer-worker'); + +var _transmuxerWorker2 = _interopRequireDefault(_transmuxerWorker); + +var aggregateUpdateHandler = function aggregateUpdateHandler(mediaSource, guardBufferName, type) { + return function () { + if (!mediaSource[guardBufferName] || !mediaSource[guardBufferName].updating) { + return mediaSource.trigger(type); + } + }; +}; + +var VirtualSourceBuffer = (function (_videojs$EventTarget) { + _inherits(VirtualSourceBuffer, _videojs$EventTarget); + + function VirtualSourceBuffer(mediaSource, codecs) { + var _this = this; + + _classCallCheck(this, VirtualSourceBuffer); + + _get(Object.getPrototypeOf(VirtualSourceBuffer.prototype), 'constructor', this).call(this, _videoJs2['default'].EventTarget); + this.timestampOffset_ = 0; + this.pendingBuffers_ = []; + this.bufferUpdating_ = false; + this.mediaSource_ = mediaSource; + this.codecs_ = codecs; + + // append muxed segments to their respective native buffers as + // soon as they are available + this.transmuxer_ = (0, _webworkify2['default'])(_transmuxerWorker2['default']); + this.transmuxer_.postMessage({ action: 'init', options: { remux: false } }); + + this.transmuxer_.onmessage = function (event) { + if (event.data.action === 'data') { + return _this.data_(event); + } + + if (event.data.action === 'done') { + return _this.done_(event); + } + }; + + // this timestampOffset is a property with the side-effect of resetting + // baseMediaDecodeTime in the transmuxer on the setter + Object.defineProperty(this, 'timestampOffset', { + get: function get() { + return this.timestampOffset_; + }, + set: function set(val) { + if (typeof val === 'number' && val >= 0) { + this.timestampOffset_ = val; + + // We have to tell the transmuxer to set the baseMediaDecodeTime to + // the desired timestampOffset for the next segment + this.transmuxer_.postMessage({ + action: 'setTimestampOffset', + timestampOffset: val + }); + } + } + }); + // setting the append window affects both source buffers + Object.defineProperty(this, 'appendWindowStart', { + get: function get() { + return (this.videoBuffer_ || this.audioBuffer_).appendWindowStart; + }, + set: function set(start) { + if (this.videoBuffer_) { + this.videoBuffer_.appendWindowStart = start; + } + if (this.audioBuffer_) { + this.audioBuffer_.appendWindowStart = start; + } + } + }); + // this buffer is "updating" if either of its native buffers are + Object.defineProperty(this, 'updating', { + get: function get() { + return this.bufferUpdating_ || this.audioBuffer_ && this.audioBuffer_.updating || this.videoBuffer_ && this.videoBuffer_.updating; + } + }); + // the buffered property is the intersection of the buffered + // ranges of the native source buffers + Object.defineProperty(this, 'buffered', { + get: function get() { + var start = null; + var end = null; + var arity = 0; + var extents = []; + var ranges = []; + + // Handle the case where there is no buffer data + if ((!this.videoBuffer_ || this.videoBuffer_.buffered.length === 0) && (!this.audioBuffer_ || this.audioBuffer_.buffered.length === 0)) { + return _videoJs2['default'].createTimeRange(); + } + + // Handle the case where we only have one buffer + if (!this.videoBuffer_) { + return this.audioBuffer_.buffered; + } else if (!this.audioBuffer_) { + return this.videoBuffer_.buffered; + } + + // Handle the case where we have both buffers and create an + // intersection of the two + var videoBuffered = this.videoBuffer_.buffered; + var audioBuffered = this.audioBuffer_.buffered; + var count = videoBuffered.length; + + // A) Gather up all start and end times + while (count--) { + extents.push({ time: videoBuffered.start(count), type: 'start' }); + extents.push({ time: videoBuffered.end(count), type: 'end' }); + } + count = audioBuffered.length; + while (count--) { + extents.push({ time: audioBuffered.start(count), type: 'start' }); + extents.push({ time: audioBuffered.end(count), type: 'end' }); + } + // B) Sort them by time + extents.sort(function (a, b) { + return a.time - b.time; + }); + + // C) Go along one by one incrementing arity for start and decrementing + // arity for ends + for (count = 0; count < extents.length; count++) { + if (extents[count].type === 'start') { + arity++; + + // D) If arity is ever incremented to 2 we are entering an + // overlapping range + if (arity === 2) { + start = extents[count].time; + } + } else if (extents[count].type === 'end') { + arity--; + + // E) If arity is ever decremented to 1 we leaving an + // overlapping range + if (arity === 1) { + end = extents[count].time; + } + } + + // F) Record overlapping ranges + if (start !== null && end !== null) { + ranges.push([start, end]); + start = null; + end = null; + } + } + + return _videoJs2['default'].createTimeRanges(ranges); + } + }); + } + + // Transmuxer message handlers + + _createClass(VirtualSourceBuffer, [{ + key: 'data_', + value: function data_(event) { + var segment = event.data.segment; + var nativeMediaSource = this.mediaSource_.mediaSource_; + + // Cast ArrayBuffer to TypedArray + segment.data = new Uint8Array(segment.data, event.data.byteOffset, event.data.byteLength); + + // If any sourceBuffers have not been created, do so now + if (segment.type === 'video') { + if (!this.videoBuffer_) { + this.videoBuffer_ = nativeMediaSource.addSourceBuffer('video/mp4;codecs="' + this.codecs_[0] + '"'); + // aggregate buffer events + this.videoBuffer_.addEventListener('updatestart', aggregateUpdateHandler(this, 'audioBuffer_', 'updatestart')); + this.videoBuffer_.addEventListener('update', aggregateUpdateHandler(this, 'audioBuffer_', 'update')); + this.videoBuffer_.addEventListener('updateend', aggregateUpdateHandler(this, 'audioBuffer_', 'updateend')); + } + } else if (segment.type === 'audio') { + if (!this.audioBuffer_) { + this.audioBuffer_ = nativeMediaSource.addSourceBuffer('audio/mp4;codecs="' + this.codecs_[1] + '"'); + // aggregate buffer events + this.audioBuffer_.addEventListener('updatestart', aggregateUpdateHandler(this, 'videoBuffer_', 'updatestart')); + this.audioBuffer_.addEventListener('update', aggregateUpdateHandler(this, 'videoBuffer_', 'update')); + this.audioBuffer_.addEventListener('updateend', aggregateUpdateHandler(this, 'videoBuffer_', 'updateend')); + } + } else if (segment.type === 'combined') { + if (!this.videoBuffer_) { + this.videoBuffer_ = nativeMediaSource.addSourceBuffer('video/mp4;codecs="' + this.codecs_.join(',') + '"'); + // aggregate buffer events + this.videoBuffer_.addEventListener('updatestart', aggregateUpdateHandler(this, 'videoBuffer_', 'updatestart')); + this.videoBuffer_.addEventListener('update', aggregateUpdateHandler(this, 'videoBuffer_', 'update')); + this.videoBuffer_.addEventListener('updateend', aggregateUpdateHandler(this, 'videoBuffer_', 'updateend')); + } + } + (0, _createTextTracksIfNecessary2['default'])(this, this.mediaSource_, segment); + + // Add the segments to the pendingBuffers array + this.pendingBuffers_.push(segment); + return; + } + }, { + key: 'done_', + value: function done_() { + // All buffers should have been flushed from the muxer + // start processing anything we have received + this.processPendingSegments_(); + return; + } + + // SourceBuffer Implementation + + }, { + key: 'appendBuffer', + value: function appendBuffer(segment) { + // Start the internal "updating" state + this.bufferUpdating_ = true; + + this.transmuxer_.postMessage({ + action: 'push', + // Send the typed-array of data as an ArrayBuffer so that + // it can be sent as a "Transferable" and avoid the costly + // memory copy + data: segment.buffer, + + // To recreate the original typed-array, we need information + // about what portion of the ArrayBuffer it was a view into + byteOffset: segment.byteOffset, + byteLength: segment.byteLength + }, [segment.buffer]); + this.transmuxer_.postMessage({ action: 'flush' }); + } + }, { + key: 'remove', + value: function remove(start, end) { + if (this.videoBuffer_) { + this.videoBuffer_.remove(start, end); + } + if (this.audioBuffer_) { + this.audioBuffer_.remove(start, end); + } + + // Remove Metadata Cues (id3) + (0, _removeCuesFromTrack2['default'])(start, end, this.metadataTrack_); + + // Remove Any Captions + (0, _removeCuesFromTrack2['default'])(start, end, this.inbandTextTrack_); + } + + /** + * Process any segments that the muxer has output + * Concatenate segments together based on type and append them into + * their respective sourceBuffers + */ + }, { + key: 'processPendingSegments_', + value: function processPendingSegments_() { + var sortedSegments = { + video: { + segments: [], + bytes: 0 + }, + audio: { + segments: [], + bytes: 0 + }, + captions: [], + metadata: [] + }; + + // Sort segments into separate video/audio arrays and + // keep track of their total byte lengths + sortedSegments = this.pendingBuffers_.reduce(function (segmentObj, segment) { + var type = segment.type; + var data = segment.data; + + // A "combined" segment type (unified video/audio) uses the videoBuffer + if (type === 'combined') { + type = 'video'; + } + + segmentObj[type].segments.push(data); + segmentObj[type].bytes += data.byteLength; + + // Gather any captions into a single array + if (segment.captions) { + segmentObj.captions = segmentObj.captions.concat(segment.captions); + } + + // Gather any metadata into a single array + if (segment.metadata) { + segmentObj.metadata = segmentObj.metadata.concat(segment.metadata); + } + + return segmentObj; + }, sortedSegments); + + (0, _addTextTrackData2['default'])(this, sortedSegments.captions, sortedSegments.metadata); + + // Merge multiple video and audio segments into one and append + this.concatAndAppendSegments_(sortedSegments.video, this.videoBuffer_); + this.concatAndAppendSegments_(sortedSegments.audio, this.audioBuffer_); + + this.pendingBuffers_.length = 0; + + // We are no longer in the internal "updating" state + this.bufferUpdating_ = false; + } + + /** + * Combind all segments into a single Uint8Array and then append them + * to the destination buffer + */ + }, { + key: 'concatAndAppendSegments_', + value: function concatAndAppendSegments_(segmentObj, destinationBuffer) { + var offset = 0; + var tempBuffer = undefined; + + if (segmentObj.bytes) { + tempBuffer = new Uint8Array(segmentObj.bytes); + + // Combine the individual segments into one large typed-array + segmentObj.segments.forEach(function (segment) { + tempBuffer.set(segment, offset); + offset += segment.byteLength; + }); + + destinationBuffer.appendBuffer(tempBuffer); + } + } + + // abort any sourceBuffer actions and throw out any un-appended data + }, { + key: 'abort', + value: function abort() { + if (this.videoBuffer_) { + this.videoBuffer_.abort(); + } + if (this.audioBuffer_) { + this.audioBuffer_.abort(); + } + if (this.transmuxer_) { + this.transmuxer_.postMessage({ action: 'reset' }); + } + this.pendingBuffers_.length = 0; + this.bufferUpdating_ = false; + } + }]); + + return VirtualSourceBuffer; +})(_videoJs2['default'].EventTarget); + +exports['default'] = VirtualSourceBuffer; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./add-text-track-data":20,"./create-text-tracks-if-necessary":21,"./remove-cues-from-track":26,"./transmuxer-worker":27,"webworkify":50}],30:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2016 Brightcove + * All rights reserved. + * + * A stream-based aac to mp4 converter. This utility can be used to + * deliver mp4s to a SourceBuffer on platforms that support native + * Media Source Extensions. + */ +'use strict'; +var Stream = require('../utils/stream.js'); + +// Constants +var AacStream; + +/** + * Splits an incoming stream of binary data into ADTS and ID3 Frames. + */ + +AacStream = function() { + var + everything, + receivedTimeStamp = false, + timeStamp = 0; + + AacStream.prototype.init.call(this); + + this.setTimestamp = function (timestamp) { + timeStamp = timestamp; + }; + + this.parseId3TagSize = function(header, byteIndex) { + var + returnSize = (header[byteIndex + 6] << 21) | + (header[byteIndex + 7] << 14) | + (header[byteIndex + 8] << 7) | + (header[byteIndex + 9]), + flags = header[byteIndex + 5], + footerPresent = (flags & 16) >> 4; + + if (footerPresent) { + return returnSize + 20; + } + return returnSize + 10; + }; + + this.parseAdtsSize = function(header, byteIndex) { + var + lowThree = (header[byteIndex + 5] & 0xE0) >> 5, + middle = header[byteIndex + 4] << 3, + highTwo = header[byteIndex + 3] & 0x3 << 11; + + return (highTwo | middle) | lowThree; + }; + + this.push = function(bytes) { + var + frameSize = 0, + byteIndex = 0, + chunk, + packet, + tempLength; + + // If there are bytes remaining from the last segment, prepend them to the + // bytes that were pushed in + if (everything !== undefined && everything.length) { + tempLength = everything.length; + everything = new Uint8Array(bytes.byteLength + tempLength); + everything.set(everything.subarray(0, tempLength)); + everything.set(bytes, tempLength); + } else { + everything = bytes; + } + + while (everything.length - byteIndex >= 10) { + if ((everything[byteIndex] === 'I'.charCodeAt(0)) && + (everything[byteIndex + 1] === 'D'.charCodeAt(0)) && + (everything[byteIndex + 2] === '3'.charCodeAt(0))) { + + //check framesize + frameSize = this.parseId3TagSize(everything, byteIndex); + //we have enough in the buffer to emit a full packet + if (frameSize > everything.length) { + break; + } + chunk = { + type: 'timed-metadata', + data: everything.subarray(byteIndex, byteIndex + frameSize) + }; + this.trigger('data', chunk); + byteIndex += frameSize; + continue; + } else if ((everything[byteIndex] & 0xff === 0xff) && + ((everything[byteIndex + 1] & 0xf0) === 0xf0)) { + frameSize = this.parseAdtsSize(everything, byteIndex); + + if (frameSize > everything.length) { + break; + } + packet = { + type: 'audio', + data: everything.subarray(byteIndex, byteIndex + frameSize), + pts: timeStamp, + dts: timeStamp, + }; + this.trigger('data', packet); + byteIndex += frameSize; + continue; + } + byteIndex++; + } + }; +}; + +AacStream.prototype = new Stream(); + + + +module.exports = AacStream; + +},{"../utils/stream.js":49}],31:[function(require,module,exports){ +'use strict'; + +var Stream = require('../utils/stream.js'); + +var AdtsStream; + +var + ADTS_SAMPLING_FREQUENCIES = [ + 96000, + 88200, + 64000, + 48000, + 44100, + 32000, + 24000, + 22050, + 16000, + 12000, + 11025, + 8000, + 7350 + ]; + +/* + * Accepts a ElementaryStream and emits data events with parsed + * AAC Audio Frames of the individual packets. Input audio in ADTS + * format is unpacked and re-emitted as AAC frames. + * + * @see http://wiki.multimedia.cx/index.php?title=ADTS + * @see http://wiki.multimedia.cx/?title=Understanding_AAC + */ +AdtsStream = function() { + var self, buffer; + + AdtsStream.prototype.init.call(this); + + self = this; + + this.push = function(packet) { + var + i = 0, + frameNum = 0, + frameLength, + protectionSkipBytes, + frameEnd, + oldBuffer, + numFrames, + sampleCount, + adtsFrameDuration; + + if (packet.type !== 'audio') { + // ignore non-audio data + return; + } + + // Prepend any data in the buffer to the input data so that we can parse + // aac frames the cross a PES packet boundary + if (buffer) { + oldBuffer = buffer; + buffer = new Uint8Array(oldBuffer.byteLength + packet.data.byteLength); + buffer.set(oldBuffer); + buffer.set(packet.data, oldBuffer.byteLength); + } else { + buffer = packet.data; + } + + // unpack any ADTS frames which have been fully received + // for details on the ADTS header, see http://wiki.multimedia.cx/index.php?title=ADTS + while (i + 5 < buffer.length) { + + // Loook for the start of an ADTS header.. + if (buffer[i] !== 0xFF || (buffer[i + 1] & 0xF6) !== 0xF0) { + // If a valid header was not found, jump one forward and attempt to + // find a valid ADTS header starting at the next byte + i++; + continue; + } + + // The protection skip bit tells us if we have 2 bytes of CRC data at the + // end of the ADTS header + protectionSkipBytes = (~buffer[i + 1] & 0x01) * 2; + + // Frame length is a 13 bit integer starting 16 bits from the + // end of the sync sequence + frameLength = ((buffer[i + 3] & 0x03) << 11) | + (buffer[i + 4] << 3) | + ((buffer[i + 5] & 0xe0) >> 5); + + sampleCount = ((buffer[i + 6] & 0x03) + 1) * 1024; + adtsFrameDuration = (sampleCount * 90000) / + ADTS_SAMPLING_FREQUENCIES[(buffer[i + 2] & 0x3c) >>> 2]; + + frameEnd = i + frameLength; + + // If we don't have enough data to actually finish this ADTS frame, return + // and wait for more data + if (buffer.byteLength < frameEnd) { + return; + } + + // Otherwise, deliver the complete AAC frame + this.trigger('data', { + pts: packet.pts + (frameNum * adtsFrameDuration), + dts: packet.dts + (frameNum * adtsFrameDuration), + sampleCount: sampleCount, + audioobjecttype: ((buffer[i + 2] >>> 6) & 0x03) + 1, + channelcount: ((buffer[i + 2] & 1) << 3) | + ((buffer[i + 3] & 0xc0) >>> 6), + samplerate: ADTS_SAMPLING_FREQUENCIES[(buffer[i + 2] & 0x3c) >>> 2], + samplingfrequencyindex: (buffer[i + 2] & 0x3c) >>> 2, + // assume ISO/IEC 14496-12 AudioSampleEntry default of 16 + samplesize: 16, + data: buffer.subarray(i + 7 + protectionSkipBytes, frameEnd) + }); + + // If the buffer is empty, clear it and return + if (buffer.byteLength === frameEnd) { + buffer = undefined; + return; + } + + frameNum++; + + // Remove the finished frame from the buffer and start the process again + buffer = buffer.subarray(frameEnd); + } + }; + this.flush = function() { + this.trigger('done'); + }; +}; + +AdtsStream.prototype = new Stream(); + +module.exports = AdtsStream; + +},{"../utils/stream.js":49}],32:[function(require,module,exports){ +'use strict'; + +var Stream = require('../utils/stream.js'); +var ExpGolomb = require('../utils/exp-golomb.js'); + +var H264Stream, NalByteStream; + +/** + * Accepts a NAL unit byte stream and unpacks the embedded NAL units. + */ +NalByteStream = function() { + var + syncPoint = 0, + i, + buffer; + NalByteStream.prototype.init.call(this); + + this.push = function(data) { + var swapBuffer; + + if (!buffer) { + buffer = data.data; + } else { + swapBuffer = new Uint8Array(buffer.byteLength + data.data.byteLength); + swapBuffer.set(buffer); + swapBuffer.set(data.data, buffer.byteLength); + buffer = swapBuffer; + } + + // Rec. ITU-T H.264, Annex B + // scan for NAL unit boundaries + + // a match looks like this: + // 0 0 1 .. NAL .. 0 0 1 + // ^ sync point ^ i + // or this: + // 0 0 1 .. NAL .. 0 0 0 + // ^ sync point ^ i + + // advance the sync point to a NAL start, if necessary + for (; syncPoint < buffer.byteLength - 3; syncPoint++) { + if (buffer[syncPoint + 2] === 1) { + // the sync point is properly aligned + i = syncPoint + 5; + break; + } + } + + while (i < buffer.byteLength) { + // look at the current byte to determine if we've hit the end of + // a NAL unit boundary + switch (buffer[i]) { + case 0: + // skip past non-sync sequences + if (buffer[i - 1] !== 0) { + i += 2; + break; + } else if (buffer[i - 2] !== 0) { + i++; + break; + } + + // deliver the NAL unit + this.trigger('data', buffer.subarray(syncPoint + 3, i - 2)); + + // drop trailing zeroes + do { + i++; + } while (buffer[i] !== 1 && i < buffer.length); + syncPoint = i - 2; + i += 3; + break; + case 1: + // skip past non-sync sequences + if (buffer[i - 1] !== 0 || + buffer[i - 2] !== 0) { + i += 3; + break; + } + + // deliver the NAL unit + this.trigger('data', buffer.subarray(syncPoint + 3, i - 2)); + syncPoint = i - 2; + i += 3; + break; + default: + // the current byte isn't a one or zero, so it cannot be part + // of a sync sequence + i += 3; + break; + } + } + // filter out the NAL units that were delivered + buffer = buffer.subarray(syncPoint); + i -= syncPoint; + syncPoint = 0; + }; + + this.flush = function() { + // deliver the last buffered NAL unit + if (buffer && buffer.byteLength > 3) { + this.trigger('data', buffer.subarray(syncPoint + 3)); + } + // reset the stream state + buffer = null; + syncPoint = 0; + this.trigger('done'); + }; +}; +NalByteStream.prototype = new Stream(); + +/** + * Accepts input from a ElementaryStream and produces H.264 NAL unit data + * events. + */ +H264Stream = function() { + var + nalByteStream = new NalByteStream(), + self, + trackId, + currentPts, + currentDts, + + discardEmulationPreventionBytes, + readSequenceParameterSet, + skipScalingList; + + H264Stream.prototype.init.call(this); + self = this; + + this.push = function(packet) { + if (packet.type !== 'video') { + return; + } + trackId = packet.trackId; + currentPts = packet.pts; + currentDts = packet.dts; + + nalByteStream.push(packet); + }; + + nalByteStream.on('data', function(data) { + var + event = { + trackId: trackId, + pts: currentPts, + dts: currentDts, + data: data + }; + + switch (data[0] & 0x1f) { + case 0x05: + event.nalUnitType = 'slice_layer_without_partitioning_rbsp_idr'; + break; + case 0x06: + event.nalUnitType = 'sei_rbsp'; + event.escapedRBSP = discardEmulationPreventionBytes(data.subarray(1)); + break; + case 0x07: + event.nalUnitType = 'seq_parameter_set_rbsp'; + event.escapedRBSP = discardEmulationPreventionBytes(data.subarray(1)); + event.config = readSequenceParameterSet(event.escapedRBSP); + break; + case 0x08: + event.nalUnitType = 'pic_parameter_set_rbsp'; + break; + case 0x09: + event.nalUnitType = 'access_unit_delimiter_rbsp'; + break; + + default: + break; + } + self.trigger('data', event); + }); + nalByteStream.on('done', function() { + self.trigger('done'); + }); + + this.flush = function() { + nalByteStream.flush(); + }; + + /** + * Advance the ExpGolomb decoder past a scaling list. The scaling + * list is optionally transmitted as part of a sequence parameter + * set and is not relevant to transmuxing. + * @param count {number} the number of entries in this scaling list + * @param expGolombDecoder {object} an ExpGolomb pointed to the + * start of a scaling list + * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1 + */ + skipScalingList = function(count, expGolombDecoder) { + var + lastScale = 8, + nextScale = 8, + j, + deltaScale; + + for (j = 0; j < count; j++) { + if (nextScale !== 0) { + deltaScale = expGolombDecoder.readExpGolomb(); + nextScale = (lastScale + deltaScale + 256) % 256; + } + + lastScale = (nextScale === 0) ? lastScale : nextScale; + } + }; + + /** + * Expunge any "Emulation Prevention" bytes from a "Raw Byte + * Sequence Payload" + * @param data {Uint8Array} the bytes of a RBSP from a NAL + * unit + * @return {Uint8Array} the RBSP without any Emulation + * Prevention Bytes + */ + discardEmulationPreventionBytes = function(data) { + var + length = data.byteLength, + emulationPreventionBytesPositions = [], + i = 1, + newLength, newData; + + // Find all `Emulation Prevention Bytes` + while (i < length - 2) { + if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) { + emulationPreventionBytesPositions.push(i + 2); + i += 2; + } else { + i++; + } + } + + // If no Emulation Prevention Bytes were found just return the original + // array + if (emulationPreventionBytesPositions.length === 0) { + return data; + } + + // Create a new array to hold the NAL unit data + newLength = length - emulationPreventionBytesPositions.length; + newData = new Uint8Array(newLength); + var sourceIndex = 0; + + for (i = 0; i < newLength; sourceIndex++, i++) { + if (sourceIndex === emulationPreventionBytesPositions[0]) { + // Skip this byte + sourceIndex++; + // Remove this position index + emulationPreventionBytesPositions.shift(); + } + newData[i] = data[sourceIndex]; + } + + return newData; + }; + + /** + * Read a sequence parameter set and return some interesting video + * properties. A sequence parameter set is the H264 metadata that + * describes the properties of upcoming video frames. + * @param data {Uint8Array} the bytes of a sequence parameter set + * @return {object} an object with configuration parsed from the + * sequence parameter set, including the dimensions of the + * associated video frames. + */ + readSequenceParameterSet = function(data) { + var + frameCropLeftOffset = 0, + frameCropRightOffset = 0, + frameCropTopOffset = 0, + frameCropBottomOffset = 0, + expGolombDecoder, profileIdc, levelIdc, profileCompatibility, + chromaFormatIdc, picOrderCntType, + numRefFramesInPicOrderCntCycle, picWidthInMbsMinus1, + picHeightInMapUnitsMinus1, + frameMbsOnlyFlag, + scalingListCount, + i; + + expGolombDecoder = new ExpGolomb(data); + profileIdc = expGolombDecoder.readUnsignedByte(); // profile_idc + profileCompatibility = expGolombDecoder.readUnsignedByte(); // constraint_set[0-5]_flag + levelIdc = expGolombDecoder.readUnsignedByte(); // level_idc u(8) + expGolombDecoder.skipUnsignedExpGolomb(); // seq_parameter_set_id + + // some profiles have more optional data we don't need + if (profileIdc === 100 || + profileIdc === 110 || + profileIdc === 122 || + profileIdc === 244 || + profileIdc === 44 || + profileIdc === 83 || + profileIdc === 86 || + profileIdc === 118 || + profileIdc === 128 || + profileIdc === 138 || + profileIdc === 139 || + profileIdc === 134) { + chromaFormatIdc = expGolombDecoder.readUnsignedExpGolomb(); + if (chromaFormatIdc === 3) { + expGolombDecoder.skipBits(1); // separate_colour_plane_flag + } + expGolombDecoder.skipUnsignedExpGolomb(); // bit_depth_luma_minus8 + expGolombDecoder.skipUnsignedExpGolomb(); // bit_depth_chroma_minus8 + expGolombDecoder.skipBits(1); // qpprime_y_zero_transform_bypass_flag + if (expGolombDecoder.readBoolean()) { // seq_scaling_matrix_present_flag + scalingListCount = (chromaFormatIdc !== 3) ? 8 : 12; + for (i = 0; i < scalingListCount; i++) { + if (expGolombDecoder.readBoolean()) { // seq_scaling_list_present_flag[ i ] + if (i < 6) { + skipScalingList(16, expGolombDecoder); + } else { + skipScalingList(64, expGolombDecoder); + } + } + } + } + } + + expGolombDecoder.skipUnsignedExpGolomb(); // log2_max_frame_num_minus4 + picOrderCntType = expGolombDecoder.readUnsignedExpGolomb(); + + if (picOrderCntType === 0) { + expGolombDecoder.readUnsignedExpGolomb(); //log2_max_pic_order_cnt_lsb_minus4 + } else if (picOrderCntType === 1) { + expGolombDecoder.skipBits(1); // delta_pic_order_always_zero_flag + expGolombDecoder.skipExpGolomb(); // offset_for_non_ref_pic + expGolombDecoder.skipExpGolomb(); // offset_for_top_to_bottom_field + numRefFramesInPicOrderCntCycle = expGolombDecoder.readUnsignedExpGolomb(); + for(i = 0; i < numRefFramesInPicOrderCntCycle; i++) { + expGolombDecoder.skipExpGolomb(); // offset_for_ref_frame[ i ] + } + } + + expGolombDecoder.skipUnsignedExpGolomb(); // max_num_ref_frames + expGolombDecoder.skipBits(1); // gaps_in_frame_num_value_allowed_flag + + picWidthInMbsMinus1 = expGolombDecoder.readUnsignedExpGolomb(); + picHeightInMapUnitsMinus1 = expGolombDecoder.readUnsignedExpGolomb(); + + frameMbsOnlyFlag = expGolombDecoder.readBits(1); + if (frameMbsOnlyFlag === 0) { + expGolombDecoder.skipBits(1); // mb_adaptive_frame_field_flag + } + + expGolombDecoder.skipBits(1); // direct_8x8_inference_flag + if (expGolombDecoder.readBoolean()) { // frame_cropping_flag + frameCropLeftOffset = expGolombDecoder.readUnsignedExpGolomb(); + frameCropRightOffset = expGolombDecoder.readUnsignedExpGolomb(); + frameCropTopOffset = expGolombDecoder.readUnsignedExpGolomb(); + frameCropBottomOffset = expGolombDecoder.readUnsignedExpGolomb(); + } + + return { + profileIdc: profileIdc, + levelIdc: levelIdc, + profileCompatibility: profileCompatibility, + width: ((picWidthInMbsMinus1 + 1) * 16) - frameCropLeftOffset * 2 - frameCropRightOffset * 2, + height: ((2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16) - (frameCropTopOffset * 2) - (frameCropBottomOffset * 2) + }; + }; + +}; +H264Stream.prototype = new Stream(); + +module.exports = { + H264Stream: H264Stream, + NalByteStream: NalByteStream, +}; + +},{"../utils/exp-golomb.js":48,"../utils/stream.js":49}],33:[function(require,module,exports){ +module.exports = { + adts: require('./adts'), + h264: require('./h264'), +}; + +},{"./adts":31,"./h264":32}],34:[function(require,module,exports){ +/** + * An object that stores the bytes of an FLV tag and methods for + * querying and manipulating that data. + * @see http://download.macromedia.com/f4v/video_file_format_spec_v10_1.pdf + */ +'use strict'; + +var FlvTag; + +// (type:uint, extraData:Boolean = false) extends ByteArray +FlvTag = function(type, extraData) { + var + // Counter if this is a metadata tag, nal start marker if this is a video + // tag. unused if this is an audio tag + adHoc = 0, // :uint + + // The default size is 16kb but this is not enough to hold iframe + // data and the resizing algorithm costs a bit so we create a larger + // starting buffer for video tags + bufferStartSize = 16384, + + // checks whether the FLV tag has enough capacity to accept the proposed + // write and re-allocates the internal buffers if necessary + prepareWrite = function(flv, count) { + var + bytes, + minLength = flv.position + count; + if (minLength < flv.bytes.byteLength) { + // there's enough capacity so do nothing + return; + } + + // allocate a new buffer and copy over the data that will not be modified + bytes = new Uint8Array(minLength * 2); + bytes.set(flv.bytes.subarray(0, flv.position), 0); + flv.bytes = bytes; + flv.view = new DataView(flv.bytes.buffer); + }, + + // commonly used metadata properties + widthBytes = FlvTag.widthBytes || new Uint8Array('width'.length), + heightBytes = FlvTag.heightBytes || new Uint8Array('height'.length), + videocodecidBytes = FlvTag.videocodecidBytes || new Uint8Array('videocodecid'.length), + i; + + if (!FlvTag.widthBytes) { + // calculating the bytes of common metadata names ahead of time makes the + // corresponding writes faster because we don't have to loop over the + // characters + // re-test with test/perf.html if you're planning on changing this + for (i = 0; i < 'width'.length; i++) { + widthBytes[i] = 'width'.charCodeAt(i); + } + for (i = 0; i < 'height'.length; i++) { + heightBytes[i] = 'height'.charCodeAt(i); + } + for (i = 0; i < 'videocodecid'.length; i++) { + videocodecidBytes[i] = 'videocodecid'.charCodeAt(i); + } + + FlvTag.widthBytes = widthBytes; + FlvTag.heightBytes = heightBytes; + FlvTag.videocodecidBytes = videocodecidBytes; + } + + this.keyFrame = false; // :Boolean + + switch(type) { + case FlvTag.VIDEO_TAG: + this.length = 16; + // Start the buffer at 256k + bufferStartSize *= 6; + break; + case FlvTag.AUDIO_TAG: + this.length = 13; + this.keyFrame = true; + break; + case FlvTag.METADATA_TAG: + this.length = 29; + this.keyFrame = true; + break; + default: + throw("Error Unknown TagType"); + } + + this.bytes = new Uint8Array(bufferStartSize); + this.view = new DataView(this.bytes.buffer); + this.bytes[0] = type; + this.position = this.length; + this.keyFrame = extraData; // Defaults to false + + // presentation timestamp + this.pts = 0; + // decoder timestamp + this.dts = 0; + + // ByteArray#writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0) + this.writeBytes = function(bytes, offset, length) { + var + start = offset || 0, + end; + length = length || bytes.byteLength; + end = start + length; + + prepareWrite(this, length); + this.bytes.set(bytes.subarray(start, end), this.position); + + this.position += length; + this.length = Math.max(this.length, this.position); + }; + + // ByteArray#writeByte(value:int):void + this.writeByte = function(byte) { + prepareWrite(this, 1); + this.bytes[this.position] = byte; + this.position++; + this.length = Math.max(this.length, this.position); + }; + + // ByteArray#writeShort(value:int):void + this.writeShort = function(short) { + prepareWrite(this, 2); + this.view.setUint16(this.position, short); + this.position += 2; + this.length = Math.max(this.length, this.position); + }; + + // Negative index into array + // (pos:uint):int + this.negIndex = function(pos) { + return this.bytes[this.length - pos]; + }; + + // The functions below ONLY work when this[0] == VIDEO_TAG. + // We are not going to check for that because we dont want the overhead + // (nal:ByteArray = null):int + this.nalUnitSize = function() { + if (adHoc === 0) { + return 0; + } + + return this.length - (adHoc + 4); + }; + + this.startNalUnit = function() { + // remember position and add 4 bytes + if (adHoc > 0) { + throw new Error("Attempted to create new NAL wihout closing the old one"); + } + + // reserve 4 bytes for nal unit size + adHoc = this.length; + this.length += 4; + this.position = this.length; + }; + + // (nal:ByteArray = null):void + this.endNalUnit = function(nalContainer) { + var + nalStart, // :uint + nalLength; // :uint + + // Rewind to the marker and write the size + if (this.length === adHoc + 4) { + // we started a nal unit, but didnt write one, so roll back the 4 byte size value + this.length -= 4; + } else if (adHoc > 0) { + nalStart = adHoc + 4; + nalLength = this.length - nalStart; + + this.position = adHoc; + this.view.setUint32(this.position, nalLength); + this.position = this.length; + + if (nalContainer) { + // Add the tag to the NAL unit + nalContainer.push(this.bytes.subarray(nalStart, nalStart + nalLength)); + } + } + + adHoc = 0; + }; + + /** + * Write out a 64-bit floating point valued metadata property. This method is + * called frequently during a typical parse and needs to be fast. + */ + // (key:String, val:Number):void + this.writeMetaDataDouble = function(key, val) { + var i; + prepareWrite(this, 2 + key.length + 9); + + // write size of property name + this.view.setUint16(this.position, key.length); + this.position += 2; + + // this next part looks terrible but it improves parser throughput by + // 10kB/s in my testing + + // write property name + if (key === 'width') { + this.bytes.set(widthBytes, this.position); + this.position += 5; + } else if (key === 'height') { + this.bytes.set(heightBytes, this.position); + this.position += 6; + } else if (key === 'videocodecid') { + this.bytes.set(videocodecidBytes, this.position); + this.position += 12; + } else { + for (i = 0; i < key.length; i++) { + this.bytes[this.position] = key.charCodeAt(i); + this.position++; + } + } + + // skip null byte + this.position++; + + // write property value + this.view.setFloat64(this.position, val); + this.position += 8; + + // update flv tag length + this.length = Math.max(this.length, this.position); + ++adHoc; + }; + + // (key:String, val:Boolean):void + this.writeMetaDataBoolean = function(key, val) { + var i; + prepareWrite(this, 2); + this.view.setUint16(this.position, key.length); + this.position += 2; + for (i = 0; i < key.length; i++) { + // if key.charCodeAt(i) >= 255, handle error + prepareWrite(this, 1); + this.bytes[this.position] = key.charCodeAt(i); + this.position++; + } + prepareWrite(this, 2); + this.view.setUint8(this.position, 0x01); + this.position++; + this.view.setUint8(this.position, val ? 0x01 : 0x00); + this.position++; + this.length = Math.max(this.length, this.position); + ++adHoc; + }; + + // ():ByteArray + this.finalize = function() { + var + dtsDelta, // :int + len; // :int + + switch(this.bytes[0]) { + // Video Data + case FlvTag.VIDEO_TAG: + this.bytes[11] = ((this.keyFrame || extraData) ? 0x10 : 0x20 ) | 0x07; // We only support AVC, 1 = key frame (for AVC, a seekable frame), 2 = inter frame (for AVC, a non-seekable frame) + this.bytes[12] = extraData ? 0x00 : 0x01; + + dtsDelta = this.pts - this.dts; + this.bytes[13] = (dtsDelta & 0x00FF0000) >>> 16; + this.bytes[14] = (dtsDelta & 0x0000FF00) >>> 8; + this.bytes[15] = (dtsDelta & 0x000000FF) >>> 0; + break; + + case FlvTag.AUDIO_TAG: + this.bytes[11] = 0xAF; // 44 kHz, 16-bit stereo + this.bytes[12] = extraData ? 0x00 : 0x01; + break; + + case FlvTag.METADATA_TAG: + this.position = 11; + this.view.setUint8(this.position, 0x02); // String type + this.position++; + this.view.setUint16(this.position, 0x0A); // 10 Bytes + this.position += 2; + // set "onMetaData" + this.bytes.set([0x6f, 0x6e, 0x4d, 0x65, + 0x74, 0x61, 0x44, 0x61, + 0x74, 0x61], this.position); + this.position += 10; + this.bytes[this.position] = 0x08; // Array type + this.position++; + this.view.setUint32(this.position, adHoc); + this.position = this.length; + this.bytes.set([0, 0, 9], this.position); + this.position += 3; // End Data Tag + this.length = this.position; + break; + } + + len = this.length - 11; + + // write the DataSize field + this.bytes[ 1] = (len & 0x00FF0000) >>> 16; + this.bytes[ 2] = (len & 0x0000FF00) >>> 8; + this.bytes[ 3] = (len & 0x000000FF) >>> 0; + // write the Timestamp + this.bytes[ 4] = (this.dts & 0x00FF0000) >>> 16; + this.bytes[ 5] = (this.dts & 0x0000FF00) >>> 8; + this.bytes[ 6] = (this.dts & 0x000000FF) >>> 0; + this.bytes[ 7] = (this.dts & 0xFF000000) >>> 24; + // write the StreamID + this.bytes[ 8] = 0; + this.bytes[ 9] = 0; + this.bytes[10] = 0; + + // Sometimes we're at the end of the view and have one slot to write a + // uint32, so, prepareWrite of count 4, since, view is uint8 + prepareWrite(this, 4); + this.view.setUint32(this.length, this.length); + this.length += 4; + this.position += 4; + + // trim down the byte buffer to what is actually being used + this.bytes = this.bytes.subarray(0, this.length); + this.frameTime = FlvTag.frameTime(this.bytes); + // if bytes.bytelength isn't equal to this.length, handle error + return this; + }; +}; + +FlvTag.AUDIO_TAG = 0x08; // == 8, :uint +FlvTag.VIDEO_TAG = 0x09; // == 9, :uint +FlvTag.METADATA_TAG = 0x12; // == 18, :uint + +// (tag:ByteArray):Boolean { +FlvTag.isAudioFrame = function(tag) { + return FlvTag.AUDIO_TAG === tag[0]; +}; + +// (tag:ByteArray):Boolean { +FlvTag.isVideoFrame = function(tag) { + return FlvTag.VIDEO_TAG === tag[0]; +}; + +// (tag:ByteArray):Boolean { +FlvTag.isMetaData = function(tag) { + return FlvTag.METADATA_TAG === tag[0]; +}; + +// (tag:ByteArray):Boolean { +FlvTag.isKeyFrame = function(tag) { + if (FlvTag.isVideoFrame(tag)) { + return tag[11] === 0x17; + } + + if (FlvTag.isAudioFrame(tag)) { + return true; + } + + if (FlvTag.isMetaData(tag)) { + return true; + } + + return false; +}; + +// (tag:ByteArray):uint { +FlvTag.frameTime = function(tag) { + var pts = tag[ 4] << 16; // :uint + pts |= tag[ 5] << 8; + pts |= tag[ 6] << 0; + pts |= tag[ 7] << 24; + return pts; +}; + +module.exports = FlvTag; + +},{}],35:[function(require,module,exports){ +module.exports = { + tag: require('./flv-tag'), + Transmuxer: require('./transmuxer'), + tools: require('../tools/flv-inspector'), +}; + +},{"../tools/flv-inspector":46,"./flv-tag":34,"./transmuxer":36}],36:[function(require,module,exports){ +'use strict'; + +var Stream = require('../utils/stream.js'); +var FlvTag = require('./flv-tag.js'); +var m2ts = require('../m2ts/m2ts.js'); +var AdtsStream = require('../codecs/adts.js'); +var H264Stream = require('../codecs/h264').H264Stream; + +var + MetadataStream, + Transmuxer, + VideoSegmentStream, + AudioSegmentStream, + CoalesceStream, + collectTimelineInfo, + metaDataTag, + extraDataTag; + +/** + * Store information about the start and end of the tracka and the + * duration for each frame/sample we process in order to calculate + * the baseMediaDecodeTime + */ +collectTimelineInfo = function (track, data) { + if (typeof data.pts === 'number') { + if (track.timelineStartInfo.pts === undefined) { + track.timelineStartInfo.pts = data.pts; + } else { + track.timelineStartInfo.pts = + Math.min(track.timelineStartInfo.pts, data.pts); + } + } + + if (typeof data.dts === 'number') { + if (track.timelineStartInfo.dts === undefined) { + track.timelineStartInfo.dts = data.dts; + } else { + track.timelineStartInfo.dts = + Math.min(track.timelineStartInfo.dts, data.dts); + } + } +}; + +metaDataTag = function(track, pts) { + var + tag = new FlvTag(FlvTag.METADATA_TAG); // :FlvTag + + tag.dts = pts; + tag.pts = pts; + + tag.writeMetaDataDouble("videocodecid", 7); + tag.writeMetaDataDouble("width", track.width); + tag.writeMetaDataDouble("height", track.height); + + return tag; +}; + +extraDataTag = function(track, pts) { + var + i, + tag = new FlvTag(FlvTag.VIDEO_TAG, true); + + tag.dts = pts; + tag.pts = pts; + + tag.writeByte(0x01);// version + tag.writeByte(track.profileIdc);// profile + tag.writeByte(track.profileCompatibility);// compatibility + tag.writeByte(track.levelIdc);// level + tag.writeByte(0xFC | 0x03); // reserved (6 bits), NULA length size - 1 (2 bits) + tag.writeByte(0xE0 | 0x01 ); // reserved (3 bits), num of SPS (5 bits) + tag.writeShort( track.sps[0].length ); // data of SPS + tag.writeBytes( track.sps[0] ); // SPS + + tag.writeByte(track.pps.length); // num of PPS (will there ever be more that 1 PPS?) + for (i = 0 ; i < track.pps.length ; ++i) { + tag.writeShort(track.pps[i].length); // 2 bytes for length of PPS + tag.writeBytes(track.pps[i]); // data of PPS + } + + return tag; +}; + +/** + * Constructs a single-track, media segment from AAC data + * events. The output of this stream can be fed to flash. + */ +AudioSegmentStream = function(track) { + var + adtsFrames = [], + adtsFramesLength = 0, + sequenceNumber = 0, + earliestAllowedDts = 0, + oldExtraData; + + AudioSegmentStream.prototype.init.call(this); + + this.push = function(data) { + collectTimelineInfo(track, data); + + if (track && track.channelcount === undefined) { + track.audioobjecttype = data.audioobjecttype; + track.channelcount = data.channelcount; + track.samplerate = data.samplerate; + track.samplingfrequencyindex = data.samplingfrequencyindex; + track.samplesize = data.samplesize; + track.extraData = (track.audioobjecttype << 11) | + (track.samplingfrequencyindex << 7) | + (track.channelcount << 3); + } + + data.pts = Math.round(data.pts / 90); + data.dts = Math.round(data.dts / 90); + + // buffer audio data until end() is called + adtsFrames.push(data); + }; + + this.flush = function() { + var currentFrame, adtsFrame, deltaDts,lastMetaPts, tags = []; + // return early if no audio data has been observed + if (adtsFrames.length === 0) { + this.trigger('done'); + return; + } + + lastMetaPts = -Infinity; + + while (adtsFrames.length) { + currentFrame = adtsFrames.shift(); + + // write out metadata tags every 1 second so that the decoder + // is re-initialized quickly after seeking into a different + // audio configuration + if (track.extraData !== oldExtraData || currentFrame.pts - lastMetaPts >= 1000) { + adtsFrame = new FlvTag(FlvTag.METADATA_TAG); + adtsFrame.pts = currentFrame.pts; + adtsFrame.dts = currentFrame.dts; + + // AAC is always 10 + adtsFrame.writeMetaDataDouble("audiocodecid", 10); + adtsFrame.writeMetaDataBoolean("stereo", 2 === track.channelcount); + adtsFrame.writeMetaDataDouble ("audiosamplerate", track.samplerate); + // Is AAC always 16 bit? + adtsFrame.writeMetaDataDouble ("audiosamplesize", 16); + + tags.push(adtsFrame); + + oldExtraData = track.extraData; + + adtsFrame = new FlvTag(FlvTag.AUDIO_TAG, true); + // For audio, DTS is always the same as PTS. We want to set the DTS + // however so we can compare with video DTS to determine approximate + // packet order + adtsFrame.pts = currentFrame.pts; + adtsFrame.dts = currentFrame.dts; + + adtsFrame.view.setUint16(adtsFrame.position, track.extraData); + adtsFrame.position += 2; + adtsFrame.length = Math.max(adtsFrame.length, adtsFrame.position); + + tags.push(adtsFrame); + + lastMetaPts = currentFrame.pts; + } + adtsFrame = new FlvTag(FlvTag.AUDIO_TAG); + adtsFrame.pts = currentFrame.pts; + adtsFrame.dts = currentFrame.dts; + + adtsFrame.writeBytes(currentFrame.data); + + tags.push(adtsFrame); + } + + oldExtraData = null; + this.trigger('data', {track: track, tags: tags}); + + this.trigger('done'); + }; +}; +AudioSegmentStream.prototype = new Stream(); + +/** + * Store FlvTags for the h264 stream + * @param track {object} track metadata configuration + */ +VideoSegmentStream = function(track) { + var + sequenceNumber = 0, + nalUnits = [], + nalUnitsLength = 0, + config, + h264Frame; + VideoSegmentStream.prototype.init.call(this); + + this.finishFrame = function(tags, frame) { + if (!frame) { + return; + } + // Check if keyframe and the length of tags. + // This makes sure we write metadata on the first frame of a segment. + if (config && track && track.newMetadata && + (frame.keyFrame || tags.length === 0)) { + // Push extra data on every IDR frame in case we did a stream change + seek + tags.push(metaDataTag(config, frame.pts)); + tags.push(extraDataTag(track, frame.pts)); + track.newMetadata = false; + } + + frame.endNalUnit(); + tags.push(frame); + }; + + this.push = function(data) { + collectTimelineInfo(track, data); + + data.pts = Math.round(data.pts / 90); + data.dts = Math.round(data.dts / 90); + + // buffer video until flush() is called + nalUnits.push(data); + }; + + this.flush = function() { + var + currentNal, + tags = []; + + // Throw away nalUnits at the start of the byte stream until we find + // the first AUD + while (nalUnits.length) { + if (nalUnits[0].nalUnitType === 'access_unit_delimiter_rbsp') { + break; + } + nalUnits.shift(); + } + + // return early if no video data has been observed + if (nalUnits.length === 0) { + this.trigger('done'); + return; + } + + while (nalUnits.length) { + currentNal = nalUnits.shift(); + + // record the track config + if (currentNal.nalUnitType === 'seq_parameter_set_rbsp') { + track.newMetadata = true; + config = currentNal.config; + track.width = config.width; + track.height = config.height; + track.sps = [currentNal.data]; + track.profileIdc = config.profileIdc; + track.levelIdc = config.levelIdc; + track.profileCompatibility = config.profileCompatibility; + h264Frame.endNalUnit(); + } else if (currentNal.nalUnitType === 'pic_parameter_set_rbsp') { + track.newMetadata = true; + track.pps = [currentNal.data]; + h264Frame.endNalUnit(); + } else if (currentNal.nalUnitType === 'access_unit_delimiter_rbsp') { + if (h264Frame) { + this.finishFrame(tags, h264Frame); + } + h264Frame = new FlvTag(FlvTag.VIDEO_TAG); + h264Frame.pts = currentNal.pts; + h264Frame.dts = currentNal.dts; + } else { + if (currentNal.nalUnitType === 'slice_layer_without_partitioning_rbsp_idr') { + // the current sample is a key frame + h264Frame.keyFrame = true; + } + h264Frame.endNalUnit(); + } + h264Frame.startNalUnit(); + h264Frame.writeBytes(currentNal.data); + } + if (h264Frame) { + this.finishFrame(tags, h264Frame); + } + + this.trigger('data', {track: track, tags: tags}); + + // Continue with the flush process now + this.trigger('done'); + }; +}; + +VideoSegmentStream.prototype = new Stream(); + +/** + * The final stage of the transmuxer that emits the flv tags + * for audio, video, and metadata. Also tranlates in time and + * outputs caption data and id3 cues. + */ +CoalesceStream = function(options) { + // Number of Tracks per output segment + // If greater than 1, we combine multiple + // tracks into a single segment + this.numberOfTracks = 0; + this.metadataStream = options.metadataStream; + + this.videoTags = []; + this.audioTags = []; + this.videoTrack = null; + this.audioTrack = null; + this.pendingCaptions = []; + this.pendingMetadata = []; + this.pendingTracks = 0; + + CoalesceStream.prototype.init.call(this); + + // Take output from multiple + this.push = function(output) { + // buffer incoming captions until the associated video segment + // finishes + if (output.text) { + return this.pendingCaptions.push(output); + } + // buffer incoming id3 tags until the final flush + if (output.frames) { + return this.pendingMetadata.push(output); + } + + if (output.track.type === 'video') { + this.videoTrack = output.track; + this.videoTags = output.tags; + this.pendingTracks++; + } + if (output.track.type === 'audio') { + this.audioTrack = output.track; + this.audioTags = output.tags; + this.pendingTracks++; + } + }; +}; + +CoalesceStream.prototype = new Stream(); +CoalesceStream.prototype.flush = function() { + var + id3, + caption, + i, + timelineStartPts, + event = { + tags: {}, + captions: [], + metadata: [] + }; + + if (this.pendingTracks < this.numberOfTracks) { + return; + } + + if (this.videoTrack) { + timelineStartPts = this.videoTrack.timelineStartInfo.pts; + } else if (this.audioTrack) { + timelineStartPts = this.audioTrack.timelineStartInfo.pts; + } + + event.tags.videoTags = this.videoTags; + event.tags.audioTags = this.audioTags; + + // Translate caption PTS times into second offsets into the + // video timeline for the segment + for (i = 0; i < this.pendingCaptions.length; i++) { + caption = this.pendingCaptions[i]; + caption.startTime = caption.startPts - timelineStartPts; + caption.startTime /= 90e3; + caption.endTime = caption.endPts - timelineStartPts; + caption.endTime /= 90e3; + event.captions.push(caption); + } + + // Translate ID3 frame PTS times into second offsets into the + // video timeline for the segment + for (i = 0; i < this.pendingMetadata.length; i++) { + id3 = this.pendingMetadata[i]; + id3.cueTime = id3.pts - timelineStartPts; + id3.cueTime /= 90e3; + event.metadata.push(id3); + } + // We add this to every single emitted segment even though we only need + // it for the first + event.metadata.dispatchType = this.metadataStream.dispatchType; + + // Reset stream state + this.videoTrack = null; + this.audioTrack = null; + this.videoTags = []; + this.audioTags = []; + this.pendingCaptions.length = 0; + this.pendingMetadata.length = 0; + this.pendingTracks = 0; + + // Emit the final segment + this.trigger('data', event); + + this.trigger('done'); +}; + +/** + * An object that incrementally transmuxes MPEG2 Trasport Stream + * chunks into an FLV. + */ +Transmuxer = function(options) { + var + self = this, + videoTrack, + audioTrack, + + packetStream, parseStream, elementaryStream, + adtsStream, h264Stream, + videoSegmentStream, audioSegmentStream, captionStream, + coalesceStream; + + Transmuxer.prototype.init.call(this); + + options = options || {}; + + // expose the metadata stream + this.metadataStream = new m2ts.MetadataStream(); + + options.metadataStream = this.metadataStream; + + // set up the parsing pipeline + packetStream = new m2ts.TransportPacketStream(); + parseStream = new m2ts.TransportParseStream(); + elementaryStream = new m2ts.ElementaryStream(); + adtsStream = new AdtsStream(); + h264Stream = new H264Stream(); + coalesceStream = new CoalesceStream(options); + + // disassemble MPEG2-TS packets into elementary streams + packetStream + .pipe(parseStream) + .pipe(elementaryStream); + + // !!THIS ORDER IS IMPORTANT!! + // demux the streams + elementaryStream + .pipe(h264Stream); + elementaryStream + .pipe(adtsStream); + + elementaryStream + .pipe(this.metadataStream) + .pipe(coalesceStream); + // if CEA-708 parsing is available, hook up a caption stream + captionStream = new m2ts.CaptionStream(); + h264Stream.pipe(captionStream) + .pipe(coalesceStream); + + // hook up the segment streams once track metadata is delivered + elementaryStream.on('data', function(data) { + var i, videoTrack, audioTrack; + + if (data.type === 'metadata') { + i = data.tracks.length; + + // scan the tracks listed in the metadata + while (i--) { + if (data.tracks[i].type === 'video') { + videoTrack = data.tracks[i]; + } else if (data.tracks[i].type === 'audio') { + audioTrack = data.tracks[i]; + } + } + + // hook up the video segment stream to the first track with h264 data + if (videoTrack && !videoSegmentStream) { + coalesceStream.numberOfTracks++; + videoSegmentStream = new VideoSegmentStream(videoTrack); + + // Set up the final part of the video pipeline + h264Stream + .pipe(videoSegmentStream) + .pipe(coalesceStream); + } + + if (audioTrack && !audioSegmentStream) { + // hook up the audio segment stream to the first track with aac data + coalesceStream.numberOfTracks++; + audioSegmentStream = new AudioSegmentStream(audioTrack); + + // Set up the final part of the audio pipeline + adtsStream + .pipe(audioSegmentStream) + .pipe(coalesceStream); + } + } + }); + + // feed incoming data to the front of the parsing pipeline + this.push = function(data) { + packetStream.push(data); + }; + + // flush any buffered data + this.flush = function() { + // Start at the top of the pipeline and flush all pending work + packetStream.flush(); + }; + + // Re-emit any data coming from the coalesce stream to the outside world + coalesceStream.on('data', function (event) { + self.trigger('data', event); + }); + + // Let the consumer know we have finished flushing the entire pipeline + coalesceStream.on('done', function () { + self.trigger('done'); + }); + + // For information on the FLV format, see + // http://download.macromedia.com/f4v/video_file_format_spec_v10_1.pdf. + // Technically, this function returns the header and a metadata FLV tag + // if duration is greater than zero + // duration in seconds + // @return {object} the bytes of the FLV header as a Uint8Array + this.getFlvHeader = function(duration, audio, video) { // :ByteArray { + var + headBytes = new Uint8Array(3 + 1 + 1 + 4), + head = new DataView(headBytes.buffer), + metadata, + result, + metadataLength; + + // default arguments + duration = duration || 0; + audio = audio === undefined? true : audio; + video = video === undefined? true : video; + + // signature + head.setUint8(0, 0x46); // 'F' + head.setUint8(1, 0x4c); // 'L' + head.setUint8(2, 0x56); // 'V' + + // version + head.setUint8(3, 0x01); + + // flags + head.setUint8(4, (audio ? 0x04 : 0x00) | (video ? 0x01 : 0x00)); + + // data offset, should be 9 for FLV v1 + head.setUint32(5, headBytes.byteLength); + + // init the first FLV tag + if (duration <= 0) { + // no duration available so just write the first field of the first + // FLV tag + result = new Uint8Array(headBytes.byteLength + 4); + result.set(headBytes); + result.set([0, 0, 0, 0], headBytes.byteLength); + return result; + } + + // write out the duration metadata tag + metadata = new FlvTag(FlvTag.METADATA_TAG); + metadata.pts = metadata.dts = 0; + metadata.writeMetaDataDouble("duration", duration); + metadataLength = metadata.finalize().length; + result = new Uint8Array(headBytes.byteLength + metadataLength); + result.set(headBytes); + result.set(head.byteLength, metadataLength); + + return result; + }; +}; +Transmuxer.prototype = new Stream(); + +// forward compatibility +module.exports = Transmuxer; + +},{"../codecs/adts.js":31,"../codecs/h264":32,"../m2ts/m2ts.js":40,"../utils/stream.js":49,"./flv-tag.js":34}],37:[function(require,module,exports){ +'use strict'; + +var muxjs = { + codecs: require('./codecs'), + mp4: require('./mp4'), + flv: require('./flv'), + mp2t: require('./m2ts'), +}; +module.exports = muxjs; + +},{"./codecs":33,"./flv":35,"./m2ts":39,"./mp4":43}],38:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2015 Brightcove + * All rights reserved. + * + * Reads in-band caption information from a video elementary + * stream. Captions must follow the CEA-708 standard for injection + * into an MPEG-2 transport streams. + * @see https://en.wikipedia.org/wiki/CEA-708 + */ + +'use strict'; + +// ----------------- +// Link To Transport +// ----------------- + +// Supplemental enhancement information (SEI) NAL units have a +// payload type field to indicate how they are to be +// interpreted. CEAS-708 caption content is always transmitted with +// payload type 0x04. +var USER_DATA_REGISTERED_ITU_T_T35 = 4, + RBSP_TRAILING_BITS = 128, + Stream = require('../utils/stream'); + +/** + * Parse a supplemental enhancement information (SEI) NAL unit. + * Stops parsing once a message of type ITU T T35 has been found. + * + * @param bytes {Uint8Array} the bytes of a SEI NAL unit + * @return {object} the parsed SEI payload + * @see Rec. ITU-T H.264, 7.3.2.3.1 + */ +var parseSei = function(bytes) { + var + i = 0, + result = { + payloadType: -1, + payloadSize: 0, + }, + payloadType = 0, + payloadSize = 0; + + // go through the sei_rbsp parsing each each individual sei_message + while (i < bytes.byteLength) { + // stop once we have hit the end of the sei_rbsp + if (bytes[i] === RBSP_TRAILING_BITS) { + break; + } + + // Parse payload type + while (bytes[i] === 0xFF) { + payloadType += 255; + i++; + } + payloadType += bytes[i++]; + + // Parse payload size + while (bytes[i] === 0xFF) { + payloadSize += 255; + i++; + } + payloadSize += bytes[i++]; + + // this sei_message is a 608/708 caption so save it and break + // there can only ever be one caption message in a frame's sei + if (!result.payload && payloadType === USER_DATA_REGISTERED_ITU_T_T35) { + result.payloadType = payloadType; + result.payloadSize = payloadSize; + result.payload = bytes.subarray(i, i + payloadSize); + break; + } + + // skip the payload and parse the next message + i += payloadSize; + payloadType = 0; + payloadSize = 0; + } + + return result; +}; + +// see ANSI/SCTE 128-1 (2013), section 8.1 +var parseUserData = function(sei) { + // itu_t_t35_contry_code must be 181 (United States) for + // captions + if (sei.payload[0] !== 181) { + return null; + } + + // itu_t_t35_provider_code should be 49 (ATSC) for captions + if (((sei.payload[1] << 8) | sei.payload[2]) !== 49) { + return null; + } + + // the user_identifier should be "GA94" to indicate ATSC1 data + if (String.fromCharCode(sei.payload[3], + sei.payload[4], + sei.payload[5], + sei.payload[6]) !== 'GA94') { + return null; + } + + // finally, user_data_type_code should be 0x03 for caption data + if (sei.payload[7] !== 0x03) { + return null; + } + + // return the user_data_type_structure and strip the trailing + // marker bits + return sei.payload.subarray(8, sei.payload.length - 1); +}; + +// see CEA-708-D, section 4.4 +var parseCaptionPackets = function(pts, userData) { + var results = [], i, count, offset, data; + + // if this is just filler, return immediately + if (!(userData[0] & 0x40)) { + return results; + } + + // parse out the cc_data_1 and cc_data_2 fields + count = userData[0] & 0x1f; + for (i = 0; i < count; i++) { + offset = i * 3; + data = { + type: userData[offset + 2] & 0x03, + pts: pts + }; + + // capture cc data when cc_valid is 1 + if (userData[offset + 2] & 0x04) { + data.ccData = (userData[offset + 3] << 8) | userData[offset + 4]; + results.push(data); + } + } + return results; +}; + +var CaptionStream = function() { + var self = this; + CaptionStream.prototype.init.call(this); + + this.captionPackets_ = []; + + this.field1_ = new Cea608Stream(); + + // forward data and done events from field1_ to this CaptionStream + this.field1_.on('data', this.trigger.bind(this, 'data')); + this.field1_.on('done', this.trigger.bind(this, 'done')); +}; +CaptionStream.prototype = new Stream(); +CaptionStream.prototype.push = function(event) { + var sei, userData, captionPackets; + + // only examine SEI NALs + if (event.nalUnitType !== 'sei_rbsp') { + return; + } + + // parse the sei + sei = parseSei(event.escapedRBSP); + + // ignore everything but user_data_registered_itu_t_t35 + if (sei.payloadType !== USER_DATA_REGISTERED_ITU_T_T35) { + return; + } + + // parse out the user data payload + userData = parseUserData(sei); + + // ignore unrecognized userData + if (!userData) { + return; + } + + // parse out CC data packets and save them for later + this.captionPackets_ = this.captionPackets_.concat(parseCaptionPackets(event.pts, userData)); +}; + +CaptionStream.prototype.flush = function () { + // make sure we actually parsed captions before proceeding + if (!this.captionPackets_.length) { + this.field1_.flush(); + return; + } + + // sort caption byte-pairs based on their PTS values + this.captionPackets_.sort(function(a, b) { + return a.pts - b.pts; + }); + + // Push each caption into Cea608Stream + this.captionPackets_.forEach(this.field1_.push, this.field1_); + + this.captionPackets_.length = 0; + this.field1_.flush(); + return; +}; +// ---------------------- +// Session to Application +// ---------------------- + +var BASIC_CHARACTER_TRANSLATION = { + 0x2a: 0xe1, + 0x5c: 0xe9, + 0x5e: 0xed, + 0x5f: 0xf3, + 0x60: 0xfa, + 0x7b: 0xe7, + 0x7c: 0xf7, + 0x7d: 0xd1, + 0x7e: 0xf1, + 0x7f: 0x2588 +}; + +var getCharFromCode = function(code) { + if(code === null) { + return ''; + } + code = BASIC_CHARACTER_TRANSLATION[code] || code; + return String.fromCharCode(code); +}; + +// Constants for the byte codes recognized by Cea608Stream. This +// list is not exhaustive. For a more comprehensive listing and +// semantics see +// http://www.gpo.gov/fdsys/pkg/CFR-2010-title47-vol1/pdf/CFR-2010-title47-vol1-sec15-119.pdf +var PADDING = 0x0000, + + // Pop-on Mode + RESUME_CAPTION_LOADING = 0x1420, + END_OF_CAPTION = 0x142f, + + // Roll-up Mode + ROLL_UP_2_ROWS = 0x1425, + ROLL_UP_3_ROWS = 0x1426, + ROLL_UP_4_ROWS = 0x1427, + RESUME_DIRECT_CAPTIONING = 0x1429, + CARRIAGE_RETURN = 0x142d, + // Erasure + BACKSPACE = 0x1421, + ERASE_DISPLAYED_MEMORY = 0x142c, + ERASE_NON_DISPLAYED_MEMORY = 0x142e; + +// the index of the last row in a CEA-608 display buffer +var BOTTOM_ROW = 14; +// CEA-608 captions are rendered onto a 34x15 matrix of character +// cells. The "bottom" row is the last element in the outer array. +var createDisplayBuffer = function() { + var result = [], i = BOTTOM_ROW + 1; + while (i--) { + result.push(''); + } + return result; +}; + +var Cea608Stream = function() { + Cea608Stream.prototype.init.call(this); + + this.mode_ = 'popOn'; + // When in roll-up mode, the index of the last row that will + // actually display captions. If a caption is shifted to a row + // with a lower index than this, it is cleared from the display + // buffer + this.topRow_ = 0; + this.startPts_ = 0; + this.displayed_ = createDisplayBuffer(); + this.nonDisplayed_ = createDisplayBuffer(); + this.lastControlCode_ = null; + + this.push = function(packet) { + // Ignore other channels + if (packet.type !== 0) { + return; + } + var data, swap, char0, char1; + // remove the parity bits + data = packet.ccData & 0x7f7f; + + // ignore duplicate control codes + if (data === this.lastControlCode_) { + this.lastControlCode_ = null; + return; + } + + // Store control codes + if ((data & 0xf000) === 0x1000) { + this.lastControlCode_ = data; + } else { + this.lastControlCode_ = null; + } + + switch (data) { + case PADDING: + break; + case RESUME_CAPTION_LOADING: + this.mode_ = 'popOn'; + break; + case END_OF_CAPTION: + // if a caption was being displayed, it's gone now + this.flushDisplayed(packet.pts); + + // flip memory + swap = this.displayed_; + this.displayed_ = this.nonDisplayed_; + this.nonDisplayed_ = swap; + + // start measuring the time to display the caption + this.startPts_ = packet.pts; + break; + + case ROLL_UP_2_ROWS: + this.topRow_ = BOTTOM_ROW - 1; + this.mode_ = 'rollUp'; + break; + case ROLL_UP_3_ROWS: + this.topRow_ = BOTTOM_ROW - 2; + this.mode_ = 'rollUp'; + break; + case ROLL_UP_4_ROWS: + this.topRow_ = BOTTOM_ROW - 3; + this.mode_ = 'rollUp'; + break; + case CARRIAGE_RETURN: + this.flushDisplayed(packet.pts); + this.shiftRowsUp_(); + this.startPts_ = packet.pts; + break; + + case BACKSPACE: + if (this.mode_ === 'popOn') { + this.nonDisplayed_[BOTTOM_ROW] = this.nonDisplayed_[BOTTOM_ROW].slice(0, -1); + } else { + this.displayed_[BOTTOM_ROW] = this.displayed_[BOTTOM_ROW].slice(0, -1); + } + break; + case ERASE_DISPLAYED_MEMORY: + this.flushDisplayed(packet.pts); + this.displayed_ = createDisplayBuffer(); + break; + case ERASE_NON_DISPLAYED_MEMORY: + this.nonDisplayed_ = createDisplayBuffer(); + break; + default: + char0 = data >>> 8; + char1 = data & 0xff; + + // Look for a Channel 1 Preamble Address Code + if (char0 >= 0x10 && char0 <= 0x17 && + char1 >= 0x40 && char1 <= 0x7F && + (char0 !== 0x10 || char1 < 0x60)) { + // Follow Safari's lead and replace the PAC with a space + char0 = 0x20; + // we only want one space so make the second character null + // which will get become '' in getCharFromCode + char1 = null; + } + + // Look for special character sets + if ((char0 === 0x11 || char0 === 0x19) && + (char1 >= 0x30 && char1 <= 0x3F)) { + // Put in eigth note and space + char0 = 0xE299AA; + char1 = ''; + } + + // ignore unsupported control codes + if ((char0 & 0xf0) === 0x10) { + return; + } + + // character handling is dependent on the current mode + this[this.mode_](packet.pts, char0, char1); + break; + } + }; +}; +Cea608Stream.prototype = new Stream(); +// Trigger a cue point that captures the current state of the +// display buffer +Cea608Stream.prototype.flushDisplayed = function(pts) { + var row, i; + + for (i = 0; i < this.displayed_.length; i++) { + row = this.displayed_[i]; + if (row.length) { + this.trigger('data', { + startPts: this.startPts_, + endPts: pts, + // remove spaces from the start and end of the string + text: row.trim() + }); + } + } +}; + +// Mode Implementations +Cea608Stream.prototype.popOn = function(pts, char0, char1) { + var baseRow = this.nonDisplayed_[BOTTOM_ROW]; + + // buffer characters + baseRow += getCharFromCode(char0); + baseRow += getCharFromCode(char1); + this.nonDisplayed_[BOTTOM_ROW] = baseRow; +}; + +Cea608Stream.prototype.rollUp = function(pts, char0, char1) { + var baseRow = this.displayed_[BOTTOM_ROW]; + if (baseRow === '') { + // we're starting to buffer new display input, so flush out the + // current display + this.flushDisplayed(pts); + + this.startPts_ = pts; + } + + baseRow += getCharFromCode(char0); + baseRow += getCharFromCode(char1); + + this.displayed_[BOTTOM_ROW] = baseRow; +}; +Cea608Stream.prototype.shiftRowsUp_ = function() { + var i; + // clear out inactive rows + for (i = 0; i < this.topRow_; i++) { + this.displayed_[i] = ''; + } + // shift displayed rows up + for (i = this.topRow_; i < BOTTOM_ROW; i++) { + this.displayed_[i] = this.displayed_[i + 1]; + } + // clear out the bottom row + this.displayed_[BOTTOM_ROW] = ''; +}; + +// exports +module.exports = { + CaptionStream: CaptionStream, + Cea608Stream: Cea608Stream, +}; + + +},{"../utils/stream":49}],39:[function(require,module,exports){ +module.exports = require('./m2ts'); + +},{"./m2ts":40}],40:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2015 Brightcove + * All rights reserved. + * + * A stream-based mp2t to mp4 converter. This utility can be used to + * deliver mp4s to a SourceBuffer on platforms that support native + * Media Source Extensions. + */ +'use strict'; +var Stream = require('../utils/stream.js'), + CaptionStream = require('./caption-stream'), + StreamTypes = require('./stream-types'); + +var Stream = require('../utils/stream.js'); +var m2tsStreamTypes = require('./stream-types.js'); + +// object types +var + TransportPacketStream, TransportParseStream, ElementaryStream, + AacStream, H264Stream, NalByteStream; + +// constants +var + MP2T_PACKET_LENGTH = 188, // bytes + SYNC_BYTE = 0x47, + +/** + * Splits an incoming stream of binary data into MPEG-2 Transport + * Stream packets. + */ +TransportPacketStream = function() { + var + buffer = new Uint8Array(MP2T_PACKET_LENGTH), + bytesInBuffer = 0; + + TransportPacketStream.prototype.init.call(this); + + // Deliver new bytes to the stream. + + this.push = function(bytes) { + var + i = 0, + startIndex = 0, + endIndex = MP2T_PACKET_LENGTH, + everything; + + // If there are bytes remaining from the last segment, prepend them to the + // bytes that were pushed in + if (bytesInBuffer) { + everything = new Uint8Array(bytes.byteLength + bytesInBuffer); + everything.set(buffer.subarray(0, bytesInBuffer)); + everything.set(bytes, bytesInBuffer); + bytesInBuffer = 0; + } else { + everything = bytes; + } + + // While we have enough data for a packet + while (endIndex < everything.byteLength) { + // Look for a pair of start and end sync bytes in the data.. + if (everything[startIndex] === SYNC_BYTE && everything[endIndex] === SYNC_BYTE) { + // We found a packet so emit it and jump one whole packet forward in + // the stream + this.trigger('data', everything.subarray(startIndex, endIndex)); + startIndex += MP2T_PACKET_LENGTH; + endIndex += MP2T_PACKET_LENGTH; + continue; + } + // If we get here, we have somehow become de-synchronized and we need to step + // forward one byte at a time until we find a pair of sync bytes that denote + // a packet + startIndex++; + endIndex++; + } + + // If there was some data left over at the end of the segment that couldn't + // possibly be a whole packet, keep it because it might be the start of a packet + // that continues in the next segment + if (startIndex < everything.byteLength) { + buffer.set(everything.subarray(startIndex), 0); + bytesInBuffer = everything.byteLength - startIndex; + } + }; + + this.flush = function () { + // If the buffer contains a whole packet when we are being flushed, emit it + // and empty the buffer. Otherwise hold onto the data because it may be + // important for decoding the next segment + if (bytesInBuffer === MP2T_PACKET_LENGTH && buffer[0] === SYNC_BYTE) { + this.trigger('data', buffer); + bytesInBuffer = 0; + } + this.trigger('done'); + }; +}; +TransportPacketStream.prototype = new Stream(); + +/** + * Accepts an MP2T TransportPacketStream and emits data events with parsed + * forms of the individual transport stream packets. + */ +TransportParseStream = function() { + var parsePsi, parsePat, parsePmt, parsePes, self; + TransportParseStream.prototype.init.call(this); + self = this; + + this.packetsWaitingForPmt = []; + this.programMapTable = undefined; + + parsePsi = function(payload, psi) { + var offset = 0; + + // PSI packets may be split into multiple sections and those + // sections may be split into multiple packets. If a PSI + // section starts in this packet, the payload_unit_start_indicator + // will be true and the first byte of the payload will indicate + // the offset from the current position to the start of the + // section. + if (psi.payloadUnitStartIndicator) { + offset += payload[offset] + 1; + } + + if (psi.type === 'pat') { + parsePat(payload.subarray(offset), psi); + } else { + parsePmt(payload.subarray(offset), psi); + } + }; + + parsePat = function(payload, pat) { + pat.section_number = payload[7]; + pat.last_section_number = payload[8]; + + // skip the PSI header and parse the first PMT entry + self.pmtPid = (payload[10] & 0x1F) << 8 | payload[11]; + pat.pmtPid = self.pmtPid; + }; + + /** + * Parse out the relevant fields of a Program Map Table (PMT). + * @param payload {Uint8Array} the PMT-specific portion of an MP2T + * packet. The first byte in this array should be the table_id + * field. + * @param pmt {object} the object that should be decorated with + * fields parsed from the PMT. + */ + parsePmt = function(payload, pmt) { + var sectionLength, tableEnd, programInfoLength, offset; + + // PMTs can be sent ahead of the time when they should actually + // take effect. We don't believe this should ever be the case + // for HLS but we'll ignore "forward" PMT declarations if we see + // them. Future PMT declarations have the current_next_indicator + // set to zero. + if (!(payload[5] & 0x01)) { + return; + } + + // overwrite any existing program map table + self.programMapTable = {}; + + // the mapping table ends at the end of the current section + sectionLength = (payload[1] & 0x0f) << 8 | payload[2]; + tableEnd = 3 + sectionLength - 4; + + // to determine where the table is, we have to figure out how + // long the program info descriptors are + programInfoLength = (payload[10] & 0x0f) << 8 | payload[11]; + + // advance the offset to the first entry in the mapping table + offset = 12 + programInfoLength; + while (offset < tableEnd) { + // add an entry that maps the elementary_pid to the stream_type + self.programMapTable[(payload[offset + 1] & 0x1F) << 8 | payload[offset + 2]] = payload[offset]; + + // move to the next table entry + // skip past the elementary stream descriptors, if present + offset += ((payload[offset + 3] & 0x0F) << 8 | payload[offset + 4]) + 5; + } + + // record the map on the packet as well + pmt.programMapTable = self.programMapTable; + + // if there are any packets waiting for a PMT to be found, process them now + while (self.packetsWaitingForPmt.length) { + self.processPes_.apply(self, self.packetsWaitingForPmt.shift()); + } + }; + + /** + * Deliver a new MP2T packet to the stream. + */ + this.push = function(packet) { + var + result = {}, + offset = 4; + + result.payloadUnitStartIndicator = !!(packet[1] & 0x40); + + // pid is a 13-bit field starting at the last bit of packet[1] + result.pid = packet[1] & 0x1f; + result.pid <<= 8; + result.pid |= packet[2]; + + // if an adaption field is present, its length is specified by the + // fifth byte of the TS packet header. The adaptation field is + // used to add stuffing to PES packets that don't fill a complete + // TS packet, and to specify some forms of timing and control data + // that we do not currently use. + if (((packet[3] & 0x30) >>> 4) > 0x01) { + offset += packet[offset] + 1; + } + + // parse the rest of the packet based on the type + if (result.pid === 0) { + result.type = 'pat'; + parsePsi(packet.subarray(offset), result); + this.trigger('data', result); + } else if (result.pid === this.pmtPid) { + result.type = 'pmt'; + parsePsi(packet.subarray(offset), result); + this.trigger('data', result); + } else if (this.programMapTable === undefined) { + // When we have not seen a PMT yet, defer further processing of + // PES packets until one has been parsed + this.packetsWaitingForPmt.push([packet, offset, result]); + } else { + this.processPes_(packet, offset, result); + } + }; + + this.processPes_ = function (packet, offset, result) { + result.streamType = this.programMapTable[result.pid]; + result.type = 'pes'; + result.data = packet.subarray(offset); + + this.trigger('data', result); + }; + +}; +TransportParseStream.prototype = new Stream(); +TransportParseStream.STREAM_TYPES = { + h264: 0x1b, + adts: 0x0f +}; + +/** + * Reconsistutes program elementary stream (PES) packets from parsed + * transport stream packets. That is, if you pipe an + * mp2t.TransportParseStream into a mp2t.ElementaryStream, the output + * events will be events which capture the bytes for individual PES + * packets plus relevant metadata that has been extracted from the + * container. + */ +ElementaryStream = function() { + var + // PES packet fragments + video = { + data: [], + size: 0 + }, + audio = { + data: [], + size: 0 + }, + timedMetadata = { + data: [], + size: 0 + }, + parsePes = function(payload, pes) { + var ptsDtsFlags; + + // find out if this packets starts a new keyframe + pes.dataAlignmentIndicator = (payload[6] & 0x04) !== 0; + // PES packets may be annotated with a PTS value, or a PTS value + // and a DTS value. Determine what combination of values is + // available to work with. + ptsDtsFlags = payload[7]; + + // PTS and DTS are normally stored as a 33-bit number. Javascript + // performs all bitwise operations on 32-bit integers but javascript + // supports a much greater range (52-bits) of integer using standard + // mathematical operations. + // We construct a 31-bit value using bitwise operators over the 31 + // most significant bits and then multiply by 4 (equal to a left-shift + // of 2) before we add the final 2 least significant bits of the + // timestamp (equal to an OR.) + if (ptsDtsFlags & 0xC0) { + // the PTS and DTS are not written out directly. For information + // on how they are encoded, see + // http://dvd.sourceforge.net/dvdinfo/pes-hdr.html + pes.pts = (payload[9] & 0x0E) << 27 + | (payload[10] & 0xFF) << 20 + | (payload[11] & 0xFE) << 12 + | (payload[12] & 0xFF) << 5 + | (payload[13] & 0xFE) >>> 3; + pes.pts *= 4; // Left shift by 2 + pes.pts += (payload[13] & 0x06) >>> 1; // OR by the two LSBs + pes.dts = pes.pts; + if (ptsDtsFlags & 0x40) { + pes.dts = (payload[14] & 0x0E ) << 27 + | (payload[15] & 0xFF ) << 20 + | (payload[16] & 0xFE ) << 12 + | (payload[17] & 0xFF ) << 5 + | (payload[18] & 0xFE ) >>> 3; + pes.dts *= 4; // Left shift by 2 + pes.dts += (payload[18] & 0x06) >>> 1; // OR by the two LSBs + } + } + + // the data section starts immediately after the PES header. + // pes_header_data_length specifies the number of header bytes + // that follow the last byte of the field. + pes.data = payload.subarray(9 + payload[8]); + }, + flushStream = function(stream, type) { + var + packetData = new Uint8Array(stream.size), + event = { + type: type + }, + i = 0, + fragment; + + // do nothing if there is no buffered data + if (!stream.data.length) { + return; + } + event.trackId = stream.data[0].pid; + + // reassemble the packet + while (stream.data.length) { + fragment = stream.data.shift(); + + packetData.set(fragment.data, i); + i += fragment.data.byteLength; + } + + // parse assembled packet's PES header + parsePes(packetData, event); + + stream.size = 0; + + self.trigger('data', event); + }, + self; + + ElementaryStream.prototype.init.call(this); + self = this; + + this.push = function(data) { + ({ + pat: function() { + // we have to wait for the PMT to arrive as well before we + // have any meaningful metadata + }, + pes: function() { + var stream, streamType; + + switch (data.streamType) { + case StreamTypes.H264_STREAM_TYPE: + case m2tsStreamTypes.H264_STREAM_TYPE: + stream = video; + streamType = 'video'; + break; + case StreamTypes.ADTS_STREAM_TYPE: + stream = audio; + streamType = 'audio'; + break; + case StreamTypes.METADATA_STREAM_TYPE: + stream = timedMetadata; + streamType = 'timed-metadata'; + break; + default: + // ignore unknown stream types + return; + } + + // if a new packet is starting, we can flush the completed + // packet + if (data.payloadUnitStartIndicator) { + flushStream(stream, streamType); + } + + // buffer this fragment until we are sure we've received the + // complete payload + stream.data.push(data); + stream.size += data.data.byteLength; + }, + pmt: function() { + var + event = { + type: 'metadata', + tracks: [] + }, + programMapTable = data.programMapTable, + k, + track; + + // translate streams to tracks + for (k in programMapTable) { + if (programMapTable.hasOwnProperty(k)) { + track = { + timelineStartInfo: { + baseMediaDecodeTime: 0 + } + }; + track.id = +k; + if (programMapTable[k] === m2tsStreamTypes.H264_STREAM_TYPE) { + track.codec = 'avc'; + track.type = 'video'; + } else if (programMapTable[k] === m2tsStreamTypes.ADTS_STREAM_TYPE) { + track.codec = 'adts'; + track.type = 'audio'; + } + event.tracks.push(track); + } + } + self.trigger('data', event); + } + })[data.type](); + }; + + /** + * Flush any remaining input. Video PES packets may be of variable + * length. Normally, the start of a new video packet can trigger the + * finalization of the previous packet. That is not possible if no + * more video is forthcoming, however. In that case, some other + * mechanism (like the end of the file) has to be employed. When it is + * clear that no additional data is forthcoming, calling this method + * will flush the buffered packets. + */ + this.flush = function() { + // !!THIS ORDER IS IMPORTANT!! + // video first then audio + flushStream(video, 'video'); + flushStream(audio, 'audio'); + flushStream(timedMetadata, 'timed-metadata'); + this.trigger('done'); + }; +}; +ElementaryStream.prototype = new Stream(); + +var m2ts = { + PAT_PID: 0x0000, + MP2T_PACKET_LENGTH: MP2T_PACKET_LENGTH, + TransportPacketStream: TransportPacketStream, + TransportParseStream: TransportParseStream, + ElementaryStream: ElementaryStream, + CaptionStream: CaptionStream.CaptionStream, + Cea608Stream: CaptionStream.Cea608Stream, + MetadataStream: require('./metadata-stream'), +}; + +for (var type in StreamTypes) { + if (StreamTypes.hasOwnProperty(type)) { + m2ts[type] = StreamTypes[type]; + } +} + +module.exports = m2ts; + +},{"../utils/stream.js":49,"./caption-stream":38,"./metadata-stream":41,"./stream-types":42,"./stream-types.js":42}],41:[function(require,module,exports){ +/** + * Accepts program elementary stream (PES) data events and parses out + * ID3 metadata from them, if present. + * @see http://id3.org/id3v2.3.0 + */ +'use strict'; +var + Stream = require('../utils/stream'), + StreamTypes = require('./stream-types'), + // return a percent-encoded representation of the specified byte range + // @see http://en.wikipedia.org/wiki/Percent-encoding + percentEncode = function(bytes, start, end) { + var i, result = ''; + for (i = start; i < end; i++) { + result += '%' + ('00' + bytes[i].toString(16)).slice(-2); + } + return result; + }, + // return the string representation of the specified byte range, + // interpreted as UTf-8. + parseUtf8 = function(bytes, start, end) { + return decodeURIComponent(percentEncode(bytes, start, end)); + }, + // return the string representation of the specified byte range, + // interpreted as ISO-8859-1. + parseIso88591 = function(bytes, start, end) { + return unescape(percentEncode(bytes, start, end)); // jshint ignore:line + }, + parseSyncSafeInteger = function (data) { + return (data[0] << 21) | + (data[1] << 14) | + (data[2] << 7) | + (data[3]); + }, + tagParsers = { + 'TXXX': function(tag) { + var i; + if (tag.data[0] !== 3) { + // ignore frames with unrecognized character encodings + return; + } + + for (i = 1; i < tag.data.length; i++) { + if (tag.data[i] === 0) { + // parse the text fields + tag.description = parseUtf8(tag.data, 1, i); + // do not include the null terminator in the tag value + tag.value = parseUtf8(tag.data, i + 1, tag.data.length - 1); + break; + } + } + tag.data = tag.value; + }, + 'WXXX': function(tag) { + var i; + if (tag.data[0] !== 3) { + // ignore frames with unrecognized character encodings + return; + } + + for (i = 1; i < tag.data.length; i++) { + if (tag.data[i] === 0) { + // parse the description and URL fields + tag.description = parseUtf8(tag.data, 1, i); + tag.url = parseUtf8(tag.data, i + 1, tag.data.length); + break; + } + } + }, + 'PRIV': function(tag) { + var i; + + for (i = 0; i < tag.data.length; i++) { + if (tag.data[i] === 0) { + // parse the description and URL fields + tag.owner = parseIso88591(tag.data, 0, i); + break; + } + } + tag.privateData = tag.data.subarray(i + 1); + tag.data = tag.privateData; + } + }, + MetadataStream; + +MetadataStream = function(options) { + var + settings = { + debug: !!(options && options.debug), + + // the bytes of the program-level descriptor field in MP2T + // see ISO/IEC 13818-1:2013 (E), section 2.6 "Program and + // program element descriptors" + descriptor: options && options.descriptor + }, + // the total size in bytes of the ID3 tag being parsed + tagSize = 0, + // tag data that is not complete enough to be parsed + buffer = [], + // the total number of bytes currently in the buffer + bufferSize = 0, + i; + + MetadataStream.prototype.init.call(this); + + // calculate the text track in-band metadata track dispatch type + // https://html.spec.whatwg.org/multipage/embedded-content.html#steps-to-expose-a-media-resource-specific-text-track + this.dispatchType = StreamTypes.METADATA_STREAM_TYPE.toString(16); + if (settings.descriptor) { + for (i = 0; i < settings.descriptor.length; i++) { + this.dispatchType += ('00' + settings.descriptor[i].toString(16)).slice(-2); + } + } + + this.push = function(chunk) { + var tag, frameStart, frameSize, frame, i, frameHeader; + if (chunk.type !== 'timed-metadata') { + return; + } + + // if data_alignment_indicator is set in the PES header, + // we must have the start of a new ID3 tag. Assume anything + // remaining in the buffer was malformed and throw it out + if (chunk.dataAlignmentIndicator) { + bufferSize = 0; + buffer.length = 0; + } + + // ignore events that don't look like ID3 data + if (buffer.length === 0 && + (chunk.data.length < 10 || + chunk.data[0] !== 'I'.charCodeAt(0) || + chunk.data[1] !== 'D'.charCodeAt(0) || + chunk.data[2] !== '3'.charCodeAt(0))) { + if (settings.debug) { + console.log('Skipping unrecognized metadata packet'); + } + return; + } + + // add this chunk to the data we've collected so far + + buffer.push(chunk); + bufferSize += chunk.data.byteLength; + + // grab the size of the entire frame from the ID3 header + if (buffer.length === 1) { + // the frame size is transmitted as a 28-bit integer in the + // last four bytes of the ID3 header. + // The most significant bit of each byte is dropped and the + // results concatenated to recover the actual value. + tagSize = parseSyncSafeInteger(chunk.data.subarray(6, 10)); + + // ID3 reports the tag size excluding the header but it's more + // convenient for our comparisons to include it + tagSize += 10; + } + + // if the entire frame has not arrived, wait for more data + if (bufferSize < tagSize) { + return; + } + + // collect the entire frame so it can be parsed + tag = { + data: new Uint8Array(tagSize), + frames: [], + pts: buffer[0].pts, + dts: buffer[0].dts + }; + for (i = 0; i < tagSize;) { + tag.data.set(buffer[0].data.subarray(0, tagSize - i), i); + i += buffer[0].data.byteLength; + bufferSize -= buffer[0].data.byteLength; + buffer.shift(); + } + + // find the start of the first frame and the end of the tag + frameStart = 10; + if (tag.data[5] & 0x40) { + // advance the frame start past the extended header + frameStart += 4; // header size field + frameStart += parseSyncSafeInteger(tag.data.subarray(10, 14)); + + // clip any padding off the end + tagSize -= parseSyncSafeInteger(tag.data.subarray(16, 20)); + } + + // parse one or more ID3 frames + // http://id3.org/id3v2.3.0#ID3v2_frame_overview + do { + // determine the number of bytes in this frame + frameSize = parseSyncSafeInteger(tag.data.subarray(frameStart + 4, frameStart + 8)); + if (frameSize < 1) { + return console.log('Malformed ID3 frame encountered. Skipping metadata parsing.'); + } + frameHeader = String.fromCharCode(tag.data[frameStart], + tag.data[frameStart + 1], + tag.data[frameStart + 2], + tag.data[frameStart + 3]); + + + frame = { + id: frameHeader, + data: tag.data.subarray(frameStart + 10, frameStart + frameSize + 10) + }; + frame.key = frame.id; + if (tagParsers[frame.id]) { + tagParsers[frame.id](frame); + if (frame.owner === 'com.apple.streaming.transportStreamTimestamp') { + var + d = frame.data, + size = ((d[3] & 0x01) << 30) | + (d[4] << 22) | + (d[5] << 14) | + (d[6] << 6) | + (d[7] >>> 2); + + size *= 4; + size += d[7] & 0x03; + frame.timeStamp = size; + this.trigger('timestamp', frame); + } + } + tag.frames.push(frame); + + frameStart += 10; // advance past the frame header + frameStart += frameSize; // advance past the frame body + } while (frameStart < tagSize); + this.trigger('data', tag); + }; +}; +MetadataStream.prototype = new Stream(); + +module.exports = MetadataStream; + +},{"../utils/stream":49,"./stream-types":42}],42:[function(require,module,exports){ +'use strict'; + +module.exports = { + H264_STREAM_TYPE: 0x1B, + ADTS_STREAM_TYPE: 0x0F, + METADATA_STREAM_TYPE: 0x15 +}; + +},{}],43:[function(require,module,exports){ +module.exports = { + generator: require('./mp4-generator'), + Transmuxer: require('./transmuxer').Transmuxer, + AudioSegmentStream: require('./transmuxer').AudioSegmentStream, + VideoSegmentStream: require('./transmuxer').VideoSegmentStream, + tools: require('../tools/mp4-inspector'), +}; + +},{"../tools/mp4-inspector":47,"./mp4-generator":44,"./transmuxer":45}],44:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2015 Brightcove + * All rights reserved. + * + * Functions that generate fragmented MP4s suitable for use with Media + * Source Extensions. + */ +'use strict'; + +var box, dinf, esds, ftyp, mdat, mfhd, minf, moof, moov, mvex, mvhd, trak, + tkhd, mdia, mdhd, hdlr, sdtp, stbl, stsd, styp, traf, trex, trun, + types, MAJOR_BRAND, MINOR_VERSION, AVC1_BRAND, VIDEO_HDLR, + AUDIO_HDLR, HDLR_TYPES, VMHD, SMHD, DREF, STCO, STSC, STSZ, STTS; + +// pre-calculate constants +(function() { + var i; + types = { + avc1: [], // codingname + avcC: [], + btrt: [], + dinf: [], + dref: [], + esds: [], + ftyp: [], + hdlr: [], + mdat: [], + mdhd: [], + mdia: [], + mfhd: [], + minf: [], + moof: [], + moov: [], + mp4a: [], // codingname + mvex: [], + mvhd: [], + sdtp: [], + smhd: [], + stbl: [], + stco: [], + stsc: [], + stsd: [], + stsz: [], + stts: [], + styp: [], + tfdt: [], + tfhd: [], + traf: [], + trak: [], + trun: [], + trex: [], + tkhd: [], + vmhd: [] + }; + + for (i in types) { + if (types.hasOwnProperty(i)) { + types[i] = [ + i.charCodeAt(0), + i.charCodeAt(1), + i.charCodeAt(2), + i.charCodeAt(3) + ]; + } + } + + MAJOR_BRAND = new Uint8Array([ + 'i'.charCodeAt(0), + 's'.charCodeAt(0), + 'o'.charCodeAt(0), + 'm'.charCodeAt(0) + ]); + AVC1_BRAND = new Uint8Array([ + 'a'.charCodeAt(0), + 'v'.charCodeAt(0), + 'c'.charCodeAt(0), + '1'.charCodeAt(0) + ]); + MINOR_VERSION = new Uint8Array([0, 0, 0, 1]); + VIDEO_HDLR = new Uint8Array([ + 0x00, // version 0 + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x00, // pre_defined + 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide' + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, // reserved + 0x56, 0x69, 0x64, 0x65, + 0x6f, 0x48, 0x61, 0x6e, + 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'VideoHandler' + ]); + AUDIO_HDLR = new Uint8Array([ + 0x00, // version 0 + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x00, // pre_defined + 0x73, 0x6f, 0x75, 0x6e, // handler_type: 'soun' + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, // reserved + 0x53, 0x6f, 0x75, 0x6e, + 0x64, 0x48, 0x61, 0x6e, + 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'SoundHandler' + ]); + HDLR_TYPES = { + "video":VIDEO_HDLR, + "audio": AUDIO_HDLR + }; + DREF = new Uint8Array([ + 0x00, // version 0 + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x01, // entry_count + 0x00, 0x00, 0x00, 0x0c, // entry_size + 0x75, 0x72, 0x6c, 0x20, // 'url' type + 0x00, // version 0 + 0x00, 0x00, 0x01 // entry_flags + ]); + SMHD = new Uint8Array([ + 0x00, // version + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, // balance, 0 means centered + 0x00, 0x00 // reserved + ]); + STCO = new Uint8Array([ + 0x00, // version + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x00 // entry_count + ]); + STSC = STCO; + STSZ = new Uint8Array([ + 0x00, // version + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x00, // sample_size + 0x00, 0x00, 0x00, 0x00, // sample_count + ]); + STTS = STCO; + VMHD = new Uint8Array([ + 0x00, // version + 0x00, 0x00, 0x01, // flags + 0x00, 0x00, // graphicsmode + 0x00, 0x00, + 0x00, 0x00, + 0x00, 0x00 // opcolor + ]); +})(); + +box = function(type) { + var + payload = [], + size = 0, + i, + result, + view; + + for (i = 1; i < arguments.length; i++) { + payload.push(arguments[i]); + } + + i = payload.length; + + // calculate the total size we need to allocate + while (i--) { + size += payload[i].byteLength; + } + result = new Uint8Array(size + 8); + view = new DataView(result.buffer, result.byteOffset, result.byteLength); + view.setUint32(0, result.byteLength); + result.set(type, 4); + + // copy the payload into the result + for (i = 0, size = 8; i < payload.length; i++) { + result.set(payload[i], size); + size += payload[i].byteLength; + } + return result; +}; + +dinf = function() { + return box(types.dinf, box(types.dref, DREF)); +}; + +esds = function(track) { + return box(types.esds, new Uint8Array([ + 0x00, // version + 0x00, 0x00, 0x00, // flags + + // ES_Descriptor + 0x03, // tag, ES_DescrTag + 0x19, // length + 0x00, 0x00, // ES_ID + 0x00, // streamDependenceFlag, URL_flag, reserved, streamPriority + + // DecoderConfigDescriptor + 0x04, // tag, DecoderConfigDescrTag + 0x11, // length + 0x40, // object type + 0x15, // streamType + 0x00, 0x06, 0x00, // bufferSizeDB + 0x00, 0x00, 0xda, 0xc0, // maxBitrate + 0x00, 0x00, 0xda, 0xc0, // avgBitrate + + // DecoderSpecificInfo + 0x05, // tag, DecoderSpecificInfoTag + 0x02, // length + // ISO/IEC 14496-3, AudioSpecificConfig + // for samplingFrequencyIndex see ISO/IEC 13818-7:2006, 8.1.3.2.2, Table 35 + (track.audioobjecttype << 3) | (track.samplingfrequencyindex >>> 1), + (track.samplingfrequencyindex << 7) | (track.channelcount << 3), + 0x06, 0x01, 0x02 // GASpecificConfig + ])); +}; + +ftyp = function() { + return box(types.ftyp, MAJOR_BRAND, MINOR_VERSION, MAJOR_BRAND, AVC1_BRAND); +}; + +hdlr = function(type) { + return box(types.hdlr, HDLR_TYPES[type]); +}; +mdat = function(data) { + return box(types.mdat, data); +}; +mdhd = function(track) { + var result = new Uint8Array([ + 0x00, // version 0 + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x02, // creation_time + 0x00, 0x00, 0x00, 0x03, // modification_time + 0x00, 0x01, 0x5f, 0x90, // timescale, 90,000 "ticks" per second + + (track.duration >>> 24) & 0xFF, + (track.duration >>> 16) & 0xFF, + (track.duration >>> 8) & 0xFF, + track.duration & 0xFF, // duration + 0x55, 0xc4, // 'und' language (undetermined) + 0x00, 0x00 + ]); + + // Use the sample rate from the track metadata, when it is + // defined. The sample rate can be parsed out of an ADTS header, for + // instance. + if (track.samplerate) { + result[12] = (track.samplerate >>> 24) & 0xFF; + result[13] = (track.samplerate >>> 16) & 0xFF; + result[14] = (track.samplerate >>> 8) & 0xFF; + result[15] = (track.samplerate) & 0xFF; + } + + return box(types.mdhd, result); +}; +mdia = function(track) { + return box(types.mdia, mdhd(track), hdlr(track.type), minf(track)); +}; +mfhd = function(sequenceNumber) { + return box(types.mfhd, new Uint8Array([ + 0x00, + 0x00, 0x00, 0x00, // flags + (sequenceNumber & 0xFF000000) >> 24, + (sequenceNumber & 0xFF0000) >> 16, + (sequenceNumber & 0xFF00) >> 8, + sequenceNumber & 0xFF, // sequence_number + ])); +}; +minf = function(track) { + return box(types.minf, + track.type === 'video' ? box(types.vmhd, VMHD) : box(types.smhd, SMHD), + dinf(), + stbl(track)); +}; +moof = function(sequenceNumber, tracks) { + var + trackFragments = [], + i = tracks.length; + // build traf boxes for each track fragment + while (i--) { + trackFragments[i] = traf(tracks[i]); + } + return box.apply(null, [ + types.moof, + mfhd(sequenceNumber) + ].concat(trackFragments)); +}; +/** + * Returns a movie box. + * @param tracks {array} the tracks associated with this movie + * @see ISO/IEC 14496-12:2012(E), section 8.2.1 + */ +moov = function(tracks) { + var + i = tracks.length, + boxes = []; + + while (i--) { + boxes[i] = trak(tracks[i]); + } + + return box.apply(null, [types.moov, mvhd(0xffffffff)].concat(boxes).concat(mvex(tracks))); +}; +mvex = function(tracks) { + var + i = tracks.length, + boxes = []; + + while (i--) { + boxes[i] = trex(tracks[i]); + } + return box.apply(null, [types.mvex].concat(boxes)); +}; +mvhd = function(duration) { + var + bytes = new Uint8Array([ + 0x00, // version 0 + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x01, // creation_time + 0x00, 0x00, 0x00, 0x02, // modification_time + 0x00, 0x01, 0x5f, 0x90, // timescale, 90,000 "ticks" per second + (duration & 0xFF000000) >> 24, + (duration & 0xFF0000) >> 16, + (duration & 0xFF00) >> 8, + duration & 0xFF, // duration + 0x00, 0x01, 0x00, 0x00, // 1.0 rate + 0x01, 0x00, // 1.0 volume + 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, // pre_defined + 0xff, 0xff, 0xff, 0xff // next_track_ID + ]); + return box(types.mvhd, bytes); +}; + +sdtp = function(track) { + var + samples = track.samples || [], + bytes = new Uint8Array(4 + samples.length), + flags, + i; + + // leave the full box header (4 bytes) all zero + + // write the sample table + for (i = 0; i < samples.length; i++) { + flags = samples[i].flags; + + bytes[i + 4] = (flags.dependsOn << 4) | + (flags.isDependedOn << 2) | + (flags.hasRedundancy); + } + + return box(types.sdtp, + bytes); +}; + +stbl = function(track) { + return box(types.stbl, + stsd(track), + box(types.stts, STTS), + box(types.stsc, STSC), + box(types.stsz, STSZ), + box(types.stco, STCO)); +}; + +(function() { + var videoSample, audioSample; + + stsd = function(track) { + + return box(types.stsd, new Uint8Array([ + 0x00, // version 0 + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x01 + ]), track.type === 'video' ? videoSample(track) : audioSample(track)); + }; + + videoSample = function(track) { + var + sps = track.sps || [], + pps = track.pps || [], + sequenceParameterSets = [], + pictureParameterSets = [], + i; + + // assemble the SPSs + for (i = 0; i < sps.length; i++) { + sequenceParameterSets.push((sps[i].byteLength & 0xFF00) >>> 8); + sequenceParameterSets.push((sps[i].byteLength & 0xFF)); // sequenceParameterSetLength + sequenceParameterSets = sequenceParameterSets.concat(Array.prototype.slice.call(sps[i])); // SPS + } + + // assemble the PPSs + for (i = 0; i < pps.length; i++) { + pictureParameterSets.push((pps[i].byteLength & 0xFF00) >>> 8); + pictureParameterSets.push((pps[i].byteLength & 0xFF)); + pictureParameterSets = pictureParameterSets.concat(Array.prototype.slice.call(pps[i])); + } + + return box(types.avc1, new Uint8Array([ + 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, // reserved + 0x00, 0x01, // data_reference_index + 0x00, 0x00, // pre_defined + 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, // pre_defined + (track.width & 0xff00) >> 8, + track.width & 0xff, // width + (track.height & 0xff00) >> 8, + track.height & 0xff, // height + 0x00, 0x48, 0x00, 0x00, // horizresolution + 0x00, 0x48, 0x00, 0x00, // vertresolution + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x01, // frame_count + 0x13, + 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x6a, 0x73, 0x2d, + 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x69, 0x62, 0x2d, + 0x68, 0x6c, 0x73, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, // compressorname + 0x00, 0x18, // depth = 24 + 0x11, 0x11 // pre_defined = -1 + ]), box(types.avcC, new Uint8Array([ + 0x01, // configurationVersion + track.profileIdc, // AVCProfileIndication + track.profileCompatibility, // profile_compatibility + track.levelIdc, // AVCLevelIndication + 0xff // lengthSizeMinusOne, hard-coded to 4 bytes + ].concat([ + sps.length // numOfSequenceParameterSets + ]).concat(sequenceParameterSets).concat([ + pps.length // numOfPictureParameterSets + ]).concat(pictureParameterSets))), // "PPS" + box(types.btrt, new Uint8Array([ + 0x00, 0x1c, 0x9c, 0x80, // bufferSizeDB + 0x00, 0x2d, 0xc6, 0xc0, // maxBitrate + 0x00, 0x2d, 0xc6, 0xc0 + ])) // avgBitrate + ); + }; + + audioSample = function(track) { + return box(types.mp4a, new Uint8Array([ + + // SampleEntry, ISO/IEC 14496-12 + 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, // reserved + 0x00, 0x01, // data_reference_index + + // AudioSampleEntry, ISO/IEC 14496-12 + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, // reserved + (track.channelcount & 0xff00) >> 8, + (track.channelcount & 0xff), // channelcount + + (track.samplesize & 0xff00) >> 8, + (track.samplesize & 0xff), // samplesize + 0x00, 0x00, // pre_defined + 0x00, 0x00, // reserved + + (track.samplerate & 0xff00) >> 8, + (track.samplerate & 0xff), + 0x00, 0x00 // samplerate, 16.16 + + // MP4AudioSampleEntry, ISO/IEC 14496-14 + ]), esds(track)); + }; +})(); + +styp = function() { + return box(types.styp, MAJOR_BRAND, MINOR_VERSION, MAJOR_BRAND); +}; + +tkhd = function(track) { + var result = new Uint8Array([ + 0x00, // version 0 + 0x00, 0x00, 0x07, // flags + 0x00, 0x00, 0x00, 0x00, // creation_time + 0x00, 0x00, 0x00, 0x00, // modification_time + (track.id & 0xFF000000) >> 24, + (track.id & 0xFF0000) >> 16, + (track.id & 0xFF00) >> 8, + track.id & 0xFF, // track_ID + 0x00, 0x00, 0x00, 0x00, // reserved + (track.duration & 0xFF000000) >> 24, + (track.duration & 0xFF0000) >> 16, + (track.duration & 0xFF00) >> 8, + track.duration & 0xFF, // duration + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, // layer + 0x00, 0x00, // alternate_group + 0x01, 0x00, // non-audio track volume + 0x00, 0x00, // reserved + 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix + (track.width & 0xFF00) >> 8, + track.width & 0xFF, + 0x00, 0x00, // width + (track.height & 0xFF00) >> 8, + track.height & 0xFF, + 0x00, 0x00 // height + ]); + + return box(types.tkhd, result); +}; + +/** + * Generate a track fragment (traf) box. A traf box collects metadata + * about tracks in a movie fragment (moof) box. + */ +traf = function(track) { + var trackFragmentHeader, trackFragmentDecodeTime, + trackFragmentRun, sampleDependencyTable, dataOffset; + + trackFragmentHeader = box(types.tfhd, new Uint8Array([ + 0x00, // version 0 + 0x00, 0x00, 0x3a, // flags + (track.id & 0xFF000000) >> 24, + (track.id & 0xFF0000) >> 16, + (track.id & 0xFF00) >> 8, + (track.id & 0xFF), // track_ID + 0x00, 0x00, 0x00, 0x01, // sample_description_index + 0x00, 0x00, 0x00, 0x00, // default_sample_duration + 0x00, 0x00, 0x00, 0x00, // default_sample_size + 0x00, 0x00, 0x00, 0x00 // default_sample_flags + ])); + + trackFragmentDecodeTime = box(types.tfdt, new Uint8Array([ + 0x00, // version 0 + 0x00, 0x00, 0x00, // flags + // baseMediaDecodeTime + (track.baseMediaDecodeTime >>> 24) & 0xFF, + (track.baseMediaDecodeTime >>> 16) & 0xFF, + (track.baseMediaDecodeTime >>> 8) & 0xFF, + track.baseMediaDecodeTime & 0xFF + ])); + + // the data offset specifies the number of bytes from the start of + // the containing moof to the first payload byte of the associated + // mdat + dataOffset = (32 + // tfhd + 16 + // tfdt + 8 + // traf header + 16 + // mfhd + 8 + // moof header + 8); // mdat header + + // audio tracks require less metadata + if (track.type === 'audio') { + trackFragmentRun = trun(track, dataOffset); + return box(types.traf, + trackFragmentHeader, + trackFragmentDecodeTime, + trackFragmentRun); + } + + // video tracks should contain an independent and disposable samples + // box (sdtp) + // generate one and adjust offsets to match + sampleDependencyTable = sdtp(track); + trackFragmentRun = trun(track, + sampleDependencyTable.length + dataOffset); + return box(types.traf, + trackFragmentHeader, + trackFragmentDecodeTime, + trackFragmentRun, + sampleDependencyTable); +}; + +/** + * Generate a track box. + * @param track {object} a track definition + * @return {Uint8Array} the track box + */ +trak = function(track) { + track.duration = track.duration || 0xffffffff; + return box(types.trak, + tkhd(track), + mdia(track)); +}; + +trex = function(track) { + var result = new Uint8Array([ + 0x00, // version 0 + 0x00, 0x00, 0x00, // flags + (track.id & 0xFF000000) >> 24, + (track.id & 0xFF0000) >> 16, + (track.id & 0xFF00) >> 8, + (track.id & 0xFF), // track_ID + 0x00, 0x00, 0x00, 0x01, // default_sample_description_index + 0x00, 0x00, 0x00, 0x00, // default_sample_duration + 0x00, 0x00, 0x00, 0x00, // default_sample_size + 0x00, 0x01, 0x00, 0x01 // default_sample_flags + ]); + // the last two bytes of default_sample_flags is the sample + // degradation priority, a hint about the importance of this sample + // relative to others. Lower the degradation priority for all sample + // types other than video. + if (track.type !== 'video') { + result[result.length - 1] = 0x00; + } + + return box(types.trex, result); +}; + +(function() { + var audioTrun, videoTrun, trunHeader; + + // This method assumes all samples are uniform. That is, if a + // duration is present for the first sample, it will be present for + // all subsequent samples. + // see ISO/IEC 14496-12:2012, Section 8.8.8.1 + trunHeader = function(samples, offset) { + var durationPresent = 0, sizePresent = 0, + flagsPresent = 0, compositionTimeOffset = 0; + + // trun flag constants + if (samples.length) { + if (samples[0].duration !== undefined) { + durationPresent = 0x1; + } + if (samples[0].size !== undefined) { + sizePresent = 0x2; + } + if (samples[0].flags !== undefined) { + flagsPresent = 0x4; + } + if (samples[0].compositionTimeOffset !== undefined) { + compositionTimeOffset = 0x8; + } + } + + return [ + 0x00, // version 0 + 0x00, + durationPresent | sizePresent | flagsPresent | compositionTimeOffset, + 0x01, // flags + (samples.length & 0xFF000000) >>> 24, + (samples.length & 0xFF0000) >>> 16, + (samples.length & 0xFF00) >>> 8, + samples.length & 0xFF, // sample_count + (offset & 0xFF000000) >>> 24, + (offset & 0xFF0000) >>> 16, + (offset & 0xFF00) >>> 8, + offset & 0xFF // data_offset + ]; + }; + + videoTrun = function(track, offset) { + var bytes, samples, sample, i; + + samples = track.samples || []; + offset += 8 + 12 + (16 * samples.length); + + bytes = trunHeader(samples, offset); + + for (i = 0; i < samples.length; i++) { + sample = samples[i]; + bytes = bytes.concat([ + (sample.duration & 0xFF000000) >>> 24, + (sample.duration & 0xFF0000) >>> 16, + (sample.duration & 0xFF00) >>> 8, + sample.duration & 0xFF, // sample_duration + (sample.size & 0xFF000000) >>> 24, + (sample.size & 0xFF0000) >>> 16, + (sample.size & 0xFF00) >>> 8, + sample.size & 0xFF, // sample_size + (sample.flags.isLeading << 2) | sample.flags.dependsOn, + (sample.flags.isDependedOn << 6) | + (sample.flags.hasRedundancy << 4) | + (sample.flags.paddingValue << 1) | + sample.flags.isNonSyncSample, + sample.flags.degradationPriority & 0xF0 << 8, + sample.flags.degradationPriority & 0x0F, // sample_flags + (sample.compositionTimeOffset & 0xFF000000) >>> 24, + (sample.compositionTimeOffset & 0xFF0000) >>> 16, + (sample.compositionTimeOffset & 0xFF00) >>> 8, + sample.compositionTimeOffset & 0xFF // sample_composition_time_offset + ]); + } + return box(types.trun, new Uint8Array(bytes)); + }; + + audioTrun = function(track, offset) { + var bytes, samples, sample, i; + + samples = track.samples || []; + offset += 8 + 12 + (8 * samples.length); + + bytes = trunHeader(samples, offset); + + for (i = 0; i < samples.length; i++) { + sample = samples[i]; + bytes = bytes.concat([ + (sample.duration & 0xFF000000) >>> 24, + (sample.duration & 0xFF0000) >>> 16, + (sample.duration & 0xFF00) >>> 8, + sample.duration & 0xFF, // sample_duration + (sample.size & 0xFF000000) >>> 24, + (sample.size & 0xFF0000) >>> 16, + (sample.size & 0xFF00) >>> 8, + sample.size & 0xFF]); // sample_size + } + + return box(types.trun, new Uint8Array(bytes)); + }; + + trun = function(track, offset) { + if (track.type === 'audio') { + return audioTrun(track, offset); + } else { + return videoTrun(track, offset); + } + }; +})(); + +module.exports = { + ftyp: ftyp, + mdat: mdat, + moof: moof, + moov: moov, + initSegment: function(tracks) { + var + fileType = ftyp(), + movie = moov(tracks), + result; + + result = new Uint8Array(fileType.byteLength + movie.byteLength); + result.set(fileType); + result.set(movie, fileType.byteLength); + return result; + } +}; + +},{}],45:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2015 Brightcove + * All rights reserved. + * + * A stream-based mp2t to mp4 converter. This utility can be used to + * deliver mp4s to a SourceBuffer on platforms that support native + * Media Source Extensions. + */ +'use strict'; + +var Stream = require('../utils/stream.js'); +var mp4 = require('./mp4-generator.js'); +var m2ts = require('../m2ts/m2ts.js'); +var AdtsStream = require('../codecs/adts.js'); +var H264Stream = require('../codecs/h264').H264Stream; +var AacStream = require('../aac'); + +// object types +var VideoSegmentStream, AudioSegmentStream, Transmuxer, CoalesceStream; + +// Helper functions +var + defaultSample, + collectDtsInfo, + clearDtsInfo, + calculateTrackBaseMediaDecodeTime, + arrayEquals, + sumFrameByteLengths; + +/** + * Default sample object + * see ISO/IEC 14496-12:2012, section 8.6.4.3 + */ +defaultSample = { + size: 0, + flags: { + isLeading: 0, + dependsOn: 1, + isDependedOn: 0, + hasRedundancy: 0, + degradationPriority: 0 + } +}; + +/** + * Compare two arrays (even typed) for same-ness + */ +arrayEquals = function(a, b) { + var + i; + + if (a.length !== b.length) { + return false; + } + + // compare the value of each element in the array + for (i = 0; i < a.length; i++) { + if (a[i] !== b[i]) { + return false; + } + } + + return true; +}; + +/** + * Sum the `byteLength` properties of the data in each AAC frame + */ +sumFrameByteLengths = function(array) { + var + i, + currentObj, + sum = 0; + + // sum the byteLength's all each nal unit in the frame + for (i = 0; i < array.length; i++) { + currentObj = array[i]; + sum += currentObj.data.byteLength; + } + + return sum; +}; + +/** + * Constructs a single-track, ISO BMFF media segment from AAC data + * events. The output of this stream can be fed to a SourceBuffer + * configured with a suitable initialization segment. + */ +AudioSegmentStream = function(track) { + var + adtsFrames = [], + sequenceNumber = 0, + earliestAllowedDts = 0; + + AudioSegmentStream.prototype.init.call(this); + + this.push = function(data) { + collectDtsInfo(track, data); + + if (track) { + track.audioobjecttype = data.audioobjecttype; + track.channelcount = data.channelcount; + track.samplerate = data.samplerate; + track.samplingfrequencyindex = data.samplingfrequencyindex; + track.samplesize = data.samplesize; + } + + // buffer audio data until end() is called + adtsFrames.push(data); + }; + + this.setEarliestDts = function(earliestDts) { + earliestAllowedDts = earliestDts - track.timelineStartInfo.baseMediaDecodeTime; + }; + + this.flush = function() { + var + frames, + moof, + mdat, + boxes; + + // return early if no audio data has been observed + if (adtsFrames.length === 0) { + this.trigger('done'); + return; + } + + frames = this.trimAdtsFramesByEarliestDts_(adtsFrames); + + // we have to build the index from byte locations to + // samples (that is, adts frames) in the audio data + track.samples = this.generateSampleTable_(frames); + + // concatenate the audio data to constuct the mdat + mdat = mp4.mdat(this.concatenateFrameData_(frames)); + + adtsFrames = []; + + calculateTrackBaseMediaDecodeTime(track); + moof = mp4.moof(sequenceNumber, [track]); + boxes = new Uint8Array(moof.byteLength + mdat.byteLength); + + // bump the sequence number for next time + sequenceNumber++; + + boxes.set(moof); + boxes.set(mdat, moof.byteLength); + + clearDtsInfo(track); + + this.trigger('data', {track: track, boxes: boxes}); + this.trigger('done'); + }; + + // If the audio segment extends before the earliest allowed dts + // value, remove AAC frames until starts at or after the earliest + // allowed DTS so that we don't end up with a negative baseMedia- + // DecodeTime for the audio track + this.trimAdtsFramesByEarliestDts_ = function(adtsFrames) { + if (track.minSegmentDts >= earliestAllowedDts) { + return adtsFrames; + } + + // We will need to recalculate the earliest segment Dts + track.minSegmentDts = Infinity; + + return adtsFrames.filter(function(currentFrame) { + // If this is an allowed frame, keep it and record it's Dts + if (currentFrame.dts >= earliestAllowedDts) { + track.minSegmentDts = Math.min(track.minSegmentDts, currentFrame.dts); + track.minSegmentPts = track.minSegmentDts; + return true; + } + // Otherwise, discard it + return false; + }); + }; + + // generate the track's raw mdat data from an array of frames + this.generateSampleTable_ = function(frames) { + var + i, + currentFrame, + samples = []; + + for (i = 0; i < frames.length; i++) { + currentFrame = frames[i]; + samples.push({ + size: currentFrame.data.byteLength, + duration: 1024 // For AAC audio, all samples contain 1024 samples + }); + } + return samples; + }; + + // generate the track's sample table from an array of frames + this.concatenateFrameData_ = function(frames) { + var + i, + currentFrame, + dataOffset = 0, + data = new Uint8Array(sumFrameByteLengths(frames)); + + for (i = 0; i < frames.length; i++) { + currentFrame = frames[i]; + + data.set(currentFrame.data, dataOffset); + dataOffset += currentFrame.data.byteLength; + } + return data; + }; +}; + +AudioSegmentStream.prototype = new Stream(); + +/** + * Constructs a single-track, ISO BMFF media segment from H264 data + * events. The output of this stream can be fed to a SourceBuffer + * configured with a suitable initialization segment. + * @param track {object} track metadata configuration + */ +VideoSegmentStream = function(track) { + var + sequenceNumber = 0, + nalUnits = [], + config, + pps; + + VideoSegmentStream.prototype.init.call(this); + + delete track.minPTS; + + this.gopCache_ = []; + + this.push = function(nalUnit) { + collectDtsInfo(track, nalUnit); + + // record the track config + if (nalUnit.nalUnitType === 'seq_parameter_set_rbsp' && + !config) { + config = nalUnit.config; + + track.width = config.width; + track.height = config.height; + track.sps = [nalUnit.data]; + track.profileIdc = config.profileIdc; + track.levelIdc = config.levelIdc; + track.profileCompatibility = config.profileCompatibility; + } + + if (nalUnit.nalUnitType === 'pic_parameter_set_rbsp' && + !pps) { + pps = nalUnit.data; + track.pps = [nalUnit.data]; + } + + // buffer video until flush() is called + nalUnits.push(nalUnit); + }; + + this.flush = function() { + var + frames, + gopForFusion, + gops, + moof, + mdat, + boxes; + + // Throw away nalUnits at the start of the byte stream until + // we find the first AUD + while (nalUnits.length) { + if (nalUnits[0].nalUnitType === 'access_unit_delimiter_rbsp') { + break; + } + nalUnits.shift(); + } + + // Return early if no video data has been observed + if (nalUnits.length === 0) { + this.resetStream_(); + this.trigger('done'); + return; + } + + // Organize the raw nal-units into arrays that represent + // higher-level constructs such as frames and gops + // (group-of-pictures) + frames = this.groupNalsIntoFrames_(nalUnits); + gops = this.groupFramesIntoGops_(frames); + + // If the first frame of this fragment is not a keyframe we have + // a problem since MSE (on Chrome) requires a leading keyframe. + // + // We have two approaches to repairing this situation: + // 1) GOP-FUSION: + // This is where we keep track of the GOPS (group-of-pictures) + // from previous fragments and attempt to find one that we can + // prepend to the current fragment in order to create a valid + // fragment. + // 2) KEYFRAME-PULLING: + // Here we search for the first keyframe in the fragment and + // throw away all the frames between the start of the fragment + // and that keyframe. We then extend the duration and pull the + // PTS of the keyframe forward so that it covers the time range + // of the frames that were disposed of. + // + // #1 is far prefereable over #2 which can cause "stuttering" but + // requires more things to be just right. + if (!gops[0][0].keyFrame) { + // Search for a gop for fusion from our gopCache + gopForFusion = this.getGopForFusion_(nalUnits[0], track); + + if (gopForFusion) { + gops.unshift(gopForFusion); + // Adjust Gops' metadata to account for the inclusion of the + // new gop at the beginning + gops.byteLength += gopForFusion.byteLength; + gops.nalCount += gopForFusion.nalCount; + gops.pts = gopForFusion.pts; + gops.dts = gopForFusion.dts; + gops.duration += gopForFusion.duration; + } else { + // If we didn't find a candidate gop fall back to keyrame-pulling + gops = this.extendFirstKeyFrame_(gops); + } + } + collectDtsInfo(track, gops); + + // First, we have to build the index from byte locations to + // samples (that is, frames) in the video data + track.samples = this.generateSampleTable_(gops); + + // Concatenate the video data and construct the mdat + mdat = mp4.mdat(this.concatenateNalData_(gops)); + + // save all the nals in the last GOP into the gop cache + this.gopCache_.unshift({ + gop: gops.pop(), + pps: track.pps, + sps: track.sps + }); + + // Keep a maximum of 6 GOPs in the cache + this.gopCache_.length = Math.min(6, this.gopCache_.length); + + // Clear nalUnits + nalUnits = []; + + calculateTrackBaseMediaDecodeTime(track); + + this.trigger('timelineStartInfo', track.timelineStartInfo); + + moof = mp4.moof(sequenceNumber, [track]); + + // it would be great to allocate this array up front instead of + // throwing away hundreds of media segment fragments + boxes = new Uint8Array(moof.byteLength + mdat.byteLength); + + // Bump the sequence number for next time + sequenceNumber++; + + boxes.set(moof); + boxes.set(mdat, moof.byteLength); + + this.trigger('data', {track: track, boxes: boxes}); + + this.resetStream_(); + + // Continue with the flush process now + this.trigger('done'); + }; + + this.resetStream_ = function() { + clearDtsInfo(track); + + // reset config and pps because they may differ across segments + // for instance, when we are rendition switching + config = undefined; + pps = undefined; + }; + + // Search for a candidate Gop for gop-fusion from the gop cache and + // return it or return null if no good candidate was found + this.getGopForFusion_ = function (nalUnit) { + var + halfSecond = 45000, // Half-a-second in a 90khz clock + allowableOverlap = 10000, // About 3 frames @ 30fps + nearestDistance = Infinity, + dtsDistance, + nearestGopObj, + currentGop, + currentGopObj, + i; + + // Search for the GOP nearest to the beginning of this nal unit + for (i = 0; i < this.gopCache_.length; i++) { + currentGopObj = this.gopCache_[i]; + currentGop = currentGopObj.gop; + + // Reject Gops with different SPS or PPS + if (!(track.pps && arrayEquals(track.pps[0], currentGopObj.pps[0])) || + !(track.sps && arrayEquals(track.sps[0], currentGopObj.sps[0]))) { + continue; + } + + // Reject Gops that would require a negative baseMediaDecodeTime + if (currentGop.dts < track.timelineStartInfo.dts) { + continue; + } + + // The distance between the end of the gop and the start of the nalUnit + dtsDistance = (nalUnit.dts - currentGop.dts) - currentGop.duration; + + // Only consider GOPS that start before the nal unit and end within + // a half-second of the nal unit + if (dtsDistance >= -allowableOverlap && + dtsDistance <= halfSecond) { + + // Always use the closest GOP we found if there is more than + // one candidate + if (!nearestGopObj || + nearestDistance > dtsDistance) { + nearestGopObj = currentGopObj; + nearestDistance = dtsDistance; + } + } + } + + if (nearestGopObj) { + return nearestGopObj.gop; + } + return null; + }; + + this.extendFirstKeyFrame_ = function(gops) { + var + h, i, + currentGop, + newGops; + + if (!gops[0][0].keyFrame) { + // Remove the first GOP + currentGop = gops.shift(); + + gops.byteLength -= currentGop.byteLength; + gops.nalCount -= currentGop.nalCount; + + // Extend the first frame of what is now the + // first gop to cover the time period of the + // frames we just removed + gops[0][0].dts = currentGop.dts; + gops[0][0].pts = currentGop.pts; + gops[0][0].duration += currentGop.duration; + } + + return gops; + }; + + // Convert an array of nal units into an array of frames with each frame being + // composed of the nal units that make up that frame + // Also keep track of cummulative data about the frame from the nal units such + // as the frame duration, starting pts, etc. + this.groupNalsIntoFrames_ = function(nalUnits) { + var + i, + currentNal, + startPts, + startDts, + currentFrame = [], + frames = []; + + currentFrame.byteLength = 0; + + for (i = 0; i < nalUnits.length; i++) { + currentNal = nalUnits[i]; + + // Split on 'aud'-type nal units + if (currentNal.nalUnitType === 'access_unit_delimiter_rbsp') { + // Since the very first nal unit is expected to be an AUD + // only push to the frames array when currentFrame is not empty + if (currentFrame.length) { + currentFrame.duration = currentNal.dts - currentFrame.dts; + frames.push(currentFrame); + } + currentFrame = [currentNal]; + currentFrame.byteLength = currentNal.data.byteLength; + currentFrame.pts = currentNal.pts; + currentFrame.dts = currentNal.dts; + } else { + // Specifically flag key frames for ease of use later + if (currentNal.nalUnitType === 'slice_layer_without_partitioning_rbsp_idr') { + currentFrame.keyFrame = true; + } + currentFrame.duration = currentNal.dts - currentFrame.dts; + currentFrame.byteLength += currentNal.data.byteLength; + currentFrame.push(currentNal); + } + } + + // For the last frame, use the duration of the previous frame if we + // have nothing better to go on + if (frames.length && + !currentFrame.duration || + currentFrame.duration <= 0) { + currentFrame.duration = frames[frames.length - 1].duration; + } + + // Push the final frame + frames.push(currentFrame); + return frames; + }; + + // Convert an array of frames into an array of Gop with each Gop being composed + // of the frames that make up that Gop + // Also keep track of cummulative data about the Gop from the frames such as the + // Gop duration, starting pts, etc. + this.groupFramesIntoGops_ = function(frames) { + var + i, + currentFrame, + currentGop = [], + gops = []; + + // We must pre-set some of the values on the Gop since we + // keep running totals of these values + currentGop.byteLength = 0; + currentGop.nalCount = 0; + currentGop.duration = 0; + currentGop.pts = frames[0].pts; + currentGop.dts = frames[0].dts; + + // store some metadata about all the Gops + gops.byteLength = 0; + gops.nalCount = 0; + gops.duration = 0; + gops.pts = frames[0].pts; + gops.dts = frames[0].dts; + + for (i = 0; i < frames.length; i++) { + currentFrame = frames[i]; + + if (currentFrame.keyFrame) { + // Since the very first frame is expected to be an keyframe + // only push to the gops array when currentGop is not empty + if (currentGop.length) { + gops.push(currentGop); + gops.byteLength += currentGop.byteLength; + gops.nalCount += currentGop.nalCount; + gops.duration += currentGop.duration; + } + + currentGop = [currentFrame]; + currentGop.nalCount = currentFrame.length; + currentGop.byteLength = currentFrame.byteLength; + currentGop.pts = currentFrame.pts; + currentGop.dts = currentFrame.dts; + currentGop.duration = currentFrame.duration; + } else { + currentGop.duration += currentFrame.duration; + currentGop.nalCount += currentFrame.length; + currentGop.byteLength += currentFrame.byteLength; + currentGop.push(currentFrame); + } + } + + if (gops.length && currentGop.duration <= 0) { + currentGop.duration = gops[gops.length - 1].duration; + } + gops.byteLength += currentGop.byteLength; + gops.nalCount += currentGop.nalCount; + gops.duration += currentGop.duration; + + // push the final Gop + gops.push(currentGop); + return gops; + }; + + // generate the track's sample table from an array of gops + this.generateSampleTable_ = function(gops, baseDataOffset) { + var + h, i, + sample, + currentGop, + currentFrame, + currentSample, + dataOffset = baseDataOffset || 0, + samples = []; + + for (h = 0; h < gops.length; h++) { + currentGop = gops[h]; + + for (i = 0; i < currentGop.length; i++) { + currentFrame = currentGop[i]; + + sample = Object.create(defaultSample); + + sample.dataOffset = dataOffset; + sample.compositionTimeOffset = currentFrame.pts - currentFrame.dts; + sample.duration = currentFrame.duration; + sample.size = 4 * currentFrame.length; // Space for nal unit size + sample.size += currentFrame.byteLength; + + if (currentFrame.keyFrame) { + sample.flags.dependsOn = 2; + } + + dataOffset += sample.size; + + samples.push(sample); + } + } + return samples; + }; + + // generate the track's raw mdat data from an array of gops + this.concatenateNalData_ = function (gops) { + var + h, i, j, + currentGop, + currentFrame, + currentNal, + dataOffset = 0, + nalsByteLength = gops.byteLength, + numberOfNals = gops.nalCount, + totalByteLength = nalsByteLength + 4 * numberOfNals, + data = new Uint8Array(totalByteLength), + view = new DataView(data.buffer); + + // For each Gop.. + for (h = 0; h < gops.length; h++) { + currentGop = gops[h]; + + // For each Frame.. + for (i = 0; i < currentGop.length; i++) { + currentFrame = currentGop[i]; + + // For each NAL.. + for (j = 0; j < currentFrame.length; j++) { + currentNal = currentFrame[j]; + + view.setUint32(dataOffset, currentNal.data.byteLength); + dataOffset += 4; + data.set(currentNal.data, dataOffset); + dataOffset += currentNal.data.byteLength; + } + } + } + return data; + }; +}; + +VideoSegmentStream.prototype = new Stream(); + +/** + * Store information about the start and end of the track and the + * duration for each frame/sample we process in order to calculate + * the baseMediaDecodeTime + */ +collectDtsInfo = function (track, data) { + if (typeof data.pts === 'number') { + if (track.timelineStartInfo.pts === undefined) { + track.timelineStartInfo.pts = data.pts; + } + + if (track.minSegmentPts === undefined) { + track.minSegmentPts = data.pts; + } else { + track.minSegmentPts = Math.min(track.minSegmentPts, data.pts); + } + + if (track.maxSegmentPts === undefined) { + track.maxSegmentPts = data.pts; + } else { + track.maxSegmentPts = Math.max(track.maxSegmentPts, data.pts); + } + } + + if (typeof data.dts === 'number') { + if (track.timelineStartInfo.dts === undefined) { + track.timelineStartInfo.dts = data.dts; + } + + if (track.minSegmentDts === undefined) { + track.minSegmentDts = data.dts; + } else { + track.minSegmentDts = Math.min(track.minSegmentDts, data.dts); + } + + if (track.maxSegmentDts === undefined) { + track.maxSegmentDts = data.dts; + } else { + track.maxSegmentDts = Math.max(track.maxSegmentDts, data.dts); + } + } +}; + +/** + * Clear values used to calculate the baseMediaDecodeTime between + * tracks + */ +clearDtsInfo = function (track) { + delete track.minSegmentDts; + delete track.maxSegmentDts; + delete track.minSegmentPts; + delete track.maxSegmentPts; +}; + +/** + * Calculate the track's baseMediaDecodeTime based on the earliest + * DTS the transmuxer has ever seen and the minimum DTS for the + * current track + */ +calculateTrackBaseMediaDecodeTime = function (track) { + var + oneSecondInPTS = 90000, // 90kHz clock + scale, + // Calculate the distance, in time, that this segment starts from the start + // of the timeline (earliest time seen since the transmuxer initialized) + timeSinceStartOfTimeline = track.minSegmentDts - track.timelineStartInfo.dts, + // Calculate the first sample's effective compositionTimeOffset + firstSampleCompositionOffset = track.minSegmentPts - track.minSegmentDts; + + // track.timelineStartInfo.baseMediaDecodeTime is the location, in time, where + // we want the start of the first segment to be placed + track.baseMediaDecodeTime = track.timelineStartInfo.baseMediaDecodeTime; + + // Add to that the distance this segment is from the very first + track.baseMediaDecodeTime += timeSinceStartOfTimeline; + + // Subtract this segment's "compositionTimeOffset" so that the first frame of + // this segment is displayed exactly at the `baseMediaDecodeTime` or at the + // end of the previous segment + track.baseMediaDecodeTime -= firstSampleCompositionOffset; + + // baseMediaDecodeTime must not become negative + track.baseMediaDecodeTime = Math.max(0, track.baseMediaDecodeTime); + + if (track.type === 'audio') { + // Audio has a different clock equal to the sampling_rate so we need to + // scale the PTS values into the clock rate of the track + scale = track.samplerate / oneSecondInPTS; + track.baseMediaDecodeTime *= scale; + track.baseMediaDecodeTime = Math.floor(track.baseMediaDecodeTime); + } +}; + +/** + * A Stream that can combine multiple streams (ie. audio & video) + * into a single output segment for MSE. Also supports audio-only + * and video-only streams. + */ +CoalesceStream = function(options) { + // Number of Tracks per output segment + // If greater than 1, we combine multiple + // tracks into a single segment + this.numberOfTracks = 0; + this.metadataStream = options.metadataStream; + + if (typeof options.remux !== 'undefined') { + this.remuxTracks = !!options.remux; + } else { + this.remuxTracks = true; + } + + this.pendingTracks = []; + this.videoTrack = null; + this.pendingBoxes = []; + this.pendingCaptions = []; + this.pendingMetadata = []; + this.pendingBytes = 0; + this.emittedTracks = 0; + + CoalesceStream.prototype.init.call(this); + + // Take output from multiple + this.push = function(output) { + // buffer incoming captions until the associated video segment + // finishes + if (output.text) { + return this.pendingCaptions.push(output); + } + // buffer incoming id3 tags until the final flush + if (output.frames) { + return this.pendingMetadata.push(output); + } + + // Add this track to the list of pending tracks and store + // important information required for the construction of + // the final segment + this.pendingTracks.push(output.track); + this.pendingBoxes.push(output.boxes); + this.pendingBytes += output.boxes.byteLength; + + if (output.track.type === 'video') { + this.videoTrack = output.track; + } + if (output.track.type === 'audio') { + this.audioTrack = output.track; + } + }; +}; + +CoalesceStream.prototype = new Stream(); +CoalesceStream.prototype.flush = function() { + var + offset = 0, + event = { + captions: [], + metadata: [] + }, + caption, + id3, + initSegment, + timelineStartPts = 0, + i; + + // Return until we have enough tracks from the pipeline to remux + if (this.pendingTracks.length === 0 || + (this.remuxTracks && this.pendingTracks.length < this.numberOfTracks)) { + return; + } + + if (this.videoTrack) { + timelineStartPts = this.videoTrack.timelineStartInfo.pts; + } else if (this.audioTrack) { + timelineStartPts = this.audioTrack.timelineStartInfo.pts; + } + + if (this.pendingTracks.length === 1) { + event.type = this.pendingTracks[0].type; + } else { + event.type = 'combined'; + } + this.emittedTracks += this.pendingTracks.length; + + initSegment = mp4.initSegment(this.pendingTracks); + + // Create a new typed array large enough to hold the init + // segment and all tracks + event.data = new Uint8Array(initSegment.byteLength + + this.pendingBytes); + + // Create an init segment containing a moov + // and track definitions + event.data.set(initSegment); + offset += initSegment.byteLength; + + // Append each moof+mdat (one per track) after the init segment + for (i = 0; i < this.pendingBoxes.length; i++) { + event.data.set(this.pendingBoxes[i], offset); + offset += this.pendingBoxes[i].byteLength; + } + + // Translate caption PTS times into second offsets into the + // video timeline for the segment + for (i = 0; i < this.pendingCaptions.length; i++) { + caption = this.pendingCaptions[i]; + caption.startTime = (caption.startPts - timelineStartPts); + caption.startTime /= 90e3; + caption.endTime = (caption.endPts - timelineStartPts); + caption.endTime /= 90e3; + event.captions.push(caption); + } + + // Translate ID3 frame PTS times into second offsets into the + // video timeline for the segment + for (i = 0; i < this.pendingMetadata.length; i++) { + id3 = this.pendingMetadata[i]; + id3.cueTime = (id3.pts - timelineStartPts); + id3.cueTime /= 90e3; + event.metadata.push(id3); + } + // We add this to every single emitted segment even though we only need + // it for the first + event.metadata.dispatchType = this.metadataStream.dispatchType; + + // Reset stream state + this.pendingTracks.length = 0; + this.videoTrack = null; + this.pendingBoxes.length = 0; + this.pendingCaptions.length = 0; + this.pendingBytes = 0; + this.pendingMetadata.length = 0; + + // Emit the built segment + this.trigger('data', event); + + // Only emit `done` if all tracks have been flushed and emitted + if (this.emittedTracks >= this.numberOfTracks) { + this.trigger('done'); + this.emittedTracks = 0; + } +}; +/** + * A Stream that expects MP2T binary data as input and produces + * corresponding media segments, suitable for use with Media Source + * Extension (MSE) implementations that support the ISO BMFF byte + * stream format, like Chrome. + */ +Transmuxer = function(options) { + var + self = this, + videoTrack, + audioTrack, + packetStream, parseStream, elementaryStream, + adtsStream, h264Stream,aacStream, + videoSegmentStream, audioSegmentStream, captionStream, + coalesceStream, + headOfPipeline; + + this.setupAacPipeline = function() { + this.metadataStream = new m2ts.MetadataStream(); + options.metadataStream = this.metadataStream; + + // set up the parsing pipeline + aacStream = new AacStream(); + adtsStream = new AdtsStream(); + coalesceStream = new CoalesceStream(options); + headOfPipeline = aacStream; + + aacStream.pipe(adtsStream); + aacStream.pipe(this.metadataStream); + this.metadataStream.pipe(coalesceStream); + + this.metadataStream.on('timestamp', function(frame) { + aacStream.setTimestamp(frame.timestamp); + }); + this.addAacListener(); + }; + + + this.addAacListener = function() { + aacStream.on('data', function(data) { + var i; + + if (data.type === 'timed-metadata') { + var track = { + timelineStartInfo: { + baseMediaDecodeTime: 0 }, + codec: 'adts', + type: 'audio' }; + + if (track && !audioSegmentStream) { + // hook up the audio segment stream to the first track with aac data + coalesceStream.numberOfTracks++; + audioSegmentStream = new AudioSegmentStream(track); + // Set up the final part of the audio pipeline + adtsStream + .pipe(audioSegmentStream) + .pipe(coalesceStream); + } + } + }); + }; + + this.setupTsPipeline = function() { + this.metadataStream = new m2ts.MetadataStream(); + + options.metadataStream = this.metadataStream; + + // set up the parsing pipeline + packetStream = new m2ts.TransportPacketStream(); + parseStream = new m2ts.TransportParseStream(); + elementaryStream = new m2ts.ElementaryStream(); + adtsStream = new AdtsStream(); + h264Stream = new H264Stream(); + captionStream = new m2ts.CaptionStream(); + coalesceStream = new CoalesceStream(options); + headOfPipeline = packetStream; + + // disassemble MPEG2-TS packets into elementary streams + packetStream + .pipe(parseStream) + .pipe(elementaryStream); + + // !!THIS ORDER IS IMPORTANT!! + // demux the streams + elementaryStream + .pipe(h264Stream); + elementaryStream + .pipe(adtsStream); + + elementaryStream + .pipe(this.metadataStream) + .pipe(coalesceStream); + + // Hook up CEA-608/708 caption stream + h264Stream.pipe(captionStream) + .pipe(coalesceStream); + this.addTsListener(); + }; + + this.addTsListener = function() { + + elementaryStream.on('data', function(data) { + var i; + + if (data.type === 'metadata') { + i = data.tracks.length; + + // scan the tracks listed in the metadata + while (i--) { + if (!videoTrack && data.tracks[i].type === 'video') { + videoTrack = data.tracks[i]; + videoTrack.timelineStartInfo.baseMediaDecodeTime = self.baseMediaDecodeTime; + } else if (!audioTrack && data.tracks[i].type === 'audio') { + audioTrack = data.tracks[i]; + audioTrack.timelineStartInfo.baseMediaDecodeTime = self.baseMediaDecodeTime; + } + } + + // hook up the video segment stream to the first track with h264 data + if (videoTrack && !videoSegmentStream) { + coalesceStream.numberOfTracks++; + videoSegmentStream = new VideoSegmentStream(videoTrack); + + videoSegmentStream.on('timelineStartInfo', function(timelineStartInfo){ + // When video emits timelineStartInfo data after a flush, we forward that + // info to the AudioSegmentStream, if it exists, because video timeline + // data takes precedence. + if (audioTrack) { + audioTrack.timelineStartInfo = timelineStartInfo; + // On the first segment we trim AAC frames that exist before the + // very earliest DTS we have seen in video because Chrome will + // interpret any video track with a baseMediaDecodeTime that is + // non-zero as a gap. + audioSegmentStream.setEarliestDts(timelineStartInfo.dts); + } + }); + + // Set up the final part of the video pipeline + h264Stream + .pipe(videoSegmentStream) + .pipe(coalesceStream); + } + + if (audioTrack && !audioSegmentStream) { + // hook up the audio segment stream to the first track with aac data + coalesceStream.numberOfTracks++; + audioSegmentStream = new AudioSegmentStream(audioTrack); + + // Set up the final part of the audio pipeline + adtsStream + .pipe(audioSegmentStream) + .pipe(coalesceStream); + } + } + }); + }; + Transmuxer.prototype.init.call(this); + options = options || {}; + + this.baseMediaDecodeTime = options.baseMediaDecodeTime || 0; + + // expose the metadata stream + if (options.aacfile === undefined) { + this.setupTsPipeline(); + } else { + this.setupAacPipeline(); + } + + // hook up the segment streams once track metadata is delivered + this.setBaseMediaDecodeTime = function (baseMediaDecodeTime) { + this.baseMediaDecodeTime = baseMediaDecodeTime; + if (audioTrack) { + audioTrack.timelineStartInfo.dts = undefined; + audioTrack.timelineStartInfo.pts = undefined; + clearDtsInfo(audioTrack); + audioTrack.timelineStartInfo.baseMediaDecodeTime = baseMediaDecodeTime; + } + if (videoTrack) { + videoSegmentStream.gopCache_ = []; + videoTrack.timelineStartInfo.dts = undefined; + videoTrack.timelineStartInfo.pts = undefined; + clearDtsInfo(videoTrack); + videoTrack.timelineStartInfo.baseMediaDecodeTime = baseMediaDecodeTime; + } + }; + + // feed incoming data to the front of the parsing pipeline + this.push = function(data) { + headOfPipeline.push(data); + }; + + // flush any buffered data + this.flush = function() { + // Start at the top of the pipeline and flush all pending work + headOfPipeline.flush(); + }; + + // Re-emit any data coming from the coalesce stream to the outside world + coalesceStream.on('data', function (data) { + self.trigger('data', data); + }); + // Let the consumer know we have finished flushing the entire pipeline + coalesceStream.on('done', function () { + self.trigger('done'); + }); +}; +Transmuxer.prototype = new Stream(); + +module.exports = { + Transmuxer: Transmuxer, + VideoSegmentStream: VideoSegmentStream, + AudioSegmentStream: AudioSegmentStream, +}; + +},{"../aac":30,"../codecs/adts.js":31,"../codecs/h264":32,"../m2ts/m2ts.js":40,"../utils/stream.js":49,"./mp4-generator.js":44}],46:[function(require,module,exports){ +'use strict'; + +var + tagTypes = { + 0x08: 'audio', + 0x09: 'video', + 0x12: 'metadata' + }, + hex = function (val) { + return '0x' + ('00' + val.toString(16)).slice(-2).toUpperCase(); + }, + hexStringList = function (data) { + var arr = [], i; + /* jshint -W086 */ + while(data.byteLength > 0) { + i = 0; + switch(data.byteLength) { + default: + arr.push(hex(data[i++])); + case 7: + arr.push(hex(data[i++])); + case 6: + arr.push(hex(data[i++])); + case 5: + arr.push(hex(data[i++])); + case 4: + arr.push(hex(data[i++])); + case 3: + arr.push(hex(data[i++])); + case 2: + arr.push(hex(data[i++])); + case 1: + arr.push(hex(data[i++])); + } + data = data.subarray(i); + } + /* jshint +W086 */ + return arr.join(' '); + }, + parseAVCTag = function (tag, obj) { + var + avcPacketTypes = [ + 'AVC Sequence Header', + 'AVC NALU', + 'AVC End-of-Sequence' + ], + nalUnitTypes = [ + 'unspecified', + 'slice_layer_without_partitioning', + 'slice_data_partition_a_layer', + 'slice_data_partition_b_layer', + 'slice_data_partition_c_layer', + 'slice_layer_without_partitioning_idr', + 'sei', + 'seq_parameter_set', + 'pic_parameter_set', + 'access_unit_delimiter', + 'end_of_seq', + 'end_of_stream', + 'filler', + 'seq_parameter_set_ext', + 'prefix_nal_unit', + 'subset_seq_parameter_set', + 'reserved', + 'reserved', + 'reserved' + ], + compositionTime = (tag[1] & parseInt('01111111', 2) << 16) | (tag[2] << 8) | tag[3]; + + obj = obj || {}; + + obj.avcPacketType = avcPacketTypes[tag[0]]; + obj.CompositionTime = (tag[1] & parseInt('10000000', 2)) ? -compositionTime : compositionTime; + + if (tag[0] === 1) { + obj.nalUnitTypeRaw = hexStringList(tag.subarray(4, 100)); + } else { + obj.data = hexStringList(tag.subarray(4)); + } + + return obj; + }, + parseVideoTag = function (tag, obj) { + var + frameTypes = [ + 'Unknown', + 'Keyframe (for AVC, a seekable frame)', + 'Inter frame (for AVC, a nonseekable frame)', + 'Disposable inter frame (H.263 only)', + 'Generated keyframe (reserved for server use only)', + 'Video info/command frame' + ], + codecIDs = [ + 'JPEG (currently unused)', + 'Sorenson H.263', + 'Screen video', + 'On2 VP6', + 'On2 VP6 with alpha channel', + 'Screen video version 2', + 'AVC' + ], + codecID = tag[0] & parseInt('00001111', 2); + + obj = obj || {}; + + obj.frameType = frameTypes[(tag[0] & parseInt('11110000', 2)) >>> 4]; + obj.codecID = codecID; + + if (codecID === 7) { + return parseAVCTag(tag.subarray(1), obj); + } + return obj; + }, + parseAACTag = function (tag, obj) { + var packetTypes = [ + 'AAC Sequence Header', + 'AAC Raw' + ]; + + obj = obj || {}; + + obj.aacPacketType = packetTypes[tag[0]]; + obj.data = hexStringList(tag.subarray(1)); + + return obj; + }, + parseAudioTag = function (tag, obj) { + var + formatTable = [ + 'Linear PCM, platform endian', + 'ADPCM', + 'MP3', + 'Linear PCM, little endian', + 'Nellymoser 16-kHz mono', + 'Nellymoser 8-kHz mono', + 'Nellymoser', + 'G.711 A-law logarithmic PCM', + 'G.711 mu-law logarithmic PCM', + 'reserved', + 'AAC', + 'Speex', + 'MP3 8-Khz', + 'Device-specific sound' + ], + samplingRateTable = [ + '5.5-kHz', + '11-kHz', + '22-kHz', + '44-kHz' + ], + soundFormat = (tag[0] & parseInt('11110000', 2)) >>> 4; + + obj = obj || {}; + + obj.soundFormat = formatTable[soundFormat]; + obj.soundRate = samplingRateTable[(tag[0] & parseInt('00001100', 2)) >>> 2]; + obj.soundSize = ((tag[0] & parseInt('00000010', 2)) >>> 1) ? '16-bit' : '8-bit'; + obj.soundType = (tag[0] & parseInt('00000001', 2)) ? 'Stereo' : 'Mono'; + + if (soundFormat === 10) { + return parseAACTag(tag.subarray(1), obj); + } + return obj; + }, + parseGenericTag = function (tag) { + return { + tagType: tagTypes[tag[0]], + dataSize: (tag[1] << 16) | (tag[2] << 8) | tag[3], + timestamp: (tag[7] << 24) | (tag[4] << 16) | (tag[5] << 8) | tag[6], + streamID: (tag[8] << 16) | (tag[9] << 8) | tag[10] + }; + }, + inspectFlvTag = function (tag) { + var header = parseGenericTag(tag); + switch (tag[0]) { + case 0x08: + parseAudioTag(tag.subarray(11), header); + break; + case 0x09: + parseVideoTag(tag.subarray(11), header); + break; + case 0x12: + } + return header; + }, + inspectFlv = function (bytes) { + var i = 9, // header + dataSize, + parsedResults = [], + tag; + + // traverse the tags + i += 4; // skip previous tag size + while (i < bytes.byteLength) { + dataSize = bytes[i + 1] << 16; + dataSize |= bytes[i + 2] << 8; + dataSize |= bytes[i + 3]; + dataSize += 11; + + tag = bytes.subarray(i, i + dataSize); + parsedResults.push(inspectFlvTag(tag)); + i += dataSize + 4; + } + return parsedResults; + }, + textifyFlv = function (flvTagArray) { + return JSON.stringify(flvTagArray, null, 2); + }; + +module.exports = { + inspectTag: inspectFlvTag, + inspect: inspectFlv, + textify: textifyFlv +}; + +},{}],47:[function(require,module,exports){ +(function (global){ +'use strict'; + +var + inspectMp4, + textifyMp4, + /** + * Returns the string representation of an ASCII encoded four byte buffer. + * @param buffer {Uint8Array} a four-byte buffer to translate + * @return {string} the corresponding string + */ + parseType = function(buffer) { + var result = ''; + result += String.fromCharCode(buffer[0]); + result += String.fromCharCode(buffer[1]); + result += String.fromCharCode(buffer[2]); + result += String.fromCharCode(buffer[3]); + return result; + }, + parseMp4Date = function(seconds) { + return new Date(seconds * 1000 - 2082844800000); + }, + parseSampleFlags = function(flags) { + return { + isLeading: (flags[0] & 0x0c) >>> 2, + dependsOn: flags[0] & 0x03, + isDependedOn: (flags[1] & 0xc0) >>> 6, + hasRedundancy: (flags[1] & 0x30) >>> 4, + paddingValue: (flags[1] & 0x0e) >>> 1, + isNonSyncSample: flags[1] & 0x01, + degradationPriority: (flags[2] << 8) | flags[3] + }; + }, + nalParse = function(avcStream) { + var + avcView = new DataView(avcStream.buffer, avcStream.byteOffset, avcStream.byteLength), + result = [], + i, + length; + for (i = 0; i + 4 < avcStream.length; i += length) { + length = avcView.getUint32(i); + i += 4; + + // bail if this doesn't appear to be an H264 stream + if (length <= 0) { + return; + } + + switch(avcStream[i] & 0x1F) { + case 0x01: + result.push('slice_layer_without_partitioning_rbsp'); + break; + case 0x05: + result.push('slice_layer_without_partitioning_rbsp_idr'); + break; + case 0x06: + result.push('sei_rbsp'); + break; + case 0x07: + result.push('seq_parameter_set_rbsp'); + break; + case 0x08: + result.push('pic_parameter_set_rbsp'); + break; + case 0x09: + result.push('access_unit_delimiter_rbsp'); + break; + default: + result.push(avcStream[i] & 0x1F); + break; + } + } + return result; + }, + + // registry of handlers for individual mp4 box types + parse = { + // codingname, not a first-class box type. stsd entries share the + // same format as real boxes so the parsing infrastructure can be + // shared + avc1: function(data) { + var view = new DataView(data.buffer, data.byteOffset, data.byteLength); + return { + dataReferenceIndex: view.getUint16(6), + width: view.getUint16(24), + height: view.getUint16(26), + horizresolution: view.getUint16(28) + (view.getUint16(30) / 16), + vertresolution: view.getUint16(32) + (view.getUint16(34) / 16), + frameCount: view.getUint16(40), + depth: view.getUint16(74), + config: inspectMp4(data.subarray(78, data.byteLength)) + }; + }, + avcC: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + result = { + configurationVersion: data[0], + avcProfileIndication: data[1], + profileCompatibility: data[2], + avcLevelIndication: data[3], + lengthSizeMinusOne: data[4] & 0x03, + sps: [], + pps: [] + }, + numOfSequenceParameterSets = data[5] & 0x1f, + numOfPictureParameterSets, + nalSize, + offset, + i; + + // iterate past any SPSs + offset = 6; + for (i = 0; i < numOfSequenceParameterSets; i++) { + nalSize = view.getUint16(offset); + offset += 2; + result.sps.push(new Uint8Array(data.subarray(offset, offset + nalSize))); + offset += nalSize; + } + // iterate past any PPSs + numOfPictureParameterSets = data[offset]; + offset++; + for (i = 0; i < numOfPictureParameterSets; i++) { + nalSize = view.getUint16(offset); + offset += 2; + result.pps.push(new Uint8Array(data.subarray(offset, offset + nalSize))); + offset += nalSize; + } + return result; + }, + btrt: function(data) { + var view = new DataView(data.buffer, data.byteOffset, data.byteLength); + return { + bufferSizeDB: view.getUint32(0), + maxBitrate: view.getUint32(4), + avgBitrate: view.getUint32(8) + }; + }, + esds: function(data) { + return { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + esId: (data[6] << 8) | data[7], + streamPriority: data[8] & 0x1f, + decoderConfig: { + objectProfileIndication: data[11], + streamType: (data[12] >>> 2) & 0x3f, + bufferSize: (data[13] << 16) | (data[14] << 8) | data[15], + maxBitrate: (data[16] << 24) | + (data[17] << 16) | + (data[18] << 8) | + data[19], + avgBitrate: (data[20] << 24) | + (data[21] << 16) | + (data[22] << 8) | + data[23], + decoderConfigDescriptor: { + tag: data[24], + length: data[25], + audioObjectType: (data[26] >>> 3) & 0x1f, + samplingFrequencyIndex: ((data[26] & 0x07) << 1) | + ((data[27] >>> 7) & 0x01), + channelConfiguration: (data[27] >>> 3) & 0x0f + } + } + }; + }, + ftyp: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + result = { + majorBrand: parseType(data.subarray(0, 4)), + minorVersion: view.getUint32(4), + compatibleBrands: [] + }, + i = 8; + while (i < data.byteLength) { + result.compatibleBrands.push(parseType(data.subarray(i, i + 4))); + i += 4; + } + return result; + }, + dinf: function(data) { + return { + boxes: inspectMp4(data) + }; + }, + dref: function(data) { + return { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + dataReferences: inspectMp4(data.subarray(8)) + }; + }, + hdlr: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + language, + result = { + version: view.getUint8(0), + flags: new Uint8Array(data.subarray(1, 4)), + handlerType: parseType(data.subarray(8, 12)), + name: '' + }, + i = 8; + + // parse out the name field + for (i = 24; i < data.byteLength; i++) { + if (data[i] === 0x00) { + // the name field is null-terminated + i++; + break; + } + result.name += String.fromCharCode(data[i]); + } + // decode UTF-8 to javascript's internal representation + // see http://ecmanaut.blogspot.com/2006/07/encoding-decoding-utf8-in-javascript.html + result.name = decodeURIComponent(global.escape(result.name)); + + return result; + }, + mdat: function(data) { + return { + byteLength: data.byteLength, + nals: nalParse(data) + }; + }, + mdhd: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + i = 4, + language, + result = { + version: view.getUint8(0), + flags: new Uint8Array(data.subarray(1, 4)), + language: '' + }; + if (result.version === 1) { + i += 4; + result.creationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes + i += 8; + result.modificationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes + i += 4; + result.timescale = view.getUint32(i); + i += 8; + result.duration = view.getUint32(i); // truncating top 4 bytes + } else { + result.creationTime = parseMp4Date(view.getUint32(i)); + i += 4; + result.modificationTime = parseMp4Date(view.getUint32(i)); + i += 4; + result.timescale = view.getUint32(i); + i += 4; + result.duration = view.getUint32(i); + } + i += 4; + // language is stored as an ISO-639-2/T code in an array of three 5-bit fields + // each field is the packed difference between its ASCII value and 0x60 + language = view.getUint16(i); + result.language += String.fromCharCode((language >> 10) + 0x60); + result.language += String.fromCharCode(((language & 0x03c0) >> 5) + 0x60); + result.language += String.fromCharCode((language & 0x1f) + 0x60); + + return result; + }, + mdia: function(data) { + return { + boxes: inspectMp4(data) + }; + }, + mfhd: function(data) { + return { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + sequenceNumber: (data[4] << 24) | + (data[5] << 16) | + (data[6] << 8) | + (data[7]) + }; + }, + minf: function(data) { + return { + boxes: inspectMp4(data) + }; + }, + // codingname, not a first-class box type. stsd entries share the + // same format as real boxes so the parsing infrastructure can be + // shared + mp4a: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + result = { + // 6 bytes reserved + dataReferenceIndex: view.getUint16(6), + // 4 + 4 bytes reserved + channelcount: view.getUint16(16), + samplesize: view.getUint16(18), + // 2 bytes pre_defined + // 2 bytes reserved + samplerate: view.getUint16(24) + (view.getUint16(26) / 65536) + }; + + // if there are more bytes to process, assume this is an ISO/IEC + // 14496-14 MP4AudioSampleEntry and parse the ESDBox + if (data.byteLength > 28) { + result.streamDescriptor = inspectMp4(data.subarray(28))[0]; + } + return result; + }, + moof: function(data) { + return { + boxes: inspectMp4(data) + }; + }, + moov: function(data) { + return { + boxes: inspectMp4(data) + }; + }, + mvex: function(data) { + return { + boxes: inspectMp4(data) + }; + }, + mvhd: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + i = 4, + result = { + version: view.getUint8(0), + flags: new Uint8Array(data.subarray(1, 4)) + }; + + if (result.version === 1) { + i += 4; + result.creationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes + i += 8; + result.modificationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes + i += 4; + result.timescale = view.getUint32(i); + i += 8; + result.duration = view.getUint32(i); // truncating top 4 bytes + } else { + result.creationTime = parseMp4Date(view.getUint32(i)); + i += 4; + result.modificationTime = parseMp4Date(view.getUint32(i)); + i += 4; + result.timescale = view.getUint32(i); + i += 4; + result.duration = view.getUint32(i); + } + i += 4; + + // convert fixed-point, base 16 back to a number + result.rate = view.getUint16(i) + (view.getUint16(i + 2) / 16); + i += 4; + result.volume = view.getUint8(i) + (view.getUint8(i + 1) / 8); + i += 2; + i += 2; + i += 2 * 4; + result.matrix = new Uint32Array(data.subarray(i, i + (9 * 4))); + i += 9 * 4; + i += 6 * 4; + result.nextTrackId = view.getUint32(i); + return result; + }, + pdin: function(data) { + var view = new DataView(data.buffer, data.byteOffset, data.byteLength); + return { + version: view.getUint8(0), + flags: new Uint8Array(data.subarray(1, 4)), + rate: view.getUint32(4), + initialDelay: view.getUint32(8) + }; + }, + sdtp: function(data) { + var + result = { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + samples: [] + }, i; + + for (i = 4; i < data.byteLength; i++) { + result.samples.push({ + dependsOn: (data[i] & 0x30) >> 4, + isDependedOn: (data[i] & 0x0c) >> 2, + hasRedundancy: data[i] & 0x03 + }); + } + return result; + }, + sidx: function(data) { + var view = new DataView(data.buffer, data.byteOffset, data.byteLength), + result = { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + references: [], + referenceId: view.getUint32(4), + timescale: view.getUint32(8), + earliestPresentationTime: view.getUint32(12), + firstOffset: view.getUint32(16) + }, + referenceCount = view.getUint16(22), + i; + + for (i = 24; referenceCount; i += 12, referenceCount-- ) { + result.references.push({ + referenceType: (data[i] & 0x80) >>> 7, + referencedSize: view.getUint32(i) & 0x7FFFFFFF, + subsegmentDuration: view.getUint32(i + 4), + startsWithSap: !!(data[i + 8] & 0x80), + sapType: (data[i + 8] & 0x70) >>> 4, + sapDeltaTime: view.getUint32(i + 8) & 0x0FFFFFFF + }); + } + + return result; + }, + smhd: function(data) { + return { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + balance: data[4] + (data[5] / 256) + }; + }, + stbl: function(data) { + return { + boxes: inspectMp4(data) + }; + }, + stco: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + result = { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + chunkOffsets: [] + }, + entryCount = view.getUint32(4), + i; + for (i = 8; entryCount; i += 4, entryCount--) { + result.chunkOffsets.push(view.getUint32(i)); + } + return result; + }, + stsc: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + entryCount = view.getUint32(4), + result = { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + sampleToChunks: [] + }, + i; + for (i = 8; entryCount; i += 12, entryCount--) { + result.sampleToChunks.push({ + firstChunk: view.getUint32(i), + samplesPerChunk: view.getUint32(i + 4), + sampleDescriptionIndex: view.getUint32(i + 8) + }); + } + return result; + }, + stsd: function(data) { + return { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + sampleDescriptions: inspectMp4(data.subarray(8)) + }; + }, + stsz: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + result = { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + sampleSize: view.getUint32(4), + entries: [] + }, + i; + for (i = 12; i < data.byteLength; i += 4) { + result.entries.push(view.getUint32(i)); + } + return result; + }, + stts: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + result = { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + timeToSamples: [] + }, + entryCount = view.getUint32(4), + i; + + for (i = 8; entryCount; i += 8, entryCount--) { + result.timeToSamples.push({ + sampleCount: view.getUint32(i), + sampleDelta: view.getUint32(i + 4) + }); + } + return result; + }, + styp: function(data) { + return parse.ftyp(data); + }, + tfdt: function(data) { + return { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + baseMediaDecodeTime: data[4] << 24 | data[5] << 16 | data[6] << 8 | data[7] + }; + }, + tfhd: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + result = { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + trackId: view.getUint32(4) + }, + baseDataOffsetPresent = result.flags[2] & 0x01, + sampleDescriptionIndexPresent = result.flags[2] & 0x02, + defaultSampleDurationPresent = result.flags[2] & 0x08, + defaultSampleSizePresent = result.flags[2] & 0x10, + defaultSampleFlagsPresent = result.flags[2] & 0x20, + i; + + i = 8; + if (baseDataOffsetPresent) { + i += 4; // truncate top 4 bytes + result.baseDataOffset = view.getUint32(12); + i += 4; + } + if (sampleDescriptionIndexPresent) { + result.sampleDescriptionIndex = view.getUint32(i); + i += 4; + } + if (defaultSampleDurationPresent) { + result.defaultSampleDuration = view.getUint32(i); + i += 4; + } + if (defaultSampleSizePresent) { + result.defaultSampleSize = view.getUint32(i); + i += 4; + } + if (defaultSampleFlagsPresent) { + result.defaultSampleFlags = view.getUint32(i); + } + return result; + }, + tkhd: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + i = 4, + result = { + version: view.getUint8(0), + flags: new Uint8Array(data.subarray(1, 4)), + }; + if (result.version === 1) { + i += 4; + result.creationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes + i += 8; + result.modificationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes + i += 4; + result.trackId = view.getUint32(i); + i += 4; + i += 8; + result.duration = view.getUint32(i); // truncating top 4 bytes + } else { + result.creationTime = parseMp4Date(view.getUint32(i)); + i += 4; + result.modificationTime = parseMp4Date(view.getUint32(i)); + i += 4; + result.trackId = view.getUint32(i); + i += 4; + i += 4; + result.duration = view.getUint32(i); + } + i += 4; + i += 2 * 4; + result.layer = view.getUint16(i); + i += 2; + result.alternateGroup = view.getUint16(i); + i += 2; + // convert fixed-point, base 16 back to a number + result.volume = view.getUint8(i) + (view.getUint8(i + 1) / 8); + i += 2; + i += 2; + result.matrix = new Uint32Array(data.subarray(i, i + (9 * 4))); + i += 9 * 4; + result.width = view.getUint16(i) + (view.getUint16(i + 2) / 16); + i += 4; + result.height = view.getUint16(i) + (view.getUint16(i + 2) / 16); + return result; + }, + traf: function(data) { + return { + boxes: inspectMp4(data) + }; + }, + trak: function(data) { + return { + boxes: inspectMp4(data) + }; + }, + trex: function(data) { + var view = new DataView(data.buffer, data.byteOffset, data.byteLength); + return { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + trackId: view.getUint32(4), + defaultSampleDescriptionIndex: view.getUint32(8), + defaultSampleDuration: view.getUint32(12), + defaultSampleSize: view.getUint32(16), + sampleDependsOn: data[20] & 0x03, + sampleIsDependedOn: (data[21] & 0xc0) >> 6, + sampleHasRedundancy: (data[21] & 0x30) >> 4, + samplePaddingValue: (data[21] & 0x0e) >> 1, + sampleIsDifferenceSample: !!(data[21] & 0x01), + sampleDegradationPriority: view.getUint16(22) + }; + }, + trun: function(data) { + var + result = { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + samples: [] + }, + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + dataOffsetPresent = result.flags[2] & 0x01, + firstSampleFlagsPresent = result.flags[2] & 0x04, + sampleDurationPresent = result.flags[1] & 0x01, + sampleSizePresent = result.flags[1] & 0x02, + sampleFlagsPresent = result.flags[1] & 0x04, + sampleCompositionTimeOffsetPresent = result.flags[1] & 0x08, + sampleCount = view.getUint32(4), + offset = 8, + sample; + + if (dataOffsetPresent) { + result.dataOffset = view.getUint32(offset); + offset += 4; + } + + if (firstSampleFlagsPresent && sampleCount) { + sample = { + flags: parseSampleFlags(data.subarray(offset, offset + 4)) + }; + offset += 4; + if (sampleDurationPresent) { + sample.duration = view.getUint32(offset); + offset += 4; + } + if (sampleSizePresent) { + sample.size = view.getUint32(offset); + offset += 4; + } + if (sampleCompositionTimeOffsetPresent) { + sample.compositionTimeOffset = view.getUint32(offset); + offset += 4; + } + result.samples.push(sample); + sampleCount--; + } + + while (sampleCount--) { + sample = {}; + if (sampleDurationPresent) { + sample.duration = view.getUint32(offset); + offset += 4; + } + if (sampleSizePresent) { + sample.size = view.getUint32(offset); + offset += 4; + } + if (sampleFlagsPresent) { + sample.flags = parseSampleFlags(data.subarray(offset, offset + 4)); + offset += 4; + } + if (sampleCompositionTimeOffsetPresent) { + sample.compositionTimeOffset = view.getUint32(offset); + offset += 4; + } + result.samples.push(sample); + } + return result; + }, + 'url ': function(data) { + return { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)) + }; + }, + vmhd: function(data) { + var view = new DataView(data.buffer, data.byteOffset, data.byteLength); + return { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + graphicsmode: view.getUint16(4), + opcolor: new Uint16Array([view.getUint16(6), + view.getUint16(8), + view.getUint16(10)]) + }; + } + }; + + +/** + * Return a javascript array of box objects parsed from an ISO base + * media file. + * @param data {Uint8Array} the binary data of the media to be inspected + * @return {array} a javascript array of potentially nested box objects + */ +inspectMp4 = function(data) { + var + i = 0, + result = [], + view, + size, + type, + end, + box; + + // Convert data from Uint8Array to ArrayBuffer, to follow Dataview API + var ab = new ArrayBuffer(data.length); + var v = new Uint8Array(ab); + for (var z = 0; z < data.length; ++z) { + v[z] = data[z]; + } + view = new DataView(ab); + + + while (i < data.byteLength) { + // parse box data + size = view.getUint32(i); + type = parseType(data.subarray(i + 4, i + 8)); + end = size > 1 ? i + size : data.byteLength; + + // parse type-specific data + box = (parse[type] || function(data) { + return { + data: data + }; + })(data.subarray(i + 8, end)); + box.size = size; + box.type = type; + + // store this box and move to the next + result.push(box); + i = end; + } + return result; +}; + +/** + * Returns a textual representation of the javascript represtentation + * of an MP4 file. You can use it as an alternative to + * JSON.stringify() to compare inspected MP4s. + * @param inspectedMp4 {array} the parsed array of boxes in an MP4 + * file + * @param depth {number} (optional) the number of ancestor boxes of + * the elements of inspectedMp4. Assumed to be zero if unspecified. + * @return {string} a text representation of the parsed MP4 + */ +textifyMp4 = function(inspectedMp4, depth) { + var indent; + depth = depth || 0; + indent = new Array(depth * 2 + 1).join(' '); + + // iterate over all the boxes + return inspectedMp4.map(function(box, index) { + + // list the box type first at the current indentation level + return indent + box.type + '\n' + + + // the type is already included and handle child boxes separately + Object.keys(box).filter(function(key) { + return key !== 'type' && key !== 'boxes'; + + // output all the box properties + }).map(function(key) { + var prefix = indent + ' ' + key + ': ', + value = box[key]; + + // print out raw bytes as hexademical + if (value instanceof Uint8Array || value instanceof Uint32Array) { + var bytes = Array.prototype.slice.call(new Uint8Array(value.buffer, value.byteOffset, value.byteLength)) + .map(function(byte) { + return ' ' + ('00' + byte.toString(16)).slice(-2); + }).join('').match(/.{1,24}/g); + if (!bytes) { + return prefix + '<>'; + } + if (bytes.length === 1) { + return prefix + '<' + bytes.join('').slice(1) + '>'; + } + return prefix + '<\n' + bytes.map(function(line) { + return indent + ' ' + line; + }).join('\n') + '\n' + indent + ' >'; + } + + // stringify generic objects + return prefix + + JSON.stringify(value, null, 2) + .split('\n').map(function(line, index) { + if (index === 0) { + return line; + } + return indent + ' ' + line; + }).join('\n'); + }).join('\n') + + + // recursively textify the child boxes + (box.boxes ? '\n' + textifyMp4(box.boxes, depth + 1) : ''); + }).join('\n'); +}; + +module.exports = { + inspect: inspectMp4, + textify: textifyMp4 +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],48:[function(require,module,exports){ +'use strict'; + +var ExpGolomb; + +/** + * Parser for exponential Golomb codes, a variable-bitwidth number encoding + * scheme used by h264. + */ +ExpGolomb = function(workingData) { + var + // the number of bytes left to examine in workingData + workingBytesAvailable = workingData.byteLength, + + // the current word being examined + workingWord = 0, // :uint + + // the number of bits left to examine in the current word + workingBitsAvailable = 0; // :uint; + + // ():uint + this.length = function() { + return (8 * workingBytesAvailable); + }; + + // ():uint + this.bitsAvailable = function() { + return (8 * workingBytesAvailable) + workingBitsAvailable; + }; + + // ():void + this.loadWord = function() { + var + position = workingData.byteLength - workingBytesAvailable, + workingBytes = new Uint8Array(4), + availableBytes = Math.min(4, workingBytesAvailable); + + if (availableBytes === 0) { + throw new Error('no bytes available'); + } + + workingBytes.set(workingData.subarray(position, + position + availableBytes)); + workingWord = new DataView(workingBytes.buffer).getUint32(0); + + // track the amount of workingData that has been processed + workingBitsAvailable = availableBytes * 8; + workingBytesAvailable -= availableBytes; + }; + + // (count:int):void + this.skipBits = function(count) { + var skipBytes; // :int + if (workingBitsAvailable > count) { + workingWord <<= count; + workingBitsAvailable -= count; + } else { + count -= workingBitsAvailable; + skipBytes = Math.floor(count / 8); + + count -= (skipBytes * 8); + workingBytesAvailable -= skipBytes; + + this.loadWord(); + + workingWord <<= count; + workingBitsAvailable -= count; + } + }; + + // (size:int):uint + this.readBits = function(size) { + var + bits = Math.min(workingBitsAvailable, size), // :uint + valu = workingWord >>> (32 - bits); // :uint + // if size > 31, handle error + workingBitsAvailable -= bits; + if (workingBitsAvailable > 0) { + workingWord <<= bits; + } else if (workingBytesAvailable > 0) { + this.loadWord(); + } + + bits = size - bits; + if (bits > 0) { + return valu << bits | this.readBits(bits); + } else { + return valu; + } + }; + + // ():uint + this.skipLeadingZeros = function() { + var leadingZeroCount; // :uint + for (leadingZeroCount = 0 ; leadingZeroCount < workingBitsAvailable ; ++leadingZeroCount) { + if (0 !== (workingWord & (0x80000000 >>> leadingZeroCount))) { + // the first bit of working word is 1 + workingWord <<= leadingZeroCount; + workingBitsAvailable -= leadingZeroCount; + return leadingZeroCount; + } + } + + // we exhausted workingWord and still have not found a 1 + this.loadWord(); + return leadingZeroCount + this.skipLeadingZeros(); + }; + + // ():void + this.skipUnsignedExpGolomb = function() { + this.skipBits(1 + this.skipLeadingZeros()); + }; + + // ():void + this.skipExpGolomb = function() { + this.skipBits(1 + this.skipLeadingZeros()); + }; + + // ():uint + this.readUnsignedExpGolomb = function() { + var clz = this.skipLeadingZeros(); // :uint + return this.readBits(clz + 1) - 1; + }; + + // ():int + this.readExpGolomb = function() { + var valu = this.readUnsignedExpGolomb(); // :int + if (0x01 & valu) { + // the number is odd if the low order bit is set + return (1 + valu) >>> 1; // add 1 to make it even, and divide by 2 + } else { + return -1 * (valu >>> 1); // divide by two then make it negative + } + }; + + // Some convenience functions + // :Boolean + this.readBoolean = function() { + return 1 === this.readBits(1); + }; + + // ():int + this.readUnsignedByte = function() { + return this.readBits(8); + }; + + this.loadWord(); +}; + +module.exports = ExpGolomb; + +},{}],49:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2014 Brightcove + * All rights reserved. + * + * A lightweight readable stream implemention that handles event dispatching. + * Objects that inherit from streams should call init in their constructors. + */ +'use strict'; + +var Stream = function() { + this.init = function() { + var listeners = {}; + /** + * Add a listener for a specified event type. + * @param type {string} the event name + * @param listener {function} the callback to be invoked when an event of + * the specified type occurs + */ + this.on = function(type, listener) { + if (!listeners[type]) { + listeners[type] = []; + } + listeners[type].push(listener); + }; + /** + * Remove a listener for a specified event type. + * @param type {string} the event name + * @param listener {function} a function previously registered for this + * type of event through `on` + */ + this.off = function(type, listener) { + var index; + if (!listeners[type]) { + return false; + } + index = listeners[type].indexOf(listener); + listeners[type].splice(index, 1); + return index > -1; + }; + /** + * Trigger an event of the specified type on this stream. Any additional + * arguments to this function are passed as parameters to event listeners. + * @param type {string} the event name + */ + this.trigger = function(type) { + var callbacks, i, length, args; + callbacks = listeners[type]; + if (!callbacks) { + return; + } + // Slicing the arguments on every invocation of this method + // can add a significant amount of overhead. Avoid the + // intermediate object creation for the common case of a + // single callback argument + if (arguments.length === 2) { + length = callbacks.length; + for (i = 0; i < length; ++i) { + callbacks[i].call(this, arguments[1]); + } + } else { + args = []; + i = arguments.length; + for (i = 1; i < arguments.length; ++i) { + args.push(arguments[i]); + } + length = callbacks.length; + for (i = 0; i < length; ++i) { + callbacks[i].apply(this, args); + } + } + }; + /** + * Destroys the stream and cleans up. + */ + this.dispose = function() { + listeners = {}; + }; + }; +}; + +/** + * Forwards all `data` events on this stream to the destination stream. The + * destination stream should provide a method `push` to receive the data + * events as they arrive. + * @param destination {stream} the stream that will receive all `data` events + * @param autoFlush {boolean} if false, we will not call `flush` on the destination + * when the current stream emits a 'done' event + * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options + */ +Stream.prototype.pipe = function(destination) { + this.on('data', function(data) { + destination.push(data); + }); + + this.on('done', function() { + destination.flush(); + }); + + return destination; +}; + +// Default stream functions that are expected to be overridden to perform +// actual work. These are provided by the prototype as a sort of no-op +// implementation so that we don't have to check for their existence in the +// `pipe` function above. +Stream.prototype.push = function(data) { + this.trigger('data', data); +}; + +Stream.prototype.flush = function() { + this.trigger('done'); +}; + +module.exports = Stream; + +},{}],50:[function(require,module,exports){ +var bundleFn = arguments[3]; +var sources = arguments[4]; +var cache = arguments[5]; + +var stringify = JSON.stringify; + +module.exports = function (fn) { + var keys = []; + var wkey; + var cacheKeys = Object.keys(cache); + + for (var i = 0, l = cacheKeys.length; i < l; i++) { + var key = cacheKeys[i]; + if (cache[key].exports === fn) { + wkey = key; + break; + } + } + + if (!wkey) { + wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16); + var wcache = {}; + for (var i = 0, l = cacheKeys.length; i < l; i++) { + var key = cacheKeys[i]; + wcache[key] = key; + } + sources[wkey] = [ + Function(['require','module','exports'], '(' + fn + ')(self)'), + wcache + ]; + } + var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16); + + var scache = {}; scache[wkey] = wkey; + sources[skey] = [ + Function(['require'],'require(' + stringify(wkey) + ')(self)'), + scache + ]; + + var src = '(' + bundleFn + ')({' + + Object.keys(sources).map(function (key) { + return stringify(key) + ':[' + + sources[key][0] + + ',' + stringify(sources[key][1]) + ']' + ; + }).join(',') + + '},{},[' + stringify(skey) + '])' + ; + + var URL = window.URL || window.webkitURL || window.mozURL || window.msURL; + + return new Worker(URL.createObjectURL( + new Blob([src], { type: 'text/javascript' }) + )); +}; + +},{}],51:[function(require,module,exports){ +(function (global){ +/** + * videojs-hls + * The main file for the HLS project. + * License: https://github.com/videojs/videojs-contrib-hls/blob/master/LICENSE + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _playlistLoader = require('./playlist-loader'); + +var _playlistLoader2 = _interopRequireDefault(_playlistLoader); + +var _playlist = require('./playlist'); + +var _playlist2 = _interopRequireDefault(_playlist); + +var _xhr = require('./xhr'); + +var _xhr2 = _interopRequireDefault(_xhr); + +var _decrypter = require('./decrypter'); + +var _binUtils = require('./bin-utils'); + +var _binUtils2 = _interopRequireDefault(_binUtils); + +var _videojsContribMediaSources = require('videojs-contrib-media-sources'); + +var _m3u8 = require('./m3u8'); + +var _m3u82 = _interopRequireDefault(_m3u8); + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var _resolveUrl = require('./resolve-url'); + +var _resolveUrl2 = _interopRequireDefault(_resolveUrl); + +var Hls = { + PlaylistLoader: _playlistLoader2['default'], + Playlist: _playlist2['default'], + Decrypter: _decrypter.Decrypter, + AsyncStream: _decrypter.AsyncStream, + decrypt: _decrypter.decrypt, + utils: _binUtils2['default'], + xhr: _xhr2['default'] +}; + +// the desired length of video to maintain in the buffer, in seconds +Hls.GOAL_BUFFER_LENGTH = 30; + +// HLS is a source handler, not a tech. Make sure attempts to use it +// as one do not cause exceptions. +Hls.canPlaySource = function () { + return _videoJs2['default'].log.warn('HLS is no longer a tech. Please remove it from ' + 'your player\'s techOrder.'); +}; + +// Search for a likely end time for the segment that was just appened +// based on the state of the `buffered` property before and after the +// append. +// If we found only one such uncommon end-point return it. +Hls.findSoleUncommonTimeRangesEnd_ = function (original, update) { + var i = undefined; + var start = undefined; + var end = undefined; + var result = []; + var edges = []; + + // In order to qualify as a possible candidate, the end point must: + // 1) Not have already existed in the `original` ranges + // 2) Not result from the shrinking of a range that already existed + // in the `original` ranges + // 3) Not be contained inside of a range that existed in `original` + var overlapsCurrentEnd = function overlapsCurrentEnd(span) { + return span[0] <= end && span[1] >= end; + }; + + if (original) { + // Save all the edges in the `original` TimeRanges object + for (i = 0; i < original.length; i++) { + start = original.start(i); + end = original.end(i); + + edges.push([start, end]); + } + } + + if (update) { + // Save any end-points in `update` that are not in the `original` + // TimeRanges object + for (i = 0; i < update.length; i++) { + start = update.start(i); + end = update.end(i); + + if (edges.some(overlapsCurrentEnd)) { + continue; + } + + // at this point it must be a unique non-shrinking end edge + result.push(end); + } + } + + // we err on the side of caution and return null if didn't find + // exactly *one* differing end edge in the search above + if (result.length !== 1) { + return null; + } + + return result[0]; +}; + +/** + * Whether the browser has built-in HLS support. + */ +Hls.supportsNativeHls = (function () { + var video = document.createElement('video'); + var xMpegUrl = undefined; + var vndMpeg = undefined; + + // native HLS is definitely not supported if HTML5 video isn't + if (!_videoJs2['default'].getComponent('Html5').isSupported()) { + return false; + } + + xMpegUrl = video.canPlayType('application/x-mpegURL'); + vndMpeg = video.canPlayType('application/vnd.apple.mpegURL'); + return (/probably|maybe/.test(xMpegUrl) || /probably|maybe/.test(vndMpeg) + ); +})(); + +// HLS is a source handler, not a tech. Make sure attempts to use it +// as one do not cause exceptions. +Hls.isSupported = function () { + return _videoJs2['default'].log.warn('HLS is no longer a tech. Please remove it from ' + 'your player\'s techOrder.'); +}; + +/** + * A comparator function to sort two playlist object by bandwidth. + * @param left {object} a media playlist object + * @param right {object} a media playlist object + * @return {number} Greater than zero if the bandwidth attribute of + * left is greater than the corresponding attribute of right. Less + * than zero if the bandwidth of right is greater than left and + * exactly zero if the two are equal. + */ +Hls.comparePlaylistBandwidth = function (left, right) { + var leftBandwidth = undefined; + var rightBandwidth = undefined; + + if (left.attributes && left.attributes.BANDWIDTH) { + leftBandwidth = left.attributes.BANDWIDTH; + } + leftBandwidth = leftBandwidth || window.Number.MAX_VALUE; + if (right.attributes && right.attributes.BANDWIDTH) { + rightBandwidth = right.attributes.BANDWIDTH; + } + rightBandwidth = rightBandwidth || window.Number.MAX_VALUE; + + return leftBandwidth - rightBandwidth; +}; + +/** + * A comparator function to sort two playlist object by resolution (width). + * @param left {object} a media playlist object + * @param right {object} a media playlist object + * @return {number} Greater than zero if the resolution.width attribute of + * left is greater than the corresponding attribute of right. Less + * than zero if the resolution.width of right is greater than left and + * exactly zero if the two are equal. + */ +Hls.comparePlaylistResolution = function (left, right) { + var leftWidth = undefined; + var rightWidth = undefined; + + if (left.attributes && left.attributes.RESOLUTION && left.attributes.RESOLUTION.width) { + leftWidth = left.attributes.RESOLUTION.width; + } + + leftWidth = leftWidth || window.Number.MAX_VALUE; + + if (right.attributes && right.attributes.RESOLUTION && right.attributes.RESOLUTION.width) { + rightWidth = right.attributes.RESOLUTION.width; + } + + rightWidth = rightWidth || window.Number.MAX_VALUE; + + // NOTE - Fallback to bandwidth sort as appropriate in cases where multiple renditions + // have the same media dimensions/ resolution + if (leftWidth === rightWidth && left.attributes.BANDWIDTH && right.attributes.BANDWIDTH) { + return left.attributes.BANDWIDTH - right.attributes.BANDWIDTH; + } + return leftWidth - rightWidth; +}; + +// A fudge factor to apply to advertised playlist bitrates to account for +// temporary flucations in client bandwidth +var bandwidthVariance = 1.2; + +// 5 minute blacklist +var blacklistDuration = 5 * 60 * 1000; + +// Fudge factor to account for TimeRanges rounding +var TIME_FUDGE_FACTOR = 1 / 30; +var Component = _videoJs2['default'].getComponent('Component'); + +// The amount of time to wait between checking the state of the buffer +var bufferCheckInterval = 500; + +// returns true if a key has failed to download within a certain amount of retries +var keyFailed = function keyFailed(key) { + return key.retries && key.retries >= 2; +}; + +/** + * Returns the CSS value for the specified property on an element + * using `getComputedStyle`. Firefox has a long-standing issue where + * getComputedStyle() may return null when running in an iframe with + * `display: none`. + * @see https://bugzilla.mozilla.org/show_bug.cgi?id=548397 + */ +var safeGetComputedStyle = function safeGetComputedStyle(el, property) { + var result = undefined; + + if (!el) { + return ''; + } + + result = getComputedStyle(el); + if (!result) { + return ''; + } + + return result[property]; +}; + +/** + * Updates segment with information about its end-point in time and, optionally, + * the segment duration if we have enough information to determine a segment duration + * accurately. + * @param playlist {object} a media playlist object + * @param segmentIndex {number} the index of segment we last appended + * @param segmentEnd {number} the known of the segment referenced by segmentIndex + */ +var updateSegmentMetadata = function updateSegmentMetadata(playlist, segmentIndex, segmentEnd) { + if (!playlist) { + return; + } + + var segment = playlist.segments[segmentIndex]; + var previousSegment = playlist.segments[segmentIndex - 1]; + + if (segmentEnd && segment) { + segment.end = segmentEnd; + + // fix up segment durations based on segment end data + if (!previousSegment) { + // first segment is always has a start time of 0 making its duration + // equal to the segment end + segment.duration = segment.end; + } else if (previousSegment.end) { + segment.duration = segment.end - previousSegment.end; + } + } +}; + +/** + * Determines if we should call endOfStream on the media source based on the state + * of the buffer or if appened segment was the final segment in the playlist. + * @param playlist {object} a media playlist object + * @param mediaSource {object} the MediaSource object + * @param segmentIndex {number} the index of segment we last appended + * @param currentBuffered {object} the buffered region that currentTime resides in + * @return {boolean} whether the calling function should call endOfStream on the MediaSource + */ +var detectEndOfStream = function detectEndOfStream(playlist, mediaSource, segmentIndex, currentBuffered) { + if (!playlist) { + return false; + } + + var segments = playlist.segments; + + // determine a few boolean values to help make the branch below easier + // to read + var appendedLastSegment = segmentIndex === segments.length - 1; + var bufferedToEnd = currentBuffered.length && segments[segments.length - 1].end <= currentBuffered.end(0); + + // if we've buffered to the end of the video, we need to call endOfStream + // so that MediaSources can trigger the `ended` event when it runs out of + // buffered data instead of waiting for me + return playlist.endList && mediaSource.readyState === 'open' && (appendedLastSegment || bufferedToEnd); +}; + +var parseCodecs = function parseCodecs(codecs) { + var result = { + codecCount: 0, + videoCodec: null, + audioProfile: null + }; + + result.codecCount = codecs.split(',').length; + result.codecCount = result.codecCount || 2; + + // parse the video codec but ignore the version + result.videoCodec = /(^|\s|,)+(avc1)[^ ,]*/i.exec(codecs); + result.videoCodec = result.videoCodec && result.videoCodec[2]; + + // parse the last field of the audio codec + result.audioProfile = /(^|\s|,)+mp4a.\d+\.(\d+)/i.exec(codecs); + result.audioProfile = result.audioProfile && result.audioProfile[2]; + + return result; +}; + +var filterBufferedRanges = function filterBufferedRanges(predicate) { + return function (time) { + var i = undefined; + var ranges = []; + var tech = this.tech_; + + // !!The order of the next two assignments is important!! + // `currentTime` must be equal-to or greater-than the start of the + // buffered range. Flash executes out-of-process so, every value can + // change behind the scenes from line-to-line. By reading `currentTime` + // after `buffered`, we ensure that it is always a current or later + // value during playback. + var buffered = tech.buffered(); + + if (typeof time === 'undefined') { + time = tech.currentTime(); + } + + // IE 11 has a bug where it will report a the video as fully buffered + // before any data has been loaded. This is a work around where we + // report a fully empty buffer until SourceBuffers have been created + // which is after a segment has been loaded and transmuxed. + if (!this.mediaSource || !this.mediaSource.mediaSource_ || !this.mediaSource.mediaSource_.sourceBuffers.length) { + return _videoJs2['default'].createTimeRanges([]); + } + + if (buffered && buffered.length) { + // Search for a range containing the play-head + for (i = 0; i < buffered.length; i++) { + if (predicate(buffered.start(i), buffered.end(i), time)) { + ranges.push([buffered.start(i), buffered.end(i)]); + } + } + } + + return _videoJs2['default'].createTimeRanges(ranges); + }; +}; + +var HlsHandler = (function (_Component) { + _inherits(HlsHandler, _Component); + + function HlsHandler(tech, options) { + var _this = this; + + _classCallCheck(this, HlsHandler); + + _get(Object.getPrototypeOf(HlsHandler.prototype), 'constructor', this).call(this, tech); + var _player = undefined; + + // tech.player() is deprecated but setup a reference to HLS for + // backwards-compatibility + if (tech.options_ && tech.options_.playerId) { + _player = (0, _videoJs2['default'])(tech.options_.playerId); + if (!_player.hls) { + Object.defineProperty(_player, 'hls', { + get: function get() { + _videoJs2['default'].log.warn('player.hls is deprecated. Use player.tech.hls instead.'); + return _this; + } + }); + } + } + this.tech_ = tech; + this.source_ = options.source; + this.mode_ = options.mode; + // the segment info object for a segment that is in the process of + // being downloaded or processed + this.pendingSegment_ = null; + + // start playlist selection at a reasonable bandwidth for + // broadband internet + // 0.5 Mbps + this.bandwidth = options.bandwidth || 4194304; + this.bytesReceived = 0; + + // loadingState_ tracks how far along the buffering process we + // have been given permission to proceed. There are three possible + // values: + // - none: do not load playlists or segments + // - meta: load playlists but not segments + // - segments: load everything + this.loadingState_ = 'none'; + if (this.tech_.preload() !== 'none') { + this.loadingState_ = 'meta'; + } + + // periodically check if new data needs to be downloaded or + // buffered data should be appended to the source buffer + this.startCheckingBuffer_(); + + this.on(this.tech_, 'seeking', function () { + this.setCurrentTime(this.tech_.currentTime()); + }); + this.on(this.tech_, 'error', function () { + this.stopCheckingBuffer_(); + }); + + this.on(this.tech_, 'play', this.play); + } + + /** + * Attempts to find the buffered TimeRange that contains the specified + * time, or where playback is currently happening if no specific time + * is specified. + * @param time (optional) {number} the time to filter on. Defaults to + * currentTime. + * @return a new TimeRanges object. + */ + + _createClass(HlsHandler, [{ + key: 'src', + value: function src(_src) { + var _this2 = this; + + var oldMediaPlaylist = undefined; + + // do nothing if the src is falsey + if (!_src) { + return; + } + + this.mediaSource = new _videoJs2['default'].MediaSource({ mode: this.mode_ }); + + // load the MediaSource into the player + this.mediaSource.addEventListener('sourceopen', this.handleSourceOpen.bind(this)); + + this.options_ = {}; + if (typeof this.source_.withCredentials !== 'undefined') { + this.options_.withCredentials = this.source_.withCredentials; + } else if (_videoJs2['default'].options.hls) { + this.options_.withCredentials = _videoJs2['default'].options.hls.withCredentials; + } + this.playlists = new Hls.PlaylistLoader(this.source_.src, this.options_.withCredentials); + + this.tech_.one('canplay', this.setupFirstPlay.bind(this)); + + this.playlists.on('loadedmetadata', function () { + oldMediaPlaylist = _this2.playlists.media(); + + // if this isn't a live video and preload permits, start + // downloading segments + if (oldMediaPlaylist.endList && _this2.tech_.preload() !== 'metadata' && _this2.tech_.preload() !== 'none') { + _this2.loadingState_ = 'segments'; + } + + _this2.setupSourceBuffer_(); + _this2.setupFirstPlay(); + _this2.fillBuffer(); + _this2.tech_.trigger('loadedmetadata'); + }); + + this.playlists.on('error', function () { + _this2.blacklistCurrentPlaylist_(_this2.playlists.error); + }); + + this.playlists.on('loadedplaylist', function () { + var updatedPlaylist = _this2.playlists.media(); + var seekable = undefined; + + if (!updatedPlaylist) { + // select the initial variant + _this2.playlists.media(_this2.selectPlaylist()); + return; + } + + _this2.updateDuration(_this2.playlists.media()); + + // update seekable + seekable = _this2.seekable(); + if (_this2.duration() === Infinity && seekable.length !== 0) { + _this2.mediaSource.addSeekableRange_(seekable.start(0), seekable.end(0)); + } + + oldMediaPlaylist = updatedPlaylist; + }); + + this.playlists.on('mediachange', function () { + _this2.tech_.trigger({ + type: 'mediachange', + bubbles: true + }); + }); + + // do nothing if the tech has been disposed already + // this can occur if someone sets the src in player.ready(), for instance + if (!this.tech_.el()) { + return; + } + + this.tech_.src(_videoJs2['default'].URL.createObjectURL(this.mediaSource)); + } + }, { + key: 'handleSourceOpen', + value: function handleSourceOpen() { + // Only attempt to create the source buffer if none already exist. + // handleSourceOpen is also called when we are "re-opening" a source buffer + // after `endOfStream` has been called (in response to a seek for instance) + if (!this.sourceBuffer) { + this.setupSourceBuffer_(); + } + + // if autoplay is enabled, begin playback. This is duplicative of + // code in video.js but is required because play() must be invoked + // *after* the media source has opened. + // NOTE: moving this invocation of play() after + // sourceBuffer.appendBuffer() below caused live streams with + // autoplay to stall + if (this.tech_.autoplay()) { + this.play(); + } + } + + /** + * Blacklist playlists that are known to be codec or + * stream-incompatible with the SourceBuffer configuration. For + * instance, Media Source Extensions would cause the video element to + * stall waiting for video data if you switched from a variant with + * video and audio to an audio-only one. + * + * @param media {object} a media playlist compatible with the current + * set of SourceBuffers. Variants in the current master playlist that + * do not appear to have compatible codec or stream configurations + * will be excluded from the default playlist selection algorithm + * indefinitely. + */ + }, { + key: 'excludeIncompatibleVariants_', + value: function excludeIncompatibleVariants_(media) { + var master = this.playlists.master; + var codecCount = 2; + var videoCodec = null; + var audioProfile = null; + var codecs = undefined; + + if (media.attributes && media.attributes.CODECS) { + codecs = parseCodecs(media.attributes.CODECS); + videoCodec = codecs.videoCodec; + audioProfile = codecs.audioProfile; + codecCount = codecs.codecCount; + } + master.playlists.forEach(function (variant) { + var variantCodecs = { + codecCount: 2, + videoCodec: null, + audioProfile: null + }; + + if (variant.attributes && variant.attributes.CODECS) { + variantCodecs = parseCodecs(variant.attributes.CODECS); + } + + // if the streams differ in the presence or absence of audio or + // video, they are incompatible + if (variantCodecs.codecCount !== codecCount) { + variant.excludeUntil = Infinity; + } + + // if h.264 is specified on the current playlist, some flavor of + // it must be specified on all compatible variants + if (variantCodecs.videoCodec !== videoCodec) { + variant.excludeUntil = Infinity; + } + // HE-AAC ("mp4a.40.5") is incompatible with all other versions of + // AAC audio in Chrome 46. Don't mix the two. + if (variantCodecs.audioProfile === '5' && audioProfile !== '5' || audioProfile === '5' && variantCodecs.audioProfile !== '5') { + variant.excludeUntil = Infinity; + } + }); + } + }, { + key: 'setupSourceBuffer_', + value: function setupSourceBuffer_() { + var media = this.playlists.media(); + var mimeType = undefined; + + // wait until a media playlist is available and the Media Source is + // attached + if (!media || this.mediaSource.readyState !== 'open') { + return; + } + + // if the codecs were explicitly specified, pass them along to the + // source buffer + mimeType = 'video/mp2t'; + if (media.attributes && media.attributes.CODECS) { + mimeType += '; codecs="' + media.attributes.CODECS + '"'; + } + this.sourceBuffer = this.mediaSource.addSourceBuffer(mimeType); + + // exclude any incompatible variant streams from future playlist + // selection + this.excludeIncompatibleVariants_(media); + + // transition the sourcebuffer to the ended state if we've hit the end of + // the playlist + this.sourceBuffer.addEventListener('updateend', this.updateEndHandler_.bind(this)); + } + + /** + * Seek to the latest media position if this is a live video and the + * player and video are loaded and initialized. + */ + }, { + key: 'setupFirstPlay', + value: function setupFirstPlay() { + var seekable = undefined; + var media = this.playlists.media(); + + // check that everything is ready to begin buffering + + // 1) the video is a live stream of unknown duration + if (this.duration() === Infinity && + + // 2) the player has not played before and is not paused + this.tech_.played().length === 0 && !this.tech_.paused() && + + // 3) the Media Source and Source Buffers are ready + this.sourceBuffer && + + // 4) the active media playlist is available + media && + + // 5) the video element or flash player is in a readyState of + // at least HAVE_FUTURE_DATA + this.tech_.readyState() >= 1) { + + // trigger the playlist loader to start "expired time"-tracking + this.playlists.trigger('firstplay'); + + // seek to the latest media position for live videos + seekable = this.seekable(); + if (seekable.length) { + this.tech_.setCurrentTime(seekable.end(0)); + } + } + } + + /** + * Begin playing the video. + */ + }, { + key: 'play', + value: function play() { + this.loadingState_ = 'segments'; + + if (this.tech_.ended()) { + this.tech_.setCurrentTime(0); + } + + if (this.tech_.played().length === 0) { + return this.setupFirstPlay(); + } + + // if the viewer has paused and we fell out of the live window, + // seek forward to the earliest available position + if (this.duration() === Infinity) { + if (this.tech_.currentTime() < this.seekable().start(0)) { + this.tech_.setCurrentTime(this.seekable().start(0)); + } + } + } + }, { + key: 'setCurrentTime', + value: function setCurrentTime(currentTime) { + var buffered = this.findBufferedRange_(); + + if (!(this.playlists && this.playlists.media())) { + // return immediately if the metadata is not ready yet + return 0; + } + + // it's clearly an edge-case but don't thrown an error if asked to + // seek within an empty playlist + if (!this.playlists.media().segments) { + return 0; + } + + // if the seek location is already buffered, continue buffering as + // usual + if (buffered && buffered.length) { + return currentTime; + } + + // if we are in the middle of appending a segment, let it finish up + if (this.pendingSegment_ && this.pendingSegment_.buffered) { + return currentTime; + } + + this.lastSegmentLoaded_ = null; + + // cancel outstanding requests and buffer appends + this.cancelSegmentXhr(); + + // abort outstanding key requests, if necessary + if (this.keyXhr_) { + this.keyXhr_.aborted = true; + this.cancelKeyXhr(); + } + + // begin filling the buffer at the new position + this.fillBuffer(this.playlists.getMediaIndexForTime_(currentTime)); + } + }, { + key: 'duration', + value: function duration() { + var playlists = this.playlists; + + if (!playlists) { + return 0; + } + + if (this.mediaSource) { + return this.mediaSource.duration; + } + + return Hls.Playlist.duration(playlists.media()); + } + }, { + key: 'seekable', + value: function seekable() { + var media = undefined; + var seekable = undefined; + + if (!this.playlists) { + return _videoJs2['default'].createTimeRanges(); + } + media = this.playlists.media(); + if (!media) { + return _videoJs2['default'].createTimeRanges(); + } + + seekable = Hls.Playlist.seekable(media); + if (seekable.length === 0) { + return seekable; + } + + // if the seekable start is zero, it may be because the player has + // been paused for a long time and stopped buffering. in that case, + // fall back to the playlist loader's running estimate of expired + // time + if (seekable.start(0) === 0) { + return _videoJs2['default'].createTimeRanges([[this.playlists.expired_, this.playlists.expired_ + seekable.end(0)]]); + } + + // seekable has been calculated based on buffering video data so it + // can be returned directly + return seekable; + } + + /** + * Update the player duration + */ + }, { + key: 'updateDuration', + value: function updateDuration(playlist) { + var _this3 = this; + + var oldDuration = this.mediaSource.duration; + var newDuration = Hls.Playlist.duration(playlist); + var buffered = this.tech_.buffered(); + var setDuration = function setDuration() { + _this3.mediaSource.duration = newDuration; + _this3.tech_.trigger('durationchange'); + + _this3.mediaSource.removeEventListener('sourceopen', setDuration); + }; + + if (buffered.length > 0) { + newDuration = Math.max(newDuration, buffered.end(buffered.length - 1)); + } + + // if the duration has changed, invalidate the cached value + if (oldDuration !== newDuration) { + // update the duration + if (this.mediaSource.readyState !== 'open') { + this.mediaSource.addEventListener('sourceopen', setDuration); + } else if (!this.sourceBuffer || !this.sourceBuffer.updating) { + this.mediaSource.duration = newDuration; + this.tech_.trigger('durationchange'); + } + } + } + + /** + * Clear all buffers and reset any state relevant to the current + * source. After this function is called, the tech should be in a + * state suitable for switching to a different video. + */ + }, { + key: 'resetSrc_', + value: function resetSrc_() { + this.cancelSegmentXhr(); + this.cancelKeyXhr(); + + if (this.sourceBuffer && this.mediaSource.readyState === 'open') { + this.sourceBuffer.abort(); + } + } + }, { + key: 'cancelKeyXhr', + value: function cancelKeyXhr() { + if (this.keyXhr_) { + this.keyXhr_.onreadystatechange = null; + this.keyXhr_.abort(); + this.keyXhr_ = null; + } + } + }, { + key: 'cancelSegmentXhr', + value: function cancelSegmentXhr() { + if (this.segmentXhr_) { + // Prevent error handler from running. + this.segmentXhr_.onreadystatechange = null; + this.segmentXhr_.abort(); + this.segmentXhr_ = null; + } + + // clear out the segment being processed + this.pendingSegment_ = null; + } + + /** + * Abort all outstanding work and cleanup. + */ + }, { + key: 'dispose', + value: function dispose() { + this.stopCheckingBuffer_(); + + if (this.playlists) { + this.playlists.dispose(); + } + + this.resetSrc_(); + _get(Object.getPrototypeOf(HlsHandler.prototype), 'dispose', this).call(this); + } + + /** + * Chooses the appropriate media playlist based on the current + * bandwidth estimate and the player size. + * @return the highest bitrate playlist less than the currently detected + * bandwidth, accounting for some amount of bandwidth variance + */ + }, { + key: 'selectPlaylist', + value: function selectPlaylist() { + var effectiveBitrate = undefined; + var sortedPlaylists = this.playlists.master.playlists.slice(); + var bandwidthPlaylists = []; + var now = +new Date(); + var i = undefined; + var variant = undefined; + var bandwidthBestVariant = undefined; + var resolutionPlusOne = undefined; + var resolutionPlusOneAttribute = undefined; + var resolutionBestVariant = undefined; + var width = undefined; + var height = undefined; + + sortedPlaylists.sort(Hls.comparePlaylistBandwidth); + + // filter out any playlists that have been excluded due to + // incompatible configurations or playback errors + sortedPlaylists = sortedPlaylists.filter(function (localVariant) { + if (typeof localVariant.excludeUntil !== 'undefined') { + return now >= localVariant.excludeUntil; + } + return true; + }); + + // filter out any variant that has greater effective bitrate + // than the current estimated bandwidth + i = sortedPlaylists.length; + while (i--) { + variant = sortedPlaylists[i]; + + // ignore playlists without bandwidth information + if (!variant.attributes || !variant.attributes.BANDWIDTH) { + continue; + } + + effectiveBitrate = variant.attributes.BANDWIDTH * bandwidthVariance; + + if (effectiveBitrate < this.bandwidth) { + bandwidthPlaylists.push(variant); + + // since the playlists are sorted in ascending order by + // bandwidth, the first viable variant is the best + if (!bandwidthBestVariant) { + bandwidthBestVariant = variant; + } + } + } + + i = bandwidthPlaylists.length; + + // sort variants by resolution + bandwidthPlaylists.sort(Hls.comparePlaylistResolution); + + // forget our old variant from above, + // or we might choose that in high-bandwidth scenarios + // (this could be the lowest bitrate rendition as we go through all of them above) + variant = null; + + width = parseInt(safeGetComputedStyle(this.tech_.el(), 'width'), 10); + height = parseInt(safeGetComputedStyle(this.tech_.el(), 'height'), 10); + + // iterate through the bandwidth-filtered playlists and find + // best rendition by player dimension + while (i--) { + variant = bandwidthPlaylists[i]; + + // ignore playlists without resolution information + if (!variant.attributes || !variant.attributes.RESOLUTION || !variant.attributes.RESOLUTION.width || !variant.attributes.RESOLUTION.height) { + continue; + } + + // since the playlists are sorted, the first variant that has + // dimensions less than or equal to the player size is the best + + var variantResolution = variant.attributes.RESOLUTION; + + if (variantResolution.width === width && variantResolution.height === height) { + // if we have the exact resolution as the player use it + resolutionPlusOne = null; + resolutionBestVariant = variant; + break; + } else if (variantResolution.width < width && variantResolution.height < height) { + // if both dimensions are less than the player use the + // previous (next-largest) variant + break; + } else if (!resolutionPlusOne || variantResolution.width < resolutionPlusOneAttribute.width && variantResolution.height < resolutionPlusOneAttribute.height) { + // If we still haven't found a good match keep a + // reference to the previous variant for the next loop + // iteration + + // By only saving variants if they are smaller than the + // previously saved variant, we ensure that we also pick + // the highest bandwidth variant that is just-larger-than + // the video player + resolutionPlusOne = variant; + resolutionPlusOneAttribute = resolutionPlusOne.attributes.RESOLUTION; + } + } + + // fallback chain of variants + return resolutionPlusOne || resolutionBestVariant || bandwidthBestVariant || sortedPlaylists[0]; + } + + /** + * Periodically request new segments and append video data. + */ + }, { + key: 'checkBuffer_', + value: function checkBuffer_() { + // calling this method directly resets any outstanding buffer checks + if (this.checkBufferTimeout_) { + window.clearTimeout(this.checkBufferTimeout_); + this.checkBufferTimeout_ = null; + } + + this.fillBuffer(); + this.drainBuffer(); + + // wait awhile and try again + this.checkBufferTimeout_ = window.setTimeout(this.checkBuffer_.bind(this), bufferCheckInterval); + } + + /** + * Setup a periodic task to request new segments if necessary and + * append bytes into the SourceBuffer. + */ + }, { + key: 'startCheckingBuffer_', + value: function startCheckingBuffer_() { + this.checkBuffer_(); + } + + /** + * Stop the periodic task requesting new segments and feeding the + * SourceBuffer. + */ + }, { + key: 'stopCheckingBuffer_', + value: function stopCheckingBuffer_() { + if (this.checkBufferTimeout_) { + window.clearTimeout(this.checkBufferTimeout_); + this.checkBufferTimeout_ = null; + } + } + + /** + * Determines whether there is enough video data currently in the buffer + * and downloads a new segment if the buffered time is less than the goal. + * @param seekToTime (optional) {number} the offset into the downloaded segment + * to seek to, in seconds + */ + }, { + key: 'fillBuffer', + value: function fillBuffer(mediaIndex) { + var tech = this.tech_; + var currentTime = tech.currentTime(); + var hasBufferedContent = this.tech_.buffered().length !== 0; + var currentBuffered = this.findBufferedRange_(); + var outsideBufferedRanges = !(currentBuffered && currentBuffered.length); + var currentBufferedEnd = 0; + var bufferedTime = 0; + var segment = undefined; + var segmentInfo = undefined; + var segmentTimestampOffset = undefined; + + // if preload is set to "none", do not download segments until playback is requested + if (this.loadingState_ !== 'segments') { + return; + } + + // if a video has not been specified, do nothing + if (!tech.currentSrc() || !this.playlists) { + return; + } + + // if there is a request already in flight, do nothing + if (this.segmentXhr_) { + return; + } + + // wait until the buffer is up to date + if (this.pendingSegment_) { + return; + } + + // if no segments are available, do nothing + if (this.playlists.state === 'HAVE_NOTHING' || !this.playlists.media() || !this.playlists.media().segments) { + return; + } + + // if a playlist switch is in progress, wait for it to finish + if (this.playlists.state === 'SWITCHING_MEDIA') { + return; + } + + if (typeof mediaIndex === 'undefined') { + if (currentBuffered && currentBuffered.length) { + currentBufferedEnd = currentBuffered.end(0); + mediaIndex = this.playlists.getMediaIndexForTime_(currentBufferedEnd); + bufferedTime = Math.max(0, currentBufferedEnd - currentTime); + + // if there is plenty of content in the buffer and we're not + // seeking, relax for awhile + if (bufferedTime >= Hls.GOAL_BUFFER_LENGTH) { + return; + } + } else { + mediaIndex = this.playlists.getMediaIndexForTime_(this.tech_.currentTime()); + } + } + segment = this.playlists.media().segments[mediaIndex]; + + // if the video has finished downloading + if (!segment) { + return; + } + + // we have entered a state where we are fetching the same segment, + // try to walk forward + if (this.lastSegmentLoaded_ && this.playlistUriToUrl(this.lastSegmentLoaded_.uri) === this.playlistUriToUrl(segment.uri) && this.lastSegmentLoaded_.byterange === segment.byterange) { + return this.fillBuffer(mediaIndex + 1); + } + + // package up all the work to append the segment + segmentInfo = { + // resolve the segment URL relative to the playlist + uri: this.playlistUriToUrl(segment.uri), + // the segment's mediaIndex & mediaSequence at the time it was requested + mediaIndex: mediaIndex, + mediaSequence: this.playlists.media().mediaSequence, + // the segment's playlist + playlist: this.playlists.media(), + // The state of the buffer when this segment was requested + currentBufferedEnd: currentBufferedEnd, + // unencrypted bytes of the segment + bytes: null, + // when a key is defined for this segment, the encrypted bytes + encryptedBytes: null, + // optionally, the decrypter that is unencrypting the segment + decrypter: null, + // the state of the buffer before a segment is appended will be + // stored here so that the actual segment duration can be + // determined after it has been appended + buffered: null, + // The target timestampOffset for this segment when we append it + // to the source buffer + timestampOffset: null + }; + + if (mediaIndex > 0) { + segmentTimestampOffset = Hls.Playlist.duration(segmentInfo.playlist, segmentInfo.playlist.mediaSequence + mediaIndex) + this.playlists.expired_; + } + + if (this.tech_.seeking() && outsideBufferedRanges) { + // If there are discontinuities in the playlist, we can't be sure of anything + // related to time so we reset the timestamp offset and start appending data + // anew on every seek + if (segmentInfo.playlist.discontinuityStarts.length) { + segmentInfo.timestampOffset = segmentTimestampOffset; + } + } else if (segment.discontinuity && currentBuffered.length) { + // If we aren't seeking and are crossing a discontinuity, we should set + // timestampOffset for new segments to be appended the end of the current + // buffered time-range + segmentInfo.timestampOffset = currentBuffered.end(0); + } else if (!hasBufferedContent && this.tech_.currentTime() > 0.05) { + // If we are trying to play at a position that is not zero but we aren't + // currently seeking according to the video element + segmentInfo.timestampOffset = segmentTimestampOffset; + } + + this.loadSegment(segmentInfo); + } + }, { + key: 'playlistUriToUrl', + value: function playlistUriToUrl(segmentRelativeUrl) { + var playListUrl = undefined; + + // resolve the segment URL relative to the playlist + if (this.playlists.media().uri === this.source_.src) { + playListUrl = (0, _resolveUrl2['default'])(this.source_.src, segmentRelativeUrl); + } else { + playListUrl = (0, _resolveUrl2['default'])((0, _resolveUrl2['default'])(this.source_.src, this.playlists.media().uri || ''), segmentRelativeUrl); + } + return playListUrl; + } + + /* + * Turns segment byterange into a string suitable for use in + * HTTP Range requests + */ + }, { + key: 'byterangeStr_', + value: function byterangeStr_(byterange) { + var byterangeStart = undefined; + var byterangeEnd = undefined; + + // `byterangeEnd` is one less than `offset + length` because the HTTP range + // header uses inclusive ranges + byterangeEnd = byterange.offset + byterange.length - 1; + byterangeStart = byterange.offset; + return 'bytes=' + byterangeStart + '-' + byterangeEnd; + } + + /* + * Defines headers for use in the xhr request for a particular segment. + */ + }, { + key: 'segmentXhrHeaders_', + value: function segmentXhrHeaders_(segment) { + var headers = {}; + + if ('byterange' in segment) { + headers.Range = this.byterangeStr_(segment.byterange); + } + return headers; + } + + /* + * Sets `bandwidth`, `segmentXhrTime`, and appends to the `bytesReceived. + * Expects an object with: + * * `roundTripTime` - the round trip time for the request we're setting the time for + * * `bandwidth` - the bandwidth we want to set + * * `bytesReceived` - amount of bytes downloaded + * `bandwidth` is the only required property. + */ + }, { + key: 'setBandwidth', + value: function setBandwidth(localXhr) { + // calculate the download bandwidth + this.segmentXhrTime = localXhr.roundTripTime; + this.bandwidth = localXhr.bandwidth; + this.bytesReceived += localXhr.bytesReceived || 0; + + this.tech_.trigger('bandwidthupdate'); + } + + /* + * Blacklists a playlist when an error occurs for a set amount of time + * making it unavailable for selection by the rendition selection algorithm + * and then forces a new playlist (rendition) selection. + */ + }, { + key: 'blacklistCurrentPlaylist_', + value: function blacklistCurrentPlaylist_(error) { + var currentPlaylist = undefined; + var nextPlaylist = undefined; + + // If the `error` was generated by the playlist loader, it will contain + // the playlist we were trying to load (but failed) and that should be + // blacklisted instead of the currently selected playlist which is likely + // out-of-date in this scenario + currentPlaylist = error.playlist || this.playlists.media(); + + // If there is no current playlist, then an error occurred while we were + // trying to load the master OR while we were disposing of the tech + if (!currentPlaylist) { + this.error = error; + return this.mediaSource.endOfStream('network'); + } + + // Blacklist this playlist + currentPlaylist.excludeUntil = Date.now() + blacklistDuration; + + // Select a new playlist + nextPlaylist = this.selectPlaylist(); + + if (nextPlaylist) { + _videoJs2['default'].log.warn('Problem encountered with the current ' + 'HLS playlist. Switching to another playlist.'); + + return this.playlists.media(nextPlaylist); + } + _videoJs2['default'].log.warn('Problem encountered with the current ' + 'HLS playlist. No suitable alternatives found.'); + // We have no more playlists we can select so we must fail + this.error = error; + return this.mediaSource.endOfStream('network'); + } + }, { + key: 'loadSegment', + value: function loadSegment(segmentInfo) { + var _this4 = this; + + var segment = segmentInfo.playlist.segments[segmentInfo.mediaIndex]; + var removeToTime = 0; + var seekable = this.seekable(); + var currentTime = this.tech_.currentTime(); + + // Chrome has a hard limit of 150mb of + // buffer and a very conservative "garbage collector" + // We manually clear out the old buffer to ensure + // we don't trigger the QuotaExceeded error + // on the source buffer during subsequent appends + if (this.sourceBuffer && !this.sourceBuffer.updating) { + // If we have a seekable range use that as the limit for what can be removed safely + // otherwise remove anything older than 1 minute before the current play head + if (seekable.length && seekable.start(0) > 0 && seekable.start(0) < currentTime) { + removeToTime = seekable.start(0); + } else { + removeToTime = currentTime - 60; + } + + if (removeToTime > 0) { + this.sourceBuffer.remove(0, removeToTime); + } + } + + // if the segment is encrypted, request the key + if (segment.key) { + this.fetchKey_(segment); + } + + // request the next segment + this.segmentXhr_ = Hls.xhr({ + uri: segmentInfo.uri, + responseType: 'arraybuffer', + withCredentials: this.source_.withCredentials, + // Set xhr timeout to 150% of the segment duration to allow us + // some time to switch renditions in the event of a catastrophic + // decrease in network performance or a server issue. + timeout: segment.duration * 1.5 * 1000, + headers: this.segmentXhrHeaders_(segment) + }, function (error, request) { + // This is a timeout of a previously aborted segment request + // so simply ignore it + if (!_this4.segmentXhr_ || request !== _this4.segmentXhr_) { + return; + } + + // the segment request is no longer outstanding + _this4.segmentXhr_ = null; + + // if a segment request times out, we may have better luck with another playlist + if (request.timedout) { + _this4.bandwidth = 1; + return _this4.playlists.media(_this4.selectPlaylist()); + } + + // otherwise, trigger a network error + if (!request.aborted && error) { + return _this4.blacklistCurrentPlaylist_({ + status: request.status, + message: 'HLS segment request error at URL: ' + segmentInfo.uri, + code: request.status >= 500 ? 4 : 2 + }); + } + + // stop processing if the request was aborted + if (!request.response) { + return; + } + + _this4.lastSegmentLoaded_ = segment; + _this4.setBandwidth(request); + + if (segment.key) { + segmentInfo.encryptedBytes = new Uint8Array(request.response); + } else { + segmentInfo.bytes = new Uint8Array(request.response); + } + + _this4.pendingSegment_ = segmentInfo; + + _this4.tech_.trigger('progress'); + _this4.drainBuffer(); + + // figure out what stream the next segment should be downloaded from + // with the updated bandwidth information + _this4.playlists.media(_this4.selectPlaylist()); + }); + } + }, { + key: 'drainBuffer', + value: function drainBuffer() { + var segmentInfo = undefined; + var mediaIndex = undefined; + var playlist = undefined; + var bytes = undefined; + var segment = undefined; + var decrypter = undefined; + var segIv = undefined; + + // if the buffer is empty or the source buffer hasn't been created + // yet, do nothing + if (!this.pendingSegment_ || !this.sourceBuffer) { + return; + } + + // the pending segment has already been appended and we're waiting + // for updateend to fire + if (this.pendingSegment_.buffered) { + return; + } + + // we can't append more data if the source buffer is busy processing + // what we've already sent + if (this.sourceBuffer.updating) { + return; + } + + segmentInfo = this.pendingSegment_; + mediaIndex = segmentInfo.mediaIndex; + playlist = segmentInfo.playlist; + bytes = segmentInfo.bytes; + segment = playlist.segments[mediaIndex]; + + if (segment.key && !bytes) { + // this is an encrypted segment + // if the key download failed, we want to skip this segment + // but if the key hasn't downloaded yet, we want to try again later + if (keyFailed(segment.key)) { + return this.blacklistCurrentPlaylist_({ + message: 'HLS segment key request error.', + code: 4 + }); + } else if (!segment.key.bytes) { + // waiting for the key bytes, try again later + return; + } else if (segmentInfo.decrypter) { + // decryption is in progress, try again later + return; + } + // if the media sequence is greater than 2^32, the IV will be incorrect + // assuming 10s segments, that would be about 1300 years + segIv = segment.key.iv || new Uint32Array([0, 0, 0, mediaIndex + playlist.mediaSequence]); + + // create a decrypter to incrementally decrypt the segment + decrypter = new Hls.Decrypter(segmentInfo.encryptedBytes, segment.key.bytes, segIv, function (error, localBytes) { + if (error) { + _videoJs2['default'].log.warn(error); + } + segmentInfo.bytes = localBytes; + }); + segmentInfo.decrypter = decrypter; + return; + } + + this.pendingSegment_.buffered = this.tech_.buffered(); + + if (segmentInfo.timestampOffset !== null) { + this.sourceBuffer.timestampOffset = segmentInfo.timestampOffset; + } + + // the segment is asynchronously added to the current buffered data + this.sourceBuffer.appendBuffer(bytes); + } + }, { + key: 'updateEndHandler_', + value: function updateEndHandler_() { + var segmentInfo = this.pendingSegment_; + var playlist = undefined; + var currentMediaIndex = undefined; + var currentBuffered = undefined; + var seekable = undefined; + var timelineUpdate = undefined; + var isEndOfStream = undefined; + + // stop here if the update errored or was aborted + if (!segmentInfo) { + this.pendingSegment_ = null; + return; + } + + // In Firefox, the updateend event is triggered for both removing from the buffer and + // adding to the buffer. To prevent this code from executing on removals, we wait for + // segmentInfo to have a filled in buffered value before we continue processing. + if (!segmentInfo.buffered) { + return; + } + + this.pendingSegment_ = null; + + playlist = segmentInfo.playlist; + currentMediaIndex = segmentInfo.mediaIndex + (segmentInfo.mediaSequence - playlist.mediaSequence); + currentBuffered = this.findBufferedRange_(); + isEndOfStream = detectEndOfStream(playlist, this.mediaSource, currentMediaIndex, currentBuffered); + + // if we switched renditions don't try to add segment timeline + // information to the playlist + if (segmentInfo.playlist.uri !== this.playlists.media().uri) { + if (isEndOfStream) { + return this.mediaSource.endOfStream(); + } + return this.fillBuffer(); + } + + // when seeking to the beginning of the seekable range, it's + // possible that imprecise timing information may cause the seek to + // end up earlier than the start of the range + // in that case, seek again + seekable = this.seekable(); + if (this.tech_.seeking() && currentBuffered.length === 0) { + if (seekable.length && this.tech_.currentTime() < seekable.start(0)) { + var next = this.findNextBufferedRange_(); + + if (next.length) { + _videoJs2['default'].log('tried seeking to', this.tech_.currentTime(), 'but that was too early, retrying at', next.start(0)); + this.tech_.setCurrentTime(next.start(0) + TIME_FUDGE_FACTOR); + } + } + } + + timelineUpdate = Hls.findSoleUncommonTimeRangesEnd_(segmentInfo.buffered, this.tech_.buffered()); + + // Update segment meta-data (duration and end-point) based on timeline + updateSegmentMetadata(playlist, currentMediaIndex, timelineUpdate); + + // If we decide to signal the end of stream, then we can return instead + // of trying to fetch more segments + if (isEndOfStream) { + return this.mediaSource.endOfStream(); + } + + if (timelineUpdate !== null || segmentInfo.buffered.length !== this.tech_.buffered().length) { + this.updateDuration(playlist); + // check if it's time to download the next segment + this.fillBuffer(); + return; + } + + // the last segment append must have been entirely in the + // already buffered time ranges. just buffer forward until we + // find a segment that adds to the buffered time ranges and + // improves subsequent media index calculations. + this.fillBuffer(currentMediaIndex + 1); + return; + } + + /** + * Attempt to retrieve the key for a particular media segment. + */ + }, { + key: 'fetchKey_', + value: function fetchKey_(segment) { + var _this5 = this; + + var key = undefined; + var settings = undefined; + var receiveKey = undefined; + + // if there is a pending XHR or no segments, don't do anything + if (this.keyXhr_) { + return; + } + + settings = this.options_; + + /** + * Handle a key XHR response. + */ + receiveKey = function (keyRecieved) { + return function (error, request) { + var view = undefined; + + _this5.keyXhr_ = null; + + if (error || !request.response || request.response.byteLength !== 16) { + keyRecieved.retries = keyRecieved.retries || 0; + keyRecieved.retries++; + if (!request.aborted) { + // try fetching again + _this5.fetchKey_(segment); + } + return; + } + + view = new DataView(request.response); + keyRecieved.bytes = new Uint32Array([view.getUint32(0), view.getUint32(4), view.getUint32(8), view.getUint32(12)]); + + // check to see if this allows us to make progress buffering now + _this5.checkBuffer_(); + }; + }; + + key = segment.key; + + // nothing to do if this segment is unencrypted + if (!key) { + return; + } + + // request the key if the retry limit hasn't been reached + if (!key.bytes && !keyFailed(key)) { + this.keyXhr_ = Hls.xhr({ + uri: this.playlistUriToUrl(key.uri), + responseType: 'arraybuffer', + withCredentials: settings.withCredentials + }, receiveKey(key)); + return; + } + } + }]); + + return HlsHandler; +})(Component); + +exports['default'] = HlsHandler; +HlsHandler.prototype.findBufferedRange_ = filterBufferedRanges(function (start, end, time) { + return start - TIME_FUDGE_FACTOR <= time && end + TIME_FUDGE_FACTOR >= time; +}); +/** + * Returns the TimeRanges that begin at or later than the specified + * time. + * @param time (optional) {number} the time to filter on. Defaults to + * currentTime. + * @return a new TimeRanges object. + */ +HlsHandler.prototype.findNextBufferedRange_ = filterBufferedRanges(function (start, end, time) { + return start - TIME_FUDGE_FACTOR >= time; +}); + +/** + * The Source Handler object, which informs video.js what additional + * MIME types are supported and sets up playback. It is registered + * automatically to the appropriate tech based on the capabilities of + * the browser it is running in. It is not necessary to use or modify + * this object in normal usage. + */ +var HlsSourceHandler = function HlsSourceHandler(mode) { + return { + canHandleSource: function canHandleSource(srcObj) { + return HlsSourceHandler.canPlayType(srcObj.type); + }, + handleSource: function handleSource(source, tech) { + if (mode === 'flash') { + // We need to trigger this asynchronously to give others the chance + // to bind to the event when a source is set at player creation + tech.setTimeout(function () { + tech.trigger('loadstart'); + }, 1); + } + tech.hls = new HlsHandler(tech, { + source: source, + mode: mode + }); + tech.hls.src(source.src); + return tech.hls; + }, + canPlayType: function canPlayType(type) { + return HlsSourceHandler.canPlayType(type); + } + }; +}; + +HlsSourceHandler.canPlayType = function (type) { + var mpegurlRE = /^application\/(?:x-|vnd\.apple\.)mpegurl/i; + + // favor native HLS support if it's available + if (Hls.supportsNativeHls) { + return false; + } + return mpegurlRE.test(type); +}; + +if (typeof _videoJs2['default'].MediaSource === 'undefined' || typeof _videoJs2['default'].URL === 'undefined') { + _videoJs2['default'].MediaSource = _videojsContribMediaSources.MediaSource; + _videoJs2['default'].URL = _videojsContribMediaSources.URL; +} + +// register source handlers with the appropriate techs +if (_videojsContribMediaSources.MediaSource.supportsNativeMediaSources()) { + _videoJs2['default'].getComponent('Html5').registerSourceHandler(HlsSourceHandler('html5')); +} +if (window.Uint8Array) { + _videoJs2['default'].getComponent('Flash').registerSourceHandler(HlsSourceHandler('flash')); +} + +_videoJs2['default'].HlsHandler = HlsHandler; +_videoJs2['default'].HlsSourceHandler = HlsSourceHandler; +_videoJs2['default'].Hls = Hls; +_videoJs2['default'].m3u8 = _m3u82['default']; + +exports['default'] = { + Hls: Hls, + HlsHandler: HlsHandler, + HlsSourceHandler: HlsSourceHandler +}; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./bin-utils":1,"./decrypter":5,"./m3u8":6,"./playlist":11,"./playlist-loader":10,"./resolve-url":12,"./xhr":14,"videojs-contrib-media-sources":28}]},{},[51])(51) +});
\ No newline at end of file diff --git a/examples/tg16/web/stream.gathering.org/js-version/js/videojs-contrib-media-sources.js b/examples/tg16/web/stream.gathering.org/js-version/js/videojs-contrib-media-sources.js new file mode 100644 index 0000000..8e7d20a --- /dev/null +++ b/examples/tg16/web/stream.gathering.org/js-version/js/videojs-contrib-media-sources.js @@ -0,0 +1,7562 @@ +/** + * videojs-contrib-media-sources + * @version 3.0.1 + * @copyright 2016 Brightcove, Inc. + * @license Apache-2.0 + */ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.videojsContribMediaSources = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var deprecateOldCue = function deprecateOldCue(cue) { + Object.defineProperties(cue.frame, { + id: { + get: function get() { + _videoJs2['default'].log.warn('cue.frame.id is deprecated. Use cue.value.key instead.'); + return cue.value.key; + } + }, + value: { + get: function get() { + _videoJs2['default'].log.warn('cue.frame.value is deprecated. Use cue.value.data instead.'); + return cue.value.data; + } + }, + privateData: { + get: function get() { + _videoJs2['default'].log.warn('cue.frame.privateData is deprecated. Use cue.value.data instead.'); + return cue.value.data; + } + } + }); +}; + +var addTextTrackData = function addTextTrackData(sourceHandler, captionArray, metadataArray) { + var Cue = window.WebKitDataCue || window.VTTCue; + + if (captionArray) { + captionArray.forEach(function (caption) { + this.inbandTextTrack_.addCue(new Cue(caption.startTime + this.timestampOffset, caption.endTime + this.timestampOffset, caption.text)); + }, sourceHandler); + } + + if (metadataArray) { + metadataArray.forEach(function (metadata) { + var time = metadata.cueTime + this.timestampOffset; + + metadata.frames.forEach(function (frame) { + var cue = new Cue(time, time, frame.value || frame.url || frame.data || ''); + + cue.frame = frame; + cue.value = frame; + deprecateOldCue(cue); + this.metadataTrack_.addCue(cue); + }, this); + }, sourceHandler); + } +}; + +exports['default'] = addTextTrackData; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],2:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); +var createTextTracksIfNecessary = function createTextTracksIfNecessary(sourceBuffer, mediaSource, segment) { + // create an in-band caption track if one is present in the segment + if (segment.captions && segment.captions.length && !sourceBuffer.inbandTextTrack_) { + sourceBuffer.inbandTextTrack_ = mediaSource.player_.addTextTrack('captions', 'cc1'); + } + + if (segment.metadata && segment.metadata.length && !sourceBuffer.metadataTrack_) { + sourceBuffer.metadataTrack_ = mediaSource.player_.addTextTrack('metadata', 'Timed Metadata'); + sourceBuffer.metadataTrack_.inBandMetadataTrackDispatchType = segment.metadata.dispatchType; + } +}; + +exports['default'] = createTextTracksIfNecessary; +module.exports = exports['default']; +},{}],3:[function(require,module,exports){ +/** + * The maximum size in bytes for append operations to the video.js + * SWF. Calling through to Flash blocks and can be expensive so + * tuning this parameter may improve playback on slower + * systems. There are two factors to consider: + * - Each interaction with the SWF must be quick or you risk dropping + * video frames. To maintain 60fps for the rest of the page, each append + * must not take longer than 16ms. Given the likelihood that the page + * will be executing more javascript than just playback, you probably + * want to aim for less than 8ms. We aim for just 4ms. + * - Bigger appends significantly increase throughput. The total number of + * bytes over time delivered to the SWF must exceed the video bitrate or + * playback will stall. + * + * We adaptively tune the size of appends to give the best throughput + * possible given the performance of the system. To do that we try to append + * as much as possible in TIME_PER_TICK and while tuning the size of appends + * dynamically so that we only append about 4-times in that 4ms span. + * + * The reason we try to keep the number of appends around four is due to + * externalities such as Flash load and garbage collection that are highly + * variable and having 4 iterations allows us to exit the loop early if + * an iteration takes longer than expected. + */ + +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var flashConstants = { + TIME_BETWEEN_TICKS: Math.floor(1000 / 480), + TIME_PER_TICK: Math.floor(1000 / 240), + // 1kb + BYTES_PER_CHUNK: 1 * 1024, + MIN_CHUNK: 1024, + MAX_CHUNK: 1024 * 1024 +}; + +exports["default"] = flashConstants; +module.exports = exports["default"]; +},{}],4:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var _flashSourceBuffer = require('./flash-source-buffer'); + +var _flashSourceBuffer2 = _interopRequireDefault(_flashSourceBuffer); + +var _flashConstants = require('./flash-constants'); + +var _flashConstants2 = _interopRequireDefault(_flashConstants); + +var FlashMediaSource = (function (_videojs$EventTarget) { + _inherits(FlashMediaSource, _videojs$EventTarget); + + function FlashMediaSource() { + var _this = this; + + _classCallCheck(this, FlashMediaSource); + + _get(Object.getPrototypeOf(FlashMediaSource.prototype), 'constructor', this).call(this); + this.sourceBuffers = []; + this.readyState = 'closed'; + + this.on(['sourceopen', 'webkitsourceopen'], function (event) { + // find the swf where we will push media data + _this.swfObj = document.getElementById(event.swfId); + _this.player_ = (0, _videoJs2['default'])(_this.swfObj.parentNode); + _this.tech_ = _this.swfObj.tech; + _this.readyState = 'open'; + + _this.tech_.on('seeking', function () { + var i = _this.sourceBuffers.length; + + while (i--) { + _this.sourceBuffers[i].abort(); + } + }); + + // trigger load events + if (_this.swfObj) { + _this.swfObj.vjs_load(); + } + }); + } + + /** + * Set or return the presentation duration. + * @param value {double} the duration of the media in seconds + * @param {double} the current presentation duration + * @see http://www.w3.org/TR/media-source/#widl-MediaSource-duration + */ + + _createClass(FlashMediaSource, [{ + key: 'addSeekableRange_', + value: function addSeekableRange_() {} + // intentional no-op + + // create a new source buffer to receive a type of media data + + }, { + key: 'addSourceBuffer', + value: function addSourceBuffer(type) { + var sourceBuffer = undefined; + + // if this is an FLV type, we'll push data to flash + if (type.indexOf('video/mp2t') === 0) { + // Flash source buffers + sourceBuffer = new _flashSourceBuffer2['default'](this); + } else { + throw new Error('NotSupportedError (Video.js)'); + } + + this.sourceBuffers.push(sourceBuffer); + return sourceBuffer; + } + + /* eslint-disable max-len */ + /** + * Signals the end of the stream. + * @param error {string} (optional) Signals that a playback error + * has occurred. If specified, it must be either "network" or + * "decode". + * @see https://w3c.github.io/media-source/#widl-MediaSource-endOfStream-void-EndOfStreamError-error + */ + /* eslint-enable max-len */ + }, { + key: 'endOfStream', + value: function endOfStream(error) { + if (error === 'network') { + // MEDIA_ERR_NETWORK + this.tech_.error(2); + } else if (error === 'decode') { + // MEDIA_ERR_DECODE + this.tech_.error(3); + } + if (this.readyState !== 'ended') { + this.readyState = 'ended'; + this.swfObj.vjs_endOfStream(); + } + } + }]); + + return FlashMediaSource; +})(_videoJs2['default'].EventTarget); + +exports['default'] = FlashMediaSource; +try { + Object.defineProperty(FlashMediaSource.prototype, 'duration', { + get: function get() { + if (!this.swfObj) { + return NaN; + } + // get the current duration from the SWF + return this.swfObj.vjs_getProperty('duration'); + }, + set: function set(value) { + var i = undefined; + var oldDuration = this.swfObj.vjs_getProperty('duration'); + + this.swfObj.vjs_setProperty('duration', value); + + if (value < oldDuration) { + // In MSE, this triggers the range removal algorithm which causes + // an update to occur + for (i = 0; i < this.sourceBuffers.length; i++) { + this.sourceBuffers[i].remove(value, oldDuration); + } + } + + return value; + } + }); +} catch (e) { + // IE8 throws if defineProperty is called on a non-DOM node. We + // don't support IE8 but we shouldn't throw an error if loaded + // there. + FlashMediaSource.prototype.duration = NaN; +} + +for (var property in _flashConstants2['default']) { + FlashMediaSource[property] = _flashConstants2['default'][property]; +} +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./flash-constants":3,"./flash-source-buffer":5}],5:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var _muxJs = require('mux.js'); + +var _muxJs2 = _interopRequireDefault(_muxJs); + +var _removeCuesFromTrack = require('./remove-cues-from-track'); + +var _removeCuesFromTrack2 = _interopRequireDefault(_removeCuesFromTrack); + +var _createTextTracksIfNecessary = require('./create-text-tracks-if-necessary'); + +var _createTextTracksIfNecessary2 = _interopRequireDefault(_createTextTracksIfNecessary); + +var _addTextTrackData = require('./add-text-track-data'); + +var _addTextTrackData2 = _interopRequireDefault(_addTextTrackData); + +var _flashConstants = require('./flash-constants'); + +var _flashConstants2 = _interopRequireDefault(_flashConstants); + +var scheduleTick = function scheduleTick(func) { + // Chrome doesn't invoke requestAnimationFrame callbacks + // in background tabs, so use setTimeout. + window.setTimeout(func, _flashConstants2['default'].TIME_BETWEEN_TICKS); +}; + +// Source Buffer + +var FlashSourceBuffer = (function (_videojs$EventTarget) { + _inherits(FlashSourceBuffer, _videojs$EventTarget); + + function FlashSourceBuffer(mediaSource) { + var _this = this; + + _classCallCheck(this, FlashSourceBuffer); + + _get(Object.getPrototypeOf(FlashSourceBuffer.prototype), 'constructor', this).call(this); + var encodedHeader = undefined; + + // Start off using the globally defined value but refine + // as we append data into flash + this.chunkSize_ = _flashConstants2['default'].BYTES_PER_CHUNK; + + // byte arrays queued to be appended + this.buffer_ = []; + + // the total number of queued bytes + this.bufferSize_ = 0; + + // to be able to determine the correct position to seek to, we + // need to retain information about the mapping between the + // media timeline and PTS values + this.basePtsOffset_ = NaN; + + this.mediaSource = mediaSource; + + // indicates whether the asynchronous continuation of an operation + // is still being processed + // see https://w3c.github.io/media-source/#widl-SourceBuffer-updating + this.updating = false; + this.timestampOffset_ = 0; + + // TS to FLV transmuxer + this.segmentParser_ = new _muxJs2['default'].flv.Transmuxer(); + this.segmentParser_.on('data', this.receiveBuffer_.bind(this)); + encodedHeader = window.btoa(String.fromCharCode.apply(null, Array.prototype.slice.call(this.segmentParser_.getFlvHeader()))); + this.mediaSource.swfObj.vjs_appendBuffer(encodedHeader); + + Object.defineProperty(this, 'timestampOffset', { + get: function get() { + return this.timestampOffset_; + }, + set: function set(val) { + if (typeof val === 'number' && val >= 0) { + this.timestampOffset_ = val; + this.segmentParser_ = new _muxJs2['default'].flv.Transmuxer(); + this.segmentParser_.on('data', this.receiveBuffer_.bind(this)); + // We have to tell flash to expect a discontinuity + this.mediaSource.swfObj.vjs_discontinuity(); + // the media <-> PTS mapping must be re-established after + // the discontinuity + this.basePtsOffset_ = NaN; + } + } + }); + + Object.defineProperty(this, 'buffered', { + get: function get() { + return _videoJs2['default'].createTimeRanges(this.mediaSource.swfObj.vjs_getProperty('buffered')); + } + }); + + // On a seek we remove all text track data since flash has no concept + // of a buffered-range and everything else is reset on seek + this.mediaSource.player_.on('seeked', function () { + (0, _removeCuesFromTrack2['default'])(0, Infinity, _this.metadataTrack_); + (0, _removeCuesFromTrack2['default'])(0, Infinity, _this.inbandTextTrack_); + }); + } + + // accept video data and pass to the video (swf) object + + _createClass(FlashSourceBuffer, [{ + key: 'appendBuffer', + value: function appendBuffer(bytes) { + var _this2 = this; + + var error = undefined; + var chunk = 512 * 1024; + var i = 0; + + if (this.updating) { + error = new Error('SourceBuffer.append() cannot be called ' + 'while an update is in progress'); + error.name = 'InvalidStateError'; + error.code = 11; + throw error; + } + + this.updating = true; + this.mediaSource.readyState = 'open'; + this.trigger({ type: 'update' }); + + // this is here to use recursion + var chunkInData = function chunkInData() { + _this2.segmentParser_.push(bytes.subarray(i, i + chunk)); + i += chunk; + if (i < bytes.byteLength) { + scheduleTick(chunkInData); + } else { + scheduleTick(_this2.segmentParser_.flush.bind(_this2.segmentParser_)); + } + }; + + chunkInData(); + } + + // reset the parser and remove any data queued to be sent to the swf + }, { + key: 'abort', + value: function abort() { + this.buffer_ = []; + this.bufferSize_ = 0; + this.mediaSource.swfObj.vjs_abort(); + + // report any outstanding updates have ended + if (this.updating) { + this.updating = false; + this.trigger({ type: 'updateend' }); + } + } + + // Flash cannot remove ranges already buffered in the NetStream + // but seeking clears the buffer entirely. For most purposes, + // having this operation act as a no-op is acceptable. + }, { + key: 'remove', + value: function remove(start, end) { + (0, _removeCuesFromTrack2['default'])(start, end, this.metadataTrack_); + (0, _removeCuesFromTrack2['default'])(start, end, this.inbandTextTrack_); + this.trigger({ type: 'update' }); + this.trigger({ type: 'updateend' }); + } + }, { + key: 'receiveBuffer_', + value: function receiveBuffer_(segment) { + var _this3 = this; + + // create an in-band caption track if one is present in the segment + (0, _createTextTracksIfNecessary2['default'])(this, this.mediaSource, segment); + (0, _addTextTrackData2['default'])(this, segment.captions, segment.metadata); + + // Do this asynchronously since convertTagsToData_ can be time consuming + scheduleTick(function () { + var flvBytes = _this3.convertTagsToData_(segment); + + if (_this3.buffer_.length === 0) { + scheduleTick(_this3.processBuffer_.bind(_this3)); + } + + if (flvBytes) { + _this3.buffer_.push(flvBytes); + _this3.bufferSize_ += flvBytes.byteLength; + } + }); + } + + // append a portion of the current buffer to the SWF + }, { + key: 'processBuffer_', + value: function processBuffer_() { + var chunk = undefined; + var i = undefined; + var length = undefined; + var binary = undefined; + var b64str = undefined; + var startByte = 0; + var appendIterations = 0; + var startTime = +new Date(); + var appendTime = undefined; + + if (!this.buffer_.length) { + if (this.updating !== false) { + this.updating = false; + this.trigger({ type: 'updateend' }); + } + // do nothing if the buffer is empty + return; + } + + do { + appendIterations++; + // concatenate appends up to the max append size + chunk = this.buffer_[0].subarray(startByte, startByte + this.chunkSize_); + + // requeue any bytes that won't make it this round + if (chunk.byteLength < this.chunkSize_ || this.buffer_[0].byteLength === startByte + this.chunkSize_) { + startByte = 0; + this.buffer_.shift(); + } else { + startByte += this.chunkSize_; + } + + this.bufferSize_ -= chunk.byteLength; + + // base64 encode the bytes + binary = ''; + length = chunk.byteLength; + for (i = 0; i < length; i++) { + binary += String.fromCharCode(chunk[i]); + } + b64str = window.btoa(binary); + + // bypass normal ExternalInterface calls and pass xml directly + // IE can be slow by default + this.mediaSource.swfObj.CallFunction('<invoke name="vjs_appendBuffer"' + 'returntype="javascript"><arguments><string>' + b64str + '</string></arguments></invoke>'); + appendTime = new Date() - startTime; + } while (this.buffer_.length && appendTime < _flashConstants2['default'].TIME_PER_TICK); + + if (this.buffer_.length && startByte) { + this.buffer_[0] = this.buffer_[0].subarray(startByte); + } + + if (appendTime >= _flashConstants2['default'].TIME_PER_TICK) { + // We want to target 4 iterations per time-slot so that gives us + // room to adjust to changes in Flash load and other externalities + // such as garbage collection while still maximizing throughput + this.chunkSize_ = Math.floor(this.chunkSize_ * (appendIterations / 4)); + } + + // We also make sure that the chunk-size doesn't drop below 1KB or + // go above 1MB as a sanity check + this.chunkSize_ = Math.max(_flashConstants2['default'].MIN_CHUNK, Math.min(this.chunkSize_, _flashConstants2['default'].MAX_CHUNK)); + + // schedule another append if necessary + if (this.bufferSize_ !== 0) { + scheduleTick(this.processBuffer_.bind(this)); + } else { + this.updating = false; + this.trigger({ type: 'updateend' }); + } + } + + // Turns an array of flv tags into a Uint8Array representing the + // flv data. Also removes any tags that are before the current + // time so that playback begins at or slightly after the right + // place on a seek + }, { + key: 'convertTagsToData_', + value: function convertTagsToData_(segmentData) { + var segmentByteLength = 0; + var tech = this.mediaSource.tech_; + var targetPts = 0; + var i = undefined; + var j = undefined; + var segment = undefined; + var filteredTags = []; + var tags = this.getOrderedTags_(segmentData); + + // Establish the media timeline to PTS translation if we don't + // have one already + if (isNaN(this.basePtsOffset_) && tags.length) { + this.basePtsOffset_ = tags[0].pts; + } + + // Trim any tags that are before the end of the end of + // the current buffer + if (tech.buffered().length) { + targetPts = tech.buffered().end(0) - this.timestampOffset; + } + // Trim to currentTime if it's ahead of buffered or buffered doesn't exist + targetPts = Math.max(targetPts, tech.currentTime() - this.timestampOffset); + + // PTS values are represented in milliseconds + targetPts *= 1e3; + targetPts += this.basePtsOffset_; + + // skip tags with a presentation time less than the seek target + for (i = 0; i < tags.length; i++) { + if (tags[i].pts >= targetPts) { + filteredTags.push(tags[i]); + } + } + + if (filteredTags.length === 0) { + return; + } + + // concatenate the bytes into a single segment + for (i = 0; i < filteredTags.length; i++) { + segmentByteLength += filteredTags[i].bytes.byteLength; + } + segment = new Uint8Array(segmentByteLength); + for (i = 0, j = 0; i < filteredTags.length; i++) { + segment.set(filteredTags[i].bytes, j); + j += filteredTags[i].bytes.byteLength; + } + + return segment; + } + + // assemble the FLV tags in decoder order + }, { + key: 'getOrderedTags_', + value: function getOrderedTags_(segmentData) { + var videoTags = segmentData.tags.videoTags; + var audioTags = segmentData.tags.audioTags; + var tag = undefined; + var tags = []; + + while (videoTags.length || audioTags.length) { + if (!videoTags.length) { + // only audio tags remain + tag = audioTags.shift(); + } else if (!audioTags.length) { + // only video tags remain + tag = videoTags.shift(); + } else if (audioTags[0].dts < videoTags[0].dts) { + // audio should be decoded next + tag = audioTags.shift(); + } else { + // video should be decoded next + tag = videoTags.shift(); + } + + tags.push(tag.finalize()); + } + + return tags; + } + }]); + + return FlashSourceBuffer; +})(_videoJs2['default'].EventTarget); + +exports['default'] = FlashSourceBuffer; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./add-text-track-data":1,"./create-text-tracks-if-necessary":2,"./flash-constants":3,"./remove-cues-from-track":7,"mux.js":17}],6:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var _virtualSourceBuffer = require('./virtual-source-buffer'); + +var _virtualSourceBuffer2 = _interopRequireDefault(_virtualSourceBuffer); + +// Replace the old apple-style `avc1.<dd>.<dd>` codec string with the standard +// `avc1.<hhhhhh>` +var translateLegacyCodecs = function translateLegacyCodecs(codecs) { + return codecs.replace(/avc1\.(\d+)\.(\d+)/i, function (orig, profile, avcLevel) { + var profileHex = ('00' + Number(profile).toString(16)).slice(-2); + var avcLevelHex = ('00' + Number(avcLevel).toString(16)).slice(-2); + + return 'avc1.' + profileHex + '00' + avcLevelHex; + }); +}; + +var HtmlMediaSource = (function (_videojs$EventTarget) { + _inherits(HtmlMediaSource, _videojs$EventTarget); + + function HtmlMediaSource() { + _classCallCheck(this, HtmlMediaSource); + + _get(Object.getPrototypeOf(HtmlMediaSource.prototype), 'constructor', this).call(this, _videoJs2['default'].EventTarget); + /* eslint-disable consistent-this */ + var self = this; + /* eslint-enable consistent-this */ + var property = undefined; + + this.mediaSource_ = new window.MediaSource(); + // delegate to the native MediaSource's methods by default + for (property in this.mediaSource_) { + if (!(property in HtmlMediaSource.prototype) && typeof this.mediaSource_[property] === 'function') { + this[property] = this.mediaSource_[property].bind(this.mediaSource_); + } + } + + // emulate `duration` and `seekable` until seeking can be + // handled uniformly for live streams + // see https://github.com/w3c/media-source/issues/5 + this.duration_ = NaN; + Object.defineProperty(this, 'duration', { + get: function get() { + if (self.duration_ === Infinity) { + return self.duration_; + } + return self.mediaSource_.duration; + }, + set: function set(duration) { + self.duration_ = duration; + if (duration !== Infinity) { + self.mediaSource_.duration = duration; + return; + } + } + }); + Object.defineProperty(this, 'seekable', { + get: function get() { + if (this.duration_ === Infinity) { + return _videoJs2['default'].createTimeRanges([[0, self.mediaSource_.duration]]); + } + return self.mediaSource_.seekable; + } + }); + + Object.defineProperty(this, 'readyState', { + get: function get() { + return self.mediaSource_.readyState; + } + }); + + // the list of virtual and native SourceBuffers created by this + // MediaSource + this.sourceBuffers = []; + + // Re-emit MediaSource events on the polyfill + ['sourceopen', 'sourceclose', 'sourceended'].forEach(function (eventName) { + this.mediaSource_.addEventListener(eventName, this.trigger.bind(this)); + }, this); + + // capture the associated player when the MediaSource is + // successfully attached + this.on('sourceopen', function (event) { + var video = document.querySelector('[src="' + self.url_ + '"]'); + + if (!video) { + return; + } + + self.player_ = (0, _videoJs2['default'])(video.parentNode); + }); + + // explicitly terminate any WebWorkers that were created + // by SourceHandlers + this.on('sourceclose', function (event) { + this.sourceBuffers.forEach(function (sourceBuffer) { + if (sourceBuffer.transmuxer_) { + sourceBuffer.transmuxer_.terminate(); + } + }); + + this.sourceBuffers.length = 0; + }); + } + + _createClass(HtmlMediaSource, [{ + key: 'addSeekableRange_', + value: function addSeekableRange_(start, end) { + var error = undefined; + + if (this.duration !== Infinity) { + error = new Error('MediaSource.addSeekableRange() can only be invoked ' + 'when the duration is Infinity'); + error.name = 'InvalidStateError'; + error.code = 11; + throw error; + } + + if (end > this.mediaSource_.duration || isNaN(this.mediaSource_.duration)) { + this.mediaSource_.duration = end; + } + } + }, { + key: 'addSourceBuffer', + value: function addSourceBuffer(type) { + var buffer = undefined; + var codecs = undefined; + var avcCodec = undefined; + var mp4aCodec = undefined; + var avcRegEx = /avc1\.[\da-f]+/i; + var mp4aRegEx = /mp4a\.\d+.\d+/i; + + // create a virtual source buffer to transmux MPEG-2 transport + // stream segments into fragmented MP4s + if (/^video\/mp2t/i.test(type)) { + codecs = type.split(';').slice(1).join(';'); + codecs = translateLegacyCodecs(codecs); + + // Pull out each individual codec string if it exists + avcCodec = (codecs.match(avcRegEx) || [])[0]; + mp4aCodec = (codecs.match(mp4aRegEx) || [])[0]; + + // If a codec is unspecified, use the defaults + if (!avcCodec || !avcCodec.length) { + avcCodec = 'avc1.4d400d'; + } + if (!mp4aCodec || !mp4aCodec.length) { + mp4aCodec = 'mp4a.40.2'; + } + + buffer = new _virtualSourceBuffer2['default'](this, [avcCodec, mp4aCodec]); + this.sourceBuffers.push(buffer); + return buffer; + } + + // delegate to the native implementation + buffer = this.mediaSource_.addSourceBuffer(type); + this.sourceBuffers.push(buffer); + return buffer; + } + }]); + + return HtmlMediaSource; +})(_videoJs2['default'].EventTarget); + +exports['default'] = HtmlMediaSource; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./virtual-source-buffer":9}],7:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var removeCuesFromTrack = function removeCuesFromTrack(start, end, track) { + var i = undefined; + var cue = undefined; + + if (!track) { + return; + } + + i = track.cues.length; + + while (i--) { + cue = track.cues[i]; + + // Remove any overlapping cue + if (cue.startTime <= end && cue.endTime >= start) { + track.removeCue(cue); + } + } +}; + +exports["default"] = removeCuesFromTrack; +module.exports = exports["default"]; +},{}],8:[function(require,module,exports){ +/** + * videojs-contrib-media-sources + * + * Copyright (c) 2015 Brightcove + * All rights reserved. + * + * Handles communication between the browser-world and the mux.js + * transmuxer running inside of a WebWorker by exposing a simple + * message-based interface to a Transmuxer object. + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _muxJs = require('mux.js'); + +var _muxJs2 = _interopRequireDefault(_muxJs); + +var globalTransmuxer = undefined; +var initOptions = {}; + +/** + * wireTransmuxerEvents + * Re-emits tranmsuxer events by converting them into messages to the + * world outside the worker + */ +var wireTransmuxerEvents = function wireTransmuxerEvents(transmuxer) { + transmuxer.on('data', function (segment) { + // transfer ownership of the underlying ArrayBuffer + // instead of doing a copy to save memory + // ArrayBuffers are transferable but generic TypedArrays are not + /* eslint-disable max-len */ + // see https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers#Passing_data_by_transferring_ownership_(transferable_objects) + /* eslint-enable max-len */ + var typedArray = segment.data; + + segment.data = typedArray.buffer; + postMessage({ + action: 'data', + segment: segment, + byteOffset: typedArray.byteOffset, + byteLength: typedArray.byteLength + }, [segment.data]); + }); + + if (transmuxer.captionStream) { + transmuxer.captionStream.on('data', function (caption) { + postMessage({ + action: 'caption', + data: caption + }); + }); + } + + transmuxer.on('done', function (data) { + postMessage({ action: 'done' }); + }); +}; + +/** + * All incoming messages route through this hash. If no function exists + * to handle an incoming message, then we ignore the message. + */ +var messageHandlers = { + /** + * init + * Allows you to initialize the transmuxer and pass along options from + * outside the worker + */ + init: function init(data) { + initOptions = data && data.options || {}; + this.defaultInit(); + }, + /** + * defaultInit + * Is called before every function and initializes the transmuxer with + * default options if `init` was never explicitly called + */ + defaultInit: function defaultInit() { + if (globalTransmuxer) { + globalTransmuxer.dispose(); + } + globalTransmuxer = new _muxJs2['default'].mp4.Transmuxer(initOptions); + wireTransmuxerEvents(globalTransmuxer); + }, + /** + * push + * Adds data (a ts segment) to the start of the transmuxer pipeline for + * processing + */ + push: function push(data) { + // Cast array buffer to correct type for transmuxer + var segment = new Uint8Array(data.data, data.byteOffset, data.byteLength); + + globalTransmuxer.push(segment); + }, + /** + * reset + * Recreate the transmuxer so that the next segment added via `push` + * start with a fresh transmuxer + */ + reset: function reset() { + this.defaultInit(); + }, + /** + * setTimestampOffset + * Set the value that will be used as the `baseMediaDecodeTime` time for the + * next segment pushed in. Subsequent segments will have their `baseMediaDecodeTime` + * set relative to the first based on the PTS values. + */ + setTimestampOffset: function setTimestampOffset(data) { + var timestampOffset = data.timestampOffset || 0; + + globalTransmuxer.setBaseMediaDecodeTime(Math.round(timestampOffset * 90000)); + }, + /** + * flush + * Forces the pipeline to finish processing the last segment and emit it's + * results + */ + flush: function flush(data) { + globalTransmuxer.flush(); + } +}; + +var Worker = function Worker(self) { + self.onmessage = function (event) { + // Setup the default transmuxer if one doesn't exist yet and we are invoked with + // an action other than `init` + if (!globalTransmuxer && event.data.action !== 'init') { + messageHandlers.defaultInit(); + } + + if (event.data && event.data.action) { + if (messageHandlers[event.data.action]) { + messageHandlers[event.data.action](event.data); + } + } + }; +}; + +exports['default'] = Worker; +module.exports = exports['default']; +},{"mux.js":17}],9:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var _createTextTracksIfNecessary = require('./create-text-tracks-if-necessary'); + +var _createTextTracksIfNecessary2 = _interopRequireDefault(_createTextTracksIfNecessary); + +var _removeCuesFromTrack = require('./remove-cues-from-track'); + +var _removeCuesFromTrack2 = _interopRequireDefault(_removeCuesFromTrack); + +var _addTextTrackData = require('./add-text-track-data'); + +var _addTextTrackData2 = _interopRequireDefault(_addTextTrackData); + +var _webworkify = require('webworkify'); + +var _webworkify2 = _interopRequireDefault(_webworkify); + +var _transmuxerWorker = require('./transmuxer-worker'); + +var _transmuxerWorker2 = _interopRequireDefault(_transmuxerWorker); + +var aggregateUpdateHandler = function aggregateUpdateHandler(mediaSource, guardBufferName, type) { + return function () { + if (!mediaSource[guardBufferName] || !mediaSource[guardBufferName].updating) { + return mediaSource.trigger(type); + } + }; +}; + +var VirtualSourceBuffer = (function (_videojs$EventTarget) { + _inherits(VirtualSourceBuffer, _videojs$EventTarget); + + function VirtualSourceBuffer(mediaSource, codecs) { + var _this = this; + + _classCallCheck(this, VirtualSourceBuffer); + + _get(Object.getPrototypeOf(VirtualSourceBuffer.prototype), 'constructor', this).call(this, _videoJs2['default'].EventTarget); + this.timestampOffset_ = 0; + this.pendingBuffers_ = []; + this.bufferUpdating_ = false; + this.mediaSource_ = mediaSource; + this.codecs_ = codecs; + + // append muxed segments to their respective native buffers as + // soon as they are available + this.transmuxer_ = (0, _webworkify2['default'])(_transmuxerWorker2['default']); + this.transmuxer_.postMessage({ action: 'init', options: { remux: false } }); + + this.transmuxer_.onmessage = function (event) { + if (event.data.action === 'data') { + return _this.data_(event); + } + + if (event.data.action === 'done') { + return _this.done_(event); + } + }; + + // this timestampOffset is a property with the side-effect of resetting + // baseMediaDecodeTime in the transmuxer on the setter + Object.defineProperty(this, 'timestampOffset', { + get: function get() { + return this.timestampOffset_; + }, + set: function set(val) { + if (typeof val === 'number' && val >= 0) { + this.timestampOffset_ = val; + + // We have to tell the transmuxer to set the baseMediaDecodeTime to + // the desired timestampOffset for the next segment + this.transmuxer_.postMessage({ + action: 'setTimestampOffset', + timestampOffset: val + }); + } + } + }); + // setting the append window affects both source buffers + Object.defineProperty(this, 'appendWindowStart', { + get: function get() { + return (this.videoBuffer_ || this.audioBuffer_).appendWindowStart; + }, + set: function set(start) { + if (this.videoBuffer_) { + this.videoBuffer_.appendWindowStart = start; + } + if (this.audioBuffer_) { + this.audioBuffer_.appendWindowStart = start; + } + } + }); + // this buffer is "updating" if either of its native buffers are + Object.defineProperty(this, 'updating', { + get: function get() { + return this.bufferUpdating_ || this.audioBuffer_ && this.audioBuffer_.updating || this.videoBuffer_ && this.videoBuffer_.updating; + } + }); + // the buffered property is the intersection of the buffered + // ranges of the native source buffers + Object.defineProperty(this, 'buffered', { + get: function get() { + var start = null; + var end = null; + var arity = 0; + var extents = []; + var ranges = []; + + // Handle the case where there is no buffer data + if ((!this.videoBuffer_ || this.videoBuffer_.buffered.length === 0) && (!this.audioBuffer_ || this.audioBuffer_.buffered.length === 0)) { + return _videoJs2['default'].createTimeRange(); + } + + // Handle the case where we only have one buffer + if (!this.videoBuffer_) { + return this.audioBuffer_.buffered; + } else if (!this.audioBuffer_) { + return this.videoBuffer_.buffered; + } + + // Handle the case where we have both buffers and create an + // intersection of the two + var videoBuffered = this.videoBuffer_.buffered; + var audioBuffered = this.audioBuffer_.buffered; + var count = videoBuffered.length; + + // A) Gather up all start and end times + while (count--) { + extents.push({ time: videoBuffered.start(count), type: 'start' }); + extents.push({ time: videoBuffered.end(count), type: 'end' }); + } + count = audioBuffered.length; + while (count--) { + extents.push({ time: audioBuffered.start(count), type: 'start' }); + extents.push({ time: audioBuffered.end(count), type: 'end' }); + } + // B) Sort them by time + extents.sort(function (a, b) { + return a.time - b.time; + }); + + // C) Go along one by one incrementing arity for start and decrementing + // arity for ends + for (count = 0; count < extents.length; count++) { + if (extents[count].type === 'start') { + arity++; + + // D) If arity is ever incremented to 2 we are entering an + // overlapping range + if (arity === 2) { + start = extents[count].time; + } + } else if (extents[count].type === 'end') { + arity--; + + // E) If arity is ever decremented to 1 we leaving an + // overlapping range + if (arity === 1) { + end = extents[count].time; + } + } + + // F) Record overlapping ranges + if (start !== null && end !== null) { + ranges.push([start, end]); + start = null; + end = null; + } + } + + return _videoJs2['default'].createTimeRanges(ranges); + } + }); + } + + // Transmuxer message handlers + + _createClass(VirtualSourceBuffer, [{ + key: 'data_', + value: function data_(event) { + var segment = event.data.segment; + var nativeMediaSource = this.mediaSource_.mediaSource_; + + // Cast ArrayBuffer to TypedArray + segment.data = new Uint8Array(segment.data, event.data.byteOffset, event.data.byteLength); + + // If any sourceBuffers have not been created, do so now + if (segment.type === 'video') { + if (!this.videoBuffer_) { + this.videoBuffer_ = nativeMediaSource.addSourceBuffer('video/mp4;codecs="' + this.codecs_[0] + '"'); + // aggregate buffer events + this.videoBuffer_.addEventListener('updatestart', aggregateUpdateHandler(this, 'audioBuffer_', 'updatestart')); + this.videoBuffer_.addEventListener('update', aggregateUpdateHandler(this, 'audioBuffer_', 'update')); + this.videoBuffer_.addEventListener('updateend', aggregateUpdateHandler(this, 'audioBuffer_', 'updateend')); + } + } else if (segment.type === 'audio') { + if (!this.audioBuffer_) { + this.audioBuffer_ = nativeMediaSource.addSourceBuffer('audio/mp4;codecs="' + this.codecs_[1] + '"'); + // aggregate buffer events + this.audioBuffer_.addEventListener('updatestart', aggregateUpdateHandler(this, 'videoBuffer_', 'updatestart')); + this.audioBuffer_.addEventListener('update', aggregateUpdateHandler(this, 'videoBuffer_', 'update')); + this.audioBuffer_.addEventListener('updateend', aggregateUpdateHandler(this, 'videoBuffer_', 'updateend')); + } + } else if (segment.type === 'combined') { + if (!this.videoBuffer_) { + this.videoBuffer_ = nativeMediaSource.addSourceBuffer('video/mp4;codecs="' + this.codecs_.join(',') + '"'); + // aggregate buffer events + this.videoBuffer_.addEventListener('updatestart', aggregateUpdateHandler(this, 'videoBuffer_', 'updatestart')); + this.videoBuffer_.addEventListener('update', aggregateUpdateHandler(this, 'videoBuffer_', 'update')); + this.videoBuffer_.addEventListener('updateend', aggregateUpdateHandler(this, 'videoBuffer_', 'updateend')); + } + } + (0, _createTextTracksIfNecessary2['default'])(this, this.mediaSource_, segment); + + // Add the segments to the pendingBuffers array + this.pendingBuffers_.push(segment); + return; + } + }, { + key: 'done_', + value: function done_() { + // All buffers should have been flushed from the muxer + // start processing anything we have received + this.processPendingSegments_(); + return; + } + + // SourceBuffer Implementation + + }, { + key: 'appendBuffer', + value: function appendBuffer(segment) { + // Start the internal "updating" state + this.bufferUpdating_ = true; + + this.transmuxer_.postMessage({ + action: 'push', + // Send the typed-array of data as an ArrayBuffer so that + // it can be sent as a "Transferable" and avoid the costly + // memory copy + data: segment.buffer, + + // To recreate the original typed-array, we need information + // about what portion of the ArrayBuffer it was a view into + byteOffset: segment.byteOffset, + byteLength: segment.byteLength + }, [segment.buffer]); + this.transmuxer_.postMessage({ action: 'flush' }); + } + }, { + key: 'remove', + value: function remove(start, end) { + if (this.videoBuffer_) { + this.videoBuffer_.remove(start, end); + } + if (this.audioBuffer_) { + this.audioBuffer_.remove(start, end); + } + + // Remove Metadata Cues (id3) + (0, _removeCuesFromTrack2['default'])(start, end, this.metadataTrack_); + + // Remove Any Captions + (0, _removeCuesFromTrack2['default'])(start, end, this.inbandTextTrack_); + } + + /** + * Process any segments that the muxer has output + * Concatenate segments together based on type and append them into + * their respective sourceBuffers + */ + }, { + key: 'processPendingSegments_', + value: function processPendingSegments_() { + var sortedSegments = { + video: { + segments: [], + bytes: 0 + }, + audio: { + segments: [], + bytes: 0 + }, + captions: [], + metadata: [] + }; + + // Sort segments into separate video/audio arrays and + // keep track of their total byte lengths + sortedSegments = this.pendingBuffers_.reduce(function (segmentObj, segment) { + var type = segment.type; + var data = segment.data; + + // A "combined" segment type (unified video/audio) uses the videoBuffer + if (type === 'combined') { + type = 'video'; + } + + segmentObj[type].segments.push(data); + segmentObj[type].bytes += data.byteLength; + + // Gather any captions into a single array + if (segment.captions) { + segmentObj.captions = segmentObj.captions.concat(segment.captions); + } + + // Gather any metadata into a single array + if (segment.metadata) { + segmentObj.metadata = segmentObj.metadata.concat(segment.metadata); + } + + return segmentObj; + }, sortedSegments); + + (0, _addTextTrackData2['default'])(this, sortedSegments.captions, sortedSegments.metadata); + + // Merge multiple video and audio segments into one and append + this.concatAndAppendSegments_(sortedSegments.video, this.videoBuffer_); + this.concatAndAppendSegments_(sortedSegments.audio, this.audioBuffer_); + + this.pendingBuffers_.length = 0; + + // We are no longer in the internal "updating" state + this.bufferUpdating_ = false; + } + + /** + * Combind all segments into a single Uint8Array and then append them + * to the destination buffer + */ + }, { + key: 'concatAndAppendSegments_', + value: function concatAndAppendSegments_(segmentObj, destinationBuffer) { + var offset = 0; + var tempBuffer = undefined; + + if (segmentObj.bytes) { + tempBuffer = new Uint8Array(segmentObj.bytes); + + // Combine the individual segments into one large typed-array + segmentObj.segments.forEach(function (segment) { + tempBuffer.set(segment, offset); + offset += segment.byteLength; + }); + + destinationBuffer.appendBuffer(tempBuffer); + } + } + + // abort any sourceBuffer actions and throw out any un-appended data + }, { + key: 'abort', + value: function abort() { + if (this.videoBuffer_) { + this.videoBuffer_.abort(); + } + if (this.audioBuffer_) { + this.audioBuffer_.abort(); + } + if (this.transmuxer_) { + this.transmuxer_.postMessage({ action: 'reset' }); + } + this.pendingBuffers_.length = 0; + this.bufferUpdating_ = false; + } + }]); + + return VirtualSourceBuffer; +})(_videoJs2['default'].EventTarget); + +exports['default'] = VirtualSourceBuffer; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./add-text-track-data":1,"./create-text-tracks-if-necessary":2,"./remove-cues-from-track":7,"./transmuxer-worker":8,"webworkify":30}],10:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2016 Brightcove + * All rights reserved. + * + * A stream-based aac to mp4 converter. This utility can be used to + * deliver mp4s to a SourceBuffer on platforms that support native + * Media Source Extensions. + */ +'use strict'; +var Stream = require('../utils/stream.js'); + +// Constants +var AacStream; + +/** + * Splits an incoming stream of binary data into ADTS and ID3 Frames. + */ + +AacStream = function() { + var + everything, + receivedTimeStamp = false, + timeStamp = 0; + + AacStream.prototype.init.call(this); + + this.setTimestamp = function (timestamp) { + timeStamp = timestamp; + }; + + this.parseId3TagSize = function(header, byteIndex) { + var + returnSize = (header[byteIndex + 6] << 21) | + (header[byteIndex + 7] << 14) | + (header[byteIndex + 8] << 7) | + (header[byteIndex + 9]), + flags = header[byteIndex + 5], + footerPresent = (flags & 16) >> 4; + + if (footerPresent) { + return returnSize + 20; + } + return returnSize + 10; + }; + + this.parseAdtsSize = function(header, byteIndex) { + var + lowThree = (header[byteIndex + 5] & 0xE0) >> 5, + middle = header[byteIndex + 4] << 3, + highTwo = header[byteIndex + 3] & 0x3 << 11; + + return (highTwo | middle) | lowThree; + }; + + this.push = function(bytes) { + var + frameSize = 0, + byteIndex = 0, + chunk, + packet, + tempLength; + + // If there are bytes remaining from the last segment, prepend them to the + // bytes that were pushed in + if (everything !== undefined && everything.length) { + tempLength = everything.length; + everything = new Uint8Array(bytes.byteLength + tempLength); + everything.set(everything.subarray(0, tempLength)); + everything.set(bytes, tempLength); + } else { + everything = bytes; + } + + while (everything.length - byteIndex >= 10) { + if ((everything[byteIndex] === 'I'.charCodeAt(0)) && + (everything[byteIndex + 1] === 'D'.charCodeAt(0)) && + (everything[byteIndex + 2] === '3'.charCodeAt(0))) { + + //check framesize + frameSize = this.parseId3TagSize(everything, byteIndex); + //we have enough in the buffer to emit a full packet + if (frameSize > everything.length) { + break; + } + chunk = { + type: 'timed-metadata', + data: everything.subarray(byteIndex, byteIndex + frameSize) + }; + this.trigger('data', chunk); + byteIndex += frameSize; + continue; + } else if ((everything[byteIndex] & 0xff === 0xff) && + ((everything[byteIndex + 1] & 0xf0) === 0xf0)) { + frameSize = this.parseAdtsSize(everything, byteIndex); + + if (frameSize > everything.length) { + break; + } + packet = { + type: 'audio', + data: everything.subarray(byteIndex, byteIndex + frameSize), + pts: timeStamp, + dts: timeStamp, + }; + this.trigger('data', packet); + byteIndex += frameSize; + continue; + } + byteIndex++; + } + }; +}; + +AacStream.prototype = new Stream(); + + + +module.exports = AacStream; + +},{"../utils/stream.js":29}],11:[function(require,module,exports){ +'use strict'; + +var Stream = require('../utils/stream.js'); + +var AdtsStream; + +var + ADTS_SAMPLING_FREQUENCIES = [ + 96000, + 88200, + 64000, + 48000, + 44100, + 32000, + 24000, + 22050, + 16000, + 12000, + 11025, + 8000, + 7350 + ]; + +/* + * Accepts a ElementaryStream and emits data events with parsed + * AAC Audio Frames of the individual packets. Input audio in ADTS + * format is unpacked and re-emitted as AAC frames. + * + * @see http://wiki.multimedia.cx/index.php?title=ADTS + * @see http://wiki.multimedia.cx/?title=Understanding_AAC + */ +AdtsStream = function() { + var self, buffer; + + AdtsStream.prototype.init.call(this); + + self = this; + + this.push = function(packet) { + var + i = 0, + frameNum = 0, + frameLength, + protectionSkipBytes, + frameEnd, + oldBuffer, + numFrames, + sampleCount, + adtsFrameDuration; + + if (packet.type !== 'audio') { + // ignore non-audio data + return; + } + + // Prepend any data in the buffer to the input data so that we can parse + // aac frames the cross a PES packet boundary + if (buffer) { + oldBuffer = buffer; + buffer = new Uint8Array(oldBuffer.byteLength + packet.data.byteLength); + buffer.set(oldBuffer); + buffer.set(packet.data, oldBuffer.byteLength); + } else { + buffer = packet.data; + } + + // unpack any ADTS frames which have been fully received + // for details on the ADTS header, see http://wiki.multimedia.cx/index.php?title=ADTS + while (i + 5 < buffer.length) { + + // Loook for the start of an ADTS header.. + if (buffer[i] !== 0xFF || (buffer[i + 1] & 0xF6) !== 0xF0) { + // If a valid header was not found, jump one forward and attempt to + // find a valid ADTS header starting at the next byte + i++; + continue; + } + + // The protection skip bit tells us if we have 2 bytes of CRC data at the + // end of the ADTS header + protectionSkipBytes = (~buffer[i + 1] & 0x01) * 2; + + // Frame length is a 13 bit integer starting 16 bits from the + // end of the sync sequence + frameLength = ((buffer[i + 3] & 0x03) << 11) | + (buffer[i + 4] << 3) | + ((buffer[i + 5] & 0xe0) >> 5); + + sampleCount = ((buffer[i + 6] & 0x03) + 1) * 1024; + adtsFrameDuration = (sampleCount * 90000) / + ADTS_SAMPLING_FREQUENCIES[(buffer[i + 2] & 0x3c) >>> 2]; + + frameEnd = i + frameLength; + + // If we don't have enough data to actually finish this ADTS frame, return + // and wait for more data + if (buffer.byteLength < frameEnd) { + return; + } + + // Otherwise, deliver the complete AAC frame + this.trigger('data', { + pts: packet.pts + (frameNum * adtsFrameDuration), + dts: packet.dts + (frameNum * adtsFrameDuration), + sampleCount: sampleCount, + audioobjecttype: ((buffer[i + 2] >>> 6) & 0x03) + 1, + channelcount: ((buffer[i + 2] & 1) << 3) | + ((buffer[i + 3] & 0xc0) >>> 6), + samplerate: ADTS_SAMPLING_FREQUENCIES[(buffer[i + 2] & 0x3c) >>> 2], + samplingfrequencyindex: (buffer[i + 2] & 0x3c) >>> 2, + // assume ISO/IEC 14496-12 AudioSampleEntry default of 16 + samplesize: 16, + data: buffer.subarray(i + 7 + protectionSkipBytes, frameEnd) + }); + + // If the buffer is empty, clear it and return + if (buffer.byteLength === frameEnd) { + buffer = undefined; + return; + } + + frameNum++; + + // Remove the finished frame from the buffer and start the process again + buffer = buffer.subarray(frameEnd); + } + }; + this.flush = function() { + this.trigger('done'); + }; +}; + +AdtsStream.prototype = new Stream(); + +module.exports = AdtsStream; + +},{"../utils/stream.js":29}],12:[function(require,module,exports){ +'use strict'; + +var Stream = require('../utils/stream.js'); +var ExpGolomb = require('../utils/exp-golomb.js'); + +var H264Stream, NalByteStream; + +/** + * Accepts a NAL unit byte stream and unpacks the embedded NAL units. + */ +NalByteStream = function() { + var + syncPoint = 0, + i, + buffer; + NalByteStream.prototype.init.call(this); + + this.push = function(data) { + var swapBuffer; + + if (!buffer) { + buffer = data.data; + } else { + swapBuffer = new Uint8Array(buffer.byteLength + data.data.byteLength); + swapBuffer.set(buffer); + swapBuffer.set(data.data, buffer.byteLength); + buffer = swapBuffer; + } + + // Rec. ITU-T H.264, Annex B + // scan for NAL unit boundaries + + // a match looks like this: + // 0 0 1 .. NAL .. 0 0 1 + // ^ sync point ^ i + // or this: + // 0 0 1 .. NAL .. 0 0 0 + // ^ sync point ^ i + + // advance the sync point to a NAL start, if necessary + for (; syncPoint < buffer.byteLength - 3; syncPoint++) { + if (buffer[syncPoint + 2] === 1) { + // the sync point is properly aligned + i = syncPoint + 5; + break; + } + } + + while (i < buffer.byteLength) { + // look at the current byte to determine if we've hit the end of + // a NAL unit boundary + switch (buffer[i]) { + case 0: + // skip past non-sync sequences + if (buffer[i - 1] !== 0) { + i += 2; + break; + } else if (buffer[i - 2] !== 0) { + i++; + break; + } + + // deliver the NAL unit + this.trigger('data', buffer.subarray(syncPoint + 3, i - 2)); + + // drop trailing zeroes + do { + i++; + } while (buffer[i] !== 1 && i < buffer.length); + syncPoint = i - 2; + i += 3; + break; + case 1: + // skip past non-sync sequences + if (buffer[i - 1] !== 0 || + buffer[i - 2] !== 0) { + i += 3; + break; + } + + // deliver the NAL unit + this.trigger('data', buffer.subarray(syncPoint + 3, i - 2)); + syncPoint = i - 2; + i += 3; + break; + default: + // the current byte isn't a one or zero, so it cannot be part + // of a sync sequence + i += 3; + break; + } + } + // filter out the NAL units that were delivered + buffer = buffer.subarray(syncPoint); + i -= syncPoint; + syncPoint = 0; + }; + + this.flush = function() { + // deliver the last buffered NAL unit + if (buffer && buffer.byteLength > 3) { + this.trigger('data', buffer.subarray(syncPoint + 3)); + } + // reset the stream state + buffer = null; + syncPoint = 0; + this.trigger('done'); + }; +}; +NalByteStream.prototype = new Stream(); + +/** + * Accepts input from a ElementaryStream and produces H.264 NAL unit data + * events. + */ +H264Stream = function() { + var + nalByteStream = new NalByteStream(), + self, + trackId, + currentPts, + currentDts, + + discardEmulationPreventionBytes, + readSequenceParameterSet, + skipScalingList; + + H264Stream.prototype.init.call(this); + self = this; + + this.push = function(packet) { + if (packet.type !== 'video') { + return; + } + trackId = packet.trackId; + currentPts = packet.pts; + currentDts = packet.dts; + + nalByteStream.push(packet); + }; + + nalByteStream.on('data', function(data) { + var + event = { + trackId: trackId, + pts: currentPts, + dts: currentDts, + data: data + }; + + switch (data[0] & 0x1f) { + case 0x05: + event.nalUnitType = 'slice_layer_without_partitioning_rbsp_idr'; + break; + case 0x06: + event.nalUnitType = 'sei_rbsp'; + event.escapedRBSP = discardEmulationPreventionBytes(data.subarray(1)); + break; + case 0x07: + event.nalUnitType = 'seq_parameter_set_rbsp'; + event.escapedRBSP = discardEmulationPreventionBytes(data.subarray(1)); + event.config = readSequenceParameterSet(event.escapedRBSP); + break; + case 0x08: + event.nalUnitType = 'pic_parameter_set_rbsp'; + break; + case 0x09: + event.nalUnitType = 'access_unit_delimiter_rbsp'; + break; + + default: + break; + } + self.trigger('data', event); + }); + nalByteStream.on('done', function() { + self.trigger('done'); + }); + + this.flush = function() { + nalByteStream.flush(); + }; + + /** + * Advance the ExpGolomb decoder past a scaling list. The scaling + * list is optionally transmitted as part of a sequence parameter + * set and is not relevant to transmuxing. + * @param count {number} the number of entries in this scaling list + * @param expGolombDecoder {object} an ExpGolomb pointed to the + * start of a scaling list + * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1 + */ + skipScalingList = function(count, expGolombDecoder) { + var + lastScale = 8, + nextScale = 8, + j, + deltaScale; + + for (j = 0; j < count; j++) { + if (nextScale !== 0) { + deltaScale = expGolombDecoder.readExpGolomb(); + nextScale = (lastScale + deltaScale + 256) % 256; + } + + lastScale = (nextScale === 0) ? lastScale : nextScale; + } + }; + + /** + * Expunge any "Emulation Prevention" bytes from a "Raw Byte + * Sequence Payload" + * @param data {Uint8Array} the bytes of a RBSP from a NAL + * unit + * @return {Uint8Array} the RBSP without any Emulation + * Prevention Bytes + */ + discardEmulationPreventionBytes = function(data) { + var + length = data.byteLength, + emulationPreventionBytesPositions = [], + i = 1, + newLength, newData; + + // Find all `Emulation Prevention Bytes` + while (i < length - 2) { + if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) { + emulationPreventionBytesPositions.push(i + 2); + i += 2; + } else { + i++; + } + } + + // If no Emulation Prevention Bytes were found just return the original + // array + if (emulationPreventionBytesPositions.length === 0) { + return data; + } + + // Create a new array to hold the NAL unit data + newLength = length - emulationPreventionBytesPositions.length; + newData = new Uint8Array(newLength); + var sourceIndex = 0; + + for (i = 0; i < newLength; sourceIndex++, i++) { + if (sourceIndex === emulationPreventionBytesPositions[0]) { + // Skip this byte + sourceIndex++; + // Remove this position index + emulationPreventionBytesPositions.shift(); + } + newData[i] = data[sourceIndex]; + } + + return newData; + }; + + /** + * Read a sequence parameter set and return some interesting video + * properties. A sequence parameter set is the H264 metadata that + * describes the properties of upcoming video frames. + * @param data {Uint8Array} the bytes of a sequence parameter set + * @return {object} an object with configuration parsed from the + * sequence parameter set, including the dimensions of the + * associated video frames. + */ + readSequenceParameterSet = function(data) { + var + frameCropLeftOffset = 0, + frameCropRightOffset = 0, + frameCropTopOffset = 0, + frameCropBottomOffset = 0, + expGolombDecoder, profileIdc, levelIdc, profileCompatibility, + chromaFormatIdc, picOrderCntType, + numRefFramesInPicOrderCntCycle, picWidthInMbsMinus1, + picHeightInMapUnitsMinus1, + frameMbsOnlyFlag, + scalingListCount, + i; + + expGolombDecoder = new ExpGolomb(data); + profileIdc = expGolombDecoder.readUnsignedByte(); // profile_idc + profileCompatibility = expGolombDecoder.readUnsignedByte(); // constraint_set[0-5]_flag + levelIdc = expGolombDecoder.readUnsignedByte(); // level_idc u(8) + expGolombDecoder.skipUnsignedExpGolomb(); // seq_parameter_set_id + + // some profiles have more optional data we don't need + if (profileIdc === 100 || + profileIdc === 110 || + profileIdc === 122 || + profileIdc === 244 || + profileIdc === 44 || + profileIdc === 83 || + profileIdc === 86 || + profileIdc === 118 || + profileIdc === 128 || + profileIdc === 138 || + profileIdc === 139 || + profileIdc === 134) { + chromaFormatIdc = expGolombDecoder.readUnsignedExpGolomb(); + if (chromaFormatIdc === 3) { + expGolombDecoder.skipBits(1); // separate_colour_plane_flag + } + expGolombDecoder.skipUnsignedExpGolomb(); // bit_depth_luma_minus8 + expGolombDecoder.skipUnsignedExpGolomb(); // bit_depth_chroma_minus8 + expGolombDecoder.skipBits(1); // qpprime_y_zero_transform_bypass_flag + if (expGolombDecoder.readBoolean()) { // seq_scaling_matrix_present_flag + scalingListCount = (chromaFormatIdc !== 3) ? 8 : 12; + for (i = 0; i < scalingListCount; i++) { + if (expGolombDecoder.readBoolean()) { // seq_scaling_list_present_flag[ i ] + if (i < 6) { + skipScalingList(16, expGolombDecoder); + } else { + skipScalingList(64, expGolombDecoder); + } + } + } + } + } + + expGolombDecoder.skipUnsignedExpGolomb(); // log2_max_frame_num_minus4 + picOrderCntType = expGolombDecoder.readUnsignedExpGolomb(); + + if (picOrderCntType === 0) { + expGolombDecoder.readUnsignedExpGolomb(); //log2_max_pic_order_cnt_lsb_minus4 + } else if (picOrderCntType === 1) { + expGolombDecoder.skipBits(1); // delta_pic_order_always_zero_flag + expGolombDecoder.skipExpGolomb(); // offset_for_non_ref_pic + expGolombDecoder.skipExpGolomb(); // offset_for_top_to_bottom_field + numRefFramesInPicOrderCntCycle = expGolombDecoder.readUnsignedExpGolomb(); + for(i = 0; i < numRefFramesInPicOrderCntCycle; i++) { + expGolombDecoder.skipExpGolomb(); // offset_for_ref_frame[ i ] + } + } + + expGolombDecoder.skipUnsignedExpGolomb(); // max_num_ref_frames + expGolombDecoder.skipBits(1); // gaps_in_frame_num_value_allowed_flag + + picWidthInMbsMinus1 = expGolombDecoder.readUnsignedExpGolomb(); + picHeightInMapUnitsMinus1 = expGolombDecoder.readUnsignedExpGolomb(); + + frameMbsOnlyFlag = expGolombDecoder.readBits(1); + if (frameMbsOnlyFlag === 0) { + expGolombDecoder.skipBits(1); // mb_adaptive_frame_field_flag + } + + expGolombDecoder.skipBits(1); // direct_8x8_inference_flag + if (expGolombDecoder.readBoolean()) { // frame_cropping_flag + frameCropLeftOffset = expGolombDecoder.readUnsignedExpGolomb(); + frameCropRightOffset = expGolombDecoder.readUnsignedExpGolomb(); + frameCropTopOffset = expGolombDecoder.readUnsignedExpGolomb(); + frameCropBottomOffset = expGolombDecoder.readUnsignedExpGolomb(); + } + + return { + profileIdc: profileIdc, + levelIdc: levelIdc, + profileCompatibility: profileCompatibility, + width: ((picWidthInMbsMinus1 + 1) * 16) - frameCropLeftOffset * 2 - frameCropRightOffset * 2, + height: ((2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16) - (frameCropTopOffset * 2) - (frameCropBottomOffset * 2) + }; + }; + +}; +H264Stream.prototype = new Stream(); + +module.exports = { + H264Stream: H264Stream, + NalByteStream: NalByteStream, +}; + +},{"../utils/exp-golomb.js":28,"../utils/stream.js":29}],13:[function(require,module,exports){ +module.exports = { + adts: require('./adts'), + h264: require('./h264'), +}; + +},{"./adts":11,"./h264":12}],14:[function(require,module,exports){ +/** + * An object that stores the bytes of an FLV tag and methods for + * querying and manipulating that data. + * @see http://download.macromedia.com/f4v/video_file_format_spec_v10_1.pdf + */ +'use strict'; + +var FlvTag; + +// (type:uint, extraData:Boolean = false) extends ByteArray +FlvTag = function(type, extraData) { + var + // Counter if this is a metadata tag, nal start marker if this is a video + // tag. unused if this is an audio tag + adHoc = 0, // :uint + + // The default size is 16kb but this is not enough to hold iframe + // data and the resizing algorithm costs a bit so we create a larger + // starting buffer for video tags + bufferStartSize = 16384, + + // checks whether the FLV tag has enough capacity to accept the proposed + // write and re-allocates the internal buffers if necessary + prepareWrite = function(flv, count) { + var + bytes, + minLength = flv.position + count; + if (minLength < flv.bytes.byteLength) { + // there's enough capacity so do nothing + return; + } + + // allocate a new buffer and copy over the data that will not be modified + bytes = new Uint8Array(minLength * 2); + bytes.set(flv.bytes.subarray(0, flv.position), 0); + flv.bytes = bytes; + flv.view = new DataView(flv.bytes.buffer); + }, + + // commonly used metadata properties + widthBytes = FlvTag.widthBytes || new Uint8Array('width'.length), + heightBytes = FlvTag.heightBytes || new Uint8Array('height'.length), + videocodecidBytes = FlvTag.videocodecidBytes || new Uint8Array('videocodecid'.length), + i; + + if (!FlvTag.widthBytes) { + // calculating the bytes of common metadata names ahead of time makes the + // corresponding writes faster because we don't have to loop over the + // characters + // re-test with test/perf.html if you're planning on changing this + for (i = 0; i < 'width'.length; i++) { + widthBytes[i] = 'width'.charCodeAt(i); + } + for (i = 0; i < 'height'.length; i++) { + heightBytes[i] = 'height'.charCodeAt(i); + } + for (i = 0; i < 'videocodecid'.length; i++) { + videocodecidBytes[i] = 'videocodecid'.charCodeAt(i); + } + + FlvTag.widthBytes = widthBytes; + FlvTag.heightBytes = heightBytes; + FlvTag.videocodecidBytes = videocodecidBytes; + } + + this.keyFrame = false; // :Boolean + + switch(type) { + case FlvTag.VIDEO_TAG: + this.length = 16; + // Start the buffer at 256k + bufferStartSize *= 6; + break; + case FlvTag.AUDIO_TAG: + this.length = 13; + this.keyFrame = true; + break; + case FlvTag.METADATA_TAG: + this.length = 29; + this.keyFrame = true; + break; + default: + throw("Error Unknown TagType"); + } + + this.bytes = new Uint8Array(bufferStartSize); + this.view = new DataView(this.bytes.buffer); + this.bytes[0] = type; + this.position = this.length; + this.keyFrame = extraData; // Defaults to false + + // presentation timestamp + this.pts = 0; + // decoder timestamp + this.dts = 0; + + // ByteArray#writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0) + this.writeBytes = function(bytes, offset, length) { + var + start = offset || 0, + end; + length = length || bytes.byteLength; + end = start + length; + + prepareWrite(this, length); + this.bytes.set(bytes.subarray(start, end), this.position); + + this.position += length; + this.length = Math.max(this.length, this.position); + }; + + // ByteArray#writeByte(value:int):void + this.writeByte = function(byte) { + prepareWrite(this, 1); + this.bytes[this.position] = byte; + this.position++; + this.length = Math.max(this.length, this.position); + }; + + // ByteArray#writeShort(value:int):void + this.writeShort = function(short) { + prepareWrite(this, 2); + this.view.setUint16(this.position, short); + this.position += 2; + this.length = Math.max(this.length, this.position); + }; + + // Negative index into array + // (pos:uint):int + this.negIndex = function(pos) { + return this.bytes[this.length - pos]; + }; + + // The functions below ONLY work when this[0] == VIDEO_TAG. + // We are not going to check for that because we dont want the overhead + // (nal:ByteArray = null):int + this.nalUnitSize = function() { + if (adHoc === 0) { + return 0; + } + + return this.length - (adHoc + 4); + }; + + this.startNalUnit = function() { + // remember position and add 4 bytes + if (adHoc > 0) { + throw new Error("Attempted to create new NAL wihout closing the old one"); + } + + // reserve 4 bytes for nal unit size + adHoc = this.length; + this.length += 4; + this.position = this.length; + }; + + // (nal:ByteArray = null):void + this.endNalUnit = function(nalContainer) { + var + nalStart, // :uint + nalLength; // :uint + + // Rewind to the marker and write the size + if (this.length === adHoc + 4) { + // we started a nal unit, but didnt write one, so roll back the 4 byte size value + this.length -= 4; + } else if (adHoc > 0) { + nalStart = adHoc + 4; + nalLength = this.length - nalStart; + + this.position = adHoc; + this.view.setUint32(this.position, nalLength); + this.position = this.length; + + if (nalContainer) { + // Add the tag to the NAL unit + nalContainer.push(this.bytes.subarray(nalStart, nalStart + nalLength)); + } + } + + adHoc = 0; + }; + + /** + * Write out a 64-bit floating point valued metadata property. This method is + * called frequently during a typical parse and needs to be fast. + */ + // (key:String, val:Number):void + this.writeMetaDataDouble = function(key, val) { + var i; + prepareWrite(this, 2 + key.length + 9); + + // write size of property name + this.view.setUint16(this.position, key.length); + this.position += 2; + + // this next part looks terrible but it improves parser throughput by + // 10kB/s in my testing + + // write property name + if (key === 'width') { + this.bytes.set(widthBytes, this.position); + this.position += 5; + } else if (key === 'height') { + this.bytes.set(heightBytes, this.position); + this.position += 6; + } else if (key === 'videocodecid') { + this.bytes.set(videocodecidBytes, this.position); + this.position += 12; + } else { + for (i = 0; i < key.length; i++) { + this.bytes[this.position] = key.charCodeAt(i); + this.position++; + } + } + + // skip null byte + this.position++; + + // write property value + this.view.setFloat64(this.position, val); + this.position += 8; + + // update flv tag length + this.length = Math.max(this.length, this.position); + ++adHoc; + }; + + // (key:String, val:Boolean):void + this.writeMetaDataBoolean = function(key, val) { + var i; + prepareWrite(this, 2); + this.view.setUint16(this.position, key.length); + this.position += 2; + for (i = 0; i < key.length; i++) { + // if key.charCodeAt(i) >= 255, handle error + prepareWrite(this, 1); + this.bytes[this.position] = key.charCodeAt(i); + this.position++; + } + prepareWrite(this, 2); + this.view.setUint8(this.position, 0x01); + this.position++; + this.view.setUint8(this.position, val ? 0x01 : 0x00); + this.position++; + this.length = Math.max(this.length, this.position); + ++adHoc; + }; + + // ():ByteArray + this.finalize = function() { + var + dtsDelta, // :int + len; // :int + + switch(this.bytes[0]) { + // Video Data + case FlvTag.VIDEO_TAG: + this.bytes[11] = ((this.keyFrame || extraData) ? 0x10 : 0x20 ) | 0x07; // We only support AVC, 1 = key frame (for AVC, a seekable frame), 2 = inter frame (for AVC, a non-seekable frame) + this.bytes[12] = extraData ? 0x00 : 0x01; + + dtsDelta = this.pts - this.dts; + this.bytes[13] = (dtsDelta & 0x00FF0000) >>> 16; + this.bytes[14] = (dtsDelta & 0x0000FF00) >>> 8; + this.bytes[15] = (dtsDelta & 0x000000FF) >>> 0; + break; + + case FlvTag.AUDIO_TAG: + this.bytes[11] = 0xAF; // 44 kHz, 16-bit stereo + this.bytes[12] = extraData ? 0x00 : 0x01; + break; + + case FlvTag.METADATA_TAG: + this.position = 11; + this.view.setUint8(this.position, 0x02); // String type + this.position++; + this.view.setUint16(this.position, 0x0A); // 10 Bytes + this.position += 2; + // set "onMetaData" + this.bytes.set([0x6f, 0x6e, 0x4d, 0x65, + 0x74, 0x61, 0x44, 0x61, + 0x74, 0x61], this.position); + this.position += 10; + this.bytes[this.position] = 0x08; // Array type + this.position++; + this.view.setUint32(this.position, adHoc); + this.position = this.length; + this.bytes.set([0, 0, 9], this.position); + this.position += 3; // End Data Tag + this.length = this.position; + break; + } + + len = this.length - 11; + + // write the DataSize field + this.bytes[ 1] = (len & 0x00FF0000) >>> 16; + this.bytes[ 2] = (len & 0x0000FF00) >>> 8; + this.bytes[ 3] = (len & 0x000000FF) >>> 0; + // write the Timestamp + this.bytes[ 4] = (this.dts & 0x00FF0000) >>> 16; + this.bytes[ 5] = (this.dts & 0x0000FF00) >>> 8; + this.bytes[ 6] = (this.dts & 0x000000FF) >>> 0; + this.bytes[ 7] = (this.dts & 0xFF000000) >>> 24; + // write the StreamID + this.bytes[ 8] = 0; + this.bytes[ 9] = 0; + this.bytes[10] = 0; + + // Sometimes we're at the end of the view and have one slot to write a + // uint32, so, prepareWrite of count 4, since, view is uint8 + prepareWrite(this, 4); + this.view.setUint32(this.length, this.length); + this.length += 4; + this.position += 4; + + // trim down the byte buffer to what is actually being used + this.bytes = this.bytes.subarray(0, this.length); + this.frameTime = FlvTag.frameTime(this.bytes); + // if bytes.bytelength isn't equal to this.length, handle error + return this; + }; +}; + +FlvTag.AUDIO_TAG = 0x08; // == 8, :uint +FlvTag.VIDEO_TAG = 0x09; // == 9, :uint +FlvTag.METADATA_TAG = 0x12; // == 18, :uint + +// (tag:ByteArray):Boolean { +FlvTag.isAudioFrame = function(tag) { + return FlvTag.AUDIO_TAG === tag[0]; +}; + +// (tag:ByteArray):Boolean { +FlvTag.isVideoFrame = function(tag) { + return FlvTag.VIDEO_TAG === tag[0]; +}; + +// (tag:ByteArray):Boolean { +FlvTag.isMetaData = function(tag) { + return FlvTag.METADATA_TAG === tag[0]; +}; + +// (tag:ByteArray):Boolean { +FlvTag.isKeyFrame = function(tag) { + if (FlvTag.isVideoFrame(tag)) { + return tag[11] === 0x17; + } + + if (FlvTag.isAudioFrame(tag)) { + return true; + } + + if (FlvTag.isMetaData(tag)) { + return true; + } + + return false; +}; + +// (tag:ByteArray):uint { +FlvTag.frameTime = function(tag) { + var pts = tag[ 4] << 16; // :uint + pts |= tag[ 5] << 8; + pts |= tag[ 6] << 0; + pts |= tag[ 7] << 24; + return pts; +}; + +module.exports = FlvTag; + +},{}],15:[function(require,module,exports){ +module.exports = { + tag: require('./flv-tag'), + Transmuxer: require('./transmuxer'), + tools: require('../tools/flv-inspector'), +}; + +},{"../tools/flv-inspector":26,"./flv-tag":14,"./transmuxer":16}],16:[function(require,module,exports){ +'use strict'; + +var Stream = require('../utils/stream.js'); +var FlvTag = require('./flv-tag.js'); +var m2ts = require('../m2ts/m2ts.js'); +var AdtsStream = require('../codecs/adts.js'); +var H264Stream = require('../codecs/h264').H264Stream; + +var + MetadataStream, + Transmuxer, + VideoSegmentStream, + AudioSegmentStream, + CoalesceStream, + collectTimelineInfo, + metaDataTag, + extraDataTag; + +/** + * Store information about the start and end of the tracka and the + * duration for each frame/sample we process in order to calculate + * the baseMediaDecodeTime + */ +collectTimelineInfo = function (track, data) { + if (typeof data.pts === 'number') { + if (track.timelineStartInfo.pts === undefined) { + track.timelineStartInfo.pts = data.pts; + } else { + track.timelineStartInfo.pts = + Math.min(track.timelineStartInfo.pts, data.pts); + } + } + + if (typeof data.dts === 'number') { + if (track.timelineStartInfo.dts === undefined) { + track.timelineStartInfo.dts = data.dts; + } else { + track.timelineStartInfo.dts = + Math.min(track.timelineStartInfo.dts, data.dts); + } + } +}; + +metaDataTag = function(track, pts) { + var + tag = new FlvTag(FlvTag.METADATA_TAG); // :FlvTag + + tag.dts = pts; + tag.pts = pts; + + tag.writeMetaDataDouble("videocodecid", 7); + tag.writeMetaDataDouble("width", track.width); + tag.writeMetaDataDouble("height", track.height); + + return tag; +}; + +extraDataTag = function(track, pts) { + var + i, + tag = new FlvTag(FlvTag.VIDEO_TAG, true); + + tag.dts = pts; + tag.pts = pts; + + tag.writeByte(0x01);// version + tag.writeByte(track.profileIdc);// profile + tag.writeByte(track.profileCompatibility);// compatibility + tag.writeByte(track.levelIdc);// level + tag.writeByte(0xFC | 0x03); // reserved (6 bits), NULA length size - 1 (2 bits) + tag.writeByte(0xE0 | 0x01 ); // reserved (3 bits), num of SPS (5 bits) + tag.writeShort( track.sps[0].length ); // data of SPS + tag.writeBytes( track.sps[0] ); // SPS + + tag.writeByte(track.pps.length); // num of PPS (will there ever be more that 1 PPS?) + for (i = 0 ; i < track.pps.length ; ++i) { + tag.writeShort(track.pps[i].length); // 2 bytes for length of PPS + tag.writeBytes(track.pps[i]); // data of PPS + } + + return tag; +}; + +/** + * Constructs a single-track, media segment from AAC data + * events. The output of this stream can be fed to flash. + */ +AudioSegmentStream = function(track) { + var + adtsFrames = [], + adtsFramesLength = 0, + sequenceNumber = 0, + earliestAllowedDts = 0, + oldExtraData; + + AudioSegmentStream.prototype.init.call(this); + + this.push = function(data) { + collectTimelineInfo(track, data); + + if (track && track.channelcount === undefined) { + track.audioobjecttype = data.audioobjecttype; + track.channelcount = data.channelcount; + track.samplerate = data.samplerate; + track.samplingfrequencyindex = data.samplingfrequencyindex; + track.samplesize = data.samplesize; + track.extraData = (track.audioobjecttype << 11) | + (track.samplingfrequencyindex << 7) | + (track.channelcount << 3); + } + + data.pts = Math.round(data.pts / 90); + data.dts = Math.round(data.dts / 90); + + // buffer audio data until end() is called + adtsFrames.push(data); + }; + + this.flush = function() { + var currentFrame, adtsFrame, deltaDts,lastMetaPts, tags = []; + // return early if no audio data has been observed + if (adtsFrames.length === 0) { + this.trigger('done'); + return; + } + + lastMetaPts = -Infinity; + + while (adtsFrames.length) { + currentFrame = adtsFrames.shift(); + + // write out metadata tags every 1 second so that the decoder + // is re-initialized quickly after seeking into a different + // audio configuration + if (track.extraData !== oldExtraData || currentFrame.pts - lastMetaPts >= 1000) { + adtsFrame = new FlvTag(FlvTag.METADATA_TAG); + adtsFrame.pts = currentFrame.pts; + adtsFrame.dts = currentFrame.dts; + + // AAC is always 10 + adtsFrame.writeMetaDataDouble("audiocodecid", 10); + adtsFrame.writeMetaDataBoolean("stereo", 2 === track.channelcount); + adtsFrame.writeMetaDataDouble ("audiosamplerate", track.samplerate); + // Is AAC always 16 bit? + adtsFrame.writeMetaDataDouble ("audiosamplesize", 16); + + tags.push(adtsFrame); + + oldExtraData = track.extraData; + + adtsFrame = new FlvTag(FlvTag.AUDIO_TAG, true); + // For audio, DTS is always the same as PTS. We want to set the DTS + // however so we can compare with video DTS to determine approximate + // packet order + adtsFrame.pts = currentFrame.pts; + adtsFrame.dts = currentFrame.dts; + + adtsFrame.view.setUint16(adtsFrame.position, track.extraData); + adtsFrame.position += 2; + adtsFrame.length = Math.max(adtsFrame.length, adtsFrame.position); + + tags.push(adtsFrame); + + lastMetaPts = currentFrame.pts; + } + adtsFrame = new FlvTag(FlvTag.AUDIO_TAG); + adtsFrame.pts = currentFrame.pts; + adtsFrame.dts = currentFrame.dts; + + adtsFrame.writeBytes(currentFrame.data); + + tags.push(adtsFrame); + } + + oldExtraData = null; + this.trigger('data', {track: track, tags: tags}); + + this.trigger('done'); + }; +}; +AudioSegmentStream.prototype = new Stream(); + +/** + * Store FlvTags for the h264 stream + * @param track {object} track metadata configuration + */ +VideoSegmentStream = function(track) { + var + sequenceNumber = 0, + nalUnits = [], + nalUnitsLength = 0, + config, + h264Frame; + VideoSegmentStream.prototype.init.call(this); + + this.finishFrame = function(tags, frame) { + if (!frame) { + return; + } + // Check if keyframe and the length of tags. + // This makes sure we write metadata on the first frame of a segment. + if (config && track && track.newMetadata && + (frame.keyFrame || tags.length === 0)) { + // Push extra data on every IDR frame in case we did a stream change + seek + tags.push(metaDataTag(config, frame.pts)); + tags.push(extraDataTag(track, frame.pts)); + track.newMetadata = false; + } + + frame.endNalUnit(); + tags.push(frame); + }; + + this.push = function(data) { + collectTimelineInfo(track, data); + + data.pts = Math.round(data.pts / 90); + data.dts = Math.round(data.dts / 90); + + // buffer video until flush() is called + nalUnits.push(data); + }; + + this.flush = function() { + var + currentNal, + tags = []; + + // Throw away nalUnits at the start of the byte stream until we find + // the first AUD + while (nalUnits.length) { + if (nalUnits[0].nalUnitType === 'access_unit_delimiter_rbsp') { + break; + } + nalUnits.shift(); + } + + // return early if no video data has been observed + if (nalUnits.length === 0) { + this.trigger('done'); + return; + } + + while (nalUnits.length) { + currentNal = nalUnits.shift(); + + // record the track config + if (currentNal.nalUnitType === 'seq_parameter_set_rbsp') { + track.newMetadata = true; + config = currentNal.config; + track.width = config.width; + track.height = config.height; + track.sps = [currentNal.data]; + track.profileIdc = config.profileIdc; + track.levelIdc = config.levelIdc; + track.profileCompatibility = config.profileCompatibility; + h264Frame.endNalUnit(); + } else if (currentNal.nalUnitType === 'pic_parameter_set_rbsp') { + track.newMetadata = true; + track.pps = [currentNal.data]; + h264Frame.endNalUnit(); + } else if (currentNal.nalUnitType === 'access_unit_delimiter_rbsp') { + if (h264Frame) { + this.finishFrame(tags, h264Frame); + } + h264Frame = new FlvTag(FlvTag.VIDEO_TAG); + h264Frame.pts = currentNal.pts; + h264Frame.dts = currentNal.dts; + } else { + if (currentNal.nalUnitType === 'slice_layer_without_partitioning_rbsp_idr') { + // the current sample is a key frame + h264Frame.keyFrame = true; + } + h264Frame.endNalUnit(); + } + h264Frame.startNalUnit(); + h264Frame.writeBytes(currentNal.data); + } + if (h264Frame) { + this.finishFrame(tags, h264Frame); + } + + this.trigger('data', {track: track, tags: tags}); + + // Continue with the flush process now + this.trigger('done'); + }; +}; + +VideoSegmentStream.prototype = new Stream(); + +/** + * The final stage of the transmuxer that emits the flv tags + * for audio, video, and metadata. Also tranlates in time and + * outputs caption data and id3 cues. + */ +CoalesceStream = function(options) { + // Number of Tracks per output segment + // If greater than 1, we combine multiple + // tracks into a single segment + this.numberOfTracks = 0; + this.metadataStream = options.metadataStream; + + this.videoTags = []; + this.audioTags = []; + this.videoTrack = null; + this.audioTrack = null; + this.pendingCaptions = []; + this.pendingMetadata = []; + this.pendingTracks = 0; + + CoalesceStream.prototype.init.call(this); + + // Take output from multiple + this.push = function(output) { + // buffer incoming captions until the associated video segment + // finishes + if (output.text) { + return this.pendingCaptions.push(output); + } + // buffer incoming id3 tags until the final flush + if (output.frames) { + return this.pendingMetadata.push(output); + } + + if (output.track.type === 'video') { + this.videoTrack = output.track; + this.videoTags = output.tags; + this.pendingTracks++; + } + if (output.track.type === 'audio') { + this.audioTrack = output.track; + this.audioTags = output.tags; + this.pendingTracks++; + } + }; +}; + +CoalesceStream.prototype = new Stream(); +CoalesceStream.prototype.flush = function() { + var + id3, + caption, + i, + timelineStartPts, + event = { + tags: {}, + captions: [], + metadata: [] + }; + + if (this.pendingTracks < this.numberOfTracks) { + return; + } + + if (this.videoTrack) { + timelineStartPts = this.videoTrack.timelineStartInfo.pts; + } else if (this.audioTrack) { + timelineStartPts = this.audioTrack.timelineStartInfo.pts; + } + + event.tags.videoTags = this.videoTags; + event.tags.audioTags = this.audioTags; + + // Translate caption PTS times into second offsets into the + // video timeline for the segment + for (i = 0; i < this.pendingCaptions.length; i++) { + caption = this.pendingCaptions[i]; + caption.startTime = caption.startPts - timelineStartPts; + caption.startTime /= 90e3; + caption.endTime = caption.endPts - timelineStartPts; + caption.endTime /= 90e3; + event.captions.push(caption); + } + + // Translate ID3 frame PTS times into second offsets into the + // video timeline for the segment + for (i = 0; i < this.pendingMetadata.length; i++) { + id3 = this.pendingMetadata[i]; + id3.cueTime = id3.pts - timelineStartPts; + id3.cueTime /= 90e3; + event.metadata.push(id3); + } + // We add this to every single emitted segment even though we only need + // it for the first + event.metadata.dispatchType = this.metadataStream.dispatchType; + + // Reset stream state + this.videoTrack = null; + this.audioTrack = null; + this.videoTags = []; + this.audioTags = []; + this.pendingCaptions.length = 0; + this.pendingMetadata.length = 0; + this.pendingTracks = 0; + + // Emit the final segment + this.trigger('data', event); + + this.trigger('done'); +}; + +/** + * An object that incrementally transmuxes MPEG2 Trasport Stream + * chunks into an FLV. + */ +Transmuxer = function(options) { + var + self = this, + videoTrack, + audioTrack, + + packetStream, parseStream, elementaryStream, + adtsStream, h264Stream, + videoSegmentStream, audioSegmentStream, captionStream, + coalesceStream; + + Transmuxer.prototype.init.call(this); + + options = options || {}; + + // expose the metadata stream + this.metadataStream = new m2ts.MetadataStream(); + + options.metadataStream = this.metadataStream; + + // set up the parsing pipeline + packetStream = new m2ts.TransportPacketStream(); + parseStream = new m2ts.TransportParseStream(); + elementaryStream = new m2ts.ElementaryStream(); + adtsStream = new AdtsStream(); + h264Stream = new H264Stream(); + coalesceStream = new CoalesceStream(options); + + // disassemble MPEG2-TS packets into elementary streams + packetStream + .pipe(parseStream) + .pipe(elementaryStream); + + // !!THIS ORDER IS IMPORTANT!! + // demux the streams + elementaryStream + .pipe(h264Stream); + elementaryStream + .pipe(adtsStream); + + elementaryStream + .pipe(this.metadataStream) + .pipe(coalesceStream); + // if CEA-708 parsing is available, hook up a caption stream + captionStream = new m2ts.CaptionStream(); + h264Stream.pipe(captionStream) + .pipe(coalesceStream); + + // hook up the segment streams once track metadata is delivered + elementaryStream.on('data', function(data) { + var i, videoTrack, audioTrack; + + if (data.type === 'metadata') { + i = data.tracks.length; + + // scan the tracks listed in the metadata + while (i--) { + if (data.tracks[i].type === 'video') { + videoTrack = data.tracks[i]; + } else if (data.tracks[i].type === 'audio') { + audioTrack = data.tracks[i]; + } + } + + // hook up the video segment stream to the first track with h264 data + if (videoTrack && !videoSegmentStream) { + coalesceStream.numberOfTracks++; + videoSegmentStream = new VideoSegmentStream(videoTrack); + + // Set up the final part of the video pipeline + h264Stream + .pipe(videoSegmentStream) + .pipe(coalesceStream); + } + + if (audioTrack && !audioSegmentStream) { + // hook up the audio segment stream to the first track with aac data + coalesceStream.numberOfTracks++; + audioSegmentStream = new AudioSegmentStream(audioTrack); + + // Set up the final part of the audio pipeline + adtsStream + .pipe(audioSegmentStream) + .pipe(coalesceStream); + } + } + }); + + // feed incoming data to the front of the parsing pipeline + this.push = function(data) { + packetStream.push(data); + }; + + // flush any buffered data + this.flush = function() { + // Start at the top of the pipeline and flush all pending work + packetStream.flush(); + }; + + // Re-emit any data coming from the coalesce stream to the outside world + coalesceStream.on('data', function (event) { + self.trigger('data', event); + }); + + // Let the consumer know we have finished flushing the entire pipeline + coalesceStream.on('done', function () { + self.trigger('done'); + }); + + // For information on the FLV format, see + // http://download.macromedia.com/f4v/video_file_format_spec_v10_1.pdf. + // Technically, this function returns the header and a metadata FLV tag + // if duration is greater than zero + // duration in seconds + // @return {object} the bytes of the FLV header as a Uint8Array + this.getFlvHeader = function(duration, audio, video) { // :ByteArray { + var + headBytes = new Uint8Array(3 + 1 + 1 + 4), + head = new DataView(headBytes.buffer), + metadata, + result, + metadataLength; + + // default arguments + duration = duration || 0; + audio = audio === undefined? true : audio; + video = video === undefined? true : video; + + // signature + head.setUint8(0, 0x46); // 'F' + head.setUint8(1, 0x4c); // 'L' + head.setUint8(2, 0x56); // 'V' + + // version + head.setUint8(3, 0x01); + + // flags + head.setUint8(4, (audio ? 0x04 : 0x00) | (video ? 0x01 : 0x00)); + + // data offset, should be 9 for FLV v1 + head.setUint32(5, headBytes.byteLength); + + // init the first FLV tag + if (duration <= 0) { + // no duration available so just write the first field of the first + // FLV tag + result = new Uint8Array(headBytes.byteLength + 4); + result.set(headBytes); + result.set([0, 0, 0, 0], headBytes.byteLength); + return result; + } + + // write out the duration metadata tag + metadata = new FlvTag(FlvTag.METADATA_TAG); + metadata.pts = metadata.dts = 0; + metadata.writeMetaDataDouble("duration", duration); + metadataLength = metadata.finalize().length; + result = new Uint8Array(headBytes.byteLength + metadataLength); + result.set(headBytes); + result.set(head.byteLength, metadataLength); + + return result; + }; +}; +Transmuxer.prototype = new Stream(); + +// forward compatibility +module.exports = Transmuxer; + +},{"../codecs/adts.js":11,"../codecs/h264":12,"../m2ts/m2ts.js":20,"../utils/stream.js":29,"./flv-tag.js":14}],17:[function(require,module,exports){ +'use strict'; + +var muxjs = { + codecs: require('./codecs'), + mp4: require('./mp4'), + flv: require('./flv'), + mp2t: require('./m2ts'), +}; +module.exports = muxjs; + +},{"./codecs":13,"./flv":15,"./m2ts":19,"./mp4":23}],18:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2015 Brightcove + * All rights reserved. + * + * Reads in-band caption information from a video elementary + * stream. Captions must follow the CEA-708 standard for injection + * into an MPEG-2 transport streams. + * @see https://en.wikipedia.org/wiki/CEA-708 + */ + +'use strict'; + +// ----------------- +// Link To Transport +// ----------------- + +// Supplemental enhancement information (SEI) NAL units have a +// payload type field to indicate how they are to be +// interpreted. CEAS-708 caption content is always transmitted with +// payload type 0x04. +var USER_DATA_REGISTERED_ITU_T_T35 = 4, + RBSP_TRAILING_BITS = 128, + Stream = require('../utils/stream'); + +/** + * Parse a supplemental enhancement information (SEI) NAL unit. + * Stops parsing once a message of type ITU T T35 has been found. + * + * @param bytes {Uint8Array} the bytes of a SEI NAL unit + * @return {object} the parsed SEI payload + * @see Rec. ITU-T H.264, 7.3.2.3.1 + */ +var parseSei = function(bytes) { + var + i = 0, + result = { + payloadType: -1, + payloadSize: 0, + }, + payloadType = 0, + payloadSize = 0; + + // go through the sei_rbsp parsing each each individual sei_message + while (i < bytes.byteLength) { + // stop once we have hit the end of the sei_rbsp + if (bytes[i] === RBSP_TRAILING_BITS) { + break; + } + + // Parse payload type + while (bytes[i] === 0xFF) { + payloadType += 255; + i++; + } + payloadType += bytes[i++]; + + // Parse payload size + while (bytes[i] === 0xFF) { + payloadSize += 255; + i++; + } + payloadSize += bytes[i++]; + + // this sei_message is a 608/708 caption so save it and break + // there can only ever be one caption message in a frame's sei + if (!result.payload && payloadType === USER_DATA_REGISTERED_ITU_T_T35) { + result.payloadType = payloadType; + result.payloadSize = payloadSize; + result.payload = bytes.subarray(i, i + payloadSize); + break; + } + + // skip the payload and parse the next message + i += payloadSize; + payloadType = 0; + payloadSize = 0; + } + + return result; +}; + +// see ANSI/SCTE 128-1 (2013), section 8.1 +var parseUserData = function(sei) { + // itu_t_t35_contry_code must be 181 (United States) for + // captions + if (sei.payload[0] !== 181) { + return null; + } + + // itu_t_t35_provider_code should be 49 (ATSC) for captions + if (((sei.payload[1] << 8) | sei.payload[2]) !== 49) { + return null; + } + + // the user_identifier should be "GA94" to indicate ATSC1 data + if (String.fromCharCode(sei.payload[3], + sei.payload[4], + sei.payload[5], + sei.payload[6]) !== 'GA94') { + return null; + } + + // finally, user_data_type_code should be 0x03 for caption data + if (sei.payload[7] !== 0x03) { + return null; + } + + // return the user_data_type_structure and strip the trailing + // marker bits + return sei.payload.subarray(8, sei.payload.length - 1); +}; + +// see CEA-708-D, section 4.4 +var parseCaptionPackets = function(pts, userData) { + var results = [], i, count, offset, data; + + // if this is just filler, return immediately + if (!(userData[0] & 0x40)) { + return results; + } + + // parse out the cc_data_1 and cc_data_2 fields + count = userData[0] & 0x1f; + for (i = 0; i < count; i++) { + offset = i * 3; + data = { + type: userData[offset + 2] & 0x03, + pts: pts + }; + + // capture cc data when cc_valid is 1 + if (userData[offset + 2] & 0x04) { + data.ccData = (userData[offset + 3] << 8) | userData[offset + 4]; + results.push(data); + } + } + return results; +}; + +var CaptionStream = function() { + var self = this; + CaptionStream.prototype.init.call(this); + + this.captionPackets_ = []; + + this.field1_ = new Cea608Stream(); + + // forward data and done events from field1_ to this CaptionStream + this.field1_.on('data', this.trigger.bind(this, 'data')); + this.field1_.on('done', this.trigger.bind(this, 'done')); +}; +CaptionStream.prototype = new Stream(); +CaptionStream.prototype.push = function(event) { + var sei, userData, captionPackets; + + // only examine SEI NALs + if (event.nalUnitType !== 'sei_rbsp') { + return; + } + + // parse the sei + sei = parseSei(event.escapedRBSP); + + // ignore everything but user_data_registered_itu_t_t35 + if (sei.payloadType !== USER_DATA_REGISTERED_ITU_T_T35) { + return; + } + + // parse out the user data payload + userData = parseUserData(sei); + + // ignore unrecognized userData + if (!userData) { + return; + } + + // parse out CC data packets and save them for later + this.captionPackets_ = this.captionPackets_.concat(parseCaptionPackets(event.pts, userData)); +}; + +CaptionStream.prototype.flush = function () { + // make sure we actually parsed captions before proceeding + if (!this.captionPackets_.length) { + this.field1_.flush(); + return; + } + + // sort caption byte-pairs based on their PTS values + this.captionPackets_.sort(function(a, b) { + return a.pts - b.pts; + }); + + // Push each caption into Cea608Stream + this.captionPackets_.forEach(this.field1_.push, this.field1_); + + this.captionPackets_.length = 0; + this.field1_.flush(); + return; +}; +// ---------------------- +// Session to Application +// ---------------------- + +var BASIC_CHARACTER_TRANSLATION = { + 0x2a: 0xe1, + 0x5c: 0xe9, + 0x5e: 0xed, + 0x5f: 0xf3, + 0x60: 0xfa, + 0x7b: 0xe7, + 0x7c: 0xf7, + 0x7d: 0xd1, + 0x7e: 0xf1, + 0x7f: 0x2588 +}; + +var getCharFromCode = function(code) { + if(code === null) { + return ''; + } + code = BASIC_CHARACTER_TRANSLATION[code] || code; + return String.fromCharCode(code); +}; + +// Constants for the byte codes recognized by Cea608Stream. This +// list is not exhaustive. For a more comprehensive listing and +// semantics see +// http://www.gpo.gov/fdsys/pkg/CFR-2010-title47-vol1/pdf/CFR-2010-title47-vol1-sec15-119.pdf +var PADDING = 0x0000, + + // Pop-on Mode + RESUME_CAPTION_LOADING = 0x1420, + END_OF_CAPTION = 0x142f, + + // Roll-up Mode + ROLL_UP_2_ROWS = 0x1425, + ROLL_UP_3_ROWS = 0x1426, + ROLL_UP_4_ROWS = 0x1427, + RESUME_DIRECT_CAPTIONING = 0x1429, + CARRIAGE_RETURN = 0x142d, + // Erasure + BACKSPACE = 0x1421, + ERASE_DISPLAYED_MEMORY = 0x142c, + ERASE_NON_DISPLAYED_MEMORY = 0x142e; + +// the index of the last row in a CEA-608 display buffer +var BOTTOM_ROW = 14; +// CEA-608 captions are rendered onto a 34x15 matrix of character +// cells. The "bottom" row is the last element in the outer array. +var createDisplayBuffer = function() { + var result = [], i = BOTTOM_ROW + 1; + while (i--) { + result.push(''); + } + return result; +}; + +var Cea608Stream = function() { + Cea608Stream.prototype.init.call(this); + + this.mode_ = 'popOn'; + // When in roll-up mode, the index of the last row that will + // actually display captions. If a caption is shifted to a row + // with a lower index than this, it is cleared from the display + // buffer + this.topRow_ = 0; + this.startPts_ = 0; + this.displayed_ = createDisplayBuffer(); + this.nonDisplayed_ = createDisplayBuffer(); + this.lastControlCode_ = null; + + this.push = function(packet) { + // Ignore other channels + if (packet.type !== 0) { + return; + } + var data, swap, char0, char1; + // remove the parity bits + data = packet.ccData & 0x7f7f; + + // ignore duplicate control codes + if (data === this.lastControlCode_) { + this.lastControlCode_ = null; + return; + } + + // Store control codes + if ((data & 0xf000) === 0x1000) { + this.lastControlCode_ = data; + } else { + this.lastControlCode_ = null; + } + + switch (data) { + case PADDING: + break; + case RESUME_CAPTION_LOADING: + this.mode_ = 'popOn'; + break; + case END_OF_CAPTION: + // if a caption was being displayed, it's gone now + this.flushDisplayed(packet.pts); + + // flip memory + swap = this.displayed_; + this.displayed_ = this.nonDisplayed_; + this.nonDisplayed_ = swap; + + // start measuring the time to display the caption + this.startPts_ = packet.pts; + break; + + case ROLL_UP_2_ROWS: + this.topRow_ = BOTTOM_ROW - 1; + this.mode_ = 'rollUp'; + break; + case ROLL_UP_3_ROWS: + this.topRow_ = BOTTOM_ROW - 2; + this.mode_ = 'rollUp'; + break; + case ROLL_UP_4_ROWS: + this.topRow_ = BOTTOM_ROW - 3; + this.mode_ = 'rollUp'; + break; + case CARRIAGE_RETURN: + this.flushDisplayed(packet.pts); + this.shiftRowsUp_(); + this.startPts_ = packet.pts; + break; + + case BACKSPACE: + if (this.mode_ === 'popOn') { + this.nonDisplayed_[BOTTOM_ROW] = this.nonDisplayed_[BOTTOM_ROW].slice(0, -1); + } else { + this.displayed_[BOTTOM_ROW] = this.displayed_[BOTTOM_ROW].slice(0, -1); + } + break; + case ERASE_DISPLAYED_MEMORY: + this.flushDisplayed(packet.pts); + this.displayed_ = createDisplayBuffer(); + break; + case ERASE_NON_DISPLAYED_MEMORY: + this.nonDisplayed_ = createDisplayBuffer(); + break; + default: + char0 = data >>> 8; + char1 = data & 0xff; + + // Look for a Channel 1 Preamble Address Code + if (char0 >= 0x10 && char0 <= 0x17 && + char1 >= 0x40 && char1 <= 0x7F && + (char0 !== 0x10 || char1 < 0x60)) { + // Follow Safari's lead and replace the PAC with a space + char0 = 0x20; + // we only want one space so make the second character null + // which will get become '' in getCharFromCode + char1 = null; + } + + // Look for special character sets + if ((char0 === 0x11 || char0 === 0x19) && + (char1 >= 0x30 && char1 <= 0x3F)) { + // Put in eigth note and space + char0 = 0xE299AA; + char1 = ''; + } + + // ignore unsupported control codes + if ((char0 & 0xf0) === 0x10) { + return; + } + + // character handling is dependent on the current mode + this[this.mode_](packet.pts, char0, char1); + break; + } + }; +}; +Cea608Stream.prototype = new Stream(); +// Trigger a cue point that captures the current state of the +// display buffer +Cea608Stream.prototype.flushDisplayed = function(pts) { + var row, i; + + for (i = 0; i < this.displayed_.length; i++) { + row = this.displayed_[i]; + if (row.length) { + this.trigger('data', { + startPts: this.startPts_, + endPts: pts, + // remove spaces from the start and end of the string + text: row.trim() + }); + } + } +}; + +// Mode Implementations +Cea608Stream.prototype.popOn = function(pts, char0, char1) { + var baseRow = this.nonDisplayed_[BOTTOM_ROW]; + + // buffer characters + baseRow += getCharFromCode(char0); + baseRow += getCharFromCode(char1); + this.nonDisplayed_[BOTTOM_ROW] = baseRow; +}; + +Cea608Stream.prototype.rollUp = function(pts, char0, char1) { + var baseRow = this.displayed_[BOTTOM_ROW]; + if (baseRow === '') { + // we're starting to buffer new display input, so flush out the + // current display + this.flushDisplayed(pts); + + this.startPts_ = pts; + } + + baseRow += getCharFromCode(char0); + baseRow += getCharFromCode(char1); + + this.displayed_[BOTTOM_ROW] = baseRow; +}; +Cea608Stream.prototype.shiftRowsUp_ = function() { + var i; + // clear out inactive rows + for (i = 0; i < this.topRow_; i++) { + this.displayed_[i] = ''; + } + // shift displayed rows up + for (i = this.topRow_; i < BOTTOM_ROW; i++) { + this.displayed_[i] = this.displayed_[i + 1]; + } + // clear out the bottom row + this.displayed_[BOTTOM_ROW] = ''; +}; + +// exports +module.exports = { + CaptionStream: CaptionStream, + Cea608Stream: Cea608Stream, +}; + + +},{"../utils/stream":29}],19:[function(require,module,exports){ +module.exports = require('./m2ts'); + +},{"./m2ts":20}],20:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2015 Brightcove + * All rights reserved. + * + * A stream-based mp2t to mp4 converter. This utility can be used to + * deliver mp4s to a SourceBuffer on platforms that support native + * Media Source Extensions. + */ +'use strict'; +var Stream = require('../utils/stream.js'), + CaptionStream = require('./caption-stream'), + StreamTypes = require('./stream-types'); + +var Stream = require('../utils/stream.js'); +var m2tsStreamTypes = require('./stream-types.js'); + +// object types +var + TransportPacketStream, TransportParseStream, ElementaryStream, + AacStream, H264Stream, NalByteStream; + +// constants +var + MP2T_PACKET_LENGTH = 188, // bytes + SYNC_BYTE = 0x47, + +/** + * Splits an incoming stream of binary data into MPEG-2 Transport + * Stream packets. + */ +TransportPacketStream = function() { + var + buffer = new Uint8Array(MP2T_PACKET_LENGTH), + bytesInBuffer = 0; + + TransportPacketStream.prototype.init.call(this); + + // Deliver new bytes to the stream. + + this.push = function(bytes) { + var + i = 0, + startIndex = 0, + endIndex = MP2T_PACKET_LENGTH, + everything; + + // If there are bytes remaining from the last segment, prepend them to the + // bytes that were pushed in + if (bytesInBuffer) { + everything = new Uint8Array(bytes.byteLength + bytesInBuffer); + everything.set(buffer.subarray(0, bytesInBuffer)); + everything.set(bytes, bytesInBuffer); + bytesInBuffer = 0; + } else { + everything = bytes; + } + + // While we have enough data for a packet + while (endIndex < everything.byteLength) { + // Look for a pair of start and end sync bytes in the data.. + if (everything[startIndex] === SYNC_BYTE && everything[endIndex] === SYNC_BYTE) { + // We found a packet so emit it and jump one whole packet forward in + // the stream + this.trigger('data', everything.subarray(startIndex, endIndex)); + startIndex += MP2T_PACKET_LENGTH; + endIndex += MP2T_PACKET_LENGTH; + continue; + } + // If we get here, we have somehow become de-synchronized and we need to step + // forward one byte at a time until we find a pair of sync bytes that denote + // a packet + startIndex++; + endIndex++; + } + + // If there was some data left over at the end of the segment that couldn't + // possibly be a whole packet, keep it because it might be the start of a packet + // that continues in the next segment + if (startIndex < everything.byteLength) { + buffer.set(everything.subarray(startIndex), 0); + bytesInBuffer = everything.byteLength - startIndex; + } + }; + + this.flush = function () { + // If the buffer contains a whole packet when we are being flushed, emit it + // and empty the buffer. Otherwise hold onto the data because it may be + // important for decoding the next segment + if (bytesInBuffer === MP2T_PACKET_LENGTH && buffer[0] === SYNC_BYTE) { + this.trigger('data', buffer); + bytesInBuffer = 0; + } + this.trigger('done'); + }; +}; +TransportPacketStream.prototype = new Stream(); + +/** + * Accepts an MP2T TransportPacketStream and emits data events with parsed + * forms of the individual transport stream packets. + */ +TransportParseStream = function() { + var parsePsi, parsePat, parsePmt, parsePes, self; + TransportParseStream.prototype.init.call(this); + self = this; + + this.packetsWaitingForPmt = []; + this.programMapTable = undefined; + + parsePsi = function(payload, psi) { + var offset = 0; + + // PSI packets may be split into multiple sections and those + // sections may be split into multiple packets. If a PSI + // section starts in this packet, the payload_unit_start_indicator + // will be true and the first byte of the payload will indicate + // the offset from the current position to the start of the + // section. + if (psi.payloadUnitStartIndicator) { + offset += payload[offset] + 1; + } + + if (psi.type === 'pat') { + parsePat(payload.subarray(offset), psi); + } else { + parsePmt(payload.subarray(offset), psi); + } + }; + + parsePat = function(payload, pat) { + pat.section_number = payload[7]; + pat.last_section_number = payload[8]; + + // skip the PSI header and parse the first PMT entry + self.pmtPid = (payload[10] & 0x1F) << 8 | payload[11]; + pat.pmtPid = self.pmtPid; + }; + + /** + * Parse out the relevant fields of a Program Map Table (PMT). + * @param payload {Uint8Array} the PMT-specific portion of an MP2T + * packet. The first byte in this array should be the table_id + * field. + * @param pmt {object} the object that should be decorated with + * fields parsed from the PMT. + */ + parsePmt = function(payload, pmt) { + var sectionLength, tableEnd, programInfoLength, offset; + + // PMTs can be sent ahead of the time when they should actually + // take effect. We don't believe this should ever be the case + // for HLS but we'll ignore "forward" PMT declarations if we see + // them. Future PMT declarations have the current_next_indicator + // set to zero. + if (!(payload[5] & 0x01)) { + return; + } + + // overwrite any existing program map table + self.programMapTable = {}; + + // the mapping table ends at the end of the current section + sectionLength = (payload[1] & 0x0f) << 8 | payload[2]; + tableEnd = 3 + sectionLength - 4; + + // to determine where the table is, we have to figure out how + // long the program info descriptors are + programInfoLength = (payload[10] & 0x0f) << 8 | payload[11]; + + // advance the offset to the first entry in the mapping table + offset = 12 + programInfoLength; + while (offset < tableEnd) { + // add an entry that maps the elementary_pid to the stream_type + self.programMapTable[(payload[offset + 1] & 0x1F) << 8 | payload[offset + 2]] = payload[offset]; + + // move to the next table entry + // skip past the elementary stream descriptors, if present + offset += ((payload[offset + 3] & 0x0F) << 8 | payload[offset + 4]) + 5; + } + + // record the map on the packet as well + pmt.programMapTable = self.programMapTable; + + // if there are any packets waiting for a PMT to be found, process them now + while (self.packetsWaitingForPmt.length) { + self.processPes_.apply(self, self.packetsWaitingForPmt.shift()); + } + }; + + /** + * Deliver a new MP2T packet to the stream. + */ + this.push = function(packet) { + var + result = {}, + offset = 4; + + result.payloadUnitStartIndicator = !!(packet[1] & 0x40); + + // pid is a 13-bit field starting at the last bit of packet[1] + result.pid = packet[1] & 0x1f; + result.pid <<= 8; + result.pid |= packet[2]; + + // if an adaption field is present, its length is specified by the + // fifth byte of the TS packet header. The adaptation field is + // used to add stuffing to PES packets that don't fill a complete + // TS packet, and to specify some forms of timing and control data + // that we do not currently use. + if (((packet[3] & 0x30) >>> 4) > 0x01) { + offset += packet[offset] + 1; + } + + // parse the rest of the packet based on the type + if (result.pid === 0) { + result.type = 'pat'; + parsePsi(packet.subarray(offset), result); + this.trigger('data', result); + } else if (result.pid === this.pmtPid) { + result.type = 'pmt'; + parsePsi(packet.subarray(offset), result); + this.trigger('data', result); + } else if (this.programMapTable === undefined) { + // When we have not seen a PMT yet, defer further processing of + // PES packets until one has been parsed + this.packetsWaitingForPmt.push([packet, offset, result]); + } else { + this.processPes_(packet, offset, result); + } + }; + + this.processPes_ = function (packet, offset, result) { + result.streamType = this.programMapTable[result.pid]; + result.type = 'pes'; + result.data = packet.subarray(offset); + + this.trigger('data', result); + }; + +}; +TransportParseStream.prototype = new Stream(); +TransportParseStream.STREAM_TYPES = { + h264: 0x1b, + adts: 0x0f +}; + +/** + * Reconsistutes program elementary stream (PES) packets from parsed + * transport stream packets. That is, if you pipe an + * mp2t.TransportParseStream into a mp2t.ElementaryStream, the output + * events will be events which capture the bytes for individual PES + * packets plus relevant metadata that has been extracted from the + * container. + */ +ElementaryStream = function() { + var + // PES packet fragments + video = { + data: [], + size: 0 + }, + audio = { + data: [], + size: 0 + }, + timedMetadata = { + data: [], + size: 0 + }, + parsePes = function(payload, pes) { + var ptsDtsFlags; + + // find out if this packets starts a new keyframe + pes.dataAlignmentIndicator = (payload[6] & 0x04) !== 0; + // PES packets may be annotated with a PTS value, or a PTS value + // and a DTS value. Determine what combination of values is + // available to work with. + ptsDtsFlags = payload[7]; + + // PTS and DTS are normally stored as a 33-bit number. Javascript + // performs all bitwise operations on 32-bit integers but javascript + // supports a much greater range (52-bits) of integer using standard + // mathematical operations. + // We construct a 31-bit value using bitwise operators over the 31 + // most significant bits and then multiply by 4 (equal to a left-shift + // of 2) before we add the final 2 least significant bits of the + // timestamp (equal to an OR.) + if (ptsDtsFlags & 0xC0) { + // the PTS and DTS are not written out directly. For information + // on how they are encoded, see + // http://dvd.sourceforge.net/dvdinfo/pes-hdr.html + pes.pts = (payload[9] & 0x0E) << 27 + | (payload[10] & 0xFF) << 20 + | (payload[11] & 0xFE) << 12 + | (payload[12] & 0xFF) << 5 + | (payload[13] & 0xFE) >>> 3; + pes.pts *= 4; // Left shift by 2 + pes.pts += (payload[13] & 0x06) >>> 1; // OR by the two LSBs + pes.dts = pes.pts; + if (ptsDtsFlags & 0x40) { + pes.dts = (payload[14] & 0x0E ) << 27 + | (payload[15] & 0xFF ) << 20 + | (payload[16] & 0xFE ) << 12 + | (payload[17] & 0xFF ) << 5 + | (payload[18] & 0xFE ) >>> 3; + pes.dts *= 4; // Left shift by 2 + pes.dts += (payload[18] & 0x06) >>> 1; // OR by the two LSBs + } + } + + // the data section starts immediately after the PES header. + // pes_header_data_length specifies the number of header bytes + // that follow the last byte of the field. + pes.data = payload.subarray(9 + payload[8]); + }, + flushStream = function(stream, type) { + var + packetData = new Uint8Array(stream.size), + event = { + type: type + }, + i = 0, + fragment; + + // do nothing if there is no buffered data + if (!stream.data.length) { + return; + } + event.trackId = stream.data[0].pid; + + // reassemble the packet + while (stream.data.length) { + fragment = stream.data.shift(); + + packetData.set(fragment.data, i); + i += fragment.data.byteLength; + } + + // parse assembled packet's PES header + parsePes(packetData, event); + + stream.size = 0; + + self.trigger('data', event); + }, + self; + + ElementaryStream.prototype.init.call(this); + self = this; + + this.push = function(data) { + ({ + pat: function() { + // we have to wait for the PMT to arrive as well before we + // have any meaningful metadata + }, + pes: function() { + var stream, streamType; + + switch (data.streamType) { + case StreamTypes.H264_STREAM_TYPE: + case m2tsStreamTypes.H264_STREAM_TYPE: + stream = video; + streamType = 'video'; + break; + case StreamTypes.ADTS_STREAM_TYPE: + stream = audio; + streamType = 'audio'; + break; + case StreamTypes.METADATA_STREAM_TYPE: + stream = timedMetadata; + streamType = 'timed-metadata'; + break; + default: + // ignore unknown stream types + return; + } + + // if a new packet is starting, we can flush the completed + // packet + if (data.payloadUnitStartIndicator) { + flushStream(stream, streamType); + } + + // buffer this fragment until we are sure we've received the + // complete payload + stream.data.push(data); + stream.size += data.data.byteLength; + }, + pmt: function() { + var + event = { + type: 'metadata', + tracks: [] + }, + programMapTable = data.programMapTable, + k, + track; + + // translate streams to tracks + for (k in programMapTable) { + if (programMapTable.hasOwnProperty(k)) { + track = { + timelineStartInfo: { + baseMediaDecodeTime: 0 + } + }; + track.id = +k; + if (programMapTable[k] === m2tsStreamTypes.H264_STREAM_TYPE) { + track.codec = 'avc'; + track.type = 'video'; + } else if (programMapTable[k] === m2tsStreamTypes.ADTS_STREAM_TYPE) { + track.codec = 'adts'; + track.type = 'audio'; + } + event.tracks.push(track); + } + } + self.trigger('data', event); + } + })[data.type](); + }; + + /** + * Flush any remaining input. Video PES packets may be of variable + * length. Normally, the start of a new video packet can trigger the + * finalization of the previous packet. That is not possible if no + * more video is forthcoming, however. In that case, some other + * mechanism (like the end of the file) has to be employed. When it is + * clear that no additional data is forthcoming, calling this method + * will flush the buffered packets. + */ + this.flush = function() { + // !!THIS ORDER IS IMPORTANT!! + // video first then audio + flushStream(video, 'video'); + flushStream(audio, 'audio'); + flushStream(timedMetadata, 'timed-metadata'); + this.trigger('done'); + }; +}; +ElementaryStream.prototype = new Stream(); + +var m2ts = { + PAT_PID: 0x0000, + MP2T_PACKET_LENGTH: MP2T_PACKET_LENGTH, + TransportPacketStream: TransportPacketStream, + TransportParseStream: TransportParseStream, + ElementaryStream: ElementaryStream, + CaptionStream: CaptionStream.CaptionStream, + Cea608Stream: CaptionStream.Cea608Stream, + MetadataStream: require('./metadata-stream'), +}; + +for (var type in StreamTypes) { + if (StreamTypes.hasOwnProperty(type)) { + m2ts[type] = StreamTypes[type]; + } +} + +module.exports = m2ts; + +},{"../utils/stream.js":29,"./caption-stream":18,"./metadata-stream":21,"./stream-types":22,"./stream-types.js":22}],21:[function(require,module,exports){ +/** + * Accepts program elementary stream (PES) data events and parses out + * ID3 metadata from them, if present. + * @see http://id3.org/id3v2.3.0 + */ +'use strict'; +var + Stream = require('../utils/stream'), + StreamTypes = require('./stream-types'), + // return a percent-encoded representation of the specified byte range + // @see http://en.wikipedia.org/wiki/Percent-encoding + percentEncode = function(bytes, start, end) { + var i, result = ''; + for (i = start; i < end; i++) { + result += '%' + ('00' + bytes[i].toString(16)).slice(-2); + } + return result; + }, + // return the string representation of the specified byte range, + // interpreted as UTf-8. + parseUtf8 = function(bytes, start, end) { + return decodeURIComponent(percentEncode(bytes, start, end)); + }, + // return the string representation of the specified byte range, + // interpreted as ISO-8859-1. + parseIso88591 = function(bytes, start, end) { + return unescape(percentEncode(bytes, start, end)); // jshint ignore:line + }, + parseSyncSafeInteger = function (data) { + return (data[0] << 21) | + (data[1] << 14) | + (data[2] << 7) | + (data[3]); + }, + tagParsers = { + 'TXXX': function(tag) { + var i; + if (tag.data[0] !== 3) { + // ignore frames with unrecognized character encodings + return; + } + + for (i = 1; i < tag.data.length; i++) { + if (tag.data[i] === 0) { + // parse the text fields + tag.description = parseUtf8(tag.data, 1, i); + // do not include the null terminator in the tag value + tag.value = parseUtf8(tag.data, i + 1, tag.data.length - 1); + break; + } + } + tag.data = tag.value; + }, + 'WXXX': function(tag) { + var i; + if (tag.data[0] !== 3) { + // ignore frames with unrecognized character encodings + return; + } + + for (i = 1; i < tag.data.length; i++) { + if (tag.data[i] === 0) { + // parse the description and URL fields + tag.description = parseUtf8(tag.data, 1, i); + tag.url = parseUtf8(tag.data, i + 1, tag.data.length); + break; + } + } + }, + 'PRIV': function(tag) { + var i; + + for (i = 0; i < tag.data.length; i++) { + if (tag.data[i] === 0) { + // parse the description and URL fields + tag.owner = parseIso88591(tag.data, 0, i); + break; + } + } + tag.privateData = tag.data.subarray(i + 1); + tag.data = tag.privateData; + } + }, + MetadataStream; + +MetadataStream = function(options) { + var + settings = { + debug: !!(options && options.debug), + + // the bytes of the program-level descriptor field in MP2T + // see ISO/IEC 13818-1:2013 (E), section 2.6 "Program and + // program element descriptors" + descriptor: options && options.descriptor + }, + // the total size in bytes of the ID3 tag being parsed + tagSize = 0, + // tag data that is not complete enough to be parsed + buffer = [], + // the total number of bytes currently in the buffer + bufferSize = 0, + i; + + MetadataStream.prototype.init.call(this); + + // calculate the text track in-band metadata track dispatch type + // https://html.spec.whatwg.org/multipage/embedded-content.html#steps-to-expose-a-media-resource-specific-text-track + this.dispatchType = StreamTypes.METADATA_STREAM_TYPE.toString(16); + if (settings.descriptor) { + for (i = 0; i < settings.descriptor.length; i++) { + this.dispatchType += ('00' + settings.descriptor[i].toString(16)).slice(-2); + } + } + + this.push = function(chunk) { + var tag, frameStart, frameSize, frame, i, frameHeader; + if (chunk.type !== 'timed-metadata') { + return; + } + + // if data_alignment_indicator is set in the PES header, + // we must have the start of a new ID3 tag. Assume anything + // remaining in the buffer was malformed and throw it out + if (chunk.dataAlignmentIndicator) { + bufferSize = 0; + buffer.length = 0; + } + + // ignore events that don't look like ID3 data + if (buffer.length === 0 && + (chunk.data.length < 10 || + chunk.data[0] !== 'I'.charCodeAt(0) || + chunk.data[1] !== 'D'.charCodeAt(0) || + chunk.data[2] !== '3'.charCodeAt(0))) { + if (settings.debug) { + console.log('Skipping unrecognized metadata packet'); + } + return; + } + + // add this chunk to the data we've collected so far + + buffer.push(chunk); + bufferSize += chunk.data.byteLength; + + // grab the size of the entire frame from the ID3 header + if (buffer.length === 1) { + // the frame size is transmitted as a 28-bit integer in the + // last four bytes of the ID3 header. + // The most significant bit of each byte is dropped and the + // results concatenated to recover the actual value. + tagSize = parseSyncSafeInteger(chunk.data.subarray(6, 10)); + + // ID3 reports the tag size excluding the header but it's more + // convenient for our comparisons to include it + tagSize += 10; + } + + // if the entire frame has not arrived, wait for more data + if (bufferSize < tagSize) { + return; + } + + // collect the entire frame so it can be parsed + tag = { + data: new Uint8Array(tagSize), + frames: [], + pts: buffer[0].pts, + dts: buffer[0].dts + }; + for (i = 0; i < tagSize;) { + tag.data.set(buffer[0].data.subarray(0, tagSize - i), i); + i += buffer[0].data.byteLength; + bufferSize -= buffer[0].data.byteLength; + buffer.shift(); + } + + // find the start of the first frame and the end of the tag + frameStart = 10; + if (tag.data[5] & 0x40) { + // advance the frame start past the extended header + frameStart += 4; // header size field + frameStart += parseSyncSafeInteger(tag.data.subarray(10, 14)); + + // clip any padding off the end + tagSize -= parseSyncSafeInteger(tag.data.subarray(16, 20)); + } + + // parse one or more ID3 frames + // http://id3.org/id3v2.3.0#ID3v2_frame_overview + do { + // determine the number of bytes in this frame + frameSize = parseSyncSafeInteger(tag.data.subarray(frameStart + 4, frameStart + 8)); + if (frameSize < 1) { + return console.log('Malformed ID3 frame encountered. Skipping metadata parsing.'); + } + frameHeader = String.fromCharCode(tag.data[frameStart], + tag.data[frameStart + 1], + tag.data[frameStart + 2], + tag.data[frameStart + 3]); + + + frame = { + id: frameHeader, + data: tag.data.subarray(frameStart + 10, frameStart + frameSize + 10) + }; + frame.key = frame.id; + if (tagParsers[frame.id]) { + tagParsers[frame.id](frame); + if (frame.owner === 'com.apple.streaming.transportStreamTimestamp') { + var + d = frame.data, + size = ((d[3] & 0x01) << 30) | + (d[4] << 22) | + (d[5] << 14) | + (d[6] << 6) | + (d[7] >>> 2); + + size *= 4; + size += d[7] & 0x03; + frame.timeStamp = size; + this.trigger('timestamp', frame); + } + } + tag.frames.push(frame); + + frameStart += 10; // advance past the frame header + frameStart += frameSize; // advance past the frame body + } while (frameStart < tagSize); + this.trigger('data', tag); + }; +}; +MetadataStream.prototype = new Stream(); + +module.exports = MetadataStream; + +},{"../utils/stream":29,"./stream-types":22}],22:[function(require,module,exports){ +'use strict'; + +module.exports = { + H264_STREAM_TYPE: 0x1B, + ADTS_STREAM_TYPE: 0x0F, + METADATA_STREAM_TYPE: 0x15 +}; + +},{}],23:[function(require,module,exports){ +module.exports = { + generator: require('./mp4-generator'), + Transmuxer: require('./transmuxer').Transmuxer, + AudioSegmentStream: require('./transmuxer').AudioSegmentStream, + VideoSegmentStream: require('./transmuxer').VideoSegmentStream, + tools: require('../tools/mp4-inspector'), +}; + +},{"../tools/mp4-inspector":27,"./mp4-generator":24,"./transmuxer":25}],24:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2015 Brightcove + * All rights reserved. + * + * Functions that generate fragmented MP4s suitable for use with Media + * Source Extensions. + */ +'use strict'; + +var box, dinf, esds, ftyp, mdat, mfhd, minf, moof, moov, mvex, mvhd, trak, + tkhd, mdia, mdhd, hdlr, sdtp, stbl, stsd, styp, traf, trex, trun, + types, MAJOR_BRAND, MINOR_VERSION, AVC1_BRAND, VIDEO_HDLR, + AUDIO_HDLR, HDLR_TYPES, VMHD, SMHD, DREF, STCO, STSC, STSZ, STTS; + +// pre-calculate constants +(function() { + var i; + types = { + avc1: [], // codingname + avcC: [], + btrt: [], + dinf: [], + dref: [], + esds: [], + ftyp: [], + hdlr: [], + mdat: [], + mdhd: [], + mdia: [], + mfhd: [], + minf: [], + moof: [], + moov: [], + mp4a: [], // codingname + mvex: [], + mvhd: [], + sdtp: [], + smhd: [], + stbl: [], + stco: [], + stsc: [], + stsd: [], + stsz: [], + stts: [], + styp: [], + tfdt: [], + tfhd: [], + traf: [], + trak: [], + trun: [], + trex: [], + tkhd: [], + vmhd: [] + }; + + for (i in types) { + if (types.hasOwnProperty(i)) { + types[i] = [ + i.charCodeAt(0), + i.charCodeAt(1), + i.charCodeAt(2), + i.charCodeAt(3) + ]; + } + } + + MAJOR_BRAND = new Uint8Array([ + 'i'.charCodeAt(0), + 's'.charCodeAt(0), + 'o'.charCodeAt(0), + 'm'.charCodeAt(0) + ]); + AVC1_BRAND = new Uint8Array([ + 'a'.charCodeAt(0), + 'v'.charCodeAt(0), + 'c'.charCodeAt(0), + '1'.charCodeAt(0) + ]); + MINOR_VERSION = new Uint8Array([0, 0, 0, 1]); + VIDEO_HDLR = new Uint8Array([ + 0x00, // version 0 + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x00, // pre_defined + 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide' + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, // reserved + 0x56, 0x69, 0x64, 0x65, + 0x6f, 0x48, 0x61, 0x6e, + 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'VideoHandler' + ]); + AUDIO_HDLR = new Uint8Array([ + 0x00, // version 0 + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x00, // pre_defined + 0x73, 0x6f, 0x75, 0x6e, // handler_type: 'soun' + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, // reserved + 0x53, 0x6f, 0x75, 0x6e, + 0x64, 0x48, 0x61, 0x6e, + 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'SoundHandler' + ]); + HDLR_TYPES = { + "video":VIDEO_HDLR, + "audio": AUDIO_HDLR + }; + DREF = new Uint8Array([ + 0x00, // version 0 + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x01, // entry_count + 0x00, 0x00, 0x00, 0x0c, // entry_size + 0x75, 0x72, 0x6c, 0x20, // 'url' type + 0x00, // version 0 + 0x00, 0x00, 0x01 // entry_flags + ]); + SMHD = new Uint8Array([ + 0x00, // version + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, // balance, 0 means centered + 0x00, 0x00 // reserved + ]); + STCO = new Uint8Array([ + 0x00, // version + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x00 // entry_count + ]); + STSC = STCO; + STSZ = new Uint8Array([ + 0x00, // version + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x00, // sample_size + 0x00, 0x00, 0x00, 0x00, // sample_count + ]); + STTS = STCO; + VMHD = new Uint8Array([ + 0x00, // version + 0x00, 0x00, 0x01, // flags + 0x00, 0x00, // graphicsmode + 0x00, 0x00, + 0x00, 0x00, + 0x00, 0x00 // opcolor + ]); +})(); + +box = function(type) { + var + payload = [], + size = 0, + i, + result, + view; + + for (i = 1; i < arguments.length; i++) { + payload.push(arguments[i]); + } + + i = payload.length; + + // calculate the total size we need to allocate + while (i--) { + size += payload[i].byteLength; + } + result = new Uint8Array(size + 8); + view = new DataView(result.buffer, result.byteOffset, result.byteLength); + view.setUint32(0, result.byteLength); + result.set(type, 4); + + // copy the payload into the result + for (i = 0, size = 8; i < payload.length; i++) { + result.set(payload[i], size); + size += payload[i].byteLength; + } + return result; +}; + +dinf = function() { + return box(types.dinf, box(types.dref, DREF)); +}; + +esds = function(track) { + return box(types.esds, new Uint8Array([ + 0x00, // version + 0x00, 0x00, 0x00, // flags + + // ES_Descriptor + 0x03, // tag, ES_DescrTag + 0x19, // length + 0x00, 0x00, // ES_ID + 0x00, // streamDependenceFlag, URL_flag, reserved, streamPriority + + // DecoderConfigDescriptor + 0x04, // tag, DecoderConfigDescrTag + 0x11, // length + 0x40, // object type + 0x15, // streamType + 0x00, 0x06, 0x00, // bufferSizeDB + 0x00, 0x00, 0xda, 0xc0, // maxBitrate + 0x00, 0x00, 0xda, 0xc0, // avgBitrate + + // DecoderSpecificInfo + 0x05, // tag, DecoderSpecificInfoTag + 0x02, // length + // ISO/IEC 14496-3, AudioSpecificConfig + // for samplingFrequencyIndex see ISO/IEC 13818-7:2006, 8.1.3.2.2, Table 35 + (track.audioobjecttype << 3) | (track.samplingfrequencyindex >>> 1), + (track.samplingfrequencyindex << 7) | (track.channelcount << 3), + 0x06, 0x01, 0x02 // GASpecificConfig + ])); +}; + +ftyp = function() { + return box(types.ftyp, MAJOR_BRAND, MINOR_VERSION, MAJOR_BRAND, AVC1_BRAND); +}; + +hdlr = function(type) { + return box(types.hdlr, HDLR_TYPES[type]); +}; +mdat = function(data) { + return box(types.mdat, data); +}; +mdhd = function(track) { + var result = new Uint8Array([ + 0x00, // version 0 + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x02, // creation_time + 0x00, 0x00, 0x00, 0x03, // modification_time + 0x00, 0x01, 0x5f, 0x90, // timescale, 90,000 "ticks" per second + + (track.duration >>> 24) & 0xFF, + (track.duration >>> 16) & 0xFF, + (track.duration >>> 8) & 0xFF, + track.duration & 0xFF, // duration + 0x55, 0xc4, // 'und' language (undetermined) + 0x00, 0x00 + ]); + + // Use the sample rate from the track metadata, when it is + // defined. The sample rate can be parsed out of an ADTS header, for + // instance. + if (track.samplerate) { + result[12] = (track.samplerate >>> 24) & 0xFF; + result[13] = (track.samplerate >>> 16) & 0xFF; + result[14] = (track.samplerate >>> 8) & 0xFF; + result[15] = (track.samplerate) & 0xFF; + } + + return box(types.mdhd, result); +}; +mdia = function(track) { + return box(types.mdia, mdhd(track), hdlr(track.type), minf(track)); +}; +mfhd = function(sequenceNumber) { + return box(types.mfhd, new Uint8Array([ + 0x00, + 0x00, 0x00, 0x00, // flags + (sequenceNumber & 0xFF000000) >> 24, + (sequenceNumber & 0xFF0000) >> 16, + (sequenceNumber & 0xFF00) >> 8, + sequenceNumber & 0xFF, // sequence_number + ])); +}; +minf = function(track) { + return box(types.minf, + track.type === 'video' ? box(types.vmhd, VMHD) : box(types.smhd, SMHD), + dinf(), + stbl(track)); +}; +moof = function(sequenceNumber, tracks) { + var + trackFragments = [], + i = tracks.length; + // build traf boxes for each track fragment + while (i--) { + trackFragments[i] = traf(tracks[i]); + } + return box.apply(null, [ + types.moof, + mfhd(sequenceNumber) + ].concat(trackFragments)); +}; +/** + * Returns a movie box. + * @param tracks {array} the tracks associated with this movie + * @see ISO/IEC 14496-12:2012(E), section 8.2.1 + */ +moov = function(tracks) { + var + i = tracks.length, + boxes = []; + + while (i--) { + boxes[i] = trak(tracks[i]); + } + + return box.apply(null, [types.moov, mvhd(0xffffffff)].concat(boxes).concat(mvex(tracks))); +}; +mvex = function(tracks) { + var + i = tracks.length, + boxes = []; + + while (i--) { + boxes[i] = trex(tracks[i]); + } + return box.apply(null, [types.mvex].concat(boxes)); +}; +mvhd = function(duration) { + var + bytes = new Uint8Array([ + 0x00, // version 0 + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x01, // creation_time + 0x00, 0x00, 0x00, 0x02, // modification_time + 0x00, 0x01, 0x5f, 0x90, // timescale, 90,000 "ticks" per second + (duration & 0xFF000000) >> 24, + (duration & 0xFF0000) >> 16, + (duration & 0xFF00) >> 8, + duration & 0xFF, // duration + 0x00, 0x01, 0x00, 0x00, // 1.0 rate + 0x01, 0x00, // 1.0 volume + 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, // pre_defined + 0xff, 0xff, 0xff, 0xff // next_track_ID + ]); + return box(types.mvhd, bytes); +}; + +sdtp = function(track) { + var + samples = track.samples || [], + bytes = new Uint8Array(4 + samples.length), + flags, + i; + + // leave the full box header (4 bytes) all zero + + // write the sample table + for (i = 0; i < samples.length; i++) { + flags = samples[i].flags; + + bytes[i + 4] = (flags.dependsOn << 4) | + (flags.isDependedOn << 2) | + (flags.hasRedundancy); + } + + return box(types.sdtp, + bytes); +}; + +stbl = function(track) { + return box(types.stbl, + stsd(track), + box(types.stts, STTS), + box(types.stsc, STSC), + box(types.stsz, STSZ), + box(types.stco, STCO)); +}; + +(function() { + var videoSample, audioSample; + + stsd = function(track) { + + return box(types.stsd, new Uint8Array([ + 0x00, // version 0 + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x01 + ]), track.type === 'video' ? videoSample(track) : audioSample(track)); + }; + + videoSample = function(track) { + var + sps = track.sps || [], + pps = track.pps || [], + sequenceParameterSets = [], + pictureParameterSets = [], + i; + + // assemble the SPSs + for (i = 0; i < sps.length; i++) { + sequenceParameterSets.push((sps[i].byteLength & 0xFF00) >>> 8); + sequenceParameterSets.push((sps[i].byteLength & 0xFF)); // sequenceParameterSetLength + sequenceParameterSets = sequenceParameterSets.concat(Array.prototype.slice.call(sps[i])); // SPS + } + + // assemble the PPSs + for (i = 0; i < pps.length; i++) { + pictureParameterSets.push((pps[i].byteLength & 0xFF00) >>> 8); + pictureParameterSets.push((pps[i].byteLength & 0xFF)); + pictureParameterSets = pictureParameterSets.concat(Array.prototype.slice.call(pps[i])); + } + + return box(types.avc1, new Uint8Array([ + 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, // reserved + 0x00, 0x01, // data_reference_index + 0x00, 0x00, // pre_defined + 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, // pre_defined + (track.width & 0xff00) >> 8, + track.width & 0xff, // width + (track.height & 0xff00) >> 8, + track.height & 0xff, // height + 0x00, 0x48, 0x00, 0x00, // horizresolution + 0x00, 0x48, 0x00, 0x00, // vertresolution + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x01, // frame_count + 0x13, + 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x6a, 0x73, 0x2d, + 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x69, 0x62, 0x2d, + 0x68, 0x6c, 0x73, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, // compressorname + 0x00, 0x18, // depth = 24 + 0x11, 0x11 // pre_defined = -1 + ]), box(types.avcC, new Uint8Array([ + 0x01, // configurationVersion + track.profileIdc, // AVCProfileIndication + track.profileCompatibility, // profile_compatibility + track.levelIdc, // AVCLevelIndication + 0xff // lengthSizeMinusOne, hard-coded to 4 bytes + ].concat([ + sps.length // numOfSequenceParameterSets + ]).concat(sequenceParameterSets).concat([ + pps.length // numOfPictureParameterSets + ]).concat(pictureParameterSets))), // "PPS" + box(types.btrt, new Uint8Array([ + 0x00, 0x1c, 0x9c, 0x80, // bufferSizeDB + 0x00, 0x2d, 0xc6, 0xc0, // maxBitrate + 0x00, 0x2d, 0xc6, 0xc0 + ])) // avgBitrate + ); + }; + + audioSample = function(track) { + return box(types.mp4a, new Uint8Array([ + + // SampleEntry, ISO/IEC 14496-12 + 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, // reserved + 0x00, 0x01, // data_reference_index + + // AudioSampleEntry, ISO/IEC 14496-12 + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, // reserved + (track.channelcount & 0xff00) >> 8, + (track.channelcount & 0xff), // channelcount + + (track.samplesize & 0xff00) >> 8, + (track.samplesize & 0xff), // samplesize + 0x00, 0x00, // pre_defined + 0x00, 0x00, // reserved + + (track.samplerate & 0xff00) >> 8, + (track.samplerate & 0xff), + 0x00, 0x00 // samplerate, 16.16 + + // MP4AudioSampleEntry, ISO/IEC 14496-14 + ]), esds(track)); + }; +})(); + +styp = function() { + return box(types.styp, MAJOR_BRAND, MINOR_VERSION, MAJOR_BRAND); +}; + +tkhd = function(track) { + var result = new Uint8Array([ + 0x00, // version 0 + 0x00, 0x00, 0x07, // flags + 0x00, 0x00, 0x00, 0x00, // creation_time + 0x00, 0x00, 0x00, 0x00, // modification_time + (track.id & 0xFF000000) >> 24, + (track.id & 0xFF0000) >> 16, + (track.id & 0xFF00) >> 8, + track.id & 0xFF, // track_ID + 0x00, 0x00, 0x00, 0x00, // reserved + (track.duration & 0xFF000000) >> 24, + (track.duration & 0xFF0000) >> 16, + (track.duration & 0xFF00) >> 8, + track.duration & 0xFF, // duration + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, // layer + 0x00, 0x00, // alternate_group + 0x01, 0x00, // non-audio track volume + 0x00, 0x00, // reserved + 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix + (track.width & 0xFF00) >> 8, + track.width & 0xFF, + 0x00, 0x00, // width + (track.height & 0xFF00) >> 8, + track.height & 0xFF, + 0x00, 0x00 // height + ]); + + return box(types.tkhd, result); +}; + +/** + * Generate a track fragment (traf) box. A traf box collects metadata + * about tracks in a movie fragment (moof) box. + */ +traf = function(track) { + var trackFragmentHeader, trackFragmentDecodeTime, + trackFragmentRun, sampleDependencyTable, dataOffset; + + trackFragmentHeader = box(types.tfhd, new Uint8Array([ + 0x00, // version 0 + 0x00, 0x00, 0x3a, // flags + (track.id & 0xFF000000) >> 24, + (track.id & 0xFF0000) >> 16, + (track.id & 0xFF00) >> 8, + (track.id & 0xFF), // track_ID + 0x00, 0x00, 0x00, 0x01, // sample_description_index + 0x00, 0x00, 0x00, 0x00, // default_sample_duration + 0x00, 0x00, 0x00, 0x00, // default_sample_size + 0x00, 0x00, 0x00, 0x00 // default_sample_flags + ])); + + trackFragmentDecodeTime = box(types.tfdt, new Uint8Array([ + 0x00, // version 0 + 0x00, 0x00, 0x00, // flags + // baseMediaDecodeTime + (track.baseMediaDecodeTime >>> 24) & 0xFF, + (track.baseMediaDecodeTime >>> 16) & 0xFF, + (track.baseMediaDecodeTime >>> 8) & 0xFF, + track.baseMediaDecodeTime & 0xFF + ])); + + // the data offset specifies the number of bytes from the start of + // the containing moof to the first payload byte of the associated + // mdat + dataOffset = (32 + // tfhd + 16 + // tfdt + 8 + // traf header + 16 + // mfhd + 8 + // moof header + 8); // mdat header + + // audio tracks require less metadata + if (track.type === 'audio') { + trackFragmentRun = trun(track, dataOffset); + return box(types.traf, + trackFragmentHeader, + trackFragmentDecodeTime, + trackFragmentRun); + } + + // video tracks should contain an independent and disposable samples + // box (sdtp) + // generate one and adjust offsets to match + sampleDependencyTable = sdtp(track); + trackFragmentRun = trun(track, + sampleDependencyTable.length + dataOffset); + return box(types.traf, + trackFragmentHeader, + trackFragmentDecodeTime, + trackFragmentRun, + sampleDependencyTable); +}; + +/** + * Generate a track box. + * @param track {object} a track definition + * @return {Uint8Array} the track box + */ +trak = function(track) { + track.duration = track.duration || 0xffffffff; + return box(types.trak, + tkhd(track), + mdia(track)); +}; + +trex = function(track) { + var result = new Uint8Array([ + 0x00, // version 0 + 0x00, 0x00, 0x00, // flags + (track.id & 0xFF000000) >> 24, + (track.id & 0xFF0000) >> 16, + (track.id & 0xFF00) >> 8, + (track.id & 0xFF), // track_ID + 0x00, 0x00, 0x00, 0x01, // default_sample_description_index + 0x00, 0x00, 0x00, 0x00, // default_sample_duration + 0x00, 0x00, 0x00, 0x00, // default_sample_size + 0x00, 0x01, 0x00, 0x01 // default_sample_flags + ]); + // the last two bytes of default_sample_flags is the sample + // degradation priority, a hint about the importance of this sample + // relative to others. Lower the degradation priority for all sample + // types other than video. + if (track.type !== 'video') { + result[result.length - 1] = 0x00; + } + + return box(types.trex, result); +}; + +(function() { + var audioTrun, videoTrun, trunHeader; + + // This method assumes all samples are uniform. That is, if a + // duration is present for the first sample, it will be present for + // all subsequent samples. + // see ISO/IEC 14496-12:2012, Section 8.8.8.1 + trunHeader = function(samples, offset) { + var durationPresent = 0, sizePresent = 0, + flagsPresent = 0, compositionTimeOffset = 0; + + // trun flag constants + if (samples.length) { + if (samples[0].duration !== undefined) { + durationPresent = 0x1; + } + if (samples[0].size !== undefined) { + sizePresent = 0x2; + } + if (samples[0].flags !== undefined) { + flagsPresent = 0x4; + } + if (samples[0].compositionTimeOffset !== undefined) { + compositionTimeOffset = 0x8; + } + } + + return [ + 0x00, // version 0 + 0x00, + durationPresent | sizePresent | flagsPresent | compositionTimeOffset, + 0x01, // flags + (samples.length & 0xFF000000) >>> 24, + (samples.length & 0xFF0000) >>> 16, + (samples.length & 0xFF00) >>> 8, + samples.length & 0xFF, // sample_count + (offset & 0xFF000000) >>> 24, + (offset & 0xFF0000) >>> 16, + (offset & 0xFF00) >>> 8, + offset & 0xFF // data_offset + ]; + }; + + videoTrun = function(track, offset) { + var bytes, samples, sample, i; + + samples = track.samples || []; + offset += 8 + 12 + (16 * samples.length); + + bytes = trunHeader(samples, offset); + + for (i = 0; i < samples.length; i++) { + sample = samples[i]; + bytes = bytes.concat([ + (sample.duration & 0xFF000000) >>> 24, + (sample.duration & 0xFF0000) >>> 16, + (sample.duration & 0xFF00) >>> 8, + sample.duration & 0xFF, // sample_duration + (sample.size & 0xFF000000) >>> 24, + (sample.size & 0xFF0000) >>> 16, + (sample.size & 0xFF00) >>> 8, + sample.size & 0xFF, // sample_size + (sample.flags.isLeading << 2) | sample.flags.dependsOn, + (sample.flags.isDependedOn << 6) | + (sample.flags.hasRedundancy << 4) | + (sample.flags.paddingValue << 1) | + sample.flags.isNonSyncSample, + sample.flags.degradationPriority & 0xF0 << 8, + sample.flags.degradationPriority & 0x0F, // sample_flags + (sample.compositionTimeOffset & 0xFF000000) >>> 24, + (sample.compositionTimeOffset & 0xFF0000) >>> 16, + (sample.compositionTimeOffset & 0xFF00) >>> 8, + sample.compositionTimeOffset & 0xFF // sample_composition_time_offset + ]); + } + return box(types.trun, new Uint8Array(bytes)); + }; + + audioTrun = function(track, offset) { + var bytes, samples, sample, i; + + samples = track.samples || []; + offset += 8 + 12 + (8 * samples.length); + + bytes = trunHeader(samples, offset); + + for (i = 0; i < samples.length; i++) { + sample = samples[i]; + bytes = bytes.concat([ + (sample.duration & 0xFF000000) >>> 24, + (sample.duration & 0xFF0000) >>> 16, + (sample.duration & 0xFF00) >>> 8, + sample.duration & 0xFF, // sample_duration + (sample.size & 0xFF000000) >>> 24, + (sample.size & 0xFF0000) >>> 16, + (sample.size & 0xFF00) >>> 8, + sample.size & 0xFF]); // sample_size + } + + return box(types.trun, new Uint8Array(bytes)); + }; + + trun = function(track, offset) { + if (track.type === 'audio') { + return audioTrun(track, offset); + } else { + return videoTrun(track, offset); + } + }; +})(); + +module.exports = { + ftyp: ftyp, + mdat: mdat, + moof: moof, + moov: moov, + initSegment: function(tracks) { + var + fileType = ftyp(), + movie = moov(tracks), + result; + + result = new Uint8Array(fileType.byteLength + movie.byteLength); + result.set(fileType); + result.set(movie, fileType.byteLength); + return result; + } +}; + +},{}],25:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2015 Brightcove + * All rights reserved. + * + * A stream-based mp2t to mp4 converter. This utility can be used to + * deliver mp4s to a SourceBuffer on platforms that support native + * Media Source Extensions. + */ +'use strict'; + +var Stream = require('../utils/stream.js'); +var mp4 = require('./mp4-generator.js'); +var m2ts = require('../m2ts/m2ts.js'); +var AdtsStream = require('../codecs/adts.js'); +var H264Stream = require('../codecs/h264').H264Stream; +var AacStream = require('../aac'); + +// object types +var VideoSegmentStream, AudioSegmentStream, Transmuxer, CoalesceStream; + +// Helper functions +var + defaultSample, + collectDtsInfo, + clearDtsInfo, + calculateTrackBaseMediaDecodeTime, + arrayEquals, + sumFrameByteLengths; + +/** + * Default sample object + * see ISO/IEC 14496-12:2012, section 8.6.4.3 + */ +defaultSample = { + size: 0, + flags: { + isLeading: 0, + dependsOn: 1, + isDependedOn: 0, + hasRedundancy: 0, + degradationPriority: 0 + } +}; + +/** + * Compare two arrays (even typed) for same-ness + */ +arrayEquals = function(a, b) { + var + i; + + if (a.length !== b.length) { + return false; + } + + // compare the value of each element in the array + for (i = 0; i < a.length; i++) { + if (a[i] !== b[i]) { + return false; + } + } + + return true; +}; + +/** + * Sum the `byteLength` properties of the data in each AAC frame + */ +sumFrameByteLengths = function(array) { + var + i, + currentObj, + sum = 0; + + // sum the byteLength's all each nal unit in the frame + for (i = 0; i < array.length; i++) { + currentObj = array[i]; + sum += currentObj.data.byteLength; + } + + return sum; +}; + +/** + * Constructs a single-track, ISO BMFF media segment from AAC data + * events. The output of this stream can be fed to a SourceBuffer + * configured with a suitable initialization segment. + */ +AudioSegmentStream = function(track) { + var + adtsFrames = [], + sequenceNumber = 0, + earliestAllowedDts = 0; + + AudioSegmentStream.prototype.init.call(this); + + this.push = function(data) { + collectDtsInfo(track, data); + + if (track) { + track.audioobjecttype = data.audioobjecttype; + track.channelcount = data.channelcount; + track.samplerate = data.samplerate; + track.samplingfrequencyindex = data.samplingfrequencyindex; + track.samplesize = data.samplesize; + } + + // buffer audio data until end() is called + adtsFrames.push(data); + }; + + this.setEarliestDts = function(earliestDts) { + earliestAllowedDts = earliestDts - track.timelineStartInfo.baseMediaDecodeTime; + }; + + this.flush = function() { + var + frames, + moof, + mdat, + boxes; + + // return early if no audio data has been observed + if (adtsFrames.length === 0) { + this.trigger('done'); + return; + } + + frames = this.trimAdtsFramesByEarliestDts_(adtsFrames); + + // we have to build the index from byte locations to + // samples (that is, adts frames) in the audio data + track.samples = this.generateSampleTable_(frames); + + // concatenate the audio data to constuct the mdat + mdat = mp4.mdat(this.concatenateFrameData_(frames)); + + adtsFrames = []; + + calculateTrackBaseMediaDecodeTime(track); + moof = mp4.moof(sequenceNumber, [track]); + boxes = new Uint8Array(moof.byteLength + mdat.byteLength); + + // bump the sequence number for next time + sequenceNumber++; + + boxes.set(moof); + boxes.set(mdat, moof.byteLength); + + clearDtsInfo(track); + + this.trigger('data', {track: track, boxes: boxes}); + this.trigger('done'); + }; + + // If the audio segment extends before the earliest allowed dts + // value, remove AAC frames until starts at or after the earliest + // allowed DTS so that we don't end up with a negative baseMedia- + // DecodeTime for the audio track + this.trimAdtsFramesByEarliestDts_ = function(adtsFrames) { + if (track.minSegmentDts >= earliestAllowedDts) { + return adtsFrames; + } + + // We will need to recalculate the earliest segment Dts + track.minSegmentDts = Infinity; + + return adtsFrames.filter(function(currentFrame) { + // If this is an allowed frame, keep it and record it's Dts + if (currentFrame.dts >= earliestAllowedDts) { + track.minSegmentDts = Math.min(track.minSegmentDts, currentFrame.dts); + track.minSegmentPts = track.minSegmentDts; + return true; + } + // Otherwise, discard it + return false; + }); + }; + + // generate the track's raw mdat data from an array of frames + this.generateSampleTable_ = function(frames) { + var + i, + currentFrame, + samples = []; + + for (i = 0; i < frames.length; i++) { + currentFrame = frames[i]; + samples.push({ + size: currentFrame.data.byteLength, + duration: 1024 // For AAC audio, all samples contain 1024 samples + }); + } + return samples; + }; + + // generate the track's sample table from an array of frames + this.concatenateFrameData_ = function(frames) { + var + i, + currentFrame, + dataOffset = 0, + data = new Uint8Array(sumFrameByteLengths(frames)); + + for (i = 0; i < frames.length; i++) { + currentFrame = frames[i]; + + data.set(currentFrame.data, dataOffset); + dataOffset += currentFrame.data.byteLength; + } + return data; + }; +}; + +AudioSegmentStream.prototype = new Stream(); + +/** + * Constructs a single-track, ISO BMFF media segment from H264 data + * events. The output of this stream can be fed to a SourceBuffer + * configured with a suitable initialization segment. + * @param track {object} track metadata configuration + */ +VideoSegmentStream = function(track) { + var + sequenceNumber = 0, + nalUnits = [], + config, + pps; + + VideoSegmentStream.prototype.init.call(this); + + delete track.minPTS; + + this.gopCache_ = []; + + this.push = function(nalUnit) { + collectDtsInfo(track, nalUnit); + + // record the track config + if (nalUnit.nalUnitType === 'seq_parameter_set_rbsp' && + !config) { + config = nalUnit.config; + + track.width = config.width; + track.height = config.height; + track.sps = [nalUnit.data]; + track.profileIdc = config.profileIdc; + track.levelIdc = config.levelIdc; + track.profileCompatibility = config.profileCompatibility; + } + + if (nalUnit.nalUnitType === 'pic_parameter_set_rbsp' && + !pps) { + pps = nalUnit.data; + track.pps = [nalUnit.data]; + } + + // buffer video until flush() is called + nalUnits.push(nalUnit); + }; + + this.flush = function() { + var + frames, + gopForFusion, + gops, + moof, + mdat, + boxes; + + // Throw away nalUnits at the start of the byte stream until + // we find the first AUD + while (nalUnits.length) { + if (nalUnits[0].nalUnitType === 'access_unit_delimiter_rbsp') { + break; + } + nalUnits.shift(); + } + + // Return early if no video data has been observed + if (nalUnits.length === 0) { + this.resetStream_(); + this.trigger('done'); + return; + } + + // Organize the raw nal-units into arrays that represent + // higher-level constructs such as frames and gops + // (group-of-pictures) + frames = this.groupNalsIntoFrames_(nalUnits); + gops = this.groupFramesIntoGops_(frames); + + // If the first frame of this fragment is not a keyframe we have + // a problem since MSE (on Chrome) requires a leading keyframe. + // + // We have two approaches to repairing this situation: + // 1) GOP-FUSION: + // This is where we keep track of the GOPS (group-of-pictures) + // from previous fragments and attempt to find one that we can + // prepend to the current fragment in order to create a valid + // fragment. + // 2) KEYFRAME-PULLING: + // Here we search for the first keyframe in the fragment and + // throw away all the frames between the start of the fragment + // and that keyframe. We then extend the duration and pull the + // PTS of the keyframe forward so that it covers the time range + // of the frames that were disposed of. + // + // #1 is far prefereable over #2 which can cause "stuttering" but + // requires more things to be just right. + if (!gops[0][0].keyFrame) { + // Search for a gop for fusion from our gopCache + gopForFusion = this.getGopForFusion_(nalUnits[0], track); + + if (gopForFusion) { + gops.unshift(gopForFusion); + // Adjust Gops' metadata to account for the inclusion of the + // new gop at the beginning + gops.byteLength += gopForFusion.byteLength; + gops.nalCount += gopForFusion.nalCount; + gops.pts = gopForFusion.pts; + gops.dts = gopForFusion.dts; + gops.duration += gopForFusion.duration; + } else { + // If we didn't find a candidate gop fall back to keyrame-pulling + gops = this.extendFirstKeyFrame_(gops); + } + } + collectDtsInfo(track, gops); + + // First, we have to build the index from byte locations to + // samples (that is, frames) in the video data + track.samples = this.generateSampleTable_(gops); + + // Concatenate the video data and construct the mdat + mdat = mp4.mdat(this.concatenateNalData_(gops)); + + // save all the nals in the last GOP into the gop cache + this.gopCache_.unshift({ + gop: gops.pop(), + pps: track.pps, + sps: track.sps + }); + + // Keep a maximum of 6 GOPs in the cache + this.gopCache_.length = Math.min(6, this.gopCache_.length); + + // Clear nalUnits + nalUnits = []; + + calculateTrackBaseMediaDecodeTime(track); + + this.trigger('timelineStartInfo', track.timelineStartInfo); + + moof = mp4.moof(sequenceNumber, [track]); + + // it would be great to allocate this array up front instead of + // throwing away hundreds of media segment fragments + boxes = new Uint8Array(moof.byteLength + mdat.byteLength); + + // Bump the sequence number for next time + sequenceNumber++; + + boxes.set(moof); + boxes.set(mdat, moof.byteLength); + + this.trigger('data', {track: track, boxes: boxes}); + + this.resetStream_(); + + // Continue with the flush process now + this.trigger('done'); + }; + + this.resetStream_ = function() { + clearDtsInfo(track); + + // reset config and pps because they may differ across segments + // for instance, when we are rendition switching + config = undefined; + pps = undefined; + }; + + // Search for a candidate Gop for gop-fusion from the gop cache and + // return it or return null if no good candidate was found + this.getGopForFusion_ = function (nalUnit) { + var + halfSecond = 45000, // Half-a-second in a 90khz clock + allowableOverlap = 10000, // About 3 frames @ 30fps + nearestDistance = Infinity, + dtsDistance, + nearestGopObj, + currentGop, + currentGopObj, + i; + + // Search for the GOP nearest to the beginning of this nal unit + for (i = 0; i < this.gopCache_.length; i++) { + currentGopObj = this.gopCache_[i]; + currentGop = currentGopObj.gop; + + // Reject Gops with different SPS or PPS + if (!(track.pps && arrayEquals(track.pps[0], currentGopObj.pps[0])) || + !(track.sps && arrayEquals(track.sps[0], currentGopObj.sps[0]))) { + continue; + } + + // Reject Gops that would require a negative baseMediaDecodeTime + if (currentGop.dts < track.timelineStartInfo.dts) { + continue; + } + + // The distance between the end of the gop and the start of the nalUnit + dtsDistance = (nalUnit.dts - currentGop.dts) - currentGop.duration; + + // Only consider GOPS that start before the nal unit and end within + // a half-second of the nal unit + if (dtsDistance >= -allowableOverlap && + dtsDistance <= halfSecond) { + + // Always use the closest GOP we found if there is more than + // one candidate + if (!nearestGopObj || + nearestDistance > dtsDistance) { + nearestGopObj = currentGopObj; + nearestDistance = dtsDistance; + } + } + } + + if (nearestGopObj) { + return nearestGopObj.gop; + } + return null; + }; + + this.extendFirstKeyFrame_ = function(gops) { + var + h, i, + currentGop, + newGops; + + if (!gops[0][0].keyFrame) { + // Remove the first GOP + currentGop = gops.shift(); + + gops.byteLength -= currentGop.byteLength; + gops.nalCount -= currentGop.nalCount; + + // Extend the first frame of what is now the + // first gop to cover the time period of the + // frames we just removed + gops[0][0].dts = currentGop.dts; + gops[0][0].pts = currentGop.pts; + gops[0][0].duration += currentGop.duration; + } + + return gops; + }; + + // Convert an array of nal units into an array of frames with each frame being + // composed of the nal units that make up that frame + // Also keep track of cummulative data about the frame from the nal units such + // as the frame duration, starting pts, etc. + this.groupNalsIntoFrames_ = function(nalUnits) { + var + i, + currentNal, + startPts, + startDts, + currentFrame = [], + frames = []; + + currentFrame.byteLength = 0; + + for (i = 0; i < nalUnits.length; i++) { + currentNal = nalUnits[i]; + + // Split on 'aud'-type nal units + if (currentNal.nalUnitType === 'access_unit_delimiter_rbsp') { + // Since the very first nal unit is expected to be an AUD + // only push to the frames array when currentFrame is not empty + if (currentFrame.length) { + currentFrame.duration = currentNal.dts - currentFrame.dts; + frames.push(currentFrame); + } + currentFrame = [currentNal]; + currentFrame.byteLength = currentNal.data.byteLength; + currentFrame.pts = currentNal.pts; + currentFrame.dts = currentNal.dts; + } else { + // Specifically flag key frames for ease of use later + if (currentNal.nalUnitType === 'slice_layer_without_partitioning_rbsp_idr') { + currentFrame.keyFrame = true; + } + currentFrame.duration = currentNal.dts - currentFrame.dts; + currentFrame.byteLength += currentNal.data.byteLength; + currentFrame.push(currentNal); + } + } + + // For the last frame, use the duration of the previous frame if we + // have nothing better to go on + if (frames.length && + !currentFrame.duration || + currentFrame.duration <= 0) { + currentFrame.duration = frames[frames.length - 1].duration; + } + + // Push the final frame + frames.push(currentFrame); + return frames; + }; + + // Convert an array of frames into an array of Gop with each Gop being composed + // of the frames that make up that Gop + // Also keep track of cummulative data about the Gop from the frames such as the + // Gop duration, starting pts, etc. + this.groupFramesIntoGops_ = function(frames) { + var + i, + currentFrame, + currentGop = [], + gops = []; + + // We must pre-set some of the values on the Gop since we + // keep running totals of these values + currentGop.byteLength = 0; + currentGop.nalCount = 0; + currentGop.duration = 0; + currentGop.pts = frames[0].pts; + currentGop.dts = frames[0].dts; + + // store some metadata about all the Gops + gops.byteLength = 0; + gops.nalCount = 0; + gops.duration = 0; + gops.pts = frames[0].pts; + gops.dts = frames[0].dts; + + for (i = 0; i < frames.length; i++) { + currentFrame = frames[i]; + + if (currentFrame.keyFrame) { + // Since the very first frame is expected to be an keyframe + // only push to the gops array when currentGop is not empty + if (currentGop.length) { + gops.push(currentGop); + gops.byteLength += currentGop.byteLength; + gops.nalCount += currentGop.nalCount; + gops.duration += currentGop.duration; + } + + currentGop = [currentFrame]; + currentGop.nalCount = currentFrame.length; + currentGop.byteLength = currentFrame.byteLength; + currentGop.pts = currentFrame.pts; + currentGop.dts = currentFrame.dts; + currentGop.duration = currentFrame.duration; + } else { + currentGop.duration += currentFrame.duration; + currentGop.nalCount += currentFrame.length; + currentGop.byteLength += currentFrame.byteLength; + currentGop.push(currentFrame); + } + } + + if (gops.length && currentGop.duration <= 0) { + currentGop.duration = gops[gops.length - 1].duration; + } + gops.byteLength += currentGop.byteLength; + gops.nalCount += currentGop.nalCount; + gops.duration += currentGop.duration; + + // push the final Gop + gops.push(currentGop); + return gops; + }; + + // generate the track's sample table from an array of gops + this.generateSampleTable_ = function(gops, baseDataOffset) { + var + h, i, + sample, + currentGop, + currentFrame, + currentSample, + dataOffset = baseDataOffset || 0, + samples = []; + + for (h = 0; h < gops.length; h++) { + currentGop = gops[h]; + + for (i = 0; i < currentGop.length; i++) { + currentFrame = currentGop[i]; + + sample = Object.create(defaultSample); + + sample.dataOffset = dataOffset; + sample.compositionTimeOffset = currentFrame.pts - currentFrame.dts; + sample.duration = currentFrame.duration; + sample.size = 4 * currentFrame.length; // Space for nal unit size + sample.size += currentFrame.byteLength; + + if (currentFrame.keyFrame) { + sample.flags.dependsOn = 2; + } + + dataOffset += sample.size; + + samples.push(sample); + } + } + return samples; + }; + + // generate the track's raw mdat data from an array of gops + this.concatenateNalData_ = function (gops) { + var + h, i, j, + currentGop, + currentFrame, + currentNal, + dataOffset = 0, + nalsByteLength = gops.byteLength, + numberOfNals = gops.nalCount, + totalByteLength = nalsByteLength + 4 * numberOfNals, + data = new Uint8Array(totalByteLength), + view = new DataView(data.buffer); + + // For each Gop.. + for (h = 0; h < gops.length; h++) { + currentGop = gops[h]; + + // For each Frame.. + for (i = 0; i < currentGop.length; i++) { + currentFrame = currentGop[i]; + + // For each NAL.. + for (j = 0; j < currentFrame.length; j++) { + currentNal = currentFrame[j]; + + view.setUint32(dataOffset, currentNal.data.byteLength); + dataOffset += 4; + data.set(currentNal.data, dataOffset); + dataOffset += currentNal.data.byteLength; + } + } + } + return data; + }; +}; + +VideoSegmentStream.prototype = new Stream(); + +/** + * Store information about the start and end of the track and the + * duration for each frame/sample we process in order to calculate + * the baseMediaDecodeTime + */ +collectDtsInfo = function (track, data) { + if (typeof data.pts === 'number') { + if (track.timelineStartInfo.pts === undefined) { + track.timelineStartInfo.pts = data.pts; + } + + if (track.minSegmentPts === undefined) { + track.minSegmentPts = data.pts; + } else { + track.minSegmentPts = Math.min(track.minSegmentPts, data.pts); + } + + if (track.maxSegmentPts === undefined) { + track.maxSegmentPts = data.pts; + } else { + track.maxSegmentPts = Math.max(track.maxSegmentPts, data.pts); + } + } + + if (typeof data.dts === 'number') { + if (track.timelineStartInfo.dts === undefined) { + track.timelineStartInfo.dts = data.dts; + } + + if (track.minSegmentDts === undefined) { + track.minSegmentDts = data.dts; + } else { + track.minSegmentDts = Math.min(track.minSegmentDts, data.dts); + } + + if (track.maxSegmentDts === undefined) { + track.maxSegmentDts = data.dts; + } else { + track.maxSegmentDts = Math.max(track.maxSegmentDts, data.dts); + } + } +}; + +/** + * Clear values used to calculate the baseMediaDecodeTime between + * tracks + */ +clearDtsInfo = function (track) { + delete track.minSegmentDts; + delete track.maxSegmentDts; + delete track.minSegmentPts; + delete track.maxSegmentPts; +}; + +/** + * Calculate the track's baseMediaDecodeTime based on the earliest + * DTS the transmuxer has ever seen and the minimum DTS for the + * current track + */ +calculateTrackBaseMediaDecodeTime = function (track) { + var + oneSecondInPTS = 90000, // 90kHz clock + scale, + // Calculate the distance, in time, that this segment starts from the start + // of the timeline (earliest time seen since the transmuxer initialized) + timeSinceStartOfTimeline = track.minSegmentDts - track.timelineStartInfo.dts, + // Calculate the first sample's effective compositionTimeOffset + firstSampleCompositionOffset = track.minSegmentPts - track.minSegmentDts; + + // track.timelineStartInfo.baseMediaDecodeTime is the location, in time, where + // we want the start of the first segment to be placed + track.baseMediaDecodeTime = track.timelineStartInfo.baseMediaDecodeTime; + + // Add to that the distance this segment is from the very first + track.baseMediaDecodeTime += timeSinceStartOfTimeline; + + // Subtract this segment's "compositionTimeOffset" so that the first frame of + // this segment is displayed exactly at the `baseMediaDecodeTime` or at the + // end of the previous segment + track.baseMediaDecodeTime -= firstSampleCompositionOffset; + + // baseMediaDecodeTime must not become negative + track.baseMediaDecodeTime = Math.max(0, track.baseMediaDecodeTime); + + if (track.type === 'audio') { + // Audio has a different clock equal to the sampling_rate so we need to + // scale the PTS values into the clock rate of the track + scale = track.samplerate / oneSecondInPTS; + track.baseMediaDecodeTime *= scale; + track.baseMediaDecodeTime = Math.floor(track.baseMediaDecodeTime); + } +}; + +/** + * A Stream that can combine multiple streams (ie. audio & video) + * into a single output segment for MSE. Also supports audio-only + * and video-only streams. + */ +CoalesceStream = function(options) { + // Number of Tracks per output segment + // If greater than 1, we combine multiple + // tracks into a single segment + this.numberOfTracks = 0; + this.metadataStream = options.metadataStream; + + if (typeof options.remux !== 'undefined') { + this.remuxTracks = !!options.remux; + } else { + this.remuxTracks = true; + } + + this.pendingTracks = []; + this.videoTrack = null; + this.pendingBoxes = []; + this.pendingCaptions = []; + this.pendingMetadata = []; + this.pendingBytes = 0; + this.emittedTracks = 0; + + CoalesceStream.prototype.init.call(this); + + // Take output from multiple + this.push = function(output) { + // buffer incoming captions until the associated video segment + // finishes + if (output.text) { + return this.pendingCaptions.push(output); + } + // buffer incoming id3 tags until the final flush + if (output.frames) { + return this.pendingMetadata.push(output); + } + + // Add this track to the list of pending tracks and store + // important information required for the construction of + // the final segment + this.pendingTracks.push(output.track); + this.pendingBoxes.push(output.boxes); + this.pendingBytes += output.boxes.byteLength; + + if (output.track.type === 'video') { + this.videoTrack = output.track; + } + if (output.track.type === 'audio') { + this.audioTrack = output.track; + } + }; +}; + +CoalesceStream.prototype = new Stream(); +CoalesceStream.prototype.flush = function() { + var + offset = 0, + event = { + captions: [], + metadata: [] + }, + caption, + id3, + initSegment, + timelineStartPts = 0, + i; + + // Return until we have enough tracks from the pipeline to remux + if (this.pendingTracks.length === 0 || + (this.remuxTracks && this.pendingTracks.length < this.numberOfTracks)) { + return; + } + + if (this.videoTrack) { + timelineStartPts = this.videoTrack.timelineStartInfo.pts; + } else if (this.audioTrack) { + timelineStartPts = this.audioTrack.timelineStartInfo.pts; + } + + if (this.pendingTracks.length === 1) { + event.type = this.pendingTracks[0].type; + } else { + event.type = 'combined'; + } + this.emittedTracks += this.pendingTracks.length; + + initSegment = mp4.initSegment(this.pendingTracks); + + // Create a new typed array large enough to hold the init + // segment and all tracks + event.data = new Uint8Array(initSegment.byteLength + + this.pendingBytes); + + // Create an init segment containing a moov + // and track definitions + event.data.set(initSegment); + offset += initSegment.byteLength; + + // Append each moof+mdat (one per track) after the init segment + for (i = 0; i < this.pendingBoxes.length; i++) { + event.data.set(this.pendingBoxes[i], offset); + offset += this.pendingBoxes[i].byteLength; + } + + // Translate caption PTS times into second offsets into the + // video timeline for the segment + for (i = 0; i < this.pendingCaptions.length; i++) { + caption = this.pendingCaptions[i]; + caption.startTime = (caption.startPts - timelineStartPts); + caption.startTime /= 90e3; + caption.endTime = (caption.endPts - timelineStartPts); + caption.endTime /= 90e3; + event.captions.push(caption); + } + + // Translate ID3 frame PTS times into second offsets into the + // video timeline for the segment + for (i = 0; i < this.pendingMetadata.length; i++) { + id3 = this.pendingMetadata[i]; + id3.cueTime = (id3.pts - timelineStartPts); + id3.cueTime /= 90e3; + event.metadata.push(id3); + } + // We add this to every single emitted segment even though we only need + // it for the first + event.metadata.dispatchType = this.metadataStream.dispatchType; + + // Reset stream state + this.pendingTracks.length = 0; + this.videoTrack = null; + this.pendingBoxes.length = 0; + this.pendingCaptions.length = 0; + this.pendingBytes = 0; + this.pendingMetadata.length = 0; + + // Emit the built segment + this.trigger('data', event); + + // Only emit `done` if all tracks have been flushed and emitted + if (this.emittedTracks >= this.numberOfTracks) { + this.trigger('done'); + this.emittedTracks = 0; + } +}; +/** + * A Stream that expects MP2T binary data as input and produces + * corresponding media segments, suitable for use with Media Source + * Extension (MSE) implementations that support the ISO BMFF byte + * stream format, like Chrome. + */ +Transmuxer = function(options) { + var + self = this, + videoTrack, + audioTrack, + packetStream, parseStream, elementaryStream, + adtsStream, h264Stream,aacStream, + videoSegmentStream, audioSegmentStream, captionStream, + coalesceStream, + headOfPipeline; + + this.setupAacPipeline = function() { + this.metadataStream = new m2ts.MetadataStream(); + options.metadataStream = this.metadataStream; + + // set up the parsing pipeline + aacStream = new AacStream(); + adtsStream = new AdtsStream(); + coalesceStream = new CoalesceStream(options); + headOfPipeline = aacStream; + + aacStream.pipe(adtsStream); + aacStream.pipe(this.metadataStream); + this.metadataStream.pipe(coalesceStream); + + this.metadataStream.on('timestamp', function(frame) { + aacStream.setTimestamp(frame.timestamp); + }); + this.addAacListener(); + }; + + + this.addAacListener = function() { + aacStream.on('data', function(data) { + var i; + + if (data.type === 'timed-metadata') { + var track = { + timelineStartInfo: { + baseMediaDecodeTime: 0 }, + codec: 'adts', + type: 'audio' }; + + if (track && !audioSegmentStream) { + // hook up the audio segment stream to the first track with aac data + coalesceStream.numberOfTracks++; + audioSegmentStream = new AudioSegmentStream(track); + // Set up the final part of the audio pipeline + adtsStream + .pipe(audioSegmentStream) + .pipe(coalesceStream); + } + } + }); + }; + + this.setupTsPipeline = function() { + this.metadataStream = new m2ts.MetadataStream(); + + options.metadataStream = this.metadataStream; + + // set up the parsing pipeline + packetStream = new m2ts.TransportPacketStream(); + parseStream = new m2ts.TransportParseStream(); + elementaryStream = new m2ts.ElementaryStream(); + adtsStream = new AdtsStream(); + h264Stream = new H264Stream(); + captionStream = new m2ts.CaptionStream(); + coalesceStream = new CoalesceStream(options); + headOfPipeline = packetStream; + + // disassemble MPEG2-TS packets into elementary streams + packetStream + .pipe(parseStream) + .pipe(elementaryStream); + + // !!THIS ORDER IS IMPORTANT!! + // demux the streams + elementaryStream + .pipe(h264Stream); + elementaryStream + .pipe(adtsStream); + + elementaryStream + .pipe(this.metadataStream) + .pipe(coalesceStream); + + // Hook up CEA-608/708 caption stream + h264Stream.pipe(captionStream) + .pipe(coalesceStream); + this.addTsListener(); + }; + + this.addTsListener = function() { + + elementaryStream.on('data', function(data) { + var i; + + if (data.type === 'metadata') { + i = data.tracks.length; + + // scan the tracks listed in the metadata + while (i--) { + if (!videoTrack && data.tracks[i].type === 'video') { + videoTrack = data.tracks[i]; + videoTrack.timelineStartInfo.baseMediaDecodeTime = self.baseMediaDecodeTime; + } else if (!audioTrack && data.tracks[i].type === 'audio') { + audioTrack = data.tracks[i]; + audioTrack.timelineStartInfo.baseMediaDecodeTime = self.baseMediaDecodeTime; + } + } + + // hook up the video segment stream to the first track with h264 data + if (videoTrack && !videoSegmentStream) { + coalesceStream.numberOfTracks++; + videoSegmentStream = new VideoSegmentStream(videoTrack); + + videoSegmentStream.on('timelineStartInfo', function(timelineStartInfo){ + // When video emits timelineStartInfo data after a flush, we forward that + // info to the AudioSegmentStream, if it exists, because video timeline + // data takes precedence. + if (audioTrack) { + audioTrack.timelineStartInfo = timelineStartInfo; + // On the first segment we trim AAC frames that exist before the + // very earliest DTS we have seen in video because Chrome will + // interpret any video track with a baseMediaDecodeTime that is + // non-zero as a gap. + audioSegmentStream.setEarliestDts(timelineStartInfo.dts); + } + }); + + // Set up the final part of the video pipeline + h264Stream + .pipe(videoSegmentStream) + .pipe(coalesceStream); + } + + if (audioTrack && !audioSegmentStream) { + // hook up the audio segment stream to the first track with aac data + coalesceStream.numberOfTracks++; + audioSegmentStream = new AudioSegmentStream(audioTrack); + + // Set up the final part of the audio pipeline + adtsStream + .pipe(audioSegmentStream) + .pipe(coalesceStream); + } + } + }); + }; + Transmuxer.prototype.init.call(this); + options = options || {}; + + this.baseMediaDecodeTime = options.baseMediaDecodeTime || 0; + + // expose the metadata stream + if (options.aacfile === undefined) { + this.setupTsPipeline(); + } else { + this.setupAacPipeline(); + } + + // hook up the segment streams once track metadata is delivered + this.setBaseMediaDecodeTime = function (baseMediaDecodeTime) { + this.baseMediaDecodeTime = baseMediaDecodeTime; + if (audioTrack) { + audioTrack.timelineStartInfo.dts = undefined; + audioTrack.timelineStartInfo.pts = undefined; + clearDtsInfo(audioTrack); + audioTrack.timelineStartInfo.baseMediaDecodeTime = baseMediaDecodeTime; + } + if (videoTrack) { + videoSegmentStream.gopCache_ = []; + videoTrack.timelineStartInfo.dts = undefined; + videoTrack.timelineStartInfo.pts = undefined; + clearDtsInfo(videoTrack); + videoTrack.timelineStartInfo.baseMediaDecodeTime = baseMediaDecodeTime; + } + }; + + // feed incoming data to the front of the parsing pipeline + this.push = function(data) { + headOfPipeline.push(data); + }; + + // flush any buffered data + this.flush = function() { + // Start at the top of the pipeline and flush all pending work + headOfPipeline.flush(); + }; + + // Re-emit any data coming from the coalesce stream to the outside world + coalesceStream.on('data', function (data) { + self.trigger('data', data); + }); + // Let the consumer know we have finished flushing the entire pipeline + coalesceStream.on('done', function () { + self.trigger('done'); + }); +}; +Transmuxer.prototype = new Stream(); + +module.exports = { + Transmuxer: Transmuxer, + VideoSegmentStream: VideoSegmentStream, + AudioSegmentStream: AudioSegmentStream, +}; + +},{"../aac":10,"../codecs/adts.js":11,"../codecs/h264":12,"../m2ts/m2ts.js":20,"../utils/stream.js":29,"./mp4-generator.js":24}],26:[function(require,module,exports){ +'use strict'; + +var + tagTypes = { + 0x08: 'audio', + 0x09: 'video', + 0x12: 'metadata' + }, + hex = function (val) { + return '0x' + ('00' + val.toString(16)).slice(-2).toUpperCase(); + }, + hexStringList = function (data) { + var arr = [], i; + /* jshint -W086 */ + while(data.byteLength > 0) { + i = 0; + switch(data.byteLength) { + default: + arr.push(hex(data[i++])); + case 7: + arr.push(hex(data[i++])); + case 6: + arr.push(hex(data[i++])); + case 5: + arr.push(hex(data[i++])); + case 4: + arr.push(hex(data[i++])); + case 3: + arr.push(hex(data[i++])); + case 2: + arr.push(hex(data[i++])); + case 1: + arr.push(hex(data[i++])); + } + data = data.subarray(i); + } + /* jshint +W086 */ + return arr.join(' '); + }, + parseAVCTag = function (tag, obj) { + var + avcPacketTypes = [ + 'AVC Sequence Header', + 'AVC NALU', + 'AVC End-of-Sequence' + ], + nalUnitTypes = [ + 'unspecified', + 'slice_layer_without_partitioning', + 'slice_data_partition_a_layer', + 'slice_data_partition_b_layer', + 'slice_data_partition_c_layer', + 'slice_layer_without_partitioning_idr', + 'sei', + 'seq_parameter_set', + 'pic_parameter_set', + 'access_unit_delimiter', + 'end_of_seq', + 'end_of_stream', + 'filler', + 'seq_parameter_set_ext', + 'prefix_nal_unit', + 'subset_seq_parameter_set', + 'reserved', + 'reserved', + 'reserved' + ], + compositionTime = (tag[1] & parseInt('01111111', 2) << 16) | (tag[2] << 8) | tag[3]; + + obj = obj || {}; + + obj.avcPacketType = avcPacketTypes[tag[0]]; + obj.CompositionTime = (tag[1] & parseInt('10000000', 2)) ? -compositionTime : compositionTime; + + if (tag[0] === 1) { + obj.nalUnitTypeRaw = hexStringList(tag.subarray(4, 100)); + } else { + obj.data = hexStringList(tag.subarray(4)); + } + + return obj; + }, + parseVideoTag = function (tag, obj) { + var + frameTypes = [ + 'Unknown', + 'Keyframe (for AVC, a seekable frame)', + 'Inter frame (for AVC, a nonseekable frame)', + 'Disposable inter frame (H.263 only)', + 'Generated keyframe (reserved for server use only)', + 'Video info/command frame' + ], + codecIDs = [ + 'JPEG (currently unused)', + 'Sorenson H.263', + 'Screen video', + 'On2 VP6', + 'On2 VP6 with alpha channel', + 'Screen video version 2', + 'AVC' + ], + codecID = tag[0] & parseInt('00001111', 2); + + obj = obj || {}; + + obj.frameType = frameTypes[(tag[0] & parseInt('11110000', 2)) >>> 4]; + obj.codecID = codecID; + + if (codecID === 7) { + return parseAVCTag(tag.subarray(1), obj); + } + return obj; + }, + parseAACTag = function (tag, obj) { + var packetTypes = [ + 'AAC Sequence Header', + 'AAC Raw' + ]; + + obj = obj || {}; + + obj.aacPacketType = packetTypes[tag[0]]; + obj.data = hexStringList(tag.subarray(1)); + + return obj; + }, + parseAudioTag = function (tag, obj) { + var + formatTable = [ + 'Linear PCM, platform endian', + 'ADPCM', + 'MP3', + 'Linear PCM, little endian', + 'Nellymoser 16-kHz mono', + 'Nellymoser 8-kHz mono', + 'Nellymoser', + 'G.711 A-law logarithmic PCM', + 'G.711 mu-law logarithmic PCM', + 'reserved', + 'AAC', + 'Speex', + 'MP3 8-Khz', + 'Device-specific sound' + ], + samplingRateTable = [ + '5.5-kHz', + '11-kHz', + '22-kHz', + '44-kHz' + ], + soundFormat = (tag[0] & parseInt('11110000', 2)) >>> 4; + + obj = obj || {}; + + obj.soundFormat = formatTable[soundFormat]; + obj.soundRate = samplingRateTable[(tag[0] & parseInt('00001100', 2)) >>> 2]; + obj.soundSize = ((tag[0] & parseInt('00000010', 2)) >>> 1) ? '16-bit' : '8-bit'; + obj.soundType = (tag[0] & parseInt('00000001', 2)) ? 'Stereo' : 'Mono'; + + if (soundFormat === 10) { + return parseAACTag(tag.subarray(1), obj); + } + return obj; + }, + parseGenericTag = function (tag) { + return { + tagType: tagTypes[tag[0]], + dataSize: (tag[1] << 16) | (tag[2] << 8) | tag[3], + timestamp: (tag[7] << 24) | (tag[4] << 16) | (tag[5] << 8) | tag[6], + streamID: (tag[8] << 16) | (tag[9] << 8) | tag[10] + }; + }, + inspectFlvTag = function (tag) { + var header = parseGenericTag(tag); + switch (tag[0]) { + case 0x08: + parseAudioTag(tag.subarray(11), header); + break; + case 0x09: + parseVideoTag(tag.subarray(11), header); + break; + case 0x12: + } + return header; + }, + inspectFlv = function (bytes) { + var i = 9, // header + dataSize, + parsedResults = [], + tag; + + // traverse the tags + i += 4; // skip previous tag size + while (i < bytes.byteLength) { + dataSize = bytes[i + 1] << 16; + dataSize |= bytes[i + 2] << 8; + dataSize |= bytes[i + 3]; + dataSize += 11; + + tag = bytes.subarray(i, i + dataSize); + parsedResults.push(inspectFlvTag(tag)); + i += dataSize + 4; + } + return parsedResults; + }, + textifyFlv = function (flvTagArray) { + return JSON.stringify(flvTagArray, null, 2); + }; + +module.exports = { + inspectTag: inspectFlvTag, + inspect: inspectFlv, + textify: textifyFlv +}; + +},{}],27:[function(require,module,exports){ +(function (global){ +'use strict'; + +var + inspectMp4, + textifyMp4, + /** + * Returns the string representation of an ASCII encoded four byte buffer. + * @param buffer {Uint8Array} a four-byte buffer to translate + * @return {string} the corresponding string + */ + parseType = function(buffer) { + var result = ''; + result += String.fromCharCode(buffer[0]); + result += String.fromCharCode(buffer[1]); + result += String.fromCharCode(buffer[2]); + result += String.fromCharCode(buffer[3]); + return result; + }, + parseMp4Date = function(seconds) { + return new Date(seconds * 1000 - 2082844800000); + }, + parseSampleFlags = function(flags) { + return { + isLeading: (flags[0] & 0x0c) >>> 2, + dependsOn: flags[0] & 0x03, + isDependedOn: (flags[1] & 0xc0) >>> 6, + hasRedundancy: (flags[1] & 0x30) >>> 4, + paddingValue: (flags[1] & 0x0e) >>> 1, + isNonSyncSample: flags[1] & 0x01, + degradationPriority: (flags[2] << 8) | flags[3] + }; + }, + nalParse = function(avcStream) { + var + avcView = new DataView(avcStream.buffer, avcStream.byteOffset, avcStream.byteLength), + result = [], + i, + length; + for (i = 0; i + 4 < avcStream.length; i += length) { + length = avcView.getUint32(i); + i += 4; + + // bail if this doesn't appear to be an H264 stream + if (length <= 0) { + return; + } + + switch(avcStream[i] & 0x1F) { + case 0x01: + result.push('slice_layer_without_partitioning_rbsp'); + break; + case 0x05: + result.push('slice_layer_without_partitioning_rbsp_idr'); + break; + case 0x06: + result.push('sei_rbsp'); + break; + case 0x07: + result.push('seq_parameter_set_rbsp'); + break; + case 0x08: + result.push('pic_parameter_set_rbsp'); + break; + case 0x09: + result.push('access_unit_delimiter_rbsp'); + break; + default: + result.push(avcStream[i] & 0x1F); + break; + } + } + return result; + }, + + // registry of handlers for individual mp4 box types + parse = { + // codingname, not a first-class box type. stsd entries share the + // same format as real boxes so the parsing infrastructure can be + // shared + avc1: function(data) { + var view = new DataView(data.buffer, data.byteOffset, data.byteLength); + return { + dataReferenceIndex: view.getUint16(6), + width: view.getUint16(24), + height: view.getUint16(26), + horizresolution: view.getUint16(28) + (view.getUint16(30) / 16), + vertresolution: view.getUint16(32) + (view.getUint16(34) / 16), + frameCount: view.getUint16(40), + depth: view.getUint16(74), + config: inspectMp4(data.subarray(78, data.byteLength)) + }; + }, + avcC: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + result = { + configurationVersion: data[0], + avcProfileIndication: data[1], + profileCompatibility: data[2], + avcLevelIndication: data[3], + lengthSizeMinusOne: data[4] & 0x03, + sps: [], + pps: [] + }, + numOfSequenceParameterSets = data[5] & 0x1f, + numOfPictureParameterSets, + nalSize, + offset, + i; + + // iterate past any SPSs + offset = 6; + for (i = 0; i < numOfSequenceParameterSets; i++) { + nalSize = view.getUint16(offset); + offset += 2; + result.sps.push(new Uint8Array(data.subarray(offset, offset + nalSize))); + offset += nalSize; + } + // iterate past any PPSs + numOfPictureParameterSets = data[offset]; + offset++; + for (i = 0; i < numOfPictureParameterSets; i++) { + nalSize = view.getUint16(offset); + offset += 2; + result.pps.push(new Uint8Array(data.subarray(offset, offset + nalSize))); + offset += nalSize; + } + return result; + }, + btrt: function(data) { + var view = new DataView(data.buffer, data.byteOffset, data.byteLength); + return { + bufferSizeDB: view.getUint32(0), + maxBitrate: view.getUint32(4), + avgBitrate: view.getUint32(8) + }; + }, + esds: function(data) { + return { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + esId: (data[6] << 8) | data[7], + streamPriority: data[8] & 0x1f, + decoderConfig: { + objectProfileIndication: data[11], + streamType: (data[12] >>> 2) & 0x3f, + bufferSize: (data[13] << 16) | (data[14] << 8) | data[15], + maxBitrate: (data[16] << 24) | + (data[17] << 16) | + (data[18] << 8) | + data[19], + avgBitrate: (data[20] << 24) | + (data[21] << 16) | + (data[22] << 8) | + data[23], + decoderConfigDescriptor: { + tag: data[24], + length: data[25], + audioObjectType: (data[26] >>> 3) & 0x1f, + samplingFrequencyIndex: ((data[26] & 0x07) << 1) | + ((data[27] >>> 7) & 0x01), + channelConfiguration: (data[27] >>> 3) & 0x0f + } + } + }; + }, + ftyp: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + result = { + majorBrand: parseType(data.subarray(0, 4)), + minorVersion: view.getUint32(4), + compatibleBrands: [] + }, + i = 8; + while (i < data.byteLength) { + result.compatibleBrands.push(parseType(data.subarray(i, i + 4))); + i += 4; + } + return result; + }, + dinf: function(data) { + return { + boxes: inspectMp4(data) + }; + }, + dref: function(data) { + return { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + dataReferences: inspectMp4(data.subarray(8)) + }; + }, + hdlr: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + language, + result = { + version: view.getUint8(0), + flags: new Uint8Array(data.subarray(1, 4)), + handlerType: parseType(data.subarray(8, 12)), + name: '' + }, + i = 8; + + // parse out the name field + for (i = 24; i < data.byteLength; i++) { + if (data[i] === 0x00) { + // the name field is null-terminated + i++; + break; + } + result.name += String.fromCharCode(data[i]); + } + // decode UTF-8 to javascript's internal representation + // see http://ecmanaut.blogspot.com/2006/07/encoding-decoding-utf8-in-javascript.html + result.name = decodeURIComponent(global.escape(result.name)); + + return result; + }, + mdat: function(data) { + return { + byteLength: data.byteLength, + nals: nalParse(data) + }; + }, + mdhd: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + i = 4, + language, + result = { + version: view.getUint8(0), + flags: new Uint8Array(data.subarray(1, 4)), + language: '' + }; + if (result.version === 1) { + i += 4; + result.creationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes + i += 8; + result.modificationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes + i += 4; + result.timescale = view.getUint32(i); + i += 8; + result.duration = view.getUint32(i); // truncating top 4 bytes + } else { + result.creationTime = parseMp4Date(view.getUint32(i)); + i += 4; + result.modificationTime = parseMp4Date(view.getUint32(i)); + i += 4; + result.timescale = view.getUint32(i); + i += 4; + result.duration = view.getUint32(i); + } + i += 4; + // language is stored as an ISO-639-2/T code in an array of three 5-bit fields + // each field is the packed difference between its ASCII value and 0x60 + language = view.getUint16(i); + result.language += String.fromCharCode((language >> 10) + 0x60); + result.language += String.fromCharCode(((language & 0x03c0) >> 5) + 0x60); + result.language += String.fromCharCode((language & 0x1f) + 0x60); + + return result; + }, + mdia: function(data) { + return { + boxes: inspectMp4(data) + }; + }, + mfhd: function(data) { + return { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + sequenceNumber: (data[4] << 24) | + (data[5] << 16) | + (data[6] << 8) | + (data[7]) + }; + }, + minf: function(data) { + return { + boxes: inspectMp4(data) + }; + }, + // codingname, not a first-class box type. stsd entries share the + // same format as real boxes so the parsing infrastructure can be + // shared + mp4a: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + result = { + // 6 bytes reserved + dataReferenceIndex: view.getUint16(6), + // 4 + 4 bytes reserved + channelcount: view.getUint16(16), + samplesize: view.getUint16(18), + // 2 bytes pre_defined + // 2 bytes reserved + samplerate: view.getUint16(24) + (view.getUint16(26) / 65536) + }; + + // if there are more bytes to process, assume this is an ISO/IEC + // 14496-14 MP4AudioSampleEntry and parse the ESDBox + if (data.byteLength > 28) { + result.streamDescriptor = inspectMp4(data.subarray(28))[0]; + } + return result; + }, + moof: function(data) { + return { + boxes: inspectMp4(data) + }; + }, + moov: function(data) { + return { + boxes: inspectMp4(data) + }; + }, + mvex: function(data) { + return { + boxes: inspectMp4(data) + }; + }, + mvhd: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + i = 4, + result = { + version: view.getUint8(0), + flags: new Uint8Array(data.subarray(1, 4)) + }; + + if (result.version === 1) { + i += 4; + result.creationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes + i += 8; + result.modificationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes + i += 4; + result.timescale = view.getUint32(i); + i += 8; + result.duration = view.getUint32(i); // truncating top 4 bytes + } else { + result.creationTime = parseMp4Date(view.getUint32(i)); + i += 4; + result.modificationTime = parseMp4Date(view.getUint32(i)); + i += 4; + result.timescale = view.getUint32(i); + i += 4; + result.duration = view.getUint32(i); + } + i += 4; + + // convert fixed-point, base 16 back to a number + result.rate = view.getUint16(i) + (view.getUint16(i + 2) / 16); + i += 4; + result.volume = view.getUint8(i) + (view.getUint8(i + 1) / 8); + i += 2; + i += 2; + i += 2 * 4; + result.matrix = new Uint32Array(data.subarray(i, i + (9 * 4))); + i += 9 * 4; + i += 6 * 4; + result.nextTrackId = view.getUint32(i); + return result; + }, + pdin: function(data) { + var view = new DataView(data.buffer, data.byteOffset, data.byteLength); + return { + version: view.getUint8(0), + flags: new Uint8Array(data.subarray(1, 4)), + rate: view.getUint32(4), + initialDelay: view.getUint32(8) + }; + }, + sdtp: function(data) { + var + result = { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + samples: [] + }, i; + + for (i = 4; i < data.byteLength; i++) { + result.samples.push({ + dependsOn: (data[i] & 0x30) >> 4, + isDependedOn: (data[i] & 0x0c) >> 2, + hasRedundancy: data[i] & 0x03 + }); + } + return result; + }, + sidx: function(data) { + var view = new DataView(data.buffer, data.byteOffset, data.byteLength), + result = { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + references: [], + referenceId: view.getUint32(4), + timescale: view.getUint32(8), + earliestPresentationTime: view.getUint32(12), + firstOffset: view.getUint32(16) + }, + referenceCount = view.getUint16(22), + i; + + for (i = 24; referenceCount; i += 12, referenceCount-- ) { + result.references.push({ + referenceType: (data[i] & 0x80) >>> 7, + referencedSize: view.getUint32(i) & 0x7FFFFFFF, + subsegmentDuration: view.getUint32(i + 4), + startsWithSap: !!(data[i + 8] & 0x80), + sapType: (data[i + 8] & 0x70) >>> 4, + sapDeltaTime: view.getUint32(i + 8) & 0x0FFFFFFF + }); + } + + return result; + }, + smhd: function(data) { + return { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + balance: data[4] + (data[5] / 256) + }; + }, + stbl: function(data) { + return { + boxes: inspectMp4(data) + }; + }, + stco: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + result = { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + chunkOffsets: [] + }, + entryCount = view.getUint32(4), + i; + for (i = 8; entryCount; i += 4, entryCount--) { + result.chunkOffsets.push(view.getUint32(i)); + } + return result; + }, + stsc: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + entryCount = view.getUint32(4), + result = { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + sampleToChunks: [] + }, + i; + for (i = 8; entryCount; i += 12, entryCount--) { + result.sampleToChunks.push({ + firstChunk: view.getUint32(i), + samplesPerChunk: view.getUint32(i + 4), + sampleDescriptionIndex: view.getUint32(i + 8) + }); + } + return result; + }, + stsd: function(data) { + return { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + sampleDescriptions: inspectMp4(data.subarray(8)) + }; + }, + stsz: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + result = { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + sampleSize: view.getUint32(4), + entries: [] + }, + i; + for (i = 12; i < data.byteLength; i += 4) { + result.entries.push(view.getUint32(i)); + } + return result; + }, + stts: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + result = { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + timeToSamples: [] + }, + entryCount = view.getUint32(4), + i; + + for (i = 8; entryCount; i += 8, entryCount--) { + result.timeToSamples.push({ + sampleCount: view.getUint32(i), + sampleDelta: view.getUint32(i + 4) + }); + } + return result; + }, + styp: function(data) { + return parse.ftyp(data); + }, + tfdt: function(data) { + return { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + baseMediaDecodeTime: data[4] << 24 | data[5] << 16 | data[6] << 8 | data[7] + }; + }, + tfhd: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + result = { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + trackId: view.getUint32(4) + }, + baseDataOffsetPresent = result.flags[2] & 0x01, + sampleDescriptionIndexPresent = result.flags[2] & 0x02, + defaultSampleDurationPresent = result.flags[2] & 0x08, + defaultSampleSizePresent = result.flags[2] & 0x10, + defaultSampleFlagsPresent = result.flags[2] & 0x20, + i; + + i = 8; + if (baseDataOffsetPresent) { + i += 4; // truncate top 4 bytes + result.baseDataOffset = view.getUint32(12); + i += 4; + } + if (sampleDescriptionIndexPresent) { + result.sampleDescriptionIndex = view.getUint32(i); + i += 4; + } + if (defaultSampleDurationPresent) { + result.defaultSampleDuration = view.getUint32(i); + i += 4; + } + if (defaultSampleSizePresent) { + result.defaultSampleSize = view.getUint32(i); + i += 4; + } + if (defaultSampleFlagsPresent) { + result.defaultSampleFlags = view.getUint32(i); + } + return result; + }, + tkhd: function(data) { + var + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + i = 4, + result = { + version: view.getUint8(0), + flags: new Uint8Array(data.subarray(1, 4)), + }; + if (result.version === 1) { + i += 4; + result.creationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes + i += 8; + result.modificationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes + i += 4; + result.trackId = view.getUint32(i); + i += 4; + i += 8; + result.duration = view.getUint32(i); // truncating top 4 bytes + } else { + result.creationTime = parseMp4Date(view.getUint32(i)); + i += 4; + result.modificationTime = parseMp4Date(view.getUint32(i)); + i += 4; + result.trackId = view.getUint32(i); + i += 4; + i += 4; + result.duration = view.getUint32(i); + } + i += 4; + i += 2 * 4; + result.layer = view.getUint16(i); + i += 2; + result.alternateGroup = view.getUint16(i); + i += 2; + // convert fixed-point, base 16 back to a number + result.volume = view.getUint8(i) + (view.getUint8(i + 1) / 8); + i += 2; + i += 2; + result.matrix = new Uint32Array(data.subarray(i, i + (9 * 4))); + i += 9 * 4; + result.width = view.getUint16(i) + (view.getUint16(i + 2) / 16); + i += 4; + result.height = view.getUint16(i) + (view.getUint16(i + 2) / 16); + return result; + }, + traf: function(data) { + return { + boxes: inspectMp4(data) + }; + }, + trak: function(data) { + return { + boxes: inspectMp4(data) + }; + }, + trex: function(data) { + var view = new DataView(data.buffer, data.byteOffset, data.byteLength); + return { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + trackId: view.getUint32(4), + defaultSampleDescriptionIndex: view.getUint32(8), + defaultSampleDuration: view.getUint32(12), + defaultSampleSize: view.getUint32(16), + sampleDependsOn: data[20] & 0x03, + sampleIsDependedOn: (data[21] & 0xc0) >> 6, + sampleHasRedundancy: (data[21] & 0x30) >> 4, + samplePaddingValue: (data[21] & 0x0e) >> 1, + sampleIsDifferenceSample: !!(data[21] & 0x01), + sampleDegradationPriority: view.getUint16(22) + }; + }, + trun: function(data) { + var + result = { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + samples: [] + }, + view = new DataView(data.buffer, data.byteOffset, data.byteLength), + dataOffsetPresent = result.flags[2] & 0x01, + firstSampleFlagsPresent = result.flags[2] & 0x04, + sampleDurationPresent = result.flags[1] & 0x01, + sampleSizePresent = result.flags[1] & 0x02, + sampleFlagsPresent = result.flags[1] & 0x04, + sampleCompositionTimeOffsetPresent = result.flags[1] & 0x08, + sampleCount = view.getUint32(4), + offset = 8, + sample; + + if (dataOffsetPresent) { + result.dataOffset = view.getUint32(offset); + offset += 4; + } + + if (firstSampleFlagsPresent && sampleCount) { + sample = { + flags: parseSampleFlags(data.subarray(offset, offset + 4)) + }; + offset += 4; + if (sampleDurationPresent) { + sample.duration = view.getUint32(offset); + offset += 4; + } + if (sampleSizePresent) { + sample.size = view.getUint32(offset); + offset += 4; + } + if (sampleCompositionTimeOffsetPresent) { + sample.compositionTimeOffset = view.getUint32(offset); + offset += 4; + } + result.samples.push(sample); + sampleCount--; + } + + while (sampleCount--) { + sample = {}; + if (sampleDurationPresent) { + sample.duration = view.getUint32(offset); + offset += 4; + } + if (sampleSizePresent) { + sample.size = view.getUint32(offset); + offset += 4; + } + if (sampleFlagsPresent) { + sample.flags = parseSampleFlags(data.subarray(offset, offset + 4)); + offset += 4; + } + if (sampleCompositionTimeOffsetPresent) { + sample.compositionTimeOffset = view.getUint32(offset); + offset += 4; + } + result.samples.push(sample); + } + return result; + }, + 'url ': function(data) { + return { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)) + }; + }, + vmhd: function(data) { + var view = new DataView(data.buffer, data.byteOffset, data.byteLength); + return { + version: data[0], + flags: new Uint8Array(data.subarray(1, 4)), + graphicsmode: view.getUint16(4), + opcolor: new Uint16Array([view.getUint16(6), + view.getUint16(8), + view.getUint16(10)]) + }; + } + }; + + +/** + * Return a javascript array of box objects parsed from an ISO base + * media file. + * @param data {Uint8Array} the binary data of the media to be inspected + * @return {array} a javascript array of potentially nested box objects + */ +inspectMp4 = function(data) { + var + i = 0, + result = [], + view, + size, + type, + end, + box; + + // Convert data from Uint8Array to ArrayBuffer, to follow Dataview API + var ab = new ArrayBuffer(data.length); + var v = new Uint8Array(ab); + for (var z = 0; z < data.length; ++z) { + v[z] = data[z]; + } + view = new DataView(ab); + + + while (i < data.byteLength) { + // parse box data + size = view.getUint32(i); + type = parseType(data.subarray(i + 4, i + 8)); + end = size > 1 ? i + size : data.byteLength; + + // parse type-specific data + box = (parse[type] || function(data) { + return { + data: data + }; + })(data.subarray(i + 8, end)); + box.size = size; + box.type = type; + + // store this box and move to the next + result.push(box); + i = end; + } + return result; +}; + +/** + * Returns a textual representation of the javascript represtentation + * of an MP4 file. You can use it as an alternative to + * JSON.stringify() to compare inspected MP4s. + * @param inspectedMp4 {array} the parsed array of boxes in an MP4 + * file + * @param depth {number} (optional) the number of ancestor boxes of + * the elements of inspectedMp4. Assumed to be zero if unspecified. + * @return {string} a text representation of the parsed MP4 + */ +textifyMp4 = function(inspectedMp4, depth) { + var indent; + depth = depth || 0; + indent = new Array(depth * 2 + 1).join(' '); + + // iterate over all the boxes + return inspectedMp4.map(function(box, index) { + + // list the box type first at the current indentation level + return indent + box.type + '\n' + + + // the type is already included and handle child boxes separately + Object.keys(box).filter(function(key) { + return key !== 'type' && key !== 'boxes'; + + // output all the box properties + }).map(function(key) { + var prefix = indent + ' ' + key + ': ', + value = box[key]; + + // print out raw bytes as hexademical + if (value instanceof Uint8Array || value instanceof Uint32Array) { + var bytes = Array.prototype.slice.call(new Uint8Array(value.buffer, value.byteOffset, value.byteLength)) + .map(function(byte) { + return ' ' + ('00' + byte.toString(16)).slice(-2); + }).join('').match(/.{1,24}/g); + if (!bytes) { + return prefix + '<>'; + } + if (bytes.length === 1) { + return prefix + '<' + bytes.join('').slice(1) + '>'; + } + return prefix + '<\n' + bytes.map(function(line) { + return indent + ' ' + line; + }).join('\n') + '\n' + indent + ' >'; + } + + // stringify generic objects + return prefix + + JSON.stringify(value, null, 2) + .split('\n').map(function(line, index) { + if (index === 0) { + return line; + } + return indent + ' ' + line; + }).join('\n'); + }).join('\n') + + + // recursively textify the child boxes + (box.boxes ? '\n' + textifyMp4(box.boxes, depth + 1) : ''); + }).join('\n'); +}; + +module.exports = { + inspect: inspectMp4, + textify: textifyMp4 +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],28:[function(require,module,exports){ +'use strict'; + +var ExpGolomb; + +/** + * Parser for exponential Golomb codes, a variable-bitwidth number encoding + * scheme used by h264. + */ +ExpGolomb = function(workingData) { + var + // the number of bytes left to examine in workingData + workingBytesAvailable = workingData.byteLength, + + // the current word being examined + workingWord = 0, // :uint + + // the number of bits left to examine in the current word + workingBitsAvailable = 0; // :uint; + + // ():uint + this.length = function() { + return (8 * workingBytesAvailable); + }; + + // ():uint + this.bitsAvailable = function() { + return (8 * workingBytesAvailable) + workingBitsAvailable; + }; + + // ():void + this.loadWord = function() { + var + position = workingData.byteLength - workingBytesAvailable, + workingBytes = new Uint8Array(4), + availableBytes = Math.min(4, workingBytesAvailable); + + if (availableBytes === 0) { + throw new Error('no bytes available'); + } + + workingBytes.set(workingData.subarray(position, + position + availableBytes)); + workingWord = new DataView(workingBytes.buffer).getUint32(0); + + // track the amount of workingData that has been processed + workingBitsAvailable = availableBytes * 8; + workingBytesAvailable -= availableBytes; + }; + + // (count:int):void + this.skipBits = function(count) { + var skipBytes; // :int + if (workingBitsAvailable > count) { + workingWord <<= count; + workingBitsAvailable -= count; + } else { + count -= workingBitsAvailable; + skipBytes = Math.floor(count / 8); + + count -= (skipBytes * 8); + workingBytesAvailable -= skipBytes; + + this.loadWord(); + + workingWord <<= count; + workingBitsAvailable -= count; + } + }; + + // (size:int):uint + this.readBits = function(size) { + var + bits = Math.min(workingBitsAvailable, size), // :uint + valu = workingWord >>> (32 - bits); // :uint + // if size > 31, handle error + workingBitsAvailable -= bits; + if (workingBitsAvailable > 0) { + workingWord <<= bits; + } else if (workingBytesAvailable > 0) { + this.loadWord(); + } + + bits = size - bits; + if (bits > 0) { + return valu << bits | this.readBits(bits); + } else { + return valu; + } + }; + + // ():uint + this.skipLeadingZeros = function() { + var leadingZeroCount; // :uint + for (leadingZeroCount = 0 ; leadingZeroCount < workingBitsAvailable ; ++leadingZeroCount) { + if (0 !== (workingWord & (0x80000000 >>> leadingZeroCount))) { + // the first bit of working word is 1 + workingWord <<= leadingZeroCount; + workingBitsAvailable -= leadingZeroCount; + return leadingZeroCount; + } + } + + // we exhausted workingWord and still have not found a 1 + this.loadWord(); + return leadingZeroCount + this.skipLeadingZeros(); + }; + + // ():void + this.skipUnsignedExpGolomb = function() { + this.skipBits(1 + this.skipLeadingZeros()); + }; + + // ():void + this.skipExpGolomb = function() { + this.skipBits(1 + this.skipLeadingZeros()); + }; + + // ():uint + this.readUnsignedExpGolomb = function() { + var clz = this.skipLeadingZeros(); // :uint + return this.readBits(clz + 1) - 1; + }; + + // ():int + this.readExpGolomb = function() { + var valu = this.readUnsignedExpGolomb(); // :int + if (0x01 & valu) { + // the number is odd if the low order bit is set + return (1 + valu) >>> 1; // add 1 to make it even, and divide by 2 + } else { + return -1 * (valu >>> 1); // divide by two then make it negative + } + }; + + // Some convenience functions + // :Boolean + this.readBoolean = function() { + return 1 === this.readBits(1); + }; + + // ():int + this.readUnsignedByte = function() { + return this.readBits(8); + }; + + this.loadWord(); +}; + +module.exports = ExpGolomb; + +},{}],29:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2014 Brightcove + * All rights reserved. + * + * A lightweight readable stream implemention that handles event dispatching. + * Objects that inherit from streams should call init in their constructors. + */ +'use strict'; + +var Stream = function() { + this.init = function() { + var listeners = {}; + /** + * Add a listener for a specified event type. + * @param type {string} the event name + * @param listener {function} the callback to be invoked when an event of + * the specified type occurs + */ + this.on = function(type, listener) { + if (!listeners[type]) { + listeners[type] = []; + } + listeners[type].push(listener); + }; + /** + * Remove a listener for a specified event type. + * @param type {string} the event name + * @param listener {function} a function previously registered for this + * type of event through `on` + */ + this.off = function(type, listener) { + var index; + if (!listeners[type]) { + return false; + } + index = listeners[type].indexOf(listener); + listeners[type].splice(index, 1); + return index > -1; + }; + /** + * Trigger an event of the specified type on this stream. Any additional + * arguments to this function are passed as parameters to event listeners. + * @param type {string} the event name + */ + this.trigger = function(type) { + var callbacks, i, length, args; + callbacks = listeners[type]; + if (!callbacks) { + return; + } + // Slicing the arguments on every invocation of this method + // can add a significant amount of overhead. Avoid the + // intermediate object creation for the common case of a + // single callback argument + if (arguments.length === 2) { + length = callbacks.length; + for (i = 0; i < length; ++i) { + callbacks[i].call(this, arguments[1]); + } + } else { + args = []; + i = arguments.length; + for (i = 1; i < arguments.length; ++i) { + args.push(arguments[i]); + } + length = callbacks.length; + for (i = 0; i < length; ++i) { + callbacks[i].apply(this, args); + } + } + }; + /** + * Destroys the stream and cleans up. + */ + this.dispose = function() { + listeners = {}; + }; + }; +}; + +/** + * Forwards all `data` events on this stream to the destination stream. The + * destination stream should provide a method `push` to receive the data + * events as they arrive. + * @param destination {stream} the stream that will receive all `data` events + * @param autoFlush {boolean} if false, we will not call `flush` on the destination + * when the current stream emits a 'done' event + * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options + */ +Stream.prototype.pipe = function(destination) { + this.on('data', function(data) { + destination.push(data); + }); + + this.on('done', function() { + destination.flush(); + }); + + return destination; +}; + +// Default stream functions that are expected to be overridden to perform +// actual work. These are provided by the prototype as a sort of no-op +// implementation so that we don't have to check for their existence in the +// `pipe` function above. +Stream.prototype.push = function(data) { + this.trigger('data', data); +}; + +Stream.prototype.flush = function() { + this.trigger('done'); +}; + +module.exports = Stream; + +},{}],30:[function(require,module,exports){ +var bundleFn = arguments[3]; +var sources = arguments[4]; +var cache = arguments[5]; + +var stringify = JSON.stringify; + +module.exports = function (fn) { + var keys = []; + var wkey; + var cacheKeys = Object.keys(cache); + + for (var i = 0, l = cacheKeys.length; i < l; i++) { + var key = cacheKeys[i]; + if (cache[key].exports === fn) { + wkey = key; + break; + } + } + + if (!wkey) { + wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16); + var wcache = {}; + for (var i = 0, l = cacheKeys.length; i < l; i++) { + var key = cacheKeys[i]; + wcache[key] = key; + } + sources[wkey] = [ + Function(['require','module','exports'], '(' + fn + ')(self)'), + wcache + ]; + } + var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16); + + var scache = {}; scache[wkey] = wkey; + sources[skey] = [ + Function(['require'],'require(' + stringify(wkey) + ')(self)'), + scache + ]; + + var src = '(' + bundleFn + ')({' + + Object.keys(sources).map(function (key) { + return stringify(key) + ':[' + + sources[key][0] + + ',' + stringify(sources[key][1]) + ']' + ; + }).join(',') + + '},{},[' + stringify(skey) + '])' + ; + + var URL = window.URL || window.webkitURL || window.mozURL || window.msURL; + + return new Worker(URL.createObjectURL( + new Blob([src], { type: 'text/javascript' }) + )); +}; + +},{}],31:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _flashMediaSource = require('./flash-media-source'); + +var _flashMediaSource2 = _interopRequireDefault(_flashMediaSource); + +var _htmlMediaSource = require('./html-media-source'); + +var _htmlMediaSource2 = _interopRequireDefault(_htmlMediaSource); + +// import videojs from 'video.js'; +var videojs = window.videojs; +var urlCount = 0; + +// ------------ +// Media Source +// ------------ + +var defaults = { + // how to determine the MediaSource implementation to use. There + // are three available modes: + // - auto: use native MediaSources where available and Flash + // everywhere else + // - html5: always use native MediaSources + // - flash: always use the Flash MediaSource polyfill + mode: 'auto' +}; + +// store references to the media sources so they can be connected +// to a video element (a swf object) +videojs.mediaSources = {}; + +// provide a method for a swf object to notify JS that a media source is now open +var open = function open(msObjectURL, swfId) { + var mediaSource = videojs.mediaSources[msObjectURL]; + + if (mediaSource) { + mediaSource.trigger({ type: 'sourceopen', swfId: swfId }); + } else { + throw new Error('Media Source not found (Video.js)'); + } +}; + +// Check to see if the native MediaSource object exists and supports +// an MP4 container with both H.264 video and AAC-LC audio +var supportsNativeMediaSources = function supportsNativeMediaSources() { + return !!window.MediaSource && window.MediaSource.isTypeSupported('video/mp4;codecs="avc1.4d400d,mp4a.40.2"'); +}; + +var MediaSource = function MediaSource(options) { + var settings = videojs.mergeOptions(defaults, options); + + this.MediaSource = { + open: open, + supportsNativeMediaSources: supportsNativeMediaSources + }; + + // determine whether HTML MediaSources should be used + if (settings.mode === 'html5' || settings.mode === 'auto' && supportsNativeMediaSources()) { + return new _htmlMediaSource2['default'](); + } + + // otherwise, emulate them through the SWF + return new _flashMediaSource2['default'](); +}; + +exports.MediaSource = MediaSource; +MediaSource.open = open; +MediaSource.supportsNativeMediaSources = supportsNativeMediaSources; + +var URL = { + createObjectURL: function createObjectURL(object) { + var objectUrlPrefix = 'blob:vjs-media-source/'; + var url = undefined; + + // use the native MediaSource to generate an object URL + if (object instanceof _htmlMediaSource2['default']) { + url = window.URL.createObjectURL(object.mediaSource_); + object.url_ = url; + return url; + } + // if the object isn't an emulated MediaSource, delegate to the + // native implementation + if (!(object instanceof _flashMediaSource2['default'])) { + url = window.URL.createObjectURL(object); + object.url_ = url; + return url; + } + + // build a URL that can be used to map back to the emulated + // MediaSource + url = objectUrlPrefix + urlCount; + + urlCount++; + + // setup the mapping back to object + videojs.mediaSources[url] = object; + + return url; + } +}; + +exports.URL = URL; +videojs.MediaSource = MediaSource; +videojs.URL = URL; +},{"./flash-media-source":4,"./html-media-source":6}]},{},[31])(31) +});
\ No newline at end of file diff --git a/examples/tg16/web/stream.gathering.org/ng/index.html b/examples/tg16/web/stream.gathering.org/ng/index.html new file mode 100644 index 0000000..ca523aa --- /dev/null +++ b/examples/tg16/web/stream.gathering.org/ng/index.html @@ -0,0 +1,410 @@ +<html> + <head> + <title>Steinar-style Videostream</title> + <link rel="stylesheet" href="reset.css" type="text/css" media="screen"/> + <link rel="stylesheet" href="style.css" type="text/css" media="screen"/> + <link rel="stylesheet" href="media-queries.css" type="text/css" media="screen"/> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + </head> +<body> + <style> + #videowrapper { + margin-top: 0.5em; + margin-left: auto; + margin-right: auto; + position: relative; + } + #video { + max-height: 100%; + max-width: 100%; + width: auto; + border: 1px solid black; + } + #loader { + width: 100%; + display: none; + background: black; + border: 1px solid black; + } + #castposter { + width: 100%; + display: none; + background: black; + border: 1px solid black; + } + #castposteri { + margin-top: 0; + margin-bottom: 0; + position: relative; + } + #castposteri:after { + padding-top: 56.25%; /* 16:9 aspect */ + display: block; + content: ''; + } + #castposterii { + position: absolute; top: 0; bottom: 0; left: 0; right: 0; + display: flex; + flex-direction: column; + justify-content: center; + } + #castposteriii { + color: white; + } + #castposteriii p { margin-bottom: 0; } + #streamchoice { + margin-bottom: 0; + } + </style> + +<p id="streamchoice"></p> + +<div id="videowrapper"> + <canvas id="loader"></canvas> + <div id="castposter"><div id="castposteri"><div id="castposterii"><div id="castposteriii"><p id="nowcasting">Now casting to <strong id="casttarget"></strong></p><p><a href="javascript:stop_casting();">Stop casting</a></p></div></div></div></div> + <video controls="controls" id="video" preload="none"> + <source src="http://cubemap.tg16.gathering.org/event.mp4" type="video/mp4"> + </video> +</div> + +<p style="margin-top: 1em; margin-bottom: 0">For use with a non-web player (e.g. VLC), use + <a id="vlcurl"></a> (MP4) or <a id="vlchlsurl"></a> (HLS). + Also <a href="https://chrome.google.com/webstore/detail/google-cast/boadgeojelhgndaghljhdicfkmllpafd" id="casturl">Google Cast</a> enabled.</p> + +<script type="text/javascript" src="https://www.gstatic.com/cv/js/sender/v1/cast_sender.js"></script> +<script> +<!-- + +// CONFIG + +var global_title = 'Scenesat live stream'; +var enable_loader = false; +var streams = [ + { + name: "720p (2.0 Mbit/sec)", + url: "http://cubemap.tg16.gathering.org/event.mp4", + hlsurl: "http://stream.tg16.gathering.org/hls/event.m3u8", + width: 1280, + height: 720 + }, +]; + +// GLOBALS + +var video = document.getElementById('video'); +var loader = document.getElementById('loader'); +var castposter = document.getElementById('castposter'); +var use_hls; + +// LOADER PICTURE + +// C64 font. Yes, mixing up Amiga and C64 is a sin, I know. +var text = [ + ' xx xxxx xx xxxx xxxx xx xx xxxx ', + ' xx xx xx xxxx xx xx xx xxx xx xx xx ', + ' xx xx xx xx xx xx xx xx xxxxxx xx ', + ' xx xx xx xxxxxx xx xx xx xxxxxx xx xxx ', + ' xx xx xx xx xx xx xx xx xx xxx xx xx ', + ' xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx ', + ' xxxxxx xxxx xx xx xxxx xxxx xx xx xxxx xx xx xx ' +]; + +function raster() { + var ctx = loader.getContext("2d"); + var width = 352; // overscan + var height = 288; // overscan + var border_width = 18; // really 16 + var border_height = 24; // really 16 + var scalefac_w = loader.width/width; + var scalefac_h = loader.height/height; + + for (var y = 0; y < height; ++y) { + var r = Math.round(Math.random() * 16).toString(16); + var g = Math.round(Math.random() * 16).toString(16); + var b = Math.round(Math.random() * 16).toString(16); + ctx.fillStyle = '#' + r + r + g + g + b + b; + + var start_y = Math.round(y * scalefac_h); + var next_y = Math.round((y + 1) * scalefac_h); + if (y < border_height || y >= height-border_height) { + ctx.fillRect(0, start_y, loader.width, next_y - start_y); + } else { + ctx.fillRect(0, start_y, border_width * scalefac_w, next_y - start_y); + ctx.fillRect((width - border_width) * scalefac_w, start_y, border_width * scalefac_w, next_y - start_y); + } + } + + // Use the same scalefactor to get square pixels despite the changed aspect. + var scalefac_ch = Math.round(scalefac_h); + if (scalefac_ch < 1) scalefac_ch = 1; + var offset_y = Math.round(loader.height / 2 - text.length * scalefac_ch / 2); + var offset_x = Math.round(loader.width / 2 - text[0].length * scalefac_ch / 2); + + ctx.fillStyle = '#ffffff'; + for (var line = 0; line < text.length; ++line) { + var start_y = Math.round(line * scalefac_ch) + offset_y; + for (var ch = 0; ch < text[line].length; ++ch) { + if (text[line].substr(ch, 1) === ' ') { + continue; + } + + var start_x = Math.round(ch * scalefac_ch) + offset_x; + ctx.fillRect(start_x, start_y, scalefac_ch, scalefac_ch); + } + } +} + +var loader_interval = null; + +function start_loader() { + if (!enable_loader) return; + + if (video.readyState === 4) { + // No need to show a loader screen. This can happen because we call start_loader() + // on the 'play' event, but we could already have enough buffering (especially on + // mobile, where the play event is delayed), so we'd never get the 'canplay' event. + console.log("Not starting loader screen, already enough to play"); + return; + } + + console.log("STARTING LOADER SCREEN"); + var ctx = loader.getContext("2d"); + ctx.clearRect(0, 0, loader.width, loader.height); + loader_interval = setInterval(raster, 1000/20); // 20 fps ought to be enough for anyone + + loader.style.display = 'inline'; + video.style.display = 'none'; + castposter.style.display = 'none'; +} + +function stop_loader() { + if (!enable_loader) return; + + console.log("STOPPING LOADER SCREEN"); + clearInterval(loader_interval); + + if (castposter.style.display !== 'block') { + loader.style.display = 'none'; + video.style.display = 'inline'; + castposter.style.display = 'none'; + } +} + +// GOOGLE CAST + +var current_media; +var session; + +function show_castposter() { + stop_loader(); + castposter.style.display = 'block'; + loader.style.display = 'none'; + video.style.display = 'none'; +} + +function hide_castposter() { + castposter.style.display = 'none'; + loader.style.display = 'none'; + video.style.display = 'inline'; +} + +function stop_casting() { + hide_castposter(); + if (current_media) { + var media = current_media; + current_media = null; + media.stop(); + } + if (session) { + session.stop(); + session = null; + } +} + +function cast_current_video() { + if (session === undefined || selected_stream === undefined) { + return; + } + var title = streams[selected_stream].name; + var url = streams[selected_stream].url; + document.getElementById('casttarget').textContent = session.receiver.friendlyName; + show_castposter(); + video.pause(); + // If we are already casting this, do nothing. + if (current_media && current_media.media.contentId === url) { + console.log("Already casting " + url + " to " + session.receiver.friendlyName + " (" + current_media.playerState + ")"); + return; + } + if (current_media) { + current_media = null; // Signal to on_media_status_update. + } + var media_info = new chrome.cast.media.MediaInfo(url, "video/mp4"); + media_info.metadata = new chrome.cast.media.GenericMediaMetadata(); + media_info.metadata.title = global_title; // + ': ' + title; + var request = new chrome.cast.media.LoadRequest(media_info); + session.loadMedia(request, + on_media_discovered.bind(this, 'loadMedia'), + on_media_error); +} + +function on_media_status_update(active) { + console.log("media status update: " + active); + if (current_media !== null && !active) { // If current_media is null, we intended to stop it, so don't bother. + console.log("Unexpected end, quitting."); + stop_casting(); + } +} + +function on_media_discovered(how, media) { + console.log("media discovered, how: " + how); + console.log(media); + current_media = media; + cast_current_video(); + media.addUpdateListener(on_media_status_update); +} + +function on_media_error(e) { + console.log("media error:"); + console.log(e); +} + +function on_session_status_update(active) { + console.log("session status update: " + active); + if (!active) { + stop_casting(); + } +} + +function session_listener(e) { + session = e; + if (session.media.length != 0) { + on_media_discovered('onRequestSessionSuccess', session.media[0]); + } + session.addUpdateListener(on_session_status_update); + cast_current_video(); +} + +function receiver_listener(e) { +// console.log("receiver status: " + e); +} + +function on_cast_init_success() { + document.getElementById('casturl').href = "javascript:chrome.cast.requestSession(session_listener)"; +} + +function on_cast_init_error() { + console.log("google cast init error"); +} + +var initialize_cast_api = function() { + var session_request = new chrome.cast.SessionRequest( + chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID); + var api_config = new chrome.cast.ApiConfig( + session_request, + session_listener, + receiver_listener); + chrome.cast.initialize(api_config, on_cast_init_success, on_cast_init_error); +}; + +window['__onGCastApiAvailable'] = function(loaded, error_info) { + if (loaded) { + initialize_cast_api(); + } else { + console.log(error_info); + } +} + +// ACTUAL VIDEO STUFF + +if (navigator.userAgent.match(/iPad|iPhone|iPod/)) { + // iOS claims to support video/mp4, but it doesn't work for these streams. + // They play the HLS fine, though. + use_hls = true; +} else if (navigator.userAgent.match(/Safari/) && !navigator.userAgent.match(/Chrome/)) { + // Same with Safari (on OS X; not on Windows, but who cares about Safari on Windows). + use_hls = true; +} else if (video.canPlayType('video/mp4') === '' && video.canPlayType('application/vnd.apple.mpegURL') !== '') { + // Explicitly no MP4 support, but HLS support. + use_hls = true; +} else { + // Default to the normal stream (less latency, less muxer overhead). + use_hls = false; +} + +var selected_stream; + +function update_stream_list() { + var stream_html = ""; + for (var i = 0; i < streams.length; ++i) { + if (i != 0) { + stream_html += " | "; + } + if (i == selected_stream) { + stream_html += "<strong>" + streams[i].name + "</strong>"; + } else { + stream_html += "<a href=\"javascript:select_stream(" + i + ")\">" + streams[i].name + "</a>"; + } + } + document.getElementById('streamchoice').innerHTML = stream_html; +} +function select_stream(s) { + selected_stream = s; + update_stream_list(); + + var vlcurl = document.getElementById('vlcurl'); + vlcurl.href = streams[s].url; + vlcurl.innerHTML = streams[s].url; + + var vlchlsurl = document.getElementById('vlchlsurl'); + vlchlsurl.href = streams[s].hlsurl; + vlchlsurl.innerHTML = streams[s].hlsurl; + + var videowrapper = document.getElementById('videowrapper'); + var video = document.getElementById('video'); + var url = streams[s].url; + if (use_hls && streams[s].hlsurl) { + url = streams[s].hlsurl; + } + loader.width = streams[s].width; + loader.height = streams[s].height; + loader.style.maxWidth = streams[s].width + "px"; + loader.style.maxHeight = streams[s].height + "px"; + castposter.style.maxWidth = streams[s].width + "px"; + castposter.style.maxHeight = streams[s].height + "px"; + videowrapper.style.maxWidth = streams[s].width + "px"; + videowrapper.style.maxHeight = streams[s].height + "px"; + + if (session) { + cast_current_video(); + } else { + video.src = url; + video.load(); + video.play(); + } +} + +function setup_listeners() { + video.addEventListener('pause', on_pause); + video.addEventListener('play', start_loader); + video.addEventListener('canplay', stop_loader); + video.addEventListener('error', stop_loader); +} + +var on_pause; +on_pause = function(e) { + // The only real way to make it reload without buffering up + // the current content. + video.outerHTML = video.outerHTML; + video = document.getElementById('video'); + setup_listeners(); // Since we have a new object. + + stop_loader(); +}; + +setup_listeners(); +select_stream(0); + +//alert("MP4: " + video.canPlayType('video/mp4') + "; HLS: " + video.canPlayType('application/vnd.apple.mpegURL')); +--> +</script> + diff --git a/examples/tg16/web/stream.gathering.org/ng/media-queries.css b/examples/tg16/web/stream.gathering.org/ng/media-queries.css new file mode 100644 index 0000000..057b601 --- /dev/null +++ b/examples/tg16/web/stream.gathering.org/ng/media-queries.css @@ -0,0 +1 @@ +@media only screen and (min-width: 768px) and (max-width: 919px) {.container{width:728px;}#primary-content,.primary{width:728px;float:none;}#sidebar,.timeslot-thumb,#sponsors-full{display:none;}.widget_search #s{width:146px;}#talks,.the-talk{width:638px!important;}.talk-image{width:100px;}.talk-info{width:508px!important;}#talks-pager{padding:20px 0 25px!important;}#speakers-full .speaker:nth-child(3n){margin-right:20px;}.timeslot-desc,.timeslot-content{width:420px;}}@media only screen and (max-width: 767px) {#top .location,#top .identity{width:280px;}#navigation #primarymenu{display:none;}#navigation select.select-menu,#navigation span.select{display:block;}.container,#primary-content,.primary{width:280px;}#sidebar,#talks-full,#sponsors-full,.timeslot-thumb{display:none;}.location h2 span{line-height:26px;}.timeslot-desc{float:none;}.timeslot-desc,.timeslot-content{width:220px;}#footer p#credits,#footer p#footer-copy{float:none;}select.select-menu{width:230px!important;}span.select{width:230px;background:url(../images/selectbg_small.png) no-repeat center;}#commentform p label,#commentform p.comment-form-author span,#commentform p.comment-form-email span{position:relative;top:0;left:0;}}@media only screen and (min-width: 480px) and (max-width: 767px) {.container{width:440px;}#top .location,#top .identity{width:440px;}#navigation #primarymenu,.timeslot-thumb,#sidebar,#talks-full{display:none;}#navigation select.select-menu,#navigation span.select{display:block;}#primary-content,.primary{width:440px;}#speakers-full .speaker:nth-child(3n){margin-right:20px;}.timeslot-desc,.timeslot-content{width:380px;}select.select-menu{width:390px!important;}span.select{width:390px;background:url(../images/selectbg.png) no-repeat center;}}
\ No newline at end of file diff --git a/examples/tg16/web/stream.gathering.org/ng/reset.css b/examples/tg16/web/stream.gathering.org/ng/reset.css new file mode 100644 index 0000000..8ad64aa --- /dev/null +++ b/examples/tg16/web/stream.gathering.org/ng/reset.css @@ -0,0 +1 @@ +html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;outline:0;font-size:100%;font:inherit;vertical-align:baseline;}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block;}body{line-height:1;}ol,ul{list-style:none;}blockquote,q{quotes:none;}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none;}ins{text-decoration:none;}del{text-decoration:line-through;}table{border-collapse:collapse;border-spacing:0;}
\ No newline at end of file diff --git a/examples/tg16/web/stream.gathering.org/ng/style.css b/examples/tg16/web/stream.gathering.org/ng/style.css new file mode 100644 index 0000000..d169861 --- /dev/null +++ b/examples/tg16/web/stream.gathering.org/ng/style.css @@ -0,0 +1 @@ +.alignnone{margin:5px 20px 20px 0;}.aligncenter,div.aligncenter{display:block;margin:5px auto 5px auto;}.alignright{float:right;margin:5px 0 20px 20px;}.alignleft{float:left;margin:5px 20px 20px 0;}.aligncenter{display:block;margin:5px auto 5px auto;}a img.alignright{float:right;margin:5px 0 20px 20px;}a img.alignnone{margin:5px 20px 20px 0;}a img.alignleft{float:left;margin:5px 20px 20px 0;}a img.aligncenter{display:block;margin-left:auto;margin-right:auto}.wp-caption{background:#fff;border:1px solid #f0f0f0;max-width:96%;padding:5px 3px 10px;text-align:center;}.wp-caption.alignnone{margin:5px 20px 20px 0;}.wp-caption.alignleft{margin:5px 20px 20px 0;}.wp-caption.alignright{margin:5px 0 20px 20px;}.wp-caption img{border:0 none;height:auto;margin:0;max-width:98.5%;padding:0;width:auto;}.wp-caption p.wp-caption-text{font-size:11px;line-height:17px;margin:0;padding:0 4px 5px;}.sticky{}.gallery-caption{}.bypostauthor{}body{text-align:center;background:#fff;}.container{width:920px;margin:0 auto;text-align:left;position:relative;}#header{margin:0 auto;}#primary-content,.primary{width:640px;float:left;}#sidebar{width:240px;float:right;}img.scale-with-grid,img{max-width:100%;height:auto;}.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.clearfix{display:inline-block;}.clearfix{display:block;}.none{display:none;}body,input,textarea,button{font:13px/21px "Helvetica Neue",Helvetica,Arial,sans-serif;color:#787878;}h1,h2,h3,h4,h5,h6{margin:0 0 15px;color:#444;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold;}p{margin:0 0 20px;}h1{font-size:26px;line-height:30px;letter-spacing:-1px;}h2{font-size:24px;line-height:28px;letter-spacing:-1px;}h3{font-size:18px;line-height:24px;}h4{font-size:16px;line-height:22px;}h5{font-size:14px;line-height:20px;}h6{font-size:12px;line-height:18px;}a{text-decoration:none;-moz-transition:background-color .1s linear,color .1s linear;-webkit-transition:background-color .1s linear,color .1s linear;-o-transition:background-color .1s linear,color .1s linear;-ms-transition:background-color .1s linear,color .1s linear;transition:background-color .1s linear,color .1s linear;}a:link,a:visited{color:#777;border-bottom:1px dotted #a9a8a8;}a:hover{color:#333;}code,pre{font:12px/18px Consolas,"Andale Mono",Courier,"Courier New",monospace;background:#f7f7f8;}em{font-style:italic;}strong{font-weight:bold;}small{font-size:11px;}blockquote,blockquote p{font-size:17px;line-height:24px;color:#777;font-style:italic;}blockquote{margin:0 0 20px;padding:9px 20px 0 19px;border-left:1px solid #ddd;}blockquote cite{display:block;font-size:12px;color:#555;}blockquote cite:before{content:"\2014 \0020";}blockquote cite a,blockquote cite a:visited,blockquote cite a:visited{color:#555;}hr{border:solid #ddd;border-width:1px 0 0;clear:both;margin:10px 0 30px;height:0;}ul,ol{margin-bottom:20px;list-style-type:square;margin-left:20px;}ul{list-style:none outside;list-style-type:square;}ol{list-style:decimal;}ol,ul.square,ul.circle,ul.disc{margin-left:30px;}ul.square{list-style:square outside;list-style-type:square;}ul.circle{list-style:circle outside;}ul.disc{list-style:disc outside;}ul ul,ul ol,ol ol,ol ul{margin:4px 0 2px 15px;}ul ul li,ul ol li,ol ol li,ol ul li{margin-bottom:2px;}li{line-height:21px;margin-bottom:2px;}ul.large li{line-height:21px;}li p{line-height:21px;}#header-full{background:url(images/headerbg_2015.jpg) center no-repeat;-webkit-background-size:cover;-moz-background-size:cover;background-size:cover;padding:40px 0 0;margin-bottom:40px;}.page-template-homepage-php #header-full{margin-bottom:0px;padding:50px 0 0}#top{text-align:center;margin:0 0 40px;}.page-template-homepage-php #top{margin:0 0 50px;}#top .location,#top .identity{width:700px;margin:0 auto;}.identity img{display:block;margin:0 auto;}.page-template-homepage-php .identity img{margin:0 auto 20px;}.identity h1{color:#fff;font-size:44px;line-height:44px;font-weight:bold;letter-spacing:-1px;margin:0;}.identity h1 span{display:block;font-weight:normal;font-size:26px;}.location h2{color:#fff;font-size:36px;line-height:36px;margin:0 0 15px;text-shadow:0px 1px 1px #4a4a4a;}.location h2 span{display:block;font-size:18px;}.location p{color:#fff;text-shadow:0px 1px 1px #4a4a4a;font-size:16px;font-family:Helvetica,Arial,sans-serif;line-height:22px;margin:0 0 30px;}a.register-cta:link,a.register-cta:visited{display:inline-block;padding:8px 15px;color:#9c663a;text-shadow:0px 1px 1px #fee4b4;font-size:18px;font-family:Helvetica,Arial,sans-serif;letter-spacing:-1px;font-weight:bold;margin:0;border:1px solid #c99237;background:#fed76e;background-image:-webkit-gradient(linear,0% 0%,0% 100%,from(#fed76e),to(#feba4b));background-image:-webkit-linear-gradient(top,#fed76e,#feba4b);background-image:-moz-linear-gradient(top,#fed76e,#feba4b);background-image:-ms-linear-gradient(top,#fed76e,#feba4b);background-image:-o-linear-gradient(top,#fed76e,#feba4b);border-radius:3px;}a.register-cta:hover{background:#fed76e;}#navigation #mobilemenu,#navigation select.select-menu,#navigation span.select{display:none;}#navigation{margin:0;padding:15px 25px;z-index:30;background:url(images/nav_bg.png) 0 0 repeat;position:relative;}#navigation a{border:0;}#navigation ul{margin:0;}#navigation li{position:relative;margin:0;padding:0;list-style:none;display:inline-block;text-transform:uppercase;font-size:12px;}#navigation li a{display:block;margin:0 20px 0 0;padding:0;font-weight:bold;color:#fff;text-shadow:0px 1px 1px #000;border-bottom:3px solid transparent;}#navigation .nav-search{margin-right:25px;}#navigation li a:hover,#navigation li a:focus,#navigation li.current_page_item a{border-color:#808181;}#navigation li ul{z-index:9999;position:absolute;display:none;left:0;height:auto;margin:15px 0 0 0;padding:5px 15px;background:#eee;}#navigation li ul li{width:150px;float:left;border-bottom:1px solid #cfcfcf;}#navigation li ul li:last-child{border:none;}#navigation li ul li a{text-transform:none;color:#444;text-shadow:none;margin:0;padding:5px 0;text-decoration:none;text-align:left;border:none;}#navigation li ul li a:hover{color:#777;border:0;}#navigation li ul li ul,#navigation li ul li ul li ul{margin:-38px 0 0 165px;padding:5px 15px!important;background-color:#eee;}.page-template-homepage-php #navigation li ul{background:#fff;}.page-template-homepage-php #navigation li ul li{border-bottom:1px solid #dedede;}.page-template-homepage-php #navigation li ul li:last-child{border:none;}#mobile-container{position:relative;}select.select-menu{position:relative;z-index:10;height:43px!important;line-height:26px;}span.select{position:absolute;bottom:0px;left:0px;float:left;height:43px;line-height:43px;font-size:14px;font-weight:bold;text-shadow:1px 1px #fff;color:#444;text-indent:10px;z-index:1;}#footer-full{padding:20px 0;margin:20px 0 0;background:#333;}.page-template-homepage-php #footer-full{margin:0;}#footer p{margin:0;color:#e3e3e3;text-shadow:0px 1px 1px #000;font-size:11px;font-weight:bold;}#footer a{color:#ccc;}#footer a:hover{color:#8b8b8b;}#footer #credits{float:left;}#footer #footer-copy{float:right;}input,textarea{background:#f8f9fe;border:1px solid #e6e8ed;color:#abadb7;padding:9px 12px;width:230px;}textarea{width:96%;height:200px;}button,#submit{background:#333;color:#fff;cursor:pointer;padding:5px 10px;width:auto;border:none;-moz-transition:color .1s linear,background .1s linear,border-color .1s linear;-webkit-transition:color .1s linear,background .1s linear,border-color .1s linear;-ms-transition:color .1s linear,background .1s linear,border-color .1s linear;-o-transition:color .1s linear,background .1s linear,border-color .1s linear;transition:color .1s linear,background .1s linear,border-color .1s linear;}input:focus,textarea:focus{border-color:#d1d3d8;}#submit:hover,button:hover{background:#555;}#talks-full{width:100%;background:#eaeaea;padding:30px 0 0;}#talks-full>.container{text-align:center;}#talks,.the-talk{position:relative;width:810px;margin:0 auto;text-align:left;}.talk-image{width:100px;float:left;}.talk-info{width:680px;float:right;}.talk-info h2{margin:0 0 10px;font-size:22px;}.talk-info p{margin:0;}.talk-image img{display:block;}a.talk-nav{position:absolute;top:40px;width:14px;height:21px;text-indent:-9999px;border:0;}#next-talk{right:0;background:url(images/arrow-right.png) 0 0 no-repeat;}#prev-talk{left:0;background:url(images/arrow-left.png) 0 0 no-repeat;}#talks-pager{margin:0 auto;height:9px;overflow:hidden;padding:15px 0 25px;}#talks-pager a{display:inline-block;width:9px;height:9px;background:url('images/talks_nav_sprite.png') 0 0 no-repeat;text-indent:-9999px;border:0;margin:0 3px 0 0;}#talks-pager a.activeSlide{background-position:-11px 0;}#speakers-full{width:100%;background:#f1f1f1;padding:40px 0 20px;}.speaker{width:200px;float:left;margin:0 20px 20px 0;text-align:left;position:relative;}.speaker h4{position:absolute;bottom:0;left:0;font-size:12px;background:#101010;padding:5px 10px;color:#fff;margin:0;}.speaker img,.sponsor img{display:block;}#speakers-full .speaker:nth-child(3n){margin-right:0;}#story-full{padding:40px 0 20px;background:#eaeaea;}#sponsors-full{padding:15px 0 0;background:#f1f1f1;}.sponsor{width:207px;float:left;margin:0 20px 15px 0;}#sponsors-full .sponsor:nth-child(4n){margin-right:0;}.speaker-single-thumb img{display:block;float:left;margin:0 20px 5px 0;}#schedule{margin:0 0 40px;}#schedule .timeslot:first-child{border-top:1px solid #d9d9d9;}.timeslot{padding:30px 30px 10px;border-bottom:1px solid #d9d9d9;background:#fcfcfc;}.timeslot h2{margin:0 0 5px;}.timeslot-detail p{margin:0;}.timeslot-detail{width:220px;float:left;margin:0 0 20px;}.timeslot-desc{width:610px;float:right;}.timeslot-content{width:400px;float:left;}.timeslot-thumb{width:180px;float:right;height:140px;}.timeslot-thumb img{display:block;}.contactform li{margin:0 0 15px;padding:0;display:block;}.contactform li:last-child{margin:0;}.contactform li input{display:inline;}.contactform li label{display:inline;padding:0 0 0 10px;}p.email-error{padding:5px 10px;margin:0;background:#fe7550;display:inline-block;color:#fff;}p.email-sent{padding:5px 10px;margin:0;background:#fff666;display:inline-block;color:#222;}.contactform li span{font-size:11px;display:block;padding-top:5px;color:#fe7550;}.post{margin:0 0 40px;}#primary-content .post:last-child{margin:0;}span.the-format{height:36px;width:36px;display:inline-block;margin:0 10px 0 0;text-indent:-9999px;}span.format-standard{background:url(images/format_standard.jpg) 0 0 no-repeat;}span.format-video{background:url(images/format_video.jpg) 0 0 no-repeat;}.post-meta{margin:0;padding:5px 0 0;border-top:1px solid #d9dbe1;font-size:11px;}.post-thumbnail,.post-title{margin:0 0 20px;}.post-thumbnail img{display:block;}ol.commentlist{margin:0 0 40px;}.commentlist{list-style:none;margin:0 auto;}.commentlist>li.comment{margin:0 0 15px;position:relative;padding:20px 20px 20px 90px;background:#f9f9f9;}.commentlist .pingback{margin:0 0 15px;}.commentlist .children{list-style:none;margin:0;}.commentlist .children li.comment{position:relative;padding:20px 0 0 80px;}.commentlist .children li.comment .fn{display:block;}.comment-meta .fn{font-style:normal;}.comment-meta{color:#666;font-size:12px;margin:0 0 5px;}.commentlist .children li.comment .comment-meta{}.commentlist .children li.comment .comment-content{}.comment-meta a{font-weight:bold;}.commentlist .avatar{position:absolute;top:20px;left:20px;padding:0;}.commentlist>li:before{left:-21px;position:absolute;}.commentlist>li.pingback:before{content:'';}.commentlist .children .avatar{}a.comment-reply-link{display:inline-block;font-size:12px;}a.comment-reply-link>span{display:inline-block;position:relative;top:-1px;}#commentform p{position:relative;}#commentform p input{display:block;}#commentform p label{position:absolute;top:0;left:270px;}#commentform p.comment-form-author span,#commentform p.comment-form-email span{position:absolute;top:0;left:308px;}#commentform p.comment-form-comment label{display:none;}.widget{margin:0 0 30px;}#sidebar .widget:last-child{margin:0;}.widget ul{margin:0;}#twitter_update_list{margin:0;}#twitter_update_list li{margin:0 0 10px;}.widget_search #s{width:214px;}.widget_search form,.widget_search fieldset{margin:0;}
\ No newline at end of file |